Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / Hexagon / autohvx / pred-vmem-128b.ll
blobe22d79b1d81e221b2c62f3fe9aa7387e43af25d6
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -march=hexagon < %s | FileCheck %s
4 declare <32 x i32> @llvm.hexagon.V6.vL32b.pred.ai.128B(i1, ptr, i32)
5 declare <32 x i32> @llvm.hexagon.V6.vL32b.npred.ai.128B(i1, ptr, i32)
6 declare <32 x i32> @llvm.hexagon.V6.vL32b.nt.pred.ai.128B(i1, ptr, i32)
7 declare <32 x i32> @llvm.hexagon.V6.vL32b.nt.npred.ai.128B(i1, ptr, i32)
9 declare { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.pred.pi.128B(i1, ptr, i32)
10 declare { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.npred.pi.128B(i1, ptr, i32)
11 declare { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.nt.pred.pi.128B(i1, ptr, i32)
12 declare { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.nt.npred.pi.128B(i1, ptr, i32)
14 declare { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.pred.ppu.128B(i1, ptr, i32)
15 declare { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.npred.ppu.128B(i1, ptr, i32)
16 declare { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.nt.pred.ppu.128B(i1, ptr, i32)
17 declare { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.nt.npred.ppu.128B(i1, ptr, i32)
19 declare void @llvm.hexagon.V6.vS32b.pred.ai.128B(i1, ptr, i32, <32 x i32>)
20 declare void @llvm.hexagon.V6.vS32b.npred.ai.128B(i1, ptr, i32, <32 x i32>)
21 declare void @llvm.hexagon.V6.vS32Ub.pred.ai.128B(i1, ptr, i32, <32 x i32>)
22 declare void @llvm.hexagon.V6.vS32Ub.npred.ai.128B(i1, ptr, i32, <32 x i32>)
23 declare void @llvm.hexagon.V6.vS32b.nt.pred.ai.128B(i1, ptr, i32, <32 x i32>)
24 declare void @llvm.hexagon.V6.vS32b.nt.npred.ai.128B(i1, ptr, i32, <32 x i32>)
26 declare ptr @llvm.hexagon.V6.vS32b.pred.pi.128B(i1, ptr, i32, <32 x i32>)
27 declare ptr @llvm.hexagon.V6.vS32b.npred.pi.128B(i1, ptr, i32, <32 x i32>)
28 declare ptr @llvm.hexagon.V6.vS32Ub.pred.pi.128B(i1, ptr, i32, <32 x i32>)
29 declare ptr @llvm.hexagon.V6.vS32Ub.npred.pi.128B(i1, ptr, i32, <32 x i32>)
30 declare ptr @llvm.hexagon.V6.vS32b.nt.pred.pi.128B(i1, ptr, i32, <32 x i32>)
31 declare ptr @llvm.hexagon.V6.vS32b.nt.npred.pi.128B(i1, ptr, i32, <32 x i32>)
33 declare ptr @llvm.hexagon.V6.vS32b.pred.ppu.128B(i1, ptr, i32, <32 x i32>)
34 declare ptr @llvm.hexagon.V6.vS32b.npred.ppu.128B(i1, ptr, i32, <32 x i32>)
35 declare ptr @llvm.hexagon.V6.vS32Ub.pred.ppu.128B(i1, ptr, i32, <32 x i32>)
36 declare ptr @llvm.hexagon.V6.vS32Ub.npred.ppu.128B(i1, ptr, i32, <32 x i32>)
37 declare ptr @llvm.hexagon.V6.vS32b.nt.pred.ppu.128B(i1, ptr, i32, <32 x i32>)
38 declare ptr @llvm.hexagon.V6.vS32b.nt.npred.ppu.128B(i1, ptr, i32, <32 x i32>)
41 define <32 x i32> @f0(i32 %a0, ptr %a1) #0 {
42 ; CHECK-LABEL: f0:
43 ; CHECK:       // %bb.0: // %b0
44 ; CHECK-NEXT:    {
45 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
46 ; CHECK-NEXT:    }
47 ; CHECK-NEXT:    {
48 ; CHECK-NEXT:     if (p0) v0 = vmem(r1+#3)
49 ; CHECK-NEXT:    }
50 ; CHECK-NEXT:    {
51 ; CHECK-NEXT:     jumpr r31
52 ; CHECK-NEXT:    }
53 b0:
54   %v0 = icmp eq i32 %a0, 0
55   %v1 = call <32 x i32> @llvm.hexagon.V6.vL32b.pred.ai.128B(i1 %v0, ptr %a1, i32 384)
56   ret <32 x i32> %v1
59 define <32 x i32> @f1(i32 %a0, ptr %a1) #0 {
60 ; CHECK-LABEL: f1:
61 ; CHECK:       // %bb.0: // %b0
62 ; CHECK-NEXT:    {
63 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
64 ; CHECK-NEXT:    }
65 ; CHECK-NEXT:    {
66 ; CHECK-NEXT:     if (!p0) v0 = vmem(r1+#3)
67 ; CHECK-NEXT:    }
68 ; CHECK-NEXT:    {
69 ; CHECK-NEXT:     jumpr r31
70 ; CHECK-NEXT:    }
71 b0:
72   %v0 = icmp eq i32 %a0, 0
73   %v1 = call <32 x i32> @llvm.hexagon.V6.vL32b.npred.ai.128B(i1 %v0, ptr %a1, i32 384)
74   ret <32 x i32> %v1
77 define <32 x i32> @f2(i32 %a0, ptr %a1) #0 {
78 ; CHECK-LABEL: f2:
79 ; CHECK:       // %bb.0: // %b0
80 ; CHECK-NEXT:    {
81 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
82 ; CHECK-NEXT:    }
83 ; CHECK-NEXT:    {
84 ; CHECK-NEXT:     if (p0) v0 = vmem(r1+#3):nt
85 ; CHECK-NEXT:    }
86 ; CHECK-NEXT:    {
87 ; CHECK-NEXT:     jumpr r31
88 ; CHECK-NEXT:    }
89 b0:
90   %v0 = icmp eq i32 %a0, 0
91   %v1 = call <32 x i32> @llvm.hexagon.V6.vL32b.nt.pred.ai.128B(i1 %v0, ptr %a1, i32 384)
92   ret <32 x i32> %v1
95 define <32 x i32> @f3(i32 %a0, ptr %a1) #0 {
96 ; CHECK-LABEL: f3:
97 ; CHECK:       // %bb.0: // %b0
98 ; CHECK-NEXT:    {
99 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
100 ; CHECK-NEXT:    }
101 ; CHECK-NEXT:    {
102 ; CHECK-NEXT:     if (!p0) v0 = vmem(r1+#3):nt
103 ; CHECK-NEXT:    }
104 ; CHECK-NEXT:    {
105 ; CHECK-NEXT:     jumpr r31
106 ; CHECK-NEXT:    }
108   %v0 = icmp eq i32 %a0, 0
109   %v1 = call <32 x i32> @llvm.hexagon.V6.vL32b.nt.npred.ai.128B(i1 %v0, ptr %a1, i32 384)
110   ret <32 x i32> %v1
113 define ptr @f4(i32 %a0, ptr %a1) #0 {
114 ; CHECK-LABEL: f4:
115 ; CHECK:       // %bb.0: // %b0
116 ; CHECK-NEXT:    {
117 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
118 ; CHECK-NEXT:    }
119 ; CHECK-NEXT:    {
120 ; CHECK-NEXT:     r0 = r1
121 ; CHECK-NEXT:    }
122 ; CHECK-NEXT:    {
123 ; CHECK-NEXT:     if (p0) v0 = vmem(r0++#3)
124 ; CHECK-NEXT:    }
125 ; CHECK-NEXT:    {
126 ; CHECK-NEXT:     jumpr r31
127 ; CHECK-NEXT:    }
129   %v0 = icmp eq i32 %a0, 0
130   %v1 = call { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.pred.pi.128B(i1 %v0, ptr %a1, i32 384)
131   %v2 = extractvalue { <32 x i32>, ptr } %v1, 1
132   ret ptr %v2
135 define ptr @f5(i32 %a0, ptr %a1) #0 {
136 ; CHECK-LABEL: f5:
137 ; CHECK:       // %bb.0: // %b0
138 ; CHECK-NEXT:    {
139 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
140 ; CHECK-NEXT:    }
141 ; CHECK-NEXT:    {
142 ; CHECK-NEXT:     r0 = r1
143 ; CHECK-NEXT:    }
144 ; CHECK-NEXT:    {
145 ; CHECK-NEXT:     if (!p0) v0 = vmem(r0++#3)
146 ; CHECK-NEXT:    }
147 ; CHECK-NEXT:    {
148 ; CHECK-NEXT:     jumpr r31
149 ; CHECK-NEXT:    }
151   %v0 = icmp eq i32 %a0, 0
152   %v1 = call { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.npred.pi.128B(i1 %v0, ptr %a1, i32 384)
153   %v2 = extractvalue { <32 x i32>, ptr } %v1, 1
154   ret ptr %v2
157 define ptr @f6(i32 %a0, ptr %a1) #0 {
158 ; CHECK-LABEL: f6:
159 ; CHECK:       // %bb.0: // %b0
160 ; CHECK-NEXT:    {
161 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
162 ; CHECK-NEXT:    }
163 ; CHECK-NEXT:    {
164 ; CHECK-NEXT:     r0 = r1
165 ; CHECK-NEXT:    }
166 ; CHECK-NEXT:    {
167 ; CHECK-NEXT:     if (p0) v0 = vmem(r0++#3):nt
168 ; CHECK-NEXT:    }
169 ; CHECK-NEXT:    {
170 ; CHECK-NEXT:     jumpr r31
171 ; CHECK-NEXT:    }
173   %v0 = icmp eq i32 %a0, 0
174   %v1 = call { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.nt.pred.pi.128B(i1 %v0, ptr %a1, i32 384)
175   %v2 = extractvalue { <32 x i32>, ptr } %v1, 1
176   ret ptr %v2
179 define ptr @f7(i32 %a0, ptr %a1) #0 {
180 ; CHECK-LABEL: f7:
181 ; CHECK:       // %bb.0: // %b0
182 ; CHECK-NEXT:    {
183 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
184 ; CHECK-NEXT:    }
185 ; CHECK-NEXT:    {
186 ; CHECK-NEXT:     r0 = r1
187 ; CHECK-NEXT:    }
188 ; CHECK-NEXT:    {
189 ; CHECK-NEXT:     if (!p0) v0 = vmem(r0++#3):nt
190 ; CHECK-NEXT:    }
191 ; CHECK-NEXT:    {
192 ; CHECK-NEXT:     jumpr r31
193 ; CHECK-NEXT:    }
195   %v0 = icmp eq i32 %a0, 0
196   %v1 = call { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.nt.npred.pi.128B(i1 %v0, ptr %a1, i32 384)
197   %v2 = extractvalue { <32 x i32>, ptr } %v1, 1
198   ret ptr %v2
201 define ptr @f8(i32 %a0, ptr %a1, i32 %a2) #0 {
202 ; CHECK-LABEL: f8:
203 ; CHECK:       // %bb.0: // %b0
204 ; CHECK-NEXT:    {
205 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
206 ; CHECK-NEXT:    }
207 ; CHECK-NEXT:    {
208 ; CHECK-NEXT:     r0 = r1
209 ; CHECK-NEXT:    }
210 ; CHECK-NEXT:    {
211 ; CHECK-NEXT:     m0 = r2
212 ; CHECK-NEXT:    }
213 ; CHECK-NEXT:    {
214 ; CHECK-NEXT:     if (p0) v0 = vmem(r0++m0)
215 ; CHECK-NEXT:    }
216 ; CHECK-NEXT:    {
217 ; CHECK-NEXT:     jumpr r31
218 ; CHECK-NEXT:    }
220   %v0 = icmp eq i32 %a0, 0
221   %v1 = call { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.pred.ppu.128B(i1 %v0, ptr %a1, i32 %a2)
222   %v2 = extractvalue { <32 x i32>, ptr } %v1, 1
223   ret ptr %v2
226 define ptr @f9(i32 %a0, ptr %a1, i32 %a2) #0 {
227 ; CHECK-LABEL: f9:
228 ; CHECK:       // %bb.0: // %b0
229 ; CHECK-NEXT:    {
230 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
231 ; CHECK-NEXT:    }
232 ; CHECK-NEXT:    {
233 ; CHECK-NEXT:     r0 = r1
234 ; CHECK-NEXT:    }
235 ; CHECK-NEXT:    {
236 ; CHECK-NEXT:     m0 = r2
237 ; CHECK-NEXT:    }
238 ; CHECK-NEXT:    {
239 ; CHECK-NEXT:     if (!p0) v0 = vmem(r0++m0)
240 ; CHECK-NEXT:    }
241 ; CHECK-NEXT:    {
242 ; CHECK-NEXT:     jumpr r31
243 ; CHECK-NEXT:    }
245   %v0 = icmp eq i32 %a0, 0
246   %v1 = call { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.npred.ppu.128B(i1 %v0, ptr %a1, i32 %a2)
247   %v2 = extractvalue { <32 x i32>, ptr } %v1, 1
248   ret ptr %v2
251 define ptr @f10(i32 %a0, ptr %a1, i32 %a2) #0 {
252 ; CHECK-LABEL: f10:
253 ; CHECK:       // %bb.0: // %b0
254 ; CHECK-NEXT:    {
255 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
256 ; CHECK-NEXT:    }
257 ; CHECK-NEXT:    {
258 ; CHECK-NEXT:     r0 = r1
259 ; CHECK-NEXT:    }
260 ; CHECK-NEXT:    {
261 ; CHECK-NEXT:     m0 = r2
262 ; CHECK-NEXT:    }
263 ; CHECK-NEXT:    {
264 ; CHECK-NEXT:     if (p0) v0 = vmem(r0++m0):nt
265 ; CHECK-NEXT:    }
266 ; CHECK-NEXT:    {
267 ; CHECK-NEXT:     jumpr r31
268 ; CHECK-NEXT:    }
270   %v0 = icmp eq i32 %a0, 0
271   %v1 = call { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.nt.pred.ppu.128B(i1 %v0, ptr %a1, i32 %a2)
272   %v2 = extractvalue { <32 x i32>, ptr } %v1, 1
273   ret ptr %v2
276 define ptr @f11(i32 %a0, ptr %a1, i32 %a2) #0 {
277 ; CHECK-LABEL: f11:
278 ; CHECK:       // %bb.0: // %b0
279 ; CHECK-NEXT:    {
280 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
281 ; CHECK-NEXT:    }
282 ; CHECK-NEXT:    {
283 ; CHECK-NEXT:     r0 = r1
284 ; CHECK-NEXT:    }
285 ; CHECK-NEXT:    {
286 ; CHECK-NEXT:     m0 = r2
287 ; CHECK-NEXT:    }
288 ; CHECK-NEXT:    {
289 ; CHECK-NEXT:     if (!p0) v0 = vmem(r0++m0):nt
290 ; CHECK-NEXT:    }
291 ; CHECK-NEXT:    {
292 ; CHECK-NEXT:     jumpr r31
293 ; CHECK-NEXT:    }
295   %v0 = icmp eq i32 %a0, 0
296   %v1 = call { <32 x i32>, ptr } @llvm.hexagon.V6.vL32b.nt.npred.ppu.128B(i1 %v0, ptr %a1, i32 %a2)
297   %v2 = extractvalue { <32 x i32>, ptr } %v1, 1
298   ret ptr %v2
301 define void @f12(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {
302 ; CHECK-LABEL: f12:
303 ; CHECK:       // %bb.0: // %b0
304 ; CHECK-NEXT:    {
305 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
306 ; CHECK-NEXT:    }
307 ; CHECK-NEXT:    {
308 ; CHECK-NEXT:     if (p0) vmem(r1+#-3) = v0
309 ; CHECK-NEXT:    }
310 ; CHECK-NEXT:    {
311 ; CHECK-NEXT:     jumpr r31
312 ; CHECK-NEXT:    }
314   %v0 = icmp eq i32 %a0, 0
315   call void @llvm.hexagon.V6.vS32b.pred.ai.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)
316   ret void
319 define void @f13(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {
320 ; CHECK-LABEL: f13:
321 ; CHECK:       // %bb.0: // %b0
322 ; CHECK-NEXT:    {
323 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
324 ; CHECK-NEXT:    }
325 ; CHECK-NEXT:    {
326 ; CHECK-NEXT:     if (!p0) vmem(r1+#-3) = v0
327 ; CHECK-NEXT:    }
328 ; CHECK-NEXT:    {
329 ; CHECK-NEXT:     jumpr r31
330 ; CHECK-NEXT:    }
332   %v0 = icmp eq i32 %a0, 0
333   call void @llvm.hexagon.V6.vS32b.npred.ai.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)
334   ret void
337 define void @f14(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {
338 ; CHECK-LABEL: f14:
339 ; CHECK:       // %bb.0: // %b0
340 ; CHECK-NEXT:    {
341 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
342 ; CHECK-NEXT:    }
343 ; CHECK-NEXT:    {
344 ; CHECK-NEXT:     if (p0) vmemu(r1+#-3) = v0
345 ; CHECK-NEXT:    }
346 ; CHECK-NEXT:    {
347 ; CHECK-NEXT:     jumpr r31
348 ; CHECK-NEXT:    }
350   %v0 = icmp eq i32 %a0, 0
351   call void @llvm.hexagon.V6.vS32Ub.pred.ai.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)
352   ret void
355 define void @f15(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {
356 ; CHECK-LABEL: f15:
357 ; CHECK:       // %bb.0: // %b0
358 ; CHECK-NEXT:    {
359 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
360 ; CHECK-NEXT:    }
361 ; CHECK-NEXT:    {
362 ; CHECK-NEXT:     if (!p0) vmemu(r1+#-3) = v0
363 ; CHECK-NEXT:    }
364 ; CHECK-NEXT:    {
365 ; CHECK-NEXT:     jumpr r31
366 ; CHECK-NEXT:    }
368   %v0 = icmp eq i32 %a0, 0
369   call void @llvm.hexagon.V6.vS32Ub.npred.ai.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)
370   ret void
373 define void @f16(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {
374 ; CHECK-LABEL: f16:
375 ; CHECK:       // %bb.0: // %b0
376 ; CHECK-NEXT:    {
377 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
378 ; CHECK-NEXT:    }
379 ; CHECK-NEXT:    {
380 ; CHECK-NEXT:     if (p0) vmem(r1+#-3):nt = v0
381 ; CHECK-NEXT:    }
382 ; CHECK-NEXT:    {
383 ; CHECK-NEXT:     jumpr r31
384 ; CHECK-NEXT:    }
386   %v0 = icmp eq i32 %a0, 0
387   call void @llvm.hexagon.V6.vS32b.nt.pred.ai.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)
388   ret void
391 define void @f17(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {
392 ; CHECK-LABEL: f17:
393 ; CHECK:       // %bb.0: // %b0
394 ; CHECK-NEXT:    {
395 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
396 ; CHECK-NEXT:    }
397 ; CHECK-NEXT:    {
398 ; CHECK-NEXT:     if (!p0) vmem(r1+#-3):nt = v0
399 ; CHECK-NEXT:    }
400 ; CHECK-NEXT:    {
401 ; CHECK-NEXT:     jumpr r31
402 ; CHECK-NEXT:    }
404   %v0 = icmp eq i32 %a0, 0
405   call void @llvm.hexagon.V6.vS32b.nt.npred.ai.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)
406   ret void
409 define ptr @f18(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {
410 ; CHECK-LABEL: f18:
411 ; CHECK:       // %bb.0: // %b0
412 ; CHECK-NEXT:    {
413 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
414 ; CHECK-NEXT:    }
415 ; CHECK-NEXT:    {
416 ; CHECK-NEXT:     r0 = r1
417 ; CHECK-NEXT:    }
418 ; CHECK-NEXT:    {
419 ; CHECK-NEXT:     if (p0) vmem(r0++#-3) = v0
420 ; CHECK-NEXT:    }
421 ; CHECK-NEXT:    {
422 ; CHECK-NEXT:     jumpr r31
423 ; CHECK-NEXT:    }
425   %v0 = icmp eq i32 %a0, 0
426   %v1 = call ptr @llvm.hexagon.V6.vS32b.pred.pi.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)
427   ret ptr %v1
430 define ptr @f19(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {
431 ; CHECK-LABEL: f19:
432 ; CHECK:       // %bb.0: // %b0
433 ; CHECK-NEXT:    {
434 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
435 ; CHECK-NEXT:    }
436 ; CHECK-NEXT:    {
437 ; CHECK-NEXT:     r0 = r1
438 ; CHECK-NEXT:    }
439 ; CHECK-NEXT:    {
440 ; CHECK-NEXT:     if (!p0) vmem(r0++#-3) = v0
441 ; CHECK-NEXT:    }
442 ; CHECK-NEXT:    {
443 ; CHECK-NEXT:     jumpr r31
444 ; CHECK-NEXT:    }
446   %v0 = icmp eq i32 %a0, 0
447   %v1 = call ptr @llvm.hexagon.V6.vS32b.npred.pi.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)
448   ret ptr %v1
451 define ptr @f20(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {
452 ; CHECK-LABEL: f20:
453 ; CHECK:       // %bb.0: // %b0
454 ; CHECK-NEXT:    {
455 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
456 ; CHECK-NEXT:    }
457 ; CHECK-NEXT:    {
458 ; CHECK-NEXT:     r0 = r1
459 ; CHECK-NEXT:    }
460 ; CHECK-NEXT:    {
461 ; CHECK-NEXT:     if (p0) vmemu(r0++#-3) = v0
462 ; CHECK-NEXT:    }
463 ; CHECK-NEXT:    {
464 ; CHECK-NEXT:     jumpr r31
465 ; CHECK-NEXT:    }
467   %v0 = icmp eq i32 %a0, 0
468   %v1 = call ptr @llvm.hexagon.V6.vS32Ub.pred.pi.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)
469   ret ptr %v1
472 define ptr @f21(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {
473 ; CHECK-LABEL: f21:
474 ; CHECK:       // %bb.0: // %b0
475 ; CHECK-NEXT:    {
476 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
477 ; CHECK-NEXT:    }
478 ; CHECK-NEXT:    {
479 ; CHECK-NEXT:     r0 = r1
480 ; CHECK-NEXT:    }
481 ; CHECK-NEXT:    {
482 ; CHECK-NEXT:     if (!p0) vmemu(r0++#-3) = v0
483 ; CHECK-NEXT:    }
484 ; CHECK-NEXT:    {
485 ; CHECK-NEXT:     jumpr r31
486 ; CHECK-NEXT:    }
488   %v0 = icmp eq i32 %a0, 0
489   %v1 = call ptr @llvm.hexagon.V6.vS32Ub.npred.pi.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)
490   ret ptr %v1
493 define ptr @f22(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {
494 ; CHECK-LABEL: f22:
495 ; CHECK:       // %bb.0: // %b0
496 ; CHECK-NEXT:    {
497 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
498 ; CHECK-NEXT:    }
499 ; CHECK-NEXT:    {
500 ; CHECK-NEXT:     r0 = r1
501 ; CHECK-NEXT:    }
502 ; CHECK-NEXT:    {
503 ; CHECK-NEXT:     if (p0) vmem(r0++#-3):nt = v0
504 ; CHECK-NEXT:    }
505 ; CHECK-NEXT:    {
506 ; CHECK-NEXT:     jumpr r31
507 ; CHECK-NEXT:    }
509   %v0 = icmp eq i32 %a0, 0
510   %v1 = call ptr @llvm.hexagon.V6.vS32b.nt.pred.pi.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)
511   ret ptr %v1
514 define ptr @f23(i32 %a0, ptr %a1, <32 x i32> %a2) #0 {
515 ; CHECK-LABEL: f23:
516 ; CHECK:       // %bb.0: // %b0
517 ; CHECK-NEXT:    {
518 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
519 ; CHECK-NEXT:    }
520 ; CHECK-NEXT:    {
521 ; CHECK-NEXT:     r0 = r1
522 ; CHECK-NEXT:    }
523 ; CHECK-NEXT:    {
524 ; CHECK-NEXT:     if (!p0) vmem(r0++#-3):nt = v0
525 ; CHECK-NEXT:    }
526 ; CHECK-NEXT:    {
527 ; CHECK-NEXT:     jumpr r31
528 ; CHECK-NEXT:    }
530   %v0 = icmp eq i32 %a0, 0
531   %v1 = call ptr @llvm.hexagon.V6.vS32b.nt.npred.pi.128B(i1 %v0, ptr %a1, i32 -384, <32 x i32> %a2)
532   ret ptr %v1
535 define ptr @f24(i32 %a0, ptr %a1, i32 %a2, <32 x i32> %a3) #0 {
536 ; CHECK-LABEL: f24:
537 ; CHECK:       // %bb.0: // %b0
538 ; CHECK-NEXT:    {
539 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
540 ; CHECK-NEXT:    }
541 ; CHECK-NEXT:    {
542 ; CHECK-NEXT:     r0 = r1
543 ; CHECK-NEXT:    }
544 ; CHECK-NEXT:    {
545 ; CHECK-NEXT:     m0 = r2
546 ; CHECK-NEXT:    }
547 ; CHECK-NEXT:    {
548 ; CHECK-NEXT:     if (p0) vmem(r0++m0) = v0
549 ; CHECK-NEXT:    }
550 ; CHECK-NEXT:    {
551 ; CHECK-NEXT:     jumpr r31
552 ; CHECK-NEXT:    }
554   %v0 = icmp eq i32 %a0, 0
555   %v1 = call ptr @llvm.hexagon.V6.vS32b.pred.ppu.128B(i1 %v0, ptr %a1, i32 %a2, <32 x i32> %a3)
556   ret ptr %v1
559 define ptr @f25(i32 %a0, ptr %a1, i32 %a2, <32 x i32> %a3) #0 {
560 ; CHECK-LABEL: f25:
561 ; CHECK:       // %bb.0: // %b0
562 ; CHECK-NEXT:    {
563 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
564 ; CHECK-NEXT:    }
565 ; CHECK-NEXT:    {
566 ; CHECK-NEXT:     r0 = r1
567 ; CHECK-NEXT:    }
568 ; CHECK-NEXT:    {
569 ; CHECK-NEXT:     m0 = r2
570 ; CHECK-NEXT:    }
571 ; CHECK-NEXT:    {
572 ; CHECK-NEXT:     if (!p0) vmem(r0++m0) = v0
573 ; CHECK-NEXT:    }
574 ; CHECK-NEXT:    {
575 ; CHECK-NEXT:     jumpr r31
576 ; CHECK-NEXT:    }
578   %v0 = icmp eq i32 %a0, 0
579   %v1 = call ptr @llvm.hexagon.V6.vS32b.npred.ppu.128B(i1 %v0, ptr %a1, i32 %a2, <32 x i32> %a3)
580   ret ptr %v1
583 define ptr @f26(i32 %a0, ptr %a1, i32 %a2, <32 x i32> %a3) #0 {
584 ; CHECK-LABEL: f26:
585 ; CHECK:       // %bb.0: // %b0
586 ; CHECK-NEXT:    {
587 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
588 ; CHECK-NEXT:    }
589 ; CHECK-NEXT:    {
590 ; CHECK-NEXT:     r0 = r1
591 ; CHECK-NEXT:    }
592 ; CHECK-NEXT:    {
593 ; CHECK-NEXT:     m0 = r2
594 ; CHECK-NEXT:    }
595 ; CHECK-NEXT:    {
596 ; CHECK-NEXT:     if (p0) vmemu(r0++m0) = v0
597 ; CHECK-NEXT:    }
598 ; CHECK-NEXT:    {
599 ; CHECK-NEXT:     jumpr r31
600 ; CHECK-NEXT:    }
602   %v0 = icmp eq i32 %a0, 0
603   %v1 = call ptr @llvm.hexagon.V6.vS32Ub.pred.ppu.128B(i1 %v0, ptr %a1, i32 %a2, <32 x i32> %a3)
604   ret ptr %v1
607 define ptr @f27(i32 %a0, ptr %a1, i32 %a2, <32 x i32> %a3) #0 {
608 ; CHECK-LABEL: f27:
609 ; CHECK:       // %bb.0: // %b0
610 ; CHECK-NEXT:    {
611 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
612 ; CHECK-NEXT:    }
613 ; CHECK-NEXT:    {
614 ; CHECK-NEXT:     r0 = r1
615 ; CHECK-NEXT:    }
616 ; CHECK-NEXT:    {
617 ; CHECK-NEXT:     m0 = r2
618 ; CHECK-NEXT:    }
619 ; CHECK-NEXT:    {
620 ; CHECK-NEXT:     if (!p0) vmemu(r0++m0) = v0
621 ; CHECK-NEXT:    }
622 ; CHECK-NEXT:    {
623 ; CHECK-NEXT:     jumpr r31
624 ; CHECK-NEXT:    }
626   %v0 = icmp eq i32 %a0, 0
627   %v1 = call ptr @llvm.hexagon.V6.vS32Ub.npred.ppu.128B(i1 %v0, ptr %a1, i32 %a2, <32 x i32> %a3)
628   ret ptr %v1
631 define ptr @f28(i32 %a0, ptr %a1, i32 %a2, <32 x i32> %a3) #0 {
632 ; CHECK-LABEL: f28:
633 ; CHECK:       // %bb.0: // %b0
634 ; CHECK-NEXT:    {
635 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
636 ; CHECK-NEXT:    }
637 ; CHECK-NEXT:    {
638 ; CHECK-NEXT:     r0 = r1
639 ; CHECK-NEXT:    }
640 ; CHECK-NEXT:    {
641 ; CHECK-NEXT:     m0 = r2
642 ; CHECK-NEXT:    }
643 ; CHECK-NEXT:    {
644 ; CHECK-NEXT:     if (p0) vmem(r0++m0):nt = v0
645 ; CHECK-NEXT:    }
646 ; CHECK-NEXT:    {
647 ; CHECK-NEXT:     jumpr r31
648 ; CHECK-NEXT:    }
650   %v0 = icmp eq i32 %a0, 0
651   %v1 = call ptr @llvm.hexagon.V6.vS32b.nt.pred.ppu.128B(i1 %v0, ptr %a1, i32 %a2, <32 x i32> %a3)
652   ret ptr %v1
655 define ptr @f29(i32 %a0, ptr %a1, i32 %a2, <32 x i32> %a3) #0 {
656 ; CHECK-LABEL: f29:
657 ; CHECK:       // %bb.0: // %b0
658 ; CHECK-NEXT:    {
659 ; CHECK-NEXT:     p0 = cmp.eq(r0,#0)
660 ; CHECK-NEXT:    }
661 ; CHECK-NEXT:    {
662 ; CHECK-NEXT:     r0 = r1
663 ; CHECK-NEXT:    }
664 ; CHECK-NEXT:    {
665 ; CHECK-NEXT:     m0 = r2
666 ; CHECK-NEXT:    }
667 ; CHECK-NEXT:    {
668 ; CHECK-NEXT:     if (!p0) vmem(r0++m0):nt = v0
669 ; CHECK-NEXT:    }
670 ; CHECK-NEXT:    {
671 ; CHECK-NEXT:     jumpr r31
672 ; CHECK-NEXT:    }
674   %v0 = icmp eq i32 %a0, 0
675   %v1 = call ptr @llvm.hexagon.V6.vS32b.nt.npred.ppu.128B(i1 %v0, ptr %a1, i32 %a2, <32 x i32> %a3)
676   ret ptr %v1
679 attributes #0 = { nounwind "target-cpu"="hexagonv66" "target-features"="+hvxv66,+hvx-length128b,-packets" }