[RISCV] Support postRA vsetvl insertion pass (#70549)
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vlse.ll
blob3b191a7f8bb80916027261c0b47817f51f3768ca
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 i64> @llvm.riscv.vlse.nxv1i64(
8   <vscale x 1 x i64>,
9   ptr,
10   iXLen,
11   iXLen);
13 define <vscale x 1 x i64> @intrinsic_vlse_v_nxv1i64_nxv1i64(ptr %0, iXLen %1, iXLen %2) nounwind {
14 ; CHECK-LABEL: intrinsic_vlse_v_nxv1i64_nxv1i64:
15 ; CHECK:       # %bb.0: # %entry
16 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
17 ; CHECK-NEXT:    vlse64.v v8, (a0), a1
18 ; CHECK-NEXT:    ret
19 entry:
20   %a = call <vscale x 1 x i64> @llvm.riscv.vlse.nxv1i64(
21     <vscale x 1 x i64> undef,
22     ptr %0,
23     iXLen %1,
24     iXLen %2)
26   ret <vscale x 1 x i64> %a
29 declare <vscale x 1 x i64> @llvm.riscv.vlse.mask.nxv1i64(
30   <vscale x 1 x i64>,
31   ptr,
32   iXLen,
33   <vscale x 1 x i1>,
34   iXLen,
35   iXLen);
37 define <vscale x 1 x i64> @intrinsic_vlse_mask_v_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, ptr %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
38 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv1i64_nxv1i64:
39 ; CHECK:       # %bb.0: # %entry
40 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, mu
41 ; CHECK-NEXT:    vlse64.v v8, (a0), a1, v0.t
42 ; CHECK-NEXT:    ret
43 entry:
44   %a = call <vscale x 1 x i64> @llvm.riscv.vlse.mask.nxv1i64(
45     <vscale x 1 x i64> %0,
46     ptr %1,
47     iXLen %2,
48     <vscale x 1 x i1> %3,
49     iXLen %4, iXLen 1)
51   ret <vscale x 1 x i64> %a
54 declare <vscale x 2 x i64> @llvm.riscv.vlse.nxv2i64(
55   <vscale x 2 x i64>,
56   ptr,
57   iXLen,
58   iXLen);
60 define <vscale x 2 x i64> @intrinsic_vlse_v_nxv2i64_nxv2i64(ptr %0, iXLen %1, iXLen %2) nounwind {
61 ; CHECK-LABEL: intrinsic_vlse_v_nxv2i64_nxv2i64:
62 ; CHECK:       # %bb.0: # %entry
63 ; CHECK-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
64 ; CHECK-NEXT:    vlse64.v v8, (a0), a1
65 ; CHECK-NEXT:    ret
66 entry:
67   %a = call <vscale x 2 x i64> @llvm.riscv.vlse.nxv2i64(
68     <vscale x 2 x i64> undef,
69     ptr %0,
70     iXLen %1,
71     iXLen %2)
73   ret <vscale x 2 x i64> %a
76 declare <vscale x 2 x i64> @llvm.riscv.vlse.mask.nxv2i64(
77   <vscale x 2 x i64>,
78   ptr,
79   iXLen,
80   <vscale x 2 x i1>,
81   iXLen,
82   iXLen);
84 define <vscale x 2 x i64> @intrinsic_vlse_mask_v_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, ptr %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
85 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv2i64_nxv2i64:
86 ; CHECK:       # %bb.0: # %entry
87 ; CHECK-NEXT:    vsetvli zero, a2, e64, m2, ta, mu
88 ; CHECK-NEXT:    vlse64.v v8, (a0), a1, v0.t
89 ; CHECK-NEXT:    ret
90 entry:
91   %a = call <vscale x 2 x i64> @llvm.riscv.vlse.mask.nxv2i64(
92     <vscale x 2 x i64> %0,
93     ptr %1,
94     iXLen %2,
95     <vscale x 2 x i1> %3,
96     iXLen %4, iXLen 1)
98   ret <vscale x 2 x i64> %a
101 declare <vscale x 4 x i64> @llvm.riscv.vlse.nxv4i64(
102   <vscale x 4 x i64>,
103   ptr,
104   iXLen,
105   iXLen);
107 define <vscale x 4 x i64> @intrinsic_vlse_v_nxv4i64_nxv4i64(ptr %0, iXLen %1, iXLen %2) nounwind {
108 ; CHECK-LABEL: intrinsic_vlse_v_nxv4i64_nxv4i64:
109 ; CHECK:       # %bb.0: # %entry
110 ; CHECK-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
111 ; CHECK-NEXT:    vlse64.v v8, (a0), a1
112 ; CHECK-NEXT:    ret
113 entry:
114   %a = call <vscale x 4 x i64> @llvm.riscv.vlse.nxv4i64(
115     <vscale x 4 x i64> undef,
116     ptr %0,
117     iXLen %1,
118     iXLen %2)
120   ret <vscale x 4 x i64> %a
123 declare <vscale x 4 x i64> @llvm.riscv.vlse.mask.nxv4i64(
124   <vscale x 4 x i64>,
125   ptr,
126   iXLen,
127   <vscale x 4 x i1>,
128   iXLen,
129   iXLen);
131 define <vscale x 4 x i64> @intrinsic_vlse_mask_v_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, ptr %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
132 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv4i64_nxv4i64:
133 ; CHECK:       # %bb.0: # %entry
134 ; CHECK-NEXT:    vsetvli zero, a2, e64, m4, ta, mu
135 ; CHECK-NEXT:    vlse64.v v8, (a0), a1, v0.t
136 ; CHECK-NEXT:    ret
137 entry:
138   %a = call <vscale x 4 x i64> @llvm.riscv.vlse.mask.nxv4i64(
139     <vscale x 4 x i64> %0,
140     ptr %1,
141     iXLen %2,
142     <vscale x 4 x i1> %3,
143     iXLen %4, iXLen 1)
145   ret <vscale x 4 x i64> %a
148 declare <vscale x 8 x i64> @llvm.riscv.vlse.nxv8i64(
149   <vscale x 8 x i64>,
150   ptr,
151   iXLen,
152   iXLen);
154 define <vscale x 8 x i64> @intrinsic_vlse_v_nxv8i64_nxv8i64(ptr %0, iXLen %1, iXLen %2) nounwind {
155 ; CHECK-LABEL: intrinsic_vlse_v_nxv8i64_nxv8i64:
156 ; CHECK:       # %bb.0: # %entry
157 ; CHECK-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
158 ; CHECK-NEXT:    vlse64.v v8, (a0), a1
159 ; CHECK-NEXT:    ret
160 entry:
161   %a = call <vscale x 8 x i64> @llvm.riscv.vlse.nxv8i64(
162     <vscale x 8 x i64> undef,
163     ptr %0,
164     iXLen %1,
165     iXLen %2)
167   ret <vscale x 8 x i64> %a
170 declare <vscale x 8 x i64> @llvm.riscv.vlse.mask.nxv8i64(
171   <vscale x 8 x i64>,
172   ptr,
173   iXLen,
174   <vscale x 8 x i1>,
175   iXLen,
176   iXLen);
178 define <vscale x 8 x i64> @intrinsic_vlse_mask_v_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, ptr %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
179 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv8i64_nxv8i64:
180 ; CHECK:       # %bb.0: # %entry
181 ; CHECK-NEXT:    vsetvli zero, a2, e64, m8, ta, mu
182 ; CHECK-NEXT:    vlse64.v v8, (a0), a1, v0.t
183 ; CHECK-NEXT:    ret
184 entry:
185   %a = call <vscale x 8 x i64> @llvm.riscv.vlse.mask.nxv8i64(
186     <vscale x 8 x i64> %0,
187     ptr %1,
188     iXLen %2,
189     <vscale x 8 x i1> %3,
190     iXLen %4, iXLen 1)
192   ret <vscale x 8 x i64> %a
195 declare <vscale x 1 x double> @llvm.riscv.vlse.nxv1f64(
196   <vscale x 1 x double>,
197   ptr,
198   iXLen,
199   iXLen);
201 define <vscale x 1 x double> @intrinsic_vlse_v_nxv1f64_nxv1f64(ptr %0, iXLen %1, iXLen %2) nounwind {
202 ; CHECK-LABEL: intrinsic_vlse_v_nxv1f64_nxv1f64:
203 ; CHECK:       # %bb.0: # %entry
204 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
205 ; CHECK-NEXT:    vlse64.v v8, (a0), a1
206 ; CHECK-NEXT:    ret
207 entry:
208   %a = call <vscale x 1 x double> @llvm.riscv.vlse.nxv1f64(
209     <vscale x 1 x double> undef,
210     ptr %0,
211     iXLen %1,
212     iXLen %2)
214   ret <vscale x 1 x double> %a
217 declare <vscale x 1 x double> @llvm.riscv.vlse.mask.nxv1f64(
218   <vscale x 1 x double>,
219   ptr,
220   iXLen,
221   <vscale x 1 x i1>,
222   iXLen,
223   iXLen);
225 define <vscale x 1 x double> @intrinsic_vlse_mask_v_nxv1f64_nxv1f64(<vscale x 1 x double> %0, ptr %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
226 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv1f64_nxv1f64:
227 ; CHECK:       # %bb.0: # %entry
228 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, mu
229 ; CHECK-NEXT:    vlse64.v v8, (a0), a1, v0.t
230 ; CHECK-NEXT:    ret
231 entry:
232   %a = call <vscale x 1 x double> @llvm.riscv.vlse.mask.nxv1f64(
233     <vscale x 1 x double> %0,
234     ptr %1,
235     iXLen %2,
236     <vscale x 1 x i1> %3,
237     iXLen %4, iXLen 1)
239   ret <vscale x 1 x double> %a
242 declare <vscale x 2 x double> @llvm.riscv.vlse.nxv2f64(
243   <vscale x 2 x double>,
244   ptr,
245   iXLen,
246   iXLen);
248 define <vscale x 2 x double> @intrinsic_vlse_v_nxv2f64_nxv2f64(ptr %0, iXLen %1, iXLen %2) nounwind {
249 ; CHECK-LABEL: intrinsic_vlse_v_nxv2f64_nxv2f64:
250 ; CHECK:       # %bb.0: # %entry
251 ; CHECK-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
252 ; CHECK-NEXT:    vlse64.v v8, (a0), a1
253 ; CHECK-NEXT:    ret
254 entry:
255   %a = call <vscale x 2 x double> @llvm.riscv.vlse.nxv2f64(
256     <vscale x 2 x double> undef,
257     ptr %0,
258     iXLen %1,
259     iXLen %2)
261   ret <vscale x 2 x double> %a
264 declare <vscale x 2 x double> @llvm.riscv.vlse.mask.nxv2f64(
265   <vscale x 2 x double>,
266   ptr,
267   iXLen,
268   <vscale x 2 x i1>,
269   iXLen,
270   iXLen);
272 define <vscale x 2 x double> @intrinsic_vlse_mask_v_nxv2f64_nxv2f64(<vscale x 2 x double> %0, ptr %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
273 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv2f64_nxv2f64:
274 ; CHECK:       # %bb.0: # %entry
275 ; CHECK-NEXT:    vsetvli zero, a2, e64, m2, ta, mu
276 ; CHECK-NEXT:    vlse64.v v8, (a0), a1, v0.t
277 ; CHECK-NEXT:    ret
278 entry:
279   %a = call <vscale x 2 x double> @llvm.riscv.vlse.mask.nxv2f64(
280     <vscale x 2 x double> %0,
281     ptr %1,
282     iXLen %2,
283     <vscale x 2 x i1> %3,
284     iXLen %4, iXLen 1)
286   ret <vscale x 2 x double> %a
289 declare <vscale x 4 x double> @llvm.riscv.vlse.nxv4f64(
290   <vscale x 4 x double>,
291   ptr,
292   iXLen,
293   iXLen);
295 define <vscale x 4 x double> @intrinsic_vlse_v_nxv4f64_nxv4f64(ptr %0, iXLen %1, iXLen %2) nounwind {
296 ; CHECK-LABEL: intrinsic_vlse_v_nxv4f64_nxv4f64:
297 ; CHECK:       # %bb.0: # %entry
298 ; CHECK-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
299 ; CHECK-NEXT:    vlse64.v v8, (a0), a1
300 ; CHECK-NEXT:    ret
301 entry:
302   %a = call <vscale x 4 x double> @llvm.riscv.vlse.nxv4f64(
303     <vscale x 4 x double> undef,
304     ptr %0,
305     iXLen %1,
306     iXLen %2)
308   ret <vscale x 4 x double> %a
311 declare <vscale x 4 x double> @llvm.riscv.vlse.mask.nxv4f64(
312   <vscale x 4 x double>,
313   ptr,
314   iXLen,
315   <vscale x 4 x i1>,
316   iXLen,
317   iXLen);
319 define <vscale x 4 x double> @intrinsic_vlse_mask_v_nxv4f64_nxv4f64(<vscale x 4 x double> %0, ptr %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
320 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv4f64_nxv4f64:
321 ; CHECK:       # %bb.0: # %entry
322 ; CHECK-NEXT:    vsetvli zero, a2, e64, m4, ta, mu
323 ; CHECK-NEXT:    vlse64.v v8, (a0), a1, v0.t
324 ; CHECK-NEXT:    ret
325 entry:
326   %a = call <vscale x 4 x double> @llvm.riscv.vlse.mask.nxv4f64(
327     <vscale x 4 x double> %0,
328     ptr %1,
329     iXLen %2,
330     <vscale x 4 x i1> %3,
331     iXLen %4, iXLen 1)
333   ret <vscale x 4 x double> %a
336 declare <vscale x 8 x double> @llvm.riscv.vlse.nxv8f64(
337   <vscale x 8 x double>,
338   ptr,
339   iXLen,
340   iXLen);
342 define <vscale x 8 x double> @intrinsic_vlse_v_nxv8f64_nxv8f64(ptr %0, iXLen %1, iXLen %2) nounwind {
343 ; CHECK-LABEL: intrinsic_vlse_v_nxv8f64_nxv8f64:
344 ; CHECK:       # %bb.0: # %entry
345 ; CHECK-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
346 ; CHECK-NEXT:    vlse64.v v8, (a0), a1
347 ; CHECK-NEXT:    ret
348 entry:
349   %a = call <vscale x 8 x double> @llvm.riscv.vlse.nxv8f64(
350     <vscale x 8 x double> undef,
351     ptr %0,
352     iXLen %1,
353     iXLen %2)
355   ret <vscale x 8 x double> %a
358 declare <vscale x 8 x double> @llvm.riscv.vlse.mask.nxv8f64(
359   <vscale x 8 x double>,
360   ptr,
361   iXLen,
362   <vscale x 8 x i1>,
363   iXLen,
364   iXLen);
366 define <vscale x 8 x double> @intrinsic_vlse_mask_v_nxv8f64_nxv8f64(<vscale x 8 x double> %0, ptr %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
367 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv8f64_nxv8f64:
368 ; CHECK:       # %bb.0: # %entry
369 ; CHECK-NEXT:    vsetvli zero, a2, e64, m8, ta, mu
370 ; CHECK-NEXT:    vlse64.v v8, (a0), a1, v0.t
371 ; CHECK-NEXT:    ret
372 entry:
373   %a = call <vscale x 8 x double> @llvm.riscv.vlse.mask.nxv8f64(
374     <vscale x 8 x double> %0,
375     ptr %1,
376     iXLen %2,
377     <vscale x 8 x i1> %3,
378     iXLen %4, iXLen 1)
380   ret <vscale x 8 x double> %a
383 declare <vscale x 1 x i32> @llvm.riscv.vlse.nxv1i32(
384   <vscale x 1 x i32>,
385   ptr,
386   iXLen,
387   iXLen);
389 define <vscale x 1 x i32> @intrinsic_vlse_v_nxv1i32_nxv1i32(ptr %0, iXLen %1, iXLen %2) nounwind {
390 ; CHECK-LABEL: intrinsic_vlse_v_nxv1i32_nxv1i32:
391 ; CHECK:       # %bb.0: # %entry
392 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
393 ; CHECK-NEXT:    vlse32.v v8, (a0), a1
394 ; CHECK-NEXT:    ret
395 entry:
396   %a = call <vscale x 1 x i32> @llvm.riscv.vlse.nxv1i32(
397     <vscale x 1 x i32> undef,
398     ptr %0,
399     iXLen %1,
400     iXLen %2)
402   ret <vscale x 1 x i32> %a
405 declare <vscale x 1 x i32> @llvm.riscv.vlse.mask.nxv1i32(
406   <vscale x 1 x i32>,
407   ptr,
408   iXLen,
409   <vscale x 1 x i1>,
410   iXLen,
411   iXLen);
413 define <vscale x 1 x i32> @intrinsic_vlse_mask_v_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, ptr %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
414 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv1i32_nxv1i32:
415 ; CHECK:       # %bb.0: # %entry
416 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, mu
417 ; CHECK-NEXT:    vlse32.v v8, (a0), a1, v0.t
418 ; CHECK-NEXT:    ret
419 entry:
420   %a = call <vscale x 1 x i32> @llvm.riscv.vlse.mask.nxv1i32(
421     <vscale x 1 x i32> %0,
422     ptr %1,
423     iXLen %2,
424     <vscale x 1 x i1> %3,
425     iXLen %4, iXLen 1)
427   ret <vscale x 1 x i32> %a
430 declare <vscale x 2 x i32> @llvm.riscv.vlse.nxv2i32(
431   <vscale x 2 x i32>,
432   ptr,
433   iXLen,
434   iXLen);
436 define <vscale x 2 x i32> @intrinsic_vlse_v_nxv2i32_nxv2i32(ptr %0, iXLen %1, iXLen %2) nounwind {
437 ; CHECK-LABEL: intrinsic_vlse_v_nxv2i32_nxv2i32:
438 ; CHECK:       # %bb.0: # %entry
439 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
440 ; CHECK-NEXT:    vlse32.v v8, (a0), a1
441 ; CHECK-NEXT:    ret
442 entry:
443   %a = call <vscale x 2 x i32> @llvm.riscv.vlse.nxv2i32(
444     <vscale x 2 x i32> undef,
445     ptr %0,
446     iXLen %1,
447     iXLen %2)
449   ret <vscale x 2 x i32> %a
452 declare <vscale x 2 x i32> @llvm.riscv.vlse.mask.nxv2i32(
453   <vscale x 2 x i32>,
454   ptr,
455   iXLen,
456   <vscale x 2 x i1>,
457   iXLen,
458   iXLen);
460 define <vscale x 2 x i32> @intrinsic_vlse_mask_v_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, ptr %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
461 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv2i32_nxv2i32:
462 ; CHECK:       # %bb.0: # %entry
463 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, mu
464 ; CHECK-NEXT:    vlse32.v v8, (a0), a1, v0.t
465 ; CHECK-NEXT:    ret
466 entry:
467   %a = call <vscale x 2 x i32> @llvm.riscv.vlse.mask.nxv2i32(
468     <vscale x 2 x i32> %0,
469     ptr %1,
470     iXLen %2,
471     <vscale x 2 x i1> %3,
472     iXLen %4, iXLen 1)
474   ret <vscale x 2 x i32> %a
477 declare <vscale x 4 x i32> @llvm.riscv.vlse.nxv4i32(
478   <vscale x 4 x i32>,
479   ptr,
480   iXLen,
481   iXLen);
483 define <vscale x 4 x i32> @intrinsic_vlse_v_nxv4i32_nxv4i32(ptr %0, iXLen %1, iXLen %2) nounwind {
484 ; CHECK-LABEL: intrinsic_vlse_v_nxv4i32_nxv4i32:
485 ; CHECK:       # %bb.0: # %entry
486 ; CHECK-NEXT:    vsetvli zero, a2, e32, m2, ta, ma
487 ; CHECK-NEXT:    vlse32.v v8, (a0), a1
488 ; CHECK-NEXT:    ret
489 entry:
490   %a = call <vscale x 4 x i32> @llvm.riscv.vlse.nxv4i32(
491     <vscale x 4 x i32> undef,
492     ptr %0,
493     iXLen %1,
494     iXLen %2)
496   ret <vscale x 4 x i32> %a
499 declare <vscale x 4 x i32> @llvm.riscv.vlse.mask.nxv4i32(
500   <vscale x 4 x i32>,
501   ptr,
502   iXLen,
503   <vscale x 4 x i1>,
504   iXLen,
505   iXLen);
507 define <vscale x 4 x i32> @intrinsic_vlse_mask_v_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, ptr %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
508 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv4i32_nxv4i32:
509 ; CHECK:       # %bb.0: # %entry
510 ; CHECK-NEXT:    vsetvli zero, a2, e32, m2, ta, mu
511 ; CHECK-NEXT:    vlse32.v v8, (a0), a1, v0.t
512 ; CHECK-NEXT:    ret
513 entry:
514   %a = call <vscale x 4 x i32> @llvm.riscv.vlse.mask.nxv4i32(
515     <vscale x 4 x i32> %0,
516     ptr %1,
517     iXLen %2,
518     <vscale x 4 x i1> %3,
519     iXLen %4, iXLen 1)
521   ret <vscale x 4 x i32> %a
524 declare <vscale x 8 x i32> @llvm.riscv.vlse.nxv8i32(
525   <vscale x 8 x i32>,
526   ptr,
527   iXLen,
528   iXLen);
530 define <vscale x 8 x i32> @intrinsic_vlse_v_nxv8i32_nxv8i32(ptr %0, iXLen %1, iXLen %2) nounwind {
531 ; CHECK-LABEL: intrinsic_vlse_v_nxv8i32_nxv8i32:
532 ; CHECK:       # %bb.0: # %entry
533 ; CHECK-NEXT:    vsetvli zero, a2, e32, m4, ta, ma
534 ; CHECK-NEXT:    vlse32.v v8, (a0), a1
535 ; CHECK-NEXT:    ret
536 entry:
537   %a = call <vscale x 8 x i32> @llvm.riscv.vlse.nxv8i32(
538     <vscale x 8 x i32> undef,
539     ptr %0,
540     iXLen %1,
541     iXLen %2)
543   ret <vscale x 8 x i32> %a
546 declare <vscale x 8 x i32> @llvm.riscv.vlse.mask.nxv8i32(
547   <vscale x 8 x i32>,
548   ptr,
549   iXLen,
550   <vscale x 8 x i1>,
551   iXLen,
552   iXLen);
554 define <vscale x 8 x i32> @intrinsic_vlse_mask_v_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, ptr %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
555 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv8i32_nxv8i32:
556 ; CHECK:       # %bb.0: # %entry
557 ; CHECK-NEXT:    vsetvli zero, a2, e32, m4, ta, mu
558 ; CHECK-NEXT:    vlse32.v v8, (a0), a1, v0.t
559 ; CHECK-NEXT:    ret
560 entry:
561   %a = call <vscale x 8 x i32> @llvm.riscv.vlse.mask.nxv8i32(
562     <vscale x 8 x i32> %0,
563     ptr %1,
564     iXLen %2,
565     <vscale x 8 x i1> %3,
566     iXLen %4, iXLen 1)
568   ret <vscale x 8 x i32> %a
571 declare <vscale x 16 x i32> @llvm.riscv.vlse.nxv16i32(
572   <vscale x 16 x i32>,
573   ptr,
574   iXLen,
575   iXLen);
577 define <vscale x 16 x i32> @intrinsic_vlse_v_nxv16i32_nxv16i32(ptr %0, iXLen %1, iXLen %2) nounwind {
578 ; CHECK-LABEL: intrinsic_vlse_v_nxv16i32_nxv16i32:
579 ; CHECK:       # %bb.0: # %entry
580 ; CHECK-NEXT:    vsetvli zero, a2, e32, m8, ta, ma
581 ; CHECK-NEXT:    vlse32.v v8, (a0), a1
582 ; CHECK-NEXT:    ret
583 entry:
584   %a = call <vscale x 16 x i32> @llvm.riscv.vlse.nxv16i32(
585     <vscale x 16 x i32> undef,
586     ptr %0,
587     iXLen %1,
588     iXLen %2)
590   ret <vscale x 16 x i32> %a
593 declare <vscale x 16 x i32> @llvm.riscv.vlse.mask.nxv16i32(
594   <vscale x 16 x i32>,
595   ptr,
596   iXLen,
597   <vscale x 16 x i1>,
598   iXLen,
599   iXLen);
601 define <vscale x 16 x i32> @intrinsic_vlse_mask_v_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, ptr %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
602 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv16i32_nxv16i32:
603 ; CHECK:       # %bb.0: # %entry
604 ; CHECK-NEXT:    vsetvli zero, a2, e32, m8, ta, mu
605 ; CHECK-NEXT:    vlse32.v v8, (a0), a1, v0.t
606 ; CHECK-NEXT:    ret
607 entry:
608   %a = call <vscale x 16 x i32> @llvm.riscv.vlse.mask.nxv16i32(
609     <vscale x 16 x i32> %0,
610     ptr %1,
611     iXLen %2,
612     <vscale x 16 x i1> %3,
613     iXLen %4, iXLen 1)
615   ret <vscale x 16 x i32> %a
618 declare <vscale x 1 x float> @llvm.riscv.vlse.nxv1f32(
619   <vscale x 1 x float>,
620   ptr,
621   iXLen,
622   iXLen);
624 define <vscale x 1 x float> @intrinsic_vlse_v_nxv1f32_nxv1f32(ptr %0, iXLen %1, iXLen %2) nounwind {
625 ; CHECK-LABEL: intrinsic_vlse_v_nxv1f32_nxv1f32:
626 ; CHECK:       # %bb.0: # %entry
627 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
628 ; CHECK-NEXT:    vlse32.v v8, (a0), a1
629 ; CHECK-NEXT:    ret
630 entry:
631   %a = call <vscale x 1 x float> @llvm.riscv.vlse.nxv1f32(
632     <vscale x 1 x float> undef,
633     ptr %0,
634     iXLen %1,
635     iXLen %2)
637   ret <vscale x 1 x float> %a
640 declare <vscale x 1 x float> @llvm.riscv.vlse.mask.nxv1f32(
641   <vscale x 1 x float>,
642   ptr,
643   iXLen,
644   <vscale x 1 x i1>,
645   iXLen,
646   iXLen);
648 define <vscale x 1 x float> @intrinsic_vlse_mask_v_nxv1f32_nxv1f32(<vscale x 1 x float> %0, ptr %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
649 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv1f32_nxv1f32:
650 ; CHECK:       # %bb.0: # %entry
651 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, mu
652 ; CHECK-NEXT:    vlse32.v v8, (a0), a1, v0.t
653 ; CHECK-NEXT:    ret
654 entry:
655   %a = call <vscale x 1 x float> @llvm.riscv.vlse.mask.nxv1f32(
656     <vscale x 1 x float> %0,
657     ptr %1,
658     iXLen %2,
659     <vscale x 1 x i1> %3,
660     iXLen %4, iXLen 1)
662   ret <vscale x 1 x float> %a
665 declare <vscale x 2 x float> @llvm.riscv.vlse.nxv2f32(
666   <vscale x 2 x float>,
667   ptr,
668   iXLen,
669   iXLen);
671 define <vscale x 2 x float> @intrinsic_vlse_v_nxv2f32_nxv2f32(ptr %0, iXLen %1, iXLen %2) nounwind {
672 ; CHECK-LABEL: intrinsic_vlse_v_nxv2f32_nxv2f32:
673 ; CHECK:       # %bb.0: # %entry
674 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
675 ; CHECK-NEXT:    vlse32.v v8, (a0), a1
676 ; CHECK-NEXT:    ret
677 entry:
678   %a = call <vscale x 2 x float> @llvm.riscv.vlse.nxv2f32(
679     <vscale x 2 x float> undef,
680     ptr %0,
681     iXLen %1,
682     iXLen %2)
684   ret <vscale x 2 x float> %a
687 declare <vscale x 2 x float> @llvm.riscv.vlse.mask.nxv2f32(
688   <vscale x 2 x float>,
689   ptr,
690   iXLen,
691   <vscale x 2 x i1>,
692   iXLen,
693   iXLen);
695 define <vscale x 2 x float> @intrinsic_vlse_mask_v_nxv2f32_nxv2f32(<vscale x 2 x float> %0, ptr %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
696 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv2f32_nxv2f32:
697 ; CHECK:       # %bb.0: # %entry
698 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, mu
699 ; CHECK-NEXT:    vlse32.v v8, (a0), a1, v0.t
700 ; CHECK-NEXT:    ret
701 entry:
702   %a = call <vscale x 2 x float> @llvm.riscv.vlse.mask.nxv2f32(
703     <vscale x 2 x float> %0,
704     ptr %1,
705     iXLen %2,
706     <vscale x 2 x i1> %3,
707     iXLen %4, iXLen 1)
709   ret <vscale x 2 x float> %a
712 declare <vscale x 4 x float> @llvm.riscv.vlse.nxv4f32(
713   <vscale x 4 x float>,
714   ptr,
715   iXLen,
716   iXLen);
718 define <vscale x 4 x float> @intrinsic_vlse_v_nxv4f32_nxv4f32(ptr %0, iXLen %1, iXLen %2) nounwind {
719 ; CHECK-LABEL: intrinsic_vlse_v_nxv4f32_nxv4f32:
720 ; CHECK:       # %bb.0: # %entry
721 ; CHECK-NEXT:    vsetvli zero, a2, e32, m2, ta, ma
722 ; CHECK-NEXT:    vlse32.v v8, (a0), a1
723 ; CHECK-NEXT:    ret
724 entry:
725   %a = call <vscale x 4 x float> @llvm.riscv.vlse.nxv4f32(
726     <vscale x 4 x float> undef,
727     ptr %0,
728     iXLen %1,
729     iXLen %2)
731   ret <vscale x 4 x float> %a
734 declare <vscale x 4 x float> @llvm.riscv.vlse.mask.nxv4f32(
735   <vscale x 4 x float>,
736   ptr,
737   iXLen,
738   <vscale x 4 x i1>,
739   iXLen,
740   iXLen);
742 define <vscale x 4 x float> @intrinsic_vlse_mask_v_nxv4f32_nxv4f32(<vscale x 4 x float> %0, ptr %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
743 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv4f32_nxv4f32:
744 ; CHECK:       # %bb.0: # %entry
745 ; CHECK-NEXT:    vsetvli zero, a2, e32, m2, ta, mu
746 ; CHECK-NEXT:    vlse32.v v8, (a0), a1, v0.t
747 ; CHECK-NEXT:    ret
748 entry:
749   %a = call <vscale x 4 x float> @llvm.riscv.vlse.mask.nxv4f32(
750     <vscale x 4 x float> %0,
751     ptr %1,
752     iXLen %2,
753     <vscale x 4 x i1> %3,
754     iXLen %4, iXLen 1)
756   ret <vscale x 4 x float> %a
759 declare <vscale x 8 x float> @llvm.riscv.vlse.nxv8f32(
760   <vscale x 8 x float>,
761   ptr,
762   iXLen,
763   iXLen);
765 define <vscale x 8 x float> @intrinsic_vlse_v_nxv8f32_nxv8f32(ptr %0, iXLen %1, iXLen %2) nounwind {
766 ; CHECK-LABEL: intrinsic_vlse_v_nxv8f32_nxv8f32:
767 ; CHECK:       # %bb.0: # %entry
768 ; CHECK-NEXT:    vsetvli zero, a2, e32, m4, ta, ma
769 ; CHECK-NEXT:    vlse32.v v8, (a0), a1
770 ; CHECK-NEXT:    ret
771 entry:
772   %a = call <vscale x 8 x float> @llvm.riscv.vlse.nxv8f32(
773     <vscale x 8 x float> undef,
774     ptr %0,
775     iXLen %1,
776     iXLen %2)
778   ret <vscale x 8 x float> %a
781 declare <vscale x 8 x float> @llvm.riscv.vlse.mask.nxv8f32(
782   <vscale x 8 x float>,
783   ptr,
784   iXLen,
785   <vscale x 8 x i1>,
786   iXLen,
787   iXLen);
789 define <vscale x 8 x float> @intrinsic_vlse_mask_v_nxv8f32_nxv8f32(<vscale x 8 x float> %0, ptr %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
790 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv8f32_nxv8f32:
791 ; CHECK:       # %bb.0: # %entry
792 ; CHECK-NEXT:    vsetvli zero, a2, e32, m4, ta, mu
793 ; CHECK-NEXT:    vlse32.v v8, (a0), a1, v0.t
794 ; CHECK-NEXT:    ret
795 entry:
796   %a = call <vscale x 8 x float> @llvm.riscv.vlse.mask.nxv8f32(
797     <vscale x 8 x float> %0,
798     ptr %1,
799     iXLen %2,
800     <vscale x 8 x i1> %3,
801     iXLen %4, iXLen 1)
803   ret <vscale x 8 x float> %a
806 declare <vscale x 16 x float> @llvm.riscv.vlse.nxv16f32(
807   <vscale x 16 x float>,
808   ptr,
809   iXLen,
810   iXLen);
812 define <vscale x 16 x float> @intrinsic_vlse_v_nxv16f32_nxv16f32(ptr %0, iXLen %1, iXLen %2) nounwind {
813 ; CHECK-LABEL: intrinsic_vlse_v_nxv16f32_nxv16f32:
814 ; CHECK:       # %bb.0: # %entry
815 ; CHECK-NEXT:    vsetvli zero, a2, e32, m8, ta, ma
816 ; CHECK-NEXT:    vlse32.v v8, (a0), a1
817 ; CHECK-NEXT:    ret
818 entry:
819   %a = call <vscale x 16 x float> @llvm.riscv.vlse.nxv16f32(
820     <vscale x 16 x float> undef,
821     ptr %0,
822     iXLen %1,
823     iXLen %2)
825   ret <vscale x 16 x float> %a
828 declare <vscale x 16 x float> @llvm.riscv.vlse.mask.nxv16f32(
829   <vscale x 16 x float>,
830   ptr,
831   iXLen,
832   <vscale x 16 x i1>,
833   iXLen,
834   iXLen);
836 define <vscale x 16 x float> @intrinsic_vlse_mask_v_nxv16f32_nxv16f32(<vscale x 16 x float> %0, ptr %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
837 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv16f32_nxv16f32:
838 ; CHECK:       # %bb.0: # %entry
839 ; CHECK-NEXT:    vsetvli zero, a2, e32, m8, ta, mu
840 ; CHECK-NEXT:    vlse32.v v8, (a0), a1, v0.t
841 ; CHECK-NEXT:    ret
842 entry:
843   %a = call <vscale x 16 x float> @llvm.riscv.vlse.mask.nxv16f32(
844     <vscale x 16 x float> %0,
845     ptr %1,
846     iXLen %2,
847     <vscale x 16 x i1> %3,
848     iXLen %4, iXLen 1)
850   ret <vscale x 16 x float> %a
853 declare <vscale x 1 x i16> @llvm.riscv.vlse.nxv1i16(
854   <vscale x 1 x i16>,
855   ptr,
856   iXLen,
857   iXLen);
859 define <vscale x 1 x i16> @intrinsic_vlse_v_nxv1i16_nxv1i16(ptr %0, iXLen %1, iXLen %2) nounwind {
860 ; CHECK-LABEL: intrinsic_vlse_v_nxv1i16_nxv1i16:
861 ; CHECK:       # %bb.0: # %entry
862 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
863 ; CHECK-NEXT:    vlse16.v v8, (a0), a1
864 ; CHECK-NEXT:    ret
865 entry:
866   %a = call <vscale x 1 x i16> @llvm.riscv.vlse.nxv1i16(
867     <vscale x 1 x i16> undef,
868     ptr %0,
869     iXLen %1,
870     iXLen %2)
872   ret <vscale x 1 x i16> %a
875 declare <vscale x 1 x i16> @llvm.riscv.vlse.mask.nxv1i16(
876   <vscale x 1 x i16>,
877   ptr,
878   iXLen,
879   <vscale x 1 x i1>,
880   iXLen,
881   iXLen);
883 define <vscale x 1 x i16> @intrinsic_vlse_mask_v_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, ptr %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
884 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv1i16_nxv1i16:
885 ; CHECK:       # %bb.0: # %entry
886 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, mu
887 ; CHECK-NEXT:    vlse16.v v8, (a0), a1, v0.t
888 ; CHECK-NEXT:    ret
889 entry:
890   %a = call <vscale x 1 x i16> @llvm.riscv.vlse.mask.nxv1i16(
891     <vscale x 1 x i16> %0,
892     ptr %1,
893     iXLen %2,
894     <vscale x 1 x i1> %3,
895     iXLen %4, iXLen 1)
897   ret <vscale x 1 x i16> %a
900 declare <vscale x 2 x i16> @llvm.riscv.vlse.nxv2i16(
901   <vscale x 2 x i16>,
902   ptr,
903   iXLen,
904   iXLen);
906 define <vscale x 2 x i16> @intrinsic_vlse_v_nxv2i16_nxv2i16(ptr %0, iXLen %1, iXLen %2) nounwind {
907 ; CHECK-LABEL: intrinsic_vlse_v_nxv2i16_nxv2i16:
908 ; CHECK:       # %bb.0: # %entry
909 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
910 ; CHECK-NEXT:    vlse16.v v8, (a0), a1
911 ; CHECK-NEXT:    ret
912 entry:
913   %a = call <vscale x 2 x i16> @llvm.riscv.vlse.nxv2i16(
914     <vscale x 2 x i16> undef,
915     ptr %0,
916     iXLen %1,
917     iXLen %2)
919   ret <vscale x 2 x i16> %a
922 declare <vscale x 2 x i16> @llvm.riscv.vlse.mask.nxv2i16(
923   <vscale x 2 x i16>,
924   ptr,
925   iXLen,
926   <vscale x 2 x i1>,
927   iXLen,
928   iXLen);
930 define <vscale x 2 x i16> @intrinsic_vlse_mask_v_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, ptr %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
931 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv2i16_nxv2i16:
932 ; CHECK:       # %bb.0: # %entry
933 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, mu
934 ; CHECK-NEXT:    vlse16.v v8, (a0), a1, v0.t
935 ; CHECK-NEXT:    ret
936 entry:
937   %a = call <vscale x 2 x i16> @llvm.riscv.vlse.mask.nxv2i16(
938     <vscale x 2 x i16> %0,
939     ptr %1,
940     iXLen %2,
941     <vscale x 2 x i1> %3,
942     iXLen %4, iXLen 1)
944   ret <vscale x 2 x i16> %a
947 declare <vscale x 4 x i16> @llvm.riscv.vlse.nxv4i16(
948   <vscale x 4 x i16>,
949   ptr,
950   iXLen,
951   iXLen);
953 define <vscale x 4 x i16> @intrinsic_vlse_v_nxv4i16_nxv4i16(ptr %0, iXLen %1, iXLen %2) nounwind {
954 ; CHECK-LABEL: intrinsic_vlse_v_nxv4i16_nxv4i16:
955 ; CHECK:       # %bb.0: # %entry
956 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
957 ; CHECK-NEXT:    vlse16.v v8, (a0), a1
958 ; CHECK-NEXT:    ret
959 entry:
960   %a = call <vscale x 4 x i16> @llvm.riscv.vlse.nxv4i16(
961     <vscale x 4 x i16> undef,
962     ptr %0,
963     iXLen %1,
964     iXLen %2)
966   ret <vscale x 4 x i16> %a
969 declare <vscale x 4 x i16> @llvm.riscv.vlse.mask.nxv4i16(
970   <vscale x 4 x i16>,
971   ptr,
972   iXLen,
973   <vscale x 4 x i1>,
974   iXLen,
975   iXLen);
977 define <vscale x 4 x i16> @intrinsic_vlse_mask_v_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, ptr %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
978 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv4i16_nxv4i16:
979 ; CHECK:       # %bb.0: # %entry
980 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, mu
981 ; CHECK-NEXT:    vlse16.v v8, (a0), a1, v0.t
982 ; CHECK-NEXT:    ret
983 entry:
984   %a = call <vscale x 4 x i16> @llvm.riscv.vlse.mask.nxv4i16(
985     <vscale x 4 x i16> %0,
986     ptr %1,
987     iXLen %2,
988     <vscale x 4 x i1> %3,
989     iXLen %4, iXLen 1)
991   ret <vscale x 4 x i16> %a
994 declare <vscale x 8 x i16> @llvm.riscv.vlse.nxv8i16(
995   <vscale x 8 x i16>,
996   ptr,
997   iXLen,
998   iXLen);
1000 define <vscale x 8 x i16> @intrinsic_vlse_v_nxv8i16_nxv8i16(ptr %0, iXLen %1, iXLen %2) nounwind {
1001 ; CHECK-LABEL: intrinsic_vlse_v_nxv8i16_nxv8i16:
1002 ; CHECK:       # %bb.0: # %entry
1003 ; CHECK-NEXT:    vsetvli zero, a2, e16, m2, ta, ma
1004 ; CHECK-NEXT:    vlse16.v v8, (a0), a1
1005 ; CHECK-NEXT:    ret
1006 entry:
1007   %a = call <vscale x 8 x i16> @llvm.riscv.vlse.nxv8i16(
1008     <vscale x 8 x i16> undef,
1009     ptr %0,
1010     iXLen %1,
1011     iXLen %2)
1013   ret <vscale x 8 x i16> %a
1016 declare <vscale x 8 x i16> @llvm.riscv.vlse.mask.nxv8i16(
1017   <vscale x 8 x i16>,
1018   ptr,
1019   iXLen,
1020   <vscale x 8 x i1>,
1021   iXLen,
1022   iXLen);
1024 define <vscale x 8 x i16> @intrinsic_vlse_mask_v_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, ptr %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1025 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv8i16_nxv8i16:
1026 ; CHECK:       # %bb.0: # %entry
1027 ; CHECK-NEXT:    vsetvli zero, a2, e16, m2, ta, mu
1028 ; CHECK-NEXT:    vlse16.v v8, (a0), a1, v0.t
1029 ; CHECK-NEXT:    ret
1030 entry:
1031   %a = call <vscale x 8 x i16> @llvm.riscv.vlse.mask.nxv8i16(
1032     <vscale x 8 x i16> %0,
1033     ptr %1,
1034     iXLen %2,
1035     <vscale x 8 x i1> %3,
1036     iXLen %4, iXLen 1)
1038   ret <vscale x 8 x i16> %a
1041 declare <vscale x 16 x i16> @llvm.riscv.vlse.nxv16i16(
1042   <vscale x 16 x i16>,
1043   ptr,
1044   iXLen,
1045   iXLen);
1047 define <vscale x 16 x i16> @intrinsic_vlse_v_nxv16i16_nxv16i16(ptr %0, iXLen %1, iXLen %2) nounwind {
1048 ; CHECK-LABEL: intrinsic_vlse_v_nxv16i16_nxv16i16:
1049 ; CHECK:       # %bb.0: # %entry
1050 ; CHECK-NEXT:    vsetvli zero, a2, e16, m4, ta, ma
1051 ; CHECK-NEXT:    vlse16.v v8, (a0), a1
1052 ; CHECK-NEXT:    ret
1053 entry:
1054   %a = call <vscale x 16 x i16> @llvm.riscv.vlse.nxv16i16(
1055     <vscale x 16 x i16> undef,
1056     ptr %0,
1057     iXLen %1,
1058     iXLen %2)
1060   ret <vscale x 16 x i16> %a
1063 declare <vscale x 16 x i16> @llvm.riscv.vlse.mask.nxv16i16(
1064   <vscale x 16 x i16>,
1065   ptr,
1066   iXLen,
1067   <vscale x 16 x i1>,
1068   iXLen,
1069   iXLen);
1071 define <vscale x 16 x i16> @intrinsic_vlse_mask_v_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, ptr %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1072 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv16i16_nxv16i16:
1073 ; CHECK:       # %bb.0: # %entry
1074 ; CHECK-NEXT:    vsetvli zero, a2, e16, m4, ta, mu
1075 ; CHECK-NEXT:    vlse16.v v8, (a0), a1, v0.t
1076 ; CHECK-NEXT:    ret
1077 entry:
1078   %a = call <vscale x 16 x i16> @llvm.riscv.vlse.mask.nxv16i16(
1079     <vscale x 16 x i16> %0,
1080     ptr %1,
1081     iXLen %2,
1082     <vscale x 16 x i1> %3,
1083     iXLen %4, iXLen 1)
1085   ret <vscale x 16 x i16> %a
1088 declare <vscale x 32 x i16> @llvm.riscv.vlse.nxv32i16(
1089   <vscale x 32 x i16>,
1090   ptr,
1091   iXLen,
1092   iXLen);
1094 define <vscale x 32 x i16> @intrinsic_vlse_v_nxv32i16_nxv32i16(ptr %0, iXLen %1, iXLen %2) nounwind {
1095 ; CHECK-LABEL: intrinsic_vlse_v_nxv32i16_nxv32i16:
1096 ; CHECK:       # %bb.0: # %entry
1097 ; CHECK-NEXT:    vsetvli zero, a2, e16, m8, ta, ma
1098 ; CHECK-NEXT:    vlse16.v v8, (a0), a1
1099 ; CHECK-NEXT:    ret
1100 entry:
1101   %a = call <vscale x 32 x i16> @llvm.riscv.vlse.nxv32i16(
1102     <vscale x 32 x i16> undef,
1103     ptr %0,
1104     iXLen %1,
1105     iXLen %2)
1107   ret <vscale x 32 x i16> %a
1110 declare <vscale x 32 x i16> @llvm.riscv.vlse.mask.nxv32i16(
1111   <vscale x 32 x i16>,
1112   ptr,
1113   iXLen,
1114   <vscale x 32 x i1>,
1115   iXLen,
1116   iXLen);
1118 define <vscale x 32 x i16> @intrinsic_vlse_mask_v_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, ptr %1, iXLen %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
1119 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv32i16_nxv32i16:
1120 ; CHECK:       # %bb.0: # %entry
1121 ; CHECK-NEXT:    vsetvli zero, a2, e16, m8, ta, mu
1122 ; CHECK-NEXT:    vlse16.v v8, (a0), a1, v0.t
1123 ; CHECK-NEXT:    ret
1124 entry:
1125   %a = call <vscale x 32 x i16> @llvm.riscv.vlse.mask.nxv32i16(
1126     <vscale x 32 x i16> %0,
1127     ptr %1,
1128     iXLen %2,
1129     <vscale x 32 x i1> %3,
1130     iXLen %4, iXLen 1)
1132   ret <vscale x 32 x i16> %a
1135 declare <vscale x 1 x half> @llvm.riscv.vlse.nxv1f16(
1136   <vscale x 1 x half>,
1137   ptr,
1138   iXLen,
1139   iXLen);
1141 define <vscale x 1 x half> @intrinsic_vlse_v_nxv1f16_nxv1f16(ptr %0, iXLen %1, iXLen %2) nounwind {
1142 ; CHECK-LABEL: intrinsic_vlse_v_nxv1f16_nxv1f16:
1143 ; CHECK:       # %bb.0: # %entry
1144 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
1145 ; CHECK-NEXT:    vlse16.v v8, (a0), a1
1146 ; CHECK-NEXT:    ret
1147 entry:
1148   %a = call <vscale x 1 x half> @llvm.riscv.vlse.nxv1f16(
1149     <vscale x 1 x half> undef,
1150     ptr %0,
1151     iXLen %1,
1152     iXLen %2)
1154   ret <vscale x 1 x half> %a
1157 declare <vscale x 1 x half> @llvm.riscv.vlse.mask.nxv1f16(
1158   <vscale x 1 x half>,
1159   ptr,
1160   iXLen,
1161   <vscale x 1 x i1>,
1162   iXLen,
1163   iXLen);
1165 define <vscale x 1 x half> @intrinsic_vlse_mask_v_nxv1f16_nxv1f16(<vscale x 1 x half> %0, ptr %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1166 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv1f16_nxv1f16:
1167 ; CHECK:       # %bb.0: # %entry
1168 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, mu
1169 ; CHECK-NEXT:    vlse16.v v8, (a0), a1, v0.t
1170 ; CHECK-NEXT:    ret
1171 entry:
1172   %a = call <vscale x 1 x half> @llvm.riscv.vlse.mask.nxv1f16(
1173     <vscale x 1 x half> %0,
1174     ptr %1,
1175     iXLen %2,
1176     <vscale x 1 x i1> %3,
1177     iXLen %4, iXLen 1)
1179   ret <vscale x 1 x half> %a
1182 declare <vscale x 2 x half> @llvm.riscv.vlse.nxv2f16(
1183   <vscale x 2 x half>,
1184   ptr,
1185   iXLen,
1186   iXLen);
1188 define <vscale x 2 x half> @intrinsic_vlse_v_nxv2f16_nxv2f16(ptr %0, iXLen %1, iXLen %2) nounwind {
1189 ; CHECK-LABEL: intrinsic_vlse_v_nxv2f16_nxv2f16:
1190 ; CHECK:       # %bb.0: # %entry
1191 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
1192 ; CHECK-NEXT:    vlse16.v v8, (a0), a1
1193 ; CHECK-NEXT:    ret
1194 entry:
1195   %a = call <vscale x 2 x half> @llvm.riscv.vlse.nxv2f16(
1196     <vscale x 2 x half> undef,
1197     ptr %0,
1198     iXLen %1,
1199     iXLen %2)
1201   ret <vscale x 2 x half> %a
1204 declare <vscale x 2 x half> @llvm.riscv.vlse.mask.nxv2f16(
1205   <vscale x 2 x half>,
1206   ptr,
1207   iXLen,
1208   <vscale x 2 x i1>,
1209   iXLen,
1210   iXLen);
1212 define <vscale x 2 x half> @intrinsic_vlse_mask_v_nxv2f16_nxv2f16(<vscale x 2 x half> %0, ptr %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1213 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv2f16_nxv2f16:
1214 ; CHECK:       # %bb.0: # %entry
1215 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, mu
1216 ; CHECK-NEXT:    vlse16.v v8, (a0), a1, v0.t
1217 ; CHECK-NEXT:    ret
1218 entry:
1219   %a = call <vscale x 2 x half> @llvm.riscv.vlse.mask.nxv2f16(
1220     <vscale x 2 x half> %0,
1221     ptr %1,
1222     iXLen %2,
1223     <vscale x 2 x i1> %3,
1224     iXLen %4, iXLen 1)
1226   ret <vscale x 2 x half> %a
1229 declare <vscale x 4 x half> @llvm.riscv.vlse.nxv4f16(
1230   <vscale x 4 x half>,
1231   ptr,
1232   iXLen,
1233   iXLen);
1235 define <vscale x 4 x half> @intrinsic_vlse_v_nxv4f16_nxv4f16(ptr %0, iXLen %1, iXLen %2) nounwind {
1236 ; CHECK-LABEL: intrinsic_vlse_v_nxv4f16_nxv4f16:
1237 ; CHECK:       # %bb.0: # %entry
1238 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
1239 ; CHECK-NEXT:    vlse16.v v8, (a0), a1
1240 ; CHECK-NEXT:    ret
1241 entry:
1242   %a = call <vscale x 4 x half> @llvm.riscv.vlse.nxv4f16(
1243     <vscale x 4 x half> undef,
1244     ptr %0,
1245     iXLen %1,
1246     iXLen %2)
1248   ret <vscale x 4 x half> %a
1251 declare <vscale x 4 x half> @llvm.riscv.vlse.mask.nxv4f16(
1252   <vscale x 4 x half>,
1253   ptr,
1254   iXLen,
1255   <vscale x 4 x i1>,
1256   iXLen,
1257   iXLen);
1259 define <vscale x 4 x half> @intrinsic_vlse_mask_v_nxv4f16_nxv4f16(<vscale x 4 x half> %0, ptr %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1260 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv4f16_nxv4f16:
1261 ; CHECK:       # %bb.0: # %entry
1262 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, mu
1263 ; CHECK-NEXT:    vlse16.v v8, (a0), a1, v0.t
1264 ; CHECK-NEXT:    ret
1265 entry:
1266   %a = call <vscale x 4 x half> @llvm.riscv.vlse.mask.nxv4f16(
1267     <vscale x 4 x half> %0,
1268     ptr %1,
1269     iXLen %2,
1270     <vscale x 4 x i1> %3,
1271     iXLen %4, iXLen 1)
1273   ret <vscale x 4 x half> %a
1276 declare <vscale x 8 x half> @llvm.riscv.vlse.nxv8f16(
1277   <vscale x 8 x half>,
1278   ptr,
1279   iXLen,
1280   iXLen);
1282 define <vscale x 8 x half> @intrinsic_vlse_v_nxv8f16_nxv8f16(ptr %0, iXLen %1, iXLen %2) nounwind {
1283 ; CHECK-LABEL: intrinsic_vlse_v_nxv8f16_nxv8f16:
1284 ; CHECK:       # %bb.0: # %entry
1285 ; CHECK-NEXT:    vsetvli zero, a2, e16, m2, ta, ma
1286 ; CHECK-NEXT:    vlse16.v v8, (a0), a1
1287 ; CHECK-NEXT:    ret
1288 entry:
1289   %a = call <vscale x 8 x half> @llvm.riscv.vlse.nxv8f16(
1290     <vscale x 8 x half> undef,
1291     ptr %0,
1292     iXLen %1,
1293     iXLen %2)
1295   ret <vscale x 8 x half> %a
1298 declare <vscale x 8 x half> @llvm.riscv.vlse.mask.nxv8f16(
1299   <vscale x 8 x half>,
1300   ptr,
1301   iXLen,
1302   <vscale x 8 x i1>,
1303   iXLen,
1304   iXLen);
1306 define <vscale x 8 x half> @intrinsic_vlse_mask_v_nxv8f16_nxv8f16(<vscale x 8 x half> %0, ptr %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1307 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv8f16_nxv8f16:
1308 ; CHECK:       # %bb.0: # %entry
1309 ; CHECK-NEXT:    vsetvli zero, a2, e16, m2, ta, mu
1310 ; CHECK-NEXT:    vlse16.v v8, (a0), a1, v0.t
1311 ; CHECK-NEXT:    ret
1312 entry:
1313   %a = call <vscale x 8 x half> @llvm.riscv.vlse.mask.nxv8f16(
1314     <vscale x 8 x half> %0,
1315     ptr %1,
1316     iXLen %2,
1317     <vscale x 8 x i1> %3,
1318     iXLen %4, iXLen 1)
1320   ret <vscale x 8 x half> %a
1323 declare <vscale x 16 x half> @llvm.riscv.vlse.nxv16f16(
1324   <vscale x 16 x half>,
1325   ptr,
1326   iXLen,
1327   iXLen);
1329 define <vscale x 16 x half> @intrinsic_vlse_v_nxv16f16_nxv16f16(ptr %0, iXLen %1, iXLen %2) nounwind {
1330 ; CHECK-LABEL: intrinsic_vlse_v_nxv16f16_nxv16f16:
1331 ; CHECK:       # %bb.0: # %entry
1332 ; CHECK-NEXT:    vsetvli zero, a2, e16, m4, ta, ma
1333 ; CHECK-NEXT:    vlse16.v v8, (a0), a1
1334 ; CHECK-NEXT:    ret
1335 entry:
1336   %a = call <vscale x 16 x half> @llvm.riscv.vlse.nxv16f16(
1337     <vscale x 16 x half> undef,
1338     ptr %0,
1339     iXLen %1,
1340     iXLen %2)
1342   ret <vscale x 16 x half> %a
1345 declare <vscale x 16 x half> @llvm.riscv.vlse.mask.nxv16f16(
1346   <vscale x 16 x half>,
1347   ptr,
1348   iXLen,
1349   <vscale x 16 x i1>,
1350   iXLen,
1351   iXLen);
1353 define <vscale x 16 x half> @intrinsic_vlse_mask_v_nxv16f16_nxv16f16(<vscale x 16 x half> %0, ptr %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1354 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv16f16_nxv16f16:
1355 ; CHECK:       # %bb.0: # %entry
1356 ; CHECK-NEXT:    vsetvli zero, a2, e16, m4, ta, mu
1357 ; CHECK-NEXT:    vlse16.v v8, (a0), a1, v0.t
1358 ; CHECK-NEXT:    ret
1359 entry:
1360   %a = call <vscale x 16 x half> @llvm.riscv.vlse.mask.nxv16f16(
1361     <vscale x 16 x half> %0,
1362     ptr %1,
1363     iXLen %2,
1364     <vscale x 16 x i1> %3,
1365     iXLen %4, iXLen 1)
1367   ret <vscale x 16 x half> %a
1370 declare <vscale x 32 x half> @llvm.riscv.vlse.nxv32f16(
1371   <vscale x 32 x half>,
1372   ptr,
1373   iXLen,
1374   iXLen);
1376 define <vscale x 32 x half> @intrinsic_vlse_v_nxv32f16_nxv32f16(ptr %0, iXLen %1, iXLen %2) nounwind {
1377 ; CHECK-LABEL: intrinsic_vlse_v_nxv32f16_nxv32f16:
1378 ; CHECK:       # %bb.0: # %entry
1379 ; CHECK-NEXT:    vsetvli zero, a2, e16, m8, ta, ma
1380 ; CHECK-NEXT:    vlse16.v v8, (a0), a1
1381 ; CHECK-NEXT:    ret
1382 entry:
1383   %a = call <vscale x 32 x half> @llvm.riscv.vlse.nxv32f16(
1384     <vscale x 32 x half> undef,
1385     ptr %0,
1386     iXLen %1,
1387     iXLen %2)
1389   ret <vscale x 32 x half> %a
1392 declare <vscale x 32 x half> @llvm.riscv.vlse.mask.nxv32f16(
1393   <vscale x 32 x half>,
1394   ptr,
1395   iXLen,
1396   <vscale x 32 x i1>,
1397   iXLen,
1398   iXLen);
1400 define <vscale x 32 x half> @intrinsic_vlse_mask_v_nxv32f16_nxv32f16(<vscale x 32 x half> %0, ptr %1, iXLen %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
1401 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv32f16_nxv32f16:
1402 ; CHECK:       # %bb.0: # %entry
1403 ; CHECK-NEXT:    vsetvli zero, a2, e16, m8, ta, mu
1404 ; CHECK-NEXT:    vlse16.v v8, (a0), a1, v0.t
1405 ; CHECK-NEXT:    ret
1406 entry:
1407   %a = call <vscale x 32 x half> @llvm.riscv.vlse.mask.nxv32f16(
1408     <vscale x 32 x half> %0,
1409     ptr %1,
1410     iXLen %2,
1411     <vscale x 32 x i1> %3,
1412     iXLen %4, iXLen 1)
1414   ret <vscale x 32 x half> %a
1417 declare <vscale x 1 x i8> @llvm.riscv.vlse.nxv1i8(
1418   <vscale x 1 x i8>,
1419   ptr,
1420   iXLen,
1421   iXLen);
1423 define <vscale x 1 x i8> @intrinsic_vlse_v_nxv1i8_nxv1i8(ptr %0, iXLen %1, iXLen %2) nounwind {
1424 ; CHECK-LABEL: intrinsic_vlse_v_nxv1i8_nxv1i8:
1425 ; CHECK:       # %bb.0: # %entry
1426 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf8, ta, ma
1427 ; CHECK-NEXT:    vlse8.v v8, (a0), a1
1428 ; CHECK-NEXT:    ret
1429 entry:
1430   %a = call <vscale x 1 x i8> @llvm.riscv.vlse.nxv1i8(
1431     <vscale x 1 x i8> undef,
1432     ptr %0,
1433     iXLen %1,
1434     iXLen %2)
1436   ret <vscale x 1 x i8> %a
1439 declare <vscale x 1 x i8> @llvm.riscv.vlse.mask.nxv1i8(
1440   <vscale x 1 x i8>,
1441   ptr,
1442   iXLen,
1443   <vscale x 1 x i1>,
1444   iXLen,
1445   iXLen);
1447 define <vscale x 1 x i8> @intrinsic_vlse_mask_v_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, ptr %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1448 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv1i8_nxv1i8:
1449 ; CHECK:       # %bb.0: # %entry
1450 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf8, ta, mu
1451 ; CHECK-NEXT:    vlse8.v v8, (a0), a1, v0.t
1452 ; CHECK-NEXT:    ret
1453 entry:
1454   %a = call <vscale x 1 x i8> @llvm.riscv.vlse.mask.nxv1i8(
1455     <vscale x 1 x i8> %0,
1456     ptr %1,
1457     iXLen %2,
1458     <vscale x 1 x i1> %3,
1459     iXLen %4, iXLen 1)
1461   ret <vscale x 1 x i8> %a
1464 declare <vscale x 2 x i8> @llvm.riscv.vlse.nxv2i8(
1465   <vscale x 2 x i8>,
1466   ptr,
1467   iXLen,
1468   iXLen);
1470 define <vscale x 2 x i8> @intrinsic_vlse_v_nxv2i8_nxv2i8(ptr %0, iXLen %1, iXLen %2) nounwind {
1471 ; CHECK-LABEL: intrinsic_vlse_v_nxv2i8_nxv2i8:
1472 ; CHECK:       # %bb.0: # %entry
1473 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf4, ta, ma
1474 ; CHECK-NEXT:    vlse8.v v8, (a0), a1
1475 ; CHECK-NEXT:    ret
1476 entry:
1477   %a = call <vscale x 2 x i8> @llvm.riscv.vlse.nxv2i8(
1478     <vscale x 2 x i8> undef,
1479     ptr %0,
1480     iXLen %1,
1481     iXLen %2)
1483   ret <vscale x 2 x i8> %a
1486 declare <vscale x 2 x i8> @llvm.riscv.vlse.mask.nxv2i8(
1487   <vscale x 2 x i8>,
1488   ptr,
1489   iXLen,
1490   <vscale x 2 x i1>,
1491   iXLen,
1492   iXLen);
1494 define <vscale x 2 x i8> @intrinsic_vlse_mask_v_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, ptr %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1495 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv2i8_nxv2i8:
1496 ; CHECK:       # %bb.0: # %entry
1497 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf4, ta, mu
1498 ; CHECK-NEXT:    vlse8.v v8, (a0), a1, v0.t
1499 ; CHECK-NEXT:    ret
1500 entry:
1501   %a = call <vscale x 2 x i8> @llvm.riscv.vlse.mask.nxv2i8(
1502     <vscale x 2 x i8> %0,
1503     ptr %1,
1504     iXLen %2,
1505     <vscale x 2 x i1> %3,
1506     iXLen %4, iXLen 1)
1508   ret <vscale x 2 x i8> %a
1511 declare <vscale x 4 x i8> @llvm.riscv.vlse.nxv4i8(
1512   <vscale x 4 x i8>,
1513   ptr,
1514   iXLen,
1515   iXLen);
1517 define <vscale x 4 x i8> @intrinsic_vlse_v_nxv4i8_nxv4i8(ptr %0, iXLen %1, iXLen %2) nounwind {
1518 ; CHECK-LABEL: intrinsic_vlse_v_nxv4i8_nxv4i8:
1519 ; CHECK:       # %bb.0: # %entry
1520 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf2, ta, ma
1521 ; CHECK-NEXT:    vlse8.v v8, (a0), a1
1522 ; CHECK-NEXT:    ret
1523 entry:
1524   %a = call <vscale x 4 x i8> @llvm.riscv.vlse.nxv4i8(
1525     <vscale x 4 x i8> undef,
1526     ptr %0,
1527     iXLen %1,
1528     iXLen %2)
1530   ret <vscale x 4 x i8> %a
1533 declare <vscale x 4 x i8> @llvm.riscv.vlse.mask.nxv4i8(
1534   <vscale x 4 x i8>,
1535   ptr,
1536   iXLen,
1537   <vscale x 4 x i1>,
1538   iXLen,
1539   iXLen);
1541 define <vscale x 4 x i8> @intrinsic_vlse_mask_v_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, ptr %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1542 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv4i8_nxv4i8:
1543 ; CHECK:       # %bb.0: # %entry
1544 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf2, ta, mu
1545 ; CHECK-NEXT:    vlse8.v v8, (a0), a1, v0.t
1546 ; CHECK-NEXT:    ret
1547 entry:
1548   %a = call <vscale x 4 x i8> @llvm.riscv.vlse.mask.nxv4i8(
1549     <vscale x 4 x i8> %0,
1550     ptr %1,
1551     iXLen %2,
1552     <vscale x 4 x i1> %3,
1553     iXLen %4, iXLen 1)
1555   ret <vscale x 4 x i8> %a
1558 declare <vscale x 8 x i8> @llvm.riscv.vlse.nxv8i8(
1559   <vscale x 8 x i8>,
1560   ptr,
1561   iXLen,
1562   iXLen);
1564 define <vscale x 8 x i8> @intrinsic_vlse_v_nxv8i8_nxv8i8(ptr %0, iXLen %1, iXLen %2) nounwind {
1565 ; CHECK-LABEL: intrinsic_vlse_v_nxv8i8_nxv8i8:
1566 ; CHECK:       # %bb.0: # %entry
1567 ; CHECK-NEXT:    vsetvli zero, a2, e8, m1, ta, ma
1568 ; CHECK-NEXT:    vlse8.v v8, (a0), a1
1569 ; CHECK-NEXT:    ret
1570 entry:
1571   %a = call <vscale x 8 x i8> @llvm.riscv.vlse.nxv8i8(
1572     <vscale x 8 x i8> undef,
1573     ptr %0,
1574     iXLen %1,
1575     iXLen %2)
1577   ret <vscale x 8 x i8> %a
1580 declare <vscale x 8 x i8> @llvm.riscv.vlse.mask.nxv8i8(
1581   <vscale x 8 x i8>,
1582   ptr,
1583   iXLen,
1584   <vscale x 8 x i1>,
1585   iXLen,
1586   iXLen);
1588 define <vscale x 8 x i8> @intrinsic_vlse_mask_v_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, ptr %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1589 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv8i8_nxv8i8:
1590 ; CHECK:       # %bb.0: # %entry
1591 ; CHECK-NEXT:    vsetvli zero, a2, e8, m1, ta, mu
1592 ; CHECK-NEXT:    vlse8.v v8, (a0), a1, v0.t
1593 ; CHECK-NEXT:    ret
1594 entry:
1595   %a = call <vscale x 8 x i8> @llvm.riscv.vlse.mask.nxv8i8(
1596     <vscale x 8 x i8> %0,
1597     ptr %1,
1598     iXLen %2,
1599     <vscale x 8 x i1> %3,
1600     iXLen %4, iXLen 1)
1602   ret <vscale x 8 x i8> %a
1605 declare <vscale x 16 x i8> @llvm.riscv.vlse.nxv16i8(
1606   <vscale x 16 x i8>,
1607   ptr,
1608   iXLen,
1609   iXLen);
1611 define <vscale x 16 x i8> @intrinsic_vlse_v_nxv16i8_nxv16i8(ptr %0, iXLen %1, iXLen %2) nounwind {
1612 ; CHECK-LABEL: intrinsic_vlse_v_nxv16i8_nxv16i8:
1613 ; CHECK:       # %bb.0: # %entry
1614 ; CHECK-NEXT:    vsetvli zero, a2, e8, m2, ta, ma
1615 ; CHECK-NEXT:    vlse8.v v8, (a0), a1
1616 ; CHECK-NEXT:    ret
1617 entry:
1618   %a = call <vscale x 16 x i8> @llvm.riscv.vlse.nxv16i8(
1619     <vscale x 16 x i8> undef,
1620     ptr %0,
1621     iXLen %1,
1622     iXLen %2)
1624   ret <vscale x 16 x i8> %a
1627 declare <vscale x 16 x i8> @llvm.riscv.vlse.mask.nxv16i8(
1628   <vscale x 16 x i8>,
1629   ptr,
1630   iXLen,
1631   <vscale x 16 x i1>,
1632   iXLen,
1633   iXLen);
1635 define <vscale x 16 x i8> @intrinsic_vlse_mask_v_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, ptr %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1636 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv16i8_nxv16i8:
1637 ; CHECK:       # %bb.0: # %entry
1638 ; CHECK-NEXT:    vsetvli zero, a2, e8, m2, ta, mu
1639 ; CHECK-NEXT:    vlse8.v v8, (a0), a1, v0.t
1640 ; CHECK-NEXT:    ret
1641 entry:
1642   %a = call <vscale x 16 x i8> @llvm.riscv.vlse.mask.nxv16i8(
1643     <vscale x 16 x i8> %0,
1644     ptr %1,
1645     iXLen %2,
1646     <vscale x 16 x i1> %3,
1647     iXLen %4, iXLen 1)
1649   ret <vscale x 16 x i8> %a
1652 declare <vscale x 32 x i8> @llvm.riscv.vlse.nxv32i8(
1653   <vscale x 32 x i8>,
1654   ptr,
1655   iXLen,
1656   iXLen);
1658 define <vscale x 32 x i8> @intrinsic_vlse_v_nxv32i8_nxv32i8(ptr %0, iXLen %1, iXLen %2) nounwind {
1659 ; CHECK-LABEL: intrinsic_vlse_v_nxv32i8_nxv32i8:
1660 ; CHECK:       # %bb.0: # %entry
1661 ; CHECK-NEXT:    vsetvli zero, a2, e8, m4, ta, ma
1662 ; CHECK-NEXT:    vlse8.v v8, (a0), a1
1663 ; CHECK-NEXT:    ret
1664 entry:
1665   %a = call <vscale x 32 x i8> @llvm.riscv.vlse.nxv32i8(
1666     <vscale x 32 x i8> undef,
1667     ptr %0,
1668     iXLen %1,
1669     iXLen %2)
1671   ret <vscale x 32 x i8> %a
1674 declare <vscale x 32 x i8> @llvm.riscv.vlse.mask.nxv32i8(
1675   <vscale x 32 x i8>,
1676   ptr,
1677   iXLen,
1678   <vscale x 32 x i1>,
1679   iXLen,
1680   iXLen);
1682 define <vscale x 32 x i8> @intrinsic_vlse_mask_v_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, ptr %1, iXLen %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
1683 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv32i8_nxv32i8:
1684 ; CHECK:       # %bb.0: # %entry
1685 ; CHECK-NEXT:    vsetvli zero, a2, e8, m4, ta, mu
1686 ; CHECK-NEXT:    vlse8.v v8, (a0), a1, v0.t
1687 ; CHECK-NEXT:    ret
1688 entry:
1689   %a = call <vscale x 32 x i8> @llvm.riscv.vlse.mask.nxv32i8(
1690     <vscale x 32 x i8> %0,
1691     ptr %1,
1692     iXLen %2,
1693     <vscale x 32 x i1> %3,
1694     iXLen %4, iXLen 1)
1696   ret <vscale x 32 x i8> %a
1699 declare <vscale x 64 x i8> @llvm.riscv.vlse.nxv64i8(
1700   <vscale x 64 x i8>,
1701   ptr,
1702   iXLen,
1703   iXLen);
1705 define <vscale x 64 x i8> @intrinsic_vlse_v_nxv64i8_nxv64i8(ptr %0, iXLen %1, iXLen %2) nounwind {
1706 ; CHECK-LABEL: intrinsic_vlse_v_nxv64i8_nxv64i8:
1707 ; CHECK:       # %bb.0: # %entry
1708 ; CHECK-NEXT:    vsetvli zero, a2, e8, m8, ta, ma
1709 ; CHECK-NEXT:    vlse8.v v8, (a0), a1
1710 ; CHECK-NEXT:    ret
1711 entry:
1712   %a = call <vscale x 64 x i8> @llvm.riscv.vlse.nxv64i8(
1713     <vscale x 64 x i8> undef,
1714     ptr %0,
1715     iXLen %1,
1716     iXLen %2)
1718   ret <vscale x 64 x i8> %a
1721 declare <vscale x 64 x i8> @llvm.riscv.vlse.mask.nxv64i8(
1722   <vscale x 64 x i8>,
1723   ptr,
1724   iXLen,
1725   <vscale x 64 x i1>,
1726   iXLen,
1727   iXLen);
1729 define <vscale x 64 x i8> @intrinsic_vlse_mask_v_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, ptr %1, iXLen %2, <vscale x 64 x i1> %3, iXLen %4) nounwind {
1730 ; CHECK-LABEL: intrinsic_vlse_mask_v_nxv64i8_nxv64i8:
1731 ; CHECK:       # %bb.0: # %entry
1732 ; CHECK-NEXT:    vsetvli zero, a2, e8, m8, ta, mu
1733 ; CHECK-NEXT:    vlse8.v v8, (a0), a1, v0.t
1734 ; CHECK-NEXT:    ret
1735 entry:
1736   %a = call <vscale x 64 x i8> @llvm.riscv.vlse.mask.nxv64i8(
1737     <vscale x 64 x i8> %0,
1738     ptr %1,
1739     iXLen %2,
1740     <vscale x 64 x i1> %3,
1741     iXLen %4, iXLen 1)
1743   ret <vscale x 64 x i8> %a