1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve2p1 < %s | FileCheck %s
3 ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme2 < %s | FileCheck %s
10 define target("aarch64.svcount") @whilege_c8_vl2(i64 %a, i64 %b) nounwind {
11 ; CHECK-LABEL: whilege_c8_vl2:
13 ; CHECK-NEXT: whilege pn8.b, x0, x1, vlx2
14 ; CHECK-NEXT: mov p0.b, p8.b
16 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c8(i64 %a, i64 %b, i32 2)
17 ret target("aarch64.svcount") %out
20 define target("aarch64.svcount") @whilege_c8_vl4(i64 %a, i64 %b) nounwind {
21 ; CHECK-LABEL: whilege_c8_vl4:
23 ; CHECK-NEXT: whilege pn8.b, x0, x1, vlx4
24 ; CHECK-NEXT: mov p0.b, p8.b
26 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c8(i64 %a, i64 %b, i32 4)
27 ret target("aarch64.svcount") %out
30 define target("aarch64.svcount") @whilege_c16_vl2(i64 %a, i64 %b) nounwind {
31 ; CHECK-LABEL: whilege_c16_vl2:
33 ; CHECK-NEXT: whilege pn8.h, x0, x1, vlx2
34 ; CHECK-NEXT: mov p0.b, p8.b
36 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c16(i64 %a, i64 %b, i32 2)
37 ret target("aarch64.svcount") %out
40 define target("aarch64.svcount") @whilege_c16_vl4(i64 %a, i64 %b) nounwind {
41 ; CHECK-LABEL: whilege_c16_vl4:
43 ; CHECK-NEXT: whilege pn8.h, x0, x1, vlx4
44 ; CHECK-NEXT: mov p0.b, p8.b
46 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c16(i64 %a, i64 %b, i32 4)
47 ret target("aarch64.svcount") %out
50 define target("aarch64.svcount") @whilege_c32_vl2(i64 %a, i64 %b) nounwind {
51 ; CHECK-LABEL: whilege_c32_vl2:
53 ; CHECK-NEXT: whilege pn8.s, x0, x1, vlx2
54 ; CHECK-NEXT: mov p0.b, p8.b
56 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c32(i64 %a, i64 %b, i32 2)
57 ret target("aarch64.svcount") %out
60 define target("aarch64.svcount") @whilege_c32_vl4(i64 %a, i64 %b) nounwind {
61 ; CHECK-LABEL: whilege_c32_vl4:
63 ; CHECK-NEXT: whilege pn8.s, x0, x1, vlx4
64 ; CHECK-NEXT: mov p0.b, p8.b
66 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c32(i64 %a, i64 %b, i32 4)
67 ret target("aarch64.svcount") %out
70 define target("aarch64.svcount") @whilege_c64_vl2(i64 %a, i64 %b) nounwind {
71 ; CHECK-LABEL: whilege_c64_vl2:
73 ; CHECK-NEXT: whilege pn8.d, x0, x1, vlx2
74 ; CHECK-NEXT: mov p0.b, p8.b
76 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c64(i64 %a, i64 %b, i32 2)
77 ret target("aarch64.svcount") %out
80 define target("aarch64.svcount") @whilege_c64_vl4(i64 %a, i64 %b) nounwind {
81 ; CHECK-LABEL: whilege_c64_vl4:
83 ; CHECK-NEXT: whilege pn8.d, x0, x1, vlx4
84 ; CHECK-NEXT: mov p0.b, p8.b
86 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c64(i64 %a, i64 %b, i32 4)
87 ret target("aarch64.svcount") %out
95 define target("aarch64.svcount") @whilegt_c8_vl2(i64 %a, i64 %b) nounwind {
96 ; CHECK-LABEL: whilegt_c8_vl2:
98 ; CHECK-NEXT: whilegt pn8.b, x0, x1, vlx2
99 ; CHECK-NEXT: mov p0.b, p8.b
101 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c8(i64 %a, i64 %b, i32 2)
102 ret target("aarch64.svcount") %out
105 define target("aarch64.svcount") @whilegt_c8_vl4(i64 %a, i64 %b) nounwind {
106 ; CHECK-LABEL: whilegt_c8_vl4:
108 ; CHECK-NEXT: whilegt pn8.b, x0, x1, vlx4
109 ; CHECK-NEXT: mov p0.b, p8.b
111 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c8(i64 %a, i64 %b, i32 4)
112 ret target("aarch64.svcount") %out
115 define target("aarch64.svcount") @whilegt_c16_vl2(i64 %a, i64 %b) nounwind {
116 ; CHECK-LABEL: whilegt_c16_vl2:
118 ; CHECK-NEXT: whilegt pn8.h, x0, x1, vlx2
119 ; CHECK-NEXT: mov p0.b, p8.b
121 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c16(i64 %a, i64 %b, i32 2)
122 ret target("aarch64.svcount") %out
125 define target("aarch64.svcount") @whilegt_c16_vl4(i64 %a, i64 %b) nounwind {
126 ; CHECK-LABEL: whilegt_c16_vl4:
128 ; CHECK-NEXT: whilegt pn8.h, x0, x1, vlx4
129 ; CHECK-NEXT: mov p0.b, p8.b
131 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c16(i64 %a, i64 %b, i32 4)
132 ret target("aarch64.svcount") %out
135 define target("aarch64.svcount") @whilegt_c32_vl2(i64 %a, i64 %b) nounwind {
136 ; CHECK-LABEL: whilegt_c32_vl2:
138 ; CHECK-NEXT: whilegt pn8.s, x0, x1, vlx2
139 ; CHECK-NEXT: mov p0.b, p8.b
141 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c32(i64 %a, i64 %b, i32 2)
142 ret target("aarch64.svcount") %out
145 define target("aarch64.svcount") @whilegt_c32_vl4(i64 %a, i64 %b) nounwind {
146 ; CHECK-LABEL: whilegt_c32_vl4:
148 ; CHECK-NEXT: whilegt pn8.s, x0, x1, vlx4
149 ; CHECK-NEXT: mov p0.b, p8.b
151 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c32(i64 %a, i64 %b, i32 4)
152 ret target("aarch64.svcount") %out
155 define target("aarch64.svcount") @whilegt_c64_vl2(i64 %a, i64 %b) nounwind {
156 ; CHECK-LABEL: whilegt_c64_vl2:
158 ; CHECK-NEXT: whilegt pn8.d, x0, x1, vlx2
159 ; CHECK-NEXT: mov p0.b, p8.b
161 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c64(i64 %a, i64 %b, i32 2)
162 ret target("aarch64.svcount") %out
165 define target("aarch64.svcount") @whilegt_c64_vl4(i64 %a, i64 %b) nounwind {
166 ; CHECK-LABEL: whilegt_c64_vl4:
168 ; CHECK-NEXT: whilegt pn8.d, x0, x1, vlx4
169 ; CHECK-NEXT: mov p0.b, p8.b
171 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c64(i64 %a, i64 %b, i32 4)
172 ret target("aarch64.svcount") %out
180 define target("aarch64.svcount") @whilehi_c8_vl2(i64 %a, i64 %b) nounwind {
181 ; CHECK-LABEL: whilehi_c8_vl2:
183 ; CHECK-NEXT: whilehi pn8.b, x0, x1, vlx2
184 ; CHECK-NEXT: mov p0.b, p8.b
186 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c8(i64 %a, i64 %b, i32 2)
187 ret target("aarch64.svcount") %out
190 define target("aarch64.svcount") @whilehi_c8_vl4(i64 %a, i64 %b) nounwind {
191 ; CHECK-LABEL: whilehi_c8_vl4:
193 ; CHECK-NEXT: whilehi pn8.b, x0, x1, vlx4
194 ; CHECK-NEXT: mov p0.b, p8.b
196 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c8(i64 %a, i64 %b, i32 4)
197 ret target("aarch64.svcount") %out
200 define target("aarch64.svcount") @whilehi_c16_vl2(i64 %a, i64 %b) nounwind {
201 ; CHECK-LABEL: whilehi_c16_vl2:
203 ; CHECK-NEXT: whilehi pn8.h, x0, x1, vlx2
204 ; CHECK-NEXT: mov p0.b, p8.b
206 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c16(i64 %a, i64 %b, i32 2)
207 ret target("aarch64.svcount") %out
210 define target("aarch64.svcount") @whilehi_c16_vl4(i64 %a, i64 %b) nounwind {
211 ; CHECK-LABEL: whilehi_c16_vl4:
213 ; CHECK-NEXT: whilehi pn8.h, x0, x1, vlx4
214 ; CHECK-NEXT: mov p0.b, p8.b
216 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c16(i64 %a, i64 %b, i32 4)
217 ret target("aarch64.svcount") %out
220 define target("aarch64.svcount") @whilehi_c32_vl2(i64 %a, i64 %b) nounwind {
221 ; CHECK-LABEL: whilehi_c32_vl2:
223 ; CHECK-NEXT: whilehi pn8.s, x0, x1, vlx2
224 ; CHECK-NEXT: mov p0.b, p8.b
226 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c32(i64 %a, i64 %b, i32 2)
227 ret target("aarch64.svcount") %out
230 define target("aarch64.svcount") @whilehi_c32_vl4(i64 %a, i64 %b) nounwind {
231 ; CHECK-LABEL: whilehi_c32_vl4:
233 ; CHECK-NEXT: whilehi pn8.s, x0, x1, vlx4
234 ; CHECK-NEXT: mov p0.b, p8.b
236 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c32(i64 %a, i64 %b, i32 4)
237 ret target("aarch64.svcount") %out
240 define target("aarch64.svcount") @whilehi_c64_vl2(i64 %a, i64 %b) nounwind {
241 ; CHECK-LABEL: whilehi_c64_vl2:
243 ; CHECK-NEXT: whilehi pn8.d, x0, x1, vlx2
244 ; CHECK-NEXT: mov p0.b, p8.b
246 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c64(i64 %a, i64 %b, i32 2)
247 ret target("aarch64.svcount") %out
250 define target("aarch64.svcount") @whilehi_c64_vl4(i64 %a, i64 %b) nounwind {
251 ; CHECK-LABEL: whilehi_c64_vl4:
253 ; CHECK-NEXT: whilehi pn8.d, x0, x1, vlx4
254 ; CHECK-NEXT: mov p0.b, p8.b
256 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c64(i64 %a, i64 %b, i32 4)
257 ret target("aarch64.svcount") %out
265 define target("aarch64.svcount") @whilehs_c8_vl2(i64 %a, i64 %b) nounwind {
266 ; CHECK-LABEL: whilehs_c8_vl2:
268 ; CHECK-NEXT: whilehs pn8.b, x0, x1, vlx2
269 ; CHECK-NEXT: mov p0.b, p8.b
271 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c8(i64 %a, i64 %b, i32 2)
272 ret target("aarch64.svcount") %out
275 define target("aarch64.svcount") @whilehs_c8_vl4(i64 %a, i64 %b) nounwind {
276 ; CHECK-LABEL: whilehs_c8_vl4:
278 ; CHECK-NEXT: whilehs pn8.b, x0, x1, vlx4
279 ; CHECK-NEXT: mov p0.b, p8.b
281 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c8(i64 %a, i64 %b, i32 4)
282 ret target("aarch64.svcount") %out
285 define target("aarch64.svcount") @whilehs_c16_vl2(i64 %a, i64 %b) nounwind {
286 ; CHECK-LABEL: whilehs_c16_vl2:
288 ; CHECK-NEXT: whilehs pn8.h, x0, x1, vlx2
289 ; CHECK-NEXT: mov p0.b, p8.b
291 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c16(i64 %a, i64 %b, i32 2)
292 ret target("aarch64.svcount") %out
295 define target("aarch64.svcount") @whilehs_c16_vl4(i64 %a, i64 %b) nounwind {
296 ; CHECK-LABEL: whilehs_c16_vl4:
298 ; CHECK-NEXT: whilehs pn8.h, x0, x1, vlx4
299 ; CHECK-NEXT: mov p0.b, p8.b
301 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c16(i64 %a, i64 %b, i32 4)
302 ret target("aarch64.svcount") %out
305 define target("aarch64.svcount") @whilehs_c32_vl2(i64 %a, i64 %b) nounwind {
306 ; CHECK-LABEL: whilehs_c32_vl2:
308 ; CHECK-NEXT: whilehs pn8.s, x0, x1, vlx2
309 ; CHECK-NEXT: mov p0.b, p8.b
311 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c32(i64 %a, i64 %b, i32 2)
312 ret target("aarch64.svcount") %out
315 define target("aarch64.svcount") @whilehs_c32_vl4(i64 %a, i64 %b) nounwind {
316 ; CHECK-LABEL: whilehs_c32_vl4:
318 ; CHECK-NEXT: whilehs pn8.s, x0, x1, vlx4
319 ; CHECK-NEXT: mov p0.b, p8.b
321 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c32(i64 %a, i64 %b, i32 4)
322 ret target("aarch64.svcount") %out
325 define target("aarch64.svcount") @whilehs_c64_vl2(i64 %a, i64 %b) nounwind {
326 ; CHECK-LABEL: whilehs_c64_vl2:
328 ; CHECK-NEXT: whilehs pn8.d, x0, x1, vlx2
329 ; CHECK-NEXT: mov p0.b, p8.b
331 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c64(i64 %a, i64 %b, i32 2)
332 ret target("aarch64.svcount") %out
335 define target("aarch64.svcount") @whilehs_c64_vl4(i64 %a, i64 %b) nounwind {
336 ; CHECK-LABEL: whilehs_c64_vl4:
338 ; CHECK-NEXT: whilehs pn8.d, x0, x1, vlx4
339 ; CHECK-NEXT: mov p0.b, p8.b
341 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c64(i64 %a, i64 %b, i32 4)
342 ret target("aarch64.svcount") %out
350 define target("aarch64.svcount") @whilele_c8_vl2(i64 %a, i64 %b) nounwind {
351 ; CHECK-LABEL: whilele_c8_vl2:
353 ; CHECK-NEXT: whilele pn8.b, x0, x1, vlx2
354 ; CHECK-NEXT: mov p0.b, p8.b
356 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c8(i64 %a, i64 %b, i32 2)
357 ret target("aarch64.svcount") %out
360 define target("aarch64.svcount") @whilele_c8_vl4(i64 %a, i64 %b) nounwind {
361 ; CHECK-LABEL: whilele_c8_vl4:
363 ; CHECK-NEXT: whilele pn8.b, x0, x1, vlx4
364 ; CHECK-NEXT: mov p0.b, p8.b
366 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c8(i64 %a, i64 %b, i32 4)
367 ret target("aarch64.svcount") %out
370 define target("aarch64.svcount") @whilele_c16_vl2(i64 %a, i64 %b) nounwind {
371 ; CHECK-LABEL: whilele_c16_vl2:
373 ; CHECK-NEXT: whilele pn8.h, x0, x1, vlx2
374 ; CHECK-NEXT: mov p0.b, p8.b
376 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c16(i64 %a, i64 %b, i32 2)
377 ret target("aarch64.svcount") %out
380 define target("aarch64.svcount") @whilele_c16_vl4(i64 %a, i64 %b) nounwind {
381 ; CHECK-LABEL: whilele_c16_vl4:
383 ; CHECK-NEXT: whilele pn8.h, x0, x1, vlx4
384 ; CHECK-NEXT: mov p0.b, p8.b
386 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c16(i64 %a, i64 %b, i32 4)
387 ret target("aarch64.svcount") %out
390 define target("aarch64.svcount") @whilele_c32_vl2(i64 %a, i64 %b) nounwind {
391 ; CHECK-LABEL: whilele_c32_vl2:
393 ; CHECK-NEXT: whilele pn8.s, x0, x1, vlx2
394 ; CHECK-NEXT: mov p0.b, p8.b
396 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c32(i64 %a, i64 %b, i32 2)
397 ret target("aarch64.svcount") %out
400 define target("aarch64.svcount") @whilele_c32_vl4(i64 %a, i64 %b) nounwind {
401 ; CHECK-LABEL: whilele_c32_vl4:
403 ; CHECK-NEXT: whilele pn8.s, x0, x1, vlx4
404 ; CHECK-NEXT: mov p0.b, p8.b
406 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c32(i64 %a, i64 %b, i32 4)
407 ret target("aarch64.svcount") %out
410 define target("aarch64.svcount") @whilele_c64_vl2(i64 %a, i64 %b) nounwind {
411 ; CHECK-LABEL: whilele_c64_vl2:
413 ; CHECK-NEXT: whilele pn8.d, x0, x1, vlx2
414 ; CHECK-NEXT: mov p0.b, p8.b
416 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c64(i64 %a, i64 %b, i32 2)
417 ret target("aarch64.svcount") %out
420 define target("aarch64.svcount") @whilele_c64_vl4(i64 %a, i64 %b) nounwind {
421 ; CHECK-LABEL: whilele_c64_vl4:
423 ; CHECK-NEXT: whilele pn8.d, x0, x1, vlx4
424 ; CHECK-NEXT: mov p0.b, p8.b
426 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c64(i64 %a, i64 %b, i32 4)
427 ret target("aarch64.svcount") %out
435 define target("aarch64.svcount") @whilelo_c8_vl2(i64 %a, i64 %b) nounwind {
436 ; CHECK-LABEL: whilelo_c8_vl2:
438 ; CHECK-NEXT: whilelo pn8.b, x0, x1, vlx2
439 ; CHECK-NEXT: mov p0.b, p8.b
441 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c8(i64 %a, i64 %b, i32 2)
442 ret target("aarch64.svcount") %out
445 define target("aarch64.svcount") @whilelo_c8_vl4(i64 %a, i64 %b) nounwind {
446 ; CHECK-LABEL: whilelo_c8_vl4:
448 ; CHECK-NEXT: whilelo pn8.b, x0, x1, vlx4
449 ; CHECK-NEXT: mov p0.b, p8.b
451 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c8(i64 %a, i64 %b, i32 4)
452 ret target("aarch64.svcount") %out
455 define target("aarch64.svcount") @whilelo_c16_vl2(i64 %a, i64 %b) nounwind {
456 ; CHECK-LABEL: whilelo_c16_vl2:
458 ; CHECK-NEXT: whilelo pn8.h, x0, x1, vlx2
459 ; CHECK-NEXT: mov p0.b, p8.b
461 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c16(i64 %a, i64 %b, i32 2)
462 ret target("aarch64.svcount") %out
465 define target("aarch64.svcount") @whilelo_c16_vl4(i64 %a, i64 %b) nounwind {
466 ; CHECK-LABEL: whilelo_c16_vl4:
468 ; CHECK-NEXT: whilelo pn8.h, x0, x1, vlx4
469 ; CHECK-NEXT: mov p0.b, p8.b
471 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c16(i64 %a, i64 %b, i32 4)
472 ret target("aarch64.svcount") %out
475 define target("aarch64.svcount") @whilelo_c32_vl2(i64 %a, i64 %b) nounwind {
476 ; CHECK-LABEL: whilelo_c32_vl2:
478 ; CHECK-NEXT: whilelo pn8.s, x0, x1, vlx2
479 ; CHECK-NEXT: mov p0.b, p8.b
481 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c32(i64 %a, i64 %b, i32 2)
482 ret target("aarch64.svcount") %out
485 define target("aarch64.svcount") @whilelo_c32_vl4(i64 %a, i64 %b) nounwind {
486 ; CHECK-LABEL: whilelo_c32_vl4:
488 ; CHECK-NEXT: whilelo pn8.s, x0, x1, vlx4
489 ; CHECK-NEXT: mov p0.b, p8.b
491 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c32(i64 %a, i64 %b, i32 4)
492 ret target("aarch64.svcount") %out
495 define target("aarch64.svcount") @whilelo_c64_vl2(i64 %a, i64 %b) nounwind {
496 ; CHECK-LABEL: whilelo_c64_vl2:
498 ; CHECK-NEXT: whilelo pn8.d, x0, x1, vlx2
499 ; CHECK-NEXT: mov p0.b, p8.b
501 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c64(i64 %a, i64 %b, i32 2)
502 ret target("aarch64.svcount") %out
505 define target("aarch64.svcount") @whilelo_c64_vl4(i64 %a, i64 %b) nounwind {
506 ; CHECK-LABEL: whilelo_c64_vl4:
508 ; CHECK-NEXT: whilelo pn8.d, x0, x1, vlx4
509 ; CHECK-NEXT: mov p0.b, p8.b
511 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c64(i64 %a, i64 %b, i32 4)
512 ret target("aarch64.svcount") %out
520 define target("aarch64.svcount") @whilels_c8_vl2(i64 %a, i64 %b) nounwind {
521 ; CHECK-LABEL: whilels_c8_vl2:
523 ; CHECK-NEXT: whilels pn8.b, x0, x1, vlx2
524 ; CHECK-NEXT: mov p0.b, p8.b
526 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c8(i64 %a, i64 %b, i32 2)
527 ret target("aarch64.svcount") %out
530 define target("aarch64.svcount") @whilels_c8_vl4(i64 %a, i64 %b) nounwind {
531 ; CHECK-LABEL: whilels_c8_vl4:
533 ; CHECK-NEXT: whilels pn8.b, x0, x1, vlx4
534 ; CHECK-NEXT: mov p0.b, p8.b
536 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c8(i64 %a, i64 %b, i32 4)
537 ret target("aarch64.svcount") %out
540 define target("aarch64.svcount") @whilels_c16_vl2(i64 %a, i64 %b) nounwind {
541 ; CHECK-LABEL: whilels_c16_vl2:
543 ; CHECK-NEXT: whilels pn8.h, x0, x1, vlx2
544 ; CHECK-NEXT: mov p0.b, p8.b
546 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c16(i64 %a, i64 %b, i32 2)
547 ret target("aarch64.svcount") %out
550 define target("aarch64.svcount") @whilels_c16_vl4(i64 %a, i64 %b) nounwind {
551 ; CHECK-LABEL: whilels_c16_vl4:
553 ; CHECK-NEXT: whilels pn8.h, x0, x1, vlx4
554 ; CHECK-NEXT: mov p0.b, p8.b
556 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c16(i64 %a, i64 %b, i32 4)
557 ret target("aarch64.svcount") %out
560 define target("aarch64.svcount") @whilels_c32_vl2(i64 %a, i64 %b) nounwind {
561 ; CHECK-LABEL: whilels_c32_vl2:
563 ; CHECK-NEXT: whilels pn8.s, x0, x1, vlx2
564 ; CHECK-NEXT: mov p0.b, p8.b
566 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c32(i64 %a, i64 %b, i32 2)
567 ret target("aarch64.svcount") %out
570 define target("aarch64.svcount") @whilels_c32_vl4(i64 %a, i64 %b) nounwind {
571 ; CHECK-LABEL: whilels_c32_vl4:
573 ; CHECK-NEXT: whilels pn8.s, x0, x1, vlx4
574 ; CHECK-NEXT: mov p0.b, p8.b
576 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c32(i64 %a, i64 %b, i32 4)
577 ret target("aarch64.svcount") %out
580 define target("aarch64.svcount") @whilels_c64_vl2(i64 %a, i64 %b) nounwind {
581 ; CHECK-LABEL: whilels_c64_vl2:
583 ; CHECK-NEXT: whilels pn8.d, x0, x1, vlx2
584 ; CHECK-NEXT: mov p0.b, p8.b
586 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c64(i64 %a, i64 %b, i32 2)
587 ret target("aarch64.svcount") %out
590 define target("aarch64.svcount") @whilels_c64_vl4(i64 %a, i64 %b) nounwind {
591 ; CHECK-LABEL: whilels_c64_vl4:
593 ; CHECK-NEXT: whilels pn8.d, x0, x1, vlx4
594 ; CHECK-NEXT: mov p0.b, p8.b
596 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c64(i64 %a, i64 %b, i32 4)
597 ret target("aarch64.svcount") %out
605 define target("aarch64.svcount") @whilelt_c8_vl2(i64 %a, i64 %b) nounwind {
606 ; CHECK-LABEL: whilelt_c8_vl2:
608 ; CHECK-NEXT: whilelt pn8.b, x0, x1, vlx2
609 ; CHECK-NEXT: mov p0.b, p8.b
611 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c8(i64 %a, i64 %b, i32 2)
612 ret target("aarch64.svcount") %out
615 define target("aarch64.svcount") @whilelt_c8_vl4(i64 %a, i64 %b) nounwind {
616 ; CHECK-LABEL: whilelt_c8_vl4:
618 ; CHECK-NEXT: whilelt pn8.b, x0, x1, vlx4
619 ; CHECK-NEXT: mov p0.b, p8.b
621 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c8(i64 %a, i64 %b, i32 4)
622 ret target("aarch64.svcount") %out
625 define target("aarch64.svcount") @whilelt_c16_vl2(i64 %a, i64 %b) nounwind {
626 ; CHECK-LABEL: whilelt_c16_vl2:
628 ; CHECK-NEXT: whilelt pn8.h, x0, x1, vlx2
629 ; CHECK-NEXT: mov p0.b, p8.b
631 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c16(i64 %a, i64 %b, i32 2)
632 ret target("aarch64.svcount") %out
635 define target("aarch64.svcount") @whilelt_c16_vl4(i64 %a, i64 %b) nounwind {
636 ; CHECK-LABEL: whilelt_c16_vl4:
638 ; CHECK-NEXT: whilelt pn8.h, x0, x1, vlx4
639 ; CHECK-NEXT: mov p0.b, p8.b
641 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c16(i64 %a, i64 %b, i32 4)
642 ret target("aarch64.svcount") %out
645 define target("aarch64.svcount") @whilelt_c32_vl2(i64 %a, i64 %b) nounwind {
646 ; CHECK-LABEL: whilelt_c32_vl2:
648 ; CHECK-NEXT: whilelt pn8.s, x0, x1, vlx2
649 ; CHECK-NEXT: mov p0.b, p8.b
651 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c32(i64 %a, i64 %b, i32 2)
652 ret target("aarch64.svcount") %out
655 define target("aarch64.svcount") @whilelt_c32_vl4(i64 %a, i64 %b) nounwind {
656 ; CHECK-LABEL: whilelt_c32_vl4:
658 ; CHECK-NEXT: whilelt pn8.s, x0, x1, vlx4
659 ; CHECK-NEXT: mov p0.b, p8.b
661 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c32(i64 %a, i64 %b, i32 4)
662 ret target("aarch64.svcount") %out
665 define target("aarch64.svcount") @whilelt_c64_vl2(i64 %a, i64 %b) nounwind {
666 ; CHECK-LABEL: whilelt_c64_vl2:
668 ; CHECK-NEXT: whilelt pn8.d, x0, x1, vlx2
669 ; CHECK-NEXT: mov p0.b, p8.b
671 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c64(i64 %a, i64 %b, i32 2)
672 ret target("aarch64.svcount") %out
675 define target("aarch64.svcount") @whilelt_c64_vl4(i64 %a, i64 %b) nounwind {
676 ; CHECK-LABEL: whilelt_c64_vl4:
678 ; CHECK-NEXT: whilelt pn8.d, x0, x1, vlx4
679 ; CHECK-NEXT: mov p0.b, p8.b
681 %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c64(i64 %a, i64 %b, i32 4)
682 ret target("aarch64.svcount") %out
686 declare target("aarch64.svcount") @llvm.aarch64.sve.whilege.c8(i64, i64, i32)
687 declare target("aarch64.svcount") @llvm.aarch64.sve.whilege.c16(i64, i64, i32)
688 declare target("aarch64.svcount") @llvm.aarch64.sve.whilege.c32(i64, i64, i32)
689 declare target("aarch64.svcount") @llvm.aarch64.sve.whilege.c64(i64, i64, i32)
690 declare target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c8(i64, i64, i32)
691 declare target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c16(i64, i64, i32)
692 declare target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c32(i64, i64, i32)
693 declare target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c64(i64, i64, i32)
694 declare target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c8(i64, i64, i32)
695 declare target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c16(i64, i64, i32)
696 declare target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c32(i64, i64, i32)
697 declare target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c64(i64, i64, i32)
698 declare target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c8(i64, i64, i32)
699 declare target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c16(i64, i64, i32)
700 declare target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c32(i64, i64, i32)
701 declare target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c64(i64, i64, i32)
702 declare target("aarch64.svcount") @llvm.aarch64.sve.whilele.c8(i64, i64, i32)
703 declare target("aarch64.svcount") @llvm.aarch64.sve.whilele.c16(i64, i64, i32)
704 declare target("aarch64.svcount") @llvm.aarch64.sve.whilele.c32(i64, i64, i32)
705 declare target("aarch64.svcount") @llvm.aarch64.sve.whilele.c64(i64, i64, i32)
706 declare target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c8(i64, i64, i32)
707 declare target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c16(i64, i64, i32)
708 declare target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c32(i64, i64, i32)
709 declare target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c64(i64, i64, i32)
710 declare target("aarch64.svcount") @llvm.aarch64.sve.whilels.c8(i64, i64, i32)
711 declare target("aarch64.svcount") @llvm.aarch64.sve.whilels.c16(i64, i64, i32)
712 declare target("aarch64.svcount") @llvm.aarch64.sve.whilels.c32(i64, i64, i32)
713 declare target("aarch64.svcount") @llvm.aarch64.sve.whilels.c64(i64, i64, i32)
714 declare target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c8(i64, i64, i32)
715 declare target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c16(i64, i64, i32)
716 declare target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c32(i64, i64, i32)
717 declare target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c64(i64, i64, i32)