[RISCV] Support postRA vsetvl insertion pass (#70549)
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / fixed-vectors-vxor-vp.ll
blob16487a0784125e85227545b70b6c97b1900ea58b
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:
11 ; CHECK:       # %bb.0:
12 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
13 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
14 ; CHECK-NEXT:    ret
15   %v = call <8 x i7> @llvm.vp.xor.v8i7(<8 x i7> %va, <8 x i7> %b, <8 x i1> %m, i32 %evl)
16   ret <8 x i7> %v
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:
23 ; CHECK:       # %bb.0:
24 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
25 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
26 ; CHECK-NEXT:    ret
27   %v = call <2 x i8> @llvm.vp.xor.v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> %m, i32 %evl)
28   ret <2 x i8> %v
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:
33 ; CHECK:       # %bb.0:
34 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
35 ; CHECK-NEXT:    vxor.vv v8, v8, v9
36 ; CHECK-NEXT:    ret
37   %v = call <2 x i8> @llvm.vp.xor.v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> splat (i1 true), i32 %evl)
38   ret <2 x i8> %v
41 define <2 x i8> @vxor_vx_v2i8(<2 x i8> %va, i8 %b, <2 x i1> %m, i32 zeroext %evl) {
42 ; CHECK-LABEL: vxor_vx_v2i8:
43 ; CHECK:       # %bb.0:
44 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
45 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
46 ; CHECK-NEXT:    ret
47   %elt.head = insertelement <2 x i8> poison, i8 %b, i32 0
48   %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
49   %v = call <2 x i8> @llvm.vp.xor.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> %m, i32 %evl)
50   ret <2 x i8> %v
53 define <2 x i8> @vxor_vx_v2i8_commute(<2 x i8> %va, i8 %b, <2 x i1> %m, i32 zeroext %evl) {
54 ; CHECK-LABEL: vxor_vx_v2i8_commute:
55 ; CHECK:       # %bb.0:
56 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
57 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
58 ; CHECK-NEXT:    ret
59   %elt.head = insertelement <2 x i8> poison, i8 %b, i32 0
60   %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
61   %v = call <2 x i8> @llvm.vp.xor.v2i8(<2 x i8> %vb, <2 x i8> %va, <2 x i1> %m, i32 %evl)
62   ret <2 x i8> %v
65 define <2 x i8> @vxor_vx_v2i8_unmasked(<2 x i8> %va, i8 %b, i32 zeroext %evl) {
66 ; CHECK-LABEL: vxor_vx_v2i8_unmasked:
67 ; CHECK:       # %bb.0:
68 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
69 ; CHECK-NEXT:    vxor.vx v8, v8, a0
70 ; CHECK-NEXT:    ret
71   %elt.head = insertelement <2 x i8> poison, i8 %b, i32 0
72   %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
73   %v = call <2 x i8> @llvm.vp.xor.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> splat (i1 true), i32 %evl)
74   ret <2 x i8> %v
77 define <2 x i8> @vxor_vi_v2i8(<2 x i8> %va, <2 x i1> %m, i32 zeroext %evl) {
78 ; CHECK-LABEL: vxor_vi_v2i8:
79 ; CHECK:       # %bb.0:
80 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
81 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
82 ; CHECK-NEXT:    ret
83   %v = call <2 x i8> @llvm.vp.xor.v2i8(<2 x i8> %va, <2 x i8> splat (i8 7), <2 x i1> %m, i32 %evl)
84   ret <2 x i8> %v
87 define <2 x i8> @vxor_vi_v2i8_unmasked(<2 x i8> %va, i32 zeroext %evl) {
88 ; CHECK-LABEL: vxor_vi_v2i8_unmasked:
89 ; CHECK:       # %bb.0:
90 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
91 ; CHECK-NEXT:    vxor.vi v8, v8, 7
92 ; CHECK-NEXT:    ret
93   %v = call <2 x i8> @llvm.vp.xor.v2i8(<2 x i8> %va, <2 x i8> splat (i8 7), <2 x i1> splat (i1 true), i32 %evl)
94   ret <2 x i8> %v
97 define <2 x i8> @vxor_vi_v2i8_1(<2 x i8> %va, <2 x i1> %m, i32 zeroext %evl) {
98 ; CHECK-LABEL: vxor_vi_v2i8_1:
99 ; CHECK:       # %bb.0:
100 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
101 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
102 ; CHECK-NEXT:    ret
103   %v = call <2 x i8> @llvm.vp.xor.v2i8(<2 x i8> %va, <2 x i8> splat (i8 -1), <2 x i1> %m, i32 %evl)
104   ret <2 x i8> %v
107 define <2 x i8> @vxor_vi_v2i8_unmasked_1(<2 x i8> %va, i32 zeroext %evl) {
108 ; CHECK-LABEL: vxor_vi_v2i8_unmasked_1:
109 ; CHECK:       # %bb.0:
110 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
111 ; CHECK-NEXT:    vnot.v v8, v8
112 ; CHECK-NEXT:    ret
113   %v = call <2 x i8> @llvm.vp.xor.v2i8(<2 x i8> %va, <2 x i8> splat (i8 -1), <2 x i1> splat (i1 true), i32 %evl)
114   ret <2 x i8> %v
117 declare <4 x i8> @llvm.vp.xor.v4i8(<4 x i8>, <4 x i8>, <4 x i1>, i32)
119 define <4 x i8> @vxor_vv_v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 zeroext %evl) {
120 ; CHECK-LABEL: vxor_vv_v4i8:
121 ; CHECK:       # %bb.0:
122 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
123 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
124 ; CHECK-NEXT:    ret
125   %v = call <4 x i8> @llvm.vp.xor.v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 %evl)
126   ret <4 x i8> %v
129 define <4 x i8> @vxor_vv_v4i8_unmasked(<4 x i8> %va, <4 x i8> %b, i32 zeroext %evl) {
130 ; CHECK-LABEL: vxor_vv_v4i8_unmasked:
131 ; CHECK:       # %bb.0:
132 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
133 ; CHECK-NEXT:    vxor.vv v8, v8, v9
134 ; CHECK-NEXT:    ret
135   %v = call <4 x i8> @llvm.vp.xor.v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> splat (i1 true), i32 %evl)
136   ret <4 x i8> %v
139 define <4 x i8> @vxor_vx_v4i8(<4 x i8> %va, i8 %b, <4 x i1> %m, i32 zeroext %evl) {
140 ; CHECK-LABEL: vxor_vx_v4i8:
141 ; CHECK:       # %bb.0:
142 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
143 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
144 ; CHECK-NEXT:    ret
145   %elt.head = insertelement <4 x i8> poison, i8 %b, i32 0
146   %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
147   %v = call <4 x i8> @llvm.vp.xor.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> %m, i32 %evl)
148   ret <4 x i8> %v
151 define <4 x i8> @vxor_vx_v4i8_unmasked(<4 x i8> %va, i8 %b, i32 zeroext %evl) {
152 ; CHECK-LABEL: vxor_vx_v4i8_unmasked:
153 ; CHECK:       # %bb.0:
154 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
155 ; CHECK-NEXT:    vxor.vx v8, v8, a0
156 ; CHECK-NEXT:    ret
157   %elt.head = insertelement <4 x i8> poison, i8 %b, i32 0
158   %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
159   %v = call <4 x i8> @llvm.vp.xor.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> splat (i1 true), i32 %evl)
160   ret <4 x i8> %v
163 define <4 x i8> @vxor_vi_v4i8(<4 x i8> %va, <4 x i1> %m, i32 zeroext %evl) {
164 ; CHECK-LABEL: vxor_vi_v4i8:
165 ; CHECK:       # %bb.0:
166 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
167 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
168 ; CHECK-NEXT:    ret
169   %v = call <4 x i8> @llvm.vp.xor.v4i8(<4 x i8> %va, <4 x i8> splat (i8 7), <4 x i1> %m, i32 %evl)
170   ret <4 x i8> %v
173 define <4 x i8> @vxor_vi_v4i8_unmasked(<4 x i8> %va, i32 zeroext %evl) {
174 ; CHECK-LABEL: vxor_vi_v4i8_unmasked:
175 ; CHECK:       # %bb.0:
176 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
177 ; CHECK-NEXT:    vxor.vi v8, v8, 7
178 ; CHECK-NEXT:    ret
179   %v = call <4 x i8> @llvm.vp.xor.v4i8(<4 x i8> %va, <4 x i8> splat (i8 7), <4 x i1> splat (i1 true), i32 %evl)
180   ret <4 x i8> %v
183 define <4 x i8> @vxor_vi_v4i8_1(<4 x i8> %va, <4 x i1> %m, i32 zeroext %evl) {
184 ; CHECK-LABEL: vxor_vi_v4i8_1:
185 ; CHECK:       # %bb.0:
186 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
187 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
188 ; CHECK-NEXT:    ret
189   %v = call <4 x i8> @llvm.vp.xor.v4i8(<4 x i8> %va, <4 x i8> splat (i8 -1), <4 x i1> %m, i32 %evl)
190   ret <4 x i8> %v
193 define <4 x i8> @vxor_vi_v4i8_unmasked_1(<4 x i8> %va, i32 zeroext %evl) {
194 ; CHECK-LABEL: vxor_vi_v4i8_unmasked_1:
195 ; CHECK:       # %bb.0:
196 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
197 ; CHECK-NEXT:    vnot.v v8, v8
198 ; CHECK-NEXT:    ret
199   %v = call <4 x i8> @llvm.vp.xor.v4i8(<4 x i8> %va, <4 x i8> splat (i8 -1), <4 x i1> splat (i1 true), i32 %evl)
200   ret <4 x i8> %v
203 declare <8 x i8> @llvm.vp.xor.v8i8(<8 x i8>, <8 x i8>, <8 x i1>, i32)
205 define <8 x i8> @vxor_vv_v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 zeroext %evl) {
206 ; CHECK-LABEL: vxor_vv_v8i8:
207 ; CHECK:       # %bb.0:
208 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
209 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
210 ; CHECK-NEXT:    ret
211   %v = call <8 x i8> @llvm.vp.xor.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 %evl)
212   ret <8 x i8> %v
215 define <8 x i8> @vxor_vv_v8i8_unmasked(<8 x i8> %va, <8 x i8> %b, i32 zeroext %evl) {
216 ; CHECK-LABEL: vxor_vv_v8i8_unmasked:
217 ; CHECK:       # %bb.0:
218 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
219 ; CHECK-NEXT:    vxor.vv v8, v8, v9
220 ; CHECK-NEXT:    ret
221   %v = call <8 x i8> @llvm.vp.xor.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> splat (i1 true), i32 %evl)
222   ret <8 x i8> %v
225 define <8 x i8> @vxor_vx_v8i8(<8 x i8> %va, i8 %b, <8 x i1> %m, i32 zeroext %evl) {
226 ; CHECK-LABEL: vxor_vx_v8i8:
227 ; CHECK:       # %bb.0:
228 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
229 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
230 ; CHECK-NEXT:    ret
231   %elt.head = insertelement <8 x i8> poison, i8 %b, i32 0
232   %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
233   %v = call <8 x i8> @llvm.vp.xor.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> %m, i32 %evl)
234   ret <8 x i8> %v
237 define <8 x i8> @vxor_vx_v8i8_unmasked(<8 x i8> %va, i8 %b, i32 zeroext %evl) {
238 ; CHECK-LABEL: vxor_vx_v8i8_unmasked:
239 ; CHECK:       # %bb.0:
240 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
241 ; CHECK-NEXT:    vxor.vx v8, v8, a0
242 ; CHECK-NEXT:    ret
243   %elt.head = insertelement <8 x i8> poison, i8 %b, i32 0
244   %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
245   %v = call <8 x i8> @llvm.vp.xor.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> splat (i1 true), i32 %evl)
246   ret <8 x i8> %v
249 define <8 x i8> @vxor_vi_v8i8(<8 x i8> %va, <8 x i1> %m, i32 zeroext %evl) {
250 ; CHECK-LABEL: vxor_vi_v8i8:
251 ; CHECK:       # %bb.0:
252 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
253 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
254 ; CHECK-NEXT:    ret
255   %v = call <8 x i8> @llvm.vp.xor.v8i8(<8 x i8> %va, <8 x i8> splat (i8 7), <8 x i1> %m, i32 %evl)
256   ret <8 x i8> %v
259 define <8 x i8> @vxor_vi_v8i8_unmasked(<8 x i8> %va, i32 zeroext %evl) {
260 ; CHECK-LABEL: vxor_vi_v8i8_unmasked:
261 ; CHECK:       # %bb.0:
262 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
263 ; CHECK-NEXT:    vxor.vi v8, v8, 7
264 ; CHECK-NEXT:    ret
265   %v = call <8 x i8> @llvm.vp.xor.v8i8(<8 x i8> %va, <8 x i8> splat (i8 7), <8 x i1> splat (i1 true), i32 %evl)
266   ret <8 x i8> %v
269 define <8 x i8> @vxor_vi_v8i8_1(<8 x i8> %va, <8 x i1> %m, i32 zeroext %evl) {
270 ; CHECK-LABEL: vxor_vi_v8i8_1:
271 ; CHECK:       # %bb.0:
272 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
273 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
274 ; CHECK-NEXT:    ret
275   %v = call <8 x i8> @llvm.vp.xor.v8i8(<8 x i8> %va, <8 x i8> splat (i8 -1), <8 x i1> %m, i32 %evl)
276   ret <8 x i8> %v
279 define <8 x i8> @vxor_vi_v8i8_unmasked_1(<8 x i8> %va, i32 zeroext %evl) {
280 ; CHECK-LABEL: vxor_vi_v8i8_unmasked_1:
281 ; CHECK:       # %bb.0:
282 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
283 ; CHECK-NEXT:    vnot.v v8, v8
284 ; CHECK-NEXT:    ret
285   %v = call <8 x i8> @llvm.vp.xor.v8i8(<8 x i8> %va, <8 x i8> splat (i8 -1), <8 x i1> splat (i1 true), i32 %evl)
286   ret <8 x i8> %v
289 declare <9 x i8> @llvm.vp.xor.v9i8(<9 x i8>, <9 x i8>, <9 x i1>, i32)
291 define <9 x i8> @vxor_vv_v9i8(<9 x i8> %va, <9 x i8> %b, <9 x i1> %m, i32 zeroext %evl) {
292 ; CHECK-LABEL: vxor_vv_v9i8:
293 ; CHECK:       # %bb.0:
294 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
295 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
296 ; CHECK-NEXT:    ret
297   %v = call <9 x i8> @llvm.vp.xor.v9i8(<9 x i8> %va, <9 x i8> %b, <9 x i1> %m, i32 %evl)
298   ret <9 x i8> %v
301 define <9 x i8> @vxor_vv_v9i8_unmasked(<9 x i8> %va, <9 x i8> %b, i32 zeroext %evl) {
302 ; CHECK-LABEL: vxor_vv_v9i8_unmasked:
303 ; CHECK:       # %bb.0:
304 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
305 ; CHECK-NEXT:    vxor.vv v8, v8, v9
306 ; CHECK-NEXT:    ret
307   %v = call <9 x i8> @llvm.vp.xor.v9i8(<9 x i8> %va, <9 x i8> %b, <9 x i1> splat (i1 true), i32 %evl)
308   ret <9 x i8> %v
311 define <9 x i8> @vxor_vx_v9i8(<9 x i8> %va, i8 %b, <9 x i1> %m, i32 zeroext %evl) {
312 ; CHECK-LABEL: vxor_vx_v9i8:
313 ; CHECK:       # %bb.0:
314 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
315 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
316 ; CHECK-NEXT:    ret
317   %elt.head = insertelement <9 x i8> poison, i8 %b, i32 0
318   %vb = shufflevector <9 x i8> %elt.head, <9 x i8> poison, <9 x i32> zeroinitializer
319   %v = call <9 x i8> @llvm.vp.xor.v9i8(<9 x i8> %va, <9 x i8> %vb, <9 x i1> %m, i32 %evl)
320   ret <9 x i8> %v
323 define <9 x i8> @vxor_vx_v9i8_unmasked(<9 x i8> %va, i8 %b, i32 zeroext %evl) {
324 ; CHECK-LABEL: vxor_vx_v9i8_unmasked:
325 ; CHECK:       # %bb.0:
326 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
327 ; CHECK-NEXT:    vxor.vx v8, v8, a0
328 ; CHECK-NEXT:    ret
329   %elt.head = insertelement <9 x i8> poison, i8 %b, i32 0
330   %vb = shufflevector <9 x i8> %elt.head, <9 x i8> poison, <9 x i32> zeroinitializer
331   %v = call <9 x i8> @llvm.vp.xor.v9i8(<9 x i8> %va, <9 x i8> %vb, <9 x i1> splat (i1 true), i32 %evl)
332   ret <9 x i8> %v
335 define <9 x i8> @vxor_vi_v9i8(<9 x i8> %va, <9 x i1> %m, i32 zeroext %evl) {
336 ; CHECK-LABEL: vxor_vi_v9i8:
337 ; CHECK:       # %bb.0:
338 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
339 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
340 ; CHECK-NEXT:    ret
341   %v = call <9 x i8> @llvm.vp.xor.v9i8(<9 x i8> %va, <9 x i8> splat (i8 7), <9 x i1> %m, i32 %evl)
342   ret <9 x i8> %v
345 define <9 x i8> @vxor_vi_v9i8_unmasked(<9 x i8> %va, i32 zeroext %evl) {
346 ; CHECK-LABEL: vxor_vi_v9i8_unmasked:
347 ; CHECK:       # %bb.0:
348 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
349 ; CHECK-NEXT:    vxor.vi v8, v8, 7
350 ; CHECK-NEXT:    ret
351   %v = call <9 x i8> @llvm.vp.xor.v9i8(<9 x i8> %va, <9 x i8> splat (i8 7), <9 x i1> splat (i1 true), i32 %evl)
352   ret <9 x i8> %v
355 define <9 x i8> @vxor_vi_v9i8_1(<9 x i8> %va, <9 x i1> %m, i32 zeroext %evl) {
356 ; CHECK-LABEL: vxor_vi_v9i8_1:
357 ; CHECK:       # %bb.0:
358 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
359 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
360 ; CHECK-NEXT:    ret
361   %v = call <9 x i8> @llvm.vp.xor.v9i8(<9 x i8> %va, <9 x i8> splat (i8 -1), <9 x i1> %m, i32 %evl)
362   ret <9 x i8> %v
365 define <9 x i8> @vxor_vi_v9i8_unmasked_1(<9 x i8> %va, i32 zeroext %evl) {
366 ; CHECK-LABEL: vxor_vi_v9i8_unmasked_1:
367 ; CHECK:       # %bb.0:
368 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
369 ; CHECK-NEXT:    vnot.v v8, v8
370 ; CHECK-NEXT:    ret
371   %v = call <9 x i8> @llvm.vp.xor.v9i8(<9 x i8> %va, <9 x i8> splat (i8 -1), <9 x i1> splat (i1 true), i32 %evl)
372   ret <9 x i8> %v
375 declare <16 x i8> @llvm.vp.xor.v16i8(<16 x i8>, <16 x i8>, <16 x i1>, i32)
377 define <16 x i8> @vxor_vv_v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 zeroext %evl) {
378 ; CHECK-LABEL: vxor_vv_v16i8:
379 ; CHECK:       # %bb.0:
380 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
381 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
382 ; CHECK-NEXT:    ret
383   %v = call <16 x i8> @llvm.vp.xor.v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 %evl)
384   ret <16 x i8> %v
387 define <16 x i8> @vxor_vv_v16i8_unmasked(<16 x i8> %va, <16 x i8> %b, i32 zeroext %evl) {
388 ; CHECK-LABEL: vxor_vv_v16i8_unmasked:
389 ; CHECK:       # %bb.0:
390 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
391 ; CHECK-NEXT:    vxor.vv v8, v8, v9
392 ; CHECK-NEXT:    ret
393   %v = call <16 x i8> @llvm.vp.xor.v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> splat (i1 true), i32 %evl)
394   ret <16 x i8> %v
397 define <16 x i8> @vxor_vx_v16i8(<16 x i8> %va, i8 %b, <16 x i1> %m, i32 zeroext %evl) {
398 ; CHECK-LABEL: vxor_vx_v16i8:
399 ; CHECK:       # %bb.0:
400 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
401 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
402 ; CHECK-NEXT:    ret
403   %elt.head = insertelement <16 x i8> poison, i8 %b, i32 0
404   %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
405   %v = call <16 x i8> @llvm.vp.xor.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> %m, i32 %evl)
406   ret <16 x i8> %v
409 define <16 x i8> @vxor_vx_v16i8_unmasked(<16 x i8> %va, i8 %b, i32 zeroext %evl) {
410 ; CHECK-LABEL: vxor_vx_v16i8_unmasked:
411 ; CHECK:       # %bb.0:
412 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
413 ; CHECK-NEXT:    vxor.vx v8, v8, a0
414 ; CHECK-NEXT:    ret
415   %elt.head = insertelement <16 x i8> poison, i8 %b, i32 0
416   %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
417   %v = call <16 x i8> @llvm.vp.xor.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> splat (i1 true), i32 %evl)
418   ret <16 x i8> %v
421 define <16 x i8> @vxor_vi_v16i8(<16 x i8> %va, <16 x i1> %m, i32 zeroext %evl) {
422 ; CHECK-LABEL: vxor_vi_v16i8:
423 ; CHECK:       # %bb.0:
424 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
425 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
426 ; CHECK-NEXT:    ret
427   %v = call <16 x i8> @llvm.vp.xor.v16i8(<16 x i8> %va, <16 x i8> splat (i8 7), <16 x i1> %m, i32 %evl)
428   ret <16 x i8> %v
431 define <16 x i8> @vxor_vi_v16i8_unmasked(<16 x i8> %va, i32 zeroext %evl) {
432 ; CHECK-LABEL: vxor_vi_v16i8_unmasked:
433 ; CHECK:       # %bb.0:
434 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
435 ; CHECK-NEXT:    vxor.vi v8, v8, 7
436 ; CHECK-NEXT:    ret
437   %v = call <16 x i8> @llvm.vp.xor.v16i8(<16 x i8> %va, <16 x i8> splat (i8 7), <16 x i1> splat (i1 true), i32 %evl)
438   ret <16 x i8> %v
441 define <16 x i8> @vxor_vi_v16i8_1(<16 x i8> %va, <16 x i1> %m, i32 zeroext %evl) {
442 ; CHECK-LABEL: vxor_vi_v16i8_1:
443 ; CHECK:       # %bb.0:
444 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
445 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
446 ; CHECK-NEXT:    ret
447   %v = call <16 x i8> @llvm.vp.xor.v16i8(<16 x i8> %va, <16 x i8> splat (i8 -1), <16 x i1> %m, i32 %evl)
448   ret <16 x i8> %v
451 define <16 x i8> @vxor_vi_v16i8_unmasked_1(<16 x i8> %va, i32 zeroext %evl) {
452 ; CHECK-LABEL: vxor_vi_v16i8_unmasked_1:
453 ; CHECK:       # %bb.0:
454 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
455 ; CHECK-NEXT:    vnot.v v8, v8
456 ; CHECK-NEXT:    ret
457   %v = call <16 x i8> @llvm.vp.xor.v16i8(<16 x i8> %va, <16 x i8> splat (i8 -1), <16 x i1> splat (i1 true), i32 %evl)
458   ret <16 x i8> %v
461 declare <2 x i16> @llvm.vp.xor.v2i16(<2 x i16>, <2 x i16>, <2 x i1>, i32)
463 define <2 x i16> @vxor_vv_v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 zeroext %evl) {
464 ; CHECK-LABEL: vxor_vv_v2i16:
465 ; CHECK:       # %bb.0:
466 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
467 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
468 ; CHECK-NEXT:    ret
469   %v = call <2 x i16> @llvm.vp.xor.v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 %evl)
470   ret <2 x i16> %v
473 define <2 x i16> @vxor_vv_v2i16_unmasked(<2 x i16> %va, <2 x i16> %b, i32 zeroext %evl) {
474 ; CHECK-LABEL: vxor_vv_v2i16_unmasked:
475 ; CHECK:       # %bb.0:
476 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
477 ; CHECK-NEXT:    vxor.vv v8, v8, v9
478 ; CHECK-NEXT:    ret
479   %v = call <2 x i16> @llvm.vp.xor.v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> splat (i1 true), i32 %evl)
480   ret <2 x i16> %v
483 define <2 x i16> @vxor_vx_v2i16(<2 x i16> %va, i16 %b, <2 x i1> %m, i32 zeroext %evl) {
484 ; CHECK-LABEL: vxor_vx_v2i16:
485 ; CHECK:       # %bb.0:
486 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
487 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
488 ; CHECK-NEXT:    ret
489   %elt.head = insertelement <2 x i16> poison, i16 %b, i32 0
490   %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
491   %v = call <2 x i16> @llvm.vp.xor.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> %m, i32 %evl)
492   ret <2 x i16> %v
495 define <2 x i16> @vxor_vx_v2i16_unmasked(<2 x i16> %va, i16 %b, i32 zeroext %evl) {
496 ; CHECK-LABEL: vxor_vx_v2i16_unmasked:
497 ; CHECK:       # %bb.0:
498 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
499 ; CHECK-NEXT:    vxor.vx v8, v8, a0
500 ; CHECK-NEXT:    ret
501   %elt.head = insertelement <2 x i16> poison, i16 %b, i32 0
502   %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
503   %v = call <2 x i16> @llvm.vp.xor.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> splat (i1 true), i32 %evl)
504   ret <2 x i16> %v
507 define <2 x i16> @vxor_vi_v2i16(<2 x i16> %va, <2 x i1> %m, i32 zeroext %evl) {
508 ; CHECK-LABEL: vxor_vi_v2i16:
509 ; CHECK:       # %bb.0:
510 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
511 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
512 ; CHECK-NEXT:    ret
513   %v = call <2 x i16> @llvm.vp.xor.v2i16(<2 x i16> %va, <2 x i16> splat (i16 7), <2 x i1> %m, i32 %evl)
514   ret <2 x i16> %v
517 define <2 x i16> @vxor_vi_v2i16_unmasked(<2 x i16> %va, i32 zeroext %evl) {
518 ; CHECK-LABEL: vxor_vi_v2i16_unmasked:
519 ; CHECK:       # %bb.0:
520 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
521 ; CHECK-NEXT:    vxor.vi v8, v8, 7
522 ; CHECK-NEXT:    ret
523   %v = call <2 x i16> @llvm.vp.xor.v2i16(<2 x i16> %va, <2 x i16> splat (i16 7), <2 x i1> splat (i1 true), i32 %evl)
524   ret <2 x i16> %v
527 define <2 x i16> @vxor_vi_v2i16_1(<2 x i16> %va, <2 x i1> %m, i32 zeroext %evl) {
528 ; CHECK-LABEL: vxor_vi_v2i16_1:
529 ; CHECK:       # %bb.0:
530 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
531 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
532 ; CHECK-NEXT:    ret
533   %v = call <2 x i16> @llvm.vp.xor.v2i16(<2 x i16> %va, <2 x i16> splat (i16 -1), <2 x i1> %m, i32 %evl)
534   ret <2 x i16> %v
537 define <2 x i16> @vxor_vi_v2i16_unmasked_1(<2 x i16> %va, i32 zeroext %evl) {
538 ; CHECK-LABEL: vxor_vi_v2i16_unmasked_1:
539 ; CHECK:       # %bb.0:
540 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
541 ; CHECK-NEXT:    vnot.v v8, v8
542 ; CHECK-NEXT:    ret
543   %v = call <2 x i16> @llvm.vp.xor.v2i16(<2 x i16> %va, <2 x i16> splat (i16 -1), <2 x i1> splat (i1 true), i32 %evl)
544   ret <2 x i16> %v
547 declare <4 x i16> @llvm.vp.xor.v4i16(<4 x i16>, <4 x i16>, <4 x i1>, i32)
549 define <4 x i16> @vxor_vv_v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 zeroext %evl) {
550 ; CHECK-LABEL: vxor_vv_v4i16:
551 ; CHECK:       # %bb.0:
552 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
553 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
554 ; CHECK-NEXT:    ret
555   %v = call <4 x i16> @llvm.vp.xor.v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 %evl)
556   ret <4 x i16> %v
559 define <4 x i16> @vxor_vv_v4i16_unmasked(<4 x i16> %va, <4 x i16> %b, i32 zeroext %evl) {
560 ; CHECK-LABEL: vxor_vv_v4i16_unmasked:
561 ; CHECK:       # %bb.0:
562 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
563 ; CHECK-NEXT:    vxor.vv v8, v8, v9
564 ; CHECK-NEXT:    ret
565   %v = call <4 x i16> @llvm.vp.xor.v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> splat (i1 true), i32 %evl)
566   ret <4 x i16> %v
569 define <4 x i16> @vxor_vx_v4i16(<4 x i16> %va, i16 %b, <4 x i1> %m, i32 zeroext %evl) {
570 ; CHECK-LABEL: vxor_vx_v4i16:
571 ; CHECK:       # %bb.0:
572 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
573 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
574 ; CHECK-NEXT:    ret
575   %elt.head = insertelement <4 x i16> poison, i16 %b, i32 0
576   %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
577   %v = call <4 x i16> @llvm.vp.xor.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> %m, i32 %evl)
578   ret <4 x i16> %v
581 define <4 x i16> @vxor_vx_v4i16_unmasked(<4 x i16> %va, i16 %b, i32 zeroext %evl) {
582 ; CHECK-LABEL: vxor_vx_v4i16_unmasked:
583 ; CHECK:       # %bb.0:
584 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
585 ; CHECK-NEXT:    vxor.vx v8, v8, a0
586 ; CHECK-NEXT:    ret
587   %elt.head = insertelement <4 x i16> poison, i16 %b, i32 0
588   %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
589   %v = call <4 x i16> @llvm.vp.xor.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> splat (i1 true), i32 %evl)
590   ret <4 x i16> %v
593 define <4 x i16> @vxor_vi_v4i16(<4 x i16> %va, <4 x i1> %m, i32 zeroext %evl) {
594 ; CHECK-LABEL: vxor_vi_v4i16:
595 ; CHECK:       # %bb.0:
596 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
597 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
598 ; CHECK-NEXT:    ret
599   %v = call <4 x i16> @llvm.vp.xor.v4i16(<4 x i16> %va, <4 x i16> splat (i16 7), <4 x i1> %m, i32 %evl)
600   ret <4 x i16> %v
603 define <4 x i16> @vxor_vi_v4i16_unmasked(<4 x i16> %va, i32 zeroext %evl) {
604 ; CHECK-LABEL: vxor_vi_v4i16_unmasked:
605 ; CHECK:       # %bb.0:
606 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
607 ; CHECK-NEXT:    vxor.vi v8, v8, 7
608 ; CHECK-NEXT:    ret
609   %v = call <4 x i16> @llvm.vp.xor.v4i16(<4 x i16> %va, <4 x i16> splat (i16 7), <4 x i1> splat (i1 true), i32 %evl)
610   ret <4 x i16> %v
613 define <4 x i16> @vxor_vi_v4i16_1(<4 x i16> %va, <4 x i1> %m, i32 zeroext %evl) {
614 ; CHECK-LABEL: vxor_vi_v4i16_1:
615 ; CHECK:       # %bb.0:
616 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
617 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
618 ; CHECK-NEXT:    ret
619   %v = call <4 x i16> @llvm.vp.xor.v4i16(<4 x i16> %va, <4 x i16> splat (i16 -1), <4 x i1> %m, i32 %evl)
620   ret <4 x i16> %v
623 define <4 x i16> @vxor_vi_v4i16_unmasked_1(<4 x i16> %va, i32 zeroext %evl) {
624 ; CHECK-LABEL: vxor_vi_v4i16_unmasked_1:
625 ; CHECK:       # %bb.0:
626 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
627 ; CHECK-NEXT:    vnot.v v8, v8
628 ; CHECK-NEXT:    ret
629   %v = call <4 x i16> @llvm.vp.xor.v4i16(<4 x i16> %va, <4 x i16> splat (i16 -1), <4 x i1> splat (i1 true), i32 %evl)
630   ret <4 x i16> %v
633 declare <8 x i16> @llvm.vp.xor.v8i16(<8 x i16>, <8 x i16>, <8 x i1>, i32)
635 define <8 x i16> @vxor_vv_v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 zeroext %evl) {
636 ; CHECK-LABEL: vxor_vv_v8i16:
637 ; CHECK:       # %bb.0:
638 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
639 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
640 ; CHECK-NEXT:    ret
641   %v = call <8 x i16> @llvm.vp.xor.v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 %evl)
642   ret <8 x i16> %v
645 define <8 x i16> @vxor_vv_v8i16_unmasked(<8 x i16> %va, <8 x i16> %b, i32 zeroext %evl) {
646 ; CHECK-LABEL: vxor_vv_v8i16_unmasked:
647 ; CHECK:       # %bb.0:
648 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
649 ; CHECK-NEXT:    vxor.vv v8, v8, v9
650 ; CHECK-NEXT:    ret
651   %v = call <8 x i16> @llvm.vp.xor.v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> splat (i1 true), i32 %evl)
652   ret <8 x i16> %v
655 define <8 x i16> @vxor_vx_v8i16(<8 x i16> %va, i16 %b, <8 x i1> %m, i32 zeroext %evl) {
656 ; CHECK-LABEL: vxor_vx_v8i16:
657 ; CHECK:       # %bb.0:
658 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
659 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
660 ; CHECK-NEXT:    ret
661   %elt.head = insertelement <8 x i16> poison, i16 %b, i32 0
662   %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
663   %v = call <8 x i16> @llvm.vp.xor.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> %m, i32 %evl)
664   ret <8 x i16> %v
667 define <8 x i16> @vxor_vx_v8i16_unmasked(<8 x i16> %va, i16 %b, i32 zeroext %evl) {
668 ; CHECK-LABEL: vxor_vx_v8i16_unmasked:
669 ; CHECK:       # %bb.0:
670 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
671 ; CHECK-NEXT:    vxor.vx v8, v8, a0
672 ; CHECK-NEXT:    ret
673   %elt.head = insertelement <8 x i16> poison, i16 %b, i32 0
674   %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
675   %v = call <8 x i16> @llvm.vp.xor.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> splat (i1 true), i32 %evl)
676   ret <8 x i16> %v
679 define <8 x i16> @vxor_vi_v8i16(<8 x i16> %va, <8 x i1> %m, i32 zeroext %evl) {
680 ; CHECK-LABEL: vxor_vi_v8i16:
681 ; CHECK:       # %bb.0:
682 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
683 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
684 ; CHECK-NEXT:    ret
685   %v = call <8 x i16> @llvm.vp.xor.v8i16(<8 x i16> %va, <8 x i16> splat (i16 7), <8 x i1> %m, i32 %evl)
686   ret <8 x i16> %v
689 define <8 x i16> @vxor_vi_v8i16_unmasked(<8 x i16> %va, i32 zeroext %evl) {
690 ; CHECK-LABEL: vxor_vi_v8i16_unmasked:
691 ; CHECK:       # %bb.0:
692 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
693 ; CHECK-NEXT:    vxor.vi v8, v8, 7
694 ; CHECK-NEXT:    ret
695   %v = call <8 x i16> @llvm.vp.xor.v8i16(<8 x i16> %va, <8 x i16> splat (i16 7), <8 x i1> splat (i1 true), i32 %evl)
696   ret <8 x i16> %v
699 define <8 x i16> @vxor_vi_v8i16_1(<8 x i16> %va, <8 x i1> %m, i32 zeroext %evl) {
700 ; CHECK-LABEL: vxor_vi_v8i16_1:
701 ; CHECK:       # %bb.0:
702 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
703 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
704 ; CHECK-NEXT:    ret
705   %v = call <8 x i16> @llvm.vp.xor.v8i16(<8 x i16> %va, <8 x i16> splat (i16 -1), <8 x i1> %m, i32 %evl)
706   ret <8 x i16> %v
709 define <8 x i16> @vxor_vi_v8i16_unmasked_1(<8 x i16> %va, i32 zeroext %evl) {
710 ; CHECK-LABEL: vxor_vi_v8i16_unmasked_1:
711 ; CHECK:       # %bb.0:
712 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
713 ; CHECK-NEXT:    vnot.v v8, v8
714 ; CHECK-NEXT:    ret
715   %v = call <8 x i16> @llvm.vp.xor.v8i16(<8 x i16> %va, <8 x i16> splat (i16 -1), <8 x i1> splat (i1 true), i32 %evl)
716   ret <8 x i16> %v
719 declare <16 x i16> @llvm.vp.xor.v16i16(<16 x i16>, <16 x i16>, <16 x i1>, i32)
721 define <16 x i16> @vxor_vv_v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 zeroext %evl) {
722 ; CHECK-LABEL: vxor_vv_v16i16:
723 ; CHECK:       # %bb.0:
724 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
725 ; CHECK-NEXT:    vxor.vv v8, v8, v10, v0.t
726 ; CHECK-NEXT:    ret
727   %v = call <16 x i16> @llvm.vp.xor.v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 %evl)
728   ret <16 x i16> %v
731 define <16 x i16> @vxor_vv_v16i16_unmasked(<16 x i16> %va, <16 x i16> %b, i32 zeroext %evl) {
732 ; CHECK-LABEL: vxor_vv_v16i16_unmasked:
733 ; CHECK:       # %bb.0:
734 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
735 ; CHECK-NEXT:    vxor.vv v8, v8, v10
736 ; CHECK-NEXT:    ret
737   %v = call <16 x i16> @llvm.vp.xor.v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> splat (i1 true), i32 %evl)
738   ret <16 x i16> %v
741 define <16 x i16> @vxor_vx_v16i16(<16 x i16> %va, i16 %b, <16 x i1> %m, i32 zeroext %evl) {
742 ; CHECK-LABEL: vxor_vx_v16i16:
743 ; CHECK:       # %bb.0:
744 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
745 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
746 ; CHECK-NEXT:    ret
747   %elt.head = insertelement <16 x i16> poison, i16 %b, i32 0
748   %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
749   %v = call <16 x i16> @llvm.vp.xor.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> %m, i32 %evl)
750   ret <16 x i16> %v
753 define <16 x i16> @vxor_vx_v16i16_unmasked(<16 x i16> %va, i16 %b, i32 zeroext %evl) {
754 ; CHECK-LABEL: vxor_vx_v16i16_unmasked:
755 ; CHECK:       # %bb.0:
756 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
757 ; CHECK-NEXT:    vxor.vx v8, v8, a0
758 ; CHECK-NEXT:    ret
759   %elt.head = insertelement <16 x i16> poison, i16 %b, i32 0
760   %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
761   %v = call <16 x i16> @llvm.vp.xor.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> splat (i1 true), i32 %evl)
762   ret <16 x i16> %v
765 define <16 x i16> @vxor_vi_v16i16(<16 x i16> %va, <16 x i1> %m, i32 zeroext %evl) {
766 ; CHECK-LABEL: vxor_vi_v16i16:
767 ; CHECK:       # %bb.0:
768 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
769 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
770 ; CHECK-NEXT:    ret
771   %v = call <16 x i16> @llvm.vp.xor.v16i16(<16 x i16> %va, <16 x i16> splat (i16 7), <16 x i1> %m, i32 %evl)
772   ret <16 x i16> %v
775 define <16 x i16> @vxor_vi_v16i16_unmasked(<16 x i16> %va, i32 zeroext %evl) {
776 ; CHECK-LABEL: vxor_vi_v16i16_unmasked:
777 ; CHECK:       # %bb.0:
778 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
779 ; CHECK-NEXT:    vxor.vi v8, v8, 7
780 ; CHECK-NEXT:    ret
781   %v = call <16 x i16> @llvm.vp.xor.v16i16(<16 x i16> %va, <16 x i16> splat (i16 7), <16 x i1> splat (i1 true), i32 %evl)
782   ret <16 x i16> %v
785 define <16 x i16> @vxor_vi_v16i16_1(<16 x i16> %va, <16 x i1> %m, i32 zeroext %evl) {
786 ; CHECK-LABEL: vxor_vi_v16i16_1:
787 ; CHECK:       # %bb.0:
788 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
789 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
790 ; CHECK-NEXT:    ret
791   %v = call <16 x i16> @llvm.vp.xor.v16i16(<16 x i16> %va, <16 x i16> splat (i16 -1), <16 x i1> %m, i32 %evl)
792   ret <16 x i16> %v
795 define <16 x i16> @vxor_vi_v16i16_unmasked_1(<16 x i16> %va, i32 zeroext %evl) {
796 ; CHECK-LABEL: vxor_vi_v16i16_unmasked_1:
797 ; CHECK:       # %bb.0:
798 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
799 ; CHECK-NEXT:    vnot.v v8, v8
800 ; CHECK-NEXT:    ret
801   %v = call <16 x i16> @llvm.vp.xor.v16i16(<16 x i16> %va, <16 x i16> splat (i16 -1), <16 x i1> splat (i1 true), i32 %evl)
802   ret <16 x i16> %v
805 declare <2 x i32> @llvm.vp.xor.v2i32(<2 x i32>, <2 x i32>, <2 x i1>, i32)
807 define <2 x i32> @vxor_vv_v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 zeroext %evl) {
808 ; CHECK-LABEL: vxor_vv_v2i32:
809 ; CHECK:       # %bb.0:
810 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
811 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
812 ; CHECK-NEXT:    ret
813   %v = call <2 x i32> @llvm.vp.xor.v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 %evl)
814   ret <2 x i32> %v
817 define <2 x i32> @vxor_vv_v2i32_unmasked(<2 x i32> %va, <2 x i32> %b, i32 zeroext %evl) {
818 ; CHECK-LABEL: vxor_vv_v2i32_unmasked:
819 ; CHECK:       # %bb.0:
820 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
821 ; CHECK-NEXT:    vxor.vv v8, v8, v9
822 ; CHECK-NEXT:    ret
823   %v = call <2 x i32> @llvm.vp.xor.v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> splat (i1 true), i32 %evl)
824   ret <2 x i32> %v
827 define <2 x i32> @vxor_vx_v2i32(<2 x i32> %va, i32 %b, <2 x i1> %m, i32 zeroext %evl) {
828 ; CHECK-LABEL: vxor_vx_v2i32:
829 ; CHECK:       # %bb.0:
830 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
831 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
832 ; CHECK-NEXT:    ret
833   %elt.head = insertelement <2 x i32> poison, i32 %b, i32 0
834   %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
835   %v = call <2 x i32> @llvm.vp.xor.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> %m, i32 %evl)
836   ret <2 x i32> %v
839 define <2 x i32> @vxor_vx_v2i32_unmasked(<2 x i32> %va, i32 %b, i32 zeroext %evl) {
840 ; CHECK-LABEL: vxor_vx_v2i32_unmasked:
841 ; CHECK:       # %bb.0:
842 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
843 ; CHECK-NEXT:    vxor.vx v8, v8, a0
844 ; CHECK-NEXT:    ret
845   %elt.head = insertelement <2 x i32> poison, i32 %b, i32 0
846   %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
847   %v = call <2 x i32> @llvm.vp.xor.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> splat (i1 true), i32 %evl)
848   ret <2 x i32> %v
851 define <2 x i32> @vxor_vi_v2i32(<2 x i32> %va, <2 x i1> %m, i32 zeroext %evl) {
852 ; CHECK-LABEL: vxor_vi_v2i32:
853 ; CHECK:       # %bb.0:
854 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
855 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
856 ; CHECK-NEXT:    ret
857   %v = call <2 x i32> @llvm.vp.xor.v2i32(<2 x i32> %va, <2 x i32> splat (i32 7), <2 x i1> %m, i32 %evl)
858   ret <2 x i32> %v
861 define <2 x i32> @vxor_vi_v2i32_unmasked(<2 x i32> %va, i32 zeroext %evl) {
862 ; CHECK-LABEL: vxor_vi_v2i32_unmasked:
863 ; CHECK:       # %bb.0:
864 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
865 ; CHECK-NEXT:    vxor.vi v8, v8, 7
866 ; CHECK-NEXT:    ret
867   %v = call <2 x i32> @llvm.vp.xor.v2i32(<2 x i32> %va, <2 x i32> splat (i32 7), <2 x i1> splat (i1 true), i32 %evl)
868   ret <2 x i32> %v
871 define <2 x i32> @vxor_vi_v2i32_1(<2 x i32> %va, <2 x i1> %m, i32 zeroext %evl) {
872 ; CHECK-LABEL: vxor_vi_v2i32_1:
873 ; CHECK:       # %bb.0:
874 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
875 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
876 ; CHECK-NEXT:    ret
877   %v = call <2 x i32> @llvm.vp.xor.v2i32(<2 x i32> %va, <2 x i32> splat (i32 -1), <2 x i1> %m, i32 %evl)
878   ret <2 x i32> %v
881 define <2 x i32> @vxor_vi_v2i32_unmasked_1(<2 x i32> %va, i32 zeroext %evl) {
882 ; CHECK-LABEL: vxor_vi_v2i32_unmasked_1:
883 ; CHECK:       # %bb.0:
884 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
885 ; CHECK-NEXT:    vnot.v v8, v8
886 ; CHECK-NEXT:    ret
887   %v = call <2 x i32> @llvm.vp.xor.v2i32(<2 x i32> %va, <2 x i32> splat (i32 -1), <2 x i1> splat (i1 true), i32 %evl)
888   ret <2 x i32> %v
891 declare <4 x i32> @llvm.vp.xor.v4i32(<4 x i32>, <4 x i32>, <4 x i1>, i32)
893 define <4 x i32> @vxor_vv_v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 zeroext %evl) {
894 ; CHECK-LABEL: vxor_vv_v4i32:
895 ; CHECK:       # %bb.0:
896 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
897 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
898 ; CHECK-NEXT:    ret
899   %v = call <4 x i32> @llvm.vp.xor.v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 %evl)
900   ret <4 x i32> %v
903 define <4 x i32> @vxor_vv_v4i32_unmasked(<4 x i32> %va, <4 x i32> %b, i32 zeroext %evl) {
904 ; CHECK-LABEL: vxor_vv_v4i32_unmasked:
905 ; CHECK:       # %bb.0:
906 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
907 ; CHECK-NEXT:    vxor.vv v8, v8, v9
908 ; CHECK-NEXT:    ret
909   %v = call <4 x i32> @llvm.vp.xor.v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> splat (i1 true), i32 %evl)
910   ret <4 x i32> %v
913 define <4 x i32> @vxor_vx_v4i32(<4 x i32> %va, i32 %b, <4 x i1> %m, i32 zeroext %evl) {
914 ; CHECK-LABEL: vxor_vx_v4i32:
915 ; CHECK:       # %bb.0:
916 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
917 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
918 ; CHECK-NEXT:    ret
919   %elt.head = insertelement <4 x i32> poison, i32 %b, i32 0
920   %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
921   %v = call <4 x i32> @llvm.vp.xor.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> %m, i32 %evl)
922   ret <4 x i32> %v
925 define <4 x i32> @vxor_vx_v4i32_unmasked(<4 x i32> %va, i32 %b, i32 zeroext %evl) {
926 ; CHECK-LABEL: vxor_vx_v4i32_unmasked:
927 ; CHECK:       # %bb.0:
928 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
929 ; CHECK-NEXT:    vxor.vx v8, v8, a0
930 ; CHECK-NEXT:    ret
931   %elt.head = insertelement <4 x i32> poison, i32 %b, i32 0
932   %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
933   %v = call <4 x i32> @llvm.vp.xor.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> splat (i1 true), i32 %evl)
934   ret <4 x i32> %v
937 define <4 x i32> @vxor_vi_v4i32(<4 x i32> %va, <4 x i1> %m, i32 zeroext %evl) {
938 ; CHECK-LABEL: vxor_vi_v4i32:
939 ; CHECK:       # %bb.0:
940 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
941 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
942 ; CHECK-NEXT:    ret
943   %v = call <4 x i32> @llvm.vp.xor.v4i32(<4 x i32> %va, <4 x i32> splat (i32 7), <4 x i1> %m, i32 %evl)
944   ret <4 x i32> %v
947 define <4 x i32> @vxor_vi_v4i32_unmasked(<4 x i32> %va, i32 zeroext %evl) {
948 ; CHECK-LABEL: vxor_vi_v4i32_unmasked:
949 ; CHECK:       # %bb.0:
950 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
951 ; CHECK-NEXT:    vxor.vi v8, v8, 7
952 ; CHECK-NEXT:    ret
953   %v = call <4 x i32> @llvm.vp.xor.v4i32(<4 x i32> %va, <4 x i32> splat (i32 7), <4 x i1> splat (i1 true), i32 %evl)
954   ret <4 x i32> %v
957 define <4 x i32> @vxor_vi_v4i32_1(<4 x i32> %va, <4 x i1> %m, i32 zeroext %evl) {
958 ; CHECK-LABEL: vxor_vi_v4i32_1:
959 ; CHECK:       # %bb.0:
960 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
961 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
962 ; CHECK-NEXT:    ret
963   %v = call <4 x i32> @llvm.vp.xor.v4i32(<4 x i32> %va, <4 x i32> splat (i32 -1), <4 x i1> %m, i32 %evl)
964   ret <4 x i32> %v
967 define <4 x i32> @vxor_vi_v4i32_unmasked_1(<4 x i32> %va, i32 zeroext %evl) {
968 ; CHECK-LABEL: vxor_vi_v4i32_unmasked_1:
969 ; CHECK:       # %bb.0:
970 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
971 ; CHECK-NEXT:    vnot.v v8, v8
972 ; CHECK-NEXT:    ret
973   %v = call <4 x i32> @llvm.vp.xor.v4i32(<4 x i32> %va, <4 x i32> splat (i32 -1), <4 x i1> splat (i1 true), i32 %evl)
974   ret <4 x i32> %v
977 declare <8 x i32> @llvm.vp.xor.v8i32(<8 x i32>, <8 x i32>, <8 x i1>, i32)
979 define <8 x i32> @vxor_vv_v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 zeroext %evl) {
980 ; CHECK-LABEL: vxor_vv_v8i32:
981 ; CHECK:       # %bb.0:
982 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
983 ; CHECK-NEXT:    vxor.vv v8, v8, v10, v0.t
984 ; CHECK-NEXT:    ret
985   %v = call <8 x i32> @llvm.vp.xor.v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 %evl)
986   ret <8 x i32> %v
989 define <8 x i32> @vxor_vv_v8i32_unmasked(<8 x i32> %va, <8 x i32> %b, i32 zeroext %evl) {
990 ; CHECK-LABEL: vxor_vv_v8i32_unmasked:
991 ; CHECK:       # %bb.0:
992 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
993 ; CHECK-NEXT:    vxor.vv v8, v8, v10
994 ; CHECK-NEXT:    ret
995   %v = call <8 x i32> @llvm.vp.xor.v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> splat (i1 true), i32 %evl)
996   ret <8 x i32> %v
999 define <8 x i32> @vxor_vx_v8i32(<8 x i32> %va, i32 %b, <8 x i1> %m, i32 zeroext %evl) {
1000 ; CHECK-LABEL: vxor_vx_v8i32:
1001 ; CHECK:       # %bb.0:
1002 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1003 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
1004 ; CHECK-NEXT:    ret
1005   %elt.head = insertelement <8 x i32> poison, i32 %b, i32 0
1006   %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
1007   %v = call <8 x i32> @llvm.vp.xor.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> %m, i32 %evl)
1008   ret <8 x i32> %v
1011 define <8 x i32> @vxor_vx_v8i32_unmasked(<8 x i32> %va, i32 %b, i32 zeroext %evl) {
1012 ; CHECK-LABEL: vxor_vx_v8i32_unmasked:
1013 ; CHECK:       # %bb.0:
1014 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1015 ; CHECK-NEXT:    vxor.vx v8, v8, a0
1016 ; CHECK-NEXT:    ret
1017   %elt.head = insertelement <8 x i32> poison, i32 %b, i32 0
1018   %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
1019   %v = call <8 x i32> @llvm.vp.xor.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> splat (i1 true), i32 %evl)
1020   ret <8 x i32> %v
1023 define <8 x i32> @vxor_vi_v8i32(<8 x i32> %va, <8 x i1> %m, i32 zeroext %evl) {
1024 ; CHECK-LABEL: vxor_vi_v8i32:
1025 ; CHECK:       # %bb.0:
1026 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1027 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1028 ; CHECK-NEXT:    ret
1029   %v = call <8 x i32> @llvm.vp.xor.v8i32(<8 x i32> %va, <8 x i32> splat (i32 7), <8 x i1> %m, i32 %evl)
1030   ret <8 x i32> %v
1033 define <8 x i32> @vxor_vi_v8i32_unmasked(<8 x i32> %va, i32 zeroext %evl) {
1034 ; CHECK-LABEL: vxor_vi_v8i32_unmasked:
1035 ; CHECK:       # %bb.0:
1036 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1037 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1038 ; CHECK-NEXT:    ret
1039   %v = call <8 x i32> @llvm.vp.xor.v8i32(<8 x i32> %va, <8 x i32> splat (i32 7), <8 x i1> splat (i1 true), i32 %evl)
1040   ret <8 x i32> %v
1043 define <8 x i32> @vxor_vi_v8i32_1(<8 x i32> %va, <8 x i1> %m, i32 zeroext %evl) {
1044 ; CHECK-LABEL: vxor_vi_v8i32_1:
1045 ; CHECK:       # %bb.0:
1046 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1047 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1048 ; CHECK-NEXT:    ret
1049   %v = call <8 x i32> @llvm.vp.xor.v8i32(<8 x i32> %va, <8 x i32> splat (i32 -1), <8 x i1> %m, i32 %evl)
1050   ret <8 x i32> %v
1053 define <8 x i32> @vxor_vi_v8i32_unmasked_1(<8 x i32> %va, i32 zeroext %evl) {
1054 ; CHECK-LABEL: vxor_vi_v8i32_unmasked_1:
1055 ; CHECK:       # %bb.0:
1056 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1057 ; CHECK-NEXT:    vnot.v v8, v8
1058 ; CHECK-NEXT:    ret
1059   %v = call <8 x i32> @llvm.vp.xor.v8i32(<8 x i32> %va, <8 x i32> splat (i32 -1), <8 x i1> splat (i1 true), i32 %evl)
1060   ret <8 x i32> %v
1063 declare <16 x i32> @llvm.vp.xor.v16i32(<16 x i32>, <16 x i32>, <16 x i1>, i32)
1065 define <16 x i32> @vxor_vv_v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 zeroext %evl) {
1066 ; CHECK-LABEL: vxor_vv_v16i32:
1067 ; CHECK:       # %bb.0:
1068 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1069 ; CHECK-NEXT:    vxor.vv v8, v8, v12, v0.t
1070 ; CHECK-NEXT:    ret
1071   %v = call <16 x i32> @llvm.vp.xor.v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 %evl)
1072   ret <16 x i32> %v
1075 define <16 x i32> @vxor_vv_v16i32_unmasked(<16 x i32> %va, <16 x i32> %b, i32 zeroext %evl) {
1076 ; CHECK-LABEL: vxor_vv_v16i32_unmasked:
1077 ; CHECK:       # %bb.0:
1078 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1079 ; CHECK-NEXT:    vxor.vv v8, v8, v12
1080 ; CHECK-NEXT:    ret
1081   %v = call <16 x i32> @llvm.vp.xor.v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> splat (i1 true), i32 %evl)
1082   ret <16 x i32> %v
1085 define <16 x i32> @vxor_vx_v16i32(<16 x i32> %va, i32 %b, <16 x i1> %m, i32 zeroext %evl) {
1086 ; CHECK-LABEL: vxor_vx_v16i32:
1087 ; CHECK:       # %bb.0:
1088 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1089 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
1090 ; CHECK-NEXT:    ret
1091   %elt.head = insertelement <16 x i32> poison, i32 %b, i32 0
1092   %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
1093   %v = call <16 x i32> @llvm.vp.xor.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> %m, i32 %evl)
1094   ret <16 x i32> %v
1097 define <16 x i32> @vxor_vx_v16i32_unmasked(<16 x i32> %va, i32 %b, i32 zeroext %evl) {
1098 ; CHECK-LABEL: vxor_vx_v16i32_unmasked:
1099 ; CHECK:       # %bb.0:
1100 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1101 ; CHECK-NEXT:    vxor.vx v8, v8, a0
1102 ; CHECK-NEXT:    ret
1103   %elt.head = insertelement <16 x i32> poison, i32 %b, i32 0
1104   %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
1105   %v = call <16 x i32> @llvm.vp.xor.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> splat (i1 true), i32 %evl)
1106   ret <16 x i32> %v
1109 define <16 x i32> @vxor_vi_v16i32(<16 x i32> %va, <16 x i1> %m, i32 zeroext %evl) {
1110 ; CHECK-LABEL: vxor_vi_v16i32:
1111 ; CHECK:       # %bb.0:
1112 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1113 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1114 ; CHECK-NEXT:    ret
1115   %v = call <16 x i32> @llvm.vp.xor.v16i32(<16 x i32> %va, <16 x i32> splat (i32 7), <16 x i1> %m, i32 %evl)
1116   ret <16 x i32> %v
1119 define <16 x i32> @vxor_vi_v16i32_unmasked(<16 x i32> %va, i32 zeroext %evl) {
1120 ; CHECK-LABEL: vxor_vi_v16i32_unmasked:
1121 ; CHECK:       # %bb.0:
1122 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1123 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1124 ; CHECK-NEXT:    ret
1125   %v = call <16 x i32> @llvm.vp.xor.v16i32(<16 x i32> %va, <16 x i32> splat (i32 7), <16 x i1> splat (i1 true), i32 %evl)
1126   ret <16 x i32> %v
1129 define <16 x i32> @vxor_vi_v16i32_1(<16 x i32> %va, <16 x i1> %m, i32 zeroext %evl) {
1130 ; CHECK-LABEL: vxor_vi_v16i32_1:
1131 ; CHECK:       # %bb.0:
1132 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1133 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1134 ; CHECK-NEXT:    ret
1135   %v = call <16 x i32> @llvm.vp.xor.v16i32(<16 x i32> %va, <16 x i32> splat (i32 -1), <16 x i1> %m, i32 %evl)
1136   ret <16 x i32> %v
1139 define <16 x i32> @vxor_vi_v16i32_unmasked_1(<16 x i32> %va, i32 zeroext %evl) {
1140 ; CHECK-LABEL: vxor_vi_v16i32_unmasked_1:
1141 ; CHECK:       # %bb.0:
1142 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1143 ; CHECK-NEXT:    vnot.v v8, v8
1144 ; CHECK-NEXT:    ret
1145   %v = call <16 x i32> @llvm.vp.xor.v16i32(<16 x i32> %va, <16 x i32> splat (i32 -1), <16 x i1> splat (i1 true), i32 %evl)
1146   ret <16 x i32> %v
1149 declare <2 x i64> @llvm.vp.xor.v2i64(<2 x i64>, <2 x i64>, <2 x i1>, i32)
1151 define <2 x i64> @vxor_vv_v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 zeroext %evl) {
1152 ; CHECK-LABEL: vxor_vv_v2i64:
1153 ; CHECK:       # %bb.0:
1154 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1155 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
1156 ; CHECK-NEXT:    ret
1157   %v = call <2 x i64> @llvm.vp.xor.v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 %evl)
1158   ret <2 x i64> %v
1161 define <2 x i64> @vxor_vv_v2i64_unmasked(<2 x i64> %va, <2 x i64> %b, i32 zeroext %evl) {
1162 ; CHECK-LABEL: vxor_vv_v2i64_unmasked:
1163 ; CHECK:       # %bb.0:
1164 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1165 ; CHECK-NEXT:    vxor.vv v8, v8, v9
1166 ; CHECK-NEXT:    ret
1167   %v = call <2 x i64> @llvm.vp.xor.v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> splat (i1 true), i32 %evl)
1168   ret <2 x i64> %v
1171 define <2 x i64> @vxor_vx_v2i64(<2 x i64> %va, i64 %b, <2 x i1> %m, i32 zeroext %evl) {
1172 ; RV32-LABEL: vxor_vx_v2i64:
1173 ; RV32:       # %bb.0:
1174 ; RV32-NEXT:    addi sp, sp, -16
1175 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1176 ; RV32-NEXT:    sw a1, 12(sp)
1177 ; RV32-NEXT:    sw a0, 8(sp)
1178 ; RV32-NEXT:    addi a0, sp, 8
1179 ; RV32-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
1180 ; RV32-NEXT:    vlse64.v v9, (a0), zero
1181 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
1182 ; RV32-NEXT:    vxor.vv v8, v8, v9, v0.t
1183 ; RV32-NEXT:    addi sp, sp, 16
1184 ; RV32-NEXT:    ret
1186 ; RV64-LABEL: vxor_vx_v2i64:
1187 ; RV64:       # %bb.0:
1188 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1189 ; RV64-NEXT:    vxor.vx v8, v8, a0, v0.t
1190 ; RV64-NEXT:    ret
1191   %elt.head = insertelement <2 x i64> poison, i64 %b, i32 0
1192   %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
1193   %v = call <2 x i64> @llvm.vp.xor.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> %m, i32 %evl)
1194   ret <2 x i64> %v
1197 define <2 x i64> @vxor_vx_v2i64_unmasked(<2 x i64> %va, i64 %b, i32 zeroext %evl) {
1198 ; RV32-LABEL: vxor_vx_v2i64_unmasked:
1199 ; RV32:       # %bb.0:
1200 ; RV32-NEXT:    addi sp, sp, -16
1201 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1202 ; RV32-NEXT:    sw a1, 12(sp)
1203 ; RV32-NEXT:    sw a0, 8(sp)
1204 ; RV32-NEXT:    addi a0, sp, 8
1205 ; RV32-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
1206 ; RV32-NEXT:    vlse64.v v9, (a0), zero
1207 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
1208 ; RV32-NEXT:    vxor.vv v8, v8, v9
1209 ; RV32-NEXT:    addi sp, sp, 16
1210 ; RV32-NEXT:    ret
1212 ; RV64-LABEL: vxor_vx_v2i64_unmasked:
1213 ; RV64:       # %bb.0:
1214 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1215 ; RV64-NEXT:    vxor.vx v8, v8, a0
1216 ; RV64-NEXT:    ret
1217   %elt.head = insertelement <2 x i64> poison, i64 %b, i32 0
1218   %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
1219   %v = call <2 x i64> @llvm.vp.xor.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> splat (i1 true), i32 %evl)
1220   ret <2 x i64> %v
1223 define <2 x i64> @vxor_vi_v2i64(<2 x i64> %va, <2 x i1> %m, i32 zeroext %evl) {
1224 ; CHECK-LABEL: vxor_vi_v2i64:
1225 ; CHECK:       # %bb.0:
1226 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1227 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1228 ; CHECK-NEXT:    ret
1229   %v = call <2 x i64> @llvm.vp.xor.v2i64(<2 x i64> %va, <2 x i64> splat (i64 7), <2 x i1> %m, i32 %evl)
1230   ret <2 x i64> %v
1233 define <2 x i64> @vxor_vi_v2i64_unmasked(<2 x i64> %va, i32 zeroext %evl) {
1234 ; CHECK-LABEL: vxor_vi_v2i64_unmasked:
1235 ; CHECK:       # %bb.0:
1236 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1237 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1238 ; CHECK-NEXT:    ret
1239   %v = call <2 x i64> @llvm.vp.xor.v2i64(<2 x i64> %va, <2 x i64> splat (i64 7), <2 x i1> splat (i1 true), i32 %evl)
1240   ret <2 x i64> %v
1243 define <2 x i64> @vxor_vi_v2i64_1(<2 x i64> %va, <2 x i1> %m, i32 zeroext %evl) {
1244 ; CHECK-LABEL: vxor_vi_v2i64_1:
1245 ; CHECK:       # %bb.0:
1246 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1247 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1248 ; CHECK-NEXT:    ret
1249   %v = call <2 x i64> @llvm.vp.xor.v2i64(<2 x i64> %va, <2 x i64> splat (i64 -1), <2 x i1> %m, i32 %evl)
1250   ret <2 x i64> %v
1253 define <2 x i64> @vxor_vi_v2i64_unmasked_1(<2 x i64> %va, i32 zeroext %evl) {
1254 ; CHECK-LABEL: vxor_vi_v2i64_unmasked_1:
1255 ; CHECK:       # %bb.0:
1256 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1257 ; CHECK-NEXT:    vnot.v v8, v8
1258 ; CHECK-NEXT:    ret
1259   %v = call <2 x i64> @llvm.vp.xor.v2i64(<2 x i64> %va, <2 x i64> splat (i64 -1), <2 x i1> splat (i1 true), i32 %evl)
1260   ret <2 x i64> %v
1263 declare <4 x i64> @llvm.vp.xor.v4i64(<4 x i64>, <4 x i64>, <4 x i1>, i32)
1265 define <4 x i64> @vxor_vv_v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 zeroext %evl) {
1266 ; CHECK-LABEL: vxor_vv_v4i64:
1267 ; CHECK:       # %bb.0:
1268 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1269 ; CHECK-NEXT:    vxor.vv v8, v8, v10, v0.t
1270 ; CHECK-NEXT:    ret
1271   %v = call <4 x i64> @llvm.vp.xor.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 %evl)
1272   ret <4 x i64> %v
1275 define <4 x i64> @vxor_vv_v4i64_unmasked(<4 x i64> %va, <4 x i64> %b, i32 zeroext %evl) {
1276 ; CHECK-LABEL: vxor_vv_v4i64_unmasked:
1277 ; CHECK:       # %bb.0:
1278 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1279 ; CHECK-NEXT:    vxor.vv v8, v8, v10
1280 ; CHECK-NEXT:    ret
1281   %v = call <4 x i64> @llvm.vp.xor.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> splat (i1 true), i32 %evl)
1282   ret <4 x i64> %v
1285 define <4 x i64> @vxor_vx_v4i64(<4 x i64> %va, i64 %b, <4 x i1> %m, i32 zeroext %evl) {
1286 ; RV32-LABEL: vxor_vx_v4i64:
1287 ; RV32:       # %bb.0:
1288 ; RV32-NEXT:    addi sp, sp, -16
1289 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1290 ; RV32-NEXT:    sw a1, 12(sp)
1291 ; RV32-NEXT:    sw a0, 8(sp)
1292 ; RV32-NEXT:    addi a0, sp, 8
1293 ; RV32-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
1294 ; RV32-NEXT:    vlse64.v v10, (a0), zero
1295 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1296 ; RV32-NEXT:    vxor.vv v8, v8, v10, v0.t
1297 ; RV32-NEXT:    addi sp, sp, 16
1298 ; RV32-NEXT:    ret
1300 ; RV64-LABEL: vxor_vx_v4i64:
1301 ; RV64:       # %bb.0:
1302 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1303 ; RV64-NEXT:    vxor.vx v8, v8, a0, v0.t
1304 ; RV64-NEXT:    ret
1305   %elt.head = insertelement <4 x i64> poison, i64 %b, i32 0
1306   %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
1307   %v = call <4 x i64> @llvm.vp.xor.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> %m, i32 %evl)
1308   ret <4 x i64> %v
1311 define <4 x i64> @vxor_vx_v4i64_unmasked(<4 x i64> %va, i64 %b, i32 zeroext %evl) {
1312 ; RV32-LABEL: vxor_vx_v4i64_unmasked:
1313 ; RV32:       # %bb.0:
1314 ; RV32-NEXT:    addi sp, sp, -16
1315 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1316 ; RV32-NEXT:    sw a1, 12(sp)
1317 ; RV32-NEXT:    sw a0, 8(sp)
1318 ; RV32-NEXT:    addi a0, sp, 8
1319 ; RV32-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
1320 ; RV32-NEXT:    vlse64.v v10, (a0), zero
1321 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1322 ; RV32-NEXT:    vxor.vv v8, v8, v10
1323 ; RV32-NEXT:    addi sp, sp, 16
1324 ; RV32-NEXT:    ret
1326 ; RV64-LABEL: vxor_vx_v4i64_unmasked:
1327 ; RV64:       # %bb.0:
1328 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1329 ; RV64-NEXT:    vxor.vx v8, v8, a0
1330 ; RV64-NEXT:    ret
1331   %elt.head = insertelement <4 x i64> poison, i64 %b, i32 0
1332   %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
1333   %v = call <4 x i64> @llvm.vp.xor.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> splat (i1 true), i32 %evl)
1334   ret <4 x i64> %v
1337 define <4 x i64> @vxor_vi_v4i64(<4 x i64> %va, <4 x i1> %m, i32 zeroext %evl) {
1338 ; CHECK-LABEL: vxor_vi_v4i64:
1339 ; CHECK:       # %bb.0:
1340 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1341 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1342 ; CHECK-NEXT:    ret
1343   %v = call <4 x i64> @llvm.vp.xor.v4i64(<4 x i64> %va, <4 x i64> splat (i64 7), <4 x i1> %m, i32 %evl)
1344   ret <4 x i64> %v
1347 define <4 x i64> @vxor_vi_v4i64_unmasked(<4 x i64> %va, i32 zeroext %evl) {
1348 ; CHECK-LABEL: vxor_vi_v4i64_unmasked:
1349 ; CHECK:       # %bb.0:
1350 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1351 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1352 ; CHECK-NEXT:    ret
1353   %v = call <4 x i64> @llvm.vp.xor.v4i64(<4 x i64> %va, <4 x i64> splat (i64 7), <4 x i1> splat (i1 true), i32 %evl)
1354   ret <4 x i64> %v
1357 define <4 x i64> @vxor_vi_v4i64_1(<4 x i64> %va, <4 x i1> %m, i32 zeroext %evl) {
1358 ; CHECK-LABEL: vxor_vi_v4i64_1:
1359 ; CHECK:       # %bb.0:
1360 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1361 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1362 ; CHECK-NEXT:    ret
1363   %v = call <4 x i64> @llvm.vp.xor.v4i64(<4 x i64> %va, <4 x i64> splat (i64 -1), <4 x i1> %m, i32 %evl)
1364   ret <4 x i64> %v
1367 define <4 x i64> @vxor_vi_v4i64_unmasked_1(<4 x i64> %va, i32 zeroext %evl) {
1368 ; CHECK-LABEL: vxor_vi_v4i64_unmasked_1:
1369 ; CHECK:       # %bb.0:
1370 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1371 ; CHECK-NEXT:    vnot.v v8, v8
1372 ; CHECK-NEXT:    ret
1373   %v = call <4 x i64> @llvm.vp.xor.v4i64(<4 x i64> %va, <4 x i64> splat (i64 -1), <4 x i1> splat (i1 true), i32 %evl)
1374   ret <4 x i64> %v
1377 declare <8 x i64> @llvm.vp.xor.v8i64(<8 x i64>, <8 x i64>, <8 x i1>, i32)
1379 define <8 x i64> @vxor_vv_v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 zeroext %evl) {
1380 ; CHECK-LABEL: vxor_vv_v8i64:
1381 ; CHECK:       # %bb.0:
1382 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1383 ; CHECK-NEXT:    vxor.vv v8, v8, v12, v0.t
1384 ; CHECK-NEXT:    ret
1385   %v = call <8 x i64> @llvm.vp.xor.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 %evl)
1386   ret <8 x i64> %v
1389 define <8 x i64> @vxor_vv_v8i64_unmasked(<8 x i64> %va, <8 x i64> %b, i32 zeroext %evl) {
1390 ; CHECK-LABEL: vxor_vv_v8i64_unmasked:
1391 ; CHECK:       # %bb.0:
1392 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1393 ; CHECK-NEXT:    vxor.vv v8, v8, v12
1394 ; CHECK-NEXT:    ret
1395   %v = call <8 x i64> @llvm.vp.xor.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> splat (i1 true), i32 %evl)
1396   ret <8 x i64> %v
1399 define <8 x i64> @vxor_vx_v8i64(<8 x i64> %va, i64 %b, <8 x i1> %m, i32 zeroext %evl) {
1400 ; RV32-LABEL: vxor_vx_v8i64:
1401 ; RV32:       # %bb.0:
1402 ; RV32-NEXT:    addi sp, sp, -16
1403 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1404 ; RV32-NEXT:    sw a1, 12(sp)
1405 ; RV32-NEXT:    sw a0, 8(sp)
1406 ; RV32-NEXT:    addi a0, sp, 8
1407 ; RV32-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
1408 ; RV32-NEXT:    vlse64.v v12, (a0), zero
1409 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1410 ; RV32-NEXT:    vxor.vv v8, v8, v12, v0.t
1411 ; RV32-NEXT:    addi sp, sp, 16
1412 ; RV32-NEXT:    ret
1414 ; RV64-LABEL: vxor_vx_v8i64:
1415 ; RV64:       # %bb.0:
1416 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1417 ; RV64-NEXT:    vxor.vx v8, v8, a0, v0.t
1418 ; RV64-NEXT:    ret
1419   %elt.head = insertelement <8 x i64> poison, i64 %b, i32 0
1420   %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
1421   %v = call <8 x i64> @llvm.vp.xor.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> %m, i32 %evl)
1422   ret <8 x i64> %v
1425 define <8 x i64> @vxor_vx_v8i64_unmasked(<8 x i64> %va, i64 %b, i32 zeroext %evl) {
1426 ; RV32-LABEL: vxor_vx_v8i64_unmasked:
1427 ; RV32:       # %bb.0:
1428 ; RV32-NEXT:    addi sp, sp, -16
1429 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1430 ; RV32-NEXT:    sw a1, 12(sp)
1431 ; RV32-NEXT:    sw a0, 8(sp)
1432 ; RV32-NEXT:    addi a0, sp, 8
1433 ; RV32-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
1434 ; RV32-NEXT:    vlse64.v v12, (a0), zero
1435 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1436 ; RV32-NEXT:    vxor.vv v8, v8, v12
1437 ; RV32-NEXT:    addi sp, sp, 16
1438 ; RV32-NEXT:    ret
1440 ; RV64-LABEL: vxor_vx_v8i64_unmasked:
1441 ; RV64:       # %bb.0:
1442 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1443 ; RV64-NEXT:    vxor.vx v8, v8, a0
1444 ; RV64-NEXT:    ret
1445   %elt.head = insertelement <8 x i64> poison, i64 %b, i32 0
1446   %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
1447   %v = call <8 x i64> @llvm.vp.xor.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> splat (i1 true), i32 %evl)
1448   ret <8 x i64> %v
1451 define <8 x i64> @vxor_vi_v8i64(<8 x i64> %va, <8 x i1> %m, i32 zeroext %evl) {
1452 ; CHECK-LABEL: vxor_vi_v8i64:
1453 ; CHECK:       # %bb.0:
1454 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1455 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1456 ; CHECK-NEXT:    ret
1457   %v = call <8 x i64> @llvm.vp.xor.v8i64(<8 x i64> %va, <8 x i64> splat (i64 7), <8 x i1> %m, i32 %evl)
1458   ret <8 x i64> %v
1461 define <8 x i64> @vxor_vi_v8i64_unmasked(<8 x i64> %va, i32 zeroext %evl) {
1462 ; CHECK-LABEL: vxor_vi_v8i64_unmasked:
1463 ; CHECK:       # %bb.0:
1464 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1465 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1466 ; CHECK-NEXT:    ret
1467   %v = call <8 x i64> @llvm.vp.xor.v8i64(<8 x i64> %va, <8 x i64> splat (i64 7), <8 x i1> splat (i1 true), i32 %evl)
1468   ret <8 x i64> %v
1471 define <8 x i64> @vxor_vi_v8i64_1(<8 x i64> %va, <8 x i1> %m, i32 zeroext %evl) {
1472 ; CHECK-LABEL: vxor_vi_v8i64_1:
1473 ; CHECK:       # %bb.0:
1474 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1475 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1476 ; CHECK-NEXT:    ret
1477   %v = call <8 x i64> @llvm.vp.xor.v8i64(<8 x i64> %va, <8 x i64> splat (i64 -1), <8 x i1> %m, i32 %evl)
1478   ret <8 x i64> %v
1481 define <8 x i64> @vxor_vi_v8i64_unmasked_1(<8 x i64> %va, i32 zeroext %evl) {
1482 ; CHECK-LABEL: vxor_vi_v8i64_unmasked_1:
1483 ; CHECK:       # %bb.0:
1484 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1485 ; CHECK-NEXT:    vnot.v v8, v8
1486 ; CHECK-NEXT:    ret
1487   %v = call <8 x i64> @llvm.vp.xor.v8i64(<8 x i64> %va, <8 x i64> splat (i64 -1), <8 x i1> splat (i1 true), i32 %evl)
1488   ret <8 x i64> %v
1491 declare <16 x i64> @llvm.vp.xor.v16i64(<16 x i64>, <16 x i64>, <16 x i1>, i32)
1493 define <16 x i64> @vxor_vv_v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 zeroext %evl) {
1494 ; CHECK-LABEL: vxor_vv_v16i64:
1495 ; CHECK:       # %bb.0:
1496 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1497 ; CHECK-NEXT:    vxor.vv v8, v8, v16, v0.t
1498 ; CHECK-NEXT:    ret
1499   %v = call <16 x i64> @llvm.vp.xor.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 %evl)
1500   ret <16 x i64> %v
1503 define <16 x i64> @vxor_vv_v16i64_unmasked(<16 x i64> %va, <16 x i64> %b, i32 zeroext %evl) {
1504 ; CHECK-LABEL: vxor_vv_v16i64_unmasked:
1505 ; CHECK:       # %bb.0:
1506 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1507 ; CHECK-NEXT:    vxor.vv v8, v8, v16
1508 ; CHECK-NEXT:    ret
1509   %v = call <16 x i64> @llvm.vp.xor.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> splat (i1 true), i32 %evl)
1510   ret <16 x i64> %v
1513 define <16 x i64> @vxor_vx_v16i64(<16 x i64> %va, i64 %b, <16 x i1> %m, i32 zeroext %evl) {
1514 ; RV32-LABEL: vxor_vx_v16i64:
1515 ; RV32:       # %bb.0:
1516 ; RV32-NEXT:    addi sp, sp, -16
1517 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1518 ; RV32-NEXT:    sw a1, 12(sp)
1519 ; RV32-NEXT:    sw a0, 8(sp)
1520 ; RV32-NEXT:    addi a0, sp, 8
1521 ; RV32-NEXT:    vsetivli zero, 16, e64, m8, ta, ma
1522 ; RV32-NEXT:    vlse64.v v16, (a0), zero
1523 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
1524 ; RV32-NEXT:    vxor.vv v8, v8, v16, v0.t
1525 ; RV32-NEXT:    addi sp, sp, 16
1526 ; RV32-NEXT:    ret
1528 ; RV64-LABEL: vxor_vx_v16i64:
1529 ; RV64:       # %bb.0:
1530 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
1531 ; RV64-NEXT:    vxor.vx v8, v8, a0, v0.t
1532 ; RV64-NEXT:    ret
1533   %elt.head = insertelement <16 x i64> poison, i64 %b, i32 0
1534   %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
1535   %v = call <16 x i64> @llvm.vp.xor.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> %m, i32 %evl)
1536   ret <16 x i64> %v
1539 define <16 x i64> @vxor_vx_v16i64_unmasked(<16 x i64> %va, i64 %b, i32 zeroext %evl) {
1540 ; RV32-LABEL: vxor_vx_v16i64_unmasked:
1541 ; RV32:       # %bb.0:
1542 ; RV32-NEXT:    addi sp, sp, -16
1543 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1544 ; RV32-NEXT:    sw a1, 12(sp)
1545 ; RV32-NEXT:    sw a0, 8(sp)
1546 ; RV32-NEXT:    addi a0, sp, 8
1547 ; RV32-NEXT:    vsetivli zero, 16, e64, m8, ta, ma
1548 ; RV32-NEXT:    vlse64.v v16, (a0), zero
1549 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
1550 ; RV32-NEXT:    vxor.vv v8, v8, v16
1551 ; RV32-NEXT:    addi sp, sp, 16
1552 ; RV32-NEXT:    ret
1554 ; RV64-LABEL: vxor_vx_v16i64_unmasked:
1555 ; RV64:       # %bb.0:
1556 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
1557 ; RV64-NEXT:    vxor.vx v8, v8, a0
1558 ; RV64-NEXT:    ret
1559   %elt.head = insertelement <16 x i64> poison, i64 %b, i32 0
1560   %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
1561   %v = call <16 x i64> @llvm.vp.xor.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> splat (i1 true), i32 %evl)
1562   ret <16 x i64> %v
1565 define <16 x i64> @vxor_vi_v16i64(<16 x i64> %va, <16 x i1> %m, i32 zeroext %evl) {
1566 ; CHECK-LABEL: vxor_vi_v16i64:
1567 ; CHECK:       # %bb.0:
1568 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1569 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1570 ; CHECK-NEXT:    ret
1571   %v = call <16 x i64> @llvm.vp.xor.v16i64(<16 x i64> %va, <16 x i64> splat (i64 7), <16 x i1> %m, i32 %evl)
1572   ret <16 x i64> %v
1575 define <16 x i64> @vxor_vi_v16i64_unmasked(<16 x i64> %va, i32 zeroext %evl) {
1576 ; CHECK-LABEL: vxor_vi_v16i64_unmasked:
1577 ; CHECK:       # %bb.0:
1578 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1579 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1580 ; CHECK-NEXT:    ret
1581   %v = call <16 x i64> @llvm.vp.xor.v16i64(<16 x i64> %va, <16 x i64> splat (i64 7), <16 x i1> splat (i1 true), i32 %evl)
1582   ret <16 x i64> %v
1585 define <16 x i64> @vxor_vi_v16i64_1(<16 x i64> %va, <16 x i1> %m, i32 zeroext %evl) {
1586 ; CHECK-LABEL: vxor_vi_v16i64_1:
1587 ; CHECK:       # %bb.0:
1588 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1589 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1590 ; CHECK-NEXT:    ret
1591   %v = call <16 x i64> @llvm.vp.xor.v16i64(<16 x i64> %va, <16 x i64> splat (i64 -1), <16 x i1> %m, i32 %evl)
1592   ret <16 x i64> %v
1595 define <16 x i64> @vxor_vi_v16i64_unmasked_1(<16 x i64> %va, i32 zeroext %evl) {
1596 ; CHECK-LABEL: vxor_vi_v16i64_unmasked_1:
1597 ; CHECK:       # %bb.0:
1598 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1599 ; CHECK-NEXT:    vnot.v v8, v8
1600 ; CHECK-NEXT:    ret
1601   %v = call <16 x i64> @llvm.vp.xor.v16i64(<16 x i64> %va, <16 x i64> splat (i64 -1), <16 x i1> splat (i1 true), i32 %evl)
1602   ret <16 x i64> %v