[TTI] getTypeBasedIntrinsicInstrCost - add basic handling for strided load/store...
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vshl-vp.ll
blobf5c46aec86b8641aaa37129fabd4d76bb4e47e27
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 <vscale x 8 x i7> @llvm.vp.shl.nxv8i7(<vscale x 8 x i7>, <vscale x 8 x i7>, <vscale x 8 x i1>, i32)
9 define <vscale x 8 x i7> @vsll_vx_nxv8i7(<vscale x 8 x i7> %a, i7 signext %b, <vscale x 8 x i1> %mask, i32 zeroext %evl) {
10 ; CHECK-LABEL: vsll_vx_nxv8i7:
11 ; CHECK:       # %bb.0:
12 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
13 ; CHECK-NEXT:    vmv.v.x v9, a0
14 ; CHECK-NEXT:    li a0, 127
15 ; CHECK-NEXT:    vand.vx v9, v9, a0, v0.t
16 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
17 ; CHECK-NEXT:    ret
18   %elt.head = insertelement <vscale x 8 x i7> poison, i7 %b, i32 0
19   %vb = shufflevector <vscale x 8 x i7> %elt.head, <vscale x 8 x i7> poison, <vscale x 8 x i32> zeroinitializer
20   %v = call <vscale x 8 x i7> @llvm.vp.shl.nxv8i7(<vscale x 8 x i7> %a, <vscale x 8 x i7> %vb, <vscale x 8 x i1> %mask, i32 %evl)
21   ret <vscale x 8 x i7> %v
24 declare <vscale x 1 x i8> @llvm.vp.shl.nxv1i8(<vscale x 1 x i8>, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
26 define <vscale x 1 x i8> @vsll_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
27 ; CHECK-LABEL: vsll_vv_nxv1i8:
28 ; CHECK:       # %bb.0:
29 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
30 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
31 ; CHECK-NEXT:    ret
32   %v = call <vscale x 1 x i8> @llvm.vp.shl.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32 %evl)
33   ret <vscale x 1 x i8> %v
36 define <vscale x 1 x i8> @vsll_vv_nxv1i8_unmasked(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, i32 zeroext %evl) {
37 ; CHECK-LABEL: vsll_vv_nxv1i8_unmasked:
38 ; CHECK:       # %bb.0:
39 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
40 ; CHECK-NEXT:    vsll.vv v8, v8, v9
41 ; CHECK-NEXT:    ret
42   %v = call <vscale x 1 x i8> @llvm.vp.shl.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
43   ret <vscale x 1 x i8> %v
46 define <vscale x 1 x i8> @vsll_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
47 ; CHECK-LABEL: vsll_vx_nxv1i8:
48 ; CHECK:       # %bb.0:
49 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
50 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
51 ; CHECK-NEXT:    ret
52   %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
53   %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
54   %v = call <vscale x 1 x i8> @llvm.vp.shl.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 %evl)
55   ret <vscale x 1 x i8> %v
58 define <vscale x 1 x i8> @vsll_vx_nxv1i8_unmasked(<vscale x 1 x i8> %va, i8 %b, i32 zeroext %evl) {
59 ; CHECK-LABEL: vsll_vx_nxv1i8_unmasked:
60 ; CHECK:       # %bb.0:
61 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
62 ; CHECK-NEXT:    vsll.vx v8, v8, a0
63 ; CHECK-NEXT:    ret
64   %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
65   %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
66   %v = call <vscale x 1 x i8> @llvm.vp.shl.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
67   ret <vscale x 1 x i8> %v
70 define <vscale x 1 x i8> @vsll_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
71 ; CHECK-LABEL: vsll_vi_nxv1i8:
72 ; CHECK:       # %bb.0:
73 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
74 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
75 ; CHECK-NEXT:    ret
76   %v = call <vscale x 1 x i8> @llvm.vp.shl.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 3), <vscale x 1 x i1> %m, i32 %evl)
77   ret <vscale x 1 x i8> %v
80 define <vscale x 1 x i8> @vsll_vi_nxv1i8_unmasked(<vscale x 1 x i8> %va, i32 zeroext %evl) {
81 ; CHECK-LABEL: vsll_vi_nxv1i8_unmasked:
82 ; CHECK:       # %bb.0:
83 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
84 ; CHECK-NEXT:    vsll.vi v8, v8, 3
85 ; CHECK-NEXT:    ret
86   %v = call <vscale x 1 x i8> @llvm.vp.shl.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 3), <vscale x 1 x i1> splat (i1 true), i32 %evl)
87   ret <vscale x 1 x i8> %v
90 declare <vscale x 2 x i8> @llvm.vp.shl.nxv2i8(<vscale x 2 x i8>, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
92 define <vscale x 2 x i8> @vsll_vv_nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
93 ; CHECK-LABEL: vsll_vv_nxv2i8:
94 ; CHECK:       # %bb.0:
95 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
96 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
97 ; CHECK-NEXT:    ret
98   %v = call <vscale x 2 x i8> @llvm.vp.shl.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> %m, i32 %evl)
99   ret <vscale x 2 x i8> %v
102 define <vscale x 2 x i8> @vsll_vv_nxv2i8_unmasked(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, i32 zeroext %evl) {
103 ; CHECK-LABEL: vsll_vv_nxv2i8_unmasked:
104 ; CHECK:       # %bb.0:
105 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
106 ; CHECK-NEXT:    vsll.vv v8, v8, v9
107 ; CHECK-NEXT:    ret
108   %v = call <vscale x 2 x i8> @llvm.vp.shl.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
109   ret <vscale x 2 x i8> %v
112 define <vscale x 2 x i8> @vsll_vx_nxv2i8(<vscale x 2 x i8> %va, i8 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
113 ; CHECK-LABEL: vsll_vx_nxv2i8:
114 ; CHECK:       # %bb.0:
115 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
116 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
117 ; CHECK-NEXT:    ret
118   %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0
119   %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
120   %v = call <vscale x 2 x i8> @llvm.vp.shl.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> %m, i32 %evl)
121   ret <vscale x 2 x i8> %v
124 define <vscale x 2 x i8> @vsll_vx_nxv2i8_unmasked(<vscale x 2 x i8> %va, i8 %b, i32 zeroext %evl) {
125 ; CHECK-LABEL: vsll_vx_nxv2i8_unmasked:
126 ; CHECK:       # %bb.0:
127 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
128 ; CHECK-NEXT:    vsll.vx v8, v8, a0
129 ; CHECK-NEXT:    ret
130   %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0
131   %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
132   %v = call <vscale x 2 x i8> @llvm.vp.shl.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
133   ret <vscale x 2 x i8> %v
136 define <vscale x 2 x i8> @vsll_vi_nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
137 ; CHECK-LABEL: vsll_vi_nxv2i8:
138 ; CHECK:       # %bb.0:
139 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
140 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
141 ; CHECK-NEXT:    ret
142   %v = call <vscale x 2 x i8> @llvm.vp.shl.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> splat (i8 3), <vscale x 2 x i1> %m, i32 %evl)
143   ret <vscale x 2 x i8> %v
146 define <vscale x 2 x i8> @vsll_vi_nxv2i8_unmasked(<vscale x 2 x i8> %va, i32 zeroext %evl) {
147 ; CHECK-LABEL: vsll_vi_nxv2i8_unmasked:
148 ; CHECK:       # %bb.0:
149 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
150 ; CHECK-NEXT:    vsll.vi v8, v8, 3
151 ; CHECK-NEXT:    ret
152   %v = call <vscale x 2 x i8> @llvm.vp.shl.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> splat (i8 3), <vscale x 2 x i1> splat (i1 true), i32 %evl)
153   ret <vscale x 2 x i8> %v
156 declare <vscale x 4 x i8> @llvm.vp.shl.nxv4i8(<vscale x 4 x i8>, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
158 define <vscale x 4 x i8> @vsll_vv_nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
159 ; CHECK-LABEL: vsll_vv_nxv4i8:
160 ; CHECK:       # %bb.0:
161 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
162 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
163 ; CHECK-NEXT:    ret
164   %v = call <vscale x 4 x i8> @llvm.vp.shl.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> %m, i32 %evl)
165   ret <vscale x 4 x i8> %v
168 define <vscale x 4 x i8> @vsll_vv_nxv4i8_unmasked(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, i32 zeroext %evl) {
169 ; CHECK-LABEL: vsll_vv_nxv4i8_unmasked:
170 ; CHECK:       # %bb.0:
171 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
172 ; CHECK-NEXT:    vsll.vv v8, v8, v9
173 ; CHECK-NEXT:    ret
174   %v = call <vscale x 4 x i8> @llvm.vp.shl.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
175   ret <vscale x 4 x i8> %v
178 define <vscale x 4 x i8> @vsll_vx_nxv4i8(<vscale x 4 x i8> %va, i8 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
179 ; CHECK-LABEL: vsll_vx_nxv4i8:
180 ; CHECK:       # %bb.0:
181 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
182 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
183 ; CHECK-NEXT:    ret
184   %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0
185   %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
186   %v = call <vscale x 4 x i8> @llvm.vp.shl.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> %m, i32 %evl)
187   ret <vscale x 4 x i8> %v
190 define <vscale x 4 x i8> @vsll_vx_nxv4i8_unmasked(<vscale x 4 x i8> %va, i8 %b, i32 zeroext %evl) {
191 ; CHECK-LABEL: vsll_vx_nxv4i8_unmasked:
192 ; CHECK:       # %bb.0:
193 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
194 ; CHECK-NEXT:    vsll.vx v8, v8, a0
195 ; CHECK-NEXT:    ret
196   %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0
197   %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
198   %v = call <vscale x 4 x i8> @llvm.vp.shl.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
199   ret <vscale x 4 x i8> %v
202 define <vscale x 4 x i8> @vsll_vi_nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
203 ; CHECK-LABEL: vsll_vi_nxv4i8:
204 ; CHECK:       # %bb.0:
205 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
206 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
207 ; CHECK-NEXT:    ret
208   %v = call <vscale x 4 x i8> @llvm.vp.shl.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> splat (i8 3), <vscale x 4 x i1> %m, i32 %evl)
209   ret <vscale x 4 x i8> %v
212 define <vscale x 4 x i8> @vsll_vi_nxv4i8_unmasked(<vscale x 4 x i8> %va, i32 zeroext %evl) {
213 ; CHECK-LABEL: vsll_vi_nxv4i8_unmasked:
214 ; CHECK:       # %bb.0:
215 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
216 ; CHECK-NEXT:    vsll.vi v8, v8, 3
217 ; CHECK-NEXT:    ret
218   %v = call <vscale x 4 x i8> @llvm.vp.shl.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> splat (i8 3), <vscale x 4 x i1> splat (i1 true), i32 %evl)
219   ret <vscale x 4 x i8> %v
222 declare <vscale x 5 x i8> @llvm.vp.shl.nxv5i8(<vscale x 5 x i8>, <vscale x 5 x i8>, <vscale x 5 x i1>, i32)
224 define <vscale x 5 x i8> @vsll_vv_nxv5i8(<vscale x 5 x i8> %va, <vscale x 5 x i8> %b, <vscale x 5 x i1> %m, i32 zeroext %evl) {
225 ; CHECK-LABEL: vsll_vv_nxv5i8:
226 ; CHECK:       # %bb.0:
227 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
228 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
229 ; CHECK-NEXT:    ret
230   %v = call <vscale x 5 x i8> @llvm.vp.shl.nxv5i8(<vscale x 5 x i8> %va, <vscale x 5 x i8> %b, <vscale x 5 x i1> %m, i32 %evl)
231   ret <vscale x 5 x i8> %v
234 declare <vscale x 8 x i8> @llvm.vp.shl.nxv8i8(<vscale x 8 x i8>, <vscale x 8 x i8>, <vscale x 8 x i1>, i32)
236 define <vscale x 8 x i8> @vsll_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
237 ; CHECK-LABEL: vsll_vv_nxv8i8:
238 ; CHECK:       # %bb.0:
239 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
240 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
241 ; CHECK-NEXT:    ret
242   %v = call <vscale x 8 x i8> @llvm.vp.shl.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> %m, i32 %evl)
243   ret <vscale x 8 x i8> %v
246 define <vscale x 8 x i8> @vsll_vv_nxv8i8_unmasked(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, i32 zeroext %evl) {
247 ; CHECK-LABEL: vsll_vv_nxv8i8_unmasked:
248 ; CHECK:       # %bb.0:
249 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
250 ; CHECK-NEXT:    vsll.vv v8, v8, v9
251 ; CHECK-NEXT:    ret
252   %v = call <vscale x 8 x i8> @llvm.vp.shl.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
253   ret <vscale x 8 x i8> %v
256 define <vscale x 8 x i8> @vsll_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
257 ; CHECK-LABEL: vsll_vx_nxv8i8:
258 ; CHECK:       # %bb.0:
259 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
260 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
261 ; CHECK-NEXT:    ret
262   %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
263   %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
264   %v = call <vscale x 8 x i8> @llvm.vp.shl.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 %evl)
265   ret <vscale x 8 x i8> %v
268 define <vscale x 8 x i8> @vsll_vx_nxv8i8_unmasked(<vscale x 8 x i8> %va, i8 %b, i32 zeroext %evl) {
269 ; CHECK-LABEL: vsll_vx_nxv8i8_unmasked:
270 ; CHECK:       # %bb.0:
271 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
272 ; CHECK-NEXT:    vsll.vx v8, v8, a0
273 ; CHECK-NEXT:    ret
274   %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
275   %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
276   %v = call <vscale x 8 x i8> @llvm.vp.shl.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
277   ret <vscale x 8 x i8> %v
280 define <vscale x 8 x i8> @vsll_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
281 ; CHECK-LABEL: vsll_vi_nxv8i8:
282 ; CHECK:       # %bb.0:
283 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
284 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
285 ; CHECK-NEXT:    ret
286   %v = call <vscale x 8 x i8> @llvm.vp.shl.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 3), <vscale x 8 x i1> %m, i32 %evl)
287   ret <vscale x 8 x i8> %v
290 define <vscale x 8 x i8> @vsll_vi_nxv8i8_unmasked(<vscale x 8 x i8> %va, i32 zeroext %evl) {
291 ; CHECK-LABEL: vsll_vi_nxv8i8_unmasked:
292 ; CHECK:       # %bb.0:
293 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
294 ; CHECK-NEXT:    vsll.vi v8, v8, 3
295 ; CHECK-NEXT:    ret
296   %v = call <vscale x 8 x i8> @llvm.vp.shl.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 3), <vscale x 8 x i1> splat (i1 true), i32 %evl)
297   ret <vscale x 8 x i8> %v
300 declare <vscale x 16 x i8> @llvm.vp.shl.nxv16i8(<vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i1>, i32)
302 define <vscale x 16 x i8> @vsll_vv_nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
303 ; CHECK-LABEL: vsll_vv_nxv16i8:
304 ; CHECK:       # %bb.0:
305 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
306 ; CHECK-NEXT:    vsll.vv v8, v8, v10, v0.t
307 ; CHECK-NEXT:    ret
308   %v = call <vscale x 16 x i8> @llvm.vp.shl.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> %m, i32 %evl)
309   ret <vscale x 16 x i8> %v
312 define <vscale x 16 x i8> @vsll_vv_nxv16i8_unmasked(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, i32 zeroext %evl) {
313 ; CHECK-LABEL: vsll_vv_nxv16i8_unmasked:
314 ; CHECK:       # %bb.0:
315 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
316 ; CHECK-NEXT:    vsll.vv v8, v8, v10
317 ; CHECK-NEXT:    ret
318   %v = call <vscale x 16 x i8> @llvm.vp.shl.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)
319   ret <vscale x 16 x i8> %v
322 define <vscale x 16 x i8> @vsll_vx_nxv16i8(<vscale x 16 x i8> %va, i8 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
323 ; CHECK-LABEL: vsll_vx_nxv16i8:
324 ; CHECK:       # %bb.0:
325 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
326 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
327 ; CHECK-NEXT:    ret
328   %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0
329   %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
330   %v = call <vscale x 16 x i8> @llvm.vp.shl.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> %m, i32 %evl)
331   ret <vscale x 16 x i8> %v
334 define <vscale x 16 x i8> @vsll_vx_nxv16i8_unmasked(<vscale x 16 x i8> %va, i8 %b, i32 zeroext %evl) {
335 ; CHECK-LABEL: vsll_vx_nxv16i8_unmasked:
336 ; CHECK:       # %bb.0:
337 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
338 ; CHECK-NEXT:    vsll.vx v8, v8, a0
339 ; CHECK-NEXT:    ret
340   %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0
341   %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
342   %v = call <vscale x 16 x i8> @llvm.vp.shl.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)
343   ret <vscale x 16 x i8> %v
346 define <vscale x 16 x i8> @vsll_vi_nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
347 ; CHECK-LABEL: vsll_vi_nxv16i8:
348 ; CHECK:       # %bb.0:
349 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
350 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
351 ; CHECK-NEXT:    ret
352   %v = call <vscale x 16 x i8> @llvm.vp.shl.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> splat (i8 3), <vscale x 16 x i1> %m, i32 %evl)
353   ret <vscale x 16 x i8> %v
356 define <vscale x 16 x i8> @vsll_vi_nxv16i8_unmasked(<vscale x 16 x i8> %va, i32 zeroext %evl) {
357 ; CHECK-LABEL: vsll_vi_nxv16i8_unmasked:
358 ; CHECK:       # %bb.0:
359 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
360 ; CHECK-NEXT:    vsll.vi v8, v8, 3
361 ; CHECK-NEXT:    ret
362   %v = call <vscale x 16 x i8> @llvm.vp.shl.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> splat (i8 3), <vscale x 16 x i1> splat (i1 true), i32 %evl)
363   ret <vscale x 16 x i8> %v
366 declare <vscale x 32 x i8> @llvm.vp.shl.nxv32i8(<vscale x 32 x i8>, <vscale x 32 x i8>, <vscale x 32 x i1>, i32)
368 define <vscale x 32 x i8> @vsll_vv_nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
369 ; CHECK-LABEL: vsll_vv_nxv32i8:
370 ; CHECK:       # %bb.0:
371 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
372 ; CHECK-NEXT:    vsll.vv v8, v8, v12, v0.t
373 ; CHECK-NEXT:    ret
374   %v = call <vscale x 32 x i8> @llvm.vp.shl.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> %m, i32 %evl)
375   ret <vscale x 32 x i8> %v
378 define <vscale x 32 x i8> @vsll_vv_nxv32i8_unmasked(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, i32 zeroext %evl) {
379 ; CHECK-LABEL: vsll_vv_nxv32i8_unmasked:
380 ; CHECK:       # %bb.0:
381 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
382 ; CHECK-NEXT:    vsll.vv v8, v8, v12
383 ; CHECK-NEXT:    ret
384   %v = call <vscale x 32 x i8> @llvm.vp.shl.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> splat (i1 true), i32 %evl)
385   ret <vscale x 32 x i8> %v
388 define <vscale x 32 x i8> @vsll_vx_nxv32i8(<vscale x 32 x i8> %va, i8 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
389 ; CHECK-LABEL: vsll_vx_nxv32i8:
390 ; CHECK:       # %bb.0:
391 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
392 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
393 ; CHECK-NEXT:    ret
394   %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0
395   %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
396   %v = call <vscale x 32 x i8> @llvm.vp.shl.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> %m, i32 %evl)
397   ret <vscale x 32 x i8> %v
400 define <vscale x 32 x i8> @vsll_vx_nxv32i8_unmasked(<vscale x 32 x i8> %va, i8 %b, i32 zeroext %evl) {
401 ; CHECK-LABEL: vsll_vx_nxv32i8_unmasked:
402 ; CHECK:       # %bb.0:
403 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
404 ; CHECK-NEXT:    vsll.vx v8, v8, a0
405 ; CHECK-NEXT:    ret
406   %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0
407   %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
408   %v = call <vscale x 32 x i8> @llvm.vp.shl.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> splat (i1 true), i32 %evl)
409   ret <vscale x 32 x i8> %v
412 define <vscale x 32 x i8> @vsll_vi_nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i1> %m, i32 zeroext %evl) {
413 ; CHECK-LABEL: vsll_vi_nxv32i8:
414 ; CHECK:       # %bb.0:
415 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
416 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
417 ; CHECK-NEXT:    ret
418   %v = call <vscale x 32 x i8> @llvm.vp.shl.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> splat (i8 3), <vscale x 32 x i1> %m, i32 %evl)
419   ret <vscale x 32 x i8> %v
422 define <vscale x 32 x i8> @vsll_vi_nxv32i8_unmasked(<vscale x 32 x i8> %va, i32 zeroext %evl) {
423 ; CHECK-LABEL: vsll_vi_nxv32i8_unmasked:
424 ; CHECK:       # %bb.0:
425 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
426 ; CHECK-NEXT:    vsll.vi v8, v8, 3
427 ; CHECK-NEXT:    ret
428   %v = call <vscale x 32 x i8> @llvm.vp.shl.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> splat (i8 3), <vscale x 32 x i1> splat (i1 true), i32 %evl)
429   ret <vscale x 32 x i8> %v
432 declare <vscale x 64 x i8> @llvm.vp.shl.nxv64i8(<vscale x 64 x i8>, <vscale x 64 x i8>, <vscale x 64 x i1>, i32)
434 define <vscale x 64 x i8> @vsll_vv_nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> %m, i32 zeroext %evl) {
435 ; CHECK-LABEL: vsll_vv_nxv64i8:
436 ; CHECK:       # %bb.0:
437 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
438 ; CHECK-NEXT:    vsll.vv v8, v8, v16, v0.t
439 ; CHECK-NEXT:    ret
440   %v = call <vscale x 64 x i8> @llvm.vp.shl.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> %m, i32 %evl)
441   ret <vscale x 64 x i8> %v
444 define <vscale x 64 x i8> @vsll_vv_nxv64i8_unmasked(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, i32 zeroext %evl) {
445 ; CHECK-LABEL: vsll_vv_nxv64i8_unmasked:
446 ; CHECK:       # %bb.0:
447 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
448 ; CHECK-NEXT:    vsll.vv v8, v8, v16
449 ; CHECK-NEXT:    ret
450   %v = call <vscale x 64 x i8> @llvm.vp.shl.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> splat (i1 true), i32 %evl)
451   ret <vscale x 64 x i8> %v
454 define <vscale x 64 x i8> @vsll_vx_nxv64i8(<vscale x 64 x i8> %va, i8 %b, <vscale x 64 x i1> %m, i32 zeroext %evl) {
455 ; CHECK-LABEL: vsll_vx_nxv64i8:
456 ; CHECK:       # %bb.0:
457 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
458 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
459 ; CHECK-NEXT:    ret
460   %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0
461   %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
462   %v = call <vscale x 64 x i8> @llvm.vp.shl.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> %m, i32 %evl)
463   ret <vscale x 64 x i8> %v
466 define <vscale x 64 x i8> @vsll_vx_nxv64i8_unmasked(<vscale x 64 x i8> %va, i8 %b, i32 zeroext %evl) {
467 ; CHECK-LABEL: vsll_vx_nxv64i8_unmasked:
468 ; CHECK:       # %bb.0:
469 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
470 ; CHECK-NEXT:    vsll.vx v8, v8, a0
471 ; CHECK-NEXT:    ret
472   %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0
473   %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
474   %v = call <vscale x 64 x i8> @llvm.vp.shl.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> splat (i1 true), i32 %evl)
475   ret <vscale x 64 x i8> %v
478 define <vscale x 64 x i8> @vsll_vi_nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i1> %m, i32 zeroext %evl) {
479 ; CHECK-LABEL: vsll_vi_nxv64i8:
480 ; CHECK:       # %bb.0:
481 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
482 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
483 ; CHECK-NEXT:    ret
484   %v = call <vscale x 64 x i8> @llvm.vp.shl.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> splat (i8 3), <vscale x 64 x i1> %m, i32 %evl)
485   ret <vscale x 64 x i8> %v
488 define <vscale x 64 x i8> @vsll_vi_nxv64i8_unmasked(<vscale x 64 x i8> %va, i32 zeroext %evl) {
489 ; CHECK-LABEL: vsll_vi_nxv64i8_unmasked:
490 ; CHECK:       # %bb.0:
491 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
492 ; CHECK-NEXT:    vsll.vi v8, v8, 3
493 ; CHECK-NEXT:    ret
494   %v = call <vscale x 64 x i8> @llvm.vp.shl.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> splat (i8 3), <vscale x 64 x i1> splat (i1 true), i32 %evl)
495   ret <vscale x 64 x i8> %v
498 declare <vscale x 1 x i16> @llvm.vp.shl.nxv1i16(<vscale x 1 x i16>, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
500 define <vscale x 1 x i16> @vsll_vv_nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
501 ; CHECK-LABEL: vsll_vv_nxv1i16:
502 ; CHECK:       # %bb.0:
503 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
504 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
505 ; CHECK-NEXT:    ret
506   %v = call <vscale x 1 x i16> @llvm.vp.shl.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> %m, i32 %evl)
507   ret <vscale x 1 x i16> %v
510 define <vscale x 1 x i16> @vsll_vv_nxv1i16_unmasked(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, i32 zeroext %evl) {
511 ; CHECK-LABEL: vsll_vv_nxv1i16_unmasked:
512 ; CHECK:       # %bb.0:
513 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
514 ; CHECK-NEXT:    vsll.vv v8, v8, v9
515 ; CHECK-NEXT:    ret
516   %v = call <vscale x 1 x i16> @llvm.vp.shl.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
517   ret <vscale x 1 x i16> %v
520 define <vscale x 1 x i16> @vsll_vx_nxv1i16(<vscale x 1 x i16> %va, i16 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
521 ; CHECK-LABEL: vsll_vx_nxv1i16:
522 ; CHECK:       # %bb.0:
523 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
524 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
525 ; CHECK-NEXT:    ret
526   %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
527   %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
528   %v = call <vscale x 1 x i16> @llvm.vp.shl.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> %m, i32 %evl)
529   ret <vscale x 1 x i16> %v
532 define <vscale x 1 x i16> @vsll_vx_nxv1i16_unmasked(<vscale x 1 x i16> %va, i16 %b, i32 zeroext %evl) {
533 ; CHECK-LABEL: vsll_vx_nxv1i16_unmasked:
534 ; CHECK:       # %bb.0:
535 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
536 ; CHECK-NEXT:    vsll.vx v8, v8, a0
537 ; CHECK-NEXT:    ret
538   %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
539   %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
540   %v = call <vscale x 1 x i16> @llvm.vp.shl.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
541   ret <vscale x 1 x i16> %v
544 define <vscale x 1 x i16> @vsll_vi_nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
545 ; CHECK-LABEL: vsll_vi_nxv1i16:
546 ; CHECK:       # %bb.0:
547 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
548 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
549 ; CHECK-NEXT:    ret
550   %v = call <vscale x 1 x i16> @llvm.vp.shl.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> splat (i16 3), <vscale x 1 x i1> %m, i32 %evl)
551   ret <vscale x 1 x i16> %v
554 define <vscale x 1 x i16> @vsll_vi_nxv1i16_unmasked(<vscale x 1 x i16> %va, i32 zeroext %evl) {
555 ; CHECK-LABEL: vsll_vi_nxv1i16_unmasked:
556 ; CHECK:       # %bb.0:
557 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
558 ; CHECK-NEXT:    vsll.vi v8, v8, 3
559 ; CHECK-NEXT:    ret
560   %v = call <vscale x 1 x i16> @llvm.vp.shl.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> splat (i16 3), <vscale x 1 x i1> splat (i1 true), i32 %evl)
561   ret <vscale x 1 x i16> %v
564 declare <vscale x 2 x i16> @llvm.vp.shl.nxv2i16(<vscale x 2 x i16>, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
566 define <vscale x 2 x i16> @vsll_vv_nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
567 ; CHECK-LABEL: vsll_vv_nxv2i16:
568 ; CHECK:       # %bb.0:
569 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
570 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
571 ; CHECK-NEXT:    ret
572   %v = call <vscale x 2 x i16> @llvm.vp.shl.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> %m, i32 %evl)
573   ret <vscale x 2 x i16> %v
576 define <vscale x 2 x i16> @vsll_vv_nxv2i16_unmasked(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, i32 zeroext %evl) {
577 ; CHECK-LABEL: vsll_vv_nxv2i16_unmasked:
578 ; CHECK:       # %bb.0:
579 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
580 ; CHECK-NEXT:    vsll.vv v8, v8, v9
581 ; CHECK-NEXT:    ret
582   %v = call <vscale x 2 x i16> @llvm.vp.shl.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
583   ret <vscale x 2 x i16> %v
586 define <vscale x 2 x i16> @vsll_vx_nxv2i16(<vscale x 2 x i16> %va, i16 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
587 ; CHECK-LABEL: vsll_vx_nxv2i16:
588 ; CHECK:       # %bb.0:
589 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
590 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
591 ; CHECK-NEXT:    ret
592   %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0
593   %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
594   %v = call <vscale x 2 x i16> @llvm.vp.shl.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> %m, i32 %evl)
595   ret <vscale x 2 x i16> %v
598 define <vscale x 2 x i16> @vsll_vx_nxv2i16_unmasked(<vscale x 2 x i16> %va, i16 %b, i32 zeroext %evl) {
599 ; CHECK-LABEL: vsll_vx_nxv2i16_unmasked:
600 ; CHECK:       # %bb.0:
601 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
602 ; CHECK-NEXT:    vsll.vx v8, v8, a0
603 ; CHECK-NEXT:    ret
604   %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0
605   %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
606   %v = call <vscale x 2 x i16> @llvm.vp.shl.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
607   ret <vscale x 2 x i16> %v
610 define <vscale x 2 x i16> @vsll_vi_nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
611 ; CHECK-LABEL: vsll_vi_nxv2i16:
612 ; CHECK:       # %bb.0:
613 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
614 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
615 ; CHECK-NEXT:    ret
616   %v = call <vscale x 2 x i16> @llvm.vp.shl.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> splat (i16 3), <vscale x 2 x i1> %m, i32 %evl)
617   ret <vscale x 2 x i16> %v
620 define <vscale x 2 x i16> @vsll_vi_nxv2i16_unmasked(<vscale x 2 x i16> %va, i32 zeroext %evl) {
621 ; CHECK-LABEL: vsll_vi_nxv2i16_unmasked:
622 ; CHECK:       # %bb.0:
623 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
624 ; CHECK-NEXT:    vsll.vi v8, v8, 3
625 ; CHECK-NEXT:    ret
626   %v = call <vscale x 2 x i16> @llvm.vp.shl.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> splat (i16 3), <vscale x 2 x i1> splat (i1 true), i32 %evl)
627   ret <vscale x 2 x i16> %v
630 declare <vscale x 4 x i16> @llvm.vp.shl.nxv4i16(<vscale x 4 x i16>, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
632 define <vscale x 4 x i16> @vsll_vv_nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
633 ; CHECK-LABEL: vsll_vv_nxv4i16:
634 ; CHECK:       # %bb.0:
635 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
636 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
637 ; CHECK-NEXT:    ret
638   %v = call <vscale x 4 x i16> @llvm.vp.shl.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> %m, i32 %evl)
639   ret <vscale x 4 x i16> %v
642 define <vscale x 4 x i16> @vsll_vv_nxv4i16_unmasked(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, i32 zeroext %evl) {
643 ; CHECK-LABEL: vsll_vv_nxv4i16_unmasked:
644 ; CHECK:       # %bb.0:
645 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
646 ; CHECK-NEXT:    vsll.vv v8, v8, v9
647 ; CHECK-NEXT:    ret
648   %v = call <vscale x 4 x i16> @llvm.vp.shl.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
649   ret <vscale x 4 x i16> %v
652 define <vscale x 4 x i16> @vsll_vx_nxv4i16(<vscale x 4 x i16> %va, i16 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
653 ; CHECK-LABEL: vsll_vx_nxv4i16:
654 ; CHECK:       # %bb.0:
655 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
656 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
657 ; CHECK-NEXT:    ret
658   %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0
659   %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
660   %v = call <vscale x 4 x i16> @llvm.vp.shl.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> %m, i32 %evl)
661   ret <vscale x 4 x i16> %v
664 define <vscale x 4 x i16> @vsll_vx_nxv4i16_unmasked(<vscale x 4 x i16> %va, i16 %b, i32 zeroext %evl) {
665 ; CHECK-LABEL: vsll_vx_nxv4i16_unmasked:
666 ; CHECK:       # %bb.0:
667 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
668 ; CHECK-NEXT:    vsll.vx v8, v8, a0
669 ; CHECK-NEXT:    ret
670   %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0
671   %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
672   %v = call <vscale x 4 x i16> @llvm.vp.shl.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
673   ret <vscale x 4 x i16> %v
676 define <vscale x 4 x i16> @vsll_vi_nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
677 ; CHECK-LABEL: vsll_vi_nxv4i16:
678 ; CHECK:       # %bb.0:
679 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
680 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
681 ; CHECK-NEXT:    ret
682   %v = call <vscale x 4 x i16> @llvm.vp.shl.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> splat (i16 3), <vscale x 4 x i1> %m, i32 %evl)
683   ret <vscale x 4 x i16> %v
686 define <vscale x 4 x i16> @vsll_vi_nxv4i16_unmasked(<vscale x 4 x i16> %va, i32 zeroext %evl) {
687 ; CHECK-LABEL: vsll_vi_nxv4i16_unmasked:
688 ; CHECK:       # %bb.0:
689 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
690 ; CHECK-NEXT:    vsll.vi v8, v8, 3
691 ; CHECK-NEXT:    ret
692   %v = call <vscale x 4 x i16> @llvm.vp.shl.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> splat (i16 3), <vscale x 4 x i1> splat (i1 true), i32 %evl)
693   ret <vscale x 4 x i16> %v
696 declare <vscale x 8 x i16> @llvm.vp.shl.nxv8i16(<vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i1>, i32)
698 define <vscale x 8 x i16> @vsll_vv_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
699 ; CHECK-LABEL: vsll_vv_nxv8i16:
700 ; CHECK:       # %bb.0:
701 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
702 ; CHECK-NEXT:    vsll.vv v8, v8, v10, v0.t
703 ; CHECK-NEXT:    ret
704   %v = call <vscale x 8 x i16> @llvm.vp.shl.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> %m, i32 %evl)
705   ret <vscale x 8 x i16> %v
708 define <vscale x 8 x i16> @vsll_vv_nxv8i16_unmasked(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, i32 zeroext %evl) {
709 ; CHECK-LABEL: vsll_vv_nxv8i16_unmasked:
710 ; CHECK:       # %bb.0:
711 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
712 ; CHECK-NEXT:    vsll.vv v8, v8, v10
713 ; CHECK-NEXT:    ret
714   %v = call <vscale x 8 x i16> @llvm.vp.shl.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
715   ret <vscale x 8 x i16> %v
718 define <vscale x 8 x i16> @vsll_vx_nxv8i16(<vscale x 8 x i16> %va, i16 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
719 ; CHECK-LABEL: vsll_vx_nxv8i16:
720 ; CHECK:       # %bb.0:
721 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
722 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
723 ; CHECK-NEXT:    ret
724   %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0
725   %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
726   %v = call <vscale x 8 x i16> @llvm.vp.shl.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> %m, i32 %evl)
727   ret <vscale x 8 x i16> %v
730 define <vscale x 8 x i16> @vsll_vx_nxv8i16_unmasked(<vscale x 8 x i16> %va, i16 %b, i32 zeroext %evl) {
731 ; CHECK-LABEL: vsll_vx_nxv8i16_unmasked:
732 ; CHECK:       # %bb.0:
733 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
734 ; CHECK-NEXT:    vsll.vx v8, v8, a0
735 ; CHECK-NEXT:    ret
736   %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0
737   %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
738   %v = call <vscale x 8 x i16> @llvm.vp.shl.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
739   ret <vscale x 8 x i16> %v
742 define <vscale x 8 x i16> @vsll_vi_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
743 ; CHECK-LABEL: vsll_vi_nxv8i16:
744 ; CHECK:       # %bb.0:
745 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
746 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
747 ; CHECK-NEXT:    ret
748   %v = call <vscale x 8 x i16> @llvm.vp.shl.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> splat (i16 3), <vscale x 8 x i1> %m, i32 %evl)
749   ret <vscale x 8 x i16> %v
752 define <vscale x 8 x i16> @vsll_vi_nxv8i16_unmasked(<vscale x 8 x i16> %va, i32 zeroext %evl) {
753 ; CHECK-LABEL: vsll_vi_nxv8i16_unmasked:
754 ; CHECK:       # %bb.0:
755 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
756 ; CHECK-NEXT:    vsll.vi v8, v8, 3
757 ; CHECK-NEXT:    ret
758   %v = call <vscale x 8 x i16> @llvm.vp.shl.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> splat (i16 3), <vscale x 8 x i1> splat (i1 true), i32 %evl)
759   ret <vscale x 8 x i16> %v
762 declare <vscale x 16 x i16> @llvm.vp.shl.nxv16i16(<vscale x 16 x i16>, <vscale x 16 x i16>, <vscale x 16 x i1>, i32)
764 define <vscale x 16 x i16> @vsll_vv_nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
765 ; CHECK-LABEL: vsll_vv_nxv16i16:
766 ; CHECK:       # %bb.0:
767 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
768 ; CHECK-NEXT:    vsll.vv v8, v8, v12, v0.t
769 ; CHECK-NEXT:    ret
770   %v = call <vscale x 16 x i16> @llvm.vp.shl.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> %m, i32 %evl)
771   ret <vscale x 16 x i16> %v
774 define <vscale x 16 x i16> @vsll_vv_nxv16i16_unmasked(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, i32 zeroext %evl) {
775 ; CHECK-LABEL: vsll_vv_nxv16i16_unmasked:
776 ; CHECK:       # %bb.0:
777 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
778 ; CHECK-NEXT:    vsll.vv v8, v8, v12
779 ; CHECK-NEXT:    ret
780   %v = call <vscale x 16 x i16> @llvm.vp.shl.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)
781   ret <vscale x 16 x i16> %v
784 define <vscale x 16 x i16> @vsll_vx_nxv16i16(<vscale x 16 x i16> %va, i16 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
785 ; CHECK-LABEL: vsll_vx_nxv16i16:
786 ; CHECK:       # %bb.0:
787 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
788 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
789 ; CHECK-NEXT:    ret
790   %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0
791   %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
792   %v = call <vscale x 16 x i16> @llvm.vp.shl.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> %m, i32 %evl)
793   ret <vscale x 16 x i16> %v
796 define <vscale x 16 x i16> @vsll_vx_nxv16i16_unmasked(<vscale x 16 x i16> %va, i16 %b, i32 zeroext %evl) {
797 ; CHECK-LABEL: vsll_vx_nxv16i16_unmasked:
798 ; CHECK:       # %bb.0:
799 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
800 ; CHECK-NEXT:    vsll.vx v8, v8, a0
801 ; CHECK-NEXT:    ret
802   %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0
803   %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
804   %v = call <vscale x 16 x i16> @llvm.vp.shl.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)
805   ret <vscale x 16 x i16> %v
808 define <vscale x 16 x i16> @vsll_vi_nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
809 ; CHECK-LABEL: vsll_vi_nxv16i16:
810 ; CHECK:       # %bb.0:
811 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
812 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
813 ; CHECK-NEXT:    ret
814   %v = call <vscale x 16 x i16> @llvm.vp.shl.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> splat (i16 3), <vscale x 16 x i1> %m, i32 %evl)
815   ret <vscale x 16 x i16> %v
818 define <vscale x 16 x i16> @vsll_vi_nxv16i16_unmasked(<vscale x 16 x i16> %va, i32 zeroext %evl) {
819 ; CHECK-LABEL: vsll_vi_nxv16i16_unmasked:
820 ; CHECK:       # %bb.0:
821 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
822 ; CHECK-NEXT:    vsll.vi v8, v8, 3
823 ; CHECK-NEXT:    ret
824   %v = call <vscale x 16 x i16> @llvm.vp.shl.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> splat (i16 3), <vscale x 16 x i1> splat (i1 true), i32 %evl)
825   ret <vscale x 16 x i16> %v
828 declare <vscale x 32 x i16> @llvm.vp.shl.nxv32i16(<vscale x 32 x i16>, <vscale x 32 x i16>, <vscale x 32 x i1>, i32)
830 define <vscale x 32 x i16> @vsll_vv_nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
831 ; CHECK-LABEL: vsll_vv_nxv32i16:
832 ; CHECK:       # %bb.0:
833 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
834 ; CHECK-NEXT:    vsll.vv v8, v8, v16, v0.t
835 ; CHECK-NEXT:    ret
836   %v = call <vscale x 32 x i16> @llvm.vp.shl.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> %m, i32 %evl)
837   ret <vscale x 32 x i16> %v
840 define <vscale x 32 x i16> @vsll_vv_nxv32i16_unmasked(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, i32 zeroext %evl) {
841 ; CHECK-LABEL: vsll_vv_nxv32i16_unmasked:
842 ; CHECK:       # %bb.0:
843 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
844 ; CHECK-NEXT:    vsll.vv v8, v8, v16
845 ; CHECK-NEXT:    ret
846   %v = call <vscale x 32 x i16> @llvm.vp.shl.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> splat (i1 true), i32 %evl)
847   ret <vscale x 32 x i16> %v
850 define <vscale x 32 x i16> @vsll_vx_nxv32i16(<vscale x 32 x i16> %va, i16 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
851 ; CHECK-LABEL: vsll_vx_nxv32i16:
852 ; CHECK:       # %bb.0:
853 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
854 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
855 ; CHECK-NEXT:    ret
856   %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
857   %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
858   %v = call <vscale x 32 x i16> @llvm.vp.shl.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> %m, i32 %evl)
859   ret <vscale x 32 x i16> %v
862 define <vscale x 32 x i16> @vsll_vx_nxv32i16_unmasked(<vscale x 32 x i16> %va, i16 %b, i32 zeroext %evl) {
863 ; CHECK-LABEL: vsll_vx_nxv32i16_unmasked:
864 ; CHECK:       # %bb.0:
865 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
866 ; CHECK-NEXT:    vsll.vx v8, v8, a0
867 ; CHECK-NEXT:    ret
868   %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
869   %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
870   %v = call <vscale x 32 x i16> @llvm.vp.shl.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> splat (i1 true), i32 %evl)
871   ret <vscale x 32 x i16> %v
874 define <vscale x 32 x i16> @vsll_vi_nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i1> %m, i32 zeroext %evl) {
875 ; CHECK-LABEL: vsll_vi_nxv32i16:
876 ; CHECK:       # %bb.0:
877 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
878 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
879 ; CHECK-NEXT:    ret
880   %v = call <vscale x 32 x i16> @llvm.vp.shl.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> splat (i16 3), <vscale x 32 x i1> %m, i32 %evl)
881   ret <vscale x 32 x i16> %v
884 define <vscale x 32 x i16> @vsll_vi_nxv32i16_unmasked(<vscale x 32 x i16> %va, i32 zeroext %evl) {
885 ; CHECK-LABEL: vsll_vi_nxv32i16_unmasked:
886 ; CHECK:       # %bb.0:
887 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
888 ; CHECK-NEXT:    vsll.vi v8, v8, 3
889 ; CHECK-NEXT:    ret
890   %v = call <vscale x 32 x i16> @llvm.vp.shl.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> splat (i16 3), <vscale x 32 x i1> splat (i1 true), i32 %evl)
891   ret <vscale x 32 x i16> %v
894 declare <vscale x 1 x i32> @llvm.vp.shl.nxv1i32(<vscale x 1 x i32>, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
896 define <vscale x 1 x i32> @vsll_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
897 ; CHECK-LABEL: vsll_vv_nxv1i32:
898 ; CHECK:       # %bb.0:
899 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
900 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
901 ; CHECK-NEXT:    ret
902   %v = call <vscale x 1 x i32> @llvm.vp.shl.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> %m, i32 %evl)
903   ret <vscale x 1 x i32> %v
906 define <vscale x 1 x i32> @vsll_vv_nxv1i32_unmasked(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, i32 zeroext %evl) {
907 ; CHECK-LABEL: vsll_vv_nxv1i32_unmasked:
908 ; CHECK:       # %bb.0:
909 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
910 ; CHECK-NEXT:    vsll.vv v8, v8, v9
911 ; CHECK-NEXT:    ret
912   %v = call <vscale x 1 x i32> @llvm.vp.shl.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
913   ret <vscale x 1 x i32> %v
916 define <vscale x 1 x i32> @vsll_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
917 ; CHECK-LABEL: vsll_vx_nxv1i32:
918 ; CHECK:       # %bb.0:
919 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
920 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
921 ; CHECK-NEXT:    ret
922   %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
923   %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
924   %v = call <vscale x 1 x i32> @llvm.vp.shl.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 %evl)
925   ret <vscale x 1 x i32> %v
928 define <vscale x 1 x i32> @vsll_vx_nxv1i32_unmasked(<vscale x 1 x i32> %va, i32 %b, i32 zeroext %evl) {
929 ; CHECK-LABEL: vsll_vx_nxv1i32_unmasked:
930 ; CHECK:       # %bb.0:
931 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
932 ; CHECK-NEXT:    vsll.vx v8, v8, a0
933 ; CHECK-NEXT:    ret
934   %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
935   %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
936   %v = call <vscale x 1 x i32> @llvm.vp.shl.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
937   ret <vscale x 1 x i32> %v
940 define <vscale x 1 x i32> @vsll_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
941 ; CHECK-LABEL: vsll_vi_nxv1i32:
942 ; CHECK:       # %bb.0:
943 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
944 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
945 ; CHECK-NEXT:    ret
946   %v = call <vscale x 1 x i32> @llvm.vp.shl.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 3), <vscale x 1 x i1> %m, i32 %evl)
947   ret <vscale x 1 x i32> %v
950 define <vscale x 1 x i32> @vsll_vi_nxv1i32_unmasked(<vscale x 1 x i32> %va, i32 zeroext %evl) {
951 ; CHECK-LABEL: vsll_vi_nxv1i32_unmasked:
952 ; CHECK:       # %bb.0:
953 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
954 ; CHECK-NEXT:    vsll.vi v8, v8, 3
955 ; CHECK-NEXT:    ret
956   %v = call <vscale x 1 x i32> @llvm.vp.shl.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 3), <vscale x 1 x i1> splat (i1 true), i32 %evl)
957   ret <vscale x 1 x i32> %v
960 declare <vscale x 2 x i32> @llvm.vp.shl.nxv2i32(<vscale x 2 x i32>, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
962 define <vscale x 2 x i32> @vsll_vv_nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
963 ; CHECK-LABEL: vsll_vv_nxv2i32:
964 ; CHECK:       # %bb.0:
965 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
966 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
967 ; CHECK-NEXT:    ret
968   %v = call <vscale x 2 x i32> @llvm.vp.shl.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> %m, i32 %evl)
969   ret <vscale x 2 x i32> %v
972 define <vscale x 2 x i32> @vsll_vv_nxv2i32_unmasked(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, i32 zeroext %evl) {
973 ; CHECK-LABEL: vsll_vv_nxv2i32_unmasked:
974 ; CHECK:       # %bb.0:
975 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
976 ; CHECK-NEXT:    vsll.vv v8, v8, v9
977 ; CHECK-NEXT:    ret
978   %v = call <vscale x 2 x i32> @llvm.vp.shl.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
979   ret <vscale x 2 x i32> %v
982 define <vscale x 2 x i32> @vsll_vx_nxv2i32(<vscale x 2 x i32> %va, i32 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
983 ; CHECK-LABEL: vsll_vx_nxv2i32:
984 ; CHECK:       # %bb.0:
985 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
986 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
987 ; CHECK-NEXT:    ret
988   %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
989   %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
990   %v = call <vscale x 2 x i32> @llvm.vp.shl.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> %m, i32 %evl)
991   ret <vscale x 2 x i32> %v
994 define <vscale x 2 x i32> @vsll_vx_nxv2i32_unmasked(<vscale x 2 x i32> %va, i32 %b, i32 zeroext %evl) {
995 ; CHECK-LABEL: vsll_vx_nxv2i32_unmasked:
996 ; CHECK:       # %bb.0:
997 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
998 ; CHECK-NEXT:    vsll.vx v8, v8, a0
999 ; CHECK-NEXT:    ret
1000   %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
1001   %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1002   %v = call <vscale x 2 x i32> @llvm.vp.shl.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1003   ret <vscale x 2 x i32> %v
1006 define <vscale x 2 x i32> @vsll_vi_nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1007 ; CHECK-LABEL: vsll_vi_nxv2i32:
1008 ; CHECK:       # %bb.0:
1009 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1010 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
1011 ; CHECK-NEXT:    ret
1012   %v = call <vscale x 2 x i32> @llvm.vp.shl.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> splat (i32 3), <vscale x 2 x i1> %m, i32 %evl)
1013   ret <vscale x 2 x i32> %v
1016 define <vscale x 2 x i32> @vsll_vi_nxv2i32_unmasked(<vscale x 2 x i32> %va, i32 zeroext %evl) {
1017 ; CHECK-LABEL: vsll_vi_nxv2i32_unmasked:
1018 ; CHECK:       # %bb.0:
1019 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1020 ; CHECK-NEXT:    vsll.vi v8, v8, 3
1021 ; CHECK-NEXT:    ret
1022   %v = call <vscale x 2 x i32> @llvm.vp.shl.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> splat (i32 3), <vscale x 2 x i1> splat (i1 true), i32 %evl)
1023   ret <vscale x 2 x i32> %v
1026 declare <vscale x 4 x i32> @llvm.vp.shl.nxv4i32(<vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
1028 define <vscale x 4 x i32> @vsll_vv_nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1029 ; CHECK-LABEL: vsll_vv_nxv4i32:
1030 ; CHECK:       # %bb.0:
1031 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1032 ; CHECK-NEXT:    vsll.vv v8, v8, v10, v0.t
1033 ; CHECK-NEXT:    ret
1034   %v = call <vscale x 4 x i32> @llvm.vp.shl.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> %m, i32 %evl)
1035   ret <vscale x 4 x i32> %v
1038 define <vscale x 4 x i32> @vsll_vv_nxv4i32_unmasked(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, i32 zeroext %evl) {
1039 ; CHECK-LABEL: vsll_vv_nxv4i32_unmasked:
1040 ; CHECK:       # %bb.0:
1041 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1042 ; CHECK-NEXT:    vsll.vv v8, v8, v10
1043 ; CHECK-NEXT:    ret
1044   %v = call <vscale x 4 x i32> @llvm.vp.shl.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
1045   ret <vscale x 4 x i32> %v
1048 define <vscale x 4 x i32> @vsll_vx_nxv4i32(<vscale x 4 x i32> %va, i32 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1049 ; CHECK-LABEL: vsll_vx_nxv4i32:
1050 ; CHECK:       # %bb.0:
1051 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1052 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
1053 ; CHECK-NEXT:    ret
1054   %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
1055   %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1056   %v = call <vscale x 4 x i32> @llvm.vp.shl.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> %m, i32 %evl)
1057   ret <vscale x 4 x i32> %v
1060 define <vscale x 4 x i32> @vsll_vx_nxv4i32_unmasked(<vscale x 4 x i32> %va, i32 %b, i32 zeroext %evl) {
1061 ; CHECK-LABEL: vsll_vx_nxv4i32_unmasked:
1062 ; CHECK:       # %bb.0:
1063 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1064 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1065 ; CHECK-NEXT:    ret
1066   %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
1067   %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1068   %v = call <vscale x 4 x i32> @llvm.vp.shl.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
1069   ret <vscale x 4 x i32> %v
1072 define <vscale x 4 x i32> @vsll_vi_nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1073 ; CHECK-LABEL: vsll_vi_nxv4i32:
1074 ; CHECK:       # %bb.0:
1075 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1076 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
1077 ; CHECK-NEXT:    ret
1078   %v = call <vscale x 4 x i32> @llvm.vp.shl.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> splat (i32 3), <vscale x 4 x i1> %m, i32 %evl)
1079   ret <vscale x 4 x i32> %v
1082 define <vscale x 4 x i32> @vsll_vi_nxv4i32_unmasked(<vscale x 4 x i32> %va, i32 zeroext %evl) {
1083 ; CHECK-LABEL: vsll_vi_nxv4i32_unmasked:
1084 ; CHECK:       # %bb.0:
1085 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1086 ; CHECK-NEXT:    vsll.vi v8, v8, 3
1087 ; CHECK-NEXT:    ret
1088   %v = call <vscale x 4 x i32> @llvm.vp.shl.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> splat (i32 3), <vscale x 4 x i1> splat (i1 true), i32 %evl)
1089   ret <vscale x 4 x i32> %v
1092 declare <vscale x 8 x i32> @llvm.vp.shl.nxv8i32(<vscale x 8 x i32>, <vscale x 8 x i32>, <vscale x 8 x i1>, i32)
1094 define <vscale x 8 x i32> @vsll_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1095 ; CHECK-LABEL: vsll_vv_nxv8i32:
1096 ; CHECK:       # %bb.0:
1097 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1098 ; CHECK-NEXT:    vsll.vv v8, v8, v12, v0.t
1099 ; CHECK-NEXT:    ret
1100   %v = call <vscale x 8 x i32> @llvm.vp.shl.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> %m, i32 %evl)
1101   ret <vscale x 8 x i32> %v
1104 define <vscale x 8 x i32> @vsll_vv_nxv8i32_unmasked(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, i32 zeroext %evl) {
1105 ; CHECK-LABEL: vsll_vv_nxv8i32_unmasked:
1106 ; CHECK:       # %bb.0:
1107 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1108 ; CHECK-NEXT:    vsll.vv v8, v8, v12
1109 ; CHECK-NEXT:    ret
1110   %v = call <vscale x 8 x i32> @llvm.vp.shl.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
1111   ret <vscale x 8 x i32> %v
1114 define <vscale x 8 x i32> @vsll_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1115 ; CHECK-LABEL: vsll_vx_nxv8i32:
1116 ; CHECK:       # %bb.0:
1117 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1118 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
1119 ; CHECK-NEXT:    ret
1120   %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1121   %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1122   %v = call <vscale x 8 x i32> @llvm.vp.shl.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 %evl)
1123   ret <vscale x 8 x i32> %v
1126 define <vscale x 8 x i32> @vsll_vx_nxv8i32_unmasked(<vscale x 8 x i32> %va, i32 %b, i32 zeroext %evl) {
1127 ; CHECK-LABEL: vsll_vx_nxv8i32_unmasked:
1128 ; CHECK:       # %bb.0:
1129 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1130 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1131 ; CHECK-NEXT:    ret
1132   %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1133   %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1134   %v = call <vscale x 8 x i32> @llvm.vp.shl.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
1135   ret <vscale x 8 x i32> %v
1138 define <vscale x 8 x i32> @vsll_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1139 ; CHECK-LABEL: vsll_vi_nxv8i32:
1140 ; CHECK:       # %bb.0:
1141 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1142 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
1143 ; CHECK-NEXT:    ret
1144   %v = call <vscale x 8 x i32> @llvm.vp.shl.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 3), <vscale x 8 x i1> %m, i32 %evl)
1145   ret <vscale x 8 x i32> %v
1148 define <vscale x 8 x i32> @vsll_vi_nxv8i32_unmasked(<vscale x 8 x i32> %va, i32 zeroext %evl) {
1149 ; CHECK-LABEL: vsll_vi_nxv8i32_unmasked:
1150 ; CHECK:       # %bb.0:
1151 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1152 ; CHECK-NEXT:    vsll.vi v8, v8, 3
1153 ; CHECK-NEXT:    ret
1154   %v = call <vscale x 8 x i32> @llvm.vp.shl.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 3), <vscale x 8 x i1> splat (i1 true), i32 %evl)
1155   ret <vscale x 8 x i32> %v
1158 declare <vscale x 16 x i32> @llvm.vp.shl.nxv16i32(<vscale x 16 x i32>, <vscale x 16 x i32>, <vscale x 16 x i1>, i32)
1160 define <vscale x 16 x i32> @vsll_vv_nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1161 ; CHECK-LABEL: vsll_vv_nxv16i32:
1162 ; CHECK:       # %bb.0:
1163 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1164 ; CHECK-NEXT:    vsll.vv v8, v8, v16, v0.t
1165 ; CHECK-NEXT:    ret
1166   %v = call <vscale x 16 x i32> @llvm.vp.shl.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> %m, i32 %evl)
1167   ret <vscale x 16 x i32> %v
1170 define <vscale x 16 x i32> @vsll_vv_nxv16i32_unmasked(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, i32 zeroext %evl) {
1171 ; CHECK-LABEL: vsll_vv_nxv16i32_unmasked:
1172 ; CHECK:       # %bb.0:
1173 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1174 ; CHECK-NEXT:    vsll.vv v8, v8, v16
1175 ; CHECK-NEXT:    ret
1176   %v = call <vscale x 16 x i32> @llvm.vp.shl.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)
1177   ret <vscale x 16 x i32> %v
1180 define <vscale x 16 x i32> @vsll_vx_nxv16i32(<vscale x 16 x i32> %va, i32 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1181 ; CHECK-LABEL: vsll_vx_nxv16i32:
1182 ; CHECK:       # %bb.0:
1183 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
1184 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
1185 ; CHECK-NEXT:    ret
1186   %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0
1187   %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1188   %v = call <vscale x 16 x i32> @llvm.vp.shl.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> %m, i32 %evl)
1189   ret <vscale x 16 x i32> %v
1192 define <vscale x 16 x i32> @vsll_vx_nxv16i32_unmasked(<vscale x 16 x i32> %va, i32 %b, i32 zeroext %evl) {
1193 ; CHECK-LABEL: vsll_vx_nxv16i32_unmasked:
1194 ; CHECK:       # %bb.0:
1195 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
1196 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1197 ; CHECK-NEXT:    ret
1198   %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0
1199   %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1200   %v = call <vscale x 16 x i32> @llvm.vp.shl.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)
1201   ret <vscale x 16 x i32> %v
1204 define <vscale x 16 x i32> @vsll_vi_nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1205 ; CHECK-LABEL: vsll_vi_nxv16i32:
1206 ; CHECK:       # %bb.0:
1207 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1208 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
1209 ; CHECK-NEXT:    ret
1210   %v = call <vscale x 16 x i32> @llvm.vp.shl.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> splat (i32 3), <vscale x 16 x i1> %m, i32 %evl)
1211   ret <vscale x 16 x i32> %v
1214 define <vscale x 16 x i32> @vsll_vi_nxv16i32_unmasked(<vscale x 16 x i32> %va, i32 zeroext %evl) {
1215 ; CHECK-LABEL: vsll_vi_nxv16i32_unmasked:
1216 ; CHECK:       # %bb.0:
1217 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1218 ; CHECK-NEXT:    vsll.vi v8, v8, 3
1219 ; CHECK-NEXT:    ret
1220   %v = call <vscale x 16 x i32> @llvm.vp.shl.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> splat (i32 3), <vscale x 16 x i1> splat (i1 true), i32 %evl)
1221   ret <vscale x 16 x i32> %v
1224 declare <vscale x 1 x i64> @llvm.vp.shl.nxv1i64(<vscale x 1 x i64>, <vscale x 1 x i64>, <vscale x 1 x i1>, i32)
1226 define <vscale x 1 x i64> @vsll_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1227 ; CHECK-LABEL: vsll_vv_nxv1i64:
1228 ; CHECK:       # %bb.0:
1229 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1230 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
1231 ; CHECK-NEXT:    ret
1232   %v = call <vscale x 1 x i64> @llvm.vp.shl.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> %m, i32 %evl)
1233   ret <vscale x 1 x i64> %v
1236 define <vscale x 1 x i64> @vsll_vv_nxv1i64_unmasked(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, i32 zeroext %evl) {
1237 ; CHECK-LABEL: vsll_vv_nxv1i64_unmasked:
1238 ; CHECK:       # %bb.0:
1239 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1240 ; CHECK-NEXT:    vsll.vv v8, v8, v9
1241 ; CHECK-NEXT:    ret
1242   %v = call <vscale x 1 x i64> @llvm.vp.shl.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1243   ret <vscale x 1 x i64> %v
1246 define <vscale x 1 x i64> @vsll_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1247 ; RV32-LABEL: vsll_vx_nxv1i64:
1248 ; RV32:       # %bb.0:
1249 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
1250 ; RV32-NEXT:    vsll.vx v8, v8, a0, v0.t
1251 ; RV32-NEXT:    ret
1253 ; RV64-LABEL: vsll_vx_nxv1i64:
1254 ; RV64:       # %bb.0:
1255 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1256 ; RV64-NEXT:    vsll.vx v8, v8, a0, v0.t
1257 ; RV64-NEXT:    ret
1258   %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
1259   %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
1260   %v = call <vscale x 1 x i64> @llvm.vp.shl.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 %evl)
1261   ret <vscale x 1 x i64> %v
1264 define <vscale x 1 x i64> @vsll_vx_nxv1i64_unmasked(<vscale x 1 x i64> %va, i64 %b, i32 zeroext %evl) {
1265 ; RV32-LABEL: vsll_vx_nxv1i64_unmasked:
1266 ; RV32:       # %bb.0:
1267 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
1268 ; RV32-NEXT:    vsll.vx v8, v8, a0
1269 ; RV32-NEXT:    ret
1271 ; RV64-LABEL: vsll_vx_nxv1i64_unmasked:
1272 ; RV64:       # %bb.0:
1273 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1274 ; RV64-NEXT:    vsll.vx v8, v8, a0
1275 ; RV64-NEXT:    ret
1276   %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
1277   %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
1278   %v = call <vscale x 1 x i64> @llvm.vp.shl.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1279   ret <vscale x 1 x i64> %v
1282 define <vscale x 1 x i64> @vsll_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1283 ; CHECK-LABEL: vsll_vi_nxv1i64:
1284 ; CHECK:       # %bb.0:
1285 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1286 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
1287 ; CHECK-NEXT:    ret
1288   %v = call <vscale x 1 x i64> @llvm.vp.shl.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 3), <vscale x 1 x i1> %m, i32 %evl)
1289   ret <vscale x 1 x i64> %v
1292 define <vscale x 1 x i64> @vsll_vi_nxv1i64_unmasked(<vscale x 1 x i64> %va, i32 zeroext %evl) {
1293 ; CHECK-LABEL: vsll_vi_nxv1i64_unmasked:
1294 ; CHECK:       # %bb.0:
1295 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1296 ; CHECK-NEXT:    vsll.vi v8, v8, 3
1297 ; CHECK-NEXT:    ret
1298   %v = call <vscale x 1 x i64> @llvm.vp.shl.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 3), <vscale x 1 x i1> splat (i1 true), i32 %evl)
1299   ret <vscale x 1 x i64> %v
1302 declare <vscale x 2 x i64> @llvm.vp.shl.nxv2i64(<vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i1>, i32)
1304 define <vscale x 2 x i64> @vsll_vv_nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1305 ; CHECK-LABEL: vsll_vv_nxv2i64:
1306 ; CHECK:       # %bb.0:
1307 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1308 ; CHECK-NEXT:    vsll.vv v8, v8, v10, v0.t
1309 ; CHECK-NEXT:    ret
1310   %v = call <vscale x 2 x i64> @llvm.vp.shl.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> %m, i32 %evl)
1311   ret <vscale x 2 x i64> %v
1314 define <vscale x 2 x i64> @vsll_vv_nxv2i64_unmasked(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, i32 zeroext %evl) {
1315 ; CHECK-LABEL: vsll_vv_nxv2i64_unmasked:
1316 ; CHECK:       # %bb.0:
1317 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1318 ; CHECK-NEXT:    vsll.vv v8, v8, v10
1319 ; CHECK-NEXT:    ret
1320   %v = call <vscale x 2 x i64> @llvm.vp.shl.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1321   ret <vscale x 2 x i64> %v
1324 define <vscale x 2 x i64> @vsll_vx_nxv2i64(<vscale x 2 x i64> %va, i64 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1325 ; RV32-LABEL: vsll_vx_nxv2i64:
1326 ; RV32:       # %bb.0:
1327 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1328 ; RV32-NEXT:    vsll.vx v8, v8, a0, v0.t
1329 ; RV32-NEXT:    ret
1331 ; RV64-LABEL: vsll_vx_nxv2i64:
1332 ; RV64:       # %bb.0:
1333 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1334 ; RV64-NEXT:    vsll.vx v8, v8, a0, v0.t
1335 ; RV64-NEXT:    ret
1336   %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0
1337   %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1338   %v = call <vscale x 2 x i64> @llvm.vp.shl.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> %m, i32 %evl)
1339   ret <vscale x 2 x i64> %v
1342 define <vscale x 2 x i64> @vsll_vx_nxv2i64_unmasked(<vscale x 2 x i64> %va, i64 %b, i32 zeroext %evl) {
1343 ; RV32-LABEL: vsll_vx_nxv2i64_unmasked:
1344 ; RV32:       # %bb.0:
1345 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1346 ; RV32-NEXT:    vsll.vx v8, v8, a0
1347 ; RV32-NEXT:    ret
1349 ; RV64-LABEL: vsll_vx_nxv2i64_unmasked:
1350 ; RV64:       # %bb.0:
1351 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1352 ; RV64-NEXT:    vsll.vx v8, v8, a0
1353 ; RV64-NEXT:    ret
1354   %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0
1355   %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1356   %v = call <vscale x 2 x i64> @llvm.vp.shl.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1357   ret <vscale x 2 x i64> %v
1360 define <vscale x 2 x i64> @vsll_vi_nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1361 ; CHECK-LABEL: vsll_vi_nxv2i64:
1362 ; CHECK:       # %bb.0:
1363 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1364 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
1365 ; CHECK-NEXT:    ret
1366   %v = call <vscale x 2 x i64> @llvm.vp.shl.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> splat (i64 3), <vscale x 2 x i1> %m, i32 %evl)
1367   ret <vscale x 2 x i64> %v
1370 define <vscale x 2 x i64> @vsll_vi_nxv2i64_unmasked(<vscale x 2 x i64> %va, i32 zeroext %evl) {
1371 ; CHECK-LABEL: vsll_vi_nxv2i64_unmasked:
1372 ; CHECK:       # %bb.0:
1373 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1374 ; CHECK-NEXT:    vsll.vi v8, v8, 3
1375 ; CHECK-NEXT:    ret
1376   %v = call <vscale x 2 x i64> @llvm.vp.shl.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> splat (i64 3), <vscale x 2 x i1> splat (i1 true), i32 %evl)
1377   ret <vscale x 2 x i64> %v
1380 declare <vscale x 4 x i64> @llvm.vp.shl.nxv4i64(<vscale x 4 x i64>, <vscale x 4 x i64>, <vscale x 4 x i1>, i32)
1382 define <vscale x 4 x i64> @vsll_vv_nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1383 ; CHECK-LABEL: vsll_vv_nxv4i64:
1384 ; CHECK:       # %bb.0:
1385 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1386 ; CHECK-NEXT:    vsll.vv v8, v8, v12, v0.t
1387 ; CHECK-NEXT:    ret
1388   %v = call <vscale x 4 x i64> @llvm.vp.shl.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> %m, i32 %evl)
1389   ret <vscale x 4 x i64> %v
1392 define <vscale x 4 x i64> @vsll_vv_nxv4i64_unmasked(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, i32 zeroext %evl) {
1393 ; CHECK-LABEL: vsll_vv_nxv4i64_unmasked:
1394 ; CHECK:       # %bb.0:
1395 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1396 ; CHECK-NEXT:    vsll.vv v8, v8, v12
1397 ; CHECK-NEXT:    ret
1398   %v = call <vscale x 4 x i64> @llvm.vp.shl.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
1399   ret <vscale x 4 x i64> %v
1402 define <vscale x 4 x i64> @vsll_vx_nxv4i64(<vscale x 4 x i64> %va, i64 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1403 ; RV32-LABEL: vsll_vx_nxv4i64:
1404 ; RV32:       # %bb.0:
1405 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1406 ; RV32-NEXT:    vsll.vx v8, v8, a0, v0.t
1407 ; RV32-NEXT:    ret
1409 ; RV64-LABEL: vsll_vx_nxv4i64:
1410 ; RV64:       # %bb.0:
1411 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1412 ; RV64-NEXT:    vsll.vx v8, v8, a0, v0.t
1413 ; RV64-NEXT:    ret
1414   %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0
1415   %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1416   %v = call <vscale x 4 x i64> @llvm.vp.shl.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> %m, i32 %evl)
1417   ret <vscale x 4 x i64> %v
1420 define <vscale x 4 x i64> @vsll_vx_nxv4i64_unmasked(<vscale x 4 x i64> %va, i64 %b, i32 zeroext %evl) {
1421 ; RV32-LABEL: vsll_vx_nxv4i64_unmasked:
1422 ; RV32:       # %bb.0:
1423 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1424 ; RV32-NEXT:    vsll.vx v8, v8, a0
1425 ; RV32-NEXT:    ret
1427 ; RV64-LABEL: vsll_vx_nxv4i64_unmasked:
1428 ; RV64:       # %bb.0:
1429 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1430 ; RV64-NEXT:    vsll.vx v8, v8, a0
1431 ; RV64-NEXT:    ret
1432   %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0
1433   %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1434   %v = call <vscale x 4 x i64> @llvm.vp.shl.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
1435   ret <vscale x 4 x i64> %v
1438 define <vscale x 4 x i64> @vsll_vi_nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1439 ; CHECK-LABEL: vsll_vi_nxv4i64:
1440 ; CHECK:       # %bb.0:
1441 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1442 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
1443 ; CHECK-NEXT:    ret
1444   %v = call <vscale x 4 x i64> @llvm.vp.shl.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> splat (i64 3), <vscale x 4 x i1> %m, i32 %evl)
1445   ret <vscale x 4 x i64> %v
1448 define <vscale x 4 x i64> @vsll_vi_nxv4i64_unmasked(<vscale x 4 x i64> %va, i32 zeroext %evl) {
1449 ; CHECK-LABEL: vsll_vi_nxv4i64_unmasked:
1450 ; CHECK:       # %bb.0:
1451 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1452 ; CHECK-NEXT:    vsll.vi v8, v8, 3
1453 ; CHECK-NEXT:    ret
1454   %v = call <vscale x 4 x i64> @llvm.vp.shl.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> splat (i64 3), <vscale x 4 x i1> splat (i1 true), i32 %evl)
1455   ret <vscale x 4 x i64> %v
1458 declare <vscale x 8 x i64> @llvm.vp.shl.nxv8i64(<vscale x 8 x i64>, <vscale x 8 x i64>, <vscale x 8 x i1>, i32)
1460 define <vscale x 8 x i64> @vsll_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1461 ; CHECK-LABEL: vsll_vv_nxv8i64:
1462 ; CHECK:       # %bb.0:
1463 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1464 ; CHECK-NEXT:    vsll.vv v8, v8, v16, v0.t
1465 ; CHECK-NEXT:    ret
1466   %v = call <vscale x 8 x i64> @llvm.vp.shl.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> %m, i32 %evl)
1467   ret <vscale x 8 x i64> %v
1470 define <vscale x 8 x i64> @vsll_vv_nxv8i64_unmasked(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, i32 zeroext %evl) {
1471 ; CHECK-LABEL: vsll_vv_nxv8i64_unmasked:
1472 ; CHECK:       # %bb.0:
1473 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1474 ; CHECK-NEXT:    vsll.vv v8, v8, v16
1475 ; CHECK-NEXT:    ret
1476   %v = call <vscale x 8 x i64> @llvm.vp.shl.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
1477   ret <vscale x 8 x i64> %v
1480 define <vscale x 8 x i64> @vsll_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1481 ; RV32-LABEL: vsll_vx_nxv8i64:
1482 ; RV32:       # %bb.0:
1483 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
1484 ; RV32-NEXT:    vsll.vx v8, v8, a0, v0.t
1485 ; RV32-NEXT:    ret
1487 ; RV64-LABEL: vsll_vx_nxv8i64:
1488 ; RV64:       # %bb.0:
1489 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
1490 ; RV64-NEXT:    vsll.vx v8, v8, a0, v0.t
1491 ; RV64-NEXT:    ret
1492   %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
1493   %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1494   %v = call <vscale x 8 x i64> @llvm.vp.shl.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 %evl)
1495   ret <vscale x 8 x i64> %v
1498 define <vscale x 8 x i64> @vsll_vx_nxv8i64_unmasked(<vscale x 8 x i64> %va, i64 %b, i32 zeroext %evl) {
1499 ; RV32-LABEL: vsll_vx_nxv8i64_unmasked:
1500 ; RV32:       # %bb.0:
1501 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
1502 ; RV32-NEXT:    vsll.vx v8, v8, a0
1503 ; RV32-NEXT:    ret
1505 ; RV64-LABEL: vsll_vx_nxv8i64_unmasked:
1506 ; RV64:       # %bb.0:
1507 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
1508 ; RV64-NEXT:    vsll.vx v8, v8, a0
1509 ; RV64-NEXT:    ret
1510   %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
1511   %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1512   %v = call <vscale x 8 x i64> @llvm.vp.shl.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
1513   ret <vscale x 8 x i64> %v
1516 define <vscale x 8 x i64> @vsll_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1517 ; CHECK-LABEL: vsll_vi_nxv8i64:
1518 ; CHECK:       # %bb.0:
1519 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1520 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
1521 ; CHECK-NEXT:    ret
1522   %v = call <vscale x 8 x i64> @llvm.vp.shl.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 3), <vscale x 8 x i1> %m, i32 %evl)
1523   ret <vscale x 8 x i64> %v
1526 define <vscale x 8 x i64> @vsll_vi_nxv8i64_unmasked(<vscale x 8 x i64> %va, i32 zeroext %evl) {
1527 ; CHECK-LABEL: vsll_vi_nxv8i64_unmasked:
1528 ; CHECK:       # %bb.0:
1529 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1530 ; CHECK-NEXT:    vsll.vi v8, v8, 3
1531 ; CHECK-NEXT:    ret
1532   %v = call <vscale x 8 x i64> @llvm.vp.shl.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 3), <vscale x 8 x i1> splat (i1 true), i32 %evl)
1533   ret <vscale x 8 x i64> %v