1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
2 ; RUN: llc -march=hexagon < %s | FileCheck %s
4 define void @f0(ptr %a0, ptr %a1, ptr %a2) {
6 ; CHECK: .cfi_startproc
7 ; CHECK-NEXT: // %bb.0: // %b0
9 ; CHECK-NEXT: r1 = memub(r1+#0)
10 ; CHECK-NEXT: r0 = memub(r0+#0)
17 ; CHECK-NEXT: p0 = xor(p0,p1)
20 ; CHECK-NEXT: p0 = not(p0)
24 ; CHECK-NEXT: jumpr r31
25 ; CHECK-NEXT: memb(r2+#0) = r3.new
28 %v0 = load <4 x i1>, ptr %a0
29 %v1 = load <4 x i1>, ptr %a1
30 %v2 = icmp eq <4 x i1> %v0, %v1
31 store <4 x i1> %v2, ptr %a2
35 define void @f1(ptr %a0, ptr %a1, ptr %a2) {
37 ; CHECK: .cfi_startproc
38 ; CHECK-NEXT: // %bb.0: // %b0
40 ; CHECK-NEXT: r1 = memub(r1+#0)
41 ; CHECK-NEXT: r0 = memub(r0+#0)
48 ; CHECK-NEXT: p0 = xor(p0,p1)
52 ; CHECK-NEXT: jumpr r31
53 ; CHECK-NEXT: memb(r2+#0) = r3.new
56 %v0 = load <4 x i1>, ptr %a0
57 %v1 = load <4 x i1>, ptr %a1
58 %v2 = icmp ne <4 x i1> %v0, %v1
59 store <4 x i1> %v2, ptr %a2
63 define void @f2(ptr %a0, ptr %a1, ptr %a2) {
65 ; CHECK: .cfi_startproc
66 ; CHECK-NEXT: // %bb.0: // %b0
68 ; CHECK-NEXT: r1 = memub(r1+#0)
69 ; CHECK-NEXT: r0 = memub(r0+#0)
76 ; CHECK-NEXT: p0 = and(p0,!p1)
80 ; CHECK-NEXT: jumpr r31
81 ; CHECK-NEXT: memb(r2+#0) = r3.new
84 %v0 = load <4 x i1>, ptr %a0
85 %v1 = load <4 x i1>, ptr %a1
86 %v2 = icmp slt <4 x i1> %v0, %v1
87 store <4 x i1> %v2, ptr %a2
91 define void @f3(ptr %a0, ptr %a1, ptr %a2) {
93 ; CHECK: .cfi_startproc
94 ; CHECK-NEXT: // %bb.0: // %b0
96 ; CHECK-NEXT: r1 = memub(r1+#0)
97 ; CHECK-NEXT: r0 = memub(r0+#0)
100 ; CHECK-NEXT: p0 = r0
101 ; CHECK-NEXT: p1 = r1
104 ; CHECK-NEXT: p0 = or(p0,!p1)
107 ; CHECK-NEXT: r3 = p0
108 ; CHECK-NEXT: jumpr r31
109 ; CHECK-NEXT: memb(r2+#0) = r3.new
112 %v0 = load <4 x i1>, ptr %a0
113 %v1 = load <4 x i1>, ptr %a1
114 %v2 = icmp sle <4 x i1> %v0, %v1
115 store <4 x i1> %v2, ptr %a2
119 define void @f4(ptr %a0, ptr %a1, ptr %a2) {
121 ; CHECK: .cfi_startproc
122 ; CHECK-NEXT: // %bb.0: // %b0
124 ; CHECK-NEXT: r1 = memub(r1+#0)
125 ; CHECK-NEXT: r0 = memub(r0+#0)
128 ; CHECK-NEXT: p0 = r0
129 ; CHECK-NEXT: p1 = r1
132 ; CHECK-NEXT: p0 = and(p1,!p0)
135 ; CHECK-NEXT: r3 = p0
136 ; CHECK-NEXT: jumpr r31
137 ; CHECK-NEXT: memb(r2+#0) = r3.new
140 %v0 = load <4 x i1>, ptr %a0
141 %v1 = load <4 x i1>, ptr %a1
142 %v2 = icmp sgt <4 x i1> %v0, %v1
143 store <4 x i1> %v2, ptr %a2
147 define void @f5(ptr %a0, ptr %a1, ptr %a2) {
149 ; CHECK: .cfi_startproc
150 ; CHECK-NEXT: // %bb.0: // %b0
152 ; CHECK-NEXT: r1 = memub(r1+#0)
153 ; CHECK-NEXT: r0 = memub(r0+#0)
156 ; CHECK-NEXT: p0 = r0
157 ; CHECK-NEXT: p1 = r1
160 ; CHECK-NEXT: p0 = or(p1,!p0)
163 ; CHECK-NEXT: r3 = p0
164 ; CHECK-NEXT: jumpr r31
165 ; CHECK-NEXT: memb(r2+#0) = r3.new
168 %v0 = load <4 x i1>, ptr %a0
169 %v1 = load <4 x i1>, ptr %a1
170 %v2 = icmp sge <4 x i1> %v0, %v1
171 store <4 x i1> %v2, ptr %a2
175 define void @f6(ptr %a0, ptr %a1, ptr %a2) {
177 ; CHECK: .cfi_startproc
178 ; CHECK-NEXT: // %bb.0: // %b0
180 ; CHECK-NEXT: r1 = memub(r1+#0)
181 ; CHECK-NEXT: r0 = memub(r0+#0)
184 ; CHECK-NEXT: p0 = r0
185 ; CHECK-NEXT: p1 = r1
188 ; CHECK-NEXT: p0 = and(p1,!p0)
191 ; CHECK-NEXT: r3 = p0
192 ; CHECK-NEXT: jumpr r31
193 ; CHECK-NEXT: memb(r2+#0) = r3.new
196 %v0 = load <4 x i1>, ptr %a0
197 %v1 = load <4 x i1>, ptr %a1
198 %v2 = icmp ult <4 x i1> %v0, %v1
199 store <4 x i1> %v2, ptr %a2
203 define void @f7(ptr %a0, ptr %a1, ptr %a2) {
205 ; CHECK: .cfi_startproc
206 ; CHECK-NEXT: // %bb.0: // %b0
208 ; CHECK-NEXT: r1 = memub(r1+#0)
209 ; CHECK-NEXT: r0 = memub(r0+#0)
212 ; CHECK-NEXT: p0 = r0
213 ; CHECK-NEXT: p1 = r1
216 ; CHECK-NEXT: p0 = or(p1,!p0)
219 ; CHECK-NEXT: r3 = p0
220 ; CHECK-NEXT: jumpr r31
221 ; CHECK-NEXT: memb(r2+#0) = r3.new
224 %v0 = load <4 x i1>, ptr %a0
225 %v1 = load <4 x i1>, ptr %a1
226 %v2 = icmp ule <4 x i1> %v0, %v1
227 store <4 x i1> %v2, ptr %a2
231 define void @f8(ptr %a0, ptr %a1, ptr %a2) {
233 ; CHECK: .cfi_startproc
234 ; CHECK-NEXT: // %bb.0: // %b0
236 ; CHECK-NEXT: r1 = memub(r1+#0)
237 ; CHECK-NEXT: r0 = memub(r0+#0)
240 ; CHECK-NEXT: p0 = r0
241 ; CHECK-NEXT: p1 = r1
244 ; CHECK-NEXT: p0 = and(p0,!p1)
247 ; CHECK-NEXT: r3 = p0
248 ; CHECK-NEXT: jumpr r31
249 ; CHECK-NEXT: memb(r2+#0) = r3.new
252 %v0 = load <4 x i1>, ptr %a0
253 %v1 = load <4 x i1>, ptr %a1
254 %v2 = icmp ugt <4 x i1> %v0, %v1
255 store <4 x i1> %v2, ptr %a2
259 define void @f9(ptr %a0, ptr %a1, ptr %a2) {
261 ; CHECK: .cfi_startproc
262 ; CHECK-NEXT: // %bb.0: // %b0
264 ; CHECK-NEXT: r1 = memub(r1+#0)
265 ; CHECK-NEXT: r0 = memub(r0+#0)
268 ; CHECK-NEXT: p0 = r0
269 ; CHECK-NEXT: p1 = r1
272 ; CHECK-NEXT: p0 = or(p0,!p1)
275 ; CHECK-NEXT: r3 = p0
276 ; CHECK-NEXT: jumpr r31
277 ; CHECK-NEXT: memb(r2+#0) = r3.new
280 %v0 = load <4 x i1>, ptr %a0
281 %v1 = load <4 x i1>, ptr %a1
282 %v2 = icmp uge <4 x i1> %v0, %v1
283 store <4 x i1> %v2, ptr %a2