[RISCV] Support postRA vsetvl insertion pass (#70549)
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vslide1down-rv64.ll
blobccb107bf160d4bbc5cb5750c53781bf9e02de28c
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv64 -mattr=+v,+d -verify-machineinstrs \
3 ; RUN:   < %s | FileCheck %s
5 declare <vscale x 1 x i8> @llvm.riscv.vslide1down.nxv1i8.i8(
6   <vscale x 1 x i8>,
7   <vscale x 1 x i8>,
8   i8,
9   i64);
11 define <vscale x 1 x i8> @intrinsic_vslide1down_vx_nxv1i8_nxv1i8_i8(<vscale x 1 x i8> %0, i8 %1, i64 %2) nounwind {
12 ; CHECK-LABEL: intrinsic_vslide1down_vx_nxv1i8_nxv1i8_i8:
13 ; CHECK:       # %bb.0: # %entry
14 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
15 ; CHECK-NEXT:    vslide1down.vx v8, v8, a0
16 ; CHECK-NEXT:    ret
17 entry:
18   %a = call <vscale x 1 x i8> @llvm.riscv.vslide1down.nxv1i8.i8(
19     <vscale x 1 x i8> undef,
20     <vscale x 1 x i8> %0,
21     i8 %1,
22     i64 %2)
24   ret <vscale x 1 x i8> %a
27 declare <vscale x 1 x i8> @llvm.riscv.vslide1down.mask.nxv1i8.i8(
28   <vscale x 1 x i8>,
29   <vscale x 1 x i8>,
30   i8,
31   <vscale x 1 x i1>,
32   i64,
33   i64);
35 define <vscale x 1 x i8> @intrinsic_vslide1down_mask_vx_nxv1i8_nxv1i8_i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, i8 %2, <vscale x 1 x i1> %3, i64 %4) nounwind {
36 ; CHECK-LABEL: intrinsic_vslide1down_mask_vx_nxv1i8_nxv1i8_i8:
37 ; CHECK:       # %bb.0: # %entry
38 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, mu
39 ; CHECK-NEXT:    vslide1down.vx v8, v9, a0, v0.t
40 ; CHECK-NEXT:    ret
41 entry:
42   %a = call <vscale x 1 x i8> @llvm.riscv.vslide1down.mask.nxv1i8.i8(
43     <vscale x 1 x i8> %0,
44     <vscale x 1 x i8> %1,
45     i8 %2,
46     <vscale x 1 x i1> %3,
47     i64 %4, i64 1)
49   ret <vscale x 1 x i8> %a
52 declare <vscale x 2 x i8> @llvm.riscv.vslide1down.nxv2i8.i8(
53   <vscale x 2 x i8>,
54   <vscale x 2 x i8>,
55   i8,
56   i64);
58 define <vscale x 2 x i8> @intrinsic_vslide1down_vx_nxv2i8_nxv2i8_i8(<vscale x 2 x i8> %0, i8 %1, i64 %2) nounwind {
59 ; CHECK-LABEL: intrinsic_vslide1down_vx_nxv2i8_nxv2i8_i8:
60 ; CHECK:       # %bb.0: # %entry
61 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
62 ; CHECK-NEXT:    vslide1down.vx v8, v8, a0
63 ; CHECK-NEXT:    ret
64 entry:
65   %a = call <vscale x 2 x i8> @llvm.riscv.vslide1down.nxv2i8.i8(
66     <vscale x 2 x i8> undef,
67     <vscale x 2 x i8> %0,
68     i8 %1,
69     i64 %2)
71   ret <vscale x 2 x i8> %a
74 declare <vscale x 2 x i8> @llvm.riscv.vslide1down.mask.nxv2i8.i8(
75   <vscale x 2 x i8>,
76   <vscale x 2 x i8>,
77   i8,
78   <vscale x 2 x i1>,
79   i64,
80   i64);
82 define <vscale x 2 x i8> @intrinsic_vslide1down_mask_vx_nxv2i8_nxv2i8_i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, i8 %2, <vscale x 2 x i1> %3, i64 %4) nounwind {
83 ; CHECK-LABEL: intrinsic_vslide1down_mask_vx_nxv2i8_nxv2i8_i8:
84 ; CHECK:       # %bb.0: # %entry
85 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, mu
86 ; CHECK-NEXT:    vslide1down.vx v8, v9, a0, v0.t
87 ; CHECK-NEXT:    ret
88 entry:
89   %a = call <vscale x 2 x i8> @llvm.riscv.vslide1down.mask.nxv2i8.i8(
90     <vscale x 2 x i8> %0,
91     <vscale x 2 x i8> %1,
92     i8 %2,
93     <vscale x 2 x i1> %3,
94     i64 %4, i64 1)
96   ret <vscale x 2 x i8> %a
99 declare <vscale x 4 x i8> @llvm.riscv.vslide1down.nxv4i8.i8(
100   <vscale x 4 x i8>,
101   <vscale x 4 x i8>,
102   i8,
103   i64);
105 define <vscale x 4 x i8> @intrinsic_vslide1down_vx_nxv4i8_nxv4i8_i8(<vscale x 4 x i8> %0, i8 %1, i64 %2) nounwind {
106 ; CHECK-LABEL: intrinsic_vslide1down_vx_nxv4i8_nxv4i8_i8:
107 ; CHECK:       # %bb.0: # %entry
108 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
109 ; CHECK-NEXT:    vslide1down.vx v8, v8, a0
110 ; CHECK-NEXT:    ret
111 entry:
112   %a = call <vscale x 4 x i8> @llvm.riscv.vslide1down.nxv4i8.i8(
113     <vscale x 4 x i8> undef,
114     <vscale x 4 x i8> %0,
115     i8 %1,
116     i64 %2)
118   ret <vscale x 4 x i8> %a
121 declare <vscale x 4 x i8> @llvm.riscv.vslide1down.mask.nxv4i8.i8(
122   <vscale x 4 x i8>,
123   <vscale x 4 x i8>,
124   i8,
125   <vscale x 4 x i1>,
126   i64,
127   i64);
129 define <vscale x 4 x i8> @intrinsic_vslide1down_mask_vx_nxv4i8_nxv4i8_i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, i8 %2, <vscale x 4 x i1> %3, i64 %4) nounwind {
130 ; CHECK-LABEL: intrinsic_vslide1down_mask_vx_nxv4i8_nxv4i8_i8:
131 ; CHECK:       # %bb.0: # %entry
132 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, mu
133 ; CHECK-NEXT:    vslide1down.vx v8, v9, a0, v0.t
134 ; CHECK-NEXT:    ret
135 entry:
136   %a = call <vscale x 4 x i8> @llvm.riscv.vslide1down.mask.nxv4i8.i8(
137     <vscale x 4 x i8> %0,
138     <vscale x 4 x i8> %1,
139     i8 %2,
140     <vscale x 4 x i1> %3,
141     i64 %4, i64 1)
143   ret <vscale x 4 x i8> %a
146 declare <vscale x 8 x i8> @llvm.riscv.vslide1down.nxv8i8.i8(
147   <vscale x 8 x i8>,
148   <vscale x 8 x i8>,
149   i8,
150   i64);
152 define <vscale x 8 x i8> @intrinsic_vslide1down_vx_nxv8i8_nxv8i8_i8(<vscale x 8 x i8> %0, i8 %1, i64 %2) nounwind {
153 ; CHECK-LABEL: intrinsic_vslide1down_vx_nxv8i8_nxv8i8_i8:
154 ; CHECK:       # %bb.0: # %entry
155 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
156 ; CHECK-NEXT:    vslide1down.vx v8, v8, a0
157 ; CHECK-NEXT:    ret
158 entry:
159   %a = call <vscale x 8 x i8> @llvm.riscv.vslide1down.nxv8i8.i8(
160     <vscale x 8 x i8> undef,
161     <vscale x 8 x i8> %0,
162     i8 %1,
163     i64 %2)
165   ret <vscale x 8 x i8> %a
168 declare <vscale x 8 x i8> @llvm.riscv.vslide1down.mask.nxv8i8.i8(
169   <vscale x 8 x i8>,
170   <vscale x 8 x i8>,
171   i8,
172   <vscale x 8 x i1>,
173   i64,
174   i64);
176 define <vscale x 8 x i8> @intrinsic_vslide1down_mask_vx_nxv8i8_nxv8i8_i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, i8 %2, <vscale x 8 x i1> %3, i64 %4) nounwind {
177 ; CHECK-LABEL: intrinsic_vslide1down_mask_vx_nxv8i8_nxv8i8_i8:
178 ; CHECK:       # %bb.0: # %entry
179 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, mu
180 ; CHECK-NEXT:    vslide1down.vx v8, v9, a0, v0.t
181 ; CHECK-NEXT:    ret
182 entry:
183   %a = call <vscale x 8 x i8> @llvm.riscv.vslide1down.mask.nxv8i8.i8(
184     <vscale x 8 x i8> %0,
185     <vscale x 8 x i8> %1,
186     i8 %2,
187     <vscale x 8 x i1> %3,
188     i64 %4, i64 1)
190   ret <vscale x 8 x i8> %a
193 declare <vscale x 16 x i8> @llvm.riscv.vslide1down.nxv16i8.i8(
194   <vscale x 16 x i8>,
195   <vscale x 16 x i8>,
196   i8,
197   i64);
199 define <vscale x 16 x i8> @intrinsic_vslide1down_vx_nxv16i8_nxv16i8_i8(<vscale x 16 x i8> %0, i8 %1, i64 %2) nounwind {
200 ; CHECK-LABEL: intrinsic_vslide1down_vx_nxv16i8_nxv16i8_i8:
201 ; CHECK:       # %bb.0: # %entry
202 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
203 ; CHECK-NEXT:    vslide1down.vx v8, v8, a0
204 ; CHECK-NEXT:    ret
205 entry:
206   %a = call <vscale x 16 x i8> @llvm.riscv.vslide1down.nxv16i8.i8(
207     <vscale x 16 x i8> undef,
208     <vscale x 16 x i8> %0,
209     i8 %1,
210     i64 %2)
212   ret <vscale x 16 x i8> %a
215 declare <vscale x 16 x i8> @llvm.riscv.vslide1down.mask.nxv16i8.i8(
216   <vscale x 16 x i8>,
217   <vscale x 16 x i8>,
218   i8,
219   <vscale x 16 x i1>,
220   i64,
221   i64);
223 define <vscale x 16 x i8> @intrinsic_vslide1down_mask_vx_nxv16i8_nxv16i8_i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, i8 %2, <vscale x 16 x i1> %3, i64 %4) nounwind {
224 ; CHECK-LABEL: intrinsic_vslide1down_mask_vx_nxv16i8_nxv16i8_i8:
225 ; CHECK:       # %bb.0: # %entry
226 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, mu
227 ; CHECK-NEXT:    vslide1down.vx v8, v10, a0, v0.t
228 ; CHECK-NEXT:    ret
229 entry:
230   %a = call <vscale x 16 x i8> @llvm.riscv.vslide1down.mask.nxv16i8.i8(
231     <vscale x 16 x i8> %0,
232     <vscale x 16 x i8> %1,
233     i8 %2,
234     <vscale x 16 x i1> %3,
235     i64 %4, i64 1)
237   ret <vscale x 16 x i8> %a
240 declare <vscale x 32 x i8> @llvm.riscv.vslide1down.nxv32i8.i8(
241   <vscale x 32 x i8>,
242   <vscale x 32 x i8>,
243   i8,
244   i64);
246 define <vscale x 32 x i8> @intrinsic_vslide1down_vx_nxv32i8_nxv32i8_i8(<vscale x 32 x i8> %0, i8 %1, i64 %2) nounwind {
247 ; CHECK-LABEL: intrinsic_vslide1down_vx_nxv32i8_nxv32i8_i8:
248 ; CHECK:       # %bb.0: # %entry
249 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
250 ; CHECK-NEXT:    vslide1down.vx v8, v8, a0
251 ; CHECK-NEXT:    ret
252 entry:
253   %a = call <vscale x 32 x i8> @llvm.riscv.vslide1down.nxv32i8.i8(
254     <vscale x 32 x i8> undef,
255     <vscale x 32 x i8> %0,
256     i8 %1,
257     i64 %2)
259   ret <vscale x 32 x i8> %a
262 declare <vscale x 32 x i8> @llvm.riscv.vslide1down.mask.nxv32i8.i8(
263   <vscale x 32 x i8>,
264   <vscale x 32 x i8>,
265   i8,
266   <vscale x 32 x i1>,
267   i64,
268   i64);
270 define <vscale x 32 x i8> @intrinsic_vslide1down_mask_vx_nxv32i8_nxv32i8_i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, i8 %2, <vscale x 32 x i1> %3, i64 %4) nounwind {
271 ; CHECK-LABEL: intrinsic_vslide1down_mask_vx_nxv32i8_nxv32i8_i8:
272 ; CHECK:       # %bb.0: # %entry
273 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, mu
274 ; CHECK-NEXT:    vslide1down.vx v8, v12, a0, v0.t
275 ; CHECK-NEXT:    ret
276 entry:
277   %a = call <vscale x 32 x i8> @llvm.riscv.vslide1down.mask.nxv32i8.i8(
278     <vscale x 32 x i8> %0,
279     <vscale x 32 x i8> %1,
280     i8 %2,
281     <vscale x 32 x i1> %3,
282     i64 %4, i64 1)
284   ret <vscale x 32 x i8> %a
287 declare <vscale x 64 x i8> @llvm.riscv.vslide1down.nxv64i8.i8(
288   <vscale x 64 x i8>,
289   <vscale x 64 x i8>,
290   i8,
291   i64);
293 define <vscale x 64 x i8> @intrinsic_vslide1down_vx_nxv64i8_nxv64i8_i8(<vscale x 64 x i8> %0, i8 %1, i64 %2) nounwind {
294 ; CHECK-LABEL: intrinsic_vslide1down_vx_nxv64i8_nxv64i8_i8:
295 ; CHECK:       # %bb.0: # %entry
296 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
297 ; CHECK-NEXT:    vslide1down.vx v8, v8, a0
298 ; CHECK-NEXT:    ret
299 entry:
300   %a = call <vscale x 64 x i8> @llvm.riscv.vslide1down.nxv64i8.i8(
301     <vscale x 64 x i8> undef,
302     <vscale x 64 x i8> %0,
303     i8 %1,
304     i64 %2)
306   ret <vscale x 64 x i8> %a
309 declare <vscale x 64 x i8> @llvm.riscv.vslide1down.mask.nxv64i8.i8(
310   <vscale x 64 x i8>,
311   <vscale x 64 x i8>,
312   i8,
313   <vscale x 64 x i1>,
314   i64,
315   i64);
317 define <vscale x 64 x i8> @intrinsic_vslide1down_mask_vx_nxv64i8_nxv64i8_i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, i8 %2, <vscale x 64 x i1> %3, i64 %4) nounwind {
318 ; CHECK-LABEL: intrinsic_vslide1down_mask_vx_nxv64i8_nxv64i8_i8:
319 ; CHECK:       # %bb.0: # %entry
320 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, mu
321 ; CHECK-NEXT:    vslide1down.vx v8, v16, a0, v0.t
322 ; CHECK-NEXT:    ret
323 entry:
324   %a = call <vscale x 64 x i8> @llvm.riscv.vslide1down.mask.nxv64i8.i8(
325     <vscale x 64 x i8> %0,
326     <vscale x 64 x i8> %1,
327     i8 %2,
328     <vscale x 64 x i1> %3,
329     i64 %4, i64 1)
331   ret <vscale x 64 x i8> %a
334 declare <vscale x 1 x i16> @llvm.riscv.vslide1down.nxv1i16.i16(
335   <vscale x 1 x i16>,
336   <vscale x 1 x i16>,
337   i16,
338   i64);
340 define <vscale x 1 x i16> @intrinsic_vslide1down_vx_nxv1i16_nxv1i16_i16(<vscale x 1 x i16> %0, i16 %1, i64 %2) nounwind {
341 ; CHECK-LABEL: intrinsic_vslide1down_vx_nxv1i16_nxv1i16_i16:
342 ; CHECK:       # %bb.0: # %entry
343 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
344 ; CHECK-NEXT:    vslide1down.vx v8, v8, a0
345 ; CHECK-NEXT:    ret
346 entry:
347   %a = call <vscale x 1 x i16> @llvm.riscv.vslide1down.nxv1i16.i16(
348     <vscale x 1 x i16> undef,
349     <vscale x 1 x i16> %0,
350     i16 %1,
351     i64 %2)
353   ret <vscale x 1 x i16> %a
356 declare <vscale x 1 x i16> @llvm.riscv.vslide1down.mask.nxv1i16.i16(
357   <vscale x 1 x i16>,
358   <vscale x 1 x i16>,
359   i16,
360   <vscale x 1 x i1>,
361   i64,
362   i64);
364 define <vscale x 1 x i16> @intrinsic_vslide1down_mask_vx_nxv1i16_nxv1i16_i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, i16 %2, <vscale x 1 x i1> %3, i64 %4) nounwind {
365 ; CHECK-LABEL: intrinsic_vslide1down_mask_vx_nxv1i16_nxv1i16_i16:
366 ; CHECK:       # %bb.0: # %entry
367 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu
368 ; CHECK-NEXT:    vslide1down.vx v8, v9, a0, v0.t
369 ; CHECK-NEXT:    ret
370 entry:
371   %a = call <vscale x 1 x i16> @llvm.riscv.vslide1down.mask.nxv1i16.i16(
372     <vscale x 1 x i16> %0,
373     <vscale x 1 x i16> %1,
374     i16 %2,
375     <vscale x 1 x i1> %3,
376     i64 %4, i64 1)
378   ret <vscale x 1 x i16> %a
381 declare <vscale x 2 x i16> @llvm.riscv.vslide1down.nxv2i16.i16(
382   <vscale x 2 x i16>,
383   <vscale x 2 x i16>,
384   i16,
385   i64);
387 define <vscale x 2 x i16> @intrinsic_vslide1down_vx_nxv2i16_nxv2i16_i16(<vscale x 2 x i16> %0, i16 %1, i64 %2) nounwind {
388 ; CHECK-LABEL: intrinsic_vslide1down_vx_nxv2i16_nxv2i16_i16:
389 ; CHECK:       # %bb.0: # %entry
390 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
391 ; CHECK-NEXT:    vslide1down.vx v8, v8, a0
392 ; CHECK-NEXT:    ret
393 entry:
394   %a = call <vscale x 2 x i16> @llvm.riscv.vslide1down.nxv2i16.i16(
395     <vscale x 2 x i16> undef,
396     <vscale x 2 x i16> %0,
397     i16 %1,
398     i64 %2)
400   ret <vscale x 2 x i16> %a
403 declare <vscale x 2 x i16> @llvm.riscv.vslide1down.mask.nxv2i16.i16(
404   <vscale x 2 x i16>,
405   <vscale x 2 x i16>,
406   i16,
407   <vscale x 2 x i1>,
408   i64,
409   i64);
411 define <vscale x 2 x i16> @intrinsic_vslide1down_mask_vx_nxv2i16_nxv2i16_i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, i16 %2, <vscale x 2 x i1> %3, i64 %4) nounwind {
412 ; CHECK-LABEL: intrinsic_vslide1down_mask_vx_nxv2i16_nxv2i16_i16:
413 ; CHECK:       # %bb.0: # %entry
414 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu
415 ; CHECK-NEXT:    vslide1down.vx v8, v9, a0, v0.t
416 ; CHECK-NEXT:    ret
417 entry:
418   %a = call <vscale x 2 x i16> @llvm.riscv.vslide1down.mask.nxv2i16.i16(
419     <vscale x 2 x i16> %0,
420     <vscale x 2 x i16> %1,
421     i16 %2,
422     <vscale x 2 x i1> %3,
423     i64 %4, i64 1)
425   ret <vscale x 2 x i16> %a
428 declare <vscale x 4 x i16> @llvm.riscv.vslide1down.nxv4i16.i16(
429   <vscale x 4 x i16>,
430   <vscale x 4 x i16>,
431   i16,
432   i64);
434 define <vscale x 4 x i16> @intrinsic_vslide1down_vx_nxv4i16_nxv4i16_i16(<vscale x 4 x i16> %0, i16 %1, i64 %2) nounwind {
435 ; CHECK-LABEL: intrinsic_vslide1down_vx_nxv4i16_nxv4i16_i16:
436 ; CHECK:       # %bb.0: # %entry
437 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
438 ; CHECK-NEXT:    vslide1down.vx v8, v8, a0
439 ; CHECK-NEXT:    ret
440 entry:
441   %a = call <vscale x 4 x i16> @llvm.riscv.vslide1down.nxv4i16.i16(
442     <vscale x 4 x i16> undef,
443     <vscale x 4 x i16> %0,
444     i16 %1,
445     i64 %2)
447   ret <vscale x 4 x i16> %a
450 declare <vscale x 4 x i16> @llvm.riscv.vslide1down.mask.nxv4i16.i16(
451   <vscale x 4 x i16>,
452   <vscale x 4 x i16>,
453   i16,
454   <vscale x 4 x i1>,
455   i64,
456   i64);
458 define <vscale x 4 x i16> @intrinsic_vslide1down_mask_vx_nxv4i16_nxv4i16_i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, i16 %2, <vscale x 4 x i1> %3, i64 %4) nounwind {
459 ; CHECK-LABEL: intrinsic_vslide1down_mask_vx_nxv4i16_nxv4i16_i16:
460 ; CHECK:       # %bb.0: # %entry
461 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu
462 ; CHECK-NEXT:    vslide1down.vx v8, v9, a0, v0.t
463 ; CHECK-NEXT:    ret
464 entry:
465   %a = call <vscale x 4 x i16> @llvm.riscv.vslide1down.mask.nxv4i16.i16(
466     <vscale x 4 x i16> %0,
467     <vscale x 4 x i16> %1,
468     i16 %2,
469     <vscale x 4 x i1> %3,
470     i64 %4, i64 1)
472   ret <vscale x 4 x i16> %a
475 declare <vscale x 8 x i16> @llvm.riscv.vslide1down.nxv8i16.i16(
476   <vscale x 8 x i16>,
477   <vscale x 8 x i16>,
478   i16,
479   i64);
481 define <vscale x 8 x i16> @intrinsic_vslide1down_vx_nxv8i16_nxv8i16_i16(<vscale x 8 x i16> %0, i16 %1, i64 %2) nounwind {
482 ; CHECK-LABEL: intrinsic_vslide1down_vx_nxv8i16_nxv8i16_i16:
483 ; CHECK:       # %bb.0: # %entry
484 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
485 ; CHECK-NEXT:    vslide1down.vx v8, v8, a0
486 ; CHECK-NEXT:    ret
487 entry:
488   %a = call <vscale x 8 x i16> @llvm.riscv.vslide1down.nxv8i16.i16(
489     <vscale x 8 x i16> undef,
490     <vscale x 8 x i16> %0,
491     i16 %1,
492     i64 %2)
494   ret <vscale x 8 x i16> %a
497 declare <vscale x 8 x i16> @llvm.riscv.vslide1down.mask.nxv8i16.i16(
498   <vscale x 8 x i16>,
499   <vscale x 8 x i16>,
500   i16,
501   <vscale x 8 x i1>,
502   i64,
503   i64);
505 define <vscale x 8 x i16> @intrinsic_vslide1down_mask_vx_nxv8i16_nxv8i16_i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, i16 %2, <vscale x 8 x i1> %3, i64 %4) nounwind {
506 ; CHECK-LABEL: intrinsic_vslide1down_mask_vx_nxv8i16_nxv8i16_i16:
507 ; CHECK:       # %bb.0: # %entry
508 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu
509 ; CHECK-NEXT:    vslide1down.vx v8, v10, a0, v0.t
510 ; CHECK-NEXT:    ret
511 entry:
512   %a = call <vscale x 8 x i16> @llvm.riscv.vslide1down.mask.nxv8i16.i16(
513     <vscale x 8 x i16> %0,
514     <vscale x 8 x i16> %1,
515     i16 %2,
516     <vscale x 8 x i1> %3,
517     i64 %4, i64 1)
519   ret <vscale x 8 x i16> %a
522 declare <vscale x 16 x i16> @llvm.riscv.vslide1down.nxv16i16.i16(
523   <vscale x 16 x i16>,
524   <vscale x 16 x i16>,
525   i16,
526   i64);
528 define <vscale x 16 x i16> @intrinsic_vslide1down_vx_nxv16i16_nxv16i16_i16(<vscale x 16 x i16> %0, i16 %1, i64 %2) nounwind {
529 ; CHECK-LABEL: intrinsic_vslide1down_vx_nxv16i16_nxv16i16_i16:
530 ; CHECK:       # %bb.0: # %entry
531 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
532 ; CHECK-NEXT:    vslide1down.vx v8, v8, a0
533 ; CHECK-NEXT:    ret
534 entry:
535   %a = call <vscale x 16 x i16> @llvm.riscv.vslide1down.nxv16i16.i16(
536     <vscale x 16 x i16> undef,
537     <vscale x 16 x i16> %0,
538     i16 %1,
539     i64 %2)
541   ret <vscale x 16 x i16> %a
544 declare <vscale x 16 x i16> @llvm.riscv.vslide1down.mask.nxv16i16.i16(
545   <vscale x 16 x i16>,
546   <vscale x 16 x i16>,
547   i16,
548   <vscale x 16 x i1>,
549   i64,
550   i64);
552 define <vscale x 16 x i16> @intrinsic_vslide1down_mask_vx_nxv16i16_nxv16i16_i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, i16 %2, <vscale x 16 x i1> %3, i64 %4) nounwind {
553 ; CHECK-LABEL: intrinsic_vslide1down_mask_vx_nxv16i16_nxv16i16_i16:
554 ; CHECK:       # %bb.0: # %entry
555 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, mu
556 ; CHECK-NEXT:    vslide1down.vx v8, v12, a0, v0.t
557 ; CHECK-NEXT:    ret
558 entry:
559   %a = call <vscale x 16 x i16> @llvm.riscv.vslide1down.mask.nxv16i16.i16(
560     <vscale x 16 x i16> %0,
561     <vscale x 16 x i16> %1,
562     i16 %2,
563     <vscale x 16 x i1> %3,
564     i64 %4, i64 1)
566   ret <vscale x 16 x i16> %a
569 declare <vscale x 32 x i16> @llvm.riscv.vslide1down.nxv32i16.i16(
570   <vscale x 32 x i16>,
571   <vscale x 32 x i16>,
572   i16,
573   i64);
575 define <vscale x 32 x i16> @intrinsic_vslide1down_vx_nxv32i16_nxv32i16_i16(<vscale x 32 x i16> %0, i16 %1, i64 %2) nounwind {
576 ; CHECK-LABEL: intrinsic_vslide1down_vx_nxv32i16_nxv32i16_i16:
577 ; CHECK:       # %bb.0: # %entry
578 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
579 ; CHECK-NEXT:    vslide1down.vx v8, v8, a0
580 ; CHECK-NEXT:    ret
581 entry:
582   %a = call <vscale x 32 x i16> @llvm.riscv.vslide1down.nxv32i16.i16(
583     <vscale x 32 x i16> undef,
584     <vscale x 32 x i16> %0,
585     i16 %1,
586     i64 %2)
588   ret <vscale x 32 x i16> %a
591 declare <vscale x 32 x i16> @llvm.riscv.vslide1down.mask.nxv32i16.i16(
592   <vscale x 32 x i16>,
593   <vscale x 32 x i16>,
594   i16,
595   <vscale x 32 x i1>,
596   i64,
597   i64);
599 define <vscale x 32 x i16> @intrinsic_vslide1down_mask_vx_nxv32i16_nxv32i16_i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, i16 %2, <vscale x 32 x i1> %3, i64 %4) nounwind {
600 ; CHECK-LABEL: intrinsic_vslide1down_mask_vx_nxv32i16_nxv32i16_i16:
601 ; CHECK:       # %bb.0: # %entry
602 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
603 ; CHECK-NEXT:    vslide1down.vx v8, v16, a0, v0.t
604 ; CHECK-NEXT:    ret
605 entry:
606   %a = call <vscale x 32 x i16> @llvm.riscv.vslide1down.mask.nxv32i16.i16(
607     <vscale x 32 x i16> %0,
608     <vscale x 32 x i16> %1,
609     i16 %2,
610     <vscale x 32 x i1> %3,
611     i64 %4, i64 1)
613   ret <vscale x 32 x i16> %a
616 declare <vscale x 1 x i32> @llvm.riscv.vslide1down.nxv1i32.i32(
617   <vscale x 1 x i32>,
618   <vscale x 1 x i32>,
619   i32,
620   i64);
622 define <vscale x 1 x i32> @intrinsic_vslide1down_vx_nxv1i32_nxv1i32_i32(<vscale x 1 x i32> %0, i32 %1, i64 %2) nounwind {
623 ; CHECK-LABEL: intrinsic_vslide1down_vx_nxv1i32_nxv1i32_i32:
624 ; CHECK:       # %bb.0: # %entry
625 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
626 ; CHECK-NEXT:    vslide1down.vx v8, v8, a0
627 ; CHECK-NEXT:    ret
628 entry:
629   %a = call <vscale x 1 x i32> @llvm.riscv.vslide1down.nxv1i32.i32(
630     <vscale x 1 x i32> undef,
631     <vscale x 1 x i32> %0,
632     i32 %1,
633     i64 %2)
635   ret <vscale x 1 x i32> %a
638 declare <vscale x 1 x i32> @llvm.riscv.vslide1down.mask.nxv1i32.i32(
639   <vscale x 1 x i32>,
640   <vscale x 1 x i32>,
641   i32,
642   <vscale x 1 x i1>,
643   i64,
644   i64);
646 define <vscale x 1 x i32> @intrinsic_vslide1down_mask_vx_nxv1i32_nxv1i32_i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, i32 %2, <vscale x 1 x i1> %3, i64 %4) nounwind {
647 ; CHECK-LABEL: intrinsic_vslide1down_mask_vx_nxv1i32_nxv1i32_i32:
648 ; CHECK:       # %bb.0: # %entry
649 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu
650 ; CHECK-NEXT:    vslide1down.vx v8, v9, a0, v0.t
651 ; CHECK-NEXT:    ret
652 entry:
653   %a = call <vscale x 1 x i32> @llvm.riscv.vslide1down.mask.nxv1i32.i32(
654     <vscale x 1 x i32> %0,
655     <vscale x 1 x i32> %1,
656     i32 %2,
657     <vscale x 1 x i1> %3,
658     i64 %4, i64 1)
660   ret <vscale x 1 x i32> %a
663 declare <vscale x 2 x i32> @llvm.riscv.vslide1down.nxv2i32.i32(
664   <vscale x 2 x i32>,
665   <vscale x 2 x i32>,
666   i32,
667   i64);
669 define <vscale x 2 x i32> @intrinsic_vslide1down_vx_nxv2i32_nxv2i32_i32(<vscale x 2 x i32> %0, i32 %1, i64 %2) nounwind {
670 ; CHECK-LABEL: intrinsic_vslide1down_vx_nxv2i32_nxv2i32_i32:
671 ; CHECK:       # %bb.0: # %entry
672 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
673 ; CHECK-NEXT:    vslide1down.vx v8, v8, a0
674 ; CHECK-NEXT:    ret
675 entry:
676   %a = call <vscale x 2 x i32> @llvm.riscv.vslide1down.nxv2i32.i32(
677     <vscale x 2 x i32> undef,
678     <vscale x 2 x i32> %0,
679     i32 %1,
680     i64 %2)
682   ret <vscale x 2 x i32> %a
685 declare <vscale x 2 x i32> @llvm.riscv.vslide1down.mask.nxv2i32.i32(
686   <vscale x 2 x i32>,
687   <vscale x 2 x i32>,
688   i32,
689   <vscale x 2 x i1>,
690   i64,
691   i64);
693 define <vscale x 2 x i32> @intrinsic_vslide1down_mask_vx_nxv2i32_nxv2i32_i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, i32 %2, <vscale x 2 x i1> %3, i64 %4) nounwind {
694 ; CHECK-LABEL: intrinsic_vslide1down_mask_vx_nxv2i32_nxv2i32_i32:
695 ; CHECK:       # %bb.0: # %entry
696 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu
697 ; CHECK-NEXT:    vslide1down.vx v8, v9, a0, v0.t
698 ; CHECK-NEXT:    ret
699 entry:
700   %a = call <vscale x 2 x i32> @llvm.riscv.vslide1down.mask.nxv2i32.i32(
701     <vscale x 2 x i32> %0,
702     <vscale x 2 x i32> %1,
703     i32 %2,
704     <vscale x 2 x i1> %3,
705     i64 %4, i64 1)
707   ret <vscale x 2 x i32> %a
710 declare <vscale x 4 x i32> @llvm.riscv.vslide1down.nxv4i32.i32(
711   <vscale x 4 x i32>,
712   <vscale x 4 x i32>,
713   i32,
714   i64);
716 define <vscale x 4 x i32> @intrinsic_vslide1down_vx_nxv4i32_nxv4i32_i32(<vscale x 4 x i32> %0, i32 %1, i64 %2) nounwind {
717 ; CHECK-LABEL: intrinsic_vslide1down_vx_nxv4i32_nxv4i32_i32:
718 ; CHECK:       # %bb.0: # %entry
719 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
720 ; CHECK-NEXT:    vslide1down.vx v8, v8, a0
721 ; CHECK-NEXT:    ret
722 entry:
723   %a = call <vscale x 4 x i32> @llvm.riscv.vslide1down.nxv4i32.i32(
724     <vscale x 4 x i32> undef,
725     <vscale x 4 x i32> %0,
726     i32 %1,
727     i64 %2)
729   ret <vscale x 4 x i32> %a
732 declare <vscale x 4 x i32> @llvm.riscv.vslide1down.mask.nxv4i32.i32(
733   <vscale x 4 x i32>,
734   <vscale x 4 x i32>,
735   i32,
736   <vscale x 4 x i1>,
737   i64,
738   i64);
740 define <vscale x 4 x i32> @intrinsic_vslide1down_mask_vx_nxv4i32_nxv4i32_i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, i32 %2, <vscale x 4 x i1> %3, i64 %4) nounwind {
741 ; CHECK-LABEL: intrinsic_vslide1down_mask_vx_nxv4i32_nxv4i32_i32:
742 ; CHECK:       # %bb.0: # %entry
743 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu
744 ; CHECK-NEXT:    vslide1down.vx v8, v10, a0, v0.t
745 ; CHECK-NEXT:    ret
746 entry:
747   %a = call <vscale x 4 x i32> @llvm.riscv.vslide1down.mask.nxv4i32.i32(
748     <vscale x 4 x i32> %0,
749     <vscale x 4 x i32> %1,
750     i32 %2,
751     <vscale x 4 x i1> %3,
752     i64 %4, i64 1)
754   ret <vscale x 4 x i32> %a
757 declare <vscale x 8 x i32> @llvm.riscv.vslide1down.nxv8i32.i32(
758   <vscale x 8 x i32>,
759   <vscale x 8 x i32>,
760   i32,
761   i64);
763 define <vscale x 8 x i32> @intrinsic_vslide1down_vx_nxv8i32_nxv8i32_i32(<vscale x 8 x i32> %0, i32 %1, i64 %2) nounwind {
764 ; CHECK-LABEL: intrinsic_vslide1down_vx_nxv8i32_nxv8i32_i32:
765 ; CHECK:       # %bb.0: # %entry
766 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
767 ; CHECK-NEXT:    vslide1down.vx v8, v8, a0
768 ; CHECK-NEXT:    ret
769 entry:
770   %a = call <vscale x 8 x i32> @llvm.riscv.vslide1down.nxv8i32.i32(
771     <vscale x 8 x i32> undef,
772     <vscale x 8 x i32> %0,
773     i32 %1,
774     i64 %2)
776   ret <vscale x 8 x i32> %a
779 declare <vscale x 8 x i32> @llvm.riscv.vslide1down.mask.nxv8i32.i32(
780   <vscale x 8 x i32>,
781   <vscale x 8 x i32>,
782   i32,
783   <vscale x 8 x i1>,
784   i64,
785   i64);
787 define <vscale x 8 x i32> @intrinsic_vslide1down_mask_vx_nxv8i32_nxv8i32_i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, i32 %2, <vscale x 8 x i1> %3, i64 %4) nounwind {
788 ; CHECK-LABEL: intrinsic_vslide1down_mask_vx_nxv8i32_nxv8i32_i32:
789 ; CHECK:       # %bb.0: # %entry
790 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, mu
791 ; CHECK-NEXT:    vslide1down.vx v8, v12, a0, v0.t
792 ; CHECK-NEXT:    ret
793 entry:
794   %a = call <vscale x 8 x i32> @llvm.riscv.vslide1down.mask.nxv8i32.i32(
795     <vscale x 8 x i32> %0,
796     <vscale x 8 x i32> %1,
797     i32 %2,
798     <vscale x 8 x i1> %3,
799     i64 %4, i64 1)
801   ret <vscale x 8 x i32> %a
804 declare <vscale x 16 x i32> @llvm.riscv.vslide1down.nxv16i32.i32(
805   <vscale x 16 x i32>,
806   <vscale x 16 x i32>,
807   i32,
808   i64);
810 define <vscale x 16 x i32> @intrinsic_vslide1down_vx_nxv16i32_nxv16i32_i32(<vscale x 16 x i32> %0, i32 %1, i64 %2) nounwind {
811 ; CHECK-LABEL: intrinsic_vslide1down_vx_nxv16i32_nxv16i32_i32:
812 ; CHECK:       # %bb.0: # %entry
813 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
814 ; CHECK-NEXT:    vslide1down.vx v8, v8, a0
815 ; CHECK-NEXT:    ret
816 entry:
817   %a = call <vscale x 16 x i32> @llvm.riscv.vslide1down.nxv16i32.i32(
818     <vscale x 16 x i32> undef,
819     <vscale x 16 x i32> %0,
820     i32 %1,
821     i64 %2)
823   ret <vscale x 16 x i32> %a
826 declare <vscale x 16 x i32> @llvm.riscv.vslide1down.mask.nxv16i32.i32(
827   <vscale x 16 x i32>,
828   <vscale x 16 x i32>,
829   i32,
830   <vscale x 16 x i1>,
831   i64,
832   i64);
834 define <vscale x 16 x i32> @intrinsic_vslide1down_mask_vx_nxv16i32_nxv16i32_i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, i32 %2, <vscale x 16 x i1> %3, i64 %4) nounwind {
835 ; CHECK-LABEL: intrinsic_vslide1down_mask_vx_nxv16i32_nxv16i32_i32:
836 ; CHECK:       # %bb.0: # %entry
837 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
838 ; CHECK-NEXT:    vslide1down.vx v8, v16, a0, v0.t
839 ; CHECK-NEXT:    ret
840 entry:
841   %a = call <vscale x 16 x i32> @llvm.riscv.vslide1down.mask.nxv16i32.i32(
842     <vscale x 16 x i32> %0,
843     <vscale x 16 x i32> %1,
844     i32 %2,
845     <vscale x 16 x i1> %3,
846     i64 %4, i64 1)
848   ret <vscale x 16 x i32> %a
851 declare <vscale x 1 x i64> @llvm.riscv.vslide1down.nxv1i64.i64(
852   <vscale x 1 x i64>,
853   <vscale x 1 x i64>,
854   i64,
855   i64);
857 define <vscale x 1 x i64> @intrinsic_vslide1down_vx_nxv1i64_nxv1i64_i64(<vscale x 1 x i64> %0, i64 %1, i64 %2) nounwind {
858 ; CHECK-LABEL: intrinsic_vslide1down_vx_nxv1i64_nxv1i64_i64:
859 ; CHECK:       # %bb.0: # %entry
860 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
861 ; CHECK-NEXT:    vslide1down.vx v8, v8, a0
862 ; CHECK-NEXT:    ret
863 entry:
864   %a = call <vscale x 1 x i64> @llvm.riscv.vslide1down.nxv1i64.i64(
865     <vscale x 1 x i64> undef,
866     <vscale x 1 x i64> %0,
867     i64 %1,
868     i64 %2)
870   ret <vscale x 1 x i64> %a
873 declare <vscale x 1 x i64> @llvm.riscv.vslide1down.mask.nxv1i64.i64(
874   <vscale x 1 x i64>,
875   <vscale x 1 x i64>,
876   i64,
877   <vscale x 1 x i1>,
878   i64,
879   i64);
881 define <vscale x 1 x i64> @intrinsic_vslide1down_mask_vx_nxv1i64_nxv1i64_i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, i64 %2, <vscale x 1 x i1> %3, i64 %4) nounwind {
882 ; CHECK-LABEL: intrinsic_vslide1down_mask_vx_nxv1i64_nxv1i64_i64:
883 ; CHECK:       # %bb.0: # %entry
884 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu
885 ; CHECK-NEXT:    vslide1down.vx v8, v9, a0, v0.t
886 ; CHECK-NEXT:    ret
887 entry:
888   %a = call <vscale x 1 x i64> @llvm.riscv.vslide1down.mask.nxv1i64.i64(
889     <vscale x 1 x i64> %0,
890     <vscale x 1 x i64> %1,
891     i64 %2,
892     <vscale x 1 x i1> %3,
893     i64 %4, i64 1)
895   ret <vscale x 1 x i64> %a
898 declare <vscale x 2 x i64> @llvm.riscv.vslide1down.nxv2i64.i64(
899   <vscale x 2 x i64>,
900   <vscale x 2 x i64>,
901   i64,
902   i64);
904 define <vscale x 2 x i64> @intrinsic_vslide1down_vx_nxv2i64_nxv2i64_i64(<vscale x 2 x i64> %0, i64 %1, i64 %2) nounwind {
905 ; CHECK-LABEL: intrinsic_vslide1down_vx_nxv2i64_nxv2i64_i64:
906 ; CHECK:       # %bb.0: # %entry
907 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
908 ; CHECK-NEXT:    vslide1down.vx v8, v8, a0
909 ; CHECK-NEXT:    ret
910 entry:
911   %a = call <vscale x 2 x i64> @llvm.riscv.vslide1down.nxv2i64.i64(
912     <vscale x 2 x i64> undef,
913     <vscale x 2 x i64> %0,
914     i64 %1,
915     i64 %2)
917   ret <vscale x 2 x i64> %a
920 declare <vscale x 2 x i64> @llvm.riscv.vslide1down.mask.nxv2i64.i64(
921   <vscale x 2 x i64>,
922   <vscale x 2 x i64>,
923   i64,
924   <vscale x 2 x i1>,
925   i64,
926   i64);
928 define <vscale x 2 x i64> @intrinsic_vslide1down_mask_vx_nxv2i64_nxv2i64_i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, i64 %2, <vscale x 2 x i1> %3, i64 %4) nounwind {
929 ; CHECK-LABEL: intrinsic_vslide1down_mask_vx_nxv2i64_nxv2i64_i64:
930 ; CHECK:       # %bb.0: # %entry
931 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, mu
932 ; CHECK-NEXT:    vslide1down.vx v8, v10, a0, v0.t
933 ; CHECK-NEXT:    ret
934 entry:
935   %a = call <vscale x 2 x i64> @llvm.riscv.vslide1down.mask.nxv2i64.i64(
936     <vscale x 2 x i64> %0,
937     <vscale x 2 x i64> %1,
938     i64 %2,
939     <vscale x 2 x i1> %3,
940     i64 %4, i64 1)
942   ret <vscale x 2 x i64> %a
945 declare <vscale x 4 x i64> @llvm.riscv.vslide1down.nxv4i64.i64(
946   <vscale x 4 x i64>,
947   <vscale x 4 x i64>,
948   i64,
949   i64);
951 define <vscale x 4 x i64> @intrinsic_vslide1down_vx_nxv4i64_nxv4i64_i64(<vscale x 4 x i64> %0, i64 %1, i64 %2) nounwind {
952 ; CHECK-LABEL: intrinsic_vslide1down_vx_nxv4i64_nxv4i64_i64:
953 ; CHECK:       # %bb.0: # %entry
954 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
955 ; CHECK-NEXT:    vslide1down.vx v8, v8, a0
956 ; CHECK-NEXT:    ret
957 entry:
958   %a = call <vscale x 4 x i64> @llvm.riscv.vslide1down.nxv4i64.i64(
959     <vscale x 4 x i64> undef,
960     <vscale x 4 x i64> %0,
961     i64 %1,
962     i64 %2)
964   ret <vscale x 4 x i64> %a
967 declare <vscale x 4 x i64> @llvm.riscv.vslide1down.mask.nxv4i64.i64(
968   <vscale x 4 x i64>,
969   <vscale x 4 x i64>,
970   i64,
971   <vscale x 4 x i1>,
972   i64,
973   i64);
975 define <vscale x 4 x i64> @intrinsic_vslide1down_mask_vx_nxv4i64_nxv4i64_i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, i64 %2, <vscale x 4 x i1> %3, i64 %4) nounwind {
976 ; CHECK-LABEL: intrinsic_vslide1down_mask_vx_nxv4i64_nxv4i64_i64:
977 ; CHECK:       # %bb.0: # %entry
978 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, mu
979 ; CHECK-NEXT:    vslide1down.vx v8, v12, a0, v0.t
980 ; CHECK-NEXT:    ret
981 entry:
982   %a = call <vscale x 4 x i64> @llvm.riscv.vslide1down.mask.nxv4i64.i64(
983     <vscale x 4 x i64> %0,
984     <vscale x 4 x i64> %1,
985     i64 %2,
986     <vscale x 4 x i1> %3,
987     i64 %4, i64 1)
989   ret <vscale x 4 x i64> %a
992 declare <vscale x 8 x i64> @llvm.riscv.vslide1down.nxv8i64.i64(
993   <vscale x 8 x i64>,
994   <vscale x 8 x i64>,
995   i64,
996   i64);
998 define <vscale x 8 x i64> @intrinsic_vslide1down_vx_nxv8i64_nxv8i64_i64(<vscale x 8 x i64> %0, i64 %1, i64 %2) nounwind {
999 ; CHECK-LABEL: intrinsic_vslide1down_vx_nxv8i64_nxv8i64_i64:
1000 ; CHECK:       # %bb.0: # %entry
1001 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
1002 ; CHECK-NEXT:    vslide1down.vx v8, v8, a0
1003 ; CHECK-NEXT:    ret
1004 entry:
1005   %a = call <vscale x 8 x i64> @llvm.riscv.vslide1down.nxv8i64.i64(
1006     <vscale x 8 x i64> undef,
1007     <vscale x 8 x i64> %0,
1008     i64 %1,
1009     i64 %2)
1011   ret <vscale x 8 x i64> %a
1014 declare <vscale x 8 x i64> @llvm.riscv.vslide1down.mask.nxv8i64.i64(
1015   <vscale x 8 x i64>,
1016   <vscale x 8 x i64>,
1017   i64,
1018   <vscale x 8 x i1>,
1019   i64,
1020   i64);
1022 define <vscale x 8 x i64> @intrinsic_vslide1down_mask_vx_nxv8i64_nxv8i64_i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, i64 %2, <vscale x 8 x i1> %3, i64 %4) nounwind {
1023 ; CHECK-LABEL: intrinsic_vslide1down_mask_vx_nxv8i64_nxv8i64_i64:
1024 ; CHECK:       # %bb.0: # %entry
1025 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
1026 ; CHECK-NEXT:    vslide1down.vx v8, v16, a0, v0.t
1027 ; CHECK-NEXT:    ret
1028 entry:
1029   %a = call <vscale x 8 x i64> @llvm.riscv.vslide1down.mask.nxv8i64.i64(
1030     <vscale x 8 x i64> %0,
1031     <vscale x 8 x i64> %1,
1032     i64 %2,
1033     <vscale x 8 x i1> %3,
1034     i64 %4, i64 1)
1036   ret <vscale x 8 x i64> %a