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