Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vfwcvt-x-f.ll
blob9a80e02bbbbb44d1f085c5532725e8d3dfbc761b
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 i32> @llvm.riscv.vfwcvt.x.f.v.nxv1i32.nxv1f16(
8   <vscale x 1 x i32>,
9   <vscale x 1 x half>,
10   iXLen, iXLen);
12 define <vscale x 1 x i32> @intrinsic_vfwcvt_x.f.v_nxv1i32_nxv1f16(<vscale x 1 x half> %0, iXLen %1) nounwind {
13 ; CHECK-LABEL: intrinsic_vfwcvt_x.f.v_nxv1i32_nxv1f16:
14 ; CHECK:       # %bb.0: # %entry
15 ; CHECK-NEXT:    fsrmi a1, 0
16 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
17 ; CHECK-NEXT:    vfwcvt.x.f.v v9, v8
18 ; CHECK-NEXT:    fsrm a1
19 ; CHECK-NEXT:    vmv1r.v v8, v9
20 ; CHECK-NEXT:    ret
21 entry:
22   %a = call <vscale x 1 x i32> @llvm.riscv.vfwcvt.x.f.v.nxv1i32.nxv1f16(
23     <vscale x 1 x i32> undef,
24     <vscale x 1 x half> %0,
25     iXLen 0, iXLen %1)
27   ret <vscale x 1 x i32> %a
30 declare <vscale x 1 x i32> @llvm.riscv.vfwcvt.x.f.v.mask.nxv1i32.nxv1f16(
31   <vscale x 1 x i32>,
32   <vscale x 1 x half>,
33   <vscale x 1 x i1>,
34   iXLen, iXLen, iXLen);
36 define <vscale x 1 x i32> @intrinsic_vfwcvt_mask_x.f.v_nxv1i32_nxv1f16(<vscale x 1 x i32> %0, <vscale x 1 x half> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
37 ; CHECK-LABEL: intrinsic_vfwcvt_mask_x.f.v_nxv1i32_nxv1f16:
38 ; CHECK:       # %bb.0: # %entry
39 ; CHECK-NEXT:    fsrmi a1, 0
40 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu
41 ; CHECK-NEXT:    vfwcvt.x.f.v v8, v9, v0.t
42 ; CHECK-NEXT:    fsrm a1
43 ; CHECK-NEXT:    ret
44 entry:
45   %a = call <vscale x 1 x i32> @llvm.riscv.vfwcvt.x.f.v.mask.nxv1i32.nxv1f16(
46     <vscale x 1 x i32> %0,
47     <vscale x 1 x half> %1,
48     <vscale x 1 x i1> %2,
49     iXLen 0, iXLen %3, iXLen 1)
51   ret <vscale x 1 x i32> %a
54 declare <vscale x 2 x i32> @llvm.riscv.vfwcvt.x.f.v.nxv2i32.nxv2f16(
55   <vscale x 2 x i32>,
56   <vscale x 2 x half>,
57   iXLen, iXLen);
59 define <vscale x 2 x i32> @intrinsic_vfwcvt_x.f.v_nxv2i32_nxv2f16(<vscale x 2 x half> %0, iXLen %1) nounwind {
60 ; CHECK-LABEL: intrinsic_vfwcvt_x.f.v_nxv2i32_nxv2f16:
61 ; CHECK:       # %bb.0: # %entry
62 ; CHECK-NEXT:    fsrmi a1, 0
63 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
64 ; CHECK-NEXT:    vfwcvt.x.f.v v9, v8
65 ; CHECK-NEXT:    fsrm a1
66 ; CHECK-NEXT:    vmv1r.v v8, v9
67 ; CHECK-NEXT:    ret
68 entry:
69   %a = call <vscale x 2 x i32> @llvm.riscv.vfwcvt.x.f.v.nxv2i32.nxv2f16(
70     <vscale x 2 x i32> undef,
71     <vscale x 2 x half> %0,
72     iXLen 0, iXLen %1)
74   ret <vscale x 2 x i32> %a
77 declare <vscale x 2 x i32> @llvm.riscv.vfwcvt.x.f.v.mask.nxv2i32.nxv2f16(
78   <vscale x 2 x i32>,
79   <vscale x 2 x half>,
80   <vscale x 2 x i1>,
81   iXLen, iXLen, iXLen);
83 define <vscale x 2 x i32> @intrinsic_vfwcvt_mask_x.f.v_nxv2i32_nxv2f16(<vscale x 2 x i32> %0, <vscale x 2 x half> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
84 ; CHECK-LABEL: intrinsic_vfwcvt_mask_x.f.v_nxv2i32_nxv2f16:
85 ; CHECK:       # %bb.0: # %entry
86 ; CHECK-NEXT:    fsrmi a1, 0
87 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu
88 ; CHECK-NEXT:    vfwcvt.x.f.v v8, v9, v0.t
89 ; CHECK-NEXT:    fsrm a1
90 ; CHECK-NEXT:    ret
91 entry:
92   %a = call <vscale x 2 x i32> @llvm.riscv.vfwcvt.x.f.v.mask.nxv2i32.nxv2f16(
93     <vscale x 2 x i32> %0,
94     <vscale x 2 x half> %1,
95     <vscale x 2 x i1> %2,
96     iXLen 0, iXLen %3, iXLen 1)
98   ret <vscale x 2 x i32> %a
101 declare <vscale x 4 x i32> @llvm.riscv.vfwcvt.x.f.v.nxv4i32.nxv4f16(
102   <vscale x 4 x i32>,
103   <vscale x 4 x half>,
104   iXLen, iXLen);
106 define <vscale x 4 x i32> @intrinsic_vfwcvt_x.f.v_nxv4i32_nxv4f16(<vscale x 4 x half> %0, iXLen %1) nounwind {
107 ; CHECK-LABEL: intrinsic_vfwcvt_x.f.v_nxv4i32_nxv4f16:
108 ; CHECK:       # %bb.0: # %entry
109 ; CHECK-NEXT:    fsrmi a1, 0
110 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
111 ; CHECK-NEXT:    vfwcvt.x.f.v v10, v8
112 ; CHECK-NEXT:    fsrm a1
113 ; CHECK-NEXT:    vmv2r.v v8, v10
114 ; CHECK-NEXT:    ret
115 entry:
116   %a = call <vscale x 4 x i32> @llvm.riscv.vfwcvt.x.f.v.nxv4i32.nxv4f16(
117     <vscale x 4 x i32> undef,
118     <vscale x 4 x half> %0,
119     iXLen 0, iXLen %1)
121   ret <vscale x 4 x i32> %a
124 declare <vscale x 4 x i32> @llvm.riscv.vfwcvt.x.f.v.mask.nxv4i32.nxv4f16(
125   <vscale x 4 x i32>,
126   <vscale x 4 x half>,
127   <vscale x 4 x i1>,
128   iXLen, iXLen, iXLen);
130 define <vscale x 4 x i32> @intrinsic_vfwcvt_mask_x.f.v_nxv4i32_nxv4f16(<vscale x 4 x i32> %0, <vscale x 4 x half> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
131 ; CHECK-LABEL: intrinsic_vfwcvt_mask_x.f.v_nxv4i32_nxv4f16:
132 ; CHECK:       # %bb.0: # %entry
133 ; CHECK-NEXT:    fsrmi a1, 0
134 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu
135 ; CHECK-NEXT:    vfwcvt.x.f.v v8, v10, v0.t
136 ; CHECK-NEXT:    fsrm a1
137 ; CHECK-NEXT:    ret
138 entry:
139   %a = call <vscale x 4 x i32> @llvm.riscv.vfwcvt.x.f.v.mask.nxv4i32.nxv4f16(
140     <vscale x 4 x i32> %0,
141     <vscale x 4 x half> %1,
142     <vscale x 4 x i1> %2,
143     iXLen 0, iXLen %3, iXLen 1)
145   ret <vscale x 4 x i32> %a
148 declare <vscale x 8 x i32> @llvm.riscv.vfwcvt.x.f.v.nxv8i32.nxv8f16(
149   <vscale x 8 x i32>,
150   <vscale x 8 x half>,
151   iXLen, iXLen);
153 define <vscale x 8 x i32> @intrinsic_vfwcvt_x.f.v_nxv8i32_nxv8f16(<vscale x 8 x half> %0, iXLen %1) nounwind {
154 ; CHECK-LABEL: intrinsic_vfwcvt_x.f.v_nxv8i32_nxv8f16:
155 ; CHECK:       # %bb.0: # %entry
156 ; CHECK-NEXT:    fsrmi a1, 0
157 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
158 ; CHECK-NEXT:    vfwcvt.x.f.v v12, v8
159 ; CHECK-NEXT:    fsrm a1
160 ; CHECK-NEXT:    vmv4r.v v8, v12
161 ; CHECK-NEXT:    ret
162 entry:
163   %a = call <vscale x 8 x i32> @llvm.riscv.vfwcvt.x.f.v.nxv8i32.nxv8f16(
164     <vscale x 8 x i32> undef,
165     <vscale x 8 x half> %0,
166     iXLen 0, iXLen %1)
168   ret <vscale x 8 x i32> %a
171 declare <vscale x 8 x i32> @llvm.riscv.vfwcvt.x.f.v.mask.nxv8i32.nxv8f16(
172   <vscale x 8 x i32>,
173   <vscale x 8 x half>,
174   <vscale x 8 x i1>,
175   iXLen, iXLen, iXLen);
177 define <vscale x 8 x i32> @intrinsic_vfwcvt_mask_x.f.v_nxv8i32_nxv8f16(<vscale x 8 x i32> %0, <vscale x 8 x half> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
178 ; CHECK-LABEL: intrinsic_vfwcvt_mask_x.f.v_nxv8i32_nxv8f16:
179 ; CHECK:       # %bb.0: # %entry
180 ; CHECK-NEXT:    fsrmi a1, 0
181 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu
182 ; CHECK-NEXT:    vfwcvt.x.f.v v8, v12, v0.t
183 ; CHECK-NEXT:    fsrm a1
184 ; CHECK-NEXT:    ret
185 entry:
186   %a = call <vscale x 8 x i32> @llvm.riscv.vfwcvt.x.f.v.mask.nxv8i32.nxv8f16(
187     <vscale x 8 x i32> %0,
188     <vscale x 8 x half> %1,
189     <vscale x 8 x i1> %2,
190     iXLen 0, iXLen %3, iXLen 1)
192   ret <vscale x 8 x i32> %a
195 declare <vscale x 16 x i32> @llvm.riscv.vfwcvt.x.f.v.nxv16i32.nxv16f16(
196   <vscale x 16 x i32>,
197   <vscale x 16 x half>,
198   iXLen, iXLen);
200 define <vscale x 16 x i32> @intrinsic_vfwcvt_x.f.v_nxv16i32_nxv16f16(<vscale x 16 x half> %0, iXLen %1) nounwind {
201 ; CHECK-LABEL: intrinsic_vfwcvt_x.f.v_nxv16i32_nxv16f16:
202 ; CHECK:       # %bb.0: # %entry
203 ; CHECK-NEXT:    fsrmi a1, 0
204 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
205 ; CHECK-NEXT:    vfwcvt.x.f.v v16, v8
206 ; CHECK-NEXT:    fsrm a1
207 ; CHECK-NEXT:    vmv8r.v v8, v16
208 ; CHECK-NEXT:    ret
209 entry:
210   %a = call <vscale x 16 x i32> @llvm.riscv.vfwcvt.x.f.v.nxv16i32.nxv16f16(
211     <vscale x 16 x i32> undef,
212     <vscale x 16 x half> %0,
213     iXLen 0, iXLen %1)
215   ret <vscale x 16 x i32> %a
218 declare <vscale x 16 x i32> @llvm.riscv.vfwcvt.x.f.v.mask.nxv16i32.nxv16f16(
219   <vscale x 16 x i32>,
220   <vscale x 16 x half>,
221   <vscale x 16 x i1>,
222   iXLen, iXLen, iXLen);
224 define <vscale x 16 x i32> @intrinsic_vfwcvt_mask_x.f.v_nxv16i32_nxv16f16(<vscale x 16 x i32> %0, <vscale x 16 x half> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
225 ; CHECK-LABEL: intrinsic_vfwcvt_mask_x.f.v_nxv16i32_nxv16f16:
226 ; CHECK:       # %bb.0: # %entry
227 ; CHECK-NEXT:    fsrmi a1, 0
228 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu
229 ; CHECK-NEXT:    vfwcvt.x.f.v v8, v16, v0.t
230 ; CHECK-NEXT:    fsrm a1
231 ; CHECK-NEXT:    ret
232 entry:
233   %a = call <vscale x 16 x i32> @llvm.riscv.vfwcvt.x.f.v.mask.nxv16i32.nxv16f16(
234     <vscale x 16 x i32> %0,
235     <vscale x 16 x half> %1,
236     <vscale x 16 x i1> %2,
237     iXLen 0, iXLen %3, iXLen 1)
239   ret <vscale x 16 x i32> %a
242 declare <vscale x 1 x i64> @llvm.riscv.vfwcvt.x.f.v.nxv1i64.nxv1f32(
243   <vscale x 1 x i64>,
244   <vscale x 1 x float>,
245   iXLen, iXLen);
247 define <vscale x 1 x i64> @intrinsic_vfwcvt_x.f.v_nxv1i64_nxv1f32(<vscale x 1 x float> %0, iXLen %1) nounwind {
248 ; CHECK-LABEL: intrinsic_vfwcvt_x.f.v_nxv1i64_nxv1f32:
249 ; CHECK:       # %bb.0: # %entry
250 ; CHECK-NEXT:    fsrmi a1, 0
251 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
252 ; CHECK-NEXT:    vfwcvt.x.f.v v9, v8
253 ; CHECK-NEXT:    fsrm a1
254 ; CHECK-NEXT:    vmv1r.v v8, v9
255 ; CHECK-NEXT:    ret
256 entry:
257   %a = call <vscale x 1 x i64> @llvm.riscv.vfwcvt.x.f.v.nxv1i64.nxv1f32(
258     <vscale x 1 x i64> undef,
259     <vscale x 1 x float> %0,
260     iXLen 0, iXLen %1)
262   ret <vscale x 1 x i64> %a
265 declare <vscale x 1 x i64> @llvm.riscv.vfwcvt.x.f.v.mask.nxv1i64.nxv1f32(
266   <vscale x 1 x i64>,
267   <vscale x 1 x float>,
268   <vscale x 1 x i1>,
269   iXLen, iXLen, iXLen);
271 define <vscale x 1 x i64> @intrinsic_vfwcvt_mask_x.f.v_nxv1i64_nxv1f32(<vscale x 1 x i64> %0, <vscale x 1 x float> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
272 ; CHECK-LABEL: intrinsic_vfwcvt_mask_x.f.v_nxv1i64_nxv1f32:
273 ; CHECK:       # %bb.0: # %entry
274 ; CHECK-NEXT:    fsrmi a1, 0
275 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu
276 ; CHECK-NEXT:    vfwcvt.x.f.v v8, v9, v0.t
277 ; CHECK-NEXT:    fsrm a1
278 ; CHECK-NEXT:    ret
279 entry:
280   %a = call <vscale x 1 x i64> @llvm.riscv.vfwcvt.x.f.v.mask.nxv1i64.nxv1f32(
281     <vscale x 1 x i64> %0,
282     <vscale x 1 x float> %1,
283     <vscale x 1 x i1> %2,
284     iXLen 0, iXLen %3, iXLen 1)
286   ret <vscale x 1 x i64> %a
289 declare <vscale x 2 x i64> @llvm.riscv.vfwcvt.x.f.v.nxv2i64.nxv2f32(
290   <vscale x 2 x i64>,
291   <vscale x 2 x float>,
292   iXLen, iXLen);
294 define <vscale x 2 x i64> @intrinsic_vfwcvt_x.f.v_nxv2i64_nxv2f32(<vscale x 2 x float> %0, iXLen %1) nounwind {
295 ; CHECK-LABEL: intrinsic_vfwcvt_x.f.v_nxv2i64_nxv2f32:
296 ; CHECK:       # %bb.0: # %entry
297 ; CHECK-NEXT:    fsrmi a1, 0
298 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
299 ; CHECK-NEXT:    vfwcvt.x.f.v v10, v8
300 ; CHECK-NEXT:    fsrm a1
301 ; CHECK-NEXT:    vmv2r.v v8, v10
302 ; CHECK-NEXT:    ret
303 entry:
304   %a = call <vscale x 2 x i64> @llvm.riscv.vfwcvt.x.f.v.nxv2i64.nxv2f32(
305     <vscale x 2 x i64> undef,
306     <vscale x 2 x float> %0,
307     iXLen 0, iXLen %1)
309   ret <vscale x 2 x i64> %a
312 declare <vscale x 2 x i64> @llvm.riscv.vfwcvt.x.f.v.mask.nxv2i64.nxv2f32(
313   <vscale x 2 x i64>,
314   <vscale x 2 x float>,
315   <vscale x 2 x i1>,
316   iXLen, iXLen, iXLen);
318 define <vscale x 2 x i64> @intrinsic_vfwcvt_mask_x.f.v_nxv2i64_nxv2f32(<vscale x 2 x i64> %0, <vscale x 2 x float> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
319 ; CHECK-LABEL: intrinsic_vfwcvt_mask_x.f.v_nxv2i64_nxv2f32:
320 ; CHECK:       # %bb.0: # %entry
321 ; CHECK-NEXT:    fsrmi a1, 0
322 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu
323 ; CHECK-NEXT:    vfwcvt.x.f.v v8, v10, v0.t
324 ; CHECK-NEXT:    fsrm a1
325 ; CHECK-NEXT:    ret
326 entry:
327   %a = call <vscale x 2 x i64> @llvm.riscv.vfwcvt.x.f.v.mask.nxv2i64.nxv2f32(
328     <vscale x 2 x i64> %0,
329     <vscale x 2 x float> %1,
330     <vscale x 2 x i1> %2,
331     iXLen 0, iXLen %3, iXLen 1)
333   ret <vscale x 2 x i64> %a
336 declare <vscale x 4 x i64> @llvm.riscv.vfwcvt.x.f.v.nxv4i64.nxv4f32(
337   <vscale x 4 x i64>,
338   <vscale x 4 x float>,
339   iXLen, iXLen);
341 define <vscale x 4 x i64> @intrinsic_vfwcvt_x.f.v_nxv4i64_nxv4f32(<vscale x 4 x float> %0, iXLen %1) nounwind {
342 ; CHECK-LABEL: intrinsic_vfwcvt_x.f.v_nxv4i64_nxv4f32:
343 ; CHECK:       # %bb.0: # %entry
344 ; CHECK-NEXT:    fsrmi a1, 0
345 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
346 ; CHECK-NEXT:    vfwcvt.x.f.v v12, v8
347 ; CHECK-NEXT:    fsrm a1
348 ; CHECK-NEXT:    vmv4r.v v8, v12
349 ; CHECK-NEXT:    ret
350 entry:
351   %a = call <vscale x 4 x i64> @llvm.riscv.vfwcvt.x.f.v.nxv4i64.nxv4f32(
352     <vscale x 4 x i64> undef,
353     <vscale x 4 x float> %0,
354     iXLen 0, iXLen %1)
356   ret <vscale x 4 x i64> %a
359 declare <vscale x 4 x i64> @llvm.riscv.vfwcvt.x.f.v.mask.nxv4i64.nxv4f32(
360   <vscale x 4 x i64>,
361   <vscale x 4 x float>,
362   <vscale x 4 x i1>,
363   iXLen, iXLen, iXLen);
365 define <vscale x 4 x i64> @intrinsic_vfwcvt_mask_x.f.v_nxv4i64_nxv4f32(<vscale x 4 x i64> %0, <vscale x 4 x float> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
366 ; CHECK-LABEL: intrinsic_vfwcvt_mask_x.f.v_nxv4i64_nxv4f32:
367 ; CHECK:       # %bb.0: # %entry
368 ; CHECK-NEXT:    fsrmi a1, 0
369 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu
370 ; CHECK-NEXT:    vfwcvt.x.f.v v8, v12, v0.t
371 ; CHECK-NEXT:    fsrm a1
372 ; CHECK-NEXT:    ret
373 entry:
374   %a = call <vscale x 4 x i64> @llvm.riscv.vfwcvt.x.f.v.mask.nxv4i64.nxv4f32(
375     <vscale x 4 x i64> %0,
376     <vscale x 4 x float> %1,
377     <vscale x 4 x i1> %2,
378     iXLen 0, iXLen %3, iXLen 1)
380   ret <vscale x 4 x i64> %a
383 declare <vscale x 8 x i64> @llvm.riscv.vfwcvt.x.f.v.nxv8i64.nxv8f32(
384   <vscale x 8 x i64>,
385   <vscale x 8 x float>,
386   iXLen, iXLen);
388 define <vscale x 8 x i64> @intrinsic_vfwcvt_x.f.v_nxv8i64_nxv8f32(<vscale x 8 x float> %0, iXLen %1) nounwind {
389 ; CHECK-LABEL: intrinsic_vfwcvt_x.f.v_nxv8i64_nxv8f32:
390 ; CHECK:       # %bb.0: # %entry
391 ; CHECK-NEXT:    fsrmi a1, 0
392 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
393 ; CHECK-NEXT:    vfwcvt.x.f.v v16, v8
394 ; CHECK-NEXT:    fsrm a1
395 ; CHECK-NEXT:    vmv8r.v v8, v16
396 ; CHECK-NEXT:    ret
397 entry:
398   %a = call <vscale x 8 x i64> @llvm.riscv.vfwcvt.x.f.v.nxv8i64.nxv8f32(
399     <vscale x 8 x i64> undef,
400     <vscale x 8 x float> %0,
401     iXLen 0, iXLen %1)
403   ret <vscale x 8 x i64> %a
406 declare <vscale x 8 x i64> @llvm.riscv.vfwcvt.x.f.v.mask.nxv8i64.nxv8f32(
407   <vscale x 8 x i64>,
408   <vscale x 8 x float>,
409   <vscale x 8 x i1>,
410   iXLen, iXLen, iXLen);
412 define <vscale x 8 x i64> @intrinsic_vfwcvt_mask_x.f.v_nxv8i64_nxv8f32(<vscale x 8 x i64> %0, <vscale x 8 x float> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
413 ; CHECK-LABEL: intrinsic_vfwcvt_mask_x.f.v_nxv8i64_nxv8f32:
414 ; CHECK:       # %bb.0: # %entry
415 ; CHECK-NEXT:    fsrmi a1, 0
416 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu
417 ; CHECK-NEXT:    vfwcvt.x.f.v v8, v16, v0.t
418 ; CHECK-NEXT:    fsrm a1
419 ; CHECK-NEXT:    ret
420 entry:
421   %a = call <vscale x 8 x i64> @llvm.riscv.vfwcvt.x.f.v.mask.nxv8i64.nxv8f32(
422     <vscale x 8 x i64> %0,
423     <vscale x 8 x float> %1,
424     <vscale x 8 x i1> %2,
425     iXLen 0, iXLen %3, iXLen 1)
427   ret <vscale x 8 x i64> %a
430 define <vscale x 8 x i64> @intrinsic_vfwcvt_mask_x.f.v_rtz_nxv8i64_nxv8f32(<vscale x 8 x i64> %0, <vscale x 8 x float> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
431 ; CHECK-LABEL: intrinsic_vfwcvt_mask_x.f.v_rtz_nxv8i64_nxv8f32:
432 ; CHECK:       # %bb.0: # %entry
433 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu
434 ; CHECK-NEXT:    vfwcvt.rtz.x.f.v v8, v16, v0.t
435 ; CHECK-NEXT:    ret
436 entry:
437   %a = call <vscale x 8 x i64> @llvm.riscv.vfwcvt.x.f.v.mask.nxv8i64.nxv8f32(
438     <vscale x 8 x i64> %0,
439     <vscale x 8 x float> %1,
440     <vscale x 8 x i1> %2,
441     iXLen 1, iXLen %3, iXLen 1)
443   ret <vscale x 8 x i64> %a