1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=thumbv8.1m.main -mattr=+mve -verify-machineinstrs -o - %s | FileCheck %s
4 define arm_aapcs_vfpcc <16 x i8> @test_vshlq_s8(<16 x i8> %a, <16 x i8> %b) {
5 ; CHECK-LABEL: test_vshlq_s8:
6 ; CHECK: @ %bb.0: @ %entry
7 ; CHECK-NEXT: vshl.s8 q0, q0, q1
10 %0 = call <16 x i8> @llvm.arm.mve.vshl.vector.v16i8.v16i8(<16 x i8> %a, <16 x i8> %b, i32 0, i32 0, i32 0)
14 define arm_aapcs_vfpcc <8 x i16> @test_vshlq_s16(<8 x i16> %a, <8 x i16> %b) {
15 ; CHECK-LABEL: test_vshlq_s16:
16 ; CHECK: @ %bb.0: @ %entry
17 ; CHECK-NEXT: vshl.s16 q0, q0, q1
20 %0 = call <8 x i16> @llvm.arm.mve.vshl.vector.v8i16.v8i16(<8 x i16> %a, <8 x i16> %b, i32 0, i32 0, i32 0)
24 define arm_aapcs_vfpcc <4 x i32> @test_vshlq_s32(<4 x i32> %a, <4 x i32> %b) {
25 ; CHECK-LABEL: test_vshlq_s32:
26 ; CHECK: @ %bb.0: @ %entry
27 ; CHECK-NEXT: vshl.s32 q0, q0, q1
30 %0 = call <4 x i32> @llvm.arm.mve.vshl.vector.v4i32.v4i32(<4 x i32> %a, <4 x i32> %b, i32 0, i32 0, i32 0)
34 define arm_aapcs_vfpcc <16 x i8> @test_vshlq_u8(<16 x i8> %a, <16 x i8> %b) {
35 ; CHECK-LABEL: test_vshlq_u8:
36 ; CHECK: @ %bb.0: @ %entry
37 ; CHECK-NEXT: vshl.u8 q0, q0, q1
40 %0 = call <16 x i8> @llvm.arm.mve.vshl.vector.v16i8.v16i8(<16 x i8> %a, <16 x i8> %b, i32 0, i32 0, i32 1)
44 define arm_aapcs_vfpcc <8 x i16> @test_vshlq_u16(<8 x i16> %a, <8 x i16> %b) {
45 ; CHECK-LABEL: test_vshlq_u16:
46 ; CHECK: @ %bb.0: @ %entry
47 ; CHECK-NEXT: vshl.u16 q0, q0, q1
50 %0 = call <8 x i16> @llvm.arm.mve.vshl.vector.v8i16.v8i16(<8 x i16> %a, <8 x i16> %b, i32 0, i32 0, i32 1)
54 define arm_aapcs_vfpcc <4 x i32> @test_vshlq_u32(<4 x i32> %a, <4 x i32> %b) {
55 ; CHECK-LABEL: test_vshlq_u32:
56 ; CHECK: @ %bb.0: @ %entry
57 ; CHECK-NEXT: vshl.u32 q0, q0, q1
60 %0 = call <4 x i32> @llvm.arm.mve.vshl.vector.v4i32.v4i32(<4 x i32> %a, <4 x i32> %b, i32 0, i32 0, i32 1)
64 define arm_aapcs_vfpcc <16 x i8> @test_vshlq_r_s8(<16 x i8> %a, i32 %b) {
65 ; CHECK-LABEL: test_vshlq_r_s8:
66 ; CHECK: @ %bb.0: @ %entry
67 ; CHECK-NEXT: vshl.s8 q0, r0
70 %0 = call <16 x i8> @llvm.arm.mve.vshl.scalar.v16i8(<16 x i8> %a, i32 %b, i32 0, i32 0, i32 0)
74 define arm_aapcs_vfpcc <8 x i16> @test_vshlq_r_s16(<8 x i16> %a, i32 %b) {
75 ; CHECK-LABEL: test_vshlq_r_s16:
76 ; CHECK: @ %bb.0: @ %entry
77 ; CHECK-NEXT: vshl.s16 q0, r0
80 %0 = call <8 x i16> @llvm.arm.mve.vshl.scalar.v8i16(<8 x i16> %a, i32 %b, i32 0, i32 0, i32 0)
84 define arm_aapcs_vfpcc <4 x i32> @test_vshlq_r_s32(<4 x i32> %a, i32 %b) {
85 ; CHECK-LABEL: test_vshlq_r_s32:
86 ; CHECK: @ %bb.0: @ %entry
87 ; CHECK-NEXT: vshl.s32 q0, r0
90 %0 = call <4 x i32> @llvm.arm.mve.vshl.scalar.v4i32(<4 x i32> %a, i32 %b, i32 0, i32 0, i32 0)
94 define arm_aapcs_vfpcc <16 x i8> @test_vshlq_r_u8(<16 x i8> %a, i32 %b) {
95 ; CHECK-LABEL: test_vshlq_r_u8:
96 ; CHECK: @ %bb.0: @ %entry
97 ; CHECK-NEXT: vshl.u8 q0, r0
100 %0 = call <16 x i8> @llvm.arm.mve.vshl.scalar.v16i8(<16 x i8> %a, i32 %b, i32 0, i32 0, i32 1)
104 define arm_aapcs_vfpcc <8 x i16> @test_vshlq_r_u16(<8 x i16> %a, i32 %b) {
105 ; CHECK-LABEL: test_vshlq_r_u16:
106 ; CHECK: @ %bb.0: @ %entry
107 ; CHECK-NEXT: vshl.u16 q0, r0
110 %0 = call <8 x i16> @llvm.arm.mve.vshl.scalar.v8i16(<8 x i16> %a, i32 %b, i32 0, i32 0, i32 1)
114 define arm_aapcs_vfpcc <4 x i32> @test_vshlq_r_u32(<4 x i32> %a, i32 %b) {
115 ; CHECK-LABEL: test_vshlq_r_u32:
116 ; CHECK: @ %bb.0: @ %entry
117 ; CHECK-NEXT: vshl.u32 q0, r0
120 %0 = call <4 x i32> @llvm.arm.mve.vshl.scalar.v4i32(<4 x i32> %a, i32 %b, i32 0, i32 0, i32 1)
124 define arm_aapcs_vfpcc <16 x i8> @test_vqshlq_s8(<16 x i8> %a, <16 x i8> %b) {
125 ; CHECK-LABEL: test_vqshlq_s8:
126 ; CHECK: @ %bb.0: @ %entry
127 ; CHECK-NEXT: vqshl.s8 q0, q0, q1
130 %0 = call <16 x i8> @llvm.arm.mve.vshl.vector.v16i8.v16i8(<16 x i8> %a, <16 x i8> %b, i32 1, i32 0, i32 0)
134 define arm_aapcs_vfpcc <8 x i16> @test_vqshlq_s16(<8 x i16> %a, <8 x i16> %b) {
135 ; CHECK-LABEL: test_vqshlq_s16:
136 ; CHECK: @ %bb.0: @ %entry
137 ; CHECK-NEXT: vqshl.s16 q0, q0, q1
140 %0 = call <8 x i16> @llvm.arm.mve.vshl.vector.v8i16.v8i16(<8 x i16> %a, <8 x i16> %b, i32 1, i32 0, i32 0)
144 define arm_aapcs_vfpcc <4 x i32> @test_vqshlq_s32(<4 x i32> %a, <4 x i32> %b) {
145 ; CHECK-LABEL: test_vqshlq_s32:
146 ; CHECK: @ %bb.0: @ %entry
147 ; CHECK-NEXT: vqshl.s32 q0, q0, q1
150 %0 = call <4 x i32> @llvm.arm.mve.vshl.vector.v4i32.v4i32(<4 x i32> %a, <4 x i32> %b, i32 1, i32 0, i32 0)
154 define arm_aapcs_vfpcc <16 x i8> @test_vqshlq_u8(<16 x i8> %a, <16 x i8> %b) {
155 ; CHECK-LABEL: test_vqshlq_u8:
156 ; CHECK: @ %bb.0: @ %entry
157 ; CHECK-NEXT: vqshl.u8 q0, q0, q1
160 %0 = call <16 x i8> @llvm.arm.mve.vshl.vector.v16i8.v16i8(<16 x i8> %a, <16 x i8> %b, i32 1, i32 0, i32 1)
164 define arm_aapcs_vfpcc <8 x i16> @test_vqshlq_u16(<8 x i16> %a, <8 x i16> %b) {
165 ; CHECK-LABEL: test_vqshlq_u16:
166 ; CHECK: @ %bb.0: @ %entry
167 ; CHECK-NEXT: vqshl.u16 q0, q0, q1
170 %0 = call <8 x i16> @llvm.arm.mve.vshl.vector.v8i16.v8i16(<8 x i16> %a, <8 x i16> %b, i32 1, i32 0, i32 1)
174 define arm_aapcs_vfpcc <4 x i32> @test_vqshlq_u32(<4 x i32> %a, <4 x i32> %b) {
175 ; CHECK-LABEL: test_vqshlq_u32:
176 ; CHECK: @ %bb.0: @ %entry
177 ; CHECK-NEXT: vqshl.u32 q0, q0, q1
180 %0 = call <4 x i32> @llvm.arm.mve.vshl.vector.v4i32.v4i32(<4 x i32> %a, <4 x i32> %b, i32 1, i32 0, i32 1)
184 define arm_aapcs_vfpcc <16 x i8> @test_vqshlq_r_s8(<16 x i8> %a, i32 %b) {
185 ; CHECK-LABEL: test_vqshlq_r_s8:
186 ; CHECK: @ %bb.0: @ %entry
187 ; CHECK-NEXT: vqshl.s8 q0, r0
190 %0 = call <16 x i8> @llvm.arm.mve.vshl.scalar.v16i8(<16 x i8> %a, i32 %b, i32 1, i32 0, i32 0)
194 define arm_aapcs_vfpcc <8 x i16> @test_vqshlq_r_s16(<8 x i16> %a, i32 %b) {
195 ; CHECK-LABEL: test_vqshlq_r_s16:
196 ; CHECK: @ %bb.0: @ %entry
197 ; CHECK-NEXT: vqshl.s16 q0, r0
200 %0 = call <8 x i16> @llvm.arm.mve.vshl.scalar.v8i16(<8 x i16> %a, i32 %b, i32 1, i32 0, i32 0)
204 define arm_aapcs_vfpcc <4 x i32> @test_vqshlq_r_s32(<4 x i32> %a, i32 %b) {
205 ; CHECK-LABEL: test_vqshlq_r_s32:
206 ; CHECK: @ %bb.0: @ %entry
207 ; CHECK-NEXT: vqshl.s32 q0, r0
210 %0 = call <4 x i32> @llvm.arm.mve.vshl.scalar.v4i32(<4 x i32> %a, i32 %b, i32 1, i32 0, i32 0)
214 define arm_aapcs_vfpcc <16 x i8> @test_vqshlq_r_u8(<16 x i8> %a, i32 %b) {
215 ; CHECK-LABEL: test_vqshlq_r_u8:
216 ; CHECK: @ %bb.0: @ %entry
217 ; CHECK-NEXT: vqshl.u8 q0, r0
220 %0 = call <16 x i8> @llvm.arm.mve.vshl.scalar.v16i8(<16 x i8> %a, i32 %b, i32 1, i32 0, i32 1)
224 define arm_aapcs_vfpcc <8 x i16> @test_vqshlq_r_u16(<8 x i16> %a, i32 %b) {
225 ; CHECK-LABEL: test_vqshlq_r_u16:
226 ; CHECK: @ %bb.0: @ %entry
227 ; CHECK-NEXT: vqshl.u16 q0, r0
230 %0 = call <8 x i16> @llvm.arm.mve.vshl.scalar.v8i16(<8 x i16> %a, i32 %b, i32 1, i32 0, i32 1)
234 define arm_aapcs_vfpcc <4 x i32> @test_vqshlq_r_u32(<4 x i32> %a, i32 %b) {
235 ; CHECK-LABEL: test_vqshlq_r_u32:
236 ; CHECK: @ %bb.0: @ %entry
237 ; CHECK-NEXT: vqshl.u32 q0, r0
240 %0 = call <4 x i32> @llvm.arm.mve.vshl.scalar.v4i32(<4 x i32> %a, i32 %b, i32 1, i32 0, i32 1)
244 define arm_aapcs_vfpcc <16 x i8> @test_vrshlq_s8(<16 x i8> %a, <16 x i8> %b) {
245 ; CHECK-LABEL: test_vrshlq_s8:
246 ; CHECK: @ %bb.0: @ %entry
247 ; CHECK-NEXT: vrshl.s8 q0, q0, q1
250 %0 = call <16 x i8> @llvm.arm.mve.vshl.vector.v16i8.v16i8(<16 x i8> %a, <16 x i8> %b, i32 0, i32 1, i32 0)
254 define arm_aapcs_vfpcc <8 x i16> @test_vrshlq_s16(<8 x i16> %a, <8 x i16> %b) {
255 ; CHECK-LABEL: test_vrshlq_s16:
256 ; CHECK: @ %bb.0: @ %entry
257 ; CHECK-NEXT: vrshl.s16 q0, q0, q1
260 %0 = call <8 x i16> @llvm.arm.mve.vshl.vector.v8i16.v8i16(<8 x i16> %a, <8 x i16> %b, i32 0, i32 1, i32 0)
264 define arm_aapcs_vfpcc <4 x i32> @test_vrshlq_s32(<4 x i32> %a, <4 x i32> %b) {
265 ; CHECK-LABEL: test_vrshlq_s32:
266 ; CHECK: @ %bb.0: @ %entry
267 ; CHECK-NEXT: vrshl.s32 q0, q0, q1
270 %0 = call <4 x i32> @llvm.arm.mve.vshl.vector.v4i32.v4i32(<4 x i32> %a, <4 x i32> %b, i32 0, i32 1, i32 0)
274 define arm_aapcs_vfpcc <16 x i8> @test_vrshlq_u8(<16 x i8> %a, <16 x i8> %b) {
275 ; CHECK-LABEL: test_vrshlq_u8:
276 ; CHECK: @ %bb.0: @ %entry
277 ; CHECK-NEXT: vrshl.u8 q0, q0, q1
280 %0 = call <16 x i8> @llvm.arm.mve.vshl.vector.v16i8.v16i8(<16 x i8> %a, <16 x i8> %b, i32 0, i32 1, i32 1)
284 define arm_aapcs_vfpcc <8 x i16> @test_vrshlq_u16(<8 x i16> %a, <8 x i16> %b) {
285 ; CHECK-LABEL: test_vrshlq_u16:
286 ; CHECK: @ %bb.0: @ %entry
287 ; CHECK-NEXT: vrshl.u16 q0, q0, q1
290 %0 = call <8 x i16> @llvm.arm.mve.vshl.vector.v8i16.v8i16(<8 x i16> %a, <8 x i16> %b, i32 0, i32 1, i32 1)
294 define arm_aapcs_vfpcc <4 x i32> @test_vrshlq_u32(<4 x i32> %a, <4 x i32> %b) {
295 ; CHECK-LABEL: test_vrshlq_u32:
296 ; CHECK: @ %bb.0: @ %entry
297 ; CHECK-NEXT: vrshl.u32 q0, q0, q1
300 %0 = call <4 x i32> @llvm.arm.mve.vshl.vector.v4i32.v4i32(<4 x i32> %a, <4 x i32> %b, i32 0, i32 1, i32 1)
304 define arm_aapcs_vfpcc <16 x i8> @test_vrshlq_n_s8(<16 x i8> %a, i32 %b) {
305 ; CHECK-LABEL: test_vrshlq_n_s8:
306 ; CHECK: @ %bb.0: @ %entry
307 ; CHECK-NEXT: vrshl.s8 q0, r0
310 %0 = call <16 x i8> @llvm.arm.mve.vshl.scalar.v16i8(<16 x i8> %a, i32 %b, i32 0, i32 1, i32 0)
314 define arm_aapcs_vfpcc <8 x i16> @test_vrshlq_n_s16(<8 x i16> %a, i32 %b) {
315 ; CHECK-LABEL: test_vrshlq_n_s16:
316 ; CHECK: @ %bb.0: @ %entry
317 ; CHECK-NEXT: vrshl.s16 q0, r0
320 %0 = call <8 x i16> @llvm.arm.mve.vshl.scalar.v8i16(<8 x i16> %a, i32 %b, i32 0, i32 1, i32 0)
324 define arm_aapcs_vfpcc <4 x i32> @test_vrshlq_n_s32(<4 x i32> %a, i32 %b) {
325 ; CHECK-LABEL: test_vrshlq_n_s32:
326 ; CHECK: @ %bb.0: @ %entry
327 ; CHECK-NEXT: vrshl.s32 q0, r0
330 %0 = call <4 x i32> @llvm.arm.mve.vshl.scalar.v4i32(<4 x i32> %a, i32 %b, i32 0, i32 1, i32 0)
334 define arm_aapcs_vfpcc <16 x i8> @test_vrshlq_n_u8(<16 x i8> %a, i32 %b) {
335 ; CHECK-LABEL: test_vrshlq_n_u8:
336 ; CHECK: @ %bb.0: @ %entry
337 ; CHECK-NEXT: vrshl.u8 q0, r0
340 %0 = call <16 x i8> @llvm.arm.mve.vshl.scalar.v16i8(<16 x i8> %a, i32 %b, i32 0, i32 1, i32 1)
344 define arm_aapcs_vfpcc <8 x i16> @test_vrshlq_n_u16(<8 x i16> %a, i32 %b) {
345 ; CHECK-LABEL: test_vrshlq_n_u16:
346 ; CHECK: @ %bb.0: @ %entry
347 ; CHECK-NEXT: vrshl.u16 q0, r0
350 %0 = call <8 x i16> @llvm.arm.mve.vshl.scalar.v8i16(<8 x i16> %a, i32 %b, i32 0, i32 1, i32 1)
354 define arm_aapcs_vfpcc <4 x i32> @test_vrshlq_n_u32(<4 x i32> %a, i32 %b) {
355 ; CHECK-LABEL: test_vrshlq_n_u32:
356 ; CHECK: @ %bb.0: @ %entry
357 ; CHECK-NEXT: vrshl.u32 q0, r0
360 %0 = call <4 x i32> @llvm.arm.mve.vshl.scalar.v4i32(<4 x i32> %a, i32 %b, i32 0, i32 1, i32 1)
364 define arm_aapcs_vfpcc <16 x i8> @test_vqrshlq_s8(<16 x i8> %a, <16 x i8> %b) {
365 ; CHECK-LABEL: test_vqrshlq_s8:
366 ; CHECK: @ %bb.0: @ %entry
367 ; CHECK-NEXT: vqrshl.s8 q0, q0, q1
370 %0 = call <16 x i8> @llvm.arm.mve.vshl.vector.v16i8.v16i8(<16 x i8> %a, <16 x i8> %b, i32 1, i32 1, i32 0)
374 define arm_aapcs_vfpcc <8 x i16> @test_vqrshlq_s16(<8 x i16> %a, <8 x i16> %b) {
375 ; CHECK-LABEL: test_vqrshlq_s16:
376 ; CHECK: @ %bb.0: @ %entry
377 ; CHECK-NEXT: vqrshl.s16 q0, q0, q1
380 %0 = call <8 x i16> @llvm.arm.mve.vshl.vector.v8i16.v8i16(<8 x i16> %a, <8 x i16> %b, i32 1, i32 1, i32 0)
384 define arm_aapcs_vfpcc <4 x i32> @test_vqrshlq_s32(<4 x i32> %a, <4 x i32> %b) {
385 ; CHECK-LABEL: test_vqrshlq_s32:
386 ; CHECK: @ %bb.0: @ %entry
387 ; CHECK-NEXT: vqrshl.s32 q0, q0, q1
390 %0 = call <4 x i32> @llvm.arm.mve.vshl.vector.v4i32.v4i32(<4 x i32> %a, <4 x i32> %b, i32 1, i32 1, i32 0)
394 define arm_aapcs_vfpcc <16 x i8> @test_vqrshlq_u8(<16 x i8> %a, <16 x i8> %b) {
395 ; CHECK-LABEL: test_vqrshlq_u8:
396 ; CHECK: @ %bb.0: @ %entry
397 ; CHECK-NEXT: vqrshl.u8 q0, q0, q1
400 %0 = call <16 x i8> @llvm.arm.mve.vshl.vector.v16i8.v16i8(<16 x i8> %a, <16 x i8> %b, i32 1, i32 1, i32 1)
404 define arm_aapcs_vfpcc <8 x i16> @test_vqrshlq_u16(<8 x i16> %a, <8 x i16> %b) {
405 ; CHECK-LABEL: test_vqrshlq_u16:
406 ; CHECK: @ %bb.0: @ %entry
407 ; CHECK-NEXT: vqrshl.u16 q0, q0, q1
410 %0 = call <8 x i16> @llvm.arm.mve.vshl.vector.v8i16.v8i16(<8 x i16> %a, <8 x i16> %b, i32 1, i32 1, i32 1)
414 define arm_aapcs_vfpcc <4 x i32> @test_vqrshlq_u32(<4 x i32> %a, <4 x i32> %b) {
415 ; CHECK-LABEL: test_vqrshlq_u32:
416 ; CHECK: @ %bb.0: @ %entry
417 ; CHECK-NEXT: vqrshl.u32 q0, q0, q1
420 %0 = call <4 x i32> @llvm.arm.mve.vshl.vector.v4i32.v4i32(<4 x i32> %a, <4 x i32> %b, i32 1, i32 1, i32 1)
424 define arm_aapcs_vfpcc <16 x i8> @test_vqrshlq_n_s8(<16 x i8> %a, i32 %b) {
425 ; CHECK-LABEL: test_vqrshlq_n_s8:
426 ; CHECK: @ %bb.0: @ %entry
427 ; CHECK-NEXT: vqrshl.s8 q0, r0
430 %0 = call <16 x i8> @llvm.arm.mve.vshl.scalar.v16i8(<16 x i8> %a, i32 %b, i32 1, i32 1, i32 0)
434 define arm_aapcs_vfpcc <8 x i16> @test_vqrshlq_n_s16(<8 x i16> %a, i32 %b) {
435 ; CHECK-LABEL: test_vqrshlq_n_s16:
436 ; CHECK: @ %bb.0: @ %entry
437 ; CHECK-NEXT: vqrshl.s16 q0, r0
440 %0 = call <8 x i16> @llvm.arm.mve.vshl.scalar.v8i16(<8 x i16> %a, i32 %b, i32 1, i32 1, i32 0)
444 define arm_aapcs_vfpcc <4 x i32> @test_vqrshlq_n_s32(<4 x i32> %a, i32 %b) {
445 ; CHECK-LABEL: test_vqrshlq_n_s32:
446 ; CHECK: @ %bb.0: @ %entry
447 ; CHECK-NEXT: vqrshl.s32 q0, r0
450 %0 = call <4 x i32> @llvm.arm.mve.vshl.scalar.v4i32(<4 x i32> %a, i32 %b, i32 1, i32 1, i32 0)
454 define arm_aapcs_vfpcc <16 x i8> @test_vqrshlq_n_u8(<16 x i8> %a, i32 %b) {
455 ; CHECK-LABEL: test_vqrshlq_n_u8:
456 ; CHECK: @ %bb.0: @ %entry
457 ; CHECK-NEXT: vqrshl.u8 q0, r0
460 %0 = call <16 x i8> @llvm.arm.mve.vshl.scalar.v16i8(<16 x i8> %a, i32 %b, i32 1, i32 1, i32 1)
464 define arm_aapcs_vfpcc <8 x i16> @test_vqrshlq_n_u16(<8 x i16> %a, i32 %b) {
465 ; CHECK-LABEL: test_vqrshlq_n_u16:
466 ; CHECK: @ %bb.0: @ %entry
467 ; CHECK-NEXT: vqrshl.u16 q0, r0
470 %0 = call <8 x i16> @llvm.arm.mve.vshl.scalar.v8i16(<8 x i16> %a, i32 %b, i32 1, i32 1, i32 1)
474 define arm_aapcs_vfpcc <4 x i32> @test_vqrshlq_n_u32(<4 x i32> %a, i32 %b) {
475 ; CHECK-LABEL: test_vqrshlq_n_u32:
476 ; CHECK: @ %bb.0: @ %entry
477 ; CHECK-NEXT: vqrshl.u32 q0, r0
480 %0 = call <4 x i32> @llvm.arm.mve.vshl.scalar.v4i32(<4 x i32> %a, i32 %b, i32 1, i32 1, i32 1)
484 define arm_aapcs_vfpcc <16 x i8> @test_vshlq_m_s8(<16 x i8> %inactive, <16 x i8> %a, <16 x i8> %b, i16 zeroext %p) {
485 ; CHECK-LABEL: test_vshlq_m_s8:
486 ; CHECK: @ %bb.0: @ %entry
487 ; CHECK-NEXT: vmsr p0, r0
489 ; CHECK-NEXT: vshlt.s8 q0, q1, q2
492 %0 = zext i16 %p to i32
493 %1 = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %0)
494 %2 = call <16 x i8> @llvm.arm.mve.vshl.vector.predicated.v16i8.v16i8.v16i1(<16 x i8> %a, <16 x i8> %b, i32 0, i32 0, i32 0, <16 x i1> %1, <16 x i8> %inactive)
498 define arm_aapcs_vfpcc <8 x i16> @test_vshlq_m_s16(<8 x i16> %inactive, <8 x i16> %a, <8 x i16> %b, i16 zeroext %p) {
499 ; CHECK-LABEL: test_vshlq_m_s16:
500 ; CHECK: @ %bb.0: @ %entry
501 ; CHECK-NEXT: vmsr p0, r0
503 ; CHECK-NEXT: vshlt.s16 q0, q1, q2
506 %0 = zext i16 %p to i32
507 %1 = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
508 %2 = call <8 x i16> @llvm.arm.mve.vshl.vector.predicated.v8i16.v8i16.v8i1(<8 x i16> %a, <8 x i16> %b, i32 0, i32 0, i32 0, <8 x i1> %1, <8 x i16> %inactive)
512 define arm_aapcs_vfpcc <4 x i32> @test_vshlq_m_s32(<4 x i32> %inactive, <4 x i32> %a, <4 x i32> %b, i16 zeroext %p) {
513 ; CHECK-LABEL: test_vshlq_m_s32:
514 ; CHECK: @ %bb.0: @ %entry
515 ; CHECK-NEXT: vmsr p0, r0
517 ; CHECK-NEXT: vshlt.s32 q0, q1, q2
520 %0 = zext i16 %p to i32
521 %1 = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
522 %2 = call <4 x i32> @llvm.arm.mve.vshl.vector.predicated.v4i32.v4i32.v4i1(<4 x i32> %a, <4 x i32> %b, i32 0, i32 0, i32 0, <4 x i1> %1, <4 x i32> %inactive)
526 define arm_aapcs_vfpcc <16 x i8> @test_vshlq_m_u8(<16 x i8> %inactive, <16 x i8> %a, <16 x i8> %b, i16 zeroext %p) {
527 ; CHECK-LABEL: test_vshlq_m_u8:
528 ; CHECK: @ %bb.0: @ %entry
529 ; CHECK-NEXT: vmsr p0, r0
531 ; CHECK-NEXT: vshlt.u8 q0, q1, q2
534 %0 = zext i16 %p to i32
535 %1 = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %0)
536 %2 = call <16 x i8> @llvm.arm.mve.vshl.vector.predicated.v16i8.v16i8.v16i1(<16 x i8> %a, <16 x i8> %b, i32 0, i32 0, i32 1, <16 x i1> %1, <16 x i8> %inactive)
540 define arm_aapcs_vfpcc <8 x i16> @test_vshlq_m_u16(<8 x i16> %inactive, <8 x i16> %a, <8 x i16> %b, i16 zeroext %p) {
541 ; CHECK-LABEL: test_vshlq_m_u16:
542 ; CHECK: @ %bb.0: @ %entry
543 ; CHECK-NEXT: vmsr p0, r0
545 ; CHECK-NEXT: vshlt.u16 q0, q1, q2
548 %0 = zext i16 %p to i32
549 %1 = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
550 %2 = call <8 x i16> @llvm.arm.mve.vshl.vector.predicated.v8i16.v8i16.v8i1(<8 x i16> %a, <8 x i16> %b, i32 0, i32 0, i32 1, <8 x i1> %1, <8 x i16> %inactive)
554 define arm_aapcs_vfpcc <4 x i32> @test_vshlq_m_u32(<4 x i32> %inactive, <4 x i32> %a, <4 x i32> %b, i16 zeroext %p) {
555 ; CHECK-LABEL: test_vshlq_m_u32:
556 ; CHECK: @ %bb.0: @ %entry
557 ; CHECK-NEXT: vmsr p0, r0
559 ; CHECK-NEXT: vshlt.u32 q0, q1, q2
562 %0 = zext i16 %p to i32
563 %1 = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
564 %2 = call <4 x i32> @llvm.arm.mve.vshl.vector.predicated.v4i32.v4i32.v4i1(<4 x i32> %a, <4 x i32> %b, i32 0, i32 0, i32 1, <4 x i1> %1, <4 x i32> %inactive)
568 define arm_aapcs_vfpcc <16 x i8> @test_vshlq_x_s8(<16 x i8> %a, <16 x i8> %b, i16 zeroext %p) {
569 ; CHECK-LABEL: test_vshlq_x_s8:
570 ; CHECK: @ %bb.0: @ %entry
571 ; CHECK-NEXT: vmsr p0, r0
573 ; CHECK-NEXT: vshlt.s8 q0, q0, q1
576 %0 = zext i16 %p to i32
577 %1 = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %0)
578 %2 = call <16 x i8> @llvm.arm.mve.vshl.vector.predicated.v16i8.v16i8.v16i1(<16 x i8> %a, <16 x i8> %b, i32 0, i32 0, i32 0, <16 x i1> %1, <16 x i8> undef)
582 define arm_aapcs_vfpcc <8 x i16> @test_vshlq_x_s16(<8 x i16> %a, <8 x i16> %b, i16 zeroext %p) {
583 ; CHECK-LABEL: test_vshlq_x_s16:
584 ; CHECK: @ %bb.0: @ %entry
585 ; CHECK-NEXT: vmsr p0, r0
587 ; CHECK-NEXT: vshlt.s16 q0, q0, q1
590 %0 = zext i16 %p to i32
591 %1 = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
592 %2 = call <8 x i16> @llvm.arm.mve.vshl.vector.predicated.v8i16.v8i16.v8i1(<8 x i16> %a, <8 x i16> %b, i32 0, i32 0, i32 0, <8 x i1> %1, <8 x i16> undef)
596 define arm_aapcs_vfpcc <4 x i32> @test_vshlq_x_s32(<4 x i32> %a, <4 x i32> %b, i16 zeroext %p) {
597 ; CHECK-LABEL: test_vshlq_x_s32:
598 ; CHECK: @ %bb.0: @ %entry
599 ; CHECK-NEXT: vmsr p0, r0
601 ; CHECK-NEXT: vshlt.s32 q0, q0, q1
604 %0 = zext i16 %p to i32
605 %1 = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
606 %2 = call <4 x i32> @llvm.arm.mve.vshl.vector.predicated.v4i32.v4i32.v4i1(<4 x i32> %a, <4 x i32> %b, i32 0, i32 0, i32 0, <4 x i1> %1, <4 x i32> undef)
610 define arm_aapcs_vfpcc <16 x i8> @test_vshlq_x_u8(<16 x i8> %a, <16 x i8> %b, i16 zeroext %p) {
611 ; CHECK-LABEL: test_vshlq_x_u8:
612 ; CHECK: @ %bb.0: @ %entry
613 ; CHECK-NEXT: vmsr p0, r0
615 ; CHECK-NEXT: vshlt.u8 q0, q0, q1
618 %0 = zext i16 %p to i32
619 %1 = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %0)
620 %2 = call <16 x i8> @llvm.arm.mve.vshl.vector.predicated.v16i8.v16i8.v16i1(<16 x i8> %a, <16 x i8> %b, i32 0, i32 0, i32 1, <16 x i1> %1, <16 x i8> undef)
624 define arm_aapcs_vfpcc <8 x i16> @test_vshlq_x_u16(<8 x i16> %a, <8 x i16> %b, i16 zeroext %p) {
625 ; CHECK-LABEL: test_vshlq_x_u16:
626 ; CHECK: @ %bb.0: @ %entry
627 ; CHECK-NEXT: vmsr p0, r0
629 ; CHECK-NEXT: vshlt.u16 q0, q0, q1
632 %0 = zext i16 %p to i32
633 %1 = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
634 %2 = call <8 x i16> @llvm.arm.mve.vshl.vector.predicated.v8i16.v8i16.v8i1(<8 x i16> %a, <8 x i16> %b, i32 0, i32 0, i32 1, <8 x i1> %1, <8 x i16> undef)
638 define arm_aapcs_vfpcc <4 x i32> @test_vshlq_x_u32(<4 x i32> %a, <4 x i32> %b, i16 zeroext %p) {
639 ; CHECK-LABEL: test_vshlq_x_u32:
640 ; CHECK: @ %bb.0: @ %entry
641 ; CHECK-NEXT: vmsr p0, r0
643 ; CHECK-NEXT: vshlt.u32 q0, q0, q1
646 %0 = zext i16 %p to i32
647 %1 = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
648 %2 = call <4 x i32> @llvm.arm.mve.vshl.vector.predicated.v4i32.v4i32.v4i1(<4 x i32> %a, <4 x i32> %b, i32 0, i32 0, i32 1, <4 x i1> %1, <4 x i32> undef)
652 define arm_aapcs_vfpcc <16 x i8> @test_vshlq_m_r_s8(<16 x i8> %a, i32 %b, i16 zeroext %p) {
653 ; CHECK-LABEL: test_vshlq_m_r_s8:
654 ; CHECK: @ %bb.0: @ %entry
655 ; CHECK-NEXT: vmsr p0, r1
657 ; CHECK-NEXT: vshlt.s8 q0, r0
660 %0 = zext i16 %p to i32
661 %1 = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %0)
662 %2 = call <16 x i8> @llvm.arm.mve.vshl.scalar.predicated.v16i8.v16i1(<16 x i8> %a, i32 %b, i32 0, i32 0, i32 0, <16 x i1> %1)
666 define arm_aapcs_vfpcc <8 x i16> @test_vshlq_m_r_s16(<8 x i16> %a, i32 %b, i16 zeroext %p) {
667 ; CHECK-LABEL: test_vshlq_m_r_s16:
668 ; CHECK: @ %bb.0: @ %entry
669 ; CHECK-NEXT: vmsr p0, r1
671 ; CHECK-NEXT: vshlt.s16 q0, r0
674 %0 = zext i16 %p to i32
675 %1 = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
676 %2 = call <8 x i16> @llvm.arm.mve.vshl.scalar.predicated.v8i16.v8i1(<8 x i16> %a, i32 %b, i32 0, i32 0, i32 0, <8 x i1> %1)
680 define arm_aapcs_vfpcc <4 x i32> @test_vshlq_m_r_s32(<4 x i32> %a, i32 %b, i16 zeroext %p) {
681 ; CHECK-LABEL: test_vshlq_m_r_s32:
682 ; CHECK: @ %bb.0: @ %entry
683 ; CHECK-NEXT: vmsr p0, r1
685 ; CHECK-NEXT: vshlt.s32 q0, r0
688 %0 = zext i16 %p to i32
689 %1 = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
690 %2 = call <4 x i32> @llvm.arm.mve.vshl.scalar.predicated.v4i32.v4i1(<4 x i32> %a, i32 %b, i32 0, i32 0, i32 0, <4 x i1> %1)
694 define arm_aapcs_vfpcc <16 x i8> @test_vshlq_m_r_u8(<16 x i8> %a, i32 %b, i16 zeroext %p) {
695 ; CHECK-LABEL: test_vshlq_m_r_u8:
696 ; CHECK: @ %bb.0: @ %entry
697 ; CHECK-NEXT: vmsr p0, r1
699 ; CHECK-NEXT: vshlt.u8 q0, r0
702 %0 = zext i16 %p to i32
703 %1 = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %0)
704 %2 = call <16 x i8> @llvm.arm.mve.vshl.scalar.predicated.v16i8.v16i1(<16 x i8> %a, i32 %b, i32 0, i32 0, i32 1, <16 x i1> %1)
708 define arm_aapcs_vfpcc <8 x i16> @test_vshlq_m_r_u16(<8 x i16> %a, i32 %b, i16 zeroext %p) {
709 ; CHECK-LABEL: test_vshlq_m_r_u16:
710 ; CHECK: @ %bb.0: @ %entry
711 ; CHECK-NEXT: vmsr p0, r1
713 ; CHECK-NEXT: vshlt.u16 q0, r0
716 %0 = zext i16 %p to i32
717 %1 = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
718 %2 = call <8 x i16> @llvm.arm.mve.vshl.scalar.predicated.v8i16.v8i1(<8 x i16> %a, i32 %b, i32 0, i32 0, i32 1, <8 x i1> %1)
722 define arm_aapcs_vfpcc <4 x i32> @test_vshlq_m_r_u32(<4 x i32> %a, i32 %b, i16 zeroext %p) {
723 ; CHECK-LABEL: test_vshlq_m_r_u32:
724 ; CHECK: @ %bb.0: @ %entry
725 ; CHECK-NEXT: vmsr p0, r1
727 ; CHECK-NEXT: vshlt.u32 q0, r0
730 %0 = zext i16 %p to i32
731 %1 = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
732 %2 = call <4 x i32> @llvm.arm.mve.vshl.scalar.predicated.v4i32.v4i1(<4 x i32> %a, i32 %b, i32 0, i32 0, i32 1, <4 x i1> %1)
736 define arm_aapcs_vfpcc <16 x i8> @test_vqshlq_m_s8(<16 x i8> %inactive, <16 x i8> %a, <16 x i8> %b, i16 zeroext %p) {
737 ; CHECK-LABEL: test_vqshlq_m_s8:
738 ; CHECK: @ %bb.0: @ %entry
739 ; CHECK-NEXT: vmsr p0, r0
741 ; CHECK-NEXT: vqshlt.s8 q0, q1, q2
744 %0 = zext i16 %p to i32
745 %1 = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %0)
746 %2 = call <16 x i8> @llvm.arm.mve.vshl.vector.predicated.v16i8.v16i8.v16i1(<16 x i8> %a, <16 x i8> %b, i32 1, i32 0, i32 0, <16 x i1> %1, <16 x i8> %inactive)
750 define arm_aapcs_vfpcc <8 x i16> @test_vqshlq_m_s16(<8 x i16> %inactive, <8 x i16> %a, <8 x i16> %b, i16 zeroext %p) {
751 ; CHECK-LABEL: test_vqshlq_m_s16:
752 ; CHECK: @ %bb.0: @ %entry
753 ; CHECK-NEXT: vmsr p0, r0
755 ; CHECK-NEXT: vqshlt.s16 q0, q1, q2
758 %0 = zext i16 %p to i32
759 %1 = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
760 %2 = call <8 x i16> @llvm.arm.mve.vshl.vector.predicated.v8i16.v8i16.v8i1(<8 x i16> %a, <8 x i16> %b, i32 1, i32 0, i32 0, <8 x i1> %1, <8 x i16> %inactive)
764 define arm_aapcs_vfpcc <4 x i32> @test_vqshlq_m_s32(<4 x i32> %inactive, <4 x i32> %a, <4 x i32> %b, i16 zeroext %p) {
765 ; CHECK-LABEL: test_vqshlq_m_s32:
766 ; CHECK: @ %bb.0: @ %entry
767 ; CHECK-NEXT: vmsr p0, r0
769 ; CHECK-NEXT: vqshlt.s32 q0, q1, q2
772 %0 = zext i16 %p to i32
773 %1 = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
774 %2 = call <4 x i32> @llvm.arm.mve.vshl.vector.predicated.v4i32.v4i32.v4i1(<4 x i32> %a, <4 x i32> %b, i32 1, i32 0, i32 0, <4 x i1> %1, <4 x i32> %inactive)
778 define arm_aapcs_vfpcc <16 x i8> @test_vqshlq_m_u8(<16 x i8> %inactive, <16 x i8> %a, <16 x i8> %b, i16 zeroext %p) {
779 ; CHECK-LABEL: test_vqshlq_m_u8:
780 ; CHECK: @ %bb.0: @ %entry
781 ; CHECK-NEXT: vmsr p0, r0
783 ; CHECK-NEXT: vqshlt.u8 q0, q1, q2
786 %0 = zext i16 %p to i32
787 %1 = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %0)
788 %2 = call <16 x i8> @llvm.arm.mve.vshl.vector.predicated.v16i8.v16i8.v16i1(<16 x i8> %a, <16 x i8> %b, i32 1, i32 0, i32 1, <16 x i1> %1, <16 x i8> %inactive)
792 define arm_aapcs_vfpcc <8 x i16> @test_vqshlq_m_u16(<8 x i16> %inactive, <8 x i16> %a, <8 x i16> %b, i16 zeroext %p) {
793 ; CHECK-LABEL: test_vqshlq_m_u16:
794 ; CHECK: @ %bb.0: @ %entry
795 ; CHECK-NEXT: vmsr p0, r0
797 ; CHECK-NEXT: vqshlt.u16 q0, q1, q2
800 %0 = zext i16 %p to i32
801 %1 = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
802 %2 = call <8 x i16> @llvm.arm.mve.vshl.vector.predicated.v8i16.v8i16.v8i1(<8 x i16> %a, <8 x i16> %b, i32 1, i32 0, i32 1, <8 x i1> %1, <8 x i16> %inactive)
806 define arm_aapcs_vfpcc <4 x i32> @test_vqshlq_m_u32(<4 x i32> %inactive, <4 x i32> %a, <4 x i32> %b, i16 zeroext %p) {
807 ; CHECK-LABEL: test_vqshlq_m_u32:
808 ; CHECK: @ %bb.0: @ %entry
809 ; CHECK-NEXT: vmsr p0, r0
811 ; CHECK-NEXT: vqshlt.u32 q0, q1, q2
814 %0 = zext i16 %p to i32
815 %1 = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
816 %2 = call <4 x i32> @llvm.arm.mve.vshl.vector.predicated.v4i32.v4i32.v4i1(<4 x i32> %a, <4 x i32> %b, i32 1, i32 0, i32 1, <4 x i1> %1, <4 x i32> %inactive)
820 define arm_aapcs_vfpcc <16 x i8> @test_vqshlq_m_r_s8(<16 x i8> %a, i32 %b, i16 zeroext %p) {
821 ; CHECK-LABEL: test_vqshlq_m_r_s8:
822 ; CHECK: @ %bb.0: @ %entry
823 ; CHECK-NEXT: vmsr p0, r1
825 ; CHECK-NEXT: vqshlt.s8 q0, r0
828 %0 = zext i16 %p to i32
829 %1 = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %0)
830 %2 = call <16 x i8> @llvm.arm.mve.vshl.scalar.predicated.v16i8.v16i1(<16 x i8> %a, i32 %b, i32 1, i32 0, i32 0, <16 x i1> %1)
834 define arm_aapcs_vfpcc <8 x i16> @test_vqshlq_m_r_s16(<8 x i16> %a, i32 %b, i16 zeroext %p) {
835 ; CHECK-LABEL: test_vqshlq_m_r_s16:
836 ; CHECK: @ %bb.0: @ %entry
837 ; CHECK-NEXT: vmsr p0, r1
839 ; CHECK-NEXT: vqshlt.s16 q0, r0
842 %0 = zext i16 %p to i32
843 %1 = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
844 %2 = call <8 x i16> @llvm.arm.mve.vshl.scalar.predicated.v8i16.v8i1(<8 x i16> %a, i32 %b, i32 1, i32 0, i32 0, <8 x i1> %1)
848 define arm_aapcs_vfpcc <4 x i32> @test_vqshlq_m_r_s32(<4 x i32> %a, i32 %b, i16 zeroext %p) {
849 ; CHECK-LABEL: test_vqshlq_m_r_s32:
850 ; CHECK: @ %bb.0: @ %entry
851 ; CHECK-NEXT: vmsr p0, r1
853 ; CHECK-NEXT: vqshlt.s32 q0, r0
856 %0 = zext i16 %p to i32
857 %1 = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
858 %2 = call <4 x i32> @llvm.arm.mve.vshl.scalar.predicated.v4i32.v4i1(<4 x i32> %a, i32 %b, i32 1, i32 0, i32 0, <4 x i1> %1)
862 define arm_aapcs_vfpcc <16 x i8> @test_vqshlq_m_r_u8(<16 x i8> %a, i32 %b, i16 zeroext %p) {
863 ; CHECK-LABEL: test_vqshlq_m_r_u8:
864 ; CHECK: @ %bb.0: @ %entry
865 ; CHECK-NEXT: vmsr p0, r1
867 ; CHECK-NEXT: vqshlt.u8 q0, r0
870 %0 = zext i16 %p to i32
871 %1 = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %0)
872 %2 = call <16 x i8> @llvm.arm.mve.vshl.scalar.predicated.v16i8.v16i1(<16 x i8> %a, i32 %b, i32 1, i32 0, i32 1, <16 x i1> %1)
876 define arm_aapcs_vfpcc <8 x i16> @test_vqshlq_m_r_u16(<8 x i16> %a, i32 %b, i16 zeroext %p) {
877 ; CHECK-LABEL: test_vqshlq_m_r_u16:
878 ; CHECK: @ %bb.0: @ %entry
879 ; CHECK-NEXT: vmsr p0, r1
881 ; CHECK-NEXT: vqshlt.u16 q0, r0
884 %0 = zext i16 %p to i32
885 %1 = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
886 %2 = call <8 x i16> @llvm.arm.mve.vshl.scalar.predicated.v8i16.v8i1(<8 x i16> %a, i32 %b, i32 1, i32 0, i32 1, <8 x i1> %1)
890 define arm_aapcs_vfpcc <4 x i32> @test_vqshlq_m_r_u32(<4 x i32> %a, i32 %b, i16 zeroext %p) {
891 ; CHECK-LABEL: test_vqshlq_m_r_u32:
892 ; CHECK: @ %bb.0: @ %entry
893 ; CHECK-NEXT: vmsr p0, r1
895 ; CHECK-NEXT: vqshlt.u32 q0, r0
898 %0 = zext i16 %p to i32
899 %1 = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
900 %2 = call <4 x i32> @llvm.arm.mve.vshl.scalar.predicated.v4i32.v4i1(<4 x i32> %a, i32 %b, i32 1, i32 0, i32 1, <4 x i1> %1)
904 define arm_aapcs_vfpcc <16 x i8> @test_vrshlq_m_s8(<16 x i8> %inactive, <16 x i8> %a, <16 x i8> %b, i16 zeroext %p) {
905 ; CHECK-LABEL: test_vrshlq_m_s8:
906 ; CHECK: @ %bb.0: @ %entry
907 ; CHECK-NEXT: vmsr p0, r0
909 ; CHECK-NEXT: vrshlt.s8 q0, q1, q2
912 %0 = zext i16 %p to i32
913 %1 = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %0)
914 %2 = call <16 x i8> @llvm.arm.mve.vshl.vector.predicated.v16i8.v16i8.v16i1(<16 x i8> %a, <16 x i8> %b, i32 0, i32 1, i32 0, <16 x i1> %1, <16 x i8> %inactive)
918 define arm_aapcs_vfpcc <8 x i16> @test_vrshlq_m_s16(<8 x i16> %inactive, <8 x i16> %a, <8 x i16> %b, i16 zeroext %p) {
919 ; CHECK-LABEL: test_vrshlq_m_s16:
920 ; CHECK: @ %bb.0: @ %entry
921 ; CHECK-NEXT: vmsr p0, r0
923 ; CHECK-NEXT: vrshlt.s16 q0, q1, q2
926 %0 = zext i16 %p to i32
927 %1 = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
928 %2 = call <8 x i16> @llvm.arm.mve.vshl.vector.predicated.v8i16.v8i16.v8i1(<8 x i16> %a, <8 x i16> %b, i32 0, i32 1, i32 0, <8 x i1> %1, <8 x i16> %inactive)
932 define arm_aapcs_vfpcc <4 x i32> @test_vrshlq_m_s32(<4 x i32> %inactive, <4 x i32> %a, <4 x i32> %b, i16 zeroext %p) {
933 ; CHECK-LABEL: test_vrshlq_m_s32:
934 ; CHECK: @ %bb.0: @ %entry
935 ; CHECK-NEXT: vmsr p0, r0
937 ; CHECK-NEXT: vrshlt.s32 q0, q1, q2
940 %0 = zext i16 %p to i32
941 %1 = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
942 %2 = call <4 x i32> @llvm.arm.mve.vshl.vector.predicated.v4i32.v4i32.v4i1(<4 x i32> %a, <4 x i32> %b, i32 0, i32 1, i32 0, <4 x i1> %1, <4 x i32> %inactive)
946 define arm_aapcs_vfpcc <16 x i8> @test_vrshlq_m_u8(<16 x i8> %inactive, <16 x i8> %a, <16 x i8> %b, i16 zeroext %p) {
947 ; CHECK-LABEL: test_vrshlq_m_u8:
948 ; CHECK: @ %bb.0: @ %entry
949 ; CHECK-NEXT: vmsr p0, r0
951 ; CHECK-NEXT: vrshlt.u8 q0, q1, q2
954 %0 = zext i16 %p to i32
955 %1 = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %0)
956 %2 = call <16 x i8> @llvm.arm.mve.vshl.vector.predicated.v16i8.v16i8.v16i1(<16 x i8> %a, <16 x i8> %b, i32 0, i32 1, i32 1, <16 x i1> %1, <16 x i8> %inactive)
960 define arm_aapcs_vfpcc <8 x i16> @test_vrshlq_m_u16(<8 x i16> %inactive, <8 x i16> %a, <8 x i16> %b, i16 zeroext %p) {
961 ; CHECK-LABEL: test_vrshlq_m_u16:
962 ; CHECK: @ %bb.0: @ %entry
963 ; CHECK-NEXT: vmsr p0, r0
965 ; CHECK-NEXT: vrshlt.u16 q0, q1, q2
968 %0 = zext i16 %p to i32
969 %1 = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
970 %2 = call <8 x i16> @llvm.arm.mve.vshl.vector.predicated.v8i16.v8i16.v8i1(<8 x i16> %a, <8 x i16> %b, i32 0, i32 1, i32 1, <8 x i1> %1, <8 x i16> %inactive)
974 define arm_aapcs_vfpcc <4 x i32> @test_vrshlq_m_u32(<4 x i32> %inactive, <4 x i32> %a, <4 x i32> %b, i16 zeroext %p) {
975 ; CHECK-LABEL: test_vrshlq_m_u32:
976 ; CHECK: @ %bb.0: @ %entry
977 ; CHECK-NEXT: vmsr p0, r0
979 ; CHECK-NEXT: vrshlt.u32 q0, q1, q2
982 %0 = zext i16 %p to i32
983 %1 = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
984 %2 = call <4 x i32> @llvm.arm.mve.vshl.vector.predicated.v4i32.v4i32.v4i1(<4 x i32> %a, <4 x i32> %b, i32 0, i32 1, i32 1, <4 x i1> %1, <4 x i32> %inactive)
988 define arm_aapcs_vfpcc <16 x i8> @test_vrshlq_x_s8(<16 x i8> %a, <16 x i8> %b, i16 zeroext %p) {
989 ; CHECK-LABEL: test_vrshlq_x_s8:
990 ; CHECK: @ %bb.0: @ %entry
991 ; CHECK-NEXT: vmsr p0, r0
993 ; CHECK-NEXT: vrshlt.s8 q0, q0, q1
996 %0 = zext i16 %p to i32
997 %1 = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %0)
998 %2 = call <16 x i8> @llvm.arm.mve.vshl.vector.predicated.v16i8.v16i8.v16i1(<16 x i8> %a, <16 x i8> %b, i32 0, i32 1, i32 0, <16 x i1> %1, <16 x i8> undef)
1002 define arm_aapcs_vfpcc <8 x i16> @test_vrshlq_x_s16(<8 x i16> %a, <8 x i16> %b, i16 zeroext %p) {
1003 ; CHECK-LABEL: test_vrshlq_x_s16:
1004 ; CHECK: @ %bb.0: @ %entry
1005 ; CHECK-NEXT: vmsr p0, r0
1007 ; CHECK-NEXT: vrshlt.s16 q0, q0, q1
1010 %0 = zext i16 %p to i32
1011 %1 = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
1012 %2 = call <8 x i16> @llvm.arm.mve.vshl.vector.predicated.v8i16.v8i16.v8i1(<8 x i16> %a, <8 x i16> %b, i32 0, i32 1, i32 0, <8 x i1> %1, <8 x i16> undef)
1016 define arm_aapcs_vfpcc <4 x i32> @test_vrshlq_x_s32(<4 x i32> %a, <4 x i32> %b, i16 zeroext %p) {
1017 ; CHECK-LABEL: test_vrshlq_x_s32:
1018 ; CHECK: @ %bb.0: @ %entry
1019 ; CHECK-NEXT: vmsr p0, r0
1021 ; CHECK-NEXT: vrshlt.s32 q0, q0, q1
1024 %0 = zext i16 %p to i32
1025 %1 = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
1026 %2 = call <4 x i32> @llvm.arm.mve.vshl.vector.predicated.v4i32.v4i32.v4i1(<4 x i32> %a, <4 x i32> %b, i32 0, i32 1, i32 0, <4 x i1> %1, <4 x i32> undef)
1030 define arm_aapcs_vfpcc <16 x i8> @test_vrshlq_x_u8(<16 x i8> %a, <16 x i8> %b, i16 zeroext %p) {
1031 ; CHECK-LABEL: test_vrshlq_x_u8:
1032 ; CHECK: @ %bb.0: @ %entry
1033 ; CHECK-NEXT: vmsr p0, r0
1035 ; CHECK-NEXT: vrshlt.u8 q0, q0, q1
1038 %0 = zext i16 %p to i32
1039 %1 = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %0)
1040 %2 = call <16 x i8> @llvm.arm.mve.vshl.vector.predicated.v16i8.v16i8.v16i1(<16 x i8> %a, <16 x i8> %b, i32 0, i32 1, i32 1, <16 x i1> %1, <16 x i8> undef)
1044 define arm_aapcs_vfpcc <8 x i16> @test_vrshlq_x_u16(<8 x i16> %a, <8 x i16> %b, i16 zeroext %p) {
1045 ; CHECK-LABEL: test_vrshlq_x_u16:
1046 ; CHECK: @ %bb.0: @ %entry
1047 ; CHECK-NEXT: vmsr p0, r0
1049 ; CHECK-NEXT: vrshlt.u16 q0, q0, q1
1052 %0 = zext i16 %p to i32
1053 %1 = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
1054 %2 = call <8 x i16> @llvm.arm.mve.vshl.vector.predicated.v8i16.v8i16.v8i1(<8 x i16> %a, <8 x i16> %b, i32 0, i32 1, i32 1, <8 x i1> %1, <8 x i16> undef)
1058 define arm_aapcs_vfpcc <4 x i32> @test_vrshlq_x_u32(<4 x i32> %a, <4 x i32> %b, i16 zeroext %p) {
1059 ; CHECK-LABEL: test_vrshlq_x_u32:
1060 ; CHECK: @ %bb.0: @ %entry
1061 ; CHECK-NEXT: vmsr p0, r0
1063 ; CHECK-NEXT: vrshlt.u32 q0, q0, q1
1066 %0 = zext i16 %p to i32
1067 %1 = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
1068 %2 = call <4 x i32> @llvm.arm.mve.vshl.vector.predicated.v4i32.v4i32.v4i1(<4 x i32> %a, <4 x i32> %b, i32 0, i32 1, i32 1, <4 x i1> %1, <4 x i32> undef)
1072 define arm_aapcs_vfpcc <16 x i8> @test_vrshlq_m_n_s8(<16 x i8> %a, i32 %b, i16 zeroext %p) {
1073 ; CHECK-LABEL: test_vrshlq_m_n_s8:
1074 ; CHECK: @ %bb.0: @ %entry
1075 ; CHECK-NEXT: vmsr p0, r1
1077 ; CHECK-NEXT: vrshlt.s8 q0, r0
1080 %0 = zext i16 %p to i32
1081 %1 = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %0)
1082 %2 = call <16 x i8> @llvm.arm.mve.vshl.scalar.predicated.v16i8.v16i1(<16 x i8> %a, i32 %b, i32 0, i32 1, i32 0, <16 x i1> %1)
1086 define arm_aapcs_vfpcc <8 x i16> @test_vrshlq_m_n_s16(<8 x i16> %a, i32 %b, i16 zeroext %p) {
1087 ; CHECK-LABEL: test_vrshlq_m_n_s16:
1088 ; CHECK: @ %bb.0: @ %entry
1089 ; CHECK-NEXT: vmsr p0, r1
1091 ; CHECK-NEXT: vrshlt.s16 q0, r0
1094 %0 = zext i16 %p to i32
1095 %1 = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
1096 %2 = call <8 x i16> @llvm.arm.mve.vshl.scalar.predicated.v8i16.v8i1(<8 x i16> %a, i32 %b, i32 0, i32 1, i32 0, <8 x i1> %1)
1100 define arm_aapcs_vfpcc <4 x i32> @test_vrshlq_m_n_s32(<4 x i32> %a, i32 %b, i16 zeroext %p) {
1101 ; CHECK-LABEL: test_vrshlq_m_n_s32:
1102 ; CHECK: @ %bb.0: @ %entry
1103 ; CHECK-NEXT: vmsr p0, r1
1105 ; CHECK-NEXT: vrshlt.s32 q0, r0
1108 %0 = zext i16 %p to i32
1109 %1 = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
1110 %2 = call <4 x i32> @llvm.arm.mve.vshl.scalar.predicated.v4i32.v4i1(<4 x i32> %a, i32 %b, i32 0, i32 1, i32 0, <4 x i1> %1)
1114 define arm_aapcs_vfpcc <16 x i8> @test_vrshlq_m_n_u8(<16 x i8> %a, i32 %b, i16 zeroext %p) {
1115 ; CHECK-LABEL: test_vrshlq_m_n_u8:
1116 ; CHECK: @ %bb.0: @ %entry
1117 ; CHECK-NEXT: vmsr p0, r1
1119 ; CHECK-NEXT: vrshlt.u8 q0, r0
1122 %0 = zext i16 %p to i32
1123 %1 = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %0)
1124 %2 = call <16 x i8> @llvm.arm.mve.vshl.scalar.predicated.v16i8.v16i1(<16 x i8> %a, i32 %b, i32 0, i32 1, i32 1, <16 x i1> %1)
1128 define arm_aapcs_vfpcc <8 x i16> @test_vrshlq_m_n_u16(<8 x i16> %a, i32 %b, i16 zeroext %p) {
1129 ; CHECK-LABEL: test_vrshlq_m_n_u16:
1130 ; CHECK: @ %bb.0: @ %entry
1131 ; CHECK-NEXT: vmsr p0, r1
1133 ; CHECK-NEXT: vrshlt.u16 q0, r0
1136 %0 = zext i16 %p to i32
1137 %1 = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
1138 %2 = call <8 x i16> @llvm.arm.mve.vshl.scalar.predicated.v8i16.v8i1(<8 x i16> %a, i32 %b, i32 0, i32 1, i32 1, <8 x i1> %1)
1142 define arm_aapcs_vfpcc <4 x i32> @test_vrshlq_m_n_u32(<4 x i32> %a, i32 %b, i16 zeroext %p) {
1143 ; CHECK-LABEL: test_vrshlq_m_n_u32:
1144 ; CHECK: @ %bb.0: @ %entry
1145 ; CHECK-NEXT: vmsr p0, r1
1147 ; CHECK-NEXT: vrshlt.u32 q0, r0
1150 %0 = zext i16 %p to i32
1151 %1 = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
1152 %2 = call <4 x i32> @llvm.arm.mve.vshl.scalar.predicated.v4i32.v4i1(<4 x i32> %a, i32 %b, i32 0, i32 1, i32 1, <4 x i1> %1)
1156 define arm_aapcs_vfpcc <16 x i8> @test_vqrshlq_m_s8(<16 x i8> %inactive, <16 x i8> %a, <16 x i8> %b, i16 zeroext %p) {
1157 ; CHECK-LABEL: test_vqrshlq_m_s8:
1158 ; CHECK: @ %bb.0: @ %entry
1159 ; CHECK-NEXT: vmsr p0, r0
1161 ; CHECK-NEXT: vqrshlt.s8 q0, q1, q2
1164 %0 = zext i16 %p to i32
1165 %1 = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %0)
1166 %2 = call <16 x i8> @llvm.arm.mve.vshl.vector.predicated.v16i8.v16i8.v16i1(<16 x i8> %a, <16 x i8> %b, i32 1, i32 1, i32 0, <16 x i1> %1, <16 x i8> %inactive)
1170 define arm_aapcs_vfpcc <8 x i16> @test_vqrshlq_m_s16(<8 x i16> %inactive, <8 x i16> %a, <8 x i16> %b, i16 zeroext %p) {
1171 ; CHECK-LABEL: test_vqrshlq_m_s16:
1172 ; CHECK: @ %bb.0: @ %entry
1173 ; CHECK-NEXT: vmsr p0, r0
1175 ; CHECK-NEXT: vqrshlt.s16 q0, q1, q2
1178 %0 = zext i16 %p to i32
1179 %1 = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
1180 %2 = call <8 x i16> @llvm.arm.mve.vshl.vector.predicated.v8i16.v8i16.v8i1(<8 x i16> %a, <8 x i16> %b, i32 1, i32 1, i32 0, <8 x i1> %1, <8 x i16> %inactive)
1184 define arm_aapcs_vfpcc <4 x i32> @test_vqrshlq_m_s32(<4 x i32> %inactive, <4 x i32> %a, <4 x i32> %b, i16 zeroext %p) {
1185 ; CHECK-LABEL: test_vqrshlq_m_s32:
1186 ; CHECK: @ %bb.0: @ %entry
1187 ; CHECK-NEXT: vmsr p0, r0
1189 ; CHECK-NEXT: vqrshlt.s32 q0, q1, q2
1192 %0 = zext i16 %p to i32
1193 %1 = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
1194 %2 = call <4 x i32> @llvm.arm.mve.vshl.vector.predicated.v4i32.v4i32.v4i1(<4 x i32> %a, <4 x i32> %b, i32 1, i32 1, i32 0, <4 x i1> %1, <4 x i32> %inactive)
1198 define arm_aapcs_vfpcc <16 x i8> @test_vqrshlq_m_u8(<16 x i8> %inactive, <16 x i8> %a, <16 x i8> %b, i16 zeroext %p) {
1199 ; CHECK-LABEL: test_vqrshlq_m_u8:
1200 ; CHECK: @ %bb.0: @ %entry
1201 ; CHECK-NEXT: vmsr p0, r0
1203 ; CHECK-NEXT: vqrshlt.u8 q0, q1, q2
1206 %0 = zext i16 %p to i32
1207 %1 = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %0)
1208 %2 = call <16 x i8> @llvm.arm.mve.vshl.vector.predicated.v16i8.v16i8.v16i1(<16 x i8> %a, <16 x i8> %b, i32 1, i32 1, i32 1, <16 x i1> %1, <16 x i8> %inactive)
1212 define arm_aapcs_vfpcc <8 x i16> @test_vqrshlq_m_u16(<8 x i16> %inactive, <8 x i16> %a, <8 x i16> %b, i16 zeroext %p) {
1213 ; CHECK-LABEL: test_vqrshlq_m_u16:
1214 ; CHECK: @ %bb.0: @ %entry
1215 ; CHECK-NEXT: vmsr p0, r0
1217 ; CHECK-NEXT: vqrshlt.u16 q0, q1, q2
1220 %0 = zext i16 %p to i32
1221 %1 = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
1222 %2 = call <8 x i16> @llvm.arm.mve.vshl.vector.predicated.v8i16.v8i16.v8i1(<8 x i16> %a, <8 x i16> %b, i32 1, i32 1, i32 1, <8 x i1> %1, <8 x i16> %inactive)
1226 define arm_aapcs_vfpcc <4 x i32> @test_vqrshlq_m_u32(<4 x i32> %inactive, <4 x i32> %a, <4 x i32> %b, i16 zeroext %p) {
1227 ; CHECK-LABEL: test_vqrshlq_m_u32:
1228 ; CHECK: @ %bb.0: @ %entry
1229 ; CHECK-NEXT: vmsr p0, r0
1231 ; CHECK-NEXT: vqrshlt.u32 q0, q1, q2
1234 %0 = zext i16 %p to i32
1235 %1 = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
1236 %2 = call <4 x i32> @llvm.arm.mve.vshl.vector.predicated.v4i32.v4i32.v4i1(<4 x i32> %a, <4 x i32> %b, i32 1, i32 1, i32 1, <4 x i1> %1, <4 x i32> %inactive)
1240 define arm_aapcs_vfpcc <16 x i8> @test_vqrshlq_m_n_s8(<16 x i8> %a, i32 %b, i16 zeroext %p) {
1241 ; CHECK-LABEL: test_vqrshlq_m_n_s8:
1242 ; CHECK: @ %bb.0: @ %entry
1243 ; CHECK-NEXT: vmsr p0, r1
1245 ; CHECK-NEXT: vqrshlt.s8 q0, r0
1248 %0 = zext i16 %p to i32
1249 %1 = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %0)
1250 %2 = call <16 x i8> @llvm.arm.mve.vshl.scalar.predicated.v16i8.v16i1(<16 x i8> %a, i32 %b, i32 1, i32 1, i32 0, <16 x i1> %1)
1254 define arm_aapcs_vfpcc <8 x i16> @test_vqrshlq_m_n_s16(<8 x i16> %a, i32 %b, i16 zeroext %p) {
1255 ; CHECK-LABEL: test_vqrshlq_m_n_s16:
1256 ; CHECK: @ %bb.0: @ %entry
1257 ; CHECK-NEXT: vmsr p0, r1
1259 ; CHECK-NEXT: vqrshlt.s16 q0, r0
1262 %0 = zext i16 %p to i32
1263 %1 = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
1264 %2 = call <8 x i16> @llvm.arm.mve.vshl.scalar.predicated.v8i16.v8i1(<8 x i16> %a, i32 %b, i32 1, i32 1, i32 0, <8 x i1> %1)
1268 define arm_aapcs_vfpcc <4 x i32> @test_vqrshlq_m_n_s32(<4 x i32> %a, i32 %b, i16 zeroext %p) {
1269 ; CHECK-LABEL: test_vqrshlq_m_n_s32:
1270 ; CHECK: @ %bb.0: @ %entry
1271 ; CHECK-NEXT: vmsr p0, r1
1273 ; CHECK-NEXT: vqrshlt.s32 q0, r0
1276 %0 = zext i16 %p to i32
1277 %1 = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
1278 %2 = call <4 x i32> @llvm.arm.mve.vshl.scalar.predicated.v4i32.v4i1(<4 x i32> %a, i32 %b, i32 1, i32 1, i32 0, <4 x i1> %1)
1282 define arm_aapcs_vfpcc <16 x i8> @test_vqrshlq_m_n_u8(<16 x i8> %a, i32 %b, i16 zeroext %p) {
1283 ; CHECK-LABEL: test_vqrshlq_m_n_u8:
1284 ; CHECK: @ %bb.0: @ %entry
1285 ; CHECK-NEXT: vmsr p0, r1
1287 ; CHECK-NEXT: vqrshlt.u8 q0, r0
1290 %0 = zext i16 %p to i32
1291 %1 = call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %0)
1292 %2 = call <16 x i8> @llvm.arm.mve.vshl.scalar.predicated.v16i8.v16i1(<16 x i8> %a, i32 %b, i32 1, i32 1, i32 1, <16 x i1> %1)
1296 define arm_aapcs_vfpcc <8 x i16> @test_vqrshlq_m_n_u16(<8 x i16> %a, i32 %b, i16 zeroext %p) {
1297 ; CHECK-LABEL: test_vqrshlq_m_n_u16:
1298 ; CHECK: @ %bb.0: @ %entry
1299 ; CHECK-NEXT: vmsr p0, r1
1301 ; CHECK-NEXT: vqrshlt.u16 q0, r0
1304 %0 = zext i16 %p to i32
1305 %1 = call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
1306 %2 = call <8 x i16> @llvm.arm.mve.vshl.scalar.predicated.v8i16.v8i1(<8 x i16> %a, i32 %b, i32 1, i32 1, i32 1, <8 x i1> %1)
1310 define arm_aapcs_vfpcc <4 x i32> @test_vqrshlq_m_n_u32(<4 x i32> %a, i32 %b, i16 zeroext %p) {
1311 ; CHECK-LABEL: test_vqrshlq_m_n_u32:
1312 ; CHECK: @ %bb.0: @ %entry
1313 ; CHECK-NEXT: vmsr p0, r1
1315 ; CHECK-NEXT: vqrshlt.u32 q0, r0
1318 %0 = zext i16 %p to i32
1319 %1 = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
1320 %2 = call <4 x i32> @llvm.arm.mve.vshl.scalar.predicated.v4i32.v4i1(<4 x i32> %a, i32 %b, i32 1, i32 1, i32 1, <4 x i1> %1)
1324 declare <16 x i8> @llvm.arm.mve.vshl.vector.v16i8.v16i8(<16 x i8>, <16 x i8>, i32, i32, i32)
1325 declare <8 x i16> @llvm.arm.mve.vshl.vector.v8i16.v8i16(<8 x i16>, <8 x i16>, i32, i32, i32)
1326 declare <4 x i32> @llvm.arm.mve.vshl.vector.v4i32.v4i32(<4 x i32>, <4 x i32>, i32, i32, i32)
1327 declare <16 x i8> @llvm.arm.mve.vshl.scalar.v16i8(<16 x i8>, i32, i32, i32, i32)
1328 declare <8 x i16> @llvm.arm.mve.vshl.scalar.v8i16(<8 x i16>, i32, i32, i32, i32)
1329 declare <4 x i32> @llvm.arm.mve.vshl.scalar.v4i32(<4 x i32>, i32, i32, i32, i32)
1330 declare <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32)
1331 declare <16 x i8> @llvm.arm.mve.vshl.vector.predicated.v16i8.v16i8.v16i1(<16 x i8>, <16 x i8>, i32, i32, i32, <16 x i1>, <16 x i8>)
1332 declare <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32)
1333 declare <8 x i16> @llvm.arm.mve.vshl.vector.predicated.v8i16.v8i16.v8i1(<8 x i16>, <8 x i16>, i32, i32, i32, <8 x i1>, <8 x i16>)
1334 declare <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32)
1335 declare <4 x i32> @llvm.arm.mve.vshl.vector.predicated.v4i32.v4i32.v4i1(<4 x i32>, <4 x i32>, i32, i32, i32, <4 x i1>, <4 x i32>)
1336 declare <16 x i8> @llvm.arm.mve.vshl.scalar.predicated.v16i8.v16i1(<16 x i8>, i32, i32, i32, i32, <16 x i1>)
1337 declare <8 x i16> @llvm.arm.mve.vshl.scalar.predicated.v8i16.v8i1(<8 x i16>, i32, i32, i32, i32, <8 x i1>)
1338 declare <4 x i32> @llvm.arm.mve.vshl.scalar.predicated.v4i32.v4i1(<4 x i32>, i32, i32, i32, i32, <4 x i1>)