1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=bpf | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone uwtable 4*9880d681SAndroid Build Coastguard Workerdefine signext i8 @foo_cmp1(i8 signext %a, i8 signext %b) #0 { 5*9880d681SAndroid Build Coastguard Worker %1 = icmp sgt i8 %a, %b 6*9880d681SAndroid Build Coastguard Worker br i1 %1, label %2, label %4 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker; <label>:2 ; preds = %0 9*9880d681SAndroid Build Coastguard Worker %3 = mul i8 %b, %a 10*9880d681SAndroid Build Coastguard Worker br label %6 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker; <label>:4 ; preds = %0 13*9880d681SAndroid Build Coastguard Worker %5 = shl i8 %b, 3 14*9880d681SAndroid Build Coastguard Worker br label %6 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Worker; <label>:6 ; preds = %4, %2 17*9880d681SAndroid Build Coastguard Worker %.0 = phi i8 [ %3, %2 ], [ %5, %4 ] 18*9880d681SAndroid Build Coastguard Worker ret i8 %.0 19*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL:foo_cmp1: 20*9880d681SAndroid Build Coastguard Worker; CHECK: jsge r2, r1 21*9880d681SAndroid Build Coastguard Worker} 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone uwtable 24*9880d681SAndroid Build Coastguard Workerdefine signext i8 @foo_cmp2(i8 signext %a, i8 signext %b) #0 { 25*9880d681SAndroid Build Coastguard Worker %1 = icmp slt i8 %a, %b 26*9880d681SAndroid Build Coastguard Worker br i1 %1, label %4, label %2 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker; <label>:2 ; preds = %0 29*9880d681SAndroid Build Coastguard Worker %3 = mul i8 %b, %a 30*9880d681SAndroid Build Coastguard Worker br label %6 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Worker; <label>:4 ; preds = %0 33*9880d681SAndroid Build Coastguard Worker %5 = shl i8 %b, 3 34*9880d681SAndroid Build Coastguard Worker br label %6 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Worker; <label>:6 ; preds = %4, %2 37*9880d681SAndroid Build Coastguard Worker %.0 = phi i8 [ %3, %2 ], [ %5, %4 ] 38*9880d681SAndroid Build Coastguard Worker ret i8 %.0 39*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL:foo_cmp2: 40*9880d681SAndroid Build Coastguard Worker; CHECK: jsgt r2, r1 41*9880d681SAndroid Build Coastguard Worker} 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone uwtable 44*9880d681SAndroid Build Coastguard Workerdefine signext i8 @foo_cmp3(i8 signext %a, i8 signext %b) #0 { 45*9880d681SAndroid Build Coastguard Worker %1 = icmp slt i8 %a, %b 46*9880d681SAndroid Build Coastguard Worker br i1 %1, label %2, label %4 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Worker; <label>:2 ; preds = %0 49*9880d681SAndroid Build Coastguard Worker %3 = mul i8 %b, %a 50*9880d681SAndroid Build Coastguard Worker br label %6 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Worker; <label>:4 ; preds = %0 53*9880d681SAndroid Build Coastguard Worker %5 = shl i8 %b, 3 54*9880d681SAndroid Build Coastguard Worker br label %6 55*9880d681SAndroid Build Coastguard Worker 56*9880d681SAndroid Build Coastguard Worker; <label>:6 ; preds = %4, %2 57*9880d681SAndroid Build Coastguard Worker %.0 = phi i8 [ %3, %2 ], [ %5, %4 ] 58*9880d681SAndroid Build Coastguard Worker ret i8 %.0 59*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL:foo_cmp3: 60*9880d681SAndroid Build Coastguard Worker; CHECK: jsge r1, r2 61*9880d681SAndroid Build Coastguard Worker} 62*9880d681SAndroid Build Coastguard Worker 63*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone uwtable 64*9880d681SAndroid Build Coastguard Workerdefine signext i8 @foo_cmp4(i8 signext %a, i8 signext %b) #0 { 65*9880d681SAndroid Build Coastguard Worker %1 = icmp sgt i8 %a, %b 66*9880d681SAndroid Build Coastguard Worker br i1 %1, label %4, label %2 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Worker; <label>:2 ; preds = %0 69*9880d681SAndroid Build Coastguard Worker %3 = mul i8 %b, %a 70*9880d681SAndroid Build Coastguard Worker br label %6 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Worker; <label>:4 ; preds = %0 73*9880d681SAndroid Build Coastguard Worker %5 = shl i8 %b, 3 74*9880d681SAndroid Build Coastguard Worker br label %6 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Worker; <label>:6 ; preds = %4, %2 77*9880d681SAndroid Build Coastguard Worker %.0 = phi i8 [ %3, %2 ], [ %5, %4 ] 78*9880d681SAndroid Build Coastguard Worker ret i8 %.0 79*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL:foo_cmp4: 80*9880d681SAndroid Build Coastguard Worker; CHECK: jsgt r1, r2 81*9880d681SAndroid Build Coastguard Worker} 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone uwtable 84*9880d681SAndroid Build Coastguard Workerdefine signext i8 @min(i8 signext %a, i8 signext %b) #0 { 85*9880d681SAndroid Build Coastguard Worker %1 = icmp slt i8 %a, %b 86*9880d681SAndroid Build Coastguard Worker %a.b = select i1 %1, i8 %a, i8 %b 87*9880d681SAndroid Build Coastguard Worker ret i8 %a.b 88*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL:min: 89*9880d681SAndroid Build Coastguard Worker; CHECK: jsgt r2, r1 90*9880d681SAndroid Build Coastguard Worker; CHECK: mov r1, r2 91*9880d681SAndroid Build Coastguard Worker; CHECK: mov r0, r1 92*9880d681SAndroid Build Coastguard Worker} 93*9880d681SAndroid Build Coastguard Worker 94*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone uwtable 95*9880d681SAndroid Build Coastguard Workerdefine zeroext i8 @minu(i8 zeroext %a, i8 zeroext %b) #0 { 96*9880d681SAndroid Build Coastguard Worker %1 = icmp ult i8 %a, 100 97*9880d681SAndroid Build Coastguard Worker %a.b = select i1 %1, i8 %a, i8 %b 98*9880d681SAndroid Build Coastguard Worker ret i8 %a.b 99*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL:minu: 100*9880d681SAndroid Build Coastguard Worker; CHECK: jgt r3, r1 101*9880d681SAndroid Build Coastguard Worker} 102*9880d681SAndroid Build Coastguard Worker 103*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone uwtable 104*9880d681SAndroid Build Coastguard Workerdefine signext i8 @max(i8 signext %a, i8 signext %b) #0 { 105*9880d681SAndroid Build Coastguard Worker %1 = icmp sgt i8 %a, %b 106*9880d681SAndroid Build Coastguard Worker %a.b = select i1 %1, i8 %a, i8 %b 107*9880d681SAndroid Build Coastguard Worker ret i8 %a.b 108*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL:max: 109*9880d681SAndroid Build Coastguard Worker; CHECK: jsgt r1, r2 110*9880d681SAndroid Build Coastguard Worker} 111*9880d681SAndroid Build Coastguard Worker 112*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone uwtable 113*9880d681SAndroid Build Coastguard Workerdefine signext i8 @meq(i8 signext %a, i8 signext %b, i8 signext %c) #0 { 114*9880d681SAndroid Build Coastguard Worker %1 = icmp eq i8 %a, %b 115*9880d681SAndroid Build Coastguard Worker %c.a = select i1 %1, i8 %c, i8 %a 116*9880d681SAndroid Build Coastguard Worker ret i8 %c.a 117*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL:meq: 118*9880d681SAndroid Build Coastguard Worker; CHECK: jeq r1, r2 119*9880d681SAndroid Build Coastguard Worker} 120