xref: /llvm-project/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfptoi-constrained-sdnode.ll (revision db3792b87a4fd759e336c44946a3e2ec0008c993)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zvfh,+v -target-abi=ilp32d \
3; RUN:     -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV32
4; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+zvfh,+v -target-abi=lp64d \
5; RUN:     -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV64
6
7declare <1 x i1> @llvm.experimental.constrained.fptosi.v1i1.v1f16(<1 x half>, metadata)
8define <1 x i1> @vfptosi_v1f16_v1i1(<1 x half> %va) strictfp {
9; CHECK-LABEL: vfptosi_v1f16_v1i1:
10; CHECK:       # %bb.0:
11; CHECK-NEXT:    vsetivli zero, 1, e8, mf8, ta, ma
12; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
13; CHECK-NEXT:    vand.vi v8, v9, 1
14; CHECK-NEXT:    vmsne.vi v0, v8, 0
15; CHECK-NEXT:    ret
16  %evec = call <1 x i1> @llvm.experimental.constrained.fptosi.v1i1.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
17  ret <1 x i1> %evec
18}
19
20declare <1 x i1> @llvm.experimental.constrained.fptoui.v1i1.v1f16(<1 x half>, metadata)
21define <1 x i1> @vfptoui_v1f16_v1i1(<1 x half> %va) strictfp {
22; CHECK-LABEL: vfptoui_v1f16_v1i1:
23; CHECK:       # %bb.0:
24; CHECK-NEXT:    vsetivli zero, 1, e8, mf8, ta, ma
25; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
26; CHECK-NEXT:    vand.vi v8, v9, 1
27; CHECK-NEXT:    vmsne.vi v0, v8, 0
28; CHECK-NEXT:    ret
29  %evec = call <1 x i1> @llvm.experimental.constrained.fptoui.v1i1.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
30  ret <1 x i1> %evec
31}
32
33declare <1 x i7> @llvm.experimental.constrained.fptosi.v1i7.v1f16(<1 x half>, metadata)
34define <1 x i7> @vfptosi_v1f16_v1i7(<1 x half> %va) strictfp {
35; RV32-LABEL: vfptosi_v1f16_v1i7:
36; RV32:       # %bb.0:
37; RV32-NEXT:    vsetivli zero, 1, e16, m1, ta, ma
38; RV32-NEXT:    vfmv.f.s fa5, v8
39; RV32-NEXT:    fcvt.w.h a0, fa5, rtz
40; RV32-NEXT:    ret
41;
42; RV64-LABEL: vfptosi_v1f16_v1i7:
43; RV64:       # %bb.0:
44; RV64-NEXT:    vsetivli zero, 1, e16, m1, ta, ma
45; RV64-NEXT:    vfmv.f.s fa5, v8
46; RV64-NEXT:    fcvt.l.h a0, fa5, rtz
47; RV64-NEXT:    ret
48  %evec = call <1 x i7> @llvm.experimental.constrained.fptosi.v1i7.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
49  ret <1 x i7> %evec
50}
51
52declare <1 x i7> @llvm.experimental.constrained.fptoui.v1i7.v1f16(<1 x half>, metadata)
53define <1 x i7> @vfptoui_v1f16_v1i7(<1 x half> %va) strictfp {
54; RV32-LABEL: vfptoui_v1f16_v1i7:
55; RV32:       # %bb.0:
56; RV32-NEXT:    vsetivli zero, 1, e16, m1, ta, ma
57; RV32-NEXT:    vfmv.f.s fa5, v8
58; RV32-NEXT:    fcvt.w.h a0, fa5, rtz
59; RV32-NEXT:    ret
60;
61; RV64-LABEL: vfptoui_v1f16_v1i7:
62; RV64:       # %bb.0:
63; RV64-NEXT:    vsetivli zero, 1, e16, m1, ta, ma
64; RV64-NEXT:    vfmv.f.s fa5, v8
65; RV64-NEXT:    fcvt.l.h a0, fa5, rtz
66; RV64-NEXT:    ret
67  %evec = call <1 x i7> @llvm.experimental.constrained.fptoui.v1i7.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
68  ret <1 x i7> %evec
69}
70
71declare <1 x i8> @llvm.experimental.constrained.fptosi.v1i8.v1f16(<1 x half>, metadata)
72define <1 x i8> @vfptosi_v1f16_v1i8(<1 x half> %va) strictfp {
73; CHECK-LABEL: vfptosi_v1f16_v1i8:
74; CHECK:       # %bb.0:
75; CHECK-NEXT:    vsetivli zero, 1, e8, mf8, ta, ma
76; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
77; CHECK-NEXT:    vmv1r.v v8, v9
78; CHECK-NEXT:    ret
79  %evec = call <1 x i8> @llvm.experimental.constrained.fptosi.v1i8.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
80  ret <1 x i8> %evec
81}
82
83declare <1 x i8> @llvm.experimental.constrained.fptoui.v1i8.v1f16(<1 x half>, metadata)
84define <1 x i8> @vfptoui_v1f16_v1i8(<1 x half> %va) strictfp {
85; CHECK-LABEL: vfptoui_v1f16_v1i8:
86; CHECK:       # %bb.0:
87; CHECK-NEXT:    vsetivli zero, 1, e8, mf8, ta, ma
88; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
89; CHECK-NEXT:    vmv1r.v v8, v9
90; CHECK-NEXT:    ret
91  %evec = call <1 x i8> @llvm.experimental.constrained.fptoui.v1i8.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
92  ret <1 x i8> %evec
93}
94
95declare <1 x i16> @llvm.experimental.constrained.fptosi.v1i16.v1f16(<1 x half>, metadata)
96define <1 x i16> @vfptosi_v1f16_v1i16(<1 x half> %va) strictfp {
97; CHECK-LABEL: vfptosi_v1f16_v1i16:
98; CHECK:       # %bb.0:
99; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
100; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v8
101; CHECK-NEXT:    ret
102  %evec = call <1 x i16> @llvm.experimental.constrained.fptosi.v1i16.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
103  ret <1 x i16> %evec
104}
105
106declare <1 x i16> @llvm.experimental.constrained.fptoui.v1i16.v1f16(<1 x half>, metadata)
107define <1 x i16> @vfptoui_v1f16_v1i16(<1 x half> %va) strictfp {
108; CHECK-LABEL: vfptoui_v1f16_v1i16:
109; CHECK:       # %bb.0:
110; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
111; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v8
112; CHECK-NEXT:    ret
113  %evec = call <1 x i16> @llvm.experimental.constrained.fptoui.v1i16.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
114  ret <1 x i16> %evec
115}
116
117declare <1 x i32> @llvm.experimental.constrained.fptosi.v1i32.v1f16(<1 x half>, metadata)
118define <1 x i32> @vfptosi_v1f16_v1i32(<1 x half> %va) strictfp {
119; CHECK-LABEL: vfptosi_v1f16_v1i32:
120; CHECK:       # %bb.0:
121; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
122; CHECK-NEXT:    vfwcvt.rtz.x.f.v v9, v8
123; CHECK-NEXT:    vmv1r.v v8, v9
124; CHECK-NEXT:    ret
125  %evec = call <1 x i32> @llvm.experimental.constrained.fptosi.v1i32.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
126  ret <1 x i32> %evec
127}
128
129declare <1 x i32> @llvm.experimental.constrained.fptoui.v1i32.v1f16(<1 x half>, metadata)
130define <1 x i32> @vfptoui_v1f16_v1i32(<1 x half> %va) strictfp {
131; CHECK-LABEL: vfptoui_v1f16_v1i32:
132; CHECK:       # %bb.0:
133; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
134; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v9, v8
135; CHECK-NEXT:    vmv1r.v v8, v9
136; CHECK-NEXT:    ret
137  %evec = call <1 x i32> @llvm.experimental.constrained.fptoui.v1i32.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
138  ret <1 x i32> %evec
139}
140
141declare <1 x i64> @llvm.experimental.constrained.fptosi.v1i64.v1f16(<1 x half>, metadata)
142define <1 x i64> @vfptosi_v1f16_v1i64(<1 x half> %va) strictfp {
143; CHECK-LABEL: vfptosi_v1f16_v1i64:
144; CHECK:       # %bb.0:
145; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
146; CHECK-NEXT:    vfwcvt.f.f.v v9, v8
147; CHECK-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma
148; CHECK-NEXT:    vfwcvt.rtz.x.f.v v8, v9
149; CHECK-NEXT:    ret
150  %evec = call <1 x i64> @llvm.experimental.constrained.fptosi.v1i64.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
151  ret <1 x i64> %evec
152}
153
154declare <1 x i64> @llvm.experimental.constrained.fptoui.v1i64.v1f16(<1 x half>, metadata)
155define <1 x i64> @vfptoui_v1f16_v1i64(<1 x half> %va) strictfp {
156; CHECK-LABEL: vfptoui_v1f16_v1i64:
157; CHECK:       # %bb.0:
158; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
159; CHECK-NEXT:    vfwcvt.f.f.v v9, v8
160; CHECK-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma
161; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v8, v9
162; CHECK-NEXT:    ret
163  %evec = call <1 x i64> @llvm.experimental.constrained.fptoui.v1i64.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
164  ret <1 x i64> %evec
165}
166
167declare <2 x i1> @llvm.experimental.constrained.fptosi.v2i1.v2f16(<2 x half>, metadata)
168define <2 x i1> @vfptosi_v2f16_v2i1(<2 x half> %va) strictfp {
169; CHECK-LABEL: vfptosi_v2f16_v2i1:
170; CHECK:       # %bb.0:
171; CHECK-NEXT:    vsetivli zero, 2, e8, mf8, ta, ma
172; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
173; CHECK-NEXT:    vand.vi v8, v9, 1
174; CHECK-NEXT:    vmsne.vi v0, v8, 0
175; CHECK-NEXT:    ret
176  %evec = call <2 x i1> @llvm.experimental.constrained.fptosi.v2i1.v2f16(<2 x half> %va, metadata !"fpexcept.strict")
177  ret <2 x i1> %evec
178}
179
180declare <2 x i1> @llvm.experimental.constrained.fptoui.v2i1.v2f16(<2 x half>, metadata)
181define <2 x i1> @vfptoui_v2f16_v2i1(<2 x half> %va) strictfp {
182; CHECK-LABEL: vfptoui_v2f16_v2i1:
183; CHECK:       # %bb.0:
184; CHECK-NEXT:    vsetivli zero, 2, e8, mf8, ta, ma
185; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
186; CHECK-NEXT:    vand.vi v8, v9, 1
187; CHECK-NEXT:    vmsne.vi v0, v8, 0
188; CHECK-NEXT:    ret
189  %evec = call <2 x i1> @llvm.experimental.constrained.fptoui.v2i1.v2f16(<2 x half> %va, metadata !"fpexcept.strict")
190  ret <2 x i1> %evec
191}
192
193declare <2 x i8> @llvm.experimental.constrained.fptosi.v2i8.v2f16(<2 x half>, metadata)
194define <2 x i8> @vfptosi_v2f16_v2i8(<2 x half> %va) strictfp {
195; CHECK-LABEL: vfptosi_v2f16_v2i8:
196; CHECK:       # %bb.0:
197; CHECK-NEXT:    vsetivli zero, 2, e8, mf8, ta, ma
198; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
199; CHECK-NEXT:    vmv1r.v v8, v9
200; CHECK-NEXT:    ret
201  %evec = call <2 x i8> @llvm.experimental.constrained.fptosi.v2i8.v2f16(<2 x half> %va, metadata !"fpexcept.strict")
202  ret <2 x i8> %evec
203}
204
205declare <2 x i8> @llvm.experimental.constrained.fptoui.v2i8.v2f16(<2 x half>, metadata)
206define <2 x i8> @vfptoui_v2f16_v2i8(<2 x half> %va) strictfp {
207; CHECK-LABEL: vfptoui_v2f16_v2i8:
208; CHECK:       # %bb.0:
209; CHECK-NEXT:    vsetivli zero, 2, e8, mf8, ta, ma
210; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
211; CHECK-NEXT:    vmv1r.v v8, v9
212; CHECK-NEXT:    ret
213  %evec = call <2 x i8> @llvm.experimental.constrained.fptoui.v2i8.v2f16(<2 x half> %va, metadata !"fpexcept.strict")
214  ret <2 x i8> %evec
215}
216
217declare <2 x i16> @llvm.experimental.constrained.fptosi.v2i16.v2f16(<2 x half>, metadata)
218define <2 x i16> @vfptosi_v2f16_v2i16(<2 x half> %va) strictfp {
219; CHECK-LABEL: vfptosi_v2f16_v2i16:
220; CHECK:       # %bb.0:
221; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
222; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v8
223; CHECK-NEXT:    ret
224  %evec = call <2 x i16> @llvm.experimental.constrained.fptosi.v2i16.v2f16(<2 x half> %va, metadata !"fpexcept.strict")
225  ret <2 x i16> %evec
226}
227
228declare <2 x i16> @llvm.experimental.constrained.fptoui.v2i16.v2f16(<2 x half>, metadata)
229define <2 x i16> @vfptoui_v2f16_v2i16(<2 x half> %va) strictfp {
230; CHECK-LABEL: vfptoui_v2f16_v2i16:
231; CHECK:       # %bb.0:
232; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
233; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v8
234; CHECK-NEXT:    ret
235  %evec = call <2 x i16> @llvm.experimental.constrained.fptoui.v2i16.v2f16(<2 x half> %va, metadata !"fpexcept.strict")
236  ret <2 x i16> %evec
237}
238
239declare <2 x i32> @llvm.experimental.constrained.fptosi.v2i32.v2f16(<2 x half>, metadata)
240define <2 x i32> @vfptosi_v2f16_v2i32(<2 x half> %va) strictfp {
241; CHECK-LABEL: vfptosi_v2f16_v2i32:
242; CHECK:       # %bb.0:
243; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
244; CHECK-NEXT:    vfwcvt.rtz.x.f.v v9, v8
245; CHECK-NEXT:    vmv1r.v v8, v9
246; CHECK-NEXT:    ret
247  %evec = call <2 x i32> @llvm.experimental.constrained.fptosi.v2i32.v2f16(<2 x half> %va, metadata !"fpexcept.strict")
248  ret <2 x i32> %evec
249}
250
251declare <2 x i32> @llvm.experimental.constrained.fptoui.v2i32.v2f16(<2 x half>, metadata)
252define <2 x i32> @vfptoui_v2f16_v2i32(<2 x half> %va) strictfp {
253; CHECK-LABEL: vfptoui_v2f16_v2i32:
254; CHECK:       # %bb.0:
255; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
256; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v9, v8
257; CHECK-NEXT:    vmv1r.v v8, v9
258; CHECK-NEXT:    ret
259  %evec = call <2 x i32> @llvm.experimental.constrained.fptoui.v2i32.v2f16(<2 x half> %va, metadata !"fpexcept.strict")
260  ret <2 x i32> %evec
261}
262
263declare <2 x i64> @llvm.experimental.constrained.fptosi.v2i64.v2f16(<2 x half>, metadata)
264define <2 x i64> @vfptosi_v2f16_v2i64(<2 x half> %va) strictfp {
265; CHECK-LABEL: vfptosi_v2f16_v2i64:
266; CHECK:       # %bb.0:
267; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
268; CHECK-NEXT:    vfwcvt.f.f.v v9, v8
269; CHECK-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma
270; CHECK-NEXT:    vfwcvt.rtz.x.f.v v8, v9
271; CHECK-NEXT:    ret
272  %evec = call <2 x i64> @llvm.experimental.constrained.fptosi.v2i64.v2f16(<2 x half> %va, metadata !"fpexcept.strict")
273  ret <2 x i64> %evec
274}
275
276declare <2 x i64> @llvm.experimental.constrained.fptoui.v2i64.v2f16(<2 x half>, metadata)
277define <2 x i64> @vfptoui_v2f16_v2i64(<2 x half> %va) strictfp {
278; CHECK-LABEL: vfptoui_v2f16_v2i64:
279; CHECK:       # %bb.0:
280; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
281; CHECK-NEXT:    vfwcvt.f.f.v v9, v8
282; CHECK-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma
283; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v8, v9
284; CHECK-NEXT:    ret
285  %evec = call <2 x i64> @llvm.experimental.constrained.fptoui.v2i64.v2f16(<2 x half> %va, metadata !"fpexcept.strict")
286  ret <2 x i64> %evec
287}
288
289declare <4 x i1> @llvm.experimental.constrained.fptosi.v4i1.v4f16(<4 x half>, metadata)
290define <4 x i1> @vfptosi_v4f16_v4i1(<4 x half> %va) strictfp {
291; CHECK-LABEL: vfptosi_v4f16_v4i1:
292; CHECK:       # %bb.0:
293; CHECK-NEXT:    vsetivli zero, 4, e8, mf4, ta, ma
294; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
295; CHECK-NEXT:    vand.vi v8, v9, 1
296; CHECK-NEXT:    vmsne.vi v0, v8, 0
297; CHECK-NEXT:    ret
298  %evec = call <4 x i1> @llvm.experimental.constrained.fptosi.v4i1.v4f16(<4 x half> %va, metadata !"fpexcept.strict")
299  ret <4 x i1> %evec
300}
301
302declare <4 x i1> @llvm.experimental.constrained.fptoui.v4i1.v4f16(<4 x half>, metadata)
303define <4 x i1> @vfptoui_v4f16_v4i1(<4 x half> %va) strictfp {
304; CHECK-LABEL: vfptoui_v4f16_v4i1:
305; CHECK:       # %bb.0:
306; CHECK-NEXT:    vsetivli zero, 4, e8, mf4, ta, ma
307; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
308; CHECK-NEXT:    vand.vi v8, v9, 1
309; CHECK-NEXT:    vmsne.vi v0, v8, 0
310; CHECK-NEXT:    ret
311  %evec = call <4 x i1> @llvm.experimental.constrained.fptoui.v4i1.v4f16(<4 x half> %va, metadata !"fpexcept.strict")
312  ret <4 x i1> %evec
313}
314
315declare <4 x i8> @llvm.experimental.constrained.fptosi.v4i8.v4f16(<4 x half>, metadata)
316define <4 x i8> @vfptosi_v4f16_v4i8(<4 x half> %va) strictfp {
317; CHECK-LABEL: vfptosi_v4f16_v4i8:
318; CHECK:       # %bb.0:
319; CHECK-NEXT:    vsetivli zero, 4, e8, mf4, ta, ma
320; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
321; CHECK-NEXT:    vmv1r.v v8, v9
322; CHECK-NEXT:    ret
323  %evec = call <4 x i8> @llvm.experimental.constrained.fptosi.v4i8.v4f16(<4 x half> %va, metadata !"fpexcept.strict")
324  ret <4 x i8> %evec
325}
326
327declare <4 x i8> @llvm.experimental.constrained.fptoui.v4i8.v4f16(<4 x half>, metadata)
328define <4 x i8> @vfptoui_v4f16_v4i8(<4 x half> %va) strictfp {
329; CHECK-LABEL: vfptoui_v4f16_v4i8:
330; CHECK:       # %bb.0:
331; CHECK-NEXT:    vsetivli zero, 4, e8, mf4, ta, ma
332; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
333; CHECK-NEXT:    vmv1r.v v8, v9
334; CHECK-NEXT:    ret
335  %evec = call <4 x i8> @llvm.experimental.constrained.fptoui.v4i8.v4f16(<4 x half> %va, metadata !"fpexcept.strict")
336  ret <4 x i8> %evec
337}
338
339declare <4 x i16> @llvm.experimental.constrained.fptosi.v4i16.v4f16(<4 x half>, metadata)
340define <4 x i16> @vfptosi_v4f16_v4i16(<4 x half> %va) strictfp {
341; CHECK-LABEL: vfptosi_v4f16_v4i16:
342; CHECK:       # %bb.0:
343; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
344; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v8
345; CHECK-NEXT:    ret
346  %evec = call <4 x i16> @llvm.experimental.constrained.fptosi.v4i16.v4f16(<4 x half> %va, metadata !"fpexcept.strict")
347  ret <4 x i16> %evec
348}
349
350declare <4 x i16> @llvm.experimental.constrained.fptoui.v4i16.v4f16(<4 x half>, metadata)
351define <4 x i16> @vfptoui_v4f16_v4i16(<4 x half> %va) strictfp {
352; CHECK-LABEL: vfptoui_v4f16_v4i16:
353; CHECK:       # %bb.0:
354; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
355; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v8
356; CHECK-NEXT:    ret
357  %evec = call <4 x i16> @llvm.experimental.constrained.fptoui.v4i16.v4f16(<4 x half> %va, metadata !"fpexcept.strict")
358  ret <4 x i16> %evec
359}
360
361declare <4 x i32> @llvm.experimental.constrained.fptosi.v4i32.v4f16(<4 x half>, metadata)
362define <4 x i32> @vfptosi_v4f16_v4i32(<4 x half> %va) strictfp {
363; CHECK-LABEL: vfptosi_v4f16_v4i32:
364; CHECK:       # %bb.0:
365; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
366; CHECK-NEXT:    vfwcvt.rtz.x.f.v v9, v8
367; CHECK-NEXT:    vmv1r.v v8, v9
368; CHECK-NEXT:    ret
369  %evec = call <4 x i32> @llvm.experimental.constrained.fptosi.v4i32.v4f16(<4 x half> %va, metadata !"fpexcept.strict")
370  ret <4 x i32> %evec
371}
372
373declare <4 x i32> @llvm.experimental.constrained.fptoui.v4i32.v4f16(<4 x half>, metadata)
374define <4 x i32> @vfptoui_v4f16_v4i32(<4 x half> %va) strictfp {
375; CHECK-LABEL: vfptoui_v4f16_v4i32:
376; CHECK:       # %bb.0:
377; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
378; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v9, v8
379; CHECK-NEXT:    vmv1r.v v8, v9
380; CHECK-NEXT:    ret
381  %evec = call <4 x i32> @llvm.experimental.constrained.fptoui.v4i32.v4f16(<4 x half> %va, metadata !"fpexcept.strict")
382  ret <4 x i32> %evec
383}
384
385declare <4 x i64> @llvm.experimental.constrained.fptosi.v4i64.v4f16(<4 x half>, metadata)
386define <4 x i64> @vfptosi_v4f16_v4i64(<4 x half> %va) strictfp {
387; CHECK-LABEL: vfptosi_v4f16_v4i64:
388; CHECK:       # %bb.0:
389; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
390; CHECK-NEXT:    vfwcvt.f.f.v v10, v8
391; CHECK-NEXT:    vsetvli zero, zero, e32, m1, ta, ma
392; CHECK-NEXT:    vfwcvt.rtz.x.f.v v8, v10
393; CHECK-NEXT:    ret
394  %evec = call <4 x i64> @llvm.experimental.constrained.fptosi.v4i64.v4f16(<4 x half> %va, metadata !"fpexcept.strict")
395  ret <4 x i64> %evec
396}
397
398declare <4 x i64> @llvm.experimental.constrained.fptoui.v4i64.v4f16(<4 x half>, metadata)
399define <4 x i64> @vfptoui_v4f16_v4i64(<4 x half> %va) strictfp {
400; CHECK-LABEL: vfptoui_v4f16_v4i64:
401; CHECK:       # %bb.0:
402; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
403; CHECK-NEXT:    vfwcvt.f.f.v v10, v8
404; CHECK-NEXT:    vsetvli zero, zero, e32, m1, ta, ma
405; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v8, v10
406; CHECK-NEXT:    ret
407  %evec = call <4 x i64> @llvm.experimental.constrained.fptoui.v4i64.v4f16(<4 x half> %va, metadata !"fpexcept.strict")
408  ret <4 x i64> %evec
409}
410
411declare <8 x i1> @llvm.experimental.constrained.fptosi.v8i1.v8f16(<8 x half>, metadata)
412define <8 x i1> @vfptosi_v8f16_v8i1(<8 x half> %va) strictfp {
413; CHECK-LABEL: vfptosi_v8f16_v8i1:
414; CHECK:       # %bb.0:
415; CHECK-NEXT:    vsetivli zero, 8, e8, mf2, ta, ma
416; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
417; CHECK-NEXT:    vand.vi v8, v9, 1
418; CHECK-NEXT:    vmsne.vi v0, v8, 0
419; CHECK-NEXT:    ret
420  %evec = call <8 x i1> @llvm.experimental.constrained.fptosi.v8i1.v8f16(<8 x half> %va, metadata !"fpexcept.strict")
421  ret <8 x i1> %evec
422}
423
424declare <8 x i1> @llvm.experimental.constrained.fptoui.v8i1.v8f16(<8 x half>, metadata)
425define <8 x i1> @vfptoui_v8f16_v8i1(<8 x half> %va) strictfp {
426; CHECK-LABEL: vfptoui_v8f16_v8i1:
427; CHECK:       # %bb.0:
428; CHECK-NEXT:    vsetivli zero, 8, e8, mf2, ta, ma
429; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
430; CHECK-NEXT:    vand.vi v8, v9, 1
431; CHECK-NEXT:    vmsne.vi v0, v8, 0
432; CHECK-NEXT:    ret
433  %evec = call <8 x i1> @llvm.experimental.constrained.fptoui.v8i1.v8f16(<8 x half> %va, metadata !"fpexcept.strict")
434  ret <8 x i1> %evec
435}
436
437declare <8 x i8> @llvm.experimental.constrained.fptosi.v8i8.v8f16(<8 x half>, metadata)
438define <8 x i8> @vfptosi_v8f16_v8i8(<8 x half> %va) strictfp {
439; CHECK-LABEL: vfptosi_v8f16_v8i8:
440; CHECK:       # %bb.0:
441; CHECK-NEXT:    vsetivli zero, 8, e8, mf2, ta, ma
442; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
443; CHECK-NEXT:    vmv1r.v v8, v9
444; CHECK-NEXT:    ret
445  %evec = call <8 x i8> @llvm.experimental.constrained.fptosi.v8i8.v8f16(<8 x half> %va, metadata !"fpexcept.strict")
446  ret <8 x i8> %evec
447}
448
449declare <8 x i8> @llvm.experimental.constrained.fptoui.v8i8.v8f16(<8 x half>, metadata)
450define <8 x i8> @vfptoui_v8f16_v8i8(<8 x half> %va) strictfp {
451; CHECK-LABEL: vfptoui_v8f16_v8i8:
452; CHECK:       # %bb.0:
453; CHECK-NEXT:    vsetivli zero, 8, e8, mf2, ta, ma
454; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
455; CHECK-NEXT:    vmv1r.v v8, v9
456; CHECK-NEXT:    ret
457  %evec = call <8 x i8> @llvm.experimental.constrained.fptoui.v8i8.v8f16(<8 x half> %va, metadata !"fpexcept.strict")
458  ret <8 x i8> %evec
459}
460
461declare <8 x i16> @llvm.experimental.constrained.fptosi.v8i16.v8f16(<8 x half>, metadata)
462define <8 x i16> @vfptosi_v8f16_v8i16(<8 x half> %va) strictfp {
463; CHECK-LABEL: vfptosi_v8f16_v8i16:
464; CHECK:       # %bb.0:
465; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
466; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v8
467; CHECK-NEXT:    ret
468  %evec = call <8 x i16> @llvm.experimental.constrained.fptosi.v8i16.v8f16(<8 x half> %va, metadata !"fpexcept.strict")
469  ret <8 x i16> %evec
470}
471
472declare <8 x i16> @llvm.experimental.constrained.fptoui.v8i16.v8f16(<8 x half>, metadata)
473define <8 x i16> @vfptoui_v8f16_v8i16(<8 x half> %va) strictfp {
474; CHECK-LABEL: vfptoui_v8f16_v8i16:
475; CHECK:       # %bb.0:
476; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
477; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v8
478; CHECK-NEXT:    ret
479  %evec = call <8 x i16> @llvm.experimental.constrained.fptoui.v8i16.v8f16(<8 x half> %va, metadata !"fpexcept.strict")
480  ret <8 x i16> %evec
481}
482
483declare <8 x i32> @llvm.experimental.constrained.fptosi.v8i32.v8f16(<8 x half>, metadata)
484define <8 x i32> @vfptosi_v8f16_v8i32(<8 x half> %va) strictfp {
485; CHECK-LABEL: vfptosi_v8f16_v8i32:
486; CHECK:       # %bb.0:
487; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
488; CHECK-NEXT:    vfwcvt.rtz.x.f.v v10, v8
489; CHECK-NEXT:    vmv2r.v v8, v10
490; CHECK-NEXT:    ret
491  %evec = call <8 x i32> @llvm.experimental.constrained.fptosi.v8i32.v8f16(<8 x half> %va, metadata !"fpexcept.strict")
492  ret <8 x i32> %evec
493}
494
495declare <8 x i32> @llvm.experimental.constrained.fptoui.v8i32.v8f16(<8 x half>, metadata)
496define <8 x i32> @vfptoui_v8f16_v8i32(<8 x half> %va) strictfp {
497; CHECK-LABEL: vfptoui_v8f16_v8i32:
498; CHECK:       # %bb.0:
499; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
500; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v10, v8
501; CHECK-NEXT:    vmv2r.v v8, v10
502; CHECK-NEXT:    ret
503  %evec = call <8 x i32> @llvm.experimental.constrained.fptoui.v8i32.v8f16(<8 x half> %va, metadata !"fpexcept.strict")
504  ret <8 x i32> %evec
505}
506
507declare <8 x i64> @llvm.experimental.constrained.fptosi.v8i64.v8f16(<8 x half>, metadata)
508define <8 x i64> @vfptosi_v8f16_v8i64(<8 x half> %va) strictfp {
509; CHECK-LABEL: vfptosi_v8f16_v8i64:
510; CHECK:       # %bb.0:
511; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
512; CHECK-NEXT:    vfwcvt.f.f.v v12, v8
513; CHECK-NEXT:    vsetvli zero, zero, e32, m2, ta, ma
514; CHECK-NEXT:    vfwcvt.rtz.x.f.v v8, v12
515; CHECK-NEXT:    ret
516  %evec = call <8 x i64> @llvm.experimental.constrained.fptosi.v8i64.v8f16(<8 x half> %va, metadata !"fpexcept.strict")
517  ret <8 x i64> %evec
518}
519
520declare <8 x i64> @llvm.experimental.constrained.fptoui.v8i64.v8f16(<8 x half>, metadata)
521define <8 x i64> @vfptoui_v8f16_v8i64(<8 x half> %va) strictfp {
522; CHECK-LABEL: vfptoui_v8f16_v8i64:
523; CHECK:       # %bb.0:
524; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
525; CHECK-NEXT:    vfwcvt.f.f.v v12, v8
526; CHECK-NEXT:    vsetvli zero, zero, e32, m2, ta, ma
527; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v8, v12
528; CHECK-NEXT:    ret
529  %evec = call <8 x i64> @llvm.experimental.constrained.fptoui.v8i64.v8f16(<8 x half> %va, metadata !"fpexcept.strict")
530  ret <8 x i64> %evec
531}
532
533declare <16 x i1> @llvm.experimental.constrained.fptosi.v16i1.v16f16(<16 x half>, metadata)
534define <16 x i1> @vfptosi_v16f16_v16i1(<16 x half> %va) strictfp {
535; CHECK-LABEL: vfptosi_v16f16_v16i1:
536; CHECK:       # %bb.0:
537; CHECK-NEXT:    vsetivli zero, 16, e8, m1, ta, ma
538; CHECK-NEXT:    vfncvt.rtz.x.f.w v10, v8
539; CHECK-NEXT:    vand.vi v8, v10, 1
540; CHECK-NEXT:    vmsne.vi v0, v8, 0
541; CHECK-NEXT:    ret
542  %evec = call <16 x i1> @llvm.experimental.constrained.fptosi.v16i1.v16f16(<16 x half> %va, metadata !"fpexcept.strict")
543  ret <16 x i1> %evec
544}
545
546declare <16 x i1> @llvm.experimental.constrained.fptoui.v16i1.v16f16(<16 x half>, metadata)
547define <16 x i1> @vfptoui_v16f16_v16i1(<16 x half> %va) strictfp {
548; CHECK-LABEL: vfptoui_v16f16_v16i1:
549; CHECK:       # %bb.0:
550; CHECK-NEXT:    vsetivli zero, 16, e8, m1, ta, ma
551; CHECK-NEXT:    vfncvt.rtz.xu.f.w v10, v8
552; CHECK-NEXT:    vand.vi v8, v10, 1
553; CHECK-NEXT:    vmsne.vi v0, v8, 0
554; CHECK-NEXT:    ret
555  %evec = call <16 x i1> @llvm.experimental.constrained.fptoui.v16i1.v16f16(<16 x half> %va, metadata !"fpexcept.strict")
556  ret <16 x i1> %evec
557}
558
559declare <16 x i8> @llvm.experimental.constrained.fptosi.v16i8.v16f16(<16 x half>, metadata)
560define <16 x i8> @vfptosi_v16f16_v16i8(<16 x half> %va) strictfp {
561; CHECK-LABEL: vfptosi_v16f16_v16i8:
562; CHECK:       # %bb.0:
563; CHECK-NEXT:    vsetivli zero, 16, e8, m1, ta, ma
564; CHECK-NEXT:    vfncvt.rtz.x.f.w v10, v8
565; CHECK-NEXT:    vmv.v.v v8, v10
566; CHECK-NEXT:    ret
567  %evec = call <16 x i8> @llvm.experimental.constrained.fptosi.v16i8.v16f16(<16 x half> %va, metadata !"fpexcept.strict")
568  ret <16 x i8> %evec
569}
570
571declare <16 x i8> @llvm.experimental.constrained.fptoui.v16i8.v16f16(<16 x half>, metadata)
572define <16 x i8> @vfptoui_v16f16_v16i8(<16 x half> %va) strictfp {
573; CHECK-LABEL: vfptoui_v16f16_v16i8:
574; CHECK:       # %bb.0:
575; CHECK-NEXT:    vsetivli zero, 16, e8, m1, ta, ma
576; CHECK-NEXT:    vfncvt.rtz.xu.f.w v10, v8
577; CHECK-NEXT:    vmv.v.v v8, v10
578; CHECK-NEXT:    ret
579  %evec = call <16 x i8> @llvm.experimental.constrained.fptoui.v16i8.v16f16(<16 x half> %va, metadata !"fpexcept.strict")
580  ret <16 x i8> %evec
581}
582
583declare <16 x i16> @llvm.experimental.constrained.fptosi.v16i16.v16f16(<16 x half>, metadata)
584define <16 x i16> @vfptosi_v16f16_v16i16(<16 x half> %va) strictfp {
585; CHECK-LABEL: vfptosi_v16f16_v16i16:
586; CHECK:       # %bb.0:
587; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
588; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v8
589; CHECK-NEXT:    ret
590  %evec = call <16 x i16> @llvm.experimental.constrained.fptosi.v16i16.v16f16(<16 x half> %va, metadata !"fpexcept.strict")
591  ret <16 x i16> %evec
592}
593
594declare <16 x i16> @llvm.experimental.constrained.fptoui.v16i16.v16f16(<16 x half>, metadata)
595define <16 x i16> @vfptoui_v16f16_v16i16(<16 x half> %va) strictfp {
596; CHECK-LABEL: vfptoui_v16f16_v16i16:
597; CHECK:       # %bb.0:
598; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
599; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v8
600; CHECK-NEXT:    ret
601  %evec = call <16 x i16> @llvm.experimental.constrained.fptoui.v16i16.v16f16(<16 x half> %va, metadata !"fpexcept.strict")
602  ret <16 x i16> %evec
603}
604
605declare <16 x i32> @llvm.experimental.constrained.fptosi.v16i32.v16f16(<16 x half>, metadata)
606define <16 x i32> @vfptosi_v16f16_v16i32(<16 x half> %va) strictfp {
607; CHECK-LABEL: vfptosi_v16f16_v16i32:
608; CHECK:       # %bb.0:
609; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
610; CHECK-NEXT:    vfwcvt.rtz.x.f.v v12, v8
611; CHECK-NEXT:    vmv4r.v v8, v12
612; CHECK-NEXT:    ret
613  %evec = call <16 x i32> @llvm.experimental.constrained.fptosi.v16i32.v16f16(<16 x half> %va, metadata !"fpexcept.strict")
614  ret <16 x i32> %evec
615}
616
617declare <16 x i32> @llvm.experimental.constrained.fptoui.v16i32.v16f16(<16 x half>, metadata)
618define <16 x i32> @vfptoui_v16f16_v16i32(<16 x half> %va) strictfp {
619; CHECK-LABEL: vfptoui_v16f16_v16i32:
620; CHECK:       # %bb.0:
621; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
622; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v12, v8
623; CHECK-NEXT:    vmv4r.v v8, v12
624; CHECK-NEXT:    ret
625  %evec = call <16 x i32> @llvm.experimental.constrained.fptoui.v16i32.v16f16(<16 x half> %va, metadata !"fpexcept.strict")
626  ret <16 x i32> %evec
627}
628
629declare <32 x i1> @llvm.experimental.constrained.fptosi.v32i1.v32f16(<32 x half>, metadata)
630define <32 x i1> @vfptosi_v32f16_v32i1(<32 x half> %va) strictfp {
631; CHECK-LABEL: vfptosi_v32f16_v32i1:
632; CHECK:       # %bb.0:
633; CHECK-NEXT:    li a0, 32
634; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
635; CHECK-NEXT:    vfncvt.rtz.x.f.w v12, v8
636; CHECK-NEXT:    vand.vi v8, v12, 1
637; CHECK-NEXT:    vmsne.vi v0, v8, 0
638; CHECK-NEXT:    ret
639  %evec = call <32 x i1> @llvm.experimental.constrained.fptosi.v32i1.v32f16(<32 x half> %va, metadata !"fpexcept.strict")
640  ret <32 x i1> %evec
641}
642
643declare <32 x i1> @llvm.experimental.constrained.fptoui.v32i1.v32f16(<32 x half>, metadata)
644define <32 x i1> @vfptoui_v32f16_v32i1(<32 x half> %va) strictfp {
645; CHECK-LABEL: vfptoui_v32f16_v32i1:
646; CHECK:       # %bb.0:
647; CHECK-NEXT:    li a0, 32
648; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
649; CHECK-NEXT:    vfncvt.rtz.xu.f.w v12, v8
650; CHECK-NEXT:    vand.vi v8, v12, 1
651; CHECK-NEXT:    vmsne.vi v0, v8, 0
652; CHECK-NEXT:    ret
653  %evec = call <32 x i1> @llvm.experimental.constrained.fptoui.v32i1.v32f16(<32 x half> %va, metadata !"fpexcept.strict")
654  ret <32 x i1> %evec
655}
656
657declare <32 x i8> @llvm.experimental.constrained.fptosi.v32i8.v32f16(<32 x half>, metadata)
658define <32 x i8> @vfptosi_v32f16_v32i8(<32 x half> %va) strictfp {
659; CHECK-LABEL: vfptosi_v32f16_v32i8:
660; CHECK:       # %bb.0:
661; CHECK-NEXT:    li a0, 32
662; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
663; CHECK-NEXT:    vfncvt.rtz.x.f.w v12, v8
664; CHECK-NEXT:    vmv.v.v v8, v12
665; CHECK-NEXT:    ret
666  %evec = call <32 x i8> @llvm.experimental.constrained.fptosi.v32i8.v32f16(<32 x half> %va, metadata !"fpexcept.strict")
667  ret <32 x i8> %evec
668}
669
670declare <32 x i8> @llvm.experimental.constrained.fptoui.v32i8.v32f16(<32 x half>, metadata)
671define <32 x i8> @vfptoui_v32f16_v32i8(<32 x half> %va) strictfp {
672; CHECK-LABEL: vfptoui_v32f16_v32i8:
673; CHECK:       # %bb.0:
674; CHECK-NEXT:    li a0, 32
675; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
676; CHECK-NEXT:    vfncvt.rtz.xu.f.w v12, v8
677; CHECK-NEXT:    vmv.v.v v8, v12
678; CHECK-NEXT:    ret
679  %evec = call <32 x i8> @llvm.experimental.constrained.fptoui.v32i8.v32f16(<32 x half> %va, metadata !"fpexcept.strict")
680  ret <32 x i8> %evec
681}
682
683declare <32 x i16> @llvm.experimental.constrained.fptosi.v32i16.v32f16(<32 x half>, metadata)
684define <32 x i16> @vfptosi_v32f16_v32i16(<32 x half> %va) strictfp {
685; CHECK-LABEL: vfptosi_v32f16_v32i16:
686; CHECK:       # %bb.0:
687; CHECK-NEXT:    li a0, 32
688; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
689; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v8
690; CHECK-NEXT:    ret
691  %evec = call <32 x i16> @llvm.experimental.constrained.fptosi.v32i16.v32f16(<32 x half> %va, metadata !"fpexcept.strict")
692  ret <32 x i16> %evec
693}
694
695declare <32 x i16> @llvm.experimental.constrained.fptoui.v32i16.v32f16(<32 x half>, metadata)
696define <32 x i16> @vfptoui_v32f16_v32i16(<32 x half> %va) strictfp {
697; CHECK-LABEL: vfptoui_v32f16_v32i16:
698; CHECK:       # %bb.0:
699; CHECK-NEXT:    li a0, 32
700; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
701; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v8
702; CHECK-NEXT:    ret
703  %evec = call <32 x i16> @llvm.experimental.constrained.fptoui.v32i16.v32f16(<32 x half> %va, metadata !"fpexcept.strict")
704  ret <32 x i16> %evec
705}
706
707declare <1 x i1> @llvm.experimental.constrained.fptosi.v1i1.v1f32(<1 x float>, metadata)
708define <1 x i1> @vfptosi_v1f32_v1i1(<1 x float> %va) strictfp {
709; CHECK-LABEL: vfptosi_v1f32_v1i1:
710; CHECK:       # %bb.0:
711; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
712; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
713; CHECK-NEXT:    vand.vi v8, v9, 1
714; CHECK-NEXT:    vmsne.vi v0, v8, 0
715; CHECK-NEXT:    ret
716  %evec = call <1 x i1> @llvm.experimental.constrained.fptosi.v1i1.v1f32(<1 x float> %va, metadata !"fpexcept.strict")
717  ret <1 x i1> %evec
718}
719
720declare <1 x i1> @llvm.experimental.constrained.fptoui.v1i1.v1f32(<1 x float>, metadata)
721define <1 x i1> @vfptoui_v1f32_v1i1(<1 x float> %va) strictfp {
722; CHECK-LABEL: vfptoui_v1f32_v1i1:
723; CHECK:       # %bb.0:
724; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
725; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
726; CHECK-NEXT:    vand.vi v8, v9, 1
727; CHECK-NEXT:    vmsne.vi v0, v8, 0
728; CHECK-NEXT:    ret
729  %evec = call <1 x i1> @llvm.experimental.constrained.fptoui.v1i1.v1f32(<1 x float> %va, metadata !"fpexcept.strict")
730  ret <1 x i1> %evec
731}
732
733declare <1 x i8> @llvm.experimental.constrained.fptosi.v1i8.v1f32(<1 x float>, metadata)
734define <1 x i8> @vfptosi_v1f32_v1i8(<1 x float> %va) strictfp {
735; CHECK-LABEL: vfptosi_v1f32_v1i8:
736; CHECK:       # %bb.0:
737; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
738; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
739; CHECK-NEXT:    vsetvli zero, zero, e8, mf8, ta, ma
740; CHECK-NEXT:    vnsrl.wi v8, v9, 0
741; CHECK-NEXT:    ret
742  %evec = call <1 x i8> @llvm.experimental.constrained.fptosi.v1i8.v1f32(<1 x float> %va, metadata !"fpexcept.strict")
743  ret <1 x i8> %evec
744}
745
746declare <1 x i8> @llvm.experimental.constrained.fptoui.v1i8.v1f32(<1 x float>, metadata)
747define <1 x i8> @vfptoui_v1f32_v1i8(<1 x float> %va) strictfp {
748; CHECK-LABEL: vfptoui_v1f32_v1i8:
749; CHECK:       # %bb.0:
750; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
751; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
752; CHECK-NEXT:    vsetvli zero, zero, e8, mf8, ta, ma
753; CHECK-NEXT:    vnsrl.wi v8, v9, 0
754; CHECK-NEXT:    ret
755  %evec = call <1 x i8> @llvm.experimental.constrained.fptoui.v1i8.v1f32(<1 x float> %va, metadata !"fpexcept.strict")
756  ret <1 x i8> %evec
757}
758
759declare <1 x i16> @llvm.experimental.constrained.fptosi.v1i16.v1f32(<1 x float>, metadata)
760define <1 x i16> @vfptosi_v1f32_v1i16(<1 x float> %va) strictfp {
761; CHECK-LABEL: vfptosi_v1f32_v1i16:
762; CHECK:       # %bb.0:
763; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
764; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
765; CHECK-NEXT:    vmv1r.v v8, v9
766; CHECK-NEXT:    ret
767  %evec = call <1 x i16> @llvm.experimental.constrained.fptosi.v1i16.v1f32(<1 x float> %va, metadata !"fpexcept.strict")
768  ret <1 x i16> %evec
769}
770
771declare <1 x i16> @llvm.experimental.constrained.fptoui.v1i16.v1f32(<1 x float>, metadata)
772define <1 x i16> @vfptoui_v1f32_v1i16(<1 x float> %va) strictfp {
773; CHECK-LABEL: vfptoui_v1f32_v1i16:
774; CHECK:       # %bb.0:
775; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
776; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
777; CHECK-NEXT:    vmv1r.v v8, v9
778; CHECK-NEXT:    ret
779  %evec = call <1 x i16> @llvm.experimental.constrained.fptoui.v1i16.v1f32(<1 x float> %va, metadata !"fpexcept.strict")
780  ret <1 x i16> %evec
781}
782
783declare <1 x i32> @llvm.experimental.constrained.fptosi.v1i32.v1f32(<1 x float>, metadata)
784define <1 x i32> @vfptosi_v1f32_v1i32(<1 x float> %va) strictfp {
785; CHECK-LABEL: vfptosi_v1f32_v1i32:
786; CHECK:       # %bb.0:
787; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
788; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v8
789; CHECK-NEXT:    ret
790  %evec = call <1 x i32> @llvm.experimental.constrained.fptosi.v1i32.v1f32(<1 x float> %va, metadata !"fpexcept.strict")
791  ret <1 x i32> %evec
792}
793
794declare <1 x i32> @llvm.experimental.constrained.fptoui.v1i32.v1f32(<1 x float>, metadata)
795define <1 x i32> @vfptoui_v1f32_v1i32(<1 x float> %va) strictfp {
796; CHECK-LABEL: vfptoui_v1f32_v1i32:
797; CHECK:       # %bb.0:
798; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
799; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v8
800; CHECK-NEXT:    ret
801  %evec = call <1 x i32> @llvm.experimental.constrained.fptoui.v1i32.v1f32(<1 x float> %va, metadata !"fpexcept.strict")
802  ret <1 x i32> %evec
803}
804
805declare <1 x i64> @llvm.experimental.constrained.fptosi.v1i64.v1f32(<1 x float>, metadata)
806define <1 x i64> @vfptosi_v1f32_v1i64(<1 x float> %va) strictfp {
807; CHECK-LABEL: vfptosi_v1f32_v1i64:
808; CHECK:       # %bb.0:
809; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
810; CHECK-NEXT:    vfwcvt.rtz.x.f.v v9, v8
811; CHECK-NEXT:    vmv1r.v v8, v9
812; CHECK-NEXT:    ret
813  %evec = call <1 x i64> @llvm.experimental.constrained.fptosi.v1i64.v1f32(<1 x float> %va, metadata !"fpexcept.strict")
814  ret <1 x i64> %evec
815}
816
817declare <1 x i64> @llvm.experimental.constrained.fptoui.v1i64.v1f32(<1 x float>, metadata)
818define <1 x i64> @vfptoui_v1f32_v1i64(<1 x float> %va) strictfp {
819; CHECK-LABEL: vfptoui_v1f32_v1i64:
820; CHECK:       # %bb.0:
821; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
822; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v9, v8
823; CHECK-NEXT:    vmv1r.v v8, v9
824; CHECK-NEXT:    ret
825  %evec = call <1 x i64> @llvm.experimental.constrained.fptoui.v1i64.v1f32(<1 x float> %va, metadata !"fpexcept.strict")
826  ret <1 x i64> %evec
827}
828
829declare <2 x i1> @llvm.experimental.constrained.fptosi.v2i1.v2f32(<2 x float>, metadata)
830define <2 x i1> @vfptosi_v2f32_v2i1(<2 x float> %va) strictfp {
831; CHECK-LABEL: vfptosi_v2f32_v2i1:
832; CHECK:       # %bb.0:
833; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
834; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
835; CHECK-NEXT:    vand.vi v8, v9, 1
836; CHECK-NEXT:    vmsne.vi v0, v8, 0
837; CHECK-NEXT:    ret
838  %evec = call <2 x i1> @llvm.experimental.constrained.fptosi.v2i1.v2f32(<2 x float> %va, metadata !"fpexcept.strict")
839  ret <2 x i1> %evec
840}
841
842declare <2 x i1> @llvm.experimental.constrained.fptoui.v2i1.v2f32(<2 x float>, metadata)
843define <2 x i1> @vfptoui_v2f32_v2i1(<2 x float> %va) strictfp {
844; CHECK-LABEL: vfptoui_v2f32_v2i1:
845; CHECK:       # %bb.0:
846; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
847; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
848; CHECK-NEXT:    vand.vi v8, v9, 1
849; CHECK-NEXT:    vmsne.vi v0, v8, 0
850; CHECK-NEXT:    ret
851  %evec = call <2 x i1> @llvm.experimental.constrained.fptoui.v2i1.v2f32(<2 x float> %va, metadata !"fpexcept.strict")
852  ret <2 x i1> %evec
853}
854
855declare <2 x i8> @llvm.experimental.constrained.fptosi.v2i8.v2f32(<2 x float>, metadata)
856define <2 x i8> @vfptosi_v2f32_v2i8(<2 x float> %va) strictfp {
857; CHECK-LABEL: vfptosi_v2f32_v2i8:
858; CHECK:       # %bb.0:
859; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
860; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
861; CHECK-NEXT:    vsetvli zero, zero, e8, mf8, ta, ma
862; CHECK-NEXT:    vnsrl.wi v8, v9, 0
863; CHECK-NEXT:    ret
864  %evec = call <2 x i8> @llvm.experimental.constrained.fptosi.v2i8.v2f32(<2 x float> %va, metadata !"fpexcept.strict")
865  ret <2 x i8> %evec
866}
867
868declare <2 x i8> @llvm.experimental.constrained.fptoui.v2i8.v2f32(<2 x float>, metadata)
869define <2 x i8> @vfptoui_v2f32_v2i8(<2 x float> %va) strictfp {
870; CHECK-LABEL: vfptoui_v2f32_v2i8:
871; CHECK:       # %bb.0:
872; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
873; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
874; CHECK-NEXT:    vsetvli zero, zero, e8, mf8, ta, ma
875; CHECK-NEXT:    vnsrl.wi v8, v9, 0
876; CHECK-NEXT:    ret
877  %evec = call <2 x i8> @llvm.experimental.constrained.fptoui.v2i8.v2f32(<2 x float> %va, metadata !"fpexcept.strict")
878  ret <2 x i8> %evec
879}
880
881declare <2 x i16> @llvm.experimental.constrained.fptosi.v2i16.v2f32(<2 x float>, metadata)
882define <2 x i16> @vfptosi_v2f32_v2i16(<2 x float> %va) strictfp {
883; CHECK-LABEL: vfptosi_v2f32_v2i16:
884; CHECK:       # %bb.0:
885; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
886; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
887; CHECK-NEXT:    vmv1r.v v8, v9
888; CHECK-NEXT:    ret
889  %evec = call <2 x i16> @llvm.experimental.constrained.fptosi.v2i16.v2f32(<2 x float> %va, metadata !"fpexcept.strict")
890  ret <2 x i16> %evec
891}
892
893declare <2 x i16> @llvm.experimental.constrained.fptoui.v2i16.v2f32(<2 x float>, metadata)
894define <2 x i16> @vfptoui_v2f32_v2i16(<2 x float> %va) strictfp {
895; CHECK-LABEL: vfptoui_v2f32_v2i16:
896; CHECK:       # %bb.0:
897; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
898; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
899; CHECK-NEXT:    vmv1r.v v8, v9
900; CHECK-NEXT:    ret
901  %evec = call <2 x i16> @llvm.experimental.constrained.fptoui.v2i16.v2f32(<2 x float> %va, metadata !"fpexcept.strict")
902  ret <2 x i16> %evec
903}
904
905declare <2 x i32> @llvm.experimental.constrained.fptosi.v2i32.v2f32(<2 x float>, metadata)
906define <2 x i32> @vfptosi_v2f32_v2i32(<2 x float> %va) strictfp {
907; CHECK-LABEL: vfptosi_v2f32_v2i32:
908; CHECK:       # %bb.0:
909; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
910; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v8
911; CHECK-NEXT:    ret
912  %evec = call <2 x i32> @llvm.experimental.constrained.fptosi.v2i32.v2f32(<2 x float> %va, metadata !"fpexcept.strict")
913  ret <2 x i32> %evec
914}
915
916declare <2 x i32> @llvm.experimental.constrained.fptoui.v2i32.v2f32(<2 x float>, metadata)
917define <2 x i32> @vfptoui_v2f32_v2i32(<2 x float> %va) strictfp {
918; CHECK-LABEL: vfptoui_v2f32_v2i32:
919; CHECK:       # %bb.0:
920; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
921; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v8
922; CHECK-NEXT:    ret
923  %evec = call <2 x i32> @llvm.experimental.constrained.fptoui.v2i32.v2f32(<2 x float> %va, metadata !"fpexcept.strict")
924  ret <2 x i32> %evec
925}
926
927declare <2 x i64> @llvm.experimental.constrained.fptosi.v2i64.v2f32(<2 x float>, metadata)
928define <2 x i64> @vfptosi_v2f32_v2i64(<2 x float> %va) strictfp {
929; CHECK-LABEL: vfptosi_v2f32_v2i64:
930; CHECK:       # %bb.0:
931; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
932; CHECK-NEXT:    vfwcvt.rtz.x.f.v v9, v8
933; CHECK-NEXT:    vmv1r.v v8, v9
934; CHECK-NEXT:    ret
935  %evec = call <2 x i64> @llvm.experimental.constrained.fptosi.v2i64.v2f32(<2 x float> %va, metadata !"fpexcept.strict")
936  ret <2 x i64> %evec
937}
938
939declare <2 x i64> @llvm.experimental.constrained.fptoui.v2i64.v2f32(<2 x float>, metadata)
940define <2 x i64> @vfptoui_v2f32_v2i64(<2 x float> %va) strictfp {
941; CHECK-LABEL: vfptoui_v2f32_v2i64:
942; CHECK:       # %bb.0:
943; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
944; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v9, v8
945; CHECK-NEXT:    vmv1r.v v8, v9
946; CHECK-NEXT:    ret
947  %evec = call <2 x i64> @llvm.experimental.constrained.fptoui.v2i64.v2f32(<2 x float> %va, metadata !"fpexcept.strict")
948  ret <2 x i64> %evec
949}
950
951declare <4 x i1> @llvm.experimental.constrained.fptosi.v4i1.v4f32(<4 x float>, metadata)
952define <4 x i1> @vfptosi_v4f32_v4i1(<4 x float> %va) strictfp {
953; CHECK-LABEL: vfptosi_v4f32_v4i1:
954; CHECK:       # %bb.0:
955; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
956; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
957; CHECK-NEXT:    vand.vi v8, v9, 1
958; CHECK-NEXT:    vmsne.vi v0, v8, 0
959; CHECK-NEXT:    ret
960  %evec = call <4 x i1> @llvm.experimental.constrained.fptosi.v4i1.v4f32(<4 x float> %va, metadata !"fpexcept.strict")
961  ret <4 x i1> %evec
962}
963
964declare <4 x i1> @llvm.experimental.constrained.fptoui.v4i1.v4f32(<4 x float>, metadata)
965define <4 x i1> @vfptoui_v4f32_v4i1(<4 x float> %va) strictfp {
966; CHECK-LABEL: vfptoui_v4f32_v4i1:
967; CHECK:       # %bb.0:
968; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
969; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
970; CHECK-NEXT:    vand.vi v8, v9, 1
971; CHECK-NEXT:    vmsne.vi v0, v8, 0
972; CHECK-NEXT:    ret
973  %evec = call <4 x i1> @llvm.experimental.constrained.fptoui.v4i1.v4f32(<4 x float> %va, metadata !"fpexcept.strict")
974  ret <4 x i1> %evec
975}
976
977declare <4 x i8> @llvm.experimental.constrained.fptosi.v4i8.v4f32(<4 x float>, metadata)
978define <4 x i8> @vfptosi_v4f32_v4i8(<4 x float> %va) strictfp {
979; CHECK-LABEL: vfptosi_v4f32_v4i8:
980; CHECK:       # %bb.0:
981; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
982; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
983; CHECK-NEXT:    vsetvli zero, zero, e8, mf4, ta, ma
984; CHECK-NEXT:    vnsrl.wi v8, v9, 0
985; CHECK-NEXT:    ret
986  %evec = call <4 x i8> @llvm.experimental.constrained.fptosi.v4i8.v4f32(<4 x float> %va, metadata !"fpexcept.strict")
987  ret <4 x i8> %evec
988}
989
990declare <4 x i8> @llvm.experimental.constrained.fptoui.v4i8.v4f32(<4 x float>, metadata)
991define <4 x i8> @vfptoui_v4f32_v4i8(<4 x float> %va) strictfp {
992; CHECK-LABEL: vfptoui_v4f32_v4i8:
993; CHECK:       # %bb.0:
994; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
995; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
996; CHECK-NEXT:    vsetvli zero, zero, e8, mf4, ta, ma
997; CHECK-NEXT:    vnsrl.wi v8, v9, 0
998; CHECK-NEXT:    ret
999  %evec = call <4 x i8> @llvm.experimental.constrained.fptoui.v4i8.v4f32(<4 x float> %va, metadata !"fpexcept.strict")
1000  ret <4 x i8> %evec
1001}
1002
1003declare <4 x i16> @llvm.experimental.constrained.fptosi.v4i16.v4f32(<4 x float>, metadata)
1004define <4 x i16> @vfptosi_v4f32_v4i16(<4 x float> %va) strictfp {
1005; CHECK-LABEL: vfptosi_v4f32_v4i16:
1006; CHECK:       # %bb.0:
1007; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1008; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
1009; CHECK-NEXT:    vmv1r.v v8, v9
1010; CHECK-NEXT:    ret
1011  %evec = call <4 x i16> @llvm.experimental.constrained.fptosi.v4i16.v4f32(<4 x float> %va, metadata !"fpexcept.strict")
1012  ret <4 x i16> %evec
1013}
1014
1015declare <4 x i16> @llvm.experimental.constrained.fptoui.v4i16.v4f32(<4 x float>, metadata)
1016define <4 x i16> @vfptoui_v4f32_v4i16(<4 x float> %va) strictfp {
1017; CHECK-LABEL: vfptoui_v4f32_v4i16:
1018; CHECK:       # %bb.0:
1019; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1020; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
1021; CHECK-NEXT:    vmv1r.v v8, v9
1022; CHECK-NEXT:    ret
1023  %evec = call <4 x i16> @llvm.experimental.constrained.fptoui.v4i16.v4f32(<4 x float> %va, metadata !"fpexcept.strict")
1024  ret <4 x i16> %evec
1025}
1026
1027declare <4 x i32> @llvm.experimental.constrained.fptosi.v4i32.v4f32(<4 x float>, metadata)
1028define <4 x i32> @vfptosi_v4f32_v4i32(<4 x float> %va) strictfp {
1029; CHECK-LABEL: vfptosi_v4f32_v4i32:
1030; CHECK:       # %bb.0:
1031; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
1032; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v8
1033; CHECK-NEXT:    ret
1034  %evec = call <4 x i32> @llvm.experimental.constrained.fptosi.v4i32.v4f32(<4 x float> %va, metadata !"fpexcept.strict")
1035  ret <4 x i32> %evec
1036}
1037
1038declare <4 x i32> @llvm.experimental.constrained.fptoui.v4i32.v4f32(<4 x float>, metadata)
1039define <4 x i32> @vfptoui_v4f32_v4i32(<4 x float> %va) strictfp {
1040; CHECK-LABEL: vfptoui_v4f32_v4i32:
1041; CHECK:       # %bb.0:
1042; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
1043; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v8
1044; CHECK-NEXT:    ret
1045  %evec = call <4 x i32> @llvm.experimental.constrained.fptoui.v4i32.v4f32(<4 x float> %va, metadata !"fpexcept.strict")
1046  ret <4 x i32> %evec
1047}
1048
1049declare <4 x i64> @llvm.experimental.constrained.fptosi.v4i64.v4f32(<4 x float>, metadata)
1050define <4 x i64> @vfptosi_v4f32_v4i64(<4 x float> %va) strictfp {
1051; CHECK-LABEL: vfptosi_v4f32_v4i64:
1052; CHECK:       # %bb.0:
1053; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
1054; CHECK-NEXT:    vfwcvt.rtz.x.f.v v10, v8
1055; CHECK-NEXT:    vmv2r.v v8, v10
1056; CHECK-NEXT:    ret
1057  %evec = call <4 x i64> @llvm.experimental.constrained.fptosi.v4i64.v4f32(<4 x float> %va, metadata !"fpexcept.strict")
1058  ret <4 x i64> %evec
1059}
1060
1061declare <4 x i64> @llvm.experimental.constrained.fptoui.v4i64.v4f32(<4 x float>, metadata)
1062define <4 x i64> @vfptoui_v4f32_v4i64(<4 x float> %va) strictfp {
1063; CHECK-LABEL: vfptoui_v4f32_v4i64:
1064; CHECK:       # %bb.0:
1065; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
1066; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v10, v8
1067; CHECK-NEXT:    vmv2r.v v8, v10
1068; CHECK-NEXT:    ret
1069  %evec = call <4 x i64> @llvm.experimental.constrained.fptoui.v4i64.v4f32(<4 x float> %va, metadata !"fpexcept.strict")
1070  ret <4 x i64> %evec
1071}
1072
1073declare <8 x i1> @llvm.experimental.constrained.fptosi.v8i1.v8f32(<8 x float>, metadata)
1074define <8 x i1> @vfptosi_v8f32_v8i1(<8 x float> %va) strictfp {
1075; CHECK-LABEL: vfptosi_v8f32_v8i1:
1076; CHECK:       # %bb.0:
1077; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1078; CHECK-NEXT:    vfncvt.rtz.x.f.w v10, v8
1079; CHECK-NEXT:    vand.vi v8, v10, 1
1080; CHECK-NEXT:    vmsne.vi v0, v8, 0
1081; CHECK-NEXT:    ret
1082  %evec = call <8 x i1> @llvm.experimental.constrained.fptosi.v8i1.v8f32(<8 x float> %va, metadata !"fpexcept.strict")
1083  ret <8 x i1> %evec
1084}
1085
1086declare <8 x i1> @llvm.experimental.constrained.fptoui.v8i1.v8f32(<8 x float>, metadata)
1087define <8 x i1> @vfptoui_v8f32_v8i1(<8 x float> %va) strictfp {
1088; CHECK-LABEL: vfptoui_v8f32_v8i1:
1089; CHECK:       # %bb.0:
1090; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1091; CHECK-NEXT:    vfncvt.rtz.xu.f.w v10, v8
1092; CHECK-NEXT:    vand.vi v8, v10, 1
1093; CHECK-NEXT:    vmsne.vi v0, v8, 0
1094; CHECK-NEXT:    ret
1095  %evec = call <8 x i1> @llvm.experimental.constrained.fptoui.v8i1.v8f32(<8 x float> %va, metadata !"fpexcept.strict")
1096  ret <8 x i1> %evec
1097}
1098
1099declare <8 x i8> @llvm.experimental.constrained.fptosi.v8i8.v8f32(<8 x float>, metadata)
1100define <8 x i8> @vfptosi_v8f32_v8i8(<8 x float> %va) strictfp {
1101; CHECK-LABEL: vfptosi_v8f32_v8i8:
1102; CHECK:       # %bb.0:
1103; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1104; CHECK-NEXT:    vfncvt.rtz.x.f.w v10, v8
1105; CHECK-NEXT:    vsetvli zero, zero, e8, mf2, ta, ma
1106; CHECK-NEXT:    vnsrl.wi v8, v10, 0
1107; CHECK-NEXT:    ret
1108  %evec = call <8 x i8> @llvm.experimental.constrained.fptosi.v8i8.v8f32(<8 x float> %va, metadata !"fpexcept.strict")
1109  ret <8 x i8> %evec
1110}
1111
1112declare <8 x i8> @llvm.experimental.constrained.fptoui.v8i8.v8f32(<8 x float>, metadata)
1113define <8 x i8> @vfptoui_v8f32_v8i8(<8 x float> %va) strictfp {
1114; CHECK-LABEL: vfptoui_v8f32_v8i8:
1115; CHECK:       # %bb.0:
1116; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1117; CHECK-NEXT:    vfncvt.rtz.xu.f.w v10, v8
1118; CHECK-NEXT:    vsetvli zero, zero, e8, mf2, ta, ma
1119; CHECK-NEXT:    vnsrl.wi v8, v10, 0
1120; CHECK-NEXT:    ret
1121  %evec = call <8 x i8> @llvm.experimental.constrained.fptoui.v8i8.v8f32(<8 x float> %va, metadata !"fpexcept.strict")
1122  ret <8 x i8> %evec
1123}
1124
1125declare <8 x i16> @llvm.experimental.constrained.fptosi.v8i16.v8f32(<8 x float>, metadata)
1126define <8 x i16> @vfptosi_v8f32_v8i16(<8 x float> %va) strictfp {
1127; CHECK-LABEL: vfptosi_v8f32_v8i16:
1128; CHECK:       # %bb.0:
1129; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1130; CHECK-NEXT:    vfncvt.rtz.x.f.w v10, v8
1131; CHECK-NEXT:    vmv.v.v v8, v10
1132; CHECK-NEXT:    ret
1133  %evec = call <8 x i16> @llvm.experimental.constrained.fptosi.v8i16.v8f32(<8 x float> %va, metadata !"fpexcept.strict")
1134  ret <8 x i16> %evec
1135}
1136
1137declare <8 x i16> @llvm.experimental.constrained.fptoui.v8i16.v8f32(<8 x float>, metadata)
1138define <8 x i16> @vfptoui_v8f32_v8i16(<8 x float> %va) strictfp {
1139; CHECK-LABEL: vfptoui_v8f32_v8i16:
1140; CHECK:       # %bb.0:
1141; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1142; CHECK-NEXT:    vfncvt.rtz.xu.f.w v10, v8
1143; CHECK-NEXT:    vmv.v.v v8, v10
1144; CHECK-NEXT:    ret
1145  %evec = call <8 x i16> @llvm.experimental.constrained.fptoui.v8i16.v8f32(<8 x float> %va, metadata !"fpexcept.strict")
1146  ret <8 x i16> %evec
1147}
1148
1149declare <8 x i32> @llvm.experimental.constrained.fptosi.v8i32.v8f32(<8 x float>, metadata)
1150define <8 x i32> @vfptosi_v8f32_v8i32(<8 x float> %va) strictfp {
1151; CHECK-LABEL: vfptosi_v8f32_v8i32:
1152; CHECK:       # %bb.0:
1153; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
1154; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v8
1155; CHECK-NEXT:    ret
1156  %evec = call <8 x i32> @llvm.experimental.constrained.fptosi.v8i32.v8f32(<8 x float> %va, metadata !"fpexcept.strict")
1157  ret <8 x i32> %evec
1158}
1159
1160declare <8 x i32> @llvm.experimental.constrained.fptoui.v8i32.v8f32(<8 x float>, metadata)
1161define <8 x i32> @vfptoui_v8f32_v8i32(<8 x float> %va) strictfp {
1162; CHECK-LABEL: vfptoui_v8f32_v8i32:
1163; CHECK:       # %bb.0:
1164; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
1165; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v8
1166; CHECK-NEXT:    ret
1167  %evec = call <8 x i32> @llvm.experimental.constrained.fptoui.v8i32.v8f32(<8 x float> %va, metadata !"fpexcept.strict")
1168  ret <8 x i32> %evec
1169}
1170
1171declare <8 x i64> @llvm.experimental.constrained.fptosi.v8i64.v8f32(<8 x float>, metadata)
1172define <8 x i64> @vfptosi_v8f32_v8i64(<8 x float> %va) strictfp {
1173; CHECK-LABEL: vfptosi_v8f32_v8i64:
1174; CHECK:       # %bb.0:
1175; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
1176; CHECK-NEXT:    vfwcvt.rtz.x.f.v v12, v8
1177; CHECK-NEXT:    vmv4r.v v8, v12
1178; CHECK-NEXT:    ret
1179  %evec = call <8 x i64> @llvm.experimental.constrained.fptosi.v8i64.v8f32(<8 x float> %va, metadata !"fpexcept.strict")
1180  ret <8 x i64> %evec
1181}
1182
1183declare <8 x i64> @llvm.experimental.constrained.fptoui.v8i64.v8f32(<8 x float>, metadata)
1184define <8 x i64> @vfptoui_v8f32_v8i64(<8 x float> %va) strictfp {
1185; CHECK-LABEL: vfptoui_v8f32_v8i64:
1186; CHECK:       # %bb.0:
1187; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
1188; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v12, v8
1189; CHECK-NEXT:    vmv4r.v v8, v12
1190; CHECK-NEXT:    ret
1191  %evec = call <8 x i64> @llvm.experimental.constrained.fptoui.v8i64.v8f32(<8 x float> %va, metadata !"fpexcept.strict")
1192  ret <8 x i64> %evec
1193}
1194
1195declare <16 x i1> @llvm.experimental.constrained.fptosi.v16i1.v16f32(<16 x float>, metadata)
1196define <16 x i1> @vfptosi_v16f32_v16i1(<16 x float> %va) strictfp {
1197; CHECK-LABEL: vfptosi_v16f32_v16i1:
1198; CHECK:       # %bb.0:
1199; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
1200; CHECK-NEXT:    vfncvt.rtz.x.f.w v12, v8
1201; CHECK-NEXT:    vand.vi v8, v12, 1
1202; CHECK-NEXT:    vmsne.vi v0, v8, 0
1203; CHECK-NEXT:    ret
1204  %evec = call <16 x i1> @llvm.experimental.constrained.fptosi.v16i1.v16f32(<16 x float> %va, metadata !"fpexcept.strict")
1205  ret <16 x i1> %evec
1206}
1207
1208declare <16 x i1> @llvm.experimental.constrained.fptoui.v16i1.v16f32(<16 x float>, metadata)
1209define <16 x i1> @vfptoui_v16f32_v16i1(<16 x float> %va) strictfp {
1210; CHECK-LABEL: vfptoui_v16f32_v16i1:
1211; CHECK:       # %bb.0:
1212; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
1213; CHECK-NEXT:    vfncvt.rtz.xu.f.w v12, v8
1214; CHECK-NEXT:    vand.vi v8, v12, 1
1215; CHECK-NEXT:    vmsne.vi v0, v8, 0
1216; CHECK-NEXT:    ret
1217  %evec = call <16 x i1> @llvm.experimental.constrained.fptoui.v16i1.v16f32(<16 x float> %va, metadata !"fpexcept.strict")
1218  ret <16 x i1> %evec
1219}
1220
1221declare <16 x i8> @llvm.experimental.constrained.fptosi.v16i8.v16f32(<16 x float>, metadata)
1222define <16 x i8> @vfptosi_v16f32_v16i8(<16 x float> %va) strictfp {
1223; CHECK-LABEL: vfptosi_v16f32_v16i8:
1224; CHECK:       # %bb.0:
1225; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
1226; CHECK-NEXT:    vfncvt.rtz.x.f.w v12, v8
1227; CHECK-NEXT:    vsetvli zero, zero, e8, m1, ta, ma
1228; CHECK-NEXT:    vnsrl.wi v8, v12, 0
1229; CHECK-NEXT:    ret
1230  %evec = call <16 x i8> @llvm.experimental.constrained.fptosi.v16i8.v16f32(<16 x float> %va, metadata !"fpexcept.strict")
1231  ret <16 x i8> %evec
1232}
1233
1234declare <16 x i8> @llvm.experimental.constrained.fptoui.v16i8.v16f32(<16 x float>, metadata)
1235define <16 x i8> @vfptoui_v16f32_v16i8(<16 x float> %va) strictfp {
1236; CHECK-LABEL: vfptoui_v16f32_v16i8:
1237; CHECK:       # %bb.0:
1238; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
1239; CHECK-NEXT:    vfncvt.rtz.xu.f.w v12, v8
1240; CHECK-NEXT:    vsetvli zero, zero, e8, m1, ta, ma
1241; CHECK-NEXT:    vnsrl.wi v8, v12, 0
1242; CHECK-NEXT:    ret
1243  %evec = call <16 x i8> @llvm.experimental.constrained.fptoui.v16i8.v16f32(<16 x float> %va, metadata !"fpexcept.strict")
1244  ret <16 x i8> %evec
1245}
1246
1247declare <16 x i16> @llvm.experimental.constrained.fptosi.v16i16.v16f32(<16 x float>, metadata)
1248define <16 x i16> @vfptosi_v16f32_v16i16(<16 x float> %va) strictfp {
1249; CHECK-LABEL: vfptosi_v16f32_v16i16:
1250; CHECK:       # %bb.0:
1251; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
1252; CHECK-NEXT:    vfncvt.rtz.x.f.w v12, v8
1253; CHECK-NEXT:    vmv.v.v v8, v12
1254; CHECK-NEXT:    ret
1255  %evec = call <16 x i16> @llvm.experimental.constrained.fptosi.v16i16.v16f32(<16 x float> %va, metadata !"fpexcept.strict")
1256  ret <16 x i16> %evec
1257}
1258
1259declare <16 x i16> @llvm.experimental.constrained.fptoui.v16i16.v16f32(<16 x float>, metadata)
1260define <16 x i16> @vfptoui_v16f32_v16i16(<16 x float> %va) strictfp {
1261; CHECK-LABEL: vfptoui_v16f32_v16i16:
1262; CHECK:       # %bb.0:
1263; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
1264; CHECK-NEXT:    vfncvt.rtz.xu.f.w v12, v8
1265; CHECK-NEXT:    vmv.v.v v8, v12
1266; CHECK-NEXT:    ret
1267  %evec = call <16 x i16> @llvm.experimental.constrained.fptoui.v16i16.v16f32(<16 x float> %va, metadata !"fpexcept.strict")
1268  ret <16 x i16> %evec
1269}
1270
1271declare <16 x i32> @llvm.experimental.constrained.fptosi.v16i32.v16f32(<16 x float>, metadata)
1272define <16 x i32> @vfptosi_v16f32_v16i32(<16 x float> %va) strictfp {
1273; CHECK-LABEL: vfptosi_v16f32_v16i32:
1274; CHECK:       # %bb.0:
1275; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
1276; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v8
1277; CHECK-NEXT:    ret
1278  %evec = call <16 x i32> @llvm.experimental.constrained.fptosi.v16i32.v16f32(<16 x float> %va, metadata !"fpexcept.strict")
1279  ret <16 x i32> %evec
1280}
1281
1282declare <16 x i32> @llvm.experimental.constrained.fptoui.v16i32.v16f32(<16 x float>, metadata)
1283define <16 x i32> @vfptoui_v16f32_v16i32(<16 x float> %va) strictfp {
1284; CHECK-LABEL: vfptoui_v16f32_v16i32:
1285; CHECK:       # %bb.0:
1286; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
1287; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v8
1288; CHECK-NEXT:    ret
1289  %evec = call <16 x i32> @llvm.experimental.constrained.fptoui.v16i32.v16f32(<16 x float> %va, metadata !"fpexcept.strict")
1290  ret <16 x i32> %evec
1291}
1292
1293declare <1 x i1> @llvm.experimental.constrained.fptosi.v1i1.v1f64(<1 x double>, metadata)
1294define <1 x i1> @vfptosi_v1f64_v1i1(<1 x double> %va) strictfp {
1295; CHECK-LABEL: vfptosi_v1f64_v1i1:
1296; CHECK:       # %bb.0:
1297; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
1298; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
1299; CHECK-NEXT:    vand.vi v8, v9, 1
1300; CHECK-NEXT:    vmsne.vi v0, v8, 0
1301; CHECK-NEXT:    ret
1302  %evec = call <1 x i1> @llvm.experimental.constrained.fptosi.v1i1.v1f64(<1 x double> %va, metadata !"fpexcept.strict")
1303  ret <1 x i1> %evec
1304}
1305
1306declare <1 x i1> @llvm.experimental.constrained.fptoui.v1i1.v1f64(<1 x double>, metadata)
1307define <1 x i1> @vfptoui_v1f64_v1i1(<1 x double> %va) strictfp {
1308; CHECK-LABEL: vfptoui_v1f64_v1i1:
1309; CHECK:       # %bb.0:
1310; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
1311; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
1312; CHECK-NEXT:    vand.vi v8, v9, 1
1313; CHECK-NEXT:    vmsne.vi v0, v8, 0
1314; CHECK-NEXT:    ret
1315  %evec = call <1 x i1> @llvm.experimental.constrained.fptoui.v1i1.v1f64(<1 x double> %va, metadata !"fpexcept.strict")
1316  ret <1 x i1> %evec
1317}
1318
1319declare <1 x i8> @llvm.experimental.constrained.fptosi.v1i8.v1f64(<1 x double>, metadata)
1320define <1 x i8> @vfptosi_v1f64_v1i8(<1 x double> %va) strictfp {
1321; CHECK-LABEL: vfptosi_v1f64_v1i8:
1322; CHECK:       # %bb.0:
1323; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
1324; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
1325; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
1326; CHECK-NEXT:    vnsrl.wi v8, v9, 0
1327; CHECK-NEXT:    vsetvli zero, zero, e8, mf8, ta, ma
1328; CHECK-NEXT:    vnsrl.wi v8, v8, 0
1329; CHECK-NEXT:    ret
1330  %evec = call <1 x i8> @llvm.experimental.constrained.fptosi.v1i8.v1f64(<1 x double> %va, metadata !"fpexcept.strict")
1331  ret <1 x i8> %evec
1332}
1333
1334declare <1 x i8> @llvm.experimental.constrained.fptoui.v1i8.v1f64(<1 x double>, metadata)
1335define <1 x i8> @vfptoui_v1f64_v1i8(<1 x double> %va) strictfp {
1336; CHECK-LABEL: vfptoui_v1f64_v1i8:
1337; CHECK:       # %bb.0:
1338; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
1339; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
1340; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
1341; CHECK-NEXT:    vnsrl.wi v8, v9, 0
1342; CHECK-NEXT:    vsetvli zero, zero, e8, mf8, ta, ma
1343; CHECK-NEXT:    vnsrl.wi v8, v8, 0
1344; CHECK-NEXT:    ret
1345  %evec = call <1 x i8> @llvm.experimental.constrained.fptoui.v1i8.v1f64(<1 x double> %va, metadata !"fpexcept.strict")
1346  ret <1 x i8> %evec
1347}
1348
1349declare <1 x i16> @llvm.experimental.constrained.fptosi.v1i16.v1f64(<1 x double>, metadata)
1350define <1 x i16> @vfptosi_v1f64_v1i16(<1 x double> %va) strictfp {
1351; CHECK-LABEL: vfptosi_v1f64_v1i16:
1352; CHECK:       # %bb.0:
1353; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
1354; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
1355; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
1356; CHECK-NEXT:    vnsrl.wi v8, v9, 0
1357; CHECK-NEXT:    ret
1358  %evec = call <1 x i16> @llvm.experimental.constrained.fptosi.v1i16.v1f64(<1 x double> %va, metadata !"fpexcept.strict")
1359  ret <1 x i16> %evec
1360}
1361
1362declare <1 x i16> @llvm.experimental.constrained.fptoui.v1i16.v1f64(<1 x double>, metadata)
1363define <1 x i16> @vfptoui_v1f64_v1i16(<1 x double> %va) strictfp {
1364; CHECK-LABEL: vfptoui_v1f64_v1i16:
1365; CHECK:       # %bb.0:
1366; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
1367; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
1368; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
1369; CHECK-NEXT:    vnsrl.wi v8, v9, 0
1370; CHECK-NEXT:    ret
1371  %evec = call <1 x i16> @llvm.experimental.constrained.fptoui.v1i16.v1f64(<1 x double> %va, metadata !"fpexcept.strict")
1372  ret <1 x i16> %evec
1373}
1374
1375declare <1 x i32> @llvm.experimental.constrained.fptosi.v1i32.v1f64(<1 x double>, metadata)
1376define <1 x i32> @vfptosi_v1f64_v1i32(<1 x double> %va) strictfp {
1377; CHECK-LABEL: vfptosi_v1f64_v1i32:
1378; CHECK:       # %bb.0:
1379; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
1380; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
1381; CHECK-NEXT:    vmv1r.v v8, v9
1382; CHECK-NEXT:    ret
1383  %evec = call <1 x i32> @llvm.experimental.constrained.fptosi.v1i32.v1f64(<1 x double> %va, metadata !"fpexcept.strict")
1384  ret <1 x i32> %evec
1385}
1386
1387declare <1 x i32> @llvm.experimental.constrained.fptoui.v1i32.v1f64(<1 x double>, metadata)
1388define <1 x i32> @vfptoui_v1f64_v1i32(<1 x double> %va) strictfp {
1389; CHECK-LABEL: vfptoui_v1f64_v1i32:
1390; CHECK:       # %bb.0:
1391; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
1392; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
1393; CHECK-NEXT:    vmv1r.v v8, v9
1394; CHECK-NEXT:    ret
1395  %evec = call <1 x i32> @llvm.experimental.constrained.fptoui.v1i32.v1f64(<1 x double> %va, metadata !"fpexcept.strict")
1396  ret <1 x i32> %evec
1397}
1398
1399declare <1 x i64> @llvm.experimental.constrained.fptosi.v1i64.v1f64(<1 x double>, metadata)
1400define <1 x i64> @vfptosi_v1f64_v1i64(<1 x double> %va) strictfp {
1401; CHECK-LABEL: vfptosi_v1f64_v1i64:
1402; CHECK:       # %bb.0:
1403; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
1404; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v8
1405; CHECK-NEXT:    ret
1406  %evec = call <1 x i64> @llvm.experimental.constrained.fptosi.v1i64.v1f64(<1 x double> %va, metadata !"fpexcept.strict")
1407  ret <1 x i64> %evec
1408}
1409
1410declare <1 x i64> @llvm.experimental.constrained.fptoui.v1i64.v1f64(<1 x double>, metadata)
1411define <1 x i64> @vfptoui_v1f64_v1i64(<1 x double> %va) strictfp {
1412; CHECK-LABEL: vfptoui_v1f64_v1i64:
1413; CHECK:       # %bb.0:
1414; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
1415; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v8
1416; CHECK-NEXT:    ret
1417  %evec = call <1 x i64> @llvm.experimental.constrained.fptoui.v1i64.v1f64(<1 x double> %va, metadata !"fpexcept.strict")
1418  ret <1 x i64> %evec
1419}
1420
1421declare <2 x i1> @llvm.experimental.constrained.fptosi.v2i1.v2f64(<2 x double>, metadata)
1422define <2 x i1> @vfptosi_v2f64_v2i1(<2 x double> %va) strictfp {
1423; CHECK-LABEL: vfptosi_v2f64_v2i1:
1424; CHECK:       # %bb.0:
1425; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
1426; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
1427; CHECK-NEXT:    vand.vi v8, v9, 1
1428; CHECK-NEXT:    vmsne.vi v0, v8, 0
1429; CHECK-NEXT:    ret
1430  %evec = call <2 x i1> @llvm.experimental.constrained.fptosi.v2i1.v2f64(<2 x double> %va, metadata !"fpexcept.strict")
1431  ret <2 x i1> %evec
1432}
1433
1434declare <2 x i1> @llvm.experimental.constrained.fptoui.v2i1.v2f64(<2 x double>, metadata)
1435define <2 x i1> @vfptoui_v2f64_v2i1(<2 x double> %va) strictfp {
1436; CHECK-LABEL: vfptoui_v2f64_v2i1:
1437; CHECK:       # %bb.0:
1438; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
1439; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
1440; CHECK-NEXT:    vand.vi v8, v9, 1
1441; CHECK-NEXT:    vmsne.vi v0, v8, 0
1442; CHECK-NEXT:    ret
1443  %evec = call <2 x i1> @llvm.experimental.constrained.fptoui.v2i1.v2f64(<2 x double> %va, metadata !"fpexcept.strict")
1444  ret <2 x i1> %evec
1445}
1446
1447declare <2 x i8> @llvm.experimental.constrained.fptosi.v2i8.v2f64(<2 x double>, metadata)
1448define <2 x i8> @vfptosi_v2f64_v2i8(<2 x double> %va) strictfp {
1449; CHECK-LABEL: vfptosi_v2f64_v2i8:
1450; CHECK:       # %bb.0:
1451; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
1452; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
1453; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
1454; CHECK-NEXT:    vnsrl.wi v8, v9, 0
1455; CHECK-NEXT:    vsetvli zero, zero, e8, mf8, ta, ma
1456; CHECK-NEXT:    vnsrl.wi v8, v8, 0
1457; CHECK-NEXT:    ret
1458  %evec = call <2 x i8> @llvm.experimental.constrained.fptosi.v2i8.v2f64(<2 x double> %va, metadata !"fpexcept.strict")
1459  ret <2 x i8> %evec
1460}
1461
1462declare <2 x i8> @llvm.experimental.constrained.fptoui.v2i8.v2f64(<2 x double>, metadata)
1463define <2 x i8> @vfptoui_v2f64_v2i8(<2 x double> %va) strictfp {
1464; CHECK-LABEL: vfptoui_v2f64_v2i8:
1465; CHECK:       # %bb.0:
1466; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
1467; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
1468; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
1469; CHECK-NEXT:    vnsrl.wi v8, v9, 0
1470; CHECK-NEXT:    vsetvli zero, zero, e8, mf8, ta, ma
1471; CHECK-NEXT:    vnsrl.wi v8, v8, 0
1472; CHECK-NEXT:    ret
1473  %evec = call <2 x i8> @llvm.experimental.constrained.fptoui.v2i8.v2f64(<2 x double> %va, metadata !"fpexcept.strict")
1474  ret <2 x i8> %evec
1475}
1476
1477declare <2 x i16> @llvm.experimental.constrained.fptosi.v2i16.v2f64(<2 x double>, metadata)
1478define <2 x i16> @vfptosi_v2f64_v2i16(<2 x double> %va) strictfp {
1479; CHECK-LABEL: vfptosi_v2f64_v2i16:
1480; CHECK:       # %bb.0:
1481; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
1482; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
1483; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
1484; CHECK-NEXT:    vnsrl.wi v8, v9, 0
1485; CHECK-NEXT:    ret
1486  %evec = call <2 x i16> @llvm.experimental.constrained.fptosi.v2i16.v2f64(<2 x double> %va, metadata !"fpexcept.strict")
1487  ret <2 x i16> %evec
1488}
1489
1490declare <2 x i16> @llvm.experimental.constrained.fptoui.v2i16.v2f64(<2 x double>, metadata)
1491define <2 x i16> @vfptoui_v2f64_v2i16(<2 x double> %va) strictfp {
1492; CHECK-LABEL: vfptoui_v2f64_v2i16:
1493; CHECK:       # %bb.0:
1494; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
1495; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
1496; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
1497; CHECK-NEXT:    vnsrl.wi v8, v9, 0
1498; CHECK-NEXT:    ret
1499  %evec = call <2 x i16> @llvm.experimental.constrained.fptoui.v2i16.v2f64(<2 x double> %va, metadata !"fpexcept.strict")
1500  ret <2 x i16> %evec
1501}
1502
1503declare <2 x i32> @llvm.experimental.constrained.fptosi.v2i32.v2f64(<2 x double>, metadata)
1504define <2 x i32> @vfptosi_v2f64_v2i32(<2 x double> %va) strictfp {
1505; CHECK-LABEL: vfptosi_v2f64_v2i32:
1506; CHECK:       # %bb.0:
1507; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
1508; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v8
1509; CHECK-NEXT:    vmv1r.v v8, v9
1510; CHECK-NEXT:    ret
1511  %evec = call <2 x i32> @llvm.experimental.constrained.fptosi.v2i32.v2f64(<2 x double> %va, metadata !"fpexcept.strict")
1512  ret <2 x i32> %evec
1513}
1514
1515declare <2 x i32> @llvm.experimental.constrained.fptoui.v2i32.v2f64(<2 x double>, metadata)
1516define <2 x i32> @vfptoui_v2f64_v2i32(<2 x double> %va) strictfp {
1517; CHECK-LABEL: vfptoui_v2f64_v2i32:
1518; CHECK:       # %bb.0:
1519; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
1520; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v8
1521; CHECK-NEXT:    vmv1r.v v8, v9
1522; CHECK-NEXT:    ret
1523  %evec = call <2 x i32> @llvm.experimental.constrained.fptoui.v2i32.v2f64(<2 x double> %va, metadata !"fpexcept.strict")
1524  ret <2 x i32> %evec
1525}
1526
1527declare <2 x i64> @llvm.experimental.constrained.fptosi.v2i64.v2f64(<2 x double>, metadata)
1528define <2 x i64> @vfptosi_v2f64_v2i64(<2 x double> %va) strictfp {
1529; CHECK-LABEL: vfptosi_v2f64_v2i64:
1530; CHECK:       # %bb.0:
1531; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
1532; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v8
1533; CHECK-NEXT:    ret
1534  %evec = call <2 x i64> @llvm.experimental.constrained.fptosi.v2i64.v2f64(<2 x double> %va, metadata !"fpexcept.strict")
1535  ret <2 x i64> %evec
1536}
1537
1538declare <2 x i64> @llvm.experimental.constrained.fptoui.v2i64.v2f64(<2 x double>, metadata)
1539define <2 x i64> @vfptoui_v2f64_v2i64(<2 x double> %va) strictfp {
1540; CHECK-LABEL: vfptoui_v2f64_v2i64:
1541; CHECK:       # %bb.0:
1542; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
1543; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v8
1544; CHECK-NEXT:    ret
1545  %evec = call <2 x i64> @llvm.experimental.constrained.fptoui.v2i64.v2f64(<2 x double> %va, metadata !"fpexcept.strict")
1546  ret <2 x i64> %evec
1547}
1548
1549declare <4 x i1> @llvm.experimental.constrained.fptosi.v4i1.v4f64(<4 x double>, metadata)
1550define <4 x i1> @vfptosi_v4f64_v4i1(<4 x double> %va) strictfp {
1551; CHECK-LABEL: vfptosi_v4f64_v4i1:
1552; CHECK:       # %bb.0:
1553; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
1554; CHECK-NEXT:    vfncvt.rtz.x.f.w v10, v8
1555; CHECK-NEXT:    vand.vi v8, v10, 1
1556; CHECK-NEXT:    vmsne.vi v0, v8, 0
1557; CHECK-NEXT:    ret
1558  %evec = call <4 x i1> @llvm.experimental.constrained.fptosi.v4i1.v4f64(<4 x double> %va, metadata !"fpexcept.strict")
1559  ret <4 x i1> %evec
1560}
1561
1562declare <4 x i1> @llvm.experimental.constrained.fptoui.v4i1.v4f64(<4 x double>, metadata)
1563define <4 x i1> @vfptoui_v4f64_v4i1(<4 x double> %va) strictfp {
1564; CHECK-LABEL: vfptoui_v4f64_v4i1:
1565; CHECK:       # %bb.0:
1566; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
1567; CHECK-NEXT:    vfncvt.rtz.xu.f.w v10, v8
1568; CHECK-NEXT:    vand.vi v8, v10, 1
1569; CHECK-NEXT:    vmsne.vi v0, v8, 0
1570; CHECK-NEXT:    ret
1571  %evec = call <4 x i1> @llvm.experimental.constrained.fptoui.v4i1.v4f64(<4 x double> %va, metadata !"fpexcept.strict")
1572  ret <4 x i1> %evec
1573}
1574
1575declare <4 x i8> @llvm.experimental.constrained.fptosi.v4i8.v4f64(<4 x double>, metadata)
1576define <4 x i8> @vfptosi_v4f64_v4i8(<4 x double> %va) strictfp {
1577; CHECK-LABEL: vfptosi_v4f64_v4i8:
1578; CHECK:       # %bb.0:
1579; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
1580; CHECK-NEXT:    vfncvt.rtz.x.f.w v10, v8
1581; CHECK-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma
1582; CHECK-NEXT:    vnsrl.wi v8, v10, 0
1583; CHECK-NEXT:    vsetvli zero, zero, e8, mf4, ta, ma
1584; CHECK-NEXT:    vnsrl.wi v8, v8, 0
1585; CHECK-NEXT:    ret
1586  %evec = call <4 x i8> @llvm.experimental.constrained.fptosi.v4i8.v4f64(<4 x double> %va, metadata !"fpexcept.strict")
1587  ret <4 x i8> %evec
1588}
1589
1590declare <4 x i8> @llvm.experimental.constrained.fptoui.v4i8.v4f64(<4 x double>, metadata)
1591define <4 x i8> @vfptoui_v4f64_v4i8(<4 x double> %va) strictfp {
1592; CHECK-LABEL: vfptoui_v4f64_v4i8:
1593; CHECK:       # %bb.0:
1594; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
1595; CHECK-NEXT:    vfncvt.rtz.xu.f.w v10, v8
1596; CHECK-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma
1597; CHECK-NEXT:    vnsrl.wi v8, v10, 0
1598; CHECK-NEXT:    vsetvli zero, zero, e8, mf4, ta, ma
1599; CHECK-NEXT:    vnsrl.wi v8, v8, 0
1600; CHECK-NEXT:    ret
1601  %evec = call <4 x i8> @llvm.experimental.constrained.fptoui.v4i8.v4f64(<4 x double> %va, metadata !"fpexcept.strict")
1602  ret <4 x i8> %evec
1603}
1604
1605declare <4 x i16> @llvm.experimental.constrained.fptosi.v4i16.v4f64(<4 x double>, metadata)
1606define <4 x i16> @vfptosi_v4f64_v4i16(<4 x double> %va) strictfp {
1607; CHECK-LABEL: vfptosi_v4f64_v4i16:
1608; CHECK:       # %bb.0:
1609; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
1610; CHECK-NEXT:    vfncvt.rtz.x.f.w v10, v8
1611; CHECK-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma
1612; CHECK-NEXT:    vnsrl.wi v8, v10, 0
1613; CHECK-NEXT:    ret
1614  %evec = call <4 x i16> @llvm.experimental.constrained.fptosi.v4i16.v4f64(<4 x double> %va, metadata !"fpexcept.strict")
1615  ret <4 x i16> %evec
1616}
1617
1618declare <4 x i16> @llvm.experimental.constrained.fptoui.v4i16.v4f64(<4 x double>, metadata)
1619define <4 x i16> @vfptoui_v4f64_v4i16(<4 x double> %va) strictfp {
1620; CHECK-LABEL: vfptoui_v4f64_v4i16:
1621; CHECK:       # %bb.0:
1622; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
1623; CHECK-NEXT:    vfncvt.rtz.xu.f.w v10, v8
1624; CHECK-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma
1625; CHECK-NEXT:    vnsrl.wi v8, v10, 0
1626; CHECK-NEXT:    ret
1627  %evec = call <4 x i16> @llvm.experimental.constrained.fptoui.v4i16.v4f64(<4 x double> %va, metadata !"fpexcept.strict")
1628  ret <4 x i16> %evec
1629}
1630
1631declare <4 x i32> @llvm.experimental.constrained.fptosi.v4i32.v4f64(<4 x double>, metadata)
1632define <4 x i32> @vfptosi_v4f64_v4i32(<4 x double> %va) strictfp {
1633; CHECK-LABEL: vfptosi_v4f64_v4i32:
1634; CHECK:       # %bb.0:
1635; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
1636; CHECK-NEXT:    vfncvt.rtz.x.f.w v10, v8
1637; CHECK-NEXT:    vmv.v.v v8, v10
1638; CHECK-NEXT:    ret
1639  %evec = call <4 x i32> @llvm.experimental.constrained.fptosi.v4i32.v4f64(<4 x double> %va, metadata !"fpexcept.strict")
1640  ret <4 x i32> %evec
1641}
1642
1643declare <4 x i32> @llvm.experimental.constrained.fptoui.v4i32.v4f64(<4 x double>, metadata)
1644define <4 x i32> @vfptoui_v4f64_v4i32(<4 x double> %va) strictfp {
1645; CHECK-LABEL: vfptoui_v4f64_v4i32:
1646; CHECK:       # %bb.0:
1647; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
1648; CHECK-NEXT:    vfncvt.rtz.xu.f.w v10, v8
1649; CHECK-NEXT:    vmv.v.v v8, v10
1650; CHECK-NEXT:    ret
1651  %evec = call <4 x i32> @llvm.experimental.constrained.fptoui.v4i32.v4f64(<4 x double> %va, metadata !"fpexcept.strict")
1652  ret <4 x i32> %evec
1653}
1654
1655declare <4 x i64> @llvm.experimental.constrained.fptosi.v4i64.v4f64(<4 x double>, metadata)
1656define <4 x i64> @vfptosi_v4f64_v4i64(<4 x double> %va) strictfp {
1657; CHECK-LABEL: vfptosi_v4f64_v4i64:
1658; CHECK:       # %bb.0:
1659; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
1660; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v8
1661; CHECK-NEXT:    ret
1662  %evec = call <4 x i64> @llvm.experimental.constrained.fptosi.v4i64.v4f64(<4 x double> %va, metadata !"fpexcept.strict")
1663  ret <4 x i64> %evec
1664}
1665
1666declare <4 x i64> @llvm.experimental.constrained.fptoui.v4i64.v4f64(<4 x double>, metadata)
1667define <4 x i64> @vfptoui_v4f64_v4i64(<4 x double> %va) strictfp {
1668; CHECK-LABEL: vfptoui_v4f64_v4i64:
1669; CHECK:       # %bb.0:
1670; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
1671; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v8
1672; CHECK-NEXT:    ret
1673  %evec = call <4 x i64> @llvm.experimental.constrained.fptoui.v4i64.v4f64(<4 x double> %va, metadata !"fpexcept.strict")
1674  ret <4 x i64> %evec
1675}
1676
1677declare <8 x i1> @llvm.experimental.constrained.fptosi.v8i1.v8f64(<8 x double>, metadata)
1678define <8 x i1> @vfptosi_v8f64_v8i1(<8 x double> %va) strictfp {
1679; CHECK-LABEL: vfptosi_v8f64_v8i1:
1680; CHECK:       # %bb.0:
1681; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
1682; CHECK-NEXT:    vfncvt.rtz.x.f.w v12, v8
1683; CHECK-NEXT:    vand.vi v8, v12, 1
1684; CHECK-NEXT:    vmsne.vi v0, v8, 0
1685; CHECK-NEXT:    ret
1686  %evec = call <8 x i1> @llvm.experimental.constrained.fptosi.v8i1.v8f64(<8 x double> %va, metadata !"fpexcept.strict")
1687  ret <8 x i1> %evec
1688}
1689
1690declare <8 x i1> @llvm.experimental.constrained.fptoui.v8i1.v8f64(<8 x double>, metadata)
1691define <8 x i1> @vfptoui_v8f64_v8i1(<8 x double> %va) strictfp {
1692; CHECK-LABEL: vfptoui_v8f64_v8i1:
1693; CHECK:       # %bb.0:
1694; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
1695; CHECK-NEXT:    vfncvt.rtz.xu.f.w v12, v8
1696; CHECK-NEXT:    vand.vi v8, v12, 1
1697; CHECK-NEXT:    vmsne.vi v0, v8, 0
1698; CHECK-NEXT:    ret
1699  %evec = call <8 x i1> @llvm.experimental.constrained.fptoui.v8i1.v8f64(<8 x double> %va, metadata !"fpexcept.strict")
1700  ret <8 x i1> %evec
1701}
1702
1703declare <8 x i8> @llvm.experimental.constrained.fptosi.v8i8.v8f64(<8 x double>, metadata)
1704define <8 x i8> @vfptosi_v8f64_v8i8(<8 x double> %va) strictfp {
1705; CHECK-LABEL: vfptosi_v8f64_v8i8:
1706; CHECK:       # %bb.0:
1707; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
1708; CHECK-NEXT:    vfncvt.rtz.x.f.w v12, v8
1709; CHECK-NEXT:    vsetvli zero, zero, e16, m1, ta, ma
1710; CHECK-NEXT:    vnsrl.wi v8, v12, 0
1711; CHECK-NEXT:    vsetvli zero, zero, e8, mf2, ta, ma
1712; CHECK-NEXT:    vnsrl.wi v8, v8, 0
1713; CHECK-NEXT:    ret
1714  %evec = call <8 x i8> @llvm.experimental.constrained.fptosi.v8i8.v8f64(<8 x double> %va, metadata !"fpexcept.strict")
1715  ret <8 x i8> %evec
1716}
1717
1718declare <8 x i8> @llvm.experimental.constrained.fptoui.v8i8.v8f64(<8 x double>, metadata)
1719define <8 x i8> @vfptoui_v8f64_v8i8(<8 x double> %va) strictfp {
1720; CHECK-LABEL: vfptoui_v8f64_v8i8:
1721; CHECK:       # %bb.0:
1722; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
1723; CHECK-NEXT:    vfncvt.rtz.xu.f.w v12, v8
1724; CHECK-NEXT:    vsetvli zero, zero, e16, m1, ta, ma
1725; CHECK-NEXT:    vnsrl.wi v8, v12, 0
1726; CHECK-NEXT:    vsetvli zero, zero, e8, mf2, ta, ma
1727; CHECK-NEXT:    vnsrl.wi v8, v8, 0
1728; CHECK-NEXT:    ret
1729  %evec = call <8 x i8> @llvm.experimental.constrained.fptoui.v8i8.v8f64(<8 x double> %va, metadata !"fpexcept.strict")
1730  ret <8 x i8> %evec
1731}
1732
1733declare <8 x i16> @llvm.experimental.constrained.fptosi.v8i16.v8f64(<8 x double>, metadata)
1734define <8 x i16> @vfptosi_v8f64_v8i16(<8 x double> %va) strictfp {
1735; CHECK-LABEL: vfptosi_v8f64_v8i16:
1736; CHECK:       # %bb.0:
1737; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
1738; CHECK-NEXT:    vfncvt.rtz.x.f.w v12, v8
1739; CHECK-NEXT:    vsetvli zero, zero, e16, m1, ta, ma
1740; CHECK-NEXT:    vnsrl.wi v8, v12, 0
1741; CHECK-NEXT:    ret
1742  %evec = call <8 x i16> @llvm.experimental.constrained.fptosi.v8i16.v8f64(<8 x double> %va, metadata !"fpexcept.strict")
1743  ret <8 x i16> %evec
1744}
1745
1746declare <8 x i16> @llvm.experimental.constrained.fptoui.v8i16.v8f64(<8 x double>, metadata)
1747define <8 x i16> @vfptoui_v8f64_v8i16(<8 x double> %va) strictfp {
1748; CHECK-LABEL: vfptoui_v8f64_v8i16:
1749; CHECK:       # %bb.0:
1750; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
1751; CHECK-NEXT:    vfncvt.rtz.xu.f.w v12, v8
1752; CHECK-NEXT:    vsetvli zero, zero, e16, m1, ta, ma
1753; CHECK-NEXT:    vnsrl.wi v8, v12, 0
1754; CHECK-NEXT:    ret
1755  %evec = call <8 x i16> @llvm.experimental.constrained.fptoui.v8i16.v8f64(<8 x double> %va, metadata !"fpexcept.strict")
1756  ret <8 x i16> %evec
1757}
1758
1759declare <8 x i32> @llvm.experimental.constrained.fptosi.v8i32.v8f64(<8 x double>, metadata)
1760define <8 x i32> @vfptosi_v8f64_v8i32(<8 x double> %va) strictfp {
1761; CHECK-LABEL: vfptosi_v8f64_v8i32:
1762; CHECK:       # %bb.0:
1763; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
1764; CHECK-NEXT:    vfncvt.rtz.x.f.w v12, v8
1765; CHECK-NEXT:    vmv.v.v v8, v12
1766; CHECK-NEXT:    ret
1767  %evec = call <8 x i32> @llvm.experimental.constrained.fptosi.v8i32.v8f64(<8 x double> %va, metadata !"fpexcept.strict")
1768  ret <8 x i32> %evec
1769}
1770
1771declare <8 x i32> @llvm.experimental.constrained.fptoui.v8i32.v8f64(<8 x double>, metadata)
1772define <8 x i32> @vfptoui_v8f64_v8i32(<8 x double> %va) strictfp {
1773; CHECK-LABEL: vfptoui_v8f64_v8i32:
1774; CHECK:       # %bb.0:
1775; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
1776; CHECK-NEXT:    vfncvt.rtz.xu.f.w v12, v8
1777; CHECK-NEXT:    vmv.v.v v8, v12
1778; CHECK-NEXT:    ret
1779  %evec = call <8 x i32> @llvm.experimental.constrained.fptoui.v8i32.v8f64(<8 x double> %va, metadata !"fpexcept.strict")
1780  ret <8 x i32> %evec
1781}
1782
1783declare <8 x i64> @llvm.experimental.constrained.fptosi.v8i64.v8f64(<8 x double>, metadata)
1784define <8 x i64> @vfptosi_v8f64_v8i64(<8 x double> %va) strictfp {
1785; CHECK-LABEL: vfptosi_v8f64_v8i64:
1786; CHECK:       # %bb.0:
1787; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
1788; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v8
1789; CHECK-NEXT:    ret
1790  %evec = call <8 x i64> @llvm.experimental.constrained.fptosi.v8i64.v8f64(<8 x double> %va, metadata !"fpexcept.strict")
1791  ret <8 x i64> %evec
1792}
1793
1794declare <8 x i64> @llvm.experimental.constrained.fptoui.v8i64.v8f64(<8 x double>, metadata)
1795define <8 x i64> @vfptoui_v8f64_v8i64(<8 x double> %va) strictfp {
1796; CHECK-LABEL: vfptoui_v8f64_v8i64:
1797; CHECK:       # %bb.0:
1798; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
1799; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v8
1800; CHECK-NEXT:    ret
1801  %evec = call <8 x i64> @llvm.experimental.constrained.fptoui.v8i64.v8f64(<8 x double> %va, metadata !"fpexcept.strict")
1802  ret <8 x i64> %evec
1803}
1804