1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v \
3 ; RUN: -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK
4 ; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v \
5 ; RUN: -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK
7 declare <vscale x 1 x i64> @llvm.riscv.vsext.nxv1i64.nxv1i8(
12 define <vscale x 1 x i64> @intrinsic_vsext_vf8_nxv1i64(<vscale x 1 x i8> %0, iXLen %1) nounwind {
13 ; CHECK-LABEL: intrinsic_vsext_vf8_nxv1i64:
14 ; CHECK: # %bb.0: # %entry
15 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
16 ; CHECK-NEXT: vsext.vf8 v9, v8
17 ; CHECK-NEXT: vmv.v.v v8, v9
20 %a = call <vscale x 1 x i64> @llvm.riscv.vsext.nxv1i64.nxv1i8(
21 <vscale x 1 x i64> undef,
25 ret <vscale x 1 x i64> %a
28 declare <vscale x 1 x i64> @llvm.riscv.vsext.mask.nxv1i64.nxv1i8(
35 define <vscale x 1 x i64> @intrinsic_vsext_mask_vf8_nxv1i64(<vscale x 1 x i1> %0, <vscale x 1 x i64> %1, <vscale x 1 x i8> %2, iXLen %3) nounwind {
36 ; CHECK-LABEL: intrinsic_vsext_mask_vf8_nxv1i64:
37 ; CHECK: # %bb.0: # %entry
38 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, mu
39 ; CHECK-NEXT: vsext.vf8 v8, v9, v0.t
42 %a = call <vscale x 1 x i64> @llvm.riscv.vsext.mask.nxv1i64.nxv1i8(
43 <vscale x 1 x i64> %1,
48 ret <vscale x 1 x i64> %a
51 declare <vscale x 2 x i64> @llvm.riscv.vsext.nxv2i64.nxv2i8(
56 define <vscale x 2 x i64> @intrinsic_vsext_vf8_nxv2i64(<vscale x 2 x i8> %0, iXLen %1) nounwind {
57 ; CHECK-LABEL: intrinsic_vsext_vf8_nxv2i64:
58 ; CHECK: # %bb.0: # %entry
59 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
60 ; CHECK-NEXT: vsext.vf8 v10, v8
61 ; CHECK-NEXT: vmv.v.v v8, v10
64 %a = call <vscale x 2 x i64> @llvm.riscv.vsext.nxv2i64.nxv2i8(
65 <vscale x 2 x i64> undef,
69 ret <vscale x 2 x i64> %a
72 declare <vscale x 2 x i64> @llvm.riscv.vsext.mask.nxv2i64.nxv2i8(
79 define <vscale x 2 x i64> @intrinsic_vsext_mask_vf8_nxv2i64(<vscale x 2 x i1> %0, <vscale x 2 x i64> %1, <vscale x 2 x i8> %2, iXLen %3) nounwind {
80 ; CHECK-LABEL: intrinsic_vsext_mask_vf8_nxv2i64:
81 ; CHECK: # %bb.0: # %entry
82 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, mu
83 ; CHECK-NEXT: vsext.vf8 v8, v10, v0.t
86 %a = call <vscale x 2 x i64> @llvm.riscv.vsext.mask.nxv2i64.nxv2i8(
87 <vscale x 2 x i64> %1,
92 ret <vscale x 2 x i64> %a
95 declare <vscale x 4 x i64> @llvm.riscv.vsext.nxv4i64.nxv4i8(
100 define <vscale x 4 x i64> @intrinsic_vsext_vf8_nxv4i64(<vscale x 4 x i8> %0, iXLen %1) nounwind {
101 ; CHECK-LABEL: intrinsic_vsext_vf8_nxv4i64:
102 ; CHECK: # %bb.0: # %entry
103 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
104 ; CHECK-NEXT: vsext.vf8 v12, v8
105 ; CHECK-NEXT: vmv.v.v v8, v12
108 %a = call <vscale x 4 x i64> @llvm.riscv.vsext.nxv4i64.nxv4i8(
109 <vscale x 4 x i64> undef,
110 <vscale x 4 x i8> %0,
113 ret <vscale x 4 x i64> %a
116 declare <vscale x 4 x i64> @llvm.riscv.vsext.mask.nxv4i64.nxv4i8(
123 define <vscale x 4 x i64> @intrinsic_vsext_mask_vf8_nxv4i64(<vscale x 4 x i1> %0, <vscale x 4 x i64> %1, <vscale x 4 x i8> %2, iXLen %3) nounwind {
124 ; CHECK-LABEL: intrinsic_vsext_mask_vf8_nxv4i64:
125 ; CHECK: # %bb.0: # %entry
126 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, mu
127 ; CHECK-NEXT: vsext.vf8 v8, v12, v0.t
130 %a = call <vscale x 4 x i64> @llvm.riscv.vsext.mask.nxv4i64.nxv4i8(
131 <vscale x 4 x i64> %1,
132 <vscale x 4 x i8> %2,
133 <vscale x 4 x i1> %0,
136 ret <vscale x 4 x i64> %a
139 declare <vscale x 8 x i64> @llvm.riscv.vsext.nxv8i64.nxv8i8(
144 define <vscale x 8 x i64> @intrinsic_vsext_vf8_nxv8i64(<vscale x 8 x i8> %0, iXLen %1) nounwind {
145 ; CHECK-LABEL: intrinsic_vsext_vf8_nxv8i64:
146 ; CHECK: # %bb.0: # %entry
147 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
148 ; CHECK-NEXT: vsext.vf8 v16, v8
149 ; CHECK-NEXT: vmv.v.v v8, v16
152 %a = call <vscale x 8 x i64> @llvm.riscv.vsext.nxv8i64.nxv8i8(
153 <vscale x 8 x i64> undef,
154 <vscale x 8 x i8> %0,
157 ret <vscale x 8 x i64> %a
160 declare <vscale x 8 x i64> @llvm.riscv.vsext.mask.nxv8i64.nxv8i8(
167 define <vscale x 8 x i64> @intrinsic_vsext_mask_vf8_nxv8i64(<vscale x 8 x i1> %0, <vscale x 8 x i64> %1, <vscale x 8 x i8> %2, iXLen %3) nounwind {
168 ; CHECK-LABEL: intrinsic_vsext_mask_vf8_nxv8i64:
169 ; CHECK: # %bb.0: # %entry
170 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, mu
171 ; CHECK-NEXT: vsext.vf8 v8, v16, v0.t
174 %a = call <vscale x 8 x i64> @llvm.riscv.vsext.mask.nxv8i64.nxv8i8(
175 <vscale x 8 x i64> %1,
176 <vscale x 8 x i8> %2,
177 <vscale x 8 x i1> %0,
180 ret <vscale x 8 x i64> %a
183 declare <vscale x 1 x i64> @llvm.riscv.vsext.nxv1i64.nxv1i16(
188 define <vscale x 1 x i64> @intrinsic_vsext_vf4_nxv1i64(<vscale x 1 x i16> %0, iXLen %1) nounwind {
189 ; CHECK-LABEL: intrinsic_vsext_vf4_nxv1i64:
190 ; CHECK: # %bb.0: # %entry
191 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
192 ; CHECK-NEXT: vsext.vf4 v9, v8
193 ; CHECK-NEXT: vmv.v.v v8, v9
196 %a = call <vscale x 1 x i64> @llvm.riscv.vsext.nxv1i64.nxv1i16(
197 <vscale x 1 x i64> undef,
198 <vscale x 1 x i16> %0,
201 ret <vscale x 1 x i64> %a
204 declare <vscale x 1 x i64> @llvm.riscv.vsext.mask.nxv1i64.nxv1i16(
211 define <vscale x 1 x i64> @intrinsic_vsext_mask_vf4_nxv1i64(<vscale x 1 x i1> %0, <vscale x 1 x i64> %1, <vscale x 1 x i16> %2, iXLen %3) nounwind {
212 ; CHECK-LABEL: intrinsic_vsext_mask_vf4_nxv1i64:
213 ; CHECK: # %bb.0: # %entry
214 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, mu
215 ; CHECK-NEXT: vsext.vf4 v8, v9, v0.t
218 %a = call <vscale x 1 x i64> @llvm.riscv.vsext.mask.nxv1i64.nxv1i16(
219 <vscale x 1 x i64> %1,
220 <vscale x 1 x i16> %2,
221 <vscale x 1 x i1> %0,
224 ret <vscale x 1 x i64> %a
227 declare <vscale x 2 x i64> @llvm.riscv.vsext.nxv2i64.nxv2i16(
232 define <vscale x 2 x i64> @intrinsic_vsext_vf4_nxv2i64(<vscale x 2 x i16> %0, iXLen %1) nounwind {
233 ; CHECK-LABEL: intrinsic_vsext_vf4_nxv2i64:
234 ; CHECK: # %bb.0: # %entry
235 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
236 ; CHECK-NEXT: vsext.vf4 v10, v8
237 ; CHECK-NEXT: vmv.v.v v8, v10
240 %a = call <vscale x 2 x i64> @llvm.riscv.vsext.nxv2i64.nxv2i16(
241 <vscale x 2 x i64> undef,
242 <vscale x 2 x i16> %0,
245 ret <vscale x 2 x i64> %a
248 declare <vscale x 2 x i64> @llvm.riscv.vsext.mask.nxv2i64.nxv2i16(
255 define <vscale x 2 x i64> @intrinsic_vsext_mask_vf4_nxv2i64(<vscale x 2 x i1> %0, <vscale x 2 x i64> %1, <vscale x 2 x i16> %2, iXLen %3) nounwind {
256 ; CHECK-LABEL: intrinsic_vsext_mask_vf4_nxv2i64:
257 ; CHECK: # %bb.0: # %entry
258 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, mu
259 ; CHECK-NEXT: vsext.vf4 v8, v10, v0.t
262 %a = call <vscale x 2 x i64> @llvm.riscv.vsext.mask.nxv2i64.nxv2i16(
263 <vscale x 2 x i64> %1,
264 <vscale x 2 x i16> %2,
265 <vscale x 2 x i1> %0,
268 ret <vscale x 2 x i64> %a
271 declare <vscale x 4 x i64> @llvm.riscv.vsext.nxv4i64.nxv4i16(
276 define <vscale x 4 x i64> @intrinsic_vsext_vf4_nxv4i64(<vscale x 4 x i16> %0, iXLen %1) nounwind {
277 ; CHECK-LABEL: intrinsic_vsext_vf4_nxv4i64:
278 ; CHECK: # %bb.0: # %entry
279 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
280 ; CHECK-NEXT: vsext.vf4 v12, v8
281 ; CHECK-NEXT: vmv.v.v v8, v12
284 %a = call <vscale x 4 x i64> @llvm.riscv.vsext.nxv4i64.nxv4i16(
285 <vscale x 4 x i64> undef,
286 <vscale x 4 x i16> %0,
289 ret <vscale x 4 x i64> %a
292 declare <vscale x 4 x i64> @llvm.riscv.vsext.mask.nxv4i64.nxv4i16(
299 define <vscale x 4 x i64> @intrinsic_vsext_mask_vf4_nxv4i64(<vscale x 4 x i1> %0, <vscale x 4 x i64> %1, <vscale x 4 x i16> %2, iXLen %3) nounwind {
300 ; CHECK-LABEL: intrinsic_vsext_mask_vf4_nxv4i64:
301 ; CHECK: # %bb.0: # %entry
302 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, mu
303 ; CHECK-NEXT: vsext.vf4 v8, v12, v0.t
306 %a = call <vscale x 4 x i64> @llvm.riscv.vsext.mask.nxv4i64.nxv4i16(
307 <vscale x 4 x i64> %1,
308 <vscale x 4 x i16> %2,
309 <vscale x 4 x i1> %0,
312 ret <vscale x 4 x i64> %a
315 declare <vscale x 8 x i64> @llvm.riscv.vsext.nxv8i64.nxv8i16(
320 define <vscale x 8 x i64> @intrinsic_vsext_vf4_nxv8i64(<vscale x 8 x i16> %0, iXLen %1) nounwind {
321 ; CHECK-LABEL: intrinsic_vsext_vf4_nxv8i64:
322 ; CHECK: # %bb.0: # %entry
323 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
324 ; CHECK-NEXT: vsext.vf4 v16, v8
325 ; CHECK-NEXT: vmv.v.v v8, v16
328 %a = call <vscale x 8 x i64> @llvm.riscv.vsext.nxv8i64.nxv8i16(
329 <vscale x 8 x i64> undef,
330 <vscale x 8 x i16> %0,
333 ret <vscale x 8 x i64> %a
336 declare <vscale x 8 x i64> @llvm.riscv.vsext.mask.nxv8i64.nxv8i16(
343 define <vscale x 8 x i64> @intrinsic_vsext_mask_vf4_nxv8i64(<vscale x 8 x i1> %0, <vscale x 8 x i64> %1, <vscale x 8 x i16> %2, iXLen %3) nounwind {
344 ; CHECK-LABEL: intrinsic_vsext_mask_vf4_nxv8i64:
345 ; CHECK: # %bb.0: # %entry
346 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, mu
347 ; CHECK-NEXT: vsext.vf4 v8, v16, v0.t
350 %a = call <vscale x 8 x i64> @llvm.riscv.vsext.mask.nxv8i64.nxv8i16(
351 <vscale x 8 x i64> %1,
352 <vscale x 8 x i16> %2,
353 <vscale x 8 x i1> %0,
356 ret <vscale x 8 x i64> %a
359 declare <vscale x 1 x i32> @llvm.riscv.vsext.nxv1i32.nxv1i8(
364 define <vscale x 1 x i32> @intrinsic_vsext_vf4_nxv1i32(<vscale x 1 x i8> %0, iXLen %1) nounwind {
365 ; CHECK-LABEL: intrinsic_vsext_vf4_nxv1i32:
366 ; CHECK: # %bb.0: # %entry
367 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
368 ; CHECK-NEXT: vsext.vf4 v9, v8
369 ; CHECK-NEXT: vmv1r.v v8, v9
372 %a = call <vscale x 1 x i32> @llvm.riscv.vsext.nxv1i32.nxv1i8(
373 <vscale x 1 x i32> undef,
374 <vscale x 1 x i8> %0,
377 ret <vscale x 1 x i32> %a
380 declare <vscale x 1 x i32> @llvm.riscv.vsext.mask.nxv1i32.nxv1i8(
387 define <vscale x 1 x i32> @intrinsic_vsext_mask_vf4_nxv1i32(<vscale x 1 x i1> %0, <vscale x 1 x i32> %1, <vscale x 1 x i8> %2, iXLen %3) nounwind {
388 ; CHECK-LABEL: intrinsic_vsext_mask_vf4_nxv1i32:
389 ; CHECK: # %bb.0: # %entry
390 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, mu
391 ; CHECK-NEXT: vsext.vf4 v8, v9, v0.t
394 %a = call <vscale x 1 x i32> @llvm.riscv.vsext.mask.nxv1i32.nxv1i8(
395 <vscale x 1 x i32> %1,
396 <vscale x 1 x i8> %2,
397 <vscale x 1 x i1> %0,
400 ret <vscale x 1 x i32> %a
403 declare <vscale x 2 x i32> @llvm.riscv.vsext.nxv2i32.nxv2i8(
408 define <vscale x 2 x i32> @intrinsic_vsext_vf4_nxv2i32(<vscale x 2 x i8> %0, iXLen %1) nounwind {
409 ; CHECK-LABEL: intrinsic_vsext_vf4_nxv2i32:
410 ; CHECK: # %bb.0: # %entry
411 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
412 ; CHECK-NEXT: vsext.vf4 v9, v8
413 ; CHECK-NEXT: vmv.v.v v8, v9
416 %a = call <vscale x 2 x i32> @llvm.riscv.vsext.nxv2i32.nxv2i8(
417 <vscale x 2 x i32> undef,
418 <vscale x 2 x i8> %0,
421 ret <vscale x 2 x i32> %a
424 declare <vscale x 2 x i32> @llvm.riscv.vsext.mask.nxv2i32.nxv2i8(
431 define <vscale x 2 x i32> @intrinsic_vsext_mask_vf4_nxv2i32(<vscale x 2 x i1> %0, <vscale x 2 x i32> %1, <vscale x 2 x i8> %2, iXLen %3) nounwind {
432 ; CHECK-LABEL: intrinsic_vsext_mask_vf4_nxv2i32:
433 ; CHECK: # %bb.0: # %entry
434 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, mu
435 ; CHECK-NEXT: vsext.vf4 v8, v9, v0.t
438 %a = call <vscale x 2 x i32> @llvm.riscv.vsext.mask.nxv2i32.nxv2i8(
439 <vscale x 2 x i32> %1,
440 <vscale x 2 x i8> %2,
441 <vscale x 2 x i1> %0,
444 ret <vscale x 2 x i32> %a
447 declare <vscale x 4 x i32> @llvm.riscv.vsext.nxv4i32.nxv4i8(
452 define <vscale x 4 x i32> @intrinsic_vsext_vf4_nxv4i32(<vscale x 4 x i8> %0, iXLen %1) nounwind {
453 ; CHECK-LABEL: intrinsic_vsext_vf4_nxv4i32:
454 ; CHECK: # %bb.0: # %entry
455 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
456 ; CHECK-NEXT: vsext.vf4 v10, v8
457 ; CHECK-NEXT: vmv.v.v v8, v10
460 %a = call <vscale x 4 x i32> @llvm.riscv.vsext.nxv4i32.nxv4i8(
461 <vscale x 4 x i32> undef,
462 <vscale x 4 x i8> %0,
465 ret <vscale x 4 x i32> %a
468 declare <vscale x 4 x i32> @llvm.riscv.vsext.mask.nxv4i32.nxv4i8(
475 define <vscale x 4 x i32> @intrinsic_vsext_mask_vf4_nxv4i32(<vscale x 4 x i1> %0, <vscale x 4 x i32> %1, <vscale x 4 x i8> %2, iXLen %3) nounwind {
476 ; CHECK-LABEL: intrinsic_vsext_mask_vf4_nxv4i32:
477 ; CHECK: # %bb.0: # %entry
478 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, mu
479 ; CHECK-NEXT: vsext.vf4 v8, v10, v0.t
482 %a = call <vscale x 4 x i32> @llvm.riscv.vsext.mask.nxv4i32.nxv4i8(
483 <vscale x 4 x i32> %1,
484 <vscale x 4 x i8> %2,
485 <vscale x 4 x i1> %0,
488 ret <vscale x 4 x i32> %a
491 declare <vscale x 8 x i32> @llvm.riscv.vsext.nxv8i32.nxv8i8(
496 define <vscale x 8 x i32> @intrinsic_vsext_vf4_nxv8i32(<vscale x 8 x i8> %0, iXLen %1) nounwind {
497 ; CHECK-LABEL: intrinsic_vsext_vf4_nxv8i32:
498 ; CHECK: # %bb.0: # %entry
499 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
500 ; CHECK-NEXT: vsext.vf4 v12, v8
501 ; CHECK-NEXT: vmv.v.v v8, v12
504 %a = call <vscale x 8 x i32> @llvm.riscv.vsext.nxv8i32.nxv8i8(
505 <vscale x 8 x i32> undef,
506 <vscale x 8 x i8> %0,
509 ret <vscale x 8 x i32> %a
512 declare <vscale x 8 x i32> @llvm.riscv.vsext.mask.nxv8i32.nxv8i8(
519 define <vscale x 8 x i32> @intrinsic_vsext_mask_vf4_nxv8i32(<vscale x 8 x i1> %0, <vscale x 8 x i32> %1, <vscale x 8 x i8> %2, iXLen %3) nounwind {
520 ; CHECK-LABEL: intrinsic_vsext_mask_vf4_nxv8i32:
521 ; CHECK: # %bb.0: # %entry
522 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, mu
523 ; CHECK-NEXT: vsext.vf4 v8, v12, v0.t
526 %a = call <vscale x 8 x i32> @llvm.riscv.vsext.mask.nxv8i32.nxv8i8(
527 <vscale x 8 x i32> %1,
528 <vscale x 8 x i8> %2,
529 <vscale x 8 x i1> %0,
532 ret <vscale x 8 x i32> %a
535 declare <vscale x 16 x i32> @llvm.riscv.vsext.nxv16i32.nxv16i8(
540 define <vscale x 16 x i32> @intrinsic_vsext_vf4_nxv16i32(<vscale x 16 x i8> %0, iXLen %1) nounwind {
541 ; CHECK-LABEL: intrinsic_vsext_vf4_nxv16i32:
542 ; CHECK: # %bb.0: # %entry
543 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
544 ; CHECK-NEXT: vsext.vf4 v16, v8
545 ; CHECK-NEXT: vmv.v.v v8, v16
548 %a = call <vscale x 16 x i32> @llvm.riscv.vsext.nxv16i32.nxv16i8(
549 <vscale x 16 x i32> undef,
550 <vscale x 16 x i8> %0,
553 ret <vscale x 16 x i32> %a
556 declare <vscale x 16 x i32> @llvm.riscv.vsext.mask.nxv16i32.nxv16i8(
563 define <vscale x 16 x i32> @intrinsic_vsext_mask_vf4_nxv16i32(<vscale x 16 x i1> %0, <vscale x 16 x i32> %1, <vscale x 16 x i8> %2, iXLen %3) nounwind {
564 ; CHECK-LABEL: intrinsic_vsext_mask_vf4_nxv16i32:
565 ; CHECK: # %bb.0: # %entry
566 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, mu
567 ; CHECK-NEXT: vsext.vf4 v8, v16, v0.t
570 %a = call <vscale x 16 x i32> @llvm.riscv.vsext.mask.nxv16i32.nxv16i8(
571 <vscale x 16 x i32> %1,
572 <vscale x 16 x i8> %2,
573 <vscale x 16 x i1> %0,
576 ret <vscale x 16 x i32> %a
579 declare <vscale x 1 x i64> @llvm.riscv.vsext.nxv1i64.nxv1i32(
584 define <vscale x 1 x i64> @intrinsic_vsext_vf2_nxv1i64(<vscale x 1 x i32> %0, iXLen %1) nounwind {
585 ; CHECK-LABEL: intrinsic_vsext_vf2_nxv1i64:
586 ; CHECK: # %bb.0: # %entry
587 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
588 ; CHECK-NEXT: vsext.vf2 v9, v8
589 ; CHECK-NEXT: vmv.v.v v8, v9
592 %a = call <vscale x 1 x i64> @llvm.riscv.vsext.nxv1i64.nxv1i32(
593 <vscale x 1 x i64> undef,
594 <vscale x 1 x i32> %0,
597 ret <vscale x 1 x i64> %a
600 declare <vscale x 1 x i64> @llvm.riscv.vsext.mask.nxv1i64.nxv1i32(
607 define <vscale x 1 x i64> @intrinsic_vsext_mask_vf2_nxv1i64(<vscale x 1 x i1> %0, <vscale x 1 x i64> %1, <vscale x 1 x i32> %2, iXLen %3) nounwind {
608 ; CHECK-LABEL: intrinsic_vsext_mask_vf2_nxv1i64:
609 ; CHECK: # %bb.0: # %entry
610 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, mu
611 ; CHECK-NEXT: vsext.vf2 v8, v9, v0.t
614 %a = call <vscale x 1 x i64> @llvm.riscv.vsext.mask.nxv1i64.nxv1i32(
615 <vscale x 1 x i64> %1,
616 <vscale x 1 x i32> %2,
617 <vscale x 1 x i1> %0,
620 ret <vscale x 1 x i64> %a
623 declare <vscale x 2 x i64> @llvm.riscv.vsext.nxv2i64.nxv2i32(
628 define <vscale x 2 x i64> @intrinsic_vsext_vf2_nxv2i64(<vscale x 2 x i32> %0, iXLen %1) nounwind {
629 ; CHECK-LABEL: intrinsic_vsext_vf2_nxv2i64:
630 ; CHECK: # %bb.0: # %entry
631 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
632 ; CHECK-NEXT: vsext.vf2 v10, v8
633 ; CHECK-NEXT: vmv.v.v v8, v10
636 %a = call <vscale x 2 x i64> @llvm.riscv.vsext.nxv2i64.nxv2i32(
637 <vscale x 2 x i64> undef,
638 <vscale x 2 x i32> %0,
641 ret <vscale x 2 x i64> %a
644 declare <vscale x 2 x i64> @llvm.riscv.vsext.mask.nxv2i64.nxv2i32(
651 define <vscale x 2 x i64> @intrinsic_vsext_mask_vf2_nxv2i64(<vscale x 2 x i1> %0, <vscale x 2 x i64> %1, <vscale x 2 x i32> %2, iXLen %3) nounwind {
652 ; CHECK-LABEL: intrinsic_vsext_mask_vf2_nxv2i64:
653 ; CHECK: # %bb.0: # %entry
654 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, mu
655 ; CHECK-NEXT: vsext.vf2 v8, v10, v0.t
658 %a = call <vscale x 2 x i64> @llvm.riscv.vsext.mask.nxv2i64.nxv2i32(
659 <vscale x 2 x i64> %1,
660 <vscale x 2 x i32> %2,
661 <vscale x 2 x i1> %0,
664 ret <vscale x 2 x i64> %a
667 declare <vscale x 4 x i64> @llvm.riscv.vsext.nxv4i64.nxv4i32(
672 define <vscale x 4 x i64> @intrinsic_vsext_vf2_nxv4i64(<vscale x 4 x i32> %0, iXLen %1) nounwind {
673 ; CHECK-LABEL: intrinsic_vsext_vf2_nxv4i64:
674 ; CHECK: # %bb.0: # %entry
675 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
676 ; CHECK-NEXT: vsext.vf2 v12, v8
677 ; CHECK-NEXT: vmv.v.v v8, v12
680 %a = call <vscale x 4 x i64> @llvm.riscv.vsext.nxv4i64.nxv4i32(
681 <vscale x 4 x i64> undef,
682 <vscale x 4 x i32> %0,
685 ret <vscale x 4 x i64> %a
688 declare <vscale x 4 x i64> @llvm.riscv.vsext.mask.nxv4i64.nxv4i32(
695 define <vscale x 4 x i64> @intrinsic_vsext_mask_vf2_nxv4i64(<vscale x 4 x i1> %0, <vscale x 4 x i64> %1, <vscale x 4 x i32> %2, iXLen %3) nounwind {
696 ; CHECK-LABEL: intrinsic_vsext_mask_vf2_nxv4i64:
697 ; CHECK: # %bb.0: # %entry
698 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, mu
699 ; CHECK-NEXT: vsext.vf2 v8, v12, v0.t
702 %a = call <vscale x 4 x i64> @llvm.riscv.vsext.mask.nxv4i64.nxv4i32(
703 <vscale x 4 x i64> %1,
704 <vscale x 4 x i32> %2,
705 <vscale x 4 x i1> %0,
708 ret <vscale x 4 x i64> %a
711 declare <vscale x 8 x i64> @llvm.riscv.vsext.nxv8i64.nxv8i32(
716 define <vscale x 8 x i64> @intrinsic_vsext_vf2_nxv8i64(<vscale x 8 x i32> %0, iXLen %1) nounwind {
717 ; CHECK-LABEL: intrinsic_vsext_vf2_nxv8i64:
718 ; CHECK: # %bb.0: # %entry
719 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
720 ; CHECK-NEXT: vsext.vf2 v16, v8
721 ; CHECK-NEXT: vmv.v.v v8, v16
724 %a = call <vscale x 8 x i64> @llvm.riscv.vsext.nxv8i64.nxv8i32(
725 <vscale x 8 x i64> undef,
726 <vscale x 8 x i32> %0,
729 ret <vscale x 8 x i64> %a
732 declare <vscale x 8 x i64> @llvm.riscv.vsext.mask.nxv8i64.nxv8i32(
739 define <vscale x 8 x i64> @intrinsic_vsext_mask_vf2_nxv8i64(<vscale x 8 x i1> %0, <vscale x 8 x i64> %1, <vscale x 8 x i32> %2, iXLen %3) nounwind {
740 ; CHECK-LABEL: intrinsic_vsext_mask_vf2_nxv8i64:
741 ; CHECK: # %bb.0: # %entry
742 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, mu
743 ; CHECK-NEXT: vsext.vf2 v8, v16, v0.t
746 %a = call <vscale x 8 x i64> @llvm.riscv.vsext.mask.nxv8i64.nxv8i32(
747 <vscale x 8 x i64> %1,
748 <vscale x 8 x i32> %2,
749 <vscale x 8 x i1> %0,
752 ret <vscale x 8 x i64> %a
755 declare <vscale x 1 x i32> @llvm.riscv.vsext.nxv1i32.nxv1i16(
760 define <vscale x 1 x i32> @intrinsic_vsext_vf2_nxv1i32(<vscale x 1 x i16> %0, iXLen %1) nounwind {
761 ; CHECK-LABEL: intrinsic_vsext_vf2_nxv1i32:
762 ; CHECK: # %bb.0: # %entry
763 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
764 ; CHECK-NEXT: vsext.vf2 v9, v8
765 ; CHECK-NEXT: vmv1r.v v8, v9
768 %a = call <vscale x 1 x i32> @llvm.riscv.vsext.nxv1i32.nxv1i16(
769 <vscale x 1 x i32> undef,
770 <vscale x 1 x i16> %0,
773 ret <vscale x 1 x i32> %a
776 declare <vscale x 1 x i32> @llvm.riscv.vsext.mask.nxv1i32.nxv1i16(
783 define <vscale x 1 x i32> @intrinsic_vsext_mask_vf2_nxv1i32(<vscale x 1 x i1> %0, <vscale x 1 x i32> %1, <vscale x 1 x i16> %2, iXLen %3) nounwind {
784 ; CHECK-LABEL: intrinsic_vsext_mask_vf2_nxv1i32:
785 ; CHECK: # %bb.0: # %entry
786 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, mu
787 ; CHECK-NEXT: vsext.vf2 v8, v9, v0.t
790 %a = call <vscale x 1 x i32> @llvm.riscv.vsext.mask.nxv1i32.nxv1i16(
791 <vscale x 1 x i32> %1,
792 <vscale x 1 x i16> %2,
793 <vscale x 1 x i1> %0,
796 ret <vscale x 1 x i32> %a
799 declare <vscale x 2 x i32> @llvm.riscv.vsext.nxv2i32.nxv2i16(
804 define <vscale x 2 x i32> @intrinsic_vsext_vf2_nxv2i32(<vscale x 2 x i16> %0, iXLen %1) nounwind {
805 ; CHECK-LABEL: intrinsic_vsext_vf2_nxv2i32:
806 ; CHECK: # %bb.0: # %entry
807 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
808 ; CHECK-NEXT: vsext.vf2 v9, v8
809 ; CHECK-NEXT: vmv.v.v v8, v9
812 %a = call <vscale x 2 x i32> @llvm.riscv.vsext.nxv2i32.nxv2i16(
813 <vscale x 2 x i32> undef,
814 <vscale x 2 x i16> %0,
817 ret <vscale x 2 x i32> %a
820 declare <vscale x 2 x i32> @llvm.riscv.vsext.mask.nxv2i32.nxv2i16(
827 define <vscale x 2 x i32> @intrinsic_vsext_mask_vf2_nxv2i32(<vscale x 2 x i1> %0, <vscale x 2 x i32> %1, <vscale x 2 x i16> %2, iXLen %3) nounwind {
828 ; CHECK-LABEL: intrinsic_vsext_mask_vf2_nxv2i32:
829 ; CHECK: # %bb.0: # %entry
830 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, mu
831 ; CHECK-NEXT: vsext.vf2 v8, v9, v0.t
834 %a = call <vscale x 2 x i32> @llvm.riscv.vsext.mask.nxv2i32.nxv2i16(
835 <vscale x 2 x i32> %1,
836 <vscale x 2 x i16> %2,
837 <vscale x 2 x i1> %0,
840 ret <vscale x 2 x i32> %a
843 declare <vscale x 4 x i32> @llvm.riscv.vsext.nxv4i32.nxv4i16(
848 define <vscale x 4 x i32> @intrinsic_vsext_vf2_nxv4i32(<vscale x 4 x i16> %0, iXLen %1) nounwind {
849 ; CHECK-LABEL: intrinsic_vsext_vf2_nxv4i32:
850 ; CHECK: # %bb.0: # %entry
851 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
852 ; CHECK-NEXT: vsext.vf2 v10, v8
853 ; CHECK-NEXT: vmv.v.v v8, v10
856 %a = call <vscale x 4 x i32> @llvm.riscv.vsext.nxv4i32.nxv4i16(
857 <vscale x 4 x i32> undef,
858 <vscale x 4 x i16> %0,
861 ret <vscale x 4 x i32> %a
864 declare <vscale x 4 x i32> @llvm.riscv.vsext.mask.nxv4i32.nxv4i16(
871 define <vscale x 4 x i32> @intrinsic_vsext_mask_vf2_nxv4i32(<vscale x 4 x i1> %0, <vscale x 4 x i32> %1, <vscale x 4 x i16> %2, iXLen %3) nounwind {
872 ; CHECK-LABEL: intrinsic_vsext_mask_vf2_nxv4i32:
873 ; CHECK: # %bb.0: # %entry
874 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, mu
875 ; CHECK-NEXT: vsext.vf2 v8, v10, v0.t
878 %a = call <vscale x 4 x i32> @llvm.riscv.vsext.mask.nxv4i32.nxv4i16(
879 <vscale x 4 x i32> %1,
880 <vscale x 4 x i16> %2,
881 <vscale x 4 x i1> %0,
884 ret <vscale x 4 x i32> %a
887 declare <vscale x 8 x i32> @llvm.riscv.vsext.nxv8i32.nxv8i16(
892 define <vscale x 8 x i32> @intrinsic_vsext_vf2_nxv8i32(<vscale x 8 x i16> %0, iXLen %1) nounwind {
893 ; CHECK-LABEL: intrinsic_vsext_vf2_nxv8i32:
894 ; CHECK: # %bb.0: # %entry
895 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
896 ; CHECK-NEXT: vsext.vf2 v12, v8
897 ; CHECK-NEXT: vmv.v.v v8, v12
900 %a = call <vscale x 8 x i32> @llvm.riscv.vsext.nxv8i32.nxv8i16(
901 <vscale x 8 x i32> undef,
902 <vscale x 8 x i16> %0,
905 ret <vscale x 8 x i32> %a
908 declare <vscale x 8 x i32> @llvm.riscv.vsext.mask.nxv8i32.nxv8i16(
915 define <vscale x 8 x i32> @intrinsic_vsext_mask_vf2_nxv8i32(<vscale x 8 x i1> %0, <vscale x 8 x i32> %1, <vscale x 8 x i16> %2, iXLen %3) nounwind {
916 ; CHECK-LABEL: intrinsic_vsext_mask_vf2_nxv8i32:
917 ; CHECK: # %bb.0: # %entry
918 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, mu
919 ; CHECK-NEXT: vsext.vf2 v8, v12, v0.t
922 %a = call <vscale x 8 x i32> @llvm.riscv.vsext.mask.nxv8i32.nxv8i16(
923 <vscale x 8 x i32> %1,
924 <vscale x 8 x i16> %2,
925 <vscale x 8 x i1> %0,
928 ret <vscale x 8 x i32> %a
931 declare <vscale x 16 x i32> @llvm.riscv.vsext.nxv16i32.nxv16i16(
936 define <vscale x 16 x i32> @intrinsic_vsext_vf2_nxv16i32(<vscale x 16 x i16> %0, iXLen %1) nounwind {
937 ; CHECK-LABEL: intrinsic_vsext_vf2_nxv16i32:
938 ; CHECK: # %bb.0: # %entry
939 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
940 ; CHECK-NEXT: vsext.vf2 v16, v8
941 ; CHECK-NEXT: vmv.v.v v8, v16
944 %a = call <vscale x 16 x i32> @llvm.riscv.vsext.nxv16i32.nxv16i16(
945 <vscale x 16 x i32> undef,
946 <vscale x 16 x i16> %0,
949 ret <vscale x 16 x i32> %a
952 declare <vscale x 16 x i32> @llvm.riscv.vsext.mask.nxv16i32.nxv16i16(
959 define <vscale x 16 x i32> @intrinsic_vsext_mask_vf2_nxv16i32(<vscale x 16 x i1> %0, <vscale x 16 x i32> %1, <vscale x 16 x i16> %2, iXLen %3) nounwind {
960 ; CHECK-LABEL: intrinsic_vsext_mask_vf2_nxv16i32:
961 ; CHECK: # %bb.0: # %entry
962 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, mu
963 ; CHECK-NEXT: vsext.vf2 v8, v16, v0.t
966 %a = call <vscale x 16 x i32> @llvm.riscv.vsext.mask.nxv16i32.nxv16i16(
967 <vscale x 16 x i32> %1,
968 <vscale x 16 x i16> %2,
969 <vscale x 16 x i1> %0,
972 ret <vscale x 16 x i32> %a
975 declare <vscale x 1 x i16> @llvm.riscv.vsext.nxv1i16.nxv1i8(
980 define <vscale x 1 x i16> @intrinsic_vsext_vf2_nxv1i16(<vscale x 1 x i8> %0, iXLen %1) nounwind {
981 ; CHECK-LABEL: intrinsic_vsext_vf2_nxv1i16:
982 ; CHECK: # %bb.0: # %entry
983 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
984 ; CHECK-NEXT: vsext.vf2 v9, v8
985 ; CHECK-NEXT: vmv1r.v v8, v9
988 %a = call <vscale x 1 x i16> @llvm.riscv.vsext.nxv1i16.nxv1i8(
989 <vscale x 1 x i16> undef,
990 <vscale x 1 x i8> %0,
993 ret <vscale x 1 x i16> %a
996 declare <vscale x 1 x i16> @llvm.riscv.vsext.mask.nxv1i16.nxv1i8(
1003 define <vscale x 1 x i16> @intrinsic_vsext_mask_vf2_nxv1i16(<vscale x 1 x i1> %0, <vscale x 1 x i16> %1, <vscale x 1 x i8> %2, iXLen %3) nounwind {
1004 ; CHECK-LABEL: intrinsic_vsext_mask_vf2_nxv1i16:
1005 ; CHECK: # %bb.0: # %entry
1006 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, mu
1007 ; CHECK-NEXT: vsext.vf2 v8, v9, v0.t
1010 %a = call <vscale x 1 x i16> @llvm.riscv.vsext.mask.nxv1i16.nxv1i8(
1011 <vscale x 1 x i16> %1,
1012 <vscale x 1 x i8> %2,
1013 <vscale x 1 x i1> %0,
1016 ret <vscale x 1 x i16> %a
1019 declare <vscale x 2 x i16> @llvm.riscv.vsext.nxv2i16.nxv2i8(
1024 define <vscale x 2 x i16> @intrinsic_vsext_vf2_nxv2i16(<vscale x 2 x i8> %0, iXLen %1) nounwind {
1025 ; CHECK-LABEL: intrinsic_vsext_vf2_nxv2i16:
1026 ; CHECK: # %bb.0: # %entry
1027 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1028 ; CHECK-NEXT: vsext.vf2 v9, v8
1029 ; CHECK-NEXT: vmv1r.v v8, v9
1032 %a = call <vscale x 2 x i16> @llvm.riscv.vsext.nxv2i16.nxv2i8(
1033 <vscale x 2 x i16> undef,
1034 <vscale x 2 x i8> %0,
1037 ret <vscale x 2 x i16> %a
1040 declare <vscale x 2 x i16> @llvm.riscv.vsext.mask.nxv2i16.nxv2i8(
1047 define <vscale x 2 x i16> @intrinsic_vsext_mask_vf2_nxv2i16(<vscale x 2 x i1> %0, <vscale x 2 x i16> %1, <vscale x 2 x i8> %2, iXLen %3) nounwind {
1048 ; CHECK-LABEL: intrinsic_vsext_mask_vf2_nxv2i16:
1049 ; CHECK: # %bb.0: # %entry
1050 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, mu
1051 ; CHECK-NEXT: vsext.vf2 v8, v9, v0.t
1054 %a = call <vscale x 2 x i16> @llvm.riscv.vsext.mask.nxv2i16.nxv2i8(
1055 <vscale x 2 x i16> %1,
1056 <vscale x 2 x i8> %2,
1057 <vscale x 2 x i1> %0,
1060 ret <vscale x 2 x i16> %a
1063 declare <vscale x 4 x i16> @llvm.riscv.vsext.nxv4i16.nxv4i8(
1068 define <vscale x 4 x i16> @intrinsic_vsext_vf2_nxv4i16(<vscale x 4 x i8> %0, iXLen %1) nounwind {
1069 ; CHECK-LABEL: intrinsic_vsext_vf2_nxv4i16:
1070 ; CHECK: # %bb.0: # %entry
1071 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
1072 ; CHECK-NEXT: vsext.vf2 v9, v8
1073 ; CHECK-NEXT: vmv.v.v v8, v9
1076 %a = call <vscale x 4 x i16> @llvm.riscv.vsext.nxv4i16.nxv4i8(
1077 <vscale x 4 x i16> undef,
1078 <vscale x 4 x i8> %0,
1081 ret <vscale x 4 x i16> %a
1084 declare <vscale x 4 x i16> @llvm.riscv.vsext.mask.nxv4i16.nxv4i8(
1091 define <vscale x 4 x i16> @intrinsic_vsext_mask_vf2_nxv4i16(<vscale x 4 x i1> %0, <vscale x 4 x i16> %1, <vscale x 4 x i8> %2, iXLen %3) nounwind {
1092 ; CHECK-LABEL: intrinsic_vsext_mask_vf2_nxv4i16:
1093 ; CHECK: # %bb.0: # %entry
1094 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, mu
1095 ; CHECK-NEXT: vsext.vf2 v8, v9, v0.t
1098 %a = call <vscale x 4 x i16> @llvm.riscv.vsext.mask.nxv4i16.nxv4i8(
1099 <vscale x 4 x i16> %1,
1100 <vscale x 4 x i8> %2,
1101 <vscale x 4 x i1> %0,
1104 ret <vscale x 4 x i16> %a
1107 declare <vscale x 8 x i16> @llvm.riscv.vsext.nxv8i16.nxv8i8(
1112 define <vscale x 8 x i16> @intrinsic_vsext_vf2_nxv8i16(<vscale x 8 x i8> %0, iXLen %1) nounwind {
1113 ; CHECK-LABEL: intrinsic_vsext_vf2_nxv8i16:
1114 ; CHECK: # %bb.0: # %entry
1115 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
1116 ; CHECK-NEXT: vsext.vf2 v10, v8
1117 ; CHECK-NEXT: vmv.v.v v8, v10
1120 %a = call <vscale x 8 x i16> @llvm.riscv.vsext.nxv8i16.nxv8i8(
1121 <vscale x 8 x i16> undef,
1122 <vscale x 8 x i8> %0,
1125 ret <vscale x 8 x i16> %a
1128 declare <vscale x 8 x i16> @llvm.riscv.vsext.mask.nxv8i16.nxv8i8(
1135 define <vscale x 8 x i16> @intrinsic_vsext_mask_vf2_nxv8i16(<vscale x 8 x i1> %0, <vscale x 8 x i16> %1, <vscale x 8 x i8> %2, iXLen %3) nounwind {
1136 ; CHECK-LABEL: intrinsic_vsext_mask_vf2_nxv8i16:
1137 ; CHECK: # %bb.0: # %entry
1138 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, mu
1139 ; CHECK-NEXT: vsext.vf2 v8, v10, v0.t
1142 %a = call <vscale x 8 x i16> @llvm.riscv.vsext.mask.nxv8i16.nxv8i8(
1143 <vscale x 8 x i16> %1,
1144 <vscale x 8 x i8> %2,
1145 <vscale x 8 x i1> %0,
1148 ret <vscale x 8 x i16> %a
1151 declare <vscale x 16 x i16> @llvm.riscv.vsext.nxv16i16.nxv16i8(
1152 <vscale x 16 x i16>,
1156 define <vscale x 16 x i16> @intrinsic_vsext_vf2_nxv16i16(<vscale x 16 x i8> %0, iXLen %1) nounwind {
1157 ; CHECK-LABEL: intrinsic_vsext_vf2_nxv16i16:
1158 ; CHECK: # %bb.0: # %entry
1159 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
1160 ; CHECK-NEXT: vsext.vf2 v12, v8
1161 ; CHECK-NEXT: vmv.v.v v8, v12
1164 %a = call <vscale x 16 x i16> @llvm.riscv.vsext.nxv16i16.nxv16i8(
1165 <vscale x 16 x i16> undef,
1166 <vscale x 16 x i8> %0,
1169 ret <vscale x 16 x i16> %a
1172 declare <vscale x 16 x i16> @llvm.riscv.vsext.mask.nxv16i16.nxv16i8(
1173 <vscale x 16 x i16>,
1179 define <vscale x 16 x i16> @intrinsic_vsext_mask_vf2_nxv16i16(<vscale x 16 x i1> %0, <vscale x 16 x i16> %1, <vscale x 16 x i8> %2, iXLen %3) nounwind {
1180 ; CHECK-LABEL: intrinsic_vsext_mask_vf2_nxv16i16:
1181 ; CHECK: # %bb.0: # %entry
1182 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu
1183 ; CHECK-NEXT: vsext.vf2 v8, v12, v0.t
1186 %a = call <vscale x 16 x i16> @llvm.riscv.vsext.mask.nxv16i16.nxv16i8(
1187 <vscale x 16 x i16> %1,
1188 <vscale x 16 x i8> %2,
1189 <vscale x 16 x i1> %0,
1192 ret <vscale x 16 x i16> %a
1195 declare <vscale x 32 x i16> @llvm.riscv.vsext.nxv32i16.nxv32i8(
1196 <vscale x 32 x i16>,
1200 define <vscale x 32 x i16> @intrinsic_vsext_vf2_nxv32i16(<vscale x 32 x i8> %0, iXLen %1) nounwind {
1201 ; CHECK-LABEL: intrinsic_vsext_vf2_nxv32i16:
1202 ; CHECK: # %bb.0: # %entry
1203 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
1204 ; CHECK-NEXT: vsext.vf2 v16, v8
1205 ; CHECK-NEXT: vmv.v.v v8, v16
1208 %a = call <vscale x 32 x i16> @llvm.riscv.vsext.nxv32i16.nxv32i8(
1209 <vscale x 32 x i16> undef,
1210 <vscale x 32 x i8> %0,
1213 ret <vscale x 32 x i16> %a
1216 declare <vscale x 32 x i16> @llvm.riscv.vsext.mask.nxv32i16.nxv32i8(
1217 <vscale x 32 x i16>,
1223 define <vscale x 32 x i16> @intrinsic_vsext_mask_vf2_nxv32i16(<vscale x 32 x i1> %0, <vscale x 32 x i16> %1, <vscale x 32 x i8> %2, iXLen %3) nounwind {
1224 ; CHECK-LABEL: intrinsic_vsext_mask_vf2_nxv32i16:
1225 ; CHECK: # %bb.0: # %entry
1226 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, mu
1227 ; CHECK-NEXT: vsext.vf2 v8, v16, v0.t
1230 %a = call <vscale x 32 x i16> @llvm.riscv.vsext.mask.nxv32i16.nxv32i8(
1231 <vscale x 32 x i16> %1,
1232 <vscale x 32 x i8> %2,
1233 <vscale x 32 x i1> %0,
1236 ret <vscale x 32 x i16> %a