Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vxor-vp.ll
blob96b86ff6179d48769a58f0502b9764275296b0fe
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s \
3 ; RUN:   | FileCheck %s --check-prefixes=CHECK,RV32
4 ; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s \
5 ; RUN:   | FileCheck %s --check-prefixes=CHECK,RV64
7 declare <vscale x 8 x i7> @llvm.vp.xor.nxv8i7(<vscale x 8 x i7>, <vscale x 8 x i7>, <vscale x 8 x i1>, i32)
9 define <vscale x 8 x i7> @vxor_vx_nxv8i7(<vscale x 8 x i7> %a, i7 signext %b, <vscale x 8 x i1> %mask, i32 zeroext %evl) {
10 ; CHECK-LABEL: vxor_vx_nxv8i7:
11 ; CHECK:       # %bb.0:
12 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
13 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
14 ; CHECK-NEXT:    ret
15   %elt.head = insertelement <vscale x 8 x i7> poison, i7 %b, i32 0
16   %vb = shufflevector <vscale x 8 x i7> %elt.head, <vscale x 8 x i7> poison, <vscale x 8 x i32> zeroinitializer
17   %v = call <vscale x 8 x i7> @llvm.vp.xor.nxv8i7(<vscale x 8 x i7> %a, <vscale x 8 x i7> %vb, <vscale x 8 x i1> %mask, i32 %evl)
18   ret <vscale x 8 x i7> %v
21 declare <vscale x 1 x i8> @llvm.vp.xor.nxv1i8(<vscale x 1 x i8>, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
23 define <vscale x 1 x i8> @vxor_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
24 ; CHECK-LABEL: vxor_vv_nxv1i8:
25 ; CHECK:       # %bb.0:
26 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
27 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
28 ; CHECK-NEXT:    ret
29   %v = call <vscale x 1 x i8> @llvm.vp.xor.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32 %evl)
30   ret <vscale x 1 x i8> %v
33 define <vscale x 1 x i8> @vxor_vv_nxv1i8_unmasked(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, i32 zeroext %evl) {
34 ; CHECK-LABEL: vxor_vv_nxv1i8_unmasked:
35 ; CHECK:       # %bb.0:
36 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
37 ; CHECK-NEXT:    vxor.vv v8, v8, v9
38 ; CHECK-NEXT:    ret
39   %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:
47 ; CHECK:       # %bb.0:
48 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
49 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
50 ; CHECK-NEXT:    ret
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:
59 ; CHECK:       # %bb.0:
60 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
61 ; CHECK-NEXT:    vxor.vx v8, v8, a0
62 ; CHECK-NEXT:    ret
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:
73 ; CHECK:       # %bb.0:
74 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
75 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
76 ; CHECK-NEXT:    ret
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:
85 ; CHECK:       # %bb.0:
86 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
87 ; CHECK-NEXT:    vxor.vi v8, v8, 7
88 ; CHECK-NEXT:    ret
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:
99 ; CHECK:       # %bb.0:
100 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
101 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
102 ; CHECK-NEXT:    ret
103   %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:
111 ; CHECK:       # %bb.0:
112 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
113 ; CHECK-NEXT:    vnot.v v8, v8
114 ; CHECK-NEXT:    ret
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:
127 ; CHECK:       # %bb.0:
128 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
129 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
130 ; CHECK-NEXT:    ret
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:
137 ; CHECK:       # %bb.0:
138 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
139 ; CHECK-NEXT:    vxor.vv v8, v8, v9
140 ; CHECK-NEXT:    ret
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:
149 ; CHECK:       # %bb.0:
150 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
151 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
152 ; CHECK-NEXT:    ret
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:
161 ; CHECK:       # %bb.0:
162 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
163 ; CHECK-NEXT:    vxor.vx v8, v8, a0
164 ; CHECK-NEXT:    ret
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:
175 ; CHECK:       # %bb.0:
176 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
177 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
178 ; CHECK-NEXT:    ret
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:
187 ; CHECK:       # %bb.0:
188 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
189 ; CHECK-NEXT:    vxor.vi v8, v8, 7
190 ; CHECK-NEXT:    ret
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:
201 ; CHECK:       # %bb.0:
202 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
203 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
204 ; CHECK-NEXT:    ret
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:
213 ; CHECK:       # %bb.0:
214 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
215 ; CHECK-NEXT:    vnot.v v8, v8
216 ; CHECK-NEXT:    ret
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:
229 ; CHECK:       # %bb.0:
230 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
231 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
232 ; CHECK-NEXT:    ret
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:
239 ; CHECK:       # %bb.0:
240 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
241 ; CHECK-NEXT:    vxor.vv v8, v8, v9
242 ; CHECK-NEXT:    ret
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:
251 ; CHECK:       # %bb.0:
252 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
253 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
254 ; CHECK-NEXT:    ret
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:
263 ; CHECK:       # %bb.0:
264 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
265 ; CHECK-NEXT:    vxor.vx v8, v8, a0
266 ; CHECK-NEXT:    ret
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:
277 ; CHECK:       # %bb.0:
278 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
279 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
280 ; CHECK-NEXT:    ret
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:
289 ; CHECK:       # %bb.0:
290 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
291 ; CHECK-NEXT:    vxor.vi v8, v8, 7
292 ; CHECK-NEXT:    ret
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:
303 ; CHECK:       # %bb.0:
304 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
305 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
306 ; CHECK-NEXT:    ret
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:
315 ; CHECK:       # %bb.0:
316 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
317 ; CHECK-NEXT:    vnot.v v8, v8
318 ; CHECK-NEXT:    ret
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:
331 ; CHECK:       # %bb.0:
332 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
333 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
334 ; CHECK-NEXT:    ret
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:
341 ; CHECK:       # %bb.0:
342 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
343 ; CHECK-NEXT:    vxor.vv v8, v8, v9
344 ; CHECK-NEXT:    ret
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:
353 ; CHECK:       # %bb.0:
354 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
355 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
356 ; CHECK-NEXT:    ret
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:
365 ; CHECK:       # %bb.0:
366 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
367 ; CHECK-NEXT:    vxor.vx v8, v8, a0
368 ; CHECK-NEXT:    ret
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:
379 ; CHECK:       # %bb.0:
380 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
381 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
382 ; CHECK-NEXT:    ret
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:
391 ; CHECK:       # %bb.0:
392 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
393 ; CHECK-NEXT:    vxor.vi v8, v8, 7
394 ; CHECK-NEXT:    ret
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:
405 ; CHECK:       # %bb.0:
406 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
407 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
408 ; CHECK-NEXT:    ret
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:
417 ; CHECK:       # %bb.0:
418 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
419 ; CHECK-NEXT:    vnot.v v8, v8
420 ; CHECK-NEXT:    ret
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:
433 ; CHECK:       # %bb.0:
434 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
435 ; CHECK-NEXT:    vxor.vv v8, v8, v10, v0.t
436 ; CHECK-NEXT:    ret
437   %v = call <vscale x 15 x i8> @llvm.vp.xor.nxv15i8(<vscale x 15 x i8> %va, <vscale x 15 x i8> %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:
443 ; CHECK:       # %bb.0:
444 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
445 ; CHECK-NEXT:    vxor.vv v8, v8, v10
446 ; CHECK-NEXT:    ret
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:
455 ; CHECK:       # %bb.0:
456 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
457 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
458 ; CHECK-NEXT:    ret
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:
467 ; CHECK:       # %bb.0:
468 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
469 ; CHECK-NEXT:    vxor.vx v8, v8, a0
470 ; CHECK-NEXT:    ret
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:
481 ; CHECK:       # %bb.0:
482 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
483 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
484 ; CHECK-NEXT:    ret
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:
493 ; CHECK:       # %bb.0:
494 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
495 ; CHECK-NEXT:    vxor.vi v8, v8, 7
496 ; CHECK-NEXT:    ret
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:
507 ; CHECK:       # %bb.0:
508 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
509 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
510 ; CHECK-NEXT:    ret
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:
519 ; CHECK:       # %bb.0:
520 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
521 ; CHECK-NEXT:    vnot.v v8, v8
522 ; CHECK-NEXT:    ret
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:
535 ; CHECK:       # %bb.0:
536 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
537 ; CHECK-NEXT:    vxor.vv v8, v8, v10, v0.t
538 ; CHECK-NEXT:    ret
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:
545 ; CHECK:       # %bb.0:
546 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
547 ; CHECK-NEXT:    vxor.vv v8, v8, v10
548 ; CHECK-NEXT:    ret
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:
557 ; CHECK:       # %bb.0:
558 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
559 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
560 ; CHECK-NEXT:    ret
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:
569 ; CHECK:       # %bb.0:
570 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
571 ; CHECK-NEXT:    vxor.vx v8, v8, a0
572 ; CHECK-NEXT:    ret
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:
583 ; CHECK:       # %bb.0:
584 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
585 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
586 ; CHECK-NEXT:    ret
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:
595 ; CHECK:       # %bb.0:
596 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
597 ; CHECK-NEXT:    vxor.vi v8, v8, 7
598 ; CHECK-NEXT:    ret
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:
609 ; CHECK:       # %bb.0:
610 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
611 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
612 ; CHECK-NEXT:    ret
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:
621 ; CHECK:       # %bb.0:
622 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
623 ; CHECK-NEXT:    vnot.v v8, v8
624 ; CHECK-NEXT:    ret
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:
637 ; CHECK:       # %bb.0:
638 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
639 ; CHECK-NEXT:    vxor.vv v8, v8, v12, v0.t
640 ; CHECK-NEXT:    ret
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:
647 ; CHECK:       # %bb.0:
648 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
649 ; CHECK-NEXT:    vxor.vv v8, v8, v12
650 ; CHECK-NEXT:    ret
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:
659 ; CHECK:       # %bb.0:
660 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
661 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
662 ; CHECK-NEXT:    ret
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:
671 ; CHECK:       # %bb.0:
672 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
673 ; CHECK-NEXT:    vxor.vx v8, v8, a0
674 ; CHECK-NEXT:    ret
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:
685 ; CHECK:       # %bb.0:
686 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
687 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
688 ; CHECK-NEXT:    ret
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:
697 ; CHECK:       # %bb.0:
698 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
699 ; CHECK-NEXT:    vxor.vi v8, v8, 7
700 ; CHECK-NEXT:    ret
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:
711 ; CHECK:       # %bb.0:
712 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
713 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
714 ; CHECK-NEXT:    ret
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:
723 ; CHECK:       # %bb.0:
724 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
725 ; CHECK-NEXT:    vnot.v v8, v8
726 ; CHECK-NEXT:    ret
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:
739 ; CHECK:       # %bb.0:
740 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
741 ; CHECK-NEXT:    vxor.vv v8, v8, v16, v0.t
742 ; CHECK-NEXT:    ret
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:
749 ; CHECK:       # %bb.0:
750 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
751 ; CHECK-NEXT:    vxor.vv v8, v8, v16
752 ; CHECK-NEXT:    ret
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:
761 ; CHECK:       # %bb.0:
762 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
763 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
764 ; CHECK-NEXT:    ret
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:
773 ; CHECK:       # %bb.0:
774 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
775 ; CHECK-NEXT:    vxor.vx v8, v8, a0
776 ; CHECK-NEXT:    ret
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:
787 ; CHECK:       # %bb.0:
788 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
789 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
790 ; CHECK-NEXT:    ret
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:
799 ; CHECK:       # %bb.0:
800 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
801 ; CHECK-NEXT:    vxor.vi v8, v8, 7
802 ; CHECK-NEXT:    ret
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:
813 ; CHECK:       # %bb.0:
814 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
815 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
816 ; CHECK-NEXT:    ret
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:
825 ; CHECK:       # %bb.0:
826 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
827 ; CHECK-NEXT:    vnot.v v8, v8
828 ; CHECK-NEXT:    ret
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:
841 ; CHECK:       # %bb.0:
842 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
843 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
844 ; CHECK-NEXT:    ret
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:
851 ; CHECK:       # %bb.0:
852 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
853 ; CHECK-NEXT:    vxor.vv v8, v8, v9
854 ; CHECK-NEXT:    ret
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:
863 ; CHECK:       # %bb.0:
864 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
865 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
866 ; CHECK-NEXT:    ret
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:
875 ; CHECK:       # %bb.0:
876 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
877 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
878 ; CHECK-NEXT:    ret
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:
887 ; CHECK:       # %bb.0:
888 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
889 ; CHECK-NEXT:    vxor.vx v8, v8, a0
890 ; CHECK-NEXT:    ret
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:
901 ; CHECK:       # %bb.0:
902 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
903 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
904 ; CHECK-NEXT:    ret
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:
913 ; CHECK:       # %bb.0:
914 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
915 ; CHECK-NEXT:    vxor.vi v8, v8, 7
916 ; CHECK-NEXT:    ret
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:
927 ; CHECK:       # %bb.0:
928 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
929 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
930 ; CHECK-NEXT:    ret
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:
939 ; CHECK:       # %bb.0:
940 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
941 ; CHECK-NEXT:    vnot.v v8, v8
942 ; CHECK-NEXT:    ret
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:
955 ; CHECK:       # %bb.0:
956 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
957 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
958 ; CHECK-NEXT:    ret
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:
965 ; CHECK:       # %bb.0:
966 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
967 ; CHECK-NEXT:    vxor.vv v8, v8, v9
968 ; CHECK-NEXT:    ret
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:
977 ; CHECK:       # %bb.0:
978 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
979 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
980 ; CHECK-NEXT:    ret
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:
989 ; CHECK:       # %bb.0:
990 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
991 ; CHECK-NEXT:    vxor.vx v8, v8, a0
992 ; CHECK-NEXT:    ret
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:
1003 ; CHECK:       # %bb.0:
1004 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
1005 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1006 ; CHECK-NEXT:    ret
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:
1015 ; CHECK:       # %bb.0:
1016 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
1017 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1018 ; CHECK-NEXT:    ret
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:
1029 ; CHECK:       # %bb.0:
1030 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
1031 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1032 ; CHECK-NEXT:    ret
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:
1041 ; CHECK:       # %bb.0:
1042 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
1043 ; CHECK-NEXT:    vnot.v v8, v8
1044 ; CHECK-NEXT:    ret
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:
1057 ; CHECK:       # %bb.0:
1058 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
1059 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
1060 ; CHECK-NEXT:    ret
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:
1067 ; CHECK:       # %bb.0:
1068 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
1069 ; CHECK-NEXT:    vxor.vv v8, v8, v9
1070 ; CHECK-NEXT:    ret
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:
1079 ; CHECK:       # %bb.0:
1080 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1081 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
1082 ; CHECK-NEXT:    ret
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:
1091 ; CHECK:       # %bb.0:
1092 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1093 ; CHECK-NEXT:    vxor.vx v8, v8, a0
1094 ; CHECK-NEXT:    ret
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:
1105 ; CHECK:       # %bb.0:
1106 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
1107 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1108 ; CHECK-NEXT:    ret
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:
1117 ; CHECK:       # %bb.0:
1118 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
1119 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1120 ; CHECK-NEXT:    ret
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:
1131 ; CHECK:       # %bb.0:
1132 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
1133 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1134 ; CHECK-NEXT:    ret
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:
1143 ; CHECK:       # %bb.0:
1144 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
1145 ; CHECK-NEXT:    vnot.v v8, v8
1146 ; CHECK-NEXT:    ret
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:
1159 ; CHECK:       # %bb.0:
1160 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1161 ; CHECK-NEXT:    vxor.vv v8, v8, v10, v0.t
1162 ; CHECK-NEXT:    ret
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:
1169 ; CHECK:       # %bb.0:
1170 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1171 ; CHECK-NEXT:    vxor.vv v8, v8, v10
1172 ; CHECK-NEXT:    ret
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:
1181 ; CHECK:       # %bb.0:
1182 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
1183 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
1184 ; CHECK-NEXT:    ret
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:
1193 ; CHECK:       # %bb.0:
1194 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
1195 ; CHECK-NEXT:    vxor.vx v8, v8, a0
1196 ; CHECK-NEXT:    ret
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:
1207 ; CHECK:       # %bb.0:
1208 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1209 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1210 ; CHECK-NEXT:    ret
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:
1219 ; CHECK:       # %bb.0:
1220 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1221 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1222 ; CHECK-NEXT:    ret
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:
1233 ; CHECK:       # %bb.0:
1234 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1235 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1236 ; CHECK-NEXT:    ret
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:
1245 ; CHECK:       # %bb.0:
1246 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1247 ; CHECK-NEXT:    vnot.v v8, v8
1248 ; CHECK-NEXT:    ret
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:
1261 ; CHECK:       # %bb.0:
1262 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
1263 ; CHECK-NEXT:    vxor.vv v8, v8, v12, v0.t
1264 ; CHECK-NEXT:    ret
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:
1271 ; CHECK:       # %bb.0:
1272 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
1273 ; CHECK-NEXT:    vxor.vv v8, v8, v12
1274 ; CHECK-NEXT:    ret
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:
1283 ; CHECK:       # %bb.0:
1284 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
1285 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
1286 ; CHECK-NEXT:    ret
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:
1295 ; CHECK:       # %bb.0:
1296 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
1297 ; CHECK-NEXT:    vxor.vx v8, v8, a0
1298 ; CHECK-NEXT:    ret
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:
1309 ; CHECK:       # %bb.0:
1310 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
1311 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1312 ; CHECK-NEXT:    ret
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:
1321 ; CHECK:       # %bb.0:
1322 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
1323 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1324 ; CHECK-NEXT:    ret
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:
1335 ; CHECK:       # %bb.0:
1336 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
1337 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1338 ; CHECK-NEXT:    ret
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:
1347 ; CHECK:       # %bb.0:
1348 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
1349 ; CHECK-NEXT:    vnot.v v8, v8
1350 ; CHECK-NEXT:    ret
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:
1363 ; CHECK:       # %bb.0:
1364 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
1365 ; CHECK-NEXT:    vxor.vv v8, v8, v16, v0.t
1366 ; CHECK-NEXT:    ret
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:
1373 ; CHECK:       # %bb.0:
1374 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
1375 ; CHECK-NEXT:    vxor.vv v8, v8, v16
1376 ; CHECK-NEXT:    ret
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:
1385 ; CHECK:       # %bb.0:
1386 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
1387 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
1388 ; CHECK-NEXT:    ret
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:
1397 ; CHECK:       # %bb.0:
1398 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
1399 ; CHECK-NEXT:    vxor.vx v8, v8, a0
1400 ; CHECK-NEXT:    ret
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:
1411 ; CHECK:       # %bb.0:
1412 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
1413 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1414 ; CHECK-NEXT:    ret
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:
1423 ; CHECK:       # %bb.0:
1424 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
1425 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1426 ; CHECK-NEXT:    ret
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:
1437 ; CHECK:       # %bb.0:
1438 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
1439 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1440 ; CHECK-NEXT:    ret
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:
1449 ; CHECK:       # %bb.0:
1450 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
1451 ; CHECK-NEXT:    vnot.v v8, v8
1452 ; CHECK-NEXT:    ret
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:
1465 ; CHECK:       # %bb.0:
1466 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1467 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
1468 ; CHECK-NEXT:    ret
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:
1475 ; CHECK:       # %bb.0:
1476 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1477 ; CHECK-NEXT:    vxor.vv v8, v8, v9
1478 ; CHECK-NEXT:    ret
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:
1487 ; CHECK:       # %bb.0:
1488 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1489 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
1490 ; CHECK-NEXT:    ret
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:
1499 ; CHECK:       # %bb.0:
1500 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1501 ; CHECK-NEXT:    vxor.vx v8, v8, a0
1502 ; CHECK-NEXT:    ret
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:
1513 ; CHECK:       # %bb.0:
1514 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1515 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1516 ; CHECK-NEXT:    ret
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:
1525 ; CHECK:       # %bb.0:
1526 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1527 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1528 ; CHECK-NEXT:    ret
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:
1539 ; CHECK:       # %bb.0:
1540 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1541 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1542 ; CHECK-NEXT:    ret
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:
1551 ; CHECK:       # %bb.0:
1552 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1553 ; CHECK-NEXT:    vnot.v v8, v8
1554 ; CHECK-NEXT:    ret
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:
1567 ; CHECK:       # %bb.0:
1568 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1569 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
1570 ; CHECK-NEXT:    ret
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:
1577 ; CHECK:       # %bb.0:
1578 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1579 ; CHECK-NEXT:    vxor.vv v8, v8, v9
1580 ; CHECK-NEXT:    ret
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:
1589 ; CHECK:       # %bb.0:
1590 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1591 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
1592 ; CHECK-NEXT:    ret
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:
1601 ; CHECK:       # %bb.0:
1602 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1603 ; CHECK-NEXT:    vxor.vx v8, v8, a0
1604 ; CHECK-NEXT:    ret
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:
1615 ; CHECK:       # %bb.0:
1616 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1617 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1618 ; CHECK-NEXT:    ret
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:
1627 ; CHECK:       # %bb.0:
1628 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1629 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1630 ; CHECK-NEXT:    ret
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:
1641 ; CHECK:       # %bb.0:
1642 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1643 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1644 ; CHECK-NEXT:    ret
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:
1653 ; CHECK:       # %bb.0:
1654 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1655 ; CHECK-NEXT:    vnot.v v8, v8
1656 ; CHECK-NEXT:    ret
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:
1669 ; CHECK:       # %bb.0:
1670 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1671 ; CHECK-NEXT:    vxor.vv v8, v8, v10, v0.t
1672 ; CHECK-NEXT:    ret
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:
1679 ; CHECK:       # %bb.0:
1680 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1681 ; CHECK-NEXT:    vxor.vv v8, v8, v10
1682 ; CHECK-NEXT:    ret
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:
1691 ; CHECK:       # %bb.0:
1692 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1693 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
1694 ; CHECK-NEXT:    ret
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:
1703 ; CHECK:       # %bb.0:
1704 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1705 ; CHECK-NEXT:    vxor.vx v8, v8, a0
1706 ; CHECK-NEXT:    ret
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:
1717 ; CHECK:       # %bb.0:
1718 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1719 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1720 ; CHECK-NEXT:    ret
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:
1729 ; CHECK:       # %bb.0:
1730 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1731 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1732 ; CHECK-NEXT:    ret
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:
1743 ; CHECK:       # %bb.0:
1744 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1745 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1746 ; CHECK-NEXT:    ret
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:
1755 ; CHECK:       # %bb.0:
1756 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1757 ; CHECK-NEXT:    vnot.v v8, v8
1758 ; CHECK-NEXT:    ret
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:
1771 ; CHECK:       # %bb.0:
1772 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1773 ; CHECK-NEXT:    vxor.vv v8, v8, v12, v0.t
1774 ; CHECK-NEXT:    ret
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:
1781 ; CHECK:       # %bb.0:
1782 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1783 ; CHECK-NEXT:    vxor.vv v8, v8, v12
1784 ; CHECK-NEXT:    ret
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:
1793 ; CHECK:       # %bb.0:
1794 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1795 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
1796 ; CHECK-NEXT:    ret
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:
1805 ; CHECK:       # %bb.0:
1806 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1807 ; CHECK-NEXT:    vxor.vx v8, v8, a0
1808 ; CHECK-NEXT:    ret
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:
1819 ; CHECK:       # %bb.0:
1820 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1821 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1822 ; CHECK-NEXT:    ret
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:
1831 ; CHECK:       # %bb.0:
1832 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1833 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1834 ; CHECK-NEXT:    ret
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:
1845 ; CHECK:       # %bb.0:
1846 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1847 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1848 ; CHECK-NEXT:    ret
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:
1857 ; CHECK:       # %bb.0:
1858 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1859 ; CHECK-NEXT:    vnot.v v8, v8
1860 ; CHECK-NEXT:    ret
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:
1873 ; CHECK:       # %bb.0:
1874 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1875 ; CHECK-NEXT:    vxor.vv v8, v8, v16, v0.t
1876 ; CHECK-NEXT:    ret
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:
1883 ; CHECK:       # %bb.0:
1884 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1885 ; CHECK-NEXT:    vxor.vv v8, v8, v16
1886 ; CHECK-NEXT:    ret
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:
1895 ; CHECK:       # %bb.0:
1896 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
1897 ; CHECK-NEXT:    vxor.vx v8, v8, a0, v0.t
1898 ; CHECK-NEXT:    ret
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:
1907 ; CHECK:       # %bb.0:
1908 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
1909 ; CHECK-NEXT:    vxor.vx v8, v8, a0
1910 ; CHECK-NEXT:    ret
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:
1921 ; CHECK:       # %bb.0:
1922 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1923 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
1924 ; CHECK-NEXT:    ret
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:
1933 ; CHECK:       # %bb.0:
1934 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1935 ; CHECK-NEXT:    vxor.vi v8, v8, 7
1936 ; CHECK-NEXT:    ret
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:
1947 ; CHECK:       # %bb.0:
1948 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1949 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
1950 ; CHECK-NEXT:    ret
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:
1959 ; CHECK:       # %bb.0:
1960 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1961 ; CHECK-NEXT:    vnot.v v8, v8
1962 ; CHECK-NEXT:    ret
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:
1975 ; CHECK:       # %bb.0:
1976 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1977 ; CHECK-NEXT:    vxor.vv v8, v8, v9, v0.t
1978 ; CHECK-NEXT:    ret
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:
1985 ; CHECK:       # %bb.0:
1986 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1987 ; CHECK-NEXT:    vxor.vv v8, v8, v9
1988 ; CHECK-NEXT:    ret
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:
1997 ; RV32:       # %bb.0:
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
2008 ; RV32-NEXT:    ret
2010 ; RV64-LABEL: vxor_vx_nxv1i64:
2011 ; RV64:       # %bb.0:
2012 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
2013 ; RV64-NEXT:    vxor.vx v8, v8, a0, v0.t
2014 ; RV64-NEXT:    ret
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:
2023 ; RV32:       # %bb.0:
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
2034 ; RV32-NEXT:    ret
2036 ; RV64-LABEL: vxor_vx_nxv1i64_unmasked:
2037 ; RV64:       # %bb.0:
2038 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
2039 ; RV64-NEXT:    vxor.vx v8, v8, a0
2040 ; RV64-NEXT:    ret
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:
2051 ; CHECK:       # %bb.0:
2052 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2053 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
2054 ; CHECK-NEXT:    ret
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:
2063 ; CHECK:       # %bb.0:
2064 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2065 ; CHECK-NEXT:    vxor.vi v8, v8, 7
2066 ; CHECK-NEXT:    ret
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:
2077 ; CHECK:       # %bb.0:
2078 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2079 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
2080 ; CHECK-NEXT:    ret
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:
2089 ; CHECK:       # %bb.0:
2090 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2091 ; CHECK-NEXT:    vnot.v v8, v8
2092 ; CHECK-NEXT:    ret
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:
2105 ; CHECK:       # %bb.0:
2106 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
2107 ; CHECK-NEXT:    vxor.vv v8, v8, v10, v0.t
2108 ; CHECK-NEXT:    ret
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:
2115 ; CHECK:       # %bb.0:
2116 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
2117 ; CHECK-NEXT:    vxor.vv v8, v8, v10
2118 ; CHECK-NEXT:    ret
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:
2127 ; RV32:       # %bb.0:
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
2138 ; RV32-NEXT:    ret
2140 ; RV64-LABEL: vxor_vx_nxv2i64:
2141 ; RV64:       # %bb.0:
2142 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
2143 ; RV64-NEXT:    vxor.vx v8, v8, a0, v0.t
2144 ; RV64-NEXT:    ret
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:
2153 ; RV32:       # %bb.0:
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
2164 ; RV32-NEXT:    ret
2166 ; RV64-LABEL: vxor_vx_nxv2i64_unmasked:
2167 ; RV64:       # %bb.0:
2168 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
2169 ; RV64-NEXT:    vxor.vx v8, v8, a0
2170 ; RV64-NEXT:    ret
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:
2181 ; CHECK:       # %bb.0:
2182 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
2183 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
2184 ; CHECK-NEXT:    ret
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:
2193 ; CHECK:       # %bb.0:
2194 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
2195 ; CHECK-NEXT:    vxor.vi v8, v8, 7
2196 ; CHECK-NEXT:    ret
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:
2207 ; CHECK:       # %bb.0:
2208 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
2209 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
2210 ; CHECK-NEXT:    ret
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:
2219 ; CHECK:       # %bb.0:
2220 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
2221 ; CHECK-NEXT:    vnot.v v8, v8
2222 ; CHECK-NEXT:    ret
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:
2235 ; CHECK:       # %bb.0:
2236 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
2237 ; CHECK-NEXT:    vxor.vv v8, v8, v12, v0.t
2238 ; CHECK-NEXT:    ret
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:
2245 ; CHECK:       # %bb.0:
2246 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
2247 ; CHECK-NEXT:    vxor.vv v8, v8, v12
2248 ; CHECK-NEXT:    ret
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:
2257 ; RV32:       # %bb.0:
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
2268 ; RV32-NEXT:    ret
2270 ; RV64-LABEL: vxor_vx_nxv4i64:
2271 ; RV64:       # %bb.0:
2272 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
2273 ; RV64-NEXT:    vxor.vx v8, v8, a0, v0.t
2274 ; RV64-NEXT:    ret
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:
2283 ; RV32:       # %bb.0:
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
2294 ; RV32-NEXT:    ret
2296 ; RV64-LABEL: vxor_vx_nxv4i64_unmasked:
2297 ; RV64:       # %bb.0:
2298 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
2299 ; RV64-NEXT:    vxor.vx v8, v8, a0
2300 ; RV64-NEXT:    ret
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:
2311 ; CHECK:       # %bb.0:
2312 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
2313 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
2314 ; CHECK-NEXT:    ret
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:
2323 ; CHECK:       # %bb.0:
2324 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
2325 ; CHECK-NEXT:    vxor.vi v8, v8, 7
2326 ; CHECK-NEXT:    ret
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:
2337 ; CHECK:       # %bb.0:
2338 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
2339 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
2340 ; CHECK-NEXT:    ret
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:
2349 ; CHECK:       # %bb.0:
2350 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
2351 ; CHECK-NEXT:    vnot.v v8, v8
2352 ; CHECK-NEXT:    ret
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:
2365 ; CHECK:       # %bb.0:
2366 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
2367 ; CHECK-NEXT:    vxor.vv v8, v8, v16, v0.t
2368 ; CHECK-NEXT:    ret
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:
2375 ; CHECK:       # %bb.0:
2376 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
2377 ; CHECK-NEXT:    vxor.vv v8, v8, v16
2378 ; CHECK-NEXT:    ret
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:
2387 ; RV32:       # %bb.0:
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
2398 ; RV32-NEXT:    ret
2400 ; RV64-LABEL: vxor_vx_nxv8i64:
2401 ; RV64:       # %bb.0:
2402 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
2403 ; RV64-NEXT:    vxor.vx v8, v8, a0, v0.t
2404 ; RV64-NEXT:    ret
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:
2413 ; RV32:       # %bb.0:
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
2424 ; RV32-NEXT:    ret
2426 ; RV64-LABEL: vxor_vx_nxv8i64_unmasked:
2427 ; RV64:       # %bb.0:
2428 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
2429 ; RV64-NEXT:    vxor.vx v8, v8, a0
2430 ; RV64-NEXT:    ret
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:
2441 ; CHECK:       # %bb.0:
2442 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
2443 ; CHECK-NEXT:    vxor.vi v8, v8, 7, v0.t
2444 ; CHECK-NEXT:    ret
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:
2453 ; CHECK:       # %bb.0:
2454 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
2455 ; CHECK-NEXT:    vxor.vi v8, v8, 7
2456 ; CHECK-NEXT:    ret
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:
2467 ; CHECK:       # %bb.0:
2468 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
2469 ; CHECK-NEXT:    vnot.v v8, v8, v0.t
2470 ; CHECK-NEXT:    ret
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:
2479 ; CHECK:       # %bb.0:
2480 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
2481 ; CHECK-NEXT:    vnot.v v8, v8
2482 ; CHECK-NEXT:    ret
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