1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s | FileCheck %s
3 ; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s | FileCheck %s
5 declare <1 x i1> @llvm.vp.and.v1i1(<1 x i1>, <1 x i1>, <1 x i1>, i32)
7 define <1 x i1> @and_v1i1(<1 x i1> %b, <1 x i1> %c, <1 x i1> %a, i32 zeroext %evl) {
8 ; CHECK-LABEL: and_v1i1:
10 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
11 ; CHECK-NEXT: vmand.mm v0, v0, v8
13 %v = call <1 x i1> @llvm.vp.and.v1i1(<1 x i1> %b, <1 x i1> %c, <1 x i1> %a, i32 %evl)
17 declare <2 x i1> @llvm.vp.and.v2i1(<2 x i1>, <2 x i1>, <2 x i1>, i32)
19 define <2 x i1> @and_v2i1(<2 x i1> %b, <2 x i1> %c, <2 x i1> %a, i32 zeroext %evl) {
20 ; CHECK-LABEL: and_v2i1:
22 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
23 ; CHECK-NEXT: vmand.mm v0, v0, v8
25 %v = call <2 x i1> @llvm.vp.and.v2i1(<2 x i1> %b, <2 x i1> %c, <2 x i1> %a, i32 %evl)
29 declare <4 x i1> @llvm.vp.and.v4i1(<4 x i1>, <4 x i1>, <4 x i1>, i32)
31 define <4 x i1> @and_v4i1(<4 x i1> %b, <4 x i1> %c, <4 x i1> %a, i32 zeroext %evl) {
32 ; CHECK-LABEL: and_v4i1:
34 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
35 ; CHECK-NEXT: vmand.mm v0, v0, v8
37 %v = call <4 x i1> @llvm.vp.and.v4i1(<4 x i1> %b, <4 x i1> %c, <4 x i1> %a, i32 %evl)
41 declare <8 x i1> @llvm.vp.and.v8i1(<8 x i1>, <8 x i1>, <8 x i1>, i32)
43 define <8 x i1> @and_v8i1(<8 x i1> %b, <8 x i1> %c, <8 x i1> %a, i32 zeroext %evl) {
44 ; CHECK-LABEL: and_v8i1:
46 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
47 ; CHECK-NEXT: vmand.mm v0, v0, v8
49 %v = call <8 x i1> @llvm.vp.and.v8i1(<8 x i1> %b, <8 x i1> %c, <8 x i1> %a, i32 %evl)
53 declare <16 x i1> @llvm.vp.and.v16i1(<16 x i1>, <16 x i1>, <16 x i1>, i32)
55 define <16 x i1> @and_v16i1(<16 x i1> %b, <16 x i1> %c, <16 x i1> %a, i32 zeroext %evl) {
56 ; CHECK-LABEL: and_v16i1:
58 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
59 ; CHECK-NEXT: vmand.mm v0, v0, v8
61 %v = call <16 x i1> @llvm.vp.and.v16i1(<16 x i1> %b, <16 x i1> %c, <16 x i1> %a, i32 %evl)
65 declare <vscale x 1 x i1> @llvm.vp.and.nxv1i1(<vscale x 1 x i1>, <vscale x 1 x i1>, <vscale x 1 x i1>, i32)
67 define <vscale x 1 x i1> @and_nxv1i1(<vscale x 1 x i1> %b, <vscale x 1 x i1> %c, <vscale x 1 x i1> %a, i32 zeroext %evl) {
68 ; CHECK-LABEL: and_nxv1i1:
70 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
71 ; CHECK-NEXT: vmand.mm v0, v0, v8
73 %v = call <vscale x 1 x i1> @llvm.vp.and.nxv1i1(<vscale x 1 x i1> %b, <vscale x 1 x i1> %c, <vscale x 1 x i1> %a, i32 %evl)
74 ret <vscale x 1 x i1> %v
77 declare <vscale x 2 x i1> @llvm.vp.and.nxv2i1(<vscale x 2 x i1>, <vscale x 2 x i1>, <vscale x 2 x i1>, i32)
79 define <vscale x 2 x i1> @and_nxv2i1(<vscale x 2 x i1> %b, <vscale x 2 x i1> %c, <vscale x 2 x i1> %a, i32 zeroext %evl) {
80 ; CHECK-LABEL: and_nxv2i1:
82 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
83 ; CHECK-NEXT: vmand.mm v0, v0, v8
85 %v = call <vscale x 2 x i1> @llvm.vp.and.nxv2i1(<vscale x 2 x i1> %b, <vscale x 2 x i1> %c, <vscale x 2 x i1> %a, i32 %evl)
86 ret <vscale x 2 x i1> %v
89 declare <vscale x 4 x i1> @llvm.vp.and.nxv4i1(<vscale x 4 x i1>, <vscale x 4 x i1>, <vscale x 4 x i1>, i32)
91 define <vscale x 4 x i1> @and_nxv4i1(<vscale x 4 x i1> %b, <vscale x 4 x i1> %c, <vscale x 4 x i1> %a, i32 zeroext %evl) {
92 ; CHECK-LABEL: and_nxv4i1:
94 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
95 ; CHECK-NEXT: vmand.mm v0, v0, v8
97 %v = call <vscale x 4 x i1> @llvm.vp.and.nxv4i1(<vscale x 4 x i1> %b, <vscale x 4 x i1> %c, <vscale x 4 x i1> %a, i32 %evl)
98 ret <vscale x 4 x i1> %v
101 declare <vscale x 8 x i1> @llvm.vp.and.nxv8i1(<vscale x 8 x i1>, <vscale x 8 x i1>, <vscale x 8 x i1>, i32)
103 define <vscale x 8 x i1> @and_nxv8i1(<vscale x 8 x i1> %b, <vscale x 8 x i1> %c, <vscale x 8 x i1> %a, i32 zeroext %evl) {
104 ; CHECK-LABEL: and_nxv8i1:
106 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
107 ; CHECK-NEXT: vmand.mm v0, v0, v8
109 %v = call <vscale x 8 x i1> @llvm.vp.and.nxv8i1(<vscale x 8 x i1> %b, <vscale x 8 x i1> %c, <vscale x 8 x i1> %a, i32 %evl)
110 ret <vscale x 8 x i1> %v
113 declare <vscale x 16 x i1> @llvm.vp.and.nxv16i1(<vscale x 16 x i1>, <vscale x 16 x i1>, <vscale x 16 x i1>, i32)
115 define <vscale x 16 x i1> @and_nxv16i1(<vscale x 16 x i1> %b, <vscale x 16 x i1> %c, <vscale x 16 x i1> %a, i32 zeroext %evl) {
116 ; CHECK-LABEL: and_nxv16i1:
118 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
119 ; CHECK-NEXT: vmand.mm v0, v0, v8
121 %v = call <vscale x 16 x i1> @llvm.vp.and.nxv16i1(<vscale x 16 x i1> %b, <vscale x 16 x i1> %c, <vscale x 16 x i1> %a, i32 %evl)
122 ret <vscale x 16 x i1> %v
125 declare <vscale x 32 x i1> @llvm.vp.and.nxv32i1(<vscale x 32 x i1>, <vscale x 32 x i1>, <vscale x 32 x i1>, i32)
127 define <vscale x 32 x i1> @and_nxv32i1(<vscale x 32 x i1> %b, <vscale x 32 x i1> %c, <vscale x 32 x i1> %a, i32 zeroext %evl) {
128 ; CHECK-LABEL: and_nxv32i1:
130 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
131 ; CHECK-NEXT: vmand.mm v0, v0, v8
133 %v = call <vscale x 32 x i1> @llvm.vp.and.nxv32i1(<vscale x 32 x i1> %b, <vscale x 32 x i1> %c, <vscale x 32 x i1> %a, i32 %evl)
134 ret <vscale x 32 x i1> %v
137 declare <vscale x 64 x i1> @llvm.vp.and.nxv64i1(<vscale x 64 x i1>, <vscale x 64 x i1>, <vscale x 64 x i1>, i32)
139 define <vscale x 64 x i1> @and_nxv64i1(<vscale x 64 x i1> %b, <vscale x 64 x i1> %c, <vscale x 64 x i1> %a, i32 zeroext %evl) {
140 ; CHECK-LABEL: and_nxv64i1:
142 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
143 ; CHECK-NEXT: vmand.mm v0, v0, v8
145 %v = call <vscale x 64 x i1> @llvm.vp.and.nxv64i1(<vscale x 64 x i1> %b, <vscale x 64 x i1> %c, <vscale x 64 x i1> %a, i32 %evl)
146 ret <vscale x 64 x i1> %v
149 declare <1 x i1> @llvm.vp.or.v1i1(<1 x i1>, <1 x i1>, <1 x i1>, i32)
151 define <1 x i1> @or_v1i1(<1 x i1> %b, <1 x i1> %c, <1 x i1> %a, i32 zeroext %evl) {
152 ; CHECK-LABEL: or_v1i1:
154 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
155 ; CHECK-NEXT: vmor.mm v0, v0, v8
157 %v = call <1 x i1> @llvm.vp.or.v1i1(<1 x i1> %b, <1 x i1> %c, <1 x i1> %a, i32 %evl)
161 declare <2 x i1> @llvm.vp.or.v2i1(<2 x i1>, <2 x i1>, <2 x i1>, i32)
163 define <2 x i1> @or_v2i1(<2 x i1> %b, <2 x i1> %c, <2 x i1> %a, i32 zeroext %evl) {
164 ; CHECK-LABEL: or_v2i1:
166 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
167 ; CHECK-NEXT: vmor.mm v0, v0, v8
169 %v = call <2 x i1> @llvm.vp.or.v2i1(<2 x i1> %b, <2 x i1> %c, <2 x i1> %a, i32 %evl)
173 declare <4 x i1> @llvm.vp.or.v4i1(<4 x i1>, <4 x i1>, <4 x i1>, i32)
175 define <4 x i1> @or_v4i1(<4 x i1> %b, <4 x i1> %c, <4 x i1> %a, i32 zeroext %evl) {
176 ; CHECK-LABEL: or_v4i1:
178 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
179 ; CHECK-NEXT: vmor.mm v0, v0, v8
181 %v = call <4 x i1> @llvm.vp.or.v4i1(<4 x i1> %b, <4 x i1> %c, <4 x i1> %a, i32 %evl)
185 declare <8 x i1> @llvm.vp.or.v8i1(<8 x i1>, <8 x i1>, <8 x i1>, i32)
187 define <8 x i1> @or_v8i1(<8 x i1> %b, <8 x i1> %c, <8 x i1> %a, i32 zeroext %evl) {
188 ; CHECK-LABEL: or_v8i1:
190 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
191 ; CHECK-NEXT: vmor.mm v0, v0, v8
193 %v = call <8 x i1> @llvm.vp.or.v8i1(<8 x i1> %b, <8 x i1> %c, <8 x i1> %a, i32 %evl)
197 declare <16 x i1> @llvm.vp.or.v16i1(<16 x i1>, <16 x i1>, <16 x i1>, i32)
199 define <16 x i1> @or_v16i1(<16 x i1> %b, <16 x i1> %c, <16 x i1> %a, i32 zeroext %evl) {
200 ; CHECK-LABEL: or_v16i1:
202 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
203 ; CHECK-NEXT: vmor.mm v0, v0, v8
205 %v = call <16 x i1> @llvm.vp.or.v16i1(<16 x i1> %b, <16 x i1> %c, <16 x i1> %a, i32 %evl)
209 declare <vscale x 1 x i1> @llvm.vp.or.nxv1i1(<vscale x 1 x i1>, <vscale x 1 x i1>, <vscale x 1 x i1>, i32)
211 define <vscale x 1 x i1> @or_nxv1i1(<vscale x 1 x i1> %b, <vscale x 1 x i1> %c, <vscale x 1 x i1> %a, i32 zeroext %evl) {
212 ; CHECK-LABEL: or_nxv1i1:
214 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
215 ; CHECK-NEXT: vmor.mm v0, v0, v8
217 %v = call <vscale x 1 x i1> @llvm.vp.or.nxv1i1(<vscale x 1 x i1> %b, <vscale x 1 x i1> %c, <vscale x 1 x i1> %a, i32 %evl)
218 ret <vscale x 1 x i1> %v
221 declare <vscale x 2 x i1> @llvm.vp.or.nxv2i1(<vscale x 2 x i1>, <vscale x 2 x i1>, <vscale x 2 x i1>, i32)
223 define <vscale x 2 x i1> @or_nxv2i1(<vscale x 2 x i1> %b, <vscale x 2 x i1> %c, <vscale x 2 x i1> %a, i32 zeroext %evl) {
224 ; CHECK-LABEL: or_nxv2i1:
226 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
227 ; CHECK-NEXT: vmor.mm v0, v0, v8
229 %v = call <vscale x 2 x i1> @llvm.vp.or.nxv2i1(<vscale x 2 x i1> %b, <vscale x 2 x i1> %c, <vscale x 2 x i1> %a, i32 %evl)
230 ret <vscale x 2 x i1> %v
233 declare <vscale x 4 x i1> @llvm.vp.or.nxv4i1(<vscale x 4 x i1>, <vscale x 4 x i1>, <vscale x 4 x i1>, i32)
235 define <vscale x 4 x i1> @or_nxv4i1(<vscale x 4 x i1> %b, <vscale x 4 x i1> %c, <vscale x 4 x i1> %a, i32 zeroext %evl) {
236 ; CHECK-LABEL: or_nxv4i1:
238 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
239 ; CHECK-NEXT: vmor.mm v0, v0, v8
241 %v = call <vscale x 4 x i1> @llvm.vp.or.nxv4i1(<vscale x 4 x i1> %b, <vscale x 4 x i1> %c, <vscale x 4 x i1> %a, i32 %evl)
242 ret <vscale x 4 x i1> %v
245 declare <vscale x 8 x i1> @llvm.vp.or.nxv8i1(<vscale x 8 x i1>, <vscale x 8 x i1>, <vscale x 8 x i1>, i32)
247 define <vscale x 8 x i1> @or_nxv8i1(<vscale x 8 x i1> %b, <vscale x 8 x i1> %c, <vscale x 8 x i1> %a, i32 zeroext %evl) {
248 ; CHECK-LABEL: or_nxv8i1:
250 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
251 ; CHECK-NEXT: vmor.mm v0, v0, v8
253 %v = call <vscale x 8 x i1> @llvm.vp.or.nxv8i1(<vscale x 8 x i1> %b, <vscale x 8 x i1> %c, <vscale x 8 x i1> %a, i32 %evl)
254 ret <vscale x 8 x i1> %v
257 declare <vscale x 16 x i1> @llvm.vp.or.nxv16i1(<vscale x 16 x i1>, <vscale x 16 x i1>, <vscale x 16 x i1>, i32)
259 define <vscale x 16 x i1> @or_nxv16i1(<vscale x 16 x i1> %b, <vscale x 16 x i1> %c, <vscale x 16 x i1> %a, i32 zeroext %evl) {
260 ; CHECK-LABEL: or_nxv16i1:
262 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
263 ; CHECK-NEXT: vmor.mm v0, v0, v8
265 %v = call <vscale x 16 x i1> @llvm.vp.or.nxv16i1(<vscale x 16 x i1> %b, <vscale x 16 x i1> %c, <vscale x 16 x i1> %a, i32 %evl)
266 ret <vscale x 16 x i1> %v
269 declare <vscale x 32 x i1> @llvm.vp.or.nxv32i1(<vscale x 32 x i1>, <vscale x 32 x i1>, <vscale x 32 x i1>, i32)
271 define <vscale x 32 x i1> @or_nxv32i1(<vscale x 32 x i1> %b, <vscale x 32 x i1> %c, <vscale x 32 x i1> %a, i32 zeroext %evl) {
272 ; CHECK-LABEL: or_nxv32i1:
274 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
275 ; CHECK-NEXT: vmor.mm v0, v0, v8
277 %v = call <vscale x 32 x i1> @llvm.vp.or.nxv32i1(<vscale x 32 x i1> %b, <vscale x 32 x i1> %c, <vscale x 32 x i1> %a, i32 %evl)
278 ret <vscale x 32 x i1> %v
281 declare <vscale x 64 x i1> @llvm.vp.or.nxv64i1(<vscale x 64 x i1>, <vscale x 64 x i1>, <vscale x 64 x i1>, i32)
283 define <vscale x 64 x i1> @or_nxv64i1(<vscale x 64 x i1> %b, <vscale x 64 x i1> %c, <vscale x 64 x i1> %a, i32 zeroext %evl) {
284 ; CHECK-LABEL: or_nxv64i1:
286 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
287 ; CHECK-NEXT: vmor.mm v0, v0, v8
289 %v = call <vscale x 64 x i1> @llvm.vp.or.nxv64i1(<vscale x 64 x i1> %b, <vscale x 64 x i1> %c, <vscale x 64 x i1> %a, i32 %evl)
290 ret <vscale x 64 x i1> %v
293 declare <1 x i1> @llvm.vp.xor.v1i1(<1 x i1>, <1 x i1>, <1 x i1>, i32)
295 define <1 x i1> @xor_v1i1(<1 x i1> %b, <1 x i1> %c, <1 x i1> %a, i32 zeroext %evl) {
296 ; CHECK-LABEL: xor_v1i1:
298 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
299 ; CHECK-NEXT: vmxor.mm v0, v0, v8
301 %v = call <1 x i1> @llvm.vp.xor.v1i1(<1 x i1> %b, <1 x i1> %c, <1 x i1> %a, i32 %evl)
305 declare <2 x i1> @llvm.vp.xor.v2i1(<2 x i1>, <2 x i1>, <2 x i1>, i32)
307 define <2 x i1> @xor_v2i1(<2 x i1> %b, <2 x i1> %c, <2 x i1> %a, i32 zeroext %evl) {
308 ; CHECK-LABEL: xor_v2i1:
310 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
311 ; CHECK-NEXT: vmxor.mm v0, v0, v8
313 %v = call <2 x i1> @llvm.vp.xor.v2i1(<2 x i1> %b, <2 x i1> %c, <2 x i1> %a, i32 %evl)
317 declare <4 x i1> @llvm.vp.xor.v4i1(<4 x i1>, <4 x i1>, <4 x i1>, i32)
319 define <4 x i1> @xor_v4i1(<4 x i1> %b, <4 x i1> %c, <4 x i1> %a, i32 zeroext %evl) {
320 ; CHECK-LABEL: xor_v4i1:
322 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
323 ; CHECK-NEXT: vmxor.mm v0, v0, v8
325 %v = call <4 x i1> @llvm.vp.xor.v4i1(<4 x i1> %b, <4 x i1> %c, <4 x i1> %a, i32 %evl)
329 declare <8 x i1> @llvm.vp.xor.v8i1(<8 x i1>, <8 x i1>, <8 x i1>, i32)
331 define <8 x i1> @xor_v8i1(<8 x i1> %b, <8 x i1> %c, <8 x i1> %a, i32 zeroext %evl) {
332 ; CHECK-LABEL: xor_v8i1:
334 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
335 ; CHECK-NEXT: vmxor.mm v0, v0, v8
337 %v = call <8 x i1> @llvm.vp.xor.v8i1(<8 x i1> %b, <8 x i1> %c, <8 x i1> %a, i32 %evl)
341 declare <16 x i1> @llvm.vp.xor.v16i1(<16 x i1>, <16 x i1>, <16 x i1>, i32)
343 define <16 x i1> @xor_v16i1(<16 x i1> %b, <16 x i1> %c, <16 x i1> %a, i32 zeroext %evl) {
344 ; CHECK-LABEL: xor_v16i1:
346 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
347 ; CHECK-NEXT: vmxor.mm v0, v0, v8
349 %v = call <16 x i1> @llvm.vp.xor.v16i1(<16 x i1> %b, <16 x i1> %c, <16 x i1> %a, i32 %evl)
353 declare <vscale x 1 x i1> @llvm.vp.xor.nxv1i1(<vscale x 1 x i1>, <vscale x 1 x i1>, <vscale x 1 x i1>, i32)
355 define <vscale x 1 x i1> @xor_nxv1i1(<vscale x 1 x i1> %b, <vscale x 1 x i1> %c, <vscale x 1 x i1> %a, i32 zeroext %evl) {
356 ; CHECK-LABEL: xor_nxv1i1:
358 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
359 ; CHECK-NEXT: vmxor.mm v0, v0, v8
361 %v = call <vscale x 1 x i1> @llvm.vp.xor.nxv1i1(<vscale x 1 x i1> %b, <vscale x 1 x i1> %c, <vscale x 1 x i1> %a, i32 %evl)
362 ret <vscale x 1 x i1> %v
365 declare <vscale x 2 x i1> @llvm.vp.xor.nxv2i1(<vscale x 2 x i1>, <vscale x 2 x i1>, <vscale x 2 x i1>, i32)
367 define <vscale x 2 x i1> @xor_nxv2i1(<vscale x 2 x i1> %b, <vscale x 2 x i1> %c, <vscale x 2 x i1> %a, i32 zeroext %evl) {
368 ; CHECK-LABEL: xor_nxv2i1:
370 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
371 ; CHECK-NEXT: vmxor.mm v0, v0, v8
373 %v = call <vscale x 2 x i1> @llvm.vp.xor.nxv2i1(<vscale x 2 x i1> %b, <vscale x 2 x i1> %c, <vscale x 2 x i1> %a, i32 %evl)
374 ret <vscale x 2 x i1> %v
377 declare <vscale x 4 x i1> @llvm.vp.xor.nxv4i1(<vscale x 4 x i1>, <vscale x 4 x i1>, <vscale x 4 x i1>, i32)
379 define <vscale x 4 x i1> @xor_nxv4i1(<vscale x 4 x i1> %b, <vscale x 4 x i1> %c, <vscale x 4 x i1> %a, i32 zeroext %evl) {
380 ; CHECK-LABEL: xor_nxv4i1:
382 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
383 ; CHECK-NEXT: vmxor.mm v0, v0, v8
385 %v = call <vscale x 4 x i1> @llvm.vp.xor.nxv4i1(<vscale x 4 x i1> %b, <vscale x 4 x i1> %c, <vscale x 4 x i1> %a, i32 %evl)
386 ret <vscale x 4 x i1> %v
389 declare <vscale x 8 x i1> @llvm.vp.xor.nxv8i1(<vscale x 8 x i1>, <vscale x 8 x i1>, <vscale x 8 x i1>, i32)
391 define <vscale x 8 x i1> @xor_nxv8i1(<vscale x 8 x i1> %b, <vscale x 8 x i1> %c, <vscale x 8 x i1> %a, i32 zeroext %evl) {
392 ; CHECK-LABEL: xor_nxv8i1:
394 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
395 ; CHECK-NEXT: vmxor.mm v0, v0, v8
397 %v = call <vscale x 8 x i1> @llvm.vp.xor.nxv8i1(<vscale x 8 x i1> %b, <vscale x 8 x i1> %c, <vscale x 8 x i1> %a, i32 %evl)
398 ret <vscale x 8 x i1> %v
401 declare <vscale x 16 x i1> @llvm.vp.xor.nxv16i1(<vscale x 16 x i1>, <vscale x 16 x i1>, <vscale x 16 x i1>, i32)
403 define <vscale x 16 x i1> @xor_nxv16i1(<vscale x 16 x i1> %b, <vscale x 16 x i1> %c, <vscale x 16 x i1> %a, i32 zeroext %evl) {
404 ; CHECK-LABEL: xor_nxv16i1:
406 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
407 ; CHECK-NEXT: vmxor.mm v0, v0, v8
409 %v = call <vscale x 16 x i1> @llvm.vp.xor.nxv16i1(<vscale x 16 x i1> %b, <vscale x 16 x i1> %c, <vscale x 16 x i1> %a, i32 %evl)
410 ret <vscale x 16 x i1> %v
413 declare <vscale x 32 x i1> @llvm.vp.xor.nxv32i1(<vscale x 32 x i1>, <vscale x 32 x i1>, <vscale x 32 x i1>, i32)
415 define <vscale x 32 x i1> @xor_nxv32i1(<vscale x 32 x i1> %b, <vscale x 32 x i1> %c, <vscale x 32 x i1> %a, i32 zeroext %evl) {
416 ; CHECK-LABEL: xor_nxv32i1:
418 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
419 ; CHECK-NEXT: vmxor.mm v0, v0, v8
421 %v = call <vscale x 32 x i1> @llvm.vp.xor.nxv32i1(<vscale x 32 x i1> %b, <vscale x 32 x i1> %c, <vscale x 32 x i1> %a, i32 %evl)
422 ret <vscale x 32 x i1> %v
425 declare <vscale x 64 x i1> @llvm.vp.xor.nxv64i1(<vscale x 64 x i1>, <vscale x 64 x i1>, <vscale x 64 x i1>, i32)
427 define <vscale x 64 x i1> @xor_nxv64i1(<vscale x 64 x i1> %b, <vscale x 64 x i1> %c, <vscale x 64 x i1> %a, i32 zeroext %evl) {
428 ; CHECK-LABEL: xor_nxv64i1:
430 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
431 ; CHECK-NEXT: vmxor.mm v0, v0, v8
433 %v = call <vscale x 64 x i1> @llvm.vp.xor.nxv64i1(<vscale x 64 x i1> %b, <vscale x 64 x i1> %c, <vscale x 64 x i1> %a, i32 %evl)
434 ret <vscale x 64 x i1> %v