[rtsan] Add fork/execve interceptors (#117198)
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / fixed-vectors-vfptoi-constrained-sdnode.ll
blob5ac0d8d120cba59a5f875a5cd8c872eecb5270e8
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
7 declare <1 x i1> @llvm.experimental.constrained.fptosi.v1i1.v1f16(<1 x half>, metadata)
8 define <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
20 declare <1 x i1> @llvm.experimental.constrained.fptoui.v1i1.v1f16(<1 x half>, metadata)
21 define <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
33 declare <1 x i7> @llvm.experimental.constrained.fptosi.v1i7.v1f16(<1 x half>, metadata)
34 define <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
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
52 declare <1 x i7> @llvm.experimental.constrained.fptoui.v1i7.v1f16(<1 x half>, metadata)
53 define <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
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
71 declare <1 x i8> @llvm.experimental.constrained.fptosi.v1i8.v1f16(<1 x half>, metadata)
72 define <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
83 declare <1 x i8> @llvm.experimental.constrained.fptoui.v1i8.v1f16(<1 x half>, metadata)
84 define <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
95 declare <1 x i16> @llvm.experimental.constrained.fptosi.v1i16.v1f16(<1 x half>, metadata)
96 define <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
106 declare <1 x i16> @llvm.experimental.constrained.fptoui.v1i16.v1f16(<1 x half>, metadata)
107 define <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
117 declare <1 x i32> @llvm.experimental.constrained.fptosi.v1i32.v1f16(<1 x half>, metadata)
118 define <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
129 declare <1 x i32> @llvm.experimental.constrained.fptoui.v1i32.v1f16(<1 x half>, metadata)
130 define <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
141 declare <1 x i64> @llvm.experimental.constrained.fptosi.v1i64.v1f16(<1 x half>, metadata)
142 define <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
154 declare <1 x i64> @llvm.experimental.constrained.fptoui.v1i64.v1f16(<1 x half>, metadata)
155 define <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
167 declare <2 x i1> @llvm.experimental.constrained.fptosi.v2i1.v2f16(<2 x half>, metadata)
168 define <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
180 declare <2 x i1> @llvm.experimental.constrained.fptoui.v2i1.v2f16(<2 x half>, metadata)
181 define <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
193 declare <2 x i8> @llvm.experimental.constrained.fptosi.v2i8.v2f16(<2 x half>, metadata)
194 define <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
205 declare <2 x i8> @llvm.experimental.constrained.fptoui.v2i8.v2f16(<2 x half>, metadata)
206 define <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
217 declare <2 x i16> @llvm.experimental.constrained.fptosi.v2i16.v2f16(<2 x half>, metadata)
218 define <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
228 declare <2 x i16> @llvm.experimental.constrained.fptoui.v2i16.v2f16(<2 x half>, metadata)
229 define <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
239 declare <2 x i32> @llvm.experimental.constrained.fptosi.v2i32.v2f16(<2 x half>, metadata)
240 define <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
251 declare <2 x i32> @llvm.experimental.constrained.fptoui.v2i32.v2f16(<2 x half>, metadata)
252 define <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
263 declare <2 x i64> @llvm.experimental.constrained.fptosi.v2i64.v2f16(<2 x half>, metadata)
264 define <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
276 declare <2 x i64> @llvm.experimental.constrained.fptoui.v2i64.v2f16(<2 x half>, metadata)
277 define <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
289 declare <4 x i1> @llvm.experimental.constrained.fptosi.v4i1.v4f16(<4 x half>, metadata)
290 define <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
302 declare <4 x i1> @llvm.experimental.constrained.fptoui.v4i1.v4f16(<4 x half>, metadata)
303 define <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
315 declare <4 x i8> @llvm.experimental.constrained.fptosi.v4i8.v4f16(<4 x half>, metadata)
316 define <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
327 declare <4 x i8> @llvm.experimental.constrained.fptoui.v4i8.v4f16(<4 x half>, metadata)
328 define <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
339 declare <4 x i16> @llvm.experimental.constrained.fptosi.v4i16.v4f16(<4 x half>, metadata)
340 define <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
350 declare <4 x i16> @llvm.experimental.constrained.fptoui.v4i16.v4f16(<4 x half>, metadata)
351 define <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
361 declare <4 x i32> @llvm.experimental.constrained.fptosi.v4i32.v4f16(<4 x half>, metadata)
362 define <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
373 declare <4 x i32> @llvm.experimental.constrained.fptoui.v4i32.v4f16(<4 x half>, metadata)
374 define <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
385 declare <4 x i64> @llvm.experimental.constrained.fptosi.v4i64.v4f16(<4 x half>, metadata)
386 define <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
398 declare <4 x i64> @llvm.experimental.constrained.fptoui.v4i64.v4f16(<4 x half>, metadata)
399 define <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
411 declare <8 x i1> @llvm.experimental.constrained.fptosi.v8i1.v8f16(<8 x half>, metadata)
412 define <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
424 declare <8 x i1> @llvm.experimental.constrained.fptoui.v8i1.v8f16(<8 x half>, metadata)
425 define <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
437 declare <8 x i8> @llvm.experimental.constrained.fptosi.v8i8.v8f16(<8 x half>, metadata)
438 define <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
449 declare <8 x i8> @llvm.experimental.constrained.fptoui.v8i8.v8f16(<8 x half>, metadata)
450 define <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
461 declare <8 x i16> @llvm.experimental.constrained.fptosi.v8i16.v8f16(<8 x half>, metadata)
462 define <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
472 declare <8 x i16> @llvm.experimental.constrained.fptoui.v8i16.v8f16(<8 x half>, metadata)
473 define <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
483 declare <8 x i32> @llvm.experimental.constrained.fptosi.v8i32.v8f16(<8 x half>, metadata)
484 define <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
495 declare <8 x i32> @llvm.experimental.constrained.fptoui.v8i32.v8f16(<8 x half>, metadata)
496 define <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
507 declare <8 x i64> @llvm.experimental.constrained.fptosi.v8i64.v8f16(<8 x half>, metadata)
508 define <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
520 declare <8 x i64> @llvm.experimental.constrained.fptoui.v8i64.v8f16(<8 x half>, metadata)
521 define <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
533 declare <16 x i1> @llvm.experimental.constrained.fptosi.v16i1.v16f16(<16 x half>, metadata)
534 define <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
546 declare <16 x i1> @llvm.experimental.constrained.fptoui.v16i1.v16f16(<16 x half>, metadata)
547 define <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
559 declare <16 x i8> @llvm.experimental.constrained.fptosi.v16i8.v16f16(<16 x half>, metadata)
560 define <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
571 declare <16 x i8> @llvm.experimental.constrained.fptoui.v16i8.v16f16(<16 x half>, metadata)
572 define <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
583 declare <16 x i16> @llvm.experimental.constrained.fptosi.v16i16.v16f16(<16 x half>, metadata)
584 define <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
594 declare <16 x i16> @llvm.experimental.constrained.fptoui.v16i16.v16f16(<16 x half>, metadata)
595 define <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
605 declare <16 x i32> @llvm.experimental.constrained.fptosi.v16i32.v16f16(<16 x half>, metadata)
606 define <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
617 declare <16 x i32> @llvm.experimental.constrained.fptoui.v16i32.v16f16(<16 x half>, metadata)
618 define <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
629 declare <32 x i1> @llvm.experimental.constrained.fptosi.v32i1.v32f16(<32 x half>, metadata)
630 define <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
643 declare <32 x i1> @llvm.experimental.constrained.fptoui.v32i1.v32f16(<32 x half>, metadata)
644 define <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
657 declare <32 x i8> @llvm.experimental.constrained.fptosi.v32i8.v32f16(<32 x half>, metadata)
658 define <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
670 declare <32 x i8> @llvm.experimental.constrained.fptoui.v32i8.v32f16(<32 x half>, metadata)
671 define <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
683 declare <32 x i16> @llvm.experimental.constrained.fptosi.v32i16.v32f16(<32 x half>, metadata)
684 define <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
695 declare <32 x i16> @llvm.experimental.constrained.fptoui.v32i16.v32f16(<32 x half>, metadata)
696 define <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
707 declare <1 x i1> @llvm.experimental.constrained.fptosi.v1i1.v1f32(<1 x float>, metadata)
708 define <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
720 declare <1 x i1> @llvm.experimental.constrained.fptoui.v1i1.v1f32(<1 x float>, metadata)
721 define <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
733 declare <1 x i8> @llvm.experimental.constrained.fptosi.v1i8.v1f32(<1 x float>, metadata)
734 define <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
746 declare <1 x i8> @llvm.experimental.constrained.fptoui.v1i8.v1f32(<1 x float>, metadata)
747 define <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
759 declare <1 x i16> @llvm.experimental.constrained.fptosi.v1i16.v1f32(<1 x float>, metadata)
760 define <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
771 declare <1 x i16> @llvm.experimental.constrained.fptoui.v1i16.v1f32(<1 x float>, metadata)
772 define <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
783 declare <1 x i32> @llvm.experimental.constrained.fptosi.v1i32.v1f32(<1 x float>, metadata)
784 define <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
794 declare <1 x i32> @llvm.experimental.constrained.fptoui.v1i32.v1f32(<1 x float>, metadata)
795 define <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
805 declare <1 x i64> @llvm.experimental.constrained.fptosi.v1i64.v1f32(<1 x float>, metadata)
806 define <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
817 declare <1 x i64> @llvm.experimental.constrained.fptoui.v1i64.v1f32(<1 x float>, metadata)
818 define <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
829 declare <2 x i1> @llvm.experimental.constrained.fptosi.v2i1.v2f32(<2 x float>, metadata)
830 define <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
842 declare <2 x i1> @llvm.experimental.constrained.fptoui.v2i1.v2f32(<2 x float>, metadata)
843 define <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
855 declare <2 x i8> @llvm.experimental.constrained.fptosi.v2i8.v2f32(<2 x float>, metadata)
856 define <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
868 declare <2 x i8> @llvm.experimental.constrained.fptoui.v2i8.v2f32(<2 x float>, metadata)
869 define <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
881 declare <2 x i16> @llvm.experimental.constrained.fptosi.v2i16.v2f32(<2 x float>, metadata)
882 define <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
893 declare <2 x i16> @llvm.experimental.constrained.fptoui.v2i16.v2f32(<2 x float>, metadata)
894 define <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
905 declare <2 x i32> @llvm.experimental.constrained.fptosi.v2i32.v2f32(<2 x float>, metadata)
906 define <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
916 declare <2 x i32> @llvm.experimental.constrained.fptoui.v2i32.v2f32(<2 x float>, metadata)
917 define <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
927 declare <2 x i64> @llvm.experimental.constrained.fptosi.v2i64.v2f32(<2 x float>, metadata)
928 define <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
939 declare <2 x i64> @llvm.experimental.constrained.fptoui.v2i64.v2f32(<2 x float>, metadata)
940 define <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
951 declare <4 x i1> @llvm.experimental.constrained.fptosi.v4i1.v4f32(<4 x float>, metadata)
952 define <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
964 declare <4 x i1> @llvm.experimental.constrained.fptoui.v4i1.v4f32(<4 x float>, metadata)
965 define <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
977 declare <4 x i8> @llvm.experimental.constrained.fptosi.v4i8.v4f32(<4 x float>, metadata)
978 define <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
990 declare <4 x i8> @llvm.experimental.constrained.fptoui.v4i8.v4f32(<4 x float>, metadata)
991 define <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
1003 declare <4 x i16> @llvm.experimental.constrained.fptosi.v4i16.v4f32(<4 x float>, metadata)
1004 define <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
1015 declare <4 x i16> @llvm.experimental.constrained.fptoui.v4i16.v4f32(<4 x float>, metadata)
1016 define <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
1027 declare <4 x i32> @llvm.experimental.constrained.fptosi.v4i32.v4f32(<4 x float>, metadata)
1028 define <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
1038 declare <4 x i32> @llvm.experimental.constrained.fptoui.v4i32.v4f32(<4 x float>, metadata)
1039 define <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
1049 declare <4 x i64> @llvm.experimental.constrained.fptosi.v4i64.v4f32(<4 x float>, metadata)
1050 define <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
1061 declare <4 x i64> @llvm.experimental.constrained.fptoui.v4i64.v4f32(<4 x float>, metadata)
1062 define <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
1073 declare <8 x i1> @llvm.experimental.constrained.fptosi.v8i1.v8f32(<8 x float>, metadata)
1074 define <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
1086 declare <8 x i1> @llvm.experimental.constrained.fptoui.v8i1.v8f32(<8 x float>, metadata)
1087 define <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
1099 declare <8 x i8> @llvm.experimental.constrained.fptosi.v8i8.v8f32(<8 x float>, metadata)
1100 define <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
1112 declare <8 x i8> @llvm.experimental.constrained.fptoui.v8i8.v8f32(<8 x float>, metadata)
1113 define <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
1125 declare <8 x i16> @llvm.experimental.constrained.fptosi.v8i16.v8f32(<8 x float>, metadata)
1126 define <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
1137 declare <8 x i16> @llvm.experimental.constrained.fptoui.v8i16.v8f32(<8 x float>, metadata)
1138 define <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
1149 declare <8 x i32> @llvm.experimental.constrained.fptosi.v8i32.v8f32(<8 x float>, metadata)
1150 define <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
1160 declare <8 x i32> @llvm.experimental.constrained.fptoui.v8i32.v8f32(<8 x float>, metadata)
1161 define <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
1171 declare <8 x i64> @llvm.experimental.constrained.fptosi.v8i64.v8f32(<8 x float>, metadata)
1172 define <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
1183 declare <8 x i64> @llvm.experimental.constrained.fptoui.v8i64.v8f32(<8 x float>, metadata)
1184 define <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
1195 declare <16 x i1> @llvm.experimental.constrained.fptosi.v16i1.v16f32(<16 x float>, metadata)
1196 define <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
1208 declare <16 x i1> @llvm.experimental.constrained.fptoui.v16i1.v16f32(<16 x float>, metadata)
1209 define <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
1221 declare <16 x i8> @llvm.experimental.constrained.fptosi.v16i8.v16f32(<16 x float>, metadata)
1222 define <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
1234 declare <16 x i8> @llvm.experimental.constrained.fptoui.v16i8.v16f32(<16 x float>, metadata)
1235 define <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
1247 declare <16 x i16> @llvm.experimental.constrained.fptosi.v16i16.v16f32(<16 x float>, metadata)
1248 define <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
1259 declare <16 x i16> @llvm.experimental.constrained.fptoui.v16i16.v16f32(<16 x float>, metadata)
1260 define <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
1271 declare <16 x i32> @llvm.experimental.constrained.fptosi.v16i32.v16f32(<16 x float>, metadata)
1272 define <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
1282 declare <16 x i32> @llvm.experimental.constrained.fptoui.v16i32.v16f32(<16 x float>, metadata)
1283 define <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
1293 declare <1 x i1> @llvm.experimental.constrained.fptosi.v1i1.v1f64(<1 x double>, metadata)
1294 define <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
1306 declare <1 x i1> @llvm.experimental.constrained.fptoui.v1i1.v1f64(<1 x double>, metadata)
1307 define <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
1319 declare <1 x i8> @llvm.experimental.constrained.fptosi.v1i8.v1f64(<1 x double>, metadata)
1320 define <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
1334 declare <1 x i8> @llvm.experimental.constrained.fptoui.v1i8.v1f64(<1 x double>, metadata)
1335 define <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
1349 declare <1 x i16> @llvm.experimental.constrained.fptosi.v1i16.v1f64(<1 x double>, metadata)
1350 define <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
1362 declare <1 x i16> @llvm.experimental.constrained.fptoui.v1i16.v1f64(<1 x double>, metadata)
1363 define <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
1375 declare <1 x i32> @llvm.experimental.constrained.fptosi.v1i32.v1f64(<1 x double>, metadata)
1376 define <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
1387 declare <1 x i32> @llvm.experimental.constrained.fptoui.v1i32.v1f64(<1 x double>, metadata)
1388 define <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
1399 declare <1 x i64> @llvm.experimental.constrained.fptosi.v1i64.v1f64(<1 x double>, metadata)
1400 define <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
1410 declare <1 x i64> @llvm.experimental.constrained.fptoui.v1i64.v1f64(<1 x double>, metadata)
1411 define <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
1421 declare <2 x i1> @llvm.experimental.constrained.fptosi.v2i1.v2f64(<2 x double>, metadata)
1422 define <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
1434 declare <2 x i1> @llvm.experimental.constrained.fptoui.v2i1.v2f64(<2 x double>, metadata)
1435 define <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
1447 declare <2 x i8> @llvm.experimental.constrained.fptosi.v2i8.v2f64(<2 x double>, metadata)
1448 define <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
1462 declare <2 x i8> @llvm.experimental.constrained.fptoui.v2i8.v2f64(<2 x double>, metadata)
1463 define <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
1477 declare <2 x i16> @llvm.experimental.constrained.fptosi.v2i16.v2f64(<2 x double>, metadata)
1478 define <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
1490 declare <2 x i16> @llvm.experimental.constrained.fptoui.v2i16.v2f64(<2 x double>, metadata)
1491 define <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
1503 declare <2 x i32> @llvm.experimental.constrained.fptosi.v2i32.v2f64(<2 x double>, metadata)
1504 define <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
1515 declare <2 x i32> @llvm.experimental.constrained.fptoui.v2i32.v2f64(<2 x double>, metadata)
1516 define <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
1527 declare <2 x i64> @llvm.experimental.constrained.fptosi.v2i64.v2f64(<2 x double>, metadata)
1528 define <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
1538 declare <2 x i64> @llvm.experimental.constrained.fptoui.v2i64.v2f64(<2 x double>, metadata)
1539 define <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
1549 declare <4 x i1> @llvm.experimental.constrained.fptosi.v4i1.v4f64(<4 x double>, metadata)
1550 define <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
1562 declare <4 x i1> @llvm.experimental.constrained.fptoui.v4i1.v4f64(<4 x double>, metadata)
1563 define <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
1575 declare <4 x i8> @llvm.experimental.constrained.fptosi.v4i8.v4f64(<4 x double>, metadata)
1576 define <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
1590 declare <4 x i8> @llvm.experimental.constrained.fptoui.v4i8.v4f64(<4 x double>, metadata)
1591 define <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
1605 declare <4 x i16> @llvm.experimental.constrained.fptosi.v4i16.v4f64(<4 x double>, metadata)
1606 define <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
1618 declare <4 x i16> @llvm.experimental.constrained.fptoui.v4i16.v4f64(<4 x double>, metadata)
1619 define <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
1631 declare <4 x i32> @llvm.experimental.constrained.fptosi.v4i32.v4f64(<4 x double>, metadata)
1632 define <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
1643 declare <4 x i32> @llvm.experimental.constrained.fptoui.v4i32.v4f64(<4 x double>, metadata)
1644 define <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
1655 declare <4 x i64> @llvm.experimental.constrained.fptosi.v4i64.v4f64(<4 x double>, metadata)
1656 define <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
1666 declare <4 x i64> @llvm.experimental.constrained.fptoui.v4i64.v4f64(<4 x double>, metadata)
1667 define <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
1677 declare <8 x i1> @llvm.experimental.constrained.fptosi.v8i1.v8f64(<8 x double>, metadata)
1678 define <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
1690 declare <8 x i1> @llvm.experimental.constrained.fptoui.v8i1.v8f64(<8 x double>, metadata)
1691 define <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
1703 declare <8 x i8> @llvm.experimental.constrained.fptosi.v8i8.v8f64(<8 x double>, metadata)
1704 define <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
1718 declare <8 x i8> @llvm.experimental.constrained.fptoui.v8i8.v8f64(<8 x double>, metadata)
1719 define <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
1733 declare <8 x i16> @llvm.experimental.constrained.fptosi.v8i16.v8f64(<8 x double>, metadata)
1734 define <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
1746 declare <8 x i16> @llvm.experimental.constrained.fptoui.v8i16.v8f64(<8 x double>, metadata)
1747 define <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
1759 declare <8 x i32> @llvm.experimental.constrained.fptosi.v8i32.v8f64(<8 x double>, metadata)
1760 define <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
1771 declare <8 x i32> @llvm.experimental.constrained.fptoui.v8i32.v8f64(<8 x double>, metadata)
1772 define <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
1783 declare <8 x i64> @llvm.experimental.constrained.fptosi.v8i64.v8f64(<8 x double>, metadata)
1784 define <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
1794 declare <8 x i64> @llvm.experimental.constrained.fptoui.v8i64.v8f64(<8 x double>, metadata)
1795 define <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