Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / fixed-vectors-vshl-vp.ll
blob16a0fddfa98277cc764214cc5ec369efdfae3f66
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s \
3 ; RUN:   | FileCheck %s --check-prefixes=CHECK,RV32
4 ; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s \
5 ; RUN:   | FileCheck %s --check-prefixes=CHECK,RV64
7 declare <8 x i7> @llvm.vp.shl.v8i7(<8 x i7>, <8 x i7>, <8 x i1>, i32)
9 define <8 x i7> @vsll_vv_v8i7(<8 x i7> %va, <8 x i7> %b, <8 x i1> %m, i32 zeroext %evl) {
10 ; CHECK-LABEL: vsll_vv_v8i7:
11 ; CHECK:       # %bb.0:
12 ; CHECK-NEXT:    li a1, 127
13 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
14 ; CHECK-NEXT:    vand.vx v9, v9, a1, v0.t
15 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
16 ; CHECK-NEXT:    ret
17   %v = call <8 x i7> @llvm.vp.shl.v8i7(<8 x i7> %va, <8 x i7> %b, <8 x i1> %m, i32 %evl)
18   ret <8 x i7> %v
21 declare <2 x i8> @llvm.vp.shl.v2i8(<2 x i8>, <2 x i8>, <2 x i1>, i32)
23 define <2 x i8> @vsll_vv_v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> %m, i32 zeroext %evl) {
24 ; CHECK-LABEL: vsll_vv_v2i8:
25 ; CHECK:       # %bb.0:
26 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
27 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
28 ; CHECK-NEXT:    ret
29   %v = call <2 x i8> @llvm.vp.shl.v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> %m, i32 %evl)
30   ret <2 x i8> %v
33 define <2 x i8> @vsll_vv_v2i8_unmasked(<2 x i8> %va, <2 x i8> %b, i32 zeroext %evl) {
34 ; CHECK-LABEL: vsll_vv_v2i8_unmasked:
35 ; CHECK:       # %bb.0:
36 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
37 ; CHECK-NEXT:    vsll.vv v8, v8, v9
38 ; CHECK-NEXT:    ret
39   %v = call <2 x i8> @llvm.vp.shl.v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> splat (i1 true), i32 %evl)
40   ret <2 x i8> %v
43 define <2 x i8> @vsll_vx_v2i8(<2 x i8> %va, i8 %b, <2 x i1> %m, i32 zeroext %evl) {
44 ; CHECK-LABEL: vsll_vx_v2i8:
45 ; CHECK:       # %bb.0:
46 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
47 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
48 ; CHECK-NEXT:    ret
49   %elt.head = insertelement <2 x i8> poison, i8 %b, i32 0
50   %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
51   %v = call <2 x i8> @llvm.vp.shl.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> %m, i32 %evl)
52   ret <2 x i8> %v
55 define <2 x i8> @vsll_vx_v2i8_unmasked(<2 x i8> %va, i8 %b, i32 zeroext %evl) {
56 ; CHECK-LABEL: vsll_vx_v2i8_unmasked:
57 ; CHECK:       # %bb.0:
58 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
59 ; CHECK-NEXT:    vsll.vx v8, v8, a0
60 ; CHECK-NEXT:    ret
61   %elt.head = insertelement <2 x i8> poison, i8 %b, i32 0
62   %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
63   %v = call <2 x i8> @llvm.vp.shl.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> splat (i1 true), i32 %evl)
64   ret <2 x i8> %v
67 define <2 x i8> @vsll_vi_v2i8(<2 x i8> %va, <2 x i1> %m, i32 zeroext %evl) {
68 ; CHECK-LABEL: vsll_vi_v2i8:
69 ; CHECK:       # %bb.0:
70 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
71 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
72 ; CHECK-NEXT:    ret
73   %v = call <2 x i8> @llvm.vp.shl.v2i8(<2 x i8> %va, <2 x i8> splat (i8 3), <2 x i1> %m, i32 %evl)
74   ret <2 x i8> %v
77 define <2 x i8> @vsll_vi_v2i8_unmasked(<2 x i8> %va, i32 zeroext %evl) {
78 ; CHECK-LABEL: vsll_vi_v2i8_unmasked:
79 ; CHECK:       # %bb.0:
80 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
81 ; CHECK-NEXT:    vsll.vi v8, v8, 3
82 ; CHECK-NEXT:    ret
83   %v = call <2 x i8> @llvm.vp.shl.v2i8(<2 x i8> %va, <2 x i8> splat (i8 3), <2 x i1> splat (i1 true), i32 %evl)
84   ret <2 x i8> %v
87 declare <3 x i8> @llvm.vp.shl.v3i8(<3 x i8>, <3 x i8>, <3 x i1>, i32)
89 define <3 x i8> @vsll_vv_v3i8(<3 x i8> %va, <3 x i8> %b, <3 x i1> %m, i32 zeroext %evl) {
90 ; CHECK-LABEL: vsll_vv_v3i8:
91 ; CHECK:       # %bb.0:
92 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
93 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
94 ; CHECK-NEXT:    ret
95   %v = call <3 x i8> @llvm.vp.shl.v3i8(<3 x i8> %va, <3 x i8> %b, <3 x i1> %m, i32 %evl)
96   ret <3 x i8> %v
99 declare <4 x i8> @llvm.vp.shl.v4i8(<4 x i8>, <4 x i8>, <4 x i1>, i32)
101 define <4 x i8> @vsll_vv_v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 zeroext %evl) {
102 ; CHECK-LABEL: vsll_vv_v4i8:
103 ; CHECK:       # %bb.0:
104 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
105 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
106 ; CHECK-NEXT:    ret
107   %v = call <4 x i8> @llvm.vp.shl.v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 %evl)
108   ret <4 x i8> %v
111 define <4 x i8> @vsll_vv_v4i8_unmasked(<4 x i8> %va, <4 x i8> %b, i32 zeroext %evl) {
112 ; CHECK-LABEL: vsll_vv_v4i8_unmasked:
113 ; CHECK:       # %bb.0:
114 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
115 ; CHECK-NEXT:    vsll.vv v8, v8, v9
116 ; CHECK-NEXT:    ret
117   %v = call <4 x i8> @llvm.vp.shl.v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> splat (i1 true), i32 %evl)
118   ret <4 x i8> %v
121 define <4 x i8> @vsll_vx_v4i8(<4 x i8> %va, i8 %b, <4 x i1> %m, i32 zeroext %evl) {
122 ; CHECK-LABEL: vsll_vx_v4i8:
123 ; CHECK:       # %bb.0:
124 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
125 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
126 ; CHECK-NEXT:    ret
127   %elt.head = insertelement <4 x i8> poison, i8 %b, i32 0
128   %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
129   %v = call <4 x i8> @llvm.vp.shl.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> %m, i32 %evl)
130   ret <4 x i8> %v
133 define <4 x i8> @vsll_vx_v4i8_unmasked(<4 x i8> %va, i8 %b, i32 zeroext %evl) {
134 ; CHECK-LABEL: vsll_vx_v4i8_unmasked:
135 ; CHECK:       # %bb.0:
136 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
137 ; CHECK-NEXT:    vsll.vx v8, v8, a0
138 ; CHECK-NEXT:    ret
139   %elt.head = insertelement <4 x i8> poison, i8 %b, i32 0
140   %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
141   %v = call <4 x i8> @llvm.vp.shl.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> splat (i1 true), i32 %evl)
142   ret <4 x i8> %v
145 define <4 x i8> @vsll_vi_v4i8(<4 x i8> %va, <4 x i1> %m, i32 zeroext %evl) {
146 ; CHECK-LABEL: vsll_vi_v4i8:
147 ; CHECK:       # %bb.0:
148 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
149 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
150 ; CHECK-NEXT:    ret
151   %v = call <4 x i8> @llvm.vp.shl.v4i8(<4 x i8> %va, <4 x i8> splat (i8 3), <4 x i1> %m, i32 %evl)
152   ret <4 x i8> %v
155 define <4 x i8> @vsll_vi_v4i8_unmasked(<4 x i8> %va, i32 zeroext %evl) {
156 ; CHECK-LABEL: vsll_vi_v4i8_unmasked:
157 ; CHECK:       # %bb.0:
158 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
159 ; CHECK-NEXT:    vsll.vi v8, v8, 3
160 ; CHECK-NEXT:    ret
161   %v = call <4 x i8> @llvm.vp.shl.v4i8(<4 x i8> %va, <4 x i8> splat (i8 3), <4 x i1> splat (i1 true), i32 %evl)
162   ret <4 x i8> %v
165 declare <8 x i8> @llvm.vp.shl.v8i8(<8 x i8>, <8 x i8>, <8 x i1>, i32)
167 define <8 x i8> @vsll_vv_v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 zeroext %evl) {
168 ; CHECK-LABEL: vsll_vv_v8i8:
169 ; CHECK:       # %bb.0:
170 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
171 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
172 ; CHECK-NEXT:    ret
173   %v = call <8 x i8> @llvm.vp.shl.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 %evl)
174   ret <8 x i8> %v
177 define <8 x i8> @vsll_vv_v8i8_unmasked(<8 x i8> %va, <8 x i8> %b, i32 zeroext %evl) {
178 ; CHECK-LABEL: vsll_vv_v8i8_unmasked:
179 ; CHECK:       # %bb.0:
180 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
181 ; CHECK-NEXT:    vsll.vv v8, v8, v9
182 ; CHECK-NEXT:    ret
183   %v = call <8 x i8> @llvm.vp.shl.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> splat (i1 true), i32 %evl)
184   ret <8 x i8> %v
187 define <8 x i8> @vsll_vx_v8i8(<8 x i8> %va, i8 %b, <8 x i1> %m, i32 zeroext %evl) {
188 ; CHECK-LABEL: vsll_vx_v8i8:
189 ; CHECK:       # %bb.0:
190 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
191 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
192 ; CHECK-NEXT:    ret
193   %elt.head = insertelement <8 x i8> poison, i8 %b, i32 0
194   %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
195   %v = call <8 x i8> @llvm.vp.shl.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> %m, i32 %evl)
196   ret <8 x i8> %v
199 define <8 x i8> @vsll_vx_v8i8_unmasked(<8 x i8> %va, i8 %b, i32 zeroext %evl) {
200 ; CHECK-LABEL: vsll_vx_v8i8_unmasked:
201 ; CHECK:       # %bb.0:
202 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
203 ; CHECK-NEXT:    vsll.vx v8, v8, a0
204 ; CHECK-NEXT:    ret
205   %elt.head = insertelement <8 x i8> poison, i8 %b, i32 0
206   %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
207   %v = call <8 x i8> @llvm.vp.shl.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> splat (i1 true), i32 %evl)
208   ret <8 x i8> %v
211 define <8 x i8> @vsll_vi_v8i8(<8 x i8> %va, <8 x i1> %m, i32 zeroext %evl) {
212 ; CHECK-LABEL: vsll_vi_v8i8:
213 ; CHECK:       # %bb.0:
214 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
215 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
216 ; CHECK-NEXT:    ret
217   %v = call <8 x i8> @llvm.vp.shl.v8i8(<8 x i8> %va, <8 x i8> splat (i8 3), <8 x i1> %m, i32 %evl)
218   ret <8 x i8> %v
221 define <8 x i8> @vsll_vi_v8i8_unmasked(<8 x i8> %va, i32 zeroext %evl) {
222 ; CHECK-LABEL: vsll_vi_v8i8_unmasked:
223 ; CHECK:       # %bb.0:
224 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
225 ; CHECK-NEXT:    vsll.vi v8, v8, 3
226 ; CHECK-NEXT:    ret
227   %v = call <8 x i8> @llvm.vp.shl.v8i8(<8 x i8> %va, <8 x i8> splat (i8 3), <8 x i1> splat (i1 true), i32 %evl)
228   ret <8 x i8> %v
231 declare <16 x i8> @llvm.vp.shl.v16i8(<16 x i8>, <16 x i8>, <16 x i1>, i32)
233 define <16 x i8> @vsll_vv_v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 zeroext %evl) {
234 ; CHECK-LABEL: vsll_vv_v16i8:
235 ; CHECK:       # %bb.0:
236 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
237 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
238 ; CHECK-NEXT:    ret
239   %v = call <16 x i8> @llvm.vp.shl.v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 %evl)
240   ret <16 x i8> %v
243 define <16 x i8> @vsll_vv_v16i8_unmasked(<16 x i8> %va, <16 x i8> %b, i32 zeroext %evl) {
244 ; CHECK-LABEL: vsll_vv_v16i8_unmasked:
245 ; CHECK:       # %bb.0:
246 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
247 ; CHECK-NEXT:    vsll.vv v8, v8, v9
248 ; CHECK-NEXT:    ret
249   %v = call <16 x i8> @llvm.vp.shl.v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> splat (i1 true), i32 %evl)
250   ret <16 x i8> %v
253 define <16 x i8> @vsll_vx_v16i8(<16 x i8> %va, i8 %b, <16 x i1> %m, i32 zeroext %evl) {
254 ; CHECK-LABEL: vsll_vx_v16i8:
255 ; CHECK:       # %bb.0:
256 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
257 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
258 ; CHECK-NEXT:    ret
259   %elt.head = insertelement <16 x i8> poison, i8 %b, i32 0
260   %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
261   %v = call <16 x i8> @llvm.vp.shl.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> %m, i32 %evl)
262   ret <16 x i8> %v
265 define <16 x i8> @vsll_vx_v16i8_unmasked(<16 x i8> %va, i8 %b, i32 zeroext %evl) {
266 ; CHECK-LABEL: vsll_vx_v16i8_unmasked:
267 ; CHECK:       # %bb.0:
268 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
269 ; CHECK-NEXT:    vsll.vx v8, v8, a0
270 ; CHECK-NEXT:    ret
271   %elt.head = insertelement <16 x i8> poison, i8 %b, i32 0
272   %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
273   %v = call <16 x i8> @llvm.vp.shl.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> splat (i1 true), i32 %evl)
274   ret <16 x i8> %v
277 define <16 x i8> @vsll_vi_v16i8(<16 x i8> %va, <16 x i1> %m, i32 zeroext %evl) {
278 ; CHECK-LABEL: vsll_vi_v16i8:
279 ; CHECK:       # %bb.0:
280 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
281 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
282 ; CHECK-NEXT:    ret
283   %v = call <16 x i8> @llvm.vp.shl.v16i8(<16 x i8> %va, <16 x i8> splat (i8 3), <16 x i1> %m, i32 %evl)
284   ret <16 x i8> %v
287 define <16 x i8> @vsll_vi_v16i8_unmasked(<16 x i8> %va, i32 zeroext %evl) {
288 ; CHECK-LABEL: vsll_vi_v16i8_unmasked:
289 ; CHECK:       # %bb.0:
290 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
291 ; CHECK-NEXT:    vsll.vi v8, v8, 3
292 ; CHECK-NEXT:    ret
293   %v = call <16 x i8> @llvm.vp.shl.v16i8(<16 x i8> %va, <16 x i8> splat (i8 3), <16 x i1> splat (i1 true), i32 %evl)
294   ret <16 x i8> %v
297 declare <2 x i16> @llvm.vp.shl.v2i16(<2 x i16>, <2 x i16>, <2 x i1>, i32)
299 define <2 x i16> @vsll_vv_v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 zeroext %evl) {
300 ; CHECK-LABEL: vsll_vv_v2i16:
301 ; CHECK:       # %bb.0:
302 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
303 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
304 ; CHECK-NEXT:    ret
305   %v = call <2 x i16> @llvm.vp.shl.v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 %evl)
306   ret <2 x i16> %v
309 define <2 x i16> @vsll_vv_v2i16_unmasked(<2 x i16> %va, <2 x i16> %b, i32 zeroext %evl) {
310 ; CHECK-LABEL: vsll_vv_v2i16_unmasked:
311 ; CHECK:       # %bb.0:
312 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
313 ; CHECK-NEXT:    vsll.vv v8, v8, v9
314 ; CHECK-NEXT:    ret
315   %v = call <2 x i16> @llvm.vp.shl.v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> splat (i1 true), i32 %evl)
316   ret <2 x i16> %v
319 define <2 x i16> @vsll_vx_v2i16(<2 x i16> %va, i16 %b, <2 x i1> %m, i32 zeroext %evl) {
320 ; CHECK-LABEL: vsll_vx_v2i16:
321 ; CHECK:       # %bb.0:
322 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
323 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
324 ; CHECK-NEXT:    ret
325   %elt.head = insertelement <2 x i16> poison, i16 %b, i32 0
326   %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
327   %v = call <2 x i16> @llvm.vp.shl.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> %m, i32 %evl)
328   ret <2 x i16> %v
331 define <2 x i16> @vsll_vx_v2i16_unmasked(<2 x i16> %va, i16 %b, i32 zeroext %evl) {
332 ; CHECK-LABEL: vsll_vx_v2i16_unmasked:
333 ; CHECK:       # %bb.0:
334 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
335 ; CHECK-NEXT:    vsll.vx v8, v8, a0
336 ; CHECK-NEXT:    ret
337   %elt.head = insertelement <2 x i16> poison, i16 %b, i32 0
338   %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
339   %v = call <2 x i16> @llvm.vp.shl.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> splat (i1 true), i32 %evl)
340   ret <2 x i16> %v
343 define <2 x i16> @vsll_vi_v2i16(<2 x i16> %va, <2 x i1> %m, i32 zeroext %evl) {
344 ; CHECK-LABEL: vsll_vi_v2i16:
345 ; CHECK:       # %bb.0:
346 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
347 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
348 ; CHECK-NEXT:    ret
349   %v = call <2 x i16> @llvm.vp.shl.v2i16(<2 x i16> %va, <2 x i16> splat (i16 3), <2 x i1> %m, i32 %evl)
350   ret <2 x i16> %v
353 define <2 x i16> @vsll_vi_v2i16_unmasked(<2 x i16> %va, i32 zeroext %evl) {
354 ; CHECK-LABEL: vsll_vi_v2i16_unmasked:
355 ; CHECK:       # %bb.0:
356 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
357 ; CHECK-NEXT:    vsll.vi v8, v8, 3
358 ; CHECK-NEXT:    ret
359   %v = call <2 x i16> @llvm.vp.shl.v2i16(<2 x i16> %va, <2 x i16> splat (i16 3), <2 x i1> splat (i1 true), i32 %evl)
360   ret <2 x i16> %v
363 declare <4 x i16> @llvm.vp.shl.v4i16(<4 x i16>, <4 x i16>, <4 x i1>, i32)
365 define <4 x i16> @vsll_vv_v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 zeroext %evl) {
366 ; CHECK-LABEL: vsll_vv_v4i16:
367 ; CHECK:       # %bb.0:
368 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
369 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
370 ; CHECK-NEXT:    ret
371   %v = call <4 x i16> @llvm.vp.shl.v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 %evl)
372   ret <4 x i16> %v
375 define <4 x i16> @vsll_vv_v4i16_unmasked(<4 x i16> %va, <4 x i16> %b, i32 zeroext %evl) {
376 ; CHECK-LABEL: vsll_vv_v4i16_unmasked:
377 ; CHECK:       # %bb.0:
378 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
379 ; CHECK-NEXT:    vsll.vv v8, v8, v9
380 ; CHECK-NEXT:    ret
381   %v = call <4 x i16> @llvm.vp.shl.v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> splat (i1 true), i32 %evl)
382   ret <4 x i16> %v
385 define <4 x i16> @vsll_vx_v4i16(<4 x i16> %va, i16 %b, <4 x i1> %m, i32 zeroext %evl) {
386 ; CHECK-LABEL: vsll_vx_v4i16:
387 ; CHECK:       # %bb.0:
388 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
389 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
390 ; CHECK-NEXT:    ret
391   %elt.head = insertelement <4 x i16> poison, i16 %b, i32 0
392   %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
393   %v = call <4 x i16> @llvm.vp.shl.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> %m, i32 %evl)
394   ret <4 x i16> %v
397 define <4 x i16> @vsll_vx_v4i16_unmasked(<4 x i16> %va, i16 %b, i32 zeroext %evl) {
398 ; CHECK-LABEL: vsll_vx_v4i16_unmasked:
399 ; CHECK:       # %bb.0:
400 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
401 ; CHECK-NEXT:    vsll.vx v8, v8, a0
402 ; CHECK-NEXT:    ret
403   %elt.head = insertelement <4 x i16> poison, i16 %b, i32 0
404   %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
405   %v = call <4 x i16> @llvm.vp.shl.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> splat (i1 true), i32 %evl)
406   ret <4 x i16> %v
409 define <4 x i16> @vsll_vi_v4i16(<4 x i16> %va, <4 x i1> %m, i32 zeroext %evl) {
410 ; CHECK-LABEL: vsll_vi_v4i16:
411 ; CHECK:       # %bb.0:
412 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
413 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
414 ; CHECK-NEXT:    ret
415   %v = call <4 x i16> @llvm.vp.shl.v4i16(<4 x i16> %va, <4 x i16> splat (i16 3), <4 x i1> %m, i32 %evl)
416   ret <4 x i16> %v
419 define <4 x i16> @vsll_vi_v4i16_unmasked(<4 x i16> %va, i32 zeroext %evl) {
420 ; CHECK-LABEL: vsll_vi_v4i16_unmasked:
421 ; CHECK:       # %bb.0:
422 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
423 ; CHECK-NEXT:    vsll.vi v8, v8, 3
424 ; CHECK-NEXT:    ret
425   %v = call <4 x i16> @llvm.vp.shl.v4i16(<4 x i16> %va, <4 x i16> splat (i16 3), <4 x i1> splat (i1 true), i32 %evl)
426   ret <4 x i16> %v
429 declare <8 x i16> @llvm.vp.shl.v8i16(<8 x i16>, <8 x i16>, <8 x i1>, i32)
431 define <8 x i16> @vsll_vv_v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 zeroext %evl) {
432 ; CHECK-LABEL: vsll_vv_v8i16:
433 ; CHECK:       # %bb.0:
434 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
435 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
436 ; CHECK-NEXT:    ret
437   %v = call <8 x i16> @llvm.vp.shl.v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 %evl)
438   ret <8 x i16> %v
441 define <8 x i16> @vsll_vv_v8i16_unmasked(<8 x i16> %va, <8 x i16> %b, i32 zeroext %evl) {
442 ; CHECK-LABEL: vsll_vv_v8i16_unmasked:
443 ; CHECK:       # %bb.0:
444 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
445 ; CHECK-NEXT:    vsll.vv v8, v8, v9
446 ; CHECK-NEXT:    ret
447   %v = call <8 x i16> @llvm.vp.shl.v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> splat (i1 true), i32 %evl)
448   ret <8 x i16> %v
451 define <8 x i16> @vsll_vx_v8i16(<8 x i16> %va, i16 %b, <8 x i1> %m, i32 zeroext %evl) {
452 ; CHECK-LABEL: vsll_vx_v8i16:
453 ; CHECK:       # %bb.0:
454 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
455 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
456 ; CHECK-NEXT:    ret
457   %elt.head = insertelement <8 x i16> poison, i16 %b, i32 0
458   %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
459   %v = call <8 x i16> @llvm.vp.shl.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> %m, i32 %evl)
460   ret <8 x i16> %v
463 define <8 x i16> @vsll_vx_v8i16_unmasked(<8 x i16> %va, i16 %b, i32 zeroext %evl) {
464 ; CHECK-LABEL: vsll_vx_v8i16_unmasked:
465 ; CHECK:       # %bb.0:
466 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
467 ; CHECK-NEXT:    vsll.vx v8, v8, a0
468 ; CHECK-NEXT:    ret
469   %elt.head = insertelement <8 x i16> poison, i16 %b, i32 0
470   %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
471   %v = call <8 x i16> @llvm.vp.shl.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> splat (i1 true), i32 %evl)
472   ret <8 x i16> %v
475 define <8 x i16> @vsll_vi_v8i16(<8 x i16> %va, <8 x i1> %m, i32 zeroext %evl) {
476 ; CHECK-LABEL: vsll_vi_v8i16:
477 ; CHECK:       # %bb.0:
478 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
479 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
480 ; CHECK-NEXT:    ret
481   %v = call <8 x i16> @llvm.vp.shl.v8i16(<8 x i16> %va, <8 x i16> splat (i16 3), <8 x i1> %m, i32 %evl)
482   ret <8 x i16> %v
485 define <8 x i16> @vsll_vi_v8i16_unmasked(<8 x i16> %va, i32 zeroext %evl) {
486 ; CHECK-LABEL: vsll_vi_v8i16_unmasked:
487 ; CHECK:       # %bb.0:
488 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
489 ; CHECK-NEXT:    vsll.vi v8, v8, 3
490 ; CHECK-NEXT:    ret
491   %v = call <8 x i16> @llvm.vp.shl.v8i16(<8 x i16> %va, <8 x i16> splat (i16 3), <8 x i1> splat (i1 true), i32 %evl)
492   ret <8 x i16> %v
495 declare <16 x i16> @llvm.vp.shl.v16i16(<16 x i16>, <16 x i16>, <16 x i1>, i32)
497 define <16 x i16> @vsll_vv_v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 zeroext %evl) {
498 ; CHECK-LABEL: vsll_vv_v16i16:
499 ; CHECK:       # %bb.0:
500 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
501 ; CHECK-NEXT:    vsll.vv v8, v8, v10, v0.t
502 ; CHECK-NEXT:    ret
503   %v = call <16 x i16> @llvm.vp.shl.v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 %evl)
504   ret <16 x i16> %v
507 define <16 x i16> @vsll_vv_v16i16_unmasked(<16 x i16> %va, <16 x i16> %b, i32 zeroext %evl) {
508 ; CHECK-LABEL: vsll_vv_v16i16_unmasked:
509 ; CHECK:       # %bb.0:
510 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
511 ; CHECK-NEXT:    vsll.vv v8, v8, v10
512 ; CHECK-NEXT:    ret
513   %v = call <16 x i16> @llvm.vp.shl.v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> splat (i1 true), i32 %evl)
514   ret <16 x i16> %v
517 define <16 x i16> @vsll_vx_v16i16(<16 x i16> %va, i16 %b, <16 x i1> %m, i32 zeroext %evl) {
518 ; CHECK-LABEL: vsll_vx_v16i16:
519 ; CHECK:       # %bb.0:
520 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
521 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
522 ; CHECK-NEXT:    ret
523   %elt.head = insertelement <16 x i16> poison, i16 %b, i32 0
524   %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
525   %v = call <16 x i16> @llvm.vp.shl.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> %m, i32 %evl)
526   ret <16 x i16> %v
529 define <16 x i16> @vsll_vx_v16i16_unmasked(<16 x i16> %va, i16 %b, i32 zeroext %evl) {
530 ; CHECK-LABEL: vsll_vx_v16i16_unmasked:
531 ; CHECK:       # %bb.0:
532 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
533 ; CHECK-NEXT:    vsll.vx v8, v8, a0
534 ; CHECK-NEXT:    ret
535   %elt.head = insertelement <16 x i16> poison, i16 %b, i32 0
536   %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
537   %v = call <16 x i16> @llvm.vp.shl.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> splat (i1 true), i32 %evl)
538   ret <16 x i16> %v
541 define <16 x i16> @vsll_vi_v16i16(<16 x i16> %va, <16 x i1> %m, i32 zeroext %evl) {
542 ; CHECK-LABEL: vsll_vi_v16i16:
543 ; CHECK:       # %bb.0:
544 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
545 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
546 ; CHECK-NEXT:    ret
547   %v = call <16 x i16> @llvm.vp.shl.v16i16(<16 x i16> %va, <16 x i16> splat (i16 3), <16 x i1> %m, i32 %evl)
548   ret <16 x i16> %v
551 define <16 x i16> @vsll_vi_v16i16_unmasked(<16 x i16> %va, i32 zeroext %evl) {
552 ; CHECK-LABEL: vsll_vi_v16i16_unmasked:
553 ; CHECK:       # %bb.0:
554 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
555 ; CHECK-NEXT:    vsll.vi v8, v8, 3
556 ; CHECK-NEXT:    ret
557   %v = call <16 x i16> @llvm.vp.shl.v16i16(<16 x i16> %va, <16 x i16> splat (i16 3), <16 x i1> splat (i1 true), i32 %evl)
558   ret <16 x i16> %v
561 declare <2 x i32> @llvm.vp.shl.v2i32(<2 x i32>, <2 x i32>, <2 x i1>, i32)
563 define <2 x i32> @vsll_vv_v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 zeroext %evl) {
564 ; CHECK-LABEL: vsll_vv_v2i32:
565 ; CHECK:       # %bb.0:
566 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
567 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
568 ; CHECK-NEXT:    ret
569   %v = call <2 x i32> @llvm.vp.shl.v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 %evl)
570   ret <2 x i32> %v
573 define <2 x i32> @vsll_vv_v2i32_unmasked(<2 x i32> %va, <2 x i32> %b, i32 zeroext %evl) {
574 ; CHECK-LABEL: vsll_vv_v2i32_unmasked:
575 ; CHECK:       # %bb.0:
576 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
577 ; CHECK-NEXT:    vsll.vv v8, v8, v9
578 ; CHECK-NEXT:    ret
579   %v = call <2 x i32> @llvm.vp.shl.v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> splat (i1 true), i32 %evl)
580   ret <2 x i32> %v
583 define <2 x i32> @vsll_vx_v2i32(<2 x i32> %va, i32 %b, <2 x i1> %m, i32 zeroext %evl) {
584 ; CHECK-LABEL: vsll_vx_v2i32:
585 ; CHECK:       # %bb.0:
586 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
587 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
588 ; CHECK-NEXT:    ret
589   %elt.head = insertelement <2 x i32> poison, i32 %b, i32 0
590   %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
591   %v = call <2 x i32> @llvm.vp.shl.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> %m, i32 %evl)
592   ret <2 x i32> %v
595 define <2 x i32> @vsll_vx_v2i32_unmasked(<2 x i32> %va, i32 %b, i32 zeroext %evl) {
596 ; CHECK-LABEL: vsll_vx_v2i32_unmasked:
597 ; CHECK:       # %bb.0:
598 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
599 ; CHECK-NEXT:    vsll.vx v8, v8, a0
600 ; CHECK-NEXT:    ret
601   %elt.head = insertelement <2 x i32> poison, i32 %b, i32 0
602   %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
603   %v = call <2 x i32> @llvm.vp.shl.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> splat (i1 true), i32 %evl)
604   ret <2 x i32> %v
607 define <2 x i32> @vsll_vi_v2i32(<2 x i32> %va, <2 x i1> %m, i32 zeroext %evl) {
608 ; CHECK-LABEL: vsll_vi_v2i32:
609 ; CHECK:       # %bb.0:
610 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
611 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
612 ; CHECK-NEXT:    ret
613   %v = call <2 x i32> @llvm.vp.shl.v2i32(<2 x i32> %va, <2 x i32> splat (i32 3), <2 x i1> %m, i32 %evl)
614   ret <2 x i32> %v
617 define <2 x i32> @vsll_vi_v2i32_unmasked(<2 x i32> %va, i32 zeroext %evl) {
618 ; CHECK-LABEL: vsll_vi_v2i32_unmasked:
619 ; CHECK:       # %bb.0:
620 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
621 ; CHECK-NEXT:    vsll.vi v8, v8, 3
622 ; CHECK-NEXT:    ret
623   %v = call <2 x i32> @llvm.vp.shl.v2i32(<2 x i32> %va, <2 x i32> splat (i32 3), <2 x i1> splat (i1 true), i32 %evl)
624   ret <2 x i32> %v
627 declare <4 x i32> @llvm.vp.shl.v4i32(<4 x i32>, <4 x i32>, <4 x i1>, i32)
629 define <4 x i32> @vsll_vv_v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 zeroext %evl) {
630 ; CHECK-LABEL: vsll_vv_v4i32:
631 ; CHECK:       # %bb.0:
632 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
633 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
634 ; CHECK-NEXT:    ret
635   %v = call <4 x i32> @llvm.vp.shl.v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 %evl)
636   ret <4 x i32> %v
639 define <4 x i32> @vsll_vv_v4i32_unmasked(<4 x i32> %va, <4 x i32> %b, i32 zeroext %evl) {
640 ; CHECK-LABEL: vsll_vv_v4i32_unmasked:
641 ; CHECK:       # %bb.0:
642 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
643 ; CHECK-NEXT:    vsll.vv v8, v8, v9
644 ; CHECK-NEXT:    ret
645   %v = call <4 x i32> @llvm.vp.shl.v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> splat (i1 true), i32 %evl)
646   ret <4 x i32> %v
649 define <4 x i32> @vsll_vx_v4i32(<4 x i32> %va, i32 %b, <4 x i1> %m, i32 zeroext %evl) {
650 ; CHECK-LABEL: vsll_vx_v4i32:
651 ; CHECK:       # %bb.0:
652 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
653 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
654 ; CHECK-NEXT:    ret
655   %elt.head = insertelement <4 x i32> poison, i32 %b, i32 0
656   %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
657   %v = call <4 x i32> @llvm.vp.shl.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> %m, i32 %evl)
658   ret <4 x i32> %v
661 define <4 x i32> @vsll_vx_v4i32_unmasked(<4 x i32> %va, i32 %b, i32 zeroext %evl) {
662 ; CHECK-LABEL: vsll_vx_v4i32_unmasked:
663 ; CHECK:       # %bb.0:
664 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
665 ; CHECK-NEXT:    vsll.vx v8, v8, a0
666 ; CHECK-NEXT:    ret
667   %elt.head = insertelement <4 x i32> poison, i32 %b, i32 0
668   %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
669   %v = call <4 x i32> @llvm.vp.shl.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> splat (i1 true), i32 %evl)
670   ret <4 x i32> %v
673 define <4 x i32> @vsll_vi_v4i32(<4 x i32> %va, <4 x i1> %m, i32 zeroext %evl) {
674 ; CHECK-LABEL: vsll_vi_v4i32:
675 ; CHECK:       # %bb.0:
676 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
677 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
678 ; CHECK-NEXT:    ret
679   %v = call <4 x i32> @llvm.vp.shl.v4i32(<4 x i32> %va, <4 x i32> splat (i32 3), <4 x i1> %m, i32 %evl)
680   ret <4 x i32> %v
683 define <4 x i32> @vsll_vi_v4i32_unmasked(<4 x i32> %va, i32 zeroext %evl) {
684 ; CHECK-LABEL: vsll_vi_v4i32_unmasked:
685 ; CHECK:       # %bb.0:
686 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
687 ; CHECK-NEXT:    vsll.vi v8, v8, 3
688 ; CHECK-NEXT:    ret
689   %v = call <4 x i32> @llvm.vp.shl.v4i32(<4 x i32> %va, <4 x i32> splat (i32 3), <4 x i1> splat (i1 true), i32 %evl)
690   ret <4 x i32> %v
693 declare <8 x i32> @llvm.vp.shl.v8i32(<8 x i32>, <8 x i32>, <8 x i1>, i32)
695 define <8 x i32> @vsll_vv_v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 zeroext %evl) {
696 ; CHECK-LABEL: vsll_vv_v8i32:
697 ; CHECK:       # %bb.0:
698 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
699 ; CHECK-NEXT:    vsll.vv v8, v8, v10, v0.t
700 ; CHECK-NEXT:    ret
701   %v = call <8 x i32> @llvm.vp.shl.v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 %evl)
702   ret <8 x i32> %v
705 define <8 x i32> @vsll_vv_v8i32_unmasked(<8 x i32> %va, <8 x i32> %b, i32 zeroext %evl) {
706 ; CHECK-LABEL: vsll_vv_v8i32_unmasked:
707 ; CHECK:       # %bb.0:
708 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
709 ; CHECK-NEXT:    vsll.vv v8, v8, v10
710 ; CHECK-NEXT:    ret
711   %v = call <8 x i32> @llvm.vp.shl.v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> splat (i1 true), i32 %evl)
712   ret <8 x i32> %v
715 define <8 x i32> @vsll_vx_v8i32(<8 x i32> %va, i32 %b, <8 x i1> %m, i32 zeroext %evl) {
716 ; CHECK-LABEL: vsll_vx_v8i32:
717 ; CHECK:       # %bb.0:
718 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
719 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
720 ; CHECK-NEXT:    ret
721   %elt.head = insertelement <8 x i32> poison, i32 %b, i32 0
722   %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
723   %v = call <8 x i32> @llvm.vp.shl.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> %m, i32 %evl)
724   ret <8 x i32> %v
727 define <8 x i32> @vsll_vx_v8i32_unmasked(<8 x i32> %va, i32 %b, i32 zeroext %evl) {
728 ; CHECK-LABEL: vsll_vx_v8i32_unmasked:
729 ; CHECK:       # %bb.0:
730 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
731 ; CHECK-NEXT:    vsll.vx v8, v8, a0
732 ; CHECK-NEXT:    ret
733   %elt.head = insertelement <8 x i32> poison, i32 %b, i32 0
734   %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
735   %v = call <8 x i32> @llvm.vp.shl.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> splat (i1 true), i32 %evl)
736   ret <8 x i32> %v
739 define <8 x i32> @vsll_vi_v8i32(<8 x i32> %va, <8 x i1> %m, i32 zeroext %evl) {
740 ; CHECK-LABEL: vsll_vi_v8i32:
741 ; CHECK:       # %bb.0:
742 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
743 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
744 ; CHECK-NEXT:    ret
745   %v = call <8 x i32> @llvm.vp.shl.v8i32(<8 x i32> %va, <8 x i32> splat (i32 3), <8 x i1> %m, i32 %evl)
746   ret <8 x i32> %v
749 define <8 x i32> @vsll_vi_v8i32_unmasked(<8 x i32> %va, i32 zeroext %evl) {
750 ; CHECK-LABEL: vsll_vi_v8i32_unmasked:
751 ; CHECK:       # %bb.0:
752 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
753 ; CHECK-NEXT:    vsll.vi v8, v8, 3
754 ; CHECK-NEXT:    ret
755   %v = call <8 x i32> @llvm.vp.shl.v8i32(<8 x i32> %va, <8 x i32> splat (i32 3), <8 x i1> splat (i1 true), i32 %evl)
756   ret <8 x i32> %v
759 declare <16 x i32> @llvm.vp.shl.v16i32(<16 x i32>, <16 x i32>, <16 x i1>, i32)
761 define <16 x i32> @vsll_vv_v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 zeroext %evl) {
762 ; CHECK-LABEL: vsll_vv_v16i32:
763 ; CHECK:       # %bb.0:
764 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
765 ; CHECK-NEXT:    vsll.vv v8, v8, v12, v0.t
766 ; CHECK-NEXT:    ret
767   %v = call <16 x i32> @llvm.vp.shl.v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 %evl)
768   ret <16 x i32> %v
771 define <16 x i32> @vsll_vv_v16i32_unmasked(<16 x i32> %va, <16 x i32> %b, i32 zeroext %evl) {
772 ; CHECK-LABEL: vsll_vv_v16i32_unmasked:
773 ; CHECK:       # %bb.0:
774 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
775 ; CHECK-NEXT:    vsll.vv v8, v8, v12
776 ; CHECK-NEXT:    ret
777   %v = call <16 x i32> @llvm.vp.shl.v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> splat (i1 true), i32 %evl)
778   ret <16 x i32> %v
781 define <16 x i32> @vsll_vx_v16i32(<16 x i32> %va, i32 %b, <16 x i1> %m, i32 zeroext %evl) {
782 ; CHECK-LABEL: vsll_vx_v16i32:
783 ; CHECK:       # %bb.0:
784 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
785 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
786 ; CHECK-NEXT:    ret
787   %elt.head = insertelement <16 x i32> poison, i32 %b, i32 0
788   %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
789   %v = call <16 x i32> @llvm.vp.shl.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> %m, i32 %evl)
790   ret <16 x i32> %v
793 define <16 x i32> @vsll_vx_v16i32_unmasked(<16 x i32> %va, i32 %b, i32 zeroext %evl) {
794 ; CHECK-LABEL: vsll_vx_v16i32_unmasked:
795 ; CHECK:       # %bb.0:
796 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
797 ; CHECK-NEXT:    vsll.vx v8, v8, a0
798 ; CHECK-NEXT:    ret
799   %elt.head = insertelement <16 x i32> poison, i32 %b, i32 0
800   %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
801   %v = call <16 x i32> @llvm.vp.shl.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> splat (i1 true), i32 %evl)
802   ret <16 x i32> %v
805 define <16 x i32> @vsll_vi_v16i32(<16 x i32> %va, <16 x i1> %m, i32 zeroext %evl) {
806 ; CHECK-LABEL: vsll_vi_v16i32:
807 ; CHECK:       # %bb.0:
808 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
809 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
810 ; CHECK-NEXT:    ret
811   %v = call <16 x i32> @llvm.vp.shl.v16i32(<16 x i32> %va, <16 x i32> splat (i32 3), <16 x i1> %m, i32 %evl)
812   ret <16 x i32> %v
815 define <16 x i32> @vsll_vi_v16i32_unmasked(<16 x i32> %va, i32 zeroext %evl) {
816 ; CHECK-LABEL: vsll_vi_v16i32_unmasked:
817 ; CHECK:       # %bb.0:
818 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
819 ; CHECK-NEXT:    vsll.vi v8, v8, 3
820 ; CHECK-NEXT:    ret
821   %v = call <16 x i32> @llvm.vp.shl.v16i32(<16 x i32> %va, <16 x i32> splat (i32 3), <16 x i1> splat (i1 true), i32 %evl)
822   ret <16 x i32> %v
825 declare <2 x i64> @llvm.vp.shl.v2i64(<2 x i64>, <2 x i64>, <2 x i1>, i32)
827 define <2 x i64> @vsll_vv_v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 zeroext %evl) {
828 ; CHECK-LABEL: vsll_vv_v2i64:
829 ; CHECK:       # %bb.0:
830 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
831 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
832 ; CHECK-NEXT:    ret
833   %v = call <2 x i64> @llvm.vp.shl.v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 %evl)
834   ret <2 x i64> %v
837 define <2 x i64> @vsll_vv_v2i64_unmasked(<2 x i64> %va, <2 x i64> %b, i32 zeroext %evl) {
838 ; CHECK-LABEL: vsll_vv_v2i64_unmasked:
839 ; CHECK:       # %bb.0:
840 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
841 ; CHECK-NEXT:    vsll.vv v8, v8, v9
842 ; CHECK-NEXT:    ret
843   %v = call <2 x i64> @llvm.vp.shl.v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> splat (i1 true), i32 %evl)
844   ret <2 x i64> %v
847 define <2 x i64> @vsll_vx_v2i64(<2 x i64> %va, i64 %b, <2 x i1> %m, i32 zeroext %evl) {
848 ; RV32-LABEL: vsll_vx_v2i64:
849 ; RV32:       # %bb.0:
850 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
851 ; RV32-NEXT:    vsll.vx v8, v8, a0, v0.t
852 ; RV32-NEXT:    ret
854 ; RV64-LABEL: vsll_vx_v2i64:
855 ; RV64:       # %bb.0:
856 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
857 ; RV64-NEXT:    vsll.vx v8, v8, a0, v0.t
858 ; RV64-NEXT:    ret
859   %elt.head = insertelement <2 x i64> poison, i64 %b, i32 0
860   %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
861   %v = call <2 x i64> @llvm.vp.shl.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> %m, i32 %evl)
862   ret <2 x i64> %v
865 define <2 x i64> @vsll_vx_v2i64_unmasked(<2 x i64> %va, i64 %b, i32 zeroext %evl) {
866 ; RV32-LABEL: vsll_vx_v2i64_unmasked:
867 ; RV32:       # %bb.0:
868 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
869 ; RV32-NEXT:    vsll.vx v8, v8, a0
870 ; RV32-NEXT:    ret
872 ; RV64-LABEL: vsll_vx_v2i64_unmasked:
873 ; RV64:       # %bb.0:
874 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
875 ; RV64-NEXT:    vsll.vx v8, v8, a0
876 ; RV64-NEXT:    ret
877   %elt.head = insertelement <2 x i64> poison, i64 %b, i32 0
878   %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
879   %v = call <2 x i64> @llvm.vp.shl.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> splat (i1 true), i32 %evl)
880   ret <2 x i64> %v
883 define <2 x i64> @vsll_vi_v2i64(<2 x i64> %va, <2 x i1> %m, i32 zeroext %evl) {
884 ; CHECK-LABEL: vsll_vi_v2i64:
885 ; CHECK:       # %bb.0:
886 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
887 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
888 ; CHECK-NEXT:    ret
889   %v = call <2 x i64> @llvm.vp.shl.v2i64(<2 x i64> %va, <2 x i64> splat (i64 3), <2 x i1> %m, i32 %evl)
890   ret <2 x i64> %v
893 define <2 x i64> @vsll_vi_v2i64_unmasked(<2 x i64> %va, i32 zeroext %evl) {
894 ; CHECK-LABEL: vsll_vi_v2i64_unmasked:
895 ; CHECK:       # %bb.0:
896 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
897 ; CHECK-NEXT:    vsll.vi v8, v8, 3
898 ; CHECK-NEXT:    ret
899   %v = call <2 x i64> @llvm.vp.shl.v2i64(<2 x i64> %va, <2 x i64> splat (i64 3), <2 x i1> splat (i1 true), i32 %evl)
900   ret <2 x i64> %v
903 declare <4 x i64> @llvm.vp.shl.v4i64(<4 x i64>, <4 x i64>, <4 x i1>, i32)
905 define <4 x i64> @vsll_vv_v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 zeroext %evl) {
906 ; CHECK-LABEL: vsll_vv_v4i64:
907 ; CHECK:       # %bb.0:
908 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
909 ; CHECK-NEXT:    vsll.vv v8, v8, v10, v0.t
910 ; CHECK-NEXT:    ret
911   %v = call <4 x i64> @llvm.vp.shl.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 %evl)
912   ret <4 x i64> %v
915 define <4 x i64> @vsll_vv_v4i64_unmasked(<4 x i64> %va, <4 x i64> %b, i32 zeroext %evl) {
916 ; CHECK-LABEL: vsll_vv_v4i64_unmasked:
917 ; CHECK:       # %bb.0:
918 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
919 ; CHECK-NEXT:    vsll.vv v8, v8, v10
920 ; CHECK-NEXT:    ret
921   %v = call <4 x i64> @llvm.vp.shl.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> splat (i1 true), i32 %evl)
922   ret <4 x i64> %v
925 define <4 x i64> @vsll_vx_v4i64(<4 x i64> %va, i64 %b, <4 x i1> %m, i32 zeroext %evl) {
926 ; RV32-LABEL: vsll_vx_v4i64:
927 ; RV32:       # %bb.0:
928 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
929 ; RV32-NEXT:    vsll.vx v8, v8, a0, v0.t
930 ; RV32-NEXT:    ret
932 ; RV64-LABEL: vsll_vx_v4i64:
933 ; RV64:       # %bb.0:
934 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
935 ; RV64-NEXT:    vsll.vx v8, v8, a0, v0.t
936 ; RV64-NEXT:    ret
937   %elt.head = insertelement <4 x i64> poison, i64 %b, i32 0
938   %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
939   %v = call <4 x i64> @llvm.vp.shl.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> %m, i32 %evl)
940   ret <4 x i64> %v
943 define <4 x i64> @vsll_vx_v4i64_unmasked(<4 x i64> %va, i64 %b, i32 zeroext %evl) {
944 ; RV32-LABEL: vsll_vx_v4i64_unmasked:
945 ; RV32:       # %bb.0:
946 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
947 ; RV32-NEXT:    vsll.vx v8, v8, a0
948 ; RV32-NEXT:    ret
950 ; RV64-LABEL: vsll_vx_v4i64_unmasked:
951 ; RV64:       # %bb.0:
952 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
953 ; RV64-NEXT:    vsll.vx v8, v8, a0
954 ; RV64-NEXT:    ret
955   %elt.head = insertelement <4 x i64> poison, i64 %b, i32 0
956   %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
957   %v = call <4 x i64> @llvm.vp.shl.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> splat (i1 true), i32 %evl)
958   ret <4 x i64> %v
961 define <4 x i64> @vsll_vi_v4i64(<4 x i64> %va, <4 x i1> %m, i32 zeroext %evl) {
962 ; CHECK-LABEL: vsll_vi_v4i64:
963 ; CHECK:       # %bb.0:
964 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
965 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
966 ; CHECK-NEXT:    ret
967   %v = call <4 x i64> @llvm.vp.shl.v4i64(<4 x i64> %va, <4 x i64> splat (i64 3), <4 x i1> %m, i32 %evl)
968   ret <4 x i64> %v
971 define <4 x i64> @vsll_vi_v4i64_unmasked(<4 x i64> %va, i32 zeroext %evl) {
972 ; CHECK-LABEL: vsll_vi_v4i64_unmasked:
973 ; CHECK:       # %bb.0:
974 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
975 ; CHECK-NEXT:    vsll.vi v8, v8, 3
976 ; CHECK-NEXT:    ret
977   %v = call <4 x i64> @llvm.vp.shl.v4i64(<4 x i64> %va, <4 x i64> splat (i64 3), <4 x i1> splat (i1 true), i32 %evl)
978   ret <4 x i64> %v
981 declare <8 x i64> @llvm.vp.shl.v8i64(<8 x i64>, <8 x i64>, <8 x i1>, i32)
983 define <8 x i64> @vsll_vv_v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 zeroext %evl) {
984 ; CHECK-LABEL: vsll_vv_v8i64:
985 ; CHECK:       # %bb.0:
986 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
987 ; CHECK-NEXT:    vsll.vv v8, v8, v12, v0.t
988 ; CHECK-NEXT:    ret
989   %v = call <8 x i64> @llvm.vp.shl.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 %evl)
990   ret <8 x i64> %v
993 define <8 x i64> @vsll_vv_v8i64_unmasked(<8 x i64> %va, <8 x i64> %b, i32 zeroext %evl) {
994 ; CHECK-LABEL: vsll_vv_v8i64_unmasked:
995 ; CHECK:       # %bb.0:
996 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
997 ; CHECK-NEXT:    vsll.vv v8, v8, v12
998 ; CHECK-NEXT:    ret
999   %v = call <8 x i64> @llvm.vp.shl.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> splat (i1 true), i32 %evl)
1000   ret <8 x i64> %v
1003 define <8 x i64> @vsll_vx_v8i64(<8 x i64> %va, i64 %b, <8 x i1> %m, i32 zeroext %evl) {
1004 ; RV32-LABEL: vsll_vx_v8i64:
1005 ; RV32:       # %bb.0:
1006 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1007 ; RV32-NEXT:    vsll.vx v8, v8, a0, v0.t
1008 ; RV32-NEXT:    ret
1010 ; RV64-LABEL: vsll_vx_v8i64:
1011 ; RV64:       # %bb.0:
1012 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1013 ; RV64-NEXT:    vsll.vx v8, v8, a0, v0.t
1014 ; RV64-NEXT:    ret
1015   %elt.head = insertelement <8 x i64> poison, i64 %b, i32 0
1016   %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
1017   %v = call <8 x i64> @llvm.vp.shl.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> %m, i32 %evl)
1018   ret <8 x i64> %v
1021 define <8 x i64> @vsll_vx_v8i64_unmasked(<8 x i64> %va, i64 %b, i32 zeroext %evl) {
1022 ; RV32-LABEL: vsll_vx_v8i64_unmasked:
1023 ; RV32:       # %bb.0:
1024 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1025 ; RV32-NEXT:    vsll.vx v8, v8, a0
1026 ; RV32-NEXT:    ret
1028 ; RV64-LABEL: vsll_vx_v8i64_unmasked:
1029 ; RV64:       # %bb.0:
1030 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1031 ; RV64-NEXT:    vsll.vx v8, v8, a0
1032 ; RV64-NEXT:    ret
1033   %elt.head = insertelement <8 x i64> poison, i64 %b, i32 0
1034   %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
1035   %v = call <8 x i64> @llvm.vp.shl.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> splat (i1 true), i32 %evl)
1036   ret <8 x i64> %v
1039 define <8 x i64> @vsll_vi_v8i64(<8 x i64> %va, <8 x i1> %m, i32 zeroext %evl) {
1040 ; CHECK-LABEL: vsll_vi_v8i64:
1041 ; CHECK:       # %bb.0:
1042 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1043 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
1044 ; CHECK-NEXT:    ret
1045   %v = call <8 x i64> @llvm.vp.shl.v8i64(<8 x i64> %va, <8 x i64> splat (i64 3), <8 x i1> %m, i32 %evl)
1046   ret <8 x i64> %v
1049 define <8 x i64> @vsll_vi_v8i64_unmasked(<8 x i64> %va, i32 zeroext %evl) {
1050 ; CHECK-LABEL: vsll_vi_v8i64_unmasked:
1051 ; CHECK:       # %bb.0:
1052 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1053 ; CHECK-NEXT:    vsll.vi v8, v8, 3
1054 ; CHECK-NEXT:    ret
1055   %v = call <8 x i64> @llvm.vp.shl.v8i64(<8 x i64> %va, <8 x i64> splat (i64 3), <8 x i1> splat (i1 true), i32 %evl)
1056   ret <8 x i64> %v
1059 declare <16 x i64> @llvm.vp.shl.v16i64(<16 x i64>, <16 x i64>, <16 x i1>, i32)
1061 define <16 x i64> @vsll_vv_v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 zeroext %evl) {
1062 ; CHECK-LABEL: vsll_vv_v16i64:
1063 ; CHECK:       # %bb.0:
1064 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1065 ; CHECK-NEXT:    vsll.vv v8, v8, v16, v0.t
1066 ; CHECK-NEXT:    ret
1067   %v = call <16 x i64> @llvm.vp.shl.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 %evl)
1068   ret <16 x i64> %v
1071 define <16 x i64> @vsll_vv_v16i64_unmasked(<16 x i64> %va, <16 x i64> %b, i32 zeroext %evl) {
1072 ; CHECK-LABEL: vsll_vv_v16i64_unmasked:
1073 ; CHECK:       # %bb.0:
1074 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1075 ; CHECK-NEXT:    vsll.vv v8, v8, v16
1076 ; CHECK-NEXT:    ret
1077   %v = call <16 x i64> @llvm.vp.shl.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> splat (i1 true), i32 %evl)
1078   ret <16 x i64> %v
1081 define <16 x i64> @vsll_vx_v16i64(<16 x i64> %va, i64 %b, <16 x i1> %m, i32 zeroext %evl) {
1082 ; RV32-LABEL: vsll_vx_v16i64:
1083 ; RV32:       # %bb.0:
1084 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
1085 ; RV32-NEXT:    vsll.vx v8, v8, a0, v0.t
1086 ; RV32-NEXT:    ret
1088 ; RV64-LABEL: vsll_vx_v16i64:
1089 ; RV64:       # %bb.0:
1090 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
1091 ; RV64-NEXT:    vsll.vx v8, v8, a0, v0.t
1092 ; RV64-NEXT:    ret
1093   %elt.head = insertelement <16 x i64> poison, i64 %b, i32 0
1094   %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
1095   %v = call <16 x i64> @llvm.vp.shl.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> %m, i32 %evl)
1096   ret <16 x i64> %v
1099 define <16 x i64> @vsll_vx_v16i64_unmasked(<16 x i64> %va, i64 %b, i32 zeroext %evl) {
1100 ; RV32-LABEL: vsll_vx_v16i64_unmasked:
1101 ; RV32:       # %bb.0:
1102 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
1103 ; RV32-NEXT:    vsll.vx v8, v8, a0
1104 ; RV32-NEXT:    ret
1106 ; RV64-LABEL: vsll_vx_v16i64_unmasked:
1107 ; RV64:       # %bb.0:
1108 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
1109 ; RV64-NEXT:    vsll.vx v8, v8, a0
1110 ; RV64-NEXT:    ret
1111   %elt.head = insertelement <16 x i64> poison, i64 %b, i32 0
1112   %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
1113   %v = call <16 x i64> @llvm.vp.shl.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> splat (i1 true), i32 %evl)
1114   ret <16 x i64> %v
1117 define <16 x i64> @vsll_vi_v16i64(<16 x i64> %va, <16 x i1> %m, i32 zeroext %evl) {
1118 ; CHECK-LABEL: vsll_vi_v16i64:
1119 ; CHECK:       # %bb.0:
1120 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1121 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
1122 ; CHECK-NEXT:    ret
1123   %v = call <16 x i64> @llvm.vp.shl.v16i64(<16 x i64> %va, <16 x i64> splat (i64 3), <16 x i1> %m, i32 %evl)
1124   ret <16 x i64> %v
1127 define <16 x i64> @vsll_vi_v16i64_unmasked(<16 x i64> %va, i32 zeroext %evl) {
1128 ; CHECK-LABEL: vsll_vi_v16i64_unmasked:
1129 ; CHECK:       # %bb.0:
1130 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1131 ; CHECK-NEXT:    vsll.vi v8, v8, 3
1132 ; CHECK-NEXT:    ret
1133   %v = call <16 x i64> @llvm.vp.shl.v16i64(<16 x i64> %va, <16 x i64> splat (i64 3), <16 x i1> splat (i1 true), i32 %evl)
1134   ret <16 x i64> %v