Revert "[InstCombine] Support gep nuw in icmp folds" (#118698)
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vxor-vp.ll
blobf3dd7ec48881f919b26e1f2e4a6110340beb20ed
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s \
3 ; RUN:   | FileCheck %s --check-prefixes=CHECK,RV32
4 ; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s \
5 ; RUN:   | FileCheck %s --check-prefixes=CHECK,RV64
7 declare <vscale x 8 x i7> @llvm.vp.xor.nxv8i7(<vscale x 8 x i7>, <vscale x 8 x i7>, <vscale x 8 x i1>, i32)
9 define <vscale x 8 x i7> @vxor_vx_nxv8i7(<vscale x 8 x i7> %a, i7 signext %b, <vscale x 8 x i1> %mask, i32 zeroext %evl) {
10 ; CHECK-LABEL: vxor_vx_nxv8i7:
11 ; CHECK:       # %bb.0:
12 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
13 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
14 ; CHECK-NEXT:    ret
15   %elt.head = insertelement <vscale x 8 x i7> poison, i7 %b, i32 0
16   %vb = shufflevector <vscale x 8 x i7> %elt.head, <vscale x 8 x i7> poison, <vscale x 8 x i32> zeroinitializer
17   %v = call <vscale x 8 x i7> @llvm.vp.xor.nxv8i7(<vscale x 8 x i7> %a, <vscale x 8 x i7> %vb, <vscale x 8 x i1> %mask, i32 %evl)
18   ret <vscale x 8 x i7> %v
21 declare <vscale x 1 x i8> @llvm.vp.xor.nxv1i8(<vscale x 1 x i8>, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
23 define <vscale x 1 x i8> @vxor_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
24 ; CHECK-LABEL: vxor_vv_nxv1i8:
25 ; CHECK:       # %bb.0:
26 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
27 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
28 ; CHECK-NEXT:    ret
29   %v = call <vscale x 1 x i8> @llvm.vp.xor.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32 %evl)
30   ret <vscale x 1 x i8> %v
33 define <vscale x 1 x i8> @vxor_vv_nxv1i8_unmasked(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, i32 zeroext %evl) {
34 ; CHECK-LABEL: vxor_vv_nxv1i8_unmasked:
35 ; CHECK:       # %bb.0:
36 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
37 ; CHECK-NEXT:    vxor.vv v8, v8, v9
38 ; CHECK-NEXT:    ret
39   %v = call <vscale x 1 x i8> @llvm.vp.xor.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
40   ret <vscale x 1 x i8> %v
43 define <vscale x 1 x i8> @vxor_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
44 ; CHECK-LABEL: vxor_vx_nxv1i8:
45 ; CHECK:       # %bb.0:
46 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
47 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
48 ; CHECK-NEXT:    ret
49   %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
50   %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
51   %v = call <vscale x 1 x i8> @llvm.vp.xor.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 %evl)
52   ret <vscale x 1 x i8> %v
55 define <vscale x 1 x i8> @vxor_vx_nxv1i8_unmasked(<vscale x 1 x i8> %va, i8 %b, i32 zeroext %evl) {
56 ; CHECK-LABEL: vxor_vx_nxv1i8_unmasked:
57 ; CHECK:       # %bb.0:
58 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
59 ; CHECK-NEXT:    vxor.vx v8, v8, a0
60 ; CHECK-NEXT:    ret
61   %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
62   %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
63   %v = call <vscale x 1 x i8> @llvm.vp.xor.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
64   ret <vscale x 1 x i8> %v
67 define <vscale x 1 x i8> @vxor_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
68 ; CHECK-LABEL: vxor_vi_nxv1i8:
69 ; CHECK:       # %bb.0:
70 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
71 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
72 ; CHECK-NEXT:    ret
73   %v = call <vscale x 1 x i8> @llvm.vp.xor.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 7), <vscale x 1 x i1> %m, i32 %evl)
74   ret <vscale x 1 x i8> %v
77 define <vscale x 1 x i8> @vxor_vi_nxv1i8_unmasked(<vscale x 1 x i8> %va, i32 zeroext %evl) {
78 ; CHECK-LABEL: vxor_vi_nxv1i8_unmasked:
79 ; CHECK:       # %bb.0:
80 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
81 ; CHECK-NEXT:    vxor.vi v8, v8, 7
82 ; CHECK-NEXT:    ret
83   %v = call <vscale x 1 x i8> @llvm.vp.xor.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 7), <vscale x 1 x i1> splat (i1 true), i32 %evl)
84   ret <vscale x 1 x i8> %v
87 define <vscale x 1 x i8> @vxor_vi_nxv1i8_1(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
88 ; CHECK-LABEL: vxor_vi_nxv1i8_1:
89 ; CHECK:       # %bb.0:
90 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
91 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
92 ; CHECK-NEXT:    ret
93   %v = call <vscale x 1 x i8> @llvm.vp.xor.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 -1), <vscale x 1 x i1> %m, i32 %evl)
94   ret <vscale x 1 x i8> %v
97 define <vscale x 1 x i8> @vxor_vi_nxv1i8_unmasked_1(<vscale x 1 x i8> %va, i32 zeroext %evl) {
98 ; CHECK-LABEL: vxor_vi_nxv1i8_unmasked_1:
99 ; CHECK:       # %bb.0:
100 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
101 ; CHECK-NEXT:    vnot.v v8, v8
102 ; CHECK-NEXT:    ret
103   %v = call <vscale x 1 x i8> @llvm.vp.xor.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 -1), <vscale x 1 x i1> splat (i1 true), i32 %evl)
104   ret <vscale x 1 x i8> %v
107 declare <vscale x 2 x i8> @llvm.vp.xor.nxv2i8(<vscale x 2 x i8>, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
109 define <vscale x 2 x i8> @vxor_vv_nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
110 ; CHECK-LABEL: vxor_vv_nxv2i8:
111 ; CHECK:       # %bb.0:
112 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
113 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
114 ; CHECK-NEXT:    ret
115   %v = call <vscale x 2 x i8> @llvm.vp.xor.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> %m, i32 %evl)
116   ret <vscale x 2 x i8> %v
119 define <vscale x 2 x i8> @vxor_vv_nxv2i8_unmasked(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, i32 zeroext %evl) {
120 ; CHECK-LABEL: vxor_vv_nxv2i8_unmasked:
121 ; CHECK:       # %bb.0:
122 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
123 ; CHECK-NEXT:    vxor.vv v8, v8, v9
124 ; CHECK-NEXT:    ret
125   %v = call <vscale x 2 x i8> @llvm.vp.xor.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
126   ret <vscale x 2 x i8> %v
129 define <vscale x 2 x i8> @vxor_vx_nxv2i8(<vscale x 2 x i8> %va, i8 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
130 ; CHECK-LABEL: vxor_vx_nxv2i8:
131 ; CHECK:       # %bb.0:
132 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
133 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
134 ; CHECK-NEXT:    ret
135   %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0
136   %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
137   %v = call <vscale x 2 x i8> @llvm.vp.xor.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> %m, i32 %evl)
138   ret <vscale x 2 x i8> %v
141 define <vscale x 2 x i8> @vxor_vx_nxv2i8_unmasked(<vscale x 2 x i8> %va, i8 %b, i32 zeroext %evl) {
142 ; CHECK-LABEL: vxor_vx_nxv2i8_unmasked:
143 ; CHECK:       # %bb.0:
144 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
145 ; CHECK-NEXT:    vxor.vx v8, v8, a0
146 ; CHECK-NEXT:    ret
147   %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0
148   %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
149   %v = call <vscale x 2 x i8> @llvm.vp.xor.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
150   ret <vscale x 2 x i8> %v
153 define <vscale x 2 x i8> @vxor_vi_nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
154 ; CHECK-LABEL: vxor_vi_nxv2i8:
155 ; CHECK:       # %bb.0:
156 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
157 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
158 ; CHECK-NEXT:    ret
159   %v = call <vscale x 2 x i8> @llvm.vp.xor.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> splat (i8 7), <vscale x 2 x i1> %m, i32 %evl)
160   ret <vscale x 2 x i8> %v
163 define <vscale x 2 x i8> @vxor_vi_nxv2i8_unmasked(<vscale x 2 x i8> %va, i32 zeroext %evl) {
164 ; CHECK-LABEL: vxor_vi_nxv2i8_unmasked:
165 ; CHECK:       # %bb.0:
166 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
167 ; CHECK-NEXT:    vxor.vi v8, v8, 7
168 ; CHECK-NEXT:    ret
169   %v = call <vscale x 2 x i8> @llvm.vp.xor.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> splat (i8 7), <vscale x 2 x i1> splat (i1 true), i32 %evl)
170   ret <vscale x 2 x i8> %v
173 define <vscale x 2 x i8> @vxor_vi_nxv2i8_1(<vscale x 2 x i8> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
174 ; CHECK-LABEL: vxor_vi_nxv2i8_1:
175 ; CHECK:       # %bb.0:
176 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
177 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
178 ; CHECK-NEXT:    ret
179   %v = call <vscale x 2 x i8> @llvm.vp.xor.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> splat (i8 -1), <vscale x 2 x i1> %m, i32 %evl)
180   ret <vscale x 2 x i8> %v
183 define <vscale x 2 x i8> @vxor_vi_nxv2i8_unmasked_1(<vscale x 2 x i8> %va, i32 zeroext %evl) {
184 ; CHECK-LABEL: vxor_vi_nxv2i8_unmasked_1:
185 ; CHECK:       # %bb.0:
186 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
187 ; CHECK-NEXT:    vnot.v v8, v8
188 ; CHECK-NEXT:    ret
189   %v = call <vscale x 2 x i8> @llvm.vp.xor.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> splat (i8 -1), <vscale x 2 x i1> splat (i1 true), i32 %evl)
190   ret <vscale x 2 x i8> %v
193 declare <vscale x 4 x i8> @llvm.vp.xor.nxv4i8(<vscale x 4 x i8>, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
195 define <vscale x 4 x i8> @vxor_vv_nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
196 ; CHECK-LABEL: vxor_vv_nxv4i8:
197 ; CHECK:       # %bb.0:
198 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
199 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
200 ; CHECK-NEXT:    ret
201   %v = call <vscale x 4 x i8> @llvm.vp.xor.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> %m, i32 %evl)
202   ret <vscale x 4 x i8> %v
205 define <vscale x 4 x i8> @vxor_vv_nxv4i8_unmasked(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, i32 zeroext %evl) {
206 ; CHECK-LABEL: vxor_vv_nxv4i8_unmasked:
207 ; CHECK:       # %bb.0:
208 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
209 ; CHECK-NEXT:    vxor.vv v8, v8, v9
210 ; CHECK-NEXT:    ret
211   %v = call <vscale x 4 x i8> @llvm.vp.xor.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
212   ret <vscale x 4 x i8> %v
215 define <vscale x 4 x i8> @vxor_vx_nxv4i8(<vscale x 4 x i8> %va, i8 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
216 ; CHECK-LABEL: vxor_vx_nxv4i8:
217 ; CHECK:       # %bb.0:
218 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
219 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
220 ; CHECK-NEXT:    ret
221   %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0
222   %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
223   %v = call <vscale x 4 x i8> @llvm.vp.xor.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> %m, i32 %evl)
224   ret <vscale x 4 x i8> %v
227 define <vscale x 4 x i8> @vxor_vx_nxv4i8_unmasked(<vscale x 4 x i8> %va, i8 %b, i32 zeroext %evl) {
228 ; CHECK-LABEL: vxor_vx_nxv4i8_unmasked:
229 ; CHECK:       # %bb.0:
230 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
231 ; CHECK-NEXT:    vxor.vx v8, v8, a0
232 ; CHECK-NEXT:    ret
233   %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0
234   %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
235   %v = call <vscale x 4 x i8> @llvm.vp.xor.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
236   ret <vscale x 4 x i8> %v
239 define <vscale x 4 x i8> @vxor_vi_nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
240 ; CHECK-LABEL: vxor_vi_nxv4i8:
241 ; CHECK:       # %bb.0:
242 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
243 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
244 ; CHECK-NEXT:    ret
245   %v = call <vscale x 4 x i8> @llvm.vp.xor.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> splat (i8 7), <vscale x 4 x i1> %m, i32 %evl)
246   ret <vscale x 4 x i8> %v
249 define <vscale x 4 x i8> @vxor_vi_nxv4i8_unmasked(<vscale x 4 x i8> %va, i32 zeroext %evl) {
250 ; CHECK-LABEL: vxor_vi_nxv4i8_unmasked:
251 ; CHECK:       # %bb.0:
252 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
253 ; CHECK-NEXT:    vxor.vi v8, v8, 7
254 ; CHECK-NEXT:    ret
255   %v = call <vscale x 4 x i8> @llvm.vp.xor.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> splat (i8 7), <vscale x 4 x i1> splat (i1 true), i32 %evl)
256   ret <vscale x 4 x i8> %v
259 define <vscale x 4 x i8> @vxor_vi_nxv4i8_1(<vscale x 4 x i8> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
260 ; CHECK-LABEL: vxor_vi_nxv4i8_1:
261 ; CHECK:       # %bb.0:
262 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
263 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
264 ; CHECK-NEXT:    ret
265   %v = call <vscale x 4 x i8> @llvm.vp.xor.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> splat (i8 -1), <vscale x 4 x i1> %m, i32 %evl)
266   ret <vscale x 4 x i8> %v
269 define <vscale x 4 x i8> @vxor_vi_nxv4i8_unmasked_1(<vscale x 4 x i8> %va, i32 zeroext %evl) {
270 ; CHECK-LABEL: vxor_vi_nxv4i8_unmasked_1:
271 ; CHECK:       # %bb.0:
272 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
273 ; CHECK-NEXT:    vnot.v v8, v8
274 ; CHECK-NEXT:    ret
275   %v = call <vscale x 4 x i8> @llvm.vp.xor.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> splat (i8 -1), <vscale x 4 x i1> splat (i1 true), i32 %evl)
276   ret <vscale x 4 x i8> %v
279 declare <vscale x 8 x i8> @llvm.vp.xor.nxv8i8(<vscale x 8 x i8>, <vscale x 8 x i8>, <vscale x 8 x i1>, i32)
281 define <vscale x 8 x i8> @vxor_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
282 ; CHECK-LABEL: vxor_vv_nxv8i8:
283 ; CHECK:       # %bb.0:
284 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
285 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
286 ; CHECK-NEXT:    ret
287   %v = call <vscale x 8 x i8> @llvm.vp.xor.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> %m, i32 %evl)
288   ret <vscale x 8 x i8> %v
291 define <vscale x 8 x i8> @vxor_vv_nxv8i8_unmasked(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, i32 zeroext %evl) {
292 ; CHECK-LABEL: vxor_vv_nxv8i8_unmasked:
293 ; CHECK:       # %bb.0:
294 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
295 ; CHECK-NEXT:    vxor.vv v8, v8, v9
296 ; CHECK-NEXT:    ret
297   %v = call <vscale x 8 x i8> @llvm.vp.xor.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
298   ret <vscale x 8 x i8> %v
301 define <vscale x 8 x i8> @vxor_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
302 ; CHECK-LABEL: vxor_vx_nxv8i8:
303 ; CHECK:       # %bb.0:
304 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
305 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
306 ; CHECK-NEXT:    ret
307   %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
308   %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
309   %v = call <vscale x 8 x i8> @llvm.vp.xor.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 %evl)
310   ret <vscale x 8 x i8> %v
313 define <vscale x 8 x i8> @vxor_vx_nxv8i8_unmasked(<vscale x 8 x i8> %va, i8 %b, i32 zeroext %evl) {
314 ; CHECK-LABEL: vxor_vx_nxv8i8_unmasked:
315 ; CHECK:       # %bb.0:
316 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
317 ; CHECK-NEXT:    vxor.vx v8, v8, a0
318 ; CHECK-NEXT:    ret
319   %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
320   %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
321   %v = call <vscale x 8 x i8> @llvm.vp.xor.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
322   ret <vscale x 8 x i8> %v
325 define <vscale x 8 x i8> @vxor_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
326 ; CHECK-LABEL: vxor_vi_nxv8i8:
327 ; CHECK:       # %bb.0:
328 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
329 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
330 ; CHECK-NEXT:    ret
331   %v = call <vscale x 8 x i8> @llvm.vp.xor.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 7), <vscale x 8 x i1> %m, i32 %evl)
332   ret <vscale x 8 x i8> %v
335 define <vscale x 8 x i8> @vxor_vi_nxv8i8_unmasked(<vscale x 8 x i8> %va, i32 zeroext %evl) {
336 ; CHECK-LABEL: vxor_vi_nxv8i8_unmasked:
337 ; CHECK:       # %bb.0:
338 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
339 ; CHECK-NEXT:    vxor.vi v8, v8, 7
340 ; CHECK-NEXT:    ret
341   %v = call <vscale x 8 x i8> @llvm.vp.xor.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 7), <vscale x 8 x i1> splat (i1 true), i32 %evl)
342   ret <vscale x 8 x i8> %v
345 define <vscale x 8 x i8> @vxor_vi_nxv8i8_1(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
346 ; CHECK-LABEL: vxor_vi_nxv8i8_1:
347 ; CHECK:       # %bb.0:
348 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
349 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
350 ; CHECK-NEXT:    ret
351   %v = call <vscale x 8 x i8> @llvm.vp.xor.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 -1), <vscale x 8 x i1> %m, i32 %evl)
352   ret <vscale x 8 x i8> %v
355 define <vscale x 8 x i8> @vxor_vi_nxv8i8_unmasked_1(<vscale x 8 x i8> %va, i32 zeroext %evl) {
356 ; CHECK-LABEL: vxor_vi_nxv8i8_unmasked_1:
357 ; CHECK:       # %bb.0:
358 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
359 ; CHECK-NEXT:    vnot.v v8, v8
360 ; CHECK-NEXT:    ret
361   %v = call <vscale x 8 x i8> @llvm.vp.xor.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 -1), <vscale x 8 x i1> splat (i1 true), i32 %evl)
362   ret <vscale x 8 x i8> %v
365 declare <vscale x 15 x i8> @llvm.vp.xor.nxv15i8(<vscale x 15 x i8>, <vscale x 15 x i8>, <vscale x 15 x i1>, i32)
367 define <vscale x 15 x i8> @vxor_vv_nxv15i8(<vscale x 15 x i8> %va, <vscale x 15 x i8> %b, <vscale x 15 x i1> %m, i32 zeroext %evl) {
368 ; CHECK-LABEL: vxor_vv_nxv15i8:
369 ; CHECK:       # %bb.0:
370 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
371 ; CHECK-NEXT:    vxor.vv v8, v8, v10, v0.t
372 ; CHECK-NEXT:    ret
373   %v = call <vscale x 15 x i8> @llvm.vp.xor.nxv15i8(<vscale x 15 x i8> %va, <vscale x 15 x i8> %b, <vscale x 15 x i1> %m, i32 %evl)
374   ret <vscale x 15 x i8> %v
377 define <vscale x 15 x i8> @vxor_vv_nxv15i8_unmasked(<vscale x 15 x i8> %va, <vscale x 15 x i8> %b, i32 zeroext %evl) {
378 ; CHECK-LABEL: vxor_vv_nxv15i8_unmasked:
379 ; CHECK:       # %bb.0:
380 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
381 ; CHECK-NEXT:    vxor.vv v8, v8, v10
382 ; CHECK-NEXT:    ret
383   %v = call <vscale x 15 x i8> @llvm.vp.xor.nxv15i8(<vscale x 15 x i8> %va, <vscale x 15 x i8> %b, <vscale x 15 x i1> splat (i1 true), i32 %evl)
384   ret <vscale x 15 x i8> %v
387 define <vscale x 15 x i8> @vxor_vx_nxv15i8(<vscale x 15 x i8> %va, i8 %b, <vscale x 15 x i1> %m, i32 zeroext %evl) {
388 ; CHECK-LABEL: vxor_vx_nxv15i8:
389 ; CHECK:       # %bb.0:
390 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
391 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
392 ; CHECK-NEXT:    ret
393   %elt.head = insertelement <vscale x 15 x i8> poison, i8 %b, i32 0
394   %vb = shufflevector <vscale x 15 x i8> %elt.head, <vscale x 15 x i8> poison, <vscale x 15 x i32> zeroinitializer
395   %v = call <vscale x 15 x i8> @llvm.vp.xor.nxv15i8(<vscale x 15 x i8> %va, <vscale x 15 x i8> %vb, <vscale x 15 x i1> %m, i32 %evl)
396   ret <vscale x 15 x i8> %v
399 define <vscale x 15 x i8> @vxor_vx_nxv15i8_unmasked(<vscale x 15 x i8> %va, i8 %b, i32 zeroext %evl) {
400 ; CHECK-LABEL: vxor_vx_nxv15i8_unmasked:
401 ; CHECK:       # %bb.0:
402 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
403 ; CHECK-NEXT:    vxor.vx v8, v8, a0
404 ; CHECK-NEXT:    ret
405   %elt.head = insertelement <vscale x 15 x i8> poison, i8 %b, i32 0
406   %vb = shufflevector <vscale x 15 x i8> %elt.head, <vscale x 15 x i8> poison, <vscale x 15 x i32> zeroinitializer
407   %v = call <vscale x 15 x i8> @llvm.vp.xor.nxv15i8(<vscale x 15 x i8> %va, <vscale x 15 x i8> %vb, <vscale x 15 x i1> splat (i1 true), i32 %evl)
408   ret <vscale x 15 x i8> %v
411 define <vscale x 15 x i8> @vxor_vi_nxv15i8(<vscale x 15 x i8> %va, <vscale x 15 x i1> %m, i32 zeroext %evl) {
412 ; CHECK-LABEL: vxor_vi_nxv15i8:
413 ; CHECK:       # %bb.0:
414 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
415 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
416 ; CHECK-NEXT:    ret
417   %v = call <vscale x 15 x i8> @llvm.vp.xor.nxv15i8(<vscale x 15 x i8> %va, <vscale x 15 x i8> splat (i8 7), <vscale x 15 x i1> %m, i32 %evl)
418   ret <vscale x 15 x i8> %v
421 define <vscale x 15 x i8> @vxor_vi_nxv15i8_unmasked(<vscale x 15 x i8> %va, i32 zeroext %evl) {
422 ; CHECK-LABEL: vxor_vi_nxv15i8_unmasked:
423 ; CHECK:       # %bb.0:
424 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
425 ; CHECK-NEXT:    vxor.vi v8, v8, 7
426 ; CHECK-NEXT:    ret
427   %v = call <vscale x 15 x i8> @llvm.vp.xor.nxv15i8(<vscale x 15 x i8> %va, <vscale x 15 x i8> splat (i8 7), <vscale x 15 x i1> splat (i1 true), i32 %evl)
428   ret <vscale x 15 x i8> %v
431 define <vscale x 15 x i8> @vxor_vi_nxv15i8_1(<vscale x 15 x i8> %va, <vscale x 15 x i1> %m, i32 zeroext %evl) {
432 ; CHECK-LABEL: vxor_vi_nxv15i8_1:
433 ; CHECK:       # %bb.0:
434 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
435 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
436 ; CHECK-NEXT:    ret
437   %v = call <vscale x 15 x i8> @llvm.vp.xor.nxv15i8(<vscale x 15 x i8> %va, <vscale x 15 x i8> splat (i8 -1), <vscale x 15 x i1> %m, i32 %evl)
438   ret <vscale x 15 x i8> %v
441 define <vscale x 15 x i8> @vxor_vi_nxv15i8_unmasked_1(<vscale x 15 x i8> %va, i32 zeroext %evl) {
442 ; CHECK-LABEL: vxor_vi_nxv15i8_unmasked_1:
443 ; CHECK:       # %bb.0:
444 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
445 ; CHECK-NEXT:    vnot.v v8, v8
446 ; CHECK-NEXT:    ret
447   %v = call <vscale x 15 x i8> @llvm.vp.xor.nxv15i8(<vscale x 15 x i8> %va, <vscale x 15 x i8> splat (i8 -1), <vscale x 15 x i1> splat (i1 true), i32 %evl)
448   ret <vscale x 15 x i8> %v
451 declare <vscale x 16 x i8> @llvm.vp.xor.nxv16i8(<vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i1>, i32)
453 define <vscale x 16 x i8> @vxor_vv_nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
454 ; CHECK-LABEL: vxor_vv_nxv16i8:
455 ; CHECK:       # %bb.0:
456 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
457 ; CHECK-NEXT:    vxor.vv v8, v8, v10, v0.t
458 ; CHECK-NEXT:    ret
459   %v = call <vscale x 16 x i8> @llvm.vp.xor.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> %m, i32 %evl)
460   ret <vscale x 16 x i8> %v
463 define <vscale x 16 x i8> @vxor_vv_nxv16i8_unmasked(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, i32 zeroext %evl) {
464 ; CHECK-LABEL: vxor_vv_nxv16i8_unmasked:
465 ; CHECK:       # %bb.0:
466 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
467 ; CHECK-NEXT:    vxor.vv v8, v8, v10
468 ; CHECK-NEXT:    ret
469   %v = call <vscale x 16 x i8> @llvm.vp.xor.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)
470   ret <vscale x 16 x i8> %v
473 define <vscale x 16 x i8> @vxor_vx_nxv16i8(<vscale x 16 x i8> %va, i8 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
474 ; CHECK-LABEL: vxor_vx_nxv16i8:
475 ; CHECK:       # %bb.0:
476 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
477 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
478 ; CHECK-NEXT:    ret
479   %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0
480   %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
481   %v = call <vscale x 16 x i8> @llvm.vp.xor.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> %m, i32 %evl)
482   ret <vscale x 16 x i8> %v
485 define <vscale x 16 x i8> @vxor_vx_nxv16i8_unmasked(<vscale x 16 x i8> %va, i8 %b, i32 zeroext %evl) {
486 ; CHECK-LABEL: vxor_vx_nxv16i8_unmasked:
487 ; CHECK:       # %bb.0:
488 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
489 ; CHECK-NEXT:    vxor.vx v8, v8, a0
490 ; CHECK-NEXT:    ret
491   %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0
492   %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
493   %v = call <vscale x 16 x i8> @llvm.vp.xor.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)
494   ret <vscale x 16 x i8> %v
497 define <vscale x 16 x i8> @vxor_vi_nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
498 ; CHECK-LABEL: vxor_vi_nxv16i8:
499 ; CHECK:       # %bb.0:
500 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
501 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
502 ; CHECK-NEXT:    ret
503   %v = call <vscale x 16 x i8> @llvm.vp.xor.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> splat (i8 7), <vscale x 16 x i1> %m, i32 %evl)
504   ret <vscale x 16 x i8> %v
507 define <vscale x 16 x i8> @vxor_vi_nxv16i8_unmasked(<vscale x 16 x i8> %va, i32 zeroext %evl) {
508 ; CHECK-LABEL: vxor_vi_nxv16i8_unmasked:
509 ; CHECK:       # %bb.0:
510 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
511 ; CHECK-NEXT:    vxor.vi v8, v8, 7
512 ; CHECK-NEXT:    ret
513   %v = call <vscale x 16 x i8> @llvm.vp.xor.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> splat (i8 7), <vscale x 16 x i1> splat (i1 true), i32 %evl)
514   ret <vscale x 16 x i8> %v
517 define <vscale x 16 x i8> @vxor_vi_nxv16i8_1(<vscale x 16 x i8> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
518 ; CHECK-LABEL: vxor_vi_nxv16i8_1:
519 ; CHECK:       # %bb.0:
520 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
521 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
522 ; CHECK-NEXT:    ret
523   %v = call <vscale x 16 x i8> @llvm.vp.xor.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> splat (i8 -1), <vscale x 16 x i1> %m, i32 %evl)
524   ret <vscale x 16 x i8> %v
527 define <vscale x 16 x i8> @vxor_vi_nxv16i8_unmasked_1(<vscale x 16 x i8> %va, i32 zeroext %evl) {
528 ; CHECK-LABEL: vxor_vi_nxv16i8_unmasked_1:
529 ; CHECK:       # %bb.0:
530 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
531 ; CHECK-NEXT:    vnot.v v8, v8
532 ; CHECK-NEXT:    ret
533   %v = call <vscale x 16 x i8> @llvm.vp.xor.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> splat (i8 -1), <vscale x 16 x i1> splat (i1 true), i32 %evl)
534   ret <vscale x 16 x i8> %v
537 declare <vscale x 32 x i8> @llvm.vp.xor.nxv32i8(<vscale x 32 x i8>, <vscale x 32 x i8>, <vscale x 32 x i1>, i32)
539 define <vscale x 32 x i8> @vxor_vv_nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
540 ; CHECK-LABEL: vxor_vv_nxv32i8:
541 ; CHECK:       # %bb.0:
542 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
543 ; CHECK-NEXT:    vxor.vv v8, v8, v12, v0.t
544 ; CHECK-NEXT:    ret
545   %v = call <vscale x 32 x i8> @llvm.vp.xor.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> %m, i32 %evl)
546   ret <vscale x 32 x i8> %v
549 define <vscale x 32 x i8> @vxor_vv_nxv32i8_unmasked(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, i32 zeroext %evl) {
550 ; CHECK-LABEL: vxor_vv_nxv32i8_unmasked:
551 ; CHECK:       # %bb.0:
552 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
553 ; CHECK-NEXT:    vxor.vv v8, v8, v12
554 ; CHECK-NEXT:    ret
555   %v = call <vscale x 32 x i8> @llvm.vp.xor.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> splat (i1 true), i32 %evl)
556   ret <vscale x 32 x i8> %v
559 define <vscale x 32 x i8> @vxor_vx_nxv32i8(<vscale x 32 x i8> %va, i8 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
560 ; CHECK-LABEL: vxor_vx_nxv32i8:
561 ; CHECK:       # %bb.0:
562 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
563 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
564 ; CHECK-NEXT:    ret
565   %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0
566   %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
567   %v = call <vscale x 32 x i8> @llvm.vp.xor.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> %m, i32 %evl)
568   ret <vscale x 32 x i8> %v
571 define <vscale x 32 x i8> @vxor_vx_nxv32i8_unmasked(<vscale x 32 x i8> %va, i8 %b, i32 zeroext %evl) {
572 ; CHECK-LABEL: vxor_vx_nxv32i8_unmasked:
573 ; CHECK:       # %bb.0:
574 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
575 ; CHECK-NEXT:    vxor.vx v8, v8, a0
576 ; CHECK-NEXT:    ret
577   %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0
578   %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
579   %v = call <vscale x 32 x i8> @llvm.vp.xor.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> splat (i1 true), i32 %evl)
580   ret <vscale x 32 x i8> %v
583 define <vscale x 32 x i8> @vxor_vi_nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i1> %m, i32 zeroext %evl) {
584 ; CHECK-LABEL: vxor_vi_nxv32i8:
585 ; CHECK:       # %bb.0:
586 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
587 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
588 ; CHECK-NEXT:    ret
589   %v = call <vscale x 32 x i8> @llvm.vp.xor.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> splat (i8 7), <vscale x 32 x i1> %m, i32 %evl)
590   ret <vscale x 32 x i8> %v
593 define <vscale x 32 x i8> @vxor_vi_nxv32i8_unmasked(<vscale x 32 x i8> %va, i32 zeroext %evl) {
594 ; CHECK-LABEL: vxor_vi_nxv32i8_unmasked:
595 ; CHECK:       # %bb.0:
596 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
597 ; CHECK-NEXT:    vxor.vi v8, v8, 7
598 ; CHECK-NEXT:    ret
599   %v = call <vscale x 32 x i8> @llvm.vp.xor.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> splat (i8 7), <vscale x 32 x i1> splat (i1 true), i32 %evl)
600   ret <vscale x 32 x i8> %v
603 define <vscale x 32 x i8> @vxor_vi_nxv32i8_1(<vscale x 32 x i8> %va, <vscale x 32 x i1> %m, i32 zeroext %evl) {
604 ; CHECK-LABEL: vxor_vi_nxv32i8_1:
605 ; CHECK:       # %bb.0:
606 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
607 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
608 ; CHECK-NEXT:    ret
609   %v = call <vscale x 32 x i8> @llvm.vp.xor.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> splat (i8 -1), <vscale x 32 x i1> %m, i32 %evl)
610   ret <vscale x 32 x i8> %v
613 define <vscale x 32 x i8> @vxor_vi_nxv32i8_unmasked_1(<vscale x 32 x i8> %va, i32 zeroext %evl) {
614 ; CHECK-LABEL: vxor_vi_nxv32i8_unmasked_1:
615 ; CHECK:       # %bb.0:
616 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
617 ; CHECK-NEXT:    vnot.v v8, v8
618 ; CHECK-NEXT:    ret
619   %v = call <vscale x 32 x i8> @llvm.vp.xor.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> splat (i8 -1), <vscale x 32 x i1> splat (i1 true), i32 %evl)
620   ret <vscale x 32 x i8> %v
623 declare <vscale x 64 x i8> @llvm.vp.xor.nxv64i8(<vscale x 64 x i8>, <vscale x 64 x i8>, <vscale x 64 x i1>, i32)
625 define <vscale x 64 x i8> @vxor_vv_nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> %m, i32 zeroext %evl) {
626 ; CHECK-LABEL: vxor_vv_nxv64i8:
627 ; CHECK:       # %bb.0:
628 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
629 ; CHECK-NEXT:    vxor.vv v8, v8, v16, v0.t
630 ; CHECK-NEXT:    ret
631   %v = call <vscale x 64 x i8> @llvm.vp.xor.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> %m, i32 %evl)
632   ret <vscale x 64 x i8> %v
635 define <vscale x 64 x i8> @vxor_vv_nxv64i8_unmasked(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, i32 zeroext %evl) {
636 ; CHECK-LABEL: vxor_vv_nxv64i8_unmasked:
637 ; CHECK:       # %bb.0:
638 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
639 ; CHECK-NEXT:    vxor.vv v8, v8, v16
640 ; CHECK-NEXT:    ret
641   %v = call <vscale x 64 x i8> @llvm.vp.xor.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> splat (i1 true), i32 %evl)
642   ret <vscale x 64 x i8> %v
645 define <vscale x 64 x i8> @vxor_vx_nxv64i8(<vscale x 64 x i8> %va, i8 %b, <vscale x 64 x i1> %m, i32 zeroext %evl) {
646 ; CHECK-LABEL: vxor_vx_nxv64i8:
647 ; CHECK:       # %bb.0:
648 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
649 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
650 ; CHECK-NEXT:    ret
651   %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0
652   %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
653   %v = call <vscale x 64 x i8> @llvm.vp.xor.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> %m, i32 %evl)
654   ret <vscale x 64 x i8> %v
657 define <vscale x 64 x i8> @vxor_vx_nxv64i8_unmasked(<vscale x 64 x i8> %va, i8 %b, i32 zeroext %evl) {
658 ; CHECK-LABEL: vxor_vx_nxv64i8_unmasked:
659 ; CHECK:       # %bb.0:
660 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
661 ; CHECK-NEXT:    vxor.vx v8, v8, a0
662 ; CHECK-NEXT:    ret
663   %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0
664   %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
665   %v = call <vscale x 64 x i8> @llvm.vp.xor.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> splat (i1 true), i32 %evl)
666   ret <vscale x 64 x i8> %v
669 define <vscale x 64 x i8> @vxor_vi_nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i1> %m, i32 zeroext %evl) {
670 ; CHECK-LABEL: vxor_vi_nxv64i8:
671 ; CHECK:       # %bb.0:
672 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
673 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
674 ; CHECK-NEXT:    ret
675   %v = call <vscale x 64 x i8> @llvm.vp.xor.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> splat (i8 7), <vscale x 64 x i1> %m, i32 %evl)
676   ret <vscale x 64 x i8> %v
679 define <vscale x 64 x i8> @vxor_vi_nxv64i8_unmasked(<vscale x 64 x i8> %va, i32 zeroext %evl) {
680 ; CHECK-LABEL: vxor_vi_nxv64i8_unmasked:
681 ; CHECK:       # %bb.0:
682 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
683 ; CHECK-NEXT:    vxor.vi v8, v8, 7
684 ; CHECK-NEXT:    ret
685   %v = call <vscale x 64 x i8> @llvm.vp.xor.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> splat (i8 7), <vscale x 64 x i1> splat (i1 true), i32 %evl)
686   ret <vscale x 64 x i8> %v
689 define <vscale x 64 x i8> @vxor_vi_nxv64i8_1(<vscale x 64 x i8> %va, <vscale x 64 x i1> %m, i32 zeroext %evl) {
690 ; CHECK-LABEL: vxor_vi_nxv64i8_1:
691 ; CHECK:       # %bb.0:
692 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
693 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
694 ; CHECK-NEXT:    ret
695   %v = call <vscale x 64 x i8> @llvm.vp.xor.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> splat (i8 -1), <vscale x 64 x i1> %m, i32 %evl)
696   ret <vscale x 64 x i8> %v
699 define <vscale x 64 x i8> @vxor_vi_nxv64i8_unmasked_1(<vscale x 64 x i8> %va, i32 zeroext %evl) {
700 ; CHECK-LABEL: vxor_vi_nxv64i8_unmasked_1:
701 ; CHECK:       # %bb.0:
702 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
703 ; CHECK-NEXT:    vnot.v v8, v8
704 ; CHECK-NEXT:    ret
705   %v = call <vscale x 64 x i8> @llvm.vp.xor.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> splat (i8 -1), <vscale x 64 x i1> splat (i1 true), i32 %evl)
706   ret <vscale x 64 x i8> %v
709 declare <vscale x 1 x i16> @llvm.vp.xor.nxv1i16(<vscale x 1 x i16>, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
711 define <vscale x 1 x i16> @vxor_vv_nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
712 ; CHECK-LABEL: vxor_vv_nxv1i16:
713 ; CHECK:       # %bb.0:
714 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
715 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
716 ; CHECK-NEXT:    ret
717   %v = call <vscale x 1 x i16> @llvm.vp.xor.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> %m, i32 %evl)
718   ret <vscale x 1 x i16> %v
721 define <vscale x 1 x i16> @vxor_vv_nxv1i16_unmasked(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, i32 zeroext %evl) {
722 ; CHECK-LABEL: vxor_vv_nxv1i16_unmasked:
723 ; CHECK:       # %bb.0:
724 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
725 ; CHECK-NEXT:    vxor.vv v8, v8, v9
726 ; CHECK-NEXT:    ret
727   %v = call <vscale x 1 x i16> @llvm.vp.xor.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
728   ret <vscale x 1 x i16> %v
731 define <vscale x 1 x i16> @vxor_vx_nxv1i16(<vscale x 1 x i16> %va, i16 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
732 ; CHECK-LABEL: vxor_vx_nxv1i16:
733 ; CHECK:       # %bb.0:
734 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
735 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
736 ; CHECK-NEXT:    ret
737   %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
738   %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
739   %v = call <vscale x 1 x i16> @llvm.vp.xor.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> %m, i32 %evl)
740   ret <vscale x 1 x i16> %v
743 define <vscale x 1 x i16> @vxor_vx_nxv1i16_commute(<vscale x 1 x i16> %va, i16 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
744 ; CHECK-LABEL: vxor_vx_nxv1i16_commute:
745 ; CHECK:       # %bb.0:
746 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
747 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
748 ; CHECK-NEXT:    ret
749   %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
750   %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
751   %v = call <vscale x 1 x i16> @llvm.vp.xor.nxv1i16(<vscale x 1 x i16> %vb, <vscale x 1 x i16> %va, <vscale x 1 x i1> %m, i32 %evl)
752   ret <vscale x 1 x i16> %v
755 define <vscale x 1 x i16> @vxor_vx_nxv1i16_unmasked(<vscale x 1 x i16> %va, i16 %b, i32 zeroext %evl) {
756 ; CHECK-LABEL: vxor_vx_nxv1i16_unmasked:
757 ; CHECK:       # %bb.0:
758 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
759 ; CHECK-NEXT:    vxor.vx v8, v8, a0
760 ; CHECK-NEXT:    ret
761   %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
762   %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
763   %v = call <vscale x 1 x i16> @llvm.vp.xor.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
764   ret <vscale x 1 x i16> %v
767 define <vscale x 1 x i16> @vxor_vi_nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
768 ; CHECK-LABEL: vxor_vi_nxv1i16:
769 ; CHECK:       # %bb.0:
770 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
771 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
772 ; CHECK-NEXT:    ret
773   %v = call <vscale x 1 x i16> @llvm.vp.xor.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> splat (i16 7), <vscale x 1 x i1> %m, i32 %evl)
774   ret <vscale x 1 x i16> %v
777 define <vscale x 1 x i16> @vxor_vi_nxv1i16_unmasked(<vscale x 1 x i16> %va, i32 zeroext %evl) {
778 ; CHECK-LABEL: vxor_vi_nxv1i16_unmasked:
779 ; CHECK:       # %bb.0:
780 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
781 ; CHECK-NEXT:    vxor.vi v8, v8, 7
782 ; CHECK-NEXT:    ret
783   %v = call <vscale x 1 x i16> @llvm.vp.xor.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> splat (i16 7), <vscale x 1 x i1> splat (i1 true), i32 %evl)
784   ret <vscale x 1 x i16> %v
787 define <vscale x 1 x i16> @vxor_vi_nxv1i16_1(<vscale x 1 x i16> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
788 ; CHECK-LABEL: vxor_vi_nxv1i16_1:
789 ; CHECK:       # %bb.0:
790 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
791 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
792 ; CHECK-NEXT:    ret
793   %v = call <vscale x 1 x i16> @llvm.vp.xor.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> splat (i16 -1), <vscale x 1 x i1> %m, i32 %evl)
794   ret <vscale x 1 x i16> %v
797 define <vscale x 1 x i16> @vxor_vi_nxv1i16_unmasked_1(<vscale x 1 x i16> %va, i32 zeroext %evl) {
798 ; CHECK-LABEL: vxor_vi_nxv1i16_unmasked_1:
799 ; CHECK:       # %bb.0:
800 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
801 ; CHECK-NEXT:    vnot.v v8, v8
802 ; CHECK-NEXT:    ret
803   %v = call <vscale x 1 x i16> @llvm.vp.xor.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> splat (i16 -1), <vscale x 1 x i1> splat (i1 true), i32 %evl)
804   ret <vscale x 1 x i16> %v
807 declare <vscale x 2 x i16> @llvm.vp.xor.nxv2i16(<vscale x 2 x i16>, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
809 define <vscale x 2 x i16> @vxor_vv_nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
810 ; CHECK-LABEL: vxor_vv_nxv2i16:
811 ; CHECK:       # %bb.0:
812 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
813 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
814 ; CHECK-NEXT:    ret
815   %v = call <vscale x 2 x i16> @llvm.vp.xor.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> %m, i32 %evl)
816   ret <vscale x 2 x i16> %v
819 define <vscale x 2 x i16> @vxor_vv_nxv2i16_unmasked(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, i32 zeroext %evl) {
820 ; CHECK-LABEL: vxor_vv_nxv2i16_unmasked:
821 ; CHECK:       # %bb.0:
822 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
823 ; CHECK-NEXT:    vxor.vv v8, v8, v9
824 ; CHECK-NEXT:    ret
825   %v = call <vscale x 2 x i16> @llvm.vp.xor.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
826   ret <vscale x 2 x i16> %v
829 define <vscale x 2 x i16> @vxor_vx_nxv2i16(<vscale x 2 x i16> %va, i16 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
830 ; CHECK-LABEL: vxor_vx_nxv2i16:
831 ; CHECK:       # %bb.0:
832 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
833 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
834 ; CHECK-NEXT:    ret
835   %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0
836   %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
837   %v = call <vscale x 2 x i16> @llvm.vp.xor.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> %m, i32 %evl)
838   ret <vscale x 2 x i16> %v
841 define <vscale x 2 x i16> @vxor_vx_nxv2i16_unmasked(<vscale x 2 x i16> %va, i16 %b, i32 zeroext %evl) {
842 ; CHECK-LABEL: vxor_vx_nxv2i16_unmasked:
843 ; CHECK:       # %bb.0:
844 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
845 ; CHECK-NEXT:    vxor.vx v8, v8, a0
846 ; CHECK-NEXT:    ret
847   %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0
848   %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
849   %v = call <vscale x 2 x i16> @llvm.vp.xor.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
850   ret <vscale x 2 x i16> %v
853 define <vscale x 2 x i16> @vxor_vi_nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
854 ; CHECK-LABEL: vxor_vi_nxv2i16:
855 ; CHECK:       # %bb.0:
856 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
857 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
858 ; CHECK-NEXT:    ret
859   %v = call <vscale x 2 x i16> @llvm.vp.xor.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> splat (i16 7), <vscale x 2 x i1> %m, i32 %evl)
860   ret <vscale x 2 x i16> %v
863 define <vscale x 2 x i16> @vxor_vi_nxv2i16_unmasked(<vscale x 2 x i16> %va, i32 zeroext %evl) {
864 ; CHECK-LABEL: vxor_vi_nxv2i16_unmasked:
865 ; CHECK:       # %bb.0:
866 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
867 ; CHECK-NEXT:    vxor.vi v8, v8, 7
868 ; CHECK-NEXT:    ret
869   %v = call <vscale x 2 x i16> @llvm.vp.xor.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> splat (i16 7), <vscale x 2 x i1> splat (i1 true), i32 %evl)
870   ret <vscale x 2 x i16> %v
873 define <vscale x 2 x i16> @vxor_vi_nxv2i16_1(<vscale x 2 x i16> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
874 ; CHECK-LABEL: vxor_vi_nxv2i16_1:
875 ; CHECK:       # %bb.0:
876 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
877 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
878 ; CHECK-NEXT:    ret
879   %v = call <vscale x 2 x i16> @llvm.vp.xor.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> splat (i16 -1), <vscale x 2 x i1> %m, i32 %evl)
880   ret <vscale x 2 x i16> %v
883 define <vscale x 2 x i16> @vxor_vi_nxv2i16_unmasked_1(<vscale x 2 x i16> %va, i32 zeroext %evl) {
884 ; CHECK-LABEL: vxor_vi_nxv2i16_unmasked_1:
885 ; CHECK:       # %bb.0:
886 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
887 ; CHECK-NEXT:    vnot.v v8, v8
888 ; CHECK-NEXT:    ret
889   %v = call <vscale x 2 x i16> @llvm.vp.xor.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> splat (i16 -1), <vscale x 2 x i1> splat (i1 true), i32 %evl)
890   ret <vscale x 2 x i16> %v
893 declare <vscale x 4 x i16> @llvm.vp.xor.nxv4i16(<vscale x 4 x i16>, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
895 define <vscale x 4 x i16> @vxor_vv_nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
896 ; CHECK-LABEL: vxor_vv_nxv4i16:
897 ; CHECK:       # %bb.0:
898 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
899 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
900 ; CHECK-NEXT:    ret
901   %v = call <vscale x 4 x i16> @llvm.vp.xor.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> %m, i32 %evl)
902   ret <vscale x 4 x i16> %v
905 define <vscale x 4 x i16> @vxor_vv_nxv4i16_unmasked(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, i32 zeroext %evl) {
906 ; CHECK-LABEL: vxor_vv_nxv4i16_unmasked:
907 ; CHECK:       # %bb.0:
908 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
909 ; CHECK-NEXT:    vxor.vv v8, v8, v9
910 ; CHECK-NEXT:    ret
911   %v = call <vscale x 4 x i16> @llvm.vp.xor.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
912   ret <vscale x 4 x i16> %v
915 define <vscale x 4 x i16> @vxor_vx_nxv4i16(<vscale x 4 x i16> %va, i16 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
916 ; CHECK-LABEL: vxor_vx_nxv4i16:
917 ; CHECK:       # %bb.0:
918 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
919 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
920 ; CHECK-NEXT:    ret
921   %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0
922   %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
923   %v = call <vscale x 4 x i16> @llvm.vp.xor.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> %m, i32 %evl)
924   ret <vscale x 4 x i16> %v
927 define <vscale x 4 x i16> @vxor_vx_nxv4i16_unmasked(<vscale x 4 x i16> %va, i16 %b, i32 zeroext %evl) {
928 ; CHECK-LABEL: vxor_vx_nxv4i16_unmasked:
929 ; CHECK:       # %bb.0:
930 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
931 ; CHECK-NEXT:    vxor.vx v8, v8, a0
932 ; CHECK-NEXT:    ret
933   %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0
934   %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
935   %v = call <vscale x 4 x i16> @llvm.vp.xor.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
936   ret <vscale x 4 x i16> %v
939 define <vscale x 4 x i16> @vxor_vi_nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
940 ; CHECK-LABEL: vxor_vi_nxv4i16:
941 ; CHECK:       # %bb.0:
942 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
943 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
944 ; CHECK-NEXT:    ret
945   %v = call <vscale x 4 x i16> @llvm.vp.xor.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> splat (i16 7), <vscale x 4 x i1> %m, i32 %evl)
946   ret <vscale x 4 x i16> %v
949 define <vscale x 4 x i16> @vxor_vi_nxv4i16_unmasked(<vscale x 4 x i16> %va, i32 zeroext %evl) {
950 ; CHECK-LABEL: vxor_vi_nxv4i16_unmasked:
951 ; CHECK:       # %bb.0:
952 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
953 ; CHECK-NEXT:    vxor.vi v8, v8, 7
954 ; CHECK-NEXT:    ret
955   %v = call <vscale x 4 x i16> @llvm.vp.xor.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> splat (i16 7), <vscale x 4 x i1> splat (i1 true), i32 %evl)
956   ret <vscale x 4 x i16> %v
959 define <vscale x 4 x i16> @vxor_vi_nxv4i16_1(<vscale x 4 x i16> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
960 ; CHECK-LABEL: vxor_vi_nxv4i16_1:
961 ; CHECK:       # %bb.0:
962 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
963 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
964 ; CHECK-NEXT:    ret
965   %v = call <vscale x 4 x i16> @llvm.vp.xor.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> splat (i16 -1), <vscale x 4 x i1> %m, i32 %evl)
966   ret <vscale x 4 x i16> %v
969 define <vscale x 4 x i16> @vxor_vi_nxv4i16_unmasked_1(<vscale x 4 x i16> %va, i32 zeroext %evl) {
970 ; CHECK-LABEL: vxor_vi_nxv4i16_unmasked_1:
971 ; CHECK:       # %bb.0:
972 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
973 ; CHECK-NEXT:    vnot.v v8, v8
974 ; CHECK-NEXT:    ret
975   %v = call <vscale x 4 x i16> @llvm.vp.xor.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> splat (i16 -1), <vscale x 4 x i1> splat (i1 true), i32 %evl)
976   ret <vscale x 4 x i16> %v
979 declare <vscale x 8 x i16> @llvm.vp.xor.nxv8i16(<vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i1>, i32)
981 define <vscale x 8 x i16> @vxor_vv_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
982 ; CHECK-LABEL: vxor_vv_nxv8i16:
983 ; CHECK:       # %bb.0:
984 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
985 ; CHECK-NEXT:    vxor.vv v8, v8, v10, v0.t
986 ; CHECK-NEXT:    ret
987   %v = call <vscale x 8 x i16> @llvm.vp.xor.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> %m, i32 %evl)
988   ret <vscale x 8 x i16> %v
991 define <vscale x 8 x i16> @vxor_vv_nxv8i16_unmasked(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, i32 zeroext %evl) {
992 ; CHECK-LABEL: vxor_vv_nxv8i16_unmasked:
993 ; CHECK:       # %bb.0:
994 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
995 ; CHECK-NEXT:    vxor.vv v8, v8, v10
996 ; CHECK-NEXT:    ret
997   %v = call <vscale x 8 x i16> @llvm.vp.xor.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
998   ret <vscale x 8 x i16> %v
1001 define <vscale x 8 x i16> @vxor_vx_nxv8i16(<vscale x 8 x i16> %va, i16 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1002 ; CHECK-LABEL: vxor_vx_nxv8i16:
1003 ; CHECK:       # %bb.0:
1004 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
1005 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
1006 ; CHECK-NEXT:    ret
1007   %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0
1008   %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
1009   %v = call <vscale x 8 x i16> @llvm.vp.xor.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> %m, i32 %evl)
1010   ret <vscale x 8 x i16> %v
1013 define <vscale x 8 x i16> @vxor_vx_nxv8i16_unmasked(<vscale x 8 x i16> %va, i16 %b, i32 zeroext %evl) {
1014 ; CHECK-LABEL: vxor_vx_nxv8i16_unmasked:
1015 ; CHECK:       # %bb.0:
1016 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
1017 ; CHECK-NEXT:    vxor.vx v8, v8, a0
1018 ; CHECK-NEXT:    ret
1019   %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0
1020   %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
1021   %v = call <vscale x 8 x i16> @llvm.vp.xor.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
1022   ret <vscale x 8 x i16> %v
1025 define <vscale x 8 x i16> @vxor_vi_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1026 ; CHECK-LABEL: vxor_vi_nxv8i16:
1027 ; CHECK:       # %bb.0:
1028 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1029 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1030 ; CHECK-NEXT:    ret
1031   %v = call <vscale x 8 x i16> @llvm.vp.xor.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> splat (i16 7), <vscale x 8 x i1> %m, i32 %evl)
1032   ret <vscale x 8 x i16> %v
1035 define <vscale x 8 x i16> @vxor_vi_nxv8i16_unmasked(<vscale x 8 x i16> %va, i32 zeroext %evl) {
1036 ; CHECK-LABEL: vxor_vi_nxv8i16_unmasked:
1037 ; CHECK:       # %bb.0:
1038 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1039 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1040 ; CHECK-NEXT:    ret
1041   %v = call <vscale x 8 x i16> @llvm.vp.xor.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> splat (i16 7), <vscale x 8 x i1> splat (i1 true), i32 %evl)
1042   ret <vscale x 8 x i16> %v
1045 define <vscale x 8 x i16> @vxor_vi_nxv8i16_1(<vscale x 8 x i16> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1046 ; CHECK-LABEL: vxor_vi_nxv8i16_1:
1047 ; CHECK:       # %bb.0:
1048 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1049 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1050 ; CHECK-NEXT:    ret
1051   %v = call <vscale x 8 x i16> @llvm.vp.xor.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> splat (i16 -1), <vscale x 8 x i1> %m, i32 %evl)
1052   ret <vscale x 8 x i16> %v
1055 define <vscale x 8 x i16> @vxor_vi_nxv8i16_unmasked_1(<vscale x 8 x i16> %va, i32 zeroext %evl) {
1056 ; CHECK-LABEL: vxor_vi_nxv8i16_unmasked_1:
1057 ; CHECK:       # %bb.0:
1058 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1059 ; CHECK-NEXT:    vnot.v v8, v8
1060 ; CHECK-NEXT:    ret
1061   %v = call <vscale x 8 x i16> @llvm.vp.xor.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> splat (i16 -1), <vscale x 8 x i1> splat (i1 true), i32 %evl)
1062   ret <vscale x 8 x i16> %v
1065 declare <vscale x 16 x i16> @llvm.vp.xor.nxv16i16(<vscale x 16 x i16>, <vscale x 16 x i16>, <vscale x 16 x i1>, i32)
1067 define <vscale x 16 x i16> @vxor_vv_nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1068 ; CHECK-LABEL: vxor_vv_nxv16i16:
1069 ; CHECK:       # %bb.0:
1070 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
1071 ; CHECK-NEXT:    vxor.vv v8, v8, v12, v0.t
1072 ; CHECK-NEXT:    ret
1073   %v = call <vscale x 16 x i16> @llvm.vp.xor.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> %m, i32 %evl)
1074   ret <vscale x 16 x i16> %v
1077 define <vscale x 16 x i16> @vxor_vv_nxv16i16_unmasked(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, i32 zeroext %evl) {
1078 ; CHECK-LABEL: vxor_vv_nxv16i16_unmasked:
1079 ; CHECK:       # %bb.0:
1080 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
1081 ; CHECK-NEXT:    vxor.vv v8, v8, v12
1082 ; CHECK-NEXT:    ret
1083   %v = call <vscale x 16 x i16> @llvm.vp.xor.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)
1084   ret <vscale x 16 x i16> %v
1087 define <vscale x 16 x i16> @vxor_vx_nxv16i16(<vscale x 16 x i16> %va, i16 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1088 ; CHECK-LABEL: vxor_vx_nxv16i16:
1089 ; CHECK:       # %bb.0:
1090 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
1091 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
1092 ; CHECK-NEXT:    ret
1093   %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0
1094   %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
1095   %v = call <vscale x 16 x i16> @llvm.vp.xor.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> %m, i32 %evl)
1096   ret <vscale x 16 x i16> %v
1099 define <vscale x 16 x i16> @vxor_vx_nxv16i16_unmasked(<vscale x 16 x i16> %va, i16 %b, i32 zeroext %evl) {
1100 ; CHECK-LABEL: vxor_vx_nxv16i16_unmasked:
1101 ; CHECK:       # %bb.0:
1102 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
1103 ; CHECK-NEXT:    vxor.vx v8, v8, a0
1104 ; CHECK-NEXT:    ret
1105   %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0
1106   %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
1107   %v = call <vscale x 16 x i16> @llvm.vp.xor.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)
1108   ret <vscale x 16 x i16> %v
1111 define <vscale x 16 x i16> @vxor_vi_nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1112 ; CHECK-LABEL: vxor_vi_nxv16i16:
1113 ; CHECK:       # %bb.0:
1114 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
1115 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1116 ; CHECK-NEXT:    ret
1117   %v = call <vscale x 16 x i16> @llvm.vp.xor.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> splat (i16 7), <vscale x 16 x i1> %m, i32 %evl)
1118   ret <vscale x 16 x i16> %v
1121 define <vscale x 16 x i16> @vxor_vi_nxv16i16_unmasked(<vscale x 16 x i16> %va, i32 zeroext %evl) {
1122 ; CHECK-LABEL: vxor_vi_nxv16i16_unmasked:
1123 ; CHECK:       # %bb.0:
1124 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
1125 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1126 ; CHECK-NEXT:    ret
1127   %v = call <vscale x 16 x i16> @llvm.vp.xor.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> splat (i16 7), <vscale x 16 x i1> splat (i1 true), i32 %evl)
1128   ret <vscale x 16 x i16> %v
1131 define <vscale x 16 x i16> @vxor_vi_nxv16i16_1(<vscale x 16 x i16> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1132 ; CHECK-LABEL: vxor_vi_nxv16i16_1:
1133 ; CHECK:       # %bb.0:
1134 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
1135 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1136 ; CHECK-NEXT:    ret
1137   %v = call <vscale x 16 x i16> @llvm.vp.xor.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> splat (i16 -1), <vscale x 16 x i1> %m, i32 %evl)
1138   ret <vscale x 16 x i16> %v
1141 define <vscale x 16 x i16> @vxor_vi_nxv16i16_unmasked_1(<vscale x 16 x i16> %va, i32 zeroext %evl) {
1142 ; CHECK-LABEL: vxor_vi_nxv16i16_unmasked_1:
1143 ; CHECK:       # %bb.0:
1144 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
1145 ; CHECK-NEXT:    vnot.v v8, v8
1146 ; CHECK-NEXT:    ret
1147   %v = call <vscale x 16 x i16> @llvm.vp.xor.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> splat (i16 -1), <vscale x 16 x i1> splat (i1 true), i32 %evl)
1148   ret <vscale x 16 x i16> %v
1151 declare <vscale x 32 x i16> @llvm.vp.xor.nxv32i16(<vscale x 32 x i16>, <vscale x 32 x i16>, <vscale x 32 x i1>, i32)
1153 define <vscale x 32 x i16> @vxor_vv_nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
1154 ; CHECK-LABEL: vxor_vv_nxv32i16:
1155 ; CHECK:       # %bb.0:
1156 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
1157 ; CHECK-NEXT:    vxor.vv v8, v8, v16, v0.t
1158 ; CHECK-NEXT:    ret
1159   %v = call <vscale x 32 x i16> @llvm.vp.xor.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> %m, i32 %evl)
1160   ret <vscale x 32 x i16> %v
1163 define <vscale x 32 x i16> @vxor_vv_nxv32i16_unmasked(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, i32 zeroext %evl) {
1164 ; CHECK-LABEL: vxor_vv_nxv32i16_unmasked:
1165 ; CHECK:       # %bb.0:
1166 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
1167 ; CHECK-NEXT:    vxor.vv v8, v8, v16
1168 ; CHECK-NEXT:    ret
1169   %v = call <vscale x 32 x i16> @llvm.vp.xor.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> splat (i1 true), i32 %evl)
1170   ret <vscale x 32 x i16> %v
1173 define <vscale x 32 x i16> @vxor_vx_nxv32i16(<vscale x 32 x i16> %va, i16 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
1174 ; CHECK-LABEL: vxor_vx_nxv32i16:
1175 ; CHECK:       # %bb.0:
1176 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
1177 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
1178 ; CHECK-NEXT:    ret
1179   %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
1180   %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
1181   %v = call <vscale x 32 x i16> @llvm.vp.xor.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> %m, i32 %evl)
1182   ret <vscale x 32 x i16> %v
1185 define <vscale x 32 x i16> @vxor_vx_nxv32i16_unmasked(<vscale x 32 x i16> %va, i16 %b, i32 zeroext %evl) {
1186 ; CHECK-LABEL: vxor_vx_nxv32i16_unmasked:
1187 ; CHECK:       # %bb.0:
1188 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
1189 ; CHECK-NEXT:    vxor.vx v8, v8, a0
1190 ; CHECK-NEXT:    ret
1191   %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
1192   %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
1193   %v = call <vscale x 32 x i16> @llvm.vp.xor.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> splat (i1 true), i32 %evl)
1194   ret <vscale x 32 x i16> %v
1197 define <vscale x 32 x i16> @vxor_vi_nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i1> %m, i32 zeroext %evl) {
1198 ; CHECK-LABEL: vxor_vi_nxv32i16:
1199 ; CHECK:       # %bb.0:
1200 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
1201 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1202 ; CHECK-NEXT:    ret
1203   %v = call <vscale x 32 x i16> @llvm.vp.xor.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> splat (i16 7), <vscale x 32 x i1> %m, i32 %evl)
1204   ret <vscale x 32 x i16> %v
1207 define <vscale x 32 x i16> @vxor_vi_nxv32i16_unmasked(<vscale x 32 x i16> %va, i32 zeroext %evl) {
1208 ; CHECK-LABEL: vxor_vi_nxv32i16_unmasked:
1209 ; CHECK:       # %bb.0:
1210 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
1211 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1212 ; CHECK-NEXT:    ret
1213   %v = call <vscale x 32 x i16> @llvm.vp.xor.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> splat (i16 7), <vscale x 32 x i1> splat (i1 true), i32 %evl)
1214   ret <vscale x 32 x i16> %v
1217 define <vscale x 32 x i16> @vxor_vi_nxv32i16_1(<vscale x 32 x i16> %va, <vscale x 32 x i1> %m, i32 zeroext %evl) {
1218 ; CHECK-LABEL: vxor_vi_nxv32i16_1:
1219 ; CHECK:       # %bb.0:
1220 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
1221 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1222 ; CHECK-NEXT:    ret
1223   %v = call <vscale x 32 x i16> @llvm.vp.xor.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> splat (i16 -1), <vscale x 32 x i1> %m, i32 %evl)
1224   ret <vscale x 32 x i16> %v
1227 define <vscale x 32 x i16> @vxor_vi_nxv32i16_unmasked_1(<vscale x 32 x i16> %va, i32 zeroext %evl) {
1228 ; CHECK-LABEL: vxor_vi_nxv32i16_unmasked_1:
1229 ; CHECK:       # %bb.0:
1230 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
1231 ; CHECK-NEXT:    vnot.v v8, v8
1232 ; CHECK-NEXT:    ret
1233   %v = call <vscale x 32 x i16> @llvm.vp.xor.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> splat (i16 -1), <vscale x 32 x i1> splat (i1 true), i32 %evl)
1234   ret <vscale x 32 x i16> %v
1237 declare <vscale x 1 x i32> @llvm.vp.xor.nxv1i32(<vscale x 1 x i32>, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
1239 define <vscale x 1 x i32> @vxor_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1240 ; CHECK-LABEL: vxor_vv_nxv1i32:
1241 ; CHECK:       # %bb.0:
1242 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1243 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
1244 ; CHECK-NEXT:    ret
1245   %v = call <vscale x 1 x i32> @llvm.vp.xor.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> %m, i32 %evl)
1246   ret <vscale x 1 x i32> %v
1249 define <vscale x 1 x i32> @vxor_vv_nxv1i32_unmasked(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, i32 zeroext %evl) {
1250 ; CHECK-LABEL: vxor_vv_nxv1i32_unmasked:
1251 ; CHECK:       # %bb.0:
1252 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1253 ; CHECK-NEXT:    vxor.vv v8, v8, v9
1254 ; CHECK-NEXT:    ret
1255   %v = call <vscale x 1 x i32> @llvm.vp.xor.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1256   ret <vscale x 1 x i32> %v
1259 define <vscale x 1 x i32> @vxor_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1260 ; CHECK-LABEL: vxor_vx_nxv1i32:
1261 ; CHECK:       # %bb.0:
1262 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1263 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
1264 ; CHECK-NEXT:    ret
1265   %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1266   %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1267   %v = call <vscale x 1 x i32> @llvm.vp.xor.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 %evl)
1268   ret <vscale x 1 x i32> %v
1271 define <vscale x 1 x i32> @vxor_vx_nxv1i32_unmasked(<vscale x 1 x i32> %va, i32 %b, i32 zeroext %evl) {
1272 ; CHECK-LABEL: vxor_vx_nxv1i32_unmasked:
1273 ; CHECK:       # %bb.0:
1274 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1275 ; CHECK-NEXT:    vxor.vx v8, v8, a0
1276 ; CHECK-NEXT:    ret
1277   %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1278   %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1279   %v = call <vscale x 1 x i32> @llvm.vp.xor.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1280   ret <vscale x 1 x i32> %v
1283 define <vscale x 1 x i32> @vxor_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1284 ; CHECK-LABEL: vxor_vi_nxv1i32:
1285 ; CHECK:       # %bb.0:
1286 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1287 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1288 ; CHECK-NEXT:    ret
1289   %v = call <vscale x 1 x i32> @llvm.vp.xor.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 7), <vscale x 1 x i1> %m, i32 %evl)
1290   ret <vscale x 1 x i32> %v
1293 define <vscale x 1 x i32> @vxor_vi_nxv1i32_unmasked(<vscale x 1 x i32> %va, i32 zeroext %evl) {
1294 ; CHECK-LABEL: vxor_vi_nxv1i32_unmasked:
1295 ; CHECK:       # %bb.0:
1296 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1297 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1298 ; CHECK-NEXT:    ret
1299   %v = call <vscale x 1 x i32> @llvm.vp.xor.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 7), <vscale x 1 x i1> splat (i1 true), i32 %evl)
1300   ret <vscale x 1 x i32> %v
1303 define <vscale x 1 x i32> @vxor_vi_nxv1i32_1(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1304 ; CHECK-LABEL: vxor_vi_nxv1i32_1:
1305 ; CHECK:       # %bb.0:
1306 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1307 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1308 ; CHECK-NEXT:    ret
1309   %v = call <vscale x 1 x i32> @llvm.vp.xor.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 -1), <vscale x 1 x i1> %m, i32 %evl)
1310   ret <vscale x 1 x i32> %v
1313 define <vscale x 1 x i32> @vxor_vi_nxv1i32_unmasked_1(<vscale x 1 x i32> %va, i32 zeroext %evl) {
1314 ; CHECK-LABEL: vxor_vi_nxv1i32_unmasked_1:
1315 ; CHECK:       # %bb.0:
1316 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1317 ; CHECK-NEXT:    vnot.v v8, v8
1318 ; CHECK-NEXT:    ret
1319   %v = call <vscale x 1 x i32> @llvm.vp.xor.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 -1), <vscale x 1 x i1> splat (i1 true), i32 %evl)
1320   ret <vscale x 1 x i32> %v
1323 declare <vscale x 2 x i32> @llvm.vp.xor.nxv2i32(<vscale x 2 x i32>, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
1325 define <vscale x 2 x i32> @vxor_vv_nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1326 ; CHECK-LABEL: vxor_vv_nxv2i32:
1327 ; CHECK:       # %bb.0:
1328 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1329 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
1330 ; CHECK-NEXT:    ret
1331   %v = call <vscale x 2 x i32> @llvm.vp.xor.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> %m, i32 %evl)
1332   ret <vscale x 2 x i32> %v
1335 define <vscale x 2 x i32> @vxor_vv_nxv2i32_unmasked(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, i32 zeroext %evl) {
1336 ; CHECK-LABEL: vxor_vv_nxv2i32_unmasked:
1337 ; CHECK:       # %bb.0:
1338 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1339 ; CHECK-NEXT:    vxor.vv v8, v8, v9
1340 ; CHECK-NEXT:    ret
1341   %v = call <vscale x 2 x i32> @llvm.vp.xor.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1342   ret <vscale x 2 x i32> %v
1345 define <vscale x 2 x i32> @vxor_vx_nxv2i32(<vscale x 2 x i32> %va, i32 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1346 ; CHECK-LABEL: vxor_vx_nxv2i32:
1347 ; CHECK:       # %bb.0:
1348 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1349 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
1350 ; CHECK-NEXT:    ret
1351   %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
1352   %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1353   %v = call <vscale x 2 x i32> @llvm.vp.xor.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> %m, i32 %evl)
1354   ret <vscale x 2 x i32> %v
1357 define <vscale x 2 x i32> @vxor_vx_nxv2i32_unmasked(<vscale x 2 x i32> %va, i32 %b, i32 zeroext %evl) {
1358 ; CHECK-LABEL: vxor_vx_nxv2i32_unmasked:
1359 ; CHECK:       # %bb.0:
1360 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1361 ; CHECK-NEXT:    vxor.vx v8, v8, a0
1362 ; CHECK-NEXT:    ret
1363   %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
1364   %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1365   %v = call <vscale x 2 x i32> @llvm.vp.xor.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1366   ret <vscale x 2 x i32> %v
1369 define <vscale x 2 x i32> @vxor_vi_nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1370 ; CHECK-LABEL: vxor_vi_nxv2i32:
1371 ; CHECK:       # %bb.0:
1372 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1373 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1374 ; CHECK-NEXT:    ret
1375   %v = call <vscale x 2 x i32> @llvm.vp.xor.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> splat (i32 7), <vscale x 2 x i1> %m, i32 %evl)
1376   ret <vscale x 2 x i32> %v
1379 define <vscale x 2 x i32> @vxor_vi_nxv2i32_unmasked(<vscale x 2 x i32> %va, i32 zeroext %evl) {
1380 ; CHECK-LABEL: vxor_vi_nxv2i32_unmasked:
1381 ; CHECK:       # %bb.0:
1382 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1383 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1384 ; CHECK-NEXT:    ret
1385   %v = call <vscale x 2 x i32> @llvm.vp.xor.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> splat (i32 7), <vscale x 2 x i1> splat (i1 true), i32 %evl)
1386   ret <vscale x 2 x i32> %v
1389 define <vscale x 2 x i32> @vxor_vi_nxv2i32_1(<vscale x 2 x i32> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1390 ; CHECK-LABEL: vxor_vi_nxv2i32_1:
1391 ; CHECK:       # %bb.0:
1392 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1393 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1394 ; CHECK-NEXT:    ret
1395   %v = call <vscale x 2 x i32> @llvm.vp.xor.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> splat (i32 -1), <vscale x 2 x i1> %m, i32 %evl)
1396   ret <vscale x 2 x i32> %v
1399 define <vscale x 2 x i32> @vxor_vi_nxv2i32_unmasked_1(<vscale x 2 x i32> %va, i32 zeroext %evl) {
1400 ; CHECK-LABEL: vxor_vi_nxv2i32_unmasked_1:
1401 ; CHECK:       # %bb.0:
1402 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1403 ; CHECK-NEXT:    vnot.v v8, v8
1404 ; CHECK-NEXT:    ret
1405   %v = call <vscale x 2 x i32> @llvm.vp.xor.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> splat (i32 -1), <vscale x 2 x i1> splat (i1 true), i32 %evl)
1406   ret <vscale x 2 x i32> %v
1409 declare <vscale x 4 x i32> @llvm.vp.xor.nxv4i32(<vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
1411 define <vscale x 4 x i32> @vxor_vv_nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1412 ; CHECK-LABEL: vxor_vv_nxv4i32:
1413 ; CHECK:       # %bb.0:
1414 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1415 ; CHECK-NEXT:    vxor.vv v8, v8, v10, v0.t
1416 ; CHECK-NEXT:    ret
1417   %v = call <vscale x 4 x i32> @llvm.vp.xor.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> %m, i32 %evl)
1418   ret <vscale x 4 x i32> %v
1421 define <vscale x 4 x i32> @vxor_vv_nxv4i32_unmasked(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, i32 zeroext %evl) {
1422 ; CHECK-LABEL: vxor_vv_nxv4i32_unmasked:
1423 ; CHECK:       # %bb.0:
1424 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1425 ; CHECK-NEXT:    vxor.vv v8, v8, v10
1426 ; CHECK-NEXT:    ret
1427   %v = call <vscale x 4 x i32> @llvm.vp.xor.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
1428   ret <vscale x 4 x i32> %v
1431 define <vscale x 4 x i32> @vxor_vx_nxv4i32(<vscale x 4 x i32> %va, i32 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1432 ; CHECK-LABEL: vxor_vx_nxv4i32:
1433 ; CHECK:       # %bb.0:
1434 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1435 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
1436 ; CHECK-NEXT:    ret
1437   %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
1438   %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1439   %v = call <vscale x 4 x i32> @llvm.vp.xor.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> %m, i32 %evl)
1440   ret <vscale x 4 x i32> %v
1443 define <vscale x 4 x i32> @vxor_vx_nxv4i32_unmasked(<vscale x 4 x i32> %va, i32 %b, i32 zeroext %evl) {
1444 ; CHECK-LABEL: vxor_vx_nxv4i32_unmasked:
1445 ; CHECK:       # %bb.0:
1446 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1447 ; CHECK-NEXT:    vxor.vx v8, v8, a0
1448 ; CHECK-NEXT:    ret
1449   %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
1450   %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1451   %v = call <vscale x 4 x i32> @llvm.vp.xor.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
1452   ret <vscale x 4 x i32> %v
1455 define <vscale x 4 x i32> @vxor_vi_nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1456 ; CHECK-LABEL: vxor_vi_nxv4i32:
1457 ; CHECK:       # %bb.0:
1458 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1459 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1460 ; CHECK-NEXT:    ret
1461   %v = call <vscale x 4 x i32> @llvm.vp.xor.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> splat (i32 7), <vscale x 4 x i1> %m, i32 %evl)
1462   ret <vscale x 4 x i32> %v
1465 define <vscale x 4 x i32> @vxor_vi_nxv4i32_unmasked(<vscale x 4 x i32> %va, i32 zeroext %evl) {
1466 ; CHECK-LABEL: vxor_vi_nxv4i32_unmasked:
1467 ; CHECK:       # %bb.0:
1468 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1469 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1470 ; CHECK-NEXT:    ret
1471   %v = call <vscale x 4 x i32> @llvm.vp.xor.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> splat (i32 7), <vscale x 4 x i1> splat (i1 true), i32 %evl)
1472   ret <vscale x 4 x i32> %v
1475 define <vscale x 4 x i32> @vxor_vi_nxv4i32_1(<vscale x 4 x i32> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1476 ; CHECK-LABEL: vxor_vi_nxv4i32_1:
1477 ; CHECK:       # %bb.0:
1478 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1479 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1480 ; CHECK-NEXT:    ret
1481   %v = call <vscale x 4 x i32> @llvm.vp.xor.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> splat (i32 -1), <vscale x 4 x i1> %m, i32 %evl)
1482   ret <vscale x 4 x i32> %v
1485 define <vscale x 4 x i32> @vxor_vi_nxv4i32_unmasked_1(<vscale x 4 x i32> %va, i32 zeroext %evl) {
1486 ; CHECK-LABEL: vxor_vi_nxv4i32_unmasked_1:
1487 ; CHECK:       # %bb.0:
1488 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1489 ; CHECK-NEXT:    vnot.v v8, v8
1490 ; CHECK-NEXT:    ret
1491   %v = call <vscale x 4 x i32> @llvm.vp.xor.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> splat (i32 -1), <vscale x 4 x i1> splat (i1 true), i32 %evl)
1492   ret <vscale x 4 x i32> %v
1495 declare <vscale x 8 x i32> @llvm.vp.xor.nxv8i32(<vscale x 8 x i32>, <vscale x 8 x i32>, <vscale x 8 x i1>, i32)
1497 define <vscale x 8 x i32> @vxor_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1498 ; CHECK-LABEL: vxor_vv_nxv8i32:
1499 ; CHECK:       # %bb.0:
1500 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1501 ; CHECK-NEXT:    vxor.vv v8, v8, v12, v0.t
1502 ; CHECK-NEXT:    ret
1503   %v = call <vscale x 8 x i32> @llvm.vp.xor.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> %m, i32 %evl)
1504   ret <vscale x 8 x i32> %v
1507 define <vscale x 8 x i32> @vxor_vv_nxv8i32_unmasked(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, i32 zeroext %evl) {
1508 ; CHECK-LABEL: vxor_vv_nxv8i32_unmasked:
1509 ; CHECK:       # %bb.0:
1510 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1511 ; CHECK-NEXT:    vxor.vv v8, v8, v12
1512 ; CHECK-NEXT:    ret
1513   %v = call <vscale x 8 x i32> @llvm.vp.xor.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
1514   ret <vscale x 8 x i32> %v
1517 define <vscale x 8 x i32> @vxor_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1518 ; CHECK-LABEL: vxor_vx_nxv8i32:
1519 ; CHECK:       # %bb.0:
1520 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1521 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
1522 ; CHECK-NEXT:    ret
1523   %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1524   %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1525   %v = call <vscale x 8 x i32> @llvm.vp.xor.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 %evl)
1526   ret <vscale x 8 x i32> %v
1529 define <vscale x 8 x i32> @vxor_vx_nxv8i32_unmasked(<vscale x 8 x i32> %va, i32 %b, i32 zeroext %evl) {
1530 ; CHECK-LABEL: vxor_vx_nxv8i32_unmasked:
1531 ; CHECK:       # %bb.0:
1532 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1533 ; CHECK-NEXT:    vxor.vx v8, v8, a0
1534 ; CHECK-NEXT:    ret
1535   %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1536   %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1537   %v = call <vscale x 8 x i32> @llvm.vp.xor.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
1538   ret <vscale x 8 x i32> %v
1541 define <vscale x 8 x i32> @vxor_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1542 ; CHECK-LABEL: vxor_vi_nxv8i32:
1543 ; CHECK:       # %bb.0:
1544 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1545 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1546 ; CHECK-NEXT:    ret
1547   %v = call <vscale x 8 x i32> @llvm.vp.xor.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 7), <vscale x 8 x i1> %m, i32 %evl)
1548   ret <vscale x 8 x i32> %v
1551 define <vscale x 8 x i32> @vxor_vi_nxv8i32_unmasked(<vscale x 8 x i32> %va, i32 zeroext %evl) {
1552 ; CHECK-LABEL: vxor_vi_nxv8i32_unmasked:
1553 ; CHECK:       # %bb.0:
1554 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1555 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1556 ; CHECK-NEXT:    ret
1557   %v = call <vscale x 8 x i32> @llvm.vp.xor.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 7), <vscale x 8 x i1> splat (i1 true), i32 %evl)
1558   ret <vscale x 8 x i32> %v
1561 define <vscale x 8 x i32> @vxor_vi_nxv8i32_1(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1562 ; CHECK-LABEL: vxor_vi_nxv8i32_1:
1563 ; CHECK:       # %bb.0:
1564 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1565 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1566 ; CHECK-NEXT:    ret
1567   %v = call <vscale x 8 x i32> @llvm.vp.xor.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 -1), <vscale x 8 x i1> %m, i32 %evl)
1568   ret <vscale x 8 x i32> %v
1571 define <vscale x 8 x i32> @vxor_vi_nxv8i32_unmasked_1(<vscale x 8 x i32> %va, i32 zeroext %evl) {
1572 ; CHECK-LABEL: vxor_vi_nxv8i32_unmasked_1:
1573 ; CHECK:       # %bb.0:
1574 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1575 ; CHECK-NEXT:    vnot.v v8, v8
1576 ; CHECK-NEXT:    ret
1577   %v = call <vscale x 8 x i32> @llvm.vp.xor.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 -1), <vscale x 8 x i1> splat (i1 true), i32 %evl)
1578   ret <vscale x 8 x i32> %v
1581 declare <vscale x 16 x i32> @llvm.vp.xor.nxv16i32(<vscale x 16 x i32>, <vscale x 16 x i32>, <vscale x 16 x i1>, i32)
1583 define <vscale x 16 x i32> @vxor_vv_nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1584 ; CHECK-LABEL: vxor_vv_nxv16i32:
1585 ; CHECK:       # %bb.0:
1586 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1587 ; CHECK-NEXT:    vxor.vv v8, v8, v16, v0.t
1588 ; CHECK-NEXT:    ret
1589   %v = call <vscale x 16 x i32> @llvm.vp.xor.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> %m, i32 %evl)
1590   ret <vscale x 16 x i32> %v
1593 define <vscale x 16 x i32> @vxor_vv_nxv16i32_unmasked(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, i32 zeroext %evl) {
1594 ; CHECK-LABEL: vxor_vv_nxv16i32_unmasked:
1595 ; CHECK:       # %bb.0:
1596 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1597 ; CHECK-NEXT:    vxor.vv v8, v8, v16
1598 ; CHECK-NEXT:    ret
1599   %v = call <vscale x 16 x i32> @llvm.vp.xor.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)
1600   ret <vscale x 16 x i32> %v
1603 define <vscale x 16 x i32> @vxor_vx_nxv16i32(<vscale x 16 x i32> %va, i32 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1604 ; CHECK-LABEL: vxor_vx_nxv16i32:
1605 ; CHECK:       # %bb.0:
1606 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
1607 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
1608 ; CHECK-NEXT:    ret
1609   %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0
1610   %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1611   %v = call <vscale x 16 x i32> @llvm.vp.xor.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> %m, i32 %evl)
1612   ret <vscale x 16 x i32> %v
1615 define <vscale x 16 x i32> @vxor_vx_nxv16i32_unmasked(<vscale x 16 x i32> %va, i32 %b, i32 zeroext %evl) {
1616 ; CHECK-LABEL: vxor_vx_nxv16i32_unmasked:
1617 ; CHECK:       # %bb.0:
1618 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
1619 ; CHECK-NEXT:    vxor.vx v8, v8, a0
1620 ; CHECK-NEXT:    ret
1621   %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0
1622   %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1623   %v = call <vscale x 16 x i32> @llvm.vp.xor.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)
1624   ret <vscale x 16 x i32> %v
1627 define <vscale x 16 x i32> @vxor_vi_nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1628 ; CHECK-LABEL: vxor_vi_nxv16i32:
1629 ; CHECK:       # %bb.0:
1630 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1631 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1632 ; CHECK-NEXT:    ret
1633   %v = call <vscale x 16 x i32> @llvm.vp.xor.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> splat (i32 7), <vscale x 16 x i1> %m, i32 %evl)
1634   ret <vscale x 16 x i32> %v
1637 define <vscale x 16 x i32> @vxor_vi_nxv16i32_unmasked(<vscale x 16 x i32> %va, i32 zeroext %evl) {
1638 ; CHECK-LABEL: vxor_vi_nxv16i32_unmasked:
1639 ; CHECK:       # %bb.0:
1640 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1641 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1642 ; CHECK-NEXT:    ret
1643   %v = call <vscale x 16 x i32> @llvm.vp.xor.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> splat (i32 7), <vscale x 16 x i1> splat (i1 true), i32 %evl)
1644   ret <vscale x 16 x i32> %v
1647 define <vscale x 16 x i32> @vxor_vi_nxv16i32_1(<vscale x 16 x i32> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1648 ; CHECK-LABEL: vxor_vi_nxv16i32_1:
1649 ; CHECK:       # %bb.0:
1650 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1651 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1652 ; CHECK-NEXT:    ret
1653   %v = call <vscale x 16 x i32> @llvm.vp.xor.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> splat (i32 -1), <vscale x 16 x i1> %m, i32 %evl)
1654   ret <vscale x 16 x i32> %v
1657 define <vscale x 16 x i32> @vxor_vi_nxv16i32_unmasked_1(<vscale x 16 x i32> %va, i32 zeroext %evl) {
1658 ; CHECK-LABEL: vxor_vi_nxv16i32_unmasked_1:
1659 ; CHECK:       # %bb.0:
1660 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1661 ; CHECK-NEXT:    vnot.v v8, v8
1662 ; CHECK-NEXT:    ret
1663   %v = call <vscale x 16 x i32> @llvm.vp.xor.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> splat (i32 -1), <vscale x 16 x i1> splat (i1 true), i32 %evl)
1664   ret <vscale x 16 x i32> %v
1667 declare <vscale x 1 x i64> @llvm.vp.xor.nxv1i64(<vscale x 1 x i64>, <vscale x 1 x i64>, <vscale x 1 x i1>, i32)
1669 define <vscale x 1 x i64> @vxor_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1670 ; CHECK-LABEL: vxor_vv_nxv1i64:
1671 ; CHECK:       # %bb.0:
1672 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1673 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
1674 ; CHECK-NEXT:    ret
1675   %v = call <vscale x 1 x i64> @llvm.vp.xor.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> %m, i32 %evl)
1676   ret <vscale x 1 x i64> %v
1679 define <vscale x 1 x i64> @vxor_vv_nxv1i64_unmasked(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, i32 zeroext %evl) {
1680 ; CHECK-LABEL: vxor_vv_nxv1i64_unmasked:
1681 ; CHECK:       # %bb.0:
1682 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1683 ; CHECK-NEXT:    vxor.vv v8, v8, v9
1684 ; CHECK-NEXT:    ret
1685   %v = call <vscale x 1 x i64> @llvm.vp.xor.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1686   ret <vscale x 1 x i64> %v
1689 define <vscale x 1 x i64> @vxor_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1690 ; RV32-LABEL: vxor_vx_nxv1i64:
1691 ; RV32:       # %bb.0:
1692 ; RV32-NEXT:    addi sp, sp, -16
1693 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1694 ; RV32-NEXT:    sw a0, 8(sp)
1695 ; RV32-NEXT:    sw a1, 12(sp)
1696 ; RV32-NEXT:    addi a0, sp, 8
1697 ; RV32-NEXT:    vsetvli a1, zero, e64, m1, ta, ma
1698 ; RV32-NEXT:    vlse64.v v9, (a0), zero
1699 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
1700 ; RV32-NEXT:    vxor.vv v8, v8, v9, v0.t
1701 ; RV32-NEXT:    addi sp, sp, 16
1702 ; RV32-NEXT:    .cfi_def_cfa_offset 0
1703 ; RV32-NEXT:    ret
1705 ; RV64-LABEL: vxor_vx_nxv1i64:
1706 ; RV64:       # %bb.0:
1707 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1708 ; RV64-NEXT:    vxor.vx v8, v8, a0, v0.t
1709 ; RV64-NEXT:    ret
1710   %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
1711   %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
1712   %v = call <vscale x 1 x i64> @llvm.vp.xor.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 %evl)
1713   ret <vscale x 1 x i64> %v
1716 define <vscale x 1 x i64> @vxor_vx_nxv1i64_unmasked(<vscale x 1 x i64> %va, i64 %b, i32 zeroext %evl) {
1717 ; RV32-LABEL: vxor_vx_nxv1i64_unmasked:
1718 ; RV32:       # %bb.0:
1719 ; RV32-NEXT:    addi sp, sp, -16
1720 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1721 ; RV32-NEXT:    sw a0, 8(sp)
1722 ; RV32-NEXT:    sw a1, 12(sp)
1723 ; RV32-NEXT:    addi a0, sp, 8
1724 ; RV32-NEXT:    vsetvli a1, zero, e64, m1, ta, ma
1725 ; RV32-NEXT:    vlse64.v v9, (a0), zero
1726 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
1727 ; RV32-NEXT:    vxor.vv v8, v8, v9
1728 ; RV32-NEXT:    addi sp, sp, 16
1729 ; RV32-NEXT:    .cfi_def_cfa_offset 0
1730 ; RV32-NEXT:    ret
1732 ; RV64-LABEL: vxor_vx_nxv1i64_unmasked:
1733 ; RV64:       # %bb.0:
1734 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1735 ; RV64-NEXT:    vxor.vx v8, v8, a0
1736 ; RV64-NEXT:    ret
1737   %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
1738   %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
1739   %v = call <vscale x 1 x i64> @llvm.vp.xor.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
1740   ret <vscale x 1 x i64> %v
1743 define <vscale x 1 x i64> @vxor_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1744 ; CHECK-LABEL: vxor_vi_nxv1i64:
1745 ; CHECK:       # %bb.0:
1746 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1747 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1748 ; CHECK-NEXT:    ret
1749   %v = call <vscale x 1 x i64> @llvm.vp.xor.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 7), <vscale x 1 x i1> %m, i32 %evl)
1750   ret <vscale x 1 x i64> %v
1753 define <vscale x 1 x i64> @vxor_vi_nxv1i64_unmasked(<vscale x 1 x i64> %va, i32 zeroext %evl) {
1754 ; CHECK-LABEL: vxor_vi_nxv1i64_unmasked:
1755 ; CHECK:       # %bb.0:
1756 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1757 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1758 ; CHECK-NEXT:    ret
1759   %v = call <vscale x 1 x i64> @llvm.vp.xor.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 7), <vscale x 1 x i1> splat (i1 true), i32 %evl)
1760   ret <vscale x 1 x i64> %v
1763 define <vscale x 1 x i64> @vxor_vi_nxv1i64_1(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1764 ; CHECK-LABEL: vxor_vi_nxv1i64_1:
1765 ; CHECK:       # %bb.0:
1766 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1767 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1768 ; CHECK-NEXT:    ret
1769   %v = call <vscale x 1 x i64> @llvm.vp.xor.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 -1), <vscale x 1 x i1> %m, i32 %evl)
1770   ret <vscale x 1 x i64> %v
1773 define <vscale x 1 x i64> @vxor_vi_nxv1i64_unmasked_1(<vscale x 1 x i64> %va, i32 zeroext %evl) {
1774 ; CHECK-LABEL: vxor_vi_nxv1i64_unmasked_1:
1775 ; CHECK:       # %bb.0:
1776 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1777 ; CHECK-NEXT:    vnot.v v8, v8
1778 ; CHECK-NEXT:    ret
1779   %v = call <vscale x 1 x i64> @llvm.vp.xor.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 -1), <vscale x 1 x i1> splat (i1 true), i32 %evl)
1780   ret <vscale x 1 x i64> %v
1783 declare <vscale x 2 x i64> @llvm.vp.xor.nxv2i64(<vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i1>, i32)
1785 define <vscale x 2 x i64> @vxor_vv_nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1786 ; CHECK-LABEL: vxor_vv_nxv2i64:
1787 ; CHECK:       # %bb.0:
1788 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1789 ; CHECK-NEXT:    vxor.vv v8, v8, v10, v0.t
1790 ; CHECK-NEXT:    ret
1791   %v = call <vscale x 2 x i64> @llvm.vp.xor.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> %m, i32 %evl)
1792   ret <vscale x 2 x i64> %v
1795 define <vscale x 2 x i64> @vxor_vv_nxv2i64_unmasked(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, i32 zeroext %evl) {
1796 ; CHECK-LABEL: vxor_vv_nxv2i64_unmasked:
1797 ; CHECK:       # %bb.0:
1798 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1799 ; CHECK-NEXT:    vxor.vv v8, v8, v10
1800 ; CHECK-NEXT:    ret
1801   %v = call <vscale x 2 x i64> @llvm.vp.xor.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1802   ret <vscale x 2 x i64> %v
1805 define <vscale x 2 x i64> @vxor_vx_nxv2i64(<vscale x 2 x i64> %va, i64 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1806 ; RV32-LABEL: vxor_vx_nxv2i64:
1807 ; RV32:       # %bb.0:
1808 ; RV32-NEXT:    addi sp, sp, -16
1809 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1810 ; RV32-NEXT:    sw a0, 8(sp)
1811 ; RV32-NEXT:    sw a1, 12(sp)
1812 ; RV32-NEXT:    addi a0, sp, 8
1813 ; RV32-NEXT:    vsetvli a1, zero, e64, m2, ta, ma
1814 ; RV32-NEXT:    vlse64.v v10, (a0), zero
1815 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1816 ; RV32-NEXT:    vxor.vv v8, v8, v10, v0.t
1817 ; RV32-NEXT:    addi sp, sp, 16
1818 ; RV32-NEXT:    .cfi_def_cfa_offset 0
1819 ; RV32-NEXT:    ret
1821 ; RV64-LABEL: vxor_vx_nxv2i64:
1822 ; RV64:       # %bb.0:
1823 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1824 ; RV64-NEXT:    vxor.vx v8, v8, a0, v0.t
1825 ; RV64-NEXT:    ret
1826   %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0
1827   %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1828   %v = call <vscale x 2 x i64> @llvm.vp.xor.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> %m, i32 %evl)
1829   ret <vscale x 2 x i64> %v
1832 define <vscale x 2 x i64> @vxor_vx_nxv2i64_unmasked(<vscale x 2 x i64> %va, i64 %b, i32 zeroext %evl) {
1833 ; RV32-LABEL: vxor_vx_nxv2i64_unmasked:
1834 ; RV32:       # %bb.0:
1835 ; RV32-NEXT:    addi sp, sp, -16
1836 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1837 ; RV32-NEXT:    sw a0, 8(sp)
1838 ; RV32-NEXT:    sw a1, 12(sp)
1839 ; RV32-NEXT:    addi a0, sp, 8
1840 ; RV32-NEXT:    vsetvli a1, zero, e64, m2, ta, ma
1841 ; RV32-NEXT:    vlse64.v v10, (a0), zero
1842 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1843 ; RV32-NEXT:    vxor.vv v8, v8, v10
1844 ; RV32-NEXT:    addi sp, sp, 16
1845 ; RV32-NEXT:    .cfi_def_cfa_offset 0
1846 ; RV32-NEXT:    ret
1848 ; RV64-LABEL: vxor_vx_nxv2i64_unmasked:
1849 ; RV64:       # %bb.0:
1850 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1851 ; RV64-NEXT:    vxor.vx v8, v8, a0
1852 ; RV64-NEXT:    ret
1853   %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0
1854   %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1855   %v = call <vscale x 2 x i64> @llvm.vp.xor.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1856   ret <vscale x 2 x i64> %v
1859 define <vscale x 2 x i64> @vxor_vi_nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1860 ; CHECK-LABEL: vxor_vi_nxv2i64:
1861 ; CHECK:       # %bb.0:
1862 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1863 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1864 ; CHECK-NEXT:    ret
1865   %v = call <vscale x 2 x i64> @llvm.vp.xor.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> splat (i64 7), <vscale x 2 x i1> %m, i32 %evl)
1866   ret <vscale x 2 x i64> %v
1869 define <vscale x 2 x i64> @vxor_vi_nxv2i64_unmasked(<vscale x 2 x i64> %va, i32 zeroext %evl) {
1870 ; CHECK-LABEL: vxor_vi_nxv2i64_unmasked:
1871 ; CHECK:       # %bb.0:
1872 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1873 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1874 ; CHECK-NEXT:    ret
1875   %v = call <vscale x 2 x i64> @llvm.vp.xor.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> splat (i64 7), <vscale x 2 x i1> splat (i1 true), i32 %evl)
1876   ret <vscale x 2 x i64> %v
1879 define <vscale x 2 x i64> @vxor_vi_nxv2i64_1(<vscale x 2 x i64> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1880 ; CHECK-LABEL: vxor_vi_nxv2i64_1:
1881 ; CHECK:       # %bb.0:
1882 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1883 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1884 ; CHECK-NEXT:    ret
1885   %v = call <vscale x 2 x i64> @llvm.vp.xor.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> splat (i64 -1), <vscale x 2 x i1> %m, i32 %evl)
1886   ret <vscale x 2 x i64> %v
1889 define <vscale x 2 x i64> @vxor_vi_nxv2i64_unmasked_1(<vscale x 2 x i64> %va, i32 zeroext %evl) {
1890 ; CHECK-LABEL: vxor_vi_nxv2i64_unmasked_1:
1891 ; CHECK:       # %bb.0:
1892 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1893 ; CHECK-NEXT:    vnot.v v8, v8
1894 ; CHECK-NEXT:    ret
1895   %v = call <vscale x 2 x i64> @llvm.vp.xor.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> splat (i64 -1), <vscale x 2 x i1> splat (i1 true), i32 %evl)
1896   ret <vscale x 2 x i64> %v
1899 declare <vscale x 4 x i64> @llvm.vp.xor.nxv4i64(<vscale x 4 x i64>, <vscale x 4 x i64>, <vscale x 4 x i1>, i32)
1901 define <vscale x 4 x i64> @vxor_vv_nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1902 ; CHECK-LABEL: vxor_vv_nxv4i64:
1903 ; CHECK:       # %bb.0:
1904 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1905 ; CHECK-NEXT:    vxor.vv v8, v8, v12, v0.t
1906 ; CHECK-NEXT:    ret
1907   %v = call <vscale x 4 x i64> @llvm.vp.xor.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> %m, i32 %evl)
1908   ret <vscale x 4 x i64> %v
1911 define <vscale x 4 x i64> @vxor_vv_nxv4i64_unmasked(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, i32 zeroext %evl) {
1912 ; CHECK-LABEL: vxor_vv_nxv4i64_unmasked:
1913 ; CHECK:       # %bb.0:
1914 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1915 ; CHECK-NEXT:    vxor.vv v8, v8, v12
1916 ; CHECK-NEXT:    ret
1917   %v = call <vscale x 4 x i64> @llvm.vp.xor.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
1918   ret <vscale x 4 x i64> %v
1921 define <vscale x 4 x i64> @vxor_vx_nxv4i64(<vscale x 4 x i64> %va, i64 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1922 ; RV32-LABEL: vxor_vx_nxv4i64:
1923 ; RV32:       # %bb.0:
1924 ; RV32-NEXT:    addi sp, sp, -16
1925 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1926 ; RV32-NEXT:    sw a0, 8(sp)
1927 ; RV32-NEXT:    sw a1, 12(sp)
1928 ; RV32-NEXT:    addi a0, sp, 8
1929 ; RV32-NEXT:    vsetvli a1, zero, e64, m4, ta, ma
1930 ; RV32-NEXT:    vlse64.v v12, (a0), zero
1931 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1932 ; RV32-NEXT:    vxor.vv v8, v8, v12, v0.t
1933 ; RV32-NEXT:    addi sp, sp, 16
1934 ; RV32-NEXT:    .cfi_def_cfa_offset 0
1935 ; RV32-NEXT:    ret
1937 ; RV64-LABEL: vxor_vx_nxv4i64:
1938 ; RV64:       # %bb.0:
1939 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1940 ; RV64-NEXT:    vxor.vx v8, v8, a0, v0.t
1941 ; RV64-NEXT:    ret
1942   %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0
1943   %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1944   %v = call <vscale x 4 x i64> @llvm.vp.xor.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> %m, i32 %evl)
1945   ret <vscale x 4 x i64> %v
1948 define <vscale x 4 x i64> @vxor_vx_nxv4i64_unmasked(<vscale x 4 x i64> %va, i64 %b, i32 zeroext %evl) {
1949 ; RV32-LABEL: vxor_vx_nxv4i64_unmasked:
1950 ; RV32:       # %bb.0:
1951 ; RV32-NEXT:    addi sp, sp, -16
1952 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1953 ; RV32-NEXT:    sw a0, 8(sp)
1954 ; RV32-NEXT:    sw a1, 12(sp)
1955 ; RV32-NEXT:    addi a0, sp, 8
1956 ; RV32-NEXT:    vsetvli a1, zero, e64, m4, ta, ma
1957 ; RV32-NEXT:    vlse64.v v12, (a0), zero
1958 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1959 ; RV32-NEXT:    vxor.vv v8, v8, v12
1960 ; RV32-NEXT:    addi sp, sp, 16
1961 ; RV32-NEXT:    .cfi_def_cfa_offset 0
1962 ; RV32-NEXT:    ret
1964 ; RV64-LABEL: vxor_vx_nxv4i64_unmasked:
1965 ; RV64:       # %bb.0:
1966 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1967 ; RV64-NEXT:    vxor.vx v8, v8, a0
1968 ; RV64-NEXT:    ret
1969   %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0
1970   %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1971   %v = call <vscale x 4 x i64> @llvm.vp.xor.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
1972   ret <vscale x 4 x i64> %v
1975 define <vscale x 4 x i64> @vxor_vi_nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1976 ; CHECK-LABEL: vxor_vi_nxv4i64:
1977 ; CHECK:       # %bb.0:
1978 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1979 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1980 ; CHECK-NEXT:    ret
1981   %v = call <vscale x 4 x i64> @llvm.vp.xor.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> splat (i64 7), <vscale x 4 x i1> %m, i32 %evl)
1982   ret <vscale x 4 x i64> %v
1985 define <vscale x 4 x i64> @vxor_vi_nxv4i64_unmasked(<vscale x 4 x i64> %va, i32 zeroext %evl) {
1986 ; CHECK-LABEL: vxor_vi_nxv4i64_unmasked:
1987 ; CHECK:       # %bb.0:
1988 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1989 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1990 ; CHECK-NEXT:    ret
1991   %v = call <vscale x 4 x i64> @llvm.vp.xor.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> splat (i64 7), <vscale x 4 x i1> splat (i1 true), i32 %evl)
1992   ret <vscale x 4 x i64> %v
1995 define <vscale x 4 x i64> @vxor_vi_nxv4i64_1(<vscale x 4 x i64> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1996 ; CHECK-LABEL: vxor_vi_nxv4i64_1:
1997 ; CHECK:       # %bb.0:
1998 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1999 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
2000 ; CHECK-NEXT:    ret
2001   %v = call <vscale x 4 x i64> @llvm.vp.xor.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> splat (i64 -1), <vscale x 4 x i1> %m, i32 %evl)
2002   ret <vscale x 4 x i64> %v
2005 define <vscale x 4 x i64> @vxor_vi_nxv4i64_unmasked_1(<vscale x 4 x i64> %va, i32 zeroext %evl) {
2006 ; CHECK-LABEL: vxor_vi_nxv4i64_unmasked_1:
2007 ; CHECK:       # %bb.0:
2008 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
2009 ; CHECK-NEXT:    vnot.v v8, v8
2010 ; CHECK-NEXT:    ret
2011   %v = call <vscale x 4 x i64> @llvm.vp.xor.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> splat (i64 -1), <vscale x 4 x i1> splat (i1 true), i32 %evl)
2012   ret <vscale x 4 x i64> %v
2015 declare <vscale x 8 x i64> @llvm.vp.xor.nxv8i64(<vscale x 8 x i64>, <vscale x 8 x i64>, <vscale x 8 x i1>, i32)
2017 define <vscale x 8 x i64> @vxor_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2018 ; CHECK-LABEL: vxor_vv_nxv8i64:
2019 ; CHECK:       # %bb.0:
2020 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
2021 ; CHECK-NEXT:    vxor.vv v8, v8, v16, v0.t
2022 ; CHECK-NEXT:    ret
2023   %v = call <vscale x 8 x i64> @llvm.vp.xor.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> %m, i32 %evl)
2024   ret <vscale x 8 x i64> %v
2027 define <vscale x 8 x i64> @vxor_vv_nxv8i64_unmasked(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, i32 zeroext %evl) {
2028 ; CHECK-LABEL: vxor_vv_nxv8i64_unmasked:
2029 ; CHECK:       # %bb.0:
2030 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
2031 ; CHECK-NEXT:    vxor.vv v8, v8, v16
2032 ; CHECK-NEXT:    ret
2033   %v = call <vscale x 8 x i64> @llvm.vp.xor.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2034   ret <vscale x 8 x i64> %v
2037 define <vscale x 8 x i64> @vxor_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2038 ; RV32-LABEL: vxor_vx_nxv8i64:
2039 ; RV32:       # %bb.0:
2040 ; RV32-NEXT:    addi sp, sp, -16
2041 ; RV32-NEXT:    .cfi_def_cfa_offset 16
2042 ; RV32-NEXT:    sw a0, 8(sp)
2043 ; RV32-NEXT:    sw a1, 12(sp)
2044 ; RV32-NEXT:    addi a0, sp, 8
2045 ; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma
2046 ; RV32-NEXT:    vlse64.v v16, (a0), zero
2047 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
2048 ; RV32-NEXT:    vxor.vv v8, v8, v16, v0.t
2049 ; RV32-NEXT:    addi sp, sp, 16
2050 ; RV32-NEXT:    .cfi_def_cfa_offset 0
2051 ; RV32-NEXT:    ret
2053 ; RV64-LABEL: vxor_vx_nxv8i64:
2054 ; RV64:       # %bb.0:
2055 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
2056 ; RV64-NEXT:    vxor.vx v8, v8, a0, v0.t
2057 ; RV64-NEXT:    ret
2058   %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
2059   %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
2060   %v = call <vscale x 8 x i64> @llvm.vp.xor.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 %evl)
2061   ret <vscale x 8 x i64> %v
2064 define <vscale x 8 x i64> @vxor_vx_nxv8i64_unmasked(<vscale x 8 x i64> %va, i64 %b, i32 zeroext %evl) {
2065 ; RV32-LABEL: vxor_vx_nxv8i64_unmasked:
2066 ; RV32:       # %bb.0:
2067 ; RV32-NEXT:    addi sp, sp, -16
2068 ; RV32-NEXT:    .cfi_def_cfa_offset 16
2069 ; RV32-NEXT:    sw a0, 8(sp)
2070 ; RV32-NEXT:    sw a1, 12(sp)
2071 ; RV32-NEXT:    addi a0, sp, 8
2072 ; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma
2073 ; RV32-NEXT:    vlse64.v v16, (a0), zero
2074 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
2075 ; RV32-NEXT:    vxor.vv v8, v8, v16
2076 ; RV32-NEXT:    addi sp, sp, 16
2077 ; RV32-NEXT:    .cfi_def_cfa_offset 0
2078 ; RV32-NEXT:    ret
2080 ; RV64-LABEL: vxor_vx_nxv8i64_unmasked:
2081 ; RV64:       # %bb.0:
2082 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
2083 ; RV64-NEXT:    vxor.vx v8, v8, a0
2084 ; RV64-NEXT:    ret
2085   %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
2086   %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
2087   %v = call <vscale x 8 x i64> @llvm.vp.xor.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
2088   ret <vscale x 8 x i64> %v
2091 define <vscale x 8 x i64> @vxor_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2092 ; CHECK-LABEL: vxor_vi_nxv8i64:
2093 ; CHECK:       # %bb.0:
2094 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
2095 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
2096 ; CHECK-NEXT:    ret
2097   %v = call <vscale x 8 x i64> @llvm.vp.xor.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 7), <vscale x 8 x i1> %m, i32 %evl)
2098   ret <vscale x 8 x i64> %v
2101 define <vscale x 8 x i64> @vxor_vi_nxv8i64_unmasked(<vscale x 8 x i64> %va, i32 zeroext %evl) {
2102 ; CHECK-LABEL: vxor_vi_nxv8i64_unmasked:
2103 ; CHECK:       # %bb.0:
2104 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
2105 ; CHECK-NEXT:    vxor.vi v8, v8, 7
2106 ; CHECK-NEXT:    ret
2107   %v = call <vscale x 8 x i64> @llvm.vp.xor.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 7), <vscale x 8 x i1> splat (i1 true), i32 %evl)
2108   ret <vscale x 8 x i64> %v
2111 define <vscale x 8 x i64> @vxor_vi_nxv8i64_1(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2112 ; CHECK-LABEL: vxor_vi_nxv8i64_1:
2113 ; CHECK:       # %bb.0:
2114 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
2115 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
2116 ; CHECK-NEXT:    ret
2117   %v = call <vscale x 8 x i64> @llvm.vp.xor.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 -1), <vscale x 8 x i1> %m, i32 %evl)
2118   ret <vscale x 8 x i64> %v
2121 define <vscale x 8 x i64> @vxor_vi_nxv8i64_unmasked_1(<vscale x 8 x i64> %va, i32 zeroext %evl) {
2122 ; CHECK-LABEL: vxor_vi_nxv8i64_unmasked_1:
2123 ; CHECK:       # %bb.0:
2124 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
2125 ; CHECK-NEXT:    vnot.v v8, v8
2126 ; CHECK-NEXT:    ret
2127   %v = call <vscale x 8 x i64> @llvm.vp.xor.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 -1), <vscale x 8 x i1> splat (i1 true), i32 %evl)
2128   ret <vscale x 8 x i64> %v