Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vslide1up-rv64.ll
blob6c82149da5fd4a29f28676954646550b0dad720e
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.vslide1up.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_vslide1up_vx_nxv1i8_nxv1i8_i8(<vscale x 1 x i8> %0, i8 %1, i64 %2) nounwind {
12 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv1i8_nxv1i8_i8:
13 ; CHECK:       # %bb.0: # %entry
14 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
15 ; CHECK-NEXT:    vslide1up.vx v9, v8, a0
16 ; CHECK-NEXT:    vmv1r.v v8, v9
17 ; CHECK-NEXT:    ret
18 entry:
19   %a = call <vscale x 1 x i8> @llvm.riscv.vslide1up.nxv1i8.i8(
20     <vscale x 1 x i8> undef,
21     <vscale x 1 x i8> %0,
22     i8 %1,
23     i64 %2)
25   ret <vscale x 1 x i8> %a
28 declare <vscale x 1 x i8> @llvm.riscv.vslide1up.mask.nxv1i8.i8(
29   <vscale x 1 x i8>,
30   <vscale x 1 x i8>,
31   i8,
32   <vscale x 1 x i1>,
33   i64,
34   i64);
36 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, i64 %4) nounwind {
37 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv1i8_nxv1i8_i8:
38 ; CHECK:       # %bb.0: # %entry
39 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, mu
40 ; CHECK-NEXT:    vslide1up.vx v8, v9, a0, v0.t
41 ; CHECK-NEXT:    ret
42 entry:
43   %a = call <vscale x 1 x i8> @llvm.riscv.vslide1up.mask.nxv1i8.i8(
44     <vscale x 1 x i8> %0,
45     <vscale x 1 x i8> %1,
46     i8 %2,
47     <vscale x 1 x i1> %3,
48     i64 %4, i64 1)
50   ret <vscale x 1 x i8> %a
53 declare <vscale x 2 x i8> @llvm.riscv.vslide1up.nxv2i8.i8(
54   <vscale x 2 x i8>,
55   <vscale x 2 x i8>,
56   i8,
57   i64);
59 define <vscale x 2 x i8> @intrinsic_vslide1up_vx_nxv2i8_nxv2i8_i8(<vscale x 2 x i8> %0, i8 %1, i64 %2) nounwind {
60 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv2i8_nxv2i8_i8:
61 ; CHECK:       # %bb.0: # %entry
62 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
63 ; CHECK-NEXT:    vslide1up.vx v9, v8, a0
64 ; CHECK-NEXT:    vmv1r.v v8, v9
65 ; CHECK-NEXT:    ret
66 entry:
67   %a = call <vscale x 2 x i8> @llvm.riscv.vslide1up.nxv2i8.i8(
68     <vscale x 2 x i8> undef,
69     <vscale x 2 x i8> %0,
70     i8 %1,
71     i64 %2)
73   ret <vscale x 2 x i8> %a
76 declare <vscale x 2 x i8> @llvm.riscv.vslide1up.mask.nxv2i8.i8(
77   <vscale x 2 x i8>,
78   <vscale x 2 x i8>,
79   i8,
80   <vscale x 2 x i1>,
81   i64,
82   i64);
84 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, i64 %4) nounwind {
85 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv2i8_nxv2i8_i8:
86 ; CHECK:       # %bb.0: # %entry
87 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, mu
88 ; CHECK-NEXT:    vslide1up.vx v8, v9, a0, v0.t
89 ; CHECK-NEXT:    ret
90 entry:
91   %a = call <vscale x 2 x i8> @llvm.riscv.vslide1up.mask.nxv2i8.i8(
92     <vscale x 2 x i8> %0,
93     <vscale x 2 x i8> %1,
94     i8 %2,
95     <vscale x 2 x i1> %3,
96     i64 %4, i64 1)
98   ret <vscale x 2 x i8> %a
101 declare <vscale x 4 x i8> @llvm.riscv.vslide1up.nxv4i8.i8(
102   <vscale x 4 x i8>,
103   <vscale x 4 x i8>,
104   i8,
105   i64);
107 define <vscale x 4 x i8> @intrinsic_vslide1up_vx_nxv4i8_nxv4i8_i8(<vscale x 4 x i8> %0, i8 %1, i64 %2) nounwind {
108 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv4i8_nxv4i8_i8:
109 ; CHECK:       # %bb.0: # %entry
110 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
111 ; CHECK-NEXT:    vslide1up.vx v9, v8, a0
112 ; CHECK-NEXT:    vmv1r.v v8, v9
113 ; CHECK-NEXT:    ret
114 entry:
115   %a = call <vscale x 4 x i8> @llvm.riscv.vslide1up.nxv4i8.i8(
116     <vscale x 4 x i8> undef,
117     <vscale x 4 x i8> %0,
118     i8 %1,
119     i64 %2)
121   ret <vscale x 4 x i8> %a
124 declare <vscale x 4 x i8> @llvm.riscv.vslide1up.mask.nxv4i8.i8(
125   <vscale x 4 x i8>,
126   <vscale x 4 x i8>,
127   i8,
128   <vscale x 4 x i1>,
129   i64,
130   i64);
132 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, i64 %4) nounwind {
133 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv4i8_nxv4i8_i8:
134 ; CHECK:       # %bb.0: # %entry
135 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, mu
136 ; CHECK-NEXT:    vslide1up.vx v8, v9, a0, v0.t
137 ; CHECK-NEXT:    ret
138 entry:
139   %a = call <vscale x 4 x i8> @llvm.riscv.vslide1up.mask.nxv4i8.i8(
140     <vscale x 4 x i8> %0,
141     <vscale x 4 x i8> %1,
142     i8 %2,
143     <vscale x 4 x i1> %3,
144     i64 %4, i64 1)
146   ret <vscale x 4 x i8> %a
149 declare <vscale x 8 x i8> @llvm.riscv.vslide1up.nxv8i8.i8(
150   <vscale x 8 x i8>,
151   <vscale x 8 x i8>,
152   i8,
153   i64);
155 define <vscale x 8 x i8> @intrinsic_vslide1up_vx_nxv8i8_nxv8i8_i8(<vscale x 8 x i8> %0, i8 %1, i64 %2) nounwind {
156 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv8i8_nxv8i8_i8:
157 ; CHECK:       # %bb.0: # %entry
158 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
159 ; CHECK-NEXT:    vslide1up.vx v9, v8, a0
160 ; CHECK-NEXT:    vmv.v.v v8, v9
161 ; CHECK-NEXT:    ret
162 entry:
163   %a = call <vscale x 8 x i8> @llvm.riscv.vslide1up.nxv8i8.i8(
164     <vscale x 8 x i8> undef,
165     <vscale x 8 x i8> %0,
166     i8 %1,
167     i64 %2)
169   ret <vscale x 8 x i8> %a
172 declare <vscale x 8 x i8> @llvm.riscv.vslide1up.mask.nxv8i8.i8(
173   <vscale x 8 x i8>,
174   <vscale x 8 x i8>,
175   i8,
176   <vscale x 8 x i1>,
177   i64,
178   i64);
180 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, i64 %4) nounwind {
181 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv8i8_nxv8i8_i8:
182 ; CHECK:       # %bb.0: # %entry
183 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, mu
184 ; CHECK-NEXT:    vslide1up.vx v8, v9, a0, v0.t
185 ; CHECK-NEXT:    ret
186 entry:
187   %a = call <vscale x 8 x i8> @llvm.riscv.vslide1up.mask.nxv8i8.i8(
188     <vscale x 8 x i8> %0,
189     <vscale x 8 x i8> %1,
190     i8 %2,
191     <vscale x 8 x i1> %3,
192     i64 %4, i64 1)
194   ret <vscale x 8 x i8> %a
197 declare <vscale x 16 x i8> @llvm.riscv.vslide1up.nxv16i8.i8(
198   <vscale x 16 x i8>,
199   <vscale x 16 x i8>,
200   i8,
201   i64);
203 define <vscale x 16 x i8> @intrinsic_vslide1up_vx_nxv16i8_nxv16i8_i8(<vscale x 16 x i8> %0, i8 %1, i64 %2) nounwind {
204 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv16i8_nxv16i8_i8:
205 ; CHECK:       # %bb.0: # %entry
206 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
207 ; CHECK-NEXT:    vslide1up.vx v10, v8, a0
208 ; CHECK-NEXT:    vmv.v.v v8, v10
209 ; CHECK-NEXT:    ret
210 entry:
211   %a = call <vscale x 16 x i8> @llvm.riscv.vslide1up.nxv16i8.i8(
212     <vscale x 16 x i8> undef,
213     <vscale x 16 x i8> %0,
214     i8 %1,
215     i64 %2)
217   ret <vscale x 16 x i8> %a
220 declare <vscale x 16 x i8> @llvm.riscv.vslide1up.mask.nxv16i8.i8(
221   <vscale x 16 x i8>,
222   <vscale x 16 x i8>,
223   i8,
224   <vscale x 16 x i1>,
225   i64,
226   i64);
228 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, i64 %4) nounwind {
229 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv16i8_nxv16i8_i8:
230 ; CHECK:       # %bb.0: # %entry
231 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, mu
232 ; CHECK-NEXT:    vslide1up.vx v8, v10, a0, v0.t
233 ; CHECK-NEXT:    ret
234 entry:
235   %a = call <vscale x 16 x i8> @llvm.riscv.vslide1up.mask.nxv16i8.i8(
236     <vscale x 16 x i8> %0,
237     <vscale x 16 x i8> %1,
238     i8 %2,
239     <vscale x 16 x i1> %3,
240     i64 %4, i64 1)
242   ret <vscale x 16 x i8> %a
245 declare <vscale x 32 x i8> @llvm.riscv.vslide1up.nxv32i8.i8(
246   <vscale x 32 x i8>,
247   <vscale x 32 x i8>,
248   i8,
249   i64);
251 define <vscale x 32 x i8> @intrinsic_vslide1up_vx_nxv32i8_nxv32i8_i8(<vscale x 32 x i8> %0, i8 %1, i64 %2) nounwind {
252 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv32i8_nxv32i8_i8:
253 ; CHECK:       # %bb.0: # %entry
254 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
255 ; CHECK-NEXT:    vslide1up.vx v12, v8, a0
256 ; CHECK-NEXT:    vmv.v.v v8, v12
257 ; CHECK-NEXT:    ret
258 entry:
259   %a = call <vscale x 32 x i8> @llvm.riscv.vslide1up.nxv32i8.i8(
260     <vscale x 32 x i8> undef,
261     <vscale x 32 x i8> %0,
262     i8 %1,
263     i64 %2)
265   ret <vscale x 32 x i8> %a
268 declare <vscale x 32 x i8> @llvm.riscv.vslide1up.mask.nxv32i8.i8(
269   <vscale x 32 x i8>,
270   <vscale x 32 x i8>,
271   i8,
272   <vscale x 32 x i1>,
273   i64,
274   i64);
276 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, i64 %4) nounwind {
277 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv32i8_nxv32i8_i8:
278 ; CHECK:       # %bb.0: # %entry
279 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, mu
280 ; CHECK-NEXT:    vslide1up.vx v8, v12, a0, v0.t
281 ; CHECK-NEXT:    ret
282 entry:
283   %a = call <vscale x 32 x i8> @llvm.riscv.vslide1up.mask.nxv32i8.i8(
284     <vscale x 32 x i8> %0,
285     <vscale x 32 x i8> %1,
286     i8 %2,
287     <vscale x 32 x i1> %3,
288     i64 %4, i64 1)
290   ret <vscale x 32 x i8> %a
293 declare <vscale x 64 x i8> @llvm.riscv.vslide1up.nxv64i8.i8(
294   <vscale x 64 x i8>,
295   <vscale x 64 x i8>,
296   i8,
297   i64);
299 define <vscale x 64 x i8> @intrinsic_vslide1up_vx_nxv64i8_nxv64i8_i8(<vscale x 64 x i8> %0, i8 %1, i64 %2) nounwind {
300 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv64i8_nxv64i8_i8:
301 ; CHECK:       # %bb.0: # %entry
302 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
303 ; CHECK-NEXT:    vslide1up.vx v16, v8, a0
304 ; CHECK-NEXT:    vmv.v.v v8, v16
305 ; CHECK-NEXT:    ret
306 entry:
307   %a = call <vscale x 64 x i8> @llvm.riscv.vslide1up.nxv64i8.i8(
308     <vscale x 64 x i8> undef,
309     <vscale x 64 x i8> %0,
310     i8 %1,
311     i64 %2)
313   ret <vscale x 64 x i8> %a
316 declare <vscale x 64 x i8> @llvm.riscv.vslide1up.mask.nxv64i8.i8(
317   <vscale x 64 x i8>,
318   <vscale x 64 x i8>,
319   i8,
320   <vscale x 64 x i1>,
321   i64,
322   i64);
324 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, i64 %4) nounwind {
325 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv64i8_nxv64i8_i8:
326 ; CHECK:       # %bb.0: # %entry
327 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, mu
328 ; CHECK-NEXT:    vslide1up.vx v8, v16, a0, v0.t
329 ; CHECK-NEXT:    ret
330 entry:
331   %a = call <vscale x 64 x i8> @llvm.riscv.vslide1up.mask.nxv64i8.i8(
332     <vscale x 64 x i8> %0,
333     <vscale x 64 x i8> %1,
334     i8 %2,
335     <vscale x 64 x i1> %3,
336     i64 %4, i64 1)
338   ret <vscale x 64 x i8> %a
341 declare <vscale x 1 x i16> @llvm.riscv.vslide1up.nxv1i16.i16(
342   <vscale x 1 x i16>,
343   <vscale x 1 x i16>,
344   i16,
345   i64);
347 define <vscale x 1 x i16> @intrinsic_vslide1up_vx_nxv1i16_nxv1i16_i16(<vscale x 1 x i16> %0, i16 %1, i64 %2) nounwind {
348 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv1i16_nxv1i16_i16:
349 ; CHECK:       # %bb.0: # %entry
350 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
351 ; CHECK-NEXT:    vslide1up.vx v9, v8, a0
352 ; CHECK-NEXT:    vmv1r.v v8, v9
353 ; CHECK-NEXT:    ret
354 entry:
355   %a = call <vscale x 1 x i16> @llvm.riscv.vslide1up.nxv1i16.i16(
356     <vscale x 1 x i16> undef,
357     <vscale x 1 x i16> %0,
358     i16 %1,
359     i64 %2)
361   ret <vscale x 1 x i16> %a
364 declare <vscale x 1 x i16> @llvm.riscv.vslide1up.mask.nxv1i16.i16(
365   <vscale x 1 x i16>,
366   <vscale x 1 x i16>,
367   i16,
368   <vscale x 1 x i1>,
369   i64,
370   i64);
372 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, i64 %4) nounwind {
373 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv1i16_nxv1i16_i16:
374 ; CHECK:       # %bb.0: # %entry
375 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu
376 ; CHECK-NEXT:    vslide1up.vx v8, v9, a0, v0.t
377 ; CHECK-NEXT:    ret
378 entry:
379   %a = call <vscale x 1 x i16> @llvm.riscv.vslide1up.mask.nxv1i16.i16(
380     <vscale x 1 x i16> %0,
381     <vscale x 1 x i16> %1,
382     i16 %2,
383     <vscale x 1 x i1> %3,
384     i64 %4, i64 1)
386   ret <vscale x 1 x i16> %a
389 declare <vscale x 2 x i16> @llvm.riscv.vslide1up.nxv2i16.i16(
390   <vscale x 2 x i16>,
391   <vscale x 2 x i16>,
392   i16,
393   i64);
395 define <vscale x 2 x i16> @intrinsic_vslide1up_vx_nxv2i16_nxv2i16_i16(<vscale x 2 x i16> %0, i16 %1, i64 %2) nounwind {
396 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv2i16_nxv2i16_i16:
397 ; CHECK:       # %bb.0: # %entry
398 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
399 ; CHECK-NEXT:    vslide1up.vx v9, v8, a0
400 ; CHECK-NEXT:    vmv1r.v v8, v9
401 ; CHECK-NEXT:    ret
402 entry:
403   %a = call <vscale x 2 x i16> @llvm.riscv.vslide1up.nxv2i16.i16(
404     <vscale x 2 x i16> undef,
405     <vscale x 2 x i16> %0,
406     i16 %1,
407     i64 %2)
409   ret <vscale x 2 x i16> %a
412 declare <vscale x 2 x i16> @llvm.riscv.vslide1up.mask.nxv2i16.i16(
413   <vscale x 2 x i16>,
414   <vscale x 2 x i16>,
415   i16,
416   <vscale x 2 x i1>,
417   i64,
418   i64);
420 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, i64 %4) nounwind {
421 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv2i16_nxv2i16_i16:
422 ; CHECK:       # %bb.0: # %entry
423 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu
424 ; CHECK-NEXT:    vslide1up.vx v8, v9, a0, v0.t
425 ; CHECK-NEXT:    ret
426 entry:
427   %a = call <vscale x 2 x i16> @llvm.riscv.vslide1up.mask.nxv2i16.i16(
428     <vscale x 2 x i16> %0,
429     <vscale x 2 x i16> %1,
430     i16 %2,
431     <vscale x 2 x i1> %3,
432     i64 %4, i64 1)
434   ret <vscale x 2 x i16> %a
437 declare <vscale x 4 x i16> @llvm.riscv.vslide1up.nxv4i16.i16(
438   <vscale x 4 x i16>,
439   <vscale x 4 x i16>,
440   i16,
441   i64);
443 define <vscale x 4 x i16> @intrinsic_vslide1up_vx_nxv4i16_nxv4i16_i16(<vscale x 4 x i16> %0, i16 %1, i64 %2) nounwind {
444 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv4i16_nxv4i16_i16:
445 ; CHECK:       # %bb.0: # %entry
446 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
447 ; CHECK-NEXT:    vslide1up.vx v9, v8, a0
448 ; CHECK-NEXT:    vmv.v.v v8, v9
449 ; CHECK-NEXT:    ret
450 entry:
451   %a = call <vscale x 4 x i16> @llvm.riscv.vslide1up.nxv4i16.i16(
452     <vscale x 4 x i16> undef,
453     <vscale x 4 x i16> %0,
454     i16 %1,
455     i64 %2)
457   ret <vscale x 4 x i16> %a
460 declare <vscale x 4 x i16> @llvm.riscv.vslide1up.mask.nxv4i16.i16(
461   <vscale x 4 x i16>,
462   <vscale x 4 x i16>,
463   i16,
464   <vscale x 4 x i1>,
465   i64,
466   i64);
468 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, i64 %4) nounwind {
469 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv4i16_nxv4i16_i16:
470 ; CHECK:       # %bb.0: # %entry
471 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu
472 ; CHECK-NEXT:    vslide1up.vx v8, v9, a0, v0.t
473 ; CHECK-NEXT:    ret
474 entry:
475   %a = call <vscale x 4 x i16> @llvm.riscv.vslide1up.mask.nxv4i16.i16(
476     <vscale x 4 x i16> %0,
477     <vscale x 4 x i16> %1,
478     i16 %2,
479     <vscale x 4 x i1> %3,
480     i64 %4, i64 1)
482   ret <vscale x 4 x i16> %a
485 declare <vscale x 8 x i16> @llvm.riscv.vslide1up.nxv8i16.i16(
486   <vscale x 8 x i16>,
487   <vscale x 8 x i16>,
488   i16,
489   i64);
491 define <vscale x 8 x i16> @intrinsic_vslide1up_vx_nxv8i16_nxv8i16_i16(<vscale x 8 x i16> %0, i16 %1, i64 %2) nounwind {
492 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv8i16_nxv8i16_i16:
493 ; CHECK:       # %bb.0: # %entry
494 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
495 ; CHECK-NEXT:    vslide1up.vx v10, v8, a0
496 ; CHECK-NEXT:    vmv.v.v v8, v10
497 ; CHECK-NEXT:    ret
498 entry:
499   %a = call <vscale x 8 x i16> @llvm.riscv.vslide1up.nxv8i16.i16(
500     <vscale x 8 x i16> undef,
501     <vscale x 8 x i16> %0,
502     i16 %1,
503     i64 %2)
505   ret <vscale x 8 x i16> %a
508 declare <vscale x 8 x i16> @llvm.riscv.vslide1up.mask.nxv8i16.i16(
509   <vscale x 8 x i16>,
510   <vscale x 8 x i16>,
511   i16,
512   <vscale x 8 x i1>,
513   i64,
514   i64);
516 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, i64 %4) nounwind {
517 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv8i16_nxv8i16_i16:
518 ; CHECK:       # %bb.0: # %entry
519 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu
520 ; CHECK-NEXT:    vslide1up.vx v8, v10, a0, v0.t
521 ; CHECK-NEXT:    ret
522 entry:
523   %a = call <vscale x 8 x i16> @llvm.riscv.vslide1up.mask.nxv8i16.i16(
524     <vscale x 8 x i16> %0,
525     <vscale x 8 x i16> %1,
526     i16 %2,
527     <vscale x 8 x i1> %3,
528     i64 %4, i64 1)
530   ret <vscale x 8 x i16> %a
533 declare <vscale x 16 x i16> @llvm.riscv.vslide1up.nxv16i16.i16(
534   <vscale x 16 x i16>,
535   <vscale x 16 x i16>,
536   i16,
537   i64);
539 define <vscale x 16 x i16> @intrinsic_vslide1up_vx_nxv16i16_nxv16i16_i16(<vscale x 16 x i16> %0, i16 %1, i64 %2) nounwind {
540 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv16i16_nxv16i16_i16:
541 ; CHECK:       # %bb.0: # %entry
542 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
543 ; CHECK-NEXT:    vslide1up.vx v12, v8, a0
544 ; CHECK-NEXT:    vmv.v.v v8, v12
545 ; CHECK-NEXT:    ret
546 entry:
547   %a = call <vscale x 16 x i16> @llvm.riscv.vslide1up.nxv16i16.i16(
548     <vscale x 16 x i16> undef,
549     <vscale x 16 x i16> %0,
550     i16 %1,
551     i64 %2)
553   ret <vscale x 16 x i16> %a
556 declare <vscale x 16 x i16> @llvm.riscv.vslide1up.mask.nxv16i16.i16(
557   <vscale x 16 x i16>,
558   <vscale x 16 x i16>,
559   i16,
560   <vscale x 16 x i1>,
561   i64,
562   i64);
564 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, i64 %4) nounwind {
565 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv16i16_nxv16i16_i16:
566 ; CHECK:       # %bb.0: # %entry
567 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, mu
568 ; CHECK-NEXT:    vslide1up.vx v8, v12, a0, v0.t
569 ; CHECK-NEXT:    ret
570 entry:
571   %a = call <vscale x 16 x i16> @llvm.riscv.vslide1up.mask.nxv16i16.i16(
572     <vscale x 16 x i16> %0,
573     <vscale x 16 x i16> %1,
574     i16 %2,
575     <vscale x 16 x i1> %3,
576     i64 %4, i64 1)
578   ret <vscale x 16 x i16> %a
581 declare <vscale x 32 x i16> @llvm.riscv.vslide1up.nxv32i16.i16(
582   <vscale x 32 x i16>,
583   <vscale x 32 x i16>,
584   i16,
585   i64);
587 define <vscale x 32 x i16> @intrinsic_vslide1up_vx_nxv32i16_nxv32i16_i16(<vscale x 32 x i16> %0, i16 %1, i64 %2) nounwind {
588 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv32i16_nxv32i16_i16:
589 ; CHECK:       # %bb.0: # %entry
590 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
591 ; CHECK-NEXT:    vslide1up.vx v16, v8, a0
592 ; CHECK-NEXT:    vmv.v.v v8, v16
593 ; CHECK-NEXT:    ret
594 entry:
595   %a = call <vscale x 32 x i16> @llvm.riscv.vslide1up.nxv32i16.i16(
596     <vscale x 32 x i16> undef,
597     <vscale x 32 x i16> %0,
598     i16 %1,
599     i64 %2)
601   ret <vscale x 32 x i16> %a
604 declare <vscale x 32 x i16> @llvm.riscv.vslide1up.mask.nxv32i16.i16(
605   <vscale x 32 x i16>,
606   <vscale x 32 x i16>,
607   i16,
608   <vscale x 32 x i1>,
609   i64,
610   i64);
612 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, i64 %4) nounwind {
613 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv32i16_nxv32i16_i16:
614 ; CHECK:       # %bb.0: # %entry
615 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
616 ; CHECK-NEXT:    vslide1up.vx v8, v16, a0, v0.t
617 ; CHECK-NEXT:    ret
618 entry:
619   %a = call <vscale x 32 x i16> @llvm.riscv.vslide1up.mask.nxv32i16.i16(
620     <vscale x 32 x i16> %0,
621     <vscale x 32 x i16> %1,
622     i16 %2,
623     <vscale x 32 x i1> %3,
624     i64 %4, i64 1)
626   ret <vscale x 32 x i16> %a
629 declare <vscale x 1 x i32> @llvm.riscv.vslide1up.nxv1i32.i32(
630   <vscale x 1 x i32>,
631   <vscale x 1 x i32>,
632   i32,
633   i64);
635 define <vscale x 1 x i32> @intrinsic_vslide1up_vx_nxv1i32_nxv1i32_i32(<vscale x 1 x i32> %0, i32 %1, i64 %2) nounwind {
636 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv1i32_nxv1i32_i32:
637 ; CHECK:       # %bb.0: # %entry
638 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
639 ; CHECK-NEXT:    vslide1up.vx v9, v8, a0
640 ; CHECK-NEXT:    vmv1r.v v8, v9
641 ; CHECK-NEXT:    ret
642 entry:
643   %a = call <vscale x 1 x i32> @llvm.riscv.vslide1up.nxv1i32.i32(
644     <vscale x 1 x i32> undef,
645     <vscale x 1 x i32> %0,
646     i32 %1,
647     i64 %2)
649   ret <vscale x 1 x i32> %a
652 declare <vscale x 1 x i32> @llvm.riscv.vslide1up.mask.nxv1i32.i32(
653   <vscale x 1 x i32>,
654   <vscale x 1 x i32>,
655   i32,
656   <vscale x 1 x i1>,
657   i64,
658   i64);
660 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, i64 %4) nounwind {
661 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv1i32_nxv1i32_i32:
662 ; CHECK:       # %bb.0: # %entry
663 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu
664 ; CHECK-NEXT:    vslide1up.vx v8, v9, a0, v0.t
665 ; CHECK-NEXT:    ret
666 entry:
667   %a = call <vscale x 1 x i32> @llvm.riscv.vslide1up.mask.nxv1i32.i32(
668     <vscale x 1 x i32> %0,
669     <vscale x 1 x i32> %1,
670     i32 %2,
671     <vscale x 1 x i1> %3,
672     i64 %4, i64 1)
674   ret <vscale x 1 x i32> %a
677 declare <vscale x 2 x i32> @llvm.riscv.vslide1up.nxv2i32.i32(
678   <vscale x 2 x i32>,
679   <vscale x 2 x i32>,
680   i32,
681   i64);
683 define <vscale x 2 x i32> @intrinsic_vslide1up_vx_nxv2i32_nxv2i32_i32(<vscale x 2 x i32> %0, i32 %1, i64 %2) nounwind {
684 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv2i32_nxv2i32_i32:
685 ; CHECK:       # %bb.0: # %entry
686 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
687 ; CHECK-NEXT:    vslide1up.vx v9, v8, a0
688 ; CHECK-NEXT:    vmv.v.v v8, v9
689 ; CHECK-NEXT:    ret
690 entry:
691   %a = call <vscale x 2 x i32> @llvm.riscv.vslide1up.nxv2i32.i32(
692     <vscale x 2 x i32> undef,
693     <vscale x 2 x i32> %0,
694     i32 %1,
695     i64 %2)
697   ret <vscale x 2 x i32> %a
700 declare <vscale x 2 x i32> @llvm.riscv.vslide1up.mask.nxv2i32.i32(
701   <vscale x 2 x i32>,
702   <vscale x 2 x i32>,
703   i32,
704   <vscale x 2 x i1>,
705   i64,
706   i64);
708 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, i64 %4) nounwind {
709 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv2i32_nxv2i32_i32:
710 ; CHECK:       # %bb.0: # %entry
711 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu
712 ; CHECK-NEXT:    vslide1up.vx v8, v9, a0, v0.t
713 ; CHECK-NEXT:    ret
714 entry:
715   %a = call <vscale x 2 x i32> @llvm.riscv.vslide1up.mask.nxv2i32.i32(
716     <vscale x 2 x i32> %0,
717     <vscale x 2 x i32> %1,
718     i32 %2,
719     <vscale x 2 x i1> %3,
720     i64 %4, i64 1)
722   ret <vscale x 2 x i32> %a
725 declare <vscale x 4 x i32> @llvm.riscv.vslide1up.nxv4i32.i32(
726   <vscale x 4 x i32>,
727   <vscale x 4 x i32>,
728   i32,
729   i64);
731 define <vscale x 4 x i32> @intrinsic_vslide1up_vx_nxv4i32_nxv4i32_i32(<vscale x 4 x i32> %0, i32 %1, i64 %2) nounwind {
732 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv4i32_nxv4i32_i32:
733 ; CHECK:       # %bb.0: # %entry
734 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
735 ; CHECK-NEXT:    vslide1up.vx v10, v8, a0
736 ; CHECK-NEXT:    vmv.v.v v8, v10
737 ; CHECK-NEXT:    ret
738 entry:
739   %a = call <vscale x 4 x i32> @llvm.riscv.vslide1up.nxv4i32.i32(
740     <vscale x 4 x i32> undef,
741     <vscale x 4 x i32> %0,
742     i32 %1,
743     i64 %2)
745   ret <vscale x 4 x i32> %a
748 declare <vscale x 4 x i32> @llvm.riscv.vslide1up.mask.nxv4i32.i32(
749   <vscale x 4 x i32>,
750   <vscale x 4 x i32>,
751   i32,
752   <vscale x 4 x i1>,
753   i64,
754   i64);
756 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, i64 %4) nounwind {
757 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv4i32_nxv4i32_i32:
758 ; CHECK:       # %bb.0: # %entry
759 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu
760 ; CHECK-NEXT:    vslide1up.vx v8, v10, a0, v0.t
761 ; CHECK-NEXT:    ret
762 entry:
763   %a = call <vscale x 4 x i32> @llvm.riscv.vslide1up.mask.nxv4i32.i32(
764     <vscale x 4 x i32> %0,
765     <vscale x 4 x i32> %1,
766     i32 %2,
767     <vscale x 4 x i1> %3,
768     i64 %4, i64 1)
770   ret <vscale x 4 x i32> %a
773 declare <vscale x 8 x i32> @llvm.riscv.vslide1up.nxv8i32.i32(
774   <vscale x 8 x i32>,
775   <vscale x 8 x i32>,
776   i32,
777   i64);
779 define <vscale x 8 x i32> @intrinsic_vslide1up_vx_nxv8i32_nxv8i32_i32(<vscale x 8 x i32> %0, i32 %1, i64 %2) nounwind {
780 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv8i32_nxv8i32_i32:
781 ; CHECK:       # %bb.0: # %entry
782 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
783 ; CHECK-NEXT:    vslide1up.vx v12, v8, a0
784 ; CHECK-NEXT:    vmv.v.v v8, v12
785 ; CHECK-NEXT:    ret
786 entry:
787   %a = call <vscale x 8 x i32> @llvm.riscv.vslide1up.nxv8i32.i32(
788     <vscale x 8 x i32> undef,
789     <vscale x 8 x i32> %0,
790     i32 %1,
791     i64 %2)
793   ret <vscale x 8 x i32> %a
796 declare <vscale x 8 x i32> @llvm.riscv.vslide1up.mask.nxv8i32.i32(
797   <vscale x 8 x i32>,
798   <vscale x 8 x i32>,
799   i32,
800   <vscale x 8 x i1>,
801   i64,
802   i64);
804 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, i64 %4) nounwind {
805 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv8i32_nxv8i32_i32:
806 ; CHECK:       # %bb.0: # %entry
807 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, mu
808 ; CHECK-NEXT:    vslide1up.vx v8, v12, a0, v0.t
809 ; CHECK-NEXT:    ret
810 entry:
811   %a = call <vscale x 8 x i32> @llvm.riscv.vslide1up.mask.nxv8i32.i32(
812     <vscale x 8 x i32> %0,
813     <vscale x 8 x i32> %1,
814     i32 %2,
815     <vscale x 8 x i1> %3,
816     i64 %4, i64 1)
818   ret <vscale x 8 x i32> %a
821 declare <vscale x 16 x i32> @llvm.riscv.vslide1up.nxv16i32.i32(
822   <vscale x 16 x i32>,
823   <vscale x 16 x i32>,
824   i32,
825   i64);
827 define <vscale x 16 x i32> @intrinsic_vslide1up_vx_nxv16i32_nxv16i32_i32(<vscale x 16 x i32> %0, i32 %1, i64 %2) nounwind {
828 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv16i32_nxv16i32_i32:
829 ; CHECK:       # %bb.0: # %entry
830 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
831 ; CHECK-NEXT:    vslide1up.vx v16, v8, a0
832 ; CHECK-NEXT:    vmv.v.v v8, v16
833 ; CHECK-NEXT:    ret
834 entry:
835   %a = call <vscale x 16 x i32> @llvm.riscv.vslide1up.nxv16i32.i32(
836     <vscale x 16 x i32> undef,
837     <vscale x 16 x i32> %0,
838     i32 %1,
839     i64 %2)
841   ret <vscale x 16 x i32> %a
844 declare <vscale x 16 x i32> @llvm.riscv.vslide1up.mask.nxv16i32.i32(
845   <vscale x 16 x i32>,
846   <vscale x 16 x i32>,
847   i32,
848   <vscale x 16 x i1>,
849   i64,
850   i64);
852 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, i64 %4) nounwind {
853 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv16i32_nxv16i32_i32:
854 ; CHECK:       # %bb.0: # %entry
855 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
856 ; CHECK-NEXT:    vslide1up.vx v8, v16, a0, v0.t
857 ; CHECK-NEXT:    ret
858 entry:
859   %a = call <vscale x 16 x i32> @llvm.riscv.vslide1up.mask.nxv16i32.i32(
860     <vscale x 16 x i32> %0,
861     <vscale x 16 x i32> %1,
862     i32 %2,
863     <vscale x 16 x i1> %3,
864     i64 %4, i64 1)
866   ret <vscale x 16 x i32> %a
869 declare <vscale x 1 x i64> @llvm.riscv.vslide1up.nxv1i64.i64(
870   <vscale x 1 x i64>,
871   <vscale x 1 x i64>,
872   i64,
873   i64);
875 define <vscale x 1 x i64> @intrinsic_vslide1up_vx_nxv1i64_nxv1i64_i64(<vscale x 1 x i64> %0, i64 %1, i64 %2) nounwind {
876 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv1i64_nxv1i64_i64:
877 ; CHECK:       # %bb.0: # %entry
878 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
879 ; CHECK-NEXT:    vslide1up.vx v9, v8, a0
880 ; CHECK-NEXT:    vmv.v.v v8, v9
881 ; CHECK-NEXT:    ret
882 entry:
883   %a = call <vscale x 1 x i64> @llvm.riscv.vslide1up.nxv1i64.i64(
884     <vscale x 1 x i64> undef,
885     <vscale x 1 x i64> %0,
886     i64 %1,
887     i64 %2)
889   ret <vscale x 1 x i64> %a
892 declare <vscale x 1 x i64> @llvm.riscv.vslide1up.mask.nxv1i64.i64(
893   <vscale x 1 x i64>,
894   <vscale x 1 x i64>,
895   i64,
896   <vscale x 1 x i1>,
897   i64,
898   i64);
900 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, i64 %4) nounwind {
901 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv1i64_nxv1i64_i64:
902 ; CHECK:       # %bb.0: # %entry
903 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu
904 ; CHECK-NEXT:    vslide1up.vx v8, v9, a0, v0.t
905 ; CHECK-NEXT:    ret
906 entry:
907   %a = call <vscale x 1 x i64> @llvm.riscv.vslide1up.mask.nxv1i64.i64(
908     <vscale x 1 x i64> %0,
909     <vscale x 1 x i64> %1,
910     i64 %2,
911     <vscale x 1 x i1> %3,
912     i64 %4, i64 1)
914   ret <vscale x 1 x i64> %a
917 declare <vscale x 2 x i64> @llvm.riscv.vslide1up.nxv2i64.i64(
918   <vscale x 2 x i64>,
919   <vscale x 2 x i64>,
920   i64,
921   i64);
923 define <vscale x 2 x i64> @intrinsic_vslide1up_vx_nxv2i64_nxv2i64_i64(<vscale x 2 x i64> %0, i64 %1, i64 %2) nounwind {
924 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv2i64_nxv2i64_i64:
925 ; CHECK:       # %bb.0: # %entry
926 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
927 ; CHECK-NEXT:    vslide1up.vx v10, v8, a0
928 ; CHECK-NEXT:    vmv.v.v v8, v10
929 ; CHECK-NEXT:    ret
930 entry:
931   %a = call <vscale x 2 x i64> @llvm.riscv.vslide1up.nxv2i64.i64(
932     <vscale x 2 x i64> undef,
933     <vscale x 2 x i64> %0,
934     i64 %1,
935     i64 %2)
937   ret <vscale x 2 x i64> %a
940 declare <vscale x 2 x i64> @llvm.riscv.vslide1up.mask.nxv2i64.i64(
941   <vscale x 2 x i64>,
942   <vscale x 2 x i64>,
943   i64,
944   <vscale x 2 x i1>,
945   i64,
946   i64);
948 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, i64 %4) nounwind {
949 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv2i64_nxv2i64_i64:
950 ; CHECK:       # %bb.0: # %entry
951 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, mu
952 ; CHECK-NEXT:    vslide1up.vx v8, v10, a0, v0.t
953 ; CHECK-NEXT:    ret
954 entry:
955   %a = call <vscale x 2 x i64> @llvm.riscv.vslide1up.mask.nxv2i64.i64(
956     <vscale x 2 x i64> %0,
957     <vscale x 2 x i64> %1,
958     i64 %2,
959     <vscale x 2 x i1> %3,
960     i64 %4, i64 1)
962   ret <vscale x 2 x i64> %a
965 declare <vscale x 4 x i64> @llvm.riscv.vslide1up.nxv4i64.i64(
966   <vscale x 4 x i64>,
967   <vscale x 4 x i64>,
968   i64,
969   i64);
971 define <vscale x 4 x i64> @intrinsic_vslide1up_vx_nxv4i64_nxv4i64_i64(<vscale x 4 x i64> %0, i64 %1, i64 %2) nounwind {
972 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv4i64_nxv4i64_i64:
973 ; CHECK:       # %bb.0: # %entry
974 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
975 ; CHECK-NEXT:    vslide1up.vx v12, v8, a0
976 ; CHECK-NEXT:    vmv.v.v v8, v12
977 ; CHECK-NEXT:    ret
978 entry:
979   %a = call <vscale x 4 x i64> @llvm.riscv.vslide1up.nxv4i64.i64(
980     <vscale x 4 x i64> undef,
981     <vscale x 4 x i64> %0,
982     i64 %1,
983     i64 %2)
985   ret <vscale x 4 x i64> %a
988 declare <vscale x 4 x i64> @llvm.riscv.vslide1up.mask.nxv4i64.i64(
989   <vscale x 4 x i64>,
990   <vscale x 4 x i64>,
991   i64,
992   <vscale x 4 x i1>,
993   i64,
994   i64);
996 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, i64 %4) nounwind {
997 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv4i64_nxv4i64_i64:
998 ; CHECK:       # %bb.0: # %entry
999 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, mu
1000 ; CHECK-NEXT:    vslide1up.vx v8, v12, a0, v0.t
1001 ; CHECK-NEXT:    ret
1002 entry:
1003   %a = call <vscale x 4 x i64> @llvm.riscv.vslide1up.mask.nxv4i64.i64(
1004     <vscale x 4 x i64> %0,
1005     <vscale x 4 x i64> %1,
1006     i64 %2,
1007     <vscale x 4 x i1> %3,
1008     i64 %4, i64 1)
1010   ret <vscale x 4 x i64> %a
1013 declare <vscale x 8 x i64> @llvm.riscv.vslide1up.nxv8i64.i64(
1014   <vscale x 8 x i64>,
1015   <vscale x 8 x i64>,
1016   i64,
1017   i64);
1019 define <vscale x 8 x i64> @intrinsic_vslide1up_vx_nxv8i64_nxv8i64_i64(<vscale x 8 x i64> %0, i64 %1, i64 %2) nounwind {
1020 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv8i64_nxv8i64_i64:
1021 ; CHECK:       # %bb.0: # %entry
1022 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
1023 ; CHECK-NEXT:    vslide1up.vx v16, v8, a0
1024 ; CHECK-NEXT:    vmv.v.v v8, v16
1025 ; CHECK-NEXT:    ret
1026 entry:
1027   %a = call <vscale x 8 x i64> @llvm.riscv.vslide1up.nxv8i64.i64(
1028     <vscale x 8 x i64> undef,
1029     <vscale x 8 x i64> %0,
1030     i64 %1,
1031     i64 %2)
1033   ret <vscale x 8 x i64> %a
1036 declare <vscale x 8 x i64> @llvm.riscv.vslide1up.mask.nxv8i64.i64(
1037   <vscale x 8 x i64>,
1038   <vscale x 8 x i64>,
1039   i64,
1040   <vscale x 8 x i1>,
1041   i64,
1042   i64);
1044 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, i64 %4) nounwind {
1045 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv8i64_nxv8i64_i64:
1046 ; CHECK:       # %bb.0: # %entry
1047 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
1048 ; CHECK-NEXT:    vslide1up.vx v8, v16, a0, v0.t
1049 ; CHECK-NEXT:    ret
1050 entry:
1051   %a = call <vscale x 8 x i64> @llvm.riscv.vslide1up.mask.nxv8i64.i64(
1052     <vscale x 8 x i64> %0,
1053     <vscale x 8 x i64> %1,
1054     i64 %2,
1055     <vscale x 8 x i1> %3,
1056     i64 %4, i64 1)
1058   ret <vscale x 8 x i64> %a