blob: 44f00ff02c4e3fd0106c7001a584f51c4d8acb1c [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:
Jonas Paulsson891789c2018-02-18 10:09:54 +000020; CHECK: if r0 s>= r1
Alexei Starovoitove4c8c802015-01-24 17:51:26 +000021}
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:
Jonas Paulsson891789c2018-02-18 10:09:54 +000040; CHECK: if r0 s> r1
Alexei Starovoitove4c8c802015-01-24 17:51:26 +000041}
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:
Jonas Paulsson891789c2018-02-18 10:09:54 +000060; CHECK: if r1 s>= r0
Alexei Starovoitove4c8c802015-01-24 17:51:26 +000061}
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:
Jonas Paulsson891789c2018-02-18 10:09:54 +000080; CHECK: if r1 s> r0
Alexei Starovoitove4c8c802015-01-24 17:51:26 +000081}
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:
Alexei Starovoitov8f9f8212016-11-18 02:32:35 +000089; CHECK: r0 = r1
Jonas Paulsson891789c2018-02-18 10:09:54 +000090; CHECK: if r2 s> r0
91; CHECK: r0 = r2
Alexei Starovoitove4c8c802015-01-24 17:51:26 +000092}
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:
Yonghong Songd3b522f2018-04-03 03:56:37 +0000100; CHECK: if r{{[0-9]+}} {{<|>}} r{{[0-9]+}}
Alexei Starovoitove4c8c802015-01-24 17:51:26 +0000101}
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:
Jonas Paulsson891789c2018-02-18 10:09:54 +0000109; CHECK: if r0 s> r2
Alexei Starovoitove4c8c802015-01-24 17:51:26 +0000110}
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:
Alexei Starovoitov8f9f8212016-11-18 02:32:35 +0000118; CHECK: if r1 == r2
Alexei Starovoitove4c8c802015-01-24 17:51:26 +0000119}