1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s | FileCheck %s
3 ; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s | FileCheck %s
5 define <vscale x 1 x i16> @vsext_nxv1i8_nxv1i16(<vscale x 1 x i8> %va) {
6 ; CHECK-LABEL: vsext_nxv1i8_nxv1i16:
8 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
9 ; CHECK-NEXT: vsext.vf2 v9, v8
10 ; CHECK-NEXT: vmv1r.v v8, v9
12 %evec = sext <vscale x 1 x i8> %va to <vscale x 1 x i16>
13 ret <vscale x 1 x i16> %evec
16 define <vscale x 1 x i16> @vzext_nxv1i8_nxv1i16(<vscale x 1 x i8> %va) {
17 ; CHECK-LABEL: vzext_nxv1i8_nxv1i16:
19 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
20 ; CHECK-NEXT: vzext.vf2 v9, v8
21 ; CHECK-NEXT: vmv1r.v v8, v9
23 %evec = zext <vscale x 1 x i8> %va to <vscale x 1 x i16>
24 ret <vscale x 1 x i16> %evec
27 define <vscale x 1 x i32> @vsext_nxv1i8_nxv1i32(<vscale x 1 x i8> %va) {
28 ; CHECK-LABEL: vsext_nxv1i8_nxv1i32:
30 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
31 ; CHECK-NEXT: vsext.vf4 v9, v8
32 ; CHECK-NEXT: vmv1r.v v8, v9
34 %evec = sext <vscale x 1 x i8> %va to <vscale x 1 x i32>
35 ret <vscale x 1 x i32> %evec
38 define <vscale x 1 x i32> @vzext_nxv1i8_nxv1i32(<vscale x 1 x i8> %va) {
39 ; CHECK-LABEL: vzext_nxv1i8_nxv1i32:
41 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
42 ; CHECK-NEXT: vzext.vf4 v9, v8
43 ; CHECK-NEXT: vmv1r.v v8, v9
45 %evec = zext <vscale x 1 x i8> %va to <vscale x 1 x i32>
46 ret <vscale x 1 x i32> %evec
49 define <vscale x 1 x i64> @vsext_nxv1i8_nxv1i64(<vscale x 1 x i8> %va) {
50 ; CHECK-LABEL: vsext_nxv1i8_nxv1i64:
52 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
53 ; CHECK-NEXT: vsext.vf8 v9, v8
54 ; CHECK-NEXT: vmv.v.v v8, v9
56 %evec = sext <vscale x 1 x i8> %va to <vscale x 1 x i64>
57 ret <vscale x 1 x i64> %evec
60 define <vscale x 1 x i64> @vzext_nxv1i8_nxv1i64(<vscale x 1 x i8> %va) {
61 ; CHECK-LABEL: vzext_nxv1i8_nxv1i64:
63 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
64 ; CHECK-NEXT: vzext.vf8 v9, v8
65 ; CHECK-NEXT: vmv.v.v v8, v9
67 %evec = zext <vscale x 1 x i8> %va to <vscale x 1 x i64>
68 ret <vscale x 1 x i64> %evec
71 define <vscale x 2 x i16> @vsext_nxv2i8_nxv2i16(<vscale x 2 x i8> %va) {
72 ; CHECK-LABEL: vsext_nxv2i8_nxv2i16:
74 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
75 ; CHECK-NEXT: vsext.vf2 v9, v8
76 ; CHECK-NEXT: vmv1r.v v8, v9
78 %evec = sext <vscale x 2 x i8> %va to <vscale x 2 x i16>
79 ret <vscale x 2 x i16> %evec
82 define <vscale x 2 x i16> @vzext_nxv2i8_nxv2i16(<vscale x 2 x i8> %va) {
83 ; CHECK-LABEL: vzext_nxv2i8_nxv2i16:
85 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
86 ; CHECK-NEXT: vzext.vf2 v9, v8
87 ; CHECK-NEXT: vmv1r.v v8, v9
89 %evec = zext <vscale x 2 x i8> %va to <vscale x 2 x i16>
90 ret <vscale x 2 x i16> %evec
93 define <vscale x 2 x i32> @vsext_nxv2i8_nxv2i32(<vscale x 2 x i8> %va) {
94 ; CHECK-LABEL: vsext_nxv2i8_nxv2i32:
96 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
97 ; CHECK-NEXT: vsext.vf4 v9, v8
98 ; CHECK-NEXT: vmv.v.v v8, v9
100 %evec = sext <vscale x 2 x i8> %va to <vscale x 2 x i32>
101 ret <vscale x 2 x i32> %evec
104 define <vscale x 2 x i32> @vzext_nxv2i8_nxv2i32(<vscale x 2 x i8> %va) {
105 ; CHECK-LABEL: vzext_nxv2i8_nxv2i32:
107 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
108 ; CHECK-NEXT: vzext.vf4 v9, v8
109 ; CHECK-NEXT: vmv.v.v v8, v9
111 %evec = zext <vscale x 2 x i8> %va to <vscale x 2 x i32>
112 ret <vscale x 2 x i32> %evec
115 define <vscale x 2 x i64> @vsext_nxv2i8_nxv2i64(<vscale x 2 x i8> %va) {
116 ; CHECK-LABEL: vsext_nxv2i8_nxv2i64:
118 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
119 ; CHECK-NEXT: vsext.vf8 v10, v8
120 ; CHECK-NEXT: vmv.v.v v8, v10
122 %evec = sext <vscale x 2 x i8> %va to <vscale x 2 x i64>
123 ret <vscale x 2 x i64> %evec
126 define <vscale x 2 x i64> @vzext_nxv2i8_nxv2i64(<vscale x 2 x i8> %va) {
127 ; CHECK-LABEL: vzext_nxv2i8_nxv2i64:
129 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
130 ; CHECK-NEXT: vzext.vf8 v10, v8
131 ; CHECK-NEXT: vmv.v.v v8, v10
133 %evec = zext <vscale x 2 x i8> %va to <vscale x 2 x i64>
134 ret <vscale x 2 x i64> %evec
137 define <vscale x 4 x i16> @vsext_nxv4i8_nxv4i16(<vscale x 4 x i8> %va) {
138 ; CHECK-LABEL: vsext_nxv4i8_nxv4i16:
140 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
141 ; CHECK-NEXT: vsext.vf2 v9, v8
142 ; CHECK-NEXT: vmv.v.v v8, v9
144 %evec = sext <vscale x 4 x i8> %va to <vscale x 4 x i16>
145 ret <vscale x 4 x i16> %evec
148 define <vscale x 4 x i16> @vzext_nxv4i8_nxv4i16(<vscale x 4 x i8> %va) {
149 ; CHECK-LABEL: vzext_nxv4i8_nxv4i16:
151 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
152 ; CHECK-NEXT: vzext.vf2 v9, v8
153 ; CHECK-NEXT: vmv.v.v v8, v9
155 %evec = zext <vscale x 4 x i8> %va to <vscale x 4 x i16>
156 ret <vscale x 4 x i16> %evec
159 define <vscale x 4 x i32> @vsext_nxv4i8_nxv4i32(<vscale x 4 x i8> %va) {
160 ; CHECK-LABEL: vsext_nxv4i8_nxv4i32:
162 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
163 ; CHECK-NEXT: vsext.vf4 v10, v8
164 ; CHECK-NEXT: vmv.v.v v8, v10
166 %evec = sext <vscale x 4 x i8> %va to <vscale x 4 x i32>
167 ret <vscale x 4 x i32> %evec
170 define <vscale x 4 x i32> @vzext_nxv4i8_nxv4i32(<vscale x 4 x i8> %va) {
171 ; CHECK-LABEL: vzext_nxv4i8_nxv4i32:
173 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
174 ; CHECK-NEXT: vzext.vf4 v10, v8
175 ; CHECK-NEXT: vmv.v.v v8, v10
177 %evec = zext <vscale x 4 x i8> %va to <vscale x 4 x i32>
178 ret <vscale x 4 x i32> %evec
181 define <vscale x 4 x i64> @vsext_nxv4i8_nxv4i64(<vscale x 4 x i8> %va) {
182 ; CHECK-LABEL: vsext_nxv4i8_nxv4i64:
184 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
185 ; CHECK-NEXT: vsext.vf8 v12, v8
186 ; CHECK-NEXT: vmv.v.v v8, v12
188 %evec = sext <vscale x 4 x i8> %va to <vscale x 4 x i64>
189 ret <vscale x 4 x i64> %evec
192 define <vscale x 4 x i64> @vzext_nxv4i8_nxv4i64(<vscale x 4 x i8> %va) {
193 ; CHECK-LABEL: vzext_nxv4i8_nxv4i64:
195 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
196 ; CHECK-NEXT: vzext.vf8 v12, v8
197 ; CHECK-NEXT: vmv.v.v v8, v12
199 %evec = zext <vscale x 4 x i8> %va to <vscale x 4 x i64>
200 ret <vscale x 4 x i64> %evec
203 define <vscale x 8 x i16> @vsext_nxv8i8_nxv8i16(<vscale x 8 x i8> %va) {
204 ; CHECK-LABEL: vsext_nxv8i8_nxv8i16:
206 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
207 ; CHECK-NEXT: vsext.vf2 v10, v8
208 ; CHECK-NEXT: vmv.v.v v8, v10
210 %evec = sext <vscale x 8 x i8> %va to <vscale x 8 x i16>
211 ret <vscale x 8 x i16> %evec
214 define <vscale x 8 x i16> @vzext_nxv8i8_nxv8i16(<vscale x 8 x i8> %va) {
215 ; CHECK-LABEL: vzext_nxv8i8_nxv8i16:
217 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
218 ; CHECK-NEXT: vzext.vf2 v10, v8
219 ; CHECK-NEXT: vmv.v.v v8, v10
221 %evec = zext <vscale x 8 x i8> %va to <vscale x 8 x i16>
222 ret <vscale x 8 x i16> %evec
225 define <vscale x 8 x i32> @vsext_nxv8i8_nxv8i32(<vscale x 8 x i8> %va) {
226 ; CHECK-LABEL: vsext_nxv8i8_nxv8i32:
228 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
229 ; CHECK-NEXT: vsext.vf4 v12, v8
230 ; CHECK-NEXT: vmv.v.v v8, v12
232 %evec = sext <vscale x 8 x i8> %va to <vscale x 8 x i32>
233 ret <vscale x 8 x i32> %evec
236 define <vscale x 8 x i32> @vzext_nxv8i8_nxv8i32(<vscale x 8 x i8> %va) {
237 ; CHECK-LABEL: vzext_nxv8i8_nxv8i32:
239 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
240 ; CHECK-NEXT: vzext.vf4 v12, v8
241 ; CHECK-NEXT: vmv.v.v v8, v12
243 %evec = zext <vscale x 8 x i8> %va to <vscale x 8 x i32>
244 ret <vscale x 8 x i32> %evec
247 define <vscale x 8 x i64> @vsext_nxv8i8_nxv8i64(<vscale x 8 x i8> %va) {
248 ; CHECK-LABEL: vsext_nxv8i8_nxv8i64:
250 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
251 ; CHECK-NEXT: vsext.vf8 v16, v8
252 ; CHECK-NEXT: vmv.v.v v8, v16
254 %evec = sext <vscale x 8 x i8> %va to <vscale x 8 x i64>
255 ret <vscale x 8 x i64> %evec
258 define <vscale x 8 x i64> @vzext_nxv8i8_nxv8i64(<vscale x 8 x i8> %va) {
259 ; CHECK-LABEL: vzext_nxv8i8_nxv8i64:
261 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
262 ; CHECK-NEXT: vzext.vf8 v16, v8
263 ; CHECK-NEXT: vmv.v.v v8, v16
265 %evec = zext <vscale x 8 x i8> %va to <vscale x 8 x i64>
266 ret <vscale x 8 x i64> %evec
269 define <vscale x 16 x i16> @vsext_nxv16i8_nxv16i16(<vscale x 16 x i8> %va) {
270 ; CHECK-LABEL: vsext_nxv16i8_nxv16i16:
272 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
273 ; CHECK-NEXT: vsext.vf2 v12, v8
274 ; CHECK-NEXT: vmv.v.v v8, v12
276 %evec = sext <vscale x 16 x i8> %va to <vscale x 16 x i16>
277 ret <vscale x 16 x i16> %evec
280 define <vscale x 16 x i16> @vzext_nxv16i8_nxv16i16(<vscale x 16 x i8> %va) {
281 ; CHECK-LABEL: vzext_nxv16i8_nxv16i16:
283 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
284 ; CHECK-NEXT: vzext.vf2 v12, v8
285 ; CHECK-NEXT: vmv.v.v v8, v12
287 %evec = zext <vscale x 16 x i8> %va to <vscale x 16 x i16>
288 ret <vscale x 16 x i16> %evec
291 define <vscale x 16 x i32> @vsext_nxv16i8_nxv16i32(<vscale x 16 x i8> %va) {
292 ; CHECK-LABEL: vsext_nxv16i8_nxv16i32:
294 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
295 ; CHECK-NEXT: vsext.vf4 v16, v8
296 ; CHECK-NEXT: vmv.v.v v8, v16
298 %evec = sext <vscale x 16 x i8> %va to <vscale x 16 x i32>
299 ret <vscale x 16 x i32> %evec
302 define <vscale x 16 x i32> @vzext_nxv16i8_nxv16i32(<vscale x 16 x i8> %va) {
303 ; CHECK-LABEL: vzext_nxv16i8_nxv16i32:
305 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
306 ; CHECK-NEXT: vzext.vf4 v16, v8
307 ; CHECK-NEXT: vmv.v.v v8, v16
309 %evec = zext <vscale x 16 x i8> %va to <vscale x 16 x i32>
310 ret <vscale x 16 x i32> %evec
313 define <vscale x 32 x i16> @vsext_nxv32i8_nxv32i16(<vscale x 32 x i8> %va) {
314 ; CHECK-LABEL: vsext_nxv32i8_nxv32i16:
316 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
317 ; CHECK-NEXT: vsext.vf2 v16, v8
318 ; CHECK-NEXT: vmv.v.v v8, v16
320 %evec = sext <vscale x 32 x i8> %va to <vscale x 32 x i16>
321 ret <vscale x 32 x i16> %evec
324 define <vscale x 32 x i16> @vzext_nxv32i8_nxv32i16(<vscale x 32 x i8> %va) {
325 ; CHECK-LABEL: vzext_nxv32i8_nxv32i16:
327 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
328 ; CHECK-NEXT: vzext.vf2 v16, v8
329 ; CHECK-NEXT: vmv.v.v v8, v16
331 %evec = zext <vscale x 32 x i8> %va to <vscale x 32 x i16>
332 ret <vscale x 32 x i16> %evec
335 define <vscale x 1 x i32> @vsext_nxv1i16_nxv1i32(<vscale x 1 x i16> %va) {
336 ; CHECK-LABEL: vsext_nxv1i16_nxv1i32:
338 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
339 ; CHECK-NEXT: vsext.vf2 v9, v8
340 ; CHECK-NEXT: vmv1r.v v8, v9
342 %evec = sext <vscale x 1 x i16> %va to <vscale x 1 x i32>
343 ret <vscale x 1 x i32> %evec
346 define <vscale x 1 x i32> @vzext_nxv1i16_nxv1i32(<vscale x 1 x i16> %va) {
347 ; CHECK-LABEL: vzext_nxv1i16_nxv1i32:
349 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
350 ; CHECK-NEXT: vzext.vf2 v9, v8
351 ; CHECK-NEXT: vmv1r.v v8, v9
353 %evec = zext <vscale x 1 x i16> %va to <vscale x 1 x i32>
354 ret <vscale x 1 x i32> %evec
357 define <vscale x 1 x i64> @vsext_nxv1i16_nxv1i64(<vscale x 1 x i16> %va) {
358 ; CHECK-LABEL: vsext_nxv1i16_nxv1i64:
360 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
361 ; CHECK-NEXT: vsext.vf4 v9, v8
362 ; CHECK-NEXT: vmv.v.v v8, v9
364 %evec = sext <vscale x 1 x i16> %va to <vscale x 1 x i64>
365 ret <vscale x 1 x i64> %evec
368 define <vscale x 1 x i64> @vzext_nxv1i16_nxv1i64(<vscale x 1 x i16> %va) {
369 ; CHECK-LABEL: vzext_nxv1i16_nxv1i64:
371 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
372 ; CHECK-NEXT: vzext.vf4 v9, v8
373 ; CHECK-NEXT: vmv.v.v v8, v9
375 %evec = zext <vscale x 1 x i16> %va to <vscale x 1 x i64>
376 ret <vscale x 1 x i64> %evec
379 define <vscale x 2 x i32> @vsext_nxv2i16_nxv2i32(<vscale x 2 x i16> %va) {
380 ; CHECK-LABEL: vsext_nxv2i16_nxv2i32:
382 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
383 ; CHECK-NEXT: vsext.vf2 v9, v8
384 ; CHECK-NEXT: vmv.v.v v8, v9
386 %evec = sext <vscale x 2 x i16> %va to <vscale x 2 x i32>
387 ret <vscale x 2 x i32> %evec
390 define <vscale x 2 x i32> @vzext_nxv2i16_nxv2i32(<vscale x 2 x i16> %va) {
391 ; CHECK-LABEL: vzext_nxv2i16_nxv2i32:
393 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
394 ; CHECK-NEXT: vzext.vf2 v9, v8
395 ; CHECK-NEXT: vmv.v.v v8, v9
397 %evec = zext <vscale x 2 x i16> %va to <vscale x 2 x i32>
398 ret <vscale x 2 x i32> %evec
401 define <vscale x 2 x i64> @vsext_nxv2i16_nxv2i64(<vscale x 2 x i16> %va) {
402 ; CHECK-LABEL: vsext_nxv2i16_nxv2i64:
404 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
405 ; CHECK-NEXT: vsext.vf4 v10, v8
406 ; CHECK-NEXT: vmv.v.v v8, v10
408 %evec = sext <vscale x 2 x i16> %va to <vscale x 2 x i64>
409 ret <vscale x 2 x i64> %evec
412 define <vscale x 2 x i64> @vzext_nxv2i16_nxv2i64(<vscale x 2 x i16> %va) {
413 ; CHECK-LABEL: vzext_nxv2i16_nxv2i64:
415 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
416 ; CHECK-NEXT: vzext.vf4 v10, v8
417 ; CHECK-NEXT: vmv.v.v v8, v10
419 %evec = zext <vscale x 2 x i16> %va to <vscale x 2 x i64>
420 ret <vscale x 2 x i64> %evec
423 define <vscale x 4 x i32> @vsext_nxv4i16_nxv4i32(<vscale x 4 x i16> %va) {
424 ; CHECK-LABEL: vsext_nxv4i16_nxv4i32:
426 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
427 ; CHECK-NEXT: vsext.vf2 v10, v8
428 ; CHECK-NEXT: vmv.v.v v8, v10
430 %evec = sext <vscale x 4 x i16> %va to <vscale x 4 x i32>
431 ret <vscale x 4 x i32> %evec
434 define <vscale x 4 x i32> @vzext_nxv4i16_nxv4i32(<vscale x 4 x i16> %va) {
435 ; CHECK-LABEL: vzext_nxv4i16_nxv4i32:
437 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
438 ; CHECK-NEXT: vzext.vf2 v10, v8
439 ; CHECK-NEXT: vmv.v.v v8, v10
441 %evec = zext <vscale x 4 x i16> %va to <vscale x 4 x i32>
442 ret <vscale x 4 x i32> %evec
445 define <vscale x 4 x i64> @vsext_nxv4i16_nxv4i64(<vscale x 4 x i16> %va) {
446 ; CHECK-LABEL: vsext_nxv4i16_nxv4i64:
448 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
449 ; CHECK-NEXT: vsext.vf4 v12, v8
450 ; CHECK-NEXT: vmv.v.v v8, v12
452 %evec = sext <vscale x 4 x i16> %va to <vscale x 4 x i64>
453 ret <vscale x 4 x i64> %evec
456 define <vscale x 4 x i64> @vzext_nxv4i16_nxv4i64(<vscale x 4 x i16> %va) {
457 ; CHECK-LABEL: vzext_nxv4i16_nxv4i64:
459 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
460 ; CHECK-NEXT: vzext.vf4 v12, v8
461 ; CHECK-NEXT: vmv.v.v v8, v12
463 %evec = zext <vscale x 4 x i16> %va to <vscale x 4 x i64>
464 ret <vscale x 4 x i64> %evec
467 define <vscale x 8 x i32> @vsext_nxv8i16_nxv8i32(<vscale x 8 x i16> %va) {
468 ; CHECK-LABEL: vsext_nxv8i16_nxv8i32:
470 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
471 ; CHECK-NEXT: vsext.vf2 v12, v8
472 ; CHECK-NEXT: vmv.v.v v8, v12
474 %evec = sext <vscale x 8 x i16> %va to <vscale x 8 x i32>
475 ret <vscale x 8 x i32> %evec
478 define <vscale x 8 x i32> @vzext_nxv8i16_nxv8i32(<vscale x 8 x i16> %va) {
479 ; CHECK-LABEL: vzext_nxv8i16_nxv8i32:
481 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
482 ; CHECK-NEXT: vzext.vf2 v12, v8
483 ; CHECK-NEXT: vmv.v.v v8, v12
485 %evec = zext <vscale x 8 x i16> %va to <vscale x 8 x i32>
486 ret <vscale x 8 x i32> %evec
489 define <vscale x 8 x i64> @vsext_nxv8i16_nxv8i64(<vscale x 8 x i16> %va) {
490 ; CHECK-LABEL: vsext_nxv8i16_nxv8i64:
492 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
493 ; CHECK-NEXT: vsext.vf4 v16, v8
494 ; CHECK-NEXT: vmv.v.v v8, v16
496 %evec = sext <vscale x 8 x i16> %va to <vscale x 8 x i64>
497 ret <vscale x 8 x i64> %evec
500 define <vscale x 8 x i64> @vzext_nxv8i16_nxv8i64(<vscale x 8 x i16> %va) {
501 ; CHECK-LABEL: vzext_nxv8i16_nxv8i64:
503 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
504 ; CHECK-NEXT: vzext.vf4 v16, v8
505 ; CHECK-NEXT: vmv.v.v v8, v16
507 %evec = zext <vscale x 8 x i16> %va to <vscale x 8 x i64>
508 ret <vscale x 8 x i64> %evec
511 define <vscale x 16 x i32> @vsext_nxv16i16_nxv16i32(<vscale x 16 x i16> %va) {
512 ; CHECK-LABEL: vsext_nxv16i16_nxv16i32:
514 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
515 ; CHECK-NEXT: vsext.vf2 v16, v8
516 ; CHECK-NEXT: vmv.v.v v8, v16
518 %evec = sext <vscale x 16 x i16> %va to <vscale x 16 x i32>
519 ret <vscale x 16 x i32> %evec
522 define <vscale x 16 x i32> @vzext_nxv16i16_nxv16i32(<vscale x 16 x i16> %va) {
523 ; CHECK-LABEL: vzext_nxv16i16_nxv16i32:
525 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
526 ; CHECK-NEXT: vzext.vf2 v16, v8
527 ; CHECK-NEXT: vmv.v.v v8, v16
529 %evec = zext <vscale x 16 x i16> %va to <vscale x 16 x i32>
530 ret <vscale x 16 x i32> %evec
533 define <vscale x 1 x i64> @vsext_nxv1i32_nxv1i64(<vscale x 1 x i32> %va) {
534 ; CHECK-LABEL: vsext_nxv1i32_nxv1i64:
536 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
537 ; CHECK-NEXT: vsext.vf2 v9, v8
538 ; CHECK-NEXT: vmv.v.v v8, v9
540 %evec = sext <vscale x 1 x i32> %va to <vscale x 1 x i64>
541 ret <vscale x 1 x i64> %evec
544 define <vscale x 1 x i64> @vzext_nxv1i32_nxv1i64(<vscale x 1 x i32> %va) {
545 ; CHECK-LABEL: vzext_nxv1i32_nxv1i64:
547 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
548 ; CHECK-NEXT: vzext.vf2 v9, v8
549 ; CHECK-NEXT: vmv.v.v v8, v9
551 %evec = zext <vscale x 1 x i32> %va to <vscale x 1 x i64>
552 ret <vscale x 1 x i64> %evec
555 define <vscale x 2 x i64> @vsext_nxv2i32_nxv2i64(<vscale x 2 x i32> %va) {
556 ; CHECK-LABEL: vsext_nxv2i32_nxv2i64:
558 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
559 ; CHECK-NEXT: vsext.vf2 v10, v8
560 ; CHECK-NEXT: vmv.v.v v8, v10
562 %evec = sext <vscale x 2 x i32> %va to <vscale x 2 x i64>
563 ret <vscale x 2 x i64> %evec
566 define <vscale x 2 x i64> @vzext_nxv2i32_nxv2i64(<vscale x 2 x i32> %va) {
567 ; CHECK-LABEL: vzext_nxv2i32_nxv2i64:
569 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
570 ; CHECK-NEXT: vzext.vf2 v10, v8
571 ; CHECK-NEXT: vmv.v.v v8, v10
573 %evec = zext <vscale x 2 x i32> %va to <vscale x 2 x i64>
574 ret <vscale x 2 x i64> %evec
577 define <vscale x 4 x i64> @vsext_nxv4i32_nxv4i64(<vscale x 4 x i32> %va) {
578 ; CHECK-LABEL: vsext_nxv4i32_nxv4i64:
580 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
581 ; CHECK-NEXT: vsext.vf2 v12, v8
582 ; CHECK-NEXT: vmv.v.v v8, v12
584 %evec = sext <vscale x 4 x i32> %va to <vscale x 4 x i64>
585 ret <vscale x 4 x i64> %evec
588 define <vscale x 4 x i64> @vzext_nxv4i32_nxv4i64(<vscale x 4 x i32> %va) {
589 ; CHECK-LABEL: vzext_nxv4i32_nxv4i64:
591 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
592 ; CHECK-NEXT: vzext.vf2 v12, v8
593 ; CHECK-NEXT: vmv.v.v v8, v12
595 %evec = zext <vscale x 4 x i32> %va to <vscale x 4 x i64>
596 ret <vscale x 4 x i64> %evec
599 define <vscale x 8 x i64> @vsext_nxv8i32_nxv8i64(<vscale x 8 x i32> %va) {
600 ; CHECK-LABEL: vsext_nxv8i32_nxv8i64:
602 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
603 ; CHECK-NEXT: vsext.vf2 v16, v8
604 ; CHECK-NEXT: vmv.v.v v8, v16
606 %evec = sext <vscale x 8 x i32> %va to <vscale x 8 x i64>
607 ret <vscale x 8 x i64> %evec
610 define <vscale x 8 x i64> @vzext_nxv8i32_nxv8i64(<vscale x 8 x i32> %va) {
611 ; CHECK-LABEL: vzext_nxv8i32_nxv8i64:
613 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
614 ; CHECK-NEXT: vzext.vf2 v16, v8
615 ; CHECK-NEXT: vmv.v.v v8, v16
617 %evec = zext <vscale x 8 x i32> %va to <vscale x 8 x i64>
618 ret <vscale x 8 x i64> %evec