1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s \
3 ; RUN: | FileCheck %s --check-prefixes=CHECK,RV32
4 ; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s \
5 ; RUN: | FileCheck %s --check-prefixes=CHECK,RV64
7 declare <8 x i7> @llvm.vp.and.v8i7(<8 x i7>, <8 x i7>, <8 x i1>, i32)
9 define <8 x i7> @vand_vv_v8i7(<8 x i7> %va, <8 x i7> %b, <8 x i1> %m, i32 zeroext %evl) {
10 ; CHECK-LABEL: vand_vv_v8i7:
12 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
13 ; CHECK-NEXT: vand.vv v8, v8, v9, v0.t
15 %v = call <8 x i7> @llvm.vp.and.v8i7(<8 x i7> %va, <8 x i7> %b, <8 x i1> %m, i32 %evl)
19 declare <2 x i8> @llvm.vp.and.v2i8(<2 x i8>, <2 x i8>, <2 x i1>, i32)
21 define <2 x i8> @vand_vv_v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> %m, i32 zeroext %evl) {
22 ; CHECK-LABEL: vand_vv_v2i8:
24 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
25 ; CHECK-NEXT: vand.vv v8, v8, v9, v0.t
27 %v = call <2 x i8> @llvm.vp.and.v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> %m, i32 %evl)
31 define <2 x i8> @vand_vv_v2i8_unmasked(<2 x i8> %va, <2 x i8> %b, i32 zeroext %evl) {
32 ; CHECK-LABEL: vand_vv_v2i8_unmasked:
34 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
35 ; CHECK-NEXT: vand.vv v8, v8, v9
37 %v = call <2 x i8> @llvm.vp.and.v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> splat (i1 true), i32 %evl)
41 define <2 x i8> @vand_vx_v2i8(<2 x i8> %va, i8 %b, <2 x i1> %m, i32 zeroext %evl) {
42 ; CHECK-LABEL: vand_vx_v2i8:
44 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
45 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
47 %elt.head = insertelement <2 x i8> poison, i8 %b, i32 0
48 %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
49 %v = call <2 x i8> @llvm.vp.and.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> %m, i32 %evl)
53 define <2 x i8> @vand_vx_v2i8_commute(<2 x i8> %va, i8 %b, <2 x i1> %m, i32 zeroext %evl) {
54 ; CHECK-LABEL: vand_vx_v2i8_commute:
56 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
57 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
59 %elt.head = insertelement <2 x i8> poison, i8 %b, i32 0
60 %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
61 %v = call <2 x i8> @llvm.vp.and.v2i8(<2 x i8> %vb, <2 x i8> %va, <2 x i1> %m, i32 %evl)
65 define <2 x i8> @vand_vx_v2i8_unmasked(<2 x i8> %va, i8 %b, i32 zeroext %evl) {
66 ; CHECK-LABEL: vand_vx_v2i8_unmasked:
68 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
69 ; CHECK-NEXT: vand.vx v8, v8, a0
71 %elt.head = insertelement <2 x i8> poison, i8 %b, i32 0
72 %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
73 %v = call <2 x i8> @llvm.vp.and.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> splat (i1 true), i32 %evl)
77 define <2 x i8> @vand_vx_v2i8_unmasked_commute(<2 x i8> %va, i8 %b, i32 zeroext %evl) {
78 ; CHECK-LABEL: vand_vx_v2i8_unmasked_commute:
80 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
81 ; CHECK-NEXT: vand.vx v8, v8, a0
83 %elt.head = insertelement <2 x i8> poison, i8 %b, i32 0
84 %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
85 %v = call <2 x i8> @llvm.vp.and.v2i8(<2 x i8> %vb, <2 x i8> %va, <2 x i1> splat (i1 true), i32 %evl)
89 define <2 x i8> @vand_vi_v2i8(<2 x i8> %va, <2 x i1> %m, i32 zeroext %evl) {
90 ; CHECK-LABEL: vand_vi_v2i8:
92 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
93 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
95 %v = call <2 x i8> @llvm.vp.and.v2i8(<2 x i8> %va, <2 x i8> splat (i8 4), <2 x i1> %m, i32 %evl)
99 define <2 x i8> @vand_vi_v2i8_unmasked(<2 x i8> %va, i32 zeroext %evl) {
100 ; CHECK-LABEL: vand_vi_v2i8_unmasked:
102 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
103 ; CHECK-NEXT: vand.vi v8, v8, 4
105 %v = call <2 x i8> @llvm.vp.and.v2i8(<2 x i8> %va, <2 x i8> splat (i8 4), <2 x i1> splat (i1 true), i32 %evl)
109 declare <4 x i8> @llvm.vp.and.v4i8(<4 x i8>, <4 x i8>, <4 x i1>, i32)
111 define <4 x i8> @vand_vv_v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 zeroext %evl) {
112 ; CHECK-LABEL: vand_vv_v4i8:
114 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
115 ; CHECK-NEXT: vand.vv v8, v8, v9, v0.t
117 %v = call <4 x i8> @llvm.vp.and.v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 %evl)
121 define <4 x i8> @vand_vv_v4i8_unmasked(<4 x i8> %va, <4 x i8> %b, i32 zeroext %evl) {
122 ; CHECK-LABEL: vand_vv_v4i8_unmasked:
124 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
125 ; CHECK-NEXT: vand.vv v8, v8, v9
127 %v = call <4 x i8> @llvm.vp.and.v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> splat (i1 true), i32 %evl)
131 define <4 x i8> @vand_vx_v4i8(<4 x i8> %va, i8 %b, <4 x i1> %m, i32 zeroext %evl) {
132 ; CHECK-LABEL: vand_vx_v4i8:
134 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
135 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
137 %elt.head = insertelement <4 x i8> poison, i8 %b, i32 0
138 %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
139 %v = call <4 x i8> @llvm.vp.and.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> %m, i32 %evl)
143 define <4 x i8> @vand_vx_v4i8_unmasked(<4 x i8> %va, i8 %b, i32 zeroext %evl) {
144 ; CHECK-LABEL: vand_vx_v4i8_unmasked:
146 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
147 ; CHECK-NEXT: vand.vx v8, v8, a0
149 %elt.head = insertelement <4 x i8> poison, i8 %b, i32 0
150 %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
151 %v = call <4 x i8> @llvm.vp.and.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> splat (i1 true), i32 %evl)
155 define <4 x i8> @vand_vi_v4i8(<4 x i8> %va, <4 x i1> %m, i32 zeroext %evl) {
156 ; CHECK-LABEL: vand_vi_v4i8:
158 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
159 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
161 %v = call <4 x i8> @llvm.vp.and.v4i8(<4 x i8> %va, <4 x i8> splat (i8 4), <4 x i1> %m, i32 %evl)
165 define <4 x i8> @vand_vi_v4i8_unmasked(<4 x i8> %va, i32 zeroext %evl) {
166 ; CHECK-LABEL: vand_vi_v4i8_unmasked:
168 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
169 ; CHECK-NEXT: vand.vi v8, v8, 4
171 %v = call <4 x i8> @llvm.vp.and.v4i8(<4 x i8> %va, <4 x i8> splat (i8 4), <4 x i1> splat (i1 true), i32 %evl)
175 declare <8 x i8> @llvm.vp.and.v8i8(<8 x i8>, <8 x i8>, <8 x i1>, i32)
177 define <8 x i8> @vand_vv_v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 zeroext %evl) {
178 ; CHECK-LABEL: vand_vv_v8i8:
180 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
181 ; CHECK-NEXT: vand.vv v8, v8, v9, v0.t
183 %v = call <8 x i8> @llvm.vp.and.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 %evl)
187 define <8 x i8> @vand_vv_v8i8_unmasked(<8 x i8> %va, <8 x i8> %b, i32 zeroext %evl) {
188 ; CHECK-LABEL: vand_vv_v8i8_unmasked:
190 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
191 ; CHECK-NEXT: vand.vv v8, v8, v9
193 %v = call <8 x i8> @llvm.vp.and.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> splat (i1 true), i32 %evl)
197 define <8 x i8> @vand_vx_v8i8(<8 x i8> %va, i8 %b, <8 x i1> %m, i32 zeroext %evl) {
198 ; CHECK-LABEL: vand_vx_v8i8:
200 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
201 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
203 %elt.head = insertelement <8 x i8> poison, i8 %b, i32 0
204 %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
205 %v = call <8 x i8> @llvm.vp.and.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> %m, i32 %evl)
209 define <8 x i8> @vand_vx_v8i8_unmasked(<8 x i8> %va, i8 %b, i32 zeroext %evl) {
210 ; CHECK-LABEL: vand_vx_v8i8_unmasked:
212 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
213 ; CHECK-NEXT: vand.vx v8, v8, a0
215 %elt.head = insertelement <8 x i8> poison, i8 %b, i32 0
216 %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
217 %v = call <8 x i8> @llvm.vp.and.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> splat (i1 true), i32 %evl)
221 define <8 x i8> @vand_vi_v8i8(<8 x i8> %va, <8 x i1> %m, i32 zeroext %evl) {
222 ; CHECK-LABEL: vand_vi_v8i8:
224 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
225 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
227 %v = call <8 x i8> @llvm.vp.and.v8i8(<8 x i8> %va, <8 x i8> splat (i8 4), <8 x i1> %m, i32 %evl)
231 define <8 x i8> @vand_vi_v8i8_unmasked(<8 x i8> %va, i32 zeroext %evl) {
232 ; CHECK-LABEL: vand_vi_v8i8_unmasked:
234 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
235 ; CHECK-NEXT: vand.vi v8, v8, 4
237 %v = call <8 x i8> @llvm.vp.and.v8i8(<8 x i8> %va, <8 x i8> splat (i8 4), <8 x i1> splat (i1 true), i32 %evl)
241 declare <16 x i8> @llvm.vp.and.v16i8(<16 x i8>, <16 x i8>, <16 x i1>, i32)
243 define <16 x i8> @vand_vv_v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 zeroext %evl) {
244 ; CHECK-LABEL: vand_vv_v16i8:
246 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
247 ; CHECK-NEXT: vand.vv v8, v8, v9, v0.t
249 %v = call <16 x i8> @llvm.vp.and.v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 %evl)
253 define <16 x i8> @vand_vv_v16i8_unmasked(<16 x i8> %va, <16 x i8> %b, i32 zeroext %evl) {
254 ; CHECK-LABEL: vand_vv_v16i8_unmasked:
256 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
257 ; CHECK-NEXT: vand.vv v8, v8, v9
259 %v = call <16 x i8> @llvm.vp.and.v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> splat (i1 true), i32 %evl)
263 define <16 x i8> @vand_vx_v16i8(<16 x i8> %va, i8 %b, <16 x i1> %m, i32 zeroext %evl) {
264 ; CHECK-LABEL: vand_vx_v16i8:
266 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
267 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
269 %elt.head = insertelement <16 x i8> poison, i8 %b, i32 0
270 %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
271 %v = call <16 x i8> @llvm.vp.and.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> %m, i32 %evl)
275 define <16 x i8> @vand_vx_v16i8_unmasked(<16 x i8> %va, i8 %b, i32 zeroext %evl) {
276 ; CHECK-LABEL: vand_vx_v16i8_unmasked:
278 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
279 ; CHECK-NEXT: vand.vx v8, v8, a0
281 %elt.head = insertelement <16 x i8> poison, i8 %b, i32 0
282 %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
283 %v = call <16 x i8> @llvm.vp.and.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> splat (i1 true), i32 %evl)
287 define <16 x i8> @vand_vi_v16i8(<16 x i8> %va, <16 x i1> %m, i32 zeroext %evl) {
288 ; CHECK-LABEL: vand_vi_v16i8:
290 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
291 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
293 %v = call <16 x i8> @llvm.vp.and.v16i8(<16 x i8> %va, <16 x i8> splat (i8 4), <16 x i1> %m, i32 %evl)
297 define <16 x i8> @vand_vi_v16i8_unmasked(<16 x i8> %va, i32 zeroext %evl) {
298 ; CHECK-LABEL: vand_vi_v16i8_unmasked:
300 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
301 ; CHECK-NEXT: vand.vi v8, v8, 4
303 %v = call <16 x i8> @llvm.vp.and.v16i8(<16 x i8> %va, <16 x i8> splat (i8 4), <16 x i1> splat (i1 true), i32 %evl)
307 declare <2 x i16> @llvm.vp.and.v2i16(<2 x i16>, <2 x i16>, <2 x i1>, i32)
309 define <2 x i16> @vand_vv_v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 zeroext %evl) {
310 ; CHECK-LABEL: vand_vv_v2i16:
312 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
313 ; CHECK-NEXT: vand.vv v8, v8, v9, v0.t
315 %v = call <2 x i16> @llvm.vp.and.v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 %evl)
319 define <2 x i16> @vand_vv_v2i16_unmasked(<2 x i16> %va, <2 x i16> %b, i32 zeroext %evl) {
320 ; CHECK-LABEL: vand_vv_v2i16_unmasked:
322 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
323 ; CHECK-NEXT: vand.vv v8, v8, v9
325 %v = call <2 x i16> @llvm.vp.and.v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> splat (i1 true), i32 %evl)
329 define <2 x i16> @vand_vx_v2i16(<2 x i16> %va, i16 %b, <2 x i1> %m, i32 zeroext %evl) {
330 ; CHECK-LABEL: vand_vx_v2i16:
332 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
333 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
335 %elt.head = insertelement <2 x i16> poison, i16 %b, i32 0
336 %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
337 %v = call <2 x i16> @llvm.vp.and.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> %m, i32 %evl)
341 define <2 x i16> @vand_vx_v2i16_unmasked(<2 x i16> %va, i16 %b, i32 zeroext %evl) {
342 ; CHECK-LABEL: vand_vx_v2i16_unmasked:
344 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
345 ; CHECK-NEXT: vand.vx v8, v8, a0
347 %elt.head = insertelement <2 x i16> poison, i16 %b, i32 0
348 %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
349 %v = call <2 x i16> @llvm.vp.and.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> splat (i1 true), i32 %evl)
353 define <2 x i16> @vand_vi_v2i16(<2 x i16> %va, <2 x i1> %m, i32 zeroext %evl) {
354 ; CHECK-LABEL: vand_vi_v2i16:
356 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
357 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
359 %v = call <2 x i16> @llvm.vp.and.v2i16(<2 x i16> %va, <2 x i16> splat (i16 4), <2 x i1> %m, i32 %evl)
363 define <2 x i16> @vand_vi_v2i16_unmasked(<2 x i16> %va, i32 zeroext %evl) {
364 ; CHECK-LABEL: vand_vi_v2i16_unmasked:
366 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
367 ; CHECK-NEXT: vand.vi v8, v8, 4
369 %v = call <2 x i16> @llvm.vp.and.v2i16(<2 x i16> %va, <2 x i16> splat (i16 4), <2 x i1> splat (i1 true), i32 %evl)
373 declare <4 x i16> @llvm.vp.and.v4i16(<4 x i16>, <4 x i16>, <4 x i1>, i32)
375 define <4 x i16> @vand_vv_v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 zeroext %evl) {
376 ; CHECK-LABEL: vand_vv_v4i16:
378 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
379 ; CHECK-NEXT: vand.vv v8, v8, v9, v0.t
381 %v = call <4 x i16> @llvm.vp.and.v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 %evl)
385 define <4 x i16> @vand_vv_v4i16_unmasked(<4 x i16> %va, <4 x i16> %b, i32 zeroext %evl) {
386 ; CHECK-LABEL: vand_vv_v4i16_unmasked:
388 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
389 ; CHECK-NEXT: vand.vv v8, v8, v9
391 %v = call <4 x i16> @llvm.vp.and.v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> splat (i1 true), i32 %evl)
395 define <4 x i16> @vand_vx_v4i16(<4 x i16> %va, i16 %b, <4 x i1> %m, i32 zeroext %evl) {
396 ; CHECK-LABEL: vand_vx_v4i16:
398 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
399 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
401 %elt.head = insertelement <4 x i16> poison, i16 %b, i32 0
402 %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
403 %v = call <4 x i16> @llvm.vp.and.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> %m, i32 %evl)
407 define <4 x i16> @vand_vx_v4i16_unmasked(<4 x i16> %va, i16 %b, i32 zeroext %evl) {
408 ; CHECK-LABEL: vand_vx_v4i16_unmasked:
410 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
411 ; CHECK-NEXT: vand.vx v8, v8, a0
413 %elt.head = insertelement <4 x i16> poison, i16 %b, i32 0
414 %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
415 %v = call <4 x i16> @llvm.vp.and.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> splat (i1 true), i32 %evl)
419 define <4 x i16> @vand_vi_v4i16(<4 x i16> %va, <4 x i1> %m, i32 zeroext %evl) {
420 ; CHECK-LABEL: vand_vi_v4i16:
422 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
423 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
425 %v = call <4 x i16> @llvm.vp.and.v4i16(<4 x i16> %va, <4 x i16> splat (i16 4), <4 x i1> %m, i32 %evl)
429 define <4 x i16> @vand_vi_v4i16_unmasked(<4 x i16> %va, i32 zeroext %evl) {
430 ; CHECK-LABEL: vand_vi_v4i16_unmasked:
432 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
433 ; CHECK-NEXT: vand.vi v8, v8, 4
435 %v = call <4 x i16> @llvm.vp.and.v4i16(<4 x i16> %va, <4 x i16> splat (i16 4), <4 x i1> splat (i1 true), i32 %evl)
439 declare <8 x i16> @llvm.vp.and.v8i16(<8 x i16>, <8 x i16>, <8 x i1>, i32)
441 define <8 x i16> @vand_vv_v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 zeroext %evl) {
442 ; CHECK-LABEL: vand_vv_v8i16:
444 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
445 ; CHECK-NEXT: vand.vv v8, v8, v9, v0.t
447 %v = call <8 x i16> @llvm.vp.and.v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 %evl)
451 define <8 x i16> @vand_vv_v8i16_unmasked(<8 x i16> %va, <8 x i16> %b, i32 zeroext %evl) {
452 ; CHECK-LABEL: vand_vv_v8i16_unmasked:
454 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
455 ; CHECK-NEXT: vand.vv v8, v8, v9
457 %v = call <8 x i16> @llvm.vp.and.v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> splat (i1 true), i32 %evl)
461 define <8 x i16> @vand_vx_v8i16(<8 x i16> %va, i16 %b, <8 x i1> %m, i32 zeroext %evl) {
462 ; CHECK-LABEL: vand_vx_v8i16:
464 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
465 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
467 %elt.head = insertelement <8 x i16> poison, i16 %b, i32 0
468 %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
469 %v = call <8 x i16> @llvm.vp.and.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> %m, i32 %evl)
473 define <8 x i16> @vand_vx_v8i16_unmasked(<8 x i16> %va, i16 %b, i32 zeroext %evl) {
474 ; CHECK-LABEL: vand_vx_v8i16_unmasked:
476 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
477 ; CHECK-NEXT: vand.vx v8, v8, a0
479 %elt.head = insertelement <8 x i16> poison, i16 %b, i32 0
480 %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
481 %v = call <8 x i16> @llvm.vp.and.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> splat (i1 true), i32 %evl)
485 define <8 x i16> @vand_vi_v8i16(<8 x i16> %va, <8 x i1> %m, i32 zeroext %evl) {
486 ; CHECK-LABEL: vand_vi_v8i16:
488 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
489 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
491 %v = call <8 x i16> @llvm.vp.and.v8i16(<8 x i16> %va, <8 x i16> splat (i16 4), <8 x i1> %m, i32 %evl)
495 define <8 x i16> @vand_vi_v8i16_unmasked(<8 x i16> %va, i32 zeroext %evl) {
496 ; CHECK-LABEL: vand_vi_v8i16_unmasked:
498 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
499 ; CHECK-NEXT: vand.vi v8, v8, 4
501 %v = call <8 x i16> @llvm.vp.and.v8i16(<8 x i16> %va, <8 x i16> splat (i16 4), <8 x i1> splat (i1 true), i32 %evl)
505 declare <16 x i16> @llvm.vp.and.v16i16(<16 x i16>, <16 x i16>, <16 x i1>, i32)
507 define <16 x i16> @vand_vv_v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 zeroext %evl) {
508 ; CHECK-LABEL: vand_vv_v16i16:
510 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
511 ; CHECK-NEXT: vand.vv v8, v8, v10, v0.t
513 %v = call <16 x i16> @llvm.vp.and.v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 %evl)
517 define <16 x i16> @vand_vv_v16i16_unmasked(<16 x i16> %va, <16 x i16> %b, i32 zeroext %evl) {
518 ; CHECK-LABEL: vand_vv_v16i16_unmasked:
520 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
521 ; CHECK-NEXT: vand.vv v8, v8, v10
523 %v = call <16 x i16> @llvm.vp.and.v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> splat (i1 true), i32 %evl)
527 define <16 x i16> @vand_vx_v16i16(<16 x i16> %va, i16 %b, <16 x i1> %m, i32 zeroext %evl) {
528 ; CHECK-LABEL: vand_vx_v16i16:
530 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
531 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
533 %elt.head = insertelement <16 x i16> poison, i16 %b, i32 0
534 %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
535 %v = call <16 x i16> @llvm.vp.and.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> %m, i32 %evl)
539 define <16 x i16> @vand_vx_v16i16_unmasked(<16 x i16> %va, i16 %b, i32 zeroext %evl) {
540 ; CHECK-LABEL: vand_vx_v16i16_unmasked:
542 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
543 ; CHECK-NEXT: vand.vx v8, v8, a0
545 %elt.head = insertelement <16 x i16> poison, i16 %b, i32 0
546 %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
547 %v = call <16 x i16> @llvm.vp.and.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> splat (i1 true), i32 %evl)
551 define <16 x i16> @vand_vi_v16i16(<16 x i16> %va, <16 x i1> %m, i32 zeroext %evl) {
552 ; CHECK-LABEL: vand_vi_v16i16:
554 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
555 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
557 %v = call <16 x i16> @llvm.vp.and.v16i16(<16 x i16> %va, <16 x i16> splat (i16 4), <16 x i1> %m, i32 %evl)
561 define <16 x i16> @vand_vi_v16i16_unmasked(<16 x i16> %va, i32 zeroext %evl) {
562 ; CHECK-LABEL: vand_vi_v16i16_unmasked:
564 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
565 ; CHECK-NEXT: vand.vi v8, v8, 4
567 %v = call <16 x i16> @llvm.vp.and.v16i16(<16 x i16> %va, <16 x i16> splat (i16 4), <16 x i1> splat (i1 true), i32 %evl)
571 declare <2 x i32> @llvm.vp.and.v2i32(<2 x i32>, <2 x i32>, <2 x i1>, i32)
573 define <2 x i32> @vand_vv_v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 zeroext %evl) {
574 ; CHECK-LABEL: vand_vv_v2i32:
576 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
577 ; CHECK-NEXT: vand.vv v8, v8, v9, v0.t
579 %v = call <2 x i32> @llvm.vp.and.v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 %evl)
583 define <2 x i32> @vand_vv_v2i32_unmasked(<2 x i32> %va, <2 x i32> %b, i32 zeroext %evl) {
584 ; CHECK-LABEL: vand_vv_v2i32_unmasked:
586 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
587 ; CHECK-NEXT: vand.vv v8, v8, v9
589 %v = call <2 x i32> @llvm.vp.and.v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> splat (i1 true), i32 %evl)
593 define <2 x i32> @vand_vx_v2i32(<2 x i32> %va, i32 %b, <2 x i1> %m, i32 zeroext %evl) {
594 ; CHECK-LABEL: vand_vx_v2i32:
596 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
597 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
599 %elt.head = insertelement <2 x i32> poison, i32 %b, i32 0
600 %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
601 %v = call <2 x i32> @llvm.vp.and.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> %m, i32 %evl)
605 define <2 x i32> @vand_vx_v2i32_unmasked(<2 x i32> %va, i32 %b, i32 zeroext %evl) {
606 ; CHECK-LABEL: vand_vx_v2i32_unmasked:
608 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
609 ; CHECK-NEXT: vand.vx v8, v8, a0
611 %elt.head = insertelement <2 x i32> poison, i32 %b, i32 0
612 %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
613 %v = call <2 x i32> @llvm.vp.and.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> splat (i1 true), i32 %evl)
617 define <2 x i32> @vand_vi_v2i32(<2 x i32> %va, <2 x i1> %m, i32 zeroext %evl) {
618 ; CHECK-LABEL: vand_vi_v2i32:
620 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
621 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
623 %v = call <2 x i32> @llvm.vp.and.v2i32(<2 x i32> %va, <2 x i32> splat (i32 4), <2 x i1> %m, i32 %evl)
627 define <2 x i32> @vand_vi_v2i32_unmasked(<2 x i32> %va, i32 zeroext %evl) {
628 ; CHECK-LABEL: vand_vi_v2i32_unmasked:
630 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
631 ; CHECK-NEXT: vand.vi v8, v8, 4
633 %v = call <2 x i32> @llvm.vp.and.v2i32(<2 x i32> %va, <2 x i32> splat (i32 4), <2 x i1> splat (i1 true), i32 %evl)
637 declare <4 x i32> @llvm.vp.and.v4i32(<4 x i32>, <4 x i32>, <4 x i1>, i32)
639 define <4 x i32> @vand_vv_v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 zeroext %evl) {
640 ; CHECK-LABEL: vand_vv_v4i32:
642 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
643 ; CHECK-NEXT: vand.vv v8, v8, v9, v0.t
645 %v = call <4 x i32> @llvm.vp.and.v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 %evl)
649 define <4 x i32> @vand_vv_v4i32_unmasked(<4 x i32> %va, <4 x i32> %b, i32 zeroext %evl) {
650 ; CHECK-LABEL: vand_vv_v4i32_unmasked:
652 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
653 ; CHECK-NEXT: vand.vv v8, v8, v9
655 %v = call <4 x i32> @llvm.vp.and.v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> splat (i1 true), i32 %evl)
659 define <4 x i32> @vand_vx_v4i32(<4 x i32> %va, i32 %b, <4 x i1> %m, i32 zeroext %evl) {
660 ; CHECK-LABEL: vand_vx_v4i32:
662 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
663 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
665 %elt.head = insertelement <4 x i32> poison, i32 %b, i32 0
666 %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
667 %v = call <4 x i32> @llvm.vp.and.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> %m, i32 %evl)
671 define <4 x i32> @vand_vx_v4i32_unmasked(<4 x i32> %va, i32 %b, i32 zeroext %evl) {
672 ; CHECK-LABEL: vand_vx_v4i32_unmasked:
674 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
675 ; CHECK-NEXT: vand.vx v8, v8, a0
677 %elt.head = insertelement <4 x i32> poison, i32 %b, i32 0
678 %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
679 %v = call <4 x i32> @llvm.vp.and.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> splat (i1 true), i32 %evl)
683 define <4 x i32> @vand_vi_v4i32(<4 x i32> %va, <4 x i1> %m, i32 zeroext %evl) {
684 ; CHECK-LABEL: vand_vi_v4i32:
686 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
687 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
689 %v = call <4 x i32> @llvm.vp.and.v4i32(<4 x i32> %va, <4 x i32> splat (i32 4), <4 x i1> %m, i32 %evl)
693 define <4 x i32> @vand_vi_v4i32_unmasked(<4 x i32> %va, i32 zeroext %evl) {
694 ; CHECK-LABEL: vand_vi_v4i32_unmasked:
696 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
697 ; CHECK-NEXT: vand.vi v8, v8, 4
699 %v = call <4 x i32> @llvm.vp.and.v4i32(<4 x i32> %va, <4 x i32> splat (i32 4), <4 x i1> splat (i1 true), i32 %evl)
703 declare <8 x i32> @llvm.vp.and.v8i32(<8 x i32>, <8 x i32>, <8 x i1>, i32)
705 define <8 x i32> @vand_vv_v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 zeroext %evl) {
706 ; CHECK-LABEL: vand_vv_v8i32:
708 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
709 ; CHECK-NEXT: vand.vv v8, v8, v10, v0.t
711 %v = call <8 x i32> @llvm.vp.and.v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 %evl)
715 define <8 x i32> @vand_vv_v8i32_unmasked(<8 x i32> %va, <8 x i32> %b, i32 zeroext %evl) {
716 ; CHECK-LABEL: vand_vv_v8i32_unmasked:
718 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
719 ; CHECK-NEXT: vand.vv v8, v8, v10
721 %v = call <8 x i32> @llvm.vp.and.v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> splat (i1 true), i32 %evl)
725 define <8 x i32> @vand_vx_v8i32(<8 x i32> %va, i32 %b, <8 x i1> %m, i32 zeroext %evl) {
726 ; CHECK-LABEL: vand_vx_v8i32:
728 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
729 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
731 %elt.head = insertelement <8 x i32> poison, i32 %b, i32 0
732 %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
733 %v = call <8 x i32> @llvm.vp.and.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> %m, i32 %evl)
737 define <8 x i32> @vand_vx_v8i32_unmasked(<8 x i32> %va, i32 %b, i32 zeroext %evl) {
738 ; CHECK-LABEL: vand_vx_v8i32_unmasked:
740 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
741 ; CHECK-NEXT: vand.vx v8, v8, a0
743 %elt.head = insertelement <8 x i32> poison, i32 %b, i32 0
744 %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
745 %v = call <8 x i32> @llvm.vp.and.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> splat (i1 true), i32 %evl)
749 define <8 x i32> @vand_vi_v8i32(<8 x i32> %va, <8 x i1> %m, i32 zeroext %evl) {
750 ; CHECK-LABEL: vand_vi_v8i32:
752 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
753 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
755 %v = call <8 x i32> @llvm.vp.and.v8i32(<8 x i32> %va, <8 x i32> splat (i32 4), <8 x i1> %m, i32 %evl)
759 define <8 x i32> @vand_vi_v8i32_unmasked(<8 x i32> %va, i32 zeroext %evl) {
760 ; CHECK-LABEL: vand_vi_v8i32_unmasked:
762 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
763 ; CHECK-NEXT: vand.vi v8, v8, 4
765 %v = call <8 x i32> @llvm.vp.and.v8i32(<8 x i32> %va, <8 x i32> splat (i32 4), <8 x i1> splat (i1 true), i32 %evl)
769 declare <16 x i32> @llvm.vp.and.v16i32(<16 x i32>, <16 x i32>, <16 x i1>, i32)
771 define <16 x i32> @vand_vv_v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 zeroext %evl) {
772 ; CHECK-LABEL: vand_vv_v16i32:
774 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
775 ; CHECK-NEXT: vand.vv v8, v8, v12, v0.t
777 %v = call <16 x i32> @llvm.vp.and.v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 %evl)
781 define <16 x i32> @vand_vv_v16i32_unmasked(<16 x i32> %va, <16 x i32> %b, i32 zeroext %evl) {
782 ; CHECK-LABEL: vand_vv_v16i32_unmasked:
784 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
785 ; CHECK-NEXT: vand.vv v8, v8, v12
787 %v = call <16 x i32> @llvm.vp.and.v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> splat (i1 true), i32 %evl)
791 define <16 x i32> @vand_vx_v16i32(<16 x i32> %va, i32 %b, <16 x i1> %m, i32 zeroext %evl) {
792 ; CHECK-LABEL: vand_vx_v16i32:
794 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
795 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
797 %elt.head = insertelement <16 x i32> poison, i32 %b, i32 0
798 %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
799 %v = call <16 x i32> @llvm.vp.and.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> %m, i32 %evl)
803 define <16 x i32> @vand_vx_v16i32_unmasked(<16 x i32> %va, i32 %b, i32 zeroext %evl) {
804 ; CHECK-LABEL: vand_vx_v16i32_unmasked:
806 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
807 ; CHECK-NEXT: vand.vx v8, v8, a0
809 %elt.head = insertelement <16 x i32> poison, i32 %b, i32 0
810 %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
811 %v = call <16 x i32> @llvm.vp.and.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> splat (i1 true), i32 %evl)
815 define <16 x i32> @vand_vi_v16i32(<16 x i32> %va, <16 x i1> %m, i32 zeroext %evl) {
816 ; CHECK-LABEL: vand_vi_v16i32:
818 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
819 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
821 %v = call <16 x i32> @llvm.vp.and.v16i32(<16 x i32> %va, <16 x i32> splat (i32 4), <16 x i1> %m, i32 %evl)
825 define <16 x i32> @vand_vi_v16i32_unmasked(<16 x i32> %va, i32 zeroext %evl) {
826 ; CHECK-LABEL: vand_vi_v16i32_unmasked:
828 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
829 ; CHECK-NEXT: vand.vi v8, v8, 4
831 %v = call <16 x i32> @llvm.vp.and.v16i32(<16 x i32> %va, <16 x i32> splat (i32 4), <16 x i1> splat (i1 true), i32 %evl)
835 declare <2 x i64> @llvm.vp.and.v2i64(<2 x i64>, <2 x i64>, <2 x i1>, i32)
837 define <2 x i64> @vand_vv_v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 zeroext %evl) {
838 ; CHECK-LABEL: vand_vv_v2i64:
840 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
841 ; CHECK-NEXT: vand.vv v8, v8, v9, v0.t
843 %v = call <2 x i64> @llvm.vp.and.v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 %evl)
847 define <2 x i64> @vand_vv_v2i64_unmasked(<2 x i64> %va, <2 x i64> %b, i32 zeroext %evl) {
848 ; CHECK-LABEL: vand_vv_v2i64_unmasked:
850 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
851 ; CHECK-NEXT: vand.vv v8, v8, v9
853 %v = call <2 x i64> @llvm.vp.and.v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> splat (i1 true), i32 %evl)
857 define <2 x i64> @vand_vx_v2i64(<2 x i64> %va, i64 %b, <2 x i1> %m, i32 zeroext %evl) {
858 ; RV32-LABEL: vand_vx_v2i64:
860 ; RV32-NEXT: addi sp, sp, -16
861 ; RV32-NEXT: .cfi_def_cfa_offset 16
862 ; RV32-NEXT: sw a1, 12(sp)
863 ; RV32-NEXT: sw a0, 8(sp)
864 ; RV32-NEXT: addi a0, sp, 8
865 ; RV32-NEXT: vsetivli zero, 2, e64, m1, ta, ma
866 ; RV32-NEXT: vlse64.v v9, (a0), zero
867 ; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma
868 ; RV32-NEXT: vand.vv v8, v8, v9, v0.t
869 ; RV32-NEXT: addi sp, sp, 16
872 ; RV64-LABEL: vand_vx_v2i64:
874 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
875 ; RV64-NEXT: vand.vx v8, v8, a0, v0.t
877 %elt.head = insertelement <2 x i64> poison, i64 %b, i32 0
878 %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
879 %v = call <2 x i64> @llvm.vp.and.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> %m, i32 %evl)
883 define <2 x i64> @vand_vx_v2i64_unmasked(<2 x i64> %va, i64 %b, i32 zeroext %evl) {
884 ; RV32-LABEL: vand_vx_v2i64_unmasked:
886 ; RV32-NEXT: addi sp, sp, -16
887 ; RV32-NEXT: .cfi_def_cfa_offset 16
888 ; RV32-NEXT: sw a1, 12(sp)
889 ; RV32-NEXT: sw a0, 8(sp)
890 ; RV32-NEXT: addi a0, sp, 8
891 ; RV32-NEXT: vsetivli zero, 2, e64, m1, ta, ma
892 ; RV32-NEXT: vlse64.v v9, (a0), zero
893 ; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma
894 ; RV32-NEXT: vand.vv v8, v8, v9
895 ; RV32-NEXT: addi sp, sp, 16
898 ; RV64-LABEL: vand_vx_v2i64_unmasked:
900 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
901 ; RV64-NEXT: vand.vx v8, v8, a0
903 %elt.head = insertelement <2 x i64> poison, i64 %b, i32 0
904 %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
905 %v = call <2 x i64> @llvm.vp.and.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> splat (i1 true), i32 %evl)
909 define <2 x i64> @vand_vi_v2i64(<2 x i64> %va, <2 x i1> %m, i32 zeroext %evl) {
910 ; CHECK-LABEL: vand_vi_v2i64:
912 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
913 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
915 %v = call <2 x i64> @llvm.vp.and.v2i64(<2 x i64> %va, <2 x i64> splat (i64 4), <2 x i1> %m, i32 %evl)
919 define <2 x i64> @vand_vi_v2i64_unmasked(<2 x i64> %va, i32 zeroext %evl) {
920 ; CHECK-LABEL: vand_vi_v2i64_unmasked:
922 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
923 ; CHECK-NEXT: vand.vi v8, v8, 4
925 %v = call <2 x i64> @llvm.vp.and.v2i64(<2 x i64> %va, <2 x i64> splat (i64 4), <2 x i1> splat (i1 true), i32 %evl)
929 declare <4 x i64> @llvm.vp.and.v4i64(<4 x i64>, <4 x i64>, <4 x i1>, i32)
931 define <4 x i64> @vand_vv_v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 zeroext %evl) {
932 ; CHECK-LABEL: vand_vv_v4i64:
934 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
935 ; CHECK-NEXT: vand.vv v8, v8, v10, v0.t
937 %v = call <4 x i64> @llvm.vp.and.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 %evl)
941 define <4 x i64> @vand_vv_v4i64_unmasked(<4 x i64> %va, <4 x i64> %b, i32 zeroext %evl) {
942 ; CHECK-LABEL: vand_vv_v4i64_unmasked:
944 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
945 ; CHECK-NEXT: vand.vv v8, v8, v10
947 %v = call <4 x i64> @llvm.vp.and.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> splat (i1 true), i32 %evl)
951 define <4 x i64> @vand_vx_v4i64(<4 x i64> %va, i64 %b, <4 x i1> %m, i32 zeroext %evl) {
952 ; RV32-LABEL: vand_vx_v4i64:
954 ; RV32-NEXT: addi sp, sp, -16
955 ; RV32-NEXT: .cfi_def_cfa_offset 16
956 ; RV32-NEXT: sw a1, 12(sp)
957 ; RV32-NEXT: sw a0, 8(sp)
958 ; RV32-NEXT: addi a0, sp, 8
959 ; RV32-NEXT: vsetivli zero, 4, e64, m2, ta, ma
960 ; RV32-NEXT: vlse64.v v10, (a0), zero
961 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
962 ; RV32-NEXT: vand.vv v8, v8, v10, v0.t
963 ; RV32-NEXT: addi sp, sp, 16
966 ; RV64-LABEL: vand_vx_v4i64:
968 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
969 ; RV64-NEXT: vand.vx v8, v8, a0, v0.t
971 %elt.head = insertelement <4 x i64> poison, i64 %b, i32 0
972 %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
973 %v = call <4 x i64> @llvm.vp.and.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> %m, i32 %evl)
977 define <4 x i64> @vand_vx_v4i64_unmasked(<4 x i64> %va, i64 %b, i32 zeroext %evl) {
978 ; RV32-LABEL: vand_vx_v4i64_unmasked:
980 ; RV32-NEXT: addi sp, sp, -16
981 ; RV32-NEXT: .cfi_def_cfa_offset 16
982 ; RV32-NEXT: sw a1, 12(sp)
983 ; RV32-NEXT: sw a0, 8(sp)
984 ; RV32-NEXT: addi a0, sp, 8
985 ; RV32-NEXT: vsetivli zero, 4, e64, m2, ta, ma
986 ; RV32-NEXT: vlse64.v v10, (a0), zero
987 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
988 ; RV32-NEXT: vand.vv v8, v8, v10
989 ; RV32-NEXT: addi sp, sp, 16
992 ; RV64-LABEL: vand_vx_v4i64_unmasked:
994 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
995 ; RV64-NEXT: vand.vx v8, v8, a0
997 %elt.head = insertelement <4 x i64> poison, i64 %b, i32 0
998 %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
999 %v = call <4 x i64> @llvm.vp.and.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> splat (i1 true), i32 %evl)
1003 define <4 x i64> @vand_vi_v4i64(<4 x i64> %va, <4 x i1> %m, i32 zeroext %evl) {
1004 ; CHECK-LABEL: vand_vi_v4i64:
1006 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1007 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
1009 %v = call <4 x i64> @llvm.vp.and.v4i64(<4 x i64> %va, <4 x i64> splat (i64 4), <4 x i1> %m, i32 %evl)
1013 define <4 x i64> @vand_vi_v4i64_unmasked(<4 x i64> %va, i32 zeroext %evl) {
1014 ; CHECK-LABEL: vand_vi_v4i64_unmasked:
1016 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1017 ; CHECK-NEXT: vand.vi v8, v8, 4
1019 %v = call <4 x i64> @llvm.vp.and.v4i64(<4 x i64> %va, <4 x i64> splat (i64 4), <4 x i1> splat (i1 true), i32 %evl)
1023 declare <8 x i64> @llvm.vp.and.v8i64(<8 x i64>, <8 x i64>, <8 x i1>, i32)
1025 define <8 x i64> @vand_vv_v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 zeroext %evl) {
1026 ; CHECK-LABEL: vand_vv_v8i64:
1028 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1029 ; CHECK-NEXT: vand.vv v8, v8, v12, v0.t
1031 %v = call <8 x i64> @llvm.vp.and.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 %evl)
1035 define <8 x i64> @vand_vv_v8i64_unmasked(<8 x i64> %va, <8 x i64> %b, i32 zeroext %evl) {
1036 ; CHECK-LABEL: vand_vv_v8i64_unmasked:
1038 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1039 ; CHECK-NEXT: vand.vv v8, v8, v12
1041 %v = call <8 x i64> @llvm.vp.and.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> splat (i1 true), i32 %evl)
1045 define <8 x i64> @vand_vx_v8i64(<8 x i64> %va, i64 %b, <8 x i1> %m, i32 zeroext %evl) {
1046 ; RV32-LABEL: vand_vx_v8i64:
1048 ; RV32-NEXT: addi sp, sp, -16
1049 ; RV32-NEXT: .cfi_def_cfa_offset 16
1050 ; RV32-NEXT: sw a1, 12(sp)
1051 ; RV32-NEXT: sw a0, 8(sp)
1052 ; RV32-NEXT: addi a0, sp, 8
1053 ; RV32-NEXT: vsetivli zero, 8, e64, m4, ta, ma
1054 ; RV32-NEXT: vlse64.v v12, (a0), zero
1055 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
1056 ; RV32-NEXT: vand.vv v8, v8, v12, v0.t
1057 ; RV32-NEXT: addi sp, sp, 16
1060 ; RV64-LABEL: vand_vx_v8i64:
1062 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
1063 ; RV64-NEXT: vand.vx v8, v8, a0, v0.t
1065 %elt.head = insertelement <8 x i64> poison, i64 %b, i32 0
1066 %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
1067 %v = call <8 x i64> @llvm.vp.and.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> %m, i32 %evl)
1071 define <8 x i64> @vand_vx_v8i64_unmasked(<8 x i64> %va, i64 %b, i32 zeroext %evl) {
1072 ; RV32-LABEL: vand_vx_v8i64_unmasked:
1074 ; RV32-NEXT: addi sp, sp, -16
1075 ; RV32-NEXT: .cfi_def_cfa_offset 16
1076 ; RV32-NEXT: sw a1, 12(sp)
1077 ; RV32-NEXT: sw a0, 8(sp)
1078 ; RV32-NEXT: addi a0, sp, 8
1079 ; RV32-NEXT: vsetivli zero, 8, e64, m4, ta, ma
1080 ; RV32-NEXT: vlse64.v v12, (a0), zero
1081 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
1082 ; RV32-NEXT: vand.vv v8, v8, v12
1083 ; RV32-NEXT: addi sp, sp, 16
1086 ; RV64-LABEL: vand_vx_v8i64_unmasked:
1088 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
1089 ; RV64-NEXT: vand.vx v8, v8, a0
1091 %elt.head = insertelement <8 x i64> poison, i64 %b, i32 0
1092 %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
1093 %v = call <8 x i64> @llvm.vp.and.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> splat (i1 true), i32 %evl)
1097 define <8 x i64> @vand_vi_v8i64(<8 x i64> %va, <8 x i1> %m, i32 zeroext %evl) {
1098 ; CHECK-LABEL: vand_vi_v8i64:
1100 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1101 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
1103 %v = call <8 x i64> @llvm.vp.and.v8i64(<8 x i64> %va, <8 x i64> splat (i64 4), <8 x i1> %m, i32 %evl)
1107 define <8 x i64> @vand_vi_v8i64_unmasked(<8 x i64> %va, i32 zeroext %evl) {
1108 ; CHECK-LABEL: vand_vi_v8i64_unmasked:
1110 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1111 ; CHECK-NEXT: vand.vi v8, v8, 4
1113 %v = call <8 x i64> @llvm.vp.and.v8i64(<8 x i64> %va, <8 x i64> splat (i64 4), <8 x i1> splat (i1 true), i32 %evl)
1117 declare <11 x i64> @llvm.vp.and.v11i64(<11 x i64>, <11 x i64>, <11 x i1>, i32)
1119 define <11 x i64> @vand_vv_v11i64(<11 x i64> %va, <11 x i64> %b, <11 x i1> %m, i32 zeroext %evl) {
1120 ; CHECK-LABEL: vand_vv_v11i64:
1122 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1123 ; CHECK-NEXT: vand.vv v8, v8, v16, v0.t
1125 %v = call <11 x i64> @llvm.vp.and.v11i64(<11 x i64> %va, <11 x i64> %b, <11 x i1> %m, i32 %evl)
1129 define <11 x i64> @vand_vv_v11i64_unmasked(<11 x i64> %va, <11 x i64> %b, i32 zeroext %evl) {
1130 ; CHECK-LABEL: vand_vv_v11i64_unmasked:
1132 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1133 ; CHECK-NEXT: vand.vv v8, v8, v16
1135 %v = call <11 x i64> @llvm.vp.and.v11i64(<11 x i64> %va, <11 x i64> %b, <11 x i1> splat (i1 true), i32 %evl)
1139 define <11 x i64> @vand_vx_v11i64(<11 x i64> %va, i64 %b, <11 x i1> %m, i32 zeroext %evl) {
1140 ; RV32-LABEL: vand_vx_v11i64:
1142 ; RV32-NEXT: vmv1r.v v16, v0
1143 ; RV32-NEXT: lui a3, 341
1144 ; RV32-NEXT: addi a3, a3, 1365
1145 ; RV32-NEXT: vsetivli zero, 1, e32, m1, ta, ma
1146 ; RV32-NEXT: vmv.s.x v0, a3
1147 ; RV32-NEXT: li a3, 32
1148 ; RV32-NEXT: vsetvli zero, a3, e32, m8, ta, ma
1149 ; RV32-NEXT: vmv.v.x v24, a1
1150 ; RV32-NEXT: vmerge.vxm v24, v24, a0, v0
1151 ; RV32-NEXT: vmv1r.v v0, v16
1152 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
1153 ; RV32-NEXT: vand.vv v8, v8, v24, v0.t
1156 ; RV64-LABEL: vand_vx_v11i64:
1158 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1159 ; RV64-NEXT: vand.vx v8, v8, a0, v0.t
1161 %elt.head = insertelement <11 x i64> poison, i64 %b, i32 0
1162 %vb = shufflevector <11 x i64> %elt.head, <11 x i64> poison, <11 x i32> zeroinitializer
1163 %v = call <11 x i64> @llvm.vp.and.v11i64(<11 x i64> %va, <11 x i64> %vb, <11 x i1> %m, i32 %evl)
1167 define <11 x i64> @vand_vx_v11i64_unmasked(<11 x i64> %va, i64 %b, i32 zeroext %evl) {
1168 ; RV32-LABEL: vand_vx_v11i64_unmasked:
1170 ; RV32-NEXT: li a3, 32
1171 ; RV32-NEXT: lui a4, 341
1172 ; RV32-NEXT: addi a4, a4, 1365
1173 ; RV32-NEXT: vsetivli zero, 1, e32, m1, ta, ma
1174 ; RV32-NEXT: vmv.s.x v0, a4
1175 ; RV32-NEXT: vsetvli zero, a3, e32, m8, ta, ma
1176 ; RV32-NEXT: vmv.v.x v16, a1
1177 ; RV32-NEXT: vmerge.vxm v16, v16, a0, v0
1178 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
1179 ; RV32-NEXT: vand.vv v8, v8, v16
1182 ; RV64-LABEL: vand_vx_v11i64_unmasked:
1184 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1185 ; RV64-NEXT: vand.vx v8, v8, a0
1187 %elt.head = insertelement <11 x i64> poison, i64 %b, i32 0
1188 %vb = shufflevector <11 x i64> %elt.head, <11 x i64> poison, <11 x i32> zeroinitializer
1189 %v = call <11 x i64> @llvm.vp.and.v11i64(<11 x i64> %va, <11 x i64> %vb, <11 x i1> splat (i1 true), i32 %evl)
1193 define <11 x i64> @vand_vi_v11i64(<11 x i64> %va, <11 x i1> %m, i32 zeroext %evl) {
1194 ; CHECK-LABEL: vand_vi_v11i64:
1196 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1197 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
1199 %v = call <11 x i64> @llvm.vp.and.v11i64(<11 x i64> %va, <11 x i64> splat (i64 4), <11 x i1> %m, i32 %evl)
1203 define <11 x i64> @vand_vi_v11i64_unmasked(<11 x i64> %va, i32 zeroext %evl) {
1204 ; CHECK-LABEL: vand_vi_v11i64_unmasked:
1206 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1207 ; CHECK-NEXT: vand.vi v8, v8, 4
1209 %v = call <11 x i64> @llvm.vp.and.v11i64(<11 x i64> %va, <11 x i64> splat (i64 4), <11 x i1> splat (i1 true), i32 %evl)
1213 declare <16 x i64> @llvm.vp.and.v16i64(<16 x i64>, <16 x i64>, <16 x i1>, i32)
1215 define <16 x i64> @vand_vv_v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 zeroext %evl) {
1216 ; CHECK-LABEL: vand_vv_v16i64:
1218 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1219 ; CHECK-NEXT: vand.vv v8, v8, v16, v0.t
1221 %v = call <16 x i64> @llvm.vp.and.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 %evl)
1225 define <16 x i64> @vand_vv_v16i64_unmasked(<16 x i64> %va, <16 x i64> %b, i32 zeroext %evl) {
1226 ; CHECK-LABEL: vand_vv_v16i64_unmasked:
1228 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1229 ; CHECK-NEXT: vand.vv v8, v8, v16
1231 %v = call <16 x i64> @llvm.vp.and.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> splat (i1 true), i32 %evl)
1235 define <16 x i64> @vand_vx_v16i64(<16 x i64> %va, i64 %b, <16 x i1> %m, i32 zeroext %evl) {
1236 ; RV32-LABEL: vand_vx_v16i64:
1238 ; RV32-NEXT: addi sp, sp, -16
1239 ; RV32-NEXT: .cfi_def_cfa_offset 16
1240 ; RV32-NEXT: sw a1, 12(sp)
1241 ; RV32-NEXT: sw a0, 8(sp)
1242 ; RV32-NEXT: addi a0, sp, 8
1243 ; RV32-NEXT: vsetivli zero, 16, e64, m8, ta, ma
1244 ; RV32-NEXT: vlse64.v v16, (a0), zero
1245 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
1246 ; RV32-NEXT: vand.vv v8, v8, v16, v0.t
1247 ; RV32-NEXT: addi sp, sp, 16
1250 ; RV64-LABEL: vand_vx_v16i64:
1252 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1253 ; RV64-NEXT: vand.vx v8, v8, a0, v0.t
1255 %elt.head = insertelement <16 x i64> poison, i64 %b, i32 0
1256 %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
1257 %v = call <16 x i64> @llvm.vp.and.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> %m, i32 %evl)
1261 define <16 x i64> @vand_vx_v16i64_unmasked(<16 x i64> %va, i64 %b, i32 zeroext %evl) {
1262 ; RV32-LABEL: vand_vx_v16i64_unmasked:
1264 ; RV32-NEXT: addi sp, sp, -16
1265 ; RV32-NEXT: .cfi_def_cfa_offset 16
1266 ; RV32-NEXT: sw a1, 12(sp)
1267 ; RV32-NEXT: sw a0, 8(sp)
1268 ; RV32-NEXT: addi a0, sp, 8
1269 ; RV32-NEXT: vsetivli zero, 16, e64, m8, ta, ma
1270 ; RV32-NEXT: vlse64.v v16, (a0), zero
1271 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
1272 ; RV32-NEXT: vand.vv v8, v8, v16
1273 ; RV32-NEXT: addi sp, sp, 16
1276 ; RV64-LABEL: vand_vx_v16i64_unmasked:
1278 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1279 ; RV64-NEXT: vand.vx v8, v8, a0
1281 %elt.head = insertelement <16 x i64> poison, i64 %b, i32 0
1282 %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
1283 %v = call <16 x i64> @llvm.vp.and.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> splat (i1 true), i32 %evl)
1287 define <16 x i64> @vand_vi_v16i64(<16 x i64> %va, <16 x i1> %m, i32 zeroext %evl) {
1288 ; CHECK-LABEL: vand_vi_v16i64:
1290 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1291 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
1293 %v = call <16 x i64> @llvm.vp.and.v16i64(<16 x i64> %va, <16 x i64> splat (i64 4), <16 x i1> %m, i32 %evl)
1297 define <16 x i64> @vand_vi_v16i64_unmasked(<16 x i64> %va, i32 zeroext %evl) {
1298 ; CHECK-LABEL: vand_vi_v16i64_unmasked:
1300 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1301 ; CHECK-NEXT: vand.vi v8, v8, 4
1303 %v = call <16 x i64> @llvm.vp.and.v16i64(<16 x i64> %va, <16 x i64> splat (i64 4), <16 x i1> splat (i1 true), i32 %evl)