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:
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
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:
30 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
31 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
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:
40 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
41 ; CHECK-NEXT: vsll.vv v8, v8, v9
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:
52 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
53 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
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:
64 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
65 ; CHECK-NEXT: vsll.vx v8, v8, a0
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:
78 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
79 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
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:
90 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
91 ; CHECK-NEXT: vsll.vi v8, v8, 3
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:
106 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
107 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
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:
116 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
117 ; CHECK-NEXT: vsll.vv v8, v8, v9
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:
128 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
129 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
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:
140 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
141 ; CHECK-NEXT: vsll.vx v8, v8, a0
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:
154 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
155 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
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:
166 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
167 ; CHECK-NEXT: vsll.vi v8, v8, 3
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:
182 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
183 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
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:
192 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
193 ; CHECK-NEXT: vsll.vv v8, v8, v9
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:
204 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
205 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
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:
216 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
217 ; CHECK-NEXT: vsll.vx v8, v8, a0
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:
230 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
231 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
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:
242 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
243 ; CHECK-NEXT: vsll.vi v8, v8, 3
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:
258 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
259 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
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:
270 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
271 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
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:
280 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
281 ; CHECK-NEXT: vsll.vv v8, v8, v9
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:
292 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
293 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
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:
304 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
305 ; CHECK-NEXT: vsll.vx v8, v8, a0
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:
318 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
319 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
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:
330 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
331 ; CHECK-NEXT: vsll.vi v8, v8, 3
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:
346 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
347 ; CHECK-NEXT: vsll.vv v8, v8, v10, v0.t
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:
356 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
357 ; CHECK-NEXT: vsll.vv v8, v8, v10
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:
368 ; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma
369 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
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:
380 ; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma
381 ; CHECK-NEXT: vsll.vx v8, v8, a0
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:
394 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
395 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
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:
406 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
407 ; CHECK-NEXT: vsll.vi v8, v8, 3
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:
422 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
423 ; CHECK-NEXT: vsll.vv v8, v8, v12, v0.t
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:
432 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
433 ; CHECK-NEXT: vsll.vv v8, v8, v12
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:
444 ; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma
445 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
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:
456 ; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma
457 ; CHECK-NEXT: vsll.vx v8, v8, a0
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:
470 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
471 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
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:
482 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
483 ; CHECK-NEXT: vsll.vi v8, v8, 3
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:
498 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
499 ; CHECK-NEXT: vsll.vv v8, v8, v16, v0.t
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:
508 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
509 ; CHECK-NEXT: vsll.vv v8, v8, v16
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:
520 ; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma
521 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
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:
532 ; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma
533 ; CHECK-NEXT: vsll.vx v8, v8, a0
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:
546 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
547 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
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:
558 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
559 ; CHECK-NEXT: vsll.vi v8, v8, 3
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:
574 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
575 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
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:
584 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
585 ; CHECK-NEXT: vsll.vv v8, v8, v9
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:
596 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
597 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
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:
608 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
609 ; CHECK-NEXT: vsll.vx v8, v8, a0
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:
622 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
623 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
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:
634 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
635 ; CHECK-NEXT: vsll.vi v8, v8, 3
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:
650 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
651 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
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:
660 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
661 ; CHECK-NEXT: vsll.vv v8, v8, v9
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:
672 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
673 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
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:
684 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
685 ; CHECK-NEXT: vsll.vx v8, v8, a0
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:
698 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
699 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
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:
710 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
711 ; CHECK-NEXT: vsll.vi v8, v8, 3
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:
726 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
727 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
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:
736 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
737 ; CHECK-NEXT: vsll.vv v8, v8, v9
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:
748 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
749 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
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:
760 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
761 ; CHECK-NEXT: vsll.vx v8, v8, a0
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:
774 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
775 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
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:
786 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
787 ; CHECK-NEXT: vsll.vi v8, v8, 3
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:
802 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
803 ; CHECK-NEXT: vsll.vv v8, v8, v10, v0.t
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:
812 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
813 ; CHECK-NEXT: vsll.vv v8, v8, v10
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:
824 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
825 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
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:
836 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
837 ; CHECK-NEXT: vsll.vx v8, v8, a0
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:
850 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
851 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
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:
862 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
863 ; CHECK-NEXT: vsll.vi v8, v8, 3
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:
878 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
879 ; CHECK-NEXT: vsll.vv v8, v8, v12, v0.t
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:
888 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
889 ; CHECK-NEXT: vsll.vv v8, v8, v12
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:
900 ; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma
901 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
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:
912 ; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma
913 ; CHECK-NEXT: vsll.vx v8, v8, a0
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:
926 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
927 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
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:
938 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
939 ; CHECK-NEXT: vsll.vi v8, v8, 3
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:
954 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
955 ; CHECK-NEXT: vsll.vv v8, v8, v16, v0.t
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:
964 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
965 ; CHECK-NEXT: vsll.vv v8, v8, v16
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:
976 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
977 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
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:
988 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
989 ; CHECK-NEXT: vsll.vx v8, v8, a0
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:
1002 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
1003 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
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:
1014 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
1015 ; CHECK-NEXT: vsll.vi v8, v8, 3
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:
1030 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1031 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
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:
1040 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1041 ; CHECK-NEXT: vsll.vv v8, v8, v9
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:
1052 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
1053 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
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:
1064 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
1065 ; CHECK-NEXT: vsll.vx v8, v8, a0
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:
1078 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1079 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
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:
1090 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1091 ; CHECK-NEXT: vsll.vi v8, v8, 3
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:
1106 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1107 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
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:
1116 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1117 ; CHECK-NEXT: vsll.vv v8, v8, v9
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:
1128 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
1129 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
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:
1140 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
1141 ; CHECK-NEXT: vsll.vx v8, v8, a0
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:
1154 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1155 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
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:
1166 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1167 ; CHECK-NEXT: vsll.vi v8, v8, 3
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:
1182 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1183 ; CHECK-NEXT: vsll.vv v8, v8, v10, v0.t
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:
1192 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1193 ; CHECK-NEXT: vsll.vv v8, v8, v10
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:
1204 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
1205 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
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:
1216 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
1217 ; CHECK-NEXT: vsll.vx v8, v8, a0
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:
1230 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1231 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
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:
1242 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1243 ; CHECK-NEXT: vsll.vi v8, v8, 3
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:
1258 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1259 ; CHECK-NEXT: vsll.vv v8, v8, v12, v0.t
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:
1268 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1269 ; CHECK-NEXT: vsll.vv v8, v8, v12
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:
1280 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
1281 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
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:
1292 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
1293 ; CHECK-NEXT: vsll.vx v8, v8, a0
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:
1306 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1307 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
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:
1318 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1319 ; CHECK-NEXT: vsll.vi v8, v8, 3
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:
1334 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1335 ; CHECK-NEXT: vsll.vv v8, v8, v16, v0.t
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:
1344 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1345 ; CHECK-NEXT: vsll.vv v8, v8, v16
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:
1356 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
1357 ; CHECK-NEXT: vsll.vx v8, v8, a0, v0.t
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:
1368 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
1369 ; CHECK-NEXT: vsll.vx v8, v8, a0
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:
1382 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1383 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
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:
1394 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1395 ; CHECK-NEXT: vsll.vi v8, v8, 3
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:
1410 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1411 ; CHECK-NEXT: vsll.vv v8, v8, v9, v0.t
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:
1420 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1421 ; CHECK-NEXT: vsll.vv v8, v8, v9
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:
1432 ; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma
1433 ; RV32-NEXT: vsll.vx v8, v8, a0, v0.t
1436 ; RV64-LABEL: vsll_vx_nxv1i64:
1438 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
1439 ; RV64-NEXT: vsll.vx v8, v8, a0, v0.t
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:
1450 ; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma
1451 ; RV32-NEXT: vsll.vx v8, v8, a0
1454 ; RV64-LABEL: vsll_vx_nxv1i64_unmasked:
1456 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
1457 ; RV64-NEXT: vsll.vx v8, v8, a0
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:
1470 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1471 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
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:
1482 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1483 ; CHECK-NEXT: vsll.vi v8, v8, 3
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:
1498 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1499 ; CHECK-NEXT: vsll.vv v8, v8, v10, v0.t
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:
1508 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1509 ; CHECK-NEXT: vsll.vv v8, v8, v10
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:
1520 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
1521 ; RV32-NEXT: vsll.vx v8, v8, a0, v0.t
1524 ; RV64-LABEL: vsll_vx_nxv2i64:
1526 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
1527 ; RV64-NEXT: vsll.vx v8, v8, a0, v0.t
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:
1538 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
1539 ; RV32-NEXT: vsll.vx v8, v8, a0
1542 ; RV64-LABEL: vsll_vx_nxv2i64_unmasked:
1544 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
1545 ; RV64-NEXT: vsll.vx v8, v8, a0
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:
1558 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1559 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
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:
1570 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1571 ; CHECK-NEXT: vsll.vi v8, v8, 3
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:
1586 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1587 ; CHECK-NEXT: vsll.vv v8, v8, v12, v0.t
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:
1596 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1597 ; CHECK-NEXT: vsll.vv v8, v8, v12
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:
1608 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
1609 ; RV32-NEXT: vsll.vx v8, v8, a0, v0.t
1612 ; RV64-LABEL: vsll_vx_nxv4i64:
1614 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
1615 ; RV64-NEXT: vsll.vx v8, v8, a0, v0.t
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:
1626 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
1627 ; RV32-NEXT: vsll.vx v8, v8, a0
1630 ; RV64-LABEL: vsll_vx_nxv4i64_unmasked:
1632 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
1633 ; RV64-NEXT: vsll.vx v8, v8, a0
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:
1646 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1647 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
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:
1658 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1659 ; CHECK-NEXT: vsll.vi v8, v8, 3
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:
1674 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1675 ; CHECK-NEXT: vsll.vv v8, v8, v16, v0.t
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:
1684 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1685 ; CHECK-NEXT: vsll.vv v8, v8, v16
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:
1696 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
1697 ; RV32-NEXT: vsll.vx v8, v8, a0, v0.t
1700 ; RV64-LABEL: vsll_vx_nxv8i64:
1702 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1703 ; RV64-NEXT: vsll.vx v8, v8, a0, v0.t
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:
1714 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
1715 ; RV32-NEXT: vsll.vx v8, v8, a0
1718 ; RV64-LABEL: vsll_vx_nxv8i64_unmasked:
1720 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1721 ; RV64-NEXT: vsll.vx v8, v8, a0
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:
1734 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1735 ; CHECK-NEXT: vsll.vi v8, v8, 3, v0.t
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:
1746 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1747 ; CHECK-NEXT: vsll.vi v8, v8, 3
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