[TTI] getTypeBasedIntrinsicInstrCost - add basic handling for strided load/store...
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / fixed-vectors-vxor-vp.ll
blob97b86a8eff19fad593e276b2dd9bd62fb83320b9
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 a0, 8(sp)
1177 ; RV32-NEXT:    sw a1, 12(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:    .cfi_def_cfa_offset 0
1185 ; RV32-NEXT:    ret
1187 ; RV64-LABEL: vxor_vx_v2i64:
1188 ; RV64:       # %bb.0:
1189 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1190 ; RV64-NEXT:    vxor.vx v8, v8, a0, v0.t
1191 ; RV64-NEXT:    ret
1192   %elt.head = insertelement <2 x i64> poison, i64 %b, i32 0
1193   %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
1194   %v = call <2 x i64> @llvm.vp.xor.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> %m, i32 %evl)
1195   ret <2 x i64> %v
1198 define <2 x i64> @vxor_vx_v2i64_unmasked(<2 x i64> %va, i64 %b, i32 zeroext %evl) {
1199 ; RV32-LABEL: vxor_vx_v2i64_unmasked:
1200 ; RV32:       # %bb.0:
1201 ; RV32-NEXT:    addi sp, sp, -16
1202 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1203 ; RV32-NEXT:    sw a0, 8(sp)
1204 ; RV32-NEXT:    sw a1, 12(sp)
1205 ; RV32-NEXT:    addi a0, sp, 8
1206 ; RV32-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
1207 ; RV32-NEXT:    vlse64.v v9, (a0), zero
1208 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
1209 ; RV32-NEXT:    vxor.vv v8, v8, v9
1210 ; RV32-NEXT:    addi sp, sp, 16
1211 ; RV32-NEXT:    .cfi_def_cfa_offset 0
1212 ; RV32-NEXT:    ret
1214 ; RV64-LABEL: vxor_vx_v2i64_unmasked:
1215 ; RV64:       # %bb.0:
1216 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1217 ; RV64-NEXT:    vxor.vx v8, v8, a0
1218 ; RV64-NEXT:    ret
1219   %elt.head = insertelement <2 x i64> poison, i64 %b, i32 0
1220   %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
1221   %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)
1222   ret <2 x i64> %v
1225 define <2 x i64> @vxor_vi_v2i64(<2 x i64> %va, <2 x i1> %m, i32 zeroext %evl) {
1226 ; CHECK-LABEL: vxor_vi_v2i64:
1227 ; CHECK:       # %bb.0:
1228 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1229 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1230 ; CHECK-NEXT:    ret
1231   %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)
1232   ret <2 x i64> %v
1235 define <2 x i64> @vxor_vi_v2i64_unmasked(<2 x i64> %va, i32 zeroext %evl) {
1236 ; CHECK-LABEL: vxor_vi_v2i64_unmasked:
1237 ; CHECK:       # %bb.0:
1238 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1239 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1240 ; CHECK-NEXT:    ret
1241   %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)
1242   ret <2 x i64> %v
1245 define <2 x i64> @vxor_vi_v2i64_1(<2 x i64> %va, <2 x i1> %m, i32 zeroext %evl) {
1246 ; CHECK-LABEL: vxor_vi_v2i64_1:
1247 ; CHECK:       # %bb.0:
1248 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1249 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1250 ; CHECK-NEXT:    ret
1251   %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)
1252   ret <2 x i64> %v
1255 define <2 x i64> @vxor_vi_v2i64_unmasked_1(<2 x i64> %va, i32 zeroext %evl) {
1256 ; CHECK-LABEL: vxor_vi_v2i64_unmasked_1:
1257 ; CHECK:       # %bb.0:
1258 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1259 ; CHECK-NEXT:    vnot.v v8, v8
1260 ; CHECK-NEXT:    ret
1261   %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)
1262   ret <2 x i64> %v
1265 declare <4 x i64> @llvm.vp.xor.v4i64(<4 x i64>, <4 x i64>, <4 x i1>, i32)
1267 define <4 x i64> @vxor_vv_v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 zeroext %evl) {
1268 ; CHECK-LABEL: vxor_vv_v4i64:
1269 ; CHECK:       # %bb.0:
1270 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1271 ; CHECK-NEXT:    vxor.vv v8, v8, v10, v0.t
1272 ; CHECK-NEXT:    ret
1273   %v = call <4 x i64> @llvm.vp.xor.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 %evl)
1274   ret <4 x i64> %v
1277 define <4 x i64> @vxor_vv_v4i64_unmasked(<4 x i64> %va, <4 x i64> %b, i32 zeroext %evl) {
1278 ; CHECK-LABEL: vxor_vv_v4i64_unmasked:
1279 ; CHECK:       # %bb.0:
1280 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1281 ; CHECK-NEXT:    vxor.vv v8, v8, v10
1282 ; CHECK-NEXT:    ret
1283   %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)
1284   ret <4 x i64> %v
1287 define <4 x i64> @vxor_vx_v4i64(<4 x i64> %va, i64 %b, <4 x i1> %m, i32 zeroext %evl) {
1288 ; RV32-LABEL: vxor_vx_v4i64:
1289 ; RV32:       # %bb.0:
1290 ; RV32-NEXT:    addi sp, sp, -16
1291 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1292 ; RV32-NEXT:    sw a0, 8(sp)
1293 ; RV32-NEXT:    sw a1, 12(sp)
1294 ; RV32-NEXT:    addi a0, sp, 8
1295 ; RV32-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
1296 ; RV32-NEXT:    vlse64.v v10, (a0), zero
1297 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1298 ; RV32-NEXT:    vxor.vv v8, v8, v10, v0.t
1299 ; RV32-NEXT:    addi sp, sp, 16
1300 ; RV32-NEXT:    .cfi_def_cfa_offset 0
1301 ; RV32-NEXT:    ret
1303 ; RV64-LABEL: vxor_vx_v4i64:
1304 ; RV64:       # %bb.0:
1305 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1306 ; RV64-NEXT:    vxor.vx v8, v8, a0, v0.t
1307 ; RV64-NEXT:    ret
1308   %elt.head = insertelement <4 x i64> poison, i64 %b, i32 0
1309   %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
1310   %v = call <4 x i64> @llvm.vp.xor.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> %m, i32 %evl)
1311   ret <4 x i64> %v
1314 define <4 x i64> @vxor_vx_v4i64_unmasked(<4 x i64> %va, i64 %b, i32 zeroext %evl) {
1315 ; RV32-LABEL: vxor_vx_v4i64_unmasked:
1316 ; RV32:       # %bb.0:
1317 ; RV32-NEXT:    addi sp, sp, -16
1318 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1319 ; RV32-NEXT:    sw a0, 8(sp)
1320 ; RV32-NEXT:    sw a1, 12(sp)
1321 ; RV32-NEXT:    addi a0, sp, 8
1322 ; RV32-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
1323 ; RV32-NEXT:    vlse64.v v10, (a0), zero
1324 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1325 ; RV32-NEXT:    vxor.vv v8, v8, v10
1326 ; RV32-NEXT:    addi sp, sp, 16
1327 ; RV32-NEXT:    .cfi_def_cfa_offset 0
1328 ; RV32-NEXT:    ret
1330 ; RV64-LABEL: vxor_vx_v4i64_unmasked:
1331 ; RV64:       # %bb.0:
1332 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1333 ; RV64-NEXT:    vxor.vx v8, v8, a0
1334 ; RV64-NEXT:    ret
1335   %elt.head = insertelement <4 x i64> poison, i64 %b, i32 0
1336   %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
1337   %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)
1338   ret <4 x i64> %v
1341 define <4 x i64> @vxor_vi_v4i64(<4 x i64> %va, <4 x i1> %m, i32 zeroext %evl) {
1342 ; CHECK-LABEL: vxor_vi_v4i64:
1343 ; CHECK:       # %bb.0:
1344 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1345 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1346 ; CHECK-NEXT:    ret
1347   %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)
1348   ret <4 x i64> %v
1351 define <4 x i64> @vxor_vi_v4i64_unmasked(<4 x i64> %va, i32 zeroext %evl) {
1352 ; CHECK-LABEL: vxor_vi_v4i64_unmasked:
1353 ; CHECK:       # %bb.0:
1354 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1355 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1356 ; CHECK-NEXT:    ret
1357   %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)
1358   ret <4 x i64> %v
1361 define <4 x i64> @vxor_vi_v4i64_1(<4 x i64> %va, <4 x i1> %m, i32 zeroext %evl) {
1362 ; CHECK-LABEL: vxor_vi_v4i64_1:
1363 ; CHECK:       # %bb.0:
1364 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1365 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1366 ; CHECK-NEXT:    ret
1367   %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)
1368   ret <4 x i64> %v
1371 define <4 x i64> @vxor_vi_v4i64_unmasked_1(<4 x i64> %va, i32 zeroext %evl) {
1372 ; CHECK-LABEL: vxor_vi_v4i64_unmasked_1:
1373 ; CHECK:       # %bb.0:
1374 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1375 ; CHECK-NEXT:    vnot.v v8, v8
1376 ; CHECK-NEXT:    ret
1377   %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)
1378   ret <4 x i64> %v
1381 declare <8 x i64> @llvm.vp.xor.v8i64(<8 x i64>, <8 x i64>, <8 x i1>, i32)
1383 define <8 x i64> @vxor_vv_v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 zeroext %evl) {
1384 ; CHECK-LABEL: vxor_vv_v8i64:
1385 ; CHECK:       # %bb.0:
1386 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1387 ; CHECK-NEXT:    vxor.vv v8, v8, v12, v0.t
1388 ; CHECK-NEXT:    ret
1389   %v = call <8 x i64> @llvm.vp.xor.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 %evl)
1390   ret <8 x i64> %v
1393 define <8 x i64> @vxor_vv_v8i64_unmasked(<8 x i64> %va, <8 x i64> %b, i32 zeroext %evl) {
1394 ; CHECK-LABEL: vxor_vv_v8i64_unmasked:
1395 ; CHECK:       # %bb.0:
1396 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1397 ; CHECK-NEXT:    vxor.vv v8, v8, v12
1398 ; CHECK-NEXT:    ret
1399   %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)
1400   ret <8 x i64> %v
1403 define <8 x i64> @vxor_vx_v8i64(<8 x i64> %va, i64 %b, <8 x i1> %m, i32 zeroext %evl) {
1404 ; RV32-LABEL: vxor_vx_v8i64:
1405 ; RV32:       # %bb.0:
1406 ; RV32-NEXT:    addi sp, sp, -16
1407 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1408 ; RV32-NEXT:    sw a0, 8(sp)
1409 ; RV32-NEXT:    sw a1, 12(sp)
1410 ; RV32-NEXT:    addi a0, sp, 8
1411 ; RV32-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
1412 ; RV32-NEXT:    vlse64.v v12, (a0), zero
1413 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1414 ; RV32-NEXT:    vxor.vv v8, v8, v12, v0.t
1415 ; RV32-NEXT:    addi sp, sp, 16
1416 ; RV32-NEXT:    .cfi_def_cfa_offset 0
1417 ; RV32-NEXT:    ret
1419 ; RV64-LABEL: vxor_vx_v8i64:
1420 ; RV64:       # %bb.0:
1421 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1422 ; RV64-NEXT:    vxor.vx v8, v8, a0, v0.t
1423 ; RV64-NEXT:    ret
1424   %elt.head = insertelement <8 x i64> poison, i64 %b, i32 0
1425   %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
1426   %v = call <8 x i64> @llvm.vp.xor.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> %m, i32 %evl)
1427   ret <8 x i64> %v
1430 define <8 x i64> @vxor_vx_v8i64_unmasked(<8 x i64> %va, i64 %b, i32 zeroext %evl) {
1431 ; RV32-LABEL: vxor_vx_v8i64_unmasked:
1432 ; RV32:       # %bb.0:
1433 ; RV32-NEXT:    addi sp, sp, -16
1434 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1435 ; RV32-NEXT:    sw a0, 8(sp)
1436 ; RV32-NEXT:    sw a1, 12(sp)
1437 ; RV32-NEXT:    addi a0, sp, 8
1438 ; RV32-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
1439 ; RV32-NEXT:    vlse64.v v12, (a0), zero
1440 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1441 ; RV32-NEXT:    vxor.vv v8, v8, v12
1442 ; RV32-NEXT:    addi sp, sp, 16
1443 ; RV32-NEXT:    .cfi_def_cfa_offset 0
1444 ; RV32-NEXT:    ret
1446 ; RV64-LABEL: vxor_vx_v8i64_unmasked:
1447 ; RV64:       # %bb.0:
1448 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1449 ; RV64-NEXT:    vxor.vx v8, v8, a0
1450 ; RV64-NEXT:    ret
1451   %elt.head = insertelement <8 x i64> poison, i64 %b, i32 0
1452   %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
1453   %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)
1454   ret <8 x i64> %v
1457 define <8 x i64> @vxor_vi_v8i64(<8 x i64> %va, <8 x i1> %m, i32 zeroext %evl) {
1458 ; CHECK-LABEL: vxor_vi_v8i64:
1459 ; CHECK:       # %bb.0:
1460 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1461 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1462 ; CHECK-NEXT:    ret
1463   %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)
1464   ret <8 x i64> %v
1467 define <8 x i64> @vxor_vi_v8i64_unmasked(<8 x i64> %va, i32 zeroext %evl) {
1468 ; CHECK-LABEL: vxor_vi_v8i64_unmasked:
1469 ; CHECK:       # %bb.0:
1470 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1471 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1472 ; CHECK-NEXT:    ret
1473   %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)
1474   ret <8 x i64> %v
1477 define <8 x i64> @vxor_vi_v8i64_1(<8 x i64> %va, <8 x i1> %m, i32 zeroext %evl) {
1478 ; CHECK-LABEL: vxor_vi_v8i64_1:
1479 ; CHECK:       # %bb.0:
1480 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1481 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1482 ; CHECK-NEXT:    ret
1483   %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)
1484   ret <8 x i64> %v
1487 define <8 x i64> @vxor_vi_v8i64_unmasked_1(<8 x i64> %va, i32 zeroext %evl) {
1488 ; CHECK-LABEL: vxor_vi_v8i64_unmasked_1:
1489 ; CHECK:       # %bb.0:
1490 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1491 ; CHECK-NEXT:    vnot.v v8, v8
1492 ; CHECK-NEXT:    ret
1493   %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)
1494   ret <8 x i64> %v
1497 declare <16 x i64> @llvm.vp.xor.v16i64(<16 x i64>, <16 x i64>, <16 x i1>, i32)
1499 define <16 x i64> @vxor_vv_v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 zeroext %evl) {
1500 ; CHECK-LABEL: vxor_vv_v16i64:
1501 ; CHECK:       # %bb.0:
1502 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1503 ; CHECK-NEXT:    vxor.vv v8, v8, v16, v0.t
1504 ; CHECK-NEXT:    ret
1505   %v = call <16 x i64> @llvm.vp.xor.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 %evl)
1506   ret <16 x i64> %v
1509 define <16 x i64> @vxor_vv_v16i64_unmasked(<16 x i64> %va, <16 x i64> %b, i32 zeroext %evl) {
1510 ; CHECK-LABEL: vxor_vv_v16i64_unmasked:
1511 ; CHECK:       # %bb.0:
1512 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1513 ; CHECK-NEXT:    vxor.vv v8, v8, v16
1514 ; CHECK-NEXT:    ret
1515   %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)
1516   ret <16 x i64> %v
1519 define <16 x i64> @vxor_vx_v16i64(<16 x i64> %va, i64 %b, <16 x i1> %m, i32 zeroext %evl) {
1520 ; RV32-LABEL: vxor_vx_v16i64:
1521 ; RV32:       # %bb.0:
1522 ; RV32-NEXT:    addi sp, sp, -16
1523 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1524 ; RV32-NEXT:    sw a0, 8(sp)
1525 ; RV32-NEXT:    sw a1, 12(sp)
1526 ; RV32-NEXT:    addi a0, sp, 8
1527 ; RV32-NEXT:    vsetivli zero, 16, e64, m8, ta, ma
1528 ; RV32-NEXT:    vlse64.v v16, (a0), zero
1529 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
1530 ; RV32-NEXT:    vxor.vv v8, v8, v16, v0.t
1531 ; RV32-NEXT:    addi sp, sp, 16
1532 ; RV32-NEXT:    .cfi_def_cfa_offset 0
1533 ; RV32-NEXT:    ret
1535 ; RV64-LABEL: vxor_vx_v16i64:
1536 ; RV64:       # %bb.0:
1537 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
1538 ; RV64-NEXT:    vxor.vx v8, v8, a0, v0.t
1539 ; RV64-NEXT:    ret
1540   %elt.head = insertelement <16 x i64> poison, i64 %b, i32 0
1541   %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
1542   %v = call <16 x i64> @llvm.vp.xor.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> %m, i32 %evl)
1543   ret <16 x i64> %v
1546 define <16 x i64> @vxor_vx_v16i64_unmasked(<16 x i64> %va, i64 %b, i32 zeroext %evl) {
1547 ; RV32-LABEL: vxor_vx_v16i64_unmasked:
1548 ; RV32:       # %bb.0:
1549 ; RV32-NEXT:    addi sp, sp, -16
1550 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1551 ; RV32-NEXT:    sw a0, 8(sp)
1552 ; RV32-NEXT:    sw a1, 12(sp)
1553 ; RV32-NEXT:    addi a0, sp, 8
1554 ; RV32-NEXT:    vsetivli zero, 16, e64, m8, ta, ma
1555 ; RV32-NEXT:    vlse64.v v16, (a0), zero
1556 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
1557 ; RV32-NEXT:    vxor.vv v8, v8, v16
1558 ; RV32-NEXT:    addi sp, sp, 16
1559 ; RV32-NEXT:    .cfi_def_cfa_offset 0
1560 ; RV32-NEXT:    ret
1562 ; RV64-LABEL: vxor_vx_v16i64_unmasked:
1563 ; RV64:       # %bb.0:
1564 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
1565 ; RV64-NEXT:    vxor.vx v8, v8, a0
1566 ; RV64-NEXT:    ret
1567   %elt.head = insertelement <16 x i64> poison, i64 %b, i32 0
1568   %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
1569   %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)
1570   ret <16 x i64> %v
1573 define <16 x i64> @vxor_vi_v16i64(<16 x i64> %va, <16 x i1> %m, i32 zeroext %evl) {
1574 ; CHECK-LABEL: vxor_vi_v16i64:
1575 ; CHECK:       # %bb.0:
1576 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1577 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1578 ; CHECK-NEXT:    ret
1579   %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)
1580   ret <16 x i64> %v
1583 define <16 x i64> @vxor_vi_v16i64_unmasked(<16 x i64> %va, i32 zeroext %evl) {
1584 ; CHECK-LABEL: vxor_vi_v16i64_unmasked:
1585 ; CHECK:       # %bb.0:
1586 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1587 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1588 ; CHECK-NEXT:    ret
1589   %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)
1590   ret <16 x i64> %v
1593 define <16 x i64> @vxor_vi_v16i64_1(<16 x i64> %va, <16 x i1> %m, i32 zeroext %evl) {
1594 ; CHECK-LABEL: vxor_vi_v16i64_1:
1595 ; CHECK:       # %bb.0:
1596 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1597 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1598 ; CHECK-NEXT:    ret
1599   %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)
1600   ret <16 x i64> %v
1603 define <16 x i64> @vxor_vi_v16i64_unmasked_1(<16 x i64> %va, i32 zeroext %evl) {
1604 ; CHECK-LABEL: vxor_vi_v16i64_unmasked_1:
1605 ; CHECK:       # %bb.0:
1606 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1607 ; CHECK-NEXT:    vnot.v v8, v8
1608 ; CHECK-NEXT:    ret
1609   %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)
1610   ret <16 x i64> %v