Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vsll.ll
bloba089b1048ea1efb16de0dc41401bd0b54de25a08
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v \
3 ; RUN:   -verify-machineinstrs | FileCheck %s
4 ; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v \
5 ; RUN:   -verify-machineinstrs | FileCheck %s
7 declare <vscale x 1 x i8> @llvm.riscv.vsll.nxv1i8.nxv1i8(
8   <vscale x 1 x i8>,
9   <vscale x 1 x i8>,
10   <vscale x 1 x i8>,
11   iXLen);
13 define <vscale x 1 x i8> @intrinsic_vsll_vv_nxv1i8_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, iXLen %2) nounwind {
14 ; CHECK-LABEL: intrinsic_vsll_vv_nxv1i8_nxv1i8_nxv1i8:
15 ; CHECK:       # %bb.0: # %entry
16 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
17 ; CHECK-NEXT:    vsll.vv v8, v8, v9
18 ; CHECK-NEXT:    ret
19 entry:
20   %a = call <vscale x 1 x i8> @llvm.riscv.vsll.nxv1i8.nxv1i8(
21     <vscale x 1 x i8> undef,
22     <vscale x 1 x i8> %0,
23     <vscale x 1 x i8> %1,
24     iXLen %2)
26   ret <vscale x 1 x i8> %a
29 declare <vscale x 1 x i8> @llvm.riscv.vsll.mask.nxv1i8.nxv1i8(
30   <vscale x 1 x i8>,
31   <vscale x 1 x i8>,
32   <vscale x 1 x i8>,
33   <vscale x 1 x i1>,
34   iXLen,
35   iXLen);
37 define <vscale x 1 x i8> @intrinsic_vsll_mask_vv_nxv1i8_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, <vscale x 1 x i8> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
38 ; CHECK-LABEL: intrinsic_vsll_mask_vv_nxv1i8_nxv1i8_nxv1i8:
39 ; CHECK:       # %bb.0: # %entry
40 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, mu
41 ; CHECK-NEXT:    vsll.vv v8, v9, v10, v0.t
42 ; CHECK-NEXT:    ret
43 entry:
44   %a = call <vscale x 1 x i8> @llvm.riscv.vsll.mask.nxv1i8.nxv1i8(
45     <vscale x 1 x i8> %0,
46     <vscale x 1 x i8> %1,
47     <vscale x 1 x i8> %2,
48     <vscale x 1 x i1> %3,
49     iXLen %4, iXLen 1)
51   ret <vscale x 1 x i8> %a
54 declare <vscale x 2 x i8> @llvm.riscv.vsll.nxv2i8.nxv2i8(
55   <vscale x 2 x i8>,
56   <vscale x 2 x i8>,
57   <vscale x 2 x i8>,
58   iXLen);
60 define <vscale x 2 x i8> @intrinsic_vsll_vv_nxv2i8_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, iXLen %2) nounwind {
61 ; CHECK-LABEL: intrinsic_vsll_vv_nxv2i8_nxv2i8_nxv2i8:
62 ; CHECK:       # %bb.0: # %entry
63 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
64 ; CHECK-NEXT:    vsll.vv v8, v8, v9
65 ; CHECK-NEXT:    ret
66 entry:
67   %a = call <vscale x 2 x i8> @llvm.riscv.vsll.nxv2i8.nxv2i8(
68     <vscale x 2 x i8> undef,
69     <vscale x 2 x i8> %0,
70     <vscale x 2 x i8> %1,
71     iXLen %2)
73   ret <vscale x 2 x i8> %a
76 declare <vscale x 2 x i8> @llvm.riscv.vsll.mask.nxv2i8.nxv2i8(
77   <vscale x 2 x i8>,
78   <vscale x 2 x i8>,
79   <vscale x 2 x i8>,
80   <vscale x 2 x i1>,
81   iXLen,
82   iXLen);
84 define <vscale x 2 x i8> @intrinsic_vsll_mask_vv_nxv2i8_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, <vscale x 2 x i8> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
85 ; CHECK-LABEL: intrinsic_vsll_mask_vv_nxv2i8_nxv2i8_nxv2i8:
86 ; CHECK:       # %bb.0: # %entry
87 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, mu
88 ; CHECK-NEXT:    vsll.vv v8, v9, v10, v0.t
89 ; CHECK-NEXT:    ret
90 entry:
91   %a = call <vscale x 2 x i8> @llvm.riscv.vsll.mask.nxv2i8.nxv2i8(
92     <vscale x 2 x i8> %0,
93     <vscale x 2 x i8> %1,
94     <vscale x 2 x i8> %2,
95     <vscale x 2 x i1> %3,
96     iXLen %4, iXLen 1)
98   ret <vscale x 2 x i8> %a
101 declare <vscale x 4 x i8> @llvm.riscv.vsll.nxv4i8.nxv4i8(
102   <vscale x 4 x i8>,
103   <vscale x 4 x i8>,
104   <vscale x 4 x i8>,
105   iXLen);
107 define <vscale x 4 x i8> @intrinsic_vsll_vv_nxv4i8_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, iXLen %2) nounwind {
108 ; CHECK-LABEL: intrinsic_vsll_vv_nxv4i8_nxv4i8_nxv4i8:
109 ; CHECK:       # %bb.0: # %entry
110 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
111 ; CHECK-NEXT:    vsll.vv v8, v8, v9
112 ; CHECK-NEXT:    ret
113 entry:
114   %a = call <vscale x 4 x i8> @llvm.riscv.vsll.nxv4i8.nxv4i8(
115     <vscale x 4 x i8> undef,
116     <vscale x 4 x i8> %0,
117     <vscale x 4 x i8> %1,
118     iXLen %2)
120   ret <vscale x 4 x i8> %a
123 declare <vscale x 4 x i8> @llvm.riscv.vsll.mask.nxv4i8.nxv4i8(
124   <vscale x 4 x i8>,
125   <vscale x 4 x i8>,
126   <vscale x 4 x i8>,
127   <vscale x 4 x i1>,
128   iXLen,
129   iXLen);
131 define <vscale x 4 x i8> @intrinsic_vsll_mask_vv_nxv4i8_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, <vscale x 4 x i8> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
132 ; CHECK-LABEL: intrinsic_vsll_mask_vv_nxv4i8_nxv4i8_nxv4i8:
133 ; CHECK:       # %bb.0: # %entry
134 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, mu
135 ; CHECK-NEXT:    vsll.vv v8, v9, v10, v0.t
136 ; CHECK-NEXT:    ret
137 entry:
138   %a = call <vscale x 4 x i8> @llvm.riscv.vsll.mask.nxv4i8.nxv4i8(
139     <vscale x 4 x i8> %0,
140     <vscale x 4 x i8> %1,
141     <vscale x 4 x i8> %2,
142     <vscale x 4 x i1> %3,
143     iXLen %4, iXLen 1)
145   ret <vscale x 4 x i8> %a
148 declare <vscale x 8 x i8> @llvm.riscv.vsll.nxv8i8.nxv8i8(
149   <vscale x 8 x i8>,
150   <vscale x 8 x i8>,
151   <vscale x 8 x i8>,
152   iXLen);
154 define <vscale x 8 x i8> @intrinsic_vsll_vv_nxv8i8_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, iXLen %2) nounwind {
155 ; CHECK-LABEL: intrinsic_vsll_vv_nxv8i8_nxv8i8_nxv8i8:
156 ; CHECK:       # %bb.0: # %entry
157 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
158 ; CHECK-NEXT:    vsll.vv v8, v8, v9
159 ; CHECK-NEXT:    ret
160 entry:
161   %a = call <vscale x 8 x i8> @llvm.riscv.vsll.nxv8i8.nxv8i8(
162     <vscale x 8 x i8> undef,
163     <vscale x 8 x i8> %0,
164     <vscale x 8 x i8> %1,
165     iXLen %2)
167   ret <vscale x 8 x i8> %a
170 declare <vscale x 8 x i8> @llvm.riscv.vsll.mask.nxv8i8.nxv8i8(
171   <vscale x 8 x i8>,
172   <vscale x 8 x i8>,
173   <vscale x 8 x i8>,
174   <vscale x 8 x i1>,
175   iXLen,
176   iXLen);
178 define <vscale x 8 x i8> @intrinsic_vsll_mask_vv_nxv8i8_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, <vscale x 8 x i8> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
179 ; CHECK-LABEL: intrinsic_vsll_mask_vv_nxv8i8_nxv8i8_nxv8i8:
180 ; CHECK:       # %bb.0: # %entry
181 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, mu
182 ; CHECK-NEXT:    vsll.vv v8, v9, v10, v0.t
183 ; CHECK-NEXT:    ret
184 entry:
185   %a = call <vscale x 8 x i8> @llvm.riscv.vsll.mask.nxv8i8.nxv8i8(
186     <vscale x 8 x i8> %0,
187     <vscale x 8 x i8> %1,
188     <vscale x 8 x i8> %2,
189     <vscale x 8 x i1> %3,
190     iXLen %4, iXLen 1)
192   ret <vscale x 8 x i8> %a
195 declare <vscale x 16 x i8> @llvm.riscv.vsll.nxv16i8.nxv16i8(
196   <vscale x 16 x i8>,
197   <vscale x 16 x i8>,
198   <vscale x 16 x i8>,
199   iXLen);
201 define <vscale x 16 x i8> @intrinsic_vsll_vv_nxv16i8_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, iXLen %2) nounwind {
202 ; CHECK-LABEL: intrinsic_vsll_vv_nxv16i8_nxv16i8_nxv16i8:
203 ; CHECK:       # %bb.0: # %entry
204 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
205 ; CHECK-NEXT:    vsll.vv v8, v8, v10
206 ; CHECK-NEXT:    ret
207 entry:
208   %a = call <vscale x 16 x i8> @llvm.riscv.vsll.nxv16i8.nxv16i8(
209     <vscale x 16 x i8> undef,
210     <vscale x 16 x i8> %0,
211     <vscale x 16 x i8> %1,
212     iXLen %2)
214   ret <vscale x 16 x i8> %a
217 declare <vscale x 16 x i8> @llvm.riscv.vsll.mask.nxv16i8.nxv16i8(
218   <vscale x 16 x i8>,
219   <vscale x 16 x i8>,
220   <vscale x 16 x i8>,
221   <vscale x 16 x i1>,
222   iXLen,
223   iXLen);
225 define <vscale x 16 x i8> @intrinsic_vsll_mask_vv_nxv16i8_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, <vscale x 16 x i8> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
226 ; CHECK-LABEL: intrinsic_vsll_mask_vv_nxv16i8_nxv16i8_nxv16i8:
227 ; CHECK:       # %bb.0: # %entry
228 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, mu
229 ; CHECK-NEXT:    vsll.vv v8, v10, v12, v0.t
230 ; CHECK-NEXT:    ret
231 entry:
232   %a = call <vscale x 16 x i8> @llvm.riscv.vsll.mask.nxv16i8.nxv16i8(
233     <vscale x 16 x i8> %0,
234     <vscale x 16 x i8> %1,
235     <vscale x 16 x i8> %2,
236     <vscale x 16 x i1> %3,
237     iXLen %4, iXLen 1)
239   ret <vscale x 16 x i8> %a
242 declare <vscale x 32 x i8> @llvm.riscv.vsll.nxv32i8.nxv32i8(
243   <vscale x 32 x i8>,
244   <vscale x 32 x i8>,
245   <vscale x 32 x i8>,
246   iXLen);
248 define <vscale x 32 x i8> @intrinsic_vsll_vv_nxv32i8_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, iXLen %2) nounwind {
249 ; CHECK-LABEL: intrinsic_vsll_vv_nxv32i8_nxv32i8_nxv32i8:
250 ; CHECK:       # %bb.0: # %entry
251 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
252 ; CHECK-NEXT:    vsll.vv v8, v8, v12
253 ; CHECK-NEXT:    ret
254 entry:
255   %a = call <vscale x 32 x i8> @llvm.riscv.vsll.nxv32i8.nxv32i8(
256     <vscale x 32 x i8> undef,
257     <vscale x 32 x i8> %0,
258     <vscale x 32 x i8> %1,
259     iXLen %2)
261   ret <vscale x 32 x i8> %a
264 declare <vscale x 32 x i8> @llvm.riscv.vsll.mask.nxv32i8.nxv32i8(
265   <vscale x 32 x i8>,
266   <vscale x 32 x i8>,
267   <vscale x 32 x i8>,
268   <vscale x 32 x i1>,
269   iXLen,
270   iXLen);
272 define <vscale x 32 x i8> @intrinsic_vsll_mask_vv_nxv32i8_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, <vscale x 32 x i8> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
273 ; CHECK-LABEL: intrinsic_vsll_mask_vv_nxv32i8_nxv32i8_nxv32i8:
274 ; CHECK:       # %bb.0: # %entry
275 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, mu
276 ; CHECK-NEXT:    vsll.vv v8, v12, v16, v0.t
277 ; CHECK-NEXT:    ret
278 entry:
279   %a = call <vscale x 32 x i8> @llvm.riscv.vsll.mask.nxv32i8.nxv32i8(
280     <vscale x 32 x i8> %0,
281     <vscale x 32 x i8> %1,
282     <vscale x 32 x i8> %2,
283     <vscale x 32 x i1> %3,
284     iXLen %4, iXLen 1)
286   ret <vscale x 32 x i8> %a
289 declare <vscale x 64 x i8> @llvm.riscv.vsll.nxv64i8.nxv64i8(
290   <vscale x 64 x i8>,
291   <vscale x 64 x i8>,
292   <vscale x 64 x i8>,
293   iXLen);
295 define <vscale x 64 x i8> @intrinsic_vsll_vv_nxv64i8_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, iXLen %2) nounwind {
296 ; CHECK-LABEL: intrinsic_vsll_vv_nxv64i8_nxv64i8_nxv64i8:
297 ; CHECK:       # %bb.0: # %entry
298 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
299 ; CHECK-NEXT:    vsll.vv v8, v8, v16
300 ; CHECK-NEXT:    ret
301 entry:
302   %a = call <vscale x 64 x i8> @llvm.riscv.vsll.nxv64i8.nxv64i8(
303     <vscale x 64 x i8> undef,
304     <vscale x 64 x i8> %0,
305     <vscale x 64 x i8> %1,
306     iXLen %2)
308   ret <vscale x 64 x i8> %a
311 declare <vscale x 64 x i8> @llvm.riscv.vsll.mask.nxv64i8.nxv64i8(
312   <vscale x 64 x i8>,
313   <vscale x 64 x i8>,
314   <vscale x 64 x i8>,
315   <vscale x 64 x i1>,
316   iXLen,
317   iXLen);
319 define <vscale x 64 x i8> @intrinsic_vsll_mask_vv_nxv64i8_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, <vscale x 64 x i8> %2, <vscale x 64 x i1> %3, iXLen %4) nounwind {
320 ; CHECK-LABEL: intrinsic_vsll_mask_vv_nxv64i8_nxv64i8_nxv64i8:
321 ; CHECK:       # %bb.0: # %entry
322 ; CHECK-NEXT:    vl8r.v v24, (a0)
323 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, mu
324 ; CHECK-NEXT:    vsll.vv v8, v16, v24, v0.t
325 ; CHECK-NEXT:    ret
326 entry:
327   %a = call <vscale x 64 x i8> @llvm.riscv.vsll.mask.nxv64i8.nxv64i8(
328     <vscale x 64 x i8> %0,
329     <vscale x 64 x i8> %1,
330     <vscale x 64 x i8> %2,
331     <vscale x 64 x i1> %3,
332     iXLen %4, iXLen 1)
334   ret <vscale x 64 x i8> %a
337 declare <vscale x 1 x i16> @llvm.riscv.vsll.nxv1i16.nxv1i16(
338   <vscale x 1 x i16>,
339   <vscale x 1 x i16>,
340   <vscale x 1 x i16>,
341   iXLen);
343 define <vscale x 1 x i16> @intrinsic_vsll_vv_nxv1i16_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, iXLen %2) nounwind {
344 ; CHECK-LABEL: intrinsic_vsll_vv_nxv1i16_nxv1i16_nxv1i16:
345 ; CHECK:       # %bb.0: # %entry
346 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
347 ; CHECK-NEXT:    vsll.vv v8, v8, v9
348 ; CHECK-NEXT:    ret
349 entry:
350   %a = call <vscale x 1 x i16> @llvm.riscv.vsll.nxv1i16.nxv1i16(
351     <vscale x 1 x i16> undef,
352     <vscale x 1 x i16> %0,
353     <vscale x 1 x i16> %1,
354     iXLen %2)
356   ret <vscale x 1 x i16> %a
359 declare <vscale x 1 x i16> @llvm.riscv.vsll.mask.nxv1i16.nxv1i16(
360   <vscale x 1 x i16>,
361   <vscale x 1 x i16>,
362   <vscale x 1 x i16>,
363   <vscale x 1 x i1>,
364   iXLen,
365   iXLen);
367 define <vscale x 1 x i16> @intrinsic_vsll_mask_vv_nxv1i16_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, <vscale x 1 x i16> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
368 ; CHECK-LABEL: intrinsic_vsll_mask_vv_nxv1i16_nxv1i16_nxv1i16:
369 ; CHECK:       # %bb.0: # %entry
370 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu
371 ; CHECK-NEXT:    vsll.vv v8, v9, v10, v0.t
372 ; CHECK-NEXT:    ret
373 entry:
374   %a = call <vscale x 1 x i16> @llvm.riscv.vsll.mask.nxv1i16.nxv1i16(
375     <vscale x 1 x i16> %0,
376     <vscale x 1 x i16> %1,
377     <vscale x 1 x i16> %2,
378     <vscale x 1 x i1> %3,
379     iXLen %4, iXLen 1)
381   ret <vscale x 1 x i16> %a
384 declare <vscale x 2 x i16> @llvm.riscv.vsll.nxv2i16.nxv2i16(
385   <vscale x 2 x i16>,
386   <vscale x 2 x i16>,
387   <vscale x 2 x i16>,
388   iXLen);
390 define <vscale x 2 x i16> @intrinsic_vsll_vv_nxv2i16_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, iXLen %2) nounwind {
391 ; CHECK-LABEL: intrinsic_vsll_vv_nxv2i16_nxv2i16_nxv2i16:
392 ; CHECK:       # %bb.0: # %entry
393 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
394 ; CHECK-NEXT:    vsll.vv v8, v8, v9
395 ; CHECK-NEXT:    ret
396 entry:
397   %a = call <vscale x 2 x i16> @llvm.riscv.vsll.nxv2i16.nxv2i16(
398     <vscale x 2 x i16> undef,
399     <vscale x 2 x i16> %0,
400     <vscale x 2 x i16> %1,
401     iXLen %2)
403   ret <vscale x 2 x i16> %a
406 declare <vscale x 2 x i16> @llvm.riscv.vsll.mask.nxv2i16.nxv2i16(
407   <vscale x 2 x i16>,
408   <vscale x 2 x i16>,
409   <vscale x 2 x i16>,
410   <vscale x 2 x i1>,
411   iXLen,
412   iXLen);
414 define <vscale x 2 x i16> @intrinsic_vsll_mask_vv_nxv2i16_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, <vscale x 2 x i16> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
415 ; CHECK-LABEL: intrinsic_vsll_mask_vv_nxv2i16_nxv2i16_nxv2i16:
416 ; CHECK:       # %bb.0: # %entry
417 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu
418 ; CHECK-NEXT:    vsll.vv v8, v9, v10, v0.t
419 ; CHECK-NEXT:    ret
420 entry:
421   %a = call <vscale x 2 x i16> @llvm.riscv.vsll.mask.nxv2i16.nxv2i16(
422     <vscale x 2 x i16> %0,
423     <vscale x 2 x i16> %1,
424     <vscale x 2 x i16> %2,
425     <vscale x 2 x i1> %3,
426     iXLen %4, iXLen 1)
428   ret <vscale x 2 x i16> %a
431 declare <vscale x 4 x i16> @llvm.riscv.vsll.nxv4i16.nxv4i16(
432   <vscale x 4 x i16>,
433   <vscale x 4 x i16>,
434   <vscale x 4 x i16>,
435   iXLen);
437 define <vscale x 4 x i16> @intrinsic_vsll_vv_nxv4i16_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, iXLen %2) nounwind {
438 ; CHECK-LABEL: intrinsic_vsll_vv_nxv4i16_nxv4i16_nxv4i16:
439 ; CHECK:       # %bb.0: # %entry
440 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
441 ; CHECK-NEXT:    vsll.vv v8, v8, v9
442 ; CHECK-NEXT:    ret
443 entry:
444   %a = call <vscale x 4 x i16> @llvm.riscv.vsll.nxv4i16.nxv4i16(
445     <vscale x 4 x i16> undef,
446     <vscale x 4 x i16> %0,
447     <vscale x 4 x i16> %1,
448     iXLen %2)
450   ret <vscale x 4 x i16> %a
453 declare <vscale x 4 x i16> @llvm.riscv.vsll.mask.nxv4i16.nxv4i16(
454   <vscale x 4 x i16>,
455   <vscale x 4 x i16>,
456   <vscale x 4 x i16>,
457   <vscale x 4 x i1>,
458   iXLen,
459   iXLen);
461 define <vscale x 4 x i16> @intrinsic_vsll_mask_vv_nxv4i16_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, <vscale x 4 x i16> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
462 ; CHECK-LABEL: intrinsic_vsll_mask_vv_nxv4i16_nxv4i16_nxv4i16:
463 ; CHECK:       # %bb.0: # %entry
464 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu
465 ; CHECK-NEXT:    vsll.vv v8, v9, v10, v0.t
466 ; CHECK-NEXT:    ret
467 entry:
468   %a = call <vscale x 4 x i16> @llvm.riscv.vsll.mask.nxv4i16.nxv4i16(
469     <vscale x 4 x i16> %0,
470     <vscale x 4 x i16> %1,
471     <vscale x 4 x i16> %2,
472     <vscale x 4 x i1> %3,
473     iXLen %4, iXLen 1)
475   ret <vscale x 4 x i16> %a
478 declare <vscale x 8 x i16> @llvm.riscv.vsll.nxv8i16.nxv8i16(
479   <vscale x 8 x i16>,
480   <vscale x 8 x i16>,
481   <vscale x 8 x i16>,
482   iXLen);
484 define <vscale x 8 x i16> @intrinsic_vsll_vv_nxv8i16_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, iXLen %2) nounwind {
485 ; CHECK-LABEL: intrinsic_vsll_vv_nxv8i16_nxv8i16_nxv8i16:
486 ; CHECK:       # %bb.0: # %entry
487 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
488 ; CHECK-NEXT:    vsll.vv v8, v8, v10
489 ; CHECK-NEXT:    ret
490 entry:
491   %a = call <vscale x 8 x i16> @llvm.riscv.vsll.nxv8i16.nxv8i16(
492     <vscale x 8 x i16> undef,
493     <vscale x 8 x i16> %0,
494     <vscale x 8 x i16> %1,
495     iXLen %2)
497   ret <vscale x 8 x i16> %a
500 declare <vscale x 8 x i16> @llvm.riscv.vsll.mask.nxv8i16.nxv8i16(
501   <vscale x 8 x i16>,
502   <vscale x 8 x i16>,
503   <vscale x 8 x i16>,
504   <vscale x 8 x i1>,
505   iXLen,
506   iXLen);
508 define <vscale x 8 x i16> @intrinsic_vsll_mask_vv_nxv8i16_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, <vscale x 8 x i16> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
509 ; CHECK-LABEL: intrinsic_vsll_mask_vv_nxv8i16_nxv8i16_nxv8i16:
510 ; CHECK:       # %bb.0: # %entry
511 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu
512 ; CHECK-NEXT:    vsll.vv v8, v10, v12, v0.t
513 ; CHECK-NEXT:    ret
514 entry:
515   %a = call <vscale x 8 x i16> @llvm.riscv.vsll.mask.nxv8i16.nxv8i16(
516     <vscale x 8 x i16> %0,
517     <vscale x 8 x i16> %1,
518     <vscale x 8 x i16> %2,
519     <vscale x 8 x i1> %3,
520     iXLen %4, iXLen 1)
522   ret <vscale x 8 x i16> %a
525 declare <vscale x 16 x i16> @llvm.riscv.vsll.nxv16i16.nxv16i16(
526   <vscale x 16 x i16>,
527   <vscale x 16 x i16>,
528   <vscale x 16 x i16>,
529   iXLen);
531 define <vscale x 16 x i16> @intrinsic_vsll_vv_nxv16i16_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, iXLen %2) nounwind {
532 ; CHECK-LABEL: intrinsic_vsll_vv_nxv16i16_nxv16i16_nxv16i16:
533 ; CHECK:       # %bb.0: # %entry
534 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
535 ; CHECK-NEXT:    vsll.vv v8, v8, v12
536 ; CHECK-NEXT:    ret
537 entry:
538   %a = call <vscale x 16 x i16> @llvm.riscv.vsll.nxv16i16.nxv16i16(
539     <vscale x 16 x i16> undef,
540     <vscale x 16 x i16> %0,
541     <vscale x 16 x i16> %1,
542     iXLen %2)
544   ret <vscale x 16 x i16> %a
547 declare <vscale x 16 x i16> @llvm.riscv.vsll.mask.nxv16i16.nxv16i16(
548   <vscale x 16 x i16>,
549   <vscale x 16 x i16>,
550   <vscale x 16 x i16>,
551   <vscale x 16 x i1>,
552   iXLen,
553   iXLen);
555 define <vscale x 16 x i16> @intrinsic_vsll_mask_vv_nxv16i16_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, <vscale x 16 x i16> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
556 ; CHECK-LABEL: intrinsic_vsll_mask_vv_nxv16i16_nxv16i16_nxv16i16:
557 ; CHECK:       # %bb.0: # %entry
558 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu
559 ; CHECK-NEXT:    vsll.vv v8, v12, v16, v0.t
560 ; CHECK-NEXT:    ret
561 entry:
562   %a = call <vscale x 16 x i16> @llvm.riscv.vsll.mask.nxv16i16.nxv16i16(
563     <vscale x 16 x i16> %0,
564     <vscale x 16 x i16> %1,
565     <vscale x 16 x i16> %2,
566     <vscale x 16 x i1> %3,
567     iXLen %4, iXLen 1)
569   ret <vscale x 16 x i16> %a
572 declare <vscale x 32 x i16> @llvm.riscv.vsll.nxv32i16.nxv32i16(
573   <vscale x 32 x i16>,
574   <vscale x 32 x i16>,
575   <vscale x 32 x i16>,
576   iXLen);
578 define <vscale x 32 x i16> @intrinsic_vsll_vv_nxv32i16_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, iXLen %2) nounwind {
579 ; CHECK-LABEL: intrinsic_vsll_vv_nxv32i16_nxv32i16_nxv32i16:
580 ; CHECK:       # %bb.0: # %entry
581 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
582 ; CHECK-NEXT:    vsll.vv v8, v8, v16
583 ; CHECK-NEXT:    ret
584 entry:
585   %a = call <vscale x 32 x i16> @llvm.riscv.vsll.nxv32i16.nxv32i16(
586     <vscale x 32 x i16> undef,
587     <vscale x 32 x i16> %0,
588     <vscale x 32 x i16> %1,
589     iXLen %2)
591   ret <vscale x 32 x i16> %a
594 declare <vscale x 32 x i16> @llvm.riscv.vsll.mask.nxv32i16.nxv32i16(
595   <vscale x 32 x i16>,
596   <vscale x 32 x i16>,
597   <vscale x 32 x i16>,
598   <vscale x 32 x i1>,
599   iXLen,
600   iXLen);
602 define <vscale x 32 x i16> @intrinsic_vsll_mask_vv_nxv32i16_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, <vscale x 32 x i16> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
603 ; CHECK-LABEL: intrinsic_vsll_mask_vv_nxv32i16_nxv32i16_nxv32i16:
604 ; CHECK:       # %bb.0: # %entry
605 ; CHECK-NEXT:    vl8re16.v v24, (a0)
606 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
607 ; CHECK-NEXT:    vsll.vv v8, v16, v24, v0.t
608 ; CHECK-NEXT:    ret
609 entry:
610   %a = call <vscale x 32 x i16> @llvm.riscv.vsll.mask.nxv32i16.nxv32i16(
611     <vscale x 32 x i16> %0,
612     <vscale x 32 x i16> %1,
613     <vscale x 32 x i16> %2,
614     <vscale x 32 x i1> %3,
615     iXLen %4, iXLen 1)
617   ret <vscale x 32 x i16> %a
620 declare <vscale x 1 x i32> @llvm.riscv.vsll.nxv1i32.nxv1i32(
621   <vscale x 1 x i32>,
622   <vscale x 1 x i32>,
623   <vscale x 1 x i32>,
624   iXLen);
626 define <vscale x 1 x i32> @intrinsic_vsll_vv_nxv1i32_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, iXLen %2) nounwind {
627 ; CHECK-LABEL: intrinsic_vsll_vv_nxv1i32_nxv1i32_nxv1i32:
628 ; CHECK:       # %bb.0: # %entry
629 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
630 ; CHECK-NEXT:    vsll.vv v8, v8, v9
631 ; CHECK-NEXT:    ret
632 entry:
633   %a = call <vscale x 1 x i32> @llvm.riscv.vsll.nxv1i32.nxv1i32(
634     <vscale x 1 x i32> undef,
635     <vscale x 1 x i32> %0,
636     <vscale x 1 x i32> %1,
637     iXLen %2)
639   ret <vscale x 1 x i32> %a
642 declare <vscale x 1 x i32> @llvm.riscv.vsll.mask.nxv1i32.nxv1i32(
643   <vscale x 1 x i32>,
644   <vscale x 1 x i32>,
645   <vscale x 1 x i32>,
646   <vscale x 1 x i1>,
647   iXLen,
648   iXLen);
650 define <vscale x 1 x i32> @intrinsic_vsll_mask_vv_nxv1i32_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, <vscale x 1 x i32> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
651 ; CHECK-LABEL: intrinsic_vsll_mask_vv_nxv1i32_nxv1i32_nxv1i32:
652 ; CHECK:       # %bb.0: # %entry
653 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu
654 ; CHECK-NEXT:    vsll.vv v8, v9, v10, v0.t
655 ; CHECK-NEXT:    ret
656 entry:
657   %a = call <vscale x 1 x i32> @llvm.riscv.vsll.mask.nxv1i32.nxv1i32(
658     <vscale x 1 x i32> %0,
659     <vscale x 1 x i32> %1,
660     <vscale x 1 x i32> %2,
661     <vscale x 1 x i1> %3,
662     iXLen %4, iXLen 1)
664   ret <vscale x 1 x i32> %a
667 declare <vscale x 2 x i32> @llvm.riscv.vsll.nxv2i32.nxv2i32(
668   <vscale x 2 x i32>,
669   <vscale x 2 x i32>,
670   <vscale x 2 x i32>,
671   iXLen);
673 define <vscale x 2 x i32> @intrinsic_vsll_vv_nxv2i32_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, iXLen %2) nounwind {
674 ; CHECK-LABEL: intrinsic_vsll_vv_nxv2i32_nxv2i32_nxv2i32:
675 ; CHECK:       # %bb.0: # %entry
676 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
677 ; CHECK-NEXT:    vsll.vv v8, v8, v9
678 ; CHECK-NEXT:    ret
679 entry:
680   %a = call <vscale x 2 x i32> @llvm.riscv.vsll.nxv2i32.nxv2i32(
681     <vscale x 2 x i32> undef,
682     <vscale x 2 x i32> %0,
683     <vscale x 2 x i32> %1,
684     iXLen %2)
686   ret <vscale x 2 x i32> %a
689 declare <vscale x 2 x i32> @llvm.riscv.vsll.mask.nxv2i32.nxv2i32(
690   <vscale x 2 x i32>,
691   <vscale x 2 x i32>,
692   <vscale x 2 x i32>,
693   <vscale x 2 x i1>,
694   iXLen,
695   iXLen);
697 define <vscale x 2 x i32> @intrinsic_vsll_mask_vv_nxv2i32_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, <vscale x 2 x i32> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
698 ; CHECK-LABEL: intrinsic_vsll_mask_vv_nxv2i32_nxv2i32_nxv2i32:
699 ; CHECK:       # %bb.0: # %entry
700 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu
701 ; CHECK-NEXT:    vsll.vv v8, v9, v10, v0.t
702 ; CHECK-NEXT:    ret
703 entry:
704   %a = call <vscale x 2 x i32> @llvm.riscv.vsll.mask.nxv2i32.nxv2i32(
705     <vscale x 2 x i32> %0,
706     <vscale x 2 x i32> %1,
707     <vscale x 2 x i32> %2,
708     <vscale x 2 x i1> %3,
709     iXLen %4, iXLen 1)
711   ret <vscale x 2 x i32> %a
714 declare <vscale x 4 x i32> @llvm.riscv.vsll.nxv4i32.nxv4i32(
715   <vscale x 4 x i32>,
716   <vscale x 4 x i32>,
717   <vscale x 4 x i32>,
718   iXLen);
720 define <vscale x 4 x i32> @intrinsic_vsll_vv_nxv4i32_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, iXLen %2) nounwind {
721 ; CHECK-LABEL: intrinsic_vsll_vv_nxv4i32_nxv4i32_nxv4i32:
722 ; CHECK:       # %bb.0: # %entry
723 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
724 ; CHECK-NEXT:    vsll.vv v8, v8, v10
725 ; CHECK-NEXT:    ret
726 entry:
727   %a = call <vscale x 4 x i32> @llvm.riscv.vsll.nxv4i32.nxv4i32(
728     <vscale x 4 x i32> undef,
729     <vscale x 4 x i32> %0,
730     <vscale x 4 x i32> %1,
731     iXLen %2)
733   ret <vscale x 4 x i32> %a
736 declare <vscale x 4 x i32> @llvm.riscv.vsll.mask.nxv4i32.nxv4i32(
737   <vscale x 4 x i32>,
738   <vscale x 4 x i32>,
739   <vscale x 4 x i32>,
740   <vscale x 4 x i1>,
741   iXLen,
742   iXLen);
744 define <vscale x 4 x i32> @intrinsic_vsll_mask_vv_nxv4i32_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, <vscale x 4 x i32> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
745 ; CHECK-LABEL: intrinsic_vsll_mask_vv_nxv4i32_nxv4i32_nxv4i32:
746 ; CHECK:       # %bb.0: # %entry
747 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu
748 ; CHECK-NEXT:    vsll.vv v8, v10, v12, v0.t
749 ; CHECK-NEXT:    ret
750 entry:
751   %a = call <vscale x 4 x i32> @llvm.riscv.vsll.mask.nxv4i32.nxv4i32(
752     <vscale x 4 x i32> %0,
753     <vscale x 4 x i32> %1,
754     <vscale x 4 x i32> %2,
755     <vscale x 4 x i1> %3,
756     iXLen %4, iXLen 1)
758   ret <vscale x 4 x i32> %a
761 declare <vscale x 8 x i32> @llvm.riscv.vsll.nxv8i32.nxv8i32(
762   <vscale x 8 x i32>,
763   <vscale x 8 x i32>,
764   <vscale x 8 x i32>,
765   iXLen);
767 define <vscale x 8 x i32> @intrinsic_vsll_vv_nxv8i32_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, iXLen %2) nounwind {
768 ; CHECK-LABEL: intrinsic_vsll_vv_nxv8i32_nxv8i32_nxv8i32:
769 ; CHECK:       # %bb.0: # %entry
770 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
771 ; CHECK-NEXT:    vsll.vv v8, v8, v12
772 ; CHECK-NEXT:    ret
773 entry:
774   %a = call <vscale x 8 x i32> @llvm.riscv.vsll.nxv8i32.nxv8i32(
775     <vscale x 8 x i32> undef,
776     <vscale x 8 x i32> %0,
777     <vscale x 8 x i32> %1,
778     iXLen %2)
780   ret <vscale x 8 x i32> %a
783 declare <vscale x 8 x i32> @llvm.riscv.vsll.mask.nxv8i32.nxv8i32(
784   <vscale x 8 x i32>,
785   <vscale x 8 x i32>,
786   <vscale x 8 x i32>,
787   <vscale x 8 x i1>,
788   iXLen,
789   iXLen);
791 define <vscale x 8 x i32> @intrinsic_vsll_mask_vv_nxv8i32_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, <vscale x 8 x i32> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
792 ; CHECK-LABEL: intrinsic_vsll_mask_vv_nxv8i32_nxv8i32_nxv8i32:
793 ; CHECK:       # %bb.0: # %entry
794 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu
795 ; CHECK-NEXT:    vsll.vv v8, v12, v16, v0.t
796 ; CHECK-NEXT:    ret
797 entry:
798   %a = call <vscale x 8 x i32> @llvm.riscv.vsll.mask.nxv8i32.nxv8i32(
799     <vscale x 8 x i32> %0,
800     <vscale x 8 x i32> %1,
801     <vscale x 8 x i32> %2,
802     <vscale x 8 x i1> %3,
803     iXLen %4, iXLen 1)
805   ret <vscale x 8 x i32> %a
808 declare <vscale x 16 x i32> @llvm.riscv.vsll.nxv16i32.nxv16i32(
809   <vscale x 16 x i32>,
810   <vscale x 16 x i32>,
811   <vscale x 16 x i32>,
812   iXLen);
814 define <vscale x 16 x i32> @intrinsic_vsll_vv_nxv16i32_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, iXLen %2) nounwind {
815 ; CHECK-LABEL: intrinsic_vsll_vv_nxv16i32_nxv16i32_nxv16i32:
816 ; CHECK:       # %bb.0: # %entry
817 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
818 ; CHECK-NEXT:    vsll.vv v8, v8, v16
819 ; CHECK-NEXT:    ret
820 entry:
821   %a = call <vscale x 16 x i32> @llvm.riscv.vsll.nxv16i32.nxv16i32(
822     <vscale x 16 x i32> undef,
823     <vscale x 16 x i32> %0,
824     <vscale x 16 x i32> %1,
825     iXLen %2)
827   ret <vscale x 16 x i32> %a
830 declare <vscale x 16 x i32> @llvm.riscv.vsll.mask.nxv16i32.nxv16i32(
831   <vscale x 16 x i32>,
832   <vscale x 16 x i32>,
833   <vscale x 16 x i32>,
834   <vscale x 16 x i1>,
835   iXLen,
836   iXLen);
838 define <vscale x 16 x i32> @intrinsic_vsll_mask_vv_nxv16i32_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, <vscale x 16 x i32> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
839 ; CHECK-LABEL: intrinsic_vsll_mask_vv_nxv16i32_nxv16i32_nxv16i32:
840 ; CHECK:       # %bb.0: # %entry
841 ; CHECK-NEXT:    vl8re32.v v24, (a0)
842 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
843 ; CHECK-NEXT:    vsll.vv v8, v16, v24, v0.t
844 ; CHECK-NEXT:    ret
845 entry:
846   %a = call <vscale x 16 x i32> @llvm.riscv.vsll.mask.nxv16i32.nxv16i32(
847     <vscale x 16 x i32> %0,
848     <vscale x 16 x i32> %1,
849     <vscale x 16 x i32> %2,
850     <vscale x 16 x i1> %3,
851     iXLen %4, iXLen 1)
853   ret <vscale x 16 x i32> %a
856 declare <vscale x 1 x i64> @llvm.riscv.vsll.nxv1i64.nxv1i64(
857   <vscale x 1 x i64>,
858   <vscale x 1 x i64>,
859   <vscale x 1 x i64>,
860   iXLen);
862 define <vscale x 1 x i64> @intrinsic_vsll_vv_nxv1i64_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, iXLen %2) nounwind {
863 ; CHECK-LABEL: intrinsic_vsll_vv_nxv1i64_nxv1i64_nxv1i64:
864 ; CHECK:       # %bb.0: # %entry
865 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
866 ; CHECK-NEXT:    vsll.vv v8, v8, v9
867 ; CHECK-NEXT:    ret
868 entry:
869   %a = call <vscale x 1 x i64> @llvm.riscv.vsll.nxv1i64.nxv1i64(
870     <vscale x 1 x i64> undef,
871     <vscale x 1 x i64> %0,
872     <vscale x 1 x i64> %1,
873     iXLen %2)
875   ret <vscale x 1 x i64> %a
878 declare <vscale x 1 x i64> @llvm.riscv.vsll.mask.nxv1i64.nxv1i64(
879   <vscale x 1 x i64>,
880   <vscale x 1 x i64>,
881   <vscale x 1 x i64>,
882   <vscale x 1 x i1>,
883   iXLen,
884   iXLen);
886 define <vscale x 1 x i64> @intrinsic_vsll_mask_vv_nxv1i64_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, <vscale x 1 x i64> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
887 ; CHECK-LABEL: intrinsic_vsll_mask_vv_nxv1i64_nxv1i64_nxv1i64:
888 ; CHECK:       # %bb.0: # %entry
889 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu
890 ; CHECK-NEXT:    vsll.vv v8, v9, v10, v0.t
891 ; CHECK-NEXT:    ret
892 entry:
893   %a = call <vscale x 1 x i64> @llvm.riscv.vsll.mask.nxv1i64.nxv1i64(
894     <vscale x 1 x i64> %0,
895     <vscale x 1 x i64> %1,
896     <vscale x 1 x i64> %2,
897     <vscale x 1 x i1> %3,
898     iXLen %4, iXLen 1)
900   ret <vscale x 1 x i64> %a
903 declare <vscale x 2 x i64> @llvm.riscv.vsll.nxv2i64.nxv2i64(
904   <vscale x 2 x i64>,
905   <vscale x 2 x i64>,
906   <vscale x 2 x i64>,
907   iXLen);
909 define <vscale x 2 x i64> @intrinsic_vsll_vv_nxv2i64_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, iXLen %2) nounwind {
910 ; CHECK-LABEL: intrinsic_vsll_vv_nxv2i64_nxv2i64_nxv2i64:
911 ; CHECK:       # %bb.0: # %entry
912 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
913 ; CHECK-NEXT:    vsll.vv v8, v8, v10
914 ; CHECK-NEXT:    ret
915 entry:
916   %a = call <vscale x 2 x i64> @llvm.riscv.vsll.nxv2i64.nxv2i64(
917     <vscale x 2 x i64> undef,
918     <vscale x 2 x i64> %0,
919     <vscale x 2 x i64> %1,
920     iXLen %2)
922   ret <vscale x 2 x i64> %a
925 declare <vscale x 2 x i64> @llvm.riscv.vsll.mask.nxv2i64.nxv2i64(
926   <vscale x 2 x i64>,
927   <vscale x 2 x i64>,
928   <vscale x 2 x i64>,
929   <vscale x 2 x i1>,
930   iXLen,
931   iXLen);
933 define <vscale x 2 x i64> @intrinsic_vsll_mask_vv_nxv2i64_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, <vscale x 2 x i64> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
934 ; CHECK-LABEL: intrinsic_vsll_mask_vv_nxv2i64_nxv2i64_nxv2i64:
935 ; CHECK:       # %bb.0: # %entry
936 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu
937 ; CHECK-NEXT:    vsll.vv v8, v10, v12, v0.t
938 ; CHECK-NEXT:    ret
939 entry:
940   %a = call <vscale x 2 x i64> @llvm.riscv.vsll.mask.nxv2i64.nxv2i64(
941     <vscale x 2 x i64> %0,
942     <vscale x 2 x i64> %1,
943     <vscale x 2 x i64> %2,
944     <vscale x 2 x i1> %3,
945     iXLen %4, iXLen 1)
947   ret <vscale x 2 x i64> %a
950 declare <vscale x 4 x i64> @llvm.riscv.vsll.nxv4i64.nxv4i64(
951   <vscale x 4 x i64>,
952   <vscale x 4 x i64>,
953   <vscale x 4 x i64>,
954   iXLen);
956 define <vscale x 4 x i64> @intrinsic_vsll_vv_nxv4i64_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, iXLen %2) nounwind {
957 ; CHECK-LABEL: intrinsic_vsll_vv_nxv4i64_nxv4i64_nxv4i64:
958 ; CHECK:       # %bb.0: # %entry
959 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
960 ; CHECK-NEXT:    vsll.vv v8, v8, v12
961 ; CHECK-NEXT:    ret
962 entry:
963   %a = call <vscale x 4 x i64> @llvm.riscv.vsll.nxv4i64.nxv4i64(
964     <vscale x 4 x i64> undef,
965     <vscale x 4 x i64> %0,
966     <vscale x 4 x i64> %1,
967     iXLen %2)
969   ret <vscale x 4 x i64> %a
972 declare <vscale x 4 x i64> @llvm.riscv.vsll.mask.nxv4i64.nxv4i64(
973   <vscale x 4 x i64>,
974   <vscale x 4 x i64>,
975   <vscale x 4 x i64>,
976   <vscale x 4 x i1>,
977   iXLen,
978   iXLen);
980 define <vscale x 4 x i64> @intrinsic_vsll_mask_vv_nxv4i64_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, <vscale x 4 x i64> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
981 ; CHECK-LABEL: intrinsic_vsll_mask_vv_nxv4i64_nxv4i64_nxv4i64:
982 ; CHECK:       # %bb.0: # %entry
983 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu
984 ; CHECK-NEXT:    vsll.vv v8, v12, v16, v0.t
985 ; CHECK-NEXT:    ret
986 entry:
987   %a = call <vscale x 4 x i64> @llvm.riscv.vsll.mask.nxv4i64.nxv4i64(
988     <vscale x 4 x i64> %0,
989     <vscale x 4 x i64> %1,
990     <vscale x 4 x i64> %2,
991     <vscale x 4 x i1> %3,
992     iXLen %4, iXLen 1)
994   ret <vscale x 4 x i64> %a
997 declare <vscale x 8 x i64> @llvm.riscv.vsll.nxv8i64.nxv8i64(
998   <vscale x 8 x i64>,
999   <vscale x 8 x i64>,
1000   <vscale x 8 x i64>,
1001   iXLen);
1003 define <vscale x 8 x i64> @intrinsic_vsll_vv_nxv8i64_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, iXLen %2) nounwind {
1004 ; CHECK-LABEL: intrinsic_vsll_vv_nxv8i64_nxv8i64_nxv8i64:
1005 ; CHECK:       # %bb.0: # %entry
1006 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1007 ; CHECK-NEXT:    vsll.vv v8, v8, v16
1008 ; CHECK-NEXT:    ret
1009 entry:
1010   %a = call <vscale x 8 x i64> @llvm.riscv.vsll.nxv8i64.nxv8i64(
1011     <vscale x 8 x i64> undef,
1012     <vscale x 8 x i64> %0,
1013     <vscale x 8 x i64> %1,
1014     iXLen %2)
1016   ret <vscale x 8 x i64> %a
1019 declare <vscale x 8 x i64> @llvm.riscv.vsll.mask.nxv8i64.nxv8i64(
1020   <vscale x 8 x i64>,
1021   <vscale x 8 x i64>,
1022   <vscale x 8 x i64>,
1023   <vscale x 8 x i1>,
1024   iXLen,
1025   iXLen);
1027 define <vscale x 8 x i64> @intrinsic_vsll_mask_vv_nxv8i64_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, <vscale x 8 x i64> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1028 ; CHECK-LABEL: intrinsic_vsll_mask_vv_nxv8i64_nxv8i64_nxv8i64:
1029 ; CHECK:       # %bb.0: # %entry
1030 ; CHECK-NEXT:    vl8re64.v v24, (a0)
1031 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
1032 ; CHECK-NEXT:    vsll.vv v8, v16, v24, v0.t
1033 ; CHECK-NEXT:    ret
1034 entry:
1035   %a = call <vscale x 8 x i64> @llvm.riscv.vsll.mask.nxv8i64.nxv8i64(
1036     <vscale x 8 x i64> %0,
1037     <vscale x 8 x i64> %1,
1038     <vscale x 8 x i64> %2,
1039     <vscale x 8 x i1> %3,
1040     iXLen %4, iXLen 1)
1042   ret <vscale x 8 x i64> %a
1045 declare <vscale x 1 x i8> @llvm.riscv.vsll.nxv1i8(
1046   <vscale x 1 x i8>,
1047   <vscale x 1 x i8>,
1048   iXLen,
1049   iXLen);
1051 define <vscale x 1 x i8> @intrinsic_vsll_vx_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, iXLen %1, iXLen %2) nounwind {
1052 ; CHECK-LABEL: intrinsic_vsll_vx_nxv1i8_nxv1i8:
1053 ; CHECK:       # %bb.0: # %entry
1054 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
1055 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1056 ; CHECK-NEXT:    ret
1057 entry:
1058   %a = call <vscale x 1 x i8> @llvm.riscv.vsll.nxv1i8(
1059     <vscale x 1 x i8> undef,
1060     <vscale x 1 x i8> %0,
1061     iXLen %1,
1062     iXLen %2)
1064   ret <vscale x 1 x i8> %a
1067 declare <vscale x 1 x i8> @llvm.riscv.vsll.mask.nxv1i8(
1068   <vscale x 1 x i8>,
1069   <vscale x 1 x i8>,
1070   iXLen,
1071   <vscale x 1 x i1>,
1072   iXLen,
1073   iXLen);
1075 define <vscale x 1 x i8> @intrinsic_vsll_mask_vx_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1076 ; CHECK-LABEL: intrinsic_vsll_mask_vx_nxv1i8_nxv1i8:
1077 ; CHECK:       # %bb.0: # %entry
1078 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, mu
1079 ; CHECK-NEXT:    vsll.vx v8, v9, a0, v0.t
1080 ; CHECK-NEXT:    ret
1081 entry:
1082   %a = call <vscale x 1 x i8> @llvm.riscv.vsll.mask.nxv1i8(
1083     <vscale x 1 x i8> %0,
1084     <vscale x 1 x i8> %1,
1085     iXLen %2,
1086     <vscale x 1 x i1> %3,
1087     iXLen %4, iXLen 1)
1089   ret <vscale x 1 x i8> %a
1092 declare <vscale x 2 x i8> @llvm.riscv.vsll.nxv2i8(
1093   <vscale x 2 x i8>,
1094   <vscale x 2 x i8>,
1095   iXLen,
1096   iXLen);
1098 define <vscale x 2 x i8> @intrinsic_vsll_vx_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, iXLen %1, iXLen %2) nounwind {
1099 ; CHECK-LABEL: intrinsic_vsll_vx_nxv2i8_nxv2i8:
1100 ; CHECK:       # %bb.0: # %entry
1101 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
1102 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1103 ; CHECK-NEXT:    ret
1104 entry:
1105   %a = call <vscale x 2 x i8> @llvm.riscv.vsll.nxv2i8(
1106     <vscale x 2 x i8> undef,
1107     <vscale x 2 x i8> %0,
1108     iXLen %1,
1109     iXLen %2)
1111   ret <vscale x 2 x i8> %a
1114 declare <vscale x 2 x i8> @llvm.riscv.vsll.mask.nxv2i8(
1115   <vscale x 2 x i8>,
1116   <vscale x 2 x i8>,
1117   iXLen,
1118   <vscale x 2 x i1>,
1119   iXLen,
1120   iXLen);
1122 define <vscale x 2 x i8> @intrinsic_vsll_mask_vx_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1123 ; CHECK-LABEL: intrinsic_vsll_mask_vx_nxv2i8_nxv2i8:
1124 ; CHECK:       # %bb.0: # %entry
1125 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, mu
1126 ; CHECK-NEXT:    vsll.vx v8, v9, a0, v0.t
1127 ; CHECK-NEXT:    ret
1128 entry:
1129   %a = call <vscale x 2 x i8> @llvm.riscv.vsll.mask.nxv2i8(
1130     <vscale x 2 x i8> %0,
1131     <vscale x 2 x i8> %1,
1132     iXLen %2,
1133     <vscale x 2 x i1> %3,
1134     iXLen %4, iXLen 1)
1136   ret <vscale x 2 x i8> %a
1139 declare <vscale x 4 x i8> @llvm.riscv.vsll.nxv4i8(
1140   <vscale x 4 x i8>,
1141   <vscale x 4 x i8>,
1142   iXLen,
1143   iXLen);
1145 define <vscale x 4 x i8> @intrinsic_vsll_vx_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, iXLen %1, iXLen %2) nounwind {
1146 ; CHECK-LABEL: intrinsic_vsll_vx_nxv4i8_nxv4i8:
1147 ; CHECK:       # %bb.0: # %entry
1148 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
1149 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1150 ; CHECK-NEXT:    ret
1151 entry:
1152   %a = call <vscale x 4 x i8> @llvm.riscv.vsll.nxv4i8(
1153     <vscale x 4 x i8> undef,
1154     <vscale x 4 x i8> %0,
1155     iXLen %1,
1156     iXLen %2)
1158   ret <vscale x 4 x i8> %a
1161 declare <vscale x 4 x i8> @llvm.riscv.vsll.mask.nxv4i8(
1162   <vscale x 4 x i8>,
1163   <vscale x 4 x i8>,
1164   iXLen,
1165   <vscale x 4 x i1>,
1166   iXLen,
1167   iXLen);
1169 define <vscale x 4 x i8> @intrinsic_vsll_mask_vx_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1170 ; CHECK-LABEL: intrinsic_vsll_mask_vx_nxv4i8_nxv4i8:
1171 ; CHECK:       # %bb.0: # %entry
1172 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, mu
1173 ; CHECK-NEXT:    vsll.vx v8, v9, a0, v0.t
1174 ; CHECK-NEXT:    ret
1175 entry:
1176   %a = call <vscale x 4 x i8> @llvm.riscv.vsll.mask.nxv4i8(
1177     <vscale x 4 x i8> %0,
1178     <vscale x 4 x i8> %1,
1179     iXLen %2,
1180     <vscale x 4 x i1> %3,
1181     iXLen %4, iXLen 1)
1183   ret <vscale x 4 x i8> %a
1186 declare <vscale x 8 x i8> @llvm.riscv.vsll.nxv8i8(
1187   <vscale x 8 x i8>,
1188   <vscale x 8 x i8>,
1189   iXLen,
1190   iXLen);
1192 define <vscale x 8 x i8> @intrinsic_vsll_vx_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, iXLen %1, iXLen %2) nounwind {
1193 ; CHECK-LABEL: intrinsic_vsll_vx_nxv8i8_nxv8i8:
1194 ; CHECK:       # %bb.0: # %entry
1195 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
1196 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1197 ; CHECK-NEXT:    ret
1198 entry:
1199   %a = call <vscale x 8 x i8> @llvm.riscv.vsll.nxv8i8(
1200     <vscale x 8 x i8> undef,
1201     <vscale x 8 x i8> %0,
1202     iXLen %1,
1203     iXLen %2)
1205   ret <vscale x 8 x i8> %a
1208 declare <vscale x 8 x i8> @llvm.riscv.vsll.mask.nxv8i8(
1209   <vscale x 8 x i8>,
1210   <vscale x 8 x i8>,
1211   iXLen,
1212   <vscale x 8 x i1>,
1213   iXLen,
1214   iXLen);
1216 define <vscale x 8 x i8> @intrinsic_vsll_mask_vx_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1217 ; CHECK-LABEL: intrinsic_vsll_mask_vx_nxv8i8_nxv8i8:
1218 ; CHECK:       # %bb.0: # %entry
1219 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, mu
1220 ; CHECK-NEXT:    vsll.vx v8, v9, a0, v0.t
1221 ; CHECK-NEXT:    ret
1222 entry:
1223   %a = call <vscale x 8 x i8> @llvm.riscv.vsll.mask.nxv8i8(
1224     <vscale x 8 x i8> %0,
1225     <vscale x 8 x i8> %1,
1226     iXLen %2,
1227     <vscale x 8 x i1> %3,
1228     iXLen %4, iXLen 1)
1230   ret <vscale x 8 x i8> %a
1233 declare <vscale x 16 x i8> @llvm.riscv.vsll.nxv16i8(
1234   <vscale x 16 x i8>,
1235   <vscale x 16 x i8>,
1236   iXLen,
1237   iXLen);
1239 define <vscale x 16 x i8> @intrinsic_vsll_vx_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, iXLen %1, iXLen %2) nounwind {
1240 ; CHECK-LABEL: intrinsic_vsll_vx_nxv16i8_nxv16i8:
1241 ; CHECK:       # %bb.0: # %entry
1242 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
1243 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1244 ; CHECK-NEXT:    ret
1245 entry:
1246   %a = call <vscale x 16 x i8> @llvm.riscv.vsll.nxv16i8(
1247     <vscale x 16 x i8> undef,
1248     <vscale x 16 x i8> %0,
1249     iXLen %1,
1250     iXLen %2)
1252   ret <vscale x 16 x i8> %a
1255 declare <vscale x 16 x i8> @llvm.riscv.vsll.mask.nxv16i8(
1256   <vscale x 16 x i8>,
1257   <vscale x 16 x i8>,
1258   iXLen,
1259   <vscale x 16 x i1>,
1260   iXLen,
1261   iXLen);
1263 define <vscale x 16 x i8> @intrinsic_vsll_mask_vx_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1264 ; CHECK-LABEL: intrinsic_vsll_mask_vx_nxv16i8_nxv16i8:
1265 ; CHECK:       # %bb.0: # %entry
1266 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, mu
1267 ; CHECK-NEXT:    vsll.vx v8, v10, a0, v0.t
1268 ; CHECK-NEXT:    ret
1269 entry:
1270   %a = call <vscale x 16 x i8> @llvm.riscv.vsll.mask.nxv16i8(
1271     <vscale x 16 x i8> %0,
1272     <vscale x 16 x i8> %1,
1273     iXLen %2,
1274     <vscale x 16 x i1> %3,
1275     iXLen %4, iXLen 1)
1277   ret <vscale x 16 x i8> %a
1280 declare <vscale x 32 x i8> @llvm.riscv.vsll.nxv32i8(
1281   <vscale x 32 x i8>,
1282   <vscale x 32 x i8>,
1283   iXLen,
1284   iXLen);
1286 define <vscale x 32 x i8> @intrinsic_vsll_vx_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, iXLen %1, iXLen %2) nounwind {
1287 ; CHECK-LABEL: intrinsic_vsll_vx_nxv32i8_nxv32i8:
1288 ; CHECK:       # %bb.0: # %entry
1289 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
1290 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1291 ; CHECK-NEXT:    ret
1292 entry:
1293   %a = call <vscale x 32 x i8> @llvm.riscv.vsll.nxv32i8(
1294     <vscale x 32 x i8> undef,
1295     <vscale x 32 x i8> %0,
1296     iXLen %1,
1297     iXLen %2)
1299   ret <vscale x 32 x i8> %a
1302 declare <vscale x 32 x i8> @llvm.riscv.vsll.mask.nxv32i8(
1303   <vscale x 32 x i8>,
1304   <vscale x 32 x i8>,
1305   iXLen,
1306   <vscale x 32 x i1>,
1307   iXLen,
1308   iXLen);
1310 define <vscale x 32 x i8> @intrinsic_vsll_mask_vx_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, iXLen %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
1311 ; CHECK-LABEL: intrinsic_vsll_mask_vx_nxv32i8_nxv32i8:
1312 ; CHECK:       # %bb.0: # %entry
1313 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, mu
1314 ; CHECK-NEXT:    vsll.vx v8, v12, a0, v0.t
1315 ; CHECK-NEXT:    ret
1316 entry:
1317   %a = call <vscale x 32 x i8> @llvm.riscv.vsll.mask.nxv32i8(
1318     <vscale x 32 x i8> %0,
1319     <vscale x 32 x i8> %1,
1320     iXLen %2,
1321     <vscale x 32 x i1> %3,
1322     iXLen %4, iXLen 1)
1324   ret <vscale x 32 x i8> %a
1327 declare <vscale x 64 x i8> @llvm.riscv.vsll.nxv64i8(
1328   <vscale x 64 x i8>,
1329   <vscale x 64 x i8>,
1330   iXLen,
1331   iXLen);
1333 define <vscale x 64 x i8> @intrinsic_vsll_vx_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, iXLen %1, iXLen %2) nounwind {
1334 ; CHECK-LABEL: intrinsic_vsll_vx_nxv64i8_nxv64i8:
1335 ; CHECK:       # %bb.0: # %entry
1336 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
1337 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1338 ; CHECK-NEXT:    ret
1339 entry:
1340   %a = call <vscale x 64 x i8> @llvm.riscv.vsll.nxv64i8(
1341     <vscale x 64 x i8> undef,
1342     <vscale x 64 x i8> %0,
1343     iXLen %1,
1344     iXLen %2)
1346   ret <vscale x 64 x i8> %a
1349 declare <vscale x 64 x i8> @llvm.riscv.vsll.mask.nxv64i8(
1350   <vscale x 64 x i8>,
1351   <vscale x 64 x i8>,
1352   iXLen,
1353   <vscale x 64 x i1>,
1354   iXLen,
1355   iXLen);
1357 define <vscale x 64 x i8> @intrinsic_vsll_mask_vx_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, iXLen %2, <vscale x 64 x i1> %3, iXLen %4) nounwind {
1358 ; CHECK-LABEL: intrinsic_vsll_mask_vx_nxv64i8_nxv64i8:
1359 ; CHECK:       # %bb.0: # %entry
1360 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, mu
1361 ; CHECK-NEXT:    vsll.vx v8, v16, a0, v0.t
1362 ; CHECK-NEXT:    ret
1363 entry:
1364   %a = call <vscale x 64 x i8> @llvm.riscv.vsll.mask.nxv64i8(
1365     <vscale x 64 x i8> %0,
1366     <vscale x 64 x i8> %1,
1367     iXLen %2,
1368     <vscale x 64 x i1> %3,
1369     iXLen %4, iXLen 1)
1371   ret <vscale x 64 x i8> %a
1374 declare <vscale x 1 x i16> @llvm.riscv.vsll.nxv1i16(
1375   <vscale x 1 x i16>,
1376   <vscale x 1 x i16>,
1377   iXLen,
1378   iXLen);
1380 define <vscale x 1 x i16> @intrinsic_vsll_vx_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, iXLen %1, iXLen %2) nounwind {
1381 ; CHECK-LABEL: intrinsic_vsll_vx_nxv1i16_nxv1i16:
1382 ; CHECK:       # %bb.0: # %entry
1383 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
1384 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1385 ; CHECK-NEXT:    ret
1386 entry:
1387   %a = call <vscale x 1 x i16> @llvm.riscv.vsll.nxv1i16(
1388     <vscale x 1 x i16> undef,
1389     <vscale x 1 x i16> %0,
1390     iXLen %1,
1391     iXLen %2)
1393   ret <vscale x 1 x i16> %a
1396 declare <vscale x 1 x i16> @llvm.riscv.vsll.mask.nxv1i16(
1397   <vscale x 1 x i16>,
1398   <vscale x 1 x i16>,
1399   iXLen,
1400   <vscale x 1 x i1>,
1401   iXLen,
1402   iXLen);
1404 define <vscale x 1 x i16> @intrinsic_vsll_mask_vx_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1405 ; CHECK-LABEL: intrinsic_vsll_mask_vx_nxv1i16_nxv1i16:
1406 ; CHECK:       # %bb.0: # %entry
1407 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu
1408 ; CHECK-NEXT:    vsll.vx v8, v9, a0, v0.t
1409 ; CHECK-NEXT:    ret
1410 entry:
1411   %a = call <vscale x 1 x i16> @llvm.riscv.vsll.mask.nxv1i16(
1412     <vscale x 1 x i16> %0,
1413     <vscale x 1 x i16> %1,
1414     iXLen %2,
1415     <vscale x 1 x i1> %3,
1416     iXLen %4, iXLen 1)
1418   ret <vscale x 1 x i16> %a
1421 declare <vscale x 2 x i16> @llvm.riscv.vsll.nxv2i16(
1422   <vscale x 2 x i16>,
1423   <vscale x 2 x i16>,
1424   iXLen,
1425   iXLen);
1427 define <vscale x 2 x i16> @intrinsic_vsll_vx_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, iXLen %1, iXLen %2) nounwind {
1428 ; CHECK-LABEL: intrinsic_vsll_vx_nxv2i16_nxv2i16:
1429 ; CHECK:       # %bb.0: # %entry
1430 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
1431 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1432 ; CHECK-NEXT:    ret
1433 entry:
1434   %a = call <vscale x 2 x i16> @llvm.riscv.vsll.nxv2i16(
1435     <vscale x 2 x i16> undef,
1436     <vscale x 2 x i16> %0,
1437     iXLen %1,
1438     iXLen %2)
1440   ret <vscale x 2 x i16> %a
1443 declare <vscale x 2 x i16> @llvm.riscv.vsll.mask.nxv2i16(
1444   <vscale x 2 x i16>,
1445   <vscale x 2 x i16>,
1446   iXLen,
1447   <vscale x 2 x i1>,
1448   iXLen,
1449   iXLen);
1451 define <vscale x 2 x i16> @intrinsic_vsll_mask_vx_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1452 ; CHECK-LABEL: intrinsic_vsll_mask_vx_nxv2i16_nxv2i16:
1453 ; CHECK:       # %bb.0: # %entry
1454 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu
1455 ; CHECK-NEXT:    vsll.vx v8, v9, a0, v0.t
1456 ; CHECK-NEXT:    ret
1457 entry:
1458   %a = call <vscale x 2 x i16> @llvm.riscv.vsll.mask.nxv2i16(
1459     <vscale x 2 x i16> %0,
1460     <vscale x 2 x i16> %1,
1461     iXLen %2,
1462     <vscale x 2 x i1> %3,
1463     iXLen %4, iXLen 1)
1465   ret <vscale x 2 x i16> %a
1468 declare <vscale x 4 x i16> @llvm.riscv.vsll.nxv4i16(
1469   <vscale x 4 x i16>,
1470   <vscale x 4 x i16>,
1471   iXLen,
1472   iXLen);
1474 define <vscale x 4 x i16> @intrinsic_vsll_vx_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, iXLen %1, iXLen %2) nounwind {
1475 ; CHECK-LABEL: intrinsic_vsll_vx_nxv4i16_nxv4i16:
1476 ; CHECK:       # %bb.0: # %entry
1477 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1478 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1479 ; CHECK-NEXT:    ret
1480 entry:
1481   %a = call <vscale x 4 x i16> @llvm.riscv.vsll.nxv4i16(
1482     <vscale x 4 x i16> undef,
1483     <vscale x 4 x i16> %0,
1484     iXLen %1,
1485     iXLen %2)
1487   ret <vscale x 4 x i16> %a
1490 declare <vscale x 4 x i16> @llvm.riscv.vsll.mask.nxv4i16(
1491   <vscale x 4 x i16>,
1492   <vscale x 4 x i16>,
1493   iXLen,
1494   <vscale x 4 x i1>,
1495   iXLen,
1496   iXLen);
1498 define <vscale x 4 x i16> @intrinsic_vsll_mask_vx_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1499 ; CHECK-LABEL: intrinsic_vsll_mask_vx_nxv4i16_nxv4i16:
1500 ; CHECK:       # %bb.0: # %entry
1501 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu
1502 ; CHECK-NEXT:    vsll.vx v8, v9, a0, v0.t
1503 ; CHECK-NEXT:    ret
1504 entry:
1505   %a = call <vscale x 4 x i16> @llvm.riscv.vsll.mask.nxv4i16(
1506     <vscale x 4 x i16> %0,
1507     <vscale x 4 x i16> %1,
1508     iXLen %2,
1509     <vscale x 4 x i1> %3,
1510     iXLen %4, iXLen 1)
1512   ret <vscale x 4 x i16> %a
1515 declare <vscale x 8 x i16> @llvm.riscv.vsll.nxv8i16(
1516   <vscale x 8 x i16>,
1517   <vscale x 8 x i16>,
1518   iXLen,
1519   iXLen);
1521 define <vscale x 8 x i16> @intrinsic_vsll_vx_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, iXLen %1, iXLen %2) nounwind {
1522 ; CHECK-LABEL: intrinsic_vsll_vx_nxv8i16_nxv8i16:
1523 ; CHECK:       # %bb.0: # %entry
1524 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
1525 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1526 ; CHECK-NEXT:    ret
1527 entry:
1528   %a = call <vscale x 8 x i16> @llvm.riscv.vsll.nxv8i16(
1529     <vscale x 8 x i16> undef,
1530     <vscale x 8 x i16> %0,
1531     iXLen %1,
1532     iXLen %2)
1534   ret <vscale x 8 x i16> %a
1537 declare <vscale x 8 x i16> @llvm.riscv.vsll.mask.nxv8i16(
1538   <vscale x 8 x i16>,
1539   <vscale x 8 x i16>,
1540   iXLen,
1541   <vscale x 8 x i1>,
1542   iXLen,
1543   iXLen);
1545 define <vscale x 8 x i16> @intrinsic_vsll_mask_vx_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1546 ; CHECK-LABEL: intrinsic_vsll_mask_vx_nxv8i16_nxv8i16:
1547 ; CHECK:       # %bb.0: # %entry
1548 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu
1549 ; CHECK-NEXT:    vsll.vx v8, v10, a0, v0.t
1550 ; CHECK-NEXT:    ret
1551 entry:
1552   %a = call <vscale x 8 x i16> @llvm.riscv.vsll.mask.nxv8i16(
1553     <vscale x 8 x i16> %0,
1554     <vscale x 8 x i16> %1,
1555     iXLen %2,
1556     <vscale x 8 x i1> %3,
1557     iXLen %4, iXLen 1)
1559   ret <vscale x 8 x i16> %a
1562 declare <vscale x 16 x i16> @llvm.riscv.vsll.nxv16i16(
1563   <vscale x 16 x i16>,
1564   <vscale x 16 x i16>,
1565   iXLen,
1566   iXLen);
1568 define <vscale x 16 x i16> @intrinsic_vsll_vx_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, iXLen %1, iXLen %2) nounwind {
1569 ; CHECK-LABEL: intrinsic_vsll_vx_nxv16i16_nxv16i16:
1570 ; CHECK:       # %bb.0: # %entry
1571 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
1572 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1573 ; CHECK-NEXT:    ret
1574 entry:
1575   %a = call <vscale x 16 x i16> @llvm.riscv.vsll.nxv16i16(
1576     <vscale x 16 x i16> undef,
1577     <vscale x 16 x i16> %0,
1578     iXLen %1,
1579     iXLen %2)
1581   ret <vscale x 16 x i16> %a
1584 declare <vscale x 16 x i16> @llvm.riscv.vsll.mask.nxv16i16(
1585   <vscale x 16 x i16>,
1586   <vscale x 16 x i16>,
1587   iXLen,
1588   <vscale x 16 x i1>,
1589   iXLen,
1590   iXLen);
1592 define <vscale x 16 x i16> @intrinsic_vsll_mask_vx_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1593 ; CHECK-LABEL: intrinsic_vsll_mask_vx_nxv16i16_nxv16i16:
1594 ; CHECK:       # %bb.0: # %entry
1595 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, mu
1596 ; CHECK-NEXT:    vsll.vx v8, v12, a0, v0.t
1597 ; CHECK-NEXT:    ret
1598 entry:
1599   %a = call <vscale x 16 x i16> @llvm.riscv.vsll.mask.nxv16i16(
1600     <vscale x 16 x i16> %0,
1601     <vscale x 16 x i16> %1,
1602     iXLen %2,
1603     <vscale x 16 x i1> %3,
1604     iXLen %4, iXLen 1)
1606   ret <vscale x 16 x i16> %a
1609 declare <vscale x 32 x i16> @llvm.riscv.vsll.nxv32i16(
1610   <vscale x 32 x i16>,
1611   <vscale x 32 x i16>,
1612   iXLen,
1613   iXLen);
1615 define <vscale x 32 x i16> @intrinsic_vsll_vx_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, iXLen %1, iXLen %2) nounwind {
1616 ; CHECK-LABEL: intrinsic_vsll_vx_nxv32i16_nxv32i16:
1617 ; CHECK:       # %bb.0: # %entry
1618 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
1619 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1620 ; CHECK-NEXT:    ret
1621 entry:
1622   %a = call <vscale x 32 x i16> @llvm.riscv.vsll.nxv32i16(
1623     <vscale x 32 x i16> undef,
1624     <vscale x 32 x i16> %0,
1625     iXLen %1,
1626     iXLen %2)
1628   ret <vscale x 32 x i16> %a
1631 declare <vscale x 32 x i16> @llvm.riscv.vsll.mask.nxv32i16(
1632   <vscale x 32 x i16>,
1633   <vscale x 32 x i16>,
1634   iXLen,
1635   <vscale x 32 x i1>,
1636   iXLen,
1637   iXLen);
1639 define <vscale x 32 x i16> @intrinsic_vsll_mask_vx_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, iXLen %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
1640 ; CHECK-LABEL: intrinsic_vsll_mask_vx_nxv32i16_nxv32i16:
1641 ; CHECK:       # %bb.0: # %entry
1642 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
1643 ; CHECK-NEXT:    vsll.vx v8, v16, a0, v0.t
1644 ; CHECK-NEXT:    ret
1645 entry:
1646   %a = call <vscale x 32 x i16> @llvm.riscv.vsll.mask.nxv32i16(
1647     <vscale x 32 x i16> %0,
1648     <vscale x 32 x i16> %1,
1649     iXLen %2,
1650     <vscale x 32 x i1> %3,
1651     iXLen %4, iXLen 1)
1653   ret <vscale x 32 x i16> %a
1656 declare <vscale x 1 x i32> @llvm.riscv.vsll.nxv1i32(
1657   <vscale x 1 x i32>,
1658   <vscale x 1 x i32>,
1659   iXLen,
1660   iXLen);
1662 define <vscale x 1 x i32> @intrinsic_vsll_vx_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, iXLen %1, iXLen %2) nounwind {
1663 ; CHECK-LABEL: intrinsic_vsll_vx_nxv1i32_nxv1i32:
1664 ; CHECK:       # %bb.0: # %entry
1665 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1666 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1667 ; CHECK-NEXT:    ret
1668 entry:
1669   %a = call <vscale x 1 x i32> @llvm.riscv.vsll.nxv1i32(
1670     <vscale x 1 x i32> undef,
1671     <vscale x 1 x i32> %0,
1672     iXLen %1,
1673     iXLen %2)
1675   ret <vscale x 1 x i32> %a
1678 declare <vscale x 1 x i32> @llvm.riscv.vsll.mask.nxv1i32(
1679   <vscale x 1 x i32>,
1680   <vscale x 1 x i32>,
1681   iXLen,
1682   <vscale x 1 x i1>,
1683   iXLen,
1684   iXLen);
1686 define <vscale x 1 x i32> @intrinsic_vsll_mask_vx_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1687 ; CHECK-LABEL: intrinsic_vsll_mask_vx_nxv1i32_nxv1i32:
1688 ; CHECK:       # %bb.0: # %entry
1689 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu
1690 ; CHECK-NEXT:    vsll.vx v8, v9, a0, v0.t
1691 ; CHECK-NEXT:    ret
1692 entry:
1693   %a = call <vscale x 1 x i32> @llvm.riscv.vsll.mask.nxv1i32(
1694     <vscale x 1 x i32> %0,
1695     <vscale x 1 x i32> %1,
1696     iXLen %2,
1697     <vscale x 1 x i1> %3,
1698     iXLen %4, iXLen 1)
1700   ret <vscale x 1 x i32> %a
1703 declare <vscale x 2 x i32> @llvm.riscv.vsll.nxv2i32(
1704   <vscale x 2 x i32>,
1705   <vscale x 2 x i32>,
1706   iXLen,
1707   iXLen);
1709 define <vscale x 2 x i32> @intrinsic_vsll_vx_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, iXLen %1, iXLen %2) nounwind {
1710 ; CHECK-LABEL: intrinsic_vsll_vx_nxv2i32_nxv2i32:
1711 ; CHECK:       # %bb.0: # %entry
1712 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1713 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1714 ; CHECK-NEXT:    ret
1715 entry:
1716   %a = call <vscale x 2 x i32> @llvm.riscv.vsll.nxv2i32(
1717     <vscale x 2 x i32> undef,
1718     <vscale x 2 x i32> %0,
1719     iXLen %1,
1720     iXLen %2)
1722   ret <vscale x 2 x i32> %a
1725 declare <vscale x 2 x i32> @llvm.riscv.vsll.mask.nxv2i32(
1726   <vscale x 2 x i32>,
1727   <vscale x 2 x i32>,
1728   iXLen,
1729   <vscale x 2 x i1>,
1730   iXLen,
1731   iXLen);
1733 define <vscale x 2 x i32> @intrinsic_vsll_mask_vx_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1734 ; CHECK-LABEL: intrinsic_vsll_mask_vx_nxv2i32_nxv2i32:
1735 ; CHECK:       # %bb.0: # %entry
1736 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu
1737 ; CHECK-NEXT:    vsll.vx v8, v9, a0, v0.t
1738 ; CHECK-NEXT:    ret
1739 entry:
1740   %a = call <vscale x 2 x i32> @llvm.riscv.vsll.mask.nxv2i32(
1741     <vscale x 2 x i32> %0,
1742     <vscale x 2 x i32> %1,
1743     iXLen %2,
1744     <vscale x 2 x i1> %3,
1745     iXLen %4, iXLen 1)
1747   ret <vscale x 2 x i32> %a
1750 declare <vscale x 4 x i32> @llvm.riscv.vsll.nxv4i32(
1751   <vscale x 4 x i32>,
1752   <vscale x 4 x i32>,
1753   iXLen,
1754   iXLen);
1756 define <vscale x 4 x i32> @intrinsic_vsll_vx_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, iXLen %1, iXLen %2) nounwind {
1757 ; CHECK-LABEL: intrinsic_vsll_vx_nxv4i32_nxv4i32:
1758 ; CHECK:       # %bb.0: # %entry
1759 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1760 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1761 ; CHECK-NEXT:    ret
1762 entry:
1763   %a = call <vscale x 4 x i32> @llvm.riscv.vsll.nxv4i32(
1764     <vscale x 4 x i32> undef,
1765     <vscale x 4 x i32> %0,
1766     iXLen %1,
1767     iXLen %2)
1769   ret <vscale x 4 x i32> %a
1772 declare <vscale x 4 x i32> @llvm.riscv.vsll.mask.nxv4i32(
1773   <vscale x 4 x i32>,
1774   <vscale x 4 x i32>,
1775   iXLen,
1776   <vscale x 4 x i1>,
1777   iXLen,
1778   iXLen);
1780 define <vscale x 4 x i32> @intrinsic_vsll_mask_vx_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1781 ; CHECK-LABEL: intrinsic_vsll_mask_vx_nxv4i32_nxv4i32:
1782 ; CHECK:       # %bb.0: # %entry
1783 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu
1784 ; CHECK-NEXT:    vsll.vx v8, v10, a0, v0.t
1785 ; CHECK-NEXT:    ret
1786 entry:
1787   %a = call <vscale x 4 x i32> @llvm.riscv.vsll.mask.nxv4i32(
1788     <vscale x 4 x i32> %0,
1789     <vscale x 4 x i32> %1,
1790     iXLen %2,
1791     <vscale x 4 x i1> %3,
1792     iXLen %4, iXLen 1)
1794   ret <vscale x 4 x i32> %a
1797 declare <vscale x 8 x i32> @llvm.riscv.vsll.nxv8i32(
1798   <vscale x 8 x i32>,
1799   <vscale x 8 x i32>,
1800   iXLen,
1801   iXLen);
1803 define <vscale x 8 x i32> @intrinsic_vsll_vx_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, iXLen %1, iXLen %2) nounwind {
1804 ; CHECK-LABEL: intrinsic_vsll_vx_nxv8i32_nxv8i32:
1805 ; CHECK:       # %bb.0: # %entry
1806 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1807 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1808 ; CHECK-NEXT:    ret
1809 entry:
1810   %a = call <vscale x 8 x i32> @llvm.riscv.vsll.nxv8i32(
1811     <vscale x 8 x i32> undef,
1812     <vscale x 8 x i32> %0,
1813     iXLen %1,
1814     iXLen %2)
1816   ret <vscale x 8 x i32> %a
1819 declare <vscale x 8 x i32> @llvm.riscv.vsll.mask.nxv8i32(
1820   <vscale x 8 x i32>,
1821   <vscale x 8 x i32>,
1822   iXLen,
1823   <vscale x 8 x i1>,
1824   iXLen,
1825   iXLen);
1827 define <vscale x 8 x i32> @intrinsic_vsll_mask_vx_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1828 ; CHECK-LABEL: intrinsic_vsll_mask_vx_nxv8i32_nxv8i32:
1829 ; CHECK:       # %bb.0: # %entry
1830 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, mu
1831 ; CHECK-NEXT:    vsll.vx v8, v12, a0, v0.t
1832 ; CHECK-NEXT:    ret
1833 entry:
1834   %a = call <vscale x 8 x i32> @llvm.riscv.vsll.mask.nxv8i32(
1835     <vscale x 8 x i32> %0,
1836     <vscale x 8 x i32> %1,
1837     iXLen %2,
1838     <vscale x 8 x i1> %3,
1839     iXLen %4, iXLen 1)
1841   ret <vscale x 8 x i32> %a
1844 declare <vscale x 16 x i32> @llvm.riscv.vsll.nxv16i32(
1845   <vscale x 16 x i32>,
1846   <vscale x 16 x i32>,
1847   iXLen,
1848   iXLen);
1850 define <vscale x 16 x i32> @intrinsic_vsll_vx_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, iXLen %1, iXLen %2) nounwind {
1851 ; CHECK-LABEL: intrinsic_vsll_vx_nxv16i32_nxv16i32:
1852 ; CHECK:       # %bb.0: # %entry
1853 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
1854 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1855 ; CHECK-NEXT:    ret
1856 entry:
1857   %a = call <vscale x 16 x i32> @llvm.riscv.vsll.nxv16i32(
1858     <vscale x 16 x i32> undef,
1859     <vscale x 16 x i32> %0,
1860     iXLen %1,
1861     iXLen %2)
1863   ret <vscale x 16 x i32> %a
1866 declare <vscale x 16 x i32> @llvm.riscv.vsll.mask.nxv16i32(
1867   <vscale x 16 x i32>,
1868   <vscale x 16 x i32>,
1869   iXLen,
1870   <vscale x 16 x i1>,
1871   iXLen,
1872   iXLen);
1874 define <vscale x 16 x i32> @intrinsic_vsll_mask_vx_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1875 ; CHECK-LABEL: intrinsic_vsll_mask_vx_nxv16i32_nxv16i32:
1876 ; CHECK:       # %bb.0: # %entry
1877 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
1878 ; CHECK-NEXT:    vsll.vx v8, v16, a0, v0.t
1879 ; CHECK-NEXT:    ret
1880 entry:
1881   %a = call <vscale x 16 x i32> @llvm.riscv.vsll.mask.nxv16i32(
1882     <vscale x 16 x i32> %0,
1883     <vscale x 16 x i32> %1,
1884     iXLen %2,
1885     <vscale x 16 x i1> %3,
1886     iXLen %4, iXLen 1)
1888   ret <vscale x 16 x i32> %a
1891 declare <vscale x 1 x i64> @llvm.riscv.vsll.nxv1i64(
1892   <vscale x 1 x i64>,
1893   <vscale x 1 x i64>,
1894   iXLen,
1895   iXLen);
1897 define <vscale x 1 x i64> @intrinsic_vsll_vx_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, iXLen %1, iXLen %2) nounwind {
1898 ; CHECK-LABEL: intrinsic_vsll_vx_nxv1i64_nxv1i64:
1899 ; CHECK:       # %bb.0: # %entry
1900 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1901 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1902 ; CHECK-NEXT:    ret
1903 entry:
1904   %a = call <vscale x 1 x i64> @llvm.riscv.vsll.nxv1i64(
1905     <vscale x 1 x i64> undef,
1906     <vscale x 1 x i64> %0,
1907     iXLen %1,
1908     iXLen %2)
1910   ret <vscale x 1 x i64> %a
1913 declare <vscale x 1 x i64> @llvm.riscv.vsll.mask.nxv1i64(
1914   <vscale x 1 x i64>,
1915   <vscale x 1 x i64>,
1916   iXLen,
1917   <vscale x 1 x i1>,
1918   iXLen,
1919   iXLen);
1921 define <vscale x 1 x i64> @intrinsic_vsll_mask_vx_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1922 ; CHECK-LABEL: intrinsic_vsll_mask_vx_nxv1i64_nxv1i64:
1923 ; CHECK:       # %bb.0: # %entry
1924 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu
1925 ; CHECK-NEXT:    vsll.vx v8, v9, a0, v0.t
1926 ; CHECK-NEXT:    ret
1927 entry:
1928   %a = call <vscale x 1 x i64> @llvm.riscv.vsll.mask.nxv1i64(
1929     <vscale x 1 x i64> %0,
1930     <vscale x 1 x i64> %1,
1931     iXLen %2,
1932     <vscale x 1 x i1> %3,
1933     iXLen %4, iXLen 1)
1935   ret <vscale x 1 x i64> %a
1938 declare <vscale x 2 x i64> @llvm.riscv.vsll.nxv2i64(
1939   <vscale x 2 x i64>,
1940   <vscale x 2 x i64>,
1941   iXLen,
1942   iXLen);
1944 define <vscale x 2 x i64> @intrinsic_vsll_vx_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, iXLen %1, iXLen %2) nounwind {
1945 ; CHECK-LABEL: intrinsic_vsll_vx_nxv2i64_nxv2i64:
1946 ; CHECK:       # %bb.0: # %entry
1947 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1948 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1949 ; CHECK-NEXT:    ret
1950 entry:
1951   %a = call <vscale x 2 x i64> @llvm.riscv.vsll.nxv2i64(
1952     <vscale x 2 x i64> undef,
1953     <vscale x 2 x i64> %0,
1954     iXLen %1,
1955     iXLen %2)
1957   ret <vscale x 2 x i64> %a
1960 declare <vscale x 2 x i64> @llvm.riscv.vsll.mask.nxv2i64(
1961   <vscale x 2 x i64>,
1962   <vscale x 2 x i64>,
1963   iXLen,
1964   <vscale x 2 x i1>,
1965   iXLen,
1966   iXLen);
1968 define <vscale x 2 x i64> @intrinsic_vsll_mask_vx_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1969 ; CHECK-LABEL: intrinsic_vsll_mask_vx_nxv2i64_nxv2i64:
1970 ; CHECK:       # %bb.0: # %entry
1971 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, mu
1972 ; CHECK-NEXT:    vsll.vx v8, v10, a0, v0.t
1973 ; CHECK-NEXT:    ret
1974 entry:
1975   %a = call <vscale x 2 x i64> @llvm.riscv.vsll.mask.nxv2i64(
1976     <vscale x 2 x i64> %0,
1977     <vscale x 2 x i64> %1,
1978     iXLen %2,
1979     <vscale x 2 x i1> %3,
1980     iXLen %4, iXLen 1)
1982   ret <vscale x 2 x i64> %a
1985 declare <vscale x 4 x i64> @llvm.riscv.vsll.nxv4i64(
1986   <vscale x 4 x i64>,
1987   <vscale x 4 x i64>,
1988   iXLen,
1989   iXLen);
1991 define <vscale x 4 x i64> @intrinsic_vsll_vx_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, iXLen %1, iXLen %2) nounwind {
1992 ; CHECK-LABEL: intrinsic_vsll_vx_nxv4i64_nxv4i64:
1993 ; CHECK:       # %bb.0: # %entry
1994 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1995 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1996 ; CHECK-NEXT:    ret
1997 entry:
1998   %a = call <vscale x 4 x i64> @llvm.riscv.vsll.nxv4i64(
1999     <vscale x 4 x i64> undef,
2000     <vscale x 4 x i64> %0,
2001     iXLen %1,
2002     iXLen %2)
2004   ret <vscale x 4 x i64> %a
2007 declare <vscale x 4 x i64> @llvm.riscv.vsll.mask.nxv4i64(
2008   <vscale x 4 x i64>,
2009   <vscale x 4 x i64>,
2010   iXLen,
2011   <vscale x 4 x i1>,
2012   iXLen,
2013   iXLen);
2015 define <vscale x 4 x i64> @intrinsic_vsll_mask_vx_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
2016 ; CHECK-LABEL: intrinsic_vsll_mask_vx_nxv4i64_nxv4i64:
2017 ; CHECK:       # %bb.0: # %entry
2018 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, mu
2019 ; CHECK-NEXT:    vsll.vx v8, v12, a0, v0.t
2020 ; CHECK-NEXT:    ret
2021 entry:
2022   %a = call <vscale x 4 x i64> @llvm.riscv.vsll.mask.nxv4i64(
2023     <vscale x 4 x i64> %0,
2024     <vscale x 4 x i64> %1,
2025     iXLen %2,
2026     <vscale x 4 x i1> %3,
2027     iXLen %4, iXLen 1)
2029   ret <vscale x 4 x i64> %a
2032 declare <vscale x 8 x i64> @llvm.riscv.vsll.nxv8i64(
2033   <vscale x 8 x i64>,
2034   <vscale x 8 x i64>,
2035   iXLen,
2036   iXLen);
2038 define <vscale x 8 x i64> @intrinsic_vsll_vx_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, iXLen %1, iXLen %2) nounwind {
2039 ; CHECK-LABEL: intrinsic_vsll_vx_nxv8i64_nxv8i64:
2040 ; CHECK:       # %bb.0: # %entry
2041 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
2042 ; CHECK-NEXT:    vsll.vx v8, v8, a0
2043 ; CHECK-NEXT:    ret
2044 entry:
2045   %a = call <vscale x 8 x i64> @llvm.riscv.vsll.nxv8i64(
2046     <vscale x 8 x i64> undef,
2047     <vscale x 8 x i64> %0,
2048     iXLen %1,
2049     iXLen %2)
2051   ret <vscale x 8 x i64> %a
2054 declare <vscale x 8 x i64> @llvm.riscv.vsll.mask.nxv8i64(
2055   <vscale x 8 x i64>,
2056   <vscale x 8 x i64>,
2057   iXLen,
2058   <vscale x 8 x i1>,
2059   iXLen,
2060   iXLen);
2062 define <vscale x 8 x i64> @intrinsic_vsll_mask_vx_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
2063 ; CHECK-LABEL: intrinsic_vsll_mask_vx_nxv8i64_nxv8i64:
2064 ; CHECK:       # %bb.0: # %entry
2065 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
2066 ; CHECK-NEXT:    vsll.vx v8, v16, a0, v0.t
2067 ; CHECK-NEXT:    ret
2068 entry:
2069   %a = call <vscale x 8 x i64> @llvm.riscv.vsll.mask.nxv8i64(
2070     <vscale x 8 x i64> %0,
2071     <vscale x 8 x i64> %1,
2072     iXLen %2,
2073     <vscale x 8 x i1> %3,
2074     iXLen %4, iXLen 1)
2076   ret <vscale x 8 x i64> %a
2079 define <vscale x 1 x i8> @intrinsic_vsll_vi_nxv1i8_nxv1i8_i8(<vscale x 1 x i8> %0, iXLen %1) nounwind {
2080 ; CHECK-LABEL: intrinsic_vsll_vi_nxv1i8_nxv1i8_i8:
2081 ; CHECK:       # %bb.0: # %entry
2082 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
2083 ; CHECK-NEXT:    vsll.vi v8, v8, 9
2084 ; CHECK-NEXT:    ret
2085 entry:
2086   %a = call <vscale x 1 x i8> @llvm.riscv.vsll.nxv1i8(
2087     <vscale x 1 x i8> undef,
2088     <vscale x 1 x i8> %0,
2089     iXLen 9,
2090     iXLen %1)
2092   ret <vscale x 1 x i8> %a
2095 define <vscale x 1 x i8> @intrinsic_vsll_1_nxv1i8_nxv1i8_i8(<vscale x 1 x i8> %0, iXLen %1) nounwind {
2096 ; CHECK-LABEL: intrinsic_vsll_1_nxv1i8_nxv1i8_i8:
2097 ; CHECK:       # %bb.0: # %entry
2098 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
2099 ; CHECK-NEXT:    vadd.vv v8, v8, v8
2100 ; CHECK-NEXT:    ret
2101 entry:
2102   %a = call <vscale x 1 x i8> @llvm.riscv.vsll.nxv1i8(
2103     <vscale x 1 x i8> undef,
2104     <vscale x 1 x i8> %0,
2105     iXLen 1,
2106     iXLen %1)
2108   ret <vscale x 1 x i8> %a
2111 define <vscale x 1 x i8> @intrinsic_vsll_1_tu_nxv1i8_nxv1i8_i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, iXLen %2) nounwind {
2112 ; CHECK-LABEL: intrinsic_vsll_1_tu_nxv1i8_nxv1i8_i8:
2113 ; CHECK:       # %bb.0: # %entry
2114 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, tu, ma
2115 ; CHECK-NEXT:    vadd.vv v8, v9, v9
2116 ; CHECK-NEXT:    ret
2117 entry:
2118   %a = call <vscale x 1 x i8> @llvm.riscv.vsll.nxv1i8(
2119     <vscale x 1 x i8> %0,
2120     <vscale x 1 x i8> %1,
2121     iXLen 1,
2122     iXLen %2)
2124   ret <vscale x 1 x i8> %a
2127 define <vscale x 1 x i8> @intrinsic_vsll_mask_vi_nxv1i8_nxv1i8_i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
2128 ; CHECK-LABEL: intrinsic_vsll_mask_vi_nxv1i8_nxv1i8_i8:
2129 ; CHECK:       # %bb.0: # %entry
2130 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, mu
2131 ; CHECK-NEXT:    vsll.vi v8, v9, 9, v0.t
2132 ; CHECK-NEXT:    ret
2133 entry:
2134   %a = call <vscale x 1 x i8> @llvm.riscv.vsll.mask.nxv1i8(
2135     <vscale x 1 x i8> %0,
2136     <vscale x 1 x i8> %1,
2137     iXLen 9,
2138     <vscale x 1 x i1> %2,
2139     iXLen %3, iXLen 1)
2141   ret <vscale x 1 x i8> %a
2144 define <vscale x 1 x i8> @intrinsic_vsll_mask_1_nxv1i8_nxv1i8_i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
2145 ; CHECK-LABEL: intrinsic_vsll_mask_1_nxv1i8_nxv1i8_i8:
2146 ; CHECK:       # %bb.0: # %entry
2147 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, mu
2148 ; CHECK-NEXT:    vadd.vv v8, v9, v9, v0.t
2149 ; CHECK-NEXT:    ret
2150 entry:
2151   %a = call <vscale x 1 x i8> @llvm.riscv.vsll.mask.nxv1i8(
2152     <vscale x 1 x i8> %0,
2153     <vscale x 1 x i8> %1,
2154     iXLen 1,
2155     <vscale x 1 x i1> %2,
2156     iXLen %3, iXLen 1)
2158   ret <vscale x 1 x i8> %a
2161 define <vscale x 2 x i8> @intrinsic_vsll_vi_nxv2i8_nxv2i8_i8(<vscale x 2 x i8> %0, iXLen %1) nounwind {
2162 ; CHECK-LABEL: intrinsic_vsll_vi_nxv2i8_nxv2i8_i8:
2163 ; CHECK:       # %bb.0: # %entry
2164 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
2165 ; CHECK-NEXT:    vsll.vi v8, v8, 9
2166 ; CHECK-NEXT:    ret
2167 entry:
2168   %a = call <vscale x 2 x i8> @llvm.riscv.vsll.nxv2i8(
2169     <vscale x 2 x i8> undef,
2170     <vscale x 2 x i8> %0,
2171     iXLen 9,
2172     iXLen %1)
2174   ret <vscale x 2 x i8> %a
2177 define <vscale x 2 x i8> @intrinsic_vsll_mask_vi_nxv2i8_nxv2i8_i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
2178 ; CHECK-LABEL: intrinsic_vsll_mask_vi_nxv2i8_nxv2i8_i8:
2179 ; CHECK:       # %bb.0: # %entry
2180 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, mu
2181 ; CHECK-NEXT:    vsll.vi v8, v9, 9, v0.t
2182 ; CHECK-NEXT:    ret
2183 entry:
2184   %a = call <vscale x 2 x i8> @llvm.riscv.vsll.mask.nxv2i8(
2185     <vscale x 2 x i8> %0,
2186     <vscale x 2 x i8> %1,
2187     iXLen 9,
2188     <vscale x 2 x i1> %2,
2189     iXLen %3, iXLen 1)
2191   ret <vscale x 2 x i8> %a
2194 define <vscale x 4 x i8> @intrinsic_vsll_vi_nxv4i8_nxv4i8_i8(<vscale x 4 x i8> %0, iXLen %1) nounwind {
2195 ; CHECK-LABEL: intrinsic_vsll_vi_nxv4i8_nxv4i8_i8:
2196 ; CHECK:       # %bb.0: # %entry
2197 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
2198 ; CHECK-NEXT:    vsll.vi v8, v8, 9
2199 ; CHECK-NEXT:    ret
2200 entry:
2201   %a = call <vscale x 4 x i8> @llvm.riscv.vsll.nxv4i8(
2202     <vscale x 4 x i8> undef,
2203     <vscale x 4 x i8> %0,
2204     iXLen 9,
2205     iXLen %1)
2207   ret <vscale x 4 x i8> %a
2210 define <vscale x 4 x i8> @intrinsic_vsll_mask_vi_nxv4i8_nxv4i8_i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
2211 ; CHECK-LABEL: intrinsic_vsll_mask_vi_nxv4i8_nxv4i8_i8:
2212 ; CHECK:       # %bb.0: # %entry
2213 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, mu
2214 ; CHECK-NEXT:    vsll.vi v8, v9, 9, v0.t
2215 ; CHECK-NEXT:    ret
2216 entry:
2217   %a = call <vscale x 4 x i8> @llvm.riscv.vsll.mask.nxv4i8(
2218     <vscale x 4 x i8> %0,
2219     <vscale x 4 x i8> %1,
2220     iXLen 9,
2221     <vscale x 4 x i1> %2,
2222     iXLen %3, iXLen 1)
2224   ret <vscale x 4 x i8> %a
2227 define <vscale x 8 x i8> @intrinsic_vsll_vi_nxv8i8_nxv8i8_i8(<vscale x 8 x i8> %0, iXLen %1) nounwind {
2228 ; CHECK-LABEL: intrinsic_vsll_vi_nxv8i8_nxv8i8_i8:
2229 ; CHECK:       # %bb.0: # %entry
2230 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
2231 ; CHECK-NEXT:    vsll.vi v8, v8, 9
2232 ; CHECK-NEXT:    ret
2233 entry:
2234   %a = call <vscale x 8 x i8> @llvm.riscv.vsll.nxv8i8(
2235     <vscale x 8 x i8> undef,
2236     <vscale x 8 x i8> %0,
2237     iXLen 9,
2238     iXLen %1)
2240   ret <vscale x 8 x i8> %a
2243 define <vscale x 8 x i8> @intrinsic_vsll_mask_vi_nxv8i8_nxv8i8_i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
2244 ; CHECK-LABEL: intrinsic_vsll_mask_vi_nxv8i8_nxv8i8_i8:
2245 ; CHECK:       # %bb.0: # %entry
2246 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, mu
2247 ; CHECK-NEXT:    vsll.vi v8, v9, 9, v0.t
2248 ; CHECK-NEXT:    ret
2249 entry:
2250   %a = call <vscale x 8 x i8> @llvm.riscv.vsll.mask.nxv8i8(
2251     <vscale x 8 x i8> %0,
2252     <vscale x 8 x i8> %1,
2253     iXLen 9,
2254     <vscale x 8 x i1> %2,
2255     iXLen %3, iXLen 1)
2257   ret <vscale x 8 x i8> %a
2260 define <vscale x 16 x i8> @intrinsic_vsll_vi_nxv16i8_nxv16i8_i8(<vscale x 16 x i8> %0, iXLen %1) nounwind {
2261 ; CHECK-LABEL: intrinsic_vsll_vi_nxv16i8_nxv16i8_i8:
2262 ; CHECK:       # %bb.0: # %entry
2263 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
2264 ; CHECK-NEXT:    vsll.vi v8, v8, 9
2265 ; CHECK-NEXT:    ret
2266 entry:
2267   %a = call <vscale x 16 x i8> @llvm.riscv.vsll.nxv16i8(
2268     <vscale x 16 x i8> undef,
2269     <vscale x 16 x i8> %0,
2270     iXLen 9,
2271     iXLen %1)
2273   ret <vscale x 16 x i8> %a
2276 define <vscale x 16 x i8> @intrinsic_vsll_mask_vi_nxv16i8_nxv16i8_i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
2277 ; CHECK-LABEL: intrinsic_vsll_mask_vi_nxv16i8_nxv16i8_i8:
2278 ; CHECK:       # %bb.0: # %entry
2279 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, mu
2280 ; CHECK-NEXT:    vsll.vi v8, v10, 9, v0.t
2281 ; CHECK-NEXT:    ret
2282 entry:
2283   %a = call <vscale x 16 x i8> @llvm.riscv.vsll.mask.nxv16i8(
2284     <vscale x 16 x i8> %0,
2285     <vscale x 16 x i8> %1,
2286     iXLen 9,
2287     <vscale x 16 x i1> %2,
2288     iXLen %3, iXLen 1)
2290   ret <vscale x 16 x i8> %a
2293 define <vscale x 32 x i8> @intrinsic_vsll_vi_nxv32i8_nxv32i8_i8(<vscale x 32 x i8> %0, iXLen %1) nounwind {
2294 ; CHECK-LABEL: intrinsic_vsll_vi_nxv32i8_nxv32i8_i8:
2295 ; CHECK:       # %bb.0: # %entry
2296 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
2297 ; CHECK-NEXT:    vsll.vi v8, v8, 9
2298 ; CHECK-NEXT:    ret
2299 entry:
2300   %a = call <vscale x 32 x i8> @llvm.riscv.vsll.nxv32i8(
2301     <vscale x 32 x i8> undef,
2302     <vscale x 32 x i8> %0,
2303     iXLen 9,
2304     iXLen %1)
2306   ret <vscale x 32 x i8> %a
2309 define <vscale x 32 x i8> @intrinsic_vsll_mask_vi_nxv32i8_nxv32i8_i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, <vscale x 32 x i1> %2, iXLen %3) nounwind {
2310 ; CHECK-LABEL: intrinsic_vsll_mask_vi_nxv32i8_nxv32i8_i8:
2311 ; CHECK:       # %bb.0: # %entry
2312 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, mu
2313 ; CHECK-NEXT:    vsll.vi v8, v12, 9, v0.t
2314 ; CHECK-NEXT:    ret
2315 entry:
2316   %a = call <vscale x 32 x i8> @llvm.riscv.vsll.mask.nxv32i8(
2317     <vscale x 32 x i8> %0,
2318     <vscale x 32 x i8> %1,
2319     iXLen 9,
2320     <vscale x 32 x i1> %2,
2321     iXLen %3, iXLen 1)
2323   ret <vscale x 32 x i8> %a
2326 define <vscale x 64 x i8> @intrinsic_vsll_vi_nxv64i8_nxv64i8_i8(<vscale x 64 x i8> %0, iXLen %1) nounwind {
2327 ; CHECK-LABEL: intrinsic_vsll_vi_nxv64i8_nxv64i8_i8:
2328 ; CHECK:       # %bb.0: # %entry
2329 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
2330 ; CHECK-NEXT:    vsll.vi v8, v8, 9
2331 ; CHECK-NEXT:    ret
2332 entry:
2333   %a = call <vscale x 64 x i8> @llvm.riscv.vsll.nxv64i8(
2334     <vscale x 64 x i8> undef,
2335     <vscale x 64 x i8> %0,
2336     iXLen 9,
2337     iXLen %1)
2339   ret <vscale x 64 x i8> %a
2342 define <vscale x 64 x i8> @intrinsic_vsll_mask_vi_nxv64i8_nxv64i8_i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, <vscale x 64 x i1> %2, iXLen %3) nounwind {
2343 ; CHECK-LABEL: intrinsic_vsll_mask_vi_nxv64i8_nxv64i8_i8:
2344 ; CHECK:       # %bb.0: # %entry
2345 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, mu
2346 ; CHECK-NEXT:    vsll.vi v8, v16, 9, v0.t
2347 ; CHECK-NEXT:    ret
2348 entry:
2349   %a = call <vscale x 64 x i8> @llvm.riscv.vsll.mask.nxv64i8(
2350     <vscale x 64 x i8> %0,
2351     <vscale x 64 x i8> %1,
2352     iXLen 9,
2353     <vscale x 64 x i1> %2,
2354     iXLen %3, iXLen 1)
2356   ret <vscale x 64 x i8> %a
2359 define <vscale x 1 x i16> @intrinsic_vsll_vi_nxv1i16_nxv1i16_i16(<vscale x 1 x i16> %0, iXLen %1) nounwind {
2360 ; CHECK-LABEL: intrinsic_vsll_vi_nxv1i16_nxv1i16_i16:
2361 ; CHECK:       # %bb.0: # %entry
2362 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
2363 ; CHECK-NEXT:    vsll.vi v8, v8, 9
2364 ; CHECK-NEXT:    ret
2365 entry:
2366   %a = call <vscale x 1 x i16> @llvm.riscv.vsll.nxv1i16(
2367     <vscale x 1 x i16> undef,
2368     <vscale x 1 x i16> %0,
2369     iXLen 9,
2370     iXLen %1)
2372   ret <vscale x 1 x i16> %a
2375 define <vscale x 1 x i16> @intrinsic_vsll_mask_vi_nxv1i16_nxv1i16_i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
2376 ; CHECK-LABEL: intrinsic_vsll_mask_vi_nxv1i16_nxv1i16_i16:
2377 ; CHECK:       # %bb.0: # %entry
2378 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu
2379 ; CHECK-NEXT:    vsll.vi v8, v9, 9, v0.t
2380 ; CHECK-NEXT:    ret
2381 entry:
2382   %a = call <vscale x 1 x i16> @llvm.riscv.vsll.mask.nxv1i16(
2383     <vscale x 1 x i16> %0,
2384     <vscale x 1 x i16> %1,
2385     iXLen 9,
2386     <vscale x 1 x i1> %2,
2387     iXLen %3, iXLen 1)
2389   ret <vscale x 1 x i16> %a
2392 define <vscale x 2 x i16> @intrinsic_vsll_vi_nxv2i16_nxv2i16_i16(<vscale x 2 x i16> %0, iXLen %1) nounwind {
2393 ; CHECK-LABEL: intrinsic_vsll_vi_nxv2i16_nxv2i16_i16:
2394 ; CHECK:       # %bb.0: # %entry
2395 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
2396 ; CHECK-NEXT:    vsll.vi v8, v8, 9
2397 ; CHECK-NEXT:    ret
2398 entry:
2399   %a = call <vscale x 2 x i16> @llvm.riscv.vsll.nxv2i16(
2400     <vscale x 2 x i16> undef,
2401     <vscale x 2 x i16> %0,
2402     iXLen 9,
2403     iXLen %1)
2405   ret <vscale x 2 x i16> %a
2408 define <vscale x 2 x i16> @intrinsic_vsll_mask_vi_nxv2i16_nxv2i16_i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
2409 ; CHECK-LABEL: intrinsic_vsll_mask_vi_nxv2i16_nxv2i16_i16:
2410 ; CHECK:       # %bb.0: # %entry
2411 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu
2412 ; CHECK-NEXT:    vsll.vi v8, v9, 9, v0.t
2413 ; CHECK-NEXT:    ret
2414 entry:
2415   %a = call <vscale x 2 x i16> @llvm.riscv.vsll.mask.nxv2i16(
2416     <vscale x 2 x i16> %0,
2417     <vscale x 2 x i16> %1,
2418     iXLen 9,
2419     <vscale x 2 x i1> %2,
2420     iXLen %3, iXLen 1)
2422   ret <vscale x 2 x i16> %a
2425 define <vscale x 4 x i16> @intrinsic_vsll_vi_nxv4i16_nxv4i16_i16(<vscale x 4 x i16> %0, iXLen %1) nounwind {
2426 ; CHECK-LABEL: intrinsic_vsll_vi_nxv4i16_nxv4i16_i16:
2427 ; CHECK:       # %bb.0: # %entry
2428 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
2429 ; CHECK-NEXT:    vsll.vi v8, v8, 9
2430 ; CHECK-NEXT:    ret
2431 entry:
2432   %a = call <vscale x 4 x i16> @llvm.riscv.vsll.nxv4i16(
2433     <vscale x 4 x i16> undef,
2434     <vscale x 4 x i16> %0,
2435     iXLen 9,
2436     iXLen %1)
2438   ret <vscale x 4 x i16> %a
2441 define <vscale x 4 x i16> @intrinsic_vsll_mask_vi_nxv4i16_nxv4i16_i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
2442 ; CHECK-LABEL: intrinsic_vsll_mask_vi_nxv4i16_nxv4i16_i16:
2443 ; CHECK:       # %bb.0: # %entry
2444 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu
2445 ; CHECK-NEXT:    vsll.vi v8, v9, 9, v0.t
2446 ; CHECK-NEXT:    ret
2447 entry:
2448   %a = call <vscale x 4 x i16> @llvm.riscv.vsll.mask.nxv4i16(
2449     <vscale x 4 x i16> %0,
2450     <vscale x 4 x i16> %1,
2451     iXLen 9,
2452     <vscale x 4 x i1> %2,
2453     iXLen %3, iXLen 1)
2455   ret <vscale x 4 x i16> %a
2458 define <vscale x 8 x i16> @intrinsic_vsll_vi_nxv8i16_nxv8i16_i16(<vscale x 8 x i16> %0, iXLen %1) nounwind {
2459 ; CHECK-LABEL: intrinsic_vsll_vi_nxv8i16_nxv8i16_i16:
2460 ; CHECK:       # %bb.0: # %entry
2461 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
2462 ; CHECK-NEXT:    vsll.vi v8, v8, 9
2463 ; CHECK-NEXT:    ret
2464 entry:
2465   %a = call <vscale x 8 x i16> @llvm.riscv.vsll.nxv8i16(
2466     <vscale x 8 x i16> undef,
2467     <vscale x 8 x i16> %0,
2468     iXLen 9,
2469     iXLen %1)
2471   ret <vscale x 8 x i16> %a
2474 define <vscale x 8 x i16> @intrinsic_vsll_mask_vi_nxv8i16_nxv8i16_i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
2475 ; CHECK-LABEL: intrinsic_vsll_mask_vi_nxv8i16_nxv8i16_i16:
2476 ; CHECK:       # %bb.0: # %entry
2477 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu
2478 ; CHECK-NEXT:    vsll.vi v8, v10, 9, v0.t
2479 ; CHECK-NEXT:    ret
2480 entry:
2481   %a = call <vscale x 8 x i16> @llvm.riscv.vsll.mask.nxv8i16(
2482     <vscale x 8 x i16> %0,
2483     <vscale x 8 x i16> %1,
2484     iXLen 9,
2485     <vscale x 8 x i1> %2,
2486     iXLen %3, iXLen 1)
2488   ret <vscale x 8 x i16> %a
2491 define <vscale x 16 x i16> @intrinsic_vsll_vi_nxv16i16_nxv16i16_i16(<vscale x 16 x i16> %0, iXLen %1) nounwind {
2492 ; CHECK-LABEL: intrinsic_vsll_vi_nxv16i16_nxv16i16_i16:
2493 ; CHECK:       # %bb.0: # %entry
2494 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2495 ; CHECK-NEXT:    vsll.vi v8, v8, 9
2496 ; CHECK-NEXT:    ret
2497 entry:
2498   %a = call <vscale x 16 x i16> @llvm.riscv.vsll.nxv16i16(
2499     <vscale x 16 x i16> undef,
2500     <vscale x 16 x i16> %0,
2501     iXLen 9,
2502     iXLen %1)
2504   ret <vscale x 16 x i16> %a
2507 define <vscale x 16 x i16> @intrinsic_vsll_mask_vi_nxv16i16_nxv16i16_i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
2508 ; CHECK-LABEL: intrinsic_vsll_mask_vi_nxv16i16_nxv16i16_i16:
2509 ; CHECK:       # %bb.0: # %entry
2510 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu
2511 ; CHECK-NEXT:    vsll.vi v8, v12, 9, v0.t
2512 ; CHECK-NEXT:    ret
2513 entry:
2514   %a = call <vscale x 16 x i16> @llvm.riscv.vsll.mask.nxv16i16(
2515     <vscale x 16 x i16> %0,
2516     <vscale x 16 x i16> %1,
2517     iXLen 9,
2518     <vscale x 16 x i1> %2,
2519     iXLen %3, iXLen 1)
2521   ret <vscale x 16 x i16> %a
2524 define <vscale x 32 x i16> @intrinsic_vsll_vi_nxv32i16_nxv32i16_i16(<vscale x 32 x i16> %0, iXLen %1) nounwind {
2525 ; CHECK-LABEL: intrinsic_vsll_vi_nxv32i16_nxv32i16_i16:
2526 ; CHECK:       # %bb.0: # %entry
2527 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
2528 ; CHECK-NEXT:    vsll.vi v8, v8, 9
2529 ; CHECK-NEXT:    ret
2530 entry:
2531   %a = call <vscale x 32 x i16> @llvm.riscv.vsll.nxv32i16(
2532     <vscale x 32 x i16> undef,
2533     <vscale x 32 x i16> %0,
2534     iXLen 9,
2535     iXLen %1)
2537   ret <vscale x 32 x i16> %a
2540 define <vscale x 32 x i16> @intrinsic_vsll_mask_vi_nxv32i16_nxv32i16_i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, <vscale x 32 x i1> %2, iXLen %3) nounwind {
2541 ; CHECK-LABEL: intrinsic_vsll_mask_vi_nxv32i16_nxv32i16_i16:
2542 ; CHECK:       # %bb.0: # %entry
2543 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, mu
2544 ; CHECK-NEXT:    vsll.vi v8, v16, 9, v0.t
2545 ; CHECK-NEXT:    ret
2546 entry:
2547   %a = call <vscale x 32 x i16> @llvm.riscv.vsll.mask.nxv32i16(
2548     <vscale x 32 x i16> %0,
2549     <vscale x 32 x i16> %1,
2550     iXLen 9,
2551     <vscale x 32 x i1> %2,
2552     iXLen %3, iXLen 1)
2554   ret <vscale x 32 x i16> %a
2557 define <vscale x 1 x i32> @intrinsic_vsll_vi_nxv1i32_nxv1i32_i32(<vscale x 1 x i32> %0, iXLen %1) nounwind {
2558 ; CHECK-LABEL: intrinsic_vsll_vi_nxv1i32_nxv1i32_i32:
2559 ; CHECK:       # %bb.0: # %entry
2560 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
2561 ; CHECK-NEXT:    vsll.vi v8, v8, 9
2562 ; CHECK-NEXT:    ret
2563 entry:
2564   %a = call <vscale x 1 x i32> @llvm.riscv.vsll.nxv1i32(
2565     <vscale x 1 x i32> undef,
2566     <vscale x 1 x i32> %0,
2567     iXLen 9,
2568     iXLen %1)
2570   ret <vscale x 1 x i32> %a
2573 define <vscale x 1 x i32> @intrinsic_vsll_mask_vi_nxv1i32_nxv1i32_i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
2574 ; CHECK-LABEL: intrinsic_vsll_mask_vi_nxv1i32_nxv1i32_i32:
2575 ; CHECK:       # %bb.0: # %entry
2576 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu
2577 ; CHECK-NEXT:    vsll.vi v8, v9, 9, v0.t
2578 ; CHECK-NEXT:    ret
2579 entry:
2580   %a = call <vscale x 1 x i32> @llvm.riscv.vsll.mask.nxv1i32(
2581     <vscale x 1 x i32> %0,
2582     <vscale x 1 x i32> %1,
2583     iXLen 9,
2584     <vscale x 1 x i1> %2,
2585     iXLen %3, iXLen 1)
2587   ret <vscale x 1 x i32> %a
2590 define <vscale x 2 x i32> @intrinsic_vsll_vi_nxv2i32_nxv2i32_i32(<vscale x 2 x i32> %0, iXLen %1) nounwind {
2591 ; CHECK-LABEL: intrinsic_vsll_vi_nxv2i32_nxv2i32_i32:
2592 ; CHECK:       # %bb.0: # %entry
2593 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
2594 ; CHECK-NEXT:    vsll.vi v8, v8, 9
2595 ; CHECK-NEXT:    ret
2596 entry:
2597   %a = call <vscale x 2 x i32> @llvm.riscv.vsll.nxv2i32(
2598     <vscale x 2 x i32> undef,
2599     <vscale x 2 x i32> %0,
2600     iXLen 9,
2601     iXLen %1)
2603   ret <vscale x 2 x i32> %a
2606 define <vscale x 2 x i32> @intrinsic_vsll_mask_vi_nxv2i32_nxv2i32_i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
2607 ; CHECK-LABEL: intrinsic_vsll_mask_vi_nxv2i32_nxv2i32_i32:
2608 ; CHECK:       # %bb.0: # %entry
2609 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu
2610 ; CHECK-NEXT:    vsll.vi v8, v9, 9, v0.t
2611 ; CHECK-NEXT:    ret
2612 entry:
2613   %a = call <vscale x 2 x i32> @llvm.riscv.vsll.mask.nxv2i32(
2614     <vscale x 2 x i32> %0,
2615     <vscale x 2 x i32> %1,
2616     iXLen 9,
2617     <vscale x 2 x i1> %2,
2618     iXLen %3, iXLen 1)
2620   ret <vscale x 2 x i32> %a
2623 define <vscale x 4 x i32> @intrinsic_vsll_vi_nxv4i32_nxv4i32_i32(<vscale x 4 x i32> %0, iXLen %1) nounwind {
2624 ; CHECK-LABEL: intrinsic_vsll_vi_nxv4i32_nxv4i32_i32:
2625 ; CHECK:       # %bb.0: # %entry
2626 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
2627 ; CHECK-NEXT:    vsll.vi v8, v8, 9
2628 ; CHECK-NEXT:    ret
2629 entry:
2630   %a = call <vscale x 4 x i32> @llvm.riscv.vsll.nxv4i32(
2631     <vscale x 4 x i32> undef,
2632     <vscale x 4 x i32> %0,
2633     iXLen 9,
2634     iXLen %1)
2636   ret <vscale x 4 x i32> %a
2639 define <vscale x 4 x i32> @intrinsic_vsll_mask_vi_nxv4i32_nxv4i32_i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
2640 ; CHECK-LABEL: intrinsic_vsll_mask_vi_nxv4i32_nxv4i32_i32:
2641 ; CHECK:       # %bb.0: # %entry
2642 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu
2643 ; CHECK-NEXT:    vsll.vi v8, v10, 9, v0.t
2644 ; CHECK-NEXT:    ret
2645 entry:
2646   %a = call <vscale x 4 x i32> @llvm.riscv.vsll.mask.nxv4i32(
2647     <vscale x 4 x i32> %0,
2648     <vscale x 4 x i32> %1,
2649     iXLen 9,
2650     <vscale x 4 x i1> %2,
2651     iXLen %3, iXLen 1)
2653   ret <vscale x 4 x i32> %a
2656 define <vscale x 8 x i32> @intrinsic_vsll_vi_nxv8i32_nxv8i32_i32(<vscale x 8 x i32> %0, iXLen %1) nounwind {
2657 ; CHECK-LABEL: intrinsic_vsll_vi_nxv8i32_nxv8i32_i32:
2658 ; CHECK:       # %bb.0: # %entry
2659 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2660 ; CHECK-NEXT:    vsll.vi v8, v8, 9
2661 ; CHECK-NEXT:    ret
2662 entry:
2663   %a = call <vscale x 8 x i32> @llvm.riscv.vsll.nxv8i32(
2664     <vscale x 8 x i32> undef,
2665     <vscale x 8 x i32> %0,
2666     iXLen 9,
2667     iXLen %1)
2669   ret <vscale x 8 x i32> %a
2672 define <vscale x 8 x i32> @intrinsic_vsll_mask_vi_nxv8i32_nxv8i32_i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
2673 ; CHECK-LABEL: intrinsic_vsll_mask_vi_nxv8i32_nxv8i32_i32:
2674 ; CHECK:       # %bb.0: # %entry
2675 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu
2676 ; CHECK-NEXT:    vsll.vi v8, v12, 9, v0.t
2677 ; CHECK-NEXT:    ret
2678 entry:
2679   %a = call <vscale x 8 x i32> @llvm.riscv.vsll.mask.nxv8i32(
2680     <vscale x 8 x i32> %0,
2681     <vscale x 8 x i32> %1,
2682     iXLen 9,
2683     <vscale x 8 x i1> %2,
2684     iXLen %3, iXLen 1)
2686   ret <vscale x 8 x i32> %a
2689 define <vscale x 16 x i32> @intrinsic_vsll_vi_nxv16i32_nxv16i32_i32(<vscale x 16 x i32> %0, iXLen %1) nounwind {
2690 ; CHECK-LABEL: intrinsic_vsll_vi_nxv16i32_nxv16i32_i32:
2691 ; CHECK:       # %bb.0: # %entry
2692 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
2693 ; CHECK-NEXT:    vsll.vi v8, v8, 9
2694 ; CHECK-NEXT:    ret
2695 entry:
2696   %a = call <vscale x 16 x i32> @llvm.riscv.vsll.nxv16i32(
2697     <vscale x 16 x i32> undef,
2698     <vscale x 16 x i32> %0,
2699     iXLen 9,
2700     iXLen %1)
2702   ret <vscale x 16 x i32> %a
2705 define <vscale x 16 x i32> @intrinsic_vsll_mask_vi_nxv16i32_nxv16i32_i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
2706 ; CHECK-LABEL: intrinsic_vsll_mask_vi_nxv16i32_nxv16i32_i32:
2707 ; CHECK:       # %bb.0: # %entry
2708 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, mu
2709 ; CHECK-NEXT:    vsll.vi v8, v16, 9, v0.t
2710 ; CHECK-NEXT:    ret
2711 entry:
2712   %a = call <vscale x 16 x i32> @llvm.riscv.vsll.mask.nxv16i32(
2713     <vscale x 16 x i32> %0,
2714     <vscale x 16 x i32> %1,
2715     iXLen 9,
2716     <vscale x 16 x i1> %2,
2717     iXLen %3, iXLen 1)
2719   ret <vscale x 16 x i32> %a
2722 define <vscale x 1 x i64> @intrinsic_vsll_vi_nxv1i64_nxv1i64_i64(<vscale x 1 x i64> %0, iXLen %1) nounwind {
2723 ; CHECK-LABEL: intrinsic_vsll_vi_nxv1i64_nxv1i64_i64:
2724 ; CHECK:       # %bb.0: # %entry
2725 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2726 ; CHECK-NEXT:    vsll.vi v8, v8, 9
2727 ; CHECK-NEXT:    ret
2728 entry:
2729   %a = call <vscale x 1 x i64> @llvm.riscv.vsll.nxv1i64(
2730     <vscale x 1 x i64> undef,
2731     <vscale x 1 x i64> %0,
2732     iXLen 9,
2733     iXLen %1)
2735   ret <vscale x 1 x i64> %a
2738 define <vscale x 1 x i64> @intrinsic_vsll_mask_vi_nxv1i64_nxv1i64_i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
2739 ; CHECK-LABEL: intrinsic_vsll_mask_vi_nxv1i64_nxv1i64_i64:
2740 ; CHECK:       # %bb.0: # %entry
2741 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu
2742 ; CHECK-NEXT:    vsll.vi v8, v9, 9, v0.t
2743 ; CHECK-NEXT:    ret
2744 entry:
2745   %a = call <vscale x 1 x i64> @llvm.riscv.vsll.mask.nxv1i64(
2746     <vscale x 1 x i64> %0,
2747     <vscale x 1 x i64> %1,
2748     iXLen 9,
2749     <vscale x 1 x i1> %2,
2750     iXLen %3, iXLen 1)
2752   ret <vscale x 1 x i64> %a
2755 define <vscale x 2 x i64> @intrinsic_vsll_vi_nxv2i64_nxv2i64_i64(<vscale x 2 x i64> %0, iXLen %1) nounwind {
2756 ; CHECK-LABEL: intrinsic_vsll_vi_nxv2i64_nxv2i64_i64:
2757 ; CHECK:       # %bb.0: # %entry
2758 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
2759 ; CHECK-NEXT:    vsll.vi v8, v8, 9
2760 ; CHECK-NEXT:    ret
2761 entry:
2762   %a = call <vscale x 2 x i64> @llvm.riscv.vsll.nxv2i64(
2763     <vscale x 2 x i64> undef,
2764     <vscale x 2 x i64> %0,
2765     iXLen 9,
2766     iXLen %1)
2768   ret <vscale x 2 x i64> %a
2771 define <vscale x 2 x i64> @intrinsic_vsll_mask_vi_nxv2i64_nxv2i64_i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
2772 ; CHECK-LABEL: intrinsic_vsll_mask_vi_nxv2i64_nxv2i64_i64:
2773 ; CHECK:       # %bb.0: # %entry
2774 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu
2775 ; CHECK-NEXT:    vsll.vi v8, v10, 9, v0.t
2776 ; CHECK-NEXT:    ret
2777 entry:
2778   %a = call <vscale x 2 x i64> @llvm.riscv.vsll.mask.nxv2i64(
2779     <vscale x 2 x i64> %0,
2780     <vscale x 2 x i64> %1,
2781     iXLen 9,
2782     <vscale x 2 x i1> %2,
2783     iXLen %3, iXLen 1)
2785   ret <vscale x 2 x i64> %a
2788 define <vscale x 4 x i64> @intrinsic_vsll_vi_nxv4i64_nxv4i64_i64(<vscale x 4 x i64> %0, iXLen %1) nounwind {
2789 ; CHECK-LABEL: intrinsic_vsll_vi_nxv4i64_nxv4i64_i64:
2790 ; CHECK:       # %bb.0: # %entry
2791 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
2792 ; CHECK-NEXT:    vsll.vi v8, v8, 9
2793 ; CHECK-NEXT:    ret
2794 entry:
2795   %a = call <vscale x 4 x i64> @llvm.riscv.vsll.nxv4i64(
2796     <vscale x 4 x i64> undef,
2797     <vscale x 4 x i64> %0,
2798     iXLen 9,
2799     iXLen %1)
2801   ret <vscale x 4 x i64> %a
2804 define <vscale x 4 x i64> @intrinsic_vsll_mask_vi_nxv4i64_nxv4i64_i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
2805 ; CHECK-LABEL: intrinsic_vsll_mask_vi_nxv4i64_nxv4i64_i64:
2806 ; CHECK:       # %bb.0: # %entry
2807 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu
2808 ; CHECK-NEXT:    vsll.vi v8, v12, 9, v0.t
2809 ; CHECK-NEXT:    ret
2810 entry:
2811   %a = call <vscale x 4 x i64> @llvm.riscv.vsll.mask.nxv4i64(
2812     <vscale x 4 x i64> %0,
2813     <vscale x 4 x i64> %1,
2814     iXLen 9,
2815     <vscale x 4 x i1> %2,
2816     iXLen %3, iXLen 1)
2818   ret <vscale x 4 x i64> %a
2821 define <vscale x 8 x i64> @intrinsic_vsll_vi_nxv8i64_nxv8i64_i64(<vscale x 8 x i64> %0, iXLen %1) nounwind {
2822 ; CHECK-LABEL: intrinsic_vsll_vi_nxv8i64_nxv8i64_i64:
2823 ; CHECK:       # %bb.0: # %entry
2824 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
2825 ; CHECK-NEXT:    vsll.vi v8, v8, 9
2826 ; CHECK-NEXT:    ret
2827 entry:
2828   %a = call <vscale x 8 x i64> @llvm.riscv.vsll.nxv8i64(
2829     <vscale x 8 x i64> undef,
2830     <vscale x 8 x i64> %0,
2831     iXLen 9,
2832     iXLen %1)
2834   ret <vscale x 8 x i64> %a
2837 define <vscale x 8 x i64> @intrinsic_vsll_mask_vi_nxv8i64_nxv8i64_i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
2838 ; CHECK-LABEL: intrinsic_vsll_mask_vi_nxv8i64_nxv8i64_i64:
2839 ; CHECK:       # %bb.0: # %entry
2840 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, mu
2841 ; CHECK-NEXT:    vsll.vi v8, v16, 9, v0.t
2842 ; CHECK-NEXT:    ret
2843 entry:
2844   %a = call <vscale x 8 x i64> @llvm.riscv.vsll.mask.nxv8i64(
2845     <vscale x 8 x i64> %0,
2846     <vscale x 8 x i64> %1,
2847     iXLen 9,
2848     <vscale x 8 x i1> %2,
2849     iXLen %3, iXLen 1)
2851   ret <vscale x 8 x i64> %a