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 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
40 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
41 %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)
42 ret <vscale x 1 x i8> %v
45 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) {
46 ; CHECK-LABEL: vxor_vx_nxv1i8:
48 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
49 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
51 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
52 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
53 %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)
54 ret <vscale x 1 x i8> %v
57 define <vscale x 1 x i8> @vxor_vx_nxv1i8_unmasked(<vscale x 1 x i8> %va, i8 %b, i32 zeroext %evl) {
58 ; CHECK-LABEL: vxor_vx_nxv1i8_unmasked:
60 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
61 ; CHECK-NEXT: vxor.vx v8, v8, a0
63 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
64 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
65 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
66 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
67 %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)
68 ret <vscale x 1 x i8> %v
71 define <vscale x 1 x i8> @vxor_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
72 ; CHECK-LABEL: vxor_vi_nxv1i8:
74 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
75 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
77 %elt.head = insertelement <vscale x 1 x i8> poison, i8 7, i32 0
78 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
79 %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)
80 ret <vscale x 1 x i8> %v
83 define <vscale x 1 x i8> @vxor_vi_nxv1i8_unmasked(<vscale x 1 x i8> %va, i32 zeroext %evl) {
84 ; CHECK-LABEL: vxor_vi_nxv1i8_unmasked:
86 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
87 ; CHECK-NEXT: vxor.vi v8, v8, 7
89 %elt.head = insertelement <vscale x 1 x i8> poison, i8 7, i32 0
90 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
91 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
92 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
93 %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)
94 ret <vscale x 1 x i8> %v
97 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) {
98 ; CHECK-LABEL: vxor_vi_nxv1i8_1:
100 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
101 ; CHECK-NEXT: vnot.v v8, v8, v0.t
103 %elt.head = insertelement <vscale x 1 x i8> poison, i8 -1, i32 0
104 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
105 %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)
106 ret <vscale x 1 x i8> %v
109 define <vscale x 1 x i8> @vxor_vi_nxv1i8_unmasked_1(<vscale x 1 x i8> %va, i32 zeroext %evl) {
110 ; CHECK-LABEL: vxor_vi_nxv1i8_unmasked_1:
112 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
113 ; CHECK-NEXT: vnot.v v8, v8
115 %elt.head = insertelement <vscale x 1 x i8> poison, i8 -1, i32 0
116 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
117 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
118 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
119 %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)
120 ret <vscale x 1 x i8> %v
123 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)
125 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) {
126 ; CHECK-LABEL: vxor_vv_nxv2i8:
128 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
129 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
131 %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)
132 ret <vscale x 2 x i8> %v
135 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) {
136 ; CHECK-LABEL: vxor_vv_nxv2i8_unmasked:
138 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
139 ; CHECK-NEXT: vxor.vv v8, v8, v9
141 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
142 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
143 %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)
144 ret <vscale x 2 x i8> %v
147 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) {
148 ; CHECK-LABEL: vxor_vx_nxv2i8:
150 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
151 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
153 %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0
154 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
155 %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)
156 ret <vscale x 2 x i8> %v
159 define <vscale x 2 x i8> @vxor_vx_nxv2i8_unmasked(<vscale x 2 x i8> %va, i8 %b, i32 zeroext %evl) {
160 ; CHECK-LABEL: vxor_vx_nxv2i8_unmasked:
162 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
163 ; CHECK-NEXT: vxor.vx v8, v8, a0
165 %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0
166 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
167 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
168 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
169 %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)
170 ret <vscale x 2 x i8> %v
173 define <vscale x 2 x i8> @vxor_vi_nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
174 ; CHECK-LABEL: vxor_vi_nxv2i8:
176 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
177 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
179 %elt.head = insertelement <vscale x 2 x i8> poison, i8 7, i32 0
180 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
181 %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)
182 ret <vscale x 2 x i8> %v
185 define <vscale x 2 x i8> @vxor_vi_nxv2i8_unmasked(<vscale x 2 x i8> %va, i32 zeroext %evl) {
186 ; CHECK-LABEL: vxor_vi_nxv2i8_unmasked:
188 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
189 ; CHECK-NEXT: vxor.vi v8, v8, 7
191 %elt.head = insertelement <vscale x 2 x i8> poison, i8 7, i32 0
192 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
193 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
194 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
195 %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)
196 ret <vscale x 2 x i8> %v
199 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) {
200 ; CHECK-LABEL: vxor_vi_nxv2i8_1:
202 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
203 ; CHECK-NEXT: vnot.v v8, v8, v0.t
205 %elt.head = insertelement <vscale x 2 x i8> poison, i8 -1, i32 0
206 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
207 %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)
208 ret <vscale x 2 x i8> %v
211 define <vscale x 2 x i8> @vxor_vi_nxv2i8_unmasked_1(<vscale x 2 x i8> %va, i32 zeroext %evl) {
212 ; CHECK-LABEL: vxor_vi_nxv2i8_unmasked_1:
214 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
215 ; CHECK-NEXT: vnot.v v8, v8
217 %elt.head = insertelement <vscale x 2 x i8> poison, i8 -1, i32 0
218 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
219 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
220 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
221 %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)
222 ret <vscale x 2 x i8> %v
225 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)
227 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) {
228 ; CHECK-LABEL: vxor_vv_nxv4i8:
230 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
231 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
233 %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)
234 ret <vscale x 4 x i8> %v
237 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) {
238 ; CHECK-LABEL: vxor_vv_nxv4i8_unmasked:
240 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
241 ; CHECK-NEXT: vxor.vv v8, v8, v9
243 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
244 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
245 %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)
246 ret <vscale x 4 x i8> %v
249 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) {
250 ; CHECK-LABEL: vxor_vx_nxv4i8:
252 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
253 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
255 %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0
256 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
257 %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)
258 ret <vscale x 4 x i8> %v
261 define <vscale x 4 x i8> @vxor_vx_nxv4i8_unmasked(<vscale x 4 x i8> %va, i8 %b, i32 zeroext %evl) {
262 ; CHECK-LABEL: vxor_vx_nxv4i8_unmasked:
264 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
265 ; CHECK-NEXT: vxor.vx v8, v8, a0
267 %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0
268 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
269 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
270 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
271 %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)
272 ret <vscale x 4 x i8> %v
275 define <vscale x 4 x i8> @vxor_vi_nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
276 ; CHECK-LABEL: vxor_vi_nxv4i8:
278 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
279 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
281 %elt.head = insertelement <vscale x 4 x i8> poison, i8 7, i32 0
282 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
283 %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)
284 ret <vscale x 4 x i8> %v
287 define <vscale x 4 x i8> @vxor_vi_nxv4i8_unmasked(<vscale x 4 x i8> %va, i32 zeroext %evl) {
288 ; CHECK-LABEL: vxor_vi_nxv4i8_unmasked:
290 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
291 ; CHECK-NEXT: vxor.vi v8, v8, 7
293 %elt.head = insertelement <vscale x 4 x i8> poison, i8 7, i32 0
294 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
295 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
296 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
297 %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)
298 ret <vscale x 4 x i8> %v
301 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) {
302 ; CHECK-LABEL: vxor_vi_nxv4i8_1:
304 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
305 ; CHECK-NEXT: vnot.v v8, v8, v0.t
307 %elt.head = insertelement <vscale x 4 x i8> poison, i8 -1, i32 0
308 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
309 %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)
310 ret <vscale x 4 x i8> %v
313 define <vscale x 4 x i8> @vxor_vi_nxv4i8_unmasked_1(<vscale x 4 x i8> %va, i32 zeroext %evl) {
314 ; CHECK-LABEL: vxor_vi_nxv4i8_unmasked_1:
316 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
317 ; CHECK-NEXT: vnot.v v8, v8
319 %elt.head = insertelement <vscale x 4 x i8> poison, i8 -1, i32 0
320 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
321 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
322 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
323 %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)
324 ret <vscale x 4 x i8> %v
327 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)
329 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) {
330 ; CHECK-LABEL: vxor_vv_nxv8i8:
332 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
333 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
335 %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)
336 ret <vscale x 8 x i8> %v
339 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) {
340 ; CHECK-LABEL: vxor_vv_nxv8i8_unmasked:
342 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
343 ; CHECK-NEXT: vxor.vv v8, v8, v9
345 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
346 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
347 %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)
348 ret <vscale x 8 x i8> %v
351 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) {
352 ; CHECK-LABEL: vxor_vx_nxv8i8:
354 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
355 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
357 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
358 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
359 %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)
360 ret <vscale x 8 x i8> %v
363 define <vscale x 8 x i8> @vxor_vx_nxv8i8_unmasked(<vscale x 8 x i8> %va, i8 %b, i32 zeroext %evl) {
364 ; CHECK-LABEL: vxor_vx_nxv8i8_unmasked:
366 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
367 ; CHECK-NEXT: vxor.vx v8, v8, a0
369 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
370 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
371 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
372 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
373 %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)
374 ret <vscale x 8 x i8> %v
377 define <vscale x 8 x i8> @vxor_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
378 ; CHECK-LABEL: vxor_vi_nxv8i8:
380 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
381 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
383 %elt.head = insertelement <vscale x 8 x i8> poison, i8 7, i32 0
384 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
385 %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)
386 ret <vscale x 8 x i8> %v
389 define <vscale x 8 x i8> @vxor_vi_nxv8i8_unmasked(<vscale x 8 x i8> %va, i32 zeroext %evl) {
390 ; CHECK-LABEL: vxor_vi_nxv8i8_unmasked:
392 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
393 ; CHECK-NEXT: vxor.vi v8, v8, 7
395 %elt.head = insertelement <vscale x 8 x i8> poison, i8 7, i32 0
396 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
397 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
398 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
399 %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)
400 ret <vscale x 8 x i8> %v
403 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) {
404 ; CHECK-LABEL: vxor_vi_nxv8i8_1:
406 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
407 ; CHECK-NEXT: vnot.v v8, v8, v0.t
409 %elt.head = insertelement <vscale x 8 x i8> poison, i8 -1, i32 0
410 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
411 %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)
412 ret <vscale x 8 x i8> %v
415 define <vscale x 8 x i8> @vxor_vi_nxv8i8_unmasked_1(<vscale x 8 x i8> %va, i32 zeroext %evl) {
416 ; CHECK-LABEL: vxor_vi_nxv8i8_unmasked_1:
418 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
419 ; CHECK-NEXT: vnot.v v8, v8
421 %elt.head = insertelement <vscale x 8 x i8> poison, i8 -1, i32 0
422 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
423 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
424 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
425 %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)
426 ret <vscale x 8 x i8> %v
429 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)
431 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) {
432 ; CHECK-LABEL: vxor_vv_nxv15i8:
434 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
435 ; CHECK-NEXT: vxor.vv v8, v8, v10, 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> %b, <vscale x 15 x i1> %m, i32 %evl)
438 ret <vscale x 15 x i8> %v
441 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) {
442 ; CHECK-LABEL: vxor_vv_nxv15i8_unmasked:
444 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
445 ; CHECK-NEXT: vxor.vv v8, v8, v10
447 %head = insertelement <vscale x 15 x i1> poison, i1 true, i32 0
448 %m = shufflevector <vscale x 15 x i1> %head, <vscale x 15 x i1> poison, <vscale x 15 x i32> zeroinitializer
449 %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)
450 ret <vscale x 15 x i8> %v
453 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) {
454 ; CHECK-LABEL: vxor_vx_nxv15i8:
456 ; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma
457 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
459 %elt.head = insertelement <vscale x 15 x i8> poison, i8 %b, i32 0
460 %vb = shufflevector <vscale x 15 x i8> %elt.head, <vscale x 15 x i8> poison, <vscale x 15 x i32> zeroinitializer
461 %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)
462 ret <vscale x 15 x i8> %v
465 define <vscale x 15 x i8> @vxor_vx_nxv15i8_unmasked(<vscale x 15 x i8> %va, i8 %b, i32 zeroext %evl) {
466 ; CHECK-LABEL: vxor_vx_nxv15i8_unmasked:
468 ; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma
469 ; CHECK-NEXT: vxor.vx v8, v8, a0
471 %elt.head = insertelement <vscale x 15 x i8> poison, i8 %b, i32 0
472 %vb = shufflevector <vscale x 15 x i8> %elt.head, <vscale x 15 x i8> poison, <vscale x 15 x i32> zeroinitializer
473 %head = insertelement <vscale x 15 x i1> poison, i1 true, i32 0
474 %m = shufflevector <vscale x 15 x i1> %head, <vscale x 15 x i1> poison, <vscale x 15 x i32> zeroinitializer
475 %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)
476 ret <vscale x 15 x i8> %v
479 define <vscale x 15 x i8> @vxor_vi_nxv15i8(<vscale x 15 x i8> %va, <vscale x 15 x i1> %m, i32 zeroext %evl) {
480 ; CHECK-LABEL: vxor_vi_nxv15i8:
482 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
483 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
485 %elt.head = insertelement <vscale x 15 x i8> poison, i8 7, i32 0
486 %vb = shufflevector <vscale x 15 x i8> %elt.head, <vscale x 15 x i8> poison, <vscale x 15 x i32> zeroinitializer
487 %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)
488 ret <vscale x 15 x i8> %v
491 define <vscale x 15 x i8> @vxor_vi_nxv15i8_unmasked(<vscale x 15 x i8> %va, i32 zeroext %evl) {
492 ; CHECK-LABEL: vxor_vi_nxv15i8_unmasked:
494 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
495 ; CHECK-NEXT: vxor.vi v8, v8, 7
497 %elt.head = insertelement <vscale x 15 x i8> poison, i8 7, i32 0
498 %vb = shufflevector <vscale x 15 x i8> %elt.head, <vscale x 15 x i8> poison, <vscale x 15 x i32> zeroinitializer
499 %head = insertelement <vscale x 15 x i1> poison, i1 true, i32 0
500 %m = shufflevector <vscale x 15 x i1> %head, <vscale x 15 x i1> poison, <vscale x 15 x i32> zeroinitializer
501 %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)
502 ret <vscale x 15 x i8> %v
505 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) {
506 ; CHECK-LABEL: vxor_vi_nxv15i8_1:
508 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
509 ; CHECK-NEXT: vnot.v v8, v8, v0.t
511 %elt.head = insertelement <vscale x 15 x i8> poison, i8 -1, i32 0
512 %vb = shufflevector <vscale x 15 x i8> %elt.head, <vscale x 15 x i8> poison, <vscale x 15 x i32> zeroinitializer
513 %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)
514 ret <vscale x 15 x i8> %v
517 define <vscale x 15 x i8> @vxor_vi_nxv15i8_unmasked_1(<vscale x 15 x i8> %va, i32 zeroext %evl) {
518 ; CHECK-LABEL: vxor_vi_nxv15i8_unmasked_1:
520 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
521 ; CHECK-NEXT: vnot.v v8, v8
523 %elt.head = insertelement <vscale x 15 x i8> poison, i8 -1, i32 0
524 %vb = shufflevector <vscale x 15 x i8> %elt.head, <vscale x 15 x i8> poison, <vscale x 15 x i32> zeroinitializer
525 %head = insertelement <vscale x 15 x i1> poison, i1 true, i32 0
526 %m = shufflevector <vscale x 15 x i1> %head, <vscale x 15 x i1> poison, <vscale x 15 x i32> zeroinitializer
527 %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)
528 ret <vscale x 15 x i8> %v
531 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)
533 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) {
534 ; CHECK-LABEL: vxor_vv_nxv16i8:
536 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
537 ; CHECK-NEXT: vxor.vv v8, v8, v10, v0.t
539 %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)
540 ret <vscale x 16 x i8> %v
543 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) {
544 ; CHECK-LABEL: vxor_vv_nxv16i8_unmasked:
546 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
547 ; CHECK-NEXT: vxor.vv v8, v8, v10
549 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
550 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
551 %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)
552 ret <vscale x 16 x i8> %v
555 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) {
556 ; CHECK-LABEL: vxor_vx_nxv16i8:
558 ; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma
559 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
561 %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0
562 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
563 %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)
564 ret <vscale x 16 x i8> %v
567 define <vscale x 16 x i8> @vxor_vx_nxv16i8_unmasked(<vscale x 16 x i8> %va, i8 %b, i32 zeroext %evl) {
568 ; CHECK-LABEL: vxor_vx_nxv16i8_unmasked:
570 ; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma
571 ; CHECK-NEXT: vxor.vx v8, v8, a0
573 %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0
574 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
575 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
576 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
577 %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)
578 ret <vscale x 16 x i8> %v
581 define <vscale x 16 x i8> @vxor_vi_nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
582 ; CHECK-LABEL: vxor_vi_nxv16i8:
584 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
585 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
587 %elt.head = insertelement <vscale x 16 x i8> poison, i8 7, i32 0
588 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
589 %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)
590 ret <vscale x 16 x i8> %v
593 define <vscale x 16 x i8> @vxor_vi_nxv16i8_unmasked(<vscale x 16 x i8> %va, i32 zeroext %evl) {
594 ; CHECK-LABEL: vxor_vi_nxv16i8_unmasked:
596 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
597 ; CHECK-NEXT: vxor.vi v8, v8, 7
599 %elt.head = insertelement <vscale x 16 x i8> poison, i8 7, i32 0
600 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
601 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
602 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
603 %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)
604 ret <vscale x 16 x i8> %v
607 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) {
608 ; CHECK-LABEL: vxor_vi_nxv16i8_1:
610 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
611 ; CHECK-NEXT: vnot.v v8, v8, v0.t
613 %elt.head = insertelement <vscale x 16 x i8> poison, i8 -1, i32 0
614 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
615 %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)
616 ret <vscale x 16 x i8> %v
619 define <vscale x 16 x i8> @vxor_vi_nxv16i8_unmasked_1(<vscale x 16 x i8> %va, i32 zeroext %evl) {
620 ; CHECK-LABEL: vxor_vi_nxv16i8_unmasked_1:
622 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
623 ; CHECK-NEXT: vnot.v v8, v8
625 %elt.head = insertelement <vscale x 16 x i8> poison, i8 -1, i32 0
626 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
627 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
628 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
629 %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)
630 ret <vscale x 16 x i8> %v
633 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)
635 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) {
636 ; CHECK-LABEL: vxor_vv_nxv32i8:
638 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
639 ; CHECK-NEXT: vxor.vv v8, v8, v12, v0.t
641 %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)
642 ret <vscale x 32 x i8> %v
645 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) {
646 ; CHECK-LABEL: vxor_vv_nxv32i8_unmasked:
648 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
649 ; CHECK-NEXT: vxor.vv v8, v8, v12
651 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
652 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
653 %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)
654 ret <vscale x 32 x i8> %v
657 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) {
658 ; CHECK-LABEL: vxor_vx_nxv32i8:
660 ; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma
661 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
663 %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0
664 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
665 %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)
666 ret <vscale x 32 x i8> %v
669 define <vscale x 32 x i8> @vxor_vx_nxv32i8_unmasked(<vscale x 32 x i8> %va, i8 %b, i32 zeroext %evl) {
670 ; CHECK-LABEL: vxor_vx_nxv32i8_unmasked:
672 ; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma
673 ; CHECK-NEXT: vxor.vx v8, v8, a0
675 %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0
676 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
677 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
678 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
679 %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)
680 ret <vscale x 32 x i8> %v
683 define <vscale x 32 x i8> @vxor_vi_nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i1> %m, i32 zeroext %evl) {
684 ; CHECK-LABEL: vxor_vi_nxv32i8:
686 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
687 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
689 %elt.head = insertelement <vscale x 32 x i8> poison, i8 7, i32 0
690 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
691 %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)
692 ret <vscale x 32 x i8> %v
695 define <vscale x 32 x i8> @vxor_vi_nxv32i8_unmasked(<vscale x 32 x i8> %va, i32 zeroext %evl) {
696 ; CHECK-LABEL: vxor_vi_nxv32i8_unmasked:
698 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
699 ; CHECK-NEXT: vxor.vi v8, v8, 7
701 %elt.head = insertelement <vscale x 32 x i8> poison, i8 7, i32 0
702 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
703 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
704 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
705 %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)
706 ret <vscale x 32 x i8> %v
709 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) {
710 ; CHECK-LABEL: vxor_vi_nxv32i8_1:
712 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
713 ; CHECK-NEXT: vnot.v v8, v8, v0.t
715 %elt.head = insertelement <vscale x 32 x i8> poison, i8 -1, i32 0
716 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
717 %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)
718 ret <vscale x 32 x i8> %v
721 define <vscale x 32 x i8> @vxor_vi_nxv32i8_unmasked_1(<vscale x 32 x i8> %va, i32 zeroext %evl) {
722 ; CHECK-LABEL: vxor_vi_nxv32i8_unmasked_1:
724 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
725 ; CHECK-NEXT: vnot.v v8, v8
727 %elt.head = insertelement <vscale x 32 x i8> poison, i8 -1, i32 0
728 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
729 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
730 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
731 %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)
732 ret <vscale x 32 x i8> %v
735 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)
737 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) {
738 ; CHECK-LABEL: vxor_vv_nxv64i8:
740 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
741 ; CHECK-NEXT: vxor.vv v8, v8, v16, v0.t
743 %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)
744 ret <vscale x 64 x i8> %v
747 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) {
748 ; CHECK-LABEL: vxor_vv_nxv64i8_unmasked:
750 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
751 ; CHECK-NEXT: vxor.vv v8, v8, v16
753 %head = insertelement <vscale x 64 x i1> poison, i1 true, i32 0
754 %m = shufflevector <vscale x 64 x i1> %head, <vscale x 64 x i1> poison, <vscale x 64 x i32> zeroinitializer
755 %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)
756 ret <vscale x 64 x i8> %v
759 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) {
760 ; CHECK-LABEL: vxor_vx_nxv64i8:
762 ; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma
763 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
765 %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0
766 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
767 %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)
768 ret <vscale x 64 x i8> %v
771 define <vscale x 64 x i8> @vxor_vx_nxv64i8_unmasked(<vscale x 64 x i8> %va, i8 %b, i32 zeroext %evl) {
772 ; CHECK-LABEL: vxor_vx_nxv64i8_unmasked:
774 ; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma
775 ; CHECK-NEXT: vxor.vx v8, v8, a0
777 %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0
778 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
779 %head = insertelement <vscale x 64 x i1> poison, i1 true, i32 0
780 %m = shufflevector <vscale x 64 x i1> %head, <vscale x 64 x i1> poison, <vscale x 64 x i32> zeroinitializer
781 %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)
782 ret <vscale x 64 x i8> %v
785 define <vscale x 64 x i8> @vxor_vi_nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i1> %m, i32 zeroext %evl) {
786 ; CHECK-LABEL: vxor_vi_nxv64i8:
788 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
789 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
791 %elt.head = insertelement <vscale x 64 x i8> poison, i8 7, i32 0
792 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
793 %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)
794 ret <vscale x 64 x i8> %v
797 define <vscale x 64 x i8> @vxor_vi_nxv64i8_unmasked(<vscale x 64 x i8> %va, i32 zeroext %evl) {
798 ; CHECK-LABEL: vxor_vi_nxv64i8_unmasked:
800 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
801 ; CHECK-NEXT: vxor.vi v8, v8, 7
803 %elt.head = insertelement <vscale x 64 x i8> poison, i8 7, i32 0
804 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
805 %head = insertelement <vscale x 64 x i1> poison, i1 true, i32 0
806 %m = shufflevector <vscale x 64 x i1> %head, <vscale x 64 x i1> poison, <vscale x 64 x i32> zeroinitializer
807 %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)
808 ret <vscale x 64 x i8> %v
811 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) {
812 ; CHECK-LABEL: vxor_vi_nxv64i8_1:
814 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
815 ; CHECK-NEXT: vnot.v v8, v8, v0.t
817 %elt.head = insertelement <vscale x 64 x i8> poison, i8 -1, i32 0
818 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
819 %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)
820 ret <vscale x 64 x i8> %v
823 define <vscale x 64 x i8> @vxor_vi_nxv64i8_unmasked_1(<vscale x 64 x i8> %va, i32 zeroext %evl) {
824 ; CHECK-LABEL: vxor_vi_nxv64i8_unmasked_1:
826 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
827 ; CHECK-NEXT: vnot.v v8, v8
829 %elt.head = insertelement <vscale x 64 x i8> poison, i8 -1, i32 0
830 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
831 %head = insertelement <vscale x 64 x i1> poison, i1 true, i32 0
832 %m = shufflevector <vscale x 64 x i1> %head, <vscale x 64 x i1> poison, <vscale x 64 x i32> zeroinitializer
833 %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)
834 ret <vscale x 64 x i8> %v
837 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)
839 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) {
840 ; CHECK-LABEL: vxor_vv_nxv1i16:
842 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
843 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
845 %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)
846 ret <vscale x 1 x i16> %v
849 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) {
850 ; CHECK-LABEL: vxor_vv_nxv1i16_unmasked:
852 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
853 ; CHECK-NEXT: vxor.vv v8, v8, v9
855 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
856 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
857 %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)
858 ret <vscale x 1 x i16> %v
861 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) {
862 ; CHECK-LABEL: vxor_vx_nxv1i16:
864 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
865 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
867 %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
868 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
869 %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)
870 ret <vscale x 1 x i16> %v
873 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) {
874 ; CHECK-LABEL: vxor_vx_nxv1i16_commute:
876 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
877 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
879 %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
880 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
881 %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)
882 ret <vscale x 1 x i16> %v
885 define <vscale x 1 x i16> @vxor_vx_nxv1i16_unmasked(<vscale x 1 x i16> %va, i16 %b, i32 zeroext %evl) {
886 ; CHECK-LABEL: vxor_vx_nxv1i16_unmasked:
888 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
889 ; CHECK-NEXT: vxor.vx v8, v8, a0
891 %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
892 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
893 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
894 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
895 %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)
896 ret <vscale x 1 x i16> %v
899 define <vscale x 1 x i16> @vxor_vi_nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
900 ; CHECK-LABEL: vxor_vi_nxv1i16:
902 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
903 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
905 %elt.head = insertelement <vscale x 1 x i16> poison, i16 7, i32 0
906 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
907 %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)
908 ret <vscale x 1 x i16> %v
911 define <vscale x 1 x i16> @vxor_vi_nxv1i16_unmasked(<vscale x 1 x i16> %va, i32 zeroext %evl) {
912 ; CHECK-LABEL: vxor_vi_nxv1i16_unmasked:
914 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
915 ; CHECK-NEXT: vxor.vi v8, v8, 7
917 %elt.head = insertelement <vscale x 1 x i16> poison, i16 7, i32 0
918 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
919 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
920 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
921 %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)
922 ret <vscale x 1 x i16> %v
925 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) {
926 ; CHECK-LABEL: vxor_vi_nxv1i16_1:
928 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
929 ; CHECK-NEXT: vnot.v v8, v8, v0.t
931 %elt.head = insertelement <vscale x 1 x i16> poison, i16 -1, i32 0
932 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
933 %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)
934 ret <vscale x 1 x i16> %v
937 define <vscale x 1 x i16> @vxor_vi_nxv1i16_unmasked_1(<vscale x 1 x i16> %va, i32 zeroext %evl) {
938 ; CHECK-LABEL: vxor_vi_nxv1i16_unmasked_1:
940 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
941 ; CHECK-NEXT: vnot.v v8, v8
943 %elt.head = insertelement <vscale x 1 x i16> poison, i16 -1, i32 0
944 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
945 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
946 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
947 %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)
948 ret <vscale x 1 x i16> %v
951 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)
953 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) {
954 ; CHECK-LABEL: vxor_vv_nxv2i16:
956 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
957 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
959 %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)
960 ret <vscale x 2 x i16> %v
963 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) {
964 ; CHECK-LABEL: vxor_vv_nxv2i16_unmasked:
966 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
967 ; CHECK-NEXT: vxor.vv v8, v8, v9
969 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
970 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
971 %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)
972 ret <vscale x 2 x i16> %v
975 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) {
976 ; CHECK-LABEL: vxor_vx_nxv2i16:
978 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
979 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
981 %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0
982 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
983 %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)
984 ret <vscale x 2 x i16> %v
987 define <vscale x 2 x i16> @vxor_vx_nxv2i16_unmasked(<vscale x 2 x i16> %va, i16 %b, i32 zeroext %evl) {
988 ; CHECK-LABEL: vxor_vx_nxv2i16_unmasked:
990 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
991 ; CHECK-NEXT: vxor.vx v8, v8, a0
993 %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0
994 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
995 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
996 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
997 %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)
998 ret <vscale x 2 x i16> %v
1001 define <vscale x 2 x i16> @vxor_vi_nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1002 ; CHECK-LABEL: vxor_vi_nxv2i16:
1004 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1005 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
1007 %elt.head = insertelement <vscale x 2 x i16> poison, i16 7, i32 0
1008 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
1009 %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)
1010 ret <vscale x 2 x i16> %v
1013 define <vscale x 2 x i16> @vxor_vi_nxv2i16_unmasked(<vscale x 2 x i16> %va, i32 zeroext %evl) {
1014 ; CHECK-LABEL: vxor_vi_nxv2i16_unmasked:
1016 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1017 ; CHECK-NEXT: vxor.vi v8, v8, 7
1019 %elt.head = insertelement <vscale x 2 x i16> poison, i16 7, i32 0
1020 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
1021 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1022 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1023 %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)
1024 ret <vscale x 2 x i16> %v
1027 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) {
1028 ; CHECK-LABEL: vxor_vi_nxv2i16_1:
1030 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1031 ; CHECK-NEXT: vnot.v v8, v8, v0.t
1033 %elt.head = insertelement <vscale x 2 x i16> poison, i16 -1, i32 0
1034 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
1035 %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)
1036 ret <vscale x 2 x i16> %v
1039 define <vscale x 2 x i16> @vxor_vi_nxv2i16_unmasked_1(<vscale x 2 x i16> %va, i32 zeroext %evl) {
1040 ; CHECK-LABEL: vxor_vi_nxv2i16_unmasked_1:
1042 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
1043 ; CHECK-NEXT: vnot.v v8, v8
1045 %elt.head = insertelement <vscale x 2 x i16> poison, i16 -1, i32 0
1046 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
1047 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1048 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1049 %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)
1050 ret <vscale x 2 x i16> %v
1053 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)
1055 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) {
1056 ; CHECK-LABEL: vxor_vv_nxv4i16:
1058 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
1059 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
1061 %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)
1062 ret <vscale x 4 x i16> %v
1065 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) {
1066 ; CHECK-LABEL: vxor_vv_nxv4i16_unmasked:
1068 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
1069 ; CHECK-NEXT: vxor.vv v8, v8, v9
1071 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1072 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1073 %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)
1074 ret <vscale x 4 x i16> %v
1077 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) {
1078 ; CHECK-LABEL: vxor_vx_nxv4i16:
1080 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
1081 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
1083 %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0
1084 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
1085 %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)
1086 ret <vscale x 4 x i16> %v
1089 define <vscale x 4 x i16> @vxor_vx_nxv4i16_unmasked(<vscale x 4 x i16> %va, i16 %b, i32 zeroext %evl) {
1090 ; CHECK-LABEL: vxor_vx_nxv4i16_unmasked:
1092 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
1093 ; CHECK-NEXT: vxor.vx v8, v8, a0
1095 %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0
1096 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
1097 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1098 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1099 %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)
1100 ret <vscale x 4 x i16> %v
1103 define <vscale x 4 x i16> @vxor_vi_nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1104 ; CHECK-LABEL: vxor_vi_nxv4i16:
1106 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
1107 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
1109 %elt.head = insertelement <vscale x 4 x i16> poison, i16 7, i32 0
1110 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
1111 %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)
1112 ret <vscale x 4 x i16> %v
1115 define <vscale x 4 x i16> @vxor_vi_nxv4i16_unmasked(<vscale x 4 x i16> %va, i32 zeroext %evl) {
1116 ; CHECK-LABEL: vxor_vi_nxv4i16_unmasked:
1118 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
1119 ; CHECK-NEXT: vxor.vi v8, v8, 7
1121 %elt.head = insertelement <vscale x 4 x i16> poison, i16 7, i32 0
1122 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
1123 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1124 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1125 %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)
1126 ret <vscale x 4 x i16> %v
1129 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) {
1130 ; CHECK-LABEL: vxor_vi_nxv4i16_1:
1132 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
1133 ; CHECK-NEXT: vnot.v v8, v8, v0.t
1135 %elt.head = insertelement <vscale x 4 x i16> poison, i16 -1, i32 0
1136 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
1137 %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)
1138 ret <vscale x 4 x i16> %v
1141 define <vscale x 4 x i16> @vxor_vi_nxv4i16_unmasked_1(<vscale x 4 x i16> %va, i32 zeroext %evl) {
1142 ; CHECK-LABEL: vxor_vi_nxv4i16_unmasked_1:
1144 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
1145 ; CHECK-NEXT: vnot.v v8, v8
1147 %elt.head = insertelement <vscale x 4 x i16> poison, i16 -1, i32 0
1148 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
1149 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1150 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1151 %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)
1152 ret <vscale x 4 x i16> %v
1155 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)
1157 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) {
1158 ; CHECK-LABEL: vxor_vv_nxv8i16:
1160 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
1161 ; CHECK-NEXT: vxor.vv v8, v8, v10, v0.t
1163 %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)
1164 ret <vscale x 8 x i16> %v
1167 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) {
1168 ; CHECK-LABEL: vxor_vv_nxv8i16_unmasked:
1170 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
1171 ; CHECK-NEXT: vxor.vv v8, v8, v10
1173 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1174 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1175 %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)
1176 ret <vscale x 8 x i16> %v
1179 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) {
1180 ; CHECK-LABEL: vxor_vx_nxv8i16:
1182 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
1183 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
1185 %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0
1186 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
1187 %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)
1188 ret <vscale x 8 x i16> %v
1191 define <vscale x 8 x i16> @vxor_vx_nxv8i16_unmasked(<vscale x 8 x i16> %va, i16 %b, i32 zeroext %evl) {
1192 ; CHECK-LABEL: vxor_vx_nxv8i16_unmasked:
1194 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
1195 ; CHECK-NEXT: vxor.vx v8, v8, a0
1197 %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0
1198 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
1199 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1200 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1201 %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)
1202 ret <vscale x 8 x i16> %v
1205 define <vscale x 8 x i16> @vxor_vi_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1206 ; CHECK-LABEL: vxor_vi_nxv8i16:
1208 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
1209 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
1211 %elt.head = insertelement <vscale x 8 x i16> poison, i16 7, i32 0
1212 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
1213 %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)
1214 ret <vscale x 8 x i16> %v
1217 define <vscale x 8 x i16> @vxor_vi_nxv8i16_unmasked(<vscale x 8 x i16> %va, i32 zeroext %evl) {
1218 ; CHECK-LABEL: vxor_vi_nxv8i16_unmasked:
1220 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
1221 ; CHECK-NEXT: vxor.vi v8, v8, 7
1223 %elt.head = insertelement <vscale x 8 x i16> poison, i16 7, i32 0
1224 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
1225 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1226 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1227 %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)
1228 ret <vscale x 8 x i16> %v
1231 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) {
1232 ; CHECK-LABEL: vxor_vi_nxv8i16_1:
1234 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
1235 ; CHECK-NEXT: vnot.v v8, v8, v0.t
1237 %elt.head = insertelement <vscale x 8 x i16> poison, i16 -1, i32 0
1238 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
1239 %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)
1240 ret <vscale x 8 x i16> %v
1243 define <vscale x 8 x i16> @vxor_vi_nxv8i16_unmasked_1(<vscale x 8 x i16> %va, i32 zeroext %evl) {
1244 ; CHECK-LABEL: vxor_vi_nxv8i16_unmasked_1:
1246 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
1247 ; CHECK-NEXT: vnot.v v8, v8
1249 %elt.head = insertelement <vscale x 8 x i16> poison, i16 -1, i32 0
1250 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
1251 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1252 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1253 %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)
1254 ret <vscale x 8 x i16> %v
1257 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)
1259 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) {
1260 ; CHECK-LABEL: vxor_vv_nxv16i16:
1262 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
1263 ; CHECK-NEXT: vxor.vv v8, v8, v12, v0.t
1265 %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)
1266 ret <vscale x 16 x i16> %v
1269 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) {
1270 ; CHECK-LABEL: vxor_vv_nxv16i16_unmasked:
1272 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
1273 ; CHECK-NEXT: vxor.vv v8, v8, v12
1275 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
1276 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
1277 %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)
1278 ret <vscale x 16 x i16> %v
1281 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) {
1282 ; CHECK-LABEL: vxor_vx_nxv16i16:
1284 ; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma
1285 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
1287 %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0
1288 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
1289 %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)
1290 ret <vscale x 16 x i16> %v
1293 define <vscale x 16 x i16> @vxor_vx_nxv16i16_unmasked(<vscale x 16 x i16> %va, i16 %b, i32 zeroext %evl) {
1294 ; CHECK-LABEL: vxor_vx_nxv16i16_unmasked:
1296 ; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma
1297 ; CHECK-NEXT: vxor.vx v8, v8, a0
1299 %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0
1300 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
1301 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
1302 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
1303 %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)
1304 ret <vscale x 16 x i16> %v
1307 define <vscale x 16 x i16> @vxor_vi_nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1308 ; CHECK-LABEL: vxor_vi_nxv16i16:
1310 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
1311 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
1313 %elt.head = insertelement <vscale x 16 x i16> poison, i16 7, i32 0
1314 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
1315 %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)
1316 ret <vscale x 16 x i16> %v
1319 define <vscale x 16 x i16> @vxor_vi_nxv16i16_unmasked(<vscale x 16 x i16> %va, i32 zeroext %evl) {
1320 ; CHECK-LABEL: vxor_vi_nxv16i16_unmasked:
1322 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
1323 ; CHECK-NEXT: vxor.vi v8, v8, 7
1325 %elt.head = insertelement <vscale x 16 x i16> poison, i16 7, i32 0
1326 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
1327 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
1328 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
1329 %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)
1330 ret <vscale x 16 x i16> %v
1333 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) {
1334 ; CHECK-LABEL: vxor_vi_nxv16i16_1:
1336 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
1337 ; CHECK-NEXT: vnot.v v8, v8, v0.t
1339 %elt.head = insertelement <vscale x 16 x i16> poison, i16 -1, i32 0
1340 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
1341 %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)
1342 ret <vscale x 16 x i16> %v
1345 define <vscale x 16 x i16> @vxor_vi_nxv16i16_unmasked_1(<vscale x 16 x i16> %va, i32 zeroext %evl) {
1346 ; CHECK-LABEL: vxor_vi_nxv16i16_unmasked_1:
1348 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
1349 ; CHECK-NEXT: vnot.v v8, v8
1351 %elt.head = insertelement <vscale x 16 x i16> poison, i16 -1, i32 0
1352 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
1353 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
1354 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
1355 %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)
1356 ret <vscale x 16 x i16> %v
1359 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)
1361 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) {
1362 ; CHECK-LABEL: vxor_vv_nxv32i16:
1364 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
1365 ; CHECK-NEXT: vxor.vv v8, v8, v16, v0.t
1367 %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)
1368 ret <vscale x 32 x i16> %v
1371 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) {
1372 ; CHECK-LABEL: vxor_vv_nxv32i16_unmasked:
1374 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
1375 ; CHECK-NEXT: vxor.vv v8, v8, v16
1377 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
1378 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
1379 %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)
1380 ret <vscale x 32 x i16> %v
1383 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) {
1384 ; CHECK-LABEL: vxor_vx_nxv32i16:
1386 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
1387 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
1389 %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
1390 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
1391 %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)
1392 ret <vscale x 32 x i16> %v
1395 define <vscale x 32 x i16> @vxor_vx_nxv32i16_unmasked(<vscale x 32 x i16> %va, i16 %b, i32 zeroext %evl) {
1396 ; CHECK-LABEL: vxor_vx_nxv32i16_unmasked:
1398 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
1399 ; CHECK-NEXT: vxor.vx v8, v8, a0
1401 %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
1402 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
1403 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
1404 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
1405 %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)
1406 ret <vscale x 32 x i16> %v
1409 define <vscale x 32 x i16> @vxor_vi_nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i1> %m, i32 zeroext %evl) {
1410 ; CHECK-LABEL: vxor_vi_nxv32i16:
1412 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
1413 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
1415 %elt.head = insertelement <vscale x 32 x i16> poison, i16 7, i32 0
1416 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
1417 %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)
1418 ret <vscale x 32 x i16> %v
1421 define <vscale x 32 x i16> @vxor_vi_nxv32i16_unmasked(<vscale x 32 x i16> %va, i32 zeroext %evl) {
1422 ; CHECK-LABEL: vxor_vi_nxv32i16_unmasked:
1424 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
1425 ; CHECK-NEXT: vxor.vi v8, v8, 7
1427 %elt.head = insertelement <vscale x 32 x i16> poison, i16 7, i32 0
1428 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
1429 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
1430 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
1431 %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)
1432 ret <vscale x 32 x i16> %v
1435 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) {
1436 ; CHECK-LABEL: vxor_vi_nxv32i16_1:
1438 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
1439 ; CHECK-NEXT: vnot.v v8, v8, v0.t
1441 %elt.head = insertelement <vscale x 32 x i16> poison, i16 -1, i32 0
1442 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
1443 %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)
1444 ret <vscale x 32 x i16> %v
1447 define <vscale x 32 x i16> @vxor_vi_nxv32i16_unmasked_1(<vscale x 32 x i16> %va, i32 zeroext %evl) {
1448 ; CHECK-LABEL: vxor_vi_nxv32i16_unmasked_1:
1450 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
1451 ; CHECK-NEXT: vnot.v v8, v8
1453 %elt.head = insertelement <vscale x 32 x i16> poison, i16 -1, i32 0
1454 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
1455 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
1456 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
1457 %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)
1458 ret <vscale x 32 x i16> %v
1461 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)
1463 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) {
1464 ; CHECK-LABEL: vxor_vv_nxv1i32:
1466 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1467 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
1469 %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)
1470 ret <vscale x 1 x i32> %v
1473 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) {
1474 ; CHECK-LABEL: vxor_vv_nxv1i32_unmasked:
1476 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1477 ; CHECK-NEXT: vxor.vv v8, v8, v9
1479 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1480 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1481 %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)
1482 ret <vscale x 1 x i32> %v
1485 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) {
1486 ; CHECK-LABEL: vxor_vx_nxv1i32:
1488 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
1489 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
1491 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1492 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1493 %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)
1494 ret <vscale x 1 x i32> %v
1497 define <vscale x 1 x i32> @vxor_vx_nxv1i32_unmasked(<vscale x 1 x i32> %va, i32 %b, i32 zeroext %evl) {
1498 ; CHECK-LABEL: vxor_vx_nxv1i32_unmasked:
1500 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
1501 ; CHECK-NEXT: vxor.vx v8, v8, a0
1503 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1504 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1505 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1506 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1507 %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)
1508 ret <vscale x 1 x i32> %v
1511 define <vscale x 1 x i32> @vxor_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1512 ; CHECK-LABEL: vxor_vi_nxv1i32:
1514 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1515 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
1517 %elt.head = insertelement <vscale x 1 x i32> poison, i32 7, i32 0
1518 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1519 %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)
1520 ret <vscale x 1 x i32> %v
1523 define <vscale x 1 x i32> @vxor_vi_nxv1i32_unmasked(<vscale x 1 x i32> %va, i32 zeroext %evl) {
1524 ; CHECK-LABEL: vxor_vi_nxv1i32_unmasked:
1526 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1527 ; CHECK-NEXT: vxor.vi v8, v8, 7
1529 %elt.head = insertelement <vscale x 1 x i32> poison, i32 7, i32 0
1530 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1531 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1532 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1533 %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)
1534 ret <vscale x 1 x i32> %v
1537 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) {
1538 ; CHECK-LABEL: vxor_vi_nxv1i32_1:
1540 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1541 ; CHECK-NEXT: vnot.v v8, v8, v0.t
1543 %elt.head = insertelement <vscale x 1 x i32> poison, i32 -1, i32 0
1544 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1545 %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)
1546 ret <vscale x 1 x i32> %v
1549 define <vscale x 1 x i32> @vxor_vi_nxv1i32_unmasked_1(<vscale x 1 x i32> %va, i32 zeroext %evl) {
1550 ; CHECK-LABEL: vxor_vi_nxv1i32_unmasked_1:
1552 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1553 ; CHECK-NEXT: vnot.v v8, v8
1555 %elt.head = insertelement <vscale x 1 x i32> poison, i32 -1, i32 0
1556 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1557 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1558 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1559 %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)
1560 ret <vscale x 1 x i32> %v
1563 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)
1565 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) {
1566 ; CHECK-LABEL: vxor_vv_nxv2i32:
1568 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1569 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
1571 %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)
1572 ret <vscale x 2 x i32> %v
1575 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) {
1576 ; CHECK-LABEL: vxor_vv_nxv2i32_unmasked:
1578 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1579 ; CHECK-NEXT: vxor.vv v8, v8, v9
1581 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1582 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1583 %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)
1584 ret <vscale x 2 x i32> %v
1587 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) {
1588 ; CHECK-LABEL: vxor_vx_nxv2i32:
1590 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
1591 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
1593 %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
1594 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1595 %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)
1596 ret <vscale x 2 x i32> %v
1599 define <vscale x 2 x i32> @vxor_vx_nxv2i32_unmasked(<vscale x 2 x i32> %va, i32 %b, i32 zeroext %evl) {
1600 ; CHECK-LABEL: vxor_vx_nxv2i32_unmasked:
1602 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
1603 ; CHECK-NEXT: vxor.vx v8, v8, a0
1605 %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
1606 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1607 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1608 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1609 %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)
1610 ret <vscale x 2 x i32> %v
1613 define <vscale x 2 x i32> @vxor_vi_nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1614 ; CHECK-LABEL: vxor_vi_nxv2i32:
1616 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1617 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
1619 %elt.head = insertelement <vscale x 2 x i32> poison, i32 7, i32 0
1620 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1621 %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)
1622 ret <vscale x 2 x i32> %v
1625 define <vscale x 2 x i32> @vxor_vi_nxv2i32_unmasked(<vscale x 2 x i32> %va, i32 zeroext %evl) {
1626 ; CHECK-LABEL: vxor_vi_nxv2i32_unmasked:
1628 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1629 ; CHECK-NEXT: vxor.vi v8, v8, 7
1631 %elt.head = insertelement <vscale x 2 x i32> poison, i32 7, i32 0
1632 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1633 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1634 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1635 %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)
1636 ret <vscale x 2 x i32> %v
1639 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) {
1640 ; CHECK-LABEL: vxor_vi_nxv2i32_1:
1642 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1643 ; CHECK-NEXT: vnot.v v8, v8, v0.t
1645 %elt.head = insertelement <vscale x 2 x i32> poison, i32 -1, i32 0
1646 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1647 %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)
1648 ret <vscale x 2 x i32> %v
1651 define <vscale x 2 x i32> @vxor_vi_nxv2i32_unmasked_1(<vscale x 2 x i32> %va, i32 zeroext %evl) {
1652 ; CHECK-LABEL: vxor_vi_nxv2i32_unmasked_1:
1654 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
1655 ; CHECK-NEXT: vnot.v v8, v8
1657 %elt.head = insertelement <vscale x 2 x i32> poison, i32 -1, i32 0
1658 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1659 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1660 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1661 %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)
1662 ret <vscale x 2 x i32> %v
1665 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)
1667 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) {
1668 ; CHECK-LABEL: vxor_vv_nxv4i32:
1670 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1671 ; CHECK-NEXT: vxor.vv v8, v8, v10, v0.t
1673 %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)
1674 ret <vscale x 4 x i32> %v
1677 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) {
1678 ; CHECK-LABEL: vxor_vv_nxv4i32_unmasked:
1680 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1681 ; CHECK-NEXT: vxor.vv v8, v8, v10
1683 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1684 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1685 %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)
1686 ret <vscale x 4 x i32> %v
1689 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) {
1690 ; CHECK-LABEL: vxor_vx_nxv4i32:
1692 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
1693 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
1695 %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
1696 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1697 %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)
1698 ret <vscale x 4 x i32> %v
1701 define <vscale x 4 x i32> @vxor_vx_nxv4i32_unmasked(<vscale x 4 x i32> %va, i32 %b, i32 zeroext %evl) {
1702 ; CHECK-LABEL: vxor_vx_nxv4i32_unmasked:
1704 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
1705 ; CHECK-NEXT: vxor.vx v8, v8, a0
1707 %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
1708 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1709 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1710 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1711 %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)
1712 ret <vscale x 4 x i32> %v
1715 define <vscale x 4 x i32> @vxor_vi_nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1716 ; CHECK-LABEL: vxor_vi_nxv4i32:
1718 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1719 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
1721 %elt.head = insertelement <vscale x 4 x i32> poison, i32 7, i32 0
1722 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1723 %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)
1724 ret <vscale x 4 x i32> %v
1727 define <vscale x 4 x i32> @vxor_vi_nxv4i32_unmasked(<vscale x 4 x i32> %va, i32 zeroext %evl) {
1728 ; CHECK-LABEL: vxor_vi_nxv4i32_unmasked:
1730 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1731 ; CHECK-NEXT: vxor.vi v8, v8, 7
1733 %elt.head = insertelement <vscale x 4 x i32> poison, i32 7, i32 0
1734 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1735 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1736 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1737 %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)
1738 ret <vscale x 4 x i32> %v
1741 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) {
1742 ; CHECK-LABEL: vxor_vi_nxv4i32_1:
1744 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1745 ; CHECK-NEXT: vnot.v v8, v8, v0.t
1747 %elt.head = insertelement <vscale x 4 x i32> poison, i32 -1, i32 0
1748 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1749 %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)
1750 ret <vscale x 4 x i32> %v
1753 define <vscale x 4 x i32> @vxor_vi_nxv4i32_unmasked_1(<vscale x 4 x i32> %va, i32 zeroext %evl) {
1754 ; CHECK-LABEL: vxor_vi_nxv4i32_unmasked_1:
1756 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1757 ; CHECK-NEXT: vnot.v v8, v8
1759 %elt.head = insertelement <vscale x 4 x i32> poison, i32 -1, i32 0
1760 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1761 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1762 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1763 %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)
1764 ret <vscale x 4 x i32> %v
1767 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)
1769 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) {
1770 ; CHECK-LABEL: vxor_vv_nxv8i32:
1772 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1773 ; CHECK-NEXT: vxor.vv v8, v8, v12, v0.t
1775 %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)
1776 ret <vscale x 8 x i32> %v
1779 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) {
1780 ; CHECK-LABEL: vxor_vv_nxv8i32_unmasked:
1782 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1783 ; CHECK-NEXT: vxor.vv v8, v8, v12
1785 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1786 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1787 %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)
1788 ret <vscale x 8 x i32> %v
1791 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) {
1792 ; CHECK-LABEL: vxor_vx_nxv8i32:
1794 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
1795 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
1797 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1798 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1799 %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)
1800 ret <vscale x 8 x i32> %v
1803 define <vscale x 8 x i32> @vxor_vx_nxv8i32_unmasked(<vscale x 8 x i32> %va, i32 %b, i32 zeroext %evl) {
1804 ; CHECK-LABEL: vxor_vx_nxv8i32_unmasked:
1806 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
1807 ; CHECK-NEXT: vxor.vx v8, v8, a0
1809 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1810 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1811 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1812 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1813 %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)
1814 ret <vscale x 8 x i32> %v
1817 define <vscale x 8 x i32> @vxor_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1818 ; CHECK-LABEL: vxor_vi_nxv8i32:
1820 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1821 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
1823 %elt.head = insertelement <vscale x 8 x i32> poison, i32 7, i32 0
1824 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1825 %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)
1826 ret <vscale x 8 x i32> %v
1829 define <vscale x 8 x i32> @vxor_vi_nxv8i32_unmasked(<vscale x 8 x i32> %va, i32 zeroext %evl) {
1830 ; CHECK-LABEL: vxor_vi_nxv8i32_unmasked:
1832 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1833 ; CHECK-NEXT: vxor.vi v8, v8, 7
1835 %elt.head = insertelement <vscale x 8 x i32> poison, i32 7, i32 0
1836 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1837 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1838 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1839 %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)
1840 ret <vscale x 8 x i32> %v
1843 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) {
1844 ; CHECK-LABEL: vxor_vi_nxv8i32_1:
1846 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1847 ; CHECK-NEXT: vnot.v v8, v8, v0.t
1849 %elt.head = insertelement <vscale x 8 x i32> poison, i32 -1, i32 0
1850 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1851 %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)
1852 ret <vscale x 8 x i32> %v
1855 define <vscale x 8 x i32> @vxor_vi_nxv8i32_unmasked_1(<vscale x 8 x i32> %va, i32 zeroext %evl) {
1856 ; CHECK-LABEL: vxor_vi_nxv8i32_unmasked_1:
1858 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1859 ; CHECK-NEXT: vnot.v v8, v8
1861 %elt.head = insertelement <vscale x 8 x i32> poison, i32 -1, i32 0
1862 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1863 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1864 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1865 %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)
1866 ret <vscale x 8 x i32> %v
1869 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)
1871 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) {
1872 ; CHECK-LABEL: vxor_vv_nxv16i32:
1874 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1875 ; CHECK-NEXT: vxor.vv v8, v8, v16, v0.t
1877 %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)
1878 ret <vscale x 16 x i32> %v
1881 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) {
1882 ; CHECK-LABEL: vxor_vv_nxv16i32_unmasked:
1884 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1885 ; CHECK-NEXT: vxor.vv v8, v8, v16
1887 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
1888 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
1889 %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)
1890 ret <vscale x 16 x i32> %v
1893 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) {
1894 ; CHECK-LABEL: vxor_vx_nxv16i32:
1896 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
1897 ; CHECK-NEXT: vxor.vx v8, v8, a0, v0.t
1899 %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0
1900 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1901 %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)
1902 ret <vscale x 16 x i32> %v
1905 define <vscale x 16 x i32> @vxor_vx_nxv16i32_unmasked(<vscale x 16 x i32> %va, i32 %b, i32 zeroext %evl) {
1906 ; CHECK-LABEL: vxor_vx_nxv16i32_unmasked:
1908 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
1909 ; CHECK-NEXT: vxor.vx v8, v8, a0
1911 %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0
1912 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1913 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
1914 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
1915 %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)
1916 ret <vscale x 16 x i32> %v
1919 define <vscale x 16 x i32> @vxor_vi_nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1920 ; CHECK-LABEL: vxor_vi_nxv16i32:
1922 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1923 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
1925 %elt.head = insertelement <vscale x 16 x i32> poison, i32 7, i32 0
1926 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1927 %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)
1928 ret <vscale x 16 x i32> %v
1931 define <vscale x 16 x i32> @vxor_vi_nxv16i32_unmasked(<vscale x 16 x i32> %va, i32 zeroext %evl) {
1932 ; CHECK-LABEL: vxor_vi_nxv16i32_unmasked:
1934 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1935 ; CHECK-NEXT: vxor.vi v8, v8, 7
1937 %elt.head = insertelement <vscale x 16 x i32> poison, i32 7, i32 0
1938 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1939 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
1940 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
1941 %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)
1942 ret <vscale x 16 x i32> %v
1945 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) {
1946 ; CHECK-LABEL: vxor_vi_nxv16i32_1:
1948 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1949 ; CHECK-NEXT: vnot.v v8, v8, v0.t
1951 %elt.head = insertelement <vscale x 16 x i32> poison, i32 -1, i32 0
1952 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1953 %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)
1954 ret <vscale x 16 x i32> %v
1957 define <vscale x 16 x i32> @vxor_vi_nxv16i32_unmasked_1(<vscale x 16 x i32> %va, i32 zeroext %evl) {
1958 ; CHECK-LABEL: vxor_vi_nxv16i32_unmasked_1:
1960 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
1961 ; CHECK-NEXT: vnot.v v8, v8
1963 %elt.head = insertelement <vscale x 16 x i32> poison, i32 -1, i32 0
1964 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1965 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
1966 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
1967 %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)
1968 ret <vscale x 16 x i32> %v
1971 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)
1973 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) {
1974 ; CHECK-LABEL: vxor_vv_nxv1i64:
1976 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1977 ; CHECK-NEXT: vxor.vv v8, v8, v9, v0.t
1979 %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)
1980 ret <vscale x 1 x i64> %v
1983 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) {
1984 ; CHECK-LABEL: vxor_vv_nxv1i64_unmasked:
1986 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
1987 ; CHECK-NEXT: vxor.vv v8, v8, v9
1989 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1990 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1991 %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)
1992 ret <vscale x 1 x i64> %v
1995 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) {
1996 ; RV32-LABEL: vxor_vx_nxv1i64:
1998 ; RV32-NEXT: addi sp, sp, -16
1999 ; RV32-NEXT: .cfi_def_cfa_offset 16
2000 ; RV32-NEXT: sw a1, 12(sp)
2001 ; RV32-NEXT: sw a0, 8(sp)
2002 ; RV32-NEXT: addi a0, sp, 8
2003 ; RV32-NEXT: vsetvli a1, zero, e64, m1, ta, ma
2004 ; RV32-NEXT: vlse64.v v9, (a0), zero
2005 ; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma
2006 ; RV32-NEXT: vxor.vv v8, v8, v9, v0.t
2007 ; RV32-NEXT: addi sp, sp, 16
2010 ; RV64-LABEL: vxor_vx_nxv1i64:
2012 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
2013 ; RV64-NEXT: vxor.vx v8, v8, a0, v0.t
2015 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
2016 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
2017 %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)
2018 ret <vscale x 1 x i64> %v
2021 define <vscale x 1 x i64> @vxor_vx_nxv1i64_unmasked(<vscale x 1 x i64> %va, i64 %b, i32 zeroext %evl) {
2022 ; RV32-LABEL: vxor_vx_nxv1i64_unmasked:
2024 ; RV32-NEXT: addi sp, sp, -16
2025 ; RV32-NEXT: .cfi_def_cfa_offset 16
2026 ; RV32-NEXT: sw a1, 12(sp)
2027 ; RV32-NEXT: sw a0, 8(sp)
2028 ; RV32-NEXT: addi a0, sp, 8
2029 ; RV32-NEXT: vsetvli a1, zero, e64, m1, ta, ma
2030 ; RV32-NEXT: vlse64.v v9, (a0), zero
2031 ; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma
2032 ; RV32-NEXT: vxor.vv v8, v8, v9
2033 ; RV32-NEXT: addi sp, sp, 16
2036 ; RV64-LABEL: vxor_vx_nxv1i64_unmasked:
2038 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
2039 ; RV64-NEXT: vxor.vx v8, v8, a0
2041 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
2042 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
2043 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
2044 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
2045 %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)
2046 ret <vscale x 1 x i64> %v
2049 define <vscale x 1 x i64> @vxor_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2050 ; CHECK-LABEL: vxor_vi_nxv1i64:
2052 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
2053 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
2055 %elt.head = insertelement <vscale x 1 x i64> poison, i64 7, i32 0
2056 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
2057 %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)
2058 ret <vscale x 1 x i64> %v
2061 define <vscale x 1 x i64> @vxor_vi_nxv1i64_unmasked(<vscale x 1 x i64> %va, i32 zeroext %evl) {
2062 ; CHECK-LABEL: vxor_vi_nxv1i64_unmasked:
2064 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
2065 ; CHECK-NEXT: vxor.vi v8, v8, 7
2067 %elt.head = insertelement <vscale x 1 x i64> poison, i64 7, i32 0
2068 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
2069 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
2070 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
2071 %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)
2072 ret <vscale x 1 x i64> %v
2075 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) {
2076 ; CHECK-LABEL: vxor_vi_nxv1i64_1:
2078 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
2079 ; CHECK-NEXT: vnot.v v8, v8, v0.t
2081 %elt.head = insertelement <vscale x 1 x i64> poison, i64 -1, i32 0
2082 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
2083 %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)
2084 ret <vscale x 1 x i64> %v
2087 define <vscale x 1 x i64> @vxor_vi_nxv1i64_unmasked_1(<vscale x 1 x i64> %va, i32 zeroext %evl) {
2088 ; CHECK-LABEL: vxor_vi_nxv1i64_unmasked_1:
2090 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
2091 ; CHECK-NEXT: vnot.v v8, v8
2093 %elt.head = insertelement <vscale x 1 x i64> poison, i64 -1, i32 0
2094 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
2095 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
2096 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
2097 %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)
2098 ret <vscale x 1 x i64> %v
2101 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)
2103 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) {
2104 ; CHECK-LABEL: vxor_vv_nxv2i64:
2106 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
2107 ; CHECK-NEXT: vxor.vv v8, v8, v10, v0.t
2109 %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)
2110 ret <vscale x 2 x i64> %v
2113 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) {
2114 ; CHECK-LABEL: vxor_vv_nxv2i64_unmasked:
2116 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
2117 ; CHECK-NEXT: vxor.vv v8, v8, v10
2119 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
2120 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
2121 %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)
2122 ret <vscale x 2 x i64> %v
2125 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) {
2126 ; RV32-LABEL: vxor_vx_nxv2i64:
2128 ; RV32-NEXT: addi sp, sp, -16
2129 ; RV32-NEXT: .cfi_def_cfa_offset 16
2130 ; RV32-NEXT: sw a1, 12(sp)
2131 ; RV32-NEXT: sw a0, 8(sp)
2132 ; RV32-NEXT: addi a0, sp, 8
2133 ; RV32-NEXT: vsetvli a1, zero, e64, m2, ta, ma
2134 ; RV32-NEXT: vlse64.v v10, (a0), zero
2135 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
2136 ; RV32-NEXT: vxor.vv v8, v8, v10, v0.t
2137 ; RV32-NEXT: addi sp, sp, 16
2140 ; RV64-LABEL: vxor_vx_nxv2i64:
2142 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
2143 ; RV64-NEXT: vxor.vx v8, v8, a0, v0.t
2145 %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0
2146 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
2147 %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)
2148 ret <vscale x 2 x i64> %v
2151 define <vscale x 2 x i64> @vxor_vx_nxv2i64_unmasked(<vscale x 2 x i64> %va, i64 %b, i32 zeroext %evl) {
2152 ; RV32-LABEL: vxor_vx_nxv2i64_unmasked:
2154 ; RV32-NEXT: addi sp, sp, -16
2155 ; RV32-NEXT: .cfi_def_cfa_offset 16
2156 ; RV32-NEXT: sw a1, 12(sp)
2157 ; RV32-NEXT: sw a0, 8(sp)
2158 ; RV32-NEXT: addi a0, sp, 8
2159 ; RV32-NEXT: vsetvli a1, zero, e64, m2, ta, ma
2160 ; RV32-NEXT: vlse64.v v10, (a0), zero
2161 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
2162 ; RV32-NEXT: vxor.vv v8, v8, v10
2163 ; RV32-NEXT: addi sp, sp, 16
2166 ; RV64-LABEL: vxor_vx_nxv2i64_unmasked:
2168 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
2169 ; RV64-NEXT: vxor.vx v8, v8, a0
2171 %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0
2172 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
2173 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
2174 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
2175 %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)
2176 ret <vscale x 2 x i64> %v
2179 define <vscale x 2 x i64> @vxor_vi_nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
2180 ; CHECK-LABEL: vxor_vi_nxv2i64:
2182 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
2183 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
2185 %elt.head = insertelement <vscale x 2 x i64> poison, i64 7, i32 0
2186 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
2187 %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)
2188 ret <vscale x 2 x i64> %v
2191 define <vscale x 2 x i64> @vxor_vi_nxv2i64_unmasked(<vscale x 2 x i64> %va, i32 zeroext %evl) {
2192 ; CHECK-LABEL: vxor_vi_nxv2i64_unmasked:
2194 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
2195 ; CHECK-NEXT: vxor.vi v8, v8, 7
2197 %elt.head = insertelement <vscale x 2 x i64> poison, i64 7, i32 0
2198 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
2199 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
2200 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
2201 %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)
2202 ret <vscale x 2 x i64> %v
2205 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) {
2206 ; CHECK-LABEL: vxor_vi_nxv2i64_1:
2208 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
2209 ; CHECK-NEXT: vnot.v v8, v8, v0.t
2211 %elt.head = insertelement <vscale x 2 x i64> poison, i64 -1, i32 0
2212 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
2213 %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)
2214 ret <vscale x 2 x i64> %v
2217 define <vscale x 2 x i64> @vxor_vi_nxv2i64_unmasked_1(<vscale x 2 x i64> %va, i32 zeroext %evl) {
2218 ; CHECK-LABEL: vxor_vi_nxv2i64_unmasked_1:
2220 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
2221 ; CHECK-NEXT: vnot.v v8, v8
2223 %elt.head = insertelement <vscale x 2 x i64> poison, i64 -1, i32 0
2224 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
2225 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
2226 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
2227 %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)
2228 ret <vscale x 2 x i64> %v
2231 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)
2233 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) {
2234 ; CHECK-LABEL: vxor_vv_nxv4i64:
2236 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
2237 ; CHECK-NEXT: vxor.vv v8, v8, v12, v0.t
2239 %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)
2240 ret <vscale x 4 x i64> %v
2243 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) {
2244 ; CHECK-LABEL: vxor_vv_nxv4i64_unmasked:
2246 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
2247 ; CHECK-NEXT: vxor.vv v8, v8, v12
2249 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
2250 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
2251 %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)
2252 ret <vscale x 4 x i64> %v
2255 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) {
2256 ; RV32-LABEL: vxor_vx_nxv4i64:
2258 ; RV32-NEXT: addi sp, sp, -16
2259 ; RV32-NEXT: .cfi_def_cfa_offset 16
2260 ; RV32-NEXT: sw a1, 12(sp)
2261 ; RV32-NEXT: sw a0, 8(sp)
2262 ; RV32-NEXT: addi a0, sp, 8
2263 ; RV32-NEXT: vsetvli a1, zero, e64, m4, ta, ma
2264 ; RV32-NEXT: vlse64.v v12, (a0), zero
2265 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
2266 ; RV32-NEXT: vxor.vv v8, v8, v12, v0.t
2267 ; RV32-NEXT: addi sp, sp, 16
2270 ; RV64-LABEL: vxor_vx_nxv4i64:
2272 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
2273 ; RV64-NEXT: vxor.vx v8, v8, a0, v0.t
2275 %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0
2276 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
2277 %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)
2278 ret <vscale x 4 x i64> %v
2281 define <vscale x 4 x i64> @vxor_vx_nxv4i64_unmasked(<vscale x 4 x i64> %va, i64 %b, i32 zeroext %evl) {
2282 ; RV32-LABEL: vxor_vx_nxv4i64_unmasked:
2284 ; RV32-NEXT: addi sp, sp, -16
2285 ; RV32-NEXT: .cfi_def_cfa_offset 16
2286 ; RV32-NEXT: sw a1, 12(sp)
2287 ; RV32-NEXT: sw a0, 8(sp)
2288 ; RV32-NEXT: addi a0, sp, 8
2289 ; RV32-NEXT: vsetvli a1, zero, e64, m4, ta, ma
2290 ; RV32-NEXT: vlse64.v v12, (a0), zero
2291 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
2292 ; RV32-NEXT: vxor.vv v8, v8, v12
2293 ; RV32-NEXT: addi sp, sp, 16
2296 ; RV64-LABEL: vxor_vx_nxv4i64_unmasked:
2298 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
2299 ; RV64-NEXT: vxor.vx v8, v8, a0
2301 %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0
2302 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
2303 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
2304 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
2305 %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)
2306 ret <vscale x 4 x i64> %v
2309 define <vscale x 4 x i64> @vxor_vi_nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
2310 ; CHECK-LABEL: vxor_vi_nxv4i64:
2312 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
2313 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
2315 %elt.head = insertelement <vscale x 4 x i64> poison, i64 7, i32 0
2316 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
2317 %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)
2318 ret <vscale x 4 x i64> %v
2321 define <vscale x 4 x i64> @vxor_vi_nxv4i64_unmasked(<vscale x 4 x i64> %va, i32 zeroext %evl) {
2322 ; CHECK-LABEL: vxor_vi_nxv4i64_unmasked:
2324 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
2325 ; CHECK-NEXT: vxor.vi v8, v8, 7
2327 %elt.head = insertelement <vscale x 4 x i64> poison, i64 7, i32 0
2328 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
2329 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
2330 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
2331 %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)
2332 ret <vscale x 4 x i64> %v
2335 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) {
2336 ; CHECK-LABEL: vxor_vi_nxv4i64_1:
2338 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
2339 ; CHECK-NEXT: vnot.v v8, v8, v0.t
2341 %elt.head = insertelement <vscale x 4 x i64> poison, i64 -1, i32 0
2342 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
2343 %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)
2344 ret <vscale x 4 x i64> %v
2347 define <vscale x 4 x i64> @vxor_vi_nxv4i64_unmasked_1(<vscale x 4 x i64> %va, i32 zeroext %evl) {
2348 ; CHECK-LABEL: vxor_vi_nxv4i64_unmasked_1:
2350 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
2351 ; CHECK-NEXT: vnot.v v8, v8
2353 %elt.head = insertelement <vscale x 4 x i64> poison, i64 -1, i32 0
2354 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
2355 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
2356 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
2357 %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)
2358 ret <vscale x 4 x i64> %v
2361 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)
2363 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) {
2364 ; CHECK-LABEL: vxor_vv_nxv8i64:
2366 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
2367 ; CHECK-NEXT: vxor.vv v8, v8, v16, v0.t
2369 %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)
2370 ret <vscale x 8 x i64> %v
2373 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) {
2374 ; CHECK-LABEL: vxor_vv_nxv8i64_unmasked:
2376 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
2377 ; CHECK-NEXT: vxor.vv v8, v8, v16
2379 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
2380 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
2381 %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)
2382 ret <vscale x 8 x i64> %v
2385 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) {
2386 ; RV32-LABEL: vxor_vx_nxv8i64:
2388 ; RV32-NEXT: addi sp, sp, -16
2389 ; RV32-NEXT: .cfi_def_cfa_offset 16
2390 ; RV32-NEXT: sw a1, 12(sp)
2391 ; RV32-NEXT: sw a0, 8(sp)
2392 ; RV32-NEXT: addi a0, sp, 8
2393 ; RV32-NEXT: vsetvli a1, zero, e64, m8, ta, ma
2394 ; RV32-NEXT: vlse64.v v16, (a0), zero
2395 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
2396 ; RV32-NEXT: vxor.vv v8, v8, v16, v0.t
2397 ; RV32-NEXT: addi sp, sp, 16
2400 ; RV64-LABEL: vxor_vx_nxv8i64:
2402 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
2403 ; RV64-NEXT: vxor.vx v8, v8, a0, v0.t
2405 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
2406 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
2407 %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)
2408 ret <vscale x 8 x i64> %v
2411 define <vscale x 8 x i64> @vxor_vx_nxv8i64_unmasked(<vscale x 8 x i64> %va, i64 %b, i32 zeroext %evl) {
2412 ; RV32-LABEL: vxor_vx_nxv8i64_unmasked:
2414 ; RV32-NEXT: addi sp, sp, -16
2415 ; RV32-NEXT: .cfi_def_cfa_offset 16
2416 ; RV32-NEXT: sw a1, 12(sp)
2417 ; RV32-NEXT: sw a0, 8(sp)
2418 ; RV32-NEXT: addi a0, sp, 8
2419 ; RV32-NEXT: vsetvli a1, zero, e64, m8, ta, ma
2420 ; RV32-NEXT: vlse64.v v16, (a0), zero
2421 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
2422 ; RV32-NEXT: vxor.vv v8, v8, v16
2423 ; RV32-NEXT: addi sp, sp, 16
2426 ; RV64-LABEL: vxor_vx_nxv8i64_unmasked:
2428 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
2429 ; RV64-NEXT: vxor.vx v8, v8, a0
2431 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
2432 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
2433 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
2434 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
2435 %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)
2436 ret <vscale x 8 x i64> %v
2439 define <vscale x 8 x i64> @vxor_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2440 ; CHECK-LABEL: vxor_vi_nxv8i64:
2442 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
2443 ; CHECK-NEXT: vxor.vi v8, v8, 7, v0.t
2445 %elt.head = insertelement <vscale x 8 x i64> poison, i64 7, i32 0
2446 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
2447 %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)
2448 ret <vscale x 8 x i64> %v
2451 define <vscale x 8 x i64> @vxor_vi_nxv8i64_unmasked(<vscale x 8 x i64> %va, i32 zeroext %evl) {
2452 ; CHECK-LABEL: vxor_vi_nxv8i64_unmasked:
2454 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
2455 ; CHECK-NEXT: vxor.vi v8, v8, 7
2457 %elt.head = insertelement <vscale x 8 x i64> poison, i64 7, i32 0
2458 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
2459 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
2460 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
2461 %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)
2462 ret <vscale x 8 x i64> %v
2465 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) {
2466 ; CHECK-LABEL: vxor_vi_nxv8i64_1:
2468 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
2469 ; CHECK-NEXT: vnot.v v8, v8, v0.t
2471 %elt.head = insertelement <vscale x 8 x i64> poison, i64 -1, i32 0
2472 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
2473 %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)
2474 ret <vscale x 8 x i64> %v
2477 define <vscale x 8 x i64> @vxor_vi_nxv8i64_unmasked_1(<vscale x 8 x i64> %va, i32 zeroext %evl) {
2478 ; CHECK-LABEL: vxor_vi_nxv8i64_unmasked_1:
2480 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
2481 ; CHECK-NEXT: vnot.v v8, v8
2483 %elt.head = insertelement <vscale x 8 x i64> poison, i64 -1, i32 0
2484 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
2485 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
2486 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
2487 %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)
2488 ret <vscale x 8 x i64> %v