1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s \
3 ; RUN: | FileCheck %s --check-prefixes=CHECK,RV32
4 ; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s \
5 ; RUN: | FileCheck %s --check-prefixes=CHECK,RV64
7 declare <8 x i7> @llvm.vp.xor.v8i7(<8 x i7>, <8 x i7>, <8 x i1>, i32)
9 define <8 x i7> @vxor_vv_v8i7(<8 x i7> %va, <8 x i7> %b, <8 x i1> %m, i32 zeroext %evl) {
10 ; CHECK-LABEL: vxor_vv_v8i7:
12 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
13 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
15 %v = call <8 x i7> @llvm.vp.xor.v8i7(<8 x i7> %va, <8 x i7> %b, <8 x i1> %m, i32 %evl)
19 declare <2 x i8> @llvm.vp.xor.v2i8(<2 x i8>, <2 x i8>, <2 x i1>, i32)
21 define <2 x i8> @vxor_vv_v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> %m, i32 zeroext %evl) {
22 ; CHECK-LABEL: vxor_vv_v2i8:
24 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
25 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
27 %v = call <2 x i8> @llvm.vp.xor.v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> %m, i32 %evl)
31 define <2 x i8> @vxor_vv_v2i8_unmasked(<2 x i8> %va, <2 x i8> %b, i32 zeroext %evl) {
32 ; CHECK-LABEL: vxor_vv_v2i8_unmasked:
34 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
35 ; CHECK-NEXT: vxor.vv v8, v8, v9
37 %head = insertelement <2 x i1> poison, i1 true, i32 0
38 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
39 %v = call <2 x i8> @llvm.vp.xor.v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> %m, i32 %evl)
43 define <2 x i8> @vxor_vx_v2i8(<2 x i8> %va, i8 %b, <2 x i1> %m, i32 zeroext %evl) {
44 ; CHECK-LABEL: vxor_vx_v2i8:
46 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
47 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
49 %elt.head = insertelement <2 x i8> poison, i8 %b, i32 0
50 %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
51 %v = call <2 x i8> @llvm.vp.xor.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> %m, i32 %evl)
55 define <2 x i8> @vxor_vx_v2i8_commute(<2 x i8> %va, i8 %b, <2 x i1> %m, i32 zeroext %evl) {
56 ; CHECK-LABEL: vxor_vx_v2i8_commute:
58 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
59 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
61 %elt.head = insertelement <2 x i8> poison, i8 %b, i32 0
62 %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
63 %v = call <2 x i8> @llvm.vp.xor.v2i8(<2 x i8> %vb, <2 x i8> %va, <2 x i1> %m, i32 %evl)
67 define <2 x i8> @vxor_vx_v2i8_unmasked(<2 x i8> %va, i8 %b, i32 zeroext %evl) {
68 ; CHECK-LABEL: vxor_vx_v2i8_unmasked:
70 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
71 ; CHECK-NEXT: vxor.vx v8, v8, a0
73 %elt.head = insertelement <2 x i8> poison, i8 %b, i32 0
74 %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
75 %head = insertelement <2 x i1> poison, i1 true, i32 0
76 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
77 %v = call <2 x i8> @llvm.vp.xor.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> %m, i32 %evl)
81 define <2 x i8> @vxor_vi_v2i8(<2 x i8> %va, <2 x i1> %m, i32 zeroext %evl) {
82 ; CHECK-LABEL: vxor_vi_v2i8:
84 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
85 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
87 %elt.head = insertelement <2 x i8> poison, i8 7, i32 0
88 %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
89 %v = call <2 x i8> @llvm.vp.xor.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> %m, i32 %evl)
93 define <2 x i8> @vxor_vi_v2i8_unmasked(<2 x i8> %va, i32 zeroext %evl) {
94 ; CHECK-LABEL: vxor_vi_v2i8_unmasked:
96 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
97 ; CHECK-NEXT: vxor.vi v8, v8, 7
99 %elt.head = insertelement <2 x i8> poison, i8 7, i32 0
100 %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
101 %head = insertelement <2 x i1> poison, i1 true, i32 0
102 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
103 %v = call <2 x i8> @llvm.vp.xor.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> %m, i32 %evl)
107 define <2 x i8> @vxor_vi_v2i8_1(<2 x i8> %va, <2 x i1> %m, i32 zeroext %evl) {
108 ; CHECK-LABEL: vxor_vi_v2i8_1:
110 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
111 ; CHECK-NEXT: vnot.v v8, v8, v0.t
113 %elt.head = insertelement <2 x i8> poison, i8 -1, i32 0
114 %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
115 %v = call <2 x i8> @llvm.vp.xor.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> %m, i32 %evl)
119 define <2 x i8> @vxor_vi_v2i8_unmasked_1(<2 x i8> %va, i32 zeroext %evl) {
120 ; CHECK-LABEL: vxor_vi_v2i8_unmasked_1:
122 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
123 ; CHECK-NEXT: vnot.v v8, v8
125 %elt.head = insertelement <2 x i8> poison, i8 -1, i32 0
126 %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
127 %head = insertelement <2 x i1> poison, i1 true, i32 0
128 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
129 %v = call <2 x i8> @llvm.vp.xor.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> %m, i32 %evl)
133 declare <4 x i8> @llvm.vp.xor.v4i8(<4 x i8>, <4 x i8>, <4 x i1>, i32)
135 define <4 x i8> @vxor_vv_v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 zeroext %evl) {
136 ; CHECK-LABEL: vxor_vv_v4i8:
138 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
139 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
141 %v = call <4 x i8> @llvm.vp.xor.v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 %evl)
145 define <4 x i8> @vxor_vv_v4i8_unmasked(<4 x i8> %va, <4 x i8> %b, i32 zeroext %evl) {
146 ; CHECK-LABEL: vxor_vv_v4i8_unmasked:
148 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
149 ; CHECK-NEXT: vxor.vv v8, v8, v9
151 %head = insertelement <4 x i1> poison, i1 true, i32 0
152 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
153 %v = call <4 x i8> @llvm.vp.xor.v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 %evl)
157 define <4 x i8> @vxor_vx_v4i8(<4 x i8> %va, i8 %b, <4 x i1> %m, i32 zeroext %evl) {
158 ; CHECK-LABEL: vxor_vx_v4i8:
160 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
161 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
163 %elt.head = insertelement <4 x i8> poison, i8 %b, i32 0
164 %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
165 %v = call <4 x i8> @llvm.vp.xor.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> %m, i32 %evl)
169 define <4 x i8> @vxor_vx_v4i8_unmasked(<4 x i8> %va, i8 %b, i32 zeroext %evl) {
170 ; CHECK-LABEL: vxor_vx_v4i8_unmasked:
172 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
173 ; CHECK-NEXT: vxor.vx v8, v8, a0
175 %elt.head = insertelement <4 x i8> poison, i8 %b, i32 0
176 %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
177 %head = insertelement <4 x i1> poison, i1 true, i32 0
178 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
179 %v = call <4 x i8> @llvm.vp.xor.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> %m, i32 %evl)
183 define <4 x i8> @vxor_vi_v4i8(<4 x i8> %va, <4 x i1> %m, i32 zeroext %evl) {
184 ; CHECK-LABEL: vxor_vi_v4i8:
186 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
187 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
189 %elt.head = insertelement <4 x i8> poison, i8 7, i32 0
190 %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
191 %v = call <4 x i8> @llvm.vp.xor.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> %m, i32 %evl)
195 define <4 x i8> @vxor_vi_v4i8_unmasked(<4 x i8> %va, i32 zeroext %evl) {
196 ; CHECK-LABEL: vxor_vi_v4i8_unmasked:
198 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
199 ; CHECK-NEXT: vxor.vi v8, v8, 7
201 %elt.head = insertelement <4 x i8> poison, i8 7, i32 0
202 %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
203 %head = insertelement <4 x i1> poison, i1 true, i32 0
204 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
205 %v = call <4 x i8> @llvm.vp.xor.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> %m, i32 %evl)
209 define <4 x i8> @vxor_vi_v4i8_1(<4 x i8> %va, <4 x i1> %m, i32 zeroext %evl) {
210 ; CHECK-LABEL: vxor_vi_v4i8_1:
212 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
213 ; CHECK-NEXT: vnot.v v8, v8, v0.t
215 %elt.head = insertelement <4 x i8> poison, i8 -1, i32 0
216 %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
217 %v = call <4 x i8> @llvm.vp.xor.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> %m, i32 %evl)
221 define <4 x i8> @vxor_vi_v4i8_unmasked_1(<4 x i8> %va, i32 zeroext %evl) {
222 ; CHECK-LABEL: vxor_vi_v4i8_unmasked_1:
224 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
225 ; CHECK-NEXT: vnot.v v8, v8
227 %elt.head = insertelement <4 x i8> poison, i8 -1, i32 0
228 %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
229 %head = insertelement <4 x i1> poison, i1 true, i32 0
230 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
231 %v = call <4 x i8> @llvm.vp.xor.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> %m, i32 %evl)
235 declare <8 x i8> @llvm.vp.xor.v8i8(<8 x i8>, <8 x i8>, <8 x i1>, i32)
237 define <8 x i8> @vxor_vv_v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 zeroext %evl) {
238 ; CHECK-LABEL: vxor_vv_v8i8:
240 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
241 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
243 %v = call <8 x i8> @llvm.vp.xor.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 %evl)
247 define <8 x i8> @vxor_vv_v8i8_unmasked(<8 x i8> %va, <8 x i8> %b, i32 zeroext %evl) {
248 ; CHECK-LABEL: vxor_vv_v8i8_unmasked:
250 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
251 ; CHECK-NEXT: vxor.vv v8, v8, v9
253 %head = insertelement <8 x i1> poison, i1 true, i32 0
254 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
255 %v = call <8 x i8> @llvm.vp.xor.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 %evl)
259 define <8 x i8> @vxor_vx_v8i8(<8 x i8> %va, i8 %b, <8 x i1> %m, i32 zeroext %evl) {
260 ; CHECK-LABEL: vxor_vx_v8i8:
262 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
263 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
265 %elt.head = insertelement <8 x i8> poison, i8 %b, i32 0
266 %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
267 %v = call <8 x i8> @llvm.vp.xor.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> %m, i32 %evl)
271 define <8 x i8> @vxor_vx_v8i8_unmasked(<8 x i8> %va, i8 %b, i32 zeroext %evl) {
272 ; CHECK-LABEL: vxor_vx_v8i8_unmasked:
274 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
275 ; CHECK-NEXT: vxor.vx v8, v8, a0
277 %elt.head = insertelement <8 x i8> poison, i8 %b, i32 0
278 %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
279 %head = insertelement <8 x i1> poison, i1 true, i32 0
280 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
281 %v = call <8 x i8> @llvm.vp.xor.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> %m, i32 %evl)
285 define <8 x i8> @vxor_vi_v8i8(<8 x i8> %va, <8 x i1> %m, i32 zeroext %evl) {
286 ; CHECK-LABEL: vxor_vi_v8i8:
288 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
289 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
291 %elt.head = insertelement <8 x i8> poison, i8 7, i32 0
292 %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
293 %v = call <8 x i8> @llvm.vp.xor.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> %m, i32 %evl)
297 define <8 x i8> @vxor_vi_v8i8_unmasked(<8 x i8> %va, i32 zeroext %evl) {
298 ; CHECK-LABEL: vxor_vi_v8i8_unmasked:
300 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
301 ; CHECK-NEXT: vxor.vi v8, v8, 7
303 %elt.head = insertelement <8 x i8> poison, i8 7, i32 0
304 %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
305 %head = insertelement <8 x i1> poison, i1 true, i32 0
306 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
307 %v = call <8 x i8> @llvm.vp.xor.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> %m, i32 %evl)
311 define <8 x i8> @vxor_vi_v8i8_1(<8 x i8> %va, <8 x i1> %m, i32 zeroext %evl) {
312 ; CHECK-LABEL: vxor_vi_v8i8_1:
314 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
315 ; CHECK-NEXT: vnot.v v8, v8, v0.t
317 %elt.head = insertelement <8 x i8> poison, i8 -1, i32 0
318 %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
319 %v = call <8 x i8> @llvm.vp.xor.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> %m, i32 %evl)
323 define <8 x i8> @vxor_vi_v8i8_unmasked_1(<8 x i8> %va, i32 zeroext %evl) {
324 ; CHECK-LABEL: vxor_vi_v8i8_unmasked_1:
326 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
327 ; CHECK-NEXT: vnot.v v8, v8
329 %elt.head = insertelement <8 x i8> poison, i8 -1, i32 0
330 %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
331 %head = insertelement <8 x i1> poison, i1 true, i32 0
332 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
333 %v = call <8 x i8> @llvm.vp.xor.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> %m, i32 %evl)
337 declare <9 x i8> @llvm.vp.xor.v9i8(<9 x i8>, <9 x i8>, <9 x i1>, i32)
339 define <9 x i8> @vxor_vv_v9i8(<9 x i8> %va, <9 x i8> %b, <9 x i1> %m, i32 zeroext %evl) {
340 ; CHECK-LABEL: vxor_vv_v9i8:
342 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
343 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
345 %v = call <9 x i8> @llvm.vp.xor.v9i8(<9 x i8> %va, <9 x i8> %b, <9 x i1> %m, i32 %evl)
349 define <9 x i8> @vxor_vv_v9i8_unmasked(<9 x i8> %va, <9 x i8> %b, i32 zeroext %evl) {
350 ; CHECK-LABEL: vxor_vv_v9i8_unmasked:
352 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
353 ; CHECK-NEXT: vxor.vv v8, v8, v9
355 %head = insertelement <9 x i1> poison, i1 true, i32 0
356 %m = shufflevector <9 x i1> %head, <9 x i1> poison, <9 x i32> zeroinitializer
357 %v = call <9 x i8> @llvm.vp.xor.v9i8(<9 x i8> %va, <9 x i8> %b, <9 x i1> %m, i32 %evl)
361 define <9 x i8> @vxor_vx_v9i8(<9 x i8> %va, i8 %b, <9 x i1> %m, i32 zeroext %evl) {
362 ; CHECK-LABEL: vxor_vx_v9i8:
364 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
365 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
367 %elt.head = insertelement <9 x i8> poison, i8 %b, i32 0
368 %vb = shufflevector <9 x i8> %elt.head, <9 x i8> poison, <9 x i32> zeroinitializer
369 %v = call <9 x i8> @llvm.vp.xor.v9i8(<9 x i8> %va, <9 x i8> %vb, <9 x i1> %m, i32 %evl)
373 define <9 x i8> @vxor_vx_v9i8_unmasked(<9 x i8> %va, i8 %b, i32 zeroext %evl) {
374 ; CHECK-LABEL: vxor_vx_v9i8_unmasked:
376 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
377 ; CHECK-NEXT: vxor.vx v8, v8, a0
379 %elt.head = insertelement <9 x i8> poison, i8 %b, i32 0
380 %vb = shufflevector <9 x i8> %elt.head, <9 x i8> poison, <9 x i32> zeroinitializer
381 %head = insertelement <9 x i1> poison, i1 true, i32 0
382 %m = shufflevector <9 x i1> %head, <9 x i1> poison, <9 x i32> zeroinitializer
383 %v = call <9 x i8> @llvm.vp.xor.v9i8(<9 x i8> %va, <9 x i8> %vb, <9 x i1> %m, i32 %evl)
387 define <9 x i8> @vxor_vi_v9i8(<9 x i8> %va, <9 x i1> %m, i32 zeroext %evl) {
388 ; CHECK-LABEL: vxor_vi_v9i8:
390 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
391 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
393 %elt.head = insertelement <9 x i8> poison, i8 7, i32 0
394 %vb = shufflevector <9 x i8> %elt.head, <9 x i8> poison, <9 x i32> zeroinitializer
395 %v = call <9 x i8> @llvm.vp.xor.v9i8(<9 x i8> %va, <9 x i8> %vb, <9 x i1> %m, i32 %evl)
399 define <9 x i8> @vxor_vi_v9i8_unmasked(<9 x i8> %va, i32 zeroext %evl) {
400 ; CHECK-LABEL: vxor_vi_v9i8_unmasked:
402 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
403 ; CHECK-NEXT: vxor.vi v8, v8, 7
405 %elt.head = insertelement <9 x i8> poison, i8 7, i32 0
406 %vb = shufflevector <9 x i8> %elt.head, <9 x i8> poison, <9 x i32> zeroinitializer
407 %head = insertelement <9 x i1> poison, i1 true, i32 0
408 %m = shufflevector <9 x i1> %head, <9 x i1> poison, <9 x i32> zeroinitializer
409 %v = call <9 x i8> @llvm.vp.xor.v9i8(<9 x i8> %va, <9 x i8> %vb, <9 x i1> %m, i32 %evl)
413 define <9 x i8> @vxor_vi_v9i8_1(<9 x i8> %va, <9 x i1> %m, i32 zeroext %evl) {
414 ; CHECK-LABEL: vxor_vi_v9i8_1:
416 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
417 ; CHECK-NEXT: vnot.v v8, v8, v0.t
419 %elt.head = insertelement <9 x i8> poison, i8 -1, i32 0
420 %vb = shufflevector <9 x i8> %elt.head, <9 x i8> poison, <9 x i32> zeroinitializer
421 %v = call <9 x i8> @llvm.vp.xor.v9i8(<9 x i8> %va, <9 x i8> %vb, <9 x i1> %m, i32 %evl)
425 define <9 x i8> @vxor_vi_v9i8_unmasked_1(<9 x i8> %va, i32 zeroext %evl) {
426 ; CHECK-LABEL: vxor_vi_v9i8_unmasked_1:
428 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
429 ; CHECK-NEXT: vnot.v v8, v8
431 %elt.head = insertelement <9 x i8> poison, i8 -1, i32 0
432 %vb = shufflevector <9 x i8> %elt.head, <9 x i8> poison, <9 x i32> zeroinitializer
433 %head = insertelement <9 x i1> poison, i1 true, i32 0
434 %m = shufflevector <9 x i1> %head, <9 x i1> poison, <9 x i32> zeroinitializer
435 %v = call <9 x i8> @llvm.vp.xor.v9i8(<9 x i8> %va, <9 x i8> %vb, <9 x i1> %m, i32 %evl)
439 declare <16 x i8> @llvm.vp.xor.v16i8(<16 x i8>, <16 x i8>, <16 x i1>, i32)
441 define <16 x i8> @vxor_vv_v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 zeroext %evl) {
442 ; CHECK-LABEL: vxor_vv_v16i8:
444 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
445 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
447 %v = call <16 x i8> @llvm.vp.xor.v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 %evl)
451 define <16 x i8> @vxor_vv_v16i8_unmasked(<16 x i8> %va, <16 x i8> %b, i32 zeroext %evl) {
452 ; CHECK-LABEL: vxor_vv_v16i8_unmasked:
454 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
455 ; CHECK-NEXT: vxor.vv v8, v8, v9
457 %head = insertelement <16 x i1> poison, i1 true, i32 0
458 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
459 %v = call <16 x i8> @llvm.vp.xor.v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 %evl)
463 define <16 x i8> @vxor_vx_v16i8(<16 x i8> %va, i8 %b, <16 x i1> %m, i32 zeroext %evl) {
464 ; CHECK-LABEL: vxor_vx_v16i8:
466 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
467 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
469 %elt.head = insertelement <16 x i8> poison, i8 %b, i32 0
470 %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
471 %v = call <16 x i8> @llvm.vp.xor.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> %m, i32 %evl)
475 define <16 x i8> @vxor_vx_v16i8_unmasked(<16 x i8> %va, i8 %b, i32 zeroext %evl) {
476 ; CHECK-LABEL: vxor_vx_v16i8_unmasked:
478 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
479 ; CHECK-NEXT: vxor.vx v8, v8, a0
481 %elt.head = insertelement <16 x i8> poison, i8 %b, i32 0
482 %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
483 %head = insertelement <16 x i1> poison, i1 true, i32 0
484 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
485 %v = call <16 x i8> @llvm.vp.xor.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> %m, i32 %evl)
489 define <16 x i8> @vxor_vi_v16i8(<16 x i8> %va, <16 x i1> %m, i32 zeroext %evl) {
490 ; CHECK-LABEL: vxor_vi_v16i8:
492 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
493 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
495 %elt.head = insertelement <16 x i8> poison, i8 7, i32 0
496 %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
497 %v = call <16 x i8> @llvm.vp.xor.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> %m, i32 %evl)
501 define <16 x i8> @vxor_vi_v16i8_unmasked(<16 x i8> %va, i32 zeroext %evl) {
502 ; CHECK-LABEL: vxor_vi_v16i8_unmasked:
504 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
505 ; CHECK-NEXT: vxor.vi v8, v8, 7
507 %elt.head = insertelement <16 x i8> poison, i8 7, i32 0
508 %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
509 %head = insertelement <16 x i1> poison, i1 true, i32 0
510 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
511 %v = call <16 x i8> @llvm.vp.xor.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> %m, i32 %evl)
515 define <16 x i8> @vxor_vi_v16i8_1(<16 x i8> %va, <16 x i1> %m, i32 zeroext %evl) {
516 ; CHECK-LABEL: vxor_vi_v16i8_1:
518 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
519 ; CHECK-NEXT: vnot.v v8, v8, v0.t
521 %elt.head = insertelement <16 x i8> poison, i8 -1, i32 0
522 %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
523 %v = call <16 x i8> @llvm.vp.xor.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> %m, i32 %evl)
527 define <16 x i8> @vxor_vi_v16i8_unmasked_1(<16 x i8> %va, i32 zeroext %evl) {
528 ; CHECK-LABEL: vxor_vi_v16i8_unmasked_1:
530 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
531 ; CHECK-NEXT: vnot.v v8, v8
533 %elt.head = insertelement <16 x i8> poison, i8 -1, i32 0
534 %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
535 %head = insertelement <16 x i1> poison, i1 true, i32 0
536 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
537 %v = call <16 x i8> @llvm.vp.xor.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> %m, i32 %evl)
541 declare <2 x i16> @llvm.vp.xor.v2i16(<2 x i16>, <2 x i16>, <2 x i1>, i32)
543 define <2 x i16> @vxor_vv_v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 zeroext %evl) {
544 ; CHECK-LABEL: vxor_vv_v2i16:
546 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
547 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
549 %v = call <2 x i16> @llvm.vp.xor.v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 %evl)
553 define <2 x i16> @vxor_vv_v2i16_unmasked(<2 x i16> %va, <2 x i16> %b, i32 zeroext %evl) {
554 ; CHECK-LABEL: vxor_vv_v2i16_unmasked:
556 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
557 ; CHECK-NEXT: vxor.vv v8, v8, v9
559 %head = insertelement <2 x i1> poison, i1 true, i32 0
560 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
561 %v = call <2 x i16> @llvm.vp.xor.v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 %evl)
565 define <2 x i16> @vxor_vx_v2i16(<2 x i16> %va, i16 %b, <2 x i1> %m, i32 zeroext %evl) {
566 ; CHECK-LABEL: vxor_vx_v2i16:
568 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
569 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
571 %elt.head = insertelement <2 x i16> poison, i16 %b, i32 0
572 %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
573 %v = call <2 x i16> @llvm.vp.xor.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> %m, i32 %evl)
577 define <2 x i16> @vxor_vx_v2i16_unmasked(<2 x i16> %va, i16 %b, i32 zeroext %evl) {
578 ; CHECK-LABEL: vxor_vx_v2i16_unmasked:
580 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
581 ; CHECK-NEXT: vxor.vx v8, v8, a0
583 %elt.head = insertelement <2 x i16> poison, i16 %b, i32 0
584 %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
585 %head = insertelement <2 x i1> poison, i1 true, i32 0
586 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
587 %v = call <2 x i16> @llvm.vp.xor.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> %m, i32 %evl)
591 define <2 x i16> @vxor_vi_v2i16(<2 x i16> %va, <2 x i1> %m, i32 zeroext %evl) {
592 ; CHECK-LABEL: vxor_vi_v2i16:
594 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
595 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
597 %elt.head = insertelement <2 x i16> poison, i16 7, i32 0
598 %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
599 %v = call <2 x i16> @llvm.vp.xor.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> %m, i32 %evl)
603 define <2 x i16> @vxor_vi_v2i16_unmasked(<2 x i16> %va, i32 zeroext %evl) {
604 ; CHECK-LABEL: vxor_vi_v2i16_unmasked:
606 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
607 ; CHECK-NEXT: vxor.vi v8, v8, 7
609 %elt.head = insertelement <2 x i16> poison, i16 7, i32 0
610 %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
611 %head = insertelement <2 x i1> poison, i1 true, i32 0
612 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
613 %v = call <2 x i16> @llvm.vp.xor.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> %m, i32 %evl)
617 define <2 x i16> @vxor_vi_v2i16_1(<2 x i16> %va, <2 x i1> %m, i32 zeroext %evl) {
618 ; CHECK-LABEL: vxor_vi_v2i16_1:
620 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
621 ; CHECK-NEXT: vnot.v v8, v8, v0.t
623 %elt.head = insertelement <2 x i16> poison, i16 -1, i32 0
624 %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
625 %v = call <2 x i16> @llvm.vp.xor.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> %m, i32 %evl)
629 define <2 x i16> @vxor_vi_v2i16_unmasked_1(<2 x i16> %va, i32 zeroext %evl) {
630 ; CHECK-LABEL: vxor_vi_v2i16_unmasked_1:
632 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
633 ; CHECK-NEXT: vnot.v v8, v8
635 %elt.head = insertelement <2 x i16> poison, i16 -1, i32 0
636 %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
637 %head = insertelement <2 x i1> poison, i1 true, i32 0
638 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
639 %v = call <2 x i16> @llvm.vp.xor.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> %m, i32 %evl)
643 declare <4 x i16> @llvm.vp.xor.v4i16(<4 x i16>, <4 x i16>, <4 x i1>, i32)
645 define <4 x i16> @vxor_vv_v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 zeroext %evl) {
646 ; CHECK-LABEL: vxor_vv_v4i16:
648 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
649 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
651 %v = call <4 x i16> @llvm.vp.xor.v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 %evl)
655 define <4 x i16> @vxor_vv_v4i16_unmasked(<4 x i16> %va, <4 x i16> %b, i32 zeroext %evl) {
656 ; CHECK-LABEL: vxor_vv_v4i16_unmasked:
658 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
659 ; CHECK-NEXT: vxor.vv v8, v8, v9
661 %head = insertelement <4 x i1> poison, i1 true, i32 0
662 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
663 %v = call <4 x i16> @llvm.vp.xor.v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 %evl)
667 define <4 x i16> @vxor_vx_v4i16(<4 x i16> %va, i16 %b, <4 x i1> %m, i32 zeroext %evl) {
668 ; CHECK-LABEL: vxor_vx_v4i16:
670 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
671 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
673 %elt.head = insertelement <4 x i16> poison, i16 %b, i32 0
674 %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
675 %v = call <4 x i16> @llvm.vp.xor.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> %m, i32 %evl)
679 define <4 x i16> @vxor_vx_v4i16_unmasked(<4 x i16> %va, i16 %b, i32 zeroext %evl) {
680 ; CHECK-LABEL: vxor_vx_v4i16_unmasked:
682 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
683 ; CHECK-NEXT: vxor.vx v8, v8, a0
685 %elt.head = insertelement <4 x i16> poison, i16 %b, i32 0
686 %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
687 %head = insertelement <4 x i1> poison, i1 true, i32 0
688 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
689 %v = call <4 x i16> @llvm.vp.xor.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> %m, i32 %evl)
693 define <4 x i16> @vxor_vi_v4i16(<4 x i16> %va, <4 x i1> %m, i32 zeroext %evl) {
694 ; CHECK-LABEL: vxor_vi_v4i16:
696 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
697 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
699 %elt.head = insertelement <4 x i16> poison, i16 7, i32 0
700 %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
701 %v = call <4 x i16> @llvm.vp.xor.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> %m, i32 %evl)
705 define <4 x i16> @vxor_vi_v4i16_unmasked(<4 x i16> %va, i32 zeroext %evl) {
706 ; CHECK-LABEL: vxor_vi_v4i16_unmasked:
708 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
709 ; CHECK-NEXT: vxor.vi v8, v8, 7
711 %elt.head = insertelement <4 x i16> poison, i16 7, i32 0
712 %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
713 %head = insertelement <4 x i1> poison, i1 true, i32 0
714 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
715 %v = call <4 x i16> @llvm.vp.xor.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> %m, i32 %evl)
719 define <4 x i16> @vxor_vi_v4i16_1(<4 x i16> %va, <4 x i1> %m, i32 zeroext %evl) {
720 ; CHECK-LABEL: vxor_vi_v4i16_1:
722 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
723 ; CHECK-NEXT: vnot.v v8, v8, v0.t
725 %elt.head = insertelement <4 x i16> poison, i16 -1, i32 0
726 %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
727 %v = call <4 x i16> @llvm.vp.xor.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> %m, i32 %evl)
731 define <4 x i16> @vxor_vi_v4i16_unmasked_1(<4 x i16> %va, i32 zeroext %evl) {
732 ; CHECK-LABEL: vxor_vi_v4i16_unmasked_1:
734 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
735 ; CHECK-NEXT: vnot.v v8, v8
737 %elt.head = insertelement <4 x i16> poison, i16 -1, i32 0
738 %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
739 %head = insertelement <4 x i1> poison, i1 true, i32 0
740 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
741 %v = call <4 x i16> @llvm.vp.xor.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> %m, i32 %evl)
745 declare <8 x i16> @llvm.vp.xor.v8i16(<8 x i16>, <8 x i16>, <8 x i1>, i32)
747 define <8 x i16> @vxor_vv_v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 zeroext %evl) {
748 ; CHECK-LABEL: vxor_vv_v8i16:
750 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
751 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
753 %v = call <8 x i16> @llvm.vp.xor.v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 %evl)
757 define <8 x i16> @vxor_vv_v8i16_unmasked(<8 x i16> %va, <8 x i16> %b, i32 zeroext %evl) {
758 ; CHECK-LABEL: vxor_vv_v8i16_unmasked:
760 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
761 ; CHECK-NEXT: vxor.vv v8, v8, v9
763 %head = insertelement <8 x i1> poison, i1 true, i32 0
764 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
765 %v = call <8 x i16> @llvm.vp.xor.v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 %evl)
769 define <8 x i16> @vxor_vx_v8i16(<8 x i16> %va, i16 %b, <8 x i1> %m, i32 zeroext %evl) {
770 ; CHECK-LABEL: vxor_vx_v8i16:
772 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
773 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
775 %elt.head = insertelement <8 x i16> poison, i16 %b, i32 0
776 %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
777 %v = call <8 x i16> @llvm.vp.xor.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> %m, i32 %evl)
781 define <8 x i16> @vxor_vx_v8i16_unmasked(<8 x i16> %va, i16 %b, i32 zeroext %evl) {
782 ; CHECK-LABEL: vxor_vx_v8i16_unmasked:
784 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
785 ; CHECK-NEXT: vxor.vx v8, v8, a0
787 %elt.head = insertelement <8 x i16> poison, i16 %b, i32 0
788 %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
789 %head = insertelement <8 x i1> poison, i1 true, i32 0
790 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
791 %v = call <8 x i16> @llvm.vp.xor.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> %m, i32 %evl)
795 define <8 x i16> @vxor_vi_v8i16(<8 x i16> %va, <8 x i1> %m, i32 zeroext %evl) {
796 ; CHECK-LABEL: vxor_vi_v8i16:
798 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
799 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
801 %elt.head = insertelement <8 x i16> poison, i16 7, i32 0
802 %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
803 %v = call <8 x i16> @llvm.vp.xor.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> %m, i32 %evl)
807 define <8 x i16> @vxor_vi_v8i16_unmasked(<8 x i16> %va, i32 zeroext %evl) {
808 ; CHECK-LABEL: vxor_vi_v8i16_unmasked:
810 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
811 ; CHECK-NEXT: vxor.vi v8, v8, 7
813 %elt.head = insertelement <8 x i16> poison, i16 7, i32 0
814 %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
815 %head = insertelement <8 x i1> poison, i1 true, i32 0
816 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
817 %v = call <8 x i16> @llvm.vp.xor.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> %m, i32 %evl)
821 define <8 x i16> @vxor_vi_v8i16_1(<8 x i16> %va, <8 x i1> %m, i32 zeroext %evl) {
822 ; CHECK-LABEL: vxor_vi_v8i16_1:
824 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
825 ; CHECK-NEXT: vnot.v v8, v8, v0.t
827 %elt.head = insertelement <8 x i16> poison, i16 -1, i32 0
828 %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
829 %v = call <8 x i16> @llvm.vp.xor.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> %m, i32 %evl)
833 define <8 x i16> @vxor_vi_v8i16_unmasked_1(<8 x i16> %va, i32 zeroext %evl) {
834 ; CHECK-LABEL: vxor_vi_v8i16_unmasked_1:
836 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
837 ; CHECK-NEXT: vnot.v v8, v8
839 %elt.head = insertelement <8 x i16> poison, i16 -1, i32 0
840 %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
841 %head = insertelement <8 x i1> poison, i1 true, i32 0
842 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
843 %v = call <8 x i16> @llvm.vp.xor.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> %m, i32 %evl)
847 declare <16 x i16> @llvm.vp.xor.v16i16(<16 x i16>, <16 x i16>, <16 x i1>, i32)
849 define <16 x i16> @vxor_vv_v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 zeroext %evl) {
850 ; CHECK-LABEL: vxor_vv_v16i16:
852 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
853 ; CHECK-NEXT: vxor.vv v8, v8, v10, v0.t
855 %v = call <16 x i16> @llvm.vp.xor.v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 %evl)
859 define <16 x i16> @vxor_vv_v16i16_unmasked(<16 x i16> %va, <16 x i16> %b, i32 zeroext %evl) {
860 ; CHECK-LABEL: vxor_vv_v16i16_unmasked:
862 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
863 ; CHECK-NEXT: vxor.vv v8, v8, v10
865 %head = insertelement <16 x i1> poison, i1 true, i32 0
866 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
867 %v = call <16 x i16> @llvm.vp.xor.v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 %evl)
871 define <16 x i16> @vxor_vx_v16i16(<16 x i16> %va, i16 %b, <16 x i1> %m, i32 zeroext %evl) {
872 ; CHECK-LABEL: vxor_vx_v16i16:
874 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
875 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
877 %elt.head = insertelement <16 x i16> poison, i16 %b, i32 0
878 %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
879 %v = call <16 x i16> @llvm.vp.xor.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> %m, i32 %evl)
883 define <16 x i16> @vxor_vx_v16i16_unmasked(<16 x i16> %va, i16 %b, i32 zeroext %evl) {
884 ; CHECK-LABEL: vxor_vx_v16i16_unmasked:
886 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
887 ; CHECK-NEXT: vxor.vx v8, v8, a0
889 %elt.head = insertelement <16 x i16> poison, i16 %b, i32 0
890 %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
891 %head = insertelement <16 x i1> poison, i1 true, i32 0
892 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
893 %v = call <16 x i16> @llvm.vp.xor.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> %m, i32 %evl)
897 define <16 x i16> @vxor_vi_v16i16(<16 x i16> %va, <16 x i1> %m, i32 zeroext %evl) {
898 ; CHECK-LABEL: vxor_vi_v16i16:
900 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
901 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
903 %elt.head = insertelement <16 x i16> poison, i16 7, i32 0
904 %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
905 %v = call <16 x i16> @llvm.vp.xor.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> %m, i32 %evl)
909 define <16 x i16> @vxor_vi_v16i16_unmasked(<16 x i16> %va, i32 zeroext %evl) {
910 ; CHECK-LABEL: vxor_vi_v16i16_unmasked:
912 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
913 ; CHECK-NEXT: vxor.vi v8, v8, 7
915 %elt.head = insertelement <16 x i16> poison, i16 7, i32 0
916 %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
917 %head = insertelement <16 x i1> poison, i1 true, i32 0
918 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
919 %v = call <16 x i16> @llvm.vp.xor.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> %m, i32 %evl)
923 define <16 x i16> @vxor_vi_v16i16_1(<16 x i16> %va, <16 x i1> %m, i32 zeroext %evl) {
924 ; CHECK-LABEL: vxor_vi_v16i16_1:
926 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
927 ; CHECK-NEXT: vnot.v v8, v8, v0.t
929 %elt.head = insertelement <16 x i16> poison, i16 -1, i32 0
930 %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
931 %v = call <16 x i16> @llvm.vp.xor.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> %m, i32 %evl)
935 define <16 x i16> @vxor_vi_v16i16_unmasked_1(<16 x i16> %va, i32 zeroext %evl) {
936 ; CHECK-LABEL: vxor_vi_v16i16_unmasked_1:
938 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
939 ; CHECK-NEXT: vnot.v v8, v8
941 %elt.head = insertelement <16 x i16> poison, i16 -1, i32 0
942 %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
943 %head = insertelement <16 x i1> poison, i1 true, i32 0
944 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
945 %v = call <16 x i16> @llvm.vp.xor.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> %m, i32 %evl)
949 declare <2 x i32> @llvm.vp.xor.v2i32(<2 x i32>, <2 x i32>, <2 x i1>, i32)
951 define <2 x i32> @vxor_vv_v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 zeroext %evl) {
952 ; CHECK-LABEL: vxor_vv_v2i32:
954 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
955 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
957 %v = call <2 x i32> @llvm.vp.xor.v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 %evl)
961 define <2 x i32> @vxor_vv_v2i32_unmasked(<2 x i32> %va, <2 x i32> %b, i32 zeroext %evl) {
962 ; CHECK-LABEL: vxor_vv_v2i32_unmasked:
964 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
965 ; CHECK-NEXT: vxor.vv v8, v8, v9
967 %head = insertelement <2 x i1> poison, i1 true, i32 0
968 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
969 %v = call <2 x i32> @llvm.vp.xor.v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 %evl)
973 define <2 x i32> @vxor_vx_v2i32(<2 x i32> %va, i32 %b, <2 x i1> %m, i32 zeroext %evl) {
974 ; CHECK-LABEL: vxor_vx_v2i32:
976 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
977 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
979 %elt.head = insertelement <2 x i32> poison, i32 %b, i32 0
980 %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
981 %v = call <2 x i32> @llvm.vp.xor.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> %m, i32 %evl)
985 define <2 x i32> @vxor_vx_v2i32_unmasked(<2 x i32> %va, i32 %b, i32 zeroext %evl) {
986 ; CHECK-LABEL: vxor_vx_v2i32_unmasked:
988 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
989 ; CHECK-NEXT: vxor.vx v8, v8, a0
991 %elt.head = insertelement <2 x i32> poison, i32 %b, i32 0
992 %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
993 %head = insertelement <2 x i1> poison, i1 true, i32 0
994 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
995 %v = call <2 x i32> @llvm.vp.xor.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> %m, i32 %evl)
999 define <2 x i32> @vxor_vi_v2i32(<2 x i32> %va, <2 x i1> %m, i32 zeroext %evl) {
1000 ; CHECK-LABEL: vxor_vi_v2i32:
1002 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1003 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
1005 %elt.head = insertelement <2 x i32> poison, i32 7, i32 0
1006 %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
1007 %v = call <2 x i32> @llvm.vp.xor.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> %m, i32 %evl)
1011 define <2 x i32> @vxor_vi_v2i32_unmasked(<2 x i32> %va, i32 zeroext %evl) {
1012 ; CHECK-LABEL: vxor_vi_v2i32_unmasked:
1014 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1015 ; CHECK-NEXT: vxor.vi v8, v8, 7
1017 %elt.head = insertelement <2 x i32> poison, i32 7, i32 0
1018 %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
1019 %head = insertelement <2 x i1> poison, i1 true, i32 0
1020 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
1021 %v = call <2 x i32> @llvm.vp.xor.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> %m, i32 %evl)
1025 define <2 x i32> @vxor_vi_v2i32_1(<2 x i32> %va, <2 x i1> %m, i32 zeroext %evl) {
1026 ; CHECK-LABEL: vxor_vi_v2i32_1:
1028 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1029 ; CHECK-NEXT: vnot.v v8, v8, v0.t
1031 %elt.head = insertelement <2 x i32> poison, i32 -1, i32 0
1032 %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
1033 %v = call <2 x i32> @llvm.vp.xor.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> %m, i32 %evl)
1037 define <2 x i32> @vxor_vi_v2i32_unmasked_1(<2 x i32> %va, i32 zeroext %evl) {
1038 ; CHECK-LABEL: vxor_vi_v2i32_unmasked_1:
1040 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1041 ; CHECK-NEXT: vnot.v v8, v8
1043 %elt.head = insertelement <2 x i32> poison, i32 -1, i32 0
1044 %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
1045 %head = insertelement <2 x i1> poison, i1 true, i32 0
1046 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
1047 %v = call <2 x i32> @llvm.vp.xor.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> %m, i32 %evl)
1051 declare <4 x i32> @llvm.vp.xor.v4i32(<4 x i32>, <4 x i32>, <4 x i1>, i32)
1053 define <4 x i32> @vxor_vv_v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 zeroext %evl) {
1054 ; CHECK-LABEL: vxor_vv_v4i32:
1056 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1057 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
1059 %v = call <4 x i32> @llvm.vp.xor.v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 %evl)
1063 define <4 x i32> @vxor_vv_v4i32_unmasked(<4 x i32> %va, <4 x i32> %b, i32 zeroext %evl) {
1064 ; CHECK-LABEL: vxor_vv_v4i32_unmasked:
1066 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1067 ; CHECK-NEXT: vxor.vv v8, v8, v9
1069 %head = insertelement <4 x i1> poison, i1 true, i32 0
1070 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
1071 %v = call <4 x i32> @llvm.vp.xor.v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 %evl)
1075 define <4 x i32> @vxor_vx_v4i32(<4 x i32> %va, i32 %b, <4 x i1> %m, i32 zeroext %evl) {
1076 ; CHECK-LABEL: vxor_vx_v4i32:
1078 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
1079 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
1081 %elt.head = insertelement <4 x i32> poison, i32 %b, i32 0
1082 %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
1083 %v = call <4 x i32> @llvm.vp.xor.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> %m, i32 %evl)
1087 define <4 x i32> @vxor_vx_v4i32_unmasked(<4 x i32> %va, i32 %b, i32 zeroext %evl) {
1088 ; CHECK-LABEL: vxor_vx_v4i32_unmasked:
1090 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
1091 ; CHECK-NEXT: vxor.vx v8, v8, a0
1093 %elt.head = insertelement <4 x i32> poison, i32 %b, i32 0
1094 %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
1095 %head = insertelement <4 x i1> poison, i1 true, i32 0
1096 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
1097 %v = call <4 x i32> @llvm.vp.xor.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> %m, i32 %evl)
1101 define <4 x i32> @vxor_vi_v4i32(<4 x i32> %va, <4 x i1> %m, i32 zeroext %evl) {
1102 ; CHECK-LABEL: vxor_vi_v4i32:
1104 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1105 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
1107 %elt.head = insertelement <4 x i32> poison, i32 7, i32 0
1108 %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
1109 %v = call <4 x i32> @llvm.vp.xor.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> %m, i32 %evl)
1113 define <4 x i32> @vxor_vi_v4i32_unmasked(<4 x i32> %va, i32 zeroext %evl) {
1114 ; CHECK-LABEL: vxor_vi_v4i32_unmasked:
1116 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1117 ; CHECK-NEXT: vxor.vi v8, v8, 7
1119 %elt.head = insertelement <4 x i32> poison, i32 7, i32 0
1120 %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
1121 %head = insertelement <4 x i1> poison, i1 true, i32 0
1122 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
1123 %v = call <4 x i32> @llvm.vp.xor.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> %m, i32 %evl)
1127 define <4 x i32> @vxor_vi_v4i32_1(<4 x i32> %va, <4 x i1> %m, i32 zeroext %evl) {
1128 ; CHECK-LABEL: vxor_vi_v4i32_1:
1130 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1131 ; CHECK-NEXT: vnot.v v8, v8, v0.t
1133 %elt.head = insertelement <4 x i32> poison, i32 -1, i32 0
1134 %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
1135 %v = call <4 x i32> @llvm.vp.xor.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> %m, i32 %evl)
1139 define <4 x i32> @vxor_vi_v4i32_unmasked_1(<4 x i32> %va, i32 zeroext %evl) {
1140 ; CHECK-LABEL: vxor_vi_v4i32_unmasked_1:
1142 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1143 ; CHECK-NEXT: vnot.v v8, v8
1145 %elt.head = insertelement <4 x i32> poison, i32 -1, i32 0
1146 %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
1147 %head = insertelement <4 x i1> poison, i1 true, i32 0
1148 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
1149 %v = call <4 x i32> @llvm.vp.xor.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> %m, i32 %evl)
1153 declare <8 x i32> @llvm.vp.xor.v8i32(<8 x i32>, <8 x i32>, <8 x i1>, i32)
1155 define <8 x i32> @vxor_vv_v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 zeroext %evl) {
1156 ; CHECK-LABEL: vxor_vv_v8i32:
1158 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1159 ; CHECK-NEXT: vxor.vv v8, v8, v10, v0.t
1161 %v = call <8 x i32> @llvm.vp.xor.v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 %evl)
1165 define <8 x i32> @vxor_vv_v8i32_unmasked(<8 x i32> %va, <8 x i32> %b, i32 zeroext %evl) {
1166 ; CHECK-LABEL: vxor_vv_v8i32_unmasked:
1168 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1169 ; CHECK-NEXT: vxor.vv v8, v8, v10
1171 %head = insertelement <8 x i1> poison, i1 true, i32 0
1172 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
1173 %v = call <8 x i32> @llvm.vp.xor.v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 %evl)
1177 define <8 x i32> @vxor_vx_v8i32(<8 x i32> %va, i32 %b, <8 x i1> %m, i32 zeroext %evl) {
1178 ; CHECK-LABEL: vxor_vx_v8i32:
1180 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
1181 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
1183 %elt.head = insertelement <8 x i32> poison, i32 %b, i32 0
1184 %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
1185 %v = call <8 x i32> @llvm.vp.xor.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> %m, i32 %evl)
1189 define <8 x i32> @vxor_vx_v8i32_unmasked(<8 x i32> %va, i32 %b, i32 zeroext %evl) {
1190 ; CHECK-LABEL: vxor_vx_v8i32_unmasked:
1192 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
1193 ; CHECK-NEXT: vxor.vx v8, v8, a0
1195 %elt.head = insertelement <8 x i32> poison, i32 %b, i32 0
1196 %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
1197 %head = insertelement <8 x i1> poison, i1 true, i32 0
1198 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
1199 %v = call <8 x i32> @llvm.vp.xor.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> %m, i32 %evl)
1203 define <8 x i32> @vxor_vi_v8i32(<8 x i32> %va, <8 x i1> %m, i32 zeroext %evl) {
1204 ; CHECK-LABEL: vxor_vi_v8i32:
1206 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1207 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
1209 %elt.head = insertelement <8 x i32> poison, i32 7, i32 0
1210 %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
1211 %v = call <8 x i32> @llvm.vp.xor.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> %m, i32 %evl)
1215 define <8 x i32> @vxor_vi_v8i32_unmasked(<8 x i32> %va, i32 zeroext %evl) {
1216 ; CHECK-LABEL: vxor_vi_v8i32_unmasked:
1218 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1219 ; CHECK-NEXT: vxor.vi v8, v8, 7
1221 %elt.head = insertelement <8 x i32> poison, i32 7, i32 0
1222 %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
1223 %head = insertelement <8 x i1> poison, i1 true, i32 0
1224 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
1225 %v = call <8 x i32> @llvm.vp.xor.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> %m, i32 %evl)
1229 define <8 x i32> @vxor_vi_v8i32_1(<8 x i32> %va, <8 x i1> %m, i32 zeroext %evl) {
1230 ; CHECK-LABEL: vxor_vi_v8i32_1:
1232 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1233 ; CHECK-NEXT: vnot.v v8, v8, v0.t
1235 %elt.head = insertelement <8 x i32> poison, i32 -1, i32 0
1236 %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
1237 %v = call <8 x i32> @llvm.vp.xor.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> %m, i32 %evl)
1241 define <8 x i32> @vxor_vi_v8i32_unmasked_1(<8 x i32> %va, i32 zeroext %evl) {
1242 ; CHECK-LABEL: vxor_vi_v8i32_unmasked_1:
1244 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1245 ; CHECK-NEXT: vnot.v v8, v8
1247 %elt.head = insertelement <8 x i32> poison, i32 -1, i32 0
1248 %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
1249 %head = insertelement <8 x i1> poison, i1 true, i32 0
1250 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
1251 %v = call <8 x i32> @llvm.vp.xor.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> %m, i32 %evl)
1255 declare <16 x i32> @llvm.vp.xor.v16i32(<16 x i32>, <16 x i32>, <16 x i1>, i32)
1257 define <16 x i32> @vxor_vv_v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 zeroext %evl) {
1258 ; CHECK-LABEL: vxor_vv_v16i32:
1260 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1261 ; CHECK-NEXT: vxor.vv v8, v8, v12, v0.t
1263 %v = call <16 x i32> @llvm.vp.xor.v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 %evl)
1267 define <16 x i32> @vxor_vv_v16i32_unmasked(<16 x i32> %va, <16 x i32> %b, i32 zeroext %evl) {
1268 ; CHECK-LABEL: vxor_vv_v16i32_unmasked:
1270 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1271 ; CHECK-NEXT: vxor.vv v8, v8, v12
1273 %head = insertelement <16 x i1> poison, i1 true, i32 0
1274 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
1275 %v = call <16 x i32> @llvm.vp.xor.v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 %evl)
1279 define <16 x i32> @vxor_vx_v16i32(<16 x i32> %va, i32 %b, <16 x i1> %m, i32 zeroext %evl) {
1280 ; CHECK-LABEL: vxor_vx_v16i32:
1282 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
1283 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
1285 %elt.head = insertelement <16 x i32> poison, i32 %b, i32 0
1286 %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
1287 %v = call <16 x i32> @llvm.vp.xor.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> %m, i32 %evl)
1291 define <16 x i32> @vxor_vx_v16i32_unmasked(<16 x i32> %va, i32 %b, i32 zeroext %evl) {
1292 ; CHECK-LABEL: vxor_vx_v16i32_unmasked:
1294 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
1295 ; CHECK-NEXT: vxor.vx v8, v8, a0
1297 %elt.head = insertelement <16 x i32> poison, i32 %b, i32 0
1298 %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
1299 %head = insertelement <16 x i1> poison, i1 true, i32 0
1300 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
1301 %v = call <16 x i32> @llvm.vp.xor.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> %m, i32 %evl)
1305 define <16 x i32> @vxor_vi_v16i32(<16 x i32> %va, <16 x i1> %m, i32 zeroext %evl) {
1306 ; CHECK-LABEL: vxor_vi_v16i32:
1308 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1309 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
1311 %elt.head = insertelement <16 x i32> poison, i32 7, i32 0
1312 %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
1313 %v = call <16 x i32> @llvm.vp.xor.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> %m, i32 %evl)
1317 define <16 x i32> @vxor_vi_v16i32_unmasked(<16 x i32> %va, i32 zeroext %evl) {
1318 ; CHECK-LABEL: vxor_vi_v16i32_unmasked:
1320 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1321 ; CHECK-NEXT: vxor.vi v8, v8, 7
1323 %elt.head = insertelement <16 x i32> poison, i32 7, i32 0
1324 %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
1325 %head = insertelement <16 x i1> poison, i1 true, i32 0
1326 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
1327 %v = call <16 x i32> @llvm.vp.xor.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> %m, i32 %evl)
1331 define <16 x i32> @vxor_vi_v16i32_1(<16 x i32> %va, <16 x i1> %m, i32 zeroext %evl) {
1332 ; CHECK-LABEL: vxor_vi_v16i32_1:
1334 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1335 ; CHECK-NEXT: vnot.v v8, v8, v0.t
1337 %elt.head = insertelement <16 x i32> poison, i32 -1, i32 0
1338 %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
1339 %v = call <16 x i32> @llvm.vp.xor.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> %m, i32 %evl)
1343 define <16 x i32> @vxor_vi_v16i32_unmasked_1(<16 x i32> %va, i32 zeroext %evl) {
1344 ; CHECK-LABEL: vxor_vi_v16i32_unmasked_1:
1346 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1347 ; CHECK-NEXT: vnot.v v8, v8
1349 %elt.head = insertelement <16 x i32> poison, i32 -1, i32 0
1350 %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
1351 %head = insertelement <16 x i1> poison, i1 true, i32 0
1352 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
1353 %v = call <16 x i32> @llvm.vp.xor.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> %m, i32 %evl)
1357 declare <2 x i64> @llvm.vp.xor.v2i64(<2 x i64>, <2 x i64>, <2 x i1>, i32)
1359 define <2 x i64> @vxor_vv_v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 zeroext %evl) {
1360 ; CHECK-LABEL: vxor_vv_v2i64:
1362 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1363 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
1365 %v = call <2 x i64> @llvm.vp.xor.v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 %evl)
1369 define <2 x i64> @vxor_vv_v2i64_unmasked(<2 x i64> %va, <2 x i64> %b, i32 zeroext %evl) {
1370 ; CHECK-LABEL: vxor_vv_v2i64_unmasked:
1372 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1373 ; CHECK-NEXT: vxor.vv v8, v8, v9
1375 %head = insertelement <2 x i1> poison, i1 true, i32 0
1376 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
1377 %v = call <2 x i64> @llvm.vp.xor.v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 %evl)
1381 define <2 x i64> @vxor_vx_v2i64(<2 x i64> %va, i64 %b, <2 x i1> %m, i32 zeroext %evl) {
1382 ; RV32-LABEL: vxor_vx_v2i64:
1384 ; RV32-NEXT: addi sp, sp, -16
1385 ; RV32-NEXT: .cfi_def_cfa_offset 16
1386 ; RV32-NEXT: sw a1, 12(sp)
1387 ; RV32-NEXT: sw a0, 8(sp)
1388 ; RV32-NEXT: addi a0, sp, 8
1389 ; RV32-NEXT: vsetivli zero, 2, e64, m1, ta, ma
1390 ; RV32-NEXT: vlse64.v v9, (a0), zero
1391 ; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma
1392 ; RV32-NEXT: vxor.vv v8, v8, v9, v0.t
1393 ; RV32-NEXT: addi sp, sp, 16
1396 ; RV64-LABEL: vxor_vx_v2i64:
1398 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
1399 ; RV64-NEXT: vxor.vx v8, v8, a0, v0.t
1401 %elt.head = insertelement <2 x i64> poison, i64 %b, i32 0
1402 %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
1403 %v = call <2 x i64> @llvm.vp.xor.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> %m, i32 %evl)
1407 define <2 x i64> @vxor_vx_v2i64_unmasked(<2 x i64> %va, i64 %b, i32 zeroext %evl) {
1408 ; RV32-LABEL: vxor_vx_v2i64_unmasked:
1410 ; RV32-NEXT: addi sp, sp, -16
1411 ; RV32-NEXT: .cfi_def_cfa_offset 16
1412 ; RV32-NEXT: sw a1, 12(sp)
1413 ; RV32-NEXT: sw a0, 8(sp)
1414 ; RV32-NEXT: addi a0, sp, 8
1415 ; RV32-NEXT: vsetivli zero, 2, e64, m1, ta, ma
1416 ; RV32-NEXT: vlse64.v v9, (a0), zero
1417 ; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma
1418 ; RV32-NEXT: vxor.vv v8, v8, v9
1419 ; RV32-NEXT: addi sp, sp, 16
1422 ; RV64-LABEL: vxor_vx_v2i64_unmasked:
1424 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
1425 ; RV64-NEXT: vxor.vx v8, v8, a0
1427 %elt.head = insertelement <2 x i64> poison, i64 %b, i32 0
1428 %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
1429 %head = insertelement <2 x i1> poison, i1 true, i32 0
1430 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
1431 %v = call <2 x i64> @llvm.vp.xor.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> %m, i32 %evl)
1435 define <2 x i64> @vxor_vi_v2i64(<2 x i64> %va, <2 x i1> %m, i32 zeroext %evl) {
1436 ; CHECK-LABEL: vxor_vi_v2i64:
1438 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1439 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
1441 %elt.head = insertelement <2 x i64> poison, i64 7, i32 0
1442 %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
1443 %v = call <2 x i64> @llvm.vp.xor.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> %m, i32 %evl)
1447 define <2 x i64> @vxor_vi_v2i64_unmasked(<2 x i64> %va, i32 zeroext %evl) {
1448 ; CHECK-LABEL: vxor_vi_v2i64_unmasked:
1450 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1451 ; CHECK-NEXT: vxor.vi v8, v8, 7
1453 %elt.head = insertelement <2 x i64> poison, i64 7, i32 0
1454 %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
1455 %head = insertelement <2 x i1> poison, i1 true, i32 0
1456 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
1457 %v = call <2 x i64> @llvm.vp.xor.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> %m, i32 %evl)
1461 define <2 x i64> @vxor_vi_v2i64_1(<2 x i64> %va, <2 x i1> %m, i32 zeroext %evl) {
1462 ; CHECK-LABEL: vxor_vi_v2i64_1:
1464 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1465 ; CHECK-NEXT: vnot.v v8, v8, v0.t
1467 %elt.head = insertelement <2 x i64> poison, i64 -1, i32 0
1468 %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
1469 %v = call <2 x i64> @llvm.vp.xor.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> %m, i32 %evl)
1473 define <2 x i64> @vxor_vi_v2i64_unmasked_1(<2 x i64> %va, i32 zeroext %evl) {
1474 ; CHECK-LABEL: vxor_vi_v2i64_unmasked_1:
1476 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1477 ; CHECK-NEXT: vnot.v v8, v8
1479 %elt.head = insertelement <2 x i64> poison, i64 -1, i32 0
1480 %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
1481 %head = insertelement <2 x i1> poison, i1 true, i32 0
1482 %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
1483 %v = call <2 x i64> @llvm.vp.xor.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> %m, i32 %evl)
1487 declare <4 x i64> @llvm.vp.xor.v4i64(<4 x i64>, <4 x i64>, <4 x i1>, i32)
1489 define <4 x i64> @vxor_vv_v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 zeroext %evl) {
1490 ; CHECK-LABEL: vxor_vv_v4i64:
1492 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1493 ; CHECK-NEXT: vxor.vv v8, v8, v10, v0.t
1495 %v = call <4 x i64> @llvm.vp.xor.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 %evl)
1499 define <4 x i64> @vxor_vv_v4i64_unmasked(<4 x i64> %va, <4 x i64> %b, i32 zeroext %evl) {
1500 ; CHECK-LABEL: vxor_vv_v4i64_unmasked:
1502 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1503 ; CHECK-NEXT: vxor.vv v8, v8, v10
1505 %head = insertelement <4 x i1> poison, i1 true, i32 0
1506 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
1507 %v = call <4 x i64> @llvm.vp.xor.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 %evl)
1511 define <4 x i64> @vxor_vx_v4i64(<4 x i64> %va, i64 %b, <4 x i1> %m, i32 zeroext %evl) {
1512 ; RV32-LABEL: vxor_vx_v4i64:
1514 ; RV32-NEXT: addi sp, sp, -16
1515 ; RV32-NEXT: .cfi_def_cfa_offset 16
1516 ; RV32-NEXT: sw a1, 12(sp)
1517 ; RV32-NEXT: sw a0, 8(sp)
1518 ; RV32-NEXT: addi a0, sp, 8
1519 ; RV32-NEXT: vsetivli zero, 4, e64, m2, ta, ma
1520 ; RV32-NEXT: vlse64.v v10, (a0), zero
1521 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
1522 ; RV32-NEXT: vxor.vv v8, v8, v10, v0.t
1523 ; RV32-NEXT: addi sp, sp, 16
1526 ; RV64-LABEL: vxor_vx_v4i64:
1528 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
1529 ; RV64-NEXT: vxor.vx v8, v8, a0, v0.t
1531 %elt.head = insertelement <4 x i64> poison, i64 %b, i32 0
1532 %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
1533 %v = call <4 x i64> @llvm.vp.xor.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> %m, i32 %evl)
1537 define <4 x i64> @vxor_vx_v4i64_unmasked(<4 x i64> %va, i64 %b, i32 zeroext %evl) {
1538 ; RV32-LABEL: vxor_vx_v4i64_unmasked:
1540 ; RV32-NEXT: addi sp, sp, -16
1541 ; RV32-NEXT: .cfi_def_cfa_offset 16
1542 ; RV32-NEXT: sw a1, 12(sp)
1543 ; RV32-NEXT: sw a0, 8(sp)
1544 ; RV32-NEXT: addi a0, sp, 8
1545 ; RV32-NEXT: vsetivli zero, 4, e64, m2, ta, ma
1546 ; RV32-NEXT: vlse64.v v10, (a0), zero
1547 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
1548 ; RV32-NEXT: vxor.vv v8, v8, v10
1549 ; RV32-NEXT: addi sp, sp, 16
1552 ; RV64-LABEL: vxor_vx_v4i64_unmasked:
1554 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
1555 ; RV64-NEXT: vxor.vx v8, v8, a0
1557 %elt.head = insertelement <4 x i64> poison, i64 %b, i32 0
1558 %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
1559 %head = insertelement <4 x i1> poison, i1 true, i32 0
1560 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
1561 %v = call <4 x i64> @llvm.vp.xor.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> %m, i32 %evl)
1565 define <4 x i64> @vxor_vi_v4i64(<4 x i64> %va, <4 x i1> %m, i32 zeroext %evl) {
1566 ; CHECK-LABEL: vxor_vi_v4i64:
1568 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1569 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
1571 %elt.head = insertelement <4 x i64> poison, i64 7, i32 0
1572 %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
1573 %v = call <4 x i64> @llvm.vp.xor.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> %m, i32 %evl)
1577 define <4 x i64> @vxor_vi_v4i64_unmasked(<4 x i64> %va, i32 zeroext %evl) {
1578 ; CHECK-LABEL: vxor_vi_v4i64_unmasked:
1580 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1581 ; CHECK-NEXT: vxor.vi v8, v8, 7
1583 %elt.head = insertelement <4 x i64> poison, i64 7, i32 0
1584 %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
1585 %head = insertelement <4 x i1> poison, i1 true, i32 0
1586 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
1587 %v = call <4 x i64> @llvm.vp.xor.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> %m, i32 %evl)
1591 define <4 x i64> @vxor_vi_v4i64_1(<4 x i64> %va, <4 x i1> %m, i32 zeroext %evl) {
1592 ; CHECK-LABEL: vxor_vi_v4i64_1:
1594 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1595 ; CHECK-NEXT: vnot.v v8, v8, v0.t
1597 %elt.head = insertelement <4 x i64> poison, i64 -1, i32 0
1598 %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
1599 %v = call <4 x i64> @llvm.vp.xor.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> %m, i32 %evl)
1603 define <4 x i64> @vxor_vi_v4i64_unmasked_1(<4 x i64> %va, i32 zeroext %evl) {
1604 ; CHECK-LABEL: vxor_vi_v4i64_unmasked_1:
1606 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1607 ; CHECK-NEXT: vnot.v v8, v8
1609 %elt.head = insertelement <4 x i64> poison, i64 -1, i32 0
1610 %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
1611 %head = insertelement <4 x i1> poison, i1 true, i32 0
1612 %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
1613 %v = call <4 x i64> @llvm.vp.xor.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> %m, i32 %evl)
1617 declare <8 x i64> @llvm.vp.xor.v8i64(<8 x i64>, <8 x i64>, <8 x i1>, i32)
1619 define <8 x i64> @vxor_vv_v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 zeroext %evl) {
1620 ; CHECK-LABEL: vxor_vv_v8i64:
1622 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1623 ; CHECK-NEXT: vxor.vv v8, v8, v12, v0.t
1625 %v = call <8 x i64> @llvm.vp.xor.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 %evl)
1629 define <8 x i64> @vxor_vv_v8i64_unmasked(<8 x i64> %va, <8 x i64> %b, i32 zeroext %evl) {
1630 ; CHECK-LABEL: vxor_vv_v8i64_unmasked:
1632 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1633 ; CHECK-NEXT: vxor.vv v8, v8, v12
1635 %head = insertelement <8 x i1> poison, i1 true, i32 0
1636 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
1637 %v = call <8 x i64> @llvm.vp.xor.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 %evl)
1641 define <8 x i64> @vxor_vx_v8i64(<8 x i64> %va, i64 %b, <8 x i1> %m, i32 zeroext %evl) {
1642 ; RV32-LABEL: vxor_vx_v8i64:
1644 ; RV32-NEXT: addi sp, sp, -16
1645 ; RV32-NEXT: .cfi_def_cfa_offset 16
1646 ; RV32-NEXT: sw a1, 12(sp)
1647 ; RV32-NEXT: sw a0, 8(sp)
1648 ; RV32-NEXT: addi a0, sp, 8
1649 ; RV32-NEXT: vsetivli zero, 8, e64, m4, ta, ma
1650 ; RV32-NEXT: vlse64.v v12, (a0), zero
1651 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
1652 ; RV32-NEXT: vxor.vv v8, v8, v12, v0.t
1653 ; RV32-NEXT: addi sp, sp, 16
1656 ; RV64-LABEL: vxor_vx_v8i64:
1658 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
1659 ; RV64-NEXT: vxor.vx v8, v8, a0, v0.t
1661 %elt.head = insertelement <8 x i64> poison, i64 %b, i32 0
1662 %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
1663 %v = call <8 x i64> @llvm.vp.xor.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> %m, i32 %evl)
1667 define <8 x i64> @vxor_vx_v8i64_unmasked(<8 x i64> %va, i64 %b, i32 zeroext %evl) {
1668 ; RV32-LABEL: vxor_vx_v8i64_unmasked:
1670 ; RV32-NEXT: addi sp, sp, -16
1671 ; RV32-NEXT: .cfi_def_cfa_offset 16
1672 ; RV32-NEXT: sw a1, 12(sp)
1673 ; RV32-NEXT: sw a0, 8(sp)
1674 ; RV32-NEXT: addi a0, sp, 8
1675 ; RV32-NEXT: vsetivli zero, 8, e64, m4, ta, ma
1676 ; RV32-NEXT: vlse64.v v12, (a0), zero
1677 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
1678 ; RV32-NEXT: vxor.vv v8, v8, v12
1679 ; RV32-NEXT: addi sp, sp, 16
1682 ; RV64-LABEL: vxor_vx_v8i64_unmasked:
1684 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
1685 ; RV64-NEXT: vxor.vx v8, v8, a0
1687 %elt.head = insertelement <8 x i64> poison, i64 %b, i32 0
1688 %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
1689 %head = insertelement <8 x i1> poison, i1 true, i32 0
1690 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
1691 %v = call <8 x i64> @llvm.vp.xor.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> %m, i32 %evl)
1695 define <8 x i64> @vxor_vi_v8i64(<8 x i64> %va, <8 x i1> %m, i32 zeroext %evl) {
1696 ; CHECK-LABEL: vxor_vi_v8i64:
1698 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1699 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
1701 %elt.head = insertelement <8 x i64> poison, i64 7, i32 0
1702 %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
1703 %v = call <8 x i64> @llvm.vp.xor.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> %m, i32 %evl)
1707 define <8 x i64> @vxor_vi_v8i64_unmasked(<8 x i64> %va, i32 zeroext %evl) {
1708 ; CHECK-LABEL: vxor_vi_v8i64_unmasked:
1710 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1711 ; CHECK-NEXT: vxor.vi v8, v8, 7
1713 %elt.head = insertelement <8 x i64> poison, i64 7, i32 0
1714 %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
1715 %head = insertelement <8 x i1> poison, i1 true, i32 0
1716 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
1717 %v = call <8 x i64> @llvm.vp.xor.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> %m, i32 %evl)
1721 define <8 x i64> @vxor_vi_v8i64_1(<8 x i64> %va, <8 x i1> %m, i32 zeroext %evl) {
1722 ; CHECK-LABEL: vxor_vi_v8i64_1:
1724 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1725 ; CHECK-NEXT: vnot.v v8, v8, v0.t
1727 %elt.head = insertelement <8 x i64> poison, i64 -1, i32 0
1728 %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
1729 %v = call <8 x i64> @llvm.vp.xor.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> %m, i32 %evl)
1733 define <8 x i64> @vxor_vi_v8i64_unmasked_1(<8 x i64> %va, i32 zeroext %evl) {
1734 ; CHECK-LABEL: vxor_vi_v8i64_unmasked_1:
1736 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1737 ; CHECK-NEXT: vnot.v v8, v8
1739 %elt.head = insertelement <8 x i64> poison, i64 -1, i32 0
1740 %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
1741 %head = insertelement <8 x i1> poison, i1 true, i32 0
1742 %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
1743 %v = call <8 x i64> @llvm.vp.xor.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> %m, i32 %evl)
1747 declare <16 x i64> @llvm.vp.xor.v16i64(<16 x i64>, <16 x i64>, <16 x i1>, i32)
1749 define <16 x i64> @vxor_vv_v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 zeroext %evl) {
1750 ; CHECK-LABEL: vxor_vv_v16i64:
1752 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1753 ; CHECK-NEXT: vxor.vv v8, v8, v16, v0.t
1755 %v = call <16 x i64> @llvm.vp.xor.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 %evl)
1759 define <16 x i64> @vxor_vv_v16i64_unmasked(<16 x i64> %va, <16 x i64> %b, i32 zeroext %evl) {
1760 ; CHECK-LABEL: vxor_vv_v16i64_unmasked:
1762 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1763 ; CHECK-NEXT: vxor.vv v8, v8, v16
1765 %head = insertelement <16 x i1> poison, i1 true, i32 0
1766 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
1767 %v = call <16 x i64> @llvm.vp.xor.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 %evl)
1771 define <16 x i64> @vxor_vx_v16i64(<16 x i64> %va, i64 %b, <16 x i1> %m, i32 zeroext %evl) {
1772 ; RV32-LABEL: vxor_vx_v16i64:
1774 ; RV32-NEXT: addi sp, sp, -16
1775 ; RV32-NEXT: .cfi_def_cfa_offset 16
1776 ; RV32-NEXT: sw a1, 12(sp)
1777 ; RV32-NEXT: sw a0, 8(sp)
1778 ; RV32-NEXT: addi a0, sp, 8
1779 ; RV32-NEXT: vsetivli zero, 16, e64, m8, ta, ma
1780 ; RV32-NEXT: vlse64.v v16, (a0), zero
1781 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
1782 ; RV32-NEXT: vxor.vv v8, v8, v16, v0.t
1783 ; RV32-NEXT: addi sp, sp, 16
1786 ; RV64-LABEL: vxor_vx_v16i64:
1788 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1789 ; RV64-NEXT: vxor.vx v8, v8, a0, v0.t
1791 %elt.head = insertelement <16 x i64> poison, i64 %b, i32 0
1792 %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
1793 %v = call <16 x i64> @llvm.vp.xor.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> %m, i32 %evl)
1797 define <16 x i64> @vxor_vx_v16i64_unmasked(<16 x i64> %va, i64 %b, i32 zeroext %evl) {
1798 ; RV32-LABEL: vxor_vx_v16i64_unmasked:
1800 ; RV32-NEXT: addi sp, sp, -16
1801 ; RV32-NEXT: .cfi_def_cfa_offset 16
1802 ; RV32-NEXT: sw a1, 12(sp)
1803 ; RV32-NEXT: sw a0, 8(sp)
1804 ; RV32-NEXT: addi a0, sp, 8
1805 ; RV32-NEXT: vsetivli zero, 16, e64, m8, ta, ma
1806 ; RV32-NEXT: vlse64.v v16, (a0), zero
1807 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
1808 ; RV32-NEXT: vxor.vv v8, v8, v16
1809 ; RV32-NEXT: addi sp, sp, 16
1812 ; RV64-LABEL: vxor_vx_v16i64_unmasked:
1814 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1815 ; RV64-NEXT: vxor.vx v8, v8, a0
1817 %elt.head = insertelement <16 x i64> poison, i64 %b, i32 0
1818 %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
1819 %head = insertelement <16 x i1> poison, i1 true, i32 0
1820 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
1821 %v = call <16 x i64> @llvm.vp.xor.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> %m, i32 %evl)
1825 define <16 x i64> @vxor_vi_v16i64(<16 x i64> %va, <16 x i1> %m, i32 zeroext %evl) {
1826 ; CHECK-LABEL: vxor_vi_v16i64:
1828 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1829 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
1831 %elt.head = insertelement <16 x i64> poison, i64 7, i32 0
1832 %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
1833 %v = call <16 x i64> @llvm.vp.xor.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> %m, i32 %evl)
1837 define <16 x i64> @vxor_vi_v16i64_unmasked(<16 x i64> %va, i32 zeroext %evl) {
1838 ; CHECK-LABEL: vxor_vi_v16i64_unmasked:
1840 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1841 ; CHECK-NEXT: vxor.vi v8, v8, 7
1843 %elt.head = insertelement <16 x i64> poison, i64 7, i32 0
1844 %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
1845 %head = insertelement <16 x i1> poison, i1 true, i32 0
1846 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
1847 %v = call <16 x i64> @llvm.vp.xor.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> %m, i32 %evl)
1851 define <16 x i64> @vxor_vi_v16i64_1(<16 x i64> %va, <16 x i1> %m, i32 zeroext %evl) {
1852 ; CHECK-LABEL: vxor_vi_v16i64_1:
1854 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1855 ; CHECK-NEXT: vnot.v v8, v8, v0.t
1857 %elt.head = insertelement <16 x i64> poison, i64 -1, i32 0
1858 %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
1859 %v = call <16 x i64> @llvm.vp.xor.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> %m, i32 %evl)
1863 define <16 x i64> @vxor_vi_v16i64_unmasked_1(<16 x i64> %va, i32 zeroext %evl) {
1864 ; CHECK-LABEL: vxor_vi_v16i64_unmasked_1:
1866 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1867 ; CHECK-NEXT: vnot.v v8, v8
1869 %elt.head = insertelement <16 x i64> poison, i64 -1, i32 0
1870 %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
1871 %head = insertelement <16 x i1> poison, i1 true, i32 0
1872 %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
1873 %v = call <16 x i64> @llvm.vp.xor.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> %m, i32 %evl)