1; RUN: llc < %s -march=bpf | FileCheck %s 2 3; Function Attrs: nounwind readnone uwtable 4define 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 24define 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 44define 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 64define 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 84define 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 95define 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 104define 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 113define 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