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.and.nxv8i7(<vscale x 8 x i7>, <vscale x 8 x i7>, <vscale x 8 x i1>, i32)
9 define <vscale x 8 x i7> @vand_vx_nxv8i7(<vscale x 8 x i7> %a, i7 signext %b, <vscale x 8 x i1> %mask, i32 zeroext %evl) {
10 ; CHECK-LABEL: vand_vx_nxv8i7:
12 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
13 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
15 %elt.head = insertelement <vscale x 8 x i7> poison, i7 %b, i32 0
16 %vb = shufflevector <vscale x 8 x i7> %elt.head, <vscale x 8 x i7> poison, <vscale x 8 x i32> zeroinitializer
17 %v = call <vscale x 8 x i7> @llvm.vp.and.nxv8i7(<vscale x 8 x i7> %a, <vscale x 8 x i7> %vb, <vscale x 8 x i1> %mask, i32 %evl)
18 ret <vscale x 8 x i7> %v
21 declare <vscale x 1 x i8> @llvm.vp.and.nxv1i8(<vscale x 1 x i8>, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
23 define <vscale x 1 x i8> @vand_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
24 ; CHECK-LABEL: vand_vv_nxv1i8:
26 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
27 ; CHECK-NEXT: vand.vv v8, v8, v9, v0.t
29 %v = call <vscale x 1 x i8> @llvm.vp.and.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32 %evl)
30 ret <vscale x 1 x i8> %v
33 define <vscale x 1 x i8> @vand_vv_nxv1i8_unmasked(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, i32 zeroext %evl) {
34 ; CHECK-LABEL: vand_vv_nxv1i8_unmasked:
36 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
37 ; CHECK-NEXT: vand.vv v8, v8, v9
39 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
40 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
41 %v = call <vscale x 1 x i8> @llvm.vp.and.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32 %evl)
42 ret <vscale x 1 x i8> %v
45 define <vscale x 1 x i8> @vand_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
46 ; CHECK-LABEL: vand_vx_nxv1i8:
48 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
49 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
51 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
52 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
53 %v = call <vscale x 1 x i8> @llvm.vp.and.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 %evl)
54 ret <vscale x 1 x i8> %v
57 define <vscale x 1 x i8> @vand_vx_nxv1i8_unmasked(<vscale x 1 x i8> %va, i8 %b, i32 zeroext %evl) {
58 ; CHECK-LABEL: vand_vx_nxv1i8_unmasked:
60 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
61 ; CHECK-NEXT: vand.vx v8, v8, a0
63 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
64 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
65 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
66 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
67 %v = call <vscale x 1 x i8> @llvm.vp.and.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 %evl)
68 ret <vscale x 1 x i8> %v
71 define <vscale x 1 x i8> @vand_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
72 ; CHECK-LABEL: vand_vi_nxv1i8:
74 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
75 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
77 %elt.head = insertelement <vscale x 1 x i8> poison, i8 4, i32 0
78 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
79 %v = call <vscale x 1 x i8> @llvm.vp.and.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 %evl)
80 ret <vscale x 1 x i8> %v
83 define <vscale x 1 x i8> @vand_vi_nxv1i8_unmasked(<vscale x 1 x i8> %va, i32 zeroext %evl) {
84 ; CHECK-LABEL: vand_vi_nxv1i8_unmasked:
86 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
87 ; CHECK-NEXT: vand.vi v8, v8, 4
89 %elt.head = insertelement <vscale x 1 x i8> poison, i8 4, i32 0
90 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
91 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
92 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
93 %v = call <vscale x 1 x i8> @llvm.vp.and.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 %evl)
94 ret <vscale x 1 x i8> %v
97 declare <vscale x 2 x i8> @llvm.vp.and.nxv2i8(<vscale x 2 x i8>, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
99 define <vscale x 2 x i8> @vand_vv_nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
100 ; CHECK-LABEL: vand_vv_nxv2i8:
102 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
103 ; CHECK-NEXT: vand.vv v8, v8, v9, v0.t
105 %v = call <vscale x 2 x i8> @llvm.vp.and.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> %m, i32 %evl)
106 ret <vscale x 2 x i8> %v
109 define <vscale x 2 x i8> @vand_vv_nxv2i8_unmasked(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, i32 zeroext %evl) {
110 ; CHECK-LABEL: vand_vv_nxv2i8_unmasked:
112 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
113 ; CHECK-NEXT: vand.vv v8, v8, v9
115 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
116 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
117 %v = call <vscale x 2 x i8> @llvm.vp.and.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> %m, i32 %evl)
118 ret <vscale x 2 x i8> %v
121 define <vscale x 2 x i8> @vand_vx_nxv2i8(<vscale x 2 x i8> %va, i8 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
122 ; CHECK-LABEL: vand_vx_nxv2i8:
124 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
125 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
127 %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0
128 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
129 %v = call <vscale x 2 x i8> @llvm.vp.and.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> %m, i32 %evl)
130 ret <vscale x 2 x i8> %v
133 define <vscale x 2 x i8> @vand_vx_nxv2i8_unmasked(<vscale x 2 x i8> %va, i8 %b, i32 zeroext %evl) {
134 ; CHECK-LABEL: vand_vx_nxv2i8_unmasked:
136 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
137 ; CHECK-NEXT: vand.vx v8, v8, a0
139 %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0
140 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
141 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
142 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
143 %v = call <vscale x 2 x i8> @llvm.vp.and.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> %m, i32 %evl)
144 ret <vscale x 2 x i8> %v
147 define <vscale x 2 x i8> @vand_vi_nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
148 ; CHECK-LABEL: vand_vi_nxv2i8:
150 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
151 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
153 %elt.head = insertelement <vscale x 2 x i8> poison, i8 4, i32 0
154 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
155 %v = call <vscale x 2 x i8> @llvm.vp.and.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> %m, i32 %evl)
156 ret <vscale x 2 x i8> %v
159 define <vscale x 2 x i8> @vand_vi_nxv2i8_unmasked(<vscale x 2 x i8> %va, i32 zeroext %evl) {
160 ; CHECK-LABEL: vand_vi_nxv2i8_unmasked:
162 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
163 ; CHECK-NEXT: vand.vi v8, v8, 4
165 %elt.head = insertelement <vscale x 2 x i8> poison, i8 4, i32 0
166 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
167 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
168 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
169 %v = call <vscale x 2 x i8> @llvm.vp.and.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> %m, i32 %evl)
170 ret <vscale x 2 x i8> %v
173 declare <vscale x 4 x i8> @llvm.vp.and.nxv4i8(<vscale x 4 x i8>, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
175 define <vscale x 4 x i8> @vand_vv_nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
176 ; CHECK-LABEL: vand_vv_nxv4i8:
178 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
179 ; CHECK-NEXT: vand.vv v8, v8, v9, v0.t
181 %v = call <vscale x 4 x i8> @llvm.vp.and.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> %m, i32 %evl)
182 ret <vscale x 4 x i8> %v
185 define <vscale x 4 x i8> @vand_vv_nxv4i8_unmasked(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, i32 zeroext %evl) {
186 ; CHECK-LABEL: vand_vv_nxv4i8_unmasked:
188 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
189 ; CHECK-NEXT: vand.vv v8, v8, v9
191 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
192 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
193 %v = call <vscale x 4 x i8> @llvm.vp.and.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> %m, i32 %evl)
194 ret <vscale x 4 x i8> %v
197 define <vscale x 4 x i8> @vand_vx_nxv4i8(<vscale x 4 x i8> %va, i8 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
198 ; CHECK-LABEL: vand_vx_nxv4i8:
200 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
201 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
203 %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0
204 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
205 %v = call <vscale x 4 x i8> @llvm.vp.and.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> %m, i32 %evl)
206 ret <vscale x 4 x i8> %v
209 define <vscale x 4 x i8> @vand_vx_nxv4i8_unmasked(<vscale x 4 x i8> %va, i8 %b, i32 zeroext %evl) {
210 ; CHECK-LABEL: vand_vx_nxv4i8_unmasked:
212 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
213 ; CHECK-NEXT: vand.vx v8, v8, a0
215 %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0
216 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
217 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
218 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
219 %v = call <vscale x 4 x i8> @llvm.vp.and.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> %m, i32 %evl)
220 ret <vscale x 4 x i8> %v
223 define <vscale x 4 x i8> @vand_vi_nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
224 ; CHECK-LABEL: vand_vi_nxv4i8:
226 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
227 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
229 %elt.head = insertelement <vscale x 4 x i8> poison, i8 4, i32 0
230 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
231 %v = call <vscale x 4 x i8> @llvm.vp.and.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> %m, i32 %evl)
232 ret <vscale x 4 x i8> %v
235 define <vscale x 4 x i8> @vand_vi_nxv4i8_unmasked(<vscale x 4 x i8> %va, i32 zeroext %evl) {
236 ; CHECK-LABEL: vand_vi_nxv4i8_unmasked:
238 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
239 ; CHECK-NEXT: vand.vi v8, v8, 4
241 %elt.head = insertelement <vscale x 4 x i8> poison, i8 4, i32 0
242 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
243 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
244 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
245 %v = call <vscale x 4 x i8> @llvm.vp.and.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> %m, i32 %evl)
246 ret <vscale x 4 x i8> %v
249 declare <vscale x 8 x i8> @llvm.vp.and.nxv8i8(<vscale x 8 x i8>, <vscale x 8 x i8>, <vscale x 8 x i1>, i32)
251 define <vscale x 8 x i8> @vand_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
252 ; CHECK-LABEL: vand_vv_nxv8i8:
254 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
255 ; CHECK-NEXT: vand.vv v8, v8, v9, v0.t
257 %v = call <vscale x 8 x i8> @llvm.vp.and.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> %m, i32 %evl)
258 ret <vscale x 8 x i8> %v
261 define <vscale x 8 x i8> @vand_vv_nxv8i8_unmasked(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, i32 zeroext %evl) {
262 ; CHECK-LABEL: vand_vv_nxv8i8_unmasked:
264 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
265 ; CHECK-NEXT: vand.vv v8, v8, v9
267 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
268 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
269 %v = call <vscale x 8 x i8> @llvm.vp.and.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> %m, i32 %evl)
270 ret <vscale x 8 x i8> %v
273 define <vscale x 8 x i8> @vand_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
274 ; CHECK-LABEL: vand_vx_nxv8i8:
276 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
277 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
279 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
280 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
281 %v = call <vscale x 8 x i8> @llvm.vp.and.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 %evl)
282 ret <vscale x 8 x i8> %v
285 define <vscale x 8 x i8> @vand_vx_nxv8i8_unmasked(<vscale x 8 x i8> %va, i8 %b, i32 zeroext %evl) {
286 ; CHECK-LABEL: vand_vx_nxv8i8_unmasked:
288 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
289 ; CHECK-NEXT: vand.vx v8, v8, a0
291 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
292 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
293 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
294 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
295 %v = call <vscale x 8 x i8> @llvm.vp.and.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 %evl)
296 ret <vscale x 8 x i8> %v
299 define <vscale x 8 x i8> @vand_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
300 ; CHECK-LABEL: vand_vi_nxv8i8:
302 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
303 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
305 %elt.head = insertelement <vscale x 8 x i8> poison, i8 4, i32 0
306 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
307 %v = call <vscale x 8 x i8> @llvm.vp.and.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 %evl)
308 ret <vscale x 8 x i8> %v
311 define <vscale x 8 x i8> @vand_vi_nxv8i8_unmasked(<vscale x 8 x i8> %va, i32 zeroext %evl) {
312 ; CHECK-LABEL: vand_vi_nxv8i8_unmasked:
314 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
315 ; CHECK-NEXT: vand.vi v8, v8, 4
317 %elt.head = insertelement <vscale x 8 x i8> poison, i8 4, i32 0
318 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
319 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
320 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
321 %v = call <vscale x 8 x i8> @llvm.vp.and.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 %evl)
322 ret <vscale x 8 x i8> %v
325 declare <vscale x 16 x i8> @llvm.vp.and.nxv16i8(<vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i1>, i32)
327 define <vscale x 16 x i8> @vand_vv_nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
328 ; CHECK-LABEL: vand_vv_nxv16i8:
330 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
331 ; CHECK-NEXT: vand.vv v8, v8, v10, v0.t
333 %v = call <vscale x 16 x i8> @llvm.vp.and.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> %m, i32 %evl)
334 ret <vscale x 16 x i8> %v
337 define <vscale x 16 x i8> @vand_vv_nxv16i8_unmasked(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, i32 zeroext %evl) {
338 ; CHECK-LABEL: vand_vv_nxv16i8_unmasked:
340 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
341 ; CHECK-NEXT: vand.vv v8, v8, v10
343 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
344 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
345 %v = call <vscale x 16 x i8> @llvm.vp.and.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> %m, i32 %evl)
346 ret <vscale x 16 x i8> %v
349 define <vscale x 16 x i8> @vand_vx_nxv16i8(<vscale x 16 x i8> %va, i8 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
350 ; CHECK-LABEL: vand_vx_nxv16i8:
352 ; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma
353 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
355 %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0
356 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
357 %v = call <vscale x 16 x i8> @llvm.vp.and.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> %m, i32 %evl)
358 ret <vscale x 16 x i8> %v
361 define <vscale x 16 x i8> @vand_vx_nxv16i8_unmasked(<vscale x 16 x i8> %va, i8 %b, i32 zeroext %evl) {
362 ; CHECK-LABEL: vand_vx_nxv16i8_unmasked:
364 ; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma
365 ; CHECK-NEXT: vand.vx v8, v8, a0
367 %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0
368 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
369 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
370 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
371 %v = call <vscale x 16 x i8> @llvm.vp.and.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> %m, i32 %evl)
372 ret <vscale x 16 x i8> %v
375 define <vscale x 16 x i8> @vand_vi_nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
376 ; CHECK-LABEL: vand_vi_nxv16i8:
378 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
379 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
381 %elt.head = insertelement <vscale x 16 x i8> poison, i8 4, i32 0
382 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
383 %v = call <vscale x 16 x i8> @llvm.vp.and.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> %m, i32 %evl)
384 ret <vscale x 16 x i8> %v
387 define <vscale x 16 x i8> @vand_vi_nxv16i8_unmasked(<vscale x 16 x i8> %va, i32 zeroext %evl) {
388 ; CHECK-LABEL: vand_vi_nxv16i8_unmasked:
390 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
391 ; CHECK-NEXT: vand.vi v8, v8, 4
393 %elt.head = insertelement <vscale x 16 x i8> poison, i8 4, i32 0
394 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
395 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
396 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
397 %v = call <vscale x 16 x i8> @llvm.vp.and.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> %m, i32 %evl)
398 ret <vscale x 16 x i8> %v
401 declare <vscale x 32 x i8> @llvm.vp.and.nxv32i8(<vscale x 32 x i8>, <vscale x 32 x i8>, <vscale x 32 x i1>, i32)
403 define <vscale x 32 x i8> @vand_vv_nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
404 ; CHECK-LABEL: vand_vv_nxv32i8:
406 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
407 ; CHECK-NEXT: vand.vv v8, v8, v12, v0.t
409 %v = call <vscale x 32 x i8> @llvm.vp.and.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> %m, i32 %evl)
410 ret <vscale x 32 x i8> %v
413 define <vscale x 32 x i8> @vand_vv_nxv32i8_unmasked(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, i32 zeroext %evl) {
414 ; CHECK-LABEL: vand_vv_nxv32i8_unmasked:
416 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
417 ; CHECK-NEXT: vand.vv v8, v8, v12
419 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
420 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
421 %v = call <vscale x 32 x i8> @llvm.vp.and.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> %m, i32 %evl)
422 ret <vscale x 32 x i8> %v
425 define <vscale x 32 x i8> @vand_vx_nxv32i8(<vscale x 32 x i8> %va, i8 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
426 ; CHECK-LABEL: vand_vx_nxv32i8:
428 ; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma
429 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
431 %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0
432 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
433 %v = call <vscale x 32 x i8> @llvm.vp.and.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> %m, i32 %evl)
434 ret <vscale x 32 x i8> %v
437 define <vscale x 32 x i8> @vand_vx_nxv32i8_unmasked(<vscale x 32 x i8> %va, i8 %b, i32 zeroext %evl) {
438 ; CHECK-LABEL: vand_vx_nxv32i8_unmasked:
440 ; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma
441 ; CHECK-NEXT: vand.vx v8, v8, a0
443 %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0
444 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
445 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
446 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
447 %v = call <vscale x 32 x i8> @llvm.vp.and.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> %m, i32 %evl)
448 ret <vscale x 32 x i8> %v
451 define <vscale x 32 x i8> @vand_vi_nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i1> %m, i32 zeroext %evl) {
452 ; CHECK-LABEL: vand_vi_nxv32i8:
454 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
455 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
457 %elt.head = insertelement <vscale x 32 x i8> poison, i8 4, i32 0
458 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
459 %v = call <vscale x 32 x i8> @llvm.vp.and.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> %m, i32 %evl)
460 ret <vscale x 32 x i8> %v
463 define <vscale x 32 x i8> @vand_vi_nxv32i8_unmasked(<vscale x 32 x i8> %va, i32 zeroext %evl) {
464 ; CHECK-LABEL: vand_vi_nxv32i8_unmasked:
466 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
467 ; CHECK-NEXT: vand.vi v8, v8, 4
469 %elt.head = insertelement <vscale x 32 x i8> poison, i8 4, i32 0
470 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
471 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
472 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
473 %v = call <vscale x 32 x i8> @llvm.vp.and.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> %m, i32 %evl)
474 ret <vscale x 32 x i8> %v
477 declare <vscale x 64 x i8> @llvm.vp.and.nxv64i8(<vscale x 64 x i8>, <vscale x 64 x i8>, <vscale x 64 x i1>, i32)
479 define <vscale x 64 x i8> @vand_vv_nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> %m, i32 zeroext %evl) {
480 ; CHECK-LABEL: vand_vv_nxv64i8:
482 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
483 ; CHECK-NEXT: vand.vv v8, v8, v16, v0.t
485 %v = call <vscale x 64 x i8> @llvm.vp.and.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> %m, i32 %evl)
486 ret <vscale x 64 x i8> %v
489 define <vscale x 64 x i8> @vand_vv_nxv64i8_unmasked(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, i32 zeroext %evl) {
490 ; CHECK-LABEL: vand_vv_nxv64i8_unmasked:
492 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
493 ; CHECK-NEXT: vand.vv v8, v8, v16
495 %head = insertelement <vscale x 64 x i1> poison, i1 true, i32 0
496 %m = shufflevector <vscale x 64 x i1> %head, <vscale x 64 x i1> poison, <vscale x 64 x i32> zeroinitializer
497 %v = call <vscale x 64 x i8> @llvm.vp.and.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> %m, i32 %evl)
498 ret <vscale x 64 x i8> %v
501 define <vscale x 64 x i8> @vand_vx_nxv64i8(<vscale x 64 x i8> %va, i8 %b, <vscale x 64 x i1> %m, i32 zeroext %evl) {
502 ; CHECK-LABEL: vand_vx_nxv64i8:
504 ; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma
505 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
507 %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0
508 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
509 %v = call <vscale x 64 x i8> @llvm.vp.and.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> %m, i32 %evl)
510 ret <vscale x 64 x i8> %v
513 define <vscale x 64 x i8> @vand_vx_nxv64i8_unmasked(<vscale x 64 x i8> %va, i8 %b, i32 zeroext %evl) {
514 ; CHECK-LABEL: vand_vx_nxv64i8_unmasked:
516 ; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma
517 ; CHECK-NEXT: vand.vx v8, v8, a0
519 %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0
520 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
521 %head = insertelement <vscale x 64 x i1> poison, i1 true, i32 0
522 %m = shufflevector <vscale x 64 x i1> %head, <vscale x 64 x i1> poison, <vscale x 64 x i32> zeroinitializer
523 %v = call <vscale x 64 x i8> @llvm.vp.and.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> %m, i32 %evl)
524 ret <vscale x 64 x i8> %v
527 define <vscale x 64 x i8> @vand_vi_nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i1> %m, i32 zeroext %evl) {
528 ; CHECK-LABEL: vand_vi_nxv64i8:
530 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
531 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
533 %elt.head = insertelement <vscale x 64 x i8> poison, i8 4, i32 0
534 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
535 %v = call <vscale x 64 x i8> @llvm.vp.and.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> %m, i32 %evl)
536 ret <vscale x 64 x i8> %v
539 define <vscale x 64 x i8> @vand_vi_nxv64i8_unmasked(<vscale x 64 x i8> %va, i32 zeroext %evl) {
540 ; CHECK-LABEL: vand_vi_nxv64i8_unmasked:
542 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
543 ; CHECK-NEXT: vand.vi v8, v8, 4
545 %elt.head = insertelement <vscale x 64 x i8> poison, i8 4, i32 0
546 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
547 %head = insertelement <vscale x 64 x i1> poison, i1 true, i32 0
548 %m = shufflevector <vscale x 64 x i1> %head, <vscale x 64 x i1> poison, <vscale x 64 x i32> zeroinitializer
549 %v = call <vscale x 64 x i8> @llvm.vp.and.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> %m, i32 %evl)
550 ret <vscale x 64 x i8> %v
553 declare <vscale x 1 x i16> @llvm.vp.and.nxv1i16(<vscale x 1 x i16>, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
555 define <vscale x 1 x i16> @vand_vv_nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
556 ; CHECK-LABEL: vand_vv_nxv1i16:
558 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
559 ; CHECK-NEXT: vand.vv v8, v8, v9, v0.t
561 %v = call <vscale x 1 x i16> @llvm.vp.and.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> %m, i32 %evl)
562 ret <vscale x 1 x i16> %v
565 define <vscale x 1 x i16> @vand_vv_nxv1i16_unmasked(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, i32 zeroext %evl) {
566 ; CHECK-LABEL: vand_vv_nxv1i16_unmasked:
568 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
569 ; CHECK-NEXT: vand.vv v8, v8, v9
571 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
572 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
573 %v = call <vscale x 1 x i16> @llvm.vp.and.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> %m, i32 %evl)
574 ret <vscale x 1 x i16> %v
577 define <vscale x 1 x i16> @vand_vx_nxv1i16(<vscale x 1 x i16> %va, i16 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
578 ; CHECK-LABEL: vand_vx_nxv1i16:
580 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
581 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
583 %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
584 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
585 %v = call <vscale x 1 x i16> @llvm.vp.and.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> %m, i32 %evl)
586 ret <vscale x 1 x i16> %v
589 define <vscale x 1 x i16> @vand_vx_nxv1i16_unmasked(<vscale x 1 x i16> %va, i16 %b, i32 zeroext %evl) {
590 ; CHECK-LABEL: vand_vx_nxv1i16_unmasked:
592 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
593 ; CHECK-NEXT: vand.vx v8, v8, a0
595 %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
596 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
597 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
598 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
599 %v = call <vscale x 1 x i16> @llvm.vp.and.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> %m, i32 %evl)
600 ret <vscale x 1 x i16> %v
603 define <vscale x 1 x i16> @vand_vi_nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
604 ; CHECK-LABEL: vand_vi_nxv1i16:
606 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
607 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
609 %elt.head = insertelement <vscale x 1 x i16> poison, i16 4, i32 0
610 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
611 %v = call <vscale x 1 x i16> @llvm.vp.and.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> %m, i32 %evl)
612 ret <vscale x 1 x i16> %v
615 define <vscale x 1 x i16> @vand_vi_nxv1i16_unmasked(<vscale x 1 x i16> %va, i32 zeroext %evl) {
616 ; CHECK-LABEL: vand_vi_nxv1i16_unmasked:
618 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
619 ; CHECK-NEXT: vand.vi v8, v8, 4
621 %elt.head = insertelement <vscale x 1 x i16> poison, i16 4, i32 0
622 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
623 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
624 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
625 %v = call <vscale x 1 x i16> @llvm.vp.and.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> %m, i32 %evl)
626 ret <vscale x 1 x i16> %v
629 declare <vscale x 2 x i16> @llvm.vp.and.nxv2i16(<vscale x 2 x i16>, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
631 define <vscale x 2 x i16> @vand_vv_nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
632 ; CHECK-LABEL: vand_vv_nxv2i16:
634 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
635 ; CHECK-NEXT: vand.vv v8, v8, v9, v0.t
637 %v = call <vscale x 2 x i16> @llvm.vp.and.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> %m, i32 %evl)
638 ret <vscale x 2 x i16> %v
641 define <vscale x 2 x i16> @vand_vv_nxv2i16_unmasked(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, i32 zeroext %evl) {
642 ; CHECK-LABEL: vand_vv_nxv2i16_unmasked:
644 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
645 ; CHECK-NEXT: vand.vv v8, v8, v9
647 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
648 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
649 %v = call <vscale x 2 x i16> @llvm.vp.and.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> %m, i32 %evl)
650 ret <vscale x 2 x i16> %v
653 define <vscale x 2 x i16> @vand_vx_nxv2i16(<vscale x 2 x i16> %va, i16 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
654 ; CHECK-LABEL: vand_vx_nxv2i16:
656 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
657 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
659 %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0
660 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
661 %v = call <vscale x 2 x i16> @llvm.vp.and.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> %m, i32 %evl)
662 ret <vscale x 2 x i16> %v
665 define <vscale x 2 x i16> @vand_vx_nxv2i16_unmasked(<vscale x 2 x i16> %va, i16 %b, i32 zeroext %evl) {
666 ; CHECK-LABEL: vand_vx_nxv2i16_unmasked:
668 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
669 ; CHECK-NEXT: vand.vx v8, v8, a0
671 %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0
672 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
673 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
674 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
675 %v = call <vscale x 2 x i16> @llvm.vp.and.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> %m, i32 %evl)
676 ret <vscale x 2 x i16> %v
679 define <vscale x 2 x i16> @vand_vi_nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
680 ; CHECK-LABEL: vand_vi_nxv2i16:
682 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
683 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
685 %elt.head = insertelement <vscale x 2 x i16> poison, i16 4, i32 0
686 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
687 %v = call <vscale x 2 x i16> @llvm.vp.and.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> %m, i32 %evl)
688 ret <vscale x 2 x i16> %v
691 define <vscale x 2 x i16> @vand_vi_nxv2i16_unmasked(<vscale x 2 x i16> %va, i32 zeroext %evl) {
692 ; CHECK-LABEL: vand_vi_nxv2i16_unmasked:
694 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
695 ; CHECK-NEXT: vand.vi v8, v8, 4
697 %elt.head = insertelement <vscale x 2 x i16> poison, i16 4, i32 0
698 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
699 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
700 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
701 %v = call <vscale x 2 x i16> @llvm.vp.and.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> %m, i32 %evl)
702 ret <vscale x 2 x i16> %v
705 declare <vscale x 4 x i16> @llvm.vp.and.nxv4i16(<vscale x 4 x i16>, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
707 define <vscale x 4 x i16> @vand_vv_nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
708 ; CHECK-LABEL: vand_vv_nxv4i16:
710 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
711 ; CHECK-NEXT: vand.vv v8, v8, v9, v0.t
713 %v = call <vscale x 4 x i16> @llvm.vp.and.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> %m, i32 %evl)
714 ret <vscale x 4 x i16> %v
717 define <vscale x 4 x i16> @vand_vv_nxv4i16_unmasked(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, i32 zeroext %evl) {
718 ; CHECK-LABEL: vand_vv_nxv4i16_unmasked:
720 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
721 ; CHECK-NEXT: vand.vv v8, v8, v9
723 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
724 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
725 %v = call <vscale x 4 x i16> @llvm.vp.and.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> %m, i32 %evl)
726 ret <vscale x 4 x i16> %v
729 define <vscale x 4 x i16> @vand_vx_nxv4i16(<vscale x 4 x i16> %va, i16 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
730 ; CHECK-LABEL: vand_vx_nxv4i16:
732 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
733 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
735 %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0
736 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
737 %v = call <vscale x 4 x i16> @llvm.vp.and.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> %m, i32 %evl)
738 ret <vscale x 4 x i16> %v
741 define <vscale x 4 x i16> @vand_vx_nxv4i16_unmasked(<vscale x 4 x i16> %va, i16 %b, i32 zeroext %evl) {
742 ; CHECK-LABEL: vand_vx_nxv4i16_unmasked:
744 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
745 ; CHECK-NEXT: vand.vx v8, v8, a0
747 %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0
748 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
749 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
750 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
751 %v = call <vscale x 4 x i16> @llvm.vp.and.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> %m, i32 %evl)
752 ret <vscale x 4 x i16> %v
755 define <vscale x 4 x i16> @vand_vi_nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
756 ; CHECK-LABEL: vand_vi_nxv4i16:
758 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
759 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
761 %elt.head = insertelement <vscale x 4 x i16> poison, i16 4, i32 0
762 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
763 %v = call <vscale x 4 x i16> @llvm.vp.and.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> %m, i32 %evl)
764 ret <vscale x 4 x i16> %v
767 define <vscale x 4 x i16> @vand_vi_nxv4i16_unmasked(<vscale x 4 x i16> %va, i32 zeroext %evl) {
768 ; CHECK-LABEL: vand_vi_nxv4i16_unmasked:
770 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
771 ; CHECK-NEXT: vand.vi v8, v8, 4
773 %elt.head = insertelement <vscale x 4 x i16> poison, i16 4, i32 0
774 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
775 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
776 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
777 %v = call <vscale x 4 x i16> @llvm.vp.and.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> %m, i32 %evl)
778 ret <vscale x 4 x i16> %v
781 declare <vscale x 8 x i16> @llvm.vp.and.nxv8i16(<vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i1>, i32)
783 define <vscale x 8 x i16> @vand_vv_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
784 ; CHECK-LABEL: vand_vv_nxv8i16:
786 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
787 ; CHECK-NEXT: vand.vv v8, v8, v10, v0.t
789 %v = call <vscale x 8 x i16> @llvm.vp.and.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> %m, i32 %evl)
790 ret <vscale x 8 x i16> %v
793 define <vscale x 8 x i16> @vand_vv_nxv8i16_unmasked(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, i32 zeroext %evl) {
794 ; CHECK-LABEL: vand_vv_nxv8i16_unmasked:
796 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
797 ; CHECK-NEXT: vand.vv v8, v8, v10
799 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
800 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
801 %v = call <vscale x 8 x i16> @llvm.vp.and.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> %m, i32 %evl)
802 ret <vscale x 8 x i16> %v
805 define <vscale x 8 x i16> @vand_vx_nxv8i16(<vscale x 8 x i16> %va, i16 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
806 ; CHECK-LABEL: vand_vx_nxv8i16:
808 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
809 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
811 %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0
812 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
813 %v = call <vscale x 8 x i16> @llvm.vp.and.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> %m, i32 %evl)
814 ret <vscale x 8 x i16> %v
817 define <vscale x 8 x i16> @vand_vx_nxv8i16_unmasked(<vscale x 8 x i16> %va, i16 %b, i32 zeroext %evl) {
818 ; CHECK-LABEL: vand_vx_nxv8i16_unmasked:
820 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
821 ; CHECK-NEXT: vand.vx v8, v8, a0
823 %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0
824 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
825 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
826 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
827 %v = call <vscale x 8 x i16> @llvm.vp.and.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> %m, i32 %evl)
828 ret <vscale x 8 x i16> %v
831 define <vscale x 8 x i16> @vand_vi_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
832 ; CHECK-LABEL: vand_vi_nxv8i16:
834 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
835 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
837 %elt.head = insertelement <vscale x 8 x i16> poison, i16 4, i32 0
838 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
839 %v = call <vscale x 8 x i16> @llvm.vp.and.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> %m, i32 %evl)
840 ret <vscale x 8 x i16> %v
843 define <vscale x 8 x i16> @vand_vi_nxv8i16_unmasked(<vscale x 8 x i16> %va, i32 zeroext %evl) {
844 ; CHECK-LABEL: vand_vi_nxv8i16_unmasked:
846 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
847 ; CHECK-NEXT: vand.vi v8, v8, 4
849 %elt.head = insertelement <vscale x 8 x i16> poison, i16 4, i32 0
850 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
851 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
852 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
853 %v = call <vscale x 8 x i16> @llvm.vp.and.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> %m, i32 %evl)
854 ret <vscale x 8 x i16> %v
857 declare <vscale x 14 x i16> @llvm.vp.and.nxv14i16(<vscale x 14 x i16>, <vscale x 14 x i16>, <vscale x 14 x i1>, i32)
859 define <vscale x 14 x i16> @vand_vv_nxv14i16(<vscale x 14 x i16> %va, <vscale x 14 x i16> %b, <vscale x 14 x i1> %m, i32 zeroext %evl) {
860 ; CHECK-LABEL: vand_vv_nxv14i16:
862 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
863 ; CHECK-NEXT: vand.vv v8, v8, v12, v0.t
865 %v = call <vscale x 14 x i16> @llvm.vp.and.nxv14i16(<vscale x 14 x i16> %va, <vscale x 14 x i16> %b, <vscale x 14 x i1> %m, i32 %evl)
866 ret <vscale x 14 x i16> %v
869 define <vscale x 14 x i16> @vand_vv_nxv14i16_unmasked(<vscale x 14 x i16> %va, <vscale x 14 x i16> %b, i32 zeroext %evl) {
870 ; CHECK-LABEL: vand_vv_nxv14i16_unmasked:
872 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
873 ; CHECK-NEXT: vand.vv v8, v8, v12
875 %head = insertelement <vscale x 14 x i1> poison, i1 true, i32 0
876 %m = shufflevector <vscale x 14 x i1> %head, <vscale x 14 x i1> poison, <vscale x 14 x i32> zeroinitializer
877 %v = call <vscale x 14 x i16> @llvm.vp.and.nxv14i16(<vscale x 14 x i16> %va, <vscale x 14 x i16> %b, <vscale x 14 x i1> %m, i32 %evl)
878 ret <vscale x 14 x i16> %v
881 define <vscale x 14 x i16> @vand_vx_nxv14i16(<vscale x 14 x i16> %va, i16 %b, <vscale x 14 x i1> %m, i32 zeroext %evl) {
882 ; CHECK-LABEL: vand_vx_nxv14i16:
884 ; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma
885 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
887 %elt.head = insertelement <vscale x 14 x i16> poison, i16 %b, i32 0
888 %vb = shufflevector <vscale x 14 x i16> %elt.head, <vscale x 14 x i16> poison, <vscale x 14 x i32> zeroinitializer
889 %v = call <vscale x 14 x i16> @llvm.vp.and.nxv14i16(<vscale x 14 x i16> %va, <vscale x 14 x i16> %vb, <vscale x 14 x i1> %m, i32 %evl)
890 ret <vscale x 14 x i16> %v
893 define <vscale x 14 x i16> @vand_vx_nxv14i16_unmasked(<vscale x 14 x i16> %va, i16 %b, i32 zeroext %evl) {
894 ; CHECK-LABEL: vand_vx_nxv14i16_unmasked:
896 ; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma
897 ; CHECK-NEXT: vand.vx v8, v8, a0
899 %elt.head = insertelement <vscale x 14 x i16> poison, i16 %b, i32 0
900 %vb = shufflevector <vscale x 14 x i16> %elt.head, <vscale x 14 x i16> poison, <vscale x 14 x i32> zeroinitializer
901 %head = insertelement <vscale x 14 x i1> poison, i1 true, i32 0
902 %m = shufflevector <vscale x 14 x i1> %head, <vscale x 14 x i1> poison, <vscale x 14 x i32> zeroinitializer
903 %v = call <vscale x 14 x i16> @llvm.vp.and.nxv14i16(<vscale x 14 x i16> %va, <vscale x 14 x i16> %vb, <vscale x 14 x i1> %m, i32 %evl)
904 ret <vscale x 14 x i16> %v
907 define <vscale x 14 x i16> @vand_vi_nxv14i16(<vscale x 14 x i16> %va, <vscale x 14 x i1> %m, i32 zeroext %evl) {
908 ; CHECK-LABEL: vand_vi_nxv14i16:
910 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
911 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
913 %elt.head = insertelement <vscale x 14 x i16> poison, i16 4, i32 0
914 %vb = shufflevector <vscale x 14 x i16> %elt.head, <vscale x 14 x i16> poison, <vscale x 14 x i32> zeroinitializer
915 %v = call <vscale x 14 x i16> @llvm.vp.and.nxv14i16(<vscale x 14 x i16> %va, <vscale x 14 x i16> %vb, <vscale x 14 x i1> %m, i32 %evl)
916 ret <vscale x 14 x i16> %v
919 define <vscale x 14 x i16> @vand_vi_nxv14i16_unmasked(<vscale x 14 x i16> %va, i32 zeroext %evl) {
920 ; CHECK-LABEL: vand_vi_nxv14i16_unmasked:
922 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
923 ; CHECK-NEXT: vand.vi v8, v8, 4
925 %elt.head = insertelement <vscale x 14 x i16> poison, i16 4, i32 0
926 %vb = shufflevector <vscale x 14 x i16> %elt.head, <vscale x 14 x i16> poison, <vscale x 14 x i32> zeroinitializer
927 %head = insertelement <vscale x 14 x i1> poison, i1 true, i32 0
928 %m = shufflevector <vscale x 14 x i1> %head, <vscale x 14 x i1> poison, <vscale x 14 x i32> zeroinitializer
929 %v = call <vscale x 14 x i16> @llvm.vp.and.nxv14i16(<vscale x 14 x i16> %va, <vscale x 14 x i16> %vb, <vscale x 14 x i1> %m, i32 %evl)
930 ret <vscale x 14 x i16> %v
933 declare <vscale x 16 x i16> @llvm.vp.and.nxv16i16(<vscale x 16 x i16>, <vscale x 16 x i16>, <vscale x 16 x i1>, i32)
935 define <vscale x 16 x i16> @vand_vv_nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
936 ; CHECK-LABEL: vand_vv_nxv16i16:
938 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
939 ; CHECK-NEXT: vand.vv v8, v8, v12, v0.t
941 %v = call <vscale x 16 x i16> @llvm.vp.and.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> %m, i32 %evl)
942 ret <vscale x 16 x i16> %v
945 define <vscale x 16 x i16> @vand_vv_nxv16i16_unmasked(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, i32 zeroext %evl) {
946 ; CHECK-LABEL: vand_vv_nxv16i16_unmasked:
948 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
949 ; CHECK-NEXT: vand.vv v8, v8, v12
951 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
952 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
953 %v = call <vscale x 16 x i16> @llvm.vp.and.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> %m, i32 %evl)
954 ret <vscale x 16 x i16> %v
957 define <vscale x 16 x i16> @vand_vx_nxv16i16(<vscale x 16 x i16> %va, i16 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
958 ; CHECK-LABEL: vand_vx_nxv16i16:
960 ; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma
961 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
963 %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0
964 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
965 %v = call <vscale x 16 x i16> @llvm.vp.and.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> %m, i32 %evl)
966 ret <vscale x 16 x i16> %v
969 define <vscale x 16 x i16> @vand_vx_nxv16i16_unmasked(<vscale x 16 x i16> %va, i16 %b, i32 zeroext %evl) {
970 ; CHECK-LABEL: vand_vx_nxv16i16_unmasked:
972 ; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma
973 ; CHECK-NEXT: vand.vx v8, v8, a0
975 %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0
976 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
977 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
978 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
979 %v = call <vscale x 16 x i16> @llvm.vp.and.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> %m, i32 %evl)
980 ret <vscale x 16 x i16> %v
983 define <vscale x 16 x i16> @vand_vi_nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
984 ; CHECK-LABEL: vand_vi_nxv16i16:
986 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
987 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
989 %elt.head = insertelement <vscale x 16 x i16> poison, i16 4, i32 0
990 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
991 %v = call <vscale x 16 x i16> @llvm.vp.and.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> %m, i32 %evl)
992 ret <vscale x 16 x i16> %v
995 define <vscale x 16 x i16> @vand_vi_nxv16i16_unmasked(<vscale x 16 x i16> %va, i32 zeroext %evl) {
996 ; CHECK-LABEL: vand_vi_nxv16i16_unmasked:
998 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
999 ; CHECK-NEXT: vand.vi v8, v8, 4
1001 %elt.head = insertelement <vscale x 16 x i16> poison, i16 4, i32 0
1002 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
1003 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
1004 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
1005 %v = call <vscale x 16 x i16> @llvm.vp.and.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> %m, i32 %evl)
1006 ret <vscale x 16 x i16> %v
1009 declare <vscale x 32 x i16> @llvm.vp.and.nxv32i16(<vscale x 32 x i16>, <vscale x 32 x i16>, <vscale x 32 x i1>, i32)
1011 define <vscale x 32 x i16> @vand_vv_nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
1012 ; CHECK-LABEL: vand_vv_nxv32i16:
1014 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
1015 ; CHECK-NEXT: vand.vv v8, v8, v16, v0.t
1017 %v = call <vscale x 32 x i16> @llvm.vp.and.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> %m, i32 %evl)
1018 ret <vscale x 32 x i16> %v
1021 define <vscale x 32 x i16> @vand_vv_nxv32i16_unmasked(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, i32 zeroext %evl) {
1022 ; CHECK-LABEL: vand_vv_nxv32i16_unmasked:
1024 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
1025 ; CHECK-NEXT: vand.vv v8, v8, v16
1027 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
1028 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
1029 %v = call <vscale x 32 x i16> @llvm.vp.and.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> %m, i32 %evl)
1030 ret <vscale x 32 x i16> %v
1033 define <vscale x 32 x i16> @vand_vx_nxv32i16(<vscale x 32 x i16> %va, i16 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
1034 ; CHECK-LABEL: vand_vx_nxv32i16:
1036 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
1037 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
1039 %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
1040 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
1041 %v = call <vscale x 32 x i16> @llvm.vp.and.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> %m, i32 %evl)
1042 ret <vscale x 32 x i16> %v
1045 define <vscale x 32 x i16> @vand_vx_nxv32i16_commute(<vscale x 32 x i16> %va, i16 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
1046 ; CHECK-LABEL: vand_vx_nxv32i16_commute:
1048 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
1049 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
1051 %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
1052 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
1053 %v = call <vscale x 32 x i16> @llvm.vp.and.nxv32i16(<vscale x 32 x i16> %vb, <vscale x 32 x i16> %va, <vscale x 32 x i1> %m, i32 %evl)
1054 ret <vscale x 32 x i16> %v
1057 define <vscale x 32 x i16> @vand_vx_nxv32i16_unmasked(<vscale x 32 x i16> %va, i16 %b, i32 zeroext %evl) {
1058 ; CHECK-LABEL: vand_vx_nxv32i16_unmasked:
1060 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
1061 ; CHECK-NEXT: vand.vx v8, v8, a0
1063 %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
1064 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
1065 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
1066 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
1067 %v = call <vscale x 32 x i16> @llvm.vp.and.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> %m, i32 %evl)
1068 ret <vscale x 32 x i16> %v
1071 define <vscale x 32 x i16> @vand_vi_nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i1> %m, i32 zeroext %evl) {
1072 ; CHECK-LABEL: vand_vi_nxv32i16:
1074 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
1075 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
1077 %elt.head = insertelement <vscale x 32 x i16> poison, i16 4, i32 0
1078 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
1079 %v = call <vscale x 32 x i16> @llvm.vp.and.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> %m, i32 %evl)
1080 ret <vscale x 32 x i16> %v
1083 define <vscale x 32 x i16> @vand_vi_nxv32i16_unmasked(<vscale x 32 x i16> %va, i32 zeroext %evl) {
1084 ; CHECK-LABEL: vand_vi_nxv32i16_unmasked:
1086 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
1087 ; CHECK-NEXT: vand.vi v8, v8, 4
1089 %elt.head = insertelement <vscale x 32 x i16> poison, i16 4, i32 0
1090 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
1091 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
1092 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
1093 %v = call <vscale x 32 x i16> @llvm.vp.and.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> %m, i32 %evl)
1094 ret <vscale x 32 x i16> %v
1097 declare <vscale x 1 x i32> @llvm.vp.and.nxv1i32(<vscale x 1 x i32>, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
1099 define <vscale x 1 x i32> @vand_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1100 ; CHECK-LABEL: vand_vv_nxv1i32:
1102 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1103 ; CHECK-NEXT: vand.vv v8, v8, v9, v0.t
1105 %v = call <vscale x 1 x i32> @llvm.vp.and.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> %m, i32 %evl)
1106 ret <vscale x 1 x i32> %v
1109 define <vscale x 1 x i32> @vand_vv_nxv1i32_unmasked(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, i32 zeroext %evl) {
1110 ; CHECK-LABEL: vand_vv_nxv1i32_unmasked:
1112 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1113 ; CHECK-NEXT: vand.vv v8, v8, v9
1115 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1116 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1117 %v = call <vscale x 1 x i32> @llvm.vp.and.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> %m, i32 %evl)
1118 ret <vscale x 1 x i32> %v
1121 define <vscale x 1 x i32> @vand_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1122 ; CHECK-LABEL: vand_vx_nxv1i32:
1124 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
1125 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
1127 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1128 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1129 %v = call <vscale x 1 x i32> @llvm.vp.and.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 %evl)
1130 ret <vscale x 1 x i32> %v
1133 define <vscale x 1 x i32> @vand_vx_nxv1i32_unmasked(<vscale x 1 x i32> %va, i32 %b, i32 zeroext %evl) {
1134 ; CHECK-LABEL: vand_vx_nxv1i32_unmasked:
1136 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
1137 ; CHECK-NEXT: vand.vx v8, v8, a0
1139 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1140 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1141 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1142 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1143 %v = call <vscale x 1 x i32> @llvm.vp.and.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 %evl)
1144 ret <vscale x 1 x i32> %v
1147 define <vscale x 1 x i32> @vand_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1148 ; CHECK-LABEL: vand_vi_nxv1i32:
1150 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1151 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
1153 %elt.head = insertelement <vscale x 1 x i32> poison, i32 4, i32 0
1154 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1155 %v = call <vscale x 1 x i32> @llvm.vp.and.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 %evl)
1156 ret <vscale x 1 x i32> %v
1159 define <vscale x 1 x i32> @vand_vi_nxv1i32_unmasked(<vscale x 1 x i32> %va, i32 zeroext %evl) {
1160 ; CHECK-LABEL: vand_vi_nxv1i32_unmasked:
1162 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1163 ; CHECK-NEXT: vand.vi v8, v8, 4
1165 %elt.head = insertelement <vscale x 1 x i32> poison, i32 4, i32 0
1166 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1167 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1168 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1169 %v = call <vscale x 1 x i32> @llvm.vp.and.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 %evl)
1170 ret <vscale x 1 x i32> %v
1173 declare <vscale x 2 x i32> @llvm.vp.and.nxv2i32(<vscale x 2 x i32>, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
1175 define <vscale x 2 x i32> @vand_vv_nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1176 ; CHECK-LABEL: vand_vv_nxv2i32:
1178 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1179 ; CHECK-NEXT: vand.vv v8, v8, v9, v0.t
1181 %v = call <vscale x 2 x i32> @llvm.vp.and.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> %m, i32 %evl)
1182 ret <vscale x 2 x i32> %v
1185 define <vscale x 2 x i32> @vand_vv_nxv2i32_unmasked(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, i32 zeroext %evl) {
1186 ; CHECK-LABEL: vand_vv_nxv2i32_unmasked:
1188 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1189 ; CHECK-NEXT: vand.vv v8, v8, v9
1191 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1192 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1193 %v = call <vscale x 2 x i32> @llvm.vp.and.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> %m, i32 %evl)
1194 ret <vscale x 2 x i32> %v
1197 define <vscale x 2 x i32> @vand_vx_nxv2i32(<vscale x 2 x i32> %va, i32 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1198 ; CHECK-LABEL: vand_vx_nxv2i32:
1200 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
1201 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
1203 %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
1204 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1205 %v = call <vscale x 2 x i32> @llvm.vp.and.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> %m, i32 %evl)
1206 ret <vscale x 2 x i32> %v
1209 define <vscale x 2 x i32> @vand_vx_nxv2i32_unmasked(<vscale x 2 x i32> %va, i32 %b, i32 zeroext %evl) {
1210 ; CHECK-LABEL: vand_vx_nxv2i32_unmasked:
1212 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
1213 ; CHECK-NEXT: vand.vx v8, v8, a0
1215 %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
1216 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1217 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1218 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1219 %v = call <vscale x 2 x i32> @llvm.vp.and.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> %m, i32 %evl)
1220 ret <vscale x 2 x i32> %v
1223 define <vscale x 2 x i32> @vand_vi_nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1224 ; CHECK-LABEL: vand_vi_nxv2i32:
1226 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1227 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
1229 %elt.head = insertelement <vscale x 2 x i32> poison, i32 4, i32 0
1230 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1231 %v = call <vscale x 2 x i32> @llvm.vp.and.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> %m, i32 %evl)
1232 ret <vscale x 2 x i32> %v
1235 define <vscale x 2 x i32> @vand_vi_nxv2i32_unmasked(<vscale x 2 x i32> %va, i32 zeroext %evl) {
1236 ; CHECK-LABEL: vand_vi_nxv2i32_unmasked:
1238 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1239 ; CHECK-NEXT: vand.vi v8, v8, 4
1241 %elt.head = insertelement <vscale x 2 x i32> poison, i32 4, i32 0
1242 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1243 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1244 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1245 %v = call <vscale x 2 x i32> @llvm.vp.and.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> %m, i32 %evl)
1246 ret <vscale x 2 x i32> %v
1249 declare <vscale x 4 x i32> @llvm.vp.and.nxv4i32(<vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
1251 define <vscale x 4 x i32> @vand_vv_nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1252 ; CHECK-LABEL: vand_vv_nxv4i32:
1254 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1255 ; CHECK-NEXT: vand.vv v8, v8, v10, v0.t
1257 %v = call <vscale x 4 x i32> @llvm.vp.and.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> %m, i32 %evl)
1258 ret <vscale x 4 x i32> %v
1261 define <vscale x 4 x i32> @vand_vv_nxv4i32_unmasked(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, i32 zeroext %evl) {
1262 ; CHECK-LABEL: vand_vv_nxv4i32_unmasked:
1264 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1265 ; CHECK-NEXT: vand.vv v8, v8, v10
1267 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1268 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1269 %v = call <vscale x 4 x i32> @llvm.vp.and.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> %m, i32 %evl)
1270 ret <vscale x 4 x i32> %v
1273 define <vscale x 4 x i32> @vand_vx_nxv4i32(<vscale x 4 x i32> %va, i32 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1274 ; CHECK-LABEL: vand_vx_nxv4i32:
1276 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
1277 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
1279 %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
1280 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1281 %v = call <vscale x 4 x i32> @llvm.vp.and.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> %m, i32 %evl)
1282 ret <vscale x 4 x i32> %v
1285 define <vscale x 4 x i32> @vand_vx_nxv4i32_unmasked(<vscale x 4 x i32> %va, i32 %b, i32 zeroext %evl) {
1286 ; CHECK-LABEL: vand_vx_nxv4i32_unmasked:
1288 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
1289 ; CHECK-NEXT: vand.vx v8, v8, a0
1291 %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
1292 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1293 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1294 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1295 %v = call <vscale x 4 x i32> @llvm.vp.and.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> %m, i32 %evl)
1296 ret <vscale x 4 x i32> %v
1299 define <vscale x 4 x i32> @vand_vi_nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1300 ; CHECK-LABEL: vand_vi_nxv4i32:
1302 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1303 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
1305 %elt.head = insertelement <vscale x 4 x i32> poison, i32 4, i32 0
1306 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1307 %v = call <vscale x 4 x i32> @llvm.vp.and.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> %m, i32 %evl)
1308 ret <vscale x 4 x i32> %v
1311 define <vscale x 4 x i32> @vand_vi_nxv4i32_unmasked(<vscale x 4 x i32> %va, i32 zeroext %evl) {
1312 ; CHECK-LABEL: vand_vi_nxv4i32_unmasked:
1314 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1315 ; CHECK-NEXT: vand.vi v8, v8, 4
1317 %elt.head = insertelement <vscale x 4 x i32> poison, i32 4, i32 0
1318 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1319 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1320 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1321 %v = call <vscale x 4 x i32> @llvm.vp.and.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> %m, i32 %evl)
1322 ret <vscale x 4 x i32> %v
1325 declare <vscale x 8 x i32> @llvm.vp.and.nxv8i32(<vscale x 8 x i32>, <vscale x 8 x i32>, <vscale x 8 x i1>, i32)
1327 define <vscale x 8 x i32> @vand_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1328 ; CHECK-LABEL: vand_vv_nxv8i32:
1330 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1331 ; CHECK-NEXT: vand.vv v8, v8, v12, v0.t
1333 %v = call <vscale x 8 x i32> @llvm.vp.and.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> %m, i32 %evl)
1334 ret <vscale x 8 x i32> %v
1337 define <vscale x 8 x i32> @vand_vv_nxv8i32_unmasked(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, i32 zeroext %evl) {
1338 ; CHECK-LABEL: vand_vv_nxv8i32_unmasked:
1340 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1341 ; CHECK-NEXT: vand.vv v8, v8, v12
1343 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1344 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1345 %v = call <vscale x 8 x i32> @llvm.vp.and.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> %m, i32 %evl)
1346 ret <vscale x 8 x i32> %v
1349 define <vscale x 8 x i32> @vand_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1350 ; CHECK-LABEL: vand_vx_nxv8i32:
1352 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
1353 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
1355 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1356 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1357 %v = call <vscale x 8 x i32> @llvm.vp.and.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 %evl)
1358 ret <vscale x 8 x i32> %v
1361 define <vscale x 8 x i32> @vand_vx_nxv8i32_unmasked(<vscale x 8 x i32> %va, i32 %b, i32 zeroext %evl) {
1362 ; CHECK-LABEL: vand_vx_nxv8i32_unmasked:
1364 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
1365 ; CHECK-NEXT: vand.vx v8, v8, a0
1367 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1368 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1369 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1370 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1371 %v = call <vscale x 8 x i32> @llvm.vp.and.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 %evl)
1372 ret <vscale x 8 x i32> %v
1375 define <vscale x 8 x i32> @vand_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1376 ; CHECK-LABEL: vand_vi_nxv8i32:
1378 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1379 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
1381 %elt.head = insertelement <vscale x 8 x i32> poison, i32 4, i32 0
1382 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1383 %v = call <vscale x 8 x i32> @llvm.vp.and.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 %evl)
1384 ret <vscale x 8 x i32> %v
1387 define <vscale x 8 x i32> @vand_vi_nxv8i32_unmasked(<vscale x 8 x i32> %va, i32 zeroext %evl) {
1388 ; CHECK-LABEL: vand_vi_nxv8i32_unmasked:
1390 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1391 ; CHECK-NEXT: vand.vi v8, v8, 4
1393 %elt.head = insertelement <vscale x 8 x i32> poison, i32 4, i32 0
1394 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1395 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1396 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1397 %v = call <vscale x 8 x i32> @llvm.vp.and.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 %evl)
1398 ret <vscale x 8 x i32> %v
1401 declare <vscale x 16 x i32> @llvm.vp.and.nxv16i32(<vscale x 16 x i32>, <vscale x 16 x i32>, <vscale x 16 x i1>, i32)
1403 define <vscale x 16 x i32> @vand_vv_nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1404 ; CHECK-LABEL: vand_vv_nxv16i32:
1406 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1407 ; CHECK-NEXT: vand.vv v8, v8, v16, v0.t
1409 %v = call <vscale x 16 x i32> @llvm.vp.and.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> %m, i32 %evl)
1410 ret <vscale x 16 x i32> %v
1413 define <vscale x 16 x i32> @vand_vv_nxv16i32_unmasked(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, i32 zeroext %evl) {
1414 ; CHECK-LABEL: vand_vv_nxv16i32_unmasked:
1416 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1417 ; CHECK-NEXT: vand.vv v8, v8, v16
1419 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
1420 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
1421 %v = call <vscale x 16 x i32> @llvm.vp.and.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> %m, i32 %evl)
1422 ret <vscale x 16 x i32> %v
1425 define <vscale x 16 x i32> @vand_vx_nxv16i32(<vscale x 16 x i32> %va, i32 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1426 ; CHECK-LABEL: vand_vx_nxv16i32:
1428 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
1429 ; CHECK-NEXT: vand.vx v8, v8, a0, v0.t
1431 %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0
1432 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1433 %v = call <vscale x 16 x i32> @llvm.vp.and.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> %m, i32 %evl)
1434 ret <vscale x 16 x i32> %v
1437 define <vscale x 16 x i32> @vand_vx_nxv16i32_unmasked(<vscale x 16 x i32> %va, i32 %b, i32 zeroext %evl) {
1438 ; CHECK-LABEL: vand_vx_nxv16i32_unmasked:
1440 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
1441 ; CHECK-NEXT: vand.vx v8, v8, a0
1443 %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0
1444 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1445 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
1446 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
1447 %v = call <vscale x 16 x i32> @llvm.vp.and.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> %m, i32 %evl)
1448 ret <vscale x 16 x i32> %v
1451 define <vscale x 16 x i32> @vand_vi_nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1452 ; CHECK-LABEL: vand_vi_nxv16i32:
1454 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1455 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
1457 %elt.head = insertelement <vscale x 16 x i32> poison, i32 4, i32 0
1458 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1459 %v = call <vscale x 16 x i32> @llvm.vp.and.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> %m, i32 %evl)
1460 ret <vscale x 16 x i32> %v
1463 define <vscale x 16 x i32> @vand_vi_nxv16i32_unmasked(<vscale x 16 x i32> %va, i32 zeroext %evl) {
1464 ; CHECK-LABEL: vand_vi_nxv16i32_unmasked:
1466 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1467 ; CHECK-NEXT: vand.vi v8, v8, 4
1469 %elt.head = insertelement <vscale x 16 x i32> poison, i32 4, i32 0
1470 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1471 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
1472 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
1473 %v = call <vscale x 16 x i32> @llvm.vp.and.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> %m, i32 %evl)
1474 ret <vscale x 16 x i32> %v
1477 declare <vscale x 1 x i64> @llvm.vp.and.nxv1i64(<vscale x 1 x i64>, <vscale x 1 x i64>, <vscale x 1 x i1>, i32)
1479 define <vscale x 1 x i64> @vand_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1480 ; CHECK-LABEL: vand_vv_nxv1i64:
1482 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1483 ; CHECK-NEXT: vand.vv v8, v8, v9, v0.t
1485 %v = call <vscale x 1 x i64> @llvm.vp.and.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> %m, i32 %evl)
1486 ret <vscale x 1 x i64> %v
1489 define <vscale x 1 x i64> @vand_vv_nxv1i64_unmasked(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, i32 zeroext %evl) {
1490 ; CHECK-LABEL: vand_vv_nxv1i64_unmasked:
1492 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1493 ; CHECK-NEXT: vand.vv v8, v8, v9
1495 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1496 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1497 %v = call <vscale x 1 x i64> @llvm.vp.and.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> %m, i32 %evl)
1498 ret <vscale x 1 x i64> %v
1501 define <vscale x 1 x i64> @vand_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1502 ; RV32-LABEL: vand_vx_nxv1i64:
1504 ; RV32-NEXT: addi sp, sp, -16
1505 ; RV32-NEXT: .cfi_def_cfa_offset 16
1506 ; RV32-NEXT: sw a1, 12(sp)
1507 ; RV32-NEXT: sw a0, 8(sp)
1508 ; RV32-NEXT: addi a0, sp, 8
1509 ; RV32-NEXT: vsetvli a1, zero, e64, m1, ta, ma
1510 ; RV32-NEXT: vlse64.v v9, (a0), zero
1511 ; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma
1512 ; RV32-NEXT: vand.vv v8, v8, v9, v0.t
1513 ; RV32-NEXT: addi sp, sp, 16
1516 ; RV64-LABEL: vand_vx_nxv1i64:
1518 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
1519 ; RV64-NEXT: vand.vx v8, v8, a0, v0.t
1521 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
1522 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
1523 %v = call <vscale x 1 x i64> @llvm.vp.and.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 %evl)
1524 ret <vscale x 1 x i64> %v
1527 define <vscale x 1 x i64> @vand_vx_nxv1i64_unmasked(<vscale x 1 x i64> %va, i64 %b, i32 zeroext %evl) {
1528 ; RV32-LABEL: vand_vx_nxv1i64_unmasked:
1530 ; RV32-NEXT: addi sp, sp, -16
1531 ; RV32-NEXT: .cfi_def_cfa_offset 16
1532 ; RV32-NEXT: sw a1, 12(sp)
1533 ; RV32-NEXT: sw a0, 8(sp)
1534 ; RV32-NEXT: addi a0, sp, 8
1535 ; RV32-NEXT: vsetvli a1, zero, e64, m1, ta, ma
1536 ; RV32-NEXT: vlse64.v v9, (a0), zero
1537 ; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma
1538 ; RV32-NEXT: vand.vv v8, v8, v9
1539 ; RV32-NEXT: addi sp, sp, 16
1542 ; RV64-LABEL: vand_vx_nxv1i64_unmasked:
1544 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
1545 ; RV64-NEXT: vand.vx v8, v8, a0
1547 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
1548 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
1549 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1550 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1551 %v = call <vscale x 1 x i64> @llvm.vp.and.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 %evl)
1552 ret <vscale x 1 x i64> %v
1555 define <vscale x 1 x i64> @vand_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1556 ; CHECK-LABEL: vand_vi_nxv1i64:
1558 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1559 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
1561 %elt.head = insertelement <vscale x 1 x i64> poison, i64 4, i32 0
1562 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
1563 %v = call <vscale x 1 x i64> @llvm.vp.and.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 %evl)
1564 ret <vscale x 1 x i64> %v
1567 define <vscale x 1 x i64> @vand_vi_nxv1i64_unmasked(<vscale x 1 x i64> %va, i32 zeroext %evl) {
1568 ; CHECK-LABEL: vand_vi_nxv1i64_unmasked:
1570 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1571 ; CHECK-NEXT: vand.vi v8, v8, 4
1573 %elt.head = insertelement <vscale x 1 x i64> poison, i64 4, i32 0
1574 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
1575 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1576 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1577 %v = call <vscale x 1 x i64> @llvm.vp.and.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 %evl)
1578 ret <vscale x 1 x i64> %v
1581 declare <vscale x 2 x i64> @llvm.vp.and.nxv2i64(<vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i1>, i32)
1583 define <vscale x 2 x i64> @vand_vv_nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1584 ; CHECK-LABEL: vand_vv_nxv2i64:
1586 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1587 ; CHECK-NEXT: vand.vv v8, v8, v10, v0.t
1589 %v = call <vscale x 2 x i64> @llvm.vp.and.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> %m, i32 %evl)
1590 ret <vscale x 2 x i64> %v
1593 define <vscale x 2 x i64> @vand_vv_nxv2i64_unmasked(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, i32 zeroext %evl) {
1594 ; CHECK-LABEL: vand_vv_nxv2i64_unmasked:
1596 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1597 ; CHECK-NEXT: vand.vv v8, v8, v10
1599 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1600 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1601 %v = call <vscale x 2 x i64> @llvm.vp.and.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> %m, i32 %evl)
1602 ret <vscale x 2 x i64> %v
1605 define <vscale x 2 x i64> @vand_vx_nxv2i64(<vscale x 2 x i64> %va, i64 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1606 ; RV32-LABEL: vand_vx_nxv2i64:
1608 ; RV32-NEXT: addi sp, sp, -16
1609 ; RV32-NEXT: .cfi_def_cfa_offset 16
1610 ; RV32-NEXT: sw a1, 12(sp)
1611 ; RV32-NEXT: sw a0, 8(sp)
1612 ; RV32-NEXT: addi a0, sp, 8
1613 ; RV32-NEXT: vsetvli a1, zero, e64, m2, ta, ma
1614 ; RV32-NEXT: vlse64.v v10, (a0), zero
1615 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
1616 ; RV32-NEXT: vand.vv v8, v8, v10, v0.t
1617 ; RV32-NEXT: addi sp, sp, 16
1620 ; RV64-LABEL: vand_vx_nxv2i64:
1622 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
1623 ; RV64-NEXT: vand.vx v8, v8, a0, v0.t
1625 %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0
1626 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1627 %v = call <vscale x 2 x i64> @llvm.vp.and.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> %m, i32 %evl)
1628 ret <vscale x 2 x i64> %v
1631 define <vscale x 2 x i64> @vand_vx_nxv2i64_unmasked(<vscale x 2 x i64> %va, i64 %b, i32 zeroext %evl) {
1632 ; RV32-LABEL: vand_vx_nxv2i64_unmasked:
1634 ; RV32-NEXT: addi sp, sp, -16
1635 ; RV32-NEXT: .cfi_def_cfa_offset 16
1636 ; RV32-NEXT: sw a1, 12(sp)
1637 ; RV32-NEXT: sw a0, 8(sp)
1638 ; RV32-NEXT: addi a0, sp, 8
1639 ; RV32-NEXT: vsetvli a1, zero, e64, m2, ta, ma
1640 ; RV32-NEXT: vlse64.v v10, (a0), zero
1641 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
1642 ; RV32-NEXT: vand.vv v8, v8, v10
1643 ; RV32-NEXT: addi sp, sp, 16
1646 ; RV64-LABEL: vand_vx_nxv2i64_unmasked:
1648 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
1649 ; RV64-NEXT: vand.vx v8, v8, a0
1651 %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0
1652 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1653 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1654 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1655 %v = call <vscale x 2 x i64> @llvm.vp.and.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> %m, i32 %evl)
1656 ret <vscale x 2 x i64> %v
1659 define <vscale x 2 x i64> @vand_vi_nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1660 ; CHECK-LABEL: vand_vi_nxv2i64:
1662 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1663 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
1665 %elt.head = insertelement <vscale x 2 x i64> poison, i64 4, i32 0
1666 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1667 %v = call <vscale x 2 x i64> @llvm.vp.and.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> %m, i32 %evl)
1668 ret <vscale x 2 x i64> %v
1671 define <vscale x 2 x i64> @vand_vi_nxv2i64_unmasked(<vscale x 2 x i64> %va, i32 zeroext %evl) {
1672 ; CHECK-LABEL: vand_vi_nxv2i64_unmasked:
1674 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1675 ; CHECK-NEXT: vand.vi v8, v8, 4
1677 %elt.head = insertelement <vscale x 2 x i64> poison, i64 4, i32 0
1678 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1679 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1680 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1681 %v = call <vscale x 2 x i64> @llvm.vp.and.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> %m, i32 %evl)
1682 ret <vscale x 2 x i64> %v
1685 declare <vscale x 4 x i64> @llvm.vp.and.nxv4i64(<vscale x 4 x i64>, <vscale x 4 x i64>, <vscale x 4 x i1>, i32)
1687 define <vscale x 4 x i64> @vand_vv_nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1688 ; CHECK-LABEL: vand_vv_nxv4i64:
1690 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1691 ; CHECK-NEXT: vand.vv v8, v8, v12, v0.t
1693 %v = call <vscale x 4 x i64> @llvm.vp.and.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> %m, i32 %evl)
1694 ret <vscale x 4 x i64> %v
1697 define <vscale x 4 x i64> @vand_vv_nxv4i64_unmasked(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, i32 zeroext %evl) {
1698 ; CHECK-LABEL: vand_vv_nxv4i64_unmasked:
1700 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1701 ; CHECK-NEXT: vand.vv v8, v8, v12
1703 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1704 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1705 %v = call <vscale x 4 x i64> @llvm.vp.and.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> %m, i32 %evl)
1706 ret <vscale x 4 x i64> %v
1709 define <vscale x 4 x i64> @vand_vx_nxv4i64(<vscale x 4 x i64> %va, i64 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1710 ; RV32-LABEL: vand_vx_nxv4i64:
1712 ; RV32-NEXT: addi sp, sp, -16
1713 ; RV32-NEXT: .cfi_def_cfa_offset 16
1714 ; RV32-NEXT: sw a1, 12(sp)
1715 ; RV32-NEXT: sw a0, 8(sp)
1716 ; RV32-NEXT: addi a0, sp, 8
1717 ; RV32-NEXT: vsetvli a1, zero, e64, m4, ta, ma
1718 ; RV32-NEXT: vlse64.v v12, (a0), zero
1719 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
1720 ; RV32-NEXT: vand.vv v8, v8, v12, v0.t
1721 ; RV32-NEXT: addi sp, sp, 16
1724 ; RV64-LABEL: vand_vx_nxv4i64:
1726 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
1727 ; RV64-NEXT: vand.vx v8, v8, a0, v0.t
1729 %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0
1730 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1731 %v = call <vscale x 4 x i64> @llvm.vp.and.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> %m, i32 %evl)
1732 ret <vscale x 4 x i64> %v
1735 define <vscale x 4 x i64> @vand_vx_nxv4i64_unmasked(<vscale x 4 x i64> %va, i64 %b, i32 zeroext %evl) {
1736 ; RV32-LABEL: vand_vx_nxv4i64_unmasked:
1738 ; RV32-NEXT: addi sp, sp, -16
1739 ; RV32-NEXT: .cfi_def_cfa_offset 16
1740 ; RV32-NEXT: sw a1, 12(sp)
1741 ; RV32-NEXT: sw a0, 8(sp)
1742 ; RV32-NEXT: addi a0, sp, 8
1743 ; RV32-NEXT: vsetvli a1, zero, e64, m4, ta, ma
1744 ; RV32-NEXT: vlse64.v v12, (a0), zero
1745 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
1746 ; RV32-NEXT: vand.vv v8, v8, v12
1747 ; RV32-NEXT: addi sp, sp, 16
1750 ; RV64-LABEL: vand_vx_nxv4i64_unmasked:
1752 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
1753 ; RV64-NEXT: vand.vx v8, v8, a0
1755 %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0
1756 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1757 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1758 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1759 %v = call <vscale x 4 x i64> @llvm.vp.and.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> %m, i32 %evl)
1760 ret <vscale x 4 x i64> %v
1763 define <vscale x 4 x i64> @vand_vi_nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1764 ; CHECK-LABEL: vand_vi_nxv4i64:
1766 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1767 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
1769 %elt.head = insertelement <vscale x 4 x i64> poison, i64 4, i32 0
1770 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1771 %v = call <vscale x 4 x i64> @llvm.vp.and.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> %m, i32 %evl)
1772 ret <vscale x 4 x i64> %v
1775 define <vscale x 4 x i64> @vand_vi_nxv4i64_unmasked(<vscale x 4 x i64> %va, i32 zeroext %evl) {
1776 ; CHECK-LABEL: vand_vi_nxv4i64_unmasked:
1778 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1779 ; CHECK-NEXT: vand.vi v8, v8, 4
1781 %elt.head = insertelement <vscale x 4 x i64> poison, i64 4, i32 0
1782 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1783 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1784 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1785 %v = call <vscale x 4 x i64> @llvm.vp.and.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> %m, i32 %evl)
1786 ret <vscale x 4 x i64> %v
1789 declare <vscale x 8 x i64> @llvm.vp.and.nxv8i64(<vscale x 8 x i64>, <vscale x 8 x i64>, <vscale x 8 x i1>, i32)
1791 define <vscale x 8 x i64> @vand_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1792 ; CHECK-LABEL: vand_vv_nxv8i64:
1794 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1795 ; CHECK-NEXT: vand.vv v8, v8, v16, v0.t
1797 %v = call <vscale x 8 x i64> @llvm.vp.and.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> %m, i32 %evl)
1798 ret <vscale x 8 x i64> %v
1801 define <vscale x 8 x i64> @vand_vv_nxv8i64_unmasked(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, i32 zeroext %evl) {
1802 ; CHECK-LABEL: vand_vv_nxv8i64_unmasked:
1804 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1805 ; CHECK-NEXT: vand.vv v8, v8, v16
1807 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1808 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1809 %v = call <vscale x 8 x i64> @llvm.vp.and.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> %m, i32 %evl)
1810 ret <vscale x 8 x i64> %v
1813 define <vscale x 8 x i64> @vand_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1814 ; RV32-LABEL: vand_vx_nxv8i64:
1816 ; RV32-NEXT: addi sp, sp, -16
1817 ; RV32-NEXT: .cfi_def_cfa_offset 16
1818 ; RV32-NEXT: sw a1, 12(sp)
1819 ; RV32-NEXT: sw a0, 8(sp)
1820 ; RV32-NEXT: addi a0, sp, 8
1821 ; RV32-NEXT: vsetvli a1, zero, e64, m8, ta, ma
1822 ; RV32-NEXT: vlse64.v v16, (a0), zero
1823 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
1824 ; RV32-NEXT: vand.vv v8, v8, v16, v0.t
1825 ; RV32-NEXT: addi sp, sp, 16
1828 ; RV64-LABEL: vand_vx_nxv8i64:
1830 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1831 ; RV64-NEXT: vand.vx v8, v8, a0, v0.t
1833 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
1834 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1835 %v = call <vscale x 8 x i64> @llvm.vp.and.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 %evl)
1836 ret <vscale x 8 x i64> %v
1839 define <vscale x 8 x i64> @vand_vx_nxv8i64_unmasked(<vscale x 8 x i64> %va, i64 %b, i32 zeroext %evl) {
1840 ; RV32-LABEL: vand_vx_nxv8i64_unmasked:
1842 ; RV32-NEXT: addi sp, sp, -16
1843 ; RV32-NEXT: .cfi_def_cfa_offset 16
1844 ; RV32-NEXT: sw a1, 12(sp)
1845 ; RV32-NEXT: sw a0, 8(sp)
1846 ; RV32-NEXT: addi a0, sp, 8
1847 ; RV32-NEXT: vsetvli a1, zero, e64, m8, ta, ma
1848 ; RV32-NEXT: vlse64.v v16, (a0), zero
1849 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
1850 ; RV32-NEXT: vand.vv v8, v8, v16
1851 ; RV32-NEXT: addi sp, sp, 16
1854 ; RV64-LABEL: vand_vx_nxv8i64_unmasked:
1856 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1857 ; RV64-NEXT: vand.vx v8, v8, a0
1859 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
1860 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1861 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1862 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1863 %v = call <vscale x 8 x i64> @llvm.vp.and.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 %evl)
1864 ret <vscale x 8 x i64> %v
1867 define <vscale x 8 x i64> @vand_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1868 ; CHECK-LABEL: vand_vi_nxv8i64:
1870 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1871 ; CHECK-NEXT: vand.vi v8, v8, 4, v0.t
1873 %elt.head = insertelement <vscale x 8 x i64> poison, i64 4, i32 0
1874 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1875 %v = call <vscale x 8 x i64> @llvm.vp.and.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 %evl)
1876 ret <vscale x 8 x i64> %v
1879 define <vscale x 8 x i64> @vand_vi_nxv8i64_unmasked(<vscale x 8 x i64> %va, i32 zeroext %evl) {
1880 ; CHECK-LABEL: vand_vi_nxv8i64_unmasked:
1882 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1883 ; CHECK-NEXT: vand.vi v8, v8, 4
1885 %elt.head = insertelement <vscale x 8 x i64> poison, i64 4, i32 0
1886 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1887 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1888 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1889 %v = call <vscale x 8 x i64> @llvm.vp.and.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 %evl)
1890 ret <vscale x 8 x i64> %v