blob: b353f90ab5666053dec50eb1c8583ae09e4b8ffc [file] [log] [blame]
Alexei Starovoitove4c8c802015-01-24 17:51:26 +00001; 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}