Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vluxei.ll
blob679726fe6669521897a9bf21b56494fc0f7b6f40
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,+zfh,+zvfh \
3 ; RUN:   -verify-machineinstrs -target-abi=ilp32d | FileCheck %s
4 ; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+zfh,+zvfh \
5 ; RUN:   -verify-machineinstrs -target-abi=lp64d | FileCheck %s
7 declare <vscale x 1 x i8> @llvm.riscv.vluxei.nxv1i8.nxv1i32(
8   <vscale x 1 x i8>,
9   ptr,
10   <vscale x 1 x i32>,
11   iXLen);
13 define <vscale x 1 x i8> @intrinsic_vluxei_v_nxv1i8_nxv1i8_nxv1i32(ptr %0, <vscale x 1 x i32> %1, iXLen %2) nounwind {
14 ; CHECK-LABEL: intrinsic_vluxei_v_nxv1i8_nxv1i8_nxv1i32:
15 ; CHECK:       # %bb.0: # %entry
16 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
17 ; CHECK-NEXT:    vluxei32.v v9, (a0), v8
18 ; CHECK-NEXT:    vmv1r.v v8, v9
19 ; CHECK-NEXT:    ret
20 entry:
21   %a = call <vscale x 1 x i8> @llvm.riscv.vluxei.nxv1i8.nxv1i32(
22     <vscale x 1 x i8> undef,
23     ptr %0,
24     <vscale x 1 x i32> %1,
25     iXLen %2)
27   ret <vscale x 1 x i8> %a
30 declare <vscale x 1 x i8> @llvm.riscv.vluxei.mask.nxv1i8.nxv1i32(
31   <vscale x 1 x i8>,
32   ptr,
33   <vscale x 1 x i32>,
34   <vscale x 1 x i1>,
35   iXLen,
36   iXLen);
38 define <vscale x 1 x i8> @intrinsic_vluxei_mask_v_nxv1i8_nxv1i8_nxv1i32(<vscale x 1 x i8> %0, ptr %1, <vscale x 1 x i32> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
39 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i8_nxv1i8_nxv1i32:
40 ; CHECK:       # %bb.0: # %entry
41 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, mu
42 ; CHECK-NEXT:    vluxei32.v v8, (a0), v9, v0.t
43 ; CHECK-NEXT:    ret
44 entry:
45   %a = call <vscale x 1 x i8> @llvm.riscv.vluxei.mask.nxv1i8.nxv1i32(
46     <vscale x 1 x i8> %0,
47     ptr %1,
48     <vscale x 1 x i32> %2,
49     <vscale x 1 x i1> %3,
50     iXLen %4, iXLen 1)
52   ret <vscale x 1 x i8> %a
55 declare <vscale x 2 x i8> @llvm.riscv.vluxei.nxv2i8.nxv2i32(
56   <vscale x 2 x i8>,
57   ptr,
58   <vscale x 2 x i32>,
59   iXLen);
61 define <vscale x 2 x i8> @intrinsic_vluxei_v_nxv2i8_nxv2i8_nxv2i32(ptr %0, <vscale x 2 x i32> %1, iXLen %2) nounwind {
62 ; CHECK-LABEL: intrinsic_vluxei_v_nxv2i8_nxv2i8_nxv2i32:
63 ; CHECK:       # %bb.0: # %entry
64 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
65 ; CHECK-NEXT:    vluxei32.v v9, (a0), v8
66 ; CHECK-NEXT:    vmv1r.v v8, v9
67 ; CHECK-NEXT:    ret
68 entry:
69   %a = call <vscale x 2 x i8> @llvm.riscv.vluxei.nxv2i8.nxv2i32(
70     <vscale x 2 x i8> undef,
71     ptr %0,
72     <vscale x 2 x i32> %1,
73     iXLen %2)
75   ret <vscale x 2 x i8> %a
78 declare <vscale x 2 x i8> @llvm.riscv.vluxei.mask.nxv2i8.nxv2i32(
79   <vscale x 2 x i8>,
80   ptr,
81   <vscale x 2 x i32>,
82   <vscale x 2 x i1>,
83   iXLen,
84   iXLen);
86 define <vscale x 2 x i8> @intrinsic_vluxei_mask_v_nxv2i8_nxv2i8_nxv2i32(<vscale x 2 x i8> %0, ptr %1, <vscale x 2 x i32> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
87 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i8_nxv2i8_nxv2i32:
88 ; CHECK:       # %bb.0: # %entry
89 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, mu
90 ; CHECK-NEXT:    vluxei32.v v8, (a0), v9, v0.t
91 ; CHECK-NEXT:    ret
92 entry:
93   %a = call <vscale x 2 x i8> @llvm.riscv.vluxei.mask.nxv2i8.nxv2i32(
94     <vscale x 2 x i8> %0,
95     ptr %1,
96     <vscale x 2 x i32> %2,
97     <vscale x 2 x i1> %3,
98     iXLen %4, iXLen 1)
100   ret <vscale x 2 x i8> %a
103 declare <vscale x 4 x i8> @llvm.riscv.vluxei.nxv4i8.nxv4i32(
104   <vscale x 4 x i8>,
105   ptr,
106   <vscale x 4 x i32>,
107   iXLen);
109 define <vscale x 4 x i8> @intrinsic_vluxei_v_nxv4i8_nxv4i8_nxv4i32(ptr %0, <vscale x 4 x i32> %1, iXLen %2) nounwind {
110 ; CHECK-LABEL: intrinsic_vluxei_v_nxv4i8_nxv4i8_nxv4i32:
111 ; CHECK:       # %bb.0: # %entry
112 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
113 ; CHECK-NEXT:    vluxei32.v v10, (a0), v8
114 ; CHECK-NEXT:    vmv1r.v v8, v10
115 ; CHECK-NEXT:    ret
116 entry:
117   %a = call <vscale x 4 x i8> @llvm.riscv.vluxei.nxv4i8.nxv4i32(
118     <vscale x 4 x i8> undef,
119     ptr %0,
120     <vscale x 4 x i32> %1,
121     iXLen %2)
123   ret <vscale x 4 x i8> %a
126 declare <vscale x 4 x i8> @llvm.riscv.vluxei.mask.nxv4i8.nxv4i32(
127   <vscale x 4 x i8>,
128   ptr,
129   <vscale x 4 x i32>,
130   <vscale x 4 x i1>,
131   iXLen,
132   iXLen);
134 define <vscale x 4 x i8> @intrinsic_vluxei_mask_v_nxv4i8_nxv4i8_nxv4i32(<vscale x 4 x i8> %0, ptr %1, <vscale x 4 x i32> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
135 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i8_nxv4i8_nxv4i32:
136 ; CHECK:       # %bb.0: # %entry
137 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, mu
138 ; CHECK-NEXT:    vluxei32.v v8, (a0), v10, v0.t
139 ; CHECK-NEXT:    ret
140 entry:
141   %a = call <vscale x 4 x i8> @llvm.riscv.vluxei.mask.nxv4i8.nxv4i32(
142     <vscale x 4 x i8> %0,
143     ptr %1,
144     <vscale x 4 x i32> %2,
145     <vscale x 4 x i1> %3,
146     iXLen %4, iXLen 1)
148   ret <vscale x 4 x i8> %a
151 declare <vscale x 8 x i8> @llvm.riscv.vluxei.nxv8i8.nxv8i32(
152   <vscale x 8 x i8>,
153   ptr,
154   <vscale x 8 x i32>,
155   iXLen);
157 define <vscale x 8 x i8> @intrinsic_vluxei_v_nxv8i8_nxv8i8_nxv8i32(ptr %0, <vscale x 8 x i32> %1, iXLen %2) nounwind {
158 ; CHECK-LABEL: intrinsic_vluxei_v_nxv8i8_nxv8i8_nxv8i32:
159 ; CHECK:       # %bb.0: # %entry
160 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
161 ; CHECK-NEXT:    vluxei32.v v12, (a0), v8
162 ; CHECK-NEXT:    vmv.v.v v8, v12
163 ; CHECK-NEXT:    ret
164 entry:
165   %a = call <vscale x 8 x i8> @llvm.riscv.vluxei.nxv8i8.nxv8i32(
166     <vscale x 8 x i8> undef,
167     ptr %0,
168     <vscale x 8 x i32> %1,
169     iXLen %2)
171   ret <vscale x 8 x i8> %a
174 declare <vscale x 8 x i8> @llvm.riscv.vluxei.mask.nxv8i8.nxv8i32(
175   <vscale x 8 x i8>,
176   ptr,
177   <vscale x 8 x i32>,
178   <vscale x 8 x i1>,
179   iXLen,
180   iXLen);
182 define <vscale x 8 x i8> @intrinsic_vluxei_mask_v_nxv8i8_nxv8i8_nxv8i32(<vscale x 8 x i8> %0, ptr %1, <vscale x 8 x i32> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
183 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i8_nxv8i8_nxv8i32:
184 ; CHECK:       # %bb.0: # %entry
185 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, mu
186 ; CHECK-NEXT:    vluxei32.v v8, (a0), v12, v0.t
187 ; CHECK-NEXT:    ret
188 entry:
189   %a = call <vscale x 8 x i8> @llvm.riscv.vluxei.mask.nxv8i8.nxv8i32(
190     <vscale x 8 x i8> %0,
191     ptr %1,
192     <vscale x 8 x i32> %2,
193     <vscale x 8 x i1> %3,
194     iXLen %4, iXLen 1)
196   ret <vscale x 8 x i8> %a
199 declare <vscale x 16 x i8> @llvm.riscv.vluxei.nxv16i8.nxv16i32(
200   <vscale x 16 x i8>,
201   ptr,
202   <vscale x 16 x i32>,
203   iXLen);
205 define <vscale x 16 x i8> @intrinsic_vluxei_v_nxv16i8_nxv16i8_nxv16i32(ptr %0, <vscale x 16 x i32> %1, iXLen %2) nounwind {
206 ; CHECK-LABEL: intrinsic_vluxei_v_nxv16i8_nxv16i8_nxv16i32:
207 ; CHECK:       # %bb.0: # %entry
208 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
209 ; CHECK-NEXT:    vluxei32.v v16, (a0), v8
210 ; CHECK-NEXT:    vmv.v.v v8, v16
211 ; CHECK-NEXT:    ret
212 entry:
213   %a = call <vscale x 16 x i8> @llvm.riscv.vluxei.nxv16i8.nxv16i32(
214     <vscale x 16 x i8> undef,
215     ptr %0,
216     <vscale x 16 x i32> %1,
217     iXLen %2)
219   ret <vscale x 16 x i8> %a
222 declare <vscale x 16 x i8> @llvm.riscv.vluxei.mask.nxv16i8.nxv16i32(
223   <vscale x 16 x i8>,
224   ptr,
225   <vscale x 16 x i32>,
226   <vscale x 16 x i1>,
227   iXLen,
228   iXLen);
230 define <vscale x 16 x i8> @intrinsic_vluxei_mask_v_nxv16i8_nxv16i8_nxv16i32(<vscale x 16 x i8> %0, ptr %1, <vscale x 16 x i32> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
231 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16i8_nxv16i8_nxv16i32:
232 ; CHECK:       # %bb.0: # %entry
233 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, mu
234 ; CHECK-NEXT:    vluxei32.v v8, (a0), v16, v0.t
235 ; CHECK-NEXT:    ret
236 entry:
237   %a = call <vscale x 16 x i8> @llvm.riscv.vluxei.mask.nxv16i8.nxv16i32(
238     <vscale x 16 x i8> %0,
239     ptr %1,
240     <vscale x 16 x i32> %2,
241     <vscale x 16 x i1> %3,
242     iXLen %4, iXLen 1)
244   ret <vscale x 16 x i8> %a
247 declare <vscale x 1 x i16> @llvm.riscv.vluxei.nxv1i16.nxv1i32(
248   <vscale x 1 x i16>,
249   ptr,
250   <vscale x 1 x i32>,
251   iXLen);
253 define <vscale x 1 x i16> @intrinsic_vluxei_v_nxv1i16_nxv1i16_nxv1i32(ptr %0, <vscale x 1 x i32> %1, iXLen %2) nounwind {
254 ; CHECK-LABEL: intrinsic_vluxei_v_nxv1i16_nxv1i16_nxv1i32:
255 ; CHECK:       # %bb.0: # %entry
256 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
257 ; CHECK-NEXT:    vluxei32.v v9, (a0), v8
258 ; CHECK-NEXT:    vmv1r.v v8, v9
259 ; CHECK-NEXT:    ret
260 entry:
261   %a = call <vscale x 1 x i16> @llvm.riscv.vluxei.nxv1i16.nxv1i32(
262     <vscale x 1 x i16> undef,
263     ptr %0,
264     <vscale x 1 x i32> %1,
265     iXLen %2)
267   ret <vscale x 1 x i16> %a
270 declare <vscale x 1 x i16> @llvm.riscv.vluxei.mask.nxv1i16.nxv1i32(
271   <vscale x 1 x i16>,
272   ptr,
273   <vscale x 1 x i32>,
274   <vscale x 1 x i1>,
275   iXLen,
276   iXLen);
278 define <vscale x 1 x i16> @intrinsic_vluxei_mask_v_nxv1i16_nxv1i16_nxv1i32(<vscale x 1 x i16> %0, ptr %1, <vscale x 1 x i32> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
279 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i16_nxv1i16_nxv1i32:
280 ; CHECK:       # %bb.0: # %entry
281 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu
282 ; CHECK-NEXT:    vluxei32.v v8, (a0), v9, v0.t
283 ; CHECK-NEXT:    ret
284 entry:
285   %a = call <vscale x 1 x i16> @llvm.riscv.vluxei.mask.nxv1i16.nxv1i32(
286     <vscale x 1 x i16> %0,
287     ptr %1,
288     <vscale x 1 x i32> %2,
289     <vscale x 1 x i1> %3,
290     iXLen %4, iXLen 1)
292   ret <vscale x 1 x i16> %a
295 declare <vscale x 2 x i16> @llvm.riscv.vluxei.nxv2i16.nxv2i32(
296   <vscale x 2 x i16>,
297   ptr,
298   <vscale x 2 x i32>,
299   iXLen);
301 define <vscale x 2 x i16> @intrinsic_vluxei_v_nxv2i16_nxv2i16_nxv2i32(ptr %0, <vscale x 2 x i32> %1, iXLen %2) nounwind {
302 ; CHECK-LABEL: intrinsic_vluxei_v_nxv2i16_nxv2i16_nxv2i32:
303 ; CHECK:       # %bb.0: # %entry
304 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
305 ; CHECK-NEXT:    vluxei32.v v9, (a0), v8
306 ; CHECK-NEXT:    vmv1r.v v8, v9
307 ; CHECK-NEXT:    ret
308 entry:
309   %a = call <vscale x 2 x i16> @llvm.riscv.vluxei.nxv2i16.nxv2i32(
310     <vscale x 2 x i16> undef,
311     ptr %0,
312     <vscale x 2 x i32> %1,
313     iXLen %2)
315   ret <vscale x 2 x i16> %a
318 declare <vscale x 2 x i16> @llvm.riscv.vluxei.mask.nxv2i16.nxv2i32(
319   <vscale x 2 x i16>,
320   ptr,
321   <vscale x 2 x i32>,
322   <vscale x 2 x i1>,
323   iXLen,
324   iXLen);
326 define <vscale x 2 x i16> @intrinsic_vluxei_mask_v_nxv2i16_nxv2i16_nxv2i32(<vscale x 2 x i16> %0, ptr %1, <vscale x 2 x i32> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
327 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i16_nxv2i16_nxv2i32:
328 ; CHECK:       # %bb.0: # %entry
329 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu
330 ; CHECK-NEXT:    vluxei32.v v8, (a0), v9, v0.t
331 ; CHECK-NEXT:    ret
332 entry:
333   %a = call <vscale x 2 x i16> @llvm.riscv.vluxei.mask.nxv2i16.nxv2i32(
334     <vscale x 2 x i16> %0,
335     ptr %1,
336     <vscale x 2 x i32> %2,
337     <vscale x 2 x i1> %3,
338     iXLen %4, iXLen 1)
340   ret <vscale x 2 x i16> %a
343 declare <vscale x 4 x i16> @llvm.riscv.vluxei.nxv4i16.nxv4i32(
344   <vscale x 4 x i16>,
345   ptr,
346   <vscale x 4 x i32>,
347   iXLen);
349 define <vscale x 4 x i16> @intrinsic_vluxei_v_nxv4i16_nxv4i16_nxv4i32(ptr %0, <vscale x 4 x i32> %1, iXLen %2) nounwind {
350 ; CHECK-LABEL: intrinsic_vluxei_v_nxv4i16_nxv4i16_nxv4i32:
351 ; CHECK:       # %bb.0: # %entry
352 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
353 ; CHECK-NEXT:    vluxei32.v v10, (a0), v8
354 ; CHECK-NEXT:    vmv.v.v v8, v10
355 ; CHECK-NEXT:    ret
356 entry:
357   %a = call <vscale x 4 x i16> @llvm.riscv.vluxei.nxv4i16.nxv4i32(
358     <vscale x 4 x i16> undef,
359     ptr %0,
360     <vscale x 4 x i32> %1,
361     iXLen %2)
363   ret <vscale x 4 x i16> %a
366 declare <vscale x 4 x i16> @llvm.riscv.vluxei.mask.nxv4i16.nxv4i32(
367   <vscale x 4 x i16>,
368   ptr,
369   <vscale x 4 x i32>,
370   <vscale x 4 x i1>,
371   iXLen,
372   iXLen);
374 define <vscale x 4 x i16> @intrinsic_vluxei_mask_v_nxv4i16_nxv4i16_nxv4i32(<vscale x 4 x i16> %0, ptr %1, <vscale x 4 x i32> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
375 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i16_nxv4i16_nxv4i32:
376 ; CHECK:       # %bb.0: # %entry
377 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu
378 ; CHECK-NEXT:    vluxei32.v v8, (a0), v10, v0.t
379 ; CHECK-NEXT:    ret
380 entry:
381   %a = call <vscale x 4 x i16> @llvm.riscv.vluxei.mask.nxv4i16.nxv4i32(
382     <vscale x 4 x i16> %0,
383     ptr %1,
384     <vscale x 4 x i32> %2,
385     <vscale x 4 x i1> %3,
386     iXLen %4, iXLen 1)
388   ret <vscale x 4 x i16> %a
391 declare <vscale x 8 x i16> @llvm.riscv.vluxei.nxv8i16.nxv8i32(
392   <vscale x 8 x i16>,
393   ptr,
394   <vscale x 8 x i32>,
395   iXLen);
397 define <vscale x 8 x i16> @intrinsic_vluxei_v_nxv8i16_nxv8i16_nxv8i32(ptr %0, <vscale x 8 x i32> %1, iXLen %2) nounwind {
398 ; CHECK-LABEL: intrinsic_vluxei_v_nxv8i16_nxv8i16_nxv8i32:
399 ; CHECK:       # %bb.0: # %entry
400 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
401 ; CHECK-NEXT:    vluxei32.v v12, (a0), v8
402 ; CHECK-NEXT:    vmv.v.v v8, v12
403 ; CHECK-NEXT:    ret
404 entry:
405   %a = call <vscale x 8 x i16> @llvm.riscv.vluxei.nxv8i16.nxv8i32(
406     <vscale x 8 x i16> undef,
407     ptr %0,
408     <vscale x 8 x i32> %1,
409     iXLen %2)
411   ret <vscale x 8 x i16> %a
414 declare <vscale x 8 x i16> @llvm.riscv.vluxei.mask.nxv8i16.nxv8i32(
415   <vscale x 8 x i16>,
416   ptr,
417   <vscale x 8 x i32>,
418   <vscale x 8 x i1>,
419   iXLen,
420   iXLen);
422 define <vscale x 8 x i16> @intrinsic_vluxei_mask_v_nxv8i16_nxv8i16_nxv8i32(<vscale x 8 x i16> %0, ptr %1, <vscale x 8 x i32> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
423 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i16_nxv8i16_nxv8i32:
424 ; CHECK:       # %bb.0: # %entry
425 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu
426 ; CHECK-NEXT:    vluxei32.v v8, (a0), v12, v0.t
427 ; CHECK-NEXT:    ret
428 entry:
429   %a = call <vscale x 8 x i16> @llvm.riscv.vluxei.mask.nxv8i16.nxv8i32(
430     <vscale x 8 x i16> %0,
431     ptr %1,
432     <vscale x 8 x i32> %2,
433     <vscale x 8 x i1> %3,
434     iXLen %4, iXLen 1)
436   ret <vscale x 8 x i16> %a
439 declare <vscale x 16 x i16> @llvm.riscv.vluxei.nxv16i16.nxv16i32(
440   <vscale x 16 x i16>,
441   ptr,
442   <vscale x 16 x i32>,
443   iXLen);
445 define <vscale x 16 x i16> @intrinsic_vluxei_v_nxv16i16_nxv16i16_nxv16i32(ptr %0, <vscale x 16 x i32> %1, iXLen %2) nounwind {
446 ; CHECK-LABEL: intrinsic_vluxei_v_nxv16i16_nxv16i16_nxv16i32:
447 ; CHECK:       # %bb.0: # %entry
448 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
449 ; CHECK-NEXT:    vluxei32.v v16, (a0), v8
450 ; CHECK-NEXT:    vmv.v.v v8, v16
451 ; CHECK-NEXT:    ret
452 entry:
453   %a = call <vscale x 16 x i16> @llvm.riscv.vluxei.nxv16i16.nxv16i32(
454     <vscale x 16 x i16> undef,
455     ptr %0,
456     <vscale x 16 x i32> %1,
457     iXLen %2)
459   ret <vscale x 16 x i16> %a
462 declare <vscale x 16 x i16> @llvm.riscv.vluxei.mask.nxv16i16.nxv16i32(
463   <vscale x 16 x i16>,
464   ptr,
465   <vscale x 16 x i32>,
466   <vscale x 16 x i1>,
467   iXLen,
468   iXLen);
470 define <vscale x 16 x i16> @intrinsic_vluxei_mask_v_nxv16i16_nxv16i16_nxv16i32(<vscale x 16 x i16> %0, ptr %1, <vscale x 16 x i32> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
471 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16i16_nxv16i16_nxv16i32:
472 ; CHECK:       # %bb.0: # %entry
473 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, mu
474 ; CHECK-NEXT:    vluxei32.v v8, (a0), v16, v0.t
475 ; CHECK-NEXT:    ret
476 entry:
477   %a = call <vscale x 16 x i16> @llvm.riscv.vluxei.mask.nxv16i16.nxv16i32(
478     <vscale x 16 x i16> %0,
479     ptr %1,
480     <vscale x 16 x i32> %2,
481     <vscale x 16 x i1> %3,
482     iXLen %4, iXLen 1)
484   ret <vscale x 16 x i16> %a
487 declare <vscale x 1 x i32> @llvm.riscv.vluxei.nxv1i32.nxv1i32(
488   <vscale x 1 x i32>,
489   ptr,
490   <vscale x 1 x i32>,
491   iXLen);
493 define <vscale x 1 x i32> @intrinsic_vluxei_v_nxv1i32_nxv1i32_nxv1i32(ptr %0, <vscale x 1 x i32> %1, iXLen %2) nounwind {
494 ; CHECK-LABEL: intrinsic_vluxei_v_nxv1i32_nxv1i32_nxv1i32:
495 ; CHECK:       # %bb.0: # %entry
496 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
497 ; CHECK-NEXT:    vluxei32.v v8, (a0), v8
498 ; CHECK-NEXT:    ret
499 entry:
500   %a = call <vscale x 1 x i32> @llvm.riscv.vluxei.nxv1i32.nxv1i32(
501     <vscale x 1 x i32> undef,
502     ptr %0,
503     <vscale x 1 x i32> %1,
504     iXLen %2)
506   ret <vscale x 1 x i32> %a
509 declare <vscale x 1 x i32> @llvm.riscv.vluxei.mask.nxv1i32.nxv1i32(
510   <vscale x 1 x i32>,
511   ptr,
512   <vscale x 1 x i32>,
513   <vscale x 1 x i1>,
514   iXLen,
515   iXLen);
517 define <vscale x 1 x i32> @intrinsic_vluxei_mask_v_nxv1i32_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, ptr %1, <vscale x 1 x i32> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
518 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i32_nxv1i32_nxv1i32:
519 ; CHECK:       # %bb.0: # %entry
520 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu
521 ; CHECK-NEXT:    vluxei32.v v8, (a0), v9, v0.t
522 ; CHECK-NEXT:    ret
523 entry:
524   %a = call <vscale x 1 x i32> @llvm.riscv.vluxei.mask.nxv1i32.nxv1i32(
525     <vscale x 1 x i32> %0,
526     ptr %1,
527     <vscale x 1 x i32> %2,
528     <vscale x 1 x i1> %3,
529     iXLen %4, iXLen 1)
531   ret <vscale x 1 x i32> %a
534 declare <vscale x 2 x i32> @llvm.riscv.vluxei.nxv2i32.nxv2i32(
535   <vscale x 2 x i32>,
536   ptr,
537   <vscale x 2 x i32>,
538   iXLen);
540 define <vscale x 2 x i32> @intrinsic_vluxei_v_nxv2i32_nxv2i32_nxv2i32(ptr %0, <vscale x 2 x i32> %1, iXLen %2) nounwind {
541 ; CHECK-LABEL: intrinsic_vluxei_v_nxv2i32_nxv2i32_nxv2i32:
542 ; CHECK:       # %bb.0: # %entry
543 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
544 ; CHECK-NEXT:    vluxei32.v v8, (a0), v8
545 ; CHECK-NEXT:    ret
546 entry:
547   %a = call <vscale x 2 x i32> @llvm.riscv.vluxei.nxv2i32.nxv2i32(
548     <vscale x 2 x i32> undef,
549     ptr %0,
550     <vscale x 2 x i32> %1,
551     iXLen %2)
553   ret <vscale x 2 x i32> %a
556 declare <vscale x 2 x i32> @llvm.riscv.vluxei.mask.nxv2i32.nxv2i32(
557   <vscale x 2 x i32>,
558   ptr,
559   <vscale x 2 x i32>,
560   <vscale x 2 x i1>,
561   iXLen,
562   iXLen);
564 define <vscale x 2 x i32> @intrinsic_vluxei_mask_v_nxv2i32_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, ptr %1, <vscale x 2 x i32> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
565 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i32_nxv2i32_nxv2i32:
566 ; CHECK:       # %bb.0: # %entry
567 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu
568 ; CHECK-NEXT:    vluxei32.v v8, (a0), v9, v0.t
569 ; CHECK-NEXT:    ret
570 entry:
571   %a = call <vscale x 2 x i32> @llvm.riscv.vluxei.mask.nxv2i32.nxv2i32(
572     <vscale x 2 x i32> %0,
573     ptr %1,
574     <vscale x 2 x i32> %2,
575     <vscale x 2 x i1> %3,
576     iXLen %4, iXLen 1)
578   ret <vscale x 2 x i32> %a
581 declare <vscale x 4 x i32> @llvm.riscv.vluxei.nxv4i32.nxv4i32(
582   <vscale x 4 x i32>,
583   ptr,
584   <vscale x 4 x i32>,
585   iXLen);
587 define <vscale x 4 x i32> @intrinsic_vluxei_v_nxv4i32_nxv4i32_nxv4i32(ptr %0, <vscale x 4 x i32> %1, iXLen %2) nounwind {
588 ; CHECK-LABEL: intrinsic_vluxei_v_nxv4i32_nxv4i32_nxv4i32:
589 ; CHECK:       # %bb.0: # %entry
590 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
591 ; CHECK-NEXT:    vluxei32.v v8, (a0), v8
592 ; CHECK-NEXT:    ret
593 entry:
594   %a = call <vscale x 4 x i32> @llvm.riscv.vluxei.nxv4i32.nxv4i32(
595     <vscale x 4 x i32> undef,
596     ptr %0,
597     <vscale x 4 x i32> %1,
598     iXLen %2)
600   ret <vscale x 4 x i32> %a
603 declare <vscale x 4 x i32> @llvm.riscv.vluxei.mask.nxv4i32.nxv4i32(
604   <vscale x 4 x i32>,
605   ptr,
606   <vscale x 4 x i32>,
607   <vscale x 4 x i1>,
608   iXLen,
609   iXLen);
611 define <vscale x 4 x i32> @intrinsic_vluxei_mask_v_nxv4i32_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, ptr %1, <vscale x 4 x i32> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
612 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i32_nxv4i32_nxv4i32:
613 ; CHECK:       # %bb.0: # %entry
614 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu
615 ; CHECK-NEXT:    vluxei32.v v8, (a0), v10, v0.t
616 ; CHECK-NEXT:    ret
617 entry:
618   %a = call <vscale x 4 x i32> @llvm.riscv.vluxei.mask.nxv4i32.nxv4i32(
619     <vscale x 4 x i32> %0,
620     ptr %1,
621     <vscale x 4 x i32> %2,
622     <vscale x 4 x i1> %3,
623     iXLen %4, iXLen 1)
625   ret <vscale x 4 x i32> %a
628 declare <vscale x 8 x i32> @llvm.riscv.vluxei.nxv8i32.nxv8i32(
629   <vscale x 8 x i32>,
630   ptr,
631   <vscale x 8 x i32>,
632   iXLen);
634 define <vscale x 8 x i32> @intrinsic_vluxei_v_nxv8i32_nxv8i32_nxv8i32(ptr %0, <vscale x 8 x i32> %1, iXLen %2) nounwind {
635 ; CHECK-LABEL: intrinsic_vluxei_v_nxv8i32_nxv8i32_nxv8i32:
636 ; CHECK:       # %bb.0: # %entry
637 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
638 ; CHECK-NEXT:    vluxei32.v v8, (a0), v8
639 ; CHECK-NEXT:    ret
640 entry:
641   %a = call <vscale x 8 x i32> @llvm.riscv.vluxei.nxv8i32.nxv8i32(
642     <vscale x 8 x i32> undef,
643     ptr %0,
644     <vscale x 8 x i32> %1,
645     iXLen %2)
647   ret <vscale x 8 x i32> %a
650 declare <vscale x 8 x i32> @llvm.riscv.vluxei.mask.nxv8i32.nxv8i32(
651   <vscale x 8 x i32>,
652   ptr,
653   <vscale x 8 x i32>,
654   <vscale x 8 x i1>,
655   iXLen,
656   iXLen);
658 define <vscale x 8 x i32> @intrinsic_vluxei_mask_v_nxv8i32_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, ptr %1, <vscale x 8 x i32> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
659 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i32_nxv8i32_nxv8i32:
660 ; CHECK:       # %bb.0: # %entry
661 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, mu
662 ; CHECK-NEXT:    vluxei32.v v8, (a0), v12, v0.t
663 ; CHECK-NEXT:    ret
664 entry:
665   %a = call <vscale x 8 x i32> @llvm.riscv.vluxei.mask.nxv8i32.nxv8i32(
666     <vscale x 8 x i32> %0,
667     ptr %1,
668     <vscale x 8 x i32> %2,
669     <vscale x 8 x i1> %3,
670     iXLen %4, iXLen 1)
672   ret <vscale x 8 x i32> %a
675 declare <vscale x 16 x i32> @llvm.riscv.vluxei.nxv16i32.nxv16i32(
676   <vscale x 16 x i32>,
677   ptr,
678   <vscale x 16 x i32>,
679   iXLen);
681 define <vscale x 16 x i32> @intrinsic_vluxei_v_nxv16i32_nxv16i32_nxv16i32(ptr %0, <vscale x 16 x i32> %1, iXLen %2) nounwind {
682 ; CHECK-LABEL: intrinsic_vluxei_v_nxv16i32_nxv16i32_nxv16i32:
683 ; CHECK:       # %bb.0: # %entry
684 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
685 ; CHECK-NEXT:    vluxei32.v v8, (a0), v8
686 ; CHECK-NEXT:    ret
687 entry:
688   %a = call <vscale x 16 x i32> @llvm.riscv.vluxei.nxv16i32.nxv16i32(
689     <vscale x 16 x i32> undef,
690     ptr %0,
691     <vscale x 16 x i32> %1,
692     iXLen %2)
694   ret <vscale x 16 x i32> %a
697 declare <vscale x 16 x i32> @llvm.riscv.vluxei.mask.nxv16i32.nxv16i32(
698   <vscale x 16 x i32>,
699   ptr,
700   <vscale x 16 x i32>,
701   <vscale x 16 x i1>,
702   iXLen,
703   iXLen);
705 define <vscale x 16 x i32> @intrinsic_vluxei_mask_v_nxv16i32_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, ptr %1, <vscale x 16 x i32> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
706 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16i32_nxv16i32_nxv16i32:
707 ; CHECK:       # %bb.0: # %entry
708 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
709 ; CHECK-NEXT:    vluxei32.v v8, (a0), v16, v0.t
710 ; CHECK-NEXT:    ret
711 entry:
712   %a = call <vscale x 16 x i32> @llvm.riscv.vluxei.mask.nxv16i32.nxv16i32(
713     <vscale x 16 x i32> %0,
714     ptr %1,
715     <vscale x 16 x i32> %2,
716     <vscale x 16 x i1> %3,
717     iXLen %4, iXLen 1)
719   ret <vscale x 16 x i32> %a
722 declare <vscale x 1 x i64> @llvm.riscv.vluxei.nxv1i64.nxv1i32(
723   <vscale x 1 x i64>,
724   ptr,
725   <vscale x 1 x i32>,
726   iXLen);
728 define <vscale x 1 x i64> @intrinsic_vluxei_v_nxv1i64_nxv1i64_nxv1i32(ptr %0, <vscale x 1 x i32> %1, iXLen %2) nounwind {
729 ; CHECK-LABEL: intrinsic_vluxei_v_nxv1i64_nxv1i64_nxv1i32:
730 ; CHECK:       # %bb.0: # %entry
731 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
732 ; CHECK-NEXT:    vluxei32.v v9, (a0), v8
733 ; CHECK-NEXT:    vmv.v.v v8, v9
734 ; CHECK-NEXT:    ret
735 entry:
736   %a = call <vscale x 1 x i64> @llvm.riscv.vluxei.nxv1i64.nxv1i32(
737     <vscale x 1 x i64> undef,
738     ptr %0,
739     <vscale x 1 x i32> %1,
740     iXLen %2)
742   ret <vscale x 1 x i64> %a
745 declare <vscale x 1 x i64> @llvm.riscv.vluxei.mask.nxv1i64.nxv1i32(
746   <vscale x 1 x i64>,
747   ptr,
748   <vscale x 1 x i32>,
749   <vscale x 1 x i1>,
750   iXLen,
751   iXLen);
753 define <vscale x 1 x i64> @intrinsic_vluxei_mask_v_nxv1i64_nxv1i64_nxv1i32(<vscale x 1 x i64> %0, ptr %1, <vscale x 1 x i32> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
754 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i64_nxv1i64_nxv1i32:
755 ; CHECK:       # %bb.0: # %entry
756 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu
757 ; CHECK-NEXT:    vluxei32.v v8, (a0), v9, v0.t
758 ; CHECK-NEXT:    ret
759 entry:
760   %a = call <vscale x 1 x i64> @llvm.riscv.vluxei.mask.nxv1i64.nxv1i32(
761     <vscale x 1 x i64> %0,
762     ptr %1,
763     <vscale x 1 x i32> %2,
764     <vscale x 1 x i1> %3,
765     iXLen %4, iXLen 1)
767   ret <vscale x 1 x i64> %a
770 declare <vscale x 2 x i64> @llvm.riscv.vluxei.nxv2i64.nxv2i32(
771   <vscale x 2 x i64>,
772   ptr,
773   <vscale x 2 x i32>,
774   iXLen);
776 define <vscale x 2 x i64> @intrinsic_vluxei_v_nxv2i64_nxv2i64_nxv2i32(ptr %0, <vscale x 2 x i32> %1, iXLen %2) nounwind {
777 ; CHECK-LABEL: intrinsic_vluxei_v_nxv2i64_nxv2i64_nxv2i32:
778 ; CHECK:       # %bb.0: # %entry
779 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
780 ; CHECK-NEXT:    vluxei32.v v10, (a0), v8
781 ; CHECK-NEXT:    vmv.v.v v8, v10
782 ; CHECK-NEXT:    ret
783 entry:
784   %a = call <vscale x 2 x i64> @llvm.riscv.vluxei.nxv2i64.nxv2i32(
785     <vscale x 2 x i64> undef,
786     ptr %0,
787     <vscale x 2 x i32> %1,
788     iXLen %2)
790   ret <vscale x 2 x i64> %a
793 declare <vscale x 2 x i64> @llvm.riscv.vluxei.mask.nxv2i64.nxv2i32(
794   <vscale x 2 x i64>,
795   ptr,
796   <vscale x 2 x i32>,
797   <vscale x 2 x i1>,
798   iXLen,
799   iXLen);
801 define <vscale x 2 x i64> @intrinsic_vluxei_mask_v_nxv2i64_nxv2i64_nxv2i32(<vscale x 2 x i64> %0, ptr %1, <vscale x 2 x i32> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
802 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i64_nxv2i64_nxv2i32:
803 ; CHECK:       # %bb.0: # %entry
804 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, mu
805 ; CHECK-NEXT:    vluxei32.v v8, (a0), v10, v0.t
806 ; CHECK-NEXT:    ret
807 entry:
808   %a = call <vscale x 2 x i64> @llvm.riscv.vluxei.mask.nxv2i64.nxv2i32(
809     <vscale x 2 x i64> %0,
810     ptr %1,
811     <vscale x 2 x i32> %2,
812     <vscale x 2 x i1> %3,
813     iXLen %4, iXLen 1)
815   ret <vscale x 2 x i64> %a
818 declare <vscale x 4 x i64> @llvm.riscv.vluxei.nxv4i64.nxv4i32(
819   <vscale x 4 x i64>,
820   ptr,
821   <vscale x 4 x i32>,
822   iXLen);
824 define <vscale x 4 x i64> @intrinsic_vluxei_v_nxv4i64_nxv4i64_nxv4i32(ptr %0, <vscale x 4 x i32> %1, iXLen %2) nounwind {
825 ; CHECK-LABEL: intrinsic_vluxei_v_nxv4i64_nxv4i64_nxv4i32:
826 ; CHECK:       # %bb.0: # %entry
827 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
828 ; CHECK-NEXT:    vluxei32.v v12, (a0), v8
829 ; CHECK-NEXT:    vmv.v.v v8, v12
830 ; CHECK-NEXT:    ret
831 entry:
832   %a = call <vscale x 4 x i64> @llvm.riscv.vluxei.nxv4i64.nxv4i32(
833     <vscale x 4 x i64> undef,
834     ptr %0,
835     <vscale x 4 x i32> %1,
836     iXLen %2)
838   ret <vscale x 4 x i64> %a
841 declare <vscale x 4 x i64> @llvm.riscv.vluxei.mask.nxv4i64.nxv4i32(
842   <vscale x 4 x i64>,
843   ptr,
844   <vscale x 4 x i32>,
845   <vscale x 4 x i1>,
846   iXLen,
847   iXLen);
849 define <vscale x 4 x i64> @intrinsic_vluxei_mask_v_nxv4i64_nxv4i64_nxv4i32(<vscale x 4 x i64> %0, ptr %1, <vscale x 4 x i32> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
850 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i64_nxv4i64_nxv4i32:
851 ; CHECK:       # %bb.0: # %entry
852 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, mu
853 ; CHECK-NEXT:    vluxei32.v v8, (a0), v12, v0.t
854 ; CHECK-NEXT:    ret
855 entry:
856   %a = call <vscale x 4 x i64> @llvm.riscv.vluxei.mask.nxv4i64.nxv4i32(
857     <vscale x 4 x i64> %0,
858     ptr %1,
859     <vscale x 4 x i32> %2,
860     <vscale x 4 x i1> %3,
861     iXLen %4, iXLen 1)
863   ret <vscale x 4 x i64> %a
866 declare <vscale x 8 x i64> @llvm.riscv.vluxei.nxv8i64.nxv8i32(
867   <vscale x 8 x i64>,
868   ptr,
869   <vscale x 8 x i32>,
870   iXLen);
872 define <vscale x 8 x i64> @intrinsic_vluxei_v_nxv8i64_nxv8i64_nxv8i32(ptr %0, <vscale x 8 x i32> %1, iXLen %2) nounwind {
873 ; CHECK-LABEL: intrinsic_vluxei_v_nxv8i64_nxv8i64_nxv8i32:
874 ; CHECK:       # %bb.0: # %entry
875 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
876 ; CHECK-NEXT:    vluxei32.v v16, (a0), v8
877 ; CHECK-NEXT:    vmv.v.v v8, v16
878 ; CHECK-NEXT:    ret
879 entry:
880   %a = call <vscale x 8 x i64> @llvm.riscv.vluxei.nxv8i64.nxv8i32(
881     <vscale x 8 x i64> undef,
882     ptr %0,
883     <vscale x 8 x i32> %1,
884     iXLen %2)
886   ret <vscale x 8 x i64> %a
889 declare <vscale x 8 x i64> @llvm.riscv.vluxei.mask.nxv8i64.nxv8i32(
890   <vscale x 8 x i64>,
891   ptr,
892   <vscale x 8 x i32>,
893   <vscale x 8 x i1>,
894   iXLen,
895   iXLen);
897 define <vscale x 8 x i64> @intrinsic_vluxei_mask_v_nxv8i64_nxv8i64_nxv8i32(<vscale x 8 x i64> %0, ptr %1, <vscale x 8 x i32> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
898 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i64_nxv8i64_nxv8i32:
899 ; CHECK:       # %bb.0: # %entry
900 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
901 ; CHECK-NEXT:    vluxei32.v v8, (a0), v16, v0.t
902 ; CHECK-NEXT:    ret
903 entry:
904   %a = call <vscale x 8 x i64> @llvm.riscv.vluxei.mask.nxv8i64.nxv8i32(
905     <vscale x 8 x i64> %0,
906     ptr %1,
907     <vscale x 8 x i32> %2,
908     <vscale x 8 x i1> %3,
909     iXLen %4, iXLen 1)
911   ret <vscale x 8 x i64> %a
914 declare <vscale x 1 x half> @llvm.riscv.vluxei.nxv1f16.nxv1i32(
915   <vscale x 1 x half>,
916   ptr,
917   <vscale x 1 x i32>,
918   iXLen);
920 define <vscale x 1 x half> @intrinsic_vluxei_v_nxv1f16_nxv1f16_nxv1i32(ptr %0, <vscale x 1 x i32> %1, iXLen %2) nounwind {
921 ; CHECK-LABEL: intrinsic_vluxei_v_nxv1f16_nxv1f16_nxv1i32:
922 ; CHECK:       # %bb.0: # %entry
923 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
924 ; CHECK-NEXT:    vluxei32.v v9, (a0), v8
925 ; CHECK-NEXT:    vmv1r.v v8, v9
926 ; CHECK-NEXT:    ret
927 entry:
928   %a = call <vscale x 1 x half> @llvm.riscv.vluxei.nxv1f16.nxv1i32(
929     <vscale x 1 x half> undef,
930     ptr %0,
931     <vscale x 1 x i32> %1,
932     iXLen %2)
934   ret <vscale x 1 x half> %a
937 declare <vscale x 1 x half> @llvm.riscv.vluxei.mask.nxv1f16.nxv1i32(
938   <vscale x 1 x half>,
939   ptr,
940   <vscale x 1 x i32>,
941   <vscale x 1 x i1>,
942   iXLen,
943   iXLen);
945 define <vscale x 1 x half> @intrinsic_vluxei_mask_v_nxv1f16_nxv1f16_nxv1i32(<vscale x 1 x half> %0, ptr %1, <vscale x 1 x i32> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
946 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1f16_nxv1f16_nxv1i32:
947 ; CHECK:       # %bb.0: # %entry
948 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu
949 ; CHECK-NEXT:    vluxei32.v v8, (a0), v9, v0.t
950 ; CHECK-NEXT:    ret
951 entry:
952   %a = call <vscale x 1 x half> @llvm.riscv.vluxei.mask.nxv1f16.nxv1i32(
953     <vscale x 1 x half> %0,
954     ptr %1,
955     <vscale x 1 x i32> %2,
956     <vscale x 1 x i1> %3,
957     iXLen %4, iXLen 1)
959   ret <vscale x 1 x half> %a
962 declare <vscale x 2 x half> @llvm.riscv.vluxei.nxv2f16.nxv2i32(
963   <vscale x 2 x half>,
964   ptr,
965   <vscale x 2 x i32>,
966   iXLen);
968 define <vscale x 2 x half> @intrinsic_vluxei_v_nxv2f16_nxv2f16_nxv2i32(ptr %0, <vscale x 2 x i32> %1, iXLen %2) nounwind {
969 ; CHECK-LABEL: intrinsic_vluxei_v_nxv2f16_nxv2f16_nxv2i32:
970 ; CHECK:       # %bb.0: # %entry
971 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
972 ; CHECK-NEXT:    vluxei32.v v9, (a0), v8
973 ; CHECK-NEXT:    vmv1r.v v8, v9
974 ; CHECK-NEXT:    ret
975 entry:
976   %a = call <vscale x 2 x half> @llvm.riscv.vluxei.nxv2f16.nxv2i32(
977     <vscale x 2 x half> undef,
978     ptr %0,
979     <vscale x 2 x i32> %1,
980     iXLen %2)
982   ret <vscale x 2 x half> %a
985 declare <vscale x 2 x half> @llvm.riscv.vluxei.mask.nxv2f16.nxv2i32(
986   <vscale x 2 x half>,
987   ptr,
988   <vscale x 2 x i32>,
989   <vscale x 2 x i1>,
990   iXLen,
991   iXLen);
993 define <vscale x 2 x half> @intrinsic_vluxei_mask_v_nxv2f16_nxv2f16_nxv2i32(<vscale x 2 x half> %0, ptr %1, <vscale x 2 x i32> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
994 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2f16_nxv2f16_nxv2i32:
995 ; CHECK:       # %bb.0: # %entry
996 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu
997 ; CHECK-NEXT:    vluxei32.v v8, (a0), v9, v0.t
998 ; CHECK-NEXT:    ret
999 entry:
1000   %a = call <vscale x 2 x half> @llvm.riscv.vluxei.mask.nxv2f16.nxv2i32(
1001     <vscale x 2 x half> %0,
1002     ptr %1,
1003     <vscale x 2 x i32> %2,
1004     <vscale x 2 x i1> %3,
1005     iXLen %4, iXLen 1)
1007   ret <vscale x 2 x half> %a
1010 declare <vscale x 4 x half> @llvm.riscv.vluxei.nxv4f16.nxv4i32(
1011   <vscale x 4 x half>,
1012   ptr,
1013   <vscale x 4 x i32>,
1014   iXLen);
1016 define <vscale x 4 x half> @intrinsic_vluxei_v_nxv4f16_nxv4f16_nxv4i32(ptr %0, <vscale x 4 x i32> %1, iXLen %2) nounwind {
1017 ; CHECK-LABEL: intrinsic_vluxei_v_nxv4f16_nxv4f16_nxv4i32:
1018 ; CHECK:       # %bb.0: # %entry
1019 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1020 ; CHECK-NEXT:    vluxei32.v v10, (a0), v8
1021 ; CHECK-NEXT:    vmv.v.v v8, v10
1022 ; CHECK-NEXT:    ret
1023 entry:
1024   %a = call <vscale x 4 x half> @llvm.riscv.vluxei.nxv4f16.nxv4i32(
1025     <vscale x 4 x half> undef,
1026     ptr %0,
1027     <vscale x 4 x i32> %1,
1028     iXLen %2)
1030   ret <vscale x 4 x half> %a
1033 declare <vscale x 4 x half> @llvm.riscv.vluxei.mask.nxv4f16.nxv4i32(
1034   <vscale x 4 x half>,
1035   ptr,
1036   <vscale x 4 x i32>,
1037   <vscale x 4 x i1>,
1038   iXLen,
1039   iXLen);
1041 define <vscale x 4 x half> @intrinsic_vluxei_mask_v_nxv4f16_nxv4f16_nxv4i32(<vscale x 4 x half> %0, ptr %1, <vscale x 4 x i32> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1042 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4f16_nxv4f16_nxv4i32:
1043 ; CHECK:       # %bb.0: # %entry
1044 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu
1045 ; CHECK-NEXT:    vluxei32.v v8, (a0), v10, v0.t
1046 ; CHECK-NEXT:    ret
1047 entry:
1048   %a = call <vscale x 4 x half> @llvm.riscv.vluxei.mask.nxv4f16.nxv4i32(
1049     <vscale x 4 x half> %0,
1050     ptr %1,
1051     <vscale x 4 x i32> %2,
1052     <vscale x 4 x i1> %3,
1053     iXLen %4, iXLen 1)
1055   ret <vscale x 4 x half> %a
1058 declare <vscale x 8 x half> @llvm.riscv.vluxei.nxv8f16.nxv8i32(
1059   <vscale x 8 x half>,
1060   ptr,
1061   <vscale x 8 x i32>,
1062   iXLen);
1064 define <vscale x 8 x half> @intrinsic_vluxei_v_nxv8f16_nxv8f16_nxv8i32(ptr %0, <vscale x 8 x i32> %1, iXLen %2) nounwind {
1065 ; CHECK-LABEL: intrinsic_vluxei_v_nxv8f16_nxv8f16_nxv8i32:
1066 ; CHECK:       # %bb.0: # %entry
1067 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
1068 ; CHECK-NEXT:    vluxei32.v v12, (a0), v8
1069 ; CHECK-NEXT:    vmv.v.v v8, v12
1070 ; CHECK-NEXT:    ret
1071 entry:
1072   %a = call <vscale x 8 x half> @llvm.riscv.vluxei.nxv8f16.nxv8i32(
1073     <vscale x 8 x half> undef,
1074     ptr %0,
1075     <vscale x 8 x i32> %1,
1076     iXLen %2)
1078   ret <vscale x 8 x half> %a
1081 declare <vscale x 8 x half> @llvm.riscv.vluxei.mask.nxv8f16.nxv8i32(
1082   <vscale x 8 x half>,
1083   ptr,
1084   <vscale x 8 x i32>,
1085   <vscale x 8 x i1>,
1086   iXLen,
1087   iXLen);
1089 define <vscale x 8 x half> @intrinsic_vluxei_mask_v_nxv8f16_nxv8f16_nxv8i32(<vscale x 8 x half> %0, ptr %1, <vscale x 8 x i32> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1090 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8f16_nxv8f16_nxv8i32:
1091 ; CHECK:       # %bb.0: # %entry
1092 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu
1093 ; CHECK-NEXT:    vluxei32.v v8, (a0), v12, v0.t
1094 ; CHECK-NEXT:    ret
1095 entry:
1096   %a = call <vscale x 8 x half> @llvm.riscv.vluxei.mask.nxv8f16.nxv8i32(
1097     <vscale x 8 x half> %0,
1098     ptr %1,
1099     <vscale x 8 x i32> %2,
1100     <vscale x 8 x i1> %3,
1101     iXLen %4, iXLen 1)
1103   ret <vscale x 8 x half> %a
1106 declare <vscale x 16 x half> @llvm.riscv.vluxei.nxv16f16.nxv16i32(
1107   <vscale x 16 x half>,
1108   ptr,
1109   <vscale x 16 x i32>,
1110   iXLen);
1112 define <vscale x 16 x half> @intrinsic_vluxei_v_nxv16f16_nxv16f16_nxv16i32(ptr %0, <vscale x 16 x i32> %1, iXLen %2) nounwind {
1113 ; CHECK-LABEL: intrinsic_vluxei_v_nxv16f16_nxv16f16_nxv16i32:
1114 ; CHECK:       # %bb.0: # %entry
1115 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
1116 ; CHECK-NEXT:    vluxei32.v v16, (a0), v8
1117 ; CHECK-NEXT:    vmv.v.v v8, v16
1118 ; CHECK-NEXT:    ret
1119 entry:
1120   %a = call <vscale x 16 x half> @llvm.riscv.vluxei.nxv16f16.nxv16i32(
1121     <vscale x 16 x half> undef,
1122     ptr %0,
1123     <vscale x 16 x i32> %1,
1124     iXLen %2)
1126   ret <vscale x 16 x half> %a
1129 declare <vscale x 16 x half> @llvm.riscv.vluxei.mask.nxv16f16.nxv16i32(
1130   <vscale x 16 x half>,
1131   ptr,
1132   <vscale x 16 x i32>,
1133   <vscale x 16 x i1>,
1134   iXLen,
1135   iXLen);
1137 define <vscale x 16 x half> @intrinsic_vluxei_mask_v_nxv16f16_nxv16f16_nxv16i32(<vscale x 16 x half> %0, ptr %1, <vscale x 16 x i32> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1138 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16f16_nxv16f16_nxv16i32:
1139 ; CHECK:       # %bb.0: # %entry
1140 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, mu
1141 ; CHECK-NEXT:    vluxei32.v v8, (a0), v16, v0.t
1142 ; CHECK-NEXT:    ret
1143 entry:
1144   %a = call <vscale x 16 x half> @llvm.riscv.vluxei.mask.nxv16f16.nxv16i32(
1145     <vscale x 16 x half> %0,
1146     ptr %1,
1147     <vscale x 16 x i32> %2,
1148     <vscale x 16 x i1> %3,
1149     iXLen %4, iXLen 1)
1151   ret <vscale x 16 x half> %a
1154 declare <vscale x 1 x float> @llvm.riscv.vluxei.nxv1f32.nxv1i32(
1155   <vscale x 1 x float>,
1156   ptr,
1157   <vscale x 1 x i32>,
1158   iXLen);
1160 define <vscale x 1 x float> @intrinsic_vluxei_v_nxv1f32_nxv1f32_nxv1i32(ptr %0, <vscale x 1 x i32> %1, iXLen %2) nounwind {
1161 ; CHECK-LABEL: intrinsic_vluxei_v_nxv1f32_nxv1f32_nxv1i32:
1162 ; CHECK:       # %bb.0: # %entry
1163 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1164 ; CHECK-NEXT:    vluxei32.v v8, (a0), v8
1165 ; CHECK-NEXT:    ret
1166 entry:
1167   %a = call <vscale x 1 x float> @llvm.riscv.vluxei.nxv1f32.nxv1i32(
1168     <vscale x 1 x float> undef,
1169     ptr %0,
1170     <vscale x 1 x i32> %1,
1171     iXLen %2)
1173   ret <vscale x 1 x float> %a
1176 declare <vscale x 1 x float> @llvm.riscv.vluxei.mask.nxv1f32.nxv1i32(
1177   <vscale x 1 x float>,
1178   ptr,
1179   <vscale x 1 x i32>,
1180   <vscale x 1 x i1>,
1181   iXLen,
1182   iXLen);
1184 define <vscale x 1 x float> @intrinsic_vluxei_mask_v_nxv1f32_nxv1f32_nxv1i32(<vscale x 1 x float> %0, ptr %1, <vscale x 1 x i32> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1185 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1f32_nxv1f32_nxv1i32:
1186 ; CHECK:       # %bb.0: # %entry
1187 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu
1188 ; CHECK-NEXT:    vluxei32.v v8, (a0), v9, v0.t
1189 ; CHECK-NEXT:    ret
1190 entry:
1191   %a = call <vscale x 1 x float> @llvm.riscv.vluxei.mask.nxv1f32.nxv1i32(
1192     <vscale x 1 x float> %0,
1193     ptr %1,
1194     <vscale x 1 x i32> %2,
1195     <vscale x 1 x i1> %3,
1196     iXLen %4, iXLen 1)
1198   ret <vscale x 1 x float> %a
1201 declare <vscale x 2 x float> @llvm.riscv.vluxei.nxv2f32.nxv2i32(
1202   <vscale x 2 x float>,
1203   ptr,
1204   <vscale x 2 x i32>,
1205   iXLen);
1207 define <vscale x 2 x float> @intrinsic_vluxei_v_nxv2f32_nxv2f32_nxv2i32(ptr %0, <vscale x 2 x i32> %1, iXLen %2) nounwind {
1208 ; CHECK-LABEL: intrinsic_vluxei_v_nxv2f32_nxv2f32_nxv2i32:
1209 ; CHECK:       # %bb.0: # %entry
1210 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1211 ; CHECK-NEXT:    vluxei32.v v8, (a0), v8
1212 ; CHECK-NEXT:    ret
1213 entry:
1214   %a = call <vscale x 2 x float> @llvm.riscv.vluxei.nxv2f32.nxv2i32(
1215     <vscale x 2 x float> undef,
1216     ptr %0,
1217     <vscale x 2 x i32> %1,
1218     iXLen %2)
1220   ret <vscale x 2 x float> %a
1223 declare <vscale x 2 x float> @llvm.riscv.vluxei.mask.nxv2f32.nxv2i32(
1224   <vscale x 2 x float>,
1225   ptr,
1226   <vscale x 2 x i32>,
1227   <vscale x 2 x i1>,
1228   iXLen,
1229   iXLen);
1231 define <vscale x 2 x float> @intrinsic_vluxei_mask_v_nxv2f32_nxv2f32_nxv2i32(<vscale x 2 x float> %0, ptr %1, <vscale x 2 x i32> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1232 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2f32_nxv2f32_nxv2i32:
1233 ; CHECK:       # %bb.0: # %entry
1234 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu
1235 ; CHECK-NEXT:    vluxei32.v v8, (a0), v9, v0.t
1236 ; CHECK-NEXT:    ret
1237 entry:
1238   %a = call <vscale x 2 x float> @llvm.riscv.vluxei.mask.nxv2f32.nxv2i32(
1239     <vscale x 2 x float> %0,
1240     ptr %1,
1241     <vscale x 2 x i32> %2,
1242     <vscale x 2 x i1> %3,
1243     iXLen %4, iXLen 1)
1245   ret <vscale x 2 x float> %a
1248 declare <vscale x 4 x float> @llvm.riscv.vluxei.nxv4f32.nxv4i32(
1249   <vscale x 4 x float>,
1250   ptr,
1251   <vscale x 4 x i32>,
1252   iXLen);
1254 define <vscale x 4 x float> @intrinsic_vluxei_v_nxv4f32_nxv4f32_nxv4i32(ptr %0, <vscale x 4 x i32> %1, iXLen %2) nounwind {
1255 ; CHECK-LABEL: intrinsic_vluxei_v_nxv4f32_nxv4f32_nxv4i32:
1256 ; CHECK:       # %bb.0: # %entry
1257 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1258 ; CHECK-NEXT:    vluxei32.v v8, (a0), v8
1259 ; CHECK-NEXT:    ret
1260 entry:
1261   %a = call <vscale x 4 x float> @llvm.riscv.vluxei.nxv4f32.nxv4i32(
1262     <vscale x 4 x float> undef,
1263     ptr %0,
1264     <vscale x 4 x i32> %1,
1265     iXLen %2)
1267   ret <vscale x 4 x float> %a
1270 declare <vscale x 4 x float> @llvm.riscv.vluxei.mask.nxv4f32.nxv4i32(
1271   <vscale x 4 x float>,
1272   ptr,
1273   <vscale x 4 x i32>,
1274   <vscale x 4 x i1>,
1275   iXLen,
1276   iXLen);
1278 define <vscale x 4 x float> @intrinsic_vluxei_mask_v_nxv4f32_nxv4f32_nxv4i32(<vscale x 4 x float> %0, ptr %1, <vscale x 4 x i32> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1279 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4f32_nxv4f32_nxv4i32:
1280 ; CHECK:       # %bb.0: # %entry
1281 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu
1282 ; CHECK-NEXT:    vluxei32.v v8, (a0), v10, v0.t
1283 ; CHECK-NEXT:    ret
1284 entry:
1285   %a = call <vscale x 4 x float> @llvm.riscv.vluxei.mask.nxv4f32.nxv4i32(
1286     <vscale x 4 x float> %0,
1287     ptr %1,
1288     <vscale x 4 x i32> %2,
1289     <vscale x 4 x i1> %3,
1290     iXLen %4, iXLen 1)
1292   ret <vscale x 4 x float> %a
1295 declare <vscale x 8 x float> @llvm.riscv.vluxei.nxv8f32.nxv8i32(
1296   <vscale x 8 x float>,
1297   ptr,
1298   <vscale x 8 x i32>,
1299   iXLen);
1301 define <vscale x 8 x float> @intrinsic_vluxei_v_nxv8f32_nxv8f32_nxv8i32(ptr %0, <vscale x 8 x i32> %1, iXLen %2) nounwind {
1302 ; CHECK-LABEL: intrinsic_vluxei_v_nxv8f32_nxv8f32_nxv8i32:
1303 ; CHECK:       # %bb.0: # %entry
1304 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1305 ; CHECK-NEXT:    vluxei32.v v8, (a0), v8
1306 ; CHECK-NEXT:    ret
1307 entry:
1308   %a = call <vscale x 8 x float> @llvm.riscv.vluxei.nxv8f32.nxv8i32(
1309     <vscale x 8 x float> undef,
1310     ptr %0,
1311     <vscale x 8 x i32> %1,
1312     iXLen %2)
1314   ret <vscale x 8 x float> %a
1317 declare <vscale x 8 x float> @llvm.riscv.vluxei.mask.nxv8f32.nxv8i32(
1318   <vscale x 8 x float>,
1319   ptr,
1320   <vscale x 8 x i32>,
1321   <vscale x 8 x i1>,
1322   iXLen,
1323   iXLen);
1325 define <vscale x 8 x float> @intrinsic_vluxei_mask_v_nxv8f32_nxv8f32_nxv8i32(<vscale x 8 x float> %0, ptr %1, <vscale x 8 x i32> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1326 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8f32_nxv8f32_nxv8i32:
1327 ; CHECK:       # %bb.0: # %entry
1328 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, mu
1329 ; CHECK-NEXT:    vluxei32.v v8, (a0), v12, v0.t
1330 ; CHECK-NEXT:    ret
1331 entry:
1332   %a = call <vscale x 8 x float> @llvm.riscv.vluxei.mask.nxv8f32.nxv8i32(
1333     <vscale x 8 x float> %0,
1334     ptr %1,
1335     <vscale x 8 x i32> %2,
1336     <vscale x 8 x i1> %3,
1337     iXLen %4, iXLen 1)
1339   ret <vscale x 8 x float> %a
1342 declare <vscale x 16 x float> @llvm.riscv.vluxei.nxv16f32.nxv16i32(
1343   <vscale x 16 x float>,
1344   ptr,
1345   <vscale x 16 x i32>,
1346   iXLen);
1348 define <vscale x 16 x float> @intrinsic_vluxei_v_nxv16f32_nxv16f32_nxv16i32(ptr %0, <vscale x 16 x i32> %1, iXLen %2) nounwind {
1349 ; CHECK-LABEL: intrinsic_vluxei_v_nxv16f32_nxv16f32_nxv16i32:
1350 ; CHECK:       # %bb.0: # %entry
1351 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
1352 ; CHECK-NEXT:    vluxei32.v v8, (a0), v8
1353 ; CHECK-NEXT:    ret
1354 entry:
1355   %a = call <vscale x 16 x float> @llvm.riscv.vluxei.nxv16f32.nxv16i32(
1356     <vscale x 16 x float> undef,
1357     ptr %0,
1358     <vscale x 16 x i32> %1,
1359     iXLen %2)
1361   ret <vscale x 16 x float> %a
1364 declare <vscale x 16 x float> @llvm.riscv.vluxei.mask.nxv16f32.nxv16i32(
1365   <vscale x 16 x float>,
1366   ptr,
1367   <vscale x 16 x i32>,
1368   <vscale x 16 x i1>,
1369   iXLen,
1370   iXLen);
1372 define <vscale x 16 x float> @intrinsic_vluxei_mask_v_nxv16f32_nxv16f32_nxv16i32(<vscale x 16 x float> %0, ptr %1, <vscale x 16 x i32> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1373 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16f32_nxv16f32_nxv16i32:
1374 ; CHECK:       # %bb.0: # %entry
1375 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
1376 ; CHECK-NEXT:    vluxei32.v v8, (a0), v16, v0.t
1377 ; CHECK-NEXT:    ret
1378 entry:
1379   %a = call <vscale x 16 x float> @llvm.riscv.vluxei.mask.nxv16f32.nxv16i32(
1380     <vscale x 16 x float> %0,
1381     ptr %1,
1382     <vscale x 16 x i32> %2,
1383     <vscale x 16 x i1> %3,
1384     iXLen %4, iXLen 1)
1386   ret <vscale x 16 x float> %a
1389 declare <vscale x 1 x double> @llvm.riscv.vluxei.nxv1f64.nxv1i32(
1390   <vscale x 1 x double>,
1391   ptr,
1392   <vscale x 1 x i32>,
1393   iXLen);
1395 define <vscale x 1 x double> @intrinsic_vluxei_v_nxv1f64_nxv1f64_nxv1i32(ptr %0, <vscale x 1 x i32> %1, iXLen %2) nounwind {
1396 ; CHECK-LABEL: intrinsic_vluxei_v_nxv1f64_nxv1f64_nxv1i32:
1397 ; CHECK:       # %bb.0: # %entry
1398 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1399 ; CHECK-NEXT:    vluxei32.v v9, (a0), v8
1400 ; CHECK-NEXT:    vmv.v.v v8, v9
1401 ; CHECK-NEXT:    ret
1402 entry:
1403   %a = call <vscale x 1 x double> @llvm.riscv.vluxei.nxv1f64.nxv1i32(
1404     <vscale x 1 x double> undef,
1405     ptr %0,
1406     <vscale x 1 x i32> %1,
1407     iXLen %2)
1409   ret <vscale x 1 x double> %a
1412 declare <vscale x 1 x double> @llvm.riscv.vluxei.mask.nxv1f64.nxv1i32(
1413   <vscale x 1 x double>,
1414   ptr,
1415   <vscale x 1 x i32>,
1416   <vscale x 1 x i1>,
1417   iXLen,
1418   iXLen);
1420 define <vscale x 1 x double> @intrinsic_vluxei_mask_v_nxv1f64_nxv1f64_nxv1i32(<vscale x 1 x double> %0, ptr %1, <vscale x 1 x i32> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1421 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1f64_nxv1f64_nxv1i32:
1422 ; CHECK:       # %bb.0: # %entry
1423 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu
1424 ; CHECK-NEXT:    vluxei32.v v8, (a0), v9, v0.t
1425 ; CHECK-NEXT:    ret
1426 entry:
1427   %a = call <vscale x 1 x double> @llvm.riscv.vluxei.mask.nxv1f64.nxv1i32(
1428     <vscale x 1 x double> %0,
1429     ptr %1,
1430     <vscale x 1 x i32> %2,
1431     <vscale x 1 x i1> %3,
1432     iXLen %4, iXLen 1)
1434   ret <vscale x 1 x double> %a
1437 declare <vscale x 2 x double> @llvm.riscv.vluxei.nxv2f64.nxv2i32(
1438   <vscale x 2 x double>,
1439   ptr,
1440   <vscale x 2 x i32>,
1441   iXLen);
1443 define <vscale x 2 x double> @intrinsic_vluxei_v_nxv2f64_nxv2f64_nxv2i32(ptr %0, <vscale x 2 x i32> %1, iXLen %2) nounwind {
1444 ; CHECK-LABEL: intrinsic_vluxei_v_nxv2f64_nxv2f64_nxv2i32:
1445 ; CHECK:       # %bb.0: # %entry
1446 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1447 ; CHECK-NEXT:    vluxei32.v v10, (a0), v8
1448 ; CHECK-NEXT:    vmv.v.v v8, v10
1449 ; CHECK-NEXT:    ret
1450 entry:
1451   %a = call <vscale x 2 x double> @llvm.riscv.vluxei.nxv2f64.nxv2i32(
1452     <vscale x 2 x double> undef,
1453     ptr %0,
1454     <vscale x 2 x i32> %1,
1455     iXLen %2)
1457   ret <vscale x 2 x double> %a
1460 declare <vscale x 2 x double> @llvm.riscv.vluxei.mask.nxv2f64.nxv2i32(
1461   <vscale x 2 x double>,
1462   ptr,
1463   <vscale x 2 x i32>,
1464   <vscale x 2 x i1>,
1465   iXLen,
1466   iXLen);
1468 define <vscale x 2 x double> @intrinsic_vluxei_mask_v_nxv2f64_nxv2f64_nxv2i32(<vscale x 2 x double> %0, ptr %1, <vscale x 2 x i32> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1469 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2f64_nxv2f64_nxv2i32:
1470 ; CHECK:       # %bb.0: # %entry
1471 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, mu
1472 ; CHECK-NEXT:    vluxei32.v v8, (a0), v10, v0.t
1473 ; CHECK-NEXT:    ret
1474 entry:
1475   %a = call <vscale x 2 x double> @llvm.riscv.vluxei.mask.nxv2f64.nxv2i32(
1476     <vscale x 2 x double> %0,
1477     ptr %1,
1478     <vscale x 2 x i32> %2,
1479     <vscale x 2 x i1> %3,
1480     iXLen %4, iXLen 1)
1482   ret <vscale x 2 x double> %a
1485 declare <vscale x 4 x double> @llvm.riscv.vluxei.nxv4f64.nxv4i32(
1486   <vscale x 4 x double>,
1487   ptr,
1488   <vscale x 4 x i32>,
1489   iXLen);
1491 define <vscale x 4 x double> @intrinsic_vluxei_v_nxv4f64_nxv4f64_nxv4i32(ptr %0, <vscale x 4 x i32> %1, iXLen %2) nounwind {
1492 ; CHECK-LABEL: intrinsic_vluxei_v_nxv4f64_nxv4f64_nxv4i32:
1493 ; CHECK:       # %bb.0: # %entry
1494 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1495 ; CHECK-NEXT:    vluxei32.v v12, (a0), v8
1496 ; CHECK-NEXT:    vmv.v.v v8, v12
1497 ; CHECK-NEXT:    ret
1498 entry:
1499   %a = call <vscale x 4 x double> @llvm.riscv.vluxei.nxv4f64.nxv4i32(
1500     <vscale x 4 x double> undef,
1501     ptr %0,
1502     <vscale x 4 x i32> %1,
1503     iXLen %2)
1505   ret <vscale x 4 x double> %a
1508 declare <vscale x 4 x double> @llvm.riscv.vluxei.mask.nxv4f64.nxv4i32(
1509   <vscale x 4 x double>,
1510   ptr,
1511   <vscale x 4 x i32>,
1512   <vscale x 4 x i1>,
1513   iXLen,
1514   iXLen);
1516 define <vscale x 4 x double> @intrinsic_vluxei_mask_v_nxv4f64_nxv4f64_nxv4i32(<vscale x 4 x double> %0, ptr %1, <vscale x 4 x i32> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1517 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4f64_nxv4f64_nxv4i32:
1518 ; CHECK:       # %bb.0: # %entry
1519 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, mu
1520 ; CHECK-NEXT:    vluxei32.v v8, (a0), v12, v0.t
1521 ; CHECK-NEXT:    ret
1522 entry:
1523   %a = call <vscale x 4 x double> @llvm.riscv.vluxei.mask.nxv4f64.nxv4i32(
1524     <vscale x 4 x double> %0,
1525     ptr %1,
1526     <vscale x 4 x i32> %2,
1527     <vscale x 4 x i1> %3,
1528     iXLen %4, iXLen 1)
1530   ret <vscale x 4 x double> %a
1533 declare <vscale x 8 x double> @llvm.riscv.vluxei.nxv8f64.nxv8i32(
1534   <vscale x 8 x double>,
1535   ptr,
1536   <vscale x 8 x i32>,
1537   iXLen);
1539 define <vscale x 8 x double> @intrinsic_vluxei_v_nxv8f64_nxv8f64_nxv8i32(ptr %0, <vscale x 8 x i32> %1, iXLen %2) nounwind {
1540 ; CHECK-LABEL: intrinsic_vluxei_v_nxv8f64_nxv8f64_nxv8i32:
1541 ; CHECK:       # %bb.0: # %entry
1542 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
1543 ; CHECK-NEXT:    vluxei32.v v16, (a0), v8
1544 ; CHECK-NEXT:    vmv.v.v v8, v16
1545 ; CHECK-NEXT:    ret
1546 entry:
1547   %a = call <vscale x 8 x double> @llvm.riscv.vluxei.nxv8f64.nxv8i32(
1548     <vscale x 8 x double> undef,
1549     ptr %0,
1550     <vscale x 8 x i32> %1,
1551     iXLen %2)
1553   ret <vscale x 8 x double> %a
1556 declare <vscale x 8 x double> @llvm.riscv.vluxei.mask.nxv8f64.nxv8i32(
1557   <vscale x 8 x double>,
1558   ptr,
1559   <vscale x 8 x i32>,
1560   <vscale x 8 x i1>,
1561   iXLen,
1562   iXLen);
1564 define <vscale x 8 x double> @intrinsic_vluxei_mask_v_nxv8f64_nxv8f64_nxv8i32(<vscale x 8 x double> %0, ptr %1, <vscale x 8 x i32> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1565 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8f64_nxv8f64_nxv8i32:
1566 ; CHECK:       # %bb.0: # %entry
1567 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
1568 ; CHECK-NEXT:    vluxei32.v v8, (a0), v16, v0.t
1569 ; CHECK-NEXT:    ret
1570 entry:
1571   %a = call <vscale x 8 x double> @llvm.riscv.vluxei.mask.nxv8f64.nxv8i32(
1572     <vscale x 8 x double> %0,
1573     ptr %1,
1574     <vscale x 8 x i32> %2,
1575     <vscale x 8 x i1> %3,
1576     iXLen %4, iXLen 1)
1578   ret <vscale x 8 x double> %a
1581 declare <vscale x 1 x i8> @llvm.riscv.vluxei.nxv1i8.nxv1i16(
1582   <vscale x 1 x i8>,
1583   ptr,
1584   <vscale x 1 x i16>,
1585   iXLen);
1587 define <vscale x 1 x i8> @intrinsic_vluxei_v_nxv1i8_nxv1i8_nxv1i16(ptr %0, <vscale x 1 x i16> %1, iXLen %2) nounwind {
1588 ; CHECK-LABEL: intrinsic_vluxei_v_nxv1i8_nxv1i8_nxv1i16:
1589 ; CHECK:       # %bb.0: # %entry
1590 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
1591 ; CHECK-NEXT:    vluxei16.v v9, (a0), v8
1592 ; CHECK-NEXT:    vmv1r.v v8, v9
1593 ; CHECK-NEXT:    ret
1594 entry:
1595   %a = call <vscale x 1 x i8> @llvm.riscv.vluxei.nxv1i8.nxv1i16(
1596     <vscale x 1 x i8> undef,
1597     ptr %0,
1598     <vscale x 1 x i16> %1,
1599     iXLen %2)
1601   ret <vscale x 1 x i8> %a
1604 declare <vscale x 1 x i8> @llvm.riscv.vluxei.mask.nxv1i8.nxv1i16(
1605   <vscale x 1 x i8>,
1606   ptr,
1607   <vscale x 1 x i16>,
1608   <vscale x 1 x i1>,
1609   iXLen,
1610   iXLen);
1612 define <vscale x 1 x i8> @intrinsic_vluxei_mask_v_nxv1i8_nxv1i8_nxv1i16(<vscale x 1 x i8> %0, ptr %1, <vscale x 1 x i16> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1613 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i8_nxv1i8_nxv1i16:
1614 ; CHECK:       # %bb.0: # %entry
1615 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, mu
1616 ; CHECK-NEXT:    vluxei16.v v8, (a0), v9, v0.t
1617 ; CHECK-NEXT:    ret
1618 entry:
1619   %a = call <vscale x 1 x i8> @llvm.riscv.vluxei.mask.nxv1i8.nxv1i16(
1620     <vscale x 1 x i8> %0,
1621     ptr %1,
1622     <vscale x 1 x i16> %2,
1623     <vscale x 1 x i1> %3,
1624     iXLen %4, iXLen 1)
1626   ret <vscale x 1 x i8> %a
1629 declare <vscale x 2 x i8> @llvm.riscv.vluxei.nxv2i8.nxv2i16(
1630   <vscale x 2 x i8>,
1631   ptr,
1632   <vscale x 2 x i16>,
1633   iXLen);
1635 define <vscale x 2 x i8> @intrinsic_vluxei_v_nxv2i8_nxv2i8_nxv2i16(ptr %0, <vscale x 2 x i16> %1, iXLen %2) nounwind {
1636 ; CHECK-LABEL: intrinsic_vluxei_v_nxv2i8_nxv2i8_nxv2i16:
1637 ; CHECK:       # %bb.0: # %entry
1638 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
1639 ; CHECK-NEXT:    vluxei16.v v9, (a0), v8
1640 ; CHECK-NEXT:    vmv1r.v v8, v9
1641 ; CHECK-NEXT:    ret
1642 entry:
1643   %a = call <vscale x 2 x i8> @llvm.riscv.vluxei.nxv2i8.nxv2i16(
1644     <vscale x 2 x i8> undef,
1645     ptr %0,
1646     <vscale x 2 x i16> %1,
1647     iXLen %2)
1649   ret <vscale x 2 x i8> %a
1652 declare <vscale x 2 x i8> @llvm.riscv.vluxei.mask.nxv2i8.nxv2i16(
1653   <vscale x 2 x i8>,
1654   ptr,
1655   <vscale x 2 x i16>,
1656   <vscale x 2 x i1>,
1657   iXLen,
1658   iXLen);
1660 define <vscale x 2 x i8> @intrinsic_vluxei_mask_v_nxv2i8_nxv2i8_nxv2i16(<vscale x 2 x i8> %0, ptr %1, <vscale x 2 x i16> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1661 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i8_nxv2i8_nxv2i16:
1662 ; CHECK:       # %bb.0: # %entry
1663 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, mu
1664 ; CHECK-NEXT:    vluxei16.v v8, (a0), v9, v0.t
1665 ; CHECK-NEXT:    ret
1666 entry:
1667   %a = call <vscale x 2 x i8> @llvm.riscv.vluxei.mask.nxv2i8.nxv2i16(
1668     <vscale x 2 x i8> %0,
1669     ptr %1,
1670     <vscale x 2 x i16> %2,
1671     <vscale x 2 x i1> %3,
1672     iXLen %4, iXLen 1)
1674   ret <vscale x 2 x i8> %a
1677 declare <vscale x 4 x i8> @llvm.riscv.vluxei.nxv4i8.nxv4i16(
1678   <vscale x 4 x i8>,
1679   ptr,
1680   <vscale x 4 x i16>,
1681   iXLen);
1683 define <vscale x 4 x i8> @intrinsic_vluxei_v_nxv4i8_nxv4i8_nxv4i16(ptr %0, <vscale x 4 x i16> %1, iXLen %2) nounwind {
1684 ; CHECK-LABEL: intrinsic_vluxei_v_nxv4i8_nxv4i8_nxv4i16:
1685 ; CHECK:       # %bb.0: # %entry
1686 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
1687 ; CHECK-NEXT:    vluxei16.v v9, (a0), v8
1688 ; CHECK-NEXT:    vmv1r.v v8, v9
1689 ; CHECK-NEXT:    ret
1690 entry:
1691   %a = call <vscale x 4 x i8> @llvm.riscv.vluxei.nxv4i8.nxv4i16(
1692     <vscale x 4 x i8> undef,
1693     ptr %0,
1694     <vscale x 4 x i16> %1,
1695     iXLen %2)
1697   ret <vscale x 4 x i8> %a
1700 declare <vscale x 4 x i8> @llvm.riscv.vluxei.mask.nxv4i8.nxv4i16(
1701   <vscale x 4 x i8>,
1702   ptr,
1703   <vscale x 4 x i16>,
1704   <vscale x 4 x i1>,
1705   iXLen,
1706   iXLen);
1708 define <vscale x 4 x i8> @intrinsic_vluxei_mask_v_nxv4i8_nxv4i8_nxv4i16(<vscale x 4 x i8> %0, ptr %1, <vscale x 4 x i16> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1709 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i8_nxv4i8_nxv4i16:
1710 ; CHECK:       # %bb.0: # %entry
1711 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, mu
1712 ; CHECK-NEXT:    vluxei16.v v8, (a0), v9, v0.t
1713 ; CHECK-NEXT:    ret
1714 entry:
1715   %a = call <vscale x 4 x i8> @llvm.riscv.vluxei.mask.nxv4i8.nxv4i16(
1716     <vscale x 4 x i8> %0,
1717     ptr %1,
1718     <vscale x 4 x i16> %2,
1719     <vscale x 4 x i1> %3,
1720     iXLen %4, iXLen 1)
1722   ret <vscale x 4 x i8> %a
1725 declare <vscale x 8 x i8> @llvm.riscv.vluxei.nxv8i8.nxv8i16(
1726   <vscale x 8 x i8>,
1727   ptr,
1728   <vscale x 8 x i16>,
1729   iXLen);
1731 define <vscale x 8 x i8> @intrinsic_vluxei_v_nxv8i8_nxv8i8_nxv8i16(ptr %0, <vscale x 8 x i16> %1, iXLen %2) nounwind {
1732 ; CHECK-LABEL: intrinsic_vluxei_v_nxv8i8_nxv8i8_nxv8i16:
1733 ; CHECK:       # %bb.0: # %entry
1734 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
1735 ; CHECK-NEXT:    vluxei16.v v10, (a0), v8
1736 ; CHECK-NEXT:    vmv.v.v v8, v10
1737 ; CHECK-NEXT:    ret
1738 entry:
1739   %a = call <vscale x 8 x i8> @llvm.riscv.vluxei.nxv8i8.nxv8i16(
1740     <vscale x 8 x i8> undef,
1741     ptr %0,
1742     <vscale x 8 x i16> %1,
1743     iXLen %2)
1745   ret <vscale x 8 x i8> %a
1748 declare <vscale x 8 x i8> @llvm.riscv.vluxei.mask.nxv8i8.nxv8i16(
1749   <vscale x 8 x i8>,
1750   ptr,
1751   <vscale x 8 x i16>,
1752   <vscale x 8 x i1>,
1753   iXLen,
1754   iXLen);
1756 define <vscale x 8 x i8> @intrinsic_vluxei_mask_v_nxv8i8_nxv8i8_nxv8i16(<vscale x 8 x i8> %0, ptr %1, <vscale x 8 x i16> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1757 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i8_nxv8i8_nxv8i16:
1758 ; CHECK:       # %bb.0: # %entry
1759 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, mu
1760 ; CHECK-NEXT:    vluxei16.v v8, (a0), v10, v0.t
1761 ; CHECK-NEXT:    ret
1762 entry:
1763   %a = call <vscale x 8 x i8> @llvm.riscv.vluxei.mask.nxv8i8.nxv8i16(
1764     <vscale x 8 x i8> %0,
1765     ptr %1,
1766     <vscale x 8 x i16> %2,
1767     <vscale x 8 x i1> %3,
1768     iXLen %4, iXLen 1)
1770   ret <vscale x 8 x i8> %a
1773 declare <vscale x 16 x i8> @llvm.riscv.vluxei.nxv16i8.nxv16i16(
1774   <vscale x 16 x i8>,
1775   ptr,
1776   <vscale x 16 x i16>,
1777   iXLen);
1779 define <vscale x 16 x i8> @intrinsic_vluxei_v_nxv16i8_nxv16i8_nxv16i16(ptr %0, <vscale x 16 x i16> %1, iXLen %2) nounwind {
1780 ; CHECK-LABEL: intrinsic_vluxei_v_nxv16i8_nxv16i8_nxv16i16:
1781 ; CHECK:       # %bb.0: # %entry
1782 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
1783 ; CHECK-NEXT:    vluxei16.v v12, (a0), v8
1784 ; CHECK-NEXT:    vmv.v.v v8, v12
1785 ; CHECK-NEXT:    ret
1786 entry:
1787   %a = call <vscale x 16 x i8> @llvm.riscv.vluxei.nxv16i8.nxv16i16(
1788     <vscale x 16 x i8> undef,
1789     ptr %0,
1790     <vscale x 16 x i16> %1,
1791     iXLen %2)
1793   ret <vscale x 16 x i8> %a
1796 declare <vscale x 16 x i8> @llvm.riscv.vluxei.mask.nxv16i8.nxv16i16(
1797   <vscale x 16 x i8>,
1798   ptr,
1799   <vscale x 16 x i16>,
1800   <vscale x 16 x i1>,
1801   iXLen,
1802   iXLen);
1804 define <vscale x 16 x i8> @intrinsic_vluxei_mask_v_nxv16i8_nxv16i8_nxv16i16(<vscale x 16 x i8> %0, ptr %1, <vscale x 16 x i16> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1805 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16i8_nxv16i8_nxv16i16:
1806 ; CHECK:       # %bb.0: # %entry
1807 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, mu
1808 ; CHECK-NEXT:    vluxei16.v v8, (a0), v12, v0.t
1809 ; CHECK-NEXT:    ret
1810 entry:
1811   %a = call <vscale x 16 x i8> @llvm.riscv.vluxei.mask.nxv16i8.nxv16i16(
1812     <vscale x 16 x i8> %0,
1813     ptr %1,
1814     <vscale x 16 x i16> %2,
1815     <vscale x 16 x i1> %3,
1816     iXLen %4, iXLen 1)
1818   ret <vscale x 16 x i8> %a
1821 declare <vscale x 32 x i8> @llvm.riscv.vluxei.nxv32i8.nxv32i16(
1822   <vscale x 32 x i8>,
1823   ptr,
1824   <vscale x 32 x i16>,
1825   iXLen);
1827 define <vscale x 32 x i8> @intrinsic_vluxei_v_nxv32i8_nxv32i8_nxv32i16(ptr %0, <vscale x 32 x i16> %1, iXLen %2) nounwind {
1828 ; CHECK-LABEL: intrinsic_vluxei_v_nxv32i8_nxv32i8_nxv32i16:
1829 ; CHECK:       # %bb.0: # %entry
1830 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
1831 ; CHECK-NEXT:    vluxei16.v v16, (a0), v8
1832 ; CHECK-NEXT:    vmv.v.v v8, v16
1833 ; CHECK-NEXT:    ret
1834 entry:
1835   %a = call <vscale x 32 x i8> @llvm.riscv.vluxei.nxv32i8.nxv32i16(
1836     <vscale x 32 x i8> undef,
1837     ptr %0,
1838     <vscale x 32 x i16> %1,
1839     iXLen %2)
1841   ret <vscale x 32 x i8> %a
1844 declare <vscale x 32 x i8> @llvm.riscv.vluxei.mask.nxv32i8.nxv32i16(
1845   <vscale x 32 x i8>,
1846   ptr,
1847   <vscale x 32 x i16>,
1848   <vscale x 32 x i1>,
1849   iXLen,
1850   iXLen);
1852 define <vscale x 32 x i8> @intrinsic_vluxei_mask_v_nxv32i8_nxv32i8_nxv32i16(<vscale x 32 x i8> %0, ptr %1, <vscale x 32 x i16> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
1853 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv32i8_nxv32i8_nxv32i16:
1854 ; CHECK:       # %bb.0: # %entry
1855 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, mu
1856 ; CHECK-NEXT:    vluxei16.v v8, (a0), v16, v0.t
1857 ; CHECK-NEXT:    ret
1858 entry:
1859   %a = call <vscale x 32 x i8> @llvm.riscv.vluxei.mask.nxv32i8.nxv32i16(
1860     <vscale x 32 x i8> %0,
1861     ptr %1,
1862     <vscale x 32 x i16> %2,
1863     <vscale x 32 x i1> %3,
1864     iXLen %4, iXLen 1)
1866   ret <vscale x 32 x i8> %a
1869 declare <vscale x 1 x i16> @llvm.riscv.vluxei.nxv1i16.nxv1i16(
1870   <vscale x 1 x i16>,
1871   ptr,
1872   <vscale x 1 x i16>,
1873   iXLen);
1875 define <vscale x 1 x i16> @intrinsic_vluxei_v_nxv1i16_nxv1i16_nxv1i16(ptr %0, <vscale x 1 x i16> %1, iXLen %2) nounwind {
1876 ; CHECK-LABEL: intrinsic_vluxei_v_nxv1i16_nxv1i16_nxv1i16:
1877 ; CHECK:       # %bb.0: # %entry
1878 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
1879 ; CHECK-NEXT:    vluxei16.v v8, (a0), v8
1880 ; CHECK-NEXT:    ret
1881 entry:
1882   %a = call <vscale x 1 x i16> @llvm.riscv.vluxei.nxv1i16.nxv1i16(
1883     <vscale x 1 x i16> undef,
1884     ptr %0,
1885     <vscale x 1 x i16> %1,
1886     iXLen %2)
1888   ret <vscale x 1 x i16> %a
1891 declare <vscale x 1 x i16> @llvm.riscv.vluxei.mask.nxv1i16.nxv1i16(
1892   <vscale x 1 x i16>,
1893   ptr,
1894   <vscale x 1 x i16>,
1895   <vscale x 1 x i1>,
1896   iXLen,
1897   iXLen);
1899 define <vscale x 1 x i16> @intrinsic_vluxei_mask_v_nxv1i16_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, ptr %1, <vscale x 1 x i16> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1900 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i16_nxv1i16_nxv1i16:
1901 ; CHECK:       # %bb.0: # %entry
1902 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu
1903 ; CHECK-NEXT:    vluxei16.v v8, (a0), v9, v0.t
1904 ; CHECK-NEXT:    ret
1905 entry:
1906   %a = call <vscale x 1 x i16> @llvm.riscv.vluxei.mask.nxv1i16.nxv1i16(
1907     <vscale x 1 x i16> %0,
1908     ptr %1,
1909     <vscale x 1 x i16> %2,
1910     <vscale x 1 x i1> %3,
1911     iXLen %4, iXLen 1)
1913   ret <vscale x 1 x i16> %a
1916 declare <vscale x 2 x i16> @llvm.riscv.vluxei.nxv2i16.nxv2i16(
1917   <vscale x 2 x i16>,
1918   ptr,
1919   <vscale x 2 x i16>,
1920   iXLen);
1922 define <vscale x 2 x i16> @intrinsic_vluxei_v_nxv2i16_nxv2i16_nxv2i16(ptr %0, <vscale x 2 x i16> %1, iXLen %2) nounwind {
1923 ; CHECK-LABEL: intrinsic_vluxei_v_nxv2i16_nxv2i16_nxv2i16:
1924 ; CHECK:       # %bb.0: # %entry
1925 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
1926 ; CHECK-NEXT:    vluxei16.v v8, (a0), v8
1927 ; CHECK-NEXT:    ret
1928 entry:
1929   %a = call <vscale x 2 x i16> @llvm.riscv.vluxei.nxv2i16.nxv2i16(
1930     <vscale x 2 x i16> undef,
1931     ptr %0,
1932     <vscale x 2 x i16> %1,
1933     iXLen %2)
1935   ret <vscale x 2 x i16> %a
1938 declare <vscale x 2 x i16> @llvm.riscv.vluxei.mask.nxv2i16.nxv2i16(
1939   <vscale x 2 x i16>,
1940   ptr,
1941   <vscale x 2 x i16>,
1942   <vscale x 2 x i1>,
1943   iXLen,
1944   iXLen);
1946 define <vscale x 2 x i16> @intrinsic_vluxei_mask_v_nxv2i16_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, ptr %1, <vscale x 2 x i16> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1947 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i16_nxv2i16_nxv2i16:
1948 ; CHECK:       # %bb.0: # %entry
1949 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu
1950 ; CHECK-NEXT:    vluxei16.v v8, (a0), v9, v0.t
1951 ; CHECK-NEXT:    ret
1952 entry:
1953   %a = call <vscale x 2 x i16> @llvm.riscv.vluxei.mask.nxv2i16.nxv2i16(
1954     <vscale x 2 x i16> %0,
1955     ptr %1,
1956     <vscale x 2 x i16> %2,
1957     <vscale x 2 x i1> %3,
1958     iXLen %4, iXLen 1)
1960   ret <vscale x 2 x i16> %a
1963 declare <vscale x 4 x i16> @llvm.riscv.vluxei.nxv4i16.nxv4i16(
1964   <vscale x 4 x i16>,
1965   ptr,
1966   <vscale x 4 x i16>,
1967   iXLen);
1969 define <vscale x 4 x i16> @intrinsic_vluxei_v_nxv4i16_nxv4i16_nxv4i16(ptr %0, <vscale x 4 x i16> %1, iXLen %2) nounwind {
1970 ; CHECK-LABEL: intrinsic_vluxei_v_nxv4i16_nxv4i16_nxv4i16:
1971 ; CHECK:       # %bb.0: # %entry
1972 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1973 ; CHECK-NEXT:    vluxei16.v v8, (a0), v8
1974 ; CHECK-NEXT:    ret
1975 entry:
1976   %a = call <vscale x 4 x i16> @llvm.riscv.vluxei.nxv4i16.nxv4i16(
1977     <vscale x 4 x i16> undef,
1978     ptr %0,
1979     <vscale x 4 x i16> %1,
1980     iXLen %2)
1982   ret <vscale x 4 x i16> %a
1985 declare <vscale x 4 x i16> @llvm.riscv.vluxei.mask.nxv4i16.nxv4i16(
1986   <vscale x 4 x i16>,
1987   ptr,
1988   <vscale x 4 x i16>,
1989   <vscale x 4 x i1>,
1990   iXLen,
1991   iXLen);
1993 define <vscale x 4 x i16> @intrinsic_vluxei_mask_v_nxv4i16_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, ptr %1, <vscale x 4 x i16> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1994 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i16_nxv4i16_nxv4i16:
1995 ; CHECK:       # %bb.0: # %entry
1996 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu
1997 ; CHECK-NEXT:    vluxei16.v v8, (a0), v9, v0.t
1998 ; CHECK-NEXT:    ret
1999 entry:
2000   %a = call <vscale x 4 x i16> @llvm.riscv.vluxei.mask.nxv4i16.nxv4i16(
2001     <vscale x 4 x i16> %0,
2002     ptr %1,
2003     <vscale x 4 x i16> %2,
2004     <vscale x 4 x i1> %3,
2005     iXLen %4, iXLen 1)
2007   ret <vscale x 4 x i16> %a
2010 declare <vscale x 8 x i16> @llvm.riscv.vluxei.nxv8i16.nxv8i16(
2011   <vscale x 8 x i16>,
2012   ptr,
2013   <vscale x 8 x i16>,
2014   iXLen);
2016 define <vscale x 8 x i16> @intrinsic_vluxei_v_nxv8i16_nxv8i16_nxv8i16(ptr %0, <vscale x 8 x i16> %1, iXLen %2) nounwind {
2017 ; CHECK-LABEL: intrinsic_vluxei_v_nxv8i16_nxv8i16_nxv8i16:
2018 ; CHECK:       # %bb.0: # %entry
2019 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
2020 ; CHECK-NEXT:    vluxei16.v v8, (a0), v8
2021 ; CHECK-NEXT:    ret
2022 entry:
2023   %a = call <vscale x 8 x i16> @llvm.riscv.vluxei.nxv8i16.nxv8i16(
2024     <vscale x 8 x i16> undef,
2025     ptr %0,
2026     <vscale x 8 x i16> %1,
2027     iXLen %2)
2029   ret <vscale x 8 x i16> %a
2032 declare <vscale x 8 x i16> @llvm.riscv.vluxei.mask.nxv8i16.nxv8i16(
2033   <vscale x 8 x i16>,
2034   ptr,
2035   <vscale x 8 x i16>,
2036   <vscale x 8 x i1>,
2037   iXLen,
2038   iXLen);
2040 define <vscale x 8 x i16> @intrinsic_vluxei_mask_v_nxv8i16_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, ptr %1, <vscale x 8 x i16> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
2041 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i16_nxv8i16_nxv8i16:
2042 ; CHECK:       # %bb.0: # %entry
2043 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu
2044 ; CHECK-NEXT:    vluxei16.v v8, (a0), v10, v0.t
2045 ; CHECK-NEXT:    ret
2046 entry:
2047   %a = call <vscale x 8 x i16> @llvm.riscv.vluxei.mask.nxv8i16.nxv8i16(
2048     <vscale x 8 x i16> %0,
2049     ptr %1,
2050     <vscale x 8 x i16> %2,
2051     <vscale x 8 x i1> %3,
2052     iXLen %4, iXLen 1)
2054   ret <vscale x 8 x i16> %a
2057 declare <vscale x 16 x i16> @llvm.riscv.vluxei.nxv16i16.nxv16i16(
2058   <vscale x 16 x i16>,
2059   ptr,
2060   <vscale x 16 x i16>,
2061   iXLen);
2063 define <vscale x 16 x i16> @intrinsic_vluxei_v_nxv16i16_nxv16i16_nxv16i16(ptr %0, <vscale x 16 x i16> %1, iXLen %2) nounwind {
2064 ; CHECK-LABEL: intrinsic_vluxei_v_nxv16i16_nxv16i16_nxv16i16:
2065 ; CHECK:       # %bb.0: # %entry
2066 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
2067 ; CHECK-NEXT:    vluxei16.v v8, (a0), v8
2068 ; CHECK-NEXT:    ret
2069 entry:
2070   %a = call <vscale x 16 x i16> @llvm.riscv.vluxei.nxv16i16.nxv16i16(
2071     <vscale x 16 x i16> undef,
2072     ptr %0,
2073     <vscale x 16 x i16> %1,
2074     iXLen %2)
2076   ret <vscale x 16 x i16> %a
2079 declare <vscale x 16 x i16> @llvm.riscv.vluxei.mask.nxv16i16.nxv16i16(
2080   <vscale x 16 x i16>,
2081   ptr,
2082   <vscale x 16 x i16>,
2083   <vscale x 16 x i1>,
2084   iXLen,
2085   iXLen);
2087 define <vscale x 16 x i16> @intrinsic_vluxei_mask_v_nxv16i16_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, ptr %1, <vscale x 16 x i16> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
2088 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16i16_nxv16i16_nxv16i16:
2089 ; CHECK:       # %bb.0: # %entry
2090 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, mu
2091 ; CHECK-NEXT:    vluxei16.v v8, (a0), v12, v0.t
2092 ; CHECK-NEXT:    ret
2093 entry:
2094   %a = call <vscale x 16 x i16> @llvm.riscv.vluxei.mask.nxv16i16.nxv16i16(
2095     <vscale x 16 x i16> %0,
2096     ptr %1,
2097     <vscale x 16 x i16> %2,
2098     <vscale x 16 x i1> %3,
2099     iXLen %4, iXLen 1)
2101   ret <vscale x 16 x i16> %a
2104 declare <vscale x 32 x i16> @llvm.riscv.vluxei.nxv32i16.nxv32i16(
2105   <vscale x 32 x i16>,
2106   ptr,
2107   <vscale x 32 x i16>,
2108   iXLen);
2110 define <vscale x 32 x i16> @intrinsic_vluxei_v_nxv32i16_nxv32i16_nxv32i16(ptr %0, <vscale x 32 x i16> %1, iXLen %2) nounwind {
2111 ; CHECK-LABEL: intrinsic_vluxei_v_nxv32i16_nxv32i16_nxv32i16:
2112 ; CHECK:       # %bb.0: # %entry
2113 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
2114 ; CHECK-NEXT:    vluxei16.v v8, (a0), v8
2115 ; CHECK-NEXT:    ret
2116 entry:
2117   %a = call <vscale x 32 x i16> @llvm.riscv.vluxei.nxv32i16.nxv32i16(
2118     <vscale x 32 x i16> undef,
2119     ptr %0,
2120     <vscale x 32 x i16> %1,
2121     iXLen %2)
2123   ret <vscale x 32 x i16> %a
2126 declare <vscale x 32 x i16> @llvm.riscv.vluxei.mask.nxv32i16.nxv32i16(
2127   <vscale x 32 x i16>,
2128   ptr,
2129   <vscale x 32 x i16>,
2130   <vscale x 32 x i1>,
2131   iXLen,
2132   iXLen);
2134 define <vscale x 32 x i16> @intrinsic_vluxei_mask_v_nxv32i16_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, ptr %1, <vscale x 32 x i16> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
2135 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv32i16_nxv32i16_nxv32i16:
2136 ; CHECK:       # %bb.0: # %entry
2137 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
2138 ; CHECK-NEXT:    vluxei16.v v8, (a0), v16, v0.t
2139 ; CHECK-NEXT:    ret
2140 entry:
2141   %a = call <vscale x 32 x i16> @llvm.riscv.vluxei.mask.nxv32i16.nxv32i16(
2142     <vscale x 32 x i16> %0,
2143     ptr %1,
2144     <vscale x 32 x i16> %2,
2145     <vscale x 32 x i1> %3,
2146     iXLen %4, iXLen 1)
2148   ret <vscale x 32 x i16> %a
2151 declare <vscale x 1 x i32> @llvm.riscv.vluxei.nxv1i32.nxv1i16(
2152   <vscale x 1 x i32>,
2153   ptr,
2154   <vscale x 1 x i16>,
2155   iXLen);
2157 define <vscale x 1 x i32> @intrinsic_vluxei_v_nxv1i32_nxv1i32_nxv1i16(ptr %0, <vscale x 1 x i16> %1, iXLen %2) nounwind {
2158 ; CHECK-LABEL: intrinsic_vluxei_v_nxv1i32_nxv1i32_nxv1i16:
2159 ; CHECK:       # %bb.0: # %entry
2160 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2161 ; CHECK-NEXT:    vluxei16.v v9, (a0), v8
2162 ; CHECK-NEXT:    vmv1r.v v8, v9
2163 ; CHECK-NEXT:    ret
2164 entry:
2165   %a = call <vscale x 1 x i32> @llvm.riscv.vluxei.nxv1i32.nxv1i16(
2166     <vscale x 1 x i32> undef,
2167     ptr %0,
2168     <vscale x 1 x i16> %1,
2169     iXLen %2)
2171   ret <vscale x 1 x i32> %a
2174 declare <vscale x 1 x i32> @llvm.riscv.vluxei.mask.nxv1i32.nxv1i16(
2175   <vscale x 1 x i32>,
2176   ptr,
2177   <vscale x 1 x i16>,
2178   <vscale x 1 x i1>,
2179   iXLen,
2180   iXLen);
2182 define <vscale x 1 x i32> @intrinsic_vluxei_mask_v_nxv1i32_nxv1i32_nxv1i16(<vscale x 1 x i32> %0, ptr %1, <vscale x 1 x i16> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
2183 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i32_nxv1i32_nxv1i16:
2184 ; CHECK:       # %bb.0: # %entry
2185 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu
2186 ; CHECK-NEXT:    vluxei16.v v8, (a0), v9, v0.t
2187 ; CHECK-NEXT:    ret
2188 entry:
2189   %a = call <vscale x 1 x i32> @llvm.riscv.vluxei.mask.nxv1i32.nxv1i16(
2190     <vscale x 1 x i32> %0,
2191     ptr %1,
2192     <vscale x 1 x i16> %2,
2193     <vscale x 1 x i1> %3,
2194     iXLen %4, iXLen 1)
2196   ret <vscale x 1 x i32> %a
2199 declare <vscale x 2 x i32> @llvm.riscv.vluxei.nxv2i32.nxv2i16(
2200   <vscale x 2 x i32>,
2201   ptr,
2202   <vscale x 2 x i16>,
2203   iXLen);
2205 define <vscale x 2 x i32> @intrinsic_vluxei_v_nxv2i32_nxv2i32_nxv2i16(ptr %0, <vscale x 2 x i16> %1, iXLen %2) nounwind {
2206 ; CHECK-LABEL: intrinsic_vluxei_v_nxv2i32_nxv2i32_nxv2i16:
2207 ; CHECK:       # %bb.0: # %entry
2208 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
2209 ; CHECK-NEXT:    vluxei16.v v9, (a0), v8
2210 ; CHECK-NEXT:    vmv.v.v v8, v9
2211 ; CHECK-NEXT:    ret
2212 entry:
2213   %a = call <vscale x 2 x i32> @llvm.riscv.vluxei.nxv2i32.nxv2i16(
2214     <vscale x 2 x i32> undef,
2215     ptr %0,
2216     <vscale x 2 x i16> %1,
2217     iXLen %2)
2219   ret <vscale x 2 x i32> %a
2222 declare <vscale x 2 x i32> @llvm.riscv.vluxei.mask.nxv2i32.nxv2i16(
2223   <vscale x 2 x i32>,
2224   ptr,
2225   <vscale x 2 x i16>,
2226   <vscale x 2 x i1>,
2227   iXLen,
2228   iXLen);
2230 define <vscale x 2 x i32> @intrinsic_vluxei_mask_v_nxv2i32_nxv2i32_nxv2i16(<vscale x 2 x i32> %0, ptr %1, <vscale x 2 x i16> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
2231 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i32_nxv2i32_nxv2i16:
2232 ; CHECK:       # %bb.0: # %entry
2233 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu
2234 ; CHECK-NEXT:    vluxei16.v v8, (a0), v9, v0.t
2235 ; CHECK-NEXT:    ret
2236 entry:
2237   %a = call <vscale x 2 x i32> @llvm.riscv.vluxei.mask.nxv2i32.nxv2i16(
2238     <vscale x 2 x i32> %0,
2239     ptr %1,
2240     <vscale x 2 x i16> %2,
2241     <vscale x 2 x i1> %3,
2242     iXLen %4, iXLen 1)
2244   ret <vscale x 2 x i32> %a
2247 declare <vscale x 4 x i32> @llvm.riscv.vluxei.nxv4i32.nxv4i16(
2248   <vscale x 4 x i32>,
2249   ptr,
2250   <vscale x 4 x i16>,
2251   iXLen);
2253 define <vscale x 4 x i32> @intrinsic_vluxei_v_nxv4i32_nxv4i32_nxv4i16(ptr %0, <vscale x 4 x i16> %1, iXLen %2) nounwind {
2254 ; CHECK-LABEL: intrinsic_vluxei_v_nxv4i32_nxv4i32_nxv4i16:
2255 ; CHECK:       # %bb.0: # %entry
2256 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
2257 ; CHECK-NEXT:    vluxei16.v v10, (a0), v8
2258 ; CHECK-NEXT:    vmv.v.v v8, v10
2259 ; CHECK-NEXT:    ret
2260 entry:
2261   %a = call <vscale x 4 x i32> @llvm.riscv.vluxei.nxv4i32.nxv4i16(
2262     <vscale x 4 x i32> undef,
2263     ptr %0,
2264     <vscale x 4 x i16> %1,
2265     iXLen %2)
2267   ret <vscale x 4 x i32> %a
2270 declare <vscale x 4 x i32> @llvm.riscv.vluxei.mask.nxv4i32.nxv4i16(
2271   <vscale x 4 x i32>,
2272   ptr,
2273   <vscale x 4 x i16>,
2274   <vscale x 4 x i1>,
2275   iXLen,
2276   iXLen);
2278 define <vscale x 4 x i32> @intrinsic_vluxei_mask_v_nxv4i32_nxv4i32_nxv4i16(<vscale x 4 x i32> %0, ptr %1, <vscale x 4 x i16> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
2279 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i32_nxv4i32_nxv4i16:
2280 ; CHECK:       # %bb.0: # %entry
2281 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu
2282 ; CHECK-NEXT:    vluxei16.v v8, (a0), v10, v0.t
2283 ; CHECK-NEXT:    ret
2284 entry:
2285   %a = call <vscale x 4 x i32> @llvm.riscv.vluxei.mask.nxv4i32.nxv4i16(
2286     <vscale x 4 x i32> %0,
2287     ptr %1,
2288     <vscale x 4 x i16> %2,
2289     <vscale x 4 x i1> %3,
2290     iXLen %4, iXLen 1)
2292   ret <vscale x 4 x i32> %a
2295 declare <vscale x 8 x i32> @llvm.riscv.vluxei.nxv8i32.nxv8i16(
2296   <vscale x 8 x i32>,
2297   ptr,
2298   <vscale x 8 x i16>,
2299   iXLen);
2301 define <vscale x 8 x i32> @intrinsic_vluxei_v_nxv8i32_nxv8i32_nxv8i16(ptr %0, <vscale x 8 x i16> %1, iXLen %2) nounwind {
2302 ; CHECK-LABEL: intrinsic_vluxei_v_nxv8i32_nxv8i32_nxv8i16:
2303 ; CHECK:       # %bb.0: # %entry
2304 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
2305 ; CHECK-NEXT:    vluxei16.v v12, (a0), v8
2306 ; CHECK-NEXT:    vmv.v.v v8, v12
2307 ; CHECK-NEXT:    ret
2308 entry:
2309   %a = call <vscale x 8 x i32> @llvm.riscv.vluxei.nxv8i32.nxv8i16(
2310     <vscale x 8 x i32> undef,
2311     ptr %0,
2312     <vscale x 8 x i16> %1,
2313     iXLen %2)
2315   ret <vscale x 8 x i32> %a
2318 declare <vscale x 8 x i32> @llvm.riscv.vluxei.mask.nxv8i32.nxv8i16(
2319   <vscale x 8 x i32>,
2320   ptr,
2321   <vscale x 8 x i16>,
2322   <vscale x 8 x i1>,
2323   iXLen,
2324   iXLen);
2326 define <vscale x 8 x i32> @intrinsic_vluxei_mask_v_nxv8i32_nxv8i32_nxv8i16(<vscale x 8 x i32> %0, ptr %1, <vscale x 8 x i16> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
2327 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i32_nxv8i32_nxv8i16:
2328 ; CHECK:       # %bb.0: # %entry
2329 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, mu
2330 ; CHECK-NEXT:    vluxei16.v v8, (a0), v12, v0.t
2331 ; CHECK-NEXT:    ret
2332 entry:
2333   %a = call <vscale x 8 x i32> @llvm.riscv.vluxei.mask.nxv8i32.nxv8i16(
2334     <vscale x 8 x i32> %0,
2335     ptr %1,
2336     <vscale x 8 x i16> %2,
2337     <vscale x 8 x i1> %3,
2338     iXLen %4, iXLen 1)
2340   ret <vscale x 8 x i32> %a
2343 declare <vscale x 16 x i32> @llvm.riscv.vluxei.nxv16i32.nxv16i16(
2344   <vscale x 16 x i32>,
2345   ptr,
2346   <vscale x 16 x i16>,
2347   iXLen);
2349 define <vscale x 16 x i32> @intrinsic_vluxei_v_nxv16i32_nxv16i32_nxv16i16(ptr %0, <vscale x 16 x i16> %1, iXLen %2) nounwind {
2350 ; CHECK-LABEL: intrinsic_vluxei_v_nxv16i32_nxv16i32_nxv16i16:
2351 ; CHECK:       # %bb.0: # %entry
2352 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
2353 ; CHECK-NEXT:    vluxei16.v v16, (a0), v8
2354 ; CHECK-NEXT:    vmv.v.v v8, v16
2355 ; CHECK-NEXT:    ret
2356 entry:
2357   %a = call <vscale x 16 x i32> @llvm.riscv.vluxei.nxv16i32.nxv16i16(
2358     <vscale x 16 x i32> undef,
2359     ptr %0,
2360     <vscale x 16 x i16> %1,
2361     iXLen %2)
2363   ret <vscale x 16 x i32> %a
2366 declare <vscale x 16 x i32> @llvm.riscv.vluxei.mask.nxv16i32.nxv16i16(
2367   <vscale x 16 x i32>,
2368   ptr,
2369   <vscale x 16 x i16>,
2370   <vscale x 16 x i1>,
2371   iXLen,
2372   iXLen);
2374 define <vscale x 16 x i32> @intrinsic_vluxei_mask_v_nxv16i32_nxv16i32_nxv16i16(<vscale x 16 x i32> %0, ptr %1, <vscale x 16 x i16> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
2375 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16i32_nxv16i32_nxv16i16:
2376 ; CHECK:       # %bb.0: # %entry
2377 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
2378 ; CHECK-NEXT:    vluxei16.v v8, (a0), v16, v0.t
2379 ; CHECK-NEXT:    ret
2380 entry:
2381   %a = call <vscale x 16 x i32> @llvm.riscv.vluxei.mask.nxv16i32.nxv16i16(
2382     <vscale x 16 x i32> %0,
2383     ptr %1,
2384     <vscale x 16 x i16> %2,
2385     <vscale x 16 x i1> %3,
2386     iXLen %4, iXLen 1)
2388   ret <vscale x 16 x i32> %a
2391 declare <vscale x 1 x i64> @llvm.riscv.vluxei.nxv1i64.nxv1i16(
2392   <vscale x 1 x i64>,
2393   ptr,
2394   <vscale x 1 x i16>,
2395   iXLen);
2397 define <vscale x 1 x i64> @intrinsic_vluxei_v_nxv1i64_nxv1i64_nxv1i16(ptr %0, <vscale x 1 x i16> %1, iXLen %2) nounwind {
2398 ; CHECK-LABEL: intrinsic_vluxei_v_nxv1i64_nxv1i64_nxv1i16:
2399 ; CHECK:       # %bb.0: # %entry
2400 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
2401 ; CHECK-NEXT:    vluxei16.v v9, (a0), v8
2402 ; CHECK-NEXT:    vmv.v.v v8, v9
2403 ; CHECK-NEXT:    ret
2404 entry:
2405   %a = call <vscale x 1 x i64> @llvm.riscv.vluxei.nxv1i64.nxv1i16(
2406     <vscale x 1 x i64> undef,
2407     ptr %0,
2408     <vscale x 1 x i16> %1,
2409     iXLen %2)
2411   ret <vscale x 1 x i64> %a
2414 declare <vscale x 1 x i64> @llvm.riscv.vluxei.mask.nxv1i64.nxv1i16(
2415   <vscale x 1 x i64>,
2416   ptr,
2417   <vscale x 1 x i16>,
2418   <vscale x 1 x i1>,
2419   iXLen,
2420   iXLen);
2422 define <vscale x 1 x i64> @intrinsic_vluxei_mask_v_nxv1i64_nxv1i64_nxv1i16(<vscale x 1 x i64> %0, ptr %1, <vscale x 1 x i16> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
2423 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i64_nxv1i64_nxv1i16:
2424 ; CHECK:       # %bb.0: # %entry
2425 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu
2426 ; CHECK-NEXT:    vluxei16.v v8, (a0), v9, v0.t
2427 ; CHECK-NEXT:    ret
2428 entry:
2429   %a = call <vscale x 1 x i64> @llvm.riscv.vluxei.mask.nxv1i64.nxv1i16(
2430     <vscale x 1 x i64> %0,
2431     ptr %1,
2432     <vscale x 1 x i16> %2,
2433     <vscale x 1 x i1> %3,
2434     iXLen %4, iXLen 1)
2436   ret <vscale x 1 x i64> %a
2439 declare <vscale x 2 x i64> @llvm.riscv.vluxei.nxv2i64.nxv2i16(
2440   <vscale x 2 x i64>,
2441   ptr,
2442   <vscale x 2 x i16>,
2443   iXLen);
2445 define <vscale x 2 x i64> @intrinsic_vluxei_v_nxv2i64_nxv2i64_nxv2i16(ptr %0, <vscale x 2 x i16> %1, iXLen %2) nounwind {
2446 ; CHECK-LABEL: intrinsic_vluxei_v_nxv2i64_nxv2i64_nxv2i16:
2447 ; CHECK:       # %bb.0: # %entry
2448 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
2449 ; CHECK-NEXT:    vluxei16.v v10, (a0), v8
2450 ; CHECK-NEXT:    vmv.v.v v8, v10
2451 ; CHECK-NEXT:    ret
2452 entry:
2453   %a = call <vscale x 2 x i64> @llvm.riscv.vluxei.nxv2i64.nxv2i16(
2454     <vscale x 2 x i64> undef,
2455     ptr %0,
2456     <vscale x 2 x i16> %1,
2457     iXLen %2)
2459   ret <vscale x 2 x i64> %a
2462 declare <vscale x 2 x i64> @llvm.riscv.vluxei.mask.nxv2i64.nxv2i16(
2463   <vscale x 2 x i64>,
2464   ptr,
2465   <vscale x 2 x i16>,
2466   <vscale x 2 x i1>,
2467   iXLen,
2468   iXLen);
2470 define <vscale x 2 x i64> @intrinsic_vluxei_mask_v_nxv2i64_nxv2i64_nxv2i16(<vscale x 2 x i64> %0, ptr %1, <vscale x 2 x i16> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
2471 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i64_nxv2i64_nxv2i16:
2472 ; CHECK:       # %bb.0: # %entry
2473 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, mu
2474 ; CHECK-NEXT:    vluxei16.v v8, (a0), v10, v0.t
2475 ; CHECK-NEXT:    ret
2476 entry:
2477   %a = call <vscale x 2 x i64> @llvm.riscv.vluxei.mask.nxv2i64.nxv2i16(
2478     <vscale x 2 x i64> %0,
2479     ptr %1,
2480     <vscale x 2 x i16> %2,
2481     <vscale x 2 x i1> %3,
2482     iXLen %4, iXLen 1)
2484   ret <vscale x 2 x i64> %a
2487 declare <vscale x 4 x i64> @llvm.riscv.vluxei.nxv4i64.nxv4i16(
2488   <vscale x 4 x i64>,
2489   ptr,
2490   <vscale x 4 x i16>,
2491   iXLen);
2493 define <vscale x 4 x i64> @intrinsic_vluxei_v_nxv4i64_nxv4i64_nxv4i16(ptr %0, <vscale x 4 x i16> %1, iXLen %2) nounwind {
2494 ; CHECK-LABEL: intrinsic_vluxei_v_nxv4i64_nxv4i64_nxv4i16:
2495 ; CHECK:       # %bb.0: # %entry
2496 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
2497 ; CHECK-NEXT:    vluxei16.v v12, (a0), v8
2498 ; CHECK-NEXT:    vmv.v.v v8, v12
2499 ; CHECK-NEXT:    ret
2500 entry:
2501   %a = call <vscale x 4 x i64> @llvm.riscv.vluxei.nxv4i64.nxv4i16(
2502     <vscale x 4 x i64> undef,
2503     ptr %0,
2504     <vscale x 4 x i16> %1,
2505     iXLen %2)
2507   ret <vscale x 4 x i64> %a
2510 declare <vscale x 4 x i64> @llvm.riscv.vluxei.mask.nxv4i64.nxv4i16(
2511   <vscale x 4 x i64>,
2512   ptr,
2513   <vscale x 4 x i16>,
2514   <vscale x 4 x i1>,
2515   iXLen,
2516   iXLen);
2518 define <vscale x 4 x i64> @intrinsic_vluxei_mask_v_nxv4i64_nxv4i64_nxv4i16(<vscale x 4 x i64> %0, ptr %1, <vscale x 4 x i16> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
2519 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i64_nxv4i64_nxv4i16:
2520 ; CHECK:       # %bb.0: # %entry
2521 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, mu
2522 ; CHECK-NEXT:    vluxei16.v v8, (a0), v12, v0.t
2523 ; CHECK-NEXT:    ret
2524 entry:
2525   %a = call <vscale x 4 x i64> @llvm.riscv.vluxei.mask.nxv4i64.nxv4i16(
2526     <vscale x 4 x i64> %0,
2527     ptr %1,
2528     <vscale x 4 x i16> %2,
2529     <vscale x 4 x i1> %3,
2530     iXLen %4, iXLen 1)
2532   ret <vscale x 4 x i64> %a
2535 declare <vscale x 8 x i64> @llvm.riscv.vluxei.nxv8i64.nxv8i16(
2536   <vscale x 8 x i64>,
2537   ptr,
2538   <vscale x 8 x i16>,
2539   iXLen);
2541 define <vscale x 8 x i64> @intrinsic_vluxei_v_nxv8i64_nxv8i64_nxv8i16(ptr %0, <vscale x 8 x i16> %1, iXLen %2) nounwind {
2542 ; CHECK-LABEL: intrinsic_vluxei_v_nxv8i64_nxv8i64_nxv8i16:
2543 ; CHECK:       # %bb.0: # %entry
2544 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
2545 ; CHECK-NEXT:    vluxei16.v v16, (a0), v8
2546 ; CHECK-NEXT:    vmv.v.v v8, v16
2547 ; CHECK-NEXT:    ret
2548 entry:
2549   %a = call <vscale x 8 x i64> @llvm.riscv.vluxei.nxv8i64.nxv8i16(
2550     <vscale x 8 x i64> undef,
2551     ptr %0,
2552     <vscale x 8 x i16> %1,
2553     iXLen %2)
2555   ret <vscale x 8 x i64> %a
2558 declare <vscale x 8 x i64> @llvm.riscv.vluxei.mask.nxv8i64.nxv8i16(
2559   <vscale x 8 x i64>,
2560   ptr,
2561   <vscale x 8 x i16>,
2562   <vscale x 8 x i1>,
2563   iXLen,
2564   iXLen);
2566 define <vscale x 8 x i64> @intrinsic_vluxei_mask_v_nxv8i64_nxv8i64_nxv8i16(<vscale x 8 x i64> %0, ptr %1, <vscale x 8 x i16> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
2567 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i64_nxv8i64_nxv8i16:
2568 ; CHECK:       # %bb.0: # %entry
2569 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
2570 ; CHECK-NEXT:    vluxei16.v v8, (a0), v16, v0.t
2571 ; CHECK-NEXT:    ret
2572 entry:
2573   %a = call <vscale x 8 x i64> @llvm.riscv.vluxei.mask.nxv8i64.nxv8i16(
2574     <vscale x 8 x i64> %0,
2575     ptr %1,
2576     <vscale x 8 x i16> %2,
2577     <vscale x 8 x i1> %3,
2578     iXLen %4, iXLen 1)
2580   ret <vscale x 8 x i64> %a
2583 declare <vscale x 1 x half> @llvm.riscv.vluxei.nxv1f16.nxv1i16(
2584   <vscale x 1 x half>,
2585   ptr,
2586   <vscale x 1 x i16>,
2587   iXLen);
2589 define <vscale x 1 x half> @intrinsic_vluxei_v_nxv1f16_nxv1f16_nxv1i16(ptr %0, <vscale x 1 x i16> %1, iXLen %2) nounwind {
2590 ; CHECK-LABEL: intrinsic_vluxei_v_nxv1f16_nxv1f16_nxv1i16:
2591 ; CHECK:       # %bb.0: # %entry
2592 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
2593 ; CHECK-NEXT:    vluxei16.v v8, (a0), v8
2594 ; CHECK-NEXT:    ret
2595 entry:
2596   %a = call <vscale x 1 x half> @llvm.riscv.vluxei.nxv1f16.nxv1i16(
2597     <vscale x 1 x half> undef,
2598     ptr %0,
2599     <vscale x 1 x i16> %1,
2600     iXLen %2)
2602   ret <vscale x 1 x half> %a
2605 declare <vscale x 1 x half> @llvm.riscv.vluxei.mask.nxv1f16.nxv1i16(
2606   <vscale x 1 x half>,
2607   ptr,
2608   <vscale x 1 x i16>,
2609   <vscale x 1 x i1>,
2610   iXLen,
2611   iXLen);
2613 define <vscale x 1 x half> @intrinsic_vluxei_mask_v_nxv1f16_nxv1f16_nxv1i16(<vscale x 1 x half> %0, ptr %1, <vscale x 1 x i16> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
2614 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1f16_nxv1f16_nxv1i16:
2615 ; CHECK:       # %bb.0: # %entry
2616 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu
2617 ; CHECK-NEXT:    vluxei16.v v8, (a0), v9, v0.t
2618 ; CHECK-NEXT:    ret
2619 entry:
2620   %a = call <vscale x 1 x half> @llvm.riscv.vluxei.mask.nxv1f16.nxv1i16(
2621     <vscale x 1 x half> %0,
2622     ptr %1,
2623     <vscale x 1 x i16> %2,
2624     <vscale x 1 x i1> %3,
2625     iXLen %4, iXLen 1)
2627   ret <vscale x 1 x half> %a
2630 declare <vscale x 2 x half> @llvm.riscv.vluxei.nxv2f16.nxv2i16(
2631   <vscale x 2 x half>,
2632   ptr,
2633   <vscale x 2 x i16>,
2634   iXLen);
2636 define <vscale x 2 x half> @intrinsic_vluxei_v_nxv2f16_nxv2f16_nxv2i16(ptr %0, <vscale x 2 x i16> %1, iXLen %2) nounwind {
2637 ; CHECK-LABEL: intrinsic_vluxei_v_nxv2f16_nxv2f16_nxv2i16:
2638 ; CHECK:       # %bb.0: # %entry
2639 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
2640 ; CHECK-NEXT:    vluxei16.v v8, (a0), v8
2641 ; CHECK-NEXT:    ret
2642 entry:
2643   %a = call <vscale x 2 x half> @llvm.riscv.vluxei.nxv2f16.nxv2i16(
2644     <vscale x 2 x half> undef,
2645     ptr %0,
2646     <vscale x 2 x i16> %1,
2647     iXLen %2)
2649   ret <vscale x 2 x half> %a
2652 declare <vscale x 2 x half> @llvm.riscv.vluxei.mask.nxv2f16.nxv2i16(
2653   <vscale x 2 x half>,
2654   ptr,
2655   <vscale x 2 x i16>,
2656   <vscale x 2 x i1>,
2657   iXLen,
2658   iXLen);
2660 define <vscale x 2 x half> @intrinsic_vluxei_mask_v_nxv2f16_nxv2f16_nxv2i16(<vscale x 2 x half> %0, ptr %1, <vscale x 2 x i16> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
2661 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2f16_nxv2f16_nxv2i16:
2662 ; CHECK:       # %bb.0: # %entry
2663 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu
2664 ; CHECK-NEXT:    vluxei16.v v8, (a0), v9, v0.t
2665 ; CHECK-NEXT:    ret
2666 entry:
2667   %a = call <vscale x 2 x half> @llvm.riscv.vluxei.mask.nxv2f16.nxv2i16(
2668     <vscale x 2 x half> %0,
2669     ptr %1,
2670     <vscale x 2 x i16> %2,
2671     <vscale x 2 x i1> %3,
2672     iXLen %4, iXLen 1)
2674   ret <vscale x 2 x half> %a
2677 declare <vscale x 4 x half> @llvm.riscv.vluxei.nxv4f16.nxv4i16(
2678   <vscale x 4 x half>,
2679   ptr,
2680   <vscale x 4 x i16>,
2681   iXLen);
2683 define <vscale x 4 x half> @intrinsic_vluxei_v_nxv4f16_nxv4f16_nxv4i16(ptr %0, <vscale x 4 x i16> %1, iXLen %2) nounwind {
2684 ; CHECK-LABEL: intrinsic_vluxei_v_nxv4f16_nxv4f16_nxv4i16:
2685 ; CHECK:       # %bb.0: # %entry
2686 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2687 ; CHECK-NEXT:    vluxei16.v v8, (a0), v8
2688 ; CHECK-NEXT:    ret
2689 entry:
2690   %a = call <vscale x 4 x half> @llvm.riscv.vluxei.nxv4f16.nxv4i16(
2691     <vscale x 4 x half> undef,
2692     ptr %0,
2693     <vscale x 4 x i16> %1,
2694     iXLen %2)
2696   ret <vscale x 4 x half> %a
2699 declare <vscale x 4 x half> @llvm.riscv.vluxei.mask.nxv4f16.nxv4i16(
2700   <vscale x 4 x half>,
2701   ptr,
2702   <vscale x 4 x i16>,
2703   <vscale x 4 x i1>,
2704   iXLen,
2705   iXLen);
2707 define <vscale x 4 x half> @intrinsic_vluxei_mask_v_nxv4f16_nxv4f16_nxv4i16(<vscale x 4 x half> %0, ptr %1, <vscale x 4 x i16> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
2708 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4f16_nxv4f16_nxv4i16:
2709 ; CHECK:       # %bb.0: # %entry
2710 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu
2711 ; CHECK-NEXT:    vluxei16.v v8, (a0), v9, v0.t
2712 ; CHECK-NEXT:    ret
2713 entry:
2714   %a = call <vscale x 4 x half> @llvm.riscv.vluxei.mask.nxv4f16.nxv4i16(
2715     <vscale x 4 x half> %0,
2716     ptr %1,
2717     <vscale x 4 x i16> %2,
2718     <vscale x 4 x i1> %3,
2719     iXLen %4, iXLen 1)
2721   ret <vscale x 4 x half> %a
2724 declare <vscale x 8 x half> @llvm.riscv.vluxei.nxv8f16.nxv8i16(
2725   <vscale x 8 x half>,
2726   ptr,
2727   <vscale x 8 x i16>,
2728   iXLen);
2730 define <vscale x 8 x half> @intrinsic_vluxei_v_nxv8f16_nxv8f16_nxv8i16(ptr %0, <vscale x 8 x i16> %1, iXLen %2) nounwind {
2731 ; CHECK-LABEL: intrinsic_vluxei_v_nxv8f16_nxv8f16_nxv8i16:
2732 ; CHECK:       # %bb.0: # %entry
2733 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
2734 ; CHECK-NEXT:    vluxei16.v v8, (a0), v8
2735 ; CHECK-NEXT:    ret
2736 entry:
2737   %a = call <vscale x 8 x half> @llvm.riscv.vluxei.nxv8f16.nxv8i16(
2738     <vscale x 8 x half> undef,
2739     ptr %0,
2740     <vscale x 8 x i16> %1,
2741     iXLen %2)
2743   ret <vscale x 8 x half> %a
2746 declare <vscale x 8 x half> @llvm.riscv.vluxei.mask.nxv8f16.nxv8i16(
2747   <vscale x 8 x half>,
2748   ptr,
2749   <vscale x 8 x i16>,
2750   <vscale x 8 x i1>,
2751   iXLen,
2752   iXLen);
2754 define <vscale x 8 x half> @intrinsic_vluxei_mask_v_nxv8f16_nxv8f16_nxv8i16(<vscale x 8 x half> %0, ptr %1, <vscale x 8 x i16> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
2755 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8f16_nxv8f16_nxv8i16:
2756 ; CHECK:       # %bb.0: # %entry
2757 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu
2758 ; CHECK-NEXT:    vluxei16.v v8, (a0), v10, v0.t
2759 ; CHECK-NEXT:    ret
2760 entry:
2761   %a = call <vscale x 8 x half> @llvm.riscv.vluxei.mask.nxv8f16.nxv8i16(
2762     <vscale x 8 x half> %0,
2763     ptr %1,
2764     <vscale x 8 x i16> %2,
2765     <vscale x 8 x i1> %3,
2766     iXLen %4, iXLen 1)
2768   ret <vscale x 8 x half> %a
2771 declare <vscale x 16 x half> @llvm.riscv.vluxei.nxv16f16.nxv16i16(
2772   <vscale x 16 x half>,
2773   ptr,
2774   <vscale x 16 x i16>,
2775   iXLen);
2777 define <vscale x 16 x half> @intrinsic_vluxei_v_nxv16f16_nxv16f16_nxv16i16(ptr %0, <vscale x 16 x i16> %1, iXLen %2) nounwind {
2778 ; CHECK-LABEL: intrinsic_vluxei_v_nxv16f16_nxv16f16_nxv16i16:
2779 ; CHECK:       # %bb.0: # %entry
2780 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
2781 ; CHECK-NEXT:    vluxei16.v v8, (a0), v8
2782 ; CHECK-NEXT:    ret
2783 entry:
2784   %a = call <vscale x 16 x half> @llvm.riscv.vluxei.nxv16f16.nxv16i16(
2785     <vscale x 16 x half> undef,
2786     ptr %0,
2787     <vscale x 16 x i16> %1,
2788     iXLen %2)
2790   ret <vscale x 16 x half> %a
2793 declare <vscale x 16 x half> @llvm.riscv.vluxei.mask.nxv16f16.nxv16i16(
2794   <vscale x 16 x half>,
2795   ptr,
2796   <vscale x 16 x i16>,
2797   <vscale x 16 x i1>,
2798   iXLen,
2799   iXLen);
2801 define <vscale x 16 x half> @intrinsic_vluxei_mask_v_nxv16f16_nxv16f16_nxv16i16(<vscale x 16 x half> %0, ptr %1, <vscale x 16 x i16> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
2802 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16f16_nxv16f16_nxv16i16:
2803 ; CHECK:       # %bb.0: # %entry
2804 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, mu
2805 ; CHECK-NEXT:    vluxei16.v v8, (a0), v12, v0.t
2806 ; CHECK-NEXT:    ret
2807 entry:
2808   %a = call <vscale x 16 x half> @llvm.riscv.vluxei.mask.nxv16f16.nxv16i16(
2809     <vscale x 16 x half> %0,
2810     ptr %1,
2811     <vscale x 16 x i16> %2,
2812     <vscale x 16 x i1> %3,
2813     iXLen %4, iXLen 1)
2815   ret <vscale x 16 x half> %a
2818 declare <vscale x 32 x half> @llvm.riscv.vluxei.nxv32f16.nxv32i16(
2819   <vscale x 32 x half>,
2820   ptr,
2821   <vscale x 32 x i16>,
2822   iXLen);
2824 define <vscale x 32 x half> @intrinsic_vluxei_v_nxv32f16_nxv32f16_nxv32i16(ptr %0, <vscale x 32 x i16> %1, iXLen %2) nounwind {
2825 ; CHECK-LABEL: intrinsic_vluxei_v_nxv32f16_nxv32f16_nxv32i16:
2826 ; CHECK:       # %bb.0: # %entry
2827 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
2828 ; CHECK-NEXT:    vluxei16.v v8, (a0), v8
2829 ; CHECK-NEXT:    ret
2830 entry:
2831   %a = call <vscale x 32 x half> @llvm.riscv.vluxei.nxv32f16.nxv32i16(
2832     <vscale x 32 x half> undef,
2833     ptr %0,
2834     <vscale x 32 x i16> %1,
2835     iXLen %2)
2837   ret <vscale x 32 x half> %a
2840 declare <vscale x 32 x half> @llvm.riscv.vluxei.mask.nxv32f16.nxv32i16(
2841   <vscale x 32 x half>,
2842   ptr,
2843   <vscale x 32 x i16>,
2844   <vscale x 32 x i1>,
2845   iXLen,
2846   iXLen);
2848 define <vscale x 32 x half> @intrinsic_vluxei_mask_v_nxv32f16_nxv32f16_nxv32i16(<vscale x 32 x half> %0, ptr %1, <vscale x 32 x i16> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
2849 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv32f16_nxv32f16_nxv32i16:
2850 ; CHECK:       # %bb.0: # %entry
2851 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
2852 ; CHECK-NEXT:    vluxei16.v v8, (a0), v16, v0.t
2853 ; CHECK-NEXT:    ret
2854 entry:
2855   %a = call <vscale x 32 x half> @llvm.riscv.vluxei.mask.nxv32f16.nxv32i16(
2856     <vscale x 32 x half> %0,
2857     ptr %1,
2858     <vscale x 32 x i16> %2,
2859     <vscale x 32 x i1> %3,
2860     iXLen %4, iXLen 1)
2862   ret <vscale x 32 x half> %a
2865 declare <vscale x 1 x float> @llvm.riscv.vluxei.nxv1f32.nxv1i16(
2866   <vscale x 1 x float>,
2867   ptr,
2868   <vscale x 1 x i16>,
2869   iXLen);
2871 define <vscale x 1 x float> @intrinsic_vluxei_v_nxv1f32_nxv1f32_nxv1i16(ptr %0, <vscale x 1 x i16> %1, iXLen %2) nounwind {
2872 ; CHECK-LABEL: intrinsic_vluxei_v_nxv1f32_nxv1f32_nxv1i16:
2873 ; CHECK:       # %bb.0: # %entry
2874 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2875 ; CHECK-NEXT:    vluxei16.v v9, (a0), v8
2876 ; CHECK-NEXT:    vmv1r.v v8, v9
2877 ; CHECK-NEXT:    ret
2878 entry:
2879   %a = call <vscale x 1 x float> @llvm.riscv.vluxei.nxv1f32.nxv1i16(
2880     <vscale x 1 x float> undef,
2881     ptr %0,
2882     <vscale x 1 x i16> %1,
2883     iXLen %2)
2885   ret <vscale x 1 x float> %a
2888 declare <vscale x 1 x float> @llvm.riscv.vluxei.mask.nxv1f32.nxv1i16(
2889   <vscale x 1 x float>,
2890   ptr,
2891   <vscale x 1 x i16>,
2892   <vscale x 1 x i1>,
2893   iXLen,
2894   iXLen);
2896 define <vscale x 1 x float> @intrinsic_vluxei_mask_v_nxv1f32_nxv1f32_nxv1i16(<vscale x 1 x float> %0, ptr %1, <vscale x 1 x i16> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
2897 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1f32_nxv1f32_nxv1i16:
2898 ; CHECK:       # %bb.0: # %entry
2899 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu
2900 ; CHECK-NEXT:    vluxei16.v v8, (a0), v9, v0.t
2901 ; CHECK-NEXT:    ret
2902 entry:
2903   %a = call <vscale x 1 x float> @llvm.riscv.vluxei.mask.nxv1f32.nxv1i16(
2904     <vscale x 1 x float> %0,
2905     ptr %1,
2906     <vscale x 1 x i16> %2,
2907     <vscale x 1 x i1> %3,
2908     iXLen %4, iXLen 1)
2910   ret <vscale x 1 x float> %a
2913 declare <vscale x 2 x float> @llvm.riscv.vluxei.nxv2f32.nxv2i16(
2914   <vscale x 2 x float>,
2915   ptr,
2916   <vscale x 2 x i16>,
2917   iXLen);
2919 define <vscale x 2 x float> @intrinsic_vluxei_v_nxv2f32_nxv2f32_nxv2i16(ptr %0, <vscale x 2 x i16> %1, iXLen %2) nounwind {
2920 ; CHECK-LABEL: intrinsic_vluxei_v_nxv2f32_nxv2f32_nxv2i16:
2921 ; CHECK:       # %bb.0: # %entry
2922 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
2923 ; CHECK-NEXT:    vluxei16.v v9, (a0), v8
2924 ; CHECK-NEXT:    vmv.v.v v8, v9
2925 ; CHECK-NEXT:    ret
2926 entry:
2927   %a = call <vscale x 2 x float> @llvm.riscv.vluxei.nxv2f32.nxv2i16(
2928     <vscale x 2 x float> undef,
2929     ptr %0,
2930     <vscale x 2 x i16> %1,
2931     iXLen %2)
2933   ret <vscale x 2 x float> %a
2936 declare <vscale x 2 x float> @llvm.riscv.vluxei.mask.nxv2f32.nxv2i16(
2937   <vscale x 2 x float>,
2938   ptr,
2939   <vscale x 2 x i16>,
2940   <vscale x 2 x i1>,
2941   iXLen,
2942   iXLen);
2944 define <vscale x 2 x float> @intrinsic_vluxei_mask_v_nxv2f32_nxv2f32_nxv2i16(<vscale x 2 x float> %0, ptr %1, <vscale x 2 x i16> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
2945 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2f32_nxv2f32_nxv2i16:
2946 ; CHECK:       # %bb.0: # %entry
2947 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu
2948 ; CHECK-NEXT:    vluxei16.v v8, (a0), v9, v0.t
2949 ; CHECK-NEXT:    ret
2950 entry:
2951   %a = call <vscale x 2 x float> @llvm.riscv.vluxei.mask.nxv2f32.nxv2i16(
2952     <vscale x 2 x float> %0,
2953     ptr %1,
2954     <vscale x 2 x i16> %2,
2955     <vscale x 2 x i1> %3,
2956     iXLen %4, iXLen 1)
2958   ret <vscale x 2 x float> %a
2961 declare <vscale x 4 x float> @llvm.riscv.vluxei.nxv4f32.nxv4i16(
2962   <vscale x 4 x float>,
2963   ptr,
2964   <vscale x 4 x i16>,
2965   iXLen);
2967 define <vscale x 4 x float> @intrinsic_vluxei_v_nxv4f32_nxv4f32_nxv4i16(ptr %0, <vscale x 4 x i16> %1, iXLen %2) nounwind {
2968 ; CHECK-LABEL: intrinsic_vluxei_v_nxv4f32_nxv4f32_nxv4i16:
2969 ; CHECK:       # %bb.0: # %entry
2970 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
2971 ; CHECK-NEXT:    vluxei16.v v10, (a0), v8
2972 ; CHECK-NEXT:    vmv.v.v v8, v10
2973 ; CHECK-NEXT:    ret
2974 entry:
2975   %a = call <vscale x 4 x float> @llvm.riscv.vluxei.nxv4f32.nxv4i16(
2976     <vscale x 4 x float> undef,
2977     ptr %0,
2978     <vscale x 4 x i16> %1,
2979     iXLen %2)
2981   ret <vscale x 4 x float> %a
2984 declare <vscale x 4 x float> @llvm.riscv.vluxei.mask.nxv4f32.nxv4i16(
2985   <vscale x 4 x float>,
2986   ptr,
2987   <vscale x 4 x i16>,
2988   <vscale x 4 x i1>,
2989   iXLen,
2990   iXLen);
2992 define <vscale x 4 x float> @intrinsic_vluxei_mask_v_nxv4f32_nxv4f32_nxv4i16(<vscale x 4 x float> %0, ptr %1, <vscale x 4 x i16> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
2993 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4f32_nxv4f32_nxv4i16:
2994 ; CHECK:       # %bb.0: # %entry
2995 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu
2996 ; CHECK-NEXT:    vluxei16.v v8, (a0), v10, v0.t
2997 ; CHECK-NEXT:    ret
2998 entry:
2999   %a = call <vscale x 4 x float> @llvm.riscv.vluxei.mask.nxv4f32.nxv4i16(
3000     <vscale x 4 x float> %0,
3001     ptr %1,
3002     <vscale x 4 x i16> %2,
3003     <vscale x 4 x i1> %3,
3004     iXLen %4, iXLen 1)
3006   ret <vscale x 4 x float> %a
3009 declare <vscale x 8 x float> @llvm.riscv.vluxei.nxv8f32.nxv8i16(
3010   <vscale x 8 x float>,
3011   ptr,
3012   <vscale x 8 x i16>,
3013   iXLen);
3015 define <vscale x 8 x float> @intrinsic_vluxei_v_nxv8f32_nxv8f32_nxv8i16(ptr %0, <vscale x 8 x i16> %1, iXLen %2) nounwind {
3016 ; CHECK-LABEL: intrinsic_vluxei_v_nxv8f32_nxv8f32_nxv8i16:
3017 ; CHECK:       # %bb.0: # %entry
3018 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
3019 ; CHECK-NEXT:    vluxei16.v v12, (a0), v8
3020 ; CHECK-NEXT:    vmv.v.v v8, v12
3021 ; CHECK-NEXT:    ret
3022 entry:
3023   %a = call <vscale x 8 x float> @llvm.riscv.vluxei.nxv8f32.nxv8i16(
3024     <vscale x 8 x float> undef,
3025     ptr %0,
3026     <vscale x 8 x i16> %1,
3027     iXLen %2)
3029   ret <vscale x 8 x float> %a
3032 declare <vscale x 8 x float> @llvm.riscv.vluxei.mask.nxv8f32.nxv8i16(
3033   <vscale x 8 x float>,
3034   ptr,
3035   <vscale x 8 x i16>,
3036   <vscale x 8 x i1>,
3037   iXLen,
3038   iXLen);
3040 define <vscale x 8 x float> @intrinsic_vluxei_mask_v_nxv8f32_nxv8f32_nxv8i16(<vscale x 8 x float> %0, ptr %1, <vscale x 8 x i16> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
3041 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8f32_nxv8f32_nxv8i16:
3042 ; CHECK:       # %bb.0: # %entry
3043 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, mu
3044 ; CHECK-NEXT:    vluxei16.v v8, (a0), v12, v0.t
3045 ; CHECK-NEXT:    ret
3046 entry:
3047   %a = call <vscale x 8 x float> @llvm.riscv.vluxei.mask.nxv8f32.nxv8i16(
3048     <vscale x 8 x float> %0,
3049     ptr %1,
3050     <vscale x 8 x i16> %2,
3051     <vscale x 8 x i1> %3,
3052     iXLen %4, iXLen 1)
3054   ret <vscale x 8 x float> %a
3057 declare <vscale x 16 x float> @llvm.riscv.vluxei.nxv16f32.nxv16i16(
3058   <vscale x 16 x float>,
3059   ptr,
3060   <vscale x 16 x i16>,
3061   iXLen);
3063 define <vscale x 16 x float> @intrinsic_vluxei_v_nxv16f32_nxv16f32_nxv16i16(ptr %0, <vscale x 16 x i16> %1, iXLen %2) nounwind {
3064 ; CHECK-LABEL: intrinsic_vluxei_v_nxv16f32_nxv16f32_nxv16i16:
3065 ; CHECK:       # %bb.0: # %entry
3066 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
3067 ; CHECK-NEXT:    vluxei16.v v16, (a0), v8
3068 ; CHECK-NEXT:    vmv.v.v v8, v16
3069 ; CHECK-NEXT:    ret
3070 entry:
3071   %a = call <vscale x 16 x float> @llvm.riscv.vluxei.nxv16f32.nxv16i16(
3072     <vscale x 16 x float> undef,
3073     ptr %0,
3074     <vscale x 16 x i16> %1,
3075     iXLen %2)
3077   ret <vscale x 16 x float> %a
3080 declare <vscale x 16 x float> @llvm.riscv.vluxei.mask.nxv16f32.nxv16i16(
3081   <vscale x 16 x float>,
3082   ptr,
3083   <vscale x 16 x i16>,
3084   <vscale x 16 x i1>,
3085   iXLen,
3086   iXLen);
3088 define <vscale x 16 x float> @intrinsic_vluxei_mask_v_nxv16f32_nxv16f32_nxv16i16(<vscale x 16 x float> %0, ptr %1, <vscale x 16 x i16> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
3089 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16f32_nxv16f32_nxv16i16:
3090 ; CHECK:       # %bb.0: # %entry
3091 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
3092 ; CHECK-NEXT:    vluxei16.v v8, (a0), v16, v0.t
3093 ; CHECK-NEXT:    ret
3094 entry:
3095   %a = call <vscale x 16 x float> @llvm.riscv.vluxei.mask.nxv16f32.nxv16i16(
3096     <vscale x 16 x float> %0,
3097     ptr %1,
3098     <vscale x 16 x i16> %2,
3099     <vscale x 16 x i1> %3,
3100     iXLen %4, iXLen 1)
3102   ret <vscale x 16 x float> %a
3105 declare <vscale x 1 x double> @llvm.riscv.vluxei.nxv1f64.nxv1i16(
3106   <vscale x 1 x double>,
3107   ptr,
3108   <vscale x 1 x i16>,
3109   iXLen);
3111 define <vscale x 1 x double> @intrinsic_vluxei_v_nxv1f64_nxv1f64_nxv1i16(ptr %0, <vscale x 1 x i16> %1, iXLen %2) nounwind {
3112 ; CHECK-LABEL: intrinsic_vluxei_v_nxv1f64_nxv1f64_nxv1i16:
3113 ; CHECK:       # %bb.0: # %entry
3114 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
3115 ; CHECK-NEXT:    vluxei16.v v9, (a0), v8
3116 ; CHECK-NEXT:    vmv.v.v v8, v9
3117 ; CHECK-NEXT:    ret
3118 entry:
3119   %a = call <vscale x 1 x double> @llvm.riscv.vluxei.nxv1f64.nxv1i16(
3120     <vscale x 1 x double> undef,
3121     ptr %0,
3122     <vscale x 1 x i16> %1,
3123     iXLen %2)
3125   ret <vscale x 1 x double> %a
3128 declare <vscale x 1 x double> @llvm.riscv.vluxei.mask.nxv1f64.nxv1i16(
3129   <vscale x 1 x double>,
3130   ptr,
3131   <vscale x 1 x i16>,
3132   <vscale x 1 x i1>,
3133   iXLen,
3134   iXLen);
3136 define <vscale x 1 x double> @intrinsic_vluxei_mask_v_nxv1f64_nxv1f64_nxv1i16(<vscale x 1 x double> %0, ptr %1, <vscale x 1 x i16> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
3137 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1f64_nxv1f64_nxv1i16:
3138 ; CHECK:       # %bb.0: # %entry
3139 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu
3140 ; CHECK-NEXT:    vluxei16.v v8, (a0), v9, v0.t
3141 ; CHECK-NEXT:    ret
3142 entry:
3143   %a = call <vscale x 1 x double> @llvm.riscv.vluxei.mask.nxv1f64.nxv1i16(
3144     <vscale x 1 x double> %0,
3145     ptr %1,
3146     <vscale x 1 x i16> %2,
3147     <vscale x 1 x i1> %3,
3148     iXLen %4, iXLen 1)
3150   ret <vscale x 1 x double> %a
3153 declare <vscale x 2 x double> @llvm.riscv.vluxei.nxv2f64.nxv2i16(
3154   <vscale x 2 x double>,
3155   ptr,
3156   <vscale x 2 x i16>,
3157   iXLen);
3159 define <vscale x 2 x double> @intrinsic_vluxei_v_nxv2f64_nxv2f64_nxv2i16(ptr %0, <vscale x 2 x i16> %1, iXLen %2) nounwind {
3160 ; CHECK-LABEL: intrinsic_vluxei_v_nxv2f64_nxv2f64_nxv2i16:
3161 ; CHECK:       # %bb.0: # %entry
3162 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
3163 ; CHECK-NEXT:    vluxei16.v v10, (a0), v8
3164 ; CHECK-NEXT:    vmv.v.v v8, v10
3165 ; CHECK-NEXT:    ret
3166 entry:
3167   %a = call <vscale x 2 x double> @llvm.riscv.vluxei.nxv2f64.nxv2i16(
3168     <vscale x 2 x double> undef,
3169     ptr %0,
3170     <vscale x 2 x i16> %1,
3171     iXLen %2)
3173   ret <vscale x 2 x double> %a
3176 declare <vscale x 2 x double> @llvm.riscv.vluxei.mask.nxv2f64.nxv2i16(
3177   <vscale x 2 x double>,
3178   ptr,
3179   <vscale x 2 x i16>,
3180   <vscale x 2 x i1>,
3181   iXLen,
3182   iXLen);
3184 define <vscale x 2 x double> @intrinsic_vluxei_mask_v_nxv2f64_nxv2f64_nxv2i16(<vscale x 2 x double> %0, ptr %1, <vscale x 2 x i16> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
3185 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2f64_nxv2f64_nxv2i16:
3186 ; CHECK:       # %bb.0: # %entry
3187 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, mu
3188 ; CHECK-NEXT:    vluxei16.v v8, (a0), v10, v0.t
3189 ; CHECK-NEXT:    ret
3190 entry:
3191   %a = call <vscale x 2 x double> @llvm.riscv.vluxei.mask.nxv2f64.nxv2i16(
3192     <vscale x 2 x double> %0,
3193     ptr %1,
3194     <vscale x 2 x i16> %2,
3195     <vscale x 2 x i1> %3,
3196     iXLen %4, iXLen 1)
3198   ret <vscale x 2 x double> %a
3201 declare <vscale x 4 x double> @llvm.riscv.vluxei.nxv4f64.nxv4i16(
3202   <vscale x 4 x double>,
3203   ptr,
3204   <vscale x 4 x i16>,
3205   iXLen);
3207 define <vscale x 4 x double> @intrinsic_vluxei_v_nxv4f64_nxv4f64_nxv4i16(ptr %0, <vscale x 4 x i16> %1, iXLen %2) nounwind {
3208 ; CHECK-LABEL: intrinsic_vluxei_v_nxv4f64_nxv4f64_nxv4i16:
3209 ; CHECK:       # %bb.0: # %entry
3210 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
3211 ; CHECK-NEXT:    vluxei16.v v12, (a0), v8
3212 ; CHECK-NEXT:    vmv.v.v v8, v12
3213 ; CHECK-NEXT:    ret
3214 entry:
3215   %a = call <vscale x 4 x double> @llvm.riscv.vluxei.nxv4f64.nxv4i16(
3216     <vscale x 4 x double> undef,
3217     ptr %0,
3218     <vscale x 4 x i16> %1,
3219     iXLen %2)
3221   ret <vscale x 4 x double> %a
3224 declare <vscale x 4 x double> @llvm.riscv.vluxei.mask.nxv4f64.nxv4i16(
3225   <vscale x 4 x double>,
3226   ptr,
3227   <vscale x 4 x i16>,
3228   <vscale x 4 x i1>,
3229   iXLen,
3230   iXLen);
3232 define <vscale x 4 x double> @intrinsic_vluxei_mask_v_nxv4f64_nxv4f64_nxv4i16(<vscale x 4 x double> %0, ptr %1, <vscale x 4 x i16> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
3233 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4f64_nxv4f64_nxv4i16:
3234 ; CHECK:       # %bb.0: # %entry
3235 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, mu
3236 ; CHECK-NEXT:    vluxei16.v v8, (a0), v12, v0.t
3237 ; CHECK-NEXT:    ret
3238 entry:
3239   %a = call <vscale x 4 x double> @llvm.riscv.vluxei.mask.nxv4f64.nxv4i16(
3240     <vscale x 4 x double> %0,
3241     ptr %1,
3242     <vscale x 4 x i16> %2,
3243     <vscale x 4 x i1> %3,
3244     iXLen %4, iXLen 1)
3246   ret <vscale x 4 x double> %a
3249 declare <vscale x 8 x double> @llvm.riscv.vluxei.nxv8f64.nxv8i16(
3250   <vscale x 8 x double>,
3251   ptr,
3252   <vscale x 8 x i16>,
3253   iXLen);
3255 define <vscale x 8 x double> @intrinsic_vluxei_v_nxv8f64_nxv8f64_nxv8i16(ptr %0, <vscale x 8 x i16> %1, iXLen %2) nounwind {
3256 ; CHECK-LABEL: intrinsic_vluxei_v_nxv8f64_nxv8f64_nxv8i16:
3257 ; CHECK:       # %bb.0: # %entry
3258 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
3259 ; CHECK-NEXT:    vluxei16.v v16, (a0), v8
3260 ; CHECK-NEXT:    vmv.v.v v8, v16
3261 ; CHECK-NEXT:    ret
3262 entry:
3263   %a = call <vscale x 8 x double> @llvm.riscv.vluxei.nxv8f64.nxv8i16(
3264     <vscale x 8 x double> undef,
3265     ptr %0,
3266     <vscale x 8 x i16> %1,
3267     iXLen %2)
3269   ret <vscale x 8 x double> %a
3272 declare <vscale x 8 x double> @llvm.riscv.vluxei.mask.nxv8f64.nxv8i16(
3273   <vscale x 8 x double>,
3274   ptr,
3275   <vscale x 8 x i16>,
3276   <vscale x 8 x i1>,
3277   iXLen,
3278   iXLen);
3280 define <vscale x 8 x double> @intrinsic_vluxei_mask_v_nxv8f64_nxv8f64_nxv8i16(<vscale x 8 x double> %0, ptr %1, <vscale x 8 x i16> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
3281 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8f64_nxv8f64_nxv8i16:
3282 ; CHECK:       # %bb.0: # %entry
3283 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
3284 ; CHECK-NEXT:    vluxei16.v v8, (a0), v16, v0.t
3285 ; CHECK-NEXT:    ret
3286 entry:
3287   %a = call <vscale x 8 x double> @llvm.riscv.vluxei.mask.nxv8f64.nxv8i16(
3288     <vscale x 8 x double> %0,
3289     ptr %1,
3290     <vscale x 8 x i16> %2,
3291     <vscale x 8 x i1> %3,
3292     iXLen %4, iXLen 1)
3294   ret <vscale x 8 x double> %a
3297 declare <vscale x 1 x i8> @llvm.riscv.vluxei.nxv1i8.nxv1i8(
3298   <vscale x 1 x i8>,
3299   ptr,
3300   <vscale x 1 x i8>,
3301   iXLen);
3303 define <vscale x 1 x i8> @intrinsic_vluxei_v_nxv1i8_nxv1i8_nxv1i8(ptr %0, <vscale x 1 x i8> %1, iXLen %2) nounwind {
3304 ; CHECK-LABEL: intrinsic_vluxei_v_nxv1i8_nxv1i8_nxv1i8:
3305 ; CHECK:       # %bb.0: # %entry
3306 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
3307 ; CHECK-NEXT:    vluxei8.v v8, (a0), v8
3308 ; CHECK-NEXT:    ret
3309 entry:
3310   %a = call <vscale x 1 x i8> @llvm.riscv.vluxei.nxv1i8.nxv1i8(
3311     <vscale x 1 x i8> undef,
3312     ptr %0,
3313     <vscale x 1 x i8> %1,
3314     iXLen %2)
3316   ret <vscale x 1 x i8> %a
3319 declare <vscale x 1 x i8> @llvm.riscv.vluxei.mask.nxv1i8.nxv1i8(
3320   <vscale x 1 x i8>,
3321   ptr,
3322   <vscale x 1 x i8>,
3323   <vscale x 1 x i1>,
3324   iXLen,
3325   iXLen);
3327 define <vscale x 1 x i8> @intrinsic_vluxei_mask_v_nxv1i8_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, ptr %1, <vscale x 1 x i8> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
3328 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i8_nxv1i8_nxv1i8:
3329 ; CHECK:       # %bb.0: # %entry
3330 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, mu
3331 ; CHECK-NEXT:    vluxei8.v v8, (a0), v9, v0.t
3332 ; CHECK-NEXT:    ret
3333 entry:
3334   %a = call <vscale x 1 x i8> @llvm.riscv.vluxei.mask.nxv1i8.nxv1i8(
3335     <vscale x 1 x i8> %0,
3336     ptr %1,
3337     <vscale x 1 x i8> %2,
3338     <vscale x 1 x i1> %3,
3339     iXLen %4, iXLen 1)
3341   ret <vscale x 1 x i8> %a
3344 declare <vscale x 2 x i8> @llvm.riscv.vluxei.nxv2i8.nxv2i8(
3345   <vscale x 2 x i8>,
3346   ptr,
3347   <vscale x 2 x i8>,
3348   iXLen);
3350 define <vscale x 2 x i8> @intrinsic_vluxei_v_nxv2i8_nxv2i8_nxv2i8(ptr %0, <vscale x 2 x i8> %1, iXLen %2) nounwind {
3351 ; CHECK-LABEL: intrinsic_vluxei_v_nxv2i8_nxv2i8_nxv2i8:
3352 ; CHECK:       # %bb.0: # %entry
3353 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
3354 ; CHECK-NEXT:    vluxei8.v v8, (a0), v8
3355 ; CHECK-NEXT:    ret
3356 entry:
3357   %a = call <vscale x 2 x i8> @llvm.riscv.vluxei.nxv2i8.nxv2i8(
3358     <vscale x 2 x i8> undef,
3359     ptr %0,
3360     <vscale x 2 x i8> %1,
3361     iXLen %2)
3363   ret <vscale x 2 x i8> %a
3366 declare <vscale x 2 x i8> @llvm.riscv.vluxei.mask.nxv2i8.nxv2i8(
3367   <vscale x 2 x i8>,
3368   ptr,
3369   <vscale x 2 x i8>,
3370   <vscale x 2 x i1>,
3371   iXLen,
3372   iXLen);
3374 define <vscale x 2 x i8> @intrinsic_vluxei_mask_v_nxv2i8_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, ptr %1, <vscale x 2 x i8> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
3375 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i8_nxv2i8_nxv2i8:
3376 ; CHECK:       # %bb.0: # %entry
3377 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, mu
3378 ; CHECK-NEXT:    vluxei8.v v8, (a0), v9, v0.t
3379 ; CHECK-NEXT:    ret
3380 entry:
3381   %a = call <vscale x 2 x i8> @llvm.riscv.vluxei.mask.nxv2i8.nxv2i8(
3382     <vscale x 2 x i8> %0,
3383     ptr %1,
3384     <vscale x 2 x i8> %2,
3385     <vscale x 2 x i1> %3,
3386     iXLen %4, iXLen 1)
3388   ret <vscale x 2 x i8> %a
3391 declare <vscale x 4 x i8> @llvm.riscv.vluxei.nxv4i8.nxv4i8(
3392   <vscale x 4 x i8>,
3393   ptr,
3394   <vscale x 4 x i8>,
3395   iXLen);
3397 define <vscale x 4 x i8> @intrinsic_vluxei_v_nxv4i8_nxv4i8_nxv4i8(ptr %0, <vscale x 4 x i8> %1, iXLen %2) nounwind {
3398 ; CHECK-LABEL: intrinsic_vluxei_v_nxv4i8_nxv4i8_nxv4i8:
3399 ; CHECK:       # %bb.0: # %entry
3400 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
3401 ; CHECK-NEXT:    vluxei8.v v8, (a0), v8
3402 ; CHECK-NEXT:    ret
3403 entry:
3404   %a = call <vscale x 4 x i8> @llvm.riscv.vluxei.nxv4i8.nxv4i8(
3405     <vscale x 4 x i8> undef,
3406     ptr %0,
3407     <vscale x 4 x i8> %1,
3408     iXLen %2)
3410   ret <vscale x 4 x i8> %a
3413 declare <vscale x 4 x i8> @llvm.riscv.vluxei.mask.nxv4i8.nxv4i8(
3414   <vscale x 4 x i8>,
3415   ptr,
3416   <vscale x 4 x i8>,
3417   <vscale x 4 x i1>,
3418   iXLen,
3419   iXLen);
3421 define <vscale x 4 x i8> @intrinsic_vluxei_mask_v_nxv4i8_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, ptr %1, <vscale x 4 x i8> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
3422 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i8_nxv4i8_nxv4i8:
3423 ; CHECK:       # %bb.0: # %entry
3424 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, mu
3425 ; CHECK-NEXT:    vluxei8.v v8, (a0), v9, v0.t
3426 ; CHECK-NEXT:    ret
3427 entry:
3428   %a = call <vscale x 4 x i8> @llvm.riscv.vluxei.mask.nxv4i8.nxv4i8(
3429     <vscale x 4 x i8> %0,
3430     ptr %1,
3431     <vscale x 4 x i8> %2,
3432     <vscale x 4 x i1> %3,
3433     iXLen %4, iXLen 1)
3435   ret <vscale x 4 x i8> %a
3438 declare <vscale x 8 x i8> @llvm.riscv.vluxei.nxv8i8.nxv8i8(
3439   <vscale x 8 x i8>,
3440   ptr,
3441   <vscale x 8 x i8>,
3442   iXLen);
3444 define <vscale x 8 x i8> @intrinsic_vluxei_v_nxv8i8_nxv8i8_nxv8i8(ptr %0, <vscale x 8 x i8> %1, iXLen %2) nounwind {
3445 ; CHECK-LABEL: intrinsic_vluxei_v_nxv8i8_nxv8i8_nxv8i8:
3446 ; CHECK:       # %bb.0: # %entry
3447 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3448 ; CHECK-NEXT:    vluxei8.v v8, (a0), v8
3449 ; CHECK-NEXT:    ret
3450 entry:
3451   %a = call <vscale x 8 x i8> @llvm.riscv.vluxei.nxv8i8.nxv8i8(
3452     <vscale x 8 x i8> undef,
3453     ptr %0,
3454     <vscale x 8 x i8> %1,
3455     iXLen %2)
3457   ret <vscale x 8 x i8> %a
3460 declare <vscale x 8 x i8> @llvm.riscv.vluxei.mask.nxv8i8.nxv8i8(
3461   <vscale x 8 x i8>,
3462   ptr,
3463   <vscale x 8 x i8>,
3464   <vscale x 8 x i1>,
3465   iXLen,
3466   iXLen);
3468 define <vscale x 8 x i8> @intrinsic_vluxei_mask_v_nxv8i8_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, ptr %1, <vscale x 8 x i8> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
3469 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i8_nxv8i8_nxv8i8:
3470 ; CHECK:       # %bb.0: # %entry
3471 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, mu
3472 ; CHECK-NEXT:    vluxei8.v v8, (a0), v9, v0.t
3473 ; CHECK-NEXT:    ret
3474 entry:
3475   %a = call <vscale x 8 x i8> @llvm.riscv.vluxei.mask.nxv8i8.nxv8i8(
3476     <vscale x 8 x i8> %0,
3477     ptr %1,
3478     <vscale x 8 x i8> %2,
3479     <vscale x 8 x i1> %3,
3480     iXLen %4, iXLen 1)
3482   ret <vscale x 8 x i8> %a
3485 declare <vscale x 16 x i8> @llvm.riscv.vluxei.nxv16i8.nxv16i8(
3486   <vscale x 16 x i8>,
3487   ptr,
3488   <vscale x 16 x i8>,
3489   iXLen);
3491 define <vscale x 16 x i8> @intrinsic_vluxei_v_nxv16i8_nxv16i8_nxv16i8(ptr %0, <vscale x 16 x i8> %1, iXLen %2) nounwind {
3492 ; CHECK-LABEL: intrinsic_vluxei_v_nxv16i8_nxv16i8_nxv16i8:
3493 ; CHECK:       # %bb.0: # %entry
3494 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
3495 ; CHECK-NEXT:    vluxei8.v v8, (a0), v8
3496 ; CHECK-NEXT:    ret
3497 entry:
3498   %a = call <vscale x 16 x i8> @llvm.riscv.vluxei.nxv16i8.nxv16i8(
3499     <vscale x 16 x i8> undef,
3500     ptr %0,
3501     <vscale x 16 x i8> %1,
3502     iXLen %2)
3504   ret <vscale x 16 x i8> %a
3507 declare <vscale x 16 x i8> @llvm.riscv.vluxei.mask.nxv16i8.nxv16i8(
3508   <vscale x 16 x i8>,
3509   ptr,
3510   <vscale x 16 x i8>,
3511   <vscale x 16 x i1>,
3512   iXLen,
3513   iXLen);
3515 define <vscale x 16 x i8> @intrinsic_vluxei_mask_v_nxv16i8_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, ptr %1, <vscale x 16 x i8> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
3516 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16i8_nxv16i8_nxv16i8:
3517 ; CHECK:       # %bb.0: # %entry
3518 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, mu
3519 ; CHECK-NEXT:    vluxei8.v v8, (a0), v10, v0.t
3520 ; CHECK-NEXT:    ret
3521 entry:
3522   %a = call <vscale x 16 x i8> @llvm.riscv.vluxei.mask.nxv16i8.nxv16i8(
3523     <vscale x 16 x i8> %0,
3524     ptr %1,
3525     <vscale x 16 x i8> %2,
3526     <vscale x 16 x i1> %3,
3527     iXLen %4, iXLen 1)
3529   ret <vscale x 16 x i8> %a
3532 declare <vscale x 32 x i8> @llvm.riscv.vluxei.nxv32i8.nxv32i8(
3533   <vscale x 32 x i8>,
3534   ptr,
3535   <vscale x 32 x i8>,
3536   iXLen);
3538 define <vscale x 32 x i8> @intrinsic_vluxei_v_nxv32i8_nxv32i8_nxv32i8(ptr %0, <vscale x 32 x i8> %1, iXLen %2) nounwind {
3539 ; CHECK-LABEL: intrinsic_vluxei_v_nxv32i8_nxv32i8_nxv32i8:
3540 ; CHECK:       # %bb.0: # %entry
3541 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
3542 ; CHECK-NEXT:    vluxei8.v v8, (a0), v8
3543 ; CHECK-NEXT:    ret
3544 entry:
3545   %a = call <vscale x 32 x i8> @llvm.riscv.vluxei.nxv32i8.nxv32i8(
3546     <vscale x 32 x i8> undef,
3547     ptr %0,
3548     <vscale x 32 x i8> %1,
3549     iXLen %2)
3551   ret <vscale x 32 x i8> %a
3554 declare <vscale x 32 x i8> @llvm.riscv.vluxei.mask.nxv32i8.nxv32i8(
3555   <vscale x 32 x i8>,
3556   ptr,
3557   <vscale x 32 x i8>,
3558   <vscale x 32 x i1>,
3559   iXLen,
3560   iXLen);
3562 define <vscale x 32 x i8> @intrinsic_vluxei_mask_v_nxv32i8_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, ptr %1, <vscale x 32 x i8> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
3563 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv32i8_nxv32i8_nxv32i8:
3564 ; CHECK:       # %bb.0: # %entry
3565 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, mu
3566 ; CHECK-NEXT:    vluxei8.v v8, (a0), v12, v0.t
3567 ; CHECK-NEXT:    ret
3568 entry:
3569   %a = call <vscale x 32 x i8> @llvm.riscv.vluxei.mask.nxv32i8.nxv32i8(
3570     <vscale x 32 x i8> %0,
3571     ptr %1,
3572     <vscale x 32 x i8> %2,
3573     <vscale x 32 x i1> %3,
3574     iXLen %4, iXLen 1)
3576   ret <vscale x 32 x i8> %a
3579 declare <vscale x 64 x i8> @llvm.riscv.vluxei.nxv64i8.nxv64i8(
3580   <vscale x 64 x i8>,
3581   ptr,
3582   <vscale x 64 x i8>,
3583   iXLen);
3585 define <vscale x 64 x i8> @intrinsic_vluxei_v_nxv64i8_nxv64i8_nxv64i8(ptr %0, <vscale x 64 x i8> %1, iXLen %2) nounwind {
3586 ; CHECK-LABEL: intrinsic_vluxei_v_nxv64i8_nxv64i8_nxv64i8:
3587 ; CHECK:       # %bb.0: # %entry
3588 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
3589 ; CHECK-NEXT:    vluxei8.v v8, (a0), v8
3590 ; CHECK-NEXT:    ret
3591 entry:
3592   %a = call <vscale x 64 x i8> @llvm.riscv.vluxei.nxv64i8.nxv64i8(
3593     <vscale x 64 x i8> undef,
3594     ptr %0,
3595     <vscale x 64 x i8> %1,
3596     iXLen %2)
3598   ret <vscale x 64 x i8> %a
3601 declare <vscale x 64 x i8> @llvm.riscv.vluxei.mask.nxv64i8.nxv64i8(
3602   <vscale x 64 x i8>,
3603   ptr,
3604   <vscale x 64 x i8>,
3605   <vscale x 64 x i1>,
3606   iXLen,
3607   iXLen);
3609 define <vscale x 64 x i8> @intrinsic_vluxei_mask_v_nxv64i8_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, ptr %1, <vscale x 64 x i8> %2, <vscale x 64 x i1> %3, iXLen %4) nounwind {
3610 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv64i8_nxv64i8_nxv64i8:
3611 ; CHECK:       # %bb.0: # %entry
3612 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, mu
3613 ; CHECK-NEXT:    vluxei8.v v8, (a0), v16, v0.t
3614 ; CHECK-NEXT:    ret
3615 entry:
3616   %a = call <vscale x 64 x i8> @llvm.riscv.vluxei.mask.nxv64i8.nxv64i8(
3617     <vscale x 64 x i8> %0,
3618     ptr %1,
3619     <vscale x 64 x i8> %2,
3620     <vscale x 64 x i1> %3,
3621     iXLen %4, iXLen 1)
3623   ret <vscale x 64 x i8> %a
3626 declare <vscale x 1 x i16> @llvm.riscv.vluxei.nxv1i16.nxv1i8(
3627   <vscale x 1 x i16>,
3628   ptr,
3629   <vscale x 1 x i8>,
3630   iXLen);
3632 define <vscale x 1 x i16> @intrinsic_vluxei_v_nxv1i16_nxv1i16_nxv1i8(ptr %0, <vscale x 1 x i8> %1, iXLen %2) nounwind {
3633 ; CHECK-LABEL: intrinsic_vluxei_v_nxv1i16_nxv1i16_nxv1i8:
3634 ; CHECK:       # %bb.0: # %entry
3635 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
3636 ; CHECK-NEXT:    vluxei8.v v9, (a0), v8
3637 ; CHECK-NEXT:    vmv1r.v v8, v9
3638 ; CHECK-NEXT:    ret
3639 entry:
3640   %a = call <vscale x 1 x i16> @llvm.riscv.vluxei.nxv1i16.nxv1i8(
3641     <vscale x 1 x i16> undef,
3642     ptr %0,
3643     <vscale x 1 x i8> %1,
3644     iXLen %2)
3646   ret <vscale x 1 x i16> %a
3649 declare <vscale x 1 x i16> @llvm.riscv.vluxei.mask.nxv1i16.nxv1i8(
3650   <vscale x 1 x i16>,
3651   ptr,
3652   <vscale x 1 x i8>,
3653   <vscale x 1 x i1>,
3654   iXLen,
3655   iXLen);
3657 define <vscale x 1 x i16> @intrinsic_vluxei_mask_v_nxv1i16_nxv1i16_nxv1i8(<vscale x 1 x i16> %0, ptr %1, <vscale x 1 x i8> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
3658 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i16_nxv1i16_nxv1i8:
3659 ; CHECK:       # %bb.0: # %entry
3660 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu
3661 ; CHECK-NEXT:    vluxei8.v v8, (a0), v9, v0.t
3662 ; CHECK-NEXT:    ret
3663 entry:
3664   %a = call <vscale x 1 x i16> @llvm.riscv.vluxei.mask.nxv1i16.nxv1i8(
3665     <vscale x 1 x i16> %0,
3666     ptr %1,
3667     <vscale x 1 x i8> %2,
3668     <vscale x 1 x i1> %3,
3669     iXLen %4, iXLen 1)
3671   ret <vscale x 1 x i16> %a
3674 declare <vscale x 2 x i16> @llvm.riscv.vluxei.nxv2i16.nxv2i8(
3675   <vscale x 2 x i16>,
3676   ptr,
3677   <vscale x 2 x i8>,
3678   iXLen);
3680 define <vscale x 2 x i16> @intrinsic_vluxei_v_nxv2i16_nxv2i16_nxv2i8(ptr %0, <vscale x 2 x i8> %1, iXLen %2) nounwind {
3681 ; CHECK-LABEL: intrinsic_vluxei_v_nxv2i16_nxv2i16_nxv2i8:
3682 ; CHECK:       # %bb.0: # %entry
3683 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
3684 ; CHECK-NEXT:    vluxei8.v v9, (a0), v8
3685 ; CHECK-NEXT:    vmv1r.v v8, v9
3686 ; CHECK-NEXT:    ret
3687 entry:
3688   %a = call <vscale x 2 x i16> @llvm.riscv.vluxei.nxv2i16.nxv2i8(
3689     <vscale x 2 x i16> undef,
3690     ptr %0,
3691     <vscale x 2 x i8> %1,
3692     iXLen %2)
3694   ret <vscale x 2 x i16> %a
3697 declare <vscale x 2 x i16> @llvm.riscv.vluxei.mask.nxv2i16.nxv2i8(
3698   <vscale x 2 x i16>,
3699   ptr,
3700   <vscale x 2 x i8>,
3701   <vscale x 2 x i1>,
3702   iXLen,
3703   iXLen);
3705 define <vscale x 2 x i16> @intrinsic_vluxei_mask_v_nxv2i16_nxv2i16_nxv2i8(<vscale x 2 x i16> %0, ptr %1, <vscale x 2 x i8> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
3706 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i16_nxv2i16_nxv2i8:
3707 ; CHECK:       # %bb.0: # %entry
3708 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu
3709 ; CHECK-NEXT:    vluxei8.v v8, (a0), v9, v0.t
3710 ; CHECK-NEXT:    ret
3711 entry:
3712   %a = call <vscale x 2 x i16> @llvm.riscv.vluxei.mask.nxv2i16.nxv2i8(
3713     <vscale x 2 x i16> %0,
3714     ptr %1,
3715     <vscale x 2 x i8> %2,
3716     <vscale x 2 x i1> %3,
3717     iXLen %4, iXLen 1)
3719   ret <vscale x 2 x i16> %a
3722 declare <vscale x 4 x i16> @llvm.riscv.vluxei.nxv4i16.nxv4i8(
3723   <vscale x 4 x i16>,
3724   ptr,
3725   <vscale x 4 x i8>,
3726   iXLen);
3728 define <vscale x 4 x i16> @intrinsic_vluxei_v_nxv4i16_nxv4i16_nxv4i8(ptr %0, <vscale x 4 x i8> %1, iXLen %2) nounwind {
3729 ; CHECK-LABEL: intrinsic_vluxei_v_nxv4i16_nxv4i16_nxv4i8:
3730 ; CHECK:       # %bb.0: # %entry
3731 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
3732 ; CHECK-NEXT:    vluxei8.v v9, (a0), v8
3733 ; CHECK-NEXT:    vmv.v.v v8, v9
3734 ; CHECK-NEXT:    ret
3735 entry:
3736   %a = call <vscale x 4 x i16> @llvm.riscv.vluxei.nxv4i16.nxv4i8(
3737     <vscale x 4 x i16> undef,
3738     ptr %0,
3739     <vscale x 4 x i8> %1,
3740     iXLen %2)
3742   ret <vscale x 4 x i16> %a
3745 declare <vscale x 4 x i16> @llvm.riscv.vluxei.mask.nxv4i16.nxv4i8(
3746   <vscale x 4 x i16>,
3747   ptr,
3748   <vscale x 4 x i8>,
3749   <vscale x 4 x i1>,
3750   iXLen,
3751   iXLen);
3753 define <vscale x 4 x i16> @intrinsic_vluxei_mask_v_nxv4i16_nxv4i16_nxv4i8(<vscale x 4 x i16> %0, ptr %1, <vscale x 4 x i8> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
3754 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i16_nxv4i16_nxv4i8:
3755 ; CHECK:       # %bb.0: # %entry
3756 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu
3757 ; CHECK-NEXT:    vluxei8.v v8, (a0), v9, v0.t
3758 ; CHECK-NEXT:    ret
3759 entry:
3760   %a = call <vscale x 4 x i16> @llvm.riscv.vluxei.mask.nxv4i16.nxv4i8(
3761     <vscale x 4 x i16> %0,
3762     ptr %1,
3763     <vscale x 4 x i8> %2,
3764     <vscale x 4 x i1> %3,
3765     iXLen %4, iXLen 1)
3767   ret <vscale x 4 x i16> %a
3770 declare <vscale x 8 x i16> @llvm.riscv.vluxei.nxv8i16.nxv8i8(
3771   <vscale x 8 x i16>,
3772   ptr,
3773   <vscale x 8 x i8>,
3774   iXLen);
3776 define <vscale x 8 x i16> @intrinsic_vluxei_v_nxv8i16_nxv8i16_nxv8i8(ptr %0, <vscale x 8 x i8> %1, iXLen %2) nounwind {
3777 ; CHECK-LABEL: intrinsic_vluxei_v_nxv8i16_nxv8i16_nxv8i8:
3778 ; CHECK:       # %bb.0: # %entry
3779 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
3780 ; CHECK-NEXT:    vluxei8.v v10, (a0), v8
3781 ; CHECK-NEXT:    vmv.v.v v8, v10
3782 ; CHECK-NEXT:    ret
3783 entry:
3784   %a = call <vscale x 8 x i16> @llvm.riscv.vluxei.nxv8i16.nxv8i8(
3785     <vscale x 8 x i16> undef,
3786     ptr %0,
3787     <vscale x 8 x i8> %1,
3788     iXLen %2)
3790   ret <vscale x 8 x i16> %a
3793 declare <vscale x 8 x i16> @llvm.riscv.vluxei.mask.nxv8i16.nxv8i8(
3794   <vscale x 8 x i16>,
3795   ptr,
3796   <vscale x 8 x i8>,
3797   <vscale x 8 x i1>,
3798   iXLen,
3799   iXLen);
3801 define <vscale x 8 x i16> @intrinsic_vluxei_mask_v_nxv8i16_nxv8i16_nxv8i8(<vscale x 8 x i16> %0, ptr %1, <vscale x 8 x i8> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
3802 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i16_nxv8i16_nxv8i8:
3803 ; CHECK:       # %bb.0: # %entry
3804 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu
3805 ; CHECK-NEXT:    vluxei8.v v8, (a0), v10, v0.t
3806 ; CHECK-NEXT:    ret
3807 entry:
3808   %a = call <vscale x 8 x i16> @llvm.riscv.vluxei.mask.nxv8i16.nxv8i8(
3809     <vscale x 8 x i16> %0,
3810     ptr %1,
3811     <vscale x 8 x i8> %2,
3812     <vscale x 8 x i1> %3,
3813     iXLen %4, iXLen 1)
3815   ret <vscale x 8 x i16> %a
3818 declare <vscale x 16 x i16> @llvm.riscv.vluxei.nxv16i16.nxv16i8(
3819   <vscale x 16 x i16>,
3820   ptr,
3821   <vscale x 16 x i8>,
3822   iXLen);
3824 define <vscale x 16 x i16> @intrinsic_vluxei_v_nxv16i16_nxv16i16_nxv16i8(ptr %0, <vscale x 16 x i8> %1, iXLen %2) nounwind {
3825 ; CHECK-LABEL: intrinsic_vluxei_v_nxv16i16_nxv16i16_nxv16i8:
3826 ; CHECK:       # %bb.0: # %entry
3827 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
3828 ; CHECK-NEXT:    vluxei8.v v12, (a0), v8
3829 ; CHECK-NEXT:    vmv.v.v v8, v12
3830 ; CHECK-NEXT:    ret
3831 entry:
3832   %a = call <vscale x 16 x i16> @llvm.riscv.vluxei.nxv16i16.nxv16i8(
3833     <vscale x 16 x i16> undef,
3834     ptr %0,
3835     <vscale x 16 x i8> %1,
3836     iXLen %2)
3838   ret <vscale x 16 x i16> %a
3841 declare <vscale x 16 x i16> @llvm.riscv.vluxei.mask.nxv16i16.nxv16i8(
3842   <vscale x 16 x i16>,
3843   ptr,
3844   <vscale x 16 x i8>,
3845   <vscale x 16 x i1>,
3846   iXLen,
3847   iXLen);
3849 define <vscale x 16 x i16> @intrinsic_vluxei_mask_v_nxv16i16_nxv16i16_nxv16i8(<vscale x 16 x i16> %0, ptr %1, <vscale x 16 x i8> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
3850 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16i16_nxv16i16_nxv16i8:
3851 ; CHECK:       # %bb.0: # %entry
3852 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, mu
3853 ; CHECK-NEXT:    vluxei8.v v8, (a0), v12, v0.t
3854 ; CHECK-NEXT:    ret
3855 entry:
3856   %a = call <vscale x 16 x i16> @llvm.riscv.vluxei.mask.nxv16i16.nxv16i8(
3857     <vscale x 16 x i16> %0,
3858     ptr %1,
3859     <vscale x 16 x i8> %2,
3860     <vscale x 16 x i1> %3,
3861     iXLen %4, iXLen 1)
3863   ret <vscale x 16 x i16> %a
3866 declare <vscale x 32 x i16> @llvm.riscv.vluxei.nxv32i16.nxv32i8(
3867   <vscale x 32 x i16>,
3868   ptr,
3869   <vscale x 32 x i8>,
3870   iXLen);
3872 define <vscale x 32 x i16> @intrinsic_vluxei_v_nxv32i16_nxv32i16_nxv32i8(ptr %0, <vscale x 32 x i8> %1, iXLen %2) nounwind {
3873 ; CHECK-LABEL: intrinsic_vluxei_v_nxv32i16_nxv32i16_nxv32i8:
3874 ; CHECK:       # %bb.0: # %entry
3875 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
3876 ; CHECK-NEXT:    vluxei8.v v16, (a0), v8
3877 ; CHECK-NEXT:    vmv.v.v v8, v16
3878 ; CHECK-NEXT:    ret
3879 entry:
3880   %a = call <vscale x 32 x i16> @llvm.riscv.vluxei.nxv32i16.nxv32i8(
3881     <vscale x 32 x i16> undef,
3882     ptr %0,
3883     <vscale x 32 x i8> %1,
3884     iXLen %2)
3886   ret <vscale x 32 x i16> %a
3889 declare <vscale x 32 x i16> @llvm.riscv.vluxei.mask.nxv32i16.nxv32i8(
3890   <vscale x 32 x i16>,
3891   ptr,
3892   <vscale x 32 x i8>,
3893   <vscale x 32 x i1>,
3894   iXLen,
3895   iXLen);
3897 define <vscale x 32 x i16> @intrinsic_vluxei_mask_v_nxv32i16_nxv32i16_nxv32i8(<vscale x 32 x i16> %0, ptr %1, <vscale x 32 x i8> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
3898 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv32i16_nxv32i16_nxv32i8:
3899 ; CHECK:       # %bb.0: # %entry
3900 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
3901 ; CHECK-NEXT:    vluxei8.v v8, (a0), v16, v0.t
3902 ; CHECK-NEXT:    ret
3903 entry:
3904   %a = call <vscale x 32 x i16> @llvm.riscv.vluxei.mask.nxv32i16.nxv32i8(
3905     <vscale x 32 x i16> %0,
3906     ptr %1,
3907     <vscale x 32 x i8> %2,
3908     <vscale x 32 x i1> %3,
3909     iXLen %4, iXLen 1)
3911   ret <vscale x 32 x i16> %a
3914 declare <vscale x 1 x i32> @llvm.riscv.vluxei.nxv1i32.nxv1i8(
3915   <vscale x 1 x i32>,
3916   ptr,
3917   <vscale x 1 x i8>,
3918   iXLen);
3920 define <vscale x 1 x i32> @intrinsic_vluxei_v_nxv1i32_nxv1i32_nxv1i8(ptr %0, <vscale x 1 x i8> %1, iXLen %2) nounwind {
3921 ; CHECK-LABEL: intrinsic_vluxei_v_nxv1i32_nxv1i32_nxv1i8:
3922 ; CHECK:       # %bb.0: # %entry
3923 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
3924 ; CHECK-NEXT:    vluxei8.v v9, (a0), v8
3925 ; CHECK-NEXT:    vmv1r.v v8, v9
3926 ; CHECK-NEXT:    ret
3927 entry:
3928   %a = call <vscale x 1 x i32> @llvm.riscv.vluxei.nxv1i32.nxv1i8(
3929     <vscale x 1 x i32> undef,
3930     ptr %0,
3931     <vscale x 1 x i8> %1,
3932     iXLen %2)
3934   ret <vscale x 1 x i32> %a
3937 declare <vscale x 1 x i32> @llvm.riscv.vluxei.mask.nxv1i32.nxv1i8(
3938   <vscale x 1 x i32>,
3939   ptr,
3940   <vscale x 1 x i8>,
3941   <vscale x 1 x i1>,
3942   iXLen,
3943   iXLen);
3945 define <vscale x 1 x i32> @intrinsic_vluxei_mask_v_nxv1i32_nxv1i32_nxv1i8(<vscale x 1 x i32> %0, ptr %1, <vscale x 1 x i8> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
3946 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i32_nxv1i32_nxv1i8:
3947 ; CHECK:       # %bb.0: # %entry
3948 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu
3949 ; CHECK-NEXT:    vluxei8.v v8, (a0), v9, v0.t
3950 ; CHECK-NEXT:    ret
3951 entry:
3952   %a = call <vscale x 1 x i32> @llvm.riscv.vluxei.mask.nxv1i32.nxv1i8(
3953     <vscale x 1 x i32> %0,
3954     ptr %1,
3955     <vscale x 1 x i8> %2,
3956     <vscale x 1 x i1> %3,
3957     iXLen %4, iXLen 1)
3959   ret <vscale x 1 x i32> %a
3962 declare <vscale x 2 x i32> @llvm.riscv.vluxei.nxv2i32.nxv2i8(
3963   <vscale x 2 x i32>,
3964   ptr,
3965   <vscale x 2 x i8>,
3966   iXLen);
3968 define <vscale x 2 x i32> @intrinsic_vluxei_v_nxv2i32_nxv2i32_nxv2i8(ptr %0, <vscale x 2 x i8> %1, iXLen %2) nounwind {
3969 ; CHECK-LABEL: intrinsic_vluxei_v_nxv2i32_nxv2i32_nxv2i8:
3970 ; CHECK:       # %bb.0: # %entry
3971 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
3972 ; CHECK-NEXT:    vluxei8.v v9, (a0), v8
3973 ; CHECK-NEXT:    vmv.v.v v8, v9
3974 ; CHECK-NEXT:    ret
3975 entry:
3976   %a = call <vscale x 2 x i32> @llvm.riscv.vluxei.nxv2i32.nxv2i8(
3977     <vscale x 2 x i32> undef,
3978     ptr %0,
3979     <vscale x 2 x i8> %1,
3980     iXLen %2)
3982   ret <vscale x 2 x i32> %a
3985 declare <vscale x 2 x i32> @llvm.riscv.vluxei.mask.nxv2i32.nxv2i8(
3986   <vscale x 2 x i32>,
3987   ptr,
3988   <vscale x 2 x i8>,
3989   <vscale x 2 x i1>,
3990   iXLen,
3991   iXLen);
3993 define <vscale x 2 x i32> @intrinsic_vluxei_mask_v_nxv2i32_nxv2i32_nxv2i8(<vscale x 2 x i32> %0, ptr %1, <vscale x 2 x i8> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
3994 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i32_nxv2i32_nxv2i8:
3995 ; CHECK:       # %bb.0: # %entry
3996 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu
3997 ; CHECK-NEXT:    vluxei8.v v8, (a0), v9, v0.t
3998 ; CHECK-NEXT:    ret
3999 entry:
4000   %a = call <vscale x 2 x i32> @llvm.riscv.vluxei.mask.nxv2i32.nxv2i8(
4001     <vscale x 2 x i32> %0,
4002     ptr %1,
4003     <vscale x 2 x i8> %2,
4004     <vscale x 2 x i1> %3,
4005     iXLen %4, iXLen 1)
4007   ret <vscale x 2 x i32> %a
4010 declare <vscale x 4 x i32> @llvm.riscv.vluxei.nxv4i32.nxv4i8(
4011   <vscale x 4 x i32>,
4012   ptr,
4013   <vscale x 4 x i8>,
4014   iXLen);
4016 define <vscale x 4 x i32> @intrinsic_vluxei_v_nxv4i32_nxv4i32_nxv4i8(ptr %0, <vscale x 4 x i8> %1, iXLen %2) nounwind {
4017 ; CHECK-LABEL: intrinsic_vluxei_v_nxv4i32_nxv4i32_nxv4i8:
4018 ; CHECK:       # %bb.0: # %entry
4019 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
4020 ; CHECK-NEXT:    vluxei8.v v10, (a0), v8
4021 ; CHECK-NEXT:    vmv.v.v v8, v10
4022 ; CHECK-NEXT:    ret
4023 entry:
4024   %a = call <vscale x 4 x i32> @llvm.riscv.vluxei.nxv4i32.nxv4i8(
4025     <vscale x 4 x i32> undef,
4026     ptr %0,
4027     <vscale x 4 x i8> %1,
4028     iXLen %2)
4030   ret <vscale x 4 x i32> %a
4033 declare <vscale x 4 x i32> @llvm.riscv.vluxei.mask.nxv4i32.nxv4i8(
4034   <vscale x 4 x i32>,
4035   ptr,
4036   <vscale x 4 x i8>,
4037   <vscale x 4 x i1>,
4038   iXLen,
4039   iXLen);
4041 define <vscale x 4 x i32> @intrinsic_vluxei_mask_v_nxv4i32_nxv4i32_nxv4i8(<vscale x 4 x i32> %0, ptr %1, <vscale x 4 x i8> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
4042 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i32_nxv4i32_nxv4i8:
4043 ; CHECK:       # %bb.0: # %entry
4044 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu
4045 ; CHECK-NEXT:    vluxei8.v v8, (a0), v10, v0.t
4046 ; CHECK-NEXT:    ret
4047 entry:
4048   %a = call <vscale x 4 x i32> @llvm.riscv.vluxei.mask.nxv4i32.nxv4i8(
4049     <vscale x 4 x i32> %0,
4050     ptr %1,
4051     <vscale x 4 x i8> %2,
4052     <vscale x 4 x i1> %3,
4053     iXLen %4, iXLen 1)
4055   ret <vscale x 4 x i32> %a
4058 declare <vscale x 8 x i32> @llvm.riscv.vluxei.nxv8i32.nxv8i8(
4059   <vscale x 8 x i32>,
4060   ptr,
4061   <vscale x 8 x i8>,
4062   iXLen);
4064 define <vscale x 8 x i32> @intrinsic_vluxei_v_nxv8i32_nxv8i32_nxv8i8(ptr %0, <vscale x 8 x i8> %1, iXLen %2) nounwind {
4065 ; CHECK-LABEL: intrinsic_vluxei_v_nxv8i32_nxv8i32_nxv8i8:
4066 ; CHECK:       # %bb.0: # %entry
4067 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
4068 ; CHECK-NEXT:    vluxei8.v v12, (a0), v8
4069 ; CHECK-NEXT:    vmv.v.v v8, v12
4070 ; CHECK-NEXT:    ret
4071 entry:
4072   %a = call <vscale x 8 x i32> @llvm.riscv.vluxei.nxv8i32.nxv8i8(
4073     <vscale x 8 x i32> undef,
4074     ptr %0,
4075     <vscale x 8 x i8> %1,
4076     iXLen %2)
4078   ret <vscale x 8 x i32> %a
4081 declare <vscale x 8 x i32> @llvm.riscv.vluxei.mask.nxv8i32.nxv8i8(
4082   <vscale x 8 x i32>,
4083   ptr,
4084   <vscale x 8 x i8>,
4085   <vscale x 8 x i1>,
4086   iXLen,
4087   iXLen);
4089 define <vscale x 8 x i32> @intrinsic_vluxei_mask_v_nxv8i32_nxv8i32_nxv8i8(<vscale x 8 x i32> %0, ptr %1, <vscale x 8 x i8> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
4090 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i32_nxv8i32_nxv8i8:
4091 ; CHECK:       # %bb.0: # %entry
4092 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, mu
4093 ; CHECK-NEXT:    vluxei8.v v8, (a0), v12, v0.t
4094 ; CHECK-NEXT:    ret
4095 entry:
4096   %a = call <vscale x 8 x i32> @llvm.riscv.vluxei.mask.nxv8i32.nxv8i8(
4097     <vscale x 8 x i32> %0,
4098     ptr %1,
4099     <vscale x 8 x i8> %2,
4100     <vscale x 8 x i1> %3,
4101     iXLen %4, iXLen 1)
4103   ret <vscale x 8 x i32> %a
4106 declare <vscale x 16 x i32> @llvm.riscv.vluxei.nxv16i32.nxv16i8(
4107   <vscale x 16 x i32>,
4108   ptr,
4109   <vscale x 16 x i8>,
4110   iXLen);
4112 define <vscale x 16 x i32> @intrinsic_vluxei_v_nxv16i32_nxv16i32_nxv16i8(ptr %0, <vscale x 16 x i8> %1, iXLen %2) nounwind {
4113 ; CHECK-LABEL: intrinsic_vluxei_v_nxv16i32_nxv16i32_nxv16i8:
4114 ; CHECK:       # %bb.0: # %entry
4115 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
4116 ; CHECK-NEXT:    vluxei8.v v16, (a0), v8
4117 ; CHECK-NEXT:    vmv.v.v v8, v16
4118 ; CHECK-NEXT:    ret
4119 entry:
4120   %a = call <vscale x 16 x i32> @llvm.riscv.vluxei.nxv16i32.nxv16i8(
4121     <vscale x 16 x i32> undef,
4122     ptr %0,
4123     <vscale x 16 x i8> %1,
4124     iXLen %2)
4126   ret <vscale x 16 x i32> %a
4129 declare <vscale x 16 x i32> @llvm.riscv.vluxei.mask.nxv16i32.nxv16i8(
4130   <vscale x 16 x i32>,
4131   ptr,
4132   <vscale x 16 x i8>,
4133   <vscale x 16 x i1>,
4134   iXLen,
4135   iXLen);
4137 define <vscale x 16 x i32> @intrinsic_vluxei_mask_v_nxv16i32_nxv16i32_nxv16i8(<vscale x 16 x i32> %0, ptr %1, <vscale x 16 x i8> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
4138 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16i32_nxv16i32_nxv16i8:
4139 ; CHECK:       # %bb.0: # %entry
4140 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
4141 ; CHECK-NEXT:    vluxei8.v v8, (a0), v16, v0.t
4142 ; CHECK-NEXT:    ret
4143 entry:
4144   %a = call <vscale x 16 x i32> @llvm.riscv.vluxei.mask.nxv16i32.nxv16i8(
4145     <vscale x 16 x i32> %0,
4146     ptr %1,
4147     <vscale x 16 x i8> %2,
4148     <vscale x 16 x i1> %3,
4149     iXLen %4, iXLen 1)
4151   ret <vscale x 16 x i32> %a
4154 declare <vscale x 1 x i64> @llvm.riscv.vluxei.nxv1i64.nxv1i8(
4155   <vscale x 1 x i64>,
4156   ptr,
4157   <vscale x 1 x i8>,
4158   iXLen);
4160 define <vscale x 1 x i64> @intrinsic_vluxei_v_nxv1i64_nxv1i64_nxv1i8(ptr %0, <vscale x 1 x i8> %1, iXLen %2) nounwind {
4161 ; CHECK-LABEL: intrinsic_vluxei_v_nxv1i64_nxv1i64_nxv1i8:
4162 ; CHECK:       # %bb.0: # %entry
4163 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
4164 ; CHECK-NEXT:    vluxei8.v v9, (a0), v8
4165 ; CHECK-NEXT:    vmv.v.v v8, v9
4166 ; CHECK-NEXT:    ret
4167 entry:
4168   %a = call <vscale x 1 x i64> @llvm.riscv.vluxei.nxv1i64.nxv1i8(
4169     <vscale x 1 x i64> undef,
4170     ptr %0,
4171     <vscale x 1 x i8> %1,
4172     iXLen %2)
4174   ret <vscale x 1 x i64> %a
4177 declare <vscale x 1 x i64> @llvm.riscv.vluxei.mask.nxv1i64.nxv1i8(
4178   <vscale x 1 x i64>,
4179   ptr,
4180   <vscale x 1 x i8>,
4181   <vscale x 1 x i1>,
4182   iXLen,
4183   iXLen);
4185 define <vscale x 1 x i64> @intrinsic_vluxei_mask_v_nxv1i64_nxv1i64_nxv1i8(<vscale x 1 x i64> %0, ptr %1, <vscale x 1 x i8> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
4186 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1i64_nxv1i64_nxv1i8:
4187 ; CHECK:       # %bb.0: # %entry
4188 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu
4189 ; CHECK-NEXT:    vluxei8.v v8, (a0), v9, v0.t
4190 ; CHECK-NEXT:    ret
4191 entry:
4192   %a = call <vscale x 1 x i64> @llvm.riscv.vluxei.mask.nxv1i64.nxv1i8(
4193     <vscale x 1 x i64> %0,
4194     ptr %1,
4195     <vscale x 1 x i8> %2,
4196     <vscale x 1 x i1> %3,
4197     iXLen %4, iXLen 1)
4199   ret <vscale x 1 x i64> %a
4202 declare <vscale x 2 x i64> @llvm.riscv.vluxei.nxv2i64.nxv2i8(
4203   <vscale x 2 x i64>,
4204   ptr,
4205   <vscale x 2 x i8>,
4206   iXLen);
4208 define <vscale x 2 x i64> @intrinsic_vluxei_v_nxv2i64_nxv2i64_nxv2i8(ptr %0, <vscale x 2 x i8> %1, iXLen %2) nounwind {
4209 ; CHECK-LABEL: intrinsic_vluxei_v_nxv2i64_nxv2i64_nxv2i8:
4210 ; CHECK:       # %bb.0: # %entry
4211 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
4212 ; CHECK-NEXT:    vluxei8.v v10, (a0), v8
4213 ; CHECK-NEXT:    vmv.v.v v8, v10
4214 ; CHECK-NEXT:    ret
4215 entry:
4216   %a = call <vscale x 2 x i64> @llvm.riscv.vluxei.nxv2i64.nxv2i8(
4217     <vscale x 2 x i64> undef,
4218     ptr %0,
4219     <vscale x 2 x i8> %1,
4220     iXLen %2)
4222   ret <vscale x 2 x i64> %a
4225 declare <vscale x 2 x i64> @llvm.riscv.vluxei.mask.nxv2i64.nxv2i8(
4226   <vscale x 2 x i64>,
4227   ptr,
4228   <vscale x 2 x i8>,
4229   <vscale x 2 x i1>,
4230   iXLen,
4231   iXLen);
4233 define <vscale x 2 x i64> @intrinsic_vluxei_mask_v_nxv2i64_nxv2i64_nxv2i8(<vscale x 2 x i64> %0, ptr %1, <vscale x 2 x i8> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
4234 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2i64_nxv2i64_nxv2i8:
4235 ; CHECK:       # %bb.0: # %entry
4236 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, mu
4237 ; CHECK-NEXT:    vluxei8.v v8, (a0), v10, v0.t
4238 ; CHECK-NEXT:    ret
4239 entry:
4240   %a = call <vscale x 2 x i64> @llvm.riscv.vluxei.mask.nxv2i64.nxv2i8(
4241     <vscale x 2 x i64> %0,
4242     ptr %1,
4243     <vscale x 2 x i8> %2,
4244     <vscale x 2 x i1> %3,
4245     iXLen %4, iXLen 1)
4247   ret <vscale x 2 x i64> %a
4250 declare <vscale x 4 x i64> @llvm.riscv.vluxei.nxv4i64.nxv4i8(
4251   <vscale x 4 x i64>,
4252   ptr,
4253   <vscale x 4 x i8>,
4254   iXLen);
4256 define <vscale x 4 x i64> @intrinsic_vluxei_v_nxv4i64_nxv4i64_nxv4i8(ptr %0, <vscale x 4 x i8> %1, iXLen %2) nounwind {
4257 ; CHECK-LABEL: intrinsic_vluxei_v_nxv4i64_nxv4i64_nxv4i8:
4258 ; CHECK:       # %bb.0: # %entry
4259 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
4260 ; CHECK-NEXT:    vluxei8.v v12, (a0), v8
4261 ; CHECK-NEXT:    vmv.v.v v8, v12
4262 ; CHECK-NEXT:    ret
4263 entry:
4264   %a = call <vscale x 4 x i64> @llvm.riscv.vluxei.nxv4i64.nxv4i8(
4265     <vscale x 4 x i64> undef,
4266     ptr %0,
4267     <vscale x 4 x i8> %1,
4268     iXLen %2)
4270   ret <vscale x 4 x i64> %a
4273 declare <vscale x 4 x i64> @llvm.riscv.vluxei.mask.nxv4i64.nxv4i8(
4274   <vscale x 4 x i64>,
4275   ptr,
4276   <vscale x 4 x i8>,
4277   <vscale x 4 x i1>,
4278   iXLen,
4279   iXLen);
4281 define <vscale x 4 x i64> @intrinsic_vluxei_mask_v_nxv4i64_nxv4i64_nxv4i8(<vscale x 4 x i64> %0, ptr %1, <vscale x 4 x i8> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
4282 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4i64_nxv4i64_nxv4i8:
4283 ; CHECK:       # %bb.0: # %entry
4284 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, mu
4285 ; CHECK-NEXT:    vluxei8.v v8, (a0), v12, v0.t
4286 ; CHECK-NEXT:    ret
4287 entry:
4288   %a = call <vscale x 4 x i64> @llvm.riscv.vluxei.mask.nxv4i64.nxv4i8(
4289     <vscale x 4 x i64> %0,
4290     ptr %1,
4291     <vscale x 4 x i8> %2,
4292     <vscale x 4 x i1> %3,
4293     iXLen %4, iXLen 1)
4295   ret <vscale x 4 x i64> %a
4298 declare <vscale x 8 x i64> @llvm.riscv.vluxei.nxv8i64.nxv8i8(
4299   <vscale x 8 x i64>,
4300   ptr,
4301   <vscale x 8 x i8>,
4302   iXLen);
4304 define <vscale x 8 x i64> @intrinsic_vluxei_v_nxv8i64_nxv8i64_nxv8i8(ptr %0, <vscale x 8 x i8> %1, iXLen %2) nounwind {
4305 ; CHECK-LABEL: intrinsic_vluxei_v_nxv8i64_nxv8i64_nxv8i8:
4306 ; CHECK:       # %bb.0: # %entry
4307 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
4308 ; CHECK-NEXT:    vluxei8.v v16, (a0), v8
4309 ; CHECK-NEXT:    vmv.v.v v8, v16
4310 ; CHECK-NEXT:    ret
4311 entry:
4312   %a = call <vscale x 8 x i64> @llvm.riscv.vluxei.nxv8i64.nxv8i8(
4313     <vscale x 8 x i64> undef,
4314     ptr %0,
4315     <vscale x 8 x i8> %1,
4316     iXLen %2)
4318   ret <vscale x 8 x i64> %a
4321 declare <vscale x 8 x i64> @llvm.riscv.vluxei.mask.nxv8i64.nxv8i8(
4322   <vscale x 8 x i64>,
4323   ptr,
4324   <vscale x 8 x i8>,
4325   <vscale x 8 x i1>,
4326   iXLen,
4327   iXLen);
4329 define <vscale x 8 x i64> @intrinsic_vluxei_mask_v_nxv8i64_nxv8i64_nxv8i8(<vscale x 8 x i64> %0, ptr %1, <vscale x 8 x i8> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
4330 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8i64_nxv8i64_nxv8i8:
4331 ; CHECK:       # %bb.0: # %entry
4332 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
4333 ; CHECK-NEXT:    vluxei8.v v8, (a0), v16, v0.t
4334 ; CHECK-NEXT:    ret
4335 entry:
4336   %a = call <vscale x 8 x i64> @llvm.riscv.vluxei.mask.nxv8i64.nxv8i8(
4337     <vscale x 8 x i64> %0,
4338     ptr %1,
4339     <vscale x 8 x i8> %2,
4340     <vscale x 8 x i1> %3,
4341     iXLen %4, iXLen 1)
4343   ret <vscale x 8 x i64> %a
4346 declare <vscale x 1 x half> @llvm.riscv.vluxei.nxv1f16.nxv1i8(
4347   <vscale x 1 x half>,
4348   ptr,
4349   <vscale x 1 x i8>,
4350   iXLen);
4352 define <vscale x 1 x half> @intrinsic_vluxei_v_nxv1f16_nxv1f16_nxv1i8(ptr %0, <vscale x 1 x i8> %1, iXLen %2) nounwind {
4353 ; CHECK-LABEL: intrinsic_vluxei_v_nxv1f16_nxv1f16_nxv1i8:
4354 ; CHECK:       # %bb.0: # %entry
4355 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
4356 ; CHECK-NEXT:    vluxei8.v v9, (a0), v8
4357 ; CHECK-NEXT:    vmv1r.v v8, v9
4358 ; CHECK-NEXT:    ret
4359 entry:
4360   %a = call <vscale x 1 x half> @llvm.riscv.vluxei.nxv1f16.nxv1i8(
4361     <vscale x 1 x half> undef,
4362     ptr %0,
4363     <vscale x 1 x i8> %1,
4364     iXLen %2)
4366   ret <vscale x 1 x half> %a
4369 declare <vscale x 1 x half> @llvm.riscv.vluxei.mask.nxv1f16.nxv1i8(
4370   <vscale x 1 x half>,
4371   ptr,
4372   <vscale x 1 x i8>,
4373   <vscale x 1 x i1>,
4374   iXLen,
4375   iXLen);
4377 define <vscale x 1 x half> @intrinsic_vluxei_mask_v_nxv1f16_nxv1f16_nxv1i8(<vscale x 1 x half> %0, ptr %1, <vscale x 1 x i8> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
4378 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1f16_nxv1f16_nxv1i8:
4379 ; CHECK:       # %bb.0: # %entry
4380 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu
4381 ; CHECK-NEXT:    vluxei8.v v8, (a0), v9, v0.t
4382 ; CHECK-NEXT:    ret
4383 entry:
4384   %a = call <vscale x 1 x half> @llvm.riscv.vluxei.mask.nxv1f16.nxv1i8(
4385     <vscale x 1 x half> %0,
4386     ptr %1,
4387     <vscale x 1 x i8> %2,
4388     <vscale x 1 x i1> %3,
4389     iXLen %4, iXLen 1)
4391   ret <vscale x 1 x half> %a
4394 declare <vscale x 2 x half> @llvm.riscv.vluxei.nxv2f16.nxv2i8(
4395   <vscale x 2 x half>,
4396   ptr,
4397   <vscale x 2 x i8>,
4398   iXLen);
4400 define <vscale x 2 x half> @intrinsic_vluxei_v_nxv2f16_nxv2f16_nxv2i8(ptr %0, <vscale x 2 x i8> %1, iXLen %2) nounwind {
4401 ; CHECK-LABEL: intrinsic_vluxei_v_nxv2f16_nxv2f16_nxv2i8:
4402 ; CHECK:       # %bb.0: # %entry
4403 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
4404 ; CHECK-NEXT:    vluxei8.v v9, (a0), v8
4405 ; CHECK-NEXT:    vmv1r.v v8, v9
4406 ; CHECK-NEXT:    ret
4407 entry:
4408   %a = call <vscale x 2 x half> @llvm.riscv.vluxei.nxv2f16.nxv2i8(
4409     <vscale x 2 x half> undef,
4410     ptr %0,
4411     <vscale x 2 x i8> %1,
4412     iXLen %2)
4414   ret <vscale x 2 x half> %a
4417 declare <vscale x 2 x half> @llvm.riscv.vluxei.mask.nxv2f16.nxv2i8(
4418   <vscale x 2 x half>,
4419   ptr,
4420   <vscale x 2 x i8>,
4421   <vscale x 2 x i1>,
4422   iXLen,
4423   iXLen);
4425 define <vscale x 2 x half> @intrinsic_vluxei_mask_v_nxv2f16_nxv2f16_nxv2i8(<vscale x 2 x half> %0, ptr %1, <vscale x 2 x i8> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
4426 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2f16_nxv2f16_nxv2i8:
4427 ; CHECK:       # %bb.0: # %entry
4428 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu
4429 ; CHECK-NEXT:    vluxei8.v v8, (a0), v9, v0.t
4430 ; CHECK-NEXT:    ret
4431 entry:
4432   %a = call <vscale x 2 x half> @llvm.riscv.vluxei.mask.nxv2f16.nxv2i8(
4433     <vscale x 2 x half> %0,
4434     ptr %1,
4435     <vscale x 2 x i8> %2,
4436     <vscale x 2 x i1> %3,
4437     iXLen %4, iXLen 1)
4439   ret <vscale x 2 x half> %a
4442 declare <vscale x 4 x half> @llvm.riscv.vluxei.nxv4f16.nxv4i8(
4443   <vscale x 4 x half>,
4444   ptr,
4445   <vscale x 4 x i8>,
4446   iXLen);
4448 define <vscale x 4 x half> @intrinsic_vluxei_v_nxv4f16_nxv4f16_nxv4i8(ptr %0, <vscale x 4 x i8> %1, iXLen %2) nounwind {
4449 ; CHECK-LABEL: intrinsic_vluxei_v_nxv4f16_nxv4f16_nxv4i8:
4450 ; CHECK:       # %bb.0: # %entry
4451 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
4452 ; CHECK-NEXT:    vluxei8.v v9, (a0), v8
4453 ; CHECK-NEXT:    vmv.v.v v8, v9
4454 ; CHECK-NEXT:    ret
4455 entry:
4456   %a = call <vscale x 4 x half> @llvm.riscv.vluxei.nxv4f16.nxv4i8(
4457     <vscale x 4 x half> undef,
4458     ptr %0,
4459     <vscale x 4 x i8> %1,
4460     iXLen %2)
4462   ret <vscale x 4 x half> %a
4465 declare <vscale x 4 x half> @llvm.riscv.vluxei.mask.nxv4f16.nxv4i8(
4466   <vscale x 4 x half>,
4467   ptr,
4468   <vscale x 4 x i8>,
4469   <vscale x 4 x i1>,
4470   iXLen,
4471   iXLen);
4473 define <vscale x 4 x half> @intrinsic_vluxei_mask_v_nxv4f16_nxv4f16_nxv4i8(<vscale x 4 x half> %0, ptr %1, <vscale x 4 x i8> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
4474 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4f16_nxv4f16_nxv4i8:
4475 ; CHECK:       # %bb.0: # %entry
4476 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu
4477 ; CHECK-NEXT:    vluxei8.v v8, (a0), v9, v0.t
4478 ; CHECK-NEXT:    ret
4479 entry:
4480   %a = call <vscale x 4 x half> @llvm.riscv.vluxei.mask.nxv4f16.nxv4i8(
4481     <vscale x 4 x half> %0,
4482     ptr %1,
4483     <vscale x 4 x i8> %2,
4484     <vscale x 4 x i1> %3,
4485     iXLen %4, iXLen 1)
4487   ret <vscale x 4 x half> %a
4490 declare <vscale x 8 x half> @llvm.riscv.vluxei.nxv8f16.nxv8i8(
4491   <vscale x 8 x half>,
4492   ptr,
4493   <vscale x 8 x i8>,
4494   iXLen);
4496 define <vscale x 8 x half> @intrinsic_vluxei_v_nxv8f16_nxv8f16_nxv8i8(ptr %0, <vscale x 8 x i8> %1, iXLen %2) nounwind {
4497 ; CHECK-LABEL: intrinsic_vluxei_v_nxv8f16_nxv8f16_nxv8i8:
4498 ; CHECK:       # %bb.0: # %entry
4499 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
4500 ; CHECK-NEXT:    vluxei8.v v10, (a0), v8
4501 ; CHECK-NEXT:    vmv.v.v v8, v10
4502 ; CHECK-NEXT:    ret
4503 entry:
4504   %a = call <vscale x 8 x half> @llvm.riscv.vluxei.nxv8f16.nxv8i8(
4505     <vscale x 8 x half> undef,
4506     ptr %0,
4507     <vscale x 8 x i8> %1,
4508     iXLen %2)
4510   ret <vscale x 8 x half> %a
4513 declare <vscale x 8 x half> @llvm.riscv.vluxei.mask.nxv8f16.nxv8i8(
4514   <vscale x 8 x half>,
4515   ptr,
4516   <vscale x 8 x i8>,
4517   <vscale x 8 x i1>,
4518   iXLen,
4519   iXLen);
4521 define <vscale x 8 x half> @intrinsic_vluxei_mask_v_nxv8f16_nxv8f16_nxv8i8(<vscale x 8 x half> %0, ptr %1, <vscale x 8 x i8> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
4522 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8f16_nxv8f16_nxv8i8:
4523 ; CHECK:       # %bb.0: # %entry
4524 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu
4525 ; CHECK-NEXT:    vluxei8.v v8, (a0), v10, v0.t
4526 ; CHECK-NEXT:    ret
4527 entry:
4528   %a = call <vscale x 8 x half> @llvm.riscv.vluxei.mask.nxv8f16.nxv8i8(
4529     <vscale x 8 x half> %0,
4530     ptr %1,
4531     <vscale x 8 x i8> %2,
4532     <vscale x 8 x i1> %3,
4533     iXLen %4, iXLen 1)
4535   ret <vscale x 8 x half> %a
4538 declare <vscale x 16 x half> @llvm.riscv.vluxei.nxv16f16.nxv16i8(
4539   <vscale x 16 x half>,
4540   ptr,
4541   <vscale x 16 x i8>,
4542   iXLen);
4544 define <vscale x 16 x half> @intrinsic_vluxei_v_nxv16f16_nxv16f16_nxv16i8(ptr %0, <vscale x 16 x i8> %1, iXLen %2) nounwind {
4545 ; CHECK-LABEL: intrinsic_vluxei_v_nxv16f16_nxv16f16_nxv16i8:
4546 ; CHECK:       # %bb.0: # %entry
4547 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
4548 ; CHECK-NEXT:    vluxei8.v v12, (a0), v8
4549 ; CHECK-NEXT:    vmv.v.v v8, v12
4550 ; CHECK-NEXT:    ret
4551 entry:
4552   %a = call <vscale x 16 x half> @llvm.riscv.vluxei.nxv16f16.nxv16i8(
4553     <vscale x 16 x half> undef,
4554     ptr %0,
4555     <vscale x 16 x i8> %1,
4556     iXLen %2)
4558   ret <vscale x 16 x half> %a
4561 declare <vscale x 16 x half> @llvm.riscv.vluxei.mask.nxv16f16.nxv16i8(
4562   <vscale x 16 x half>,
4563   ptr,
4564   <vscale x 16 x i8>,
4565   <vscale x 16 x i1>,
4566   iXLen,
4567   iXLen);
4569 define <vscale x 16 x half> @intrinsic_vluxei_mask_v_nxv16f16_nxv16f16_nxv16i8(<vscale x 16 x half> %0, ptr %1, <vscale x 16 x i8> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
4570 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16f16_nxv16f16_nxv16i8:
4571 ; CHECK:       # %bb.0: # %entry
4572 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, mu
4573 ; CHECK-NEXT:    vluxei8.v v8, (a0), v12, v0.t
4574 ; CHECK-NEXT:    ret
4575 entry:
4576   %a = call <vscale x 16 x half> @llvm.riscv.vluxei.mask.nxv16f16.nxv16i8(
4577     <vscale x 16 x half> %0,
4578     ptr %1,
4579     <vscale x 16 x i8> %2,
4580     <vscale x 16 x i1> %3,
4581     iXLen %4, iXLen 1)
4583   ret <vscale x 16 x half> %a
4586 declare <vscale x 32 x half> @llvm.riscv.vluxei.nxv32f16.nxv32i8(
4587   <vscale x 32 x half>,
4588   ptr,
4589   <vscale x 32 x i8>,
4590   iXLen);
4592 define <vscale x 32 x half> @intrinsic_vluxei_v_nxv32f16_nxv32f16_nxv32i8(ptr %0, <vscale x 32 x i8> %1, iXLen %2) nounwind {
4593 ; CHECK-LABEL: intrinsic_vluxei_v_nxv32f16_nxv32f16_nxv32i8:
4594 ; CHECK:       # %bb.0: # %entry
4595 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
4596 ; CHECK-NEXT:    vluxei8.v v16, (a0), v8
4597 ; CHECK-NEXT:    vmv.v.v v8, v16
4598 ; CHECK-NEXT:    ret
4599 entry:
4600   %a = call <vscale x 32 x half> @llvm.riscv.vluxei.nxv32f16.nxv32i8(
4601     <vscale x 32 x half> undef,
4602     ptr %0,
4603     <vscale x 32 x i8> %1,
4604     iXLen %2)
4606   ret <vscale x 32 x half> %a
4609 declare <vscale x 32 x half> @llvm.riscv.vluxei.mask.nxv32f16.nxv32i8(
4610   <vscale x 32 x half>,
4611   ptr,
4612   <vscale x 32 x i8>,
4613   <vscale x 32 x i1>,
4614   iXLen,
4615   iXLen);
4617 define <vscale x 32 x half> @intrinsic_vluxei_mask_v_nxv32f16_nxv32f16_nxv32i8(<vscale x 32 x half> %0, ptr %1, <vscale x 32 x i8> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
4618 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv32f16_nxv32f16_nxv32i8:
4619 ; CHECK:       # %bb.0: # %entry
4620 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
4621 ; CHECK-NEXT:    vluxei8.v v8, (a0), v16, v0.t
4622 ; CHECK-NEXT:    ret
4623 entry:
4624   %a = call <vscale x 32 x half> @llvm.riscv.vluxei.mask.nxv32f16.nxv32i8(
4625     <vscale x 32 x half> %0,
4626     ptr %1,
4627     <vscale x 32 x i8> %2,
4628     <vscale x 32 x i1> %3,
4629     iXLen %4, iXLen 1)
4631   ret <vscale x 32 x half> %a
4634 declare <vscale x 1 x float> @llvm.riscv.vluxei.nxv1f32.nxv1i8(
4635   <vscale x 1 x float>,
4636   ptr,
4637   <vscale x 1 x i8>,
4638   iXLen);
4640 define <vscale x 1 x float> @intrinsic_vluxei_v_nxv1f32_nxv1f32_nxv1i8(ptr %0, <vscale x 1 x i8> %1, iXLen %2) nounwind {
4641 ; CHECK-LABEL: intrinsic_vluxei_v_nxv1f32_nxv1f32_nxv1i8:
4642 ; CHECK:       # %bb.0: # %entry
4643 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
4644 ; CHECK-NEXT:    vluxei8.v v9, (a0), v8
4645 ; CHECK-NEXT:    vmv1r.v v8, v9
4646 ; CHECK-NEXT:    ret
4647 entry:
4648   %a = call <vscale x 1 x float> @llvm.riscv.vluxei.nxv1f32.nxv1i8(
4649     <vscale x 1 x float> undef,
4650     ptr %0,
4651     <vscale x 1 x i8> %1,
4652     iXLen %2)
4654   ret <vscale x 1 x float> %a
4657 declare <vscale x 1 x float> @llvm.riscv.vluxei.mask.nxv1f32.nxv1i8(
4658   <vscale x 1 x float>,
4659   ptr,
4660   <vscale x 1 x i8>,
4661   <vscale x 1 x i1>,
4662   iXLen,
4663   iXLen);
4665 define <vscale x 1 x float> @intrinsic_vluxei_mask_v_nxv1f32_nxv1f32_nxv1i8(<vscale x 1 x float> %0, ptr %1, <vscale x 1 x i8> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
4666 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1f32_nxv1f32_nxv1i8:
4667 ; CHECK:       # %bb.0: # %entry
4668 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu
4669 ; CHECK-NEXT:    vluxei8.v v8, (a0), v9, v0.t
4670 ; CHECK-NEXT:    ret
4671 entry:
4672   %a = call <vscale x 1 x float> @llvm.riscv.vluxei.mask.nxv1f32.nxv1i8(
4673     <vscale x 1 x float> %0,
4674     ptr %1,
4675     <vscale x 1 x i8> %2,
4676     <vscale x 1 x i1> %3,
4677     iXLen %4, iXLen 1)
4679   ret <vscale x 1 x float> %a
4682 declare <vscale x 2 x float> @llvm.riscv.vluxei.nxv2f32.nxv2i8(
4683   <vscale x 2 x float>,
4684   ptr,
4685   <vscale x 2 x i8>,
4686   iXLen);
4688 define <vscale x 2 x float> @intrinsic_vluxei_v_nxv2f32_nxv2f32_nxv2i8(ptr %0, <vscale x 2 x i8> %1, iXLen %2) nounwind {
4689 ; CHECK-LABEL: intrinsic_vluxei_v_nxv2f32_nxv2f32_nxv2i8:
4690 ; CHECK:       # %bb.0: # %entry
4691 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
4692 ; CHECK-NEXT:    vluxei8.v v9, (a0), v8
4693 ; CHECK-NEXT:    vmv.v.v v8, v9
4694 ; CHECK-NEXT:    ret
4695 entry:
4696   %a = call <vscale x 2 x float> @llvm.riscv.vluxei.nxv2f32.nxv2i8(
4697     <vscale x 2 x float> undef,
4698     ptr %0,
4699     <vscale x 2 x i8> %1,
4700     iXLen %2)
4702   ret <vscale x 2 x float> %a
4705 declare <vscale x 2 x float> @llvm.riscv.vluxei.mask.nxv2f32.nxv2i8(
4706   <vscale x 2 x float>,
4707   ptr,
4708   <vscale x 2 x i8>,
4709   <vscale x 2 x i1>,
4710   iXLen,
4711   iXLen);
4713 define <vscale x 2 x float> @intrinsic_vluxei_mask_v_nxv2f32_nxv2f32_nxv2i8(<vscale x 2 x float> %0, ptr %1, <vscale x 2 x i8> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
4714 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2f32_nxv2f32_nxv2i8:
4715 ; CHECK:       # %bb.0: # %entry
4716 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu
4717 ; CHECK-NEXT:    vluxei8.v v8, (a0), v9, v0.t
4718 ; CHECK-NEXT:    ret
4719 entry:
4720   %a = call <vscale x 2 x float> @llvm.riscv.vluxei.mask.nxv2f32.nxv2i8(
4721     <vscale x 2 x float> %0,
4722     ptr %1,
4723     <vscale x 2 x i8> %2,
4724     <vscale x 2 x i1> %3,
4725     iXLen %4, iXLen 1)
4727   ret <vscale x 2 x float> %a
4730 declare <vscale x 4 x float> @llvm.riscv.vluxei.nxv4f32.nxv4i8(
4731   <vscale x 4 x float>,
4732   ptr,
4733   <vscale x 4 x i8>,
4734   iXLen);
4736 define <vscale x 4 x float> @intrinsic_vluxei_v_nxv4f32_nxv4f32_nxv4i8(ptr %0, <vscale x 4 x i8> %1, iXLen %2) nounwind {
4737 ; CHECK-LABEL: intrinsic_vluxei_v_nxv4f32_nxv4f32_nxv4i8:
4738 ; CHECK:       # %bb.0: # %entry
4739 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
4740 ; CHECK-NEXT:    vluxei8.v v10, (a0), v8
4741 ; CHECK-NEXT:    vmv.v.v v8, v10
4742 ; CHECK-NEXT:    ret
4743 entry:
4744   %a = call <vscale x 4 x float> @llvm.riscv.vluxei.nxv4f32.nxv4i8(
4745     <vscale x 4 x float> undef,
4746     ptr %0,
4747     <vscale x 4 x i8> %1,
4748     iXLen %2)
4750   ret <vscale x 4 x float> %a
4753 declare <vscale x 4 x float> @llvm.riscv.vluxei.mask.nxv4f32.nxv4i8(
4754   <vscale x 4 x float>,
4755   ptr,
4756   <vscale x 4 x i8>,
4757   <vscale x 4 x i1>,
4758   iXLen,
4759   iXLen);
4761 define <vscale x 4 x float> @intrinsic_vluxei_mask_v_nxv4f32_nxv4f32_nxv4i8(<vscale x 4 x float> %0, ptr %1, <vscale x 4 x i8> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
4762 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4f32_nxv4f32_nxv4i8:
4763 ; CHECK:       # %bb.0: # %entry
4764 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu
4765 ; CHECK-NEXT:    vluxei8.v v8, (a0), v10, v0.t
4766 ; CHECK-NEXT:    ret
4767 entry:
4768   %a = call <vscale x 4 x float> @llvm.riscv.vluxei.mask.nxv4f32.nxv4i8(
4769     <vscale x 4 x float> %0,
4770     ptr %1,
4771     <vscale x 4 x i8> %2,
4772     <vscale x 4 x i1> %3,
4773     iXLen %4, iXLen 1)
4775   ret <vscale x 4 x float> %a
4778 declare <vscale x 8 x float> @llvm.riscv.vluxei.nxv8f32.nxv8i8(
4779   <vscale x 8 x float>,
4780   ptr,
4781   <vscale x 8 x i8>,
4782   iXLen);
4784 define <vscale x 8 x float> @intrinsic_vluxei_v_nxv8f32_nxv8f32_nxv8i8(ptr %0, <vscale x 8 x i8> %1, iXLen %2) nounwind {
4785 ; CHECK-LABEL: intrinsic_vluxei_v_nxv8f32_nxv8f32_nxv8i8:
4786 ; CHECK:       # %bb.0: # %entry
4787 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
4788 ; CHECK-NEXT:    vluxei8.v v12, (a0), v8
4789 ; CHECK-NEXT:    vmv.v.v v8, v12
4790 ; CHECK-NEXT:    ret
4791 entry:
4792   %a = call <vscale x 8 x float> @llvm.riscv.vluxei.nxv8f32.nxv8i8(
4793     <vscale x 8 x float> undef,
4794     ptr %0,
4795     <vscale x 8 x i8> %1,
4796     iXLen %2)
4798   ret <vscale x 8 x float> %a
4801 declare <vscale x 8 x float> @llvm.riscv.vluxei.mask.nxv8f32.nxv8i8(
4802   <vscale x 8 x float>,
4803   ptr,
4804   <vscale x 8 x i8>,
4805   <vscale x 8 x i1>,
4806   iXLen,
4807   iXLen);
4809 define <vscale x 8 x float> @intrinsic_vluxei_mask_v_nxv8f32_nxv8f32_nxv8i8(<vscale x 8 x float> %0, ptr %1, <vscale x 8 x i8> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
4810 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8f32_nxv8f32_nxv8i8:
4811 ; CHECK:       # %bb.0: # %entry
4812 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, mu
4813 ; CHECK-NEXT:    vluxei8.v v8, (a0), v12, v0.t
4814 ; CHECK-NEXT:    ret
4815 entry:
4816   %a = call <vscale x 8 x float> @llvm.riscv.vluxei.mask.nxv8f32.nxv8i8(
4817     <vscale x 8 x float> %0,
4818     ptr %1,
4819     <vscale x 8 x i8> %2,
4820     <vscale x 8 x i1> %3,
4821     iXLen %4, iXLen 1)
4823   ret <vscale x 8 x float> %a
4826 declare <vscale x 16 x float> @llvm.riscv.vluxei.nxv16f32.nxv16i8(
4827   <vscale x 16 x float>,
4828   ptr,
4829   <vscale x 16 x i8>,
4830   iXLen);
4832 define <vscale x 16 x float> @intrinsic_vluxei_v_nxv16f32_nxv16f32_nxv16i8(ptr %0, <vscale x 16 x i8> %1, iXLen %2) nounwind {
4833 ; CHECK-LABEL: intrinsic_vluxei_v_nxv16f32_nxv16f32_nxv16i8:
4834 ; CHECK:       # %bb.0: # %entry
4835 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
4836 ; CHECK-NEXT:    vluxei8.v v16, (a0), v8
4837 ; CHECK-NEXT:    vmv.v.v v8, v16
4838 ; CHECK-NEXT:    ret
4839 entry:
4840   %a = call <vscale x 16 x float> @llvm.riscv.vluxei.nxv16f32.nxv16i8(
4841     <vscale x 16 x float> undef,
4842     ptr %0,
4843     <vscale x 16 x i8> %1,
4844     iXLen %2)
4846   ret <vscale x 16 x float> %a
4849 declare <vscale x 16 x float> @llvm.riscv.vluxei.mask.nxv16f32.nxv16i8(
4850   <vscale x 16 x float>,
4851   ptr,
4852   <vscale x 16 x i8>,
4853   <vscale x 16 x i1>,
4854   iXLen,
4855   iXLen);
4857 define <vscale x 16 x float> @intrinsic_vluxei_mask_v_nxv16f32_nxv16f32_nxv16i8(<vscale x 16 x float> %0, ptr %1, <vscale x 16 x i8> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
4858 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv16f32_nxv16f32_nxv16i8:
4859 ; CHECK:       # %bb.0: # %entry
4860 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
4861 ; CHECK-NEXT:    vluxei8.v v8, (a0), v16, v0.t
4862 ; CHECK-NEXT:    ret
4863 entry:
4864   %a = call <vscale x 16 x float> @llvm.riscv.vluxei.mask.nxv16f32.nxv16i8(
4865     <vscale x 16 x float> %0,
4866     ptr %1,
4867     <vscale x 16 x i8> %2,
4868     <vscale x 16 x i1> %3,
4869     iXLen %4, iXLen 1)
4871   ret <vscale x 16 x float> %a
4874 declare <vscale x 1 x double> @llvm.riscv.vluxei.nxv1f64.nxv1i8(
4875   <vscale x 1 x double>,
4876   ptr,
4877   <vscale x 1 x i8>,
4878   iXLen);
4880 define <vscale x 1 x double> @intrinsic_vluxei_v_nxv1f64_nxv1f64_nxv1i8(ptr %0, <vscale x 1 x i8> %1, iXLen %2) nounwind {
4881 ; CHECK-LABEL: intrinsic_vluxei_v_nxv1f64_nxv1f64_nxv1i8:
4882 ; CHECK:       # %bb.0: # %entry
4883 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
4884 ; CHECK-NEXT:    vluxei8.v v9, (a0), v8
4885 ; CHECK-NEXT:    vmv.v.v v8, v9
4886 ; CHECK-NEXT:    ret
4887 entry:
4888   %a = call <vscale x 1 x double> @llvm.riscv.vluxei.nxv1f64.nxv1i8(
4889     <vscale x 1 x double> undef,
4890     ptr %0,
4891     <vscale x 1 x i8> %1,
4892     iXLen %2)
4894   ret <vscale x 1 x double> %a
4897 declare <vscale x 1 x double> @llvm.riscv.vluxei.mask.nxv1f64.nxv1i8(
4898   <vscale x 1 x double>,
4899   ptr,
4900   <vscale x 1 x i8>,
4901   <vscale x 1 x i1>,
4902   iXLen,
4903   iXLen);
4905 define <vscale x 1 x double> @intrinsic_vluxei_mask_v_nxv1f64_nxv1f64_nxv1i8(<vscale x 1 x double> %0, ptr %1, <vscale x 1 x i8> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
4906 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv1f64_nxv1f64_nxv1i8:
4907 ; CHECK:       # %bb.0: # %entry
4908 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu
4909 ; CHECK-NEXT:    vluxei8.v v8, (a0), v9, v0.t
4910 ; CHECK-NEXT:    ret
4911 entry:
4912   %a = call <vscale x 1 x double> @llvm.riscv.vluxei.mask.nxv1f64.nxv1i8(
4913     <vscale x 1 x double> %0,
4914     ptr %1,
4915     <vscale x 1 x i8> %2,
4916     <vscale x 1 x i1> %3,
4917     iXLen %4, iXLen 1)
4919   ret <vscale x 1 x double> %a
4922 declare <vscale x 2 x double> @llvm.riscv.vluxei.nxv2f64.nxv2i8(
4923   <vscale x 2 x double>,
4924   ptr,
4925   <vscale x 2 x i8>,
4926   iXLen);
4928 define <vscale x 2 x double> @intrinsic_vluxei_v_nxv2f64_nxv2f64_nxv2i8(ptr %0, <vscale x 2 x i8> %1, iXLen %2) nounwind {
4929 ; CHECK-LABEL: intrinsic_vluxei_v_nxv2f64_nxv2f64_nxv2i8:
4930 ; CHECK:       # %bb.0: # %entry
4931 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
4932 ; CHECK-NEXT:    vluxei8.v v10, (a0), v8
4933 ; CHECK-NEXT:    vmv.v.v v8, v10
4934 ; CHECK-NEXT:    ret
4935 entry:
4936   %a = call <vscale x 2 x double> @llvm.riscv.vluxei.nxv2f64.nxv2i8(
4937     <vscale x 2 x double> undef,
4938     ptr %0,
4939     <vscale x 2 x i8> %1,
4940     iXLen %2)
4942   ret <vscale x 2 x double> %a
4945 declare <vscale x 2 x double> @llvm.riscv.vluxei.mask.nxv2f64.nxv2i8(
4946   <vscale x 2 x double>,
4947   ptr,
4948   <vscale x 2 x i8>,
4949   <vscale x 2 x i1>,
4950   iXLen,
4951   iXLen);
4953 define <vscale x 2 x double> @intrinsic_vluxei_mask_v_nxv2f64_nxv2f64_nxv2i8(<vscale x 2 x double> %0, ptr %1, <vscale x 2 x i8> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
4954 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv2f64_nxv2f64_nxv2i8:
4955 ; CHECK:       # %bb.0: # %entry
4956 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, mu
4957 ; CHECK-NEXT:    vluxei8.v v8, (a0), v10, v0.t
4958 ; CHECK-NEXT:    ret
4959 entry:
4960   %a = call <vscale x 2 x double> @llvm.riscv.vluxei.mask.nxv2f64.nxv2i8(
4961     <vscale x 2 x double> %0,
4962     ptr %1,
4963     <vscale x 2 x i8> %2,
4964     <vscale x 2 x i1> %3,
4965     iXLen %4, iXLen 1)
4967   ret <vscale x 2 x double> %a
4970 declare <vscale x 4 x double> @llvm.riscv.vluxei.nxv4f64.nxv4i8(
4971   <vscale x 4 x double>,
4972   ptr,
4973   <vscale x 4 x i8>,
4974   iXLen);
4976 define <vscale x 4 x double> @intrinsic_vluxei_v_nxv4f64_nxv4f64_nxv4i8(ptr %0, <vscale x 4 x i8> %1, iXLen %2) nounwind {
4977 ; CHECK-LABEL: intrinsic_vluxei_v_nxv4f64_nxv4f64_nxv4i8:
4978 ; CHECK:       # %bb.0: # %entry
4979 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
4980 ; CHECK-NEXT:    vluxei8.v v12, (a0), v8
4981 ; CHECK-NEXT:    vmv.v.v v8, v12
4982 ; CHECK-NEXT:    ret
4983 entry:
4984   %a = call <vscale x 4 x double> @llvm.riscv.vluxei.nxv4f64.nxv4i8(
4985     <vscale x 4 x double> undef,
4986     ptr %0,
4987     <vscale x 4 x i8> %1,
4988     iXLen %2)
4990   ret <vscale x 4 x double> %a
4993 declare <vscale x 4 x double> @llvm.riscv.vluxei.mask.nxv4f64.nxv4i8(
4994   <vscale x 4 x double>,
4995   ptr,
4996   <vscale x 4 x i8>,
4997   <vscale x 4 x i1>,
4998   iXLen,
4999   iXLen);
5001 define <vscale x 4 x double> @intrinsic_vluxei_mask_v_nxv4f64_nxv4f64_nxv4i8(<vscale x 4 x double> %0, ptr %1, <vscale x 4 x i8> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
5002 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv4f64_nxv4f64_nxv4i8:
5003 ; CHECK:       # %bb.0: # %entry
5004 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, mu
5005 ; CHECK-NEXT:    vluxei8.v v8, (a0), v12, v0.t
5006 ; CHECK-NEXT:    ret
5007 entry:
5008   %a = call <vscale x 4 x double> @llvm.riscv.vluxei.mask.nxv4f64.nxv4i8(
5009     <vscale x 4 x double> %0,
5010     ptr %1,
5011     <vscale x 4 x i8> %2,
5012     <vscale x 4 x i1> %3,
5013     iXLen %4, iXLen 1)
5015   ret <vscale x 4 x double> %a
5018 declare <vscale x 8 x double> @llvm.riscv.vluxei.nxv8f64.nxv8i8(
5019   <vscale x 8 x double>,
5020   ptr,
5021   <vscale x 8 x i8>,
5022   iXLen);
5024 define <vscale x 8 x double> @intrinsic_vluxei_v_nxv8f64_nxv8f64_nxv8i8(ptr %0, <vscale x 8 x i8> %1, iXLen %2) nounwind {
5025 ; CHECK-LABEL: intrinsic_vluxei_v_nxv8f64_nxv8f64_nxv8i8:
5026 ; CHECK:       # %bb.0: # %entry
5027 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
5028 ; CHECK-NEXT:    vluxei8.v v16, (a0), v8
5029 ; CHECK-NEXT:    vmv.v.v v8, v16
5030 ; CHECK-NEXT:    ret
5031 entry:
5032   %a = call <vscale x 8 x double> @llvm.riscv.vluxei.nxv8f64.nxv8i8(
5033     <vscale x 8 x double> undef,
5034     ptr %0,
5035     <vscale x 8 x i8> %1,
5036     iXLen %2)
5038   ret <vscale x 8 x double> %a
5041 declare <vscale x 8 x double> @llvm.riscv.vluxei.mask.nxv8f64.nxv8i8(
5042   <vscale x 8 x double>,
5043   ptr,
5044   <vscale x 8 x i8>,
5045   <vscale x 8 x i1>,
5046   iXLen,
5047   iXLen);
5049 define <vscale x 8 x double> @intrinsic_vluxei_mask_v_nxv8f64_nxv8f64_nxv8i8(<vscale x 8 x double> %0, ptr %1, <vscale x 8 x i8> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
5050 ; CHECK-LABEL: intrinsic_vluxei_mask_v_nxv8f64_nxv8f64_nxv8i8:
5051 ; CHECK:       # %bb.0: # %entry
5052 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
5053 ; CHECK-NEXT:    vluxei8.v v8, (a0), v16, v0.t
5054 ; CHECK-NEXT:    ret
5055 entry:
5056   %a = call <vscale x 8 x double> @llvm.riscv.vluxei.mask.nxv8f64.nxv8i8(
5057     <vscale x 8 x double> %0,
5058     ptr %1,
5059     <vscale x 8 x i8> %2,
5060     <vscale x 8 x i1> %3,
5061     iXLen %4, iXLen 1)
5063   ret <vscale x 8 x double> %a