[RISCV] Support postRA vsetvl insertion pass (#70549)
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vfslide1up.ll
blobc71cc13566f6d13b4a2337317f9a8d158c025fc5
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,+zfh,+zvfh \
3 ; RUN:   -verify-machineinstrs -target-abi=ilp32d | FileCheck %s
4 ; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+zfh,+zvfh \
5 ; RUN:   -verify-machineinstrs -target-abi=lp64d | FileCheck %s
7 declare <vscale x 1 x half> @llvm.riscv.vfslide1up.nxv1f16.f16(
8   <vscale x 1 x half>,
9   <vscale x 1 x half>,
10   half,
11   iXLen);
13 define <vscale x 1 x half> @intrinsic_vfslide1up_vf_nxv1f16_nxv1f16_f16(<vscale x 1 x half> %0, half %1, iXLen %2) nounwind {
14 ; CHECK-LABEL: intrinsic_vfslide1up_vf_nxv1f16_nxv1f16_f16:
15 ; CHECK:       # %bb.0: # %entry
16 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
17 ; CHECK-NEXT:    vfslide1up.vf v9, v8, fa0
18 ; CHECK-NEXT:    vmv1r.v v8, v9
19 ; CHECK-NEXT:    ret
20 entry:
21   %a = call <vscale x 1 x half> @llvm.riscv.vfslide1up.nxv1f16.f16(
22     <vscale x 1 x half> undef,
23     <vscale x 1 x half> %0,
24     half %1,
25     iXLen %2)
27   ret <vscale x 1 x half> %a
30 declare <vscale x 1 x half> @llvm.riscv.vfslide1up.mask.nxv1f16.f16(
31   <vscale x 1 x half>,
32   <vscale x 1 x half>,
33   half,
34   <vscale x 1 x i1>,
35   iXLen,
36   iXLen);
38 define <vscale x 1 x half> @intrinsic_vfslide1up_mask_vf_nxv1f16_nxv1f16_f16(<vscale x 1 x half> %0, <vscale x 1 x half> %1, half %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
39 ; CHECK-LABEL: intrinsic_vfslide1up_mask_vf_nxv1f16_nxv1f16_f16:
40 ; CHECK:       # %bb.0: # %entry
41 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu
42 ; CHECK-NEXT:    vfslide1up.vf v8, v9, fa0, v0.t
43 ; CHECK-NEXT:    ret
44 entry:
45   %a = call <vscale x 1 x half> @llvm.riscv.vfslide1up.mask.nxv1f16.f16(
46     <vscale x 1 x half> %0,
47     <vscale x 1 x half> %1,
48     half %2,
49     <vscale x 1 x i1> %3,
50     iXLen %4, iXLen 1)
52   ret <vscale x 1 x half> %a
55 declare <vscale x 2 x half> @llvm.riscv.vfslide1up.nxv2f16.f16(
56   <vscale x 2 x half>,
57   <vscale x 2 x half>,
58   half,
59   iXLen);
61 define <vscale x 2 x half> @intrinsic_vfslide1up_vf_nxv2f16_nxv2f16_f16(<vscale x 2 x half> %0, half %1, iXLen %2) nounwind {
62 ; CHECK-LABEL: intrinsic_vfslide1up_vf_nxv2f16_nxv2f16_f16:
63 ; CHECK:       # %bb.0: # %entry
64 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
65 ; CHECK-NEXT:    vfslide1up.vf v9, v8, fa0
66 ; CHECK-NEXT:    vmv1r.v v8, v9
67 ; CHECK-NEXT:    ret
68 entry:
69   %a = call <vscale x 2 x half> @llvm.riscv.vfslide1up.nxv2f16.f16(
70     <vscale x 2 x half> undef,
71     <vscale x 2 x half> %0,
72     half %1,
73     iXLen %2)
75   ret <vscale x 2 x half> %a
78 declare <vscale x 2 x half> @llvm.riscv.vfslide1up.mask.nxv2f16.f16(
79   <vscale x 2 x half>,
80   <vscale x 2 x half>,
81   half,
82   <vscale x 2 x i1>,
83   iXLen,
84   iXLen);
86 define <vscale x 2 x half> @intrinsic_vfslide1up_mask_vf_nxv2f16_nxv2f16_f16(<vscale x 2 x half> %0, <vscale x 2 x half> %1, half %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
87 ; CHECK-LABEL: intrinsic_vfslide1up_mask_vf_nxv2f16_nxv2f16_f16:
88 ; CHECK:       # %bb.0: # %entry
89 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu
90 ; CHECK-NEXT:    vfslide1up.vf v8, v9, fa0, v0.t
91 ; CHECK-NEXT:    ret
92 entry:
93   %a = call <vscale x 2 x half> @llvm.riscv.vfslide1up.mask.nxv2f16.f16(
94     <vscale x 2 x half> %0,
95     <vscale x 2 x half> %1,
96     half %2,
97     <vscale x 2 x i1> %3,
98     iXLen %4, iXLen 1)
100   ret <vscale x 2 x half> %a
103 declare <vscale x 4 x half> @llvm.riscv.vfslide1up.nxv4f16.f16(
104   <vscale x 4 x half>,
105   <vscale x 4 x half>,
106   half,
107   iXLen);
109 define <vscale x 4 x half> @intrinsic_vfslide1up_vf_nxv4f16_nxv4f16_f16(<vscale x 4 x half> %0, half %1, iXLen %2) nounwind {
110 ; CHECK-LABEL: intrinsic_vfslide1up_vf_nxv4f16_nxv4f16_f16:
111 ; CHECK:       # %bb.0: # %entry
112 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
113 ; CHECK-NEXT:    vfslide1up.vf v9, v8, fa0
114 ; CHECK-NEXT:    vmv.v.v v8, v9
115 ; CHECK-NEXT:    ret
116 entry:
117   %a = call <vscale x 4 x half> @llvm.riscv.vfslide1up.nxv4f16.f16(
118     <vscale x 4 x half> undef,
119     <vscale x 4 x half> %0,
120     half %1,
121     iXLen %2)
123   ret <vscale x 4 x half> %a
126 declare <vscale x 4 x half> @llvm.riscv.vfslide1up.mask.nxv4f16.f16(
127   <vscale x 4 x half>,
128   <vscale x 4 x half>,
129   half,
130   <vscale x 4 x i1>,
131   iXLen,
132   iXLen);
134 define <vscale x 4 x half> @intrinsic_vfslide1up_mask_vf_nxv4f16_nxv4f16_f16(<vscale x 4 x half> %0, <vscale x 4 x half> %1, half %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
135 ; CHECK-LABEL: intrinsic_vfslide1up_mask_vf_nxv4f16_nxv4f16_f16:
136 ; CHECK:       # %bb.0: # %entry
137 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu
138 ; CHECK-NEXT:    vfslide1up.vf v8, v9, fa0, v0.t
139 ; CHECK-NEXT:    ret
140 entry:
141   %a = call <vscale x 4 x half> @llvm.riscv.vfslide1up.mask.nxv4f16.f16(
142     <vscale x 4 x half> %0,
143     <vscale x 4 x half> %1,
144     half %2,
145     <vscale x 4 x i1> %3,
146     iXLen %4, iXLen 1)
148   ret <vscale x 4 x half> %a
151 declare <vscale x 8 x half> @llvm.riscv.vfslide1up.nxv8f16.f16(
152   <vscale x 8 x half>,
153   <vscale x 8 x half>,
154   half,
155   iXLen);
157 define <vscale x 8 x half> @intrinsic_vfslide1up_vf_nxv8f16_nxv8f16_f16(<vscale x 8 x half> %0, half %1, iXLen %2) nounwind {
158 ; CHECK-LABEL: intrinsic_vfslide1up_vf_nxv8f16_nxv8f16_f16:
159 ; CHECK:       # %bb.0: # %entry
160 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
161 ; CHECK-NEXT:    vfslide1up.vf v10, v8, fa0
162 ; CHECK-NEXT:    vmv.v.v v8, v10
163 ; CHECK-NEXT:    ret
164 entry:
165   %a = call <vscale x 8 x half> @llvm.riscv.vfslide1up.nxv8f16.f16(
166     <vscale x 8 x half> undef,
167     <vscale x 8 x half> %0,
168     half %1,
169     iXLen %2)
171   ret <vscale x 8 x half> %a
174 declare <vscale x 8 x half> @llvm.riscv.vfslide1up.mask.nxv8f16.f16(
175   <vscale x 8 x half>,
176   <vscale x 8 x half>,
177   half,
178   <vscale x 8 x i1>,
179   iXLen,
180   iXLen);
182 define <vscale x 8 x half> @intrinsic_vfslide1up_mask_vf_nxv8f16_nxv8f16_f16(<vscale x 8 x half> %0, <vscale x 8 x half> %1, half %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
183 ; CHECK-LABEL: intrinsic_vfslide1up_mask_vf_nxv8f16_nxv8f16_f16:
184 ; CHECK:       # %bb.0: # %entry
185 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu
186 ; CHECK-NEXT:    vfslide1up.vf v8, v10, fa0, v0.t
187 ; CHECK-NEXT:    ret
188 entry:
189   %a = call <vscale x 8 x half> @llvm.riscv.vfslide1up.mask.nxv8f16.f16(
190     <vscale x 8 x half> %0,
191     <vscale x 8 x half> %1,
192     half %2,
193     <vscale x 8 x i1> %3,
194     iXLen %4, iXLen 1)
196   ret <vscale x 8 x half> %a
199 declare <vscale x 16 x half> @llvm.riscv.vfslide1up.nxv16f16.f16(
200   <vscale x 16 x half>,
201   <vscale x 16 x half>,
202   half,
203   iXLen);
205 define <vscale x 16 x half> @intrinsic_vfslide1up_vf_nxv16f16_nxv16f16_f16(<vscale x 16 x half> %0, half %1, iXLen %2) nounwind {
206 ; CHECK-LABEL: intrinsic_vfslide1up_vf_nxv16f16_nxv16f16_f16:
207 ; CHECK:       # %bb.0: # %entry
208 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
209 ; CHECK-NEXT:    vfslide1up.vf v12, v8, fa0
210 ; CHECK-NEXT:    vmv.v.v v8, v12
211 ; CHECK-NEXT:    ret
212 entry:
213   %a = call <vscale x 16 x half> @llvm.riscv.vfslide1up.nxv16f16.f16(
214     <vscale x 16 x half> undef,
215     <vscale x 16 x half> %0,
216     half %1,
217     iXLen %2)
219   ret <vscale x 16 x half> %a
222 declare <vscale x 16 x half> @llvm.riscv.vfslide1up.mask.nxv16f16.f16(
223   <vscale x 16 x half>,
224   <vscale x 16 x half>,
225   half,
226   <vscale x 16 x i1>,
227   iXLen,
228   iXLen);
230 define <vscale x 16 x half> @intrinsic_vfslide1up_mask_vf_nxv16f16_nxv16f16_f16(<vscale x 16 x half> %0, <vscale x 16 x half> %1, half %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
231 ; CHECK-LABEL: intrinsic_vfslide1up_mask_vf_nxv16f16_nxv16f16_f16:
232 ; CHECK:       # %bb.0: # %entry
233 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu
234 ; CHECK-NEXT:    vfslide1up.vf v8, v12, fa0, v0.t
235 ; CHECK-NEXT:    ret
236 entry:
237   %a = call <vscale x 16 x half> @llvm.riscv.vfslide1up.mask.nxv16f16.f16(
238     <vscale x 16 x half> %0,
239     <vscale x 16 x half> %1,
240     half %2,
241     <vscale x 16 x i1> %3,
242     iXLen %4, iXLen 1)
244   ret <vscale x 16 x half> %a
247 declare <vscale x 32 x half> @llvm.riscv.vfslide1up.nxv32f16.f16(
248   <vscale x 32 x half>,
249   <vscale x 32 x half>,
250   half,
251   iXLen);
253 define <vscale x 32 x half> @intrinsic_vfslide1up_vf_nxv32f16_nxv32f16_f16(<vscale x 32 x half> %0, half %1, iXLen %2) nounwind {
254 ; CHECK-LABEL: intrinsic_vfslide1up_vf_nxv32f16_nxv32f16_f16:
255 ; CHECK:       # %bb.0: # %entry
256 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
257 ; CHECK-NEXT:    vfslide1up.vf v16, v8, fa0
258 ; CHECK-NEXT:    vmv.v.v v8, v16
259 ; CHECK-NEXT:    ret
260 entry:
261   %a = call <vscale x 32 x half> @llvm.riscv.vfslide1up.nxv32f16.f16(
262     <vscale x 32 x half> undef,
263     <vscale x 32 x half> %0,
264     half %1,
265     iXLen %2)
267   ret <vscale x 32 x half> %a
270 declare <vscale x 32 x half> @llvm.riscv.vfslide1up.mask.nxv32f16.f16(
271   <vscale x 32 x half>,
272   <vscale x 32 x half>,
273   half,
274   <vscale x 32 x i1>,
275   iXLen,
276   iXLen);
278 define <vscale x 32 x half> @intrinsic_vfslide1up_mask_vf_nxv32f16_nxv32f16_f16(<vscale x 32 x half> %0, <vscale x 32 x half> %1, half %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
279 ; CHECK-LABEL: intrinsic_vfslide1up_mask_vf_nxv32f16_nxv32f16_f16:
280 ; CHECK:       # %bb.0: # %entry
281 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, mu
282 ; CHECK-NEXT:    vfslide1up.vf v8, v16, fa0, v0.t
283 ; CHECK-NEXT:    ret
284 entry:
285   %a = call <vscale x 32 x half> @llvm.riscv.vfslide1up.mask.nxv32f16.f16(
286     <vscale x 32 x half> %0,
287     <vscale x 32 x half> %1,
288     half %2,
289     <vscale x 32 x i1> %3,
290     iXLen %4, iXLen 1)
292   ret <vscale x 32 x half> %a
295 declare <vscale x 1 x float> @llvm.riscv.vfslide1up.nxv1f32.f32(
296   <vscale x 1 x float>,
297   <vscale x 1 x float>,
298   float,
299   iXLen);
301 define <vscale x 1 x float> @intrinsic_vfslide1up_vf_nxv1f32_nxv1f32_f32(<vscale x 1 x float> %0, float %1, iXLen %2) nounwind {
302 ; CHECK-LABEL: intrinsic_vfslide1up_vf_nxv1f32_nxv1f32_f32:
303 ; CHECK:       # %bb.0: # %entry
304 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
305 ; CHECK-NEXT:    vfslide1up.vf v9, v8, fa0
306 ; CHECK-NEXT:    vmv1r.v v8, v9
307 ; CHECK-NEXT:    ret
308 entry:
309   %a = call <vscale x 1 x float> @llvm.riscv.vfslide1up.nxv1f32.f32(
310     <vscale x 1 x float> undef,
311     <vscale x 1 x float> %0,
312     float %1,
313     iXLen %2)
315   ret <vscale x 1 x float> %a
318 declare <vscale x 1 x float> @llvm.riscv.vfslide1up.mask.nxv1f32.f32(
319   <vscale x 1 x float>,
320   <vscale x 1 x float>,
321   float,
322   <vscale x 1 x i1>,
323   iXLen,
324   iXLen);
326 define <vscale x 1 x float> @intrinsic_vfslide1up_mask_vf_nxv1f32_nxv1f32_f32(<vscale x 1 x float> %0, <vscale x 1 x float> %1, float %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
327 ; CHECK-LABEL: intrinsic_vfslide1up_mask_vf_nxv1f32_nxv1f32_f32:
328 ; CHECK:       # %bb.0: # %entry
329 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu
330 ; CHECK-NEXT:    vfslide1up.vf v8, v9, fa0, v0.t
331 ; CHECK-NEXT:    ret
332 entry:
333   %a = call <vscale x 1 x float> @llvm.riscv.vfslide1up.mask.nxv1f32.f32(
334     <vscale x 1 x float> %0,
335     <vscale x 1 x float> %1,
336     float %2,
337     <vscale x 1 x i1> %3,
338     iXLen %4, iXLen 1)
340   ret <vscale x 1 x float> %a
343 declare <vscale x 2 x float> @llvm.riscv.vfslide1up.nxv2f32.f32(
344   <vscale x 2 x float>,
345   <vscale x 2 x float>,
346   float,
347   iXLen);
349 define <vscale x 2 x float> @intrinsic_vfslide1up_vf_nxv2f32_nxv2f32_f32(<vscale x 2 x float> %0, float %1, iXLen %2) nounwind {
350 ; CHECK-LABEL: intrinsic_vfslide1up_vf_nxv2f32_nxv2f32_f32:
351 ; CHECK:       # %bb.0: # %entry
352 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
353 ; CHECK-NEXT:    vfslide1up.vf v9, v8, fa0
354 ; CHECK-NEXT:    vmv.v.v v8, v9
355 ; CHECK-NEXT:    ret
356 entry:
357   %a = call <vscale x 2 x float> @llvm.riscv.vfslide1up.nxv2f32.f32(
358     <vscale x 2 x float> undef,
359     <vscale x 2 x float> %0,
360     float %1,
361     iXLen %2)
363   ret <vscale x 2 x float> %a
366 declare <vscale x 2 x float> @llvm.riscv.vfslide1up.mask.nxv2f32.f32(
367   <vscale x 2 x float>,
368   <vscale x 2 x float>,
369   float,
370   <vscale x 2 x i1>,
371   iXLen,
372   iXLen);
374 define <vscale x 2 x float> @intrinsic_vfslide1up_mask_vf_nxv2f32_nxv2f32_f32(<vscale x 2 x float> %0, <vscale x 2 x float> %1, float %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
375 ; CHECK-LABEL: intrinsic_vfslide1up_mask_vf_nxv2f32_nxv2f32_f32:
376 ; CHECK:       # %bb.0: # %entry
377 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu
378 ; CHECK-NEXT:    vfslide1up.vf v8, v9, fa0, v0.t
379 ; CHECK-NEXT:    ret
380 entry:
381   %a = call <vscale x 2 x float> @llvm.riscv.vfslide1up.mask.nxv2f32.f32(
382     <vscale x 2 x float> %0,
383     <vscale x 2 x float> %1,
384     float %2,
385     <vscale x 2 x i1> %3,
386     iXLen %4, iXLen 1)
388   ret <vscale x 2 x float> %a
391 declare <vscale x 4 x float> @llvm.riscv.vfslide1up.nxv4f32.f32(
392   <vscale x 4 x float>,
393   <vscale x 4 x float>,
394   float,
395   iXLen);
397 define <vscale x 4 x float> @intrinsic_vfslide1up_vf_nxv4f32_nxv4f32_f32(<vscale x 4 x float> %0, float %1, iXLen %2) nounwind {
398 ; CHECK-LABEL: intrinsic_vfslide1up_vf_nxv4f32_nxv4f32_f32:
399 ; CHECK:       # %bb.0: # %entry
400 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
401 ; CHECK-NEXT:    vfslide1up.vf v10, v8, fa0
402 ; CHECK-NEXT:    vmv.v.v v8, v10
403 ; CHECK-NEXT:    ret
404 entry:
405   %a = call <vscale x 4 x float> @llvm.riscv.vfslide1up.nxv4f32.f32(
406     <vscale x 4 x float> undef,
407     <vscale x 4 x float> %0,
408     float %1,
409     iXLen %2)
411   ret <vscale x 4 x float> %a
414 declare <vscale x 4 x float> @llvm.riscv.vfslide1up.mask.nxv4f32.f32(
415   <vscale x 4 x float>,
416   <vscale x 4 x float>,
417   float,
418   <vscale x 4 x i1>,
419   iXLen,
420   iXLen);
422 define <vscale x 4 x float> @intrinsic_vfslide1up_mask_vf_nxv4f32_nxv4f32_f32(<vscale x 4 x float> %0, <vscale x 4 x float> %1, float %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
423 ; CHECK-LABEL: intrinsic_vfslide1up_mask_vf_nxv4f32_nxv4f32_f32:
424 ; CHECK:       # %bb.0: # %entry
425 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu
426 ; CHECK-NEXT:    vfslide1up.vf v8, v10, fa0, v0.t
427 ; CHECK-NEXT:    ret
428 entry:
429   %a = call <vscale x 4 x float> @llvm.riscv.vfslide1up.mask.nxv4f32.f32(
430     <vscale x 4 x float> %0,
431     <vscale x 4 x float> %1,
432     float %2,
433     <vscale x 4 x i1> %3,
434     iXLen %4, iXLen 1)
436   ret <vscale x 4 x float> %a
439 declare <vscale x 8 x float> @llvm.riscv.vfslide1up.nxv8f32.f32(
440   <vscale x 8 x float>,
441   <vscale x 8 x float>,
442   float,
443   iXLen);
445 define <vscale x 8 x float> @intrinsic_vfslide1up_vf_nxv8f32_nxv8f32_f32(<vscale x 8 x float> %0, float %1, iXLen %2) nounwind {
446 ; CHECK-LABEL: intrinsic_vfslide1up_vf_nxv8f32_nxv8f32_f32:
447 ; CHECK:       # %bb.0: # %entry
448 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
449 ; CHECK-NEXT:    vfslide1up.vf v12, v8, fa0
450 ; CHECK-NEXT:    vmv.v.v v8, v12
451 ; CHECK-NEXT:    ret
452 entry:
453   %a = call <vscale x 8 x float> @llvm.riscv.vfslide1up.nxv8f32.f32(
454     <vscale x 8 x float> undef,
455     <vscale x 8 x float> %0,
456     float %1,
457     iXLen %2)
459   ret <vscale x 8 x float> %a
462 declare <vscale x 8 x float> @llvm.riscv.vfslide1up.mask.nxv8f32.f32(
463   <vscale x 8 x float>,
464   <vscale x 8 x float>,
465   float,
466   <vscale x 8 x i1>,
467   iXLen,
468   iXLen);
470 define <vscale x 8 x float> @intrinsic_vfslide1up_mask_vf_nxv8f32_nxv8f32_f32(<vscale x 8 x float> %0, <vscale x 8 x float> %1, float %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
471 ; CHECK-LABEL: intrinsic_vfslide1up_mask_vf_nxv8f32_nxv8f32_f32:
472 ; CHECK:       # %bb.0: # %entry
473 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu
474 ; CHECK-NEXT:    vfslide1up.vf v8, v12, fa0, v0.t
475 ; CHECK-NEXT:    ret
476 entry:
477   %a = call <vscale x 8 x float> @llvm.riscv.vfslide1up.mask.nxv8f32.f32(
478     <vscale x 8 x float> %0,
479     <vscale x 8 x float> %1,
480     float %2,
481     <vscale x 8 x i1> %3,
482     iXLen %4, iXLen 1)
484   ret <vscale x 8 x float> %a
487 declare <vscale x 16 x float> @llvm.riscv.vfslide1up.nxv16f32.f32(
488   <vscale x 16 x float>,
489   <vscale x 16 x float>,
490   float,
491   iXLen);
493 define <vscale x 16 x float> @intrinsic_vfslide1up_vf_nxv16f32_nxv16f32_f32(<vscale x 16 x float> %0, float %1, iXLen %2) nounwind {
494 ; CHECK-LABEL: intrinsic_vfslide1up_vf_nxv16f32_nxv16f32_f32:
495 ; CHECK:       # %bb.0: # %entry
496 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
497 ; CHECK-NEXT:    vfslide1up.vf v16, v8, fa0
498 ; CHECK-NEXT:    vmv.v.v v8, v16
499 ; CHECK-NEXT:    ret
500 entry:
501   %a = call <vscale x 16 x float> @llvm.riscv.vfslide1up.nxv16f32.f32(
502     <vscale x 16 x float> undef,
503     <vscale x 16 x float> %0,
504     float %1,
505     iXLen %2)
507   ret <vscale x 16 x float> %a
510 declare <vscale x 16 x float> @llvm.riscv.vfslide1up.mask.nxv16f32.f32(
511   <vscale x 16 x float>,
512   <vscale x 16 x float>,
513   float,
514   <vscale x 16 x i1>,
515   iXLen,
516   iXLen);
518 define <vscale x 16 x float> @intrinsic_vfslide1up_mask_vf_nxv16f32_nxv16f32_f32(<vscale x 16 x float> %0, <vscale x 16 x float> %1, float %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
519 ; CHECK-LABEL: intrinsic_vfslide1up_mask_vf_nxv16f32_nxv16f32_f32:
520 ; CHECK:       # %bb.0: # %entry
521 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, mu
522 ; CHECK-NEXT:    vfslide1up.vf v8, v16, fa0, v0.t
523 ; CHECK-NEXT:    ret
524 entry:
525   %a = call <vscale x 16 x float> @llvm.riscv.vfslide1up.mask.nxv16f32.f32(
526     <vscale x 16 x float> %0,
527     <vscale x 16 x float> %1,
528     float %2,
529     <vscale x 16 x i1> %3,
530     iXLen %4, iXLen 1)
532   ret <vscale x 16 x float> %a
535 declare <vscale x 1 x double> @llvm.riscv.vfslide1up.nxv1f64.f64(
536   <vscale x 1 x double>,
537   <vscale x 1 x double>,
538   double,
539   iXLen);
541 define <vscale x 1 x double> @intrinsic_vfslide1up_vf_nxv1f64_nxv1f64_f64(<vscale x 1 x double> %0, double %1, iXLen %2) nounwind {
542 ; CHECK-LABEL: intrinsic_vfslide1up_vf_nxv1f64_nxv1f64_f64:
543 ; CHECK:       # %bb.0: # %entry
544 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
545 ; CHECK-NEXT:    vfslide1up.vf v9, v8, fa0
546 ; CHECK-NEXT:    vmv.v.v v8, v9
547 ; CHECK-NEXT:    ret
548 entry:
549   %a = call <vscale x 1 x double> @llvm.riscv.vfslide1up.nxv1f64.f64(
550     <vscale x 1 x double> undef,
551     <vscale x 1 x double> %0,
552     double %1,
553     iXLen %2)
555   ret <vscale x 1 x double> %a
558 declare <vscale x 1 x double> @llvm.riscv.vfslide1up.mask.nxv1f64.f64(
559   <vscale x 1 x double>,
560   <vscale x 1 x double>,
561   double,
562   <vscale x 1 x i1>,
563   iXLen,
564   iXLen);
566 define <vscale x 1 x double> @intrinsic_vfslide1up_mask_vf_nxv1f64_nxv1f64_f64(<vscale x 1 x double> %0, <vscale x 1 x double> %1, double %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
567 ; CHECK-LABEL: intrinsic_vfslide1up_mask_vf_nxv1f64_nxv1f64_f64:
568 ; CHECK:       # %bb.0: # %entry
569 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu
570 ; CHECK-NEXT:    vfslide1up.vf v8, v9, fa0, v0.t
571 ; CHECK-NEXT:    ret
572 entry:
573   %a = call <vscale x 1 x double> @llvm.riscv.vfslide1up.mask.nxv1f64.f64(
574     <vscale x 1 x double> %0,
575     <vscale x 1 x double> %1,
576     double %2,
577     <vscale x 1 x i1> %3,
578     iXLen %4, iXLen 1)
580   ret <vscale x 1 x double> %a
583 declare <vscale x 2 x double> @llvm.riscv.vfslide1up.nxv2f64.f64(
584   <vscale x 2 x double>,
585   <vscale x 2 x double>,
586   double,
587   iXLen);
589 define <vscale x 2 x double> @intrinsic_vfslide1up_vf_nxv2f64_nxv2f64_f64(<vscale x 2 x double> %0, double %1, iXLen %2) nounwind {
590 ; CHECK-LABEL: intrinsic_vfslide1up_vf_nxv2f64_nxv2f64_f64:
591 ; CHECK:       # %bb.0: # %entry
592 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
593 ; CHECK-NEXT:    vfslide1up.vf v10, v8, fa0
594 ; CHECK-NEXT:    vmv.v.v v8, v10
595 ; CHECK-NEXT:    ret
596 entry:
597   %a = call <vscale x 2 x double> @llvm.riscv.vfslide1up.nxv2f64.f64(
598     <vscale x 2 x double> undef,
599     <vscale x 2 x double> %0,
600     double %1,
601     iXLen %2)
603   ret <vscale x 2 x double> %a
606 declare <vscale x 2 x double> @llvm.riscv.vfslide1up.mask.nxv2f64.f64(
607   <vscale x 2 x double>,
608   <vscale x 2 x double>,
609   double,
610   <vscale x 2 x i1>,
611   iXLen,
612   iXLen);
614 define <vscale x 2 x double> @intrinsic_vfslide1up_mask_vf_nxv2f64_nxv2f64_f64(<vscale x 2 x double> %0, <vscale x 2 x double> %1, double %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
615 ; CHECK-LABEL: intrinsic_vfslide1up_mask_vf_nxv2f64_nxv2f64_f64:
616 ; CHECK:       # %bb.0: # %entry
617 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu
618 ; CHECK-NEXT:    vfslide1up.vf v8, v10, fa0, v0.t
619 ; CHECK-NEXT:    ret
620 entry:
621   %a = call <vscale x 2 x double> @llvm.riscv.vfslide1up.mask.nxv2f64.f64(
622     <vscale x 2 x double> %0,
623     <vscale x 2 x double> %1,
624     double %2,
625     <vscale x 2 x i1> %3,
626     iXLen %4, iXLen 1)
628   ret <vscale x 2 x double> %a
631 declare <vscale x 4 x double> @llvm.riscv.vfslide1up.nxv4f64.f64(
632   <vscale x 4 x double>,
633   <vscale x 4 x double>,
634   double,
635   iXLen);
637 define <vscale x 4 x double> @intrinsic_vfslide1up_vf_nxv4f64_nxv4f64_f64(<vscale x 4 x double> %0, double %1, iXLen %2) nounwind {
638 ; CHECK-LABEL: intrinsic_vfslide1up_vf_nxv4f64_nxv4f64_f64:
639 ; CHECK:       # %bb.0: # %entry
640 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
641 ; CHECK-NEXT:    vfslide1up.vf v12, v8, fa0
642 ; CHECK-NEXT:    vmv.v.v v8, v12
643 ; CHECK-NEXT:    ret
644 entry:
645   %a = call <vscale x 4 x double> @llvm.riscv.vfslide1up.nxv4f64.f64(
646     <vscale x 4 x double> undef,
647     <vscale x 4 x double> %0,
648     double %1,
649     iXLen %2)
651   ret <vscale x 4 x double> %a
654 declare <vscale x 4 x double> @llvm.riscv.vfslide1up.mask.nxv4f64.f64(
655   <vscale x 4 x double>,
656   <vscale x 4 x double>,
657   double,
658   <vscale x 4 x i1>,
659   iXLen,
660   iXLen);
662 define <vscale x 4 x double> @intrinsic_vfslide1up_mask_vf_nxv4f64_nxv4f64_f64(<vscale x 4 x double> %0, <vscale x 4 x double> %1, double %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
663 ; CHECK-LABEL: intrinsic_vfslide1up_mask_vf_nxv4f64_nxv4f64_f64:
664 ; CHECK:       # %bb.0: # %entry
665 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu
666 ; CHECK-NEXT:    vfslide1up.vf v8, v12, fa0, v0.t
667 ; CHECK-NEXT:    ret
668 entry:
669   %a = call <vscale x 4 x double> @llvm.riscv.vfslide1up.mask.nxv4f64.f64(
670     <vscale x 4 x double> %0,
671     <vscale x 4 x double> %1,
672     double %2,
673     <vscale x 4 x i1> %3,
674     iXLen %4, iXLen 1)
676   ret <vscale x 4 x double> %a
679 declare <vscale x 8 x double> @llvm.riscv.vfslide1up.nxv8f64.f64(
680   <vscale x 8 x double>,
681   <vscale x 8 x double>,
682   double,
683   iXLen);
685 define <vscale x 8 x double> @intrinsic_vfslide1up_vf_nxv8f64_nxv8f64_f64(<vscale x 8 x double> %0, double %1, iXLen %2) nounwind {
686 ; CHECK-LABEL: intrinsic_vfslide1up_vf_nxv8f64_nxv8f64_f64:
687 ; CHECK:       # %bb.0: # %entry
688 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
689 ; CHECK-NEXT:    vfslide1up.vf v16, v8, fa0
690 ; CHECK-NEXT:    vmv.v.v v8, v16
691 ; CHECK-NEXT:    ret
692 entry:
693   %a = call <vscale x 8 x double> @llvm.riscv.vfslide1up.nxv8f64.f64(
694     <vscale x 8 x double> undef,
695     <vscale x 8 x double> %0,
696     double %1,
697     iXLen %2)
699   ret <vscale x 8 x double> %a
702 declare <vscale x 8 x double> @llvm.riscv.vfslide1up.mask.nxv8f64.f64(
703   <vscale x 8 x double>,
704   <vscale x 8 x double>,
705   double,
706   <vscale x 8 x i1>,
707   iXLen,
708   iXLen);
710 define <vscale x 8 x double> @intrinsic_vfslide1up_mask_vf_nxv8f64_nxv8f64_f64(<vscale x 8 x double> %0, <vscale x 8 x double> %1, double %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
711 ; CHECK-LABEL: intrinsic_vfslide1up_mask_vf_nxv8f64_nxv8f64_f64:
712 ; CHECK:       # %bb.0: # %entry
713 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, mu
714 ; CHECK-NEXT:    vfslide1up.vf v8, v16, fa0, v0.t
715 ; CHECK-NEXT:    ret
716 entry:
717   %a = call <vscale x 8 x double> @llvm.riscv.vfslide1up.mask.nxv8f64.f64(
718     <vscale x 8 x double> %0,
719     <vscale x 8 x double> %1,
720     double %2,
721     <vscale x 8 x i1> %3,
722     iXLen %4, iXLen 1)
724   ret <vscale x 8 x double> %a