[TTI] getTypeBasedIntrinsicInstrCost - add basic handling for strided load/store...
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vslide1up.ll
blobe1f020af4d5cc6db127177869536f3f31052769c
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v \
3 ; RUN:   -verify-machineinstrs  | FileCheck %s --check-prefixes=CHECK,RV32
4 ; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v \
5 ; RUN:   -verify-machineinstrs  | FileCheck %s --check-prefixes=CHECK,RV64
7 declare <vscale x 1 x i8> @llvm.riscv.vslide1up.nxv1i8.i8(
8   <vscale x 1 x i8>,
9   <vscale x 1 x i8>,
10   i8,
11   iXLen)
13 define <vscale x 1 x i8> @intrinsic_vslide1up_vx_nxv1i8_nxv1i8_i8(<vscale x 1 x i8> %0, i8 %1, iXLen %2) nounwind {
14 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv1i8_nxv1i8_i8:
15 ; CHECK:       # %bb.0: # %entry
16 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
17 ; CHECK-NEXT:    vslide1up.vx v9, v8, a0
18 ; CHECK-NEXT:    vmv1r.v v8, v9
19 ; CHECK-NEXT:    ret
20 entry:
21   %a = call <vscale x 1 x i8> @llvm.riscv.vslide1up.nxv1i8.i8(
22     <vscale x 1 x i8> undef,
23     <vscale x 1 x i8> %0,
24     i8 %1,
25     iXLen %2)
27   ret <vscale x 1 x i8> %a
30 declare <vscale x 1 x i8> @llvm.riscv.vslide1up.mask.nxv1i8.i8(
31   <vscale x 1 x i8>,
32   <vscale x 1 x i8>,
33   i8,
34   <vscale x 1 x i1>,
35   iXLen,
36   iXLen)
38 define <vscale x 1 x i8> @intrinsic_vslide1up_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, iXLen %4) nounwind {
39 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv1i8_nxv1i8_i8:
40 ; CHECK:       # %bb.0: # %entry
41 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, mu
42 ; CHECK-NEXT:    vslide1up.vx v8, v9, a0, v0.t
43 ; CHECK-NEXT:    ret
44 entry:
45   %a = call <vscale x 1 x i8> @llvm.riscv.vslide1up.mask.nxv1i8.i8(
46     <vscale x 1 x i8> %0,
47     <vscale x 1 x i8> %1,
48     i8 %2,
49     <vscale x 1 x i1> %3,
50     iXLen %4, iXLen 1)
52   ret <vscale x 1 x i8> %a
55 declare <vscale x 2 x i8> @llvm.riscv.vslide1up.nxv2i8.i8(
56   <vscale x 2 x i8>,
57   <vscale x 2 x i8>,
58   i8,
59   iXLen)
61 define <vscale x 2 x i8> @intrinsic_vslide1up_vx_nxv2i8_nxv2i8_i8(<vscale x 2 x i8> %0, i8 %1, iXLen %2) nounwind {
62 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv2i8_nxv2i8_i8:
63 ; CHECK:       # %bb.0: # %entry
64 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
65 ; CHECK-NEXT:    vslide1up.vx v9, v8, a0
66 ; CHECK-NEXT:    vmv1r.v v8, v9
67 ; CHECK-NEXT:    ret
68 entry:
69   %a = call <vscale x 2 x i8> @llvm.riscv.vslide1up.nxv2i8.i8(
70     <vscale x 2 x i8> undef,
71     <vscale x 2 x i8> %0,
72     i8 %1,
73     iXLen %2)
75   ret <vscale x 2 x i8> %a
78 declare <vscale x 2 x i8> @llvm.riscv.vslide1up.mask.nxv2i8.i8(
79   <vscale x 2 x i8>,
80   <vscale x 2 x i8>,
81   i8,
82   <vscale x 2 x i1>,
83   iXLen,
84   iXLen)
86 define <vscale x 2 x i8> @intrinsic_vslide1up_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, iXLen %4) nounwind {
87 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv2i8_nxv2i8_i8:
88 ; CHECK:       # %bb.0: # %entry
89 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, mu
90 ; CHECK-NEXT:    vslide1up.vx v8, v9, a0, v0.t
91 ; CHECK-NEXT:    ret
92 entry:
93   %a = call <vscale x 2 x i8> @llvm.riscv.vslide1up.mask.nxv2i8.i8(
94     <vscale x 2 x i8> %0,
95     <vscale x 2 x i8> %1,
96     i8 %2,
97     <vscale x 2 x i1> %3,
98     iXLen %4, iXLen 1)
100   ret <vscale x 2 x i8> %a
103 declare <vscale x 4 x i8> @llvm.riscv.vslide1up.nxv4i8.i8(
104   <vscale x 4 x i8>,
105   <vscale x 4 x i8>,
106   i8,
107   iXLen)
109 define <vscale x 4 x i8> @intrinsic_vslide1up_vx_nxv4i8_nxv4i8_i8(<vscale x 4 x i8> %0, i8 %1, iXLen %2) nounwind {
110 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv4i8_nxv4i8_i8:
111 ; CHECK:       # %bb.0: # %entry
112 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
113 ; CHECK-NEXT:    vslide1up.vx v9, v8, a0
114 ; CHECK-NEXT:    vmv1r.v v8, v9
115 ; CHECK-NEXT:    ret
116 entry:
117   %a = call <vscale x 4 x i8> @llvm.riscv.vslide1up.nxv4i8.i8(
118     <vscale x 4 x i8> undef,
119     <vscale x 4 x i8> %0,
120     i8 %1,
121     iXLen %2)
123   ret <vscale x 4 x i8> %a
126 declare <vscale x 4 x i8> @llvm.riscv.vslide1up.mask.nxv4i8.i8(
127   <vscale x 4 x i8>,
128   <vscale x 4 x i8>,
129   i8,
130   <vscale x 4 x i1>,
131   iXLen,
132   iXLen)
134 define <vscale x 4 x i8> @intrinsic_vslide1up_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, iXLen %4) nounwind {
135 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv4i8_nxv4i8_i8:
136 ; CHECK:       # %bb.0: # %entry
137 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, mu
138 ; CHECK-NEXT:    vslide1up.vx v8, v9, a0, v0.t
139 ; CHECK-NEXT:    ret
140 entry:
141   %a = call <vscale x 4 x i8> @llvm.riscv.vslide1up.mask.nxv4i8.i8(
142     <vscale x 4 x i8> %0,
143     <vscale x 4 x i8> %1,
144     i8 %2,
145     <vscale x 4 x i1> %3,
146     iXLen %4, iXLen 1)
148   ret <vscale x 4 x i8> %a
151 declare <vscale x 8 x i8> @llvm.riscv.vslide1up.nxv8i8.i8(
152   <vscale x 8 x i8>,
153   <vscale x 8 x i8>,
154   i8,
155   iXLen)
157 define <vscale x 8 x i8> @intrinsic_vslide1up_vx_nxv8i8_nxv8i8_i8(<vscale x 8 x i8> %0, i8 %1, iXLen %2) nounwind {
158 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv8i8_nxv8i8_i8:
159 ; CHECK:       # %bb.0: # %entry
160 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
161 ; CHECK-NEXT:    vslide1up.vx v9, v8, a0
162 ; CHECK-NEXT:    vmv.v.v v8, v9
163 ; CHECK-NEXT:    ret
164 entry:
165   %a = call <vscale x 8 x i8> @llvm.riscv.vslide1up.nxv8i8.i8(
166     <vscale x 8 x i8> undef,
167     <vscale x 8 x i8> %0,
168     i8 %1,
169     iXLen %2)
171   ret <vscale x 8 x i8> %a
174 declare <vscale x 8 x i8> @llvm.riscv.vslide1up.mask.nxv8i8.i8(
175   <vscale x 8 x i8>,
176   <vscale x 8 x i8>,
177   i8,
178   <vscale x 8 x i1>,
179   iXLen,
180   iXLen)
182 define <vscale x 8 x i8> @intrinsic_vslide1up_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, iXLen %4) nounwind {
183 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv8i8_nxv8i8_i8:
184 ; CHECK:       # %bb.0: # %entry
185 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, mu
186 ; CHECK-NEXT:    vslide1up.vx v8, v9, a0, v0.t
187 ; CHECK-NEXT:    ret
188 entry:
189   %a = call <vscale x 8 x i8> @llvm.riscv.vslide1up.mask.nxv8i8.i8(
190     <vscale x 8 x i8> %0,
191     <vscale x 8 x i8> %1,
192     i8 %2,
193     <vscale x 8 x i1> %3,
194     iXLen %4, iXLen 1)
196   ret <vscale x 8 x i8> %a
199 declare <vscale x 16 x i8> @llvm.riscv.vslide1up.nxv16i8.i8(
200   <vscale x 16 x i8>,
201   <vscale x 16 x i8>,
202   i8,
203   iXLen)
205 define <vscale x 16 x i8> @intrinsic_vslide1up_vx_nxv16i8_nxv16i8_i8(<vscale x 16 x i8> %0, i8 %1, iXLen %2) nounwind {
206 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv16i8_nxv16i8_i8:
207 ; CHECK:       # %bb.0: # %entry
208 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
209 ; CHECK-NEXT:    vslide1up.vx v10, v8, a0
210 ; CHECK-NEXT:    vmv.v.v v8, v10
211 ; CHECK-NEXT:    ret
212 entry:
213   %a = call <vscale x 16 x i8> @llvm.riscv.vslide1up.nxv16i8.i8(
214     <vscale x 16 x i8> undef,
215     <vscale x 16 x i8> %0,
216     i8 %1,
217     iXLen %2)
219   ret <vscale x 16 x i8> %a
222 declare <vscale x 16 x i8> @llvm.riscv.vslide1up.mask.nxv16i8.i8(
223   <vscale x 16 x i8>,
224   <vscale x 16 x i8>,
225   i8,
226   <vscale x 16 x i1>,
227   iXLen,
228   iXLen)
230 define <vscale x 16 x i8> @intrinsic_vslide1up_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, iXLen %4) nounwind {
231 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv16i8_nxv16i8_i8:
232 ; CHECK:       # %bb.0: # %entry
233 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, mu
234 ; CHECK-NEXT:    vslide1up.vx v8, v10, a0, v0.t
235 ; CHECK-NEXT:    ret
236 entry:
237   %a = call <vscale x 16 x i8> @llvm.riscv.vslide1up.mask.nxv16i8.i8(
238     <vscale x 16 x i8> %0,
239     <vscale x 16 x i8> %1,
240     i8 %2,
241     <vscale x 16 x i1> %3,
242     iXLen %4, iXLen 1)
244   ret <vscale x 16 x i8> %a
247 declare <vscale x 32 x i8> @llvm.riscv.vslide1up.nxv32i8.i8(
248   <vscale x 32 x i8>,
249   <vscale x 32 x i8>,
250   i8,
251   iXLen)
253 define <vscale x 32 x i8> @intrinsic_vslide1up_vx_nxv32i8_nxv32i8_i8(<vscale x 32 x i8> %0, i8 %1, iXLen %2) nounwind {
254 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv32i8_nxv32i8_i8:
255 ; CHECK:       # %bb.0: # %entry
256 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
257 ; CHECK-NEXT:    vslide1up.vx v12, v8, a0
258 ; CHECK-NEXT:    vmv.v.v v8, v12
259 ; CHECK-NEXT:    ret
260 entry:
261   %a = call <vscale x 32 x i8> @llvm.riscv.vslide1up.nxv32i8.i8(
262     <vscale x 32 x i8> undef,
263     <vscale x 32 x i8> %0,
264     i8 %1,
265     iXLen %2)
267   ret <vscale x 32 x i8> %a
270 declare <vscale x 32 x i8> @llvm.riscv.vslide1up.mask.nxv32i8.i8(
271   <vscale x 32 x i8>,
272   <vscale x 32 x i8>,
273   i8,
274   <vscale x 32 x i1>,
275   iXLen,
276   iXLen)
278 define <vscale x 32 x i8> @intrinsic_vslide1up_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, iXLen %4) nounwind {
279 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv32i8_nxv32i8_i8:
280 ; CHECK:       # %bb.0: # %entry
281 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, mu
282 ; CHECK-NEXT:    vslide1up.vx v8, v12, a0, v0.t
283 ; CHECK-NEXT:    ret
284 entry:
285   %a = call <vscale x 32 x i8> @llvm.riscv.vslide1up.mask.nxv32i8.i8(
286     <vscale x 32 x i8> %0,
287     <vscale x 32 x i8> %1,
288     i8 %2,
289     <vscale x 32 x i1> %3,
290     iXLen %4, iXLen 1)
292   ret <vscale x 32 x i8> %a
295 declare <vscale x 64 x i8> @llvm.riscv.vslide1up.nxv64i8.i8(
296   <vscale x 64 x i8>,
297   <vscale x 64 x i8>,
298   i8,
299   iXLen)
301 define <vscale x 64 x i8> @intrinsic_vslide1up_vx_nxv64i8_nxv64i8_i8(<vscale x 64 x i8> %0, i8 %1, iXLen %2) nounwind {
302 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv64i8_nxv64i8_i8:
303 ; CHECK:       # %bb.0: # %entry
304 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
305 ; CHECK-NEXT:    vslide1up.vx v16, v8, a0
306 ; CHECK-NEXT:    vmv.v.v v8, v16
307 ; CHECK-NEXT:    ret
308 entry:
309   %a = call <vscale x 64 x i8> @llvm.riscv.vslide1up.nxv64i8.i8(
310     <vscale x 64 x i8> undef,
311     <vscale x 64 x i8> %0,
312     i8 %1,
313     iXLen %2)
315   ret <vscale x 64 x i8> %a
318 declare <vscale x 64 x i8> @llvm.riscv.vslide1up.mask.nxv64i8.i8(
319   <vscale x 64 x i8>,
320   <vscale x 64 x i8>,
321   i8,
322   <vscale x 64 x i1>,
323   iXLen,
324   iXLen)
326 define <vscale x 64 x i8> @intrinsic_vslide1up_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, iXLen %4) nounwind {
327 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv64i8_nxv64i8_i8:
328 ; CHECK:       # %bb.0: # %entry
329 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, mu
330 ; CHECK-NEXT:    vslide1up.vx v8, v16, a0, v0.t
331 ; CHECK-NEXT:    ret
332 entry:
333   %a = call <vscale x 64 x i8> @llvm.riscv.vslide1up.mask.nxv64i8.i8(
334     <vscale x 64 x i8> %0,
335     <vscale x 64 x i8> %1,
336     i8 %2,
337     <vscale x 64 x i1> %3,
338     iXLen %4, iXLen 1)
340   ret <vscale x 64 x i8> %a
343 declare <vscale x 1 x i16> @llvm.riscv.vslide1up.nxv1i16.i16(
344   <vscale x 1 x i16>,
345   <vscale x 1 x i16>,
346   i16,
347   iXLen)
349 define <vscale x 1 x i16> @intrinsic_vslide1up_vx_nxv1i16_nxv1i16_i16(<vscale x 1 x i16> %0, i16 %1, iXLen %2) nounwind {
350 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv1i16_nxv1i16_i16:
351 ; CHECK:       # %bb.0: # %entry
352 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
353 ; CHECK-NEXT:    vslide1up.vx v9, v8, a0
354 ; CHECK-NEXT:    vmv1r.v v8, v9
355 ; CHECK-NEXT:    ret
356 entry:
357   %a = call <vscale x 1 x i16> @llvm.riscv.vslide1up.nxv1i16.i16(
358     <vscale x 1 x i16> undef,
359     <vscale x 1 x i16> %0,
360     i16 %1,
361     iXLen %2)
363   ret <vscale x 1 x i16> %a
366 declare <vscale x 1 x i16> @llvm.riscv.vslide1up.mask.nxv1i16.i16(
367   <vscale x 1 x i16>,
368   <vscale x 1 x i16>,
369   i16,
370   <vscale x 1 x i1>,
371   iXLen,
372   iXLen)
374 define <vscale x 1 x i16> @intrinsic_vslide1up_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, iXLen %4) nounwind {
375 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv1i16_nxv1i16_i16:
376 ; CHECK:       # %bb.0: # %entry
377 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu
378 ; CHECK-NEXT:    vslide1up.vx v8, v9, a0, v0.t
379 ; CHECK-NEXT:    ret
380 entry:
381   %a = call <vscale x 1 x i16> @llvm.riscv.vslide1up.mask.nxv1i16.i16(
382     <vscale x 1 x i16> %0,
383     <vscale x 1 x i16> %1,
384     i16 %2,
385     <vscale x 1 x i1> %3,
386     iXLen %4, iXLen 1)
388   ret <vscale x 1 x i16> %a
391 declare <vscale x 2 x i16> @llvm.riscv.vslide1up.nxv2i16.i16(
392   <vscale x 2 x i16>,
393   <vscale x 2 x i16>,
394   i16,
395   iXLen)
397 define <vscale x 2 x i16> @intrinsic_vslide1up_vx_nxv2i16_nxv2i16_i16(<vscale x 2 x i16> %0, i16 %1, iXLen %2) nounwind {
398 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv2i16_nxv2i16_i16:
399 ; CHECK:       # %bb.0: # %entry
400 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
401 ; CHECK-NEXT:    vslide1up.vx v9, v8, a0
402 ; CHECK-NEXT:    vmv1r.v v8, v9
403 ; CHECK-NEXT:    ret
404 entry:
405   %a = call <vscale x 2 x i16> @llvm.riscv.vslide1up.nxv2i16.i16(
406     <vscale x 2 x i16> undef,
407     <vscale x 2 x i16> %0,
408     i16 %1,
409     iXLen %2)
411   ret <vscale x 2 x i16> %a
414 declare <vscale x 2 x i16> @llvm.riscv.vslide1up.mask.nxv2i16.i16(
415   <vscale x 2 x i16>,
416   <vscale x 2 x i16>,
417   i16,
418   <vscale x 2 x i1>,
419   iXLen,
420   iXLen)
422 define <vscale x 2 x i16> @intrinsic_vslide1up_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, iXLen %4) nounwind {
423 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv2i16_nxv2i16_i16:
424 ; CHECK:       # %bb.0: # %entry
425 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu
426 ; CHECK-NEXT:    vslide1up.vx v8, v9, a0, v0.t
427 ; CHECK-NEXT:    ret
428 entry:
429   %a = call <vscale x 2 x i16> @llvm.riscv.vslide1up.mask.nxv2i16.i16(
430     <vscale x 2 x i16> %0,
431     <vscale x 2 x i16> %1,
432     i16 %2,
433     <vscale x 2 x i1> %3,
434     iXLen %4, iXLen 1)
436   ret <vscale x 2 x i16> %a
439 declare <vscale x 4 x i16> @llvm.riscv.vslide1up.nxv4i16.i16(
440   <vscale x 4 x i16>,
441   <vscale x 4 x i16>,
442   i16,
443   iXLen)
445 define <vscale x 4 x i16> @intrinsic_vslide1up_vx_nxv4i16_nxv4i16_i16(<vscale x 4 x i16> %0, i16 %1, iXLen %2) nounwind {
446 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv4i16_nxv4i16_i16:
447 ; CHECK:       # %bb.0: # %entry
448 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
449 ; CHECK-NEXT:    vslide1up.vx v9, v8, a0
450 ; CHECK-NEXT:    vmv.v.v v8, v9
451 ; CHECK-NEXT:    ret
452 entry:
453   %a = call <vscale x 4 x i16> @llvm.riscv.vslide1up.nxv4i16.i16(
454     <vscale x 4 x i16> undef,
455     <vscale x 4 x i16> %0,
456     i16 %1,
457     iXLen %2)
459   ret <vscale x 4 x i16> %a
462 declare <vscale x 4 x i16> @llvm.riscv.vslide1up.mask.nxv4i16.i16(
463   <vscale x 4 x i16>,
464   <vscale x 4 x i16>,
465   i16,
466   <vscale x 4 x i1>,
467   iXLen,
468   iXLen)
470 define <vscale x 4 x i16> @intrinsic_vslide1up_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, iXLen %4) nounwind {
471 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv4i16_nxv4i16_i16:
472 ; CHECK:       # %bb.0: # %entry
473 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu
474 ; CHECK-NEXT:    vslide1up.vx v8, v9, a0, v0.t
475 ; CHECK-NEXT:    ret
476 entry:
477   %a = call <vscale x 4 x i16> @llvm.riscv.vslide1up.mask.nxv4i16.i16(
478     <vscale x 4 x i16> %0,
479     <vscale x 4 x i16> %1,
480     i16 %2,
481     <vscale x 4 x i1> %3,
482     iXLen %4, iXLen 1)
484   ret <vscale x 4 x i16> %a
487 declare <vscale x 8 x i16> @llvm.riscv.vslide1up.nxv8i16.i16(
488   <vscale x 8 x i16>,
489   <vscale x 8 x i16>,
490   i16,
491   iXLen)
493 define <vscale x 8 x i16> @intrinsic_vslide1up_vx_nxv8i16_nxv8i16_i16(<vscale x 8 x i16> %0, i16 %1, iXLen %2) nounwind {
494 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv8i16_nxv8i16_i16:
495 ; CHECK:       # %bb.0: # %entry
496 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
497 ; CHECK-NEXT:    vslide1up.vx v10, v8, a0
498 ; CHECK-NEXT:    vmv.v.v v8, v10
499 ; CHECK-NEXT:    ret
500 entry:
501   %a = call <vscale x 8 x i16> @llvm.riscv.vslide1up.nxv8i16.i16(
502     <vscale x 8 x i16> undef,
503     <vscale x 8 x i16> %0,
504     i16 %1,
505     iXLen %2)
507   ret <vscale x 8 x i16> %a
510 declare <vscale x 8 x i16> @llvm.riscv.vslide1up.mask.nxv8i16.i16(
511   <vscale x 8 x i16>,
512   <vscale x 8 x i16>,
513   i16,
514   <vscale x 8 x i1>,
515   iXLen,
516   iXLen)
518 define <vscale x 8 x i16> @intrinsic_vslide1up_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, iXLen %4) nounwind {
519 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv8i16_nxv8i16_i16:
520 ; CHECK:       # %bb.0: # %entry
521 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu
522 ; CHECK-NEXT:    vslide1up.vx v8, v10, a0, v0.t
523 ; CHECK-NEXT:    ret
524 entry:
525   %a = call <vscale x 8 x i16> @llvm.riscv.vslide1up.mask.nxv8i16.i16(
526     <vscale x 8 x i16> %0,
527     <vscale x 8 x i16> %1,
528     i16 %2,
529     <vscale x 8 x i1> %3,
530     iXLen %4, iXLen 1)
532   ret <vscale x 8 x i16> %a
535 declare <vscale x 16 x i16> @llvm.riscv.vslide1up.nxv16i16.i16(
536   <vscale x 16 x i16>,
537   <vscale x 16 x i16>,
538   i16,
539   iXLen)
541 define <vscale x 16 x i16> @intrinsic_vslide1up_vx_nxv16i16_nxv16i16_i16(<vscale x 16 x i16> %0, i16 %1, iXLen %2) nounwind {
542 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv16i16_nxv16i16_i16:
543 ; CHECK:       # %bb.0: # %entry
544 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
545 ; CHECK-NEXT:    vslide1up.vx v12, v8, a0
546 ; CHECK-NEXT:    vmv.v.v v8, v12
547 ; CHECK-NEXT:    ret
548 entry:
549   %a = call <vscale x 16 x i16> @llvm.riscv.vslide1up.nxv16i16.i16(
550     <vscale x 16 x i16> undef,
551     <vscale x 16 x i16> %0,
552     i16 %1,
553     iXLen %2)
555   ret <vscale x 16 x i16> %a
558 declare <vscale x 16 x i16> @llvm.riscv.vslide1up.mask.nxv16i16.i16(
559   <vscale x 16 x i16>,
560   <vscale x 16 x i16>,
561   i16,
562   <vscale x 16 x i1>,
563   iXLen,
564   iXLen)
566 define <vscale x 16 x i16> @intrinsic_vslide1up_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, iXLen %4) nounwind {
567 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv16i16_nxv16i16_i16:
568 ; CHECK:       # %bb.0: # %entry
569 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, mu
570 ; CHECK-NEXT:    vslide1up.vx v8, v12, a0, v0.t
571 ; CHECK-NEXT:    ret
572 entry:
573   %a = call <vscale x 16 x i16> @llvm.riscv.vslide1up.mask.nxv16i16.i16(
574     <vscale x 16 x i16> %0,
575     <vscale x 16 x i16> %1,
576     i16 %2,
577     <vscale x 16 x i1> %3,
578     iXLen %4, iXLen 1)
580   ret <vscale x 16 x i16> %a
583 declare <vscale x 32 x i16> @llvm.riscv.vslide1up.nxv32i16.i16(
584   <vscale x 32 x i16>,
585   <vscale x 32 x i16>,
586   i16,
587   iXLen)
589 define <vscale x 32 x i16> @intrinsic_vslide1up_vx_nxv32i16_nxv32i16_i16(<vscale x 32 x i16> %0, i16 %1, iXLen %2) nounwind {
590 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv32i16_nxv32i16_i16:
591 ; CHECK:       # %bb.0: # %entry
592 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
593 ; CHECK-NEXT:    vslide1up.vx v16, v8, a0
594 ; CHECK-NEXT:    vmv.v.v v8, v16
595 ; CHECK-NEXT:    ret
596 entry:
597   %a = call <vscale x 32 x i16> @llvm.riscv.vslide1up.nxv32i16.i16(
598     <vscale x 32 x i16> undef,
599     <vscale x 32 x i16> %0,
600     i16 %1,
601     iXLen %2)
603   ret <vscale x 32 x i16> %a
606 declare <vscale x 32 x i16> @llvm.riscv.vslide1up.mask.nxv32i16.i16(
607   <vscale x 32 x i16>,
608   <vscale x 32 x i16>,
609   i16,
610   <vscale x 32 x i1>,
611   iXLen,
612   iXLen)
614 define <vscale x 32 x i16> @intrinsic_vslide1up_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, iXLen %4) nounwind {
615 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv32i16_nxv32i16_i16:
616 ; CHECK:       # %bb.0: # %entry
617 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
618 ; CHECK-NEXT:    vslide1up.vx v8, v16, a0, v0.t
619 ; CHECK-NEXT:    ret
620 entry:
621   %a = call <vscale x 32 x i16> @llvm.riscv.vslide1up.mask.nxv32i16.i16(
622     <vscale x 32 x i16> %0,
623     <vscale x 32 x i16> %1,
624     i16 %2,
625     <vscale x 32 x i1> %3,
626     iXLen %4, iXLen 1)
628   ret <vscale x 32 x i16> %a
631 declare <vscale x 1 x i32> @llvm.riscv.vslide1up.nxv1i32.i32(
632   <vscale x 1 x i32>,
633   <vscale x 1 x i32>,
634   i32,
635   iXLen)
637 define <vscale x 1 x i32> @intrinsic_vslide1up_vx_nxv1i32_nxv1i32_i32(<vscale x 1 x i32> %0, i32 %1, iXLen %2) nounwind {
638 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv1i32_nxv1i32_i32:
639 ; CHECK:       # %bb.0: # %entry
640 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
641 ; CHECK-NEXT:    vslide1up.vx v9, v8, a0
642 ; CHECK-NEXT:    vmv1r.v v8, v9
643 ; CHECK-NEXT:    ret
644 entry:
645   %a = call <vscale x 1 x i32> @llvm.riscv.vslide1up.nxv1i32.i32(
646     <vscale x 1 x i32> undef,
647     <vscale x 1 x i32> %0,
648     i32 %1,
649     iXLen %2)
651   ret <vscale x 1 x i32> %a
654 declare <vscale x 1 x i32> @llvm.riscv.vslide1up.mask.nxv1i32.i32(
655   <vscale x 1 x i32>,
656   <vscale x 1 x i32>,
657   i32,
658   <vscale x 1 x i1>,
659   iXLen,
660   iXLen)
662 define <vscale x 1 x i32> @intrinsic_vslide1up_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, iXLen %4) nounwind {
663 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv1i32_nxv1i32_i32:
664 ; CHECK:       # %bb.0: # %entry
665 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu
666 ; CHECK-NEXT:    vslide1up.vx v8, v9, a0, v0.t
667 ; CHECK-NEXT:    ret
668 entry:
669   %a = call <vscale x 1 x i32> @llvm.riscv.vslide1up.mask.nxv1i32.i32(
670     <vscale x 1 x i32> %0,
671     <vscale x 1 x i32> %1,
672     i32 %2,
673     <vscale x 1 x i1> %3,
674     iXLen %4, iXLen 1)
676   ret <vscale x 1 x i32> %a
679 declare <vscale x 2 x i32> @llvm.riscv.vslide1up.nxv2i32.i32(
680   <vscale x 2 x i32>,
681   <vscale x 2 x i32>,
682   i32,
683   iXLen)
685 define <vscale x 2 x i32> @intrinsic_vslide1up_vx_nxv2i32_nxv2i32_i32(<vscale x 2 x i32> %0, i32 %1, iXLen %2) nounwind {
686 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv2i32_nxv2i32_i32:
687 ; CHECK:       # %bb.0: # %entry
688 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
689 ; CHECK-NEXT:    vslide1up.vx v9, v8, a0
690 ; CHECK-NEXT:    vmv.v.v v8, v9
691 ; CHECK-NEXT:    ret
692 entry:
693   %a = call <vscale x 2 x i32> @llvm.riscv.vslide1up.nxv2i32.i32(
694     <vscale x 2 x i32> undef,
695     <vscale x 2 x i32> %0,
696     i32 %1,
697     iXLen %2)
699   ret <vscale x 2 x i32> %a
702 declare <vscale x 2 x i32> @llvm.riscv.vslide1up.mask.nxv2i32.i32(
703   <vscale x 2 x i32>,
704   <vscale x 2 x i32>,
705   i32,
706   <vscale x 2 x i1>,
707   iXLen,
708   iXLen)
710 define <vscale x 2 x i32> @intrinsic_vslide1up_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, iXLen %4) nounwind {
711 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv2i32_nxv2i32_i32:
712 ; CHECK:       # %bb.0: # %entry
713 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu
714 ; CHECK-NEXT:    vslide1up.vx v8, v9, a0, v0.t
715 ; CHECK-NEXT:    ret
716 entry:
717   %a = call <vscale x 2 x i32> @llvm.riscv.vslide1up.mask.nxv2i32.i32(
718     <vscale x 2 x i32> %0,
719     <vscale x 2 x i32> %1,
720     i32 %2,
721     <vscale x 2 x i1> %3,
722     iXLen %4, iXLen 1)
724   ret <vscale x 2 x i32> %a
727 declare <vscale x 4 x i32> @llvm.riscv.vslide1up.nxv4i32.i32(
728   <vscale x 4 x i32>,
729   <vscale x 4 x i32>,
730   i32,
731   iXLen)
733 define <vscale x 4 x i32> @intrinsic_vslide1up_vx_nxv4i32_nxv4i32_i32(<vscale x 4 x i32> %0, i32 %1, iXLen %2) nounwind {
734 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv4i32_nxv4i32_i32:
735 ; CHECK:       # %bb.0: # %entry
736 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
737 ; CHECK-NEXT:    vslide1up.vx v10, v8, a0
738 ; CHECK-NEXT:    vmv.v.v v8, v10
739 ; CHECK-NEXT:    ret
740 entry:
741   %a = call <vscale x 4 x i32> @llvm.riscv.vslide1up.nxv4i32.i32(
742     <vscale x 4 x i32> undef,
743     <vscale x 4 x i32> %0,
744     i32 %1,
745     iXLen %2)
747   ret <vscale x 4 x i32> %a
750 declare <vscale x 4 x i32> @llvm.riscv.vslide1up.mask.nxv4i32.i32(
751   <vscale x 4 x i32>,
752   <vscale x 4 x i32>,
753   i32,
754   <vscale x 4 x i1>,
755   iXLen,
756   iXLen)
758 define <vscale x 4 x i32> @intrinsic_vslide1up_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, iXLen %4) nounwind {
759 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv4i32_nxv4i32_i32:
760 ; CHECK:       # %bb.0: # %entry
761 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu
762 ; CHECK-NEXT:    vslide1up.vx v8, v10, a0, v0.t
763 ; CHECK-NEXT:    ret
764 entry:
765   %a = call <vscale x 4 x i32> @llvm.riscv.vslide1up.mask.nxv4i32.i32(
766     <vscale x 4 x i32> %0,
767     <vscale x 4 x i32> %1,
768     i32 %2,
769     <vscale x 4 x i1> %3,
770     iXLen %4, iXLen 1)
772   ret <vscale x 4 x i32> %a
775 declare <vscale x 8 x i32> @llvm.riscv.vslide1up.nxv8i32.i32(
776   <vscale x 8 x i32>,
777   <vscale x 8 x i32>,
778   i32,
779   iXLen)
781 define <vscale x 8 x i32> @intrinsic_vslide1up_vx_nxv8i32_nxv8i32_i32(<vscale x 8 x i32> %0, i32 %1, iXLen %2) nounwind {
782 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv8i32_nxv8i32_i32:
783 ; CHECK:       # %bb.0: # %entry
784 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
785 ; CHECK-NEXT:    vslide1up.vx v12, v8, a0
786 ; CHECK-NEXT:    vmv.v.v v8, v12
787 ; CHECK-NEXT:    ret
788 entry:
789   %a = call <vscale x 8 x i32> @llvm.riscv.vslide1up.nxv8i32.i32(
790     <vscale x 8 x i32> undef,
791     <vscale x 8 x i32> %0,
792     i32 %1,
793     iXLen %2)
795   ret <vscale x 8 x i32> %a
798 declare <vscale x 8 x i32> @llvm.riscv.vslide1up.mask.nxv8i32.i32(
799   <vscale x 8 x i32>,
800   <vscale x 8 x i32>,
801   i32,
802   <vscale x 8 x i1>,
803   iXLen,
804   iXLen)
806 define <vscale x 8 x i32> @intrinsic_vslide1up_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, iXLen %4) nounwind {
807 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv8i32_nxv8i32_i32:
808 ; CHECK:       # %bb.0: # %entry
809 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, mu
810 ; CHECK-NEXT:    vslide1up.vx v8, v12, a0, v0.t
811 ; CHECK-NEXT:    ret
812 entry:
813   %a = call <vscale x 8 x i32> @llvm.riscv.vslide1up.mask.nxv8i32.i32(
814     <vscale x 8 x i32> %0,
815     <vscale x 8 x i32> %1,
816     i32 %2,
817     <vscale x 8 x i1> %3,
818     iXLen %4, iXLen 1)
820   ret <vscale x 8 x i32> %a
823 declare <vscale x 16 x i32> @llvm.riscv.vslide1up.nxv16i32.i32(
824   <vscale x 16 x i32>,
825   <vscale x 16 x i32>,
826   i32,
827   iXLen)
829 define <vscale x 16 x i32> @intrinsic_vslide1up_vx_nxv16i32_nxv16i32_i32(<vscale x 16 x i32> %0, i32 %1, iXLen %2) nounwind {
830 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv16i32_nxv16i32_i32:
831 ; CHECK:       # %bb.0: # %entry
832 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
833 ; CHECK-NEXT:    vslide1up.vx v16, v8, a0
834 ; CHECK-NEXT:    vmv.v.v v8, v16
835 ; CHECK-NEXT:    ret
836 entry:
837   %a = call <vscale x 16 x i32> @llvm.riscv.vslide1up.nxv16i32.i32(
838     <vscale x 16 x i32> undef,
839     <vscale x 16 x i32> %0,
840     i32 %1,
841     iXLen %2)
843   ret <vscale x 16 x i32> %a
846 declare <vscale x 16 x i32> @llvm.riscv.vslide1up.mask.nxv16i32.i32(
847   <vscale x 16 x i32>,
848   <vscale x 16 x i32>,
849   i32,
850   <vscale x 16 x i1>,
851   iXLen,
852   iXLen)
854 define <vscale x 16 x i32> @intrinsic_vslide1up_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, iXLen %4) nounwind {
855 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv16i32_nxv16i32_i32:
856 ; CHECK:       # %bb.0: # %entry
857 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
858 ; CHECK-NEXT:    vslide1up.vx v8, v16, a0, v0.t
859 ; CHECK-NEXT:    ret
860 entry:
861   %a = call <vscale x 16 x i32> @llvm.riscv.vslide1up.mask.nxv16i32.i32(
862     <vscale x 16 x i32> %0,
863     <vscale x 16 x i32> %1,
864     i32 %2,
865     <vscale x 16 x i1> %3,
866     iXLen %4, iXLen 1)
868   ret <vscale x 16 x i32> %a
871 declare <vscale x 1 x i64> @llvm.riscv.vslide1up.nxv1i64.i64(
872   <vscale x 1 x i64>,
873   <vscale x 1 x i64>,
874   i64,
875   iXLen)
877 define <vscale x 1 x i64> @intrinsic_vslide1up_vx_nxv1i64_nxv1i64_i64(<vscale x 1 x i64> %0, i64 %1, iXLen %2) nounwind {
878 ; RV32-LABEL: intrinsic_vslide1up_vx_nxv1i64_nxv1i64_i64:
879 ; RV32:       # %bb.0: # %entry
880 ; RV32-NEXT:    vsetvli a2, a2, e64, m1, ta, ma
881 ; RV32-NEXT:    slli a2, a2, 1
882 ; RV32-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
883 ; RV32-NEXT:    vslide1up.vx v9, v8, a1
884 ; RV32-NEXT:    vslide1up.vx v8, v9, a0
885 ; RV32-NEXT:    ret
887 ; RV64-LABEL: intrinsic_vslide1up_vx_nxv1i64_nxv1i64_i64:
888 ; RV64:       # %bb.0: # %entry
889 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
890 ; RV64-NEXT:    vslide1up.vx v9, v8, a0
891 ; RV64-NEXT:    vmv.v.v v8, v9
892 ; RV64-NEXT:    ret
893 entry:
894   %a = call <vscale x 1 x i64> @llvm.riscv.vslide1up.nxv1i64.i64(
895     <vscale x 1 x i64> undef,
896     <vscale x 1 x i64> %0,
897     i64 %1,
898     iXLen %2)
900   ret <vscale x 1 x i64> %a
903 declare <vscale x 1 x i64> @llvm.riscv.vslide1up.mask.nxv1i64.i64(
904   <vscale x 1 x i64>,
905   <vscale x 1 x i64>,
906   i64,
907   <vscale x 1 x i1>,
908   iXLen,
909   iXLen)
911 define <vscale x 1 x i64> @intrinsic_vslide1up_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, iXLen %4) nounwind {
912 ; RV32-LABEL: intrinsic_vslide1up_mask_vx_nxv1i64_nxv1i64_i64:
913 ; RV32:       # %bb.0: # %entry
914 ; RV32-NEXT:    vsetvli a3, a2, e64, m1, ta, ma
915 ; RV32-NEXT:    slli a3, a3, 1
916 ; RV32-NEXT:    vsetvli zero, a3, e32, m1, ta, ma
917 ; RV32-NEXT:    vslide1up.vx v10, v9, a1
918 ; RV32-NEXT:    vslide1up.vx v9, v10, a0
919 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
920 ; RV32-NEXT:    vmerge.vvm v8, v8, v9, v0
921 ; RV32-NEXT:    ret
923 ; RV64-LABEL: intrinsic_vslide1up_mask_vx_nxv1i64_nxv1i64_i64:
924 ; RV64:       # %bb.0: # %entry
925 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, mu
926 ; RV64-NEXT:    vslide1up.vx v8, v9, a0, v0.t
927 ; RV64-NEXT:    ret
928 entry:
929   %a = call <vscale x 1 x i64> @llvm.riscv.vslide1up.mask.nxv1i64.i64(
930     <vscale x 1 x i64> %0,
931     <vscale x 1 x i64> %1,
932     i64 %2,
933     <vscale x 1 x i1> %3,
934     iXLen %4, iXLen 1)
936   ret <vscale x 1 x i64> %a
939 declare <vscale x 2 x i64> @llvm.riscv.vslide1up.nxv2i64.i64(
940   <vscale x 2 x i64>,
941   <vscale x 2 x i64>,
942   i64,
943   iXLen)
945 define <vscale x 2 x i64> @intrinsic_vslide1up_vx_nxv2i64_nxv2i64_i64(<vscale x 2 x i64> %0, i64 %1, iXLen %2) nounwind {
946 ; RV32-LABEL: intrinsic_vslide1up_vx_nxv2i64_nxv2i64_i64:
947 ; RV32:       # %bb.0: # %entry
948 ; RV32-NEXT:    vsetvli a2, a2, e64, m2, ta, ma
949 ; RV32-NEXT:    slli a2, a2, 1
950 ; RV32-NEXT:    vsetvli zero, a2, e32, m2, ta, ma
951 ; RV32-NEXT:    vslide1up.vx v10, v8, a1
952 ; RV32-NEXT:    vslide1up.vx v8, v10, a0
953 ; RV32-NEXT:    ret
955 ; RV64-LABEL: intrinsic_vslide1up_vx_nxv2i64_nxv2i64_i64:
956 ; RV64:       # %bb.0: # %entry
957 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
958 ; RV64-NEXT:    vslide1up.vx v10, v8, a0
959 ; RV64-NEXT:    vmv.v.v v8, v10
960 ; RV64-NEXT:    ret
961 entry:
962   %a = call <vscale x 2 x i64> @llvm.riscv.vslide1up.nxv2i64.i64(
963     <vscale x 2 x i64> undef,
964     <vscale x 2 x i64> %0,
965     i64 %1,
966     iXLen %2)
968   ret <vscale x 2 x i64> %a
971 declare <vscale x 2 x i64> @llvm.riscv.vslide1up.mask.nxv2i64.i64(
972   <vscale x 2 x i64>,
973   <vscale x 2 x i64>,
974   i64,
975   <vscale x 2 x i1>,
976   iXLen,
977   iXLen)
979 define <vscale x 2 x i64> @intrinsic_vslide1up_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, iXLen %4) nounwind {
980 ; RV32-LABEL: intrinsic_vslide1up_mask_vx_nxv2i64_nxv2i64_i64:
981 ; RV32:       # %bb.0: # %entry
982 ; RV32-NEXT:    vsetvli a3, a2, e64, m2, ta, ma
983 ; RV32-NEXT:    slli a3, a3, 1
984 ; RV32-NEXT:    vsetvli zero, a3, e32, m2, ta, ma
985 ; RV32-NEXT:    vslide1up.vx v12, v10, a1
986 ; RV32-NEXT:    vslide1up.vx v10, v12, a0
987 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
988 ; RV32-NEXT:    vmerge.vvm v8, v8, v10, v0
989 ; RV32-NEXT:    ret
991 ; RV64-LABEL: intrinsic_vslide1up_mask_vx_nxv2i64_nxv2i64_i64:
992 ; RV64:       # %bb.0: # %entry
993 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, mu
994 ; RV64-NEXT:    vslide1up.vx v8, v10, a0, v0.t
995 ; RV64-NEXT:    ret
996 entry:
997   %a = call <vscale x 2 x i64> @llvm.riscv.vslide1up.mask.nxv2i64.i64(
998     <vscale x 2 x i64> %0,
999     <vscale x 2 x i64> %1,
1000     i64 %2,
1001     <vscale x 2 x i1> %3,
1002     iXLen %4, iXLen 1)
1004   ret <vscale x 2 x i64> %a
1007 declare <vscale x 4 x i64> @llvm.riscv.vslide1up.nxv4i64.i64(
1008   <vscale x 4 x i64>,
1009   <vscale x 4 x i64>,
1010   i64,
1011   iXLen)
1013 define <vscale x 4 x i64> @intrinsic_vslide1up_vx_nxv4i64_nxv4i64_i64(<vscale x 4 x i64> %0, i64 %1, iXLen %2) nounwind {
1014 ; RV32-LABEL: intrinsic_vslide1up_vx_nxv4i64_nxv4i64_i64:
1015 ; RV32:       # %bb.0: # %entry
1016 ; RV32-NEXT:    vsetvli a2, a2, e64, m4, ta, ma
1017 ; RV32-NEXT:    slli a2, a2, 1
1018 ; RV32-NEXT:    vsetvli zero, a2, e32, m4, ta, ma
1019 ; RV32-NEXT:    vslide1up.vx v12, v8, a1
1020 ; RV32-NEXT:    vslide1up.vx v8, v12, a0
1021 ; RV32-NEXT:    ret
1023 ; RV64-LABEL: intrinsic_vslide1up_vx_nxv4i64_nxv4i64_i64:
1024 ; RV64:       # %bb.0: # %entry
1025 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1026 ; RV64-NEXT:    vslide1up.vx v12, v8, a0
1027 ; RV64-NEXT:    vmv.v.v v8, v12
1028 ; RV64-NEXT:    ret
1029 entry:
1030   %a = call <vscale x 4 x i64> @llvm.riscv.vslide1up.nxv4i64.i64(
1031     <vscale x 4 x i64> undef,
1032     <vscale x 4 x i64> %0,
1033     i64 %1,
1034     iXLen %2)
1036   ret <vscale x 4 x i64> %a
1039 declare <vscale x 4 x i64> @llvm.riscv.vslide1up.mask.nxv4i64.i64(
1040   <vscale x 4 x i64>,
1041   <vscale x 4 x i64>,
1042   i64,
1043   <vscale x 4 x i1>,
1044   iXLen,
1045   iXLen)
1047 define <vscale x 4 x i64> @intrinsic_vslide1up_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, iXLen %4) nounwind {
1048 ; RV32-LABEL: intrinsic_vslide1up_mask_vx_nxv4i64_nxv4i64_i64:
1049 ; RV32:       # %bb.0: # %entry
1050 ; RV32-NEXT:    vsetvli a3, a2, e64, m4, ta, ma
1051 ; RV32-NEXT:    slli a3, a3, 1
1052 ; RV32-NEXT:    vsetvli zero, a3, e32, m4, ta, ma
1053 ; RV32-NEXT:    vslide1up.vx v16, v12, a1
1054 ; RV32-NEXT:    vslide1up.vx v12, v16, a0
1055 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1056 ; RV32-NEXT:    vmerge.vvm v8, v8, v12, v0
1057 ; RV32-NEXT:    ret
1059 ; RV64-LABEL: intrinsic_vslide1up_mask_vx_nxv4i64_nxv4i64_i64:
1060 ; RV64:       # %bb.0: # %entry
1061 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, mu
1062 ; RV64-NEXT:    vslide1up.vx v8, v12, a0, v0.t
1063 ; RV64-NEXT:    ret
1064 entry:
1065   %a = call <vscale x 4 x i64> @llvm.riscv.vslide1up.mask.nxv4i64.i64(
1066     <vscale x 4 x i64> %0,
1067     <vscale x 4 x i64> %1,
1068     i64 %2,
1069     <vscale x 4 x i1> %3,
1070     iXLen %4, iXLen 1)
1072   ret <vscale x 4 x i64> %a
1075 declare <vscale x 8 x i64> @llvm.riscv.vslide1up.nxv8i64.i64(
1076   <vscale x 8 x i64>,
1077   <vscale x 8 x i64>,
1078   i64,
1079   iXLen)
1081 define <vscale x 8 x i64> @intrinsic_vslide1up_vx_nxv8i64_nxv8i64_i64(<vscale x 8 x i64> %0, i64 %1, iXLen %2) nounwind {
1082 ; RV32-LABEL: intrinsic_vslide1up_vx_nxv8i64_nxv8i64_i64:
1083 ; RV32:       # %bb.0: # %entry
1084 ; RV32-NEXT:    vsetvli a2, a2, e64, m8, ta, ma
1085 ; RV32-NEXT:    slli a2, a2, 1
1086 ; RV32-NEXT:    vsetvli zero, a2, e32, m8, ta, ma
1087 ; RV32-NEXT:    vslide1up.vx v16, v8, a1
1088 ; RV32-NEXT:    vslide1up.vx v8, v16, a0
1089 ; RV32-NEXT:    ret
1091 ; RV64-LABEL: intrinsic_vslide1up_vx_nxv8i64_nxv8i64_i64:
1092 ; RV64:       # %bb.0: # %entry
1093 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
1094 ; RV64-NEXT:    vslide1up.vx v16, v8, a0
1095 ; RV64-NEXT:    vmv.v.v v8, v16
1096 ; RV64-NEXT:    ret
1097 entry:
1098   %a = call <vscale x 8 x i64> @llvm.riscv.vslide1up.nxv8i64.i64(
1099     <vscale x 8 x i64> undef,
1100     <vscale x 8 x i64> %0,
1101     i64 %1,
1102     iXLen %2)
1104   ret <vscale x 8 x i64> %a
1107 declare <vscale x 8 x i64> @llvm.riscv.vslide1up.mask.nxv8i64.i64(
1108   <vscale x 8 x i64>,
1109   <vscale x 8 x i64>,
1110   i64,
1111   <vscale x 8 x i1>,
1112   iXLen,
1113   iXLen)
1115 define <vscale x 8 x i64> @intrinsic_vslide1up_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, iXLen %4) nounwind {
1116 ; RV32-LABEL: intrinsic_vslide1up_mask_vx_nxv8i64_nxv8i64_i64:
1117 ; RV32:       # %bb.0: # %entry
1118 ; RV32-NEXT:    vsetvli a3, a2, e64, m8, ta, ma
1119 ; RV32-NEXT:    slli a3, a3, 1
1120 ; RV32-NEXT:    vsetvli zero, a3, e32, m8, ta, ma
1121 ; RV32-NEXT:    vslide1up.vx v24, v16, a1
1122 ; RV32-NEXT:    vslide1up.vx v16, v24, a0
1123 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
1124 ; RV32-NEXT:    vmerge.vvm v8, v8, v16, v0
1125 ; RV32-NEXT:    ret
1127 ; RV64-LABEL: intrinsic_vslide1up_mask_vx_nxv8i64_nxv8i64_i64:
1128 ; RV64:       # %bb.0: # %entry
1129 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
1130 ; RV64-NEXT:    vslide1up.vx v8, v16, a0, v0.t
1131 ; RV64-NEXT:    ret
1132 entry:
1133   %a = call <vscale x 8 x i64> @llvm.riscv.vslide1up.mask.nxv8i64.i64(
1134     <vscale x 8 x i64> %0,
1135     <vscale x 8 x i64> %1,
1136     i64 %2,
1137     <vscale x 8 x i1> %3,
1138     iXLen %4, iXLen 1)
1140   ret <vscale x 8 x i64> %a