[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vshl-vp.ll
blob9ab5218e897e717543a727086373582b95b4de9a
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 a2, zero, 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
16 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
17 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
18 ; CHECK-NEXT:    ret
19   %elt.head = insertelement <vscale x 8 x i7> poison, i7 %b, i32 0
20   %vb = shufflevector <vscale x 8 x i7> %elt.head, <vscale x 8 x i7> poison, <vscale x 8 x i32> zeroinitializer
21   %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)
22   ret <vscale x 8 x i7> %v
25 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)
27 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) {
28 ; CHECK-LABEL: vsll_vv_nxv1i8:
29 ; CHECK:       # %bb.0:
30 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
31 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
32 ; CHECK-NEXT:    ret
33   %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)
34   ret <vscale x 1 x i8> %v
37 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) {
38 ; CHECK-LABEL: vsll_vv_nxv1i8_unmasked:
39 ; CHECK:       # %bb.0:
40 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
41 ; CHECK-NEXT:    vsll.vv v8, v8, v9
42 ; CHECK-NEXT:    ret
43   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
44   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
45   %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)
46   ret <vscale x 1 x i8> %v
49 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) {
50 ; CHECK-LABEL: vsll_vx_nxv1i8:
51 ; CHECK:       # %bb.0:
52 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
53 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
54 ; CHECK-NEXT:    ret
55   %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
56   %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
57   %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)
58   ret <vscale x 1 x i8> %v
61 define <vscale x 1 x i8> @vsll_vx_nxv1i8_unmasked(<vscale x 1 x i8> %va, i8 %b, i32 zeroext %evl) {
62 ; CHECK-LABEL: vsll_vx_nxv1i8_unmasked:
63 ; CHECK:       # %bb.0:
64 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
65 ; CHECK-NEXT:    vsll.vx v8, v8, a0
66 ; CHECK-NEXT:    ret
67   %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
68   %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
69   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
70   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
71   %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)
72   ret <vscale x 1 x i8> %v
75 define <vscale x 1 x i8> @vsll_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
76 ; CHECK-LABEL: vsll_vi_nxv1i8:
77 ; CHECK:       # %bb.0:
78 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
79 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
80 ; CHECK-NEXT:    ret
81   %elt.head = insertelement <vscale x 1 x i8> poison, i8 3, i32 0
82   %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
83   %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)
84   ret <vscale x 1 x i8> %v
87 define <vscale x 1 x i8> @vsll_vi_nxv1i8_unmasked(<vscale x 1 x i8> %va, i32 zeroext %evl) {
88 ; CHECK-LABEL: vsll_vi_nxv1i8_unmasked:
89 ; CHECK:       # %bb.0:
90 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
91 ; CHECK-NEXT:    vsll.vi v8, v8, 3
92 ; CHECK-NEXT:    ret
93   %elt.head = insertelement <vscale x 1 x i8> poison, i8 3, i32 0
94   %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
95   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
96   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
97   %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)
98   ret <vscale x 1 x i8> %v
101 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)
103 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) {
104 ; CHECK-LABEL: vsll_vv_nxv2i8:
105 ; CHECK:       # %bb.0:
106 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
107 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
108 ; CHECK-NEXT:    ret
109   %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)
110   ret <vscale x 2 x i8> %v
113 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) {
114 ; CHECK-LABEL: vsll_vv_nxv2i8_unmasked:
115 ; CHECK:       # %bb.0:
116 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
117 ; CHECK-NEXT:    vsll.vv v8, v8, v9
118 ; CHECK-NEXT:    ret
119   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
120   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
121   %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)
122   ret <vscale x 2 x i8> %v
125 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) {
126 ; CHECK-LABEL: vsll_vx_nxv2i8:
127 ; CHECK:       # %bb.0:
128 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
129 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
130 ; CHECK-NEXT:    ret
131   %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0
132   %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
133   %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)
134   ret <vscale x 2 x i8> %v
137 define <vscale x 2 x i8> @vsll_vx_nxv2i8_unmasked(<vscale x 2 x i8> %va, i8 %b, i32 zeroext %evl) {
138 ; CHECK-LABEL: vsll_vx_nxv2i8_unmasked:
139 ; CHECK:       # %bb.0:
140 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
141 ; CHECK-NEXT:    vsll.vx v8, v8, a0
142 ; CHECK-NEXT:    ret
143   %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0
144   %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
145   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
146   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
147   %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)
148   ret <vscale x 2 x i8> %v
151 define <vscale x 2 x i8> @vsll_vi_nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
152 ; CHECK-LABEL: vsll_vi_nxv2i8:
153 ; CHECK:       # %bb.0:
154 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
155 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
156 ; CHECK-NEXT:    ret
157   %elt.head = insertelement <vscale x 2 x i8> poison, i8 3, i32 0
158   %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
159   %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)
160   ret <vscale x 2 x i8> %v
163 define <vscale x 2 x i8> @vsll_vi_nxv2i8_unmasked(<vscale x 2 x i8> %va, i32 zeroext %evl) {
164 ; CHECK-LABEL: vsll_vi_nxv2i8_unmasked:
165 ; CHECK:       # %bb.0:
166 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
167 ; CHECK-NEXT:    vsll.vi v8, v8, 3
168 ; CHECK-NEXT:    ret
169   %elt.head = insertelement <vscale x 2 x i8> poison, i8 3, i32 0
170   %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
171   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
172   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
173   %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)
174   ret <vscale x 2 x i8> %v
177 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)
179 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) {
180 ; CHECK-LABEL: vsll_vv_nxv4i8:
181 ; CHECK:       # %bb.0:
182 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
183 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
184 ; CHECK-NEXT:    ret
185   %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)
186   ret <vscale x 4 x i8> %v
189 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) {
190 ; CHECK-LABEL: vsll_vv_nxv4i8_unmasked:
191 ; CHECK:       # %bb.0:
192 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
193 ; CHECK-NEXT:    vsll.vv v8, v8, v9
194 ; CHECK-NEXT:    ret
195   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
196   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
197   %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)
198   ret <vscale x 4 x i8> %v
201 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) {
202 ; CHECK-LABEL: vsll_vx_nxv4i8:
203 ; CHECK:       # %bb.0:
204 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
205 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
206 ; CHECK-NEXT:    ret
207   %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0
208   %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
209   %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)
210   ret <vscale x 4 x i8> %v
213 define <vscale x 4 x i8> @vsll_vx_nxv4i8_unmasked(<vscale x 4 x i8> %va, i8 %b, i32 zeroext %evl) {
214 ; CHECK-LABEL: vsll_vx_nxv4i8_unmasked:
215 ; CHECK:       # %bb.0:
216 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
217 ; CHECK-NEXT:    vsll.vx v8, v8, a0
218 ; CHECK-NEXT:    ret
219   %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0
220   %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
221   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
222   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
223   %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)
224   ret <vscale x 4 x i8> %v
227 define <vscale x 4 x i8> @vsll_vi_nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
228 ; CHECK-LABEL: vsll_vi_nxv4i8:
229 ; CHECK:       # %bb.0:
230 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
231 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
232 ; CHECK-NEXT:    ret
233   %elt.head = insertelement <vscale x 4 x i8> poison, i8 3, i32 0
234   %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
235   %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)
236   ret <vscale x 4 x i8> %v
239 define <vscale x 4 x i8> @vsll_vi_nxv4i8_unmasked(<vscale x 4 x i8> %va, i32 zeroext %evl) {
240 ; CHECK-LABEL: vsll_vi_nxv4i8_unmasked:
241 ; CHECK:       # %bb.0:
242 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
243 ; CHECK-NEXT:    vsll.vi v8, v8, 3
244 ; CHECK-NEXT:    ret
245   %elt.head = insertelement <vscale x 4 x i8> poison, i8 3, i32 0
246   %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
247   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
248   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
249   %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)
250   ret <vscale x 4 x i8> %v
253 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)
255 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) {
256 ; CHECK-LABEL: vsll_vv_nxv5i8:
257 ; CHECK:       # %bb.0:
258 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
259 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
260 ; CHECK-NEXT:    ret
261   %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)
262   ret <vscale x 5 x i8> %v
265 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)
267 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) {
268 ; CHECK-LABEL: vsll_vv_nxv8i8:
269 ; CHECK:       # %bb.0:
270 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
271 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
272 ; CHECK-NEXT:    ret
273   %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)
274   ret <vscale x 8 x i8> %v
277 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) {
278 ; CHECK-LABEL: vsll_vv_nxv8i8_unmasked:
279 ; CHECK:       # %bb.0:
280 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
281 ; CHECK-NEXT:    vsll.vv v8, v8, v9
282 ; CHECK-NEXT:    ret
283   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
284   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
285   %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)
286   ret <vscale x 8 x i8> %v
289 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) {
290 ; CHECK-LABEL: vsll_vx_nxv8i8:
291 ; CHECK:       # %bb.0:
292 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
293 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
294 ; CHECK-NEXT:    ret
295   %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
296   %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
297   %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)
298   ret <vscale x 8 x i8> %v
301 define <vscale x 8 x i8> @vsll_vx_nxv8i8_unmasked(<vscale x 8 x i8> %va, i8 %b, i32 zeroext %evl) {
302 ; CHECK-LABEL: vsll_vx_nxv8i8_unmasked:
303 ; CHECK:       # %bb.0:
304 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
305 ; CHECK-NEXT:    vsll.vx v8, v8, a0
306 ; CHECK-NEXT:    ret
307   %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
308   %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
309   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
310   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
311   %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)
312   ret <vscale x 8 x i8> %v
315 define <vscale x 8 x i8> @vsll_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
316 ; CHECK-LABEL: vsll_vi_nxv8i8:
317 ; CHECK:       # %bb.0:
318 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
319 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
320 ; CHECK-NEXT:    ret
321   %elt.head = insertelement <vscale x 8 x i8> poison, i8 3, i32 0
322   %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
323   %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)
324   ret <vscale x 8 x i8> %v
327 define <vscale x 8 x i8> @vsll_vi_nxv8i8_unmasked(<vscale x 8 x i8> %va, i32 zeroext %evl) {
328 ; CHECK-LABEL: vsll_vi_nxv8i8_unmasked:
329 ; CHECK:       # %bb.0:
330 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
331 ; CHECK-NEXT:    vsll.vi v8, v8, 3
332 ; CHECK-NEXT:    ret
333   %elt.head = insertelement <vscale x 8 x i8> poison, i8 3, i32 0
334   %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
335   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
336   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
337   %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)
338   ret <vscale x 8 x i8> %v
341 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)
343 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) {
344 ; CHECK-LABEL: vsll_vv_nxv16i8:
345 ; CHECK:       # %bb.0:
346 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
347 ; CHECK-NEXT:    vsll.vv v8, v8, v10, v0.t
348 ; CHECK-NEXT:    ret
349   %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)
350   ret <vscale x 16 x i8> %v
353 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) {
354 ; CHECK-LABEL: vsll_vv_nxv16i8_unmasked:
355 ; CHECK:       # %bb.0:
356 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
357 ; CHECK-NEXT:    vsll.vv v8, v8, v10
358 ; CHECK-NEXT:    ret
359   %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
360   %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
361   %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)
362   ret <vscale x 16 x i8> %v
365 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) {
366 ; CHECK-LABEL: vsll_vx_nxv16i8:
367 ; CHECK:       # %bb.0:
368 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
369 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
370 ; CHECK-NEXT:    ret
371   %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0
372   %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
373   %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)
374   ret <vscale x 16 x i8> %v
377 define <vscale x 16 x i8> @vsll_vx_nxv16i8_unmasked(<vscale x 16 x i8> %va, i8 %b, i32 zeroext %evl) {
378 ; CHECK-LABEL: vsll_vx_nxv16i8_unmasked:
379 ; CHECK:       # %bb.0:
380 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
381 ; CHECK-NEXT:    vsll.vx v8, v8, a0
382 ; CHECK-NEXT:    ret
383   %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0
384   %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
385   %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
386   %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
387   %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)
388   ret <vscale x 16 x i8> %v
391 define <vscale x 16 x i8> @vsll_vi_nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
392 ; CHECK-LABEL: vsll_vi_nxv16i8:
393 ; CHECK:       # %bb.0:
394 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
395 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
396 ; CHECK-NEXT:    ret
397   %elt.head = insertelement <vscale x 16 x i8> poison, i8 3, i32 0
398   %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
399   %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)
400   ret <vscale x 16 x i8> %v
403 define <vscale x 16 x i8> @vsll_vi_nxv16i8_unmasked(<vscale x 16 x i8> %va, i32 zeroext %evl) {
404 ; CHECK-LABEL: vsll_vi_nxv16i8_unmasked:
405 ; CHECK:       # %bb.0:
406 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
407 ; CHECK-NEXT:    vsll.vi v8, v8, 3
408 ; CHECK-NEXT:    ret
409   %elt.head = insertelement <vscale x 16 x i8> poison, i8 3, i32 0
410   %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
411   %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
412   %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
413   %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)
414   ret <vscale x 16 x i8> %v
417 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)
419 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) {
420 ; CHECK-LABEL: vsll_vv_nxv32i8:
421 ; CHECK:       # %bb.0:
422 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
423 ; CHECK-NEXT:    vsll.vv v8, v8, v12, v0.t
424 ; CHECK-NEXT:    ret
425   %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)
426   ret <vscale x 32 x i8> %v
429 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) {
430 ; CHECK-LABEL: vsll_vv_nxv32i8_unmasked:
431 ; CHECK:       # %bb.0:
432 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
433 ; CHECK-NEXT:    vsll.vv v8, v8, v12
434 ; CHECK-NEXT:    ret
435   %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
436   %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
437   %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)
438   ret <vscale x 32 x i8> %v
441 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) {
442 ; CHECK-LABEL: vsll_vx_nxv32i8:
443 ; CHECK:       # %bb.0:
444 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
445 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
446 ; CHECK-NEXT:    ret
447   %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0
448   %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
449   %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)
450   ret <vscale x 32 x i8> %v
453 define <vscale x 32 x i8> @vsll_vx_nxv32i8_unmasked(<vscale x 32 x i8> %va, i8 %b, i32 zeroext %evl) {
454 ; CHECK-LABEL: vsll_vx_nxv32i8_unmasked:
455 ; CHECK:       # %bb.0:
456 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
457 ; CHECK-NEXT:    vsll.vx v8, v8, a0
458 ; CHECK-NEXT:    ret
459   %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0
460   %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
461   %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
462   %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
463   %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)
464   ret <vscale x 32 x i8> %v
467 define <vscale x 32 x i8> @vsll_vi_nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i1> %m, i32 zeroext %evl) {
468 ; CHECK-LABEL: vsll_vi_nxv32i8:
469 ; CHECK:       # %bb.0:
470 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
471 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
472 ; CHECK-NEXT:    ret
473   %elt.head = insertelement <vscale x 32 x i8> poison, i8 3, i32 0
474   %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
475   %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)
476   ret <vscale x 32 x i8> %v
479 define <vscale x 32 x i8> @vsll_vi_nxv32i8_unmasked(<vscale x 32 x i8> %va, i32 zeroext %evl) {
480 ; CHECK-LABEL: vsll_vi_nxv32i8_unmasked:
481 ; CHECK:       # %bb.0:
482 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
483 ; CHECK-NEXT:    vsll.vi v8, v8, 3
484 ; CHECK-NEXT:    ret
485   %elt.head = insertelement <vscale x 32 x i8> poison, i8 3, i32 0
486   %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
487   %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
488   %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
489   %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)
490   ret <vscale x 32 x i8> %v
493 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)
495 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) {
496 ; CHECK-LABEL: vsll_vv_nxv64i8:
497 ; CHECK:       # %bb.0:
498 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
499 ; CHECK-NEXT:    vsll.vv v8, v8, v16, v0.t
500 ; CHECK-NEXT:    ret
501   %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)
502   ret <vscale x 64 x i8> %v
505 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) {
506 ; CHECK-LABEL: vsll_vv_nxv64i8_unmasked:
507 ; CHECK:       # %bb.0:
508 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
509 ; CHECK-NEXT:    vsll.vv v8, v8, v16
510 ; CHECK-NEXT:    ret
511   %head = insertelement <vscale x 64 x i1> poison, i1 true, i32 0
512   %m = shufflevector <vscale x 64 x i1> %head, <vscale x 64 x i1> poison, <vscale x 64 x i32> zeroinitializer
513   %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)
514   ret <vscale x 64 x i8> %v
517 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) {
518 ; CHECK-LABEL: vsll_vx_nxv64i8:
519 ; CHECK:       # %bb.0:
520 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
521 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
522 ; CHECK-NEXT:    ret
523   %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0
524   %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
525   %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)
526   ret <vscale x 64 x i8> %v
529 define <vscale x 64 x i8> @vsll_vx_nxv64i8_unmasked(<vscale x 64 x i8> %va, i8 %b, i32 zeroext %evl) {
530 ; CHECK-LABEL: vsll_vx_nxv64i8_unmasked:
531 ; CHECK:       # %bb.0:
532 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
533 ; CHECK-NEXT:    vsll.vx v8, v8, a0
534 ; CHECK-NEXT:    ret
535   %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0
536   %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
537   %head = insertelement <vscale x 64 x i1> poison, i1 true, i32 0
538   %m = shufflevector <vscale x 64 x i1> %head, <vscale x 64 x i1> poison, <vscale x 64 x i32> zeroinitializer
539   %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)
540   ret <vscale x 64 x i8> %v
543 define <vscale x 64 x i8> @vsll_vi_nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i1> %m, i32 zeroext %evl) {
544 ; CHECK-LABEL: vsll_vi_nxv64i8:
545 ; CHECK:       # %bb.0:
546 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
547 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
548 ; CHECK-NEXT:    ret
549   %elt.head = insertelement <vscale x 64 x i8> poison, i8 3, i32 0
550   %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
551   %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)
552   ret <vscale x 64 x i8> %v
555 define <vscale x 64 x i8> @vsll_vi_nxv64i8_unmasked(<vscale x 64 x i8> %va, i32 zeroext %evl) {
556 ; CHECK-LABEL: vsll_vi_nxv64i8_unmasked:
557 ; CHECK:       # %bb.0:
558 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
559 ; CHECK-NEXT:    vsll.vi v8, v8, 3
560 ; CHECK-NEXT:    ret
561   %elt.head = insertelement <vscale x 64 x i8> poison, i8 3, i32 0
562   %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
563   %head = insertelement <vscale x 64 x i1> poison, i1 true, i32 0
564   %m = shufflevector <vscale x 64 x i1> %head, <vscale x 64 x i1> poison, <vscale x 64 x i32> zeroinitializer
565   %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)
566   ret <vscale x 64 x i8> %v
569 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)
571 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) {
572 ; CHECK-LABEL: vsll_vv_nxv1i16:
573 ; CHECK:       # %bb.0:
574 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
575 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
576 ; CHECK-NEXT:    ret
577   %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)
578   ret <vscale x 1 x i16> %v
581 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) {
582 ; CHECK-LABEL: vsll_vv_nxv1i16_unmasked:
583 ; CHECK:       # %bb.0:
584 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
585 ; CHECK-NEXT:    vsll.vv v8, v8, v9
586 ; CHECK-NEXT:    ret
587   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
588   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
589   %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)
590   ret <vscale x 1 x i16> %v
593 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) {
594 ; CHECK-LABEL: vsll_vx_nxv1i16:
595 ; CHECK:       # %bb.0:
596 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
597 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
598 ; CHECK-NEXT:    ret
599   %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
600   %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
601   %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)
602   ret <vscale x 1 x i16> %v
605 define <vscale x 1 x i16> @vsll_vx_nxv1i16_unmasked(<vscale x 1 x i16> %va, i16 %b, i32 zeroext %evl) {
606 ; CHECK-LABEL: vsll_vx_nxv1i16_unmasked:
607 ; CHECK:       # %bb.0:
608 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
609 ; CHECK-NEXT:    vsll.vx v8, v8, a0
610 ; CHECK-NEXT:    ret
611   %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
612   %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
613   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
614   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
615   %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)
616   ret <vscale x 1 x i16> %v
619 define <vscale x 1 x i16> @vsll_vi_nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
620 ; CHECK-LABEL: vsll_vi_nxv1i16:
621 ; CHECK:       # %bb.0:
622 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
623 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
624 ; CHECK-NEXT:    ret
625   %elt.head = insertelement <vscale x 1 x i16> poison, i16 3, i32 0
626   %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
627   %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)
628   ret <vscale x 1 x i16> %v
631 define <vscale x 1 x i16> @vsll_vi_nxv1i16_unmasked(<vscale x 1 x i16> %va, i32 zeroext %evl) {
632 ; CHECK-LABEL: vsll_vi_nxv1i16_unmasked:
633 ; CHECK:       # %bb.0:
634 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
635 ; CHECK-NEXT:    vsll.vi v8, v8, 3
636 ; CHECK-NEXT:    ret
637   %elt.head = insertelement <vscale x 1 x i16> poison, i16 3, i32 0
638   %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
639   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
640   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
641   %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)
642   ret <vscale x 1 x i16> %v
645 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)
647 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) {
648 ; CHECK-LABEL: vsll_vv_nxv2i16:
649 ; CHECK:       # %bb.0:
650 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
651 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
652 ; CHECK-NEXT:    ret
653   %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)
654   ret <vscale x 2 x i16> %v
657 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) {
658 ; CHECK-LABEL: vsll_vv_nxv2i16_unmasked:
659 ; CHECK:       # %bb.0:
660 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
661 ; CHECK-NEXT:    vsll.vv v8, v8, v9
662 ; CHECK-NEXT:    ret
663   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
664   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
665   %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)
666   ret <vscale x 2 x i16> %v
669 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) {
670 ; CHECK-LABEL: vsll_vx_nxv2i16:
671 ; CHECK:       # %bb.0:
672 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
673 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
674 ; CHECK-NEXT:    ret
675   %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0
676   %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
677   %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)
678   ret <vscale x 2 x i16> %v
681 define <vscale x 2 x i16> @vsll_vx_nxv2i16_unmasked(<vscale x 2 x i16> %va, i16 %b, i32 zeroext %evl) {
682 ; CHECK-LABEL: vsll_vx_nxv2i16_unmasked:
683 ; CHECK:       # %bb.0:
684 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
685 ; CHECK-NEXT:    vsll.vx v8, v8, a0
686 ; CHECK-NEXT:    ret
687   %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0
688   %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
689   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
690   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
691   %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)
692   ret <vscale x 2 x i16> %v
695 define <vscale x 2 x i16> @vsll_vi_nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
696 ; CHECK-LABEL: vsll_vi_nxv2i16:
697 ; CHECK:       # %bb.0:
698 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
699 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
700 ; CHECK-NEXT:    ret
701   %elt.head = insertelement <vscale x 2 x i16> poison, i16 3, i32 0
702   %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
703   %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)
704   ret <vscale x 2 x i16> %v
707 define <vscale x 2 x i16> @vsll_vi_nxv2i16_unmasked(<vscale x 2 x i16> %va, i32 zeroext %evl) {
708 ; CHECK-LABEL: vsll_vi_nxv2i16_unmasked:
709 ; CHECK:       # %bb.0:
710 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
711 ; CHECK-NEXT:    vsll.vi v8, v8, 3
712 ; CHECK-NEXT:    ret
713   %elt.head = insertelement <vscale x 2 x i16> poison, i16 3, i32 0
714   %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
715   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
716   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
717   %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)
718   ret <vscale x 2 x i16> %v
721 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)
723 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) {
724 ; CHECK-LABEL: vsll_vv_nxv4i16:
725 ; CHECK:       # %bb.0:
726 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
727 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
728 ; CHECK-NEXT:    ret
729   %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)
730   ret <vscale x 4 x i16> %v
733 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) {
734 ; CHECK-LABEL: vsll_vv_nxv4i16_unmasked:
735 ; CHECK:       # %bb.0:
736 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
737 ; CHECK-NEXT:    vsll.vv v8, v8, v9
738 ; CHECK-NEXT:    ret
739   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
740   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
741   %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)
742   ret <vscale x 4 x i16> %v
745 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) {
746 ; CHECK-LABEL: vsll_vx_nxv4i16:
747 ; CHECK:       # %bb.0:
748 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
749 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
750 ; CHECK-NEXT:    ret
751   %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0
752   %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
753   %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)
754   ret <vscale x 4 x i16> %v
757 define <vscale x 4 x i16> @vsll_vx_nxv4i16_unmasked(<vscale x 4 x i16> %va, i16 %b, i32 zeroext %evl) {
758 ; CHECK-LABEL: vsll_vx_nxv4i16_unmasked:
759 ; CHECK:       # %bb.0:
760 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
761 ; CHECK-NEXT:    vsll.vx v8, v8, a0
762 ; CHECK-NEXT:    ret
763   %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0
764   %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
765   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
766   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
767   %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)
768   ret <vscale x 4 x i16> %v
771 define <vscale x 4 x i16> @vsll_vi_nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
772 ; CHECK-LABEL: vsll_vi_nxv4i16:
773 ; CHECK:       # %bb.0:
774 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
775 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
776 ; CHECK-NEXT:    ret
777   %elt.head = insertelement <vscale x 4 x i16> poison, i16 3, i32 0
778   %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
779   %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)
780   ret <vscale x 4 x i16> %v
783 define <vscale x 4 x i16> @vsll_vi_nxv4i16_unmasked(<vscale x 4 x i16> %va, i32 zeroext %evl) {
784 ; CHECK-LABEL: vsll_vi_nxv4i16_unmasked:
785 ; CHECK:       # %bb.0:
786 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
787 ; CHECK-NEXT:    vsll.vi v8, v8, 3
788 ; CHECK-NEXT:    ret
789   %elt.head = insertelement <vscale x 4 x i16> poison, i16 3, i32 0
790   %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
791   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
792   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
793   %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)
794   ret <vscale x 4 x i16> %v
797 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)
799 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) {
800 ; CHECK-LABEL: vsll_vv_nxv8i16:
801 ; CHECK:       # %bb.0:
802 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
803 ; CHECK-NEXT:    vsll.vv v8, v8, v10, v0.t
804 ; CHECK-NEXT:    ret
805   %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)
806   ret <vscale x 8 x i16> %v
809 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) {
810 ; CHECK-LABEL: vsll_vv_nxv8i16_unmasked:
811 ; CHECK:       # %bb.0:
812 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
813 ; CHECK-NEXT:    vsll.vv v8, v8, v10
814 ; CHECK-NEXT:    ret
815   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
816   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
817   %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)
818   ret <vscale x 8 x i16> %v
821 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) {
822 ; CHECK-LABEL: vsll_vx_nxv8i16:
823 ; CHECK:       # %bb.0:
824 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
825 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
826 ; CHECK-NEXT:    ret
827   %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0
828   %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
829   %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)
830   ret <vscale x 8 x i16> %v
833 define <vscale x 8 x i16> @vsll_vx_nxv8i16_unmasked(<vscale x 8 x i16> %va, i16 %b, i32 zeroext %evl) {
834 ; CHECK-LABEL: vsll_vx_nxv8i16_unmasked:
835 ; CHECK:       # %bb.0:
836 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
837 ; CHECK-NEXT:    vsll.vx v8, v8, a0
838 ; CHECK-NEXT:    ret
839   %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0
840   %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
841   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
842   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
843   %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)
844   ret <vscale x 8 x i16> %v
847 define <vscale x 8 x i16> @vsll_vi_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
848 ; CHECK-LABEL: vsll_vi_nxv8i16:
849 ; CHECK:       # %bb.0:
850 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
851 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
852 ; CHECK-NEXT:    ret
853   %elt.head = insertelement <vscale x 8 x i16> poison, i16 3, i32 0
854   %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
855   %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)
856   ret <vscale x 8 x i16> %v
859 define <vscale x 8 x i16> @vsll_vi_nxv8i16_unmasked(<vscale x 8 x i16> %va, i32 zeroext %evl) {
860 ; CHECK-LABEL: vsll_vi_nxv8i16_unmasked:
861 ; CHECK:       # %bb.0:
862 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
863 ; CHECK-NEXT:    vsll.vi v8, v8, 3
864 ; CHECK-NEXT:    ret
865   %elt.head = insertelement <vscale x 8 x i16> poison, i16 3, i32 0
866   %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
867   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
868   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
869   %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)
870   ret <vscale x 8 x i16> %v
873 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)
875 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) {
876 ; CHECK-LABEL: vsll_vv_nxv16i16:
877 ; CHECK:       # %bb.0:
878 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
879 ; CHECK-NEXT:    vsll.vv v8, v8, v12, v0.t
880 ; CHECK-NEXT:    ret
881   %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)
882   ret <vscale x 16 x i16> %v
885 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) {
886 ; CHECK-LABEL: vsll_vv_nxv16i16_unmasked:
887 ; CHECK:       # %bb.0:
888 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
889 ; CHECK-NEXT:    vsll.vv v8, v8, v12
890 ; CHECK-NEXT:    ret
891   %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
892   %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
893   %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)
894   ret <vscale x 16 x i16> %v
897 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) {
898 ; CHECK-LABEL: vsll_vx_nxv16i16:
899 ; CHECK:       # %bb.0:
900 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
901 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
902 ; CHECK-NEXT:    ret
903   %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0
904   %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
905   %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)
906   ret <vscale x 16 x i16> %v
909 define <vscale x 16 x i16> @vsll_vx_nxv16i16_unmasked(<vscale x 16 x i16> %va, i16 %b, i32 zeroext %evl) {
910 ; CHECK-LABEL: vsll_vx_nxv16i16_unmasked:
911 ; CHECK:       # %bb.0:
912 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
913 ; CHECK-NEXT:    vsll.vx v8, v8, a0
914 ; CHECK-NEXT:    ret
915   %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0
916   %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
917   %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
918   %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
919   %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)
920   ret <vscale x 16 x i16> %v
923 define <vscale x 16 x i16> @vsll_vi_nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
924 ; CHECK-LABEL: vsll_vi_nxv16i16:
925 ; CHECK:       # %bb.0:
926 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
927 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
928 ; CHECK-NEXT:    ret
929   %elt.head = insertelement <vscale x 16 x i16> poison, i16 3, i32 0
930   %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
931   %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)
932   ret <vscale x 16 x i16> %v
935 define <vscale x 16 x i16> @vsll_vi_nxv16i16_unmasked(<vscale x 16 x i16> %va, i32 zeroext %evl) {
936 ; CHECK-LABEL: vsll_vi_nxv16i16_unmasked:
937 ; CHECK:       # %bb.0:
938 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
939 ; CHECK-NEXT:    vsll.vi v8, v8, 3
940 ; CHECK-NEXT:    ret
941   %elt.head = insertelement <vscale x 16 x i16> poison, i16 3, i32 0
942   %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
943   %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
944   %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
945   %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)
946   ret <vscale x 16 x i16> %v
949 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)
951 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) {
952 ; CHECK-LABEL: vsll_vv_nxv32i16:
953 ; CHECK:       # %bb.0:
954 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
955 ; CHECK-NEXT:    vsll.vv v8, v8, v16, v0.t
956 ; CHECK-NEXT:    ret
957   %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)
958   ret <vscale x 32 x i16> %v
961 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) {
962 ; CHECK-LABEL: vsll_vv_nxv32i16_unmasked:
963 ; CHECK:       # %bb.0:
964 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
965 ; CHECK-NEXT:    vsll.vv v8, v8, v16
966 ; CHECK-NEXT:    ret
967   %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
968   %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
969   %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)
970   ret <vscale x 32 x i16> %v
973 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) {
974 ; CHECK-LABEL: vsll_vx_nxv32i16:
975 ; CHECK:       # %bb.0:
976 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
977 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
978 ; CHECK-NEXT:    ret
979   %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
980   %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
981   %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)
982   ret <vscale x 32 x i16> %v
985 define <vscale x 32 x i16> @vsll_vx_nxv32i16_unmasked(<vscale x 32 x i16> %va, i16 %b, i32 zeroext %evl) {
986 ; CHECK-LABEL: vsll_vx_nxv32i16_unmasked:
987 ; CHECK:       # %bb.0:
988 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
989 ; CHECK-NEXT:    vsll.vx v8, v8, a0
990 ; CHECK-NEXT:    ret
991   %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
992   %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
993   %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
994   %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
995   %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)
996   ret <vscale x 32 x i16> %v
999 define <vscale x 32 x i16> @vsll_vi_nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i1> %m, i32 zeroext %evl) {
1000 ; CHECK-LABEL: vsll_vi_nxv32i16:
1001 ; CHECK:       # %bb.0:
1002 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
1003 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
1004 ; CHECK-NEXT:    ret
1005   %elt.head = insertelement <vscale x 32 x i16> poison, i16 3, i32 0
1006   %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
1007   %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)
1008   ret <vscale x 32 x i16> %v
1011 define <vscale x 32 x i16> @vsll_vi_nxv32i16_unmasked(<vscale x 32 x i16> %va, i32 zeroext %evl) {
1012 ; CHECK-LABEL: vsll_vi_nxv32i16_unmasked:
1013 ; CHECK:       # %bb.0:
1014 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
1015 ; CHECK-NEXT:    vsll.vi v8, v8, 3
1016 ; CHECK-NEXT:    ret
1017   %elt.head = insertelement <vscale x 32 x i16> poison, i16 3, i32 0
1018   %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
1019   %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
1020   %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
1021   %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)
1022   ret <vscale x 32 x i16> %v
1025 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)
1027 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) {
1028 ; CHECK-LABEL: vsll_vv_nxv1i32:
1029 ; CHECK:       # %bb.0:
1030 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1031 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
1032 ; CHECK-NEXT:    ret
1033   %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)
1034   ret <vscale x 1 x i32> %v
1037 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) {
1038 ; CHECK-LABEL: vsll_vv_nxv1i32_unmasked:
1039 ; CHECK:       # %bb.0:
1040 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1041 ; CHECK-NEXT:    vsll.vv v8, v8, v9
1042 ; CHECK-NEXT:    ret
1043   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1044   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1045   %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)
1046   ret <vscale x 1 x i32> %v
1049 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) {
1050 ; CHECK-LABEL: vsll_vx_nxv1i32:
1051 ; CHECK:       # %bb.0:
1052 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1053 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
1054 ; CHECK-NEXT:    ret
1055   %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1056   %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1057   %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)
1058   ret <vscale x 1 x i32> %v
1061 define <vscale x 1 x i32> @vsll_vx_nxv1i32_unmasked(<vscale x 1 x i32> %va, i32 %b, i32 zeroext %evl) {
1062 ; CHECK-LABEL: vsll_vx_nxv1i32_unmasked:
1063 ; CHECK:       # %bb.0:
1064 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1065 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1066 ; CHECK-NEXT:    ret
1067   %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1068   %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1069   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1070   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1071   %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)
1072   ret <vscale x 1 x i32> %v
1075 define <vscale x 1 x i32> @vsll_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1076 ; CHECK-LABEL: vsll_vi_nxv1i32:
1077 ; CHECK:       # %bb.0:
1078 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1079 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
1080 ; CHECK-NEXT:    ret
1081   %elt.head = insertelement <vscale x 1 x i32> poison, i32 3, i32 0
1082   %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1083   %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)
1084   ret <vscale x 1 x i32> %v
1087 define <vscale x 1 x i32> @vsll_vi_nxv1i32_unmasked(<vscale x 1 x i32> %va, i32 zeroext %evl) {
1088 ; CHECK-LABEL: vsll_vi_nxv1i32_unmasked:
1089 ; CHECK:       # %bb.0:
1090 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1091 ; CHECK-NEXT:    vsll.vi v8, v8, 3
1092 ; CHECK-NEXT:    ret
1093   %elt.head = insertelement <vscale x 1 x i32> poison, i32 3, i32 0
1094   %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1095   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1096   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1097   %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)
1098   ret <vscale x 1 x i32> %v
1101 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)
1103 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) {
1104 ; CHECK-LABEL: vsll_vv_nxv2i32:
1105 ; CHECK:       # %bb.0:
1106 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1107 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
1108 ; CHECK-NEXT:    ret
1109   %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)
1110   ret <vscale x 2 x i32> %v
1113 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) {
1114 ; CHECK-LABEL: vsll_vv_nxv2i32_unmasked:
1115 ; CHECK:       # %bb.0:
1116 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1117 ; CHECK-NEXT:    vsll.vv v8, v8, v9
1118 ; CHECK-NEXT:    ret
1119   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1120   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1121   %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)
1122   ret <vscale x 2 x i32> %v
1125 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) {
1126 ; CHECK-LABEL: vsll_vx_nxv2i32:
1127 ; CHECK:       # %bb.0:
1128 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1129 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
1130 ; CHECK-NEXT:    ret
1131   %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
1132   %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1133   %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)
1134   ret <vscale x 2 x i32> %v
1137 define <vscale x 2 x i32> @vsll_vx_nxv2i32_unmasked(<vscale x 2 x i32> %va, i32 %b, i32 zeroext %evl) {
1138 ; CHECK-LABEL: vsll_vx_nxv2i32_unmasked:
1139 ; CHECK:       # %bb.0:
1140 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1141 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1142 ; CHECK-NEXT:    ret
1143   %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
1144   %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1145   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1146   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1147   %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)
1148   ret <vscale x 2 x i32> %v
1151 define <vscale x 2 x i32> @vsll_vi_nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1152 ; CHECK-LABEL: vsll_vi_nxv2i32:
1153 ; CHECK:       # %bb.0:
1154 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1155 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
1156 ; CHECK-NEXT:    ret
1157   %elt.head = insertelement <vscale x 2 x i32> poison, i32 3, i32 0
1158   %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1159   %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)
1160   ret <vscale x 2 x i32> %v
1163 define <vscale x 2 x i32> @vsll_vi_nxv2i32_unmasked(<vscale x 2 x i32> %va, i32 zeroext %evl) {
1164 ; CHECK-LABEL: vsll_vi_nxv2i32_unmasked:
1165 ; CHECK:       # %bb.0:
1166 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1167 ; CHECK-NEXT:    vsll.vi v8, v8, 3
1168 ; CHECK-NEXT:    ret
1169   %elt.head = insertelement <vscale x 2 x i32> poison, i32 3, i32 0
1170   %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1171   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1172   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1173   %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)
1174   ret <vscale x 2 x i32> %v
1177 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)
1179 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) {
1180 ; CHECK-LABEL: vsll_vv_nxv4i32:
1181 ; CHECK:       # %bb.0:
1182 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1183 ; CHECK-NEXT:    vsll.vv v8, v8, v10, v0.t
1184 ; CHECK-NEXT:    ret
1185   %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)
1186   ret <vscale x 4 x i32> %v
1189 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) {
1190 ; CHECK-LABEL: vsll_vv_nxv4i32_unmasked:
1191 ; CHECK:       # %bb.0:
1192 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1193 ; CHECK-NEXT:    vsll.vv v8, v8, v10
1194 ; CHECK-NEXT:    ret
1195   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1196   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1197   %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)
1198   ret <vscale x 4 x i32> %v
1201 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) {
1202 ; CHECK-LABEL: vsll_vx_nxv4i32:
1203 ; CHECK:       # %bb.0:
1204 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1205 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
1206 ; CHECK-NEXT:    ret
1207   %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
1208   %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1209   %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)
1210   ret <vscale x 4 x i32> %v
1213 define <vscale x 4 x i32> @vsll_vx_nxv4i32_unmasked(<vscale x 4 x i32> %va, i32 %b, i32 zeroext %evl) {
1214 ; CHECK-LABEL: vsll_vx_nxv4i32_unmasked:
1215 ; CHECK:       # %bb.0:
1216 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1217 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1218 ; CHECK-NEXT:    ret
1219   %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
1220   %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1221   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1222   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1223   %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)
1224   ret <vscale x 4 x i32> %v
1227 define <vscale x 4 x i32> @vsll_vi_nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1228 ; CHECK-LABEL: vsll_vi_nxv4i32:
1229 ; CHECK:       # %bb.0:
1230 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1231 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
1232 ; CHECK-NEXT:    ret
1233   %elt.head = insertelement <vscale x 4 x i32> poison, i32 3, i32 0
1234   %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1235   %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)
1236   ret <vscale x 4 x i32> %v
1239 define <vscale x 4 x i32> @vsll_vi_nxv4i32_unmasked(<vscale x 4 x i32> %va, i32 zeroext %evl) {
1240 ; CHECK-LABEL: vsll_vi_nxv4i32_unmasked:
1241 ; CHECK:       # %bb.0:
1242 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1243 ; CHECK-NEXT:    vsll.vi v8, v8, 3
1244 ; CHECK-NEXT:    ret
1245   %elt.head = insertelement <vscale x 4 x i32> poison, i32 3, i32 0
1246   %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1247   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1248   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1249   %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)
1250   ret <vscale x 4 x i32> %v
1253 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)
1255 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) {
1256 ; CHECK-LABEL: vsll_vv_nxv8i32:
1257 ; CHECK:       # %bb.0:
1258 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1259 ; CHECK-NEXT:    vsll.vv v8, v8, v12, v0.t
1260 ; CHECK-NEXT:    ret
1261   %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)
1262   ret <vscale x 8 x i32> %v
1265 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) {
1266 ; CHECK-LABEL: vsll_vv_nxv8i32_unmasked:
1267 ; CHECK:       # %bb.0:
1268 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1269 ; CHECK-NEXT:    vsll.vv v8, v8, v12
1270 ; CHECK-NEXT:    ret
1271   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1272   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1273   %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)
1274   ret <vscale x 8 x i32> %v
1277 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) {
1278 ; CHECK-LABEL: vsll_vx_nxv8i32:
1279 ; CHECK:       # %bb.0:
1280 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1281 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
1282 ; CHECK-NEXT:    ret
1283   %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1284   %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1285   %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)
1286   ret <vscale x 8 x i32> %v
1289 define <vscale x 8 x i32> @vsll_vx_nxv8i32_unmasked(<vscale x 8 x i32> %va, i32 %b, i32 zeroext %evl) {
1290 ; CHECK-LABEL: vsll_vx_nxv8i32_unmasked:
1291 ; CHECK:       # %bb.0:
1292 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1293 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1294 ; CHECK-NEXT:    ret
1295   %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1296   %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1297   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1298   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1299   %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)
1300   ret <vscale x 8 x i32> %v
1303 define <vscale x 8 x i32> @vsll_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1304 ; CHECK-LABEL: vsll_vi_nxv8i32:
1305 ; CHECK:       # %bb.0:
1306 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1307 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
1308 ; CHECK-NEXT:    ret
1309   %elt.head = insertelement <vscale x 8 x i32> poison, i32 3, i32 0
1310   %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1311   %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)
1312   ret <vscale x 8 x i32> %v
1315 define <vscale x 8 x i32> @vsll_vi_nxv8i32_unmasked(<vscale x 8 x i32> %va, i32 zeroext %evl) {
1316 ; CHECK-LABEL: vsll_vi_nxv8i32_unmasked:
1317 ; CHECK:       # %bb.0:
1318 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1319 ; CHECK-NEXT:    vsll.vi v8, v8, 3
1320 ; CHECK-NEXT:    ret
1321   %elt.head = insertelement <vscale x 8 x i32> poison, i32 3, i32 0
1322   %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1323   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1324   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1325   %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)
1326   ret <vscale x 8 x i32> %v
1329 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)
1331 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) {
1332 ; CHECK-LABEL: vsll_vv_nxv16i32:
1333 ; CHECK:       # %bb.0:
1334 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1335 ; CHECK-NEXT:    vsll.vv v8, v8, v16, v0.t
1336 ; CHECK-NEXT:    ret
1337   %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)
1338   ret <vscale x 16 x i32> %v
1341 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) {
1342 ; CHECK-LABEL: vsll_vv_nxv16i32_unmasked:
1343 ; CHECK:       # %bb.0:
1344 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1345 ; CHECK-NEXT:    vsll.vv v8, v8, v16
1346 ; CHECK-NEXT:    ret
1347   %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
1348   %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
1349   %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)
1350   ret <vscale x 16 x i32> %v
1353 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) {
1354 ; CHECK-LABEL: vsll_vx_nxv16i32:
1355 ; CHECK:       # %bb.0:
1356 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
1357 ; CHECK-NEXT:    vsll.vx v8, v8, a0, v0.t
1358 ; CHECK-NEXT:    ret
1359   %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0
1360   %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1361   %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)
1362   ret <vscale x 16 x i32> %v
1365 define <vscale x 16 x i32> @vsll_vx_nxv16i32_unmasked(<vscale x 16 x i32> %va, i32 %b, i32 zeroext %evl) {
1366 ; CHECK-LABEL: vsll_vx_nxv16i32_unmasked:
1367 ; CHECK:       # %bb.0:
1368 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
1369 ; CHECK-NEXT:    vsll.vx v8, v8, a0
1370 ; CHECK-NEXT:    ret
1371   %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0
1372   %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1373   %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
1374   %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
1375   %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)
1376   ret <vscale x 16 x i32> %v
1379 define <vscale x 16 x i32> @vsll_vi_nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1380 ; CHECK-LABEL: vsll_vi_nxv16i32:
1381 ; CHECK:       # %bb.0:
1382 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1383 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
1384 ; CHECK-NEXT:    ret
1385   %elt.head = insertelement <vscale x 16 x i32> poison, i32 3, i32 0
1386   %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1387   %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)
1388   ret <vscale x 16 x i32> %v
1391 define <vscale x 16 x i32> @vsll_vi_nxv16i32_unmasked(<vscale x 16 x i32> %va, i32 zeroext %evl) {
1392 ; CHECK-LABEL: vsll_vi_nxv16i32_unmasked:
1393 ; CHECK:       # %bb.0:
1394 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1395 ; CHECK-NEXT:    vsll.vi v8, v8, 3
1396 ; CHECK-NEXT:    ret
1397   %elt.head = insertelement <vscale x 16 x i32> poison, i32 3, i32 0
1398   %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1399   %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
1400   %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
1401   %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)
1402   ret <vscale x 16 x i32> %v
1405 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)
1407 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) {
1408 ; CHECK-LABEL: vsll_vv_nxv1i64:
1409 ; CHECK:       # %bb.0:
1410 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1411 ; CHECK-NEXT:    vsll.vv v8, v8, v9, v0.t
1412 ; CHECK-NEXT:    ret
1413   %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)
1414   ret <vscale x 1 x i64> %v
1417 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) {
1418 ; CHECK-LABEL: vsll_vv_nxv1i64_unmasked:
1419 ; CHECK:       # %bb.0:
1420 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1421 ; CHECK-NEXT:    vsll.vv v8, v8, v9
1422 ; CHECK-NEXT:    ret
1423   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1424   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1425   %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)
1426   ret <vscale x 1 x i64> %v
1429 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) {
1430 ; RV32-LABEL: vsll_vx_nxv1i64:
1431 ; RV32:       # %bb.0:
1432 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
1433 ; RV32-NEXT:    vsll.vx v8, v8, a0, v0.t
1434 ; RV32-NEXT:    ret
1436 ; RV64-LABEL: vsll_vx_nxv1i64:
1437 ; RV64:       # %bb.0:
1438 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1439 ; RV64-NEXT:    vsll.vx v8, v8, a0, v0.t
1440 ; RV64-NEXT:    ret
1441   %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
1442   %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
1443   %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)
1444   ret <vscale x 1 x i64> %v
1447 define <vscale x 1 x i64> @vsll_vx_nxv1i64_unmasked(<vscale x 1 x i64> %va, i64 %b, i32 zeroext %evl) {
1448 ; RV32-LABEL: vsll_vx_nxv1i64_unmasked:
1449 ; RV32:       # %bb.0:
1450 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
1451 ; RV32-NEXT:    vsll.vx v8, v8, a0
1452 ; RV32-NEXT:    ret
1454 ; RV64-LABEL: vsll_vx_nxv1i64_unmasked:
1455 ; RV64:       # %bb.0:
1456 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1457 ; RV64-NEXT:    vsll.vx v8, v8, a0
1458 ; RV64-NEXT:    ret
1459   %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
1460   %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
1461   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1462   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1463   %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)
1464   ret <vscale x 1 x i64> %v
1467 define <vscale x 1 x i64> @vsll_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1468 ; CHECK-LABEL: vsll_vi_nxv1i64:
1469 ; CHECK:       # %bb.0:
1470 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1471 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
1472 ; CHECK-NEXT:    ret
1473   %elt.head = insertelement <vscale x 1 x i64> poison, i64 3, i32 0
1474   %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
1475   %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)
1476   ret <vscale x 1 x i64> %v
1479 define <vscale x 1 x i64> @vsll_vi_nxv1i64_unmasked(<vscale x 1 x i64> %va, i32 zeroext %evl) {
1480 ; CHECK-LABEL: vsll_vi_nxv1i64_unmasked:
1481 ; CHECK:       # %bb.0:
1482 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1483 ; CHECK-NEXT:    vsll.vi v8, v8, 3
1484 ; CHECK-NEXT:    ret
1485   %elt.head = insertelement <vscale x 1 x i64> poison, i64 3, i32 0
1486   %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
1487   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1488   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1489   %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)
1490   ret <vscale x 1 x i64> %v
1493 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)
1495 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) {
1496 ; CHECK-LABEL: vsll_vv_nxv2i64:
1497 ; CHECK:       # %bb.0:
1498 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1499 ; CHECK-NEXT:    vsll.vv v8, v8, v10, v0.t
1500 ; CHECK-NEXT:    ret
1501   %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)
1502   ret <vscale x 2 x i64> %v
1505 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) {
1506 ; CHECK-LABEL: vsll_vv_nxv2i64_unmasked:
1507 ; CHECK:       # %bb.0:
1508 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1509 ; CHECK-NEXT:    vsll.vv v8, v8, v10
1510 ; CHECK-NEXT:    ret
1511   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1512   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1513   %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)
1514   ret <vscale x 2 x i64> %v
1517 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) {
1518 ; RV32-LABEL: vsll_vx_nxv2i64:
1519 ; RV32:       # %bb.0:
1520 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1521 ; RV32-NEXT:    vsll.vx v8, v8, a0, v0.t
1522 ; RV32-NEXT:    ret
1524 ; RV64-LABEL: vsll_vx_nxv2i64:
1525 ; RV64:       # %bb.0:
1526 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1527 ; RV64-NEXT:    vsll.vx v8, v8, a0, v0.t
1528 ; RV64-NEXT:    ret
1529   %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0
1530   %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1531   %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)
1532   ret <vscale x 2 x i64> %v
1535 define <vscale x 2 x i64> @vsll_vx_nxv2i64_unmasked(<vscale x 2 x i64> %va, i64 %b, i32 zeroext %evl) {
1536 ; RV32-LABEL: vsll_vx_nxv2i64_unmasked:
1537 ; RV32:       # %bb.0:
1538 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1539 ; RV32-NEXT:    vsll.vx v8, v8, a0
1540 ; RV32-NEXT:    ret
1542 ; RV64-LABEL: vsll_vx_nxv2i64_unmasked:
1543 ; RV64:       # %bb.0:
1544 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1545 ; RV64-NEXT:    vsll.vx v8, v8, a0
1546 ; RV64-NEXT:    ret
1547   %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0
1548   %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1549   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1550   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1551   %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)
1552   ret <vscale x 2 x i64> %v
1555 define <vscale x 2 x i64> @vsll_vi_nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1556 ; CHECK-LABEL: vsll_vi_nxv2i64:
1557 ; CHECK:       # %bb.0:
1558 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1559 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
1560 ; CHECK-NEXT:    ret
1561   %elt.head = insertelement <vscale x 2 x i64> poison, i64 3, i32 0
1562   %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1563   %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)
1564   ret <vscale x 2 x i64> %v
1567 define <vscale x 2 x i64> @vsll_vi_nxv2i64_unmasked(<vscale x 2 x i64> %va, i32 zeroext %evl) {
1568 ; CHECK-LABEL: vsll_vi_nxv2i64_unmasked:
1569 ; CHECK:       # %bb.0:
1570 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1571 ; CHECK-NEXT:    vsll.vi v8, v8, 3
1572 ; CHECK-NEXT:    ret
1573   %elt.head = insertelement <vscale x 2 x i64> poison, i64 3, i32 0
1574   %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1575   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1576   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1577   %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)
1578   ret <vscale x 2 x i64> %v
1581 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)
1583 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) {
1584 ; CHECK-LABEL: vsll_vv_nxv4i64:
1585 ; CHECK:       # %bb.0:
1586 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1587 ; CHECK-NEXT:    vsll.vv v8, v8, v12, v0.t
1588 ; CHECK-NEXT:    ret
1589   %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)
1590   ret <vscale x 4 x i64> %v
1593 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) {
1594 ; CHECK-LABEL: vsll_vv_nxv4i64_unmasked:
1595 ; CHECK:       # %bb.0:
1596 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1597 ; CHECK-NEXT:    vsll.vv v8, v8, v12
1598 ; CHECK-NEXT:    ret
1599   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1600   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1601   %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)
1602   ret <vscale x 4 x i64> %v
1605 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) {
1606 ; RV32-LABEL: vsll_vx_nxv4i64:
1607 ; RV32:       # %bb.0:
1608 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1609 ; RV32-NEXT:    vsll.vx v8, v8, a0, v0.t
1610 ; RV32-NEXT:    ret
1612 ; RV64-LABEL: vsll_vx_nxv4i64:
1613 ; RV64:       # %bb.0:
1614 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1615 ; RV64-NEXT:    vsll.vx v8, v8, a0, v0.t
1616 ; RV64-NEXT:    ret
1617   %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0
1618   %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1619   %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)
1620   ret <vscale x 4 x i64> %v
1623 define <vscale x 4 x i64> @vsll_vx_nxv4i64_unmasked(<vscale x 4 x i64> %va, i64 %b, i32 zeroext %evl) {
1624 ; RV32-LABEL: vsll_vx_nxv4i64_unmasked:
1625 ; RV32:       # %bb.0:
1626 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1627 ; RV32-NEXT:    vsll.vx v8, v8, a0
1628 ; RV32-NEXT:    ret
1630 ; RV64-LABEL: vsll_vx_nxv4i64_unmasked:
1631 ; RV64:       # %bb.0:
1632 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1633 ; RV64-NEXT:    vsll.vx v8, v8, a0
1634 ; RV64-NEXT:    ret
1635   %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0
1636   %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1637   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1638   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1639   %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)
1640   ret <vscale x 4 x i64> %v
1643 define <vscale x 4 x i64> @vsll_vi_nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1644 ; CHECK-LABEL: vsll_vi_nxv4i64:
1645 ; CHECK:       # %bb.0:
1646 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1647 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
1648 ; CHECK-NEXT:    ret
1649   %elt.head = insertelement <vscale x 4 x i64> poison, i64 3, i32 0
1650   %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1651   %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)
1652   ret <vscale x 4 x i64> %v
1655 define <vscale x 4 x i64> @vsll_vi_nxv4i64_unmasked(<vscale x 4 x i64> %va, i32 zeroext %evl) {
1656 ; CHECK-LABEL: vsll_vi_nxv4i64_unmasked:
1657 ; CHECK:       # %bb.0:
1658 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1659 ; CHECK-NEXT:    vsll.vi v8, v8, 3
1660 ; CHECK-NEXT:    ret
1661   %elt.head = insertelement <vscale x 4 x i64> poison, i64 3, i32 0
1662   %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1663   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1664   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1665   %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)
1666   ret <vscale x 4 x i64> %v
1669 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)
1671 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) {
1672 ; CHECK-LABEL: vsll_vv_nxv8i64:
1673 ; CHECK:       # %bb.0:
1674 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1675 ; CHECK-NEXT:    vsll.vv v8, v8, v16, v0.t
1676 ; CHECK-NEXT:    ret
1677   %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)
1678   ret <vscale x 8 x i64> %v
1681 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) {
1682 ; CHECK-LABEL: vsll_vv_nxv8i64_unmasked:
1683 ; CHECK:       # %bb.0:
1684 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1685 ; CHECK-NEXT:    vsll.vv v8, v8, v16
1686 ; CHECK-NEXT:    ret
1687   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1688   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1689   %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)
1690   ret <vscale x 8 x i64> %v
1693 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) {
1694 ; RV32-LABEL: vsll_vx_nxv8i64:
1695 ; RV32:       # %bb.0:
1696 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
1697 ; RV32-NEXT:    vsll.vx v8, v8, a0, v0.t
1698 ; RV32-NEXT:    ret
1700 ; RV64-LABEL: vsll_vx_nxv8i64:
1701 ; RV64:       # %bb.0:
1702 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
1703 ; RV64-NEXT:    vsll.vx v8, v8, a0, v0.t
1704 ; RV64-NEXT:    ret
1705   %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
1706   %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1707   %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)
1708   ret <vscale x 8 x i64> %v
1711 define <vscale x 8 x i64> @vsll_vx_nxv8i64_unmasked(<vscale x 8 x i64> %va, i64 %b, i32 zeroext %evl) {
1712 ; RV32-LABEL: vsll_vx_nxv8i64_unmasked:
1713 ; RV32:       # %bb.0:
1714 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
1715 ; RV32-NEXT:    vsll.vx v8, v8, a0
1716 ; RV32-NEXT:    ret
1718 ; RV64-LABEL: vsll_vx_nxv8i64_unmasked:
1719 ; RV64:       # %bb.0:
1720 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
1721 ; RV64-NEXT:    vsll.vx v8, v8, a0
1722 ; RV64-NEXT:    ret
1723   %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
1724   %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1725   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1726   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1727   %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)
1728   ret <vscale x 8 x i64> %v
1731 define <vscale x 8 x i64> @vsll_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1732 ; CHECK-LABEL: vsll_vi_nxv8i64:
1733 ; CHECK:       # %bb.0:
1734 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1735 ; CHECK-NEXT:    vsll.vi v8, v8, 3, v0.t
1736 ; CHECK-NEXT:    ret
1737   %elt.head = insertelement <vscale x 8 x i64> poison, i64 3, i32 0
1738   %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1739   %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)
1740   ret <vscale x 8 x i64> %v
1743 define <vscale x 8 x i64> @vsll_vi_nxv8i64_unmasked(<vscale x 8 x i64> %va, i32 zeroext %evl) {
1744 ; CHECK-LABEL: vsll_vi_nxv8i64_unmasked:
1745 ; CHECK:       # %bb.0:
1746 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1747 ; CHECK-NEXT:    vsll.vi v8, v8, 3
1748 ; CHECK-NEXT:    ret
1749   %elt.head = insertelement <vscale x 8 x i64> poison, i64 3, i32 0
1750   %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1751   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1752   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1753   %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)
1754   ret <vscale x 8 x i64> %v