1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+d,+zvfh,+v,+zvfbfmin \
3 ; RUN: -target-abi=ilp32d -verify-machineinstrs < %s | FileCheck %s \
4 ; RUN: --check-prefixes=CHECK,ZVFH
5 ; RUN: llc -mtriple=riscv64 -mattr=+d,+zvfh,+v,+zvfbfmin \
6 ; RUN: -target-abi=lp64d -verify-machineinstrs < %s | FileCheck %s \
7 ; RUN: --check-prefixes=CHECK,ZVFH
8 ; RUN: llc -mtriple=riscv32 -mattr=+d,+zvfhmin,+v,+zvfbfmin \
9 ; RUN: -target-abi=ilp32d -verify-machineinstrs < %s | FileCheck %s \
10 ; RUN: --check-prefixes=CHECK,ZVFHMIN
11 ; RUN: llc -mtriple=riscv64 -mattr=+d,+zvfhmin,+v,+zvfbfmin \
12 ; RUN: -target-abi=lp64d -verify-machineinstrs < %s | FileCheck %s \
13 ; RUN: --check-prefixes=CHECK,ZVFHMIN
15 define <vscale x 1 x bfloat> @vsitofp_nxv1i1_nxv1bf16(<vscale x 1 x i1> %va) {
16 ; CHECK-LABEL: vsitofp_nxv1i1_nxv1bf16:
18 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
19 ; CHECK-NEXT: vmv.v.i v8, 0
20 ; CHECK-NEXT: vmerge.vim v8, v8, -1, v0
21 ; CHECK-NEXT: vfwcvt.f.x.v v9, v8
22 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v9
24 %evec = sitofp <vscale x 1 x i1> %va to <vscale x 1 x bfloat>
25 ret <vscale x 1 x bfloat> %evec
28 define <vscale x 1 x bfloat> @vuitofp_nxv1i1_nxv1bf16(<vscale x 1 x i1> %va) {
29 ; CHECK-LABEL: vuitofp_nxv1i1_nxv1bf16:
31 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
32 ; CHECK-NEXT: vmv.v.i v8, 0
33 ; CHECK-NEXT: vmerge.vim v8, v8, 1, v0
34 ; CHECK-NEXT: vfwcvt.f.xu.v v9, v8
35 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v9
37 %evec = uitofp <vscale x 1 x i1> %va to <vscale x 1 x bfloat>
38 ret <vscale x 1 x bfloat> %evec
41 define <vscale x 2 x bfloat> @vsitofp_nxv2i1_nxv2bf16(<vscale x 2 x i1> %va) {
42 ; CHECK-LABEL: vsitofp_nxv2i1_nxv2bf16:
44 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
45 ; CHECK-NEXT: vmv.v.i v8, 0
46 ; CHECK-NEXT: vmerge.vim v8, v8, -1, v0
47 ; CHECK-NEXT: vfwcvt.f.x.v v9, v8
48 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v9
50 %evec = sitofp <vscale x 2 x i1> %va to <vscale x 2 x bfloat>
51 ret <vscale x 2 x bfloat> %evec
54 define <vscale x 2 x bfloat> @vuitofp_nxv2i1_nxv2bf16(<vscale x 2 x i1> %va) {
55 ; CHECK-LABEL: vuitofp_nxv2i1_nxv2bf16:
57 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
58 ; CHECK-NEXT: vmv.v.i v8, 0
59 ; CHECK-NEXT: vmerge.vim v8, v8, 1, v0
60 ; CHECK-NEXT: vfwcvt.f.xu.v v9, v8
61 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v9
63 %evec = uitofp <vscale x 2 x i1> %va to <vscale x 2 x bfloat>
64 ret <vscale x 2 x bfloat> %evec
67 define <vscale x 4 x bfloat> @vsitofp_nxv4i1_nxv4bf16(<vscale x 4 x i1> %va) {
68 ; CHECK-LABEL: vsitofp_nxv4i1_nxv4bf16:
70 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
71 ; CHECK-NEXT: vmv.v.i v8, 0
72 ; CHECK-NEXT: vmerge.vim v8, v8, -1, v0
73 ; CHECK-NEXT: vfwcvt.f.x.v v10, v8
74 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v10
76 %evec = sitofp <vscale x 4 x i1> %va to <vscale x 4 x bfloat>
77 ret <vscale x 4 x bfloat> %evec
80 define <vscale x 4 x bfloat> @vuitofp_nxv4i1_nxv4bf16(<vscale x 4 x i1> %va) {
81 ; CHECK-LABEL: vuitofp_nxv4i1_nxv4bf16:
83 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
84 ; CHECK-NEXT: vmv.v.i v8, 0
85 ; CHECK-NEXT: vmerge.vim v8, v8, 1, v0
86 ; CHECK-NEXT: vfwcvt.f.xu.v v10, v8
87 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v10
89 %evec = uitofp <vscale x 4 x i1> %va to <vscale x 4 x bfloat>
90 ret <vscale x 4 x bfloat> %evec
93 define <vscale x 8 x bfloat> @vsitofp_nxv8i1_nxv8bf16(<vscale x 8 x i1> %va) {
94 ; CHECK-LABEL: vsitofp_nxv8i1_nxv8bf16:
96 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
97 ; CHECK-NEXT: vmv.v.i v8, 0
98 ; CHECK-NEXT: vmerge.vim v8, v8, -1, v0
99 ; CHECK-NEXT: vfwcvt.f.x.v v12, v8
100 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v12
102 %evec = sitofp <vscale x 8 x i1> %va to <vscale x 8 x bfloat>
103 ret <vscale x 8 x bfloat> %evec
106 define <vscale x 8 x bfloat> @vuitofp_nxv8i1_nxv8bf16(<vscale x 8 x i1> %va) {
107 ; CHECK-LABEL: vuitofp_nxv8i1_nxv8bf16:
109 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
110 ; CHECK-NEXT: vmv.v.i v8, 0
111 ; CHECK-NEXT: vmerge.vim v8, v8, 1, v0
112 ; CHECK-NEXT: vfwcvt.f.xu.v v12, v8
113 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v12
115 %evec = uitofp <vscale x 8 x i1> %va to <vscale x 8 x bfloat>
116 ret <vscale x 8 x bfloat> %evec
119 define <vscale x 16 x bfloat> @vsitofp_nxv16i1_nxv16bf16(<vscale x 16 x i1> %va) {
120 ; CHECK-LABEL: vsitofp_nxv16i1_nxv16bf16:
122 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
123 ; CHECK-NEXT: vmv.v.i v8, 0
124 ; CHECK-NEXT: vmerge.vim v8, v8, -1, v0
125 ; CHECK-NEXT: vfwcvt.f.x.v v16, v8
126 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v16
128 %evec = sitofp <vscale x 16 x i1> %va to <vscale x 16 x bfloat>
129 ret <vscale x 16 x bfloat> %evec
132 define <vscale x 16 x bfloat> @vuitofp_nxv16i1_nxv16bf16(<vscale x 16 x i1> %va) {
133 ; CHECK-LABEL: vuitofp_nxv16i1_nxv16bf16:
135 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
136 ; CHECK-NEXT: vmv.v.i v8, 0
137 ; CHECK-NEXT: vmerge.vim v8, v8, 1, v0
138 ; CHECK-NEXT: vfwcvt.f.xu.v v16, v8
139 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v16
141 %evec = uitofp <vscale x 16 x i1> %va to <vscale x 16 x bfloat>
142 ret <vscale x 16 x bfloat> %evec
145 define <vscale x 32 x bfloat> @vsitofp_nxv32i1_nxv32bf16(<vscale x 32 x i1> %va) {
146 ; CHECK-LABEL: vsitofp_nxv32i1_nxv32bf16:
148 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
149 ; CHECK-NEXT: vmv.v.i v12, 0
150 ; CHECK-NEXT: csrr a0, vlenb
151 ; CHECK-NEXT: vmerge.vim v8, v12, -1, v0
152 ; CHECK-NEXT: srli a0, a0, 2
153 ; CHECK-NEXT: vfwcvt.f.x.v v16, v8
154 ; CHECK-NEXT: vsetvli a1, zero, e8, mf2, ta, ma
155 ; CHECK-NEXT: vslidedown.vx v0, v0, a0
156 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
157 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v16
158 ; CHECK-NEXT: vmerge.vim v12, v12, -1, v0
159 ; CHECK-NEXT: vfwcvt.f.x.v v16, v12
160 ; CHECK-NEXT: vfncvtbf16.f.f.w v12, v16
162 %evec = sitofp <vscale x 32 x i1> %va to <vscale x 32 x bfloat>
163 ret <vscale x 32 x bfloat> %evec
166 define <vscale x 32 x bfloat> @vuitofp_nxv32i1_nxv32bf16(<vscale x 32 x i1> %va) {
167 ; CHECK-LABEL: vuitofp_nxv32i1_nxv32bf16:
169 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
170 ; CHECK-NEXT: vmv.v.i v12, 0
171 ; CHECK-NEXT: csrr a0, vlenb
172 ; CHECK-NEXT: vmerge.vim v8, v12, 1, v0
173 ; CHECK-NEXT: srli a0, a0, 2
174 ; CHECK-NEXT: vfwcvt.f.xu.v v16, v8
175 ; CHECK-NEXT: vsetvli a1, zero, e8, mf2, ta, ma
176 ; CHECK-NEXT: vslidedown.vx v0, v0, a0
177 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
178 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v16
179 ; CHECK-NEXT: vmerge.vim v12, v12, 1, v0
180 ; CHECK-NEXT: vfwcvt.f.xu.v v16, v12
181 ; CHECK-NEXT: vfncvtbf16.f.f.w v12, v16
183 %evec = uitofp <vscale x 32 x i1> %va to <vscale x 32 x bfloat>
184 ret <vscale x 32 x bfloat> %evec
187 define <vscale x 1 x bfloat> @vsitofp_nxv1i8_nxv1bf16(<vscale x 1 x i8> %va) {
188 ; CHECK-LABEL: vsitofp_nxv1i8_nxv1bf16:
190 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
191 ; CHECK-NEXT: vsext.vf2 v9, v8
192 ; CHECK-NEXT: vfwcvt.f.x.v v10, v9
193 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v10
195 %evec = sitofp <vscale x 1 x i8> %va to <vscale x 1 x bfloat>
196 ret <vscale x 1 x bfloat> %evec
199 define <vscale x 1 x bfloat> @vsitofp_nxv1i7_nxv1bf16(<vscale x 1 x i7> %va) {
200 ; CHECK-LABEL: vsitofp_nxv1i7_nxv1bf16:
202 ; CHECK-NEXT: vsetvli a0, zero, e8, mf8, ta, ma
203 ; CHECK-NEXT: vadd.vv v8, v8, v8
204 ; CHECK-NEXT: vsra.vi v8, v8, 1
205 ; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, ma
206 ; CHECK-NEXT: vsext.vf2 v9, v8
207 ; CHECK-NEXT: vfwcvt.f.x.v v10, v9
208 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v10
210 %evec = sitofp <vscale x 1 x i7> %va to <vscale x 1 x bfloat>
211 ret <vscale x 1 x bfloat> %evec
214 define <vscale x 1 x bfloat> @vuitofp_nxv1i7_nxv1bf16(<vscale x 1 x i7> %va) {
215 ; CHECK-LABEL: vuitofp_nxv1i7_nxv1bf16:
217 ; CHECK-NEXT: li a0, 127
218 ; CHECK-NEXT: vsetvli a1, zero, e8, mf8, ta, ma
219 ; CHECK-NEXT: vand.vx v8, v8, a0
220 ; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, ma
221 ; CHECK-NEXT: vzext.vf2 v9, v8
222 ; CHECK-NEXT: vfwcvt.f.xu.v v10, v9
223 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v10
225 %evec = uitofp <vscale x 1 x i7> %va to <vscale x 1 x bfloat>
226 ret <vscale x 1 x bfloat> %evec
229 define <vscale x 1 x bfloat> @vuitofp_nxv1i8_nxv1bf16(<vscale x 1 x i8> %va) {
230 ; CHECK-LABEL: vuitofp_nxv1i8_nxv1bf16:
232 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
233 ; CHECK-NEXT: vzext.vf2 v9, v8
234 ; CHECK-NEXT: vfwcvt.f.xu.v v10, v9
235 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v10
237 %evec = uitofp <vscale x 1 x i8> %va to <vscale x 1 x bfloat>
238 ret <vscale x 1 x bfloat> %evec
241 define <vscale x 2 x bfloat> @vsitofp_nxv2i8_nxv2bf16(<vscale x 2 x i8> %va) {
242 ; CHECK-LABEL: vsitofp_nxv2i8_nxv2bf16:
244 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
245 ; CHECK-NEXT: vsext.vf2 v9, v8
246 ; CHECK-NEXT: vfwcvt.f.x.v v10, v9
247 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v10
249 %evec = sitofp <vscale x 2 x i8> %va to <vscale x 2 x bfloat>
250 ret <vscale x 2 x bfloat> %evec
253 define <vscale x 2 x bfloat> @vuitofp_nxv2i8_nxv2bf16(<vscale x 2 x i8> %va) {
254 ; CHECK-LABEL: vuitofp_nxv2i8_nxv2bf16:
256 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
257 ; CHECK-NEXT: vzext.vf2 v9, v8
258 ; CHECK-NEXT: vfwcvt.f.xu.v v10, v9
259 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v10
261 %evec = uitofp <vscale x 2 x i8> %va to <vscale x 2 x bfloat>
262 ret <vscale x 2 x bfloat> %evec
265 define <vscale x 4 x bfloat> @vsitofp_nxv4i8_nxv4bf16(<vscale x 4 x i8> %va) {
266 ; CHECK-LABEL: vsitofp_nxv4i8_nxv4bf16:
268 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
269 ; CHECK-NEXT: vsext.vf2 v9, v8
270 ; CHECK-NEXT: vfwcvt.f.x.v v10, v9
271 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v10
273 %evec = sitofp <vscale x 4 x i8> %va to <vscale x 4 x bfloat>
274 ret <vscale x 4 x bfloat> %evec
277 define <vscale x 4 x bfloat> @vuitofp_nxv4i8_nxv4bf16(<vscale x 4 x i8> %va) {
278 ; CHECK-LABEL: vuitofp_nxv4i8_nxv4bf16:
280 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
281 ; CHECK-NEXT: vzext.vf2 v9, v8
282 ; CHECK-NEXT: vfwcvt.f.xu.v v10, v9
283 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v10
285 %evec = uitofp <vscale x 4 x i8> %va to <vscale x 4 x bfloat>
286 ret <vscale x 4 x bfloat> %evec
289 define <vscale x 8 x bfloat> @vsitofp_nxv8i8_nxv8bf16(<vscale x 8 x i8> %va) {
290 ; CHECK-LABEL: vsitofp_nxv8i8_nxv8bf16:
292 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
293 ; CHECK-NEXT: vsext.vf2 v10, v8
294 ; CHECK-NEXT: vfwcvt.f.x.v v12, v10
295 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v12
297 %evec = sitofp <vscale x 8 x i8> %va to <vscale x 8 x bfloat>
298 ret <vscale x 8 x bfloat> %evec
301 define <vscale x 8 x bfloat> @vuitofp_nxv8i8_nxv8bf16(<vscale x 8 x i8> %va) {
302 ; CHECK-LABEL: vuitofp_nxv8i8_nxv8bf16:
304 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
305 ; CHECK-NEXT: vzext.vf2 v10, v8
306 ; CHECK-NEXT: vfwcvt.f.xu.v v12, v10
307 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v12
309 %evec = uitofp <vscale x 8 x i8> %va to <vscale x 8 x bfloat>
310 ret <vscale x 8 x bfloat> %evec
313 define <vscale x 16 x bfloat> @vsitofp_nxv16i8_nxv16bf16(<vscale x 16 x i8> %va) {
314 ; CHECK-LABEL: vsitofp_nxv16i8_nxv16bf16:
316 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
317 ; CHECK-NEXT: vsext.vf2 v12, v8
318 ; CHECK-NEXT: vfwcvt.f.x.v v16, v12
319 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v16
321 %evec = sitofp <vscale x 16 x i8> %va to <vscale x 16 x bfloat>
322 ret <vscale x 16 x bfloat> %evec
325 define <vscale x 16 x bfloat> @vuitofp_nxv16i8_nxv16bf16(<vscale x 16 x i8> %va) {
326 ; CHECK-LABEL: vuitofp_nxv16i8_nxv16bf16:
328 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
329 ; CHECK-NEXT: vzext.vf2 v12, v8
330 ; CHECK-NEXT: vfwcvt.f.xu.v v16, v12
331 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v16
333 %evec = uitofp <vscale x 16 x i8> %va to <vscale x 16 x bfloat>
334 ret <vscale x 16 x bfloat> %evec
337 define <vscale x 32 x bfloat> @vsitofp_nxv32i8_nxv32bf16(<vscale x 32 x i8> %va) {
338 ; CHECK-LABEL: vsitofp_nxv32i8_nxv32bf16:
340 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
341 ; CHECK-NEXT: vsext.vf2 v12, v8
342 ; CHECK-NEXT: vsext.vf2 v16, v10
343 ; CHECK-NEXT: vfwcvt.f.x.v v24, v12
344 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v24
345 ; CHECK-NEXT: vfwcvt.f.x.v v24, v16
346 ; CHECK-NEXT: vfncvtbf16.f.f.w v12, v24
348 %evec = sitofp <vscale x 32 x i8> %va to <vscale x 32 x bfloat>
349 ret <vscale x 32 x bfloat> %evec
352 define <vscale x 32 x bfloat> @vuitofp_nxv32i8_nxv32bf16(<vscale x 32 x i8> %va) {
353 ; CHECK-LABEL: vuitofp_nxv32i8_nxv32bf16:
355 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
356 ; CHECK-NEXT: vzext.vf2 v12, v8
357 ; CHECK-NEXT: vzext.vf2 v16, v10
358 ; CHECK-NEXT: vfwcvt.f.xu.v v24, v12
359 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v24
360 ; CHECK-NEXT: vfwcvt.f.xu.v v24, v16
361 ; CHECK-NEXT: vfncvtbf16.f.f.w v12, v24
363 %evec = uitofp <vscale x 32 x i8> %va to <vscale x 32 x bfloat>
364 ret <vscale x 32 x bfloat> %evec
367 define <vscale x 1 x bfloat> @vsitofp_nxv1i16_nxv1bf16(<vscale x 1 x i16> %va) {
368 ; CHECK-LABEL: vsitofp_nxv1i16_nxv1bf16:
370 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
371 ; CHECK-NEXT: vfwcvt.f.x.v v9, v8
372 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v9
374 %evec = sitofp <vscale x 1 x i16> %va to <vscale x 1 x bfloat>
375 ret <vscale x 1 x bfloat> %evec
378 define <vscale x 1 x bfloat> @vuitofp_nxv1i16_nxv1bf16(<vscale x 1 x i16> %va) {
379 ; CHECK-LABEL: vuitofp_nxv1i16_nxv1bf16:
381 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
382 ; CHECK-NEXT: vfwcvt.f.xu.v v9, v8
383 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v9
385 %evec = uitofp <vscale x 1 x i16> %va to <vscale x 1 x bfloat>
386 ret <vscale x 1 x bfloat> %evec
389 define <vscale x 2 x bfloat> @vsitofp_nxv2i16_nxv2bf16(<vscale x 2 x i16> %va) {
390 ; CHECK-LABEL: vsitofp_nxv2i16_nxv2bf16:
392 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
393 ; CHECK-NEXT: vfwcvt.f.x.v v9, v8
394 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v9
396 %evec = sitofp <vscale x 2 x i16> %va to <vscale x 2 x bfloat>
397 ret <vscale x 2 x bfloat> %evec
400 define <vscale x 2 x bfloat> @vuitofp_nxv2i16_nxv2bf16(<vscale x 2 x i16> %va) {
401 ; CHECK-LABEL: vuitofp_nxv2i16_nxv2bf16:
403 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
404 ; CHECK-NEXT: vfwcvt.f.xu.v v9, v8
405 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v9
407 %evec = uitofp <vscale x 2 x i16> %va to <vscale x 2 x bfloat>
408 ret <vscale x 2 x bfloat> %evec
411 define <vscale x 4 x bfloat> @vsitofp_nxv4i16_nxv4bf16(<vscale x 4 x i16> %va) {
412 ; CHECK-LABEL: vsitofp_nxv4i16_nxv4bf16:
414 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
415 ; CHECK-NEXT: vfwcvt.f.x.v v10, v8
416 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v10
418 %evec = sitofp <vscale x 4 x i16> %va to <vscale x 4 x bfloat>
419 ret <vscale x 4 x bfloat> %evec
422 define <vscale x 4 x bfloat> @vuitofp_nxv4i16_nxv4bf16(<vscale x 4 x i16> %va) {
423 ; CHECK-LABEL: vuitofp_nxv4i16_nxv4bf16:
425 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
426 ; CHECK-NEXT: vfwcvt.f.xu.v v10, v8
427 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v10
429 %evec = uitofp <vscale x 4 x i16> %va to <vscale x 4 x bfloat>
430 ret <vscale x 4 x bfloat> %evec
433 define <vscale x 8 x bfloat> @vsitofp_nxv8i16_nxv8bf16(<vscale x 8 x i16> %va) {
434 ; CHECK-LABEL: vsitofp_nxv8i16_nxv8bf16:
436 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
437 ; CHECK-NEXT: vfwcvt.f.x.v v12, v8
438 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v12
440 %evec = sitofp <vscale x 8 x i16> %va to <vscale x 8 x bfloat>
441 ret <vscale x 8 x bfloat> %evec
444 define <vscale x 8 x bfloat> @vuitofp_nxv8i16_nxv8bf16(<vscale x 8 x i16> %va) {
445 ; CHECK-LABEL: vuitofp_nxv8i16_nxv8bf16:
447 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
448 ; CHECK-NEXT: vfwcvt.f.xu.v v12, v8
449 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v12
451 %evec = uitofp <vscale x 8 x i16> %va to <vscale x 8 x bfloat>
452 ret <vscale x 8 x bfloat> %evec
455 define <vscale x 16 x bfloat> @vsitofp_nxv16i16_nxv16bf16(<vscale x 16 x i16> %va) {
456 ; CHECK-LABEL: vsitofp_nxv16i16_nxv16bf16:
458 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
459 ; CHECK-NEXT: vfwcvt.f.x.v v16, v8
460 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v16
462 %evec = sitofp <vscale x 16 x i16> %va to <vscale x 16 x bfloat>
463 ret <vscale x 16 x bfloat> %evec
466 define <vscale x 16 x bfloat> @vuitofp_nxv16i16_nxv16bf16(<vscale x 16 x i16> %va) {
467 ; CHECK-LABEL: vuitofp_nxv16i16_nxv16bf16:
469 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
470 ; CHECK-NEXT: vfwcvt.f.xu.v v16, v8
471 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v16
473 %evec = uitofp <vscale x 16 x i16> %va to <vscale x 16 x bfloat>
474 ret <vscale x 16 x bfloat> %evec
477 define <vscale x 32 x bfloat> @vsitofp_nxv32i16_nxv32bf16(<vscale x 32 x i16> %va) {
478 ; CHECK-LABEL: vsitofp_nxv32i16_nxv32bf16:
480 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
481 ; CHECK-NEXT: vfwcvt.f.x.v v16, v8
482 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v16
483 ; CHECK-NEXT: vfwcvt.f.x.v v16, v12
484 ; CHECK-NEXT: vfncvtbf16.f.f.w v12, v16
486 %evec = sitofp <vscale x 32 x i16> %va to <vscale x 32 x bfloat>
487 ret <vscale x 32 x bfloat> %evec
490 define <vscale x 32 x bfloat> @vuitofp_nxv32i16_nxv32bf16(<vscale x 32 x i16> %va) {
491 ; CHECK-LABEL: vuitofp_nxv32i16_nxv32bf16:
493 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
494 ; CHECK-NEXT: vfwcvt.f.xu.v v16, v8
495 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v16
496 ; CHECK-NEXT: vfwcvt.f.xu.v v16, v12
497 ; CHECK-NEXT: vfncvtbf16.f.f.w v12, v16
499 %evec = uitofp <vscale x 32 x i16> %va to <vscale x 32 x bfloat>
500 ret <vscale x 32 x bfloat> %evec
503 define <vscale x 1 x bfloat> @vsitofp_nxv1i32_nxv1bf16(<vscale x 1 x i32> %va) {
504 ; CHECK-LABEL: vsitofp_nxv1i32_nxv1bf16:
506 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
507 ; CHECK-NEXT: vfcvt.f.x.v v9, v8
508 ; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, ma
509 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v9
511 %evec = sitofp <vscale x 1 x i32> %va to <vscale x 1 x bfloat>
512 ret <vscale x 1 x bfloat> %evec
515 define <vscale x 1 x bfloat> @vuitofp_nxv1i32_nxv1bf16(<vscale x 1 x i32> %va) {
516 ; CHECK-LABEL: vuitofp_nxv1i32_nxv1bf16:
518 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
519 ; CHECK-NEXT: vfcvt.f.xu.v v9, v8
520 ; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, ma
521 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v9
523 %evec = uitofp <vscale x 1 x i32> %va to <vscale x 1 x bfloat>
524 ret <vscale x 1 x bfloat> %evec
527 define <vscale x 2 x bfloat> @vsitofp_nxv2i32_nxv2bf16(<vscale x 2 x i32> %va) {
528 ; CHECK-LABEL: vsitofp_nxv2i32_nxv2bf16:
530 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
531 ; CHECK-NEXT: vfcvt.f.x.v v9, v8
532 ; CHECK-NEXT: vsetvli zero, zero, e16, mf2, ta, ma
533 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v9
535 %evec = sitofp <vscale x 2 x i32> %va to <vscale x 2 x bfloat>
536 ret <vscale x 2 x bfloat> %evec
539 define <vscale x 2 x bfloat> @vuitofp_nxv2i32_nxv2bf16(<vscale x 2 x i32> %va) {
540 ; CHECK-LABEL: vuitofp_nxv2i32_nxv2bf16:
542 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
543 ; CHECK-NEXT: vfcvt.f.xu.v v9, v8
544 ; CHECK-NEXT: vsetvli zero, zero, e16, mf2, ta, ma
545 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v9
547 %evec = uitofp <vscale x 2 x i32> %va to <vscale x 2 x bfloat>
548 ret <vscale x 2 x bfloat> %evec
551 define <vscale x 4 x bfloat> @vsitofp_nxv4i32_nxv4bf16(<vscale x 4 x i32> %va) {
552 ; CHECK-LABEL: vsitofp_nxv4i32_nxv4bf16:
554 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
555 ; CHECK-NEXT: vfcvt.f.x.v v10, v8
556 ; CHECK-NEXT: vsetvli zero, zero, e16, m1, ta, ma
557 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v10
559 %evec = sitofp <vscale x 4 x i32> %va to <vscale x 4 x bfloat>
560 ret <vscale x 4 x bfloat> %evec
563 define <vscale x 4 x bfloat> @vuitofp_nxv4i32_nxv4bf16(<vscale x 4 x i32> %va) {
564 ; CHECK-LABEL: vuitofp_nxv4i32_nxv4bf16:
566 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
567 ; CHECK-NEXT: vfcvt.f.xu.v v10, v8
568 ; CHECK-NEXT: vsetvli zero, zero, e16, m1, ta, ma
569 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v10
571 %evec = uitofp <vscale x 4 x i32> %va to <vscale x 4 x bfloat>
572 ret <vscale x 4 x bfloat> %evec
575 define <vscale x 8 x bfloat> @vsitofp_nxv8i32_nxv8bf16(<vscale x 8 x i32> %va) {
576 ; CHECK-LABEL: vsitofp_nxv8i32_nxv8bf16:
578 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
579 ; CHECK-NEXT: vfcvt.f.x.v v12, v8
580 ; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma
581 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v12
583 %evec = sitofp <vscale x 8 x i32> %va to <vscale x 8 x bfloat>
584 ret <vscale x 8 x bfloat> %evec
587 define <vscale x 8 x bfloat> @vuitofp_nxv8i32_nxv8bf16(<vscale x 8 x i32> %va) {
588 ; CHECK-LABEL: vuitofp_nxv8i32_nxv8bf16:
590 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
591 ; CHECK-NEXT: vfcvt.f.xu.v v12, v8
592 ; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma
593 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v12
595 %evec = uitofp <vscale x 8 x i32> %va to <vscale x 8 x bfloat>
596 ret <vscale x 8 x bfloat> %evec
599 define <vscale x 16 x bfloat> @vsitofp_nxv16i32_nxv16bf16(<vscale x 16 x i32> %va) {
600 ; CHECK-LABEL: vsitofp_nxv16i32_nxv16bf16:
602 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
603 ; CHECK-NEXT: vfcvt.f.x.v v16, v8
604 ; CHECK-NEXT: vsetvli zero, zero, e16, m4, ta, ma
605 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v16
607 %evec = sitofp <vscale x 16 x i32> %va to <vscale x 16 x bfloat>
608 ret <vscale x 16 x bfloat> %evec
611 define <vscale x 16 x bfloat> @vuitofp_nxv16i32_nxv16bf16(<vscale x 16 x i32> %va) {
612 ; CHECK-LABEL: vuitofp_nxv16i32_nxv16bf16:
614 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
615 ; CHECK-NEXT: vfcvt.f.xu.v v16, v8
616 ; CHECK-NEXT: vsetvli zero, zero, e16, m4, ta, ma
617 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v16
619 %evec = uitofp <vscale x 16 x i32> %va to <vscale x 16 x bfloat>
620 ret <vscale x 16 x bfloat> %evec
623 define <vscale x 1 x bfloat> @vsitofp_nxv1i64_nxv1bf16(<vscale x 1 x i64> %va) {
624 ; CHECK-LABEL: vsitofp_nxv1i64_nxv1bf16:
626 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
627 ; CHECK-NEXT: vfncvt.f.x.w v9, v8
628 ; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, ma
629 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v9
631 %evec = sitofp <vscale x 1 x i64> %va to <vscale x 1 x bfloat>
632 ret <vscale x 1 x bfloat> %evec
635 define <vscale x 1 x bfloat> @vuitofp_nxv1i64_nxv1bf16(<vscale x 1 x i64> %va) {
636 ; CHECK-LABEL: vuitofp_nxv1i64_nxv1bf16:
638 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
639 ; CHECK-NEXT: vfncvt.f.xu.w v9, v8
640 ; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, ma
641 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v9
643 %evec = uitofp <vscale x 1 x i64> %va to <vscale x 1 x bfloat>
644 ret <vscale x 1 x bfloat> %evec
647 define <vscale x 2 x bfloat> @vsitofp_nxv2i64_nxv2bf16(<vscale x 2 x i64> %va) {
648 ; CHECK-LABEL: vsitofp_nxv2i64_nxv2bf16:
650 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
651 ; CHECK-NEXT: vfncvt.f.x.w v10, v8
652 ; CHECK-NEXT: vsetvli zero, zero, e16, mf2, ta, ma
653 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v10
655 %evec = sitofp <vscale x 2 x i64> %va to <vscale x 2 x bfloat>
656 ret <vscale x 2 x bfloat> %evec
659 define <vscale x 2 x bfloat> @vuitofp_nxv2i64_nxv2bf16(<vscale x 2 x i64> %va) {
660 ; CHECK-LABEL: vuitofp_nxv2i64_nxv2bf16:
662 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
663 ; CHECK-NEXT: vfncvt.f.xu.w v10, v8
664 ; CHECK-NEXT: vsetvli zero, zero, e16, mf2, ta, ma
665 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v10
667 %evec = uitofp <vscale x 2 x i64> %va to <vscale x 2 x bfloat>
668 ret <vscale x 2 x bfloat> %evec
671 define <vscale x 4 x bfloat> @vsitofp_nxv4i64_nxv4bf16(<vscale x 4 x i64> %va) {
672 ; CHECK-LABEL: vsitofp_nxv4i64_nxv4bf16:
674 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
675 ; CHECK-NEXT: vfncvt.f.x.w v12, v8
676 ; CHECK-NEXT: vsetvli zero, zero, e16, m1, ta, ma
677 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v12
679 %evec = sitofp <vscale x 4 x i64> %va to <vscale x 4 x bfloat>
680 ret <vscale x 4 x bfloat> %evec
683 define <vscale x 4 x bfloat> @vuitofp_nxv4i64_nxv4bf16(<vscale x 4 x i64> %va) {
684 ; CHECK-LABEL: vuitofp_nxv4i64_nxv4bf16:
686 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
687 ; CHECK-NEXT: vfncvt.f.xu.w v12, v8
688 ; CHECK-NEXT: vsetvli zero, zero, e16, m1, ta, ma
689 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v12
691 %evec = uitofp <vscale x 4 x i64> %va to <vscale x 4 x bfloat>
692 ret <vscale x 4 x bfloat> %evec
695 define <vscale x 8 x bfloat> @vsitofp_nxv8i64_nxv8bf16(<vscale x 8 x i64> %va) {
696 ; CHECK-LABEL: vsitofp_nxv8i64_nxv8bf16:
698 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
699 ; CHECK-NEXT: vfncvt.f.x.w v16, v8
700 ; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma
701 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v16
703 %evec = sitofp <vscale x 8 x i64> %va to <vscale x 8 x bfloat>
704 ret <vscale x 8 x bfloat> %evec
707 define <vscale x 8 x bfloat> @vuitofp_nxv8i64_nxv8bf16(<vscale x 8 x i64> %va) {
708 ; CHECK-LABEL: vuitofp_nxv8i64_nxv8bf16:
710 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
711 ; CHECK-NEXT: vfncvt.f.xu.w v16, v8
712 ; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma
713 ; CHECK-NEXT: vfncvtbf16.f.f.w v8, v16
715 %evec = uitofp <vscale x 8 x i64> %va to <vscale x 8 x bfloat>
716 ret <vscale x 8 x bfloat> %evec
719 define <vscale x 1 x half> @vsitofp_nxv1i1_nxv1f16(<vscale x 1 x i1> %va) {
720 ; ZVFH-LABEL: vsitofp_nxv1i1_nxv1f16:
722 ; ZVFH-NEXT: vsetvli a0, zero, e8, mf8, ta, ma
723 ; ZVFH-NEXT: vmv.v.i v8, 0
724 ; ZVFH-NEXT: vmerge.vim v9, v8, -1, v0
725 ; ZVFH-NEXT: vfwcvt.f.x.v v8, v9
728 ; ZVFHMIN-LABEL: vsitofp_nxv1i1_nxv1f16:
730 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
731 ; ZVFHMIN-NEXT: vmv.v.i v8, 0
732 ; ZVFHMIN-NEXT: vmerge.vim v8, v8, -1, v0
733 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v9, v8
734 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v9
736 %evec = sitofp <vscale x 1 x i1> %va to <vscale x 1 x half>
737 ret <vscale x 1 x half> %evec
740 define <vscale x 1 x half> @vuitofp_nxv1i1_nxv1f16(<vscale x 1 x i1> %va) {
741 ; ZVFH-LABEL: vuitofp_nxv1i1_nxv1f16:
743 ; ZVFH-NEXT: vsetvli a0, zero, e8, mf8, ta, ma
744 ; ZVFH-NEXT: vmv.v.i v8, 0
745 ; ZVFH-NEXT: vmerge.vim v9, v8, 1, v0
746 ; ZVFH-NEXT: vfwcvt.f.xu.v v8, v9
749 ; ZVFHMIN-LABEL: vuitofp_nxv1i1_nxv1f16:
751 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
752 ; ZVFHMIN-NEXT: vmv.v.i v8, 0
753 ; ZVFHMIN-NEXT: vmerge.vim v8, v8, 1, v0
754 ; ZVFHMIN-NEXT: vfwcvt.f.xu.v v9, v8
755 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v9
757 %evec = uitofp <vscale x 1 x i1> %va to <vscale x 1 x half>
758 ret <vscale x 1 x half> %evec
761 define <vscale x 1 x float> @vsitofp_nxv1i1_nxv1f32(<vscale x 1 x i1> %va) {
762 ; CHECK-LABEL: vsitofp_nxv1i1_nxv1f32:
764 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
765 ; CHECK-NEXT: vmv.v.i v8, 0
766 ; CHECK-NEXT: vmerge.vim v9, v8, -1, v0
767 ; CHECK-NEXT: vfwcvt.f.x.v v8, v9
769 %evec = sitofp <vscale x 1 x i1> %va to <vscale x 1 x float>
770 ret <vscale x 1 x float> %evec
773 define <vscale x 1 x float> @vuitofp_nxv1i1_nxv1f32(<vscale x 1 x i1> %va) {
774 ; CHECK-LABEL: vuitofp_nxv1i1_nxv1f32:
776 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
777 ; CHECK-NEXT: vmv.v.i v8, 0
778 ; CHECK-NEXT: vmerge.vim v9, v8, 1, v0
779 ; CHECK-NEXT: vfwcvt.f.xu.v v8, v9
781 %evec = uitofp <vscale x 1 x i1> %va to <vscale x 1 x float>
782 ret <vscale x 1 x float> %evec
785 define <vscale x 1 x double> @vsitofp_nxv1i1_nxv1f64(<vscale x 1 x i1> %va) {
786 ; CHECK-LABEL: vsitofp_nxv1i1_nxv1f64:
788 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
789 ; CHECK-NEXT: vmv.v.i v8, 0
790 ; CHECK-NEXT: vmerge.vim v9, v8, -1, v0
791 ; CHECK-NEXT: vfwcvt.f.x.v v8, v9
793 %evec = sitofp <vscale x 1 x i1> %va to <vscale x 1 x double>
794 ret <vscale x 1 x double> %evec
797 define <vscale x 1 x double> @vuitofp_nxv1i1_nxv1f64(<vscale x 1 x i1> %va) {
798 ; CHECK-LABEL: vuitofp_nxv1i1_nxv1f64:
800 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
801 ; CHECK-NEXT: vmv.v.i v8, 0
802 ; CHECK-NEXT: vmerge.vim v9, v8, 1, v0
803 ; CHECK-NEXT: vfwcvt.f.xu.v v8, v9
805 %evec = uitofp <vscale x 1 x i1> %va to <vscale x 1 x double>
806 ret <vscale x 1 x double> %evec
809 define <vscale x 2 x half> @vsitofp_nxv2i1_nxv2f16(<vscale x 2 x i1> %va) {
810 ; ZVFH-LABEL: vsitofp_nxv2i1_nxv2f16:
812 ; ZVFH-NEXT: vsetvli a0, zero, e8, mf4, ta, ma
813 ; ZVFH-NEXT: vmv.v.i v8, 0
814 ; ZVFH-NEXT: vmerge.vim v9, v8, -1, v0
815 ; ZVFH-NEXT: vfwcvt.f.x.v v8, v9
818 ; ZVFHMIN-LABEL: vsitofp_nxv2i1_nxv2f16:
820 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
821 ; ZVFHMIN-NEXT: vmv.v.i v8, 0
822 ; ZVFHMIN-NEXT: vmerge.vim v8, v8, -1, v0
823 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v9, v8
824 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v9
826 %evec = sitofp <vscale x 2 x i1> %va to <vscale x 2 x half>
827 ret <vscale x 2 x half> %evec
830 define <vscale x 2 x half> @vuitofp_nxv2i1_nxv2f16(<vscale x 2 x i1> %va) {
831 ; ZVFH-LABEL: vuitofp_nxv2i1_nxv2f16:
833 ; ZVFH-NEXT: vsetvli a0, zero, e8, mf4, ta, ma
834 ; ZVFH-NEXT: vmv.v.i v8, 0
835 ; ZVFH-NEXT: vmerge.vim v9, v8, 1, v0
836 ; ZVFH-NEXT: vfwcvt.f.xu.v v8, v9
839 ; ZVFHMIN-LABEL: vuitofp_nxv2i1_nxv2f16:
841 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
842 ; ZVFHMIN-NEXT: vmv.v.i v8, 0
843 ; ZVFHMIN-NEXT: vmerge.vim v8, v8, 1, v0
844 ; ZVFHMIN-NEXT: vfwcvt.f.xu.v v9, v8
845 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v9
847 %evec = uitofp <vscale x 2 x i1> %va to <vscale x 2 x half>
848 ret <vscale x 2 x half> %evec
851 define <vscale x 2 x float> @vsitofp_nxv2i1_nxv2f32(<vscale x 2 x i1> %va) {
852 ; CHECK-LABEL: vsitofp_nxv2i1_nxv2f32:
854 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
855 ; CHECK-NEXT: vmv.v.i v8, 0
856 ; CHECK-NEXT: vmerge.vim v9, v8, -1, v0
857 ; CHECK-NEXT: vfwcvt.f.x.v v8, v9
859 %evec = sitofp <vscale x 2 x i1> %va to <vscale x 2 x float>
860 ret <vscale x 2 x float> %evec
863 define <vscale x 2 x float> @vuitofp_nxv2i1_nxv2f32(<vscale x 2 x i1> %va) {
864 ; CHECK-LABEL: vuitofp_nxv2i1_nxv2f32:
866 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
867 ; CHECK-NEXT: vmv.v.i v8, 0
868 ; CHECK-NEXT: vmerge.vim v9, v8, 1, v0
869 ; CHECK-NEXT: vfwcvt.f.xu.v v8, v9
871 %evec = uitofp <vscale x 2 x i1> %va to <vscale x 2 x float>
872 ret <vscale x 2 x float> %evec
875 define <vscale x 2 x double> @vsitofp_nxv2i1_nxv2f64(<vscale x 2 x i1> %va) {
876 ; CHECK-LABEL: vsitofp_nxv2i1_nxv2f64:
878 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
879 ; CHECK-NEXT: vmv.v.i v8, 0
880 ; CHECK-NEXT: vmerge.vim v10, v8, -1, v0
881 ; CHECK-NEXT: vfwcvt.f.x.v v8, v10
883 %evec = sitofp <vscale x 2 x i1> %va to <vscale x 2 x double>
884 ret <vscale x 2 x double> %evec
887 define <vscale x 2 x double> @vuitofp_nxv2i1_nxv2f64(<vscale x 2 x i1> %va) {
888 ; CHECK-LABEL: vuitofp_nxv2i1_nxv2f64:
890 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
891 ; CHECK-NEXT: vmv.v.i v8, 0
892 ; CHECK-NEXT: vmerge.vim v10, v8, 1, v0
893 ; CHECK-NEXT: vfwcvt.f.xu.v v8, v10
895 %evec = uitofp <vscale x 2 x i1> %va to <vscale x 2 x double>
896 ret <vscale x 2 x double> %evec
899 define <vscale x 4 x half> @vsitofp_nxv4i1_nxv4f16(<vscale x 4 x i1> %va) {
900 ; ZVFH-LABEL: vsitofp_nxv4i1_nxv4f16:
902 ; ZVFH-NEXT: vsetvli a0, zero, e8, mf2, ta, ma
903 ; ZVFH-NEXT: vmv.v.i v8, 0
904 ; ZVFH-NEXT: vmerge.vim v9, v8, -1, v0
905 ; ZVFH-NEXT: vfwcvt.f.x.v v8, v9
908 ; ZVFHMIN-LABEL: vsitofp_nxv4i1_nxv4f16:
910 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m1, ta, ma
911 ; ZVFHMIN-NEXT: vmv.v.i v8, 0
912 ; ZVFHMIN-NEXT: vmerge.vim v8, v8, -1, v0
913 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v10, v8
914 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v10
916 %evec = sitofp <vscale x 4 x i1> %va to <vscale x 4 x half>
917 ret <vscale x 4 x half> %evec
920 define <vscale x 4 x half> @vuitofp_nxv4i1_nxv4f16(<vscale x 4 x i1> %va) {
921 ; ZVFH-LABEL: vuitofp_nxv4i1_nxv4f16:
923 ; ZVFH-NEXT: vsetvli a0, zero, e8, mf2, ta, ma
924 ; ZVFH-NEXT: vmv.v.i v8, 0
925 ; ZVFH-NEXT: vmerge.vim v9, v8, 1, v0
926 ; ZVFH-NEXT: vfwcvt.f.xu.v v8, v9
929 ; ZVFHMIN-LABEL: vuitofp_nxv4i1_nxv4f16:
931 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m1, ta, ma
932 ; ZVFHMIN-NEXT: vmv.v.i v8, 0
933 ; ZVFHMIN-NEXT: vmerge.vim v8, v8, 1, v0
934 ; ZVFHMIN-NEXT: vfwcvt.f.xu.v v10, v8
935 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v10
937 %evec = uitofp <vscale x 4 x i1> %va to <vscale x 4 x half>
938 ret <vscale x 4 x half> %evec
941 define <vscale x 4 x float> @vsitofp_nxv4i1_nxv4f32(<vscale x 4 x i1> %va) {
942 ; CHECK-LABEL: vsitofp_nxv4i1_nxv4f32:
944 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
945 ; CHECK-NEXT: vmv.v.i v8, 0
946 ; CHECK-NEXT: vmerge.vim v10, v8, -1, v0
947 ; CHECK-NEXT: vfwcvt.f.x.v v8, v10
949 %evec = sitofp <vscale x 4 x i1> %va to <vscale x 4 x float>
950 ret <vscale x 4 x float> %evec
953 define <vscale x 4 x float> @vuitofp_nxv4i1_nxv4f32(<vscale x 4 x i1> %va) {
954 ; CHECK-LABEL: vuitofp_nxv4i1_nxv4f32:
956 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
957 ; CHECK-NEXT: vmv.v.i v8, 0
958 ; CHECK-NEXT: vmerge.vim v10, v8, 1, v0
959 ; CHECK-NEXT: vfwcvt.f.xu.v v8, v10
961 %evec = uitofp <vscale x 4 x i1> %va to <vscale x 4 x float>
962 ret <vscale x 4 x float> %evec
965 define <vscale x 4 x double> @vsitofp_nxv4i1_nxv4f64(<vscale x 4 x i1> %va) {
966 ; CHECK-LABEL: vsitofp_nxv4i1_nxv4f64:
968 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
969 ; CHECK-NEXT: vmv.v.i v8, 0
970 ; CHECK-NEXT: vmerge.vim v12, v8, -1, v0
971 ; CHECK-NEXT: vfwcvt.f.x.v v8, v12
973 %evec = sitofp <vscale x 4 x i1> %va to <vscale x 4 x double>
974 ret <vscale x 4 x double> %evec
977 define <vscale x 4 x double> @vuitofp_nxv4i1_nxv4f64(<vscale x 4 x i1> %va) {
978 ; CHECK-LABEL: vuitofp_nxv4i1_nxv4f64:
980 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
981 ; CHECK-NEXT: vmv.v.i v8, 0
982 ; CHECK-NEXT: vmerge.vim v12, v8, 1, v0
983 ; CHECK-NEXT: vfwcvt.f.xu.v v8, v12
985 %evec = uitofp <vscale x 4 x i1> %va to <vscale x 4 x double>
986 ret <vscale x 4 x double> %evec
989 define <vscale x 8 x half> @vsitofp_nxv8i1_nxv8f16(<vscale x 8 x i1> %va) {
990 ; ZVFH-LABEL: vsitofp_nxv8i1_nxv8f16:
992 ; ZVFH-NEXT: vsetvli a0, zero, e8, m1, ta, ma
993 ; ZVFH-NEXT: vmv.v.i v8, 0
994 ; ZVFH-NEXT: vmerge.vim v10, v8, -1, v0
995 ; ZVFH-NEXT: vfwcvt.f.x.v v8, v10
998 ; ZVFHMIN-LABEL: vsitofp_nxv8i1_nxv8f16:
1000 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1001 ; ZVFHMIN-NEXT: vmv.v.i v8, 0
1002 ; ZVFHMIN-NEXT: vmerge.vim v8, v8, -1, v0
1003 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v12, v8
1004 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v12
1006 %evec = sitofp <vscale x 8 x i1> %va to <vscale x 8 x half>
1007 ret <vscale x 8 x half> %evec
1010 define <vscale x 8 x half> @vuitofp_nxv8i1_nxv8f16(<vscale x 8 x i1> %va) {
1011 ; ZVFH-LABEL: vuitofp_nxv8i1_nxv8f16:
1013 ; ZVFH-NEXT: vsetvli a0, zero, e8, m1, ta, ma
1014 ; ZVFH-NEXT: vmv.v.i v8, 0
1015 ; ZVFH-NEXT: vmerge.vim v10, v8, 1, v0
1016 ; ZVFH-NEXT: vfwcvt.f.xu.v v8, v10
1019 ; ZVFHMIN-LABEL: vuitofp_nxv8i1_nxv8f16:
1021 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1022 ; ZVFHMIN-NEXT: vmv.v.i v8, 0
1023 ; ZVFHMIN-NEXT: vmerge.vim v8, v8, 1, v0
1024 ; ZVFHMIN-NEXT: vfwcvt.f.xu.v v12, v8
1025 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v12
1027 %evec = uitofp <vscale x 8 x i1> %va to <vscale x 8 x half>
1028 ret <vscale x 8 x half> %evec
1031 define <vscale x 8 x float> @vsitofp_nxv8i1_nxv8f32(<vscale x 8 x i1> %va) {
1032 ; CHECK-LABEL: vsitofp_nxv8i1_nxv8f32:
1034 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1035 ; CHECK-NEXT: vmv.v.i v8, 0
1036 ; CHECK-NEXT: vmerge.vim v12, v8, -1, v0
1037 ; CHECK-NEXT: vfwcvt.f.x.v v8, v12
1039 %evec = sitofp <vscale x 8 x i1> %va to <vscale x 8 x float>
1040 ret <vscale x 8 x float> %evec
1043 define <vscale x 8 x float> @vuitofp_nxv8i1_nxv8f32(<vscale x 8 x i1> %va) {
1044 ; CHECK-LABEL: vuitofp_nxv8i1_nxv8f32:
1046 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1047 ; CHECK-NEXT: vmv.v.i v8, 0
1048 ; CHECK-NEXT: vmerge.vim v12, v8, 1, v0
1049 ; CHECK-NEXT: vfwcvt.f.xu.v v8, v12
1051 %evec = uitofp <vscale x 8 x i1> %va to <vscale x 8 x float>
1052 ret <vscale x 8 x float> %evec
1055 define <vscale x 8 x double> @vsitofp_nxv8i1_nxv8f64(<vscale x 8 x i1> %va) {
1056 ; CHECK-LABEL: vsitofp_nxv8i1_nxv8f64:
1058 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
1059 ; CHECK-NEXT: vmv.v.i v8, 0
1060 ; CHECK-NEXT: vmerge.vim v16, v8, -1, v0
1061 ; CHECK-NEXT: vfwcvt.f.x.v v8, v16
1063 %evec = sitofp <vscale x 8 x i1> %va to <vscale x 8 x double>
1064 ret <vscale x 8 x double> %evec
1067 define <vscale x 8 x double> @vuitofp_nxv8i1_nxv8f64(<vscale x 8 x i1> %va) {
1068 ; CHECK-LABEL: vuitofp_nxv8i1_nxv8f64:
1070 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
1071 ; CHECK-NEXT: vmv.v.i v8, 0
1072 ; CHECK-NEXT: vmerge.vim v16, v8, 1, v0
1073 ; CHECK-NEXT: vfwcvt.f.xu.v v8, v16
1075 %evec = uitofp <vscale x 8 x i1> %va to <vscale x 8 x double>
1076 ret <vscale x 8 x double> %evec
1079 define <vscale x 16 x half> @vsitofp_nxv16i1_nxv16f16(<vscale x 16 x i1> %va) {
1080 ; ZVFH-LABEL: vsitofp_nxv16i1_nxv16f16:
1082 ; ZVFH-NEXT: vsetvli a0, zero, e8, m2, ta, ma
1083 ; ZVFH-NEXT: vmv.v.i v8, 0
1084 ; ZVFH-NEXT: vmerge.vim v12, v8, -1, v0
1085 ; ZVFH-NEXT: vfwcvt.f.x.v v8, v12
1088 ; ZVFHMIN-LABEL: vsitofp_nxv16i1_nxv16f16:
1090 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m4, ta, ma
1091 ; ZVFHMIN-NEXT: vmv.v.i v8, 0
1092 ; ZVFHMIN-NEXT: vmerge.vim v8, v8, -1, v0
1093 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v16, v8
1094 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v16
1096 %evec = sitofp <vscale x 16 x i1> %va to <vscale x 16 x half>
1097 ret <vscale x 16 x half> %evec
1100 define <vscale x 16 x half> @vuitofp_nxv16i1_nxv16f16(<vscale x 16 x i1> %va) {
1101 ; ZVFH-LABEL: vuitofp_nxv16i1_nxv16f16:
1103 ; ZVFH-NEXT: vsetvli a0, zero, e8, m2, ta, ma
1104 ; ZVFH-NEXT: vmv.v.i v8, 0
1105 ; ZVFH-NEXT: vmerge.vim v12, v8, 1, v0
1106 ; ZVFH-NEXT: vfwcvt.f.xu.v v8, v12
1109 ; ZVFHMIN-LABEL: vuitofp_nxv16i1_nxv16f16:
1111 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m4, ta, ma
1112 ; ZVFHMIN-NEXT: vmv.v.i v8, 0
1113 ; ZVFHMIN-NEXT: vmerge.vim v8, v8, 1, v0
1114 ; ZVFHMIN-NEXT: vfwcvt.f.xu.v v16, v8
1115 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v16
1117 %evec = uitofp <vscale x 16 x i1> %va to <vscale x 16 x half>
1118 ret <vscale x 16 x half> %evec
1121 define <vscale x 16 x float> @vsitofp_nxv16i1_nxv16f32(<vscale x 16 x i1> %va) {
1122 ; CHECK-LABEL: vsitofp_nxv16i1_nxv16f32:
1124 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
1125 ; CHECK-NEXT: vmv.v.i v8, 0
1126 ; CHECK-NEXT: vmerge.vim v16, v8, -1, v0
1127 ; CHECK-NEXT: vfwcvt.f.x.v v8, v16
1129 %evec = sitofp <vscale x 16 x i1> %va to <vscale x 16 x float>
1130 ret <vscale x 16 x float> %evec
1133 define <vscale x 16 x float> @vuitofp_nxv16i1_nxv16f32(<vscale x 16 x i1> %va) {
1134 ; CHECK-LABEL: vuitofp_nxv16i1_nxv16f32:
1136 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
1137 ; CHECK-NEXT: vmv.v.i v8, 0
1138 ; CHECK-NEXT: vmerge.vim v16, v8, 1, v0
1139 ; CHECK-NEXT: vfwcvt.f.xu.v v8, v16
1141 %evec = uitofp <vscale x 16 x i1> %va to <vscale x 16 x float>
1142 ret <vscale x 16 x float> %evec
1145 define <vscale x 32 x half> @vsitofp_nxv32i1_nxv32f16(<vscale x 32 x i1> %va) {
1146 ; ZVFH-LABEL: vsitofp_nxv32i1_nxv32f16:
1148 ; ZVFH-NEXT: vsetvli a0, zero, e8, m4, ta, ma
1149 ; ZVFH-NEXT: vmv.v.i v8, 0
1150 ; ZVFH-NEXT: vmerge.vim v16, v8, -1, v0
1151 ; ZVFH-NEXT: vfwcvt.f.x.v v8, v16
1154 ; ZVFHMIN-LABEL: vsitofp_nxv32i1_nxv32f16:
1156 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m4, ta, ma
1157 ; ZVFHMIN-NEXT: vmv.v.i v12, 0
1158 ; ZVFHMIN-NEXT: csrr a0, vlenb
1159 ; ZVFHMIN-NEXT: vmerge.vim v8, v12, -1, v0
1160 ; ZVFHMIN-NEXT: srli a0, a0, 2
1161 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v16, v8
1162 ; ZVFHMIN-NEXT: vsetvli a1, zero, e8, mf2, ta, ma
1163 ; ZVFHMIN-NEXT: vslidedown.vx v0, v0, a0
1164 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m4, ta, ma
1165 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v16
1166 ; ZVFHMIN-NEXT: vmerge.vim v12, v12, -1, v0
1167 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v16, v12
1168 ; ZVFHMIN-NEXT: vfncvt.f.f.w v12, v16
1170 %evec = sitofp <vscale x 32 x i1> %va to <vscale x 32 x half>
1171 ret <vscale x 32 x half> %evec
1174 define <vscale x 32 x half> @vuitofp_nxv32i1_nxv32f16(<vscale x 32 x i1> %va) {
1175 ; ZVFH-LABEL: vuitofp_nxv32i1_nxv32f16:
1177 ; ZVFH-NEXT: vsetvli a0, zero, e8, m4, ta, ma
1178 ; ZVFH-NEXT: vmv.v.i v8, 0
1179 ; ZVFH-NEXT: vmerge.vim v16, v8, 1, v0
1180 ; ZVFH-NEXT: vfwcvt.f.xu.v v8, v16
1183 ; ZVFHMIN-LABEL: vuitofp_nxv32i1_nxv32f16:
1185 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m4, ta, ma
1186 ; ZVFHMIN-NEXT: vmv.v.i v12, 0
1187 ; ZVFHMIN-NEXT: csrr a0, vlenb
1188 ; ZVFHMIN-NEXT: vmerge.vim v8, v12, 1, v0
1189 ; ZVFHMIN-NEXT: srli a0, a0, 2
1190 ; ZVFHMIN-NEXT: vfwcvt.f.xu.v v16, v8
1191 ; ZVFHMIN-NEXT: vsetvli a1, zero, e8, mf2, ta, ma
1192 ; ZVFHMIN-NEXT: vslidedown.vx v0, v0, a0
1193 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m4, ta, ma
1194 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v16
1195 ; ZVFHMIN-NEXT: vmerge.vim v12, v12, 1, v0
1196 ; ZVFHMIN-NEXT: vfwcvt.f.xu.v v16, v12
1197 ; ZVFHMIN-NEXT: vfncvt.f.f.w v12, v16
1199 %evec = uitofp <vscale x 32 x i1> %va to <vscale x 32 x half>
1200 ret <vscale x 32 x half> %evec
1203 define <vscale x 1 x half> @vsitofp_nxv1i8_nxv1f16(<vscale x 1 x i8> %va) {
1204 ; ZVFH-LABEL: vsitofp_nxv1i8_nxv1f16:
1206 ; ZVFH-NEXT: vsetvli a0, zero, e8, mf8, ta, ma
1207 ; ZVFH-NEXT: vfwcvt.f.x.v v9, v8
1208 ; ZVFH-NEXT: vmv1r.v v8, v9
1211 ; ZVFHMIN-LABEL: vsitofp_nxv1i8_nxv1f16:
1213 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
1214 ; ZVFHMIN-NEXT: vsext.vf2 v9, v8
1215 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v10, v9
1216 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v10
1218 %evec = sitofp <vscale x 1 x i8> %va to <vscale x 1 x half>
1219 ret <vscale x 1 x half> %evec
1222 define <vscale x 1 x half> @vsitofp_nxv1i7_nxv1f16(<vscale x 1 x i7> %va) {
1223 ; ZVFH-LABEL: vsitofp_nxv1i7_nxv1f16:
1225 ; ZVFH-NEXT: vsetvli a0, zero, e8, mf8, ta, ma
1226 ; ZVFH-NEXT: vadd.vv v8, v8, v8
1227 ; ZVFH-NEXT: vsra.vi v9, v8, 1
1228 ; ZVFH-NEXT: vfwcvt.f.x.v v8, v9
1231 ; ZVFHMIN-LABEL: vsitofp_nxv1i7_nxv1f16:
1233 ; ZVFHMIN-NEXT: vsetvli a0, zero, e8, mf8, ta, ma
1234 ; ZVFHMIN-NEXT: vadd.vv v8, v8, v8
1235 ; ZVFHMIN-NEXT: vsra.vi v8, v8, 1
1236 ; ZVFHMIN-NEXT: vsetvli zero, zero, e16, mf4, ta, ma
1237 ; ZVFHMIN-NEXT: vsext.vf2 v9, v8
1238 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v10, v9
1239 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v10
1241 %evec = sitofp <vscale x 1 x i7> %va to <vscale x 1 x half>
1242 ret <vscale x 1 x half> %evec
1245 define <vscale x 1 x half> @vuitofp_nxv1i7_nxv1f16(<vscale x 1 x i7> %va) {
1246 ; ZVFH-LABEL: vuitofp_nxv1i7_nxv1f16:
1248 ; ZVFH-NEXT: li a0, 127
1249 ; ZVFH-NEXT: vsetvli a1, zero, e8, mf8, ta, ma
1250 ; ZVFH-NEXT: vand.vx v9, v8, a0
1251 ; ZVFH-NEXT: vfwcvt.f.xu.v v8, v9
1254 ; ZVFHMIN-LABEL: vuitofp_nxv1i7_nxv1f16:
1256 ; ZVFHMIN-NEXT: li a0, 127
1257 ; ZVFHMIN-NEXT: vsetvli a1, zero, e8, mf8, ta, ma
1258 ; ZVFHMIN-NEXT: vand.vx v8, v8, a0
1259 ; ZVFHMIN-NEXT: vsetvli zero, zero, e16, mf4, ta, ma
1260 ; ZVFHMIN-NEXT: vzext.vf2 v9, v8
1261 ; ZVFHMIN-NEXT: vfwcvt.f.xu.v v10, v9
1262 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v10
1264 %evec = uitofp <vscale x 1 x i7> %va to <vscale x 1 x half>
1265 ret <vscale x 1 x half> %evec
1268 define <vscale x 1 x half> @vuitofp_nxv1i8_nxv1f16(<vscale x 1 x i8> %va) {
1269 ; ZVFH-LABEL: vuitofp_nxv1i8_nxv1f16:
1271 ; ZVFH-NEXT: vsetvli a0, zero, e8, mf8, ta, ma
1272 ; ZVFH-NEXT: vfwcvt.f.xu.v v9, v8
1273 ; ZVFH-NEXT: vmv1r.v v8, v9
1276 ; ZVFHMIN-LABEL: vuitofp_nxv1i8_nxv1f16:
1278 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
1279 ; ZVFHMIN-NEXT: vzext.vf2 v9, v8
1280 ; ZVFHMIN-NEXT: vfwcvt.f.xu.v v10, v9
1281 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v10
1283 %evec = uitofp <vscale x 1 x i8> %va to <vscale x 1 x half>
1284 ret <vscale x 1 x half> %evec
1287 define <vscale x 1 x float> @vsitofp_nxv1i8_nxv1f32(<vscale x 1 x i8> %va) {
1288 ; CHECK-LABEL: vsitofp_nxv1i8_nxv1f32:
1290 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
1291 ; CHECK-NEXT: vsext.vf2 v9, v8
1292 ; CHECK-NEXT: vfwcvt.f.x.v v8, v9
1294 %evec = sitofp <vscale x 1 x i8> %va to <vscale x 1 x float>
1295 ret <vscale x 1 x float> %evec
1298 define <vscale x 1 x float> @vuitofp_nxv1i8_nxv1f32(<vscale x 1 x i8> %va) {
1299 ; CHECK-LABEL: vuitofp_nxv1i8_nxv1f32:
1301 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
1302 ; CHECK-NEXT: vzext.vf2 v9, v8
1303 ; CHECK-NEXT: vfwcvt.f.xu.v v8, v9
1305 %evec = uitofp <vscale x 1 x i8> %va to <vscale x 1 x float>
1306 ret <vscale x 1 x float> %evec
1309 define <vscale x 1 x double> @vsitofp_nxv1i8_nxv1f64(<vscale x 1 x i8> %va) {
1310 ; CHECK-LABEL: vsitofp_nxv1i8_nxv1f64:
1312 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
1313 ; CHECK-NEXT: vsext.vf4 v9, v8
1314 ; CHECK-NEXT: vfwcvt.f.x.v v8, v9
1316 %evec = sitofp <vscale x 1 x i8> %va to <vscale x 1 x double>
1317 ret <vscale x 1 x double> %evec
1320 define <vscale x 1 x double> @vuitofp_nxv1i8_nxv1f64(<vscale x 1 x i8> %va) {
1321 ; CHECK-LABEL: vuitofp_nxv1i8_nxv1f64:
1323 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
1324 ; CHECK-NEXT: vzext.vf4 v9, v8
1325 ; CHECK-NEXT: vfwcvt.f.xu.v v8, v9
1327 %evec = uitofp <vscale x 1 x i8> %va to <vscale x 1 x double>
1328 ret <vscale x 1 x double> %evec
1331 define <vscale x 2 x half> @vsitofp_nxv2i8_nxv2f16(<vscale x 2 x i8> %va) {
1332 ; ZVFH-LABEL: vsitofp_nxv2i8_nxv2f16:
1334 ; ZVFH-NEXT: vsetvli a0, zero, e8, mf4, ta, ma
1335 ; ZVFH-NEXT: vfwcvt.f.x.v v9, v8
1336 ; ZVFH-NEXT: vmv1r.v v8, v9
1339 ; ZVFHMIN-LABEL: vsitofp_nxv2i8_nxv2f16:
1341 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
1342 ; ZVFHMIN-NEXT: vsext.vf2 v9, v8
1343 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v10, v9
1344 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v10
1346 %evec = sitofp <vscale x 2 x i8> %va to <vscale x 2 x half>
1347 ret <vscale x 2 x half> %evec
1350 define <vscale x 2 x half> @vuitofp_nxv2i8_nxv2f16(<vscale x 2 x i8> %va) {
1351 ; ZVFH-LABEL: vuitofp_nxv2i8_nxv2f16:
1353 ; ZVFH-NEXT: vsetvli a0, zero, e8, mf4, ta, ma
1354 ; ZVFH-NEXT: vfwcvt.f.xu.v v9, v8
1355 ; ZVFH-NEXT: vmv1r.v v8, v9
1358 ; ZVFHMIN-LABEL: vuitofp_nxv2i8_nxv2f16:
1360 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
1361 ; ZVFHMIN-NEXT: vzext.vf2 v9, v8
1362 ; ZVFHMIN-NEXT: vfwcvt.f.xu.v v10, v9
1363 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v10
1365 %evec = uitofp <vscale x 2 x i8> %va to <vscale x 2 x half>
1366 ret <vscale x 2 x half> %evec
1369 define <vscale x 2 x float> @vsitofp_nxv2i8_nxv2f32(<vscale x 2 x i8> %va) {
1370 ; CHECK-LABEL: vsitofp_nxv2i8_nxv2f32:
1372 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
1373 ; CHECK-NEXT: vsext.vf2 v9, v8
1374 ; CHECK-NEXT: vfwcvt.f.x.v v8, v9
1376 %evec = sitofp <vscale x 2 x i8> %va to <vscale x 2 x float>
1377 ret <vscale x 2 x float> %evec
1380 define <vscale x 2 x float> @vuitofp_nxv2i8_nxv2f32(<vscale x 2 x i8> %va) {
1381 ; CHECK-LABEL: vuitofp_nxv2i8_nxv2f32:
1383 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
1384 ; CHECK-NEXT: vzext.vf2 v9, v8
1385 ; CHECK-NEXT: vfwcvt.f.xu.v v8, v9
1387 %evec = uitofp <vscale x 2 x i8> %va to <vscale x 2 x float>
1388 ret <vscale x 2 x float> %evec
1391 define <vscale x 2 x double> @vsitofp_nxv2i8_nxv2f64(<vscale x 2 x i8> %va) {
1392 ; CHECK-LABEL: vsitofp_nxv2i8_nxv2f64:
1394 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
1395 ; CHECK-NEXT: vsext.vf4 v10, v8
1396 ; CHECK-NEXT: vfwcvt.f.x.v v8, v10
1398 %evec = sitofp <vscale x 2 x i8> %va to <vscale x 2 x double>
1399 ret <vscale x 2 x double> %evec
1402 define <vscale x 2 x double> @vuitofp_nxv2i8_nxv2f64(<vscale x 2 x i8> %va) {
1403 ; CHECK-LABEL: vuitofp_nxv2i8_nxv2f64:
1405 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
1406 ; CHECK-NEXT: vzext.vf4 v10, v8
1407 ; CHECK-NEXT: vfwcvt.f.xu.v v8, v10
1409 %evec = uitofp <vscale x 2 x i8> %va to <vscale x 2 x double>
1410 ret <vscale x 2 x double> %evec
1413 define <vscale x 4 x half> @vsitofp_nxv4i8_nxv4f16(<vscale x 4 x i8> %va) {
1414 ; ZVFH-LABEL: vsitofp_nxv4i8_nxv4f16:
1416 ; ZVFH-NEXT: vsetvli a0, zero, e8, mf2, ta, ma
1417 ; ZVFH-NEXT: vfwcvt.f.x.v v9, v8
1418 ; ZVFH-NEXT: vmv1r.v v8, v9
1421 ; ZVFHMIN-LABEL: vsitofp_nxv4i8_nxv4f16:
1423 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1424 ; ZVFHMIN-NEXT: vsext.vf2 v9, v8
1425 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v10, v9
1426 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v10
1428 %evec = sitofp <vscale x 4 x i8> %va to <vscale x 4 x half>
1429 ret <vscale x 4 x half> %evec
1432 define <vscale x 4 x half> @vuitofp_nxv4i8_nxv4f16(<vscale x 4 x i8> %va) {
1433 ; ZVFH-LABEL: vuitofp_nxv4i8_nxv4f16:
1435 ; ZVFH-NEXT: vsetvli a0, zero, e8, mf2, ta, ma
1436 ; ZVFH-NEXT: vfwcvt.f.xu.v v9, v8
1437 ; ZVFH-NEXT: vmv1r.v v8, v9
1440 ; ZVFHMIN-LABEL: vuitofp_nxv4i8_nxv4f16:
1442 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1443 ; ZVFHMIN-NEXT: vzext.vf2 v9, v8
1444 ; ZVFHMIN-NEXT: vfwcvt.f.xu.v v10, v9
1445 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v10
1447 %evec = uitofp <vscale x 4 x i8> %va to <vscale x 4 x half>
1448 ret <vscale x 4 x half> %evec
1451 define <vscale x 4 x float> @vsitofp_nxv4i8_nxv4f32(<vscale x 4 x i8> %va) {
1452 ; CHECK-LABEL: vsitofp_nxv4i8_nxv4f32:
1454 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1455 ; CHECK-NEXT: vsext.vf2 v10, v8
1456 ; CHECK-NEXT: vfwcvt.f.x.v v8, v10
1458 %evec = sitofp <vscale x 4 x i8> %va to <vscale x 4 x float>
1459 ret <vscale x 4 x float> %evec
1462 define <vscale x 4 x float> @vuitofp_nxv4i8_nxv4f32(<vscale x 4 x i8> %va) {
1463 ; CHECK-LABEL: vuitofp_nxv4i8_nxv4f32:
1465 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1466 ; CHECK-NEXT: vzext.vf2 v10, v8
1467 ; CHECK-NEXT: vfwcvt.f.xu.v v8, v10
1469 %evec = uitofp <vscale x 4 x i8> %va to <vscale x 4 x float>
1470 ret <vscale x 4 x float> %evec
1473 define <vscale x 4 x double> @vsitofp_nxv4i8_nxv4f64(<vscale x 4 x i8> %va) {
1474 ; CHECK-LABEL: vsitofp_nxv4i8_nxv4f64:
1476 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
1477 ; CHECK-NEXT: vsext.vf4 v12, v8
1478 ; CHECK-NEXT: vfwcvt.f.x.v v8, v12
1480 %evec = sitofp <vscale x 4 x i8> %va to <vscale x 4 x double>
1481 ret <vscale x 4 x double> %evec
1484 define <vscale x 4 x double> @vuitofp_nxv4i8_nxv4f64(<vscale x 4 x i8> %va) {
1485 ; CHECK-LABEL: vuitofp_nxv4i8_nxv4f64:
1487 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
1488 ; CHECK-NEXT: vzext.vf4 v12, v8
1489 ; CHECK-NEXT: vfwcvt.f.xu.v v8, v12
1491 %evec = uitofp <vscale x 4 x i8> %va to <vscale x 4 x double>
1492 ret <vscale x 4 x double> %evec
1495 define <vscale x 8 x half> @vsitofp_nxv8i8_nxv8f16(<vscale x 8 x i8> %va) {
1496 ; ZVFH-LABEL: vsitofp_nxv8i8_nxv8f16:
1498 ; ZVFH-NEXT: vsetvli a0, zero, e8, m1, ta, ma
1499 ; ZVFH-NEXT: vfwcvt.f.x.v v10, v8
1500 ; ZVFH-NEXT: vmv2r.v v8, v10
1503 ; ZVFHMIN-LABEL: vsitofp_nxv8i8_nxv8f16:
1505 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1506 ; ZVFHMIN-NEXT: vsext.vf2 v10, v8
1507 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v12, v10
1508 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v12
1510 %evec = sitofp <vscale x 8 x i8> %va to <vscale x 8 x half>
1511 ret <vscale x 8 x half> %evec
1514 define <vscale x 8 x half> @vuitofp_nxv8i8_nxv8f16(<vscale x 8 x i8> %va) {
1515 ; ZVFH-LABEL: vuitofp_nxv8i8_nxv8f16:
1517 ; ZVFH-NEXT: vsetvli a0, zero, e8, m1, ta, ma
1518 ; ZVFH-NEXT: vfwcvt.f.xu.v v10, v8
1519 ; ZVFH-NEXT: vmv2r.v v8, v10
1522 ; ZVFHMIN-LABEL: vuitofp_nxv8i8_nxv8f16:
1524 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1525 ; ZVFHMIN-NEXT: vzext.vf2 v10, v8
1526 ; ZVFHMIN-NEXT: vfwcvt.f.xu.v v12, v10
1527 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v12
1529 %evec = uitofp <vscale x 8 x i8> %va to <vscale x 8 x half>
1530 ret <vscale x 8 x half> %evec
1533 define <vscale x 8 x float> @vsitofp_nxv8i8_nxv8f32(<vscale x 8 x i8> %va) {
1534 ; CHECK-LABEL: vsitofp_nxv8i8_nxv8f32:
1536 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1537 ; CHECK-NEXT: vsext.vf2 v12, v8
1538 ; CHECK-NEXT: vfwcvt.f.x.v v8, v12
1540 %evec = sitofp <vscale x 8 x i8> %va to <vscale x 8 x float>
1541 ret <vscale x 8 x float> %evec
1544 define <vscale x 8 x float> @vuitofp_nxv8i8_nxv8f32(<vscale x 8 x i8> %va) {
1545 ; CHECK-LABEL: vuitofp_nxv8i8_nxv8f32:
1547 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1548 ; CHECK-NEXT: vzext.vf2 v12, v8
1549 ; CHECK-NEXT: vfwcvt.f.xu.v v8, v12
1551 %evec = uitofp <vscale x 8 x i8> %va to <vscale x 8 x float>
1552 ret <vscale x 8 x float> %evec
1555 define <vscale x 8 x double> @vsitofp_nxv8i8_nxv8f64(<vscale x 8 x i8> %va) {
1556 ; CHECK-LABEL: vsitofp_nxv8i8_nxv8f64:
1558 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
1559 ; CHECK-NEXT: vsext.vf4 v16, v8
1560 ; CHECK-NEXT: vfwcvt.f.x.v v8, v16
1562 %evec = sitofp <vscale x 8 x i8> %va to <vscale x 8 x double>
1563 ret <vscale x 8 x double> %evec
1566 define <vscale x 8 x double> @vuitofp_nxv8i8_nxv8f64(<vscale x 8 x i8> %va) {
1567 ; CHECK-LABEL: vuitofp_nxv8i8_nxv8f64:
1569 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
1570 ; CHECK-NEXT: vzext.vf4 v16, v8
1571 ; CHECK-NEXT: vfwcvt.f.xu.v v8, v16
1573 %evec = uitofp <vscale x 8 x i8> %va to <vscale x 8 x double>
1574 ret <vscale x 8 x double> %evec
1577 define <vscale x 16 x half> @vsitofp_nxv16i8_nxv16f16(<vscale x 16 x i8> %va) {
1578 ; ZVFH-LABEL: vsitofp_nxv16i8_nxv16f16:
1580 ; ZVFH-NEXT: vsetvli a0, zero, e8, m2, ta, ma
1581 ; ZVFH-NEXT: vfwcvt.f.x.v v12, v8
1582 ; ZVFH-NEXT: vmv4r.v v8, v12
1585 ; ZVFHMIN-LABEL: vsitofp_nxv16i8_nxv16f16:
1587 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m4, ta, ma
1588 ; ZVFHMIN-NEXT: vsext.vf2 v12, v8
1589 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v16, v12
1590 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v16
1592 %evec = sitofp <vscale x 16 x i8> %va to <vscale x 16 x half>
1593 ret <vscale x 16 x half> %evec
1596 define <vscale x 16 x half> @vuitofp_nxv16i8_nxv16f16(<vscale x 16 x i8> %va) {
1597 ; ZVFH-LABEL: vuitofp_nxv16i8_nxv16f16:
1599 ; ZVFH-NEXT: vsetvli a0, zero, e8, m2, ta, ma
1600 ; ZVFH-NEXT: vfwcvt.f.xu.v v12, v8
1601 ; ZVFH-NEXT: vmv4r.v v8, v12
1604 ; ZVFHMIN-LABEL: vuitofp_nxv16i8_nxv16f16:
1606 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m4, ta, ma
1607 ; ZVFHMIN-NEXT: vzext.vf2 v12, v8
1608 ; ZVFHMIN-NEXT: vfwcvt.f.xu.v v16, v12
1609 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v16
1611 %evec = uitofp <vscale x 16 x i8> %va to <vscale x 16 x half>
1612 ret <vscale x 16 x half> %evec
1615 define <vscale x 16 x float> @vsitofp_nxv16i8_nxv16f32(<vscale x 16 x i8> %va) {
1616 ; CHECK-LABEL: vsitofp_nxv16i8_nxv16f32:
1618 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
1619 ; CHECK-NEXT: vsext.vf2 v16, v8
1620 ; CHECK-NEXT: vfwcvt.f.x.v v8, v16
1622 %evec = sitofp <vscale x 16 x i8> %va to <vscale x 16 x float>
1623 ret <vscale x 16 x float> %evec
1626 define <vscale x 16 x float> @vuitofp_nxv16i8_nxv16f32(<vscale x 16 x i8> %va) {
1627 ; CHECK-LABEL: vuitofp_nxv16i8_nxv16f32:
1629 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
1630 ; CHECK-NEXT: vzext.vf2 v16, v8
1631 ; CHECK-NEXT: vfwcvt.f.xu.v v8, v16
1633 %evec = uitofp <vscale x 16 x i8> %va to <vscale x 16 x float>
1634 ret <vscale x 16 x float> %evec
1637 define <vscale x 32 x half> @vsitofp_nxv32i8_nxv32f16(<vscale x 32 x i8> %va) {
1638 ; ZVFH-LABEL: vsitofp_nxv32i8_nxv32f16:
1640 ; ZVFH-NEXT: vsetvli a0, zero, e8, m4, ta, ma
1641 ; ZVFH-NEXT: vfwcvt.f.x.v v16, v8
1642 ; ZVFH-NEXT: vmv8r.v v8, v16
1645 ; ZVFHMIN-LABEL: vsitofp_nxv32i8_nxv32f16:
1647 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m4, ta, ma
1648 ; ZVFHMIN-NEXT: vsext.vf2 v12, v8
1649 ; ZVFHMIN-NEXT: vsext.vf2 v16, v10
1650 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v24, v12
1651 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v24
1652 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v24, v16
1653 ; ZVFHMIN-NEXT: vfncvt.f.f.w v12, v24
1655 %evec = sitofp <vscale x 32 x i8> %va to <vscale x 32 x half>
1656 ret <vscale x 32 x half> %evec
1659 define <vscale x 32 x half> @vuitofp_nxv32i8_nxv32f16(<vscale x 32 x i8> %va) {
1660 ; ZVFH-LABEL: vuitofp_nxv32i8_nxv32f16:
1662 ; ZVFH-NEXT: vsetvli a0, zero, e8, m4, ta, ma
1663 ; ZVFH-NEXT: vfwcvt.f.xu.v v16, v8
1664 ; ZVFH-NEXT: vmv8r.v v8, v16
1667 ; ZVFHMIN-LABEL: vuitofp_nxv32i8_nxv32f16:
1669 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m4, ta, ma
1670 ; ZVFHMIN-NEXT: vzext.vf2 v12, v8
1671 ; ZVFHMIN-NEXT: vzext.vf2 v16, v10
1672 ; ZVFHMIN-NEXT: vfwcvt.f.xu.v v24, v12
1673 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v24
1674 ; ZVFHMIN-NEXT: vfwcvt.f.xu.v v24, v16
1675 ; ZVFHMIN-NEXT: vfncvt.f.f.w v12, v24
1677 %evec = uitofp <vscale x 32 x i8> %va to <vscale x 32 x half>
1678 ret <vscale x 32 x half> %evec
1681 define <vscale x 1 x half> @vsitofp_nxv1i16_nxv1f16(<vscale x 1 x i16> %va) {
1682 ; ZVFH-LABEL: vsitofp_nxv1i16_nxv1f16:
1684 ; ZVFH-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
1685 ; ZVFH-NEXT: vfcvt.f.x.v v8, v8
1688 ; ZVFHMIN-LABEL: vsitofp_nxv1i16_nxv1f16:
1690 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
1691 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v9, v8
1692 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v9
1694 %evec = sitofp <vscale x 1 x i16> %va to <vscale x 1 x half>
1695 ret <vscale x 1 x half> %evec
1698 define <vscale x 1 x half> @vuitofp_nxv1i16_nxv1f16(<vscale x 1 x i16> %va) {
1699 ; ZVFH-LABEL: vuitofp_nxv1i16_nxv1f16:
1701 ; ZVFH-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
1702 ; ZVFH-NEXT: vfcvt.f.xu.v v8, v8
1705 ; ZVFHMIN-LABEL: vuitofp_nxv1i16_nxv1f16:
1707 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
1708 ; ZVFHMIN-NEXT: vfwcvt.f.xu.v v9, v8
1709 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v9
1711 %evec = uitofp <vscale x 1 x i16> %va to <vscale x 1 x half>
1712 ret <vscale x 1 x half> %evec
1715 define <vscale x 1 x float> @vsitofp_nxv1i16_nxv1f32(<vscale x 1 x i16> %va) {
1716 ; CHECK-LABEL: vsitofp_nxv1i16_nxv1f32:
1718 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
1719 ; CHECK-NEXT: vfwcvt.f.x.v v9, v8
1720 ; CHECK-NEXT: vmv1r.v v8, v9
1722 %evec = sitofp <vscale x 1 x i16> %va to <vscale x 1 x float>
1723 ret <vscale x 1 x float> %evec
1726 define <vscale x 1 x float> @vuitofp_nxv1i16_nxv1f32(<vscale x 1 x i16> %va) {
1727 ; CHECK-LABEL: vuitofp_nxv1i16_nxv1f32:
1729 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
1730 ; CHECK-NEXT: vfwcvt.f.xu.v v9, v8
1731 ; CHECK-NEXT: vmv1r.v v8, v9
1733 %evec = uitofp <vscale x 1 x i16> %va to <vscale x 1 x float>
1734 ret <vscale x 1 x float> %evec
1737 define <vscale x 1 x double> @vsitofp_nxv1i16_nxv1f64(<vscale x 1 x i16> %va) {
1738 ; CHECK-LABEL: vsitofp_nxv1i16_nxv1f64:
1740 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
1741 ; CHECK-NEXT: vsext.vf2 v9, v8
1742 ; CHECK-NEXT: vfwcvt.f.x.v v8, v9
1744 %evec = sitofp <vscale x 1 x i16> %va to <vscale x 1 x double>
1745 ret <vscale x 1 x double> %evec
1748 define <vscale x 1 x double> @vuitofp_nxv1i16_nxv1f64(<vscale x 1 x i16> %va) {
1749 ; CHECK-LABEL: vuitofp_nxv1i16_nxv1f64:
1751 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
1752 ; CHECK-NEXT: vzext.vf2 v9, v8
1753 ; CHECK-NEXT: vfwcvt.f.xu.v v8, v9
1755 %evec = uitofp <vscale x 1 x i16> %va to <vscale x 1 x double>
1756 ret <vscale x 1 x double> %evec
1759 define <vscale x 2 x half> @vsitofp_nxv2i16_nxv2f16(<vscale x 2 x i16> %va) {
1760 ; ZVFH-LABEL: vsitofp_nxv2i16_nxv2f16:
1762 ; ZVFH-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
1763 ; ZVFH-NEXT: vfcvt.f.x.v v8, v8
1766 ; ZVFHMIN-LABEL: vsitofp_nxv2i16_nxv2f16:
1768 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
1769 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v9, v8
1770 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v9
1772 %evec = sitofp <vscale x 2 x i16> %va to <vscale x 2 x half>
1773 ret <vscale x 2 x half> %evec
1776 define <vscale x 2 x half> @vuitofp_nxv2i16_nxv2f16(<vscale x 2 x i16> %va) {
1777 ; ZVFH-LABEL: vuitofp_nxv2i16_nxv2f16:
1779 ; ZVFH-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
1780 ; ZVFH-NEXT: vfcvt.f.xu.v v8, v8
1783 ; ZVFHMIN-LABEL: vuitofp_nxv2i16_nxv2f16:
1785 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
1786 ; ZVFHMIN-NEXT: vfwcvt.f.xu.v v9, v8
1787 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v9
1789 %evec = uitofp <vscale x 2 x i16> %va to <vscale x 2 x half>
1790 ret <vscale x 2 x half> %evec
1793 define <vscale x 2 x float> @vsitofp_nxv2i16_nxv2f32(<vscale x 2 x i16> %va) {
1794 ; CHECK-LABEL: vsitofp_nxv2i16_nxv2f32:
1796 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
1797 ; CHECK-NEXT: vfwcvt.f.x.v v9, v8
1798 ; CHECK-NEXT: vmv1r.v v8, v9
1800 %evec = sitofp <vscale x 2 x i16> %va to <vscale x 2 x float>
1801 ret <vscale x 2 x float> %evec
1804 define <vscale x 2 x float> @vuitofp_nxv2i16_nxv2f32(<vscale x 2 x i16> %va) {
1805 ; CHECK-LABEL: vuitofp_nxv2i16_nxv2f32:
1807 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
1808 ; CHECK-NEXT: vfwcvt.f.xu.v v9, v8
1809 ; CHECK-NEXT: vmv1r.v v8, v9
1811 %evec = uitofp <vscale x 2 x i16> %va to <vscale x 2 x float>
1812 ret <vscale x 2 x float> %evec
1815 define <vscale x 2 x double> @vsitofp_nxv2i16_nxv2f64(<vscale x 2 x i16> %va) {
1816 ; CHECK-LABEL: vsitofp_nxv2i16_nxv2f64:
1818 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
1819 ; CHECK-NEXT: vsext.vf2 v10, v8
1820 ; CHECK-NEXT: vfwcvt.f.x.v v8, v10
1822 %evec = sitofp <vscale x 2 x i16> %va to <vscale x 2 x double>
1823 ret <vscale x 2 x double> %evec
1826 define <vscale x 2 x double> @vuitofp_nxv2i16_nxv2f64(<vscale x 2 x i16> %va) {
1827 ; CHECK-LABEL: vuitofp_nxv2i16_nxv2f64:
1829 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
1830 ; CHECK-NEXT: vzext.vf2 v10, v8
1831 ; CHECK-NEXT: vfwcvt.f.xu.v v8, v10
1833 %evec = uitofp <vscale x 2 x i16> %va to <vscale x 2 x double>
1834 ret <vscale x 2 x double> %evec
1837 define <vscale x 4 x half> @vsitofp_nxv4i16_nxv4f16(<vscale x 4 x i16> %va) {
1838 ; ZVFH-LABEL: vsitofp_nxv4i16_nxv4f16:
1840 ; ZVFH-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1841 ; ZVFH-NEXT: vfcvt.f.x.v v8, v8
1844 ; ZVFHMIN-LABEL: vsitofp_nxv4i16_nxv4f16:
1846 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1847 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v10, v8
1848 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v10
1850 %evec = sitofp <vscale x 4 x i16> %va to <vscale x 4 x half>
1851 ret <vscale x 4 x half> %evec
1854 define <vscale x 4 x half> @vuitofp_nxv4i16_nxv4f16(<vscale x 4 x i16> %va) {
1855 ; ZVFH-LABEL: vuitofp_nxv4i16_nxv4f16:
1857 ; ZVFH-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1858 ; ZVFH-NEXT: vfcvt.f.xu.v v8, v8
1861 ; ZVFHMIN-LABEL: vuitofp_nxv4i16_nxv4f16:
1863 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1864 ; ZVFHMIN-NEXT: vfwcvt.f.xu.v v10, v8
1865 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v10
1867 %evec = uitofp <vscale x 4 x i16> %va to <vscale x 4 x half>
1868 ret <vscale x 4 x half> %evec
1871 define <vscale x 4 x float> @vsitofp_nxv4i16_nxv4f32(<vscale x 4 x i16> %va) {
1872 ; CHECK-LABEL: vsitofp_nxv4i16_nxv4f32:
1874 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1875 ; CHECK-NEXT: vfwcvt.f.x.v v10, v8
1876 ; CHECK-NEXT: vmv2r.v v8, v10
1878 %evec = sitofp <vscale x 4 x i16> %va to <vscale x 4 x float>
1879 ret <vscale x 4 x float> %evec
1882 define <vscale x 4 x float> @vuitofp_nxv4i16_nxv4f32(<vscale x 4 x i16> %va) {
1883 ; CHECK-LABEL: vuitofp_nxv4i16_nxv4f32:
1885 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1886 ; CHECK-NEXT: vfwcvt.f.xu.v v10, v8
1887 ; CHECK-NEXT: vmv2r.v v8, v10
1889 %evec = uitofp <vscale x 4 x i16> %va to <vscale x 4 x float>
1890 ret <vscale x 4 x float> %evec
1893 define <vscale x 4 x double> @vsitofp_nxv4i16_nxv4f64(<vscale x 4 x i16> %va) {
1894 ; CHECK-LABEL: vsitofp_nxv4i16_nxv4f64:
1896 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
1897 ; CHECK-NEXT: vsext.vf2 v12, v8
1898 ; CHECK-NEXT: vfwcvt.f.x.v v8, v12
1900 %evec = sitofp <vscale x 4 x i16> %va to <vscale x 4 x double>
1901 ret <vscale x 4 x double> %evec
1904 define <vscale x 4 x double> @vuitofp_nxv4i16_nxv4f64(<vscale x 4 x i16> %va) {
1905 ; CHECK-LABEL: vuitofp_nxv4i16_nxv4f64:
1907 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
1908 ; CHECK-NEXT: vzext.vf2 v12, v8
1909 ; CHECK-NEXT: vfwcvt.f.xu.v v8, v12
1911 %evec = uitofp <vscale x 4 x i16> %va to <vscale x 4 x double>
1912 ret <vscale x 4 x double> %evec
1915 define <vscale x 8 x half> @vsitofp_nxv8i16_nxv8f16(<vscale x 8 x i16> %va) {
1916 ; ZVFH-LABEL: vsitofp_nxv8i16_nxv8f16:
1918 ; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1919 ; ZVFH-NEXT: vfcvt.f.x.v v8, v8
1922 ; ZVFHMIN-LABEL: vsitofp_nxv8i16_nxv8f16:
1924 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1925 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v12, v8
1926 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v12
1928 %evec = sitofp <vscale x 8 x i16> %va to <vscale x 8 x half>
1929 ret <vscale x 8 x half> %evec
1932 define <vscale x 8 x half> @vuitofp_nxv8i16_nxv8f16(<vscale x 8 x i16> %va) {
1933 ; ZVFH-LABEL: vuitofp_nxv8i16_nxv8f16:
1935 ; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1936 ; ZVFH-NEXT: vfcvt.f.xu.v v8, v8
1939 ; ZVFHMIN-LABEL: vuitofp_nxv8i16_nxv8f16:
1941 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1942 ; ZVFHMIN-NEXT: vfwcvt.f.xu.v v12, v8
1943 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v12
1945 %evec = uitofp <vscale x 8 x i16> %va to <vscale x 8 x half>
1946 ret <vscale x 8 x half> %evec
1949 define <vscale x 8 x float> @vsitofp_nxv8i16_nxv8f32(<vscale x 8 x i16> %va) {
1950 ; CHECK-LABEL: vsitofp_nxv8i16_nxv8f32:
1952 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1953 ; CHECK-NEXT: vfwcvt.f.x.v v12, v8
1954 ; CHECK-NEXT: vmv4r.v v8, v12
1956 %evec = sitofp <vscale x 8 x i16> %va to <vscale x 8 x float>
1957 ret <vscale x 8 x float> %evec
1960 define <vscale x 8 x float> @vuitofp_nxv8i16_nxv8f32(<vscale x 8 x i16> %va) {
1961 ; CHECK-LABEL: vuitofp_nxv8i16_nxv8f32:
1963 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1964 ; CHECK-NEXT: vfwcvt.f.xu.v v12, v8
1965 ; CHECK-NEXT: vmv4r.v v8, v12
1967 %evec = uitofp <vscale x 8 x i16> %va to <vscale x 8 x float>
1968 ret <vscale x 8 x float> %evec
1971 define <vscale x 8 x double> @vsitofp_nxv8i16_nxv8f64(<vscale x 8 x i16> %va) {
1972 ; CHECK-LABEL: vsitofp_nxv8i16_nxv8f64:
1974 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
1975 ; CHECK-NEXT: vsext.vf2 v16, v8
1976 ; CHECK-NEXT: vfwcvt.f.x.v v8, v16
1978 %evec = sitofp <vscale x 8 x i16> %va to <vscale x 8 x double>
1979 ret <vscale x 8 x double> %evec
1982 define <vscale x 8 x double> @vuitofp_nxv8i16_nxv8f64(<vscale x 8 x i16> %va) {
1983 ; CHECK-LABEL: vuitofp_nxv8i16_nxv8f64:
1985 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
1986 ; CHECK-NEXT: vzext.vf2 v16, v8
1987 ; CHECK-NEXT: vfwcvt.f.xu.v v8, v16
1989 %evec = uitofp <vscale x 8 x i16> %va to <vscale x 8 x double>
1990 ret <vscale x 8 x double> %evec
1993 define <vscale x 16 x half> @vsitofp_nxv16i16_nxv16f16(<vscale x 16 x i16> %va) {
1994 ; ZVFH-LABEL: vsitofp_nxv16i16_nxv16f16:
1996 ; ZVFH-NEXT: vsetvli a0, zero, e16, m4, ta, ma
1997 ; ZVFH-NEXT: vfcvt.f.x.v v8, v8
2000 ; ZVFHMIN-LABEL: vsitofp_nxv16i16_nxv16f16:
2002 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2003 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v16, v8
2004 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v16
2006 %evec = sitofp <vscale x 16 x i16> %va to <vscale x 16 x half>
2007 ret <vscale x 16 x half> %evec
2010 define <vscale x 16 x half> @vuitofp_nxv16i16_nxv16f16(<vscale x 16 x i16> %va) {
2011 ; ZVFH-LABEL: vuitofp_nxv16i16_nxv16f16:
2013 ; ZVFH-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2014 ; ZVFH-NEXT: vfcvt.f.xu.v v8, v8
2017 ; ZVFHMIN-LABEL: vuitofp_nxv16i16_nxv16f16:
2019 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2020 ; ZVFHMIN-NEXT: vfwcvt.f.xu.v v16, v8
2021 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v16
2023 %evec = uitofp <vscale x 16 x i16> %va to <vscale x 16 x half>
2024 ret <vscale x 16 x half> %evec
2027 define <vscale x 16 x float> @vsitofp_nxv16i16_nxv16f32(<vscale x 16 x i16> %va) {
2028 ; CHECK-LABEL: vsitofp_nxv16i16_nxv16f32:
2030 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2031 ; CHECK-NEXT: vfwcvt.f.x.v v16, v8
2032 ; CHECK-NEXT: vmv8r.v v8, v16
2034 %evec = sitofp <vscale x 16 x i16> %va to <vscale x 16 x float>
2035 ret <vscale x 16 x float> %evec
2038 define <vscale x 16 x float> @vuitofp_nxv16i16_nxv16f32(<vscale x 16 x i16> %va) {
2039 ; CHECK-LABEL: vuitofp_nxv16i16_nxv16f32:
2041 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2042 ; CHECK-NEXT: vfwcvt.f.xu.v v16, v8
2043 ; CHECK-NEXT: vmv8r.v v8, v16
2045 %evec = uitofp <vscale x 16 x i16> %va to <vscale x 16 x float>
2046 ret <vscale x 16 x float> %evec
2049 define <vscale x 32 x half> @vsitofp_nxv32i16_nxv32f16(<vscale x 32 x i16> %va) {
2050 ; ZVFH-LABEL: vsitofp_nxv32i16_nxv32f16:
2052 ; ZVFH-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2053 ; ZVFH-NEXT: vfcvt.f.x.v v8, v8
2056 ; ZVFHMIN-LABEL: vsitofp_nxv32i16_nxv32f16:
2058 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2059 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v16, v8
2060 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v16
2061 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v16, v12
2062 ; ZVFHMIN-NEXT: vfncvt.f.f.w v12, v16
2064 %evec = sitofp <vscale x 32 x i16> %va to <vscale x 32 x half>
2065 ret <vscale x 32 x half> %evec
2068 define <vscale x 32 x half> @vuitofp_nxv32i16_nxv32f16(<vscale x 32 x i16> %va) {
2069 ; ZVFH-LABEL: vuitofp_nxv32i16_nxv32f16:
2071 ; ZVFH-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2072 ; ZVFH-NEXT: vfcvt.f.xu.v v8, v8
2075 ; ZVFHMIN-LABEL: vuitofp_nxv32i16_nxv32f16:
2077 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2078 ; ZVFHMIN-NEXT: vfwcvt.f.xu.v v16, v8
2079 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v16
2080 ; ZVFHMIN-NEXT: vfwcvt.f.xu.v v16, v12
2081 ; ZVFHMIN-NEXT: vfncvt.f.f.w v12, v16
2083 %evec = uitofp <vscale x 32 x i16> %va to <vscale x 32 x half>
2084 ret <vscale x 32 x half> %evec
2087 define <vscale x 1 x half> @vsitofp_nxv1i32_nxv1f16(<vscale x 1 x i32> %va) {
2088 ; ZVFH-LABEL: vsitofp_nxv1i32_nxv1f16:
2090 ; ZVFH-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
2091 ; ZVFH-NEXT: vfncvt.f.x.w v9, v8
2092 ; ZVFH-NEXT: vmv1r.v v8, v9
2095 ; ZVFHMIN-LABEL: vsitofp_nxv1i32_nxv1f16:
2097 ; ZVFHMIN-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
2098 ; ZVFHMIN-NEXT: vfcvt.f.x.v v9, v8
2099 ; ZVFHMIN-NEXT: vsetvli zero, zero, e16, mf4, ta, ma
2100 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v9
2102 %evec = sitofp <vscale x 1 x i32> %va to <vscale x 1 x half>
2103 ret <vscale x 1 x half> %evec
2106 define <vscale x 1 x half> @vuitofp_nxv1i32_nxv1f16(<vscale x 1 x i32> %va) {
2107 ; ZVFH-LABEL: vuitofp_nxv1i32_nxv1f16:
2109 ; ZVFH-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
2110 ; ZVFH-NEXT: vfncvt.f.xu.w v9, v8
2111 ; ZVFH-NEXT: vmv1r.v v8, v9
2114 ; ZVFHMIN-LABEL: vuitofp_nxv1i32_nxv1f16:
2116 ; ZVFHMIN-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
2117 ; ZVFHMIN-NEXT: vfcvt.f.xu.v v9, v8
2118 ; ZVFHMIN-NEXT: vsetvli zero, zero, e16, mf4, ta, ma
2119 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v9
2121 %evec = uitofp <vscale x 1 x i32> %va to <vscale x 1 x half>
2122 ret <vscale x 1 x half> %evec
2125 define <vscale x 1 x float> @vsitofp_nxv1i32_nxv1f32(<vscale x 1 x i32> %va) {
2126 ; CHECK-LABEL: vsitofp_nxv1i32_nxv1f32:
2128 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
2129 ; CHECK-NEXT: vfcvt.f.x.v v8, v8
2131 %evec = sitofp <vscale x 1 x i32> %va to <vscale x 1 x float>
2132 ret <vscale x 1 x float> %evec
2135 define <vscale x 1 x float> @vuitofp_nxv1i32_nxv1f32(<vscale x 1 x i32> %va) {
2136 ; CHECK-LABEL: vuitofp_nxv1i32_nxv1f32:
2138 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
2139 ; CHECK-NEXT: vfcvt.f.xu.v v8, v8
2141 %evec = uitofp <vscale x 1 x i32> %va to <vscale x 1 x float>
2142 ret <vscale x 1 x float> %evec
2145 define <vscale x 1 x double> @vsitofp_nxv1i32_nxv1f64(<vscale x 1 x i32> %va) {
2146 ; CHECK-LABEL: vsitofp_nxv1i32_nxv1f64:
2148 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
2149 ; CHECK-NEXT: vfwcvt.f.x.v v9, v8
2150 ; CHECK-NEXT: vmv1r.v v8, v9
2152 %evec = sitofp <vscale x 1 x i32> %va to <vscale x 1 x double>
2153 ret <vscale x 1 x double> %evec
2156 define <vscale x 1 x double> @vuitofp_nxv1i32_nxv1f64(<vscale x 1 x i32> %va) {
2157 ; CHECK-LABEL: vuitofp_nxv1i32_nxv1f64:
2159 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
2160 ; CHECK-NEXT: vfwcvt.f.xu.v v9, v8
2161 ; CHECK-NEXT: vmv1r.v v8, v9
2163 %evec = uitofp <vscale x 1 x i32> %va to <vscale x 1 x double>
2164 ret <vscale x 1 x double> %evec
2167 define <vscale x 2 x half> @vsitofp_nxv2i32_nxv2f16(<vscale x 2 x i32> %va) {
2168 ; ZVFH-LABEL: vsitofp_nxv2i32_nxv2f16:
2170 ; ZVFH-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
2171 ; ZVFH-NEXT: vfncvt.f.x.w v9, v8
2172 ; ZVFH-NEXT: vmv1r.v v8, v9
2175 ; ZVFHMIN-LABEL: vsitofp_nxv2i32_nxv2f16:
2177 ; ZVFHMIN-NEXT: vsetvli a0, zero, e32, m1, ta, ma
2178 ; ZVFHMIN-NEXT: vfcvt.f.x.v v9, v8
2179 ; ZVFHMIN-NEXT: vsetvli zero, zero, e16, mf2, ta, ma
2180 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v9
2182 %evec = sitofp <vscale x 2 x i32> %va to <vscale x 2 x half>
2183 ret <vscale x 2 x half> %evec
2186 define <vscale x 2 x half> @vuitofp_nxv2i32_nxv2f16(<vscale x 2 x i32> %va) {
2187 ; ZVFH-LABEL: vuitofp_nxv2i32_nxv2f16:
2189 ; ZVFH-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
2190 ; ZVFH-NEXT: vfncvt.f.xu.w v9, v8
2191 ; ZVFH-NEXT: vmv1r.v v8, v9
2194 ; ZVFHMIN-LABEL: vuitofp_nxv2i32_nxv2f16:
2196 ; ZVFHMIN-NEXT: vsetvli a0, zero, e32, m1, ta, ma
2197 ; ZVFHMIN-NEXT: vfcvt.f.xu.v v9, v8
2198 ; ZVFHMIN-NEXT: vsetvli zero, zero, e16, mf2, ta, ma
2199 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v9
2201 %evec = uitofp <vscale x 2 x i32> %va to <vscale x 2 x half>
2202 ret <vscale x 2 x half> %evec
2205 define <vscale x 2 x float> @vsitofp_nxv2i32_nxv2f32(<vscale x 2 x i32> %va) {
2206 ; CHECK-LABEL: vsitofp_nxv2i32_nxv2f32:
2208 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
2209 ; CHECK-NEXT: vfcvt.f.x.v v8, v8
2211 %evec = sitofp <vscale x 2 x i32> %va to <vscale x 2 x float>
2212 ret <vscale x 2 x float> %evec
2215 define <vscale x 2 x float> @vuitofp_nxv2i32_nxv2f32(<vscale x 2 x i32> %va) {
2216 ; CHECK-LABEL: vuitofp_nxv2i32_nxv2f32:
2218 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
2219 ; CHECK-NEXT: vfcvt.f.xu.v v8, v8
2221 %evec = uitofp <vscale x 2 x i32> %va to <vscale x 2 x float>
2222 ret <vscale x 2 x float> %evec
2225 define <vscale x 2 x double> @vsitofp_nxv2i32_nxv2f64(<vscale x 2 x i32> %va) {
2226 ; CHECK-LABEL: vsitofp_nxv2i32_nxv2f64:
2228 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
2229 ; CHECK-NEXT: vfwcvt.f.x.v v10, v8
2230 ; CHECK-NEXT: vmv2r.v v8, v10
2232 %evec = sitofp <vscale x 2 x i32> %va to <vscale x 2 x double>
2233 ret <vscale x 2 x double> %evec
2236 define <vscale x 2 x double> @vuitofp_nxv2i32_nxv2f64(<vscale x 2 x i32> %va) {
2237 ; CHECK-LABEL: vuitofp_nxv2i32_nxv2f64:
2239 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
2240 ; CHECK-NEXT: vfwcvt.f.xu.v v10, v8
2241 ; CHECK-NEXT: vmv2r.v v8, v10
2243 %evec = uitofp <vscale x 2 x i32> %va to <vscale x 2 x double>
2244 ret <vscale x 2 x double> %evec
2247 define <vscale x 4 x half> @vsitofp_nxv4i32_nxv4f16(<vscale x 4 x i32> %va) {
2248 ; ZVFH-LABEL: vsitofp_nxv4i32_nxv4f16:
2250 ; ZVFH-NEXT: vsetvli a0, zero, e16, m1, ta, ma
2251 ; ZVFH-NEXT: vfncvt.f.x.w v10, v8
2252 ; ZVFH-NEXT: vmv.v.v v8, v10
2255 ; ZVFHMIN-LABEL: vsitofp_nxv4i32_nxv4f16:
2257 ; ZVFHMIN-NEXT: vsetvli a0, zero, e32, m2, ta, ma
2258 ; ZVFHMIN-NEXT: vfcvt.f.x.v v10, v8
2259 ; ZVFHMIN-NEXT: vsetvli zero, zero, e16, m1, ta, ma
2260 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v10
2262 %evec = sitofp <vscale x 4 x i32> %va to <vscale x 4 x half>
2263 ret <vscale x 4 x half> %evec
2266 define <vscale x 4 x half> @vuitofp_nxv4i32_nxv4f16(<vscale x 4 x i32> %va) {
2267 ; ZVFH-LABEL: vuitofp_nxv4i32_nxv4f16:
2269 ; ZVFH-NEXT: vsetvli a0, zero, e16, m1, ta, ma
2270 ; ZVFH-NEXT: vfncvt.f.xu.w v10, v8
2271 ; ZVFH-NEXT: vmv.v.v v8, v10
2274 ; ZVFHMIN-LABEL: vuitofp_nxv4i32_nxv4f16:
2276 ; ZVFHMIN-NEXT: vsetvli a0, zero, e32, m2, ta, ma
2277 ; ZVFHMIN-NEXT: vfcvt.f.xu.v v10, v8
2278 ; ZVFHMIN-NEXT: vsetvli zero, zero, e16, m1, ta, ma
2279 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v10
2281 %evec = uitofp <vscale x 4 x i32> %va to <vscale x 4 x half>
2282 ret <vscale x 4 x half> %evec
2285 define <vscale x 4 x float> @vsitofp_nxv4i32_nxv4f32(<vscale x 4 x i32> %va) {
2286 ; CHECK-LABEL: vsitofp_nxv4i32_nxv4f32:
2288 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
2289 ; CHECK-NEXT: vfcvt.f.x.v v8, v8
2291 %evec = sitofp <vscale x 4 x i32> %va to <vscale x 4 x float>
2292 ret <vscale x 4 x float> %evec
2295 define <vscale x 4 x float> @vuitofp_nxv4i32_nxv4f32(<vscale x 4 x i32> %va) {
2296 ; CHECK-LABEL: vuitofp_nxv4i32_nxv4f32:
2298 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
2299 ; CHECK-NEXT: vfcvt.f.xu.v v8, v8
2301 %evec = uitofp <vscale x 4 x i32> %va to <vscale x 4 x float>
2302 ret <vscale x 4 x float> %evec
2305 define <vscale x 4 x double> @vsitofp_nxv4i32_nxv4f64(<vscale x 4 x i32> %va) {
2306 ; CHECK-LABEL: vsitofp_nxv4i32_nxv4f64:
2308 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
2309 ; CHECK-NEXT: vfwcvt.f.x.v v12, v8
2310 ; CHECK-NEXT: vmv4r.v v8, v12
2312 %evec = sitofp <vscale x 4 x i32> %va to <vscale x 4 x double>
2313 ret <vscale x 4 x double> %evec
2316 define <vscale x 4 x double> @vuitofp_nxv4i32_nxv4f64(<vscale x 4 x i32> %va) {
2317 ; CHECK-LABEL: vuitofp_nxv4i32_nxv4f64:
2319 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
2320 ; CHECK-NEXT: vfwcvt.f.xu.v v12, v8
2321 ; CHECK-NEXT: vmv4r.v v8, v12
2323 %evec = uitofp <vscale x 4 x i32> %va to <vscale x 4 x double>
2324 ret <vscale x 4 x double> %evec
2327 define <vscale x 8 x half> @vsitofp_nxv8i32_nxv8f16(<vscale x 8 x i32> %va) {
2328 ; ZVFH-LABEL: vsitofp_nxv8i32_nxv8f16:
2330 ; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma
2331 ; ZVFH-NEXT: vfncvt.f.x.w v12, v8
2332 ; ZVFH-NEXT: vmv.v.v v8, v12
2335 ; ZVFHMIN-LABEL: vsitofp_nxv8i32_nxv8f16:
2337 ; ZVFHMIN-NEXT: vsetvli a0, zero, e32, m4, ta, ma
2338 ; ZVFHMIN-NEXT: vfcvt.f.x.v v12, v8
2339 ; ZVFHMIN-NEXT: vsetvli zero, zero, e16, m2, ta, ma
2340 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v12
2342 %evec = sitofp <vscale x 8 x i32> %va to <vscale x 8 x half>
2343 ret <vscale x 8 x half> %evec
2346 define <vscale x 8 x half> @vuitofp_nxv8i32_nxv8f16(<vscale x 8 x i32> %va) {
2347 ; ZVFH-LABEL: vuitofp_nxv8i32_nxv8f16:
2349 ; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma
2350 ; ZVFH-NEXT: vfncvt.f.xu.w v12, v8
2351 ; ZVFH-NEXT: vmv.v.v v8, v12
2354 ; ZVFHMIN-LABEL: vuitofp_nxv8i32_nxv8f16:
2356 ; ZVFHMIN-NEXT: vsetvli a0, zero, e32, m4, ta, ma
2357 ; ZVFHMIN-NEXT: vfcvt.f.xu.v v12, v8
2358 ; ZVFHMIN-NEXT: vsetvli zero, zero, e16, m2, ta, ma
2359 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v12
2361 %evec = uitofp <vscale x 8 x i32> %va to <vscale x 8 x half>
2362 ret <vscale x 8 x half> %evec
2365 define <vscale x 8 x float> @vsitofp_nxv8i32_nxv8f32(<vscale x 8 x i32> %va) {
2366 ; CHECK-LABEL: vsitofp_nxv8i32_nxv8f32:
2368 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
2369 ; CHECK-NEXT: vfcvt.f.x.v v8, v8
2371 %evec = sitofp <vscale x 8 x i32> %va to <vscale x 8 x float>
2372 ret <vscale x 8 x float> %evec
2375 define <vscale x 8 x float> @vuitofp_nxv8i32_nxv8f32(<vscale x 8 x i32> %va) {
2376 ; CHECK-LABEL: vuitofp_nxv8i32_nxv8f32:
2378 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
2379 ; CHECK-NEXT: vfcvt.f.xu.v v8, v8
2381 %evec = uitofp <vscale x 8 x i32> %va to <vscale x 8 x float>
2382 ret <vscale x 8 x float> %evec
2385 define <vscale x 8 x double> @vsitofp_nxv8i32_nxv8f64(<vscale x 8 x i32> %va) {
2386 ; CHECK-LABEL: vsitofp_nxv8i32_nxv8f64:
2388 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
2389 ; CHECK-NEXT: vfwcvt.f.x.v v16, v8
2390 ; CHECK-NEXT: vmv8r.v v8, v16
2392 %evec = sitofp <vscale x 8 x i32> %va to <vscale x 8 x double>
2393 ret <vscale x 8 x double> %evec
2396 define <vscale x 8 x double> @vuitofp_nxv8i32_nxv8f64(<vscale x 8 x i32> %va) {
2397 ; CHECK-LABEL: vuitofp_nxv8i32_nxv8f64:
2399 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
2400 ; CHECK-NEXT: vfwcvt.f.xu.v v16, v8
2401 ; CHECK-NEXT: vmv8r.v v8, v16
2403 %evec = uitofp <vscale x 8 x i32> %va to <vscale x 8 x double>
2404 ret <vscale x 8 x double> %evec
2407 define <vscale x 16 x half> @vsitofp_nxv16i32_nxv16f16(<vscale x 16 x i32> %va) {
2408 ; ZVFH-LABEL: vsitofp_nxv16i32_nxv16f16:
2410 ; ZVFH-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2411 ; ZVFH-NEXT: vfncvt.f.x.w v16, v8
2412 ; ZVFH-NEXT: vmv.v.v v8, v16
2415 ; ZVFHMIN-LABEL: vsitofp_nxv16i32_nxv16f16:
2417 ; ZVFHMIN-NEXT: vsetvli a0, zero, e32, m8, ta, ma
2418 ; ZVFHMIN-NEXT: vfcvt.f.x.v v16, v8
2419 ; ZVFHMIN-NEXT: vsetvli zero, zero, e16, m4, ta, ma
2420 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v16
2422 %evec = sitofp <vscale x 16 x i32> %va to <vscale x 16 x half>
2423 ret <vscale x 16 x half> %evec
2426 define <vscale x 16 x half> @vuitofp_nxv16i32_nxv16f16(<vscale x 16 x i32> %va) {
2427 ; ZVFH-LABEL: vuitofp_nxv16i32_nxv16f16:
2429 ; ZVFH-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2430 ; ZVFH-NEXT: vfncvt.f.xu.w v16, v8
2431 ; ZVFH-NEXT: vmv.v.v v8, v16
2434 ; ZVFHMIN-LABEL: vuitofp_nxv16i32_nxv16f16:
2436 ; ZVFHMIN-NEXT: vsetvli a0, zero, e32, m8, ta, ma
2437 ; ZVFHMIN-NEXT: vfcvt.f.xu.v v16, v8
2438 ; ZVFHMIN-NEXT: vsetvli zero, zero, e16, m4, ta, ma
2439 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v16
2441 %evec = uitofp <vscale x 16 x i32> %va to <vscale x 16 x half>
2442 ret <vscale x 16 x half> %evec
2445 define <vscale x 16 x float> @vsitofp_nxv16i32_nxv16f32(<vscale x 16 x i32> %va) {
2446 ; CHECK-LABEL: vsitofp_nxv16i32_nxv16f32:
2448 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
2449 ; CHECK-NEXT: vfcvt.f.x.v v8, v8
2451 %evec = sitofp <vscale x 16 x i32> %va to <vscale x 16 x float>
2452 ret <vscale x 16 x float> %evec
2455 define <vscale x 16 x float> @vuitofp_nxv16i32_nxv16f32(<vscale x 16 x i32> %va) {
2456 ; CHECK-LABEL: vuitofp_nxv16i32_nxv16f32:
2458 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
2459 ; CHECK-NEXT: vfcvt.f.xu.v v8, v8
2461 %evec = uitofp <vscale x 16 x i32> %va to <vscale x 16 x float>
2462 ret <vscale x 16 x float> %evec
2465 define <vscale x 1 x half> @vsitofp_nxv1i64_nxv1f16(<vscale x 1 x i64> %va) {
2466 ; CHECK-LABEL: vsitofp_nxv1i64_nxv1f16:
2468 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
2469 ; CHECK-NEXT: vfncvt.f.x.w v9, v8
2470 ; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, ma
2471 ; CHECK-NEXT: vfncvt.f.f.w v8, v9
2473 %evec = sitofp <vscale x 1 x i64> %va to <vscale x 1 x half>
2474 ret <vscale x 1 x half> %evec
2477 define <vscale x 1 x half> @vuitofp_nxv1i64_nxv1f16(<vscale x 1 x i64> %va) {
2478 ; CHECK-LABEL: vuitofp_nxv1i64_nxv1f16:
2480 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
2481 ; CHECK-NEXT: vfncvt.f.xu.w v9, v8
2482 ; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, ma
2483 ; CHECK-NEXT: vfncvt.f.f.w v8, v9
2485 %evec = uitofp <vscale x 1 x i64> %va to <vscale x 1 x half>
2486 ret <vscale x 1 x half> %evec
2489 define <vscale x 1 x float> @vsitofp_nxv1i64_nxv1f32(<vscale x 1 x i64> %va) {
2490 ; CHECK-LABEL: vsitofp_nxv1i64_nxv1f32:
2492 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
2493 ; CHECK-NEXT: vfncvt.f.x.w v9, v8
2494 ; CHECK-NEXT: vmv1r.v v8, v9
2496 %evec = sitofp <vscale x 1 x i64> %va to <vscale x 1 x float>
2497 ret <vscale x 1 x float> %evec
2500 define <vscale x 1 x float> @vuitofp_nxv1i64_nxv1f32(<vscale x 1 x i64> %va) {
2501 ; CHECK-LABEL: vuitofp_nxv1i64_nxv1f32:
2503 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
2504 ; CHECK-NEXT: vfncvt.f.xu.w v9, v8
2505 ; CHECK-NEXT: vmv1r.v v8, v9
2507 %evec = uitofp <vscale x 1 x i64> %va to <vscale x 1 x float>
2508 ret <vscale x 1 x float> %evec
2511 define <vscale x 1 x double> @vsitofp_nxv1i64_nxv1f64(<vscale x 1 x i64> %va) {
2512 ; CHECK-LABEL: vsitofp_nxv1i64_nxv1f64:
2514 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
2515 ; CHECK-NEXT: vfcvt.f.x.v v8, v8
2517 %evec = sitofp <vscale x 1 x i64> %va to <vscale x 1 x double>
2518 ret <vscale x 1 x double> %evec
2521 define <vscale x 1 x double> @vuitofp_nxv1i64_nxv1f64(<vscale x 1 x i64> %va) {
2522 ; CHECK-LABEL: vuitofp_nxv1i64_nxv1f64:
2524 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
2525 ; CHECK-NEXT: vfcvt.f.xu.v v8, v8
2527 %evec = uitofp <vscale x 1 x i64> %va to <vscale x 1 x double>
2528 ret <vscale x 1 x double> %evec
2531 define <vscale x 2 x half> @vsitofp_nxv2i64_nxv2f16(<vscale x 2 x i64> %va) {
2532 ; CHECK-LABEL: vsitofp_nxv2i64_nxv2f16:
2534 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
2535 ; CHECK-NEXT: vfncvt.f.x.w v10, v8
2536 ; CHECK-NEXT: vsetvli zero, zero, e16, mf2, ta, ma
2537 ; CHECK-NEXT: vfncvt.f.f.w v8, v10
2539 %evec = sitofp <vscale x 2 x i64> %va to <vscale x 2 x half>
2540 ret <vscale x 2 x half> %evec
2543 define <vscale x 2 x half> @vuitofp_nxv2i64_nxv2f16(<vscale x 2 x i64> %va) {
2544 ; CHECK-LABEL: vuitofp_nxv2i64_nxv2f16:
2546 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
2547 ; CHECK-NEXT: vfncvt.f.xu.w v10, v8
2548 ; CHECK-NEXT: vsetvli zero, zero, e16, mf2, ta, ma
2549 ; CHECK-NEXT: vfncvt.f.f.w v8, v10
2551 %evec = uitofp <vscale x 2 x i64> %va to <vscale x 2 x half>
2552 ret <vscale x 2 x half> %evec
2555 define <vscale x 2 x float> @vsitofp_nxv2i64_nxv2f32(<vscale x 2 x i64> %va) {
2556 ; CHECK-LABEL: vsitofp_nxv2i64_nxv2f32:
2558 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
2559 ; CHECK-NEXT: vfncvt.f.x.w v10, v8
2560 ; CHECK-NEXT: vmv.v.v v8, v10
2562 %evec = sitofp <vscale x 2 x i64> %va to <vscale x 2 x float>
2563 ret <vscale x 2 x float> %evec
2566 define <vscale x 2 x float> @vuitofp_nxv2i64_nxv2f32(<vscale x 2 x i64> %va) {
2567 ; CHECK-LABEL: vuitofp_nxv2i64_nxv2f32:
2569 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
2570 ; CHECK-NEXT: vfncvt.f.xu.w v10, v8
2571 ; CHECK-NEXT: vmv.v.v v8, v10
2573 %evec = uitofp <vscale x 2 x i64> %va to <vscale x 2 x float>
2574 ret <vscale x 2 x float> %evec
2577 define <vscale x 2 x double> @vsitofp_nxv2i64_nxv2f64(<vscale x 2 x i64> %va) {
2578 ; CHECK-LABEL: vsitofp_nxv2i64_nxv2f64:
2580 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
2581 ; CHECK-NEXT: vfcvt.f.x.v v8, v8
2583 %evec = sitofp <vscale x 2 x i64> %va to <vscale x 2 x double>
2584 ret <vscale x 2 x double> %evec
2587 define <vscale x 2 x double> @vuitofp_nxv2i64_nxv2f64(<vscale x 2 x i64> %va) {
2588 ; CHECK-LABEL: vuitofp_nxv2i64_nxv2f64:
2590 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
2591 ; CHECK-NEXT: vfcvt.f.xu.v v8, v8
2593 %evec = uitofp <vscale x 2 x i64> %va to <vscale x 2 x double>
2594 ret <vscale x 2 x double> %evec
2597 define <vscale x 4 x half> @vsitofp_nxv4i64_nxv4f16(<vscale x 4 x i64> %va) {
2598 ; CHECK-LABEL: vsitofp_nxv4i64_nxv4f16:
2600 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
2601 ; CHECK-NEXT: vfncvt.f.x.w v12, v8
2602 ; CHECK-NEXT: vsetvli zero, zero, e16, m1, ta, ma
2603 ; CHECK-NEXT: vfncvt.f.f.w v8, v12
2605 %evec = sitofp <vscale x 4 x i64> %va to <vscale x 4 x half>
2606 ret <vscale x 4 x half> %evec
2609 define <vscale x 4 x half> @vuitofp_nxv4i64_nxv4f16(<vscale x 4 x i64> %va) {
2610 ; CHECK-LABEL: vuitofp_nxv4i64_nxv4f16:
2612 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
2613 ; CHECK-NEXT: vfncvt.f.xu.w v12, v8
2614 ; CHECK-NEXT: vsetvli zero, zero, e16, m1, ta, ma
2615 ; CHECK-NEXT: vfncvt.f.f.w v8, v12
2617 %evec = uitofp <vscale x 4 x i64> %va to <vscale x 4 x half>
2618 ret <vscale x 4 x half> %evec
2621 define <vscale x 4 x float> @vsitofp_nxv4i64_nxv4f32(<vscale x 4 x i64> %va) {
2622 ; CHECK-LABEL: vsitofp_nxv4i64_nxv4f32:
2624 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
2625 ; CHECK-NEXT: vfncvt.f.x.w v12, v8
2626 ; CHECK-NEXT: vmv.v.v v8, v12
2628 %evec = sitofp <vscale x 4 x i64> %va to <vscale x 4 x float>
2629 ret <vscale x 4 x float> %evec
2632 define <vscale x 4 x float> @vuitofp_nxv4i64_nxv4f32(<vscale x 4 x i64> %va) {
2633 ; CHECK-LABEL: vuitofp_nxv4i64_nxv4f32:
2635 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
2636 ; CHECK-NEXT: vfncvt.f.xu.w v12, v8
2637 ; CHECK-NEXT: vmv.v.v v8, v12
2639 %evec = uitofp <vscale x 4 x i64> %va to <vscale x 4 x float>
2640 ret <vscale x 4 x float> %evec
2643 define <vscale x 4 x double> @vsitofp_nxv4i64_nxv4f64(<vscale x 4 x i64> %va) {
2644 ; CHECK-LABEL: vsitofp_nxv4i64_nxv4f64:
2646 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
2647 ; CHECK-NEXT: vfcvt.f.x.v v8, v8
2649 %evec = sitofp <vscale x 4 x i64> %va to <vscale x 4 x double>
2650 ret <vscale x 4 x double> %evec
2653 define <vscale x 4 x double> @vuitofp_nxv4i64_nxv4f64(<vscale x 4 x i64> %va) {
2654 ; CHECK-LABEL: vuitofp_nxv4i64_nxv4f64:
2656 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
2657 ; CHECK-NEXT: vfcvt.f.xu.v v8, v8
2659 %evec = uitofp <vscale x 4 x i64> %va to <vscale x 4 x double>
2660 ret <vscale x 4 x double> %evec
2663 define <vscale x 8 x half> @vsitofp_nxv8i64_nxv8f16(<vscale x 8 x i64> %va) {
2664 ; CHECK-LABEL: vsitofp_nxv8i64_nxv8f16:
2666 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
2667 ; CHECK-NEXT: vfncvt.f.x.w v16, v8
2668 ; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma
2669 ; CHECK-NEXT: vfncvt.f.f.w v8, v16
2671 %evec = sitofp <vscale x 8 x i64> %va to <vscale x 8 x half>
2672 ret <vscale x 8 x half> %evec
2675 define <vscale x 8 x half> @vuitofp_nxv8i64_nxv8f16(<vscale x 8 x i64> %va) {
2676 ; CHECK-LABEL: vuitofp_nxv8i64_nxv8f16:
2678 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
2679 ; CHECK-NEXT: vfncvt.f.xu.w v16, v8
2680 ; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma
2681 ; CHECK-NEXT: vfncvt.f.f.w v8, v16
2683 %evec = uitofp <vscale x 8 x i64> %va to <vscale x 8 x half>
2684 ret <vscale x 8 x half> %evec
2687 define <vscale x 8 x float> @vsitofp_nxv8i64_nxv8f32(<vscale x 8 x i64> %va) {
2688 ; CHECK-LABEL: vsitofp_nxv8i64_nxv8f32:
2690 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
2691 ; CHECK-NEXT: vfncvt.f.x.w v16, v8
2692 ; CHECK-NEXT: vmv.v.v v8, v16
2694 %evec = sitofp <vscale x 8 x i64> %va to <vscale x 8 x float>
2695 ret <vscale x 8 x float> %evec
2698 define <vscale x 8 x float> @vuitofp_nxv8i64_nxv8f32(<vscale x 8 x i64> %va) {
2699 ; CHECK-LABEL: vuitofp_nxv8i64_nxv8f32:
2701 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
2702 ; CHECK-NEXT: vfncvt.f.xu.w v16, v8
2703 ; CHECK-NEXT: vmv.v.v v8, v16
2705 %evec = uitofp <vscale x 8 x i64> %va to <vscale x 8 x float>
2706 ret <vscale x 8 x float> %evec
2709 define <vscale x 8 x double> @vsitofp_nxv8i64_nxv8f64(<vscale x 8 x i64> %va) {
2710 ; CHECK-LABEL: vsitofp_nxv8i64_nxv8f64:
2712 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
2713 ; CHECK-NEXT: vfcvt.f.x.v v8, v8
2715 %evec = sitofp <vscale x 8 x i64> %va to <vscale x 8 x double>
2716 ret <vscale x 8 x double> %evec
2719 define <vscale x 8 x double> @vuitofp_nxv8i64_nxv8f64(<vscale x 8 x i64> %va) {
2720 ; CHECK-LABEL: vuitofp_nxv8i64_nxv8f64:
2722 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
2723 ; CHECK-NEXT: vfcvt.f.xu.v v8, v8
2725 %evec = uitofp <vscale x 8 x i64> %va to <vscale x 8 x double>
2726 ret <vscale x 8 x double> %evec