Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vexts-sdnode.ll
blobc2ac155304dd5d0d5d8b4ea8d22fb515443c7f00
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:
7 ; CHECK:       # %bb.0:
8 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma
9 ; CHECK-NEXT:    vsext.vf2 v9, v8
10 ; CHECK-NEXT:    vmv1r.v v8, v9
11 ; CHECK-NEXT:    ret
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:
18 ; CHECK:       # %bb.0:
19 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma
20 ; CHECK-NEXT:    vzext.vf2 v9, v8
21 ; CHECK-NEXT:    vmv1r.v v8, v9
22 ; CHECK-NEXT:    ret
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:
29 ; CHECK:       # %bb.0:
30 ; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
31 ; CHECK-NEXT:    vsext.vf4 v9, v8
32 ; CHECK-NEXT:    vmv1r.v v8, v9
33 ; CHECK-NEXT:    ret
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:
40 ; CHECK:       # %bb.0:
41 ; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
42 ; CHECK-NEXT:    vzext.vf4 v9, v8
43 ; CHECK-NEXT:    vmv1r.v v8, v9
44 ; CHECK-NEXT:    ret
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:
51 ; CHECK:       # %bb.0:
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
55 ; CHECK-NEXT:    ret
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:
62 ; CHECK:       # %bb.0:
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
66 ; CHECK-NEXT:    ret
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:
73 ; CHECK:       # %bb.0:
74 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma
75 ; CHECK-NEXT:    vsext.vf2 v9, v8
76 ; CHECK-NEXT:    vmv1r.v v8, v9
77 ; CHECK-NEXT:    ret
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:
84 ; CHECK:       # %bb.0:
85 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma
86 ; CHECK-NEXT:    vzext.vf2 v9, v8
87 ; CHECK-NEXT:    vmv1r.v v8, v9
88 ; CHECK-NEXT:    ret
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:
95 ; CHECK:       # %bb.0:
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
99 ; CHECK-NEXT:    ret
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:
106 ; CHECK:       # %bb.0:
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
110 ; CHECK-NEXT:    ret
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:
117 ; CHECK:       # %bb.0:
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
121 ; CHECK-NEXT:    ret
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:
128 ; CHECK:       # %bb.0:
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
132 ; CHECK-NEXT:    ret
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:
139 ; CHECK:       # %bb.0:
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
143 ; CHECK-NEXT:    ret
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:
150 ; CHECK:       # %bb.0:
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
154 ; CHECK-NEXT:    ret
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:
161 ; CHECK:       # %bb.0:
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
165 ; CHECK-NEXT:    ret
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:
172 ; CHECK:       # %bb.0:
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
176 ; CHECK-NEXT:    ret
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:
183 ; CHECK:       # %bb.0:
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
187 ; CHECK-NEXT:    ret
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:
194 ; CHECK:       # %bb.0:
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
198 ; CHECK-NEXT:    ret
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:
205 ; CHECK:       # %bb.0:
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
209 ; CHECK-NEXT:    ret
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:
216 ; CHECK:       # %bb.0:
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
220 ; CHECK-NEXT:    ret
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:
227 ; CHECK:       # %bb.0:
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
231 ; CHECK-NEXT:    ret
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:
238 ; CHECK:       # %bb.0:
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
242 ; CHECK-NEXT:    ret
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:
249 ; CHECK:       # %bb.0:
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
253 ; CHECK-NEXT:    ret
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:
260 ; CHECK:       # %bb.0:
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
264 ; CHECK-NEXT:    ret
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:
271 ; CHECK:       # %bb.0:
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
275 ; CHECK-NEXT:    ret
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:
282 ; CHECK:       # %bb.0:
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
286 ; CHECK-NEXT:    ret
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:
293 ; CHECK:       # %bb.0:
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
297 ; CHECK-NEXT:    ret
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:
304 ; CHECK:       # %bb.0:
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
308 ; CHECK-NEXT:    ret
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:
315 ; CHECK:       # %bb.0:
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
319 ; CHECK-NEXT:    ret
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:
326 ; CHECK:       # %bb.0:
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
330 ; CHECK-NEXT:    ret
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:
337 ; CHECK:       # %bb.0:
338 ; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
339 ; CHECK-NEXT:    vsext.vf2 v9, v8
340 ; CHECK-NEXT:    vmv1r.v v8, v9
341 ; CHECK-NEXT:    ret
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:
348 ; CHECK:       # %bb.0:
349 ; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
350 ; CHECK-NEXT:    vzext.vf2 v9, v8
351 ; CHECK-NEXT:    vmv1r.v v8, v9
352 ; CHECK-NEXT:    ret
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:
359 ; CHECK:       # %bb.0:
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
363 ; CHECK-NEXT:    ret
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:
370 ; CHECK:       # %bb.0:
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
374 ; CHECK-NEXT:    ret
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:
381 ; CHECK:       # %bb.0:
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
385 ; CHECK-NEXT:    ret
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:
392 ; CHECK:       # %bb.0:
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
396 ; CHECK-NEXT:    ret
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:
403 ; CHECK:       # %bb.0:
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
407 ; CHECK-NEXT:    ret
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:
414 ; CHECK:       # %bb.0:
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
418 ; CHECK-NEXT:    ret
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:
425 ; CHECK:       # %bb.0:
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
429 ; CHECK-NEXT:    ret
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:
436 ; CHECK:       # %bb.0:
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
440 ; CHECK-NEXT:    ret
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:
447 ; CHECK:       # %bb.0:
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
451 ; CHECK-NEXT:    ret
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:
458 ; CHECK:       # %bb.0:
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
462 ; CHECK-NEXT:    ret
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:
469 ; CHECK:       # %bb.0:
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
473 ; CHECK-NEXT:    ret
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:
480 ; CHECK:       # %bb.0:
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
484 ; CHECK-NEXT:    ret
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:
491 ; CHECK:       # %bb.0:
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
495 ; CHECK-NEXT:    ret
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:
502 ; CHECK:       # %bb.0:
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
506 ; CHECK-NEXT:    ret
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:
513 ; CHECK:       # %bb.0:
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
517 ; CHECK-NEXT:    ret
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:
524 ; CHECK:       # %bb.0:
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
528 ; CHECK-NEXT:    ret
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:
535 ; CHECK:       # %bb.0:
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
539 ; CHECK-NEXT:    ret
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:
546 ; CHECK:       # %bb.0:
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
550 ; CHECK-NEXT:    ret
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:
557 ; CHECK:       # %bb.0:
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
561 ; CHECK-NEXT:    ret
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:
568 ; CHECK:       # %bb.0:
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
572 ; CHECK-NEXT:    ret
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:
579 ; CHECK:       # %bb.0:
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
583 ; CHECK-NEXT:    ret
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:
590 ; CHECK:       # %bb.0:
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
594 ; CHECK-NEXT:    ret
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:
601 ; CHECK:       # %bb.0:
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
605 ; CHECK-NEXT:    ret
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:
612 ; CHECK:       # %bb.0:
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
616 ; CHECK-NEXT:    ret
617   %evec = zext <vscale x 8 x i32> %va to <vscale x 8 x i64>
618   ret <vscale x 8 x i64> %evec