1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+m,+v,+zfh,+zvfh < %s | FileCheck %s \
3 ; RUN: --check-prefixes=CHECK,ZVFH
4 ; RUN: llc -mtriple=riscv64 -mattr=+m,+v,+zfh,+zvfh < %s | FileCheck %s \
5 ; RUN: --check-prefixes=CHECK,ZVFH
6 ; RUN: llc -mtriple=riscv32 -mattr=+m,+v,+zfh,+zvfhmin < %s | FileCheck %s \
7 ; RUN: --check-prefixes=CHECK,ZVFHMIN
8 ; RUN: llc -mtriple=riscv64 -mattr=+m,+v,+zfh,+zvfhmin < %s | FileCheck %s \
9 ; RUN: --check-prefixes=CHECK,ZVFHMIN
11 declare <4 x half> @llvm.vp.sitofp.v4f16.v4i7(<4 x i7>, <4 x i1>, i32)
13 define <4 x half> @vsitofp_v4f16_v4i7(<4 x i7> %va, <4 x i1> %m, i32 zeroext %evl) {
14 ; ZVFH-LABEL: vsitofp_v4f16_v4i7:
16 ; ZVFH-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
17 ; ZVFH-NEXT: vadd.vv v8, v8, v8
18 ; ZVFH-NEXT: vsra.vi v9, v8, 1
19 ; ZVFH-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
20 ; ZVFH-NEXT: vfwcvt.f.x.v v8, v9, v0.t
23 ; ZVFHMIN-LABEL: vsitofp_v4f16_v4i7:
25 ; ZVFHMIN-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
26 ; ZVFHMIN-NEXT: vadd.vv v8, v8, v8
27 ; ZVFHMIN-NEXT: vsra.vi v8, v8, 1
28 ; ZVFHMIN-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
29 ; ZVFHMIN-NEXT: vsext.vf2 v9, v8, v0.t
30 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v10, v9, v0.t
31 ; ZVFHMIN-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
32 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v10
34 %v = call <4 x half> @llvm.vp.sitofp.v4f16.v4i7(<4 x i7> %va, <4 x i1> %m, i32 %evl)
38 declare <4 x half> @llvm.vp.sitofp.v4f16.v4i8(<4 x i8>, <4 x i1>, i32)
40 define <4 x half> @vsitofp_v4f16_v4i8(<4 x i8> %va, <4 x i1> %m, i32 zeroext %evl) {
41 ; ZVFH-LABEL: vsitofp_v4f16_v4i8:
43 ; ZVFH-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
44 ; ZVFH-NEXT: vfwcvt.f.x.v v9, v8, v0.t
45 ; ZVFH-NEXT: vmv1r.v v8, v9
48 ; ZVFHMIN-LABEL: vsitofp_v4f16_v4i8:
50 ; ZVFHMIN-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
51 ; ZVFHMIN-NEXT: vsext.vf2 v9, v8, v0.t
52 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v10, v9, v0.t
53 ; ZVFHMIN-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
54 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v10
56 %v = call <4 x half> @llvm.vp.sitofp.v4f16.v4i8(<4 x i8> %va, <4 x i1> %m, i32 %evl)
60 define <4 x half> @vsitofp_v4f16_v4i8_unmasked(<4 x i8> %va, i32 zeroext %evl) {
61 ; ZVFH-LABEL: vsitofp_v4f16_v4i8_unmasked:
63 ; ZVFH-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
64 ; ZVFH-NEXT: vfwcvt.f.x.v v9, v8
65 ; ZVFH-NEXT: vmv1r.v v8, v9
68 ; ZVFHMIN-LABEL: vsitofp_v4f16_v4i8_unmasked:
70 ; ZVFHMIN-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
71 ; ZVFHMIN-NEXT: vsext.vf2 v9, v8
72 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v10, v9
73 ; ZVFHMIN-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
74 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v10
76 %v = call <4 x half> @llvm.vp.sitofp.v4f16.v4i8(<4 x i8> %va, <4 x i1> splat (i1 true), i32 %evl)
80 declare <4 x half> @llvm.vp.sitofp.v4f16.v4i16(<4 x i16>, <4 x i1>, i32)
82 define <4 x half> @vsitofp_v4f16_v4i16(<4 x i16> %va, <4 x i1> %m, i32 zeroext %evl) {
83 ; ZVFH-LABEL: vsitofp_v4f16_v4i16:
85 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
86 ; ZVFH-NEXT: vfcvt.f.x.v v8, v8, v0.t
89 ; ZVFHMIN-LABEL: vsitofp_v4f16_v4i16:
91 ; ZVFHMIN-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
92 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v9, v8, v0.t
93 ; ZVFHMIN-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
94 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v9
96 %v = call <4 x half> @llvm.vp.sitofp.v4f16.v4i16(<4 x i16> %va, <4 x i1> %m, i32 %evl)
100 define <4 x half> @vsitofp_v4f16_v4i16_unmasked(<4 x i16> %va, i32 zeroext %evl) {
101 ; ZVFH-LABEL: vsitofp_v4f16_v4i16_unmasked:
103 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
104 ; ZVFH-NEXT: vfcvt.f.x.v v8, v8
107 ; ZVFHMIN-LABEL: vsitofp_v4f16_v4i16_unmasked:
109 ; ZVFHMIN-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
110 ; ZVFHMIN-NEXT: vfwcvt.f.x.v v9, v8
111 ; ZVFHMIN-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
112 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v9
114 %v = call <4 x half> @llvm.vp.sitofp.v4f16.v4i16(<4 x i16> %va, <4 x i1> splat (i1 true), i32 %evl)
118 declare <4 x half> @llvm.vp.sitofp.v4f16.v4i32(<4 x i32>, <4 x i1>, i32)
120 define <4 x half> @vsitofp_v4f16_v4i32(<4 x i32> %va, <4 x i1> %m, i32 zeroext %evl) {
121 ; ZVFH-LABEL: vsitofp_v4f16_v4i32:
123 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
124 ; ZVFH-NEXT: vfncvt.f.x.w v9, v8, v0.t
125 ; ZVFH-NEXT: vmv1r.v v8, v9
128 ; ZVFHMIN-LABEL: vsitofp_v4f16_v4i32:
130 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m1, ta, ma
131 ; ZVFHMIN-NEXT: vfcvt.f.x.v v9, v8, v0.t
132 ; ZVFHMIN-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
133 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v9
135 %v = call <4 x half> @llvm.vp.sitofp.v4f16.v4i32(<4 x i32> %va, <4 x i1> %m, i32 %evl)
139 define <4 x half> @vsitofp_v4f16_v4i32_unmasked(<4 x i32> %va, i32 zeroext %evl) {
140 ; ZVFH-LABEL: vsitofp_v4f16_v4i32_unmasked:
142 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
143 ; ZVFH-NEXT: vfncvt.f.x.w v9, v8
144 ; ZVFH-NEXT: vmv1r.v v8, v9
147 ; ZVFHMIN-LABEL: vsitofp_v4f16_v4i32_unmasked:
149 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m1, ta, ma
150 ; ZVFHMIN-NEXT: vfcvt.f.x.v v9, v8
151 ; ZVFHMIN-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
152 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v9
154 %v = call <4 x half> @llvm.vp.sitofp.v4f16.v4i32(<4 x i32> %va, <4 x i1> splat (i1 true), i32 %evl)
158 declare <4 x half> @llvm.vp.sitofp.v4f16.v4i64(<4 x i64>, <4 x i1>, i32)
160 define <4 x half> @vsitofp_v4f16_v4i64(<4 x i64> %va, <4 x i1> %m, i32 zeroext %evl) {
161 ; ZVFH-LABEL: vsitofp_v4f16_v4i64:
163 ; ZVFH-NEXT: vsetvli zero, a0, e32, m1, ta, ma
164 ; ZVFH-NEXT: vfncvt.f.x.w v10, v8, v0.t
165 ; ZVFH-NEXT: vsetvli zero, zero, e16, mf2, ta, ma
166 ; ZVFH-NEXT: vfncvt.f.f.w v8, v10, v0.t
169 ; ZVFHMIN-LABEL: vsitofp_v4f16_v4i64:
171 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m1, ta, ma
172 ; ZVFHMIN-NEXT: vfncvt.f.x.w v10, v8, v0.t
173 ; ZVFHMIN-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
174 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v10
176 %v = call <4 x half> @llvm.vp.sitofp.v4f16.v4i64(<4 x i64> %va, <4 x i1> %m, i32 %evl)
180 define <4 x half> @vsitofp_v4f16_v4i64_unmasked(<4 x i64> %va, i32 zeroext %evl) {
181 ; ZVFH-LABEL: vsitofp_v4f16_v4i64_unmasked:
183 ; ZVFH-NEXT: vsetvli zero, a0, e32, m1, ta, ma
184 ; ZVFH-NEXT: vfncvt.f.x.w v10, v8
185 ; ZVFH-NEXT: vsetvli zero, zero, e16, mf2, ta, ma
186 ; ZVFH-NEXT: vfncvt.f.f.w v8, v10
189 ; ZVFHMIN-LABEL: vsitofp_v4f16_v4i64_unmasked:
191 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m1, ta, ma
192 ; ZVFHMIN-NEXT: vfncvt.f.x.w v10, v8
193 ; ZVFHMIN-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
194 ; ZVFHMIN-NEXT: vfncvt.f.f.w v8, v10
196 %v = call <4 x half> @llvm.vp.sitofp.v4f16.v4i64(<4 x i64> %va, <4 x i1> splat (i1 true), i32 %evl)
200 declare <4 x float> @llvm.vp.sitofp.v4f32.v4i8(<4 x i8>, <4 x i1>, i32)
202 define <4 x float> @vsitofp_v4f32_v4i8(<4 x i8> %va, <4 x i1> %m, i32 zeroext %evl) {
203 ; CHECK-LABEL: vsitofp_v4f32_v4i8:
205 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
206 ; CHECK-NEXT: vsext.vf2 v9, v8, v0.t
207 ; CHECK-NEXT: vfwcvt.f.x.v v8, v9, v0.t
209 %v = call <4 x float> @llvm.vp.sitofp.v4f32.v4i8(<4 x i8> %va, <4 x i1> %m, i32 %evl)
213 define <4 x float> @vsitofp_v4f32_v4i8_unmasked(<4 x i8> %va, i32 zeroext %evl) {
214 ; CHECK-LABEL: vsitofp_v4f32_v4i8_unmasked:
216 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
217 ; CHECK-NEXT: vsext.vf2 v9, v8
218 ; CHECK-NEXT: vfwcvt.f.x.v v8, v9
220 %v = call <4 x float> @llvm.vp.sitofp.v4f32.v4i8(<4 x i8> %va, <4 x i1> splat (i1 true), i32 %evl)
224 declare <4 x float> @llvm.vp.sitofp.v4f32.v4i16(<4 x i16>, <4 x i1>, i32)
226 define <4 x float> @vsitofp_v4f32_v4i16(<4 x i16> %va, <4 x i1> %m, i32 zeroext %evl) {
227 ; CHECK-LABEL: vsitofp_v4f32_v4i16:
229 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
230 ; CHECK-NEXT: vfwcvt.f.x.v v9, v8, v0.t
231 ; CHECK-NEXT: vmv1r.v v8, v9
233 %v = call <4 x float> @llvm.vp.sitofp.v4f32.v4i16(<4 x i16> %va, <4 x i1> %m, i32 %evl)
237 define <4 x float> @vsitofp_v4f32_v4i16_unmasked(<4 x i16> %va, i32 zeroext %evl) {
238 ; CHECK-LABEL: vsitofp_v4f32_v4i16_unmasked:
240 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
241 ; CHECK-NEXT: vfwcvt.f.x.v v9, v8
242 ; CHECK-NEXT: vmv1r.v v8, v9
244 %v = call <4 x float> @llvm.vp.sitofp.v4f32.v4i16(<4 x i16> %va, <4 x i1> splat (i1 true), i32 %evl)
248 declare <4 x float> @llvm.vp.sitofp.v4f32.v4i32(<4 x i32>, <4 x i1>, i32)
250 define <4 x float> @vsitofp_v4f32_v4i32(<4 x i32> %va, <4 x i1> %m, i32 zeroext %evl) {
251 ; CHECK-LABEL: vsitofp_v4f32_v4i32:
253 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
254 ; CHECK-NEXT: vfcvt.f.x.v v8, v8, v0.t
256 %v = call <4 x float> @llvm.vp.sitofp.v4f32.v4i32(<4 x i32> %va, <4 x i1> %m, i32 %evl)
260 define <4 x float> @vsitofp_v4f32_v4i32_unmasked(<4 x i32> %va, i32 zeroext %evl) {
261 ; CHECK-LABEL: vsitofp_v4f32_v4i32_unmasked:
263 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
264 ; CHECK-NEXT: vfcvt.f.x.v v8, v8
266 %v = call <4 x float> @llvm.vp.sitofp.v4f32.v4i32(<4 x i32> %va, <4 x i1> splat (i1 true), i32 %evl)
270 declare <4 x float> @llvm.vp.sitofp.v4f32.v4i64(<4 x i64>, <4 x i1>, i32)
272 define <4 x float> @vsitofp_v4f32_v4i64(<4 x i64> %va, <4 x i1> %m, i32 zeroext %evl) {
273 ; CHECK-LABEL: vsitofp_v4f32_v4i64:
275 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
276 ; CHECK-NEXT: vfncvt.f.x.w v10, v8, v0.t
277 ; CHECK-NEXT: vmv.v.v v8, v10
279 %v = call <4 x float> @llvm.vp.sitofp.v4f32.v4i64(<4 x i64> %va, <4 x i1> %m, i32 %evl)
283 define <4 x float> @vsitofp_v4f32_v4i64_unmasked(<4 x i64> %va, i32 zeroext %evl) {
284 ; CHECK-LABEL: vsitofp_v4f32_v4i64_unmasked:
286 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
287 ; CHECK-NEXT: vfncvt.f.x.w v10, v8
288 ; CHECK-NEXT: vmv.v.v v8, v10
290 %v = call <4 x float> @llvm.vp.sitofp.v4f32.v4i64(<4 x i64> %va, <4 x i1> splat (i1 true), i32 %evl)
294 declare <4 x double> @llvm.vp.sitofp.v4f64.v4i8(<4 x i8>, <4 x i1>, i32)
296 define <4 x double> @vsitofp_v4f64_v4i8(<4 x i8> %va, <4 x i1> %m, i32 zeroext %evl) {
297 ; CHECK-LABEL: vsitofp_v4f64_v4i8:
299 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
300 ; CHECK-NEXT: vsext.vf4 v10, v8, v0.t
301 ; CHECK-NEXT: vfwcvt.f.x.v v8, v10, v0.t
303 %v = call <4 x double> @llvm.vp.sitofp.v4f64.v4i8(<4 x i8> %va, <4 x i1> %m, i32 %evl)
307 define <4 x double> @vsitofp_v4f64_v4i8_unmasked(<4 x i8> %va, i32 zeroext %evl) {
308 ; CHECK-LABEL: vsitofp_v4f64_v4i8_unmasked:
310 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
311 ; CHECK-NEXT: vsext.vf4 v10, v8
312 ; CHECK-NEXT: vfwcvt.f.x.v v8, v10
314 %v = call <4 x double> @llvm.vp.sitofp.v4f64.v4i8(<4 x i8> %va, <4 x i1> splat (i1 true), i32 %evl)
318 declare <4 x double> @llvm.vp.sitofp.v4f64.v4i16(<4 x i16>, <4 x i1>, i32)
320 define <4 x double> @vsitofp_v4f64_v4i16(<4 x i16> %va, <4 x i1> %m, i32 zeroext %evl) {
321 ; CHECK-LABEL: vsitofp_v4f64_v4i16:
323 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
324 ; CHECK-NEXT: vsext.vf2 v10, v8, v0.t
325 ; CHECK-NEXT: vfwcvt.f.x.v v8, v10, v0.t
327 %v = call <4 x double> @llvm.vp.sitofp.v4f64.v4i16(<4 x i16> %va, <4 x i1> %m, i32 %evl)
331 define <4 x double> @vsitofp_v4f64_v4i16_unmasked(<4 x i16> %va, i32 zeroext %evl) {
332 ; CHECK-LABEL: vsitofp_v4f64_v4i16_unmasked:
334 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
335 ; CHECK-NEXT: vsext.vf2 v10, v8
336 ; CHECK-NEXT: vfwcvt.f.x.v v8, v10
338 %v = call <4 x double> @llvm.vp.sitofp.v4f64.v4i16(<4 x i16> %va, <4 x i1> splat (i1 true), i32 %evl)
342 declare <4 x double> @llvm.vp.sitofp.v4f64.v4i32(<4 x i32>, <4 x i1>, i32)
344 define <4 x double> @vsitofp_v4f64_v4i32(<4 x i32> %va, <4 x i1> %m, i32 zeroext %evl) {
345 ; CHECK-LABEL: vsitofp_v4f64_v4i32:
347 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
348 ; CHECK-NEXT: vfwcvt.f.x.v v10, v8, v0.t
349 ; CHECK-NEXT: vmv2r.v v8, v10
351 %v = call <4 x double> @llvm.vp.sitofp.v4f64.v4i32(<4 x i32> %va, <4 x i1> %m, i32 %evl)
355 define <4 x double> @vsitofp_v4f64_v4i32_unmasked(<4 x i32> %va, i32 zeroext %evl) {
356 ; CHECK-LABEL: vsitofp_v4f64_v4i32_unmasked:
358 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
359 ; CHECK-NEXT: vfwcvt.f.x.v v10, v8
360 ; CHECK-NEXT: vmv2r.v v8, v10
362 %v = call <4 x double> @llvm.vp.sitofp.v4f64.v4i32(<4 x i32> %va, <4 x i1> splat (i1 true), i32 %evl)
366 declare <4 x double> @llvm.vp.sitofp.v4f64.v4i64(<4 x i64>, <4 x i1>, i32)
368 define <4 x double> @vsitofp_v4f64_v4i64(<4 x i64> %va, <4 x i1> %m, i32 zeroext %evl) {
369 ; CHECK-LABEL: vsitofp_v4f64_v4i64:
371 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
372 ; CHECK-NEXT: vfcvt.f.x.v v8, v8, v0.t
374 %v = call <4 x double> @llvm.vp.sitofp.v4f64.v4i64(<4 x i64> %va, <4 x i1> %m, i32 %evl)
378 define <4 x double> @vsitofp_v4f64_v4i64_unmasked(<4 x i64> %va, i32 zeroext %evl) {
379 ; CHECK-LABEL: vsitofp_v4f64_v4i64_unmasked:
381 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
382 ; CHECK-NEXT: vfcvt.f.x.v v8, v8
384 %v = call <4 x double> @llvm.vp.sitofp.v4f64.v4i64(<4 x i64> %va, <4 x i1> splat (i1 true), i32 %evl)
388 declare <32 x double> @llvm.vp.sitofp.v32f64.v32i64(<32 x i64>, <32 x i1>, i32)
390 define <32 x double> @vsitofp_v32f64_v32i64(<32 x i64> %va, <32 x i1> %m, i32 zeroext %evl) {
391 ; CHECK-LABEL: vsitofp_v32f64_v32i64:
393 ; CHECK-NEXT: li a2, 16
394 ; CHECK-NEXT: vsetivli zero, 2, e8, mf4, ta, ma
395 ; CHECK-NEXT: vslidedown.vi v24, v0, 2
396 ; CHECK-NEXT: mv a1, a0
397 ; CHECK-NEXT: bltu a0, a2, .LBB25_2
398 ; CHECK-NEXT: # %bb.1:
399 ; CHECK-NEXT: li a1, 16
400 ; CHECK-NEXT: .LBB25_2:
401 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
402 ; CHECK-NEXT: vfcvt.f.x.v v8, v8, v0.t
403 ; CHECK-NEXT: addi a1, a0, -16
404 ; CHECK-NEXT: sltu a0, a0, a1
405 ; CHECK-NEXT: addi a0, a0, -1
406 ; CHECK-NEXT: and a0, a0, a1
407 ; CHECK-NEXT: vmv1r.v v0, v24
408 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
409 ; CHECK-NEXT: vfcvt.f.x.v v16, v16, v0.t
411 %v = call <32 x double> @llvm.vp.sitofp.v32f64.v32i64(<32 x i64> %va, <32 x i1> %m, i32 %evl)
415 define <32 x double> @vsitofp_v32f64_v32i64_unmasked(<32 x i64> %va, i32 zeroext %evl) {
416 ; CHECK-LABEL: vsitofp_v32f64_v32i64_unmasked:
418 ; CHECK-NEXT: li a2, 16
419 ; CHECK-NEXT: mv a1, a0
420 ; CHECK-NEXT: bltu a0, a2, .LBB26_2
421 ; CHECK-NEXT: # %bb.1:
422 ; CHECK-NEXT: li a1, 16
423 ; CHECK-NEXT: .LBB26_2:
424 ; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma
425 ; CHECK-NEXT: vfcvt.f.x.v v8, v8
426 ; CHECK-NEXT: addi a1, a0, -16
427 ; CHECK-NEXT: sltu a0, a0, a1
428 ; CHECK-NEXT: addi a0, a0, -1
429 ; CHECK-NEXT: and a0, a0, a1
430 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
431 ; CHECK-NEXT: vfcvt.f.x.v v16, v16
433 %v = call <32 x double> @llvm.vp.sitofp.v32f64.v32i64(<32 x i64> %va, <32 x i1> splat (i1 true), i32 %evl)