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.lshr.nxv8i7(<vscale x 8 x i7>, <vscale x 8 x i7>, <vscale x 8 x i1>, i32)
9 define <vscale x 8 x i7> @vsrl_vx_nxv8i7(<vscale x 8 x i7> %a, i7 signext %b, <vscale x 8 x i1> %mask, i32 zeroext %evl) {
10 ; CHECK-LABEL: vsrl_vx_nxv8i7:
12 ; CHECK-NEXT: li a2, 127
13 ; CHECK-NEXT: vsetvli a3, zero, e8, m1, ta, ma
14 ; CHECK-NEXT: vand.vx v8, v8, a2
15 ; CHECK-NEXT: vmv.v.x v9, a0
16 ; CHECK-NEXT: vand.vx v9, v9, a2
17 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
18 ; CHECK-NEXT: vsrl.vv v8, v8, v9, v0.t
20 %elt.head = insertelement <vscale x 8 x i7> poison, i7 %b, i32 0
21 %vb = shufflevector <vscale x 8 x i7> %elt.head, <vscale x 8 x i7> poison, <vscale x 8 x i32> zeroinitializer
22 %v = call <vscale x 8 x i7> @llvm.vp.lshr.nxv8i7(<vscale x 8 x i7> %a, <vscale x 8 x i7> %vb, <vscale x 8 x i1> %mask, i32 %evl)
23 ret <vscale x 8 x i7> %v
26 declare <vscale x 1 x i8> @llvm.vp.lshr.nxv1i8(<vscale x 1 x i8>, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
28 define <vscale x 1 x i8> @vsrl_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
29 ; CHECK-LABEL: vsrl_vv_nxv1i8:
31 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
32 ; CHECK-NEXT: vsrl.vv v8, v8, v9, v0.t
34 %v = call <vscale x 1 x i8> @llvm.vp.lshr.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32 %evl)
35 ret <vscale x 1 x i8> %v
38 define <vscale x 1 x i8> @vsrl_vv_nxv1i8_unmasked(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, i32 zeroext %evl) {
39 ; CHECK-LABEL: vsrl_vv_nxv1i8_unmasked:
41 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
42 ; CHECK-NEXT: vsrl.vv v8, v8, v9
44 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
45 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
46 %v = call <vscale x 1 x i8> @llvm.vp.lshr.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32 %evl)
47 ret <vscale x 1 x i8> %v
50 define <vscale x 1 x i8> @vsrl_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
51 ; CHECK-LABEL: vsrl_vx_nxv1i8:
53 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
54 ; CHECK-NEXT: vsrl.vx v8, v8, a0, v0.t
56 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
57 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
58 %v = call <vscale x 1 x i8> @llvm.vp.lshr.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 %evl)
59 ret <vscale x 1 x i8> %v
62 define <vscale x 1 x i8> @vsrl_vx_nxv1i8_unmasked(<vscale x 1 x i8> %va, i8 %b, i32 zeroext %evl) {
63 ; CHECK-LABEL: vsrl_vx_nxv1i8_unmasked:
65 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
66 ; CHECK-NEXT: vsrl.vx v8, v8, a0
68 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
69 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
70 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
71 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
72 %v = call <vscale x 1 x i8> @llvm.vp.lshr.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 %evl)
73 ret <vscale x 1 x i8> %v
76 define <vscale x 1 x i8> @vsrl_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
77 ; CHECK-LABEL: vsrl_vi_nxv1i8:
79 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
80 ; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
82 %elt.head = insertelement <vscale x 1 x i8> poison, i8 4, i32 0
83 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
84 %v = call <vscale x 1 x i8> @llvm.vp.lshr.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 %evl)
85 ret <vscale x 1 x i8> %v
88 define <vscale x 1 x i8> @vsrl_vi_nxv1i8_unmasked(<vscale x 1 x i8> %va, i32 zeroext %evl) {
89 ; CHECK-LABEL: vsrl_vi_nxv1i8_unmasked:
91 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
92 ; CHECK-NEXT: vsrl.vi v8, v8, 4
94 %elt.head = insertelement <vscale x 1 x i8> poison, i8 4, i32 0
95 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
96 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
97 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
98 %v = call <vscale x 1 x i8> @llvm.vp.lshr.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 %evl)
99 ret <vscale x 1 x i8> %v
102 declare <vscale x 2 x i8> @llvm.vp.lshr.nxv2i8(<vscale x 2 x i8>, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
104 define <vscale x 2 x i8> @vsrl_vv_nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
105 ; CHECK-LABEL: vsrl_vv_nxv2i8:
107 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
108 ; CHECK-NEXT: vsrl.vv v8, v8, v9, v0.t
110 %v = call <vscale x 2 x i8> @llvm.vp.lshr.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> %m, i32 %evl)
111 ret <vscale x 2 x i8> %v
114 define <vscale x 2 x i8> @vsrl_vv_nxv2i8_unmasked(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, i32 zeroext %evl) {
115 ; CHECK-LABEL: vsrl_vv_nxv2i8_unmasked:
117 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
118 ; CHECK-NEXT: vsrl.vv v8, v8, v9
120 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
121 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
122 %v = call <vscale x 2 x i8> @llvm.vp.lshr.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> %m, i32 %evl)
123 ret <vscale x 2 x i8> %v
126 define <vscale x 2 x i8> @vsrl_vx_nxv2i8(<vscale x 2 x i8> %va, i8 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
127 ; CHECK-LABEL: vsrl_vx_nxv2i8:
129 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
130 ; CHECK-NEXT: vsrl.vx v8, v8, a0, v0.t
132 %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0
133 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
134 %v = call <vscale x 2 x i8> @llvm.vp.lshr.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> %m, i32 %evl)
135 ret <vscale x 2 x i8> %v
138 define <vscale x 2 x i8> @vsrl_vx_nxv2i8_unmasked(<vscale x 2 x i8> %va, i8 %b, i32 zeroext %evl) {
139 ; CHECK-LABEL: vsrl_vx_nxv2i8_unmasked:
141 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
142 ; CHECK-NEXT: vsrl.vx v8, v8, a0
144 %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0
145 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
146 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
147 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
148 %v = call <vscale x 2 x i8> @llvm.vp.lshr.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> %m, i32 %evl)
149 ret <vscale x 2 x i8> %v
152 define <vscale x 2 x i8> @vsrl_vi_nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
153 ; CHECK-LABEL: vsrl_vi_nxv2i8:
155 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
156 ; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
158 %elt.head = insertelement <vscale x 2 x i8> poison, i8 4, i32 0
159 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
160 %v = call <vscale x 2 x i8> @llvm.vp.lshr.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> %m, i32 %evl)
161 ret <vscale x 2 x i8> %v
164 define <vscale x 2 x i8> @vsrl_vi_nxv2i8_unmasked(<vscale x 2 x i8> %va, i32 zeroext %evl) {
165 ; CHECK-LABEL: vsrl_vi_nxv2i8_unmasked:
167 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
168 ; CHECK-NEXT: vsrl.vi v8, v8, 4
170 %elt.head = insertelement <vscale x 2 x i8> poison, i8 4, i32 0
171 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
172 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
173 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
174 %v = call <vscale x 2 x i8> @llvm.vp.lshr.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> %m, i32 %evl)
175 ret <vscale x 2 x i8> %v
178 declare <vscale x 4 x i8> @llvm.vp.lshr.nxv4i8(<vscale x 4 x i8>, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
180 define <vscale x 4 x i8> @vsrl_vv_nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
181 ; CHECK-LABEL: vsrl_vv_nxv4i8:
183 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
184 ; CHECK-NEXT: vsrl.vv v8, v8, v9, v0.t
186 %v = call <vscale x 4 x i8> @llvm.vp.lshr.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> %m, i32 %evl)
187 ret <vscale x 4 x i8> %v
190 define <vscale x 4 x i8> @vsrl_vv_nxv4i8_unmasked(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, i32 zeroext %evl) {
191 ; CHECK-LABEL: vsrl_vv_nxv4i8_unmasked:
193 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
194 ; CHECK-NEXT: vsrl.vv v8, v8, v9
196 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
197 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
198 %v = call <vscale x 4 x i8> @llvm.vp.lshr.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> %m, i32 %evl)
199 ret <vscale x 4 x i8> %v
202 define <vscale x 4 x i8> @vsrl_vx_nxv4i8(<vscale x 4 x i8> %va, i8 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
203 ; CHECK-LABEL: vsrl_vx_nxv4i8:
205 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
206 ; CHECK-NEXT: vsrl.vx v8, v8, a0, v0.t
208 %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0
209 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
210 %v = call <vscale x 4 x i8> @llvm.vp.lshr.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> %m, i32 %evl)
211 ret <vscale x 4 x i8> %v
214 define <vscale x 4 x i8> @vsrl_vx_nxv4i8_unmasked(<vscale x 4 x i8> %va, i8 %b, i32 zeroext %evl) {
215 ; CHECK-LABEL: vsrl_vx_nxv4i8_unmasked:
217 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
218 ; CHECK-NEXT: vsrl.vx v8, v8, a0
220 %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0
221 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
222 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
223 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
224 %v = call <vscale x 4 x i8> @llvm.vp.lshr.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> %m, i32 %evl)
225 ret <vscale x 4 x i8> %v
228 define <vscale x 4 x i8> @vsrl_vi_nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
229 ; CHECK-LABEL: vsrl_vi_nxv4i8:
231 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
232 ; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
234 %elt.head = insertelement <vscale x 4 x i8> poison, i8 4, i32 0
235 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
236 %v = call <vscale x 4 x i8> @llvm.vp.lshr.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> %m, i32 %evl)
237 ret <vscale x 4 x i8> %v
240 define <vscale x 4 x i8> @vsrl_vi_nxv4i8_unmasked(<vscale x 4 x i8> %va, i32 zeroext %evl) {
241 ; CHECK-LABEL: vsrl_vi_nxv4i8_unmasked:
243 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
244 ; CHECK-NEXT: vsrl.vi v8, v8, 4
246 %elt.head = insertelement <vscale x 4 x i8> poison, i8 4, i32 0
247 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
248 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
249 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
250 %v = call <vscale x 4 x i8> @llvm.vp.lshr.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> %m, i32 %evl)
251 ret <vscale x 4 x i8> %v
254 declare <vscale x 8 x i8> @llvm.vp.lshr.nxv8i8(<vscale x 8 x i8>, <vscale x 8 x i8>, <vscale x 8 x i1>, i32)
256 define <vscale x 8 x i8> @vsrl_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
257 ; CHECK-LABEL: vsrl_vv_nxv8i8:
259 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
260 ; CHECK-NEXT: vsrl.vv v8, v8, v9, v0.t
262 %v = call <vscale x 8 x i8> @llvm.vp.lshr.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> %m, i32 %evl)
263 ret <vscale x 8 x i8> %v
266 define <vscale x 8 x i8> @vsrl_vv_nxv8i8_unmasked(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, i32 zeroext %evl) {
267 ; CHECK-LABEL: vsrl_vv_nxv8i8_unmasked:
269 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
270 ; CHECK-NEXT: vsrl.vv v8, v8, v9
272 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
273 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
274 %v = call <vscale x 8 x i8> @llvm.vp.lshr.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> %m, i32 %evl)
275 ret <vscale x 8 x i8> %v
278 define <vscale x 8 x i8> @vsrl_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
279 ; CHECK-LABEL: vsrl_vx_nxv8i8:
281 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
282 ; CHECK-NEXT: vsrl.vx v8, v8, a0, v0.t
284 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
285 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
286 %v = call <vscale x 8 x i8> @llvm.vp.lshr.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 %evl)
287 ret <vscale x 8 x i8> %v
290 define <vscale x 8 x i8> @vsrl_vx_nxv8i8_unmasked(<vscale x 8 x i8> %va, i8 %b, i32 zeroext %evl) {
291 ; CHECK-LABEL: vsrl_vx_nxv8i8_unmasked:
293 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
294 ; CHECK-NEXT: vsrl.vx v8, v8, a0
296 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
297 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
298 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
299 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
300 %v = call <vscale x 8 x i8> @llvm.vp.lshr.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 %evl)
301 ret <vscale x 8 x i8> %v
304 define <vscale x 8 x i8> @vsrl_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
305 ; CHECK-LABEL: vsrl_vi_nxv8i8:
307 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
308 ; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
310 %elt.head = insertelement <vscale x 8 x i8> poison, i8 4, i32 0
311 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
312 %v = call <vscale x 8 x i8> @llvm.vp.lshr.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 %evl)
313 ret <vscale x 8 x i8> %v
316 define <vscale x 8 x i8> @vsrl_vi_nxv8i8_unmasked(<vscale x 8 x i8> %va, i32 zeroext %evl) {
317 ; CHECK-LABEL: vsrl_vi_nxv8i8_unmasked:
319 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
320 ; CHECK-NEXT: vsrl.vi v8, v8, 4
322 %elt.head = insertelement <vscale x 8 x i8> poison, i8 4, i32 0
323 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
324 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
325 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
326 %v = call <vscale x 8 x i8> @llvm.vp.lshr.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 %evl)
327 ret <vscale x 8 x i8> %v
330 declare <vscale x 16 x i8> @llvm.vp.lshr.nxv16i8(<vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i1>, i32)
332 define <vscale x 16 x i8> @vsrl_vv_nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
333 ; CHECK-LABEL: vsrl_vv_nxv16i8:
335 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
336 ; CHECK-NEXT: vsrl.vv v8, v8, v10, v0.t
338 %v = call <vscale x 16 x i8> @llvm.vp.lshr.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> %m, i32 %evl)
339 ret <vscale x 16 x i8> %v
342 define <vscale x 16 x i8> @vsrl_vv_nxv16i8_unmasked(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, i32 zeroext %evl) {
343 ; CHECK-LABEL: vsrl_vv_nxv16i8_unmasked:
345 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
346 ; CHECK-NEXT: vsrl.vv v8, v8, v10
348 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
349 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
350 %v = call <vscale x 16 x i8> @llvm.vp.lshr.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> %m, i32 %evl)
351 ret <vscale x 16 x i8> %v
354 define <vscale x 16 x i8> @vsrl_vx_nxv16i8(<vscale x 16 x i8> %va, i8 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
355 ; CHECK-LABEL: vsrl_vx_nxv16i8:
357 ; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma
358 ; CHECK-NEXT: vsrl.vx v8, v8, a0, v0.t
360 %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0
361 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
362 %v = call <vscale x 16 x i8> @llvm.vp.lshr.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> %m, i32 %evl)
363 ret <vscale x 16 x i8> %v
366 define <vscale x 16 x i8> @vsrl_vx_nxv16i8_unmasked(<vscale x 16 x i8> %va, i8 %b, i32 zeroext %evl) {
367 ; CHECK-LABEL: vsrl_vx_nxv16i8_unmasked:
369 ; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma
370 ; CHECK-NEXT: vsrl.vx v8, v8, a0
372 %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0
373 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
374 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
375 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
376 %v = call <vscale x 16 x i8> @llvm.vp.lshr.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> %m, i32 %evl)
377 ret <vscale x 16 x i8> %v
380 define <vscale x 16 x i8> @vsrl_vi_nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
381 ; CHECK-LABEL: vsrl_vi_nxv16i8:
383 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
384 ; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
386 %elt.head = insertelement <vscale x 16 x i8> poison, i8 4, i32 0
387 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
388 %v = call <vscale x 16 x i8> @llvm.vp.lshr.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> %m, i32 %evl)
389 ret <vscale x 16 x i8> %v
392 define <vscale x 16 x i8> @vsrl_vi_nxv16i8_unmasked(<vscale x 16 x i8> %va, i32 zeroext %evl) {
393 ; CHECK-LABEL: vsrl_vi_nxv16i8_unmasked:
395 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
396 ; CHECK-NEXT: vsrl.vi v8, v8, 4
398 %elt.head = insertelement <vscale x 16 x i8> poison, i8 4, i32 0
399 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
400 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
401 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
402 %v = call <vscale x 16 x i8> @llvm.vp.lshr.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> %m, i32 %evl)
403 ret <vscale x 16 x i8> %v
406 declare <vscale x 32 x i8> @llvm.vp.lshr.nxv32i8(<vscale x 32 x i8>, <vscale x 32 x i8>, <vscale x 32 x i1>, i32)
408 define <vscale x 32 x i8> @vsrl_vv_nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
409 ; CHECK-LABEL: vsrl_vv_nxv32i8:
411 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
412 ; CHECK-NEXT: vsrl.vv v8, v8, v12, v0.t
414 %v = call <vscale x 32 x i8> @llvm.vp.lshr.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> %m, i32 %evl)
415 ret <vscale x 32 x i8> %v
418 define <vscale x 32 x i8> @vsrl_vv_nxv32i8_unmasked(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, i32 zeroext %evl) {
419 ; CHECK-LABEL: vsrl_vv_nxv32i8_unmasked:
421 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
422 ; CHECK-NEXT: vsrl.vv v8, v8, v12
424 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
425 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
426 %v = call <vscale x 32 x i8> @llvm.vp.lshr.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> %m, i32 %evl)
427 ret <vscale x 32 x i8> %v
430 define <vscale x 32 x i8> @vsrl_vx_nxv32i8(<vscale x 32 x i8> %va, i8 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
431 ; CHECK-LABEL: vsrl_vx_nxv32i8:
433 ; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma
434 ; CHECK-NEXT: vsrl.vx v8, v8, a0, v0.t
436 %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0
437 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
438 %v = call <vscale x 32 x i8> @llvm.vp.lshr.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> %m, i32 %evl)
439 ret <vscale x 32 x i8> %v
442 define <vscale x 32 x i8> @vsrl_vx_nxv32i8_unmasked(<vscale x 32 x i8> %va, i8 %b, i32 zeroext %evl) {
443 ; CHECK-LABEL: vsrl_vx_nxv32i8_unmasked:
445 ; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma
446 ; CHECK-NEXT: vsrl.vx v8, v8, a0
448 %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0
449 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
450 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
451 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
452 %v = call <vscale x 32 x i8> @llvm.vp.lshr.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> %m, i32 %evl)
453 ret <vscale x 32 x i8> %v
456 define <vscale x 32 x i8> @vsrl_vi_nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i1> %m, i32 zeroext %evl) {
457 ; CHECK-LABEL: vsrl_vi_nxv32i8:
459 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
460 ; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
462 %elt.head = insertelement <vscale x 32 x i8> poison, i8 4, i32 0
463 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
464 %v = call <vscale x 32 x i8> @llvm.vp.lshr.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> %m, i32 %evl)
465 ret <vscale x 32 x i8> %v
468 define <vscale x 32 x i8> @vsrl_vi_nxv32i8_unmasked(<vscale x 32 x i8> %va, i32 zeroext %evl) {
469 ; CHECK-LABEL: vsrl_vi_nxv32i8_unmasked:
471 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
472 ; CHECK-NEXT: vsrl.vi v8, v8, 4
474 %elt.head = insertelement <vscale x 32 x i8> poison, i8 4, i32 0
475 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
476 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
477 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
478 %v = call <vscale x 32 x i8> @llvm.vp.lshr.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> %m, i32 %evl)
479 ret <vscale x 32 x i8> %v
482 declare <vscale x 64 x i8> @llvm.vp.lshr.nxv64i8(<vscale x 64 x i8>, <vscale x 64 x i8>, <vscale x 64 x i1>, i32)
484 define <vscale x 64 x i8> @vsrl_vv_nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> %m, i32 zeroext %evl) {
485 ; CHECK-LABEL: vsrl_vv_nxv64i8:
487 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
488 ; CHECK-NEXT: vsrl.vv v8, v8, v16, v0.t
490 %v = call <vscale x 64 x i8> @llvm.vp.lshr.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> %m, i32 %evl)
491 ret <vscale x 64 x i8> %v
494 define <vscale x 64 x i8> @vsrl_vv_nxv64i8_unmasked(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, i32 zeroext %evl) {
495 ; CHECK-LABEL: vsrl_vv_nxv64i8_unmasked:
497 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
498 ; CHECK-NEXT: vsrl.vv v8, v8, v16
500 %head = insertelement <vscale x 64 x i1> poison, i1 true, i32 0
501 %m = shufflevector <vscale x 64 x i1> %head, <vscale x 64 x i1> poison, <vscale x 64 x i32> zeroinitializer
502 %v = call <vscale x 64 x i8> @llvm.vp.lshr.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> %m, i32 %evl)
503 ret <vscale x 64 x i8> %v
506 define <vscale x 64 x i8> @vsrl_vx_nxv64i8(<vscale x 64 x i8> %va, i8 %b, <vscale x 64 x i1> %m, i32 zeroext %evl) {
507 ; CHECK-LABEL: vsrl_vx_nxv64i8:
509 ; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma
510 ; CHECK-NEXT: vsrl.vx v8, v8, a0, v0.t
512 %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0
513 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
514 %v = call <vscale x 64 x i8> @llvm.vp.lshr.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> %m, i32 %evl)
515 ret <vscale x 64 x i8> %v
518 define <vscale x 64 x i8> @vsrl_vx_nxv64i8_unmasked(<vscale x 64 x i8> %va, i8 %b, i32 zeroext %evl) {
519 ; CHECK-LABEL: vsrl_vx_nxv64i8_unmasked:
521 ; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma
522 ; CHECK-NEXT: vsrl.vx v8, v8, a0
524 %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0
525 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
526 %head = insertelement <vscale x 64 x i1> poison, i1 true, i32 0
527 %m = shufflevector <vscale x 64 x i1> %head, <vscale x 64 x i1> poison, <vscale x 64 x i32> zeroinitializer
528 %v = call <vscale x 64 x i8> @llvm.vp.lshr.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> %m, i32 %evl)
529 ret <vscale x 64 x i8> %v
532 define <vscale x 64 x i8> @vsrl_vi_nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i1> %m, i32 zeroext %evl) {
533 ; CHECK-LABEL: vsrl_vi_nxv64i8:
535 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
536 ; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
538 %elt.head = insertelement <vscale x 64 x i8> poison, i8 4, i32 0
539 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
540 %v = call <vscale x 64 x i8> @llvm.vp.lshr.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> %m, i32 %evl)
541 ret <vscale x 64 x i8> %v
544 define <vscale x 64 x i8> @vsrl_vi_nxv64i8_unmasked(<vscale x 64 x i8> %va, i32 zeroext %evl) {
545 ; CHECK-LABEL: vsrl_vi_nxv64i8_unmasked:
547 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
548 ; CHECK-NEXT: vsrl.vi v8, v8, 4
550 %elt.head = insertelement <vscale x 64 x i8> poison, i8 4, i32 0
551 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
552 %head = insertelement <vscale x 64 x i1> poison, i1 true, i32 0
553 %m = shufflevector <vscale x 64 x i1> %head, <vscale x 64 x i1> poison, <vscale x 64 x i32> zeroinitializer
554 %v = call <vscale x 64 x i8> @llvm.vp.lshr.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> %m, i32 %evl)
555 ret <vscale x 64 x i8> %v
558 declare <vscale x 1 x i16> @llvm.vp.lshr.nxv1i16(<vscale x 1 x i16>, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
560 define <vscale x 1 x i16> @vsrl_vv_nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
561 ; CHECK-LABEL: vsrl_vv_nxv1i16:
563 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
564 ; CHECK-NEXT: vsrl.vv v8, v8, v9, v0.t
566 %v = call <vscale x 1 x i16> @llvm.vp.lshr.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> %m, i32 %evl)
567 ret <vscale x 1 x i16> %v
570 define <vscale x 1 x i16> @vsrl_vv_nxv1i16_unmasked(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, i32 zeroext %evl) {
571 ; CHECK-LABEL: vsrl_vv_nxv1i16_unmasked:
573 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
574 ; CHECK-NEXT: vsrl.vv v8, v8, v9
576 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
577 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
578 %v = call <vscale x 1 x i16> @llvm.vp.lshr.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> %m, i32 %evl)
579 ret <vscale x 1 x i16> %v
582 define <vscale x 1 x i16> @vsrl_vx_nxv1i16(<vscale x 1 x i16> %va, i16 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
583 ; CHECK-LABEL: vsrl_vx_nxv1i16:
585 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
586 ; CHECK-NEXT: vsrl.vx v8, v8, a0, v0.t
588 %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
589 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
590 %v = call <vscale x 1 x i16> @llvm.vp.lshr.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> %m, i32 %evl)
591 ret <vscale x 1 x i16> %v
594 define <vscale x 1 x i16> @vsrl_vx_nxv1i16_unmasked(<vscale x 1 x i16> %va, i16 %b, i32 zeroext %evl) {
595 ; CHECK-LABEL: vsrl_vx_nxv1i16_unmasked:
597 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
598 ; CHECK-NEXT: vsrl.vx v8, v8, a0
600 %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
601 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
602 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
603 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
604 %v = call <vscale x 1 x i16> @llvm.vp.lshr.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> %m, i32 %evl)
605 ret <vscale x 1 x i16> %v
608 define <vscale x 1 x i16> @vsrl_vi_nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
609 ; CHECK-LABEL: vsrl_vi_nxv1i16:
611 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
612 ; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
614 %elt.head = insertelement <vscale x 1 x i16> poison, i16 4, i32 0
615 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
616 %v = call <vscale x 1 x i16> @llvm.vp.lshr.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> %m, i32 %evl)
617 ret <vscale x 1 x i16> %v
620 define <vscale x 1 x i16> @vsrl_vi_nxv1i16_unmasked(<vscale x 1 x i16> %va, i32 zeroext %evl) {
621 ; CHECK-LABEL: vsrl_vi_nxv1i16_unmasked:
623 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
624 ; CHECK-NEXT: vsrl.vi v8, v8, 4
626 %elt.head = insertelement <vscale x 1 x i16> poison, i16 4, i32 0
627 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
628 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
629 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
630 %v = call <vscale x 1 x i16> @llvm.vp.lshr.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> %m, i32 %evl)
631 ret <vscale x 1 x i16> %v
634 declare <vscale x 2 x i16> @llvm.vp.lshr.nxv2i16(<vscale x 2 x i16>, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
636 define <vscale x 2 x i16> @vsrl_vv_nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
637 ; CHECK-LABEL: vsrl_vv_nxv2i16:
639 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
640 ; CHECK-NEXT: vsrl.vv v8, v8, v9, v0.t
642 %v = call <vscale x 2 x i16> @llvm.vp.lshr.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> %m, i32 %evl)
643 ret <vscale x 2 x i16> %v
646 define <vscale x 2 x i16> @vsrl_vv_nxv2i16_unmasked(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, i32 zeroext %evl) {
647 ; CHECK-LABEL: vsrl_vv_nxv2i16_unmasked:
649 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
650 ; CHECK-NEXT: vsrl.vv v8, v8, v9
652 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
653 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
654 %v = call <vscale x 2 x i16> @llvm.vp.lshr.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> %m, i32 %evl)
655 ret <vscale x 2 x i16> %v
658 define <vscale x 2 x i16> @vsrl_vx_nxv2i16(<vscale x 2 x i16> %va, i16 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
659 ; CHECK-LABEL: vsrl_vx_nxv2i16:
661 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
662 ; CHECK-NEXT: vsrl.vx v8, v8, a0, v0.t
664 %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0
665 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
666 %v = call <vscale x 2 x i16> @llvm.vp.lshr.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> %m, i32 %evl)
667 ret <vscale x 2 x i16> %v
670 define <vscale x 2 x i16> @vsrl_vx_nxv2i16_unmasked(<vscale x 2 x i16> %va, i16 %b, i32 zeroext %evl) {
671 ; CHECK-LABEL: vsrl_vx_nxv2i16_unmasked:
673 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
674 ; CHECK-NEXT: vsrl.vx v8, v8, a0
676 %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0
677 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
678 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
679 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
680 %v = call <vscale x 2 x i16> @llvm.vp.lshr.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> %m, i32 %evl)
681 ret <vscale x 2 x i16> %v
684 define <vscale x 2 x i16> @vsrl_vi_nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
685 ; CHECK-LABEL: vsrl_vi_nxv2i16:
687 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
688 ; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
690 %elt.head = insertelement <vscale x 2 x i16> poison, i16 4, i32 0
691 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
692 %v = call <vscale x 2 x i16> @llvm.vp.lshr.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> %m, i32 %evl)
693 ret <vscale x 2 x i16> %v
696 define <vscale x 2 x i16> @vsrl_vi_nxv2i16_unmasked(<vscale x 2 x i16> %va, i32 zeroext %evl) {
697 ; CHECK-LABEL: vsrl_vi_nxv2i16_unmasked:
699 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
700 ; CHECK-NEXT: vsrl.vi v8, v8, 4
702 %elt.head = insertelement <vscale x 2 x i16> poison, i16 4, i32 0
703 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
704 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
705 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
706 %v = call <vscale x 2 x i16> @llvm.vp.lshr.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> %m, i32 %evl)
707 ret <vscale x 2 x i16> %v
710 declare <vscale x 4 x i16> @llvm.vp.lshr.nxv4i16(<vscale x 4 x i16>, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
712 define <vscale x 4 x i16> @vsrl_vv_nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
713 ; CHECK-LABEL: vsrl_vv_nxv4i16:
715 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
716 ; CHECK-NEXT: vsrl.vv v8, v8, v9, v0.t
718 %v = call <vscale x 4 x i16> @llvm.vp.lshr.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> %m, i32 %evl)
719 ret <vscale x 4 x i16> %v
722 define <vscale x 4 x i16> @vsrl_vv_nxv4i16_unmasked(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, i32 zeroext %evl) {
723 ; CHECK-LABEL: vsrl_vv_nxv4i16_unmasked:
725 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
726 ; CHECK-NEXT: vsrl.vv v8, v8, v9
728 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
729 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
730 %v = call <vscale x 4 x i16> @llvm.vp.lshr.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> %m, i32 %evl)
731 ret <vscale x 4 x i16> %v
734 define <vscale x 4 x i16> @vsrl_vx_nxv4i16(<vscale x 4 x i16> %va, i16 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
735 ; CHECK-LABEL: vsrl_vx_nxv4i16:
737 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
738 ; CHECK-NEXT: vsrl.vx v8, v8, a0, v0.t
740 %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0
741 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
742 %v = call <vscale x 4 x i16> @llvm.vp.lshr.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> %m, i32 %evl)
743 ret <vscale x 4 x i16> %v
746 define <vscale x 4 x i16> @vsrl_vx_nxv4i16_unmasked(<vscale x 4 x i16> %va, i16 %b, i32 zeroext %evl) {
747 ; CHECK-LABEL: vsrl_vx_nxv4i16_unmasked:
749 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
750 ; CHECK-NEXT: vsrl.vx v8, v8, a0
752 %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0
753 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
754 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
755 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
756 %v = call <vscale x 4 x i16> @llvm.vp.lshr.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> %m, i32 %evl)
757 ret <vscale x 4 x i16> %v
760 define <vscale x 4 x i16> @vsrl_vi_nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
761 ; CHECK-LABEL: vsrl_vi_nxv4i16:
763 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
764 ; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
766 %elt.head = insertelement <vscale x 4 x i16> poison, i16 4, i32 0
767 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
768 %v = call <vscale x 4 x i16> @llvm.vp.lshr.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> %m, i32 %evl)
769 ret <vscale x 4 x i16> %v
772 define <vscale x 4 x i16> @vsrl_vi_nxv4i16_unmasked(<vscale x 4 x i16> %va, i32 zeroext %evl) {
773 ; CHECK-LABEL: vsrl_vi_nxv4i16_unmasked:
775 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
776 ; CHECK-NEXT: vsrl.vi v8, v8, 4
778 %elt.head = insertelement <vscale x 4 x i16> poison, i16 4, i32 0
779 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
780 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
781 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
782 %v = call <vscale x 4 x i16> @llvm.vp.lshr.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> %m, i32 %evl)
783 ret <vscale x 4 x i16> %v
786 declare <vscale x 8 x i16> @llvm.vp.lshr.nxv8i16(<vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i1>, i32)
788 define <vscale x 8 x i16> @vsrl_vv_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
789 ; CHECK-LABEL: vsrl_vv_nxv8i16:
791 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
792 ; CHECK-NEXT: vsrl.vv v8, v8, v10, v0.t
794 %v = call <vscale x 8 x i16> @llvm.vp.lshr.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> %m, i32 %evl)
795 ret <vscale x 8 x i16> %v
798 define <vscale x 8 x i16> @vsrl_vv_nxv8i16_unmasked(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, i32 zeroext %evl) {
799 ; CHECK-LABEL: vsrl_vv_nxv8i16_unmasked:
801 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
802 ; CHECK-NEXT: vsrl.vv v8, v8, v10
804 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
805 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
806 %v = call <vscale x 8 x i16> @llvm.vp.lshr.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> %m, i32 %evl)
807 ret <vscale x 8 x i16> %v
810 define <vscale x 8 x i16> @vsrl_vx_nxv8i16(<vscale x 8 x i16> %va, i16 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
811 ; CHECK-LABEL: vsrl_vx_nxv8i16:
813 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
814 ; CHECK-NEXT: vsrl.vx v8, v8, a0, v0.t
816 %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0
817 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
818 %v = call <vscale x 8 x i16> @llvm.vp.lshr.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> %m, i32 %evl)
819 ret <vscale x 8 x i16> %v
822 define <vscale x 8 x i16> @vsrl_vx_nxv8i16_unmasked(<vscale x 8 x i16> %va, i16 %b, i32 zeroext %evl) {
823 ; CHECK-LABEL: vsrl_vx_nxv8i16_unmasked:
825 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
826 ; CHECK-NEXT: vsrl.vx v8, v8, a0
828 %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0
829 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
830 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
831 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
832 %v = call <vscale x 8 x i16> @llvm.vp.lshr.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> %m, i32 %evl)
833 ret <vscale x 8 x i16> %v
836 define <vscale x 8 x i16> @vsrl_vi_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
837 ; CHECK-LABEL: vsrl_vi_nxv8i16:
839 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
840 ; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
842 %elt.head = insertelement <vscale x 8 x i16> poison, i16 4, i32 0
843 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
844 %v = call <vscale x 8 x i16> @llvm.vp.lshr.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> %m, i32 %evl)
845 ret <vscale x 8 x i16> %v
848 define <vscale x 8 x i16> @vsrl_vi_nxv8i16_unmasked(<vscale x 8 x i16> %va, i32 zeroext %evl) {
849 ; CHECK-LABEL: vsrl_vi_nxv8i16_unmasked:
851 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
852 ; CHECK-NEXT: vsrl.vi v8, v8, 4
854 %elt.head = insertelement <vscale x 8 x i16> poison, i16 4, i32 0
855 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
856 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
857 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
858 %v = call <vscale x 8 x i16> @llvm.vp.lshr.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> %m, i32 %evl)
859 ret <vscale x 8 x i16> %v
862 declare <vscale x 16 x i16> @llvm.vp.lshr.nxv16i16(<vscale x 16 x i16>, <vscale x 16 x i16>, <vscale x 16 x i1>, i32)
864 define <vscale x 16 x i16> @vsrl_vv_nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
865 ; CHECK-LABEL: vsrl_vv_nxv16i16:
867 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
868 ; CHECK-NEXT: vsrl.vv v8, v8, v12, v0.t
870 %v = call <vscale x 16 x i16> @llvm.vp.lshr.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> %m, i32 %evl)
871 ret <vscale x 16 x i16> %v
874 define <vscale x 16 x i16> @vsrl_vv_nxv16i16_unmasked(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, i32 zeroext %evl) {
875 ; CHECK-LABEL: vsrl_vv_nxv16i16_unmasked:
877 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
878 ; CHECK-NEXT: vsrl.vv v8, v8, v12
880 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
881 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
882 %v = call <vscale x 16 x i16> @llvm.vp.lshr.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> %m, i32 %evl)
883 ret <vscale x 16 x i16> %v
886 define <vscale x 16 x i16> @vsrl_vx_nxv16i16(<vscale x 16 x i16> %va, i16 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
887 ; CHECK-LABEL: vsrl_vx_nxv16i16:
889 ; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma
890 ; CHECK-NEXT: vsrl.vx v8, v8, a0, v0.t
892 %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0
893 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
894 %v = call <vscale x 16 x i16> @llvm.vp.lshr.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> %m, i32 %evl)
895 ret <vscale x 16 x i16> %v
898 define <vscale x 16 x i16> @vsrl_vx_nxv16i16_unmasked(<vscale x 16 x i16> %va, i16 %b, i32 zeroext %evl) {
899 ; CHECK-LABEL: vsrl_vx_nxv16i16_unmasked:
901 ; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma
902 ; CHECK-NEXT: vsrl.vx v8, v8, a0
904 %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0
905 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
906 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
907 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
908 %v = call <vscale x 16 x i16> @llvm.vp.lshr.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> %m, i32 %evl)
909 ret <vscale x 16 x i16> %v
912 define <vscale x 16 x i16> @vsrl_vi_nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
913 ; CHECK-LABEL: vsrl_vi_nxv16i16:
915 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
916 ; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
918 %elt.head = insertelement <vscale x 16 x i16> poison, i16 4, i32 0
919 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
920 %v = call <vscale x 16 x i16> @llvm.vp.lshr.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> %m, i32 %evl)
921 ret <vscale x 16 x i16> %v
924 define <vscale x 16 x i16> @vsrl_vi_nxv16i16_unmasked(<vscale x 16 x i16> %va, i32 zeroext %evl) {
925 ; CHECK-LABEL: vsrl_vi_nxv16i16_unmasked:
927 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
928 ; CHECK-NEXT: vsrl.vi v8, v8, 4
930 %elt.head = insertelement <vscale x 16 x i16> poison, i16 4, i32 0
931 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
932 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
933 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
934 %v = call <vscale x 16 x i16> @llvm.vp.lshr.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> %m, i32 %evl)
935 ret <vscale x 16 x i16> %v
938 declare <vscale x 32 x i16> @llvm.vp.lshr.nxv32i16(<vscale x 32 x i16>, <vscale x 32 x i16>, <vscale x 32 x i1>, i32)
940 define <vscale x 32 x i16> @vsrl_vv_nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
941 ; CHECK-LABEL: vsrl_vv_nxv32i16:
943 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
944 ; CHECK-NEXT: vsrl.vv v8, v8, v16, v0.t
946 %v = call <vscale x 32 x i16> @llvm.vp.lshr.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> %m, i32 %evl)
947 ret <vscale x 32 x i16> %v
950 define <vscale x 32 x i16> @vsrl_vv_nxv32i16_unmasked(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, i32 zeroext %evl) {
951 ; CHECK-LABEL: vsrl_vv_nxv32i16_unmasked:
953 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
954 ; CHECK-NEXT: vsrl.vv v8, v8, v16
956 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
957 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
958 %v = call <vscale x 32 x i16> @llvm.vp.lshr.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> %m, i32 %evl)
959 ret <vscale x 32 x i16> %v
962 define <vscale x 32 x i16> @vsrl_vx_nxv32i16(<vscale x 32 x i16> %va, i16 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
963 ; CHECK-LABEL: vsrl_vx_nxv32i16:
965 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
966 ; CHECK-NEXT: vsrl.vx v8, v8, a0, v0.t
968 %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
969 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
970 %v = call <vscale x 32 x i16> @llvm.vp.lshr.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> %m, i32 %evl)
971 ret <vscale x 32 x i16> %v
974 define <vscale x 32 x i16> @vsrl_vx_nxv32i16_unmasked(<vscale x 32 x i16> %va, i16 %b, i32 zeroext %evl) {
975 ; CHECK-LABEL: vsrl_vx_nxv32i16_unmasked:
977 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
978 ; CHECK-NEXT: vsrl.vx v8, v8, a0
980 %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
981 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
982 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
983 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
984 %v = call <vscale x 32 x i16> @llvm.vp.lshr.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> %m, i32 %evl)
985 ret <vscale x 32 x i16> %v
988 define <vscale x 32 x i16> @vsrl_vi_nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i1> %m, i32 zeroext %evl) {
989 ; CHECK-LABEL: vsrl_vi_nxv32i16:
991 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
992 ; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
994 %elt.head = insertelement <vscale x 32 x i16> poison, i16 4, i32 0
995 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
996 %v = call <vscale x 32 x i16> @llvm.vp.lshr.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> %m, i32 %evl)
997 ret <vscale x 32 x i16> %v
1000 define <vscale x 32 x i16> @vsrl_vi_nxv32i16_unmasked(<vscale x 32 x i16> %va, i32 zeroext %evl) {
1001 ; CHECK-LABEL: vsrl_vi_nxv32i16_unmasked:
1003 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
1004 ; CHECK-NEXT: vsrl.vi v8, v8, 4
1006 %elt.head = insertelement <vscale x 32 x i16> poison, i16 4, i32 0
1007 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
1008 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
1009 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
1010 %v = call <vscale x 32 x i16> @llvm.vp.lshr.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> %m, i32 %evl)
1011 ret <vscale x 32 x i16> %v
1014 declare <vscale x 1 x i32> @llvm.vp.lshr.nxv1i32(<vscale x 1 x i32>, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
1016 define <vscale x 1 x i32> @vsrl_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1017 ; CHECK-LABEL: vsrl_vv_nxv1i32:
1019 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1020 ; CHECK-NEXT: vsrl.vv v8, v8, v9, v0.t
1022 %v = call <vscale x 1 x i32> @llvm.vp.lshr.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> %m, i32 %evl)
1023 ret <vscale x 1 x i32> %v
1026 define <vscale x 1 x i32> @vsrl_vv_nxv1i32_unmasked(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, i32 zeroext %evl) {
1027 ; CHECK-LABEL: vsrl_vv_nxv1i32_unmasked:
1029 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1030 ; CHECK-NEXT: vsrl.vv v8, v8, v9
1032 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1033 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1034 %v = call <vscale x 1 x i32> @llvm.vp.lshr.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> %m, i32 %evl)
1035 ret <vscale x 1 x i32> %v
1038 define <vscale x 1 x i32> @vsrl_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1039 ; CHECK-LABEL: vsrl_vx_nxv1i32:
1041 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
1042 ; CHECK-NEXT: vsrl.vx v8, v8, a0, v0.t
1044 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1045 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1046 %v = call <vscale x 1 x i32> @llvm.vp.lshr.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 %evl)
1047 ret <vscale x 1 x i32> %v
1050 define <vscale x 1 x i32> @vsrl_vx_nxv1i32_unmasked(<vscale x 1 x i32> %va, i32 %b, i32 zeroext %evl) {
1051 ; CHECK-LABEL: vsrl_vx_nxv1i32_unmasked:
1053 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
1054 ; CHECK-NEXT: vsrl.vx v8, v8, a0
1056 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1057 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1058 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1059 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1060 %v = call <vscale x 1 x i32> @llvm.vp.lshr.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 %evl)
1061 ret <vscale x 1 x i32> %v
1064 define <vscale x 1 x i32> @vsrl_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1065 ; CHECK-LABEL: vsrl_vi_nxv1i32:
1067 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1068 ; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
1070 %elt.head = insertelement <vscale x 1 x i32> poison, i32 4, i32 0
1071 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1072 %v = call <vscale x 1 x i32> @llvm.vp.lshr.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 %evl)
1073 ret <vscale x 1 x i32> %v
1076 define <vscale x 1 x i32> @vsrl_vi_nxv1i32_unmasked(<vscale x 1 x i32> %va, i32 zeroext %evl) {
1077 ; CHECK-LABEL: vsrl_vi_nxv1i32_unmasked:
1079 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1080 ; CHECK-NEXT: vsrl.vi v8, v8, 4
1082 %elt.head = insertelement <vscale x 1 x i32> poison, i32 4, i32 0
1083 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1084 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1085 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1086 %v = call <vscale x 1 x i32> @llvm.vp.lshr.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 %evl)
1087 ret <vscale x 1 x i32> %v
1090 declare <vscale x 2 x i32> @llvm.vp.lshr.nxv2i32(<vscale x 2 x i32>, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
1092 define <vscale x 2 x i32> @vsrl_vv_nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1093 ; CHECK-LABEL: vsrl_vv_nxv2i32:
1095 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1096 ; CHECK-NEXT: vsrl.vv v8, v8, v9, v0.t
1098 %v = call <vscale x 2 x i32> @llvm.vp.lshr.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> %m, i32 %evl)
1099 ret <vscale x 2 x i32> %v
1102 define <vscale x 2 x i32> @vsrl_vv_nxv2i32_unmasked(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, i32 zeroext %evl) {
1103 ; CHECK-LABEL: vsrl_vv_nxv2i32_unmasked:
1105 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1106 ; CHECK-NEXT: vsrl.vv v8, v8, v9
1108 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1109 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1110 %v = call <vscale x 2 x i32> @llvm.vp.lshr.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> %m, i32 %evl)
1111 ret <vscale x 2 x i32> %v
1114 define <vscale x 2 x i32> @vsrl_vx_nxv2i32(<vscale x 2 x i32> %va, i32 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1115 ; CHECK-LABEL: vsrl_vx_nxv2i32:
1117 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
1118 ; CHECK-NEXT: vsrl.vx v8, v8, a0, v0.t
1120 %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
1121 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1122 %v = call <vscale x 2 x i32> @llvm.vp.lshr.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> %m, i32 %evl)
1123 ret <vscale x 2 x i32> %v
1126 define <vscale x 2 x i32> @vsrl_vx_nxv2i32_unmasked(<vscale x 2 x i32> %va, i32 %b, i32 zeroext %evl) {
1127 ; CHECK-LABEL: vsrl_vx_nxv2i32_unmasked:
1129 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
1130 ; CHECK-NEXT: vsrl.vx v8, v8, a0
1132 %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
1133 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1134 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1135 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1136 %v = call <vscale x 2 x i32> @llvm.vp.lshr.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> %m, i32 %evl)
1137 ret <vscale x 2 x i32> %v
1140 define <vscale x 2 x i32> @vsrl_vi_nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1141 ; CHECK-LABEL: vsrl_vi_nxv2i32:
1143 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1144 ; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
1146 %elt.head = insertelement <vscale x 2 x i32> poison, i32 4, i32 0
1147 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1148 %v = call <vscale x 2 x i32> @llvm.vp.lshr.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> %m, i32 %evl)
1149 ret <vscale x 2 x i32> %v
1152 define <vscale x 2 x i32> @vsrl_vi_nxv2i32_unmasked(<vscale x 2 x i32> %va, i32 zeroext %evl) {
1153 ; CHECK-LABEL: vsrl_vi_nxv2i32_unmasked:
1155 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1156 ; CHECK-NEXT: vsrl.vi v8, v8, 4
1158 %elt.head = insertelement <vscale x 2 x i32> poison, i32 4, i32 0
1159 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1160 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1161 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1162 %v = call <vscale x 2 x i32> @llvm.vp.lshr.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> %m, i32 %evl)
1163 ret <vscale x 2 x i32> %v
1166 declare <vscale x 4 x i32> @llvm.vp.lshr.nxv4i32(<vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
1168 define <vscale x 4 x i32> @vsrl_vv_nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1169 ; CHECK-LABEL: vsrl_vv_nxv4i32:
1171 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1172 ; CHECK-NEXT: vsrl.vv v8, v8, v10, v0.t
1174 %v = call <vscale x 4 x i32> @llvm.vp.lshr.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> %m, i32 %evl)
1175 ret <vscale x 4 x i32> %v
1178 define <vscale x 4 x i32> @vsrl_vv_nxv4i32_unmasked(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, i32 zeroext %evl) {
1179 ; CHECK-LABEL: vsrl_vv_nxv4i32_unmasked:
1181 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1182 ; CHECK-NEXT: vsrl.vv v8, v8, v10
1184 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1185 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1186 %v = call <vscale x 4 x i32> @llvm.vp.lshr.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> %m, i32 %evl)
1187 ret <vscale x 4 x i32> %v
1190 define <vscale x 4 x i32> @vsrl_vx_nxv4i32(<vscale x 4 x i32> %va, i32 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1191 ; CHECK-LABEL: vsrl_vx_nxv4i32:
1193 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
1194 ; CHECK-NEXT: vsrl.vx v8, v8, a0, v0.t
1196 %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
1197 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1198 %v = call <vscale x 4 x i32> @llvm.vp.lshr.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> %m, i32 %evl)
1199 ret <vscale x 4 x i32> %v
1202 define <vscale x 4 x i32> @vsrl_vx_nxv4i32_unmasked(<vscale x 4 x i32> %va, i32 %b, i32 zeroext %evl) {
1203 ; CHECK-LABEL: vsrl_vx_nxv4i32_unmasked:
1205 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
1206 ; CHECK-NEXT: vsrl.vx v8, v8, a0
1208 %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
1209 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1210 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1211 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1212 %v = call <vscale x 4 x i32> @llvm.vp.lshr.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> %m, i32 %evl)
1213 ret <vscale x 4 x i32> %v
1216 define <vscale x 4 x i32> @vsrl_vi_nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1217 ; CHECK-LABEL: vsrl_vi_nxv4i32:
1219 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1220 ; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
1222 %elt.head = insertelement <vscale x 4 x i32> poison, i32 4, i32 0
1223 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1224 %v = call <vscale x 4 x i32> @llvm.vp.lshr.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> %m, i32 %evl)
1225 ret <vscale x 4 x i32> %v
1228 define <vscale x 4 x i32> @vsrl_vi_nxv4i32_unmasked(<vscale x 4 x i32> %va, i32 zeroext %evl) {
1229 ; CHECK-LABEL: vsrl_vi_nxv4i32_unmasked:
1231 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1232 ; CHECK-NEXT: vsrl.vi v8, v8, 4
1234 %elt.head = insertelement <vscale x 4 x i32> poison, i32 4, i32 0
1235 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1236 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1237 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1238 %v = call <vscale x 4 x i32> @llvm.vp.lshr.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> %m, i32 %evl)
1239 ret <vscale x 4 x i32> %v
1242 declare <vscale x 8 x i32> @llvm.vp.lshr.nxv8i32(<vscale x 8 x i32>, <vscale x 8 x i32>, <vscale x 8 x i1>, i32)
1244 define <vscale x 8 x i32> @vsrl_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1245 ; CHECK-LABEL: vsrl_vv_nxv8i32:
1247 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1248 ; CHECK-NEXT: vsrl.vv v8, v8, v12, v0.t
1250 %v = call <vscale x 8 x i32> @llvm.vp.lshr.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> %m, i32 %evl)
1251 ret <vscale x 8 x i32> %v
1254 define <vscale x 8 x i32> @vsrl_vv_nxv8i32_unmasked(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, i32 zeroext %evl) {
1255 ; CHECK-LABEL: vsrl_vv_nxv8i32_unmasked:
1257 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1258 ; CHECK-NEXT: vsrl.vv v8, v8, v12
1260 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1261 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1262 %v = call <vscale x 8 x i32> @llvm.vp.lshr.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> %m, i32 %evl)
1263 ret <vscale x 8 x i32> %v
1266 define <vscale x 8 x i32> @vsrl_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1267 ; CHECK-LABEL: vsrl_vx_nxv8i32:
1269 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
1270 ; CHECK-NEXT: vsrl.vx v8, v8, a0, v0.t
1272 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1273 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1274 %v = call <vscale x 8 x i32> @llvm.vp.lshr.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 %evl)
1275 ret <vscale x 8 x i32> %v
1278 define <vscale x 8 x i32> @vsrl_vx_nxv8i32_unmasked(<vscale x 8 x i32> %va, i32 %b, i32 zeroext %evl) {
1279 ; CHECK-LABEL: vsrl_vx_nxv8i32_unmasked:
1281 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
1282 ; CHECK-NEXT: vsrl.vx v8, v8, a0
1284 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1285 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1286 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1287 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1288 %v = call <vscale x 8 x i32> @llvm.vp.lshr.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 %evl)
1289 ret <vscale x 8 x i32> %v
1292 define <vscale x 8 x i32> @vsrl_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1293 ; CHECK-LABEL: vsrl_vi_nxv8i32:
1295 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1296 ; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
1298 %elt.head = insertelement <vscale x 8 x i32> poison, i32 4, i32 0
1299 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1300 %v = call <vscale x 8 x i32> @llvm.vp.lshr.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 %evl)
1301 ret <vscale x 8 x i32> %v
1304 define <vscale x 8 x i32> @vsrl_vi_nxv8i32_unmasked(<vscale x 8 x i32> %va, i32 zeroext %evl) {
1305 ; CHECK-LABEL: vsrl_vi_nxv8i32_unmasked:
1307 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1308 ; CHECK-NEXT: vsrl.vi v8, v8, 4
1310 %elt.head = insertelement <vscale x 8 x i32> poison, i32 4, i32 0
1311 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1312 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1313 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1314 %v = call <vscale x 8 x i32> @llvm.vp.lshr.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 %evl)
1315 ret <vscale x 8 x i32> %v
1318 declare <vscale x 16 x i32> @llvm.vp.lshr.nxv16i32(<vscale x 16 x i32>, <vscale x 16 x i32>, <vscale x 16 x i1>, i32)
1320 define <vscale x 16 x i32> @vsrl_vv_nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1321 ; CHECK-LABEL: vsrl_vv_nxv16i32:
1323 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1324 ; CHECK-NEXT: vsrl.vv v8, v8, v16, v0.t
1326 %v = call <vscale x 16 x i32> @llvm.vp.lshr.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> %m, i32 %evl)
1327 ret <vscale x 16 x i32> %v
1330 define <vscale x 16 x i32> @vsrl_vv_nxv16i32_unmasked(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, i32 zeroext %evl) {
1331 ; CHECK-LABEL: vsrl_vv_nxv16i32_unmasked:
1333 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1334 ; CHECK-NEXT: vsrl.vv v8, v8, v16
1336 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
1337 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
1338 %v = call <vscale x 16 x i32> @llvm.vp.lshr.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> %m, i32 %evl)
1339 ret <vscale x 16 x i32> %v
1342 define <vscale x 16 x i32> @vsrl_vx_nxv16i32(<vscale x 16 x i32> %va, i32 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1343 ; CHECK-LABEL: vsrl_vx_nxv16i32:
1345 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
1346 ; CHECK-NEXT: vsrl.vx v8, v8, a0, v0.t
1348 %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0
1349 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1350 %v = call <vscale x 16 x i32> @llvm.vp.lshr.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> %m, i32 %evl)
1351 ret <vscale x 16 x i32> %v
1354 define <vscale x 16 x i32> @vsrl_vx_nxv16i32_unmasked(<vscale x 16 x i32> %va, i32 %b, i32 zeroext %evl) {
1355 ; CHECK-LABEL: vsrl_vx_nxv16i32_unmasked:
1357 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
1358 ; CHECK-NEXT: vsrl.vx v8, v8, a0
1360 %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0
1361 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1362 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
1363 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
1364 %v = call <vscale x 16 x i32> @llvm.vp.lshr.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> %m, i32 %evl)
1365 ret <vscale x 16 x i32> %v
1368 define <vscale x 16 x i32> @vsrl_vi_nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1369 ; CHECK-LABEL: vsrl_vi_nxv16i32:
1371 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1372 ; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
1374 %elt.head = insertelement <vscale x 16 x i32> poison, i32 4, i32 0
1375 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1376 %v = call <vscale x 16 x i32> @llvm.vp.lshr.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> %m, i32 %evl)
1377 ret <vscale x 16 x i32> %v
1380 define <vscale x 16 x i32> @vsrl_vi_nxv16i32_unmasked(<vscale x 16 x i32> %va, i32 zeroext %evl) {
1381 ; CHECK-LABEL: vsrl_vi_nxv16i32_unmasked:
1383 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1384 ; CHECK-NEXT: vsrl.vi v8, v8, 4
1386 %elt.head = insertelement <vscale x 16 x i32> poison, i32 4, i32 0
1387 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1388 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
1389 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
1390 %v = call <vscale x 16 x i32> @llvm.vp.lshr.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> %m, i32 %evl)
1391 ret <vscale x 16 x i32> %v
1394 declare <vscale x 1 x i64> @llvm.vp.lshr.nxv1i64(<vscale x 1 x i64>, <vscale x 1 x i64>, <vscale x 1 x i1>, i32)
1396 define <vscale x 1 x i64> @vsrl_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1397 ; CHECK-LABEL: vsrl_vv_nxv1i64:
1399 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1400 ; CHECK-NEXT: vsrl.vv v8, v8, v9, v0.t
1402 %v = call <vscale x 1 x i64> @llvm.vp.lshr.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> %m, i32 %evl)
1403 ret <vscale x 1 x i64> %v
1406 define <vscale x 1 x i64> @vsrl_vv_nxv1i64_unmasked(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, i32 zeroext %evl) {
1407 ; CHECK-LABEL: vsrl_vv_nxv1i64_unmasked:
1409 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1410 ; CHECK-NEXT: vsrl.vv v8, v8, v9
1412 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1413 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1414 %v = call <vscale x 1 x i64> @llvm.vp.lshr.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> %m, i32 %evl)
1415 ret <vscale x 1 x i64> %v
1418 define <vscale x 1 x i64> @vsrl_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1419 ; RV32-LABEL: vsrl_vx_nxv1i64:
1421 ; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma
1422 ; RV32-NEXT: vsrl.vx v8, v8, a0, v0.t
1425 ; RV64-LABEL: vsrl_vx_nxv1i64:
1427 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
1428 ; RV64-NEXT: vsrl.vx v8, v8, a0, v0.t
1430 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
1431 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
1432 %v = call <vscale x 1 x i64> @llvm.vp.lshr.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 %evl)
1433 ret <vscale x 1 x i64> %v
1436 define <vscale x 1 x i64> @vsrl_vx_nxv1i64_unmasked(<vscale x 1 x i64> %va, i64 %b, i32 zeroext %evl) {
1437 ; RV32-LABEL: vsrl_vx_nxv1i64_unmasked:
1439 ; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma
1440 ; RV32-NEXT: vsrl.vx v8, v8, a0
1443 ; RV64-LABEL: vsrl_vx_nxv1i64_unmasked:
1445 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
1446 ; RV64-NEXT: vsrl.vx v8, v8, a0
1448 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
1449 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
1450 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1451 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1452 %v = call <vscale x 1 x i64> @llvm.vp.lshr.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 %evl)
1453 ret <vscale x 1 x i64> %v
1456 define <vscale x 1 x i64> @vsrl_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1457 ; CHECK-LABEL: vsrl_vi_nxv1i64:
1459 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1460 ; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
1462 %elt.head = insertelement <vscale x 1 x i64> poison, i64 4, i32 0
1463 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
1464 %v = call <vscale x 1 x i64> @llvm.vp.lshr.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 %evl)
1465 ret <vscale x 1 x i64> %v
1468 define <vscale x 1 x i64> @vsrl_vi_nxv1i64_unmasked(<vscale x 1 x i64> %va, i32 zeroext %evl) {
1469 ; CHECK-LABEL: vsrl_vi_nxv1i64_unmasked:
1471 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1472 ; CHECK-NEXT: vsrl.vi v8, v8, 4
1474 %elt.head = insertelement <vscale x 1 x i64> poison, i64 4, i32 0
1475 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
1476 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1477 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1478 %v = call <vscale x 1 x i64> @llvm.vp.lshr.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 %evl)
1479 ret <vscale x 1 x i64> %v
1482 declare <vscale x 2 x i64> @llvm.vp.lshr.nxv2i64(<vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i1>, i32)
1484 define <vscale x 2 x i64> @vsrl_vv_nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1485 ; CHECK-LABEL: vsrl_vv_nxv2i64:
1487 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1488 ; CHECK-NEXT: vsrl.vv v8, v8, v10, v0.t
1490 %v = call <vscale x 2 x i64> @llvm.vp.lshr.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> %m, i32 %evl)
1491 ret <vscale x 2 x i64> %v
1494 define <vscale x 2 x i64> @vsrl_vv_nxv2i64_unmasked(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, i32 zeroext %evl) {
1495 ; CHECK-LABEL: vsrl_vv_nxv2i64_unmasked:
1497 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1498 ; CHECK-NEXT: vsrl.vv v8, v8, v10
1500 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1501 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1502 %v = call <vscale x 2 x i64> @llvm.vp.lshr.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> %m, i32 %evl)
1503 ret <vscale x 2 x i64> %v
1506 define <vscale x 2 x i64> @vsrl_vx_nxv2i64(<vscale x 2 x i64> %va, i64 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1507 ; RV32-LABEL: vsrl_vx_nxv2i64:
1509 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
1510 ; RV32-NEXT: vsrl.vx v8, v8, a0, v0.t
1513 ; RV64-LABEL: vsrl_vx_nxv2i64:
1515 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
1516 ; RV64-NEXT: vsrl.vx v8, v8, a0, v0.t
1518 %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0
1519 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1520 %v = call <vscale x 2 x i64> @llvm.vp.lshr.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> %m, i32 %evl)
1521 ret <vscale x 2 x i64> %v
1524 define <vscale x 2 x i64> @vsrl_vx_nxv2i64_unmasked(<vscale x 2 x i64> %va, i64 %b, i32 zeroext %evl) {
1525 ; RV32-LABEL: vsrl_vx_nxv2i64_unmasked:
1527 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
1528 ; RV32-NEXT: vsrl.vx v8, v8, a0
1531 ; RV64-LABEL: vsrl_vx_nxv2i64_unmasked:
1533 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
1534 ; RV64-NEXT: vsrl.vx v8, v8, a0
1536 %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0
1537 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1538 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1539 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1540 %v = call <vscale x 2 x i64> @llvm.vp.lshr.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> %m, i32 %evl)
1541 ret <vscale x 2 x i64> %v
1544 define <vscale x 2 x i64> @vsrl_vi_nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1545 ; CHECK-LABEL: vsrl_vi_nxv2i64:
1547 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1548 ; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
1550 %elt.head = insertelement <vscale x 2 x i64> poison, i64 4, i32 0
1551 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1552 %v = call <vscale x 2 x i64> @llvm.vp.lshr.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> %m, i32 %evl)
1553 ret <vscale x 2 x i64> %v
1556 define <vscale x 2 x i64> @vsrl_vi_nxv2i64_unmasked(<vscale x 2 x i64> %va, i32 zeroext %evl) {
1557 ; CHECK-LABEL: vsrl_vi_nxv2i64_unmasked:
1559 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1560 ; CHECK-NEXT: vsrl.vi v8, v8, 4
1562 %elt.head = insertelement <vscale x 2 x i64> poison, i64 4, i32 0
1563 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1564 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1565 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1566 %v = call <vscale x 2 x i64> @llvm.vp.lshr.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> %m, i32 %evl)
1567 ret <vscale x 2 x i64> %v
1570 declare <vscale x 4 x i64> @llvm.vp.lshr.nxv4i64(<vscale x 4 x i64>, <vscale x 4 x i64>, <vscale x 4 x i1>, i32)
1572 define <vscale x 4 x i64> @vsrl_vv_nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1573 ; CHECK-LABEL: vsrl_vv_nxv4i64:
1575 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1576 ; CHECK-NEXT: vsrl.vv v8, v8, v12, v0.t
1578 %v = call <vscale x 4 x i64> @llvm.vp.lshr.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> %m, i32 %evl)
1579 ret <vscale x 4 x i64> %v
1582 define <vscale x 4 x i64> @vsrl_vv_nxv4i64_unmasked(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, i32 zeroext %evl) {
1583 ; CHECK-LABEL: vsrl_vv_nxv4i64_unmasked:
1585 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1586 ; CHECK-NEXT: vsrl.vv v8, v8, v12
1588 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1589 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1590 %v = call <vscale x 4 x i64> @llvm.vp.lshr.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> %m, i32 %evl)
1591 ret <vscale x 4 x i64> %v
1594 define <vscale x 4 x i64> @vsrl_vx_nxv4i64(<vscale x 4 x i64> %va, i64 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1595 ; RV32-LABEL: vsrl_vx_nxv4i64:
1597 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
1598 ; RV32-NEXT: vsrl.vx v8, v8, a0, v0.t
1601 ; RV64-LABEL: vsrl_vx_nxv4i64:
1603 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
1604 ; RV64-NEXT: vsrl.vx v8, v8, a0, v0.t
1606 %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0
1607 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1608 %v = call <vscale x 4 x i64> @llvm.vp.lshr.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> %m, i32 %evl)
1609 ret <vscale x 4 x i64> %v
1612 define <vscale x 4 x i64> @vsrl_vx_nxv4i64_unmasked(<vscale x 4 x i64> %va, i64 %b, i32 zeroext %evl) {
1613 ; RV32-LABEL: vsrl_vx_nxv4i64_unmasked:
1615 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
1616 ; RV32-NEXT: vsrl.vx v8, v8, a0
1619 ; RV64-LABEL: vsrl_vx_nxv4i64_unmasked:
1621 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
1622 ; RV64-NEXT: vsrl.vx v8, v8, a0
1624 %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0
1625 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1626 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1627 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1628 %v = call <vscale x 4 x i64> @llvm.vp.lshr.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> %m, i32 %evl)
1629 ret <vscale x 4 x i64> %v
1632 define <vscale x 4 x i64> @vsrl_vi_nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1633 ; CHECK-LABEL: vsrl_vi_nxv4i64:
1635 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1636 ; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
1638 %elt.head = insertelement <vscale x 4 x i64> poison, i64 4, i32 0
1639 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1640 %v = call <vscale x 4 x i64> @llvm.vp.lshr.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> %m, i32 %evl)
1641 ret <vscale x 4 x i64> %v
1644 define <vscale x 4 x i64> @vsrl_vi_nxv4i64_unmasked(<vscale x 4 x i64> %va, i32 zeroext %evl) {
1645 ; CHECK-LABEL: vsrl_vi_nxv4i64_unmasked:
1647 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1648 ; CHECK-NEXT: vsrl.vi v8, v8, 4
1650 %elt.head = insertelement <vscale x 4 x i64> poison, i64 4, i32 0
1651 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1652 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1653 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1654 %v = call <vscale x 4 x i64> @llvm.vp.lshr.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> %m, i32 %evl)
1655 ret <vscale x 4 x i64> %v
1658 declare <vscale x 5 x i64> @llvm.vp.lshr.nxv5i64(<vscale x 5 x i64>, <vscale x 5 x i64>, <vscale x 5 x i1>, i32)
1660 define <vscale x 5 x i64> @vsrl_vv_nxv5i64(<vscale x 5 x i64> %va, <vscale x 5 x i64> %b, <vscale x 5 x i1> %m, i32 zeroext %evl) {
1661 ; CHECK-LABEL: vsrl_vv_nxv5i64:
1663 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1664 ; CHECK-NEXT: vsrl.vv v8, v8, v16, v0.t
1666 %v = call <vscale x 5 x i64> @llvm.vp.lshr.nxv5i64(<vscale x 5 x i64> %va, <vscale x 5 x i64> %b, <vscale x 5 x i1> %m, i32 %evl)
1667 ret <vscale x 5 x i64> %v
1670 declare <vscale x 8 x i64> @llvm.vp.lshr.nxv8i64(<vscale x 8 x i64>, <vscale x 8 x i64>, <vscale x 8 x i1>, i32)
1672 define <vscale x 8 x i64> @vsrl_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1673 ; CHECK-LABEL: vsrl_vv_nxv8i64:
1675 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1676 ; CHECK-NEXT: vsrl.vv v8, v8, v16, v0.t
1678 %v = call <vscale x 8 x i64> @llvm.vp.lshr.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> %m, i32 %evl)
1679 ret <vscale x 8 x i64> %v
1682 define <vscale x 8 x i64> @vsrl_vv_nxv8i64_unmasked(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, i32 zeroext %evl) {
1683 ; CHECK-LABEL: vsrl_vv_nxv8i64_unmasked:
1685 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1686 ; CHECK-NEXT: vsrl.vv v8, v8, v16
1688 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1689 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1690 %v = call <vscale x 8 x i64> @llvm.vp.lshr.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> %m, i32 %evl)
1691 ret <vscale x 8 x i64> %v
1694 define <vscale x 8 x i64> @vsrl_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1695 ; RV32-LABEL: vsrl_vx_nxv8i64:
1697 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
1698 ; RV32-NEXT: vsrl.vx v8, v8, a0, v0.t
1701 ; RV64-LABEL: vsrl_vx_nxv8i64:
1703 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1704 ; RV64-NEXT: vsrl.vx v8, v8, a0, v0.t
1706 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
1707 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1708 %v = call <vscale x 8 x i64> @llvm.vp.lshr.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 %evl)
1709 ret <vscale x 8 x i64> %v
1712 define <vscale x 8 x i64> @vsrl_vx_nxv8i64_unmasked(<vscale x 8 x i64> %va, i64 %b, i32 zeroext %evl) {
1713 ; RV32-LABEL: vsrl_vx_nxv8i64_unmasked:
1715 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
1716 ; RV32-NEXT: vsrl.vx v8, v8, a0
1719 ; RV64-LABEL: vsrl_vx_nxv8i64_unmasked:
1721 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1722 ; RV64-NEXT: vsrl.vx v8, v8, a0
1724 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
1725 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1726 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1727 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1728 %v = call <vscale x 8 x i64> @llvm.vp.lshr.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 %evl)
1729 ret <vscale x 8 x i64> %v
1732 define <vscale x 8 x i64> @vsrl_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1733 ; CHECK-LABEL: vsrl_vi_nxv8i64:
1735 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1736 ; CHECK-NEXT: vsrl.vi v8, v8, 4, v0.t
1738 %elt.head = insertelement <vscale x 8 x i64> poison, i64 4, i32 0
1739 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1740 %v = call <vscale x 8 x i64> @llvm.vp.lshr.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 %evl)
1741 ret <vscale x 8 x i64> %v
1744 define <vscale x 8 x i64> @vsrl_vi_nxv8i64_unmasked(<vscale x 8 x i64> %va, i32 zeroext %evl) {
1745 ; CHECK-LABEL: vsrl_vi_nxv8i64_unmasked:
1747 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1748 ; CHECK-NEXT: vsrl.vi v8, v8, 4
1750 %elt.head = insertelement <vscale x 8 x i64> poison, i64 4, i32 0
1751 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1752 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1753 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1754 %v = call <vscale x 8 x i64> @llvm.vp.lshr.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 %evl)
1755 ret <vscale x 8 x i64> %v