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:
12 ; CHECK-NEXT: li a1, 127
13 ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
14 ; CHECK-NEXT: vand.vx v9, v9, a1
15 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
16 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
18 %v = call <8 x i7> @llvm.vp.shl.v8i7(<8 x i7> %va, <8 x i7> %b, <8 x i1> %m, i32 %evl)
22 declare <2 x i8> @llvm.vp.shl.v2i8(<2 x i8>, <2 x i8>, <2 x i1>, i32)
24 define <2 x i8> @vsll_vv_v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> %m, i32 zeroext %evl) {
25 ; CHECK-LABEL: vsll_vv_v2i8:
27 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
28 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
30 %v = call <2 x i8> @llvm.vp.shl.v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> %m, i32 %evl)
34 define <2 x i8> @vsll_vv_v2i8_unmasked(<2 x i8> %va, <2 x i8> %b, i32 zeroext %evl) {
35 ; CHECK-LABEL: vsll_vv_v2i8_unmasked:
37 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
38 ; CHECK-NEXT: vsll.vv v8, v8, v9
40 %head = insertelement <2 x i1> poison, i1 true, i32 0
41 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
42 %v = call <2 x i8> @llvm.vp.shl.v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> %m, i32 %evl)
46 define <2 x i8> @vsll_vx_v2i8(<2 x i8> %va, i8 %b, <2 x i1> %m, i32 zeroext %evl) {
47 ; CHECK-LABEL: vsll_vx_v2i8:
49 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
50 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
52 %elt.head = insertelement <2 x i8> poison, i8 %b, i32 0
53 %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
54 %v = call <2 x i8> @llvm.vp.shl.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> %m, i32 %evl)
58 define <2 x i8> @vsll_vx_v2i8_unmasked(<2 x i8> %va, i8 %b, i32 zeroext %evl) {
59 ; CHECK-LABEL: vsll_vx_v2i8_unmasked:
61 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
62 ; CHECK-NEXT: vsll.vx v8, v8, a0
64 %elt.head = insertelement <2 x i8> poison, i8 %b, i32 0
65 %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
66 %head = insertelement <2 x i1> poison, i1 true, i32 0
67 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
68 %v = call <2 x i8> @llvm.vp.shl.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> %m, i32 %evl)
72 define <2 x i8> @vsll_vi_v2i8(<2 x i8> %va, <2 x i1> %m, i32 zeroext %evl) {
73 ; CHECK-LABEL: vsll_vi_v2i8:
75 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
76 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
78 %elt.head = insertelement <2 x i8> poison, i8 3, i32 0
79 %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
80 %v = call <2 x i8> @llvm.vp.shl.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> %m, i32 %evl)
84 define <2 x i8> @vsll_vi_v2i8_unmasked(<2 x i8> %va, i32 zeroext %evl) {
85 ; CHECK-LABEL: vsll_vi_v2i8_unmasked:
87 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
88 ; CHECK-NEXT: vsll.vi v8, v8, 3
90 %elt.head = insertelement <2 x i8> poison, i8 3, i32 0
91 %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
92 %head = insertelement <2 x i1> poison, i1 true, i32 0
93 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
94 %v = call <2 x i8> @llvm.vp.shl.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> %m, i32 %evl)
98 declare <3 x i8> @llvm.vp.shl.v3i8(<3 x i8>, <3 x i8>, <3 x i1>, i32)
100 define <3 x i8> @vsll_vv_v3i8(<3 x i8> %va, <3 x i8> %b, <3 x i1> %m, i32 zeroext %evl) {
101 ; CHECK-LABEL: vsll_vv_v3i8:
103 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
104 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
106 %v = call <3 x i8> @llvm.vp.shl.v3i8(<3 x i8> %va, <3 x i8> %b, <3 x i1> %m, i32 %evl)
110 declare <4 x i8> @llvm.vp.shl.v4i8(<4 x i8>, <4 x i8>, <4 x i1>, i32)
112 define <4 x i8> @vsll_vv_v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 zeroext %evl) {
113 ; CHECK-LABEL: vsll_vv_v4i8:
115 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
116 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
118 %v = call <4 x i8> @llvm.vp.shl.v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 %evl)
122 define <4 x i8> @vsll_vv_v4i8_unmasked(<4 x i8> %va, <4 x i8> %b, i32 zeroext %evl) {
123 ; CHECK-LABEL: vsll_vv_v4i8_unmasked:
125 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
126 ; CHECK-NEXT: vsll.vv v8, v8, v9
128 %head = insertelement <4 x i1> poison, i1 true, i32 0
129 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
130 %v = call <4 x i8> @llvm.vp.shl.v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 %evl)
134 define <4 x i8> @vsll_vx_v4i8(<4 x i8> %va, i8 %b, <4 x i1> %m, i32 zeroext %evl) {
135 ; CHECK-LABEL: vsll_vx_v4i8:
137 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
138 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
140 %elt.head = insertelement <4 x i8> poison, i8 %b, i32 0
141 %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
142 %v = call <4 x i8> @llvm.vp.shl.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> %m, i32 %evl)
146 define <4 x i8> @vsll_vx_v4i8_unmasked(<4 x i8> %va, i8 %b, i32 zeroext %evl) {
147 ; CHECK-LABEL: vsll_vx_v4i8_unmasked:
149 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
150 ; CHECK-NEXT: vsll.vx v8, v8, a0
152 %elt.head = insertelement <4 x i8> poison, i8 %b, i32 0
153 %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
154 %head = insertelement <4 x i1> poison, i1 true, i32 0
155 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
156 %v = call <4 x i8> @llvm.vp.shl.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> %m, i32 %evl)
160 define <4 x i8> @vsll_vi_v4i8(<4 x i8> %va, <4 x i1> %m, i32 zeroext %evl) {
161 ; CHECK-LABEL: vsll_vi_v4i8:
163 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
164 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
166 %elt.head = insertelement <4 x i8> poison, i8 3, i32 0
167 %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
168 %v = call <4 x i8> @llvm.vp.shl.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> %m, i32 %evl)
172 define <4 x i8> @vsll_vi_v4i8_unmasked(<4 x i8> %va, i32 zeroext %evl) {
173 ; CHECK-LABEL: vsll_vi_v4i8_unmasked:
175 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
176 ; CHECK-NEXT: vsll.vi v8, v8, 3
178 %elt.head = insertelement <4 x i8> poison, i8 3, i32 0
179 %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
180 %head = insertelement <4 x i1> poison, i1 true, i32 0
181 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
182 %v = call <4 x i8> @llvm.vp.shl.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> %m, i32 %evl)
186 declare <8 x i8> @llvm.vp.shl.v8i8(<8 x i8>, <8 x i8>, <8 x i1>, i32)
188 define <8 x i8> @vsll_vv_v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 zeroext %evl) {
189 ; CHECK-LABEL: vsll_vv_v8i8:
191 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
192 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
194 %v = call <8 x i8> @llvm.vp.shl.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 %evl)
198 define <8 x i8> @vsll_vv_v8i8_unmasked(<8 x i8> %va, <8 x i8> %b, i32 zeroext %evl) {
199 ; CHECK-LABEL: vsll_vv_v8i8_unmasked:
201 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
202 ; CHECK-NEXT: vsll.vv v8, v8, v9
204 %head = insertelement <8 x i1> poison, i1 true, i32 0
205 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
206 %v = call <8 x i8> @llvm.vp.shl.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 %evl)
210 define <8 x i8> @vsll_vx_v8i8(<8 x i8> %va, i8 %b, <8 x i1> %m, i32 zeroext %evl) {
211 ; CHECK-LABEL: vsll_vx_v8i8:
213 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
214 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
216 %elt.head = insertelement <8 x i8> poison, i8 %b, i32 0
217 %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
218 %v = call <8 x i8> @llvm.vp.shl.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> %m, i32 %evl)
222 define <8 x i8> @vsll_vx_v8i8_unmasked(<8 x i8> %va, i8 %b, i32 zeroext %evl) {
223 ; CHECK-LABEL: vsll_vx_v8i8_unmasked:
225 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
226 ; CHECK-NEXT: vsll.vx v8, v8, a0
228 %elt.head = insertelement <8 x i8> poison, i8 %b, i32 0
229 %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
230 %head = insertelement <8 x i1> poison, i1 true, i32 0
231 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
232 %v = call <8 x i8> @llvm.vp.shl.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> %m, i32 %evl)
236 define <8 x i8> @vsll_vi_v8i8(<8 x i8> %va, <8 x i1> %m, i32 zeroext %evl) {
237 ; CHECK-LABEL: vsll_vi_v8i8:
239 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
240 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
242 %elt.head = insertelement <8 x i8> poison, i8 3, i32 0
243 %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
244 %v = call <8 x i8> @llvm.vp.shl.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> %m, i32 %evl)
248 define <8 x i8> @vsll_vi_v8i8_unmasked(<8 x i8> %va, i32 zeroext %evl) {
249 ; CHECK-LABEL: vsll_vi_v8i8_unmasked:
251 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
252 ; CHECK-NEXT: vsll.vi v8, v8, 3
254 %elt.head = insertelement <8 x i8> poison, i8 3, i32 0
255 %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
256 %head = insertelement <8 x i1> poison, i1 true, i32 0
257 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
258 %v = call <8 x i8> @llvm.vp.shl.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> %m, i32 %evl)
262 declare <16 x i8> @llvm.vp.shl.v16i8(<16 x i8>, <16 x i8>, <16 x i1>, i32)
264 define <16 x i8> @vsll_vv_v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 zeroext %evl) {
265 ; CHECK-LABEL: vsll_vv_v16i8:
267 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
268 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
270 %v = call <16 x i8> @llvm.vp.shl.v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 %evl)
274 define <16 x i8> @vsll_vv_v16i8_unmasked(<16 x i8> %va, <16 x i8> %b, i32 zeroext %evl) {
275 ; CHECK-LABEL: vsll_vv_v16i8_unmasked:
277 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
278 ; CHECK-NEXT: vsll.vv v8, v8, v9
280 %head = insertelement <16 x i1> poison, i1 true, i32 0
281 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
282 %v = call <16 x i8> @llvm.vp.shl.v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 %evl)
286 define <16 x i8> @vsll_vx_v16i8(<16 x i8> %va, i8 %b, <16 x i1> %m, i32 zeroext %evl) {
287 ; CHECK-LABEL: vsll_vx_v16i8:
289 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
290 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
292 %elt.head = insertelement <16 x i8> poison, i8 %b, i32 0
293 %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
294 %v = call <16 x i8> @llvm.vp.shl.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> %m, i32 %evl)
298 define <16 x i8> @vsll_vx_v16i8_unmasked(<16 x i8> %va, i8 %b, i32 zeroext %evl) {
299 ; CHECK-LABEL: vsll_vx_v16i8_unmasked:
301 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
302 ; CHECK-NEXT: vsll.vx v8, v8, a0
304 %elt.head = insertelement <16 x i8> poison, i8 %b, i32 0
305 %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
306 %head = insertelement <16 x i1> poison, i1 true, i32 0
307 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
308 %v = call <16 x i8> @llvm.vp.shl.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> %m, i32 %evl)
312 define <16 x i8> @vsll_vi_v16i8(<16 x i8> %va, <16 x i1> %m, i32 zeroext %evl) {
313 ; CHECK-LABEL: vsll_vi_v16i8:
315 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
316 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
318 %elt.head = insertelement <16 x i8> poison, i8 3, i32 0
319 %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
320 %v = call <16 x i8> @llvm.vp.shl.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> %m, i32 %evl)
324 define <16 x i8> @vsll_vi_v16i8_unmasked(<16 x i8> %va, i32 zeroext %evl) {
325 ; CHECK-LABEL: vsll_vi_v16i8_unmasked:
327 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
328 ; CHECK-NEXT: vsll.vi v8, v8, 3
330 %elt.head = insertelement <16 x i8> poison, i8 3, i32 0
331 %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
332 %head = insertelement <16 x i1> poison, i1 true, i32 0
333 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
334 %v = call <16 x i8> @llvm.vp.shl.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> %m, i32 %evl)
338 declare <2 x i16> @llvm.vp.shl.v2i16(<2 x i16>, <2 x i16>, <2 x i1>, i32)
340 define <2 x i16> @vsll_vv_v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 zeroext %evl) {
341 ; CHECK-LABEL: vsll_vv_v2i16:
343 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
344 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
346 %v = call <2 x i16> @llvm.vp.shl.v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 %evl)
350 define <2 x i16> @vsll_vv_v2i16_unmasked(<2 x i16> %va, <2 x i16> %b, i32 zeroext %evl) {
351 ; CHECK-LABEL: vsll_vv_v2i16_unmasked:
353 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
354 ; CHECK-NEXT: vsll.vv v8, v8, v9
356 %head = insertelement <2 x i1> poison, i1 true, i32 0
357 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
358 %v = call <2 x i16> @llvm.vp.shl.v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 %evl)
362 define <2 x i16> @vsll_vx_v2i16(<2 x i16> %va, i16 %b, <2 x i1> %m, i32 zeroext %evl) {
363 ; CHECK-LABEL: vsll_vx_v2i16:
365 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
366 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
368 %elt.head = insertelement <2 x i16> poison, i16 %b, i32 0
369 %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
370 %v = call <2 x i16> @llvm.vp.shl.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> %m, i32 %evl)
374 define <2 x i16> @vsll_vx_v2i16_unmasked(<2 x i16> %va, i16 %b, i32 zeroext %evl) {
375 ; CHECK-LABEL: vsll_vx_v2i16_unmasked:
377 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
378 ; CHECK-NEXT: vsll.vx v8, v8, a0
380 %elt.head = insertelement <2 x i16> poison, i16 %b, i32 0
381 %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
382 %head = insertelement <2 x i1> poison, i1 true, i32 0
383 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
384 %v = call <2 x i16> @llvm.vp.shl.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> %m, i32 %evl)
388 define <2 x i16> @vsll_vi_v2i16(<2 x i16> %va, <2 x i1> %m, i32 zeroext %evl) {
389 ; CHECK-LABEL: vsll_vi_v2i16:
391 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
392 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
394 %elt.head = insertelement <2 x i16> poison, i16 3, i32 0
395 %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
396 %v = call <2 x i16> @llvm.vp.shl.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> %m, i32 %evl)
400 define <2 x i16> @vsll_vi_v2i16_unmasked(<2 x i16> %va, i32 zeroext %evl) {
401 ; CHECK-LABEL: vsll_vi_v2i16_unmasked:
403 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
404 ; CHECK-NEXT: vsll.vi v8, v8, 3
406 %elt.head = insertelement <2 x i16> poison, i16 3, i32 0
407 %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
408 %head = insertelement <2 x i1> poison, i1 true, i32 0
409 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
410 %v = call <2 x i16> @llvm.vp.shl.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> %m, i32 %evl)
414 declare <4 x i16> @llvm.vp.shl.v4i16(<4 x i16>, <4 x i16>, <4 x i1>, i32)
416 define <4 x i16> @vsll_vv_v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 zeroext %evl) {
417 ; CHECK-LABEL: vsll_vv_v4i16:
419 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
420 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
422 %v = call <4 x i16> @llvm.vp.shl.v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 %evl)
426 define <4 x i16> @vsll_vv_v4i16_unmasked(<4 x i16> %va, <4 x i16> %b, i32 zeroext %evl) {
427 ; CHECK-LABEL: vsll_vv_v4i16_unmasked:
429 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
430 ; CHECK-NEXT: vsll.vv v8, v8, v9
432 %head = insertelement <4 x i1> poison, i1 true, i32 0
433 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
434 %v = call <4 x i16> @llvm.vp.shl.v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 %evl)
438 define <4 x i16> @vsll_vx_v4i16(<4 x i16> %va, i16 %b, <4 x i1> %m, i32 zeroext %evl) {
439 ; CHECK-LABEL: vsll_vx_v4i16:
441 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
442 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
444 %elt.head = insertelement <4 x i16> poison, i16 %b, i32 0
445 %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
446 %v = call <4 x i16> @llvm.vp.shl.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> %m, i32 %evl)
450 define <4 x i16> @vsll_vx_v4i16_unmasked(<4 x i16> %va, i16 %b, i32 zeroext %evl) {
451 ; CHECK-LABEL: vsll_vx_v4i16_unmasked:
453 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
454 ; CHECK-NEXT: vsll.vx v8, v8, a0
456 %elt.head = insertelement <4 x i16> poison, i16 %b, i32 0
457 %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
458 %head = insertelement <4 x i1> poison, i1 true, i32 0
459 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
460 %v = call <4 x i16> @llvm.vp.shl.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> %m, i32 %evl)
464 define <4 x i16> @vsll_vi_v4i16(<4 x i16> %va, <4 x i1> %m, i32 zeroext %evl) {
465 ; CHECK-LABEL: vsll_vi_v4i16:
467 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
468 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
470 %elt.head = insertelement <4 x i16> poison, i16 3, i32 0
471 %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
472 %v = call <4 x i16> @llvm.vp.shl.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> %m, i32 %evl)
476 define <4 x i16> @vsll_vi_v4i16_unmasked(<4 x i16> %va, i32 zeroext %evl) {
477 ; CHECK-LABEL: vsll_vi_v4i16_unmasked:
479 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
480 ; CHECK-NEXT: vsll.vi v8, v8, 3
482 %elt.head = insertelement <4 x i16> poison, i16 3, i32 0
483 %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
484 %head = insertelement <4 x i1> poison, i1 true, i32 0
485 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
486 %v = call <4 x i16> @llvm.vp.shl.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> %m, i32 %evl)
490 declare <8 x i16> @llvm.vp.shl.v8i16(<8 x i16>, <8 x i16>, <8 x i1>, i32)
492 define <8 x i16> @vsll_vv_v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 zeroext %evl) {
493 ; CHECK-LABEL: vsll_vv_v8i16:
495 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
496 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
498 %v = call <8 x i16> @llvm.vp.shl.v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 %evl)
502 define <8 x i16> @vsll_vv_v8i16_unmasked(<8 x i16> %va, <8 x i16> %b, i32 zeroext %evl) {
503 ; CHECK-LABEL: vsll_vv_v8i16_unmasked:
505 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
506 ; CHECK-NEXT: vsll.vv v8, v8, v9
508 %head = insertelement <8 x i1> poison, i1 true, i32 0
509 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
510 %v = call <8 x i16> @llvm.vp.shl.v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 %evl)
514 define <8 x i16> @vsll_vx_v8i16(<8 x i16> %va, i16 %b, <8 x i1> %m, i32 zeroext %evl) {
515 ; CHECK-LABEL: vsll_vx_v8i16:
517 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
518 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
520 %elt.head = insertelement <8 x i16> poison, i16 %b, i32 0
521 %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
522 %v = call <8 x i16> @llvm.vp.shl.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> %m, i32 %evl)
526 define <8 x i16> @vsll_vx_v8i16_unmasked(<8 x i16> %va, i16 %b, i32 zeroext %evl) {
527 ; CHECK-LABEL: vsll_vx_v8i16_unmasked:
529 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
530 ; CHECK-NEXT: vsll.vx v8, v8, a0
532 %elt.head = insertelement <8 x i16> poison, i16 %b, i32 0
533 %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
534 %head = insertelement <8 x i1> poison, i1 true, i32 0
535 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
536 %v = call <8 x i16> @llvm.vp.shl.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> %m, i32 %evl)
540 define <8 x i16> @vsll_vi_v8i16(<8 x i16> %va, <8 x i1> %m, i32 zeroext %evl) {
541 ; CHECK-LABEL: vsll_vi_v8i16:
543 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
544 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
546 %elt.head = insertelement <8 x i16> poison, i16 3, i32 0
547 %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
548 %v = call <8 x i16> @llvm.vp.shl.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> %m, i32 %evl)
552 define <8 x i16> @vsll_vi_v8i16_unmasked(<8 x i16> %va, i32 zeroext %evl) {
553 ; CHECK-LABEL: vsll_vi_v8i16_unmasked:
555 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
556 ; CHECK-NEXT: vsll.vi v8, v8, 3
558 %elt.head = insertelement <8 x i16> poison, i16 3, i32 0
559 %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
560 %head = insertelement <8 x i1> poison, i1 true, i32 0
561 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
562 %v = call <8 x i16> @llvm.vp.shl.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> %m, i32 %evl)
566 declare <16 x i16> @llvm.vp.shl.v16i16(<16 x i16>, <16 x i16>, <16 x i1>, i32)
568 define <16 x i16> @vsll_vv_v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 zeroext %evl) {
569 ; CHECK-LABEL: vsll_vv_v16i16:
571 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
572 ; CHECK-NEXT: vsll.vv v8, v8, v10, v0.t
574 %v = call <16 x i16> @llvm.vp.shl.v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 %evl)
578 define <16 x i16> @vsll_vv_v16i16_unmasked(<16 x i16> %va, <16 x i16> %b, i32 zeroext %evl) {
579 ; CHECK-LABEL: vsll_vv_v16i16_unmasked:
581 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
582 ; CHECK-NEXT: vsll.vv v8, v8, v10
584 %head = insertelement <16 x i1> poison, i1 true, i32 0
585 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
586 %v = call <16 x i16> @llvm.vp.shl.v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 %evl)
590 define <16 x i16> @vsll_vx_v16i16(<16 x i16> %va, i16 %b, <16 x i1> %m, i32 zeroext %evl) {
591 ; CHECK-LABEL: vsll_vx_v16i16:
593 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
594 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
596 %elt.head = insertelement <16 x i16> poison, i16 %b, i32 0
597 %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
598 %v = call <16 x i16> @llvm.vp.shl.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> %m, i32 %evl)
602 define <16 x i16> @vsll_vx_v16i16_unmasked(<16 x i16> %va, i16 %b, i32 zeroext %evl) {
603 ; CHECK-LABEL: vsll_vx_v16i16_unmasked:
605 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
606 ; CHECK-NEXT: vsll.vx v8, v8, a0
608 %elt.head = insertelement <16 x i16> poison, i16 %b, i32 0
609 %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
610 %head = insertelement <16 x i1> poison, i1 true, i32 0
611 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
612 %v = call <16 x i16> @llvm.vp.shl.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> %m, i32 %evl)
616 define <16 x i16> @vsll_vi_v16i16(<16 x i16> %va, <16 x i1> %m, i32 zeroext %evl) {
617 ; CHECK-LABEL: vsll_vi_v16i16:
619 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
620 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
622 %elt.head = insertelement <16 x i16> poison, i16 3, i32 0
623 %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
624 %v = call <16 x i16> @llvm.vp.shl.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> %m, i32 %evl)
628 define <16 x i16> @vsll_vi_v16i16_unmasked(<16 x i16> %va, i32 zeroext %evl) {
629 ; CHECK-LABEL: vsll_vi_v16i16_unmasked:
631 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
632 ; CHECK-NEXT: vsll.vi v8, v8, 3
634 %elt.head = insertelement <16 x i16> poison, i16 3, i32 0
635 %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
636 %head = insertelement <16 x i1> poison, i1 true, i32 0
637 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
638 %v = call <16 x i16> @llvm.vp.shl.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> %m, i32 %evl)
642 declare <2 x i32> @llvm.vp.shl.v2i32(<2 x i32>, <2 x i32>, <2 x i1>, i32)
644 define <2 x i32> @vsll_vv_v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 zeroext %evl) {
645 ; CHECK-LABEL: vsll_vv_v2i32:
647 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
648 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
650 %v = call <2 x i32> @llvm.vp.shl.v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 %evl)
654 define <2 x i32> @vsll_vv_v2i32_unmasked(<2 x i32> %va, <2 x i32> %b, i32 zeroext %evl) {
655 ; CHECK-LABEL: vsll_vv_v2i32_unmasked:
657 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
658 ; CHECK-NEXT: vsll.vv v8, v8, v9
660 %head = insertelement <2 x i1> poison, i1 true, i32 0
661 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
662 %v = call <2 x i32> @llvm.vp.shl.v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 %evl)
666 define <2 x i32> @vsll_vx_v2i32(<2 x i32> %va, i32 %b, <2 x i1> %m, i32 zeroext %evl) {
667 ; CHECK-LABEL: vsll_vx_v2i32:
669 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
670 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
672 %elt.head = insertelement <2 x i32> poison, i32 %b, i32 0
673 %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
674 %v = call <2 x i32> @llvm.vp.shl.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> %m, i32 %evl)
678 define <2 x i32> @vsll_vx_v2i32_unmasked(<2 x i32> %va, i32 %b, i32 zeroext %evl) {
679 ; CHECK-LABEL: vsll_vx_v2i32_unmasked:
681 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
682 ; CHECK-NEXT: vsll.vx v8, v8, a0
684 %elt.head = insertelement <2 x i32> poison, i32 %b, i32 0
685 %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
686 %head = insertelement <2 x i1> poison, i1 true, i32 0
687 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
688 %v = call <2 x i32> @llvm.vp.shl.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> %m, i32 %evl)
692 define <2 x i32> @vsll_vi_v2i32(<2 x i32> %va, <2 x i1> %m, i32 zeroext %evl) {
693 ; CHECK-LABEL: vsll_vi_v2i32:
695 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
696 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
698 %elt.head = insertelement <2 x i32> poison, i32 3, i32 0
699 %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
700 %v = call <2 x i32> @llvm.vp.shl.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> %m, i32 %evl)
704 define <2 x i32> @vsll_vi_v2i32_unmasked(<2 x i32> %va, i32 zeroext %evl) {
705 ; CHECK-LABEL: vsll_vi_v2i32_unmasked:
707 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
708 ; CHECK-NEXT: vsll.vi v8, v8, 3
710 %elt.head = insertelement <2 x i32> poison, i32 3, i32 0
711 %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
712 %head = insertelement <2 x i1> poison, i1 true, i32 0
713 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
714 %v = call <2 x i32> @llvm.vp.shl.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> %m, i32 %evl)
718 declare <4 x i32> @llvm.vp.shl.v4i32(<4 x i32>, <4 x i32>, <4 x i1>, i32)
720 define <4 x i32> @vsll_vv_v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 zeroext %evl) {
721 ; CHECK-LABEL: vsll_vv_v4i32:
723 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
724 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
726 %v = call <4 x i32> @llvm.vp.shl.v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 %evl)
730 define <4 x i32> @vsll_vv_v4i32_unmasked(<4 x i32> %va, <4 x i32> %b, i32 zeroext %evl) {
731 ; CHECK-LABEL: vsll_vv_v4i32_unmasked:
733 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
734 ; CHECK-NEXT: vsll.vv v8, v8, v9
736 %head = insertelement <4 x i1> poison, i1 true, i32 0
737 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
738 %v = call <4 x i32> @llvm.vp.shl.v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 %evl)
742 define <4 x i32> @vsll_vx_v4i32(<4 x i32> %va, i32 %b, <4 x i1> %m, i32 zeroext %evl) {
743 ; CHECK-LABEL: vsll_vx_v4i32:
745 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
746 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
748 %elt.head = insertelement <4 x i32> poison, i32 %b, i32 0
749 %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
750 %v = call <4 x i32> @llvm.vp.shl.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> %m, i32 %evl)
754 define <4 x i32> @vsll_vx_v4i32_unmasked(<4 x i32> %va, i32 %b, i32 zeroext %evl) {
755 ; CHECK-LABEL: vsll_vx_v4i32_unmasked:
757 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
758 ; CHECK-NEXT: vsll.vx v8, v8, a0
760 %elt.head = insertelement <4 x i32> poison, i32 %b, i32 0
761 %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
762 %head = insertelement <4 x i1> poison, i1 true, i32 0
763 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
764 %v = call <4 x i32> @llvm.vp.shl.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> %m, i32 %evl)
768 define <4 x i32> @vsll_vi_v4i32(<4 x i32> %va, <4 x i1> %m, i32 zeroext %evl) {
769 ; CHECK-LABEL: vsll_vi_v4i32:
771 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
772 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
774 %elt.head = insertelement <4 x i32> poison, i32 3, i32 0
775 %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
776 %v = call <4 x i32> @llvm.vp.shl.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> %m, i32 %evl)
780 define <4 x i32> @vsll_vi_v4i32_unmasked(<4 x i32> %va, i32 zeroext %evl) {
781 ; CHECK-LABEL: vsll_vi_v4i32_unmasked:
783 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
784 ; CHECK-NEXT: vsll.vi v8, v8, 3
786 %elt.head = insertelement <4 x i32> poison, i32 3, i32 0
787 %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
788 %head = insertelement <4 x i1> poison, i1 true, i32 0
789 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
790 %v = call <4 x i32> @llvm.vp.shl.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> %m, i32 %evl)
794 declare <8 x i32> @llvm.vp.shl.v8i32(<8 x i32>, <8 x i32>, <8 x i1>, i32)
796 define <8 x i32> @vsll_vv_v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 zeroext %evl) {
797 ; CHECK-LABEL: vsll_vv_v8i32:
799 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
800 ; CHECK-NEXT: vsll.vv v8, v8, v10, v0.t
802 %v = call <8 x i32> @llvm.vp.shl.v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 %evl)
806 define <8 x i32> @vsll_vv_v8i32_unmasked(<8 x i32> %va, <8 x i32> %b, i32 zeroext %evl) {
807 ; CHECK-LABEL: vsll_vv_v8i32_unmasked:
809 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
810 ; CHECK-NEXT: vsll.vv v8, v8, v10
812 %head = insertelement <8 x i1> poison, i1 true, i32 0
813 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
814 %v = call <8 x i32> @llvm.vp.shl.v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 %evl)
818 define <8 x i32> @vsll_vx_v8i32(<8 x i32> %va, i32 %b, <8 x i1> %m, i32 zeroext %evl) {
819 ; CHECK-LABEL: vsll_vx_v8i32:
821 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
822 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
824 %elt.head = insertelement <8 x i32> poison, i32 %b, i32 0
825 %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
826 %v = call <8 x i32> @llvm.vp.shl.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> %m, i32 %evl)
830 define <8 x i32> @vsll_vx_v8i32_unmasked(<8 x i32> %va, i32 %b, i32 zeroext %evl) {
831 ; CHECK-LABEL: vsll_vx_v8i32_unmasked:
833 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
834 ; CHECK-NEXT: vsll.vx v8, v8, a0
836 %elt.head = insertelement <8 x i32> poison, i32 %b, i32 0
837 %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
838 %head = insertelement <8 x i1> poison, i1 true, i32 0
839 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
840 %v = call <8 x i32> @llvm.vp.shl.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> %m, i32 %evl)
844 define <8 x i32> @vsll_vi_v8i32(<8 x i32> %va, <8 x i1> %m, i32 zeroext %evl) {
845 ; CHECK-LABEL: vsll_vi_v8i32:
847 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
848 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
850 %elt.head = insertelement <8 x i32> poison, i32 3, i32 0
851 %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
852 %v = call <8 x i32> @llvm.vp.shl.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> %m, i32 %evl)
856 define <8 x i32> @vsll_vi_v8i32_unmasked(<8 x i32> %va, i32 zeroext %evl) {
857 ; CHECK-LABEL: vsll_vi_v8i32_unmasked:
859 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
860 ; CHECK-NEXT: vsll.vi v8, v8, 3
862 %elt.head = insertelement <8 x i32> poison, i32 3, i32 0
863 %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
864 %head = insertelement <8 x i1> poison, i1 true, i32 0
865 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
866 %v = call <8 x i32> @llvm.vp.shl.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> %m, i32 %evl)
870 declare <16 x i32> @llvm.vp.shl.v16i32(<16 x i32>, <16 x i32>, <16 x i1>, i32)
872 define <16 x i32> @vsll_vv_v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 zeroext %evl) {
873 ; CHECK-LABEL: vsll_vv_v16i32:
875 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
876 ; CHECK-NEXT: vsll.vv v8, v8, v12, v0.t
878 %v = call <16 x i32> @llvm.vp.shl.v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 %evl)
882 define <16 x i32> @vsll_vv_v16i32_unmasked(<16 x i32> %va, <16 x i32> %b, i32 zeroext %evl) {
883 ; CHECK-LABEL: vsll_vv_v16i32_unmasked:
885 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
886 ; CHECK-NEXT: vsll.vv v8, v8, v12
888 %head = insertelement <16 x i1> poison, i1 true, i32 0
889 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
890 %v = call <16 x i32> @llvm.vp.shl.v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 %evl)
894 define <16 x i32> @vsll_vx_v16i32(<16 x i32> %va, i32 %b, <16 x i1> %m, i32 zeroext %evl) {
895 ; CHECK-LABEL: vsll_vx_v16i32:
897 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
898 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
900 %elt.head = insertelement <16 x i32> poison, i32 %b, i32 0
901 %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
902 %v = call <16 x i32> @llvm.vp.shl.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> %m, i32 %evl)
906 define <16 x i32> @vsll_vx_v16i32_unmasked(<16 x i32> %va, i32 %b, i32 zeroext %evl) {
907 ; CHECK-LABEL: vsll_vx_v16i32_unmasked:
909 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
910 ; CHECK-NEXT: vsll.vx v8, v8, a0
912 %elt.head = insertelement <16 x i32> poison, i32 %b, i32 0
913 %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
914 %head = insertelement <16 x i1> poison, i1 true, i32 0
915 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
916 %v = call <16 x i32> @llvm.vp.shl.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> %m, i32 %evl)
920 define <16 x i32> @vsll_vi_v16i32(<16 x i32> %va, <16 x i1> %m, i32 zeroext %evl) {
921 ; CHECK-LABEL: vsll_vi_v16i32:
923 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
924 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
926 %elt.head = insertelement <16 x i32> poison, i32 3, i32 0
927 %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
928 %v = call <16 x i32> @llvm.vp.shl.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> %m, i32 %evl)
932 define <16 x i32> @vsll_vi_v16i32_unmasked(<16 x i32> %va, i32 zeroext %evl) {
933 ; CHECK-LABEL: vsll_vi_v16i32_unmasked:
935 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
936 ; CHECK-NEXT: vsll.vi v8, v8, 3
938 %elt.head = insertelement <16 x i32> poison, i32 3, i32 0
939 %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
940 %head = insertelement <16 x i1> poison, i1 true, i32 0
941 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
942 %v = call <16 x i32> @llvm.vp.shl.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> %m, i32 %evl)
946 declare <2 x i64> @llvm.vp.shl.v2i64(<2 x i64>, <2 x i64>, <2 x i1>, i32)
948 define <2 x i64> @vsll_vv_v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 zeroext %evl) {
949 ; CHECK-LABEL: vsll_vv_v2i64:
951 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
952 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
954 %v = call <2 x i64> @llvm.vp.shl.v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 %evl)
958 define <2 x i64> @vsll_vv_v2i64_unmasked(<2 x i64> %va, <2 x i64> %b, i32 zeroext %evl) {
959 ; CHECK-LABEL: vsll_vv_v2i64_unmasked:
961 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
962 ; CHECK-NEXT: vsll.vv v8, v8, v9
964 %head = insertelement <2 x i1> poison, i1 true, i32 0
965 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
966 %v = call <2 x i64> @llvm.vp.shl.v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 %evl)
970 define <2 x i64> @vsll_vx_v2i64(<2 x i64> %va, i64 %b, <2 x i1> %m, i32 zeroext %evl) {
971 ; RV32-LABEL: vsll_vx_v2i64:
973 ; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma
974 ; RV32-NEXT: vsll.vx v8, v8, a0, v0.t
977 ; RV64-LABEL: vsll_vx_v2i64:
979 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
980 ; RV64-NEXT: vsll.vx v8, v8, a0, v0.t
982 %elt.head = insertelement <2 x i64> poison, i64 %b, i32 0
983 %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
984 %v = call <2 x i64> @llvm.vp.shl.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> %m, i32 %evl)
988 define <2 x i64> @vsll_vx_v2i64_unmasked(<2 x i64> %va, i64 %b, i32 zeroext %evl) {
989 ; RV32-LABEL: vsll_vx_v2i64_unmasked:
991 ; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma
992 ; RV32-NEXT: vsll.vx v8, v8, a0
995 ; RV64-LABEL: vsll_vx_v2i64_unmasked:
997 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
998 ; RV64-NEXT: vsll.vx v8, v8, a0
1000 %elt.head = insertelement <2 x i64> poison, i64 %b, i32 0
1001 %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
1002 %head = insertelement <2 x i1> poison, i1 true, i32 0
1003 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
1004 %v = call <2 x i64> @llvm.vp.shl.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> %m, i32 %evl)
1008 define <2 x i64> @vsll_vi_v2i64(<2 x i64> %va, <2 x i1> %m, i32 zeroext %evl) {
1009 ; CHECK-LABEL: vsll_vi_v2i64:
1011 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1012 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
1014 %elt.head = insertelement <2 x i64> poison, i64 3, i32 0
1015 %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
1016 %v = call <2 x i64> @llvm.vp.shl.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> %m, i32 %evl)
1020 define <2 x i64> @vsll_vi_v2i64_unmasked(<2 x i64> %va, i32 zeroext %evl) {
1021 ; CHECK-LABEL: vsll_vi_v2i64_unmasked:
1023 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1024 ; CHECK-NEXT: vsll.vi v8, v8, 3
1026 %elt.head = insertelement <2 x i64> poison, i64 3, i32 0
1027 %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
1028 %head = insertelement <2 x i1> poison, i1 true, i32 0
1029 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
1030 %v = call <2 x i64> @llvm.vp.shl.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> %m, i32 %evl)
1034 declare <4 x i64> @llvm.vp.shl.v4i64(<4 x i64>, <4 x i64>, <4 x i1>, i32)
1036 define <4 x i64> @vsll_vv_v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 zeroext %evl) {
1037 ; CHECK-LABEL: vsll_vv_v4i64:
1039 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1040 ; CHECK-NEXT: vsll.vv v8, v8, v10, v0.t
1042 %v = call <4 x i64> @llvm.vp.shl.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 %evl)
1046 define <4 x i64> @vsll_vv_v4i64_unmasked(<4 x i64> %va, <4 x i64> %b, i32 zeroext %evl) {
1047 ; CHECK-LABEL: vsll_vv_v4i64_unmasked:
1049 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1050 ; CHECK-NEXT: vsll.vv v8, v8, v10
1052 %head = insertelement <4 x i1> poison, i1 true, i32 0
1053 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
1054 %v = call <4 x i64> @llvm.vp.shl.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 %evl)
1058 define <4 x i64> @vsll_vx_v4i64(<4 x i64> %va, i64 %b, <4 x i1> %m, i32 zeroext %evl) {
1059 ; RV32-LABEL: vsll_vx_v4i64:
1061 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
1062 ; RV32-NEXT: vsll.vx v8, v8, a0, v0.t
1065 ; RV64-LABEL: vsll_vx_v4i64:
1067 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
1068 ; RV64-NEXT: vsll.vx v8, v8, a0, v0.t
1070 %elt.head = insertelement <4 x i64> poison, i64 %b, i32 0
1071 %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
1072 %v = call <4 x i64> @llvm.vp.shl.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> %m, i32 %evl)
1076 define <4 x i64> @vsll_vx_v4i64_unmasked(<4 x i64> %va, i64 %b, i32 zeroext %evl) {
1077 ; RV32-LABEL: vsll_vx_v4i64_unmasked:
1079 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
1080 ; RV32-NEXT: vsll.vx v8, v8, a0
1083 ; RV64-LABEL: vsll_vx_v4i64_unmasked:
1085 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
1086 ; RV64-NEXT: vsll.vx v8, v8, a0
1088 %elt.head = insertelement <4 x i64> poison, i64 %b, i32 0
1089 %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
1090 %head = insertelement <4 x i1> poison, i1 true, i32 0
1091 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
1092 %v = call <4 x i64> @llvm.vp.shl.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> %m, i32 %evl)
1096 define <4 x i64> @vsll_vi_v4i64(<4 x i64> %va, <4 x i1> %m, i32 zeroext %evl) {
1097 ; CHECK-LABEL: vsll_vi_v4i64:
1099 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1100 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
1102 %elt.head = insertelement <4 x i64> poison, i64 3, i32 0
1103 %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
1104 %v = call <4 x i64> @llvm.vp.shl.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> %m, i32 %evl)
1108 define <4 x i64> @vsll_vi_v4i64_unmasked(<4 x i64> %va, i32 zeroext %evl) {
1109 ; CHECK-LABEL: vsll_vi_v4i64_unmasked:
1111 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1112 ; CHECK-NEXT: vsll.vi v8, v8, 3
1114 %elt.head = insertelement <4 x i64> poison, i64 3, i32 0
1115 %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
1116 %head = insertelement <4 x i1> poison, i1 true, i32 0
1117 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
1118 %v = call <4 x i64> @llvm.vp.shl.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> %m, i32 %evl)
1122 declare <8 x i64> @llvm.vp.shl.v8i64(<8 x i64>, <8 x i64>, <8 x i1>, i32)
1124 define <8 x i64> @vsll_vv_v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 zeroext %evl) {
1125 ; CHECK-LABEL: vsll_vv_v8i64:
1127 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1128 ; CHECK-NEXT: vsll.vv v8, v8, v12, v0.t
1130 %v = call <8 x i64> @llvm.vp.shl.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 %evl)
1134 define <8 x i64> @vsll_vv_v8i64_unmasked(<8 x i64> %va, <8 x i64> %b, i32 zeroext %evl) {
1135 ; CHECK-LABEL: vsll_vv_v8i64_unmasked:
1137 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1138 ; CHECK-NEXT: vsll.vv v8, v8, v12
1140 %head = insertelement <8 x i1> poison, i1 true, i32 0
1141 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
1142 %v = call <8 x i64> @llvm.vp.shl.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 %evl)
1146 define <8 x i64> @vsll_vx_v8i64(<8 x i64> %va, i64 %b, <8 x i1> %m, i32 zeroext %evl) {
1147 ; RV32-LABEL: vsll_vx_v8i64:
1149 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
1150 ; RV32-NEXT: vsll.vx v8, v8, a0, v0.t
1153 ; RV64-LABEL: vsll_vx_v8i64:
1155 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
1156 ; RV64-NEXT: vsll.vx v8, v8, a0, v0.t
1158 %elt.head = insertelement <8 x i64> poison, i64 %b, i32 0
1159 %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
1160 %v = call <8 x i64> @llvm.vp.shl.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> %m, i32 %evl)
1164 define <8 x i64> @vsll_vx_v8i64_unmasked(<8 x i64> %va, i64 %b, i32 zeroext %evl) {
1165 ; RV32-LABEL: vsll_vx_v8i64_unmasked:
1167 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
1168 ; RV32-NEXT: vsll.vx v8, v8, a0
1171 ; RV64-LABEL: vsll_vx_v8i64_unmasked:
1173 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
1174 ; RV64-NEXT: vsll.vx v8, v8, a0
1176 %elt.head = insertelement <8 x i64> poison, i64 %b, i32 0
1177 %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
1178 %head = insertelement <8 x i1> poison, i1 true, i32 0
1179 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
1180 %v = call <8 x i64> @llvm.vp.shl.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> %m, i32 %evl)
1184 define <8 x i64> @vsll_vi_v8i64(<8 x i64> %va, <8 x i1> %m, i32 zeroext %evl) {
1185 ; CHECK-LABEL: vsll_vi_v8i64:
1187 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1188 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
1190 %elt.head = insertelement <8 x i64> poison, i64 3, i32 0
1191 %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
1192 %v = call <8 x i64> @llvm.vp.shl.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> %m, i32 %evl)
1196 define <8 x i64> @vsll_vi_v8i64_unmasked(<8 x i64> %va, i32 zeroext %evl) {
1197 ; CHECK-LABEL: vsll_vi_v8i64_unmasked:
1199 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1200 ; CHECK-NEXT: vsll.vi v8, v8, 3
1202 %elt.head = insertelement <8 x i64> poison, i64 3, i32 0
1203 %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
1204 %head = insertelement <8 x i1> poison, i1 true, i32 0
1205 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
1206 %v = call <8 x i64> @llvm.vp.shl.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> %m, i32 %evl)
1210 declare <16 x i64> @llvm.vp.shl.v16i64(<16 x i64>, <16 x i64>, <16 x i1>, i32)
1212 define <16 x i64> @vsll_vv_v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 zeroext %evl) {
1213 ; CHECK-LABEL: vsll_vv_v16i64:
1215 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1216 ; CHECK-NEXT: vsll.vv v8, v8, v16, v0.t
1218 %v = call <16 x i64> @llvm.vp.shl.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 %evl)
1222 define <16 x i64> @vsll_vv_v16i64_unmasked(<16 x i64> %va, <16 x i64> %b, i32 zeroext %evl) {
1223 ; CHECK-LABEL: vsll_vv_v16i64_unmasked:
1225 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1226 ; CHECK-NEXT: vsll.vv v8, v8, v16
1228 %head = insertelement <16 x i1> poison, i1 true, i32 0
1229 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
1230 %v = call <16 x i64> @llvm.vp.shl.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 %evl)
1234 define <16 x i64> @vsll_vx_v16i64(<16 x i64> %va, i64 %b, <16 x i1> %m, i32 zeroext %evl) {
1235 ; RV32-LABEL: vsll_vx_v16i64:
1237 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
1238 ; RV32-NEXT: vsll.vx v8, v8, a0, v0.t
1241 ; RV64-LABEL: vsll_vx_v16i64:
1243 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1244 ; RV64-NEXT: vsll.vx v8, v8, a0, v0.t
1246 %elt.head = insertelement <16 x i64> poison, i64 %b, i32 0
1247 %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
1248 %v = call <16 x i64> @llvm.vp.shl.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> %m, i32 %evl)
1252 define <16 x i64> @vsll_vx_v16i64_unmasked(<16 x i64> %va, i64 %b, i32 zeroext %evl) {
1253 ; RV32-LABEL: vsll_vx_v16i64_unmasked:
1255 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
1256 ; RV32-NEXT: vsll.vx v8, v8, a0
1259 ; RV64-LABEL: vsll_vx_v16i64_unmasked:
1261 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1262 ; RV64-NEXT: vsll.vx v8, v8, a0
1264 %elt.head = insertelement <16 x i64> poison, i64 %b, i32 0
1265 %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
1266 %head = insertelement <16 x i1> poison, i1 true, i32 0
1267 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
1268 %v = call <16 x i64> @llvm.vp.shl.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> %m, i32 %evl)
1272 define <16 x i64> @vsll_vi_v16i64(<16 x i64> %va, <16 x i1> %m, i32 zeroext %evl) {
1273 ; CHECK-LABEL: vsll_vi_v16i64:
1275 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1276 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
1278 %elt.head = insertelement <16 x i64> poison, i64 3, i32 0
1279 %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
1280 %v = call <16 x i64> @llvm.vp.shl.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> %m, i32 %evl)
1284 define <16 x i64> @vsll_vi_v16i64_unmasked(<16 x i64> %va, i32 zeroext %evl) {
1285 ; CHECK-LABEL: vsll_vi_v16i64_unmasked:
1287 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1288 ; CHECK-NEXT: vsll.vi v8, v8, 3
1290 %elt.head = insertelement <16 x i64> poison, i64 3, i32 0
1291 %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
1292 %head = insertelement <16 x i1> poison, i1 true, i32 0
1293 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
1294 %v = call <16 x i64> @llvm.vp.shl.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> %m, i32 %evl)