Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vslide1up-rv32.ll
blob55f0196dbeb7d7b112819a57f20417fe443660f2
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+v,+f -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   i32);
11 define <vscale x 1 x i8> @intrinsic_vslide1up_vx_nxv1i8_nxv1i8_i8(<vscale x 1 x i8> %0, i8 %1, i32 %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     i32 %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   i32,
34   i32);
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, i32 %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     i32 %4, i32 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   i32);
59 define <vscale x 2 x i8> @intrinsic_vslide1up_vx_nxv2i8_nxv2i8_i8(<vscale x 2 x i8> %0, i8 %1, i32 %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     i32 %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   i32,
82   i32);
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, i32 %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     i32 %4, i32 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   i32);
107 define <vscale x 4 x i8> @intrinsic_vslide1up_vx_nxv4i8_nxv4i8_i8(<vscale x 4 x i8> %0, i8 %1, i32 %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     i32 %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   i32,
130   i32);
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, i32 %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     i32 %4, i32 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   i32);
155 define <vscale x 8 x i8> @intrinsic_vslide1up_vx_nxv8i8_nxv8i8_i8(<vscale x 8 x i8> %0, i8 %1, i32 %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     i32 %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   i32,
178   i32);
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, i32 %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     i32 %4, i32 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   i32);
203 define <vscale x 16 x i8> @intrinsic_vslide1up_vx_nxv16i8_nxv16i8_i8(<vscale x 16 x i8> %0, i8 %1, i32 %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     i32 %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   i32,
226   i32);
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, i32 %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     i32 %4, i32 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   i32);
251 define <vscale x 32 x i8> @intrinsic_vslide1up_vx_nxv32i8_nxv32i8_i8(<vscale x 32 x i8> %0, i8 %1, i32 %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     i32 %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   i32,
274   i32);
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, i32 %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     i32 %4, i32 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   i32);
299 define <vscale x 64 x i8> @intrinsic_vslide1up_vx_nxv64i8_nxv64i8_i8(<vscale x 64 x i8> %0, i8 %1, i32 %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     i32 %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   i32,
322   i32);
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, i32 %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     i32 %4, i32 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   i32);
347 define <vscale x 1 x i16> @intrinsic_vslide1up_vx_nxv1i16_nxv1i16_i16(<vscale x 1 x i16> %0, i16 %1, i32 %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     i32 %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   i32,
370   i32);
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, i32 %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     i32 %4, i32 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   i32);
395 define <vscale x 2 x i16> @intrinsic_vslide1up_vx_nxv2i16_nxv2i16_i16(<vscale x 2 x i16> %0, i16 %1, i32 %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     i32 %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   i32,
418   i32);
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, i32 %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     i32 %4, i32 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   i32);
443 define <vscale x 4 x i16> @intrinsic_vslide1up_vx_nxv4i16_nxv4i16_i16(<vscale x 4 x i16> %0, i16 %1, i32 %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     i32 %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   i32,
466   i32);
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, i32 %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     i32 %4, i32 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   i32);
491 define <vscale x 8 x i16> @intrinsic_vslide1up_vx_nxv8i16_nxv8i16_i16(<vscale x 8 x i16> %0, i16 %1, i32 %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     i32 %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   i32,
514   i32);
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, i32 %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     i32 %4, i32 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   i32);
539 define <vscale x 16 x i16> @intrinsic_vslide1up_vx_nxv16i16_nxv16i16_i16(<vscale x 16 x i16> %0, i16 %1, i32 %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     i32 %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   i32,
562   i32);
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, i32 %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     i32 %4, i32 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   i32);
587 define <vscale x 32 x i16> @intrinsic_vslide1up_vx_nxv32i16_nxv32i16_i16(<vscale x 32 x i16> %0, i16 %1, i32 %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     i32 %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   i32,
610   i32);
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, i32 %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     i32 %4, i32 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   i32);
635 define <vscale x 1 x i32> @intrinsic_vslide1up_vx_nxv1i32_nxv1i32_i32(<vscale x 1 x i32> %0, i32 %1, i32 %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     i32 %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   i32,
658   i32);
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, i32 %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     i32 %4, i32 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   i32);
683 define <vscale x 2 x i32> @intrinsic_vslide1up_vx_nxv2i32_nxv2i32_i32(<vscale x 2 x i32> %0, i32 %1, i32 %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     i32 %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   i32,
706   i32);
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, i32 %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     i32 %4, i32 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   i32);
731 define <vscale x 4 x i32> @intrinsic_vslide1up_vx_nxv4i32_nxv4i32_i32(<vscale x 4 x i32> %0, i32 %1, i32 %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     i32 %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   i32,
754   i32);
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, i32 %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     i32 %4, i32 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   i32);
779 define <vscale x 8 x i32> @intrinsic_vslide1up_vx_nxv8i32_nxv8i32_i32(<vscale x 8 x i32> %0, i32 %1, i32 %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     i32 %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   i32,
802   i32);
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, i32 %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     i32 %4, i32 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   i32);
827 define <vscale x 16 x i32> @intrinsic_vslide1up_vx_nxv16i32_nxv16i32_i32(<vscale x 16 x i32> %0, i32 %1, i32 %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     i32 %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   i32,
850   i32);
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, i32 %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     i32 %4, i32 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   i32);
875 define <vscale x 1 x i64> @intrinsic_vslide1up_vx_nxv1i64_nxv1i64_i64(<vscale x 1 x i64> %0, i64 %1, i32 %2) nounwind {
876 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv1i64_nxv1i64_i64:
877 ; CHECK:       # %bb.0: # %entry
878 ; CHECK-NEXT:    vsetvli a2, a2, e64, m1, ta, ma
879 ; CHECK-NEXT:    slli a2, a2, 1
880 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
881 ; CHECK-NEXT:    vslide1up.vx v9, v8, a1
882 ; CHECK-NEXT:    vslide1up.vx v8, v9, a0
883 ; CHECK-NEXT:    ret
884 entry:
885   %a = call <vscale x 1 x i64> @llvm.riscv.vslide1up.nxv1i64.i64(
886     <vscale x 1 x i64> undef,
887     <vscale x 1 x i64> %0,
888     i64 %1,
889     i32 %2)
891   ret <vscale x 1 x i64> %a
894 declare <vscale x 1 x i64> @llvm.riscv.vslide1up.mask.nxv1i64.i64(
895   <vscale x 1 x i64>,
896   <vscale x 1 x i64>,
897   i64,
898   <vscale x 1 x i1>,
899   i32,
900   i32);
902 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, i32 %4) nounwind {
903 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv1i64_nxv1i64_i64:
904 ; CHECK:       # %bb.0: # %entry
905 ; CHECK-NEXT:    vsetvli a3, a2, e64, m1, ta, ma
906 ; CHECK-NEXT:    slli a3, a3, 1
907 ; CHECK-NEXT:    vsetvli zero, a3, e32, m1, ta, ma
908 ; CHECK-NEXT:    vslide1up.vx v10, v9, a1
909 ; CHECK-NEXT:    vslide1up.vx v9, v10, a0
910 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
911 ; CHECK-NEXT:    vmerge.vvm v8, v8, v9, v0
912 ; CHECK-NEXT:    ret
913 entry:
914   %a = call <vscale x 1 x i64> @llvm.riscv.vslide1up.mask.nxv1i64.i64(
915     <vscale x 1 x i64> %0,
916     <vscale x 1 x i64> %1,
917     i64 %2,
918     <vscale x 1 x i1> %3,
919     i32 %4, i32 1)
921   ret <vscale x 1 x i64> %a
924 declare <vscale x 2 x i64> @llvm.riscv.vslide1up.nxv2i64.i64(
925   <vscale x 2 x i64>,
926   <vscale x 2 x i64>,
927   i64,
928   i32);
930 define <vscale x 2 x i64> @intrinsic_vslide1up_vx_nxv2i64_nxv2i64_i64(<vscale x 2 x i64> %0, i64 %1, i32 %2) nounwind {
931 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv2i64_nxv2i64_i64:
932 ; CHECK:       # %bb.0: # %entry
933 ; CHECK-NEXT:    vsetvli a2, a2, e64, m2, ta, ma
934 ; CHECK-NEXT:    slli a2, a2, 1
935 ; CHECK-NEXT:    vsetvli zero, a2, e32, m2, ta, ma
936 ; CHECK-NEXT:    vslide1up.vx v10, v8, a1
937 ; CHECK-NEXT:    vslide1up.vx v8, v10, a0
938 ; CHECK-NEXT:    ret
939 entry:
940   %a = call <vscale x 2 x i64> @llvm.riscv.vslide1up.nxv2i64.i64(
941     <vscale x 2 x i64> undef,
942     <vscale x 2 x i64> %0,
943     i64 %1,
944     i32 %2)
946   ret <vscale x 2 x i64> %a
949 declare <vscale x 2 x i64> @llvm.riscv.vslide1up.mask.nxv2i64.i64(
950   <vscale x 2 x i64>,
951   <vscale x 2 x i64>,
952   i64,
953   <vscale x 2 x i1>,
954   i32,
955   i32);
957 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, i32 %4) nounwind {
958 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv2i64_nxv2i64_i64:
959 ; CHECK:       # %bb.0: # %entry
960 ; CHECK-NEXT:    vsetvli a3, a2, e64, m2, ta, ma
961 ; CHECK-NEXT:    slli a3, a3, 1
962 ; CHECK-NEXT:    vsetvli zero, a3, e32, m2, ta, ma
963 ; CHECK-NEXT:    vslide1up.vx v12, v10, a1
964 ; CHECK-NEXT:    vslide1up.vx v10, v12, a0
965 ; CHECK-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
966 ; CHECK-NEXT:    vmerge.vvm v8, v8, v10, v0
967 ; CHECK-NEXT:    ret
968 entry:
969   %a = call <vscale x 2 x i64> @llvm.riscv.vslide1up.mask.nxv2i64.i64(
970     <vscale x 2 x i64> %0,
971     <vscale x 2 x i64> %1,
972     i64 %2,
973     <vscale x 2 x i1> %3,
974     i32 %4, i32 1)
976   ret <vscale x 2 x i64> %a
979 declare <vscale x 4 x i64> @llvm.riscv.vslide1up.nxv4i64.i64(
980   <vscale x 4 x i64>,
981   <vscale x 4 x i64>,
982   i64,
983   i32);
985 define <vscale x 4 x i64> @intrinsic_vslide1up_vx_nxv4i64_nxv4i64_i64(<vscale x 4 x i64> %0, i64 %1, i32 %2) nounwind {
986 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv4i64_nxv4i64_i64:
987 ; CHECK:       # %bb.0: # %entry
988 ; CHECK-NEXT:    vsetvli a2, a2, e64, m4, ta, ma
989 ; CHECK-NEXT:    slli a2, a2, 1
990 ; CHECK-NEXT:    vsetvli zero, a2, e32, m4, ta, ma
991 ; CHECK-NEXT:    vslide1up.vx v12, v8, a1
992 ; CHECK-NEXT:    vslide1up.vx v8, v12, a0
993 ; CHECK-NEXT:    ret
994 entry:
995   %a = call <vscale x 4 x i64> @llvm.riscv.vslide1up.nxv4i64.i64(
996     <vscale x 4 x i64> undef,
997     <vscale x 4 x i64> %0,
998     i64 %1,
999     i32 %2)
1001   ret <vscale x 4 x i64> %a
1004 declare <vscale x 4 x i64> @llvm.riscv.vslide1up.mask.nxv4i64.i64(
1005   <vscale x 4 x i64>,
1006   <vscale x 4 x i64>,
1007   i64,
1008   <vscale x 4 x i1>,
1009   i32,
1010   i32);
1012 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, i32 %4) nounwind {
1013 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv4i64_nxv4i64_i64:
1014 ; CHECK:       # %bb.0: # %entry
1015 ; CHECK-NEXT:    vsetvli a3, a2, e64, m4, ta, ma
1016 ; CHECK-NEXT:    slli a3, a3, 1
1017 ; CHECK-NEXT:    vsetvli zero, a3, e32, m4, ta, ma
1018 ; CHECK-NEXT:    vslide1up.vx v16, v12, a1
1019 ; CHECK-NEXT:    vslide1up.vx v12, v16, a0
1020 ; CHECK-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1021 ; CHECK-NEXT:    vmerge.vvm v8, v8, v12, v0
1022 ; CHECK-NEXT:    ret
1023 entry:
1024   %a = call <vscale x 4 x i64> @llvm.riscv.vslide1up.mask.nxv4i64.i64(
1025     <vscale x 4 x i64> %0,
1026     <vscale x 4 x i64> %1,
1027     i64 %2,
1028     <vscale x 4 x i1> %3,
1029     i32 %4, i32 1)
1031   ret <vscale x 4 x i64> %a
1034 declare <vscale x 8 x i64> @llvm.riscv.vslide1up.nxv8i64.i64(
1035   <vscale x 8 x i64>,
1036   <vscale x 8 x i64>,
1037   i64,
1038   i32);
1040 define <vscale x 8 x i64> @intrinsic_vslide1up_vx_nxv8i64_nxv8i64_i64(<vscale x 8 x i64> %0, i64 %1, i32 %2) nounwind {
1041 ; CHECK-LABEL: intrinsic_vslide1up_vx_nxv8i64_nxv8i64_i64:
1042 ; CHECK:       # %bb.0: # %entry
1043 ; CHECK-NEXT:    vsetvli a2, a2, e64, m8, ta, ma
1044 ; CHECK-NEXT:    slli a2, a2, 1
1045 ; CHECK-NEXT:    vsetvli zero, a2, e32, m8, ta, ma
1046 ; CHECK-NEXT:    vslide1up.vx v16, v8, a1
1047 ; CHECK-NEXT:    vslide1up.vx v8, v16, a0
1048 ; CHECK-NEXT:    ret
1049 entry:
1050   %a = call <vscale x 8 x i64> @llvm.riscv.vslide1up.nxv8i64.i64(
1051     <vscale x 8 x i64> undef,
1052     <vscale x 8 x i64> %0,
1053     i64 %1,
1054     i32 %2)
1056   ret <vscale x 8 x i64> %a
1059 declare <vscale x 8 x i64> @llvm.riscv.vslide1up.mask.nxv8i64.i64(
1060   <vscale x 8 x i64>,
1061   <vscale x 8 x i64>,
1062   i64,
1063   <vscale x 8 x i1>,
1064   i32,
1065   i32);
1067 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, i32 %4) nounwind {
1068 ; CHECK-LABEL: intrinsic_vslide1up_mask_vx_nxv8i64_nxv8i64_i64:
1069 ; CHECK:       # %bb.0: # %entry
1070 ; CHECK-NEXT:    vsetvli a3, a2, e64, m8, ta, ma
1071 ; CHECK-NEXT:    slli a3, a3, 1
1072 ; CHECK-NEXT:    vsetvli zero, a3, e32, m8, ta, ma
1073 ; CHECK-NEXT:    vslide1up.vx v24, v16, a1
1074 ; CHECK-NEXT:    vslide1up.vx v16, v24, a0
1075 ; CHECK-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
1076 ; CHECK-NEXT:    vmerge.vvm v8, v8, v16, v0
1077 ; CHECK-NEXT:    ret
1078 entry:
1079   %a = call <vscale x 8 x i64> @llvm.riscv.vslide1up.mask.nxv8i64.i64(
1080     <vscale x 8 x i64> %0,
1081     <vscale x 8 x i64> %1,
1082     i64 %2,
1083     <vscale x 8 x i1> %3,
1084     i32 %4, i32 1)
1086   ret <vscale x 8 x i64> %a