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:
12 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
13 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
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:
26 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
27 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
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:
36 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
37 ; CHECK-NEXT: vxor.vv v8, v8, v9
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:
46 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
47 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
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:
58 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
59 ; CHECK-NEXT: vxor.vx v8, v8, a0
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:
70 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
71 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
80 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
81 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
90 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
91 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
100 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
101 ; CHECK-NEXT: vnot.v v8, v8
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:
112 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
113 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
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:
122 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
123 ; CHECK-NEXT: vxor.vv v8, v8, v9
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:
132 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
133 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
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:
144 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
145 ; CHECK-NEXT: vxor.vx v8, v8, a0
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:
156 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
157 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
166 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
167 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
176 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
177 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
186 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
187 ; CHECK-NEXT: vnot.v v8, v8
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:
198 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
199 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
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:
208 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
209 ; CHECK-NEXT: vxor.vv v8, v8, v9
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:
218 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
219 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
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:
230 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
231 ; CHECK-NEXT: vxor.vx v8, v8, a0
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:
242 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
243 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
252 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
253 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
262 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
263 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
272 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
273 ; CHECK-NEXT: vnot.v v8, v8
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:
284 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
285 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
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:
294 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
295 ; CHECK-NEXT: vxor.vv v8, v8, v9
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:
304 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
305 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
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:
316 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
317 ; CHECK-NEXT: vxor.vx v8, v8, a0
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:
328 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
329 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
338 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
339 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
348 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
349 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
358 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
359 ; CHECK-NEXT: vnot.v v8, v8
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:
370 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
371 ; CHECK-NEXT: vxor.vv v8, v8, v10, v0.t
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:
380 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
381 ; CHECK-NEXT: vxor.vv v8, v8, v10
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:
390 ; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma
391 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
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:
402 ; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma
403 ; CHECK-NEXT: vxor.vx v8, v8, a0
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:
414 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
415 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
424 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
425 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
434 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
435 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
444 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
445 ; CHECK-NEXT: vnot.v v8, v8
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:
456 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
457 ; CHECK-NEXT: vxor.vv v8, v8, v10, v0.t
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:
466 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
467 ; CHECK-NEXT: vxor.vv v8, v8, v10
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:
476 ; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma
477 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
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:
488 ; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma
489 ; CHECK-NEXT: vxor.vx v8, v8, a0
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:
500 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
501 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
510 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
511 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
520 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
521 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
530 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
531 ; CHECK-NEXT: vnot.v v8, v8
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:
542 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
543 ; CHECK-NEXT: vxor.vv v8, v8, v12, v0.t
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:
552 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
553 ; CHECK-NEXT: vxor.vv v8, v8, v12
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:
562 ; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma
563 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
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:
574 ; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma
575 ; CHECK-NEXT: vxor.vx v8, v8, a0
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:
586 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
587 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
596 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
597 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
606 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
607 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
616 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
617 ; CHECK-NEXT: vnot.v v8, v8
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:
628 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
629 ; CHECK-NEXT: vxor.vv v8, v8, v16, v0.t
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:
638 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
639 ; CHECK-NEXT: vxor.vv v8, v8, v16
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:
648 ; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma
649 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
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:
660 ; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma
661 ; CHECK-NEXT: vxor.vx v8, v8, a0
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:
672 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
673 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
682 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
683 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
692 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
693 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
702 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
703 ; CHECK-NEXT: vnot.v v8, v8
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:
714 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
715 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
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:
724 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
725 ; CHECK-NEXT: vxor.vv v8, v8, v9
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:
734 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
735 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
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:
746 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
747 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
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:
758 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
759 ; CHECK-NEXT: vxor.vx v8, v8, a0
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:
770 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
771 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
780 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
781 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
790 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
791 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
800 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
801 ; CHECK-NEXT: vnot.v v8, v8
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:
812 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
813 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
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:
822 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
823 ; CHECK-NEXT: vxor.vv v8, v8, v9
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:
832 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
833 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
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:
844 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
845 ; CHECK-NEXT: vxor.vx v8, v8, a0
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:
856 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
857 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
866 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
867 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
876 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
877 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
886 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
887 ; CHECK-NEXT: vnot.v v8, v8
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:
898 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
899 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
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:
908 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
909 ; CHECK-NEXT: vxor.vv v8, v8, v9
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:
918 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
919 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
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:
930 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
931 ; CHECK-NEXT: vxor.vx v8, v8, a0
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:
942 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
943 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
952 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
953 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
962 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
963 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
972 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
973 ; CHECK-NEXT: vnot.v v8, v8
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:
984 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
985 ; CHECK-NEXT: vxor.vv v8, v8, v10, v0.t
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:
994 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
995 ; CHECK-NEXT: vxor.vv v8, v8, v10
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:
1004 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
1005 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
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:
1016 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
1017 ; CHECK-NEXT: vxor.vx v8, v8, a0
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:
1028 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
1029 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
1038 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
1039 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
1048 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
1049 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
1058 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
1059 ; CHECK-NEXT: vnot.v v8, v8
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:
1070 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
1071 ; CHECK-NEXT: vxor.vv v8, v8, v12, v0.t
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:
1080 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
1081 ; CHECK-NEXT: vxor.vv v8, v8, v12
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:
1090 ; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma
1091 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
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:
1102 ; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma
1103 ; CHECK-NEXT: vxor.vx v8, v8, a0
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:
1114 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
1115 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
1124 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
1125 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
1134 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
1135 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
1144 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
1145 ; CHECK-NEXT: vnot.v v8, v8
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:
1156 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
1157 ; CHECK-NEXT: vxor.vv v8, v8, v16, v0.t
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:
1166 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
1167 ; CHECK-NEXT: vxor.vv v8, v8, v16
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:
1176 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
1177 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
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:
1188 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
1189 ; CHECK-NEXT: vxor.vx v8, v8, a0
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:
1200 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
1201 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
1210 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
1211 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
1220 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
1221 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
1230 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
1231 ; CHECK-NEXT: vnot.v v8, v8
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:
1242 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1243 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
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:
1252 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1253 ; CHECK-NEXT: vxor.vv v8, v8, v9
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:
1262 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
1263 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
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:
1274 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
1275 ; CHECK-NEXT: vxor.vx v8, v8, a0
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:
1286 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1287 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
1296 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1297 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
1306 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1307 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
1316 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1317 ; CHECK-NEXT: vnot.v v8, v8
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:
1328 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1329 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
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:
1338 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1339 ; CHECK-NEXT: vxor.vv v8, v8, v9
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:
1348 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
1349 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
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:
1360 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
1361 ; CHECK-NEXT: vxor.vx v8, v8, a0
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:
1372 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1373 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
1382 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1383 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
1392 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1393 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
1402 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1403 ; CHECK-NEXT: vnot.v v8, v8
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:
1414 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1415 ; CHECK-NEXT: vxor.vv v8, v8, v10, v0.t
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:
1424 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1425 ; CHECK-NEXT: vxor.vv v8, v8, v10
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:
1434 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
1435 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
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:
1446 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
1447 ; CHECK-NEXT: vxor.vx v8, v8, a0
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:
1458 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1459 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
1468 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1469 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
1478 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1479 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
1488 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1489 ; CHECK-NEXT: vnot.v v8, v8
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:
1500 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1501 ; CHECK-NEXT: vxor.vv v8, v8, v12, v0.t
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:
1510 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1511 ; CHECK-NEXT: vxor.vv v8, v8, v12
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:
1520 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
1521 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
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:
1532 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
1533 ; CHECK-NEXT: vxor.vx v8, v8, a0
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:
1544 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1545 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
1554 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1555 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
1564 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1565 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
1574 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1575 ; CHECK-NEXT: vnot.v v8, v8
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:
1586 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1587 ; CHECK-NEXT: vxor.vv v8, v8, v16, v0.t
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:
1596 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1597 ; CHECK-NEXT: vxor.vv v8, v8, v16
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:
1606 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
1607 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
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:
1618 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
1619 ; CHECK-NEXT: vxor.vx v8, v8, a0
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:
1630 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1631 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
1640 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1641 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
1650 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1651 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
1660 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1661 ; CHECK-NEXT: vnot.v v8, v8
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:
1672 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1673 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
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:
1682 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1683 ; CHECK-NEXT: vxor.vv v8, v8, v9
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:
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
1705 ; RV64-LABEL: vxor_vx_nxv1i64:
1707 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
1708 ; RV64-NEXT: vxor.vx v8, v8, a0, v0.t
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:
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
1732 ; RV64-LABEL: vxor_vx_nxv1i64_unmasked:
1734 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
1735 ; RV64-NEXT: vxor.vx v8, v8, a0
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:
1746 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1747 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
1756 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1757 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
1766 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1767 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
1776 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1777 ; CHECK-NEXT: vnot.v v8, v8
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:
1788 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1789 ; CHECK-NEXT: vxor.vv v8, v8, v10, v0.t
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:
1798 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1799 ; CHECK-NEXT: vxor.vv v8, v8, v10
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:
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
1821 ; RV64-LABEL: vxor_vx_nxv2i64:
1823 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
1824 ; RV64-NEXT: vxor.vx v8, v8, a0, v0.t
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:
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
1848 ; RV64-LABEL: vxor_vx_nxv2i64_unmasked:
1850 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
1851 ; RV64-NEXT: vxor.vx v8, v8, a0
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:
1862 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1863 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
1872 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1873 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
1882 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1883 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
1892 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1893 ; CHECK-NEXT: vnot.v v8, v8
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:
1904 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1905 ; CHECK-NEXT: vxor.vv v8, v8, v12, v0.t
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:
1914 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1915 ; CHECK-NEXT: vxor.vv v8, v8, v12
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:
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
1937 ; RV64-LABEL: vxor_vx_nxv4i64:
1939 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
1940 ; RV64-NEXT: vxor.vx v8, v8, a0, v0.t
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:
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
1964 ; RV64-LABEL: vxor_vx_nxv4i64_unmasked:
1966 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
1967 ; RV64-NEXT: vxor.vx v8, v8, a0
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:
1978 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1979 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
1988 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1989 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
1998 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1999 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
2008 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
2009 ; CHECK-NEXT: vnot.v v8, v8
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:
2020 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
2021 ; CHECK-NEXT: vxor.vv v8, v8, v16, v0.t
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:
2030 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
2031 ; CHECK-NEXT: vxor.vv v8, v8, v16
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:
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
2053 ; RV64-LABEL: vxor_vx_nxv8i64:
2055 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
2056 ; RV64-NEXT: vxor.vx v8, v8, a0, v0.t
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:
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
2080 ; RV64-LABEL: vxor_vx_nxv8i64_unmasked:
2082 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
2083 ; RV64-NEXT: vxor.vx v8, v8, a0
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:
2094 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
2095 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
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:
2104 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
2105 ; CHECK-NEXT: vxor.vi v8, v8, 7
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:
2114 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
2115 ; CHECK-NEXT: vnot.v v8, v8, v0.t
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:
2124 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
2125 ; CHECK-NEXT: vnot.v v8, v8
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