• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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