Home | History | Annotate | Download | only in BPF
      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