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:
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
16 %evec = call <1 x i1> @llvm.experimental.constrained.fptosi.v1i1.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
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:
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
29 %evec = call <1 x i1> @llvm.experimental.constrained.fptoui.v1i1.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
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:
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
42 ; RV64-LABEL: vfptosi_v1f16_v1i7:
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
48 %evec = call <1 x i7> @llvm.experimental.constrained.fptosi.v1i7.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
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:
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
61 ; RV64-LABEL: vfptoui_v1f16_v1i7:
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
67 %evec = call <1 x i7> @llvm.experimental.constrained.fptoui.v1i7.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
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:
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
79 %evec = call <1 x i8> @llvm.experimental.constrained.fptosi.v1i8.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
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:
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
91 %evec = call <1 x i8> @llvm.experimental.constrained.fptoui.v1i8.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
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:
99 ; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma
100 ; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8
102 %evec = call <1 x i16> @llvm.experimental.constrained.fptosi.v1i16.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
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:
110 ; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma
111 ; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8
113 %evec = call <1 x i16> @llvm.experimental.constrained.fptoui.v1i16.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
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:
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
125 %evec = call <1 x i32> @llvm.experimental.constrained.fptosi.v1i32.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
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:
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
137 %evec = call <1 x i32> @llvm.experimental.constrained.fptoui.v1i32.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
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:
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
150 %evec = call <1 x i64> @llvm.experimental.constrained.fptosi.v1i64.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
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:
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
163 %evec = call <1 x i64> @llvm.experimental.constrained.fptoui.v1i64.v1f16(<1 x half> %va, metadata !"fpexcept.strict")
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:
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
176 %evec = call <2 x i1> @llvm.experimental.constrained.fptosi.v2i1.v2f16(<2 x half> %va, metadata !"fpexcept.strict")
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:
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
189 %evec = call <2 x i1> @llvm.experimental.constrained.fptoui.v2i1.v2f16(<2 x half> %va, metadata !"fpexcept.strict")
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:
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
201 %evec = call <2 x i8> @llvm.experimental.constrained.fptosi.v2i8.v2f16(<2 x half> %va, metadata !"fpexcept.strict")
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:
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
213 %evec = call <2 x i8> @llvm.experimental.constrained.fptoui.v2i8.v2f16(<2 x half> %va, metadata !"fpexcept.strict")
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:
221 ; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma
222 ; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8
224 %evec = call <2 x i16> @llvm.experimental.constrained.fptosi.v2i16.v2f16(<2 x half> %va, metadata !"fpexcept.strict")
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:
232 ; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma
233 ; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8
235 %evec = call <2 x i16> @llvm.experimental.constrained.fptoui.v2i16.v2f16(<2 x half> %va, metadata !"fpexcept.strict")
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:
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
247 %evec = call <2 x i32> @llvm.experimental.constrained.fptosi.v2i32.v2f16(<2 x half> %va, metadata !"fpexcept.strict")
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:
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
259 %evec = call <2 x i32> @llvm.experimental.constrained.fptoui.v2i32.v2f16(<2 x half> %va, metadata !"fpexcept.strict")
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:
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
272 %evec = call <2 x i64> @llvm.experimental.constrained.fptosi.v2i64.v2f16(<2 x half> %va, metadata !"fpexcept.strict")
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:
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
285 %evec = call <2 x i64> @llvm.experimental.constrained.fptoui.v2i64.v2f16(<2 x half> %va, metadata !"fpexcept.strict")
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:
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
298 %evec = call <4 x i1> @llvm.experimental.constrained.fptosi.v4i1.v4f16(<4 x half> %va, metadata !"fpexcept.strict")
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:
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
311 %evec = call <4 x i1> @llvm.experimental.constrained.fptoui.v4i1.v4f16(<4 x half> %va, metadata !"fpexcept.strict")
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:
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
323 %evec = call <4 x i8> @llvm.experimental.constrained.fptosi.v4i8.v4f16(<4 x half> %va, metadata !"fpexcept.strict")
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:
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
335 %evec = call <4 x i8> @llvm.experimental.constrained.fptoui.v4i8.v4f16(<4 x half> %va, metadata !"fpexcept.strict")
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:
343 ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
344 ; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8
346 %evec = call <4 x i16> @llvm.experimental.constrained.fptosi.v4i16.v4f16(<4 x half> %va, metadata !"fpexcept.strict")
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:
354 ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
355 ; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8
357 %evec = call <4 x i16> @llvm.experimental.constrained.fptoui.v4i16.v4f16(<4 x half> %va, metadata !"fpexcept.strict")
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:
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
369 %evec = call <4 x i32> @llvm.experimental.constrained.fptosi.v4i32.v4f16(<4 x half> %va, metadata !"fpexcept.strict")
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:
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
381 %evec = call <4 x i32> @llvm.experimental.constrained.fptoui.v4i32.v4f16(<4 x half> %va, metadata !"fpexcept.strict")
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:
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
394 %evec = call <4 x i64> @llvm.experimental.constrained.fptosi.v4i64.v4f16(<4 x half> %va, metadata !"fpexcept.strict")
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:
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
407 %evec = call <4 x i64> @llvm.experimental.constrained.fptoui.v4i64.v4f16(<4 x half> %va, metadata !"fpexcept.strict")
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:
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
420 %evec = call <8 x i1> @llvm.experimental.constrained.fptosi.v8i1.v8f16(<8 x half> %va, metadata !"fpexcept.strict")
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:
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
433 %evec = call <8 x i1> @llvm.experimental.constrained.fptoui.v8i1.v8f16(<8 x half> %va, metadata !"fpexcept.strict")
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:
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
445 %evec = call <8 x i8> @llvm.experimental.constrained.fptosi.v8i8.v8f16(<8 x half> %va, metadata !"fpexcept.strict")
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:
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
457 %evec = call <8 x i8> @llvm.experimental.constrained.fptoui.v8i8.v8f16(<8 x half> %va, metadata !"fpexcept.strict")
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:
465 ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
466 ; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8
468 %evec = call <8 x i16> @llvm.experimental.constrained.fptosi.v8i16.v8f16(<8 x half> %va, metadata !"fpexcept.strict")
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:
476 ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
477 ; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8
479 %evec = call <8 x i16> @llvm.experimental.constrained.fptoui.v8i16.v8f16(<8 x half> %va, metadata !"fpexcept.strict")
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:
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
491 %evec = call <8 x i32> @llvm.experimental.constrained.fptosi.v8i32.v8f16(<8 x half> %va, metadata !"fpexcept.strict")
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:
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
503 %evec = call <8 x i32> @llvm.experimental.constrained.fptoui.v8i32.v8f16(<8 x half> %va, metadata !"fpexcept.strict")
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:
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
516 %evec = call <8 x i64> @llvm.experimental.constrained.fptosi.v8i64.v8f16(<8 x half> %va, metadata !"fpexcept.strict")
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:
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
529 %evec = call <8 x i64> @llvm.experimental.constrained.fptoui.v8i64.v8f16(<8 x half> %va, metadata !"fpexcept.strict")
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:
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
542 %evec = call <16 x i1> @llvm.experimental.constrained.fptosi.v16i1.v16f16(<16 x half> %va, metadata !"fpexcept.strict")
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:
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
555 %evec = call <16 x i1> @llvm.experimental.constrained.fptoui.v16i1.v16f16(<16 x half> %va, metadata !"fpexcept.strict")
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:
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
567 %evec = call <16 x i8> @llvm.experimental.constrained.fptosi.v16i8.v16f16(<16 x half> %va, metadata !"fpexcept.strict")
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:
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
579 %evec = call <16 x i8> @llvm.experimental.constrained.fptoui.v16i8.v16f16(<16 x half> %va, metadata !"fpexcept.strict")
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:
587 ; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma
588 ; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8
590 %evec = call <16 x i16> @llvm.experimental.constrained.fptosi.v16i16.v16f16(<16 x half> %va, metadata !"fpexcept.strict")
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:
598 ; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma
599 ; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8
601 %evec = call <16 x i16> @llvm.experimental.constrained.fptoui.v16i16.v16f16(<16 x half> %va, metadata !"fpexcept.strict")
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:
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
613 %evec = call <16 x i32> @llvm.experimental.constrained.fptosi.v16i32.v16f16(<16 x half> %va, metadata !"fpexcept.strict")
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:
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
625 %evec = call <16 x i32> @llvm.experimental.constrained.fptoui.v16i32.v16f16(<16 x half> %va, metadata !"fpexcept.strict")
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:
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
639 %evec = call <32 x i1> @llvm.experimental.constrained.fptosi.v32i1.v32f16(<32 x half> %va, metadata !"fpexcept.strict")
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:
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
653 %evec = call <32 x i1> @llvm.experimental.constrained.fptoui.v32i1.v32f16(<32 x half> %va, metadata !"fpexcept.strict")
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:
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
666 %evec = call <32 x i8> @llvm.experimental.constrained.fptosi.v32i8.v32f16(<32 x half> %va, metadata !"fpexcept.strict")
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:
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
679 %evec = call <32 x i8> @llvm.experimental.constrained.fptoui.v32i8.v32f16(<32 x half> %va, metadata !"fpexcept.strict")
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:
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
691 %evec = call <32 x i16> @llvm.experimental.constrained.fptosi.v32i16.v32f16(<32 x half> %va, metadata !"fpexcept.strict")
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:
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
703 %evec = call <32 x i16> @llvm.experimental.constrained.fptoui.v32i16.v32f16(<32 x half> %va, metadata !"fpexcept.strict")
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:
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
716 %evec = call <1 x i1> @llvm.experimental.constrained.fptosi.v1i1.v1f32(<1 x float> %va, metadata !"fpexcept.strict")
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:
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
729 %evec = call <1 x i1> @llvm.experimental.constrained.fptoui.v1i1.v1f32(<1 x float> %va, metadata !"fpexcept.strict")
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:
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
742 %evec = call <1 x i8> @llvm.experimental.constrained.fptosi.v1i8.v1f32(<1 x float> %va, metadata !"fpexcept.strict")
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:
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
755 %evec = call <1 x i8> @llvm.experimental.constrained.fptoui.v1i8.v1f32(<1 x float> %va, metadata !"fpexcept.strict")
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:
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
767 %evec = call <1 x i16> @llvm.experimental.constrained.fptosi.v1i16.v1f32(<1 x float> %va, metadata !"fpexcept.strict")
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:
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
779 %evec = call <1 x i16> @llvm.experimental.constrained.fptoui.v1i16.v1f32(<1 x float> %va, metadata !"fpexcept.strict")
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:
787 ; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
788 ; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8
790 %evec = call <1 x i32> @llvm.experimental.constrained.fptosi.v1i32.v1f32(<1 x float> %va, metadata !"fpexcept.strict")
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:
798 ; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
799 ; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8
801 %evec = call <1 x i32> @llvm.experimental.constrained.fptoui.v1i32.v1f32(<1 x float> %va, metadata !"fpexcept.strict")
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:
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
813 %evec = call <1 x i64> @llvm.experimental.constrained.fptosi.v1i64.v1f32(<1 x float> %va, metadata !"fpexcept.strict")
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:
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
825 %evec = call <1 x i64> @llvm.experimental.constrained.fptoui.v1i64.v1f32(<1 x float> %va, metadata !"fpexcept.strict")
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:
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
838 %evec = call <2 x i1> @llvm.experimental.constrained.fptosi.v2i1.v2f32(<2 x float> %va, metadata !"fpexcept.strict")
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:
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
851 %evec = call <2 x i1> @llvm.experimental.constrained.fptoui.v2i1.v2f32(<2 x float> %va, metadata !"fpexcept.strict")
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:
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
864 %evec = call <2 x i8> @llvm.experimental.constrained.fptosi.v2i8.v2f32(<2 x float> %va, metadata !"fpexcept.strict")
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:
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
877 %evec = call <2 x i8> @llvm.experimental.constrained.fptoui.v2i8.v2f32(<2 x float> %va, metadata !"fpexcept.strict")
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:
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
889 %evec = call <2 x i16> @llvm.experimental.constrained.fptosi.v2i16.v2f32(<2 x float> %va, metadata !"fpexcept.strict")
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:
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
901 %evec = call <2 x i16> @llvm.experimental.constrained.fptoui.v2i16.v2f32(<2 x float> %va, metadata !"fpexcept.strict")
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:
909 ; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
910 ; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8
912 %evec = call <2 x i32> @llvm.experimental.constrained.fptosi.v2i32.v2f32(<2 x float> %va, metadata !"fpexcept.strict")
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:
920 ; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
921 ; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8
923 %evec = call <2 x i32> @llvm.experimental.constrained.fptoui.v2i32.v2f32(<2 x float> %va, metadata !"fpexcept.strict")
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:
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
935 %evec = call <2 x i64> @llvm.experimental.constrained.fptosi.v2i64.v2f32(<2 x float> %va, metadata !"fpexcept.strict")
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:
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
947 %evec = call <2 x i64> @llvm.experimental.constrained.fptoui.v2i64.v2f32(<2 x float> %va, metadata !"fpexcept.strict")
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:
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
960 %evec = call <4 x i1> @llvm.experimental.constrained.fptosi.v4i1.v4f32(<4 x float> %va, metadata !"fpexcept.strict")
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:
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
973 %evec = call <4 x i1> @llvm.experimental.constrained.fptoui.v4i1.v4f32(<4 x float> %va, metadata !"fpexcept.strict")
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:
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
986 %evec = call <4 x i8> @llvm.experimental.constrained.fptosi.v4i8.v4f32(<4 x float> %va, metadata !"fpexcept.strict")
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:
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
999 %evec = call <4 x i8> @llvm.experimental.constrained.fptoui.v4i8.v4f32(<4 x float> %va, metadata !"fpexcept.strict")
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:
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
1011 %evec = call <4 x i16> @llvm.experimental.constrained.fptosi.v4i16.v4f32(<4 x float> %va, metadata !"fpexcept.strict")
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:
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
1023 %evec = call <4 x i16> @llvm.experimental.constrained.fptoui.v4i16.v4f32(<4 x float> %va, metadata !"fpexcept.strict")
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:
1031 ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
1032 ; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8
1034 %evec = call <4 x i32> @llvm.experimental.constrained.fptosi.v4i32.v4f32(<4 x float> %va, metadata !"fpexcept.strict")
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:
1042 ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
1043 ; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8
1045 %evec = call <4 x i32> @llvm.experimental.constrained.fptoui.v4i32.v4f32(<4 x float> %va, metadata !"fpexcept.strict")
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:
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
1057 %evec = call <4 x i64> @llvm.experimental.constrained.fptosi.v4i64.v4f32(<4 x float> %va, metadata !"fpexcept.strict")
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:
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
1069 %evec = call <4 x i64> @llvm.experimental.constrained.fptoui.v4i64.v4f32(<4 x float> %va, metadata !"fpexcept.strict")
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:
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
1082 %evec = call <8 x i1> @llvm.experimental.constrained.fptosi.v8i1.v8f32(<8 x float> %va, metadata !"fpexcept.strict")
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:
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
1095 %evec = call <8 x i1> @llvm.experimental.constrained.fptoui.v8i1.v8f32(<8 x float> %va, metadata !"fpexcept.strict")
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:
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
1108 %evec = call <8 x i8> @llvm.experimental.constrained.fptosi.v8i8.v8f32(<8 x float> %va, metadata !"fpexcept.strict")
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:
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
1121 %evec = call <8 x i8> @llvm.experimental.constrained.fptoui.v8i8.v8f32(<8 x float> %va, metadata !"fpexcept.strict")
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:
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
1133 %evec = call <8 x i16> @llvm.experimental.constrained.fptosi.v8i16.v8f32(<8 x float> %va, metadata !"fpexcept.strict")
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:
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
1145 %evec = call <8 x i16> @llvm.experimental.constrained.fptoui.v8i16.v8f32(<8 x float> %va, metadata !"fpexcept.strict")
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:
1153 ; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma
1154 ; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8
1156 %evec = call <8 x i32> @llvm.experimental.constrained.fptosi.v8i32.v8f32(<8 x float> %va, metadata !"fpexcept.strict")
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:
1164 ; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma
1165 ; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8
1167 %evec = call <8 x i32> @llvm.experimental.constrained.fptoui.v8i32.v8f32(<8 x float> %va, metadata !"fpexcept.strict")
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:
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
1179 %evec = call <8 x i64> @llvm.experimental.constrained.fptosi.v8i64.v8f32(<8 x float> %va, metadata !"fpexcept.strict")
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:
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
1191 %evec = call <8 x i64> @llvm.experimental.constrained.fptoui.v8i64.v8f32(<8 x float> %va, metadata !"fpexcept.strict")
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:
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
1204 %evec = call <16 x i1> @llvm.experimental.constrained.fptosi.v16i1.v16f32(<16 x float> %va, metadata !"fpexcept.strict")
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:
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
1217 %evec = call <16 x i1> @llvm.experimental.constrained.fptoui.v16i1.v16f32(<16 x float> %va, metadata !"fpexcept.strict")
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:
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
1230 %evec = call <16 x i8> @llvm.experimental.constrained.fptosi.v16i8.v16f32(<16 x float> %va, metadata !"fpexcept.strict")
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:
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
1243 %evec = call <16 x i8> @llvm.experimental.constrained.fptoui.v16i8.v16f32(<16 x float> %va, metadata !"fpexcept.strict")
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:
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
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:
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
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:
1275 ; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma
1276 ; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8
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:
1286 ; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma
1287 ; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8
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:
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
1302 %evec = call <1 x i1> @llvm.experimental.constrained.fptosi.v1i1.v1f64(<1 x double> %va, metadata !"fpexcept.strict")
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:
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
1315 %evec = call <1 x i1> @llvm.experimental.constrained.fptoui.v1i1.v1f64(<1 x double> %va, metadata !"fpexcept.strict")
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:
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
1330 %evec = call <1 x i8> @llvm.experimental.constrained.fptosi.v1i8.v1f64(<1 x double> %va, metadata !"fpexcept.strict")
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:
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
1345 %evec = call <1 x i8> @llvm.experimental.constrained.fptoui.v1i8.v1f64(<1 x double> %va, metadata !"fpexcept.strict")
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:
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
1358 %evec = call <1 x i16> @llvm.experimental.constrained.fptosi.v1i16.v1f64(<1 x double> %va, metadata !"fpexcept.strict")
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:
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
1371 %evec = call <1 x i16> @llvm.experimental.constrained.fptoui.v1i16.v1f64(<1 x double> %va, metadata !"fpexcept.strict")
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:
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
1383 %evec = call <1 x i32> @llvm.experimental.constrained.fptosi.v1i32.v1f64(<1 x double> %va, metadata !"fpexcept.strict")
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:
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
1395 %evec = call <1 x i32> @llvm.experimental.constrained.fptoui.v1i32.v1f64(<1 x double> %va, metadata !"fpexcept.strict")
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:
1403 ; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma
1404 ; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8
1406 %evec = call <1 x i64> @llvm.experimental.constrained.fptosi.v1i64.v1f64(<1 x double> %va, metadata !"fpexcept.strict")
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:
1414 ; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma
1415 ; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8
1417 %evec = call <1 x i64> @llvm.experimental.constrained.fptoui.v1i64.v1f64(<1 x double> %va, metadata !"fpexcept.strict")
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:
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
1430 %evec = call <2 x i1> @llvm.experimental.constrained.fptosi.v2i1.v2f64(<2 x double> %va, metadata !"fpexcept.strict")
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:
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
1443 %evec = call <2 x i1> @llvm.experimental.constrained.fptoui.v2i1.v2f64(<2 x double> %va, metadata !"fpexcept.strict")
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:
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
1458 %evec = call <2 x i8> @llvm.experimental.constrained.fptosi.v2i8.v2f64(<2 x double> %va, metadata !"fpexcept.strict")
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:
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
1473 %evec = call <2 x i8> @llvm.experimental.constrained.fptoui.v2i8.v2f64(<2 x double> %va, metadata !"fpexcept.strict")
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:
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
1486 %evec = call <2 x i16> @llvm.experimental.constrained.fptosi.v2i16.v2f64(<2 x double> %va, metadata !"fpexcept.strict")
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:
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
1499 %evec = call <2 x i16> @llvm.experimental.constrained.fptoui.v2i16.v2f64(<2 x double> %va, metadata !"fpexcept.strict")
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:
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
1511 %evec = call <2 x i32> @llvm.experimental.constrained.fptosi.v2i32.v2f64(<2 x double> %va, metadata !"fpexcept.strict")
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:
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
1523 %evec = call <2 x i32> @llvm.experimental.constrained.fptoui.v2i32.v2f64(<2 x double> %va, metadata !"fpexcept.strict")
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:
1531 ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
1532 ; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8
1534 %evec = call <2 x i64> @llvm.experimental.constrained.fptosi.v2i64.v2f64(<2 x double> %va, metadata !"fpexcept.strict")
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:
1542 ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
1543 ; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8
1545 %evec = call <2 x i64> @llvm.experimental.constrained.fptoui.v2i64.v2f64(<2 x double> %va, metadata !"fpexcept.strict")
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:
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
1558 %evec = call <4 x i1> @llvm.experimental.constrained.fptosi.v4i1.v4f64(<4 x double> %va, metadata !"fpexcept.strict")
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:
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
1571 %evec = call <4 x i1> @llvm.experimental.constrained.fptoui.v4i1.v4f64(<4 x double> %va, metadata !"fpexcept.strict")
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:
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
1586 %evec = call <4 x i8> @llvm.experimental.constrained.fptosi.v4i8.v4f64(<4 x double> %va, metadata !"fpexcept.strict")
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:
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
1601 %evec = call <4 x i8> @llvm.experimental.constrained.fptoui.v4i8.v4f64(<4 x double> %va, metadata !"fpexcept.strict")
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:
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
1614 %evec = call <4 x i16> @llvm.experimental.constrained.fptosi.v4i16.v4f64(<4 x double> %va, metadata !"fpexcept.strict")
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:
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
1627 %evec = call <4 x i16> @llvm.experimental.constrained.fptoui.v4i16.v4f64(<4 x double> %va, metadata !"fpexcept.strict")
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:
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
1639 %evec = call <4 x i32> @llvm.experimental.constrained.fptosi.v4i32.v4f64(<4 x double> %va, metadata !"fpexcept.strict")
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:
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
1651 %evec = call <4 x i32> @llvm.experimental.constrained.fptoui.v4i32.v4f64(<4 x double> %va, metadata !"fpexcept.strict")
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:
1659 ; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma
1660 ; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8
1662 %evec = call <4 x i64> @llvm.experimental.constrained.fptosi.v4i64.v4f64(<4 x double> %va, metadata !"fpexcept.strict")
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:
1670 ; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma
1671 ; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8
1673 %evec = call <4 x i64> @llvm.experimental.constrained.fptoui.v4i64.v4f64(<4 x double> %va, metadata !"fpexcept.strict")
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:
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
1686 %evec = call <8 x i1> @llvm.experimental.constrained.fptosi.v8i1.v8f64(<8 x double> %va, metadata !"fpexcept.strict")
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:
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
1699 %evec = call <8 x i1> @llvm.experimental.constrained.fptoui.v8i1.v8f64(<8 x double> %va, metadata !"fpexcept.strict")
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:
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
1714 %evec = call <8 x i8> @llvm.experimental.constrained.fptosi.v8i8.v8f64(<8 x double> %va, metadata !"fpexcept.strict")
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:
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
1729 %evec = call <8 x i8> @llvm.experimental.constrained.fptoui.v8i8.v8f64(<8 x double> %va, metadata !"fpexcept.strict")
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:
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
1742 %evec = call <8 x i16> @llvm.experimental.constrained.fptosi.v8i16.v8f64(<8 x double> %va, metadata !"fpexcept.strict")
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:
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
1755 %evec = call <8 x i16> @llvm.experimental.constrained.fptoui.v8i16.v8f64(<8 x double> %va, metadata !"fpexcept.strict")
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:
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
1767 %evec = call <8 x i32> @llvm.experimental.constrained.fptosi.v8i32.v8f64(<8 x double> %va, metadata !"fpexcept.strict")
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:
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
1779 %evec = call <8 x i32> @llvm.experimental.constrained.fptoui.v8i32.v8f64(<8 x double> %va, metadata !"fpexcept.strict")
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:
1787 ; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma
1788 ; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8
1790 %evec = call <8 x i64> @llvm.experimental.constrained.fptosi.v8i64.v8f64(<8 x double> %va, metadata !"fpexcept.strict")
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:
1798 ; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma
1799 ; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8
1801 %evec = call <8 x i64> @llvm.experimental.constrained.fptoui.v8i64.v8f64(<8 x double> %va, metadata !"fpexcept.strict")