Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vor-sdnode.ll
blobfbbd71cb35445f00ee515bde13a7d50062ceabd1
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV32
3 ; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV64
5 define <vscale x 1 x i8> @vor_vx_nxv1i8(<vscale x 1 x i8> %va, i8 signext %b) {
6 ; CHECK-LABEL: vor_vx_nxv1i8:
7 ; CHECK:       # %bb.0:
8 ; CHECK-NEXT:    vsetvli a1, zero, e8, mf8, ta, ma
9 ; CHECK-NEXT:    vor.vx v8, v8, a0
10 ; CHECK-NEXT:    ret
11   %head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
12   %splat = shufflevector <vscale x 1 x i8> %head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
13   %vc = or <vscale x 1 x i8> %va, %splat
14   ret <vscale x 1 x i8> %vc
17 define <vscale x 1 x i8> @vor_vx_nxv1i8_0(<vscale x 1 x i8> %va) {
18 ; CHECK-LABEL: vor_vx_nxv1i8_0:
19 ; CHECK:       # %bb.0:
20 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma
21 ; CHECK-NEXT:    vor.vi v8, v8, -12
22 ; CHECK-NEXT:    ret
23   %vc = or <vscale x 1 x i8> %va, splat (i8 -12)
24   ret <vscale x 1 x i8> %vc
27 define <vscale x 1 x i8> @vor_vx_nxv1i8_1(<vscale x 1 x i8> %va) {
28 ; CHECK-LABEL: vor_vx_nxv1i8_1:
29 ; CHECK:       # %bb.0:
30 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma
31 ; CHECK-NEXT:    vor.vi v8, v8, 15
32 ; CHECK-NEXT:    ret
33   %vc = or <vscale x 1 x i8> %va, splat (i8 15)
34   ret <vscale x 1 x i8> %vc
37 define <vscale x 1 x i8> @vor_vx_nxv1i8_2(<vscale x 1 x i8> %va) {
38 ; CHECK-LABEL: vor_vx_nxv1i8_2:
39 ; CHECK:       # %bb.0:
40 ; CHECK-NEXT:    li a0, 16
41 ; CHECK-NEXT:    vsetvli a1, zero, e8, mf8, ta, ma
42 ; CHECK-NEXT:    vor.vx v8, v8, a0
43 ; CHECK-NEXT:    ret
44   %vc = or <vscale x 1 x i8> %va, splat (i8 16)
45   ret <vscale x 1 x i8> %vc
48 define <vscale x 2 x i8> @vor_vx_nxv2i8(<vscale x 2 x i8> %va, i8 signext %b) {
49 ; CHECK-LABEL: vor_vx_nxv2i8:
50 ; CHECK:       # %bb.0:
51 ; CHECK-NEXT:    vsetvli a1, zero, e8, mf4, ta, ma
52 ; CHECK-NEXT:    vor.vx v8, v8, a0
53 ; CHECK-NEXT:    ret
54   %head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0
55   %splat = shufflevector <vscale x 2 x i8> %head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
56   %vc = or <vscale x 2 x i8> %va, %splat
57   ret <vscale x 2 x i8> %vc
60 define <vscale x 2 x i8> @vor_vx_nxv2i8_0(<vscale x 2 x i8> %va) {
61 ; CHECK-LABEL: vor_vx_nxv2i8_0:
62 ; CHECK:       # %bb.0:
63 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma
64 ; CHECK-NEXT:    vor.vi v8, v8, -12
65 ; CHECK-NEXT:    ret
66   %vc = or <vscale x 2 x i8> %va, splat (i8 -12)
67   ret <vscale x 2 x i8> %vc
70 define <vscale x 2 x i8> @vor_vx_nxv2i8_1(<vscale x 2 x i8> %va) {
71 ; CHECK-LABEL: vor_vx_nxv2i8_1:
72 ; CHECK:       # %bb.0:
73 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma
74 ; CHECK-NEXT:    vor.vi v8, v8, 15
75 ; CHECK-NEXT:    ret
76   %vc = or <vscale x 2 x i8> %va, splat (i8 15)
77   ret <vscale x 2 x i8> %vc
80 define <vscale x 2 x i8> @vor_vx_nxv2i8_2(<vscale x 2 x i8> %va) {
81 ; CHECK-LABEL: vor_vx_nxv2i8_2:
82 ; CHECK:       # %bb.0:
83 ; CHECK-NEXT:    li a0, 16
84 ; CHECK-NEXT:    vsetvli a1, zero, e8, mf4, ta, ma
85 ; CHECK-NEXT:    vor.vx v8, v8, a0
86 ; CHECK-NEXT:    ret
87   %vc = or <vscale x 2 x i8> %va, splat (i8 16)
88   ret <vscale x 2 x i8> %vc
91 define <vscale x 4 x i8> @vor_vx_nxv4i8(<vscale x 4 x i8> %va, i8 signext %b) {
92 ; CHECK-LABEL: vor_vx_nxv4i8:
93 ; CHECK:       # %bb.0:
94 ; CHECK-NEXT:    vsetvli a1, zero, e8, mf2, ta, ma
95 ; CHECK-NEXT:    vor.vx v8, v8, a0
96 ; CHECK-NEXT:    ret
97   %head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0
98   %splat = shufflevector <vscale x 4 x i8> %head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
99   %vc = or <vscale x 4 x i8> %va, %splat
100   ret <vscale x 4 x i8> %vc
103 define <vscale x 4 x i8> @vor_vx_nxv4i8_0(<vscale x 4 x i8> %va) {
104 ; CHECK-LABEL: vor_vx_nxv4i8_0:
105 ; CHECK:       # %bb.0:
106 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma
107 ; CHECK-NEXT:    vor.vi v8, v8, -12
108 ; CHECK-NEXT:    ret
109   %vc = or <vscale x 4 x i8> %va, splat (i8 -12)
110   ret <vscale x 4 x i8> %vc
113 define <vscale x 4 x i8> @vor_vx_nxv4i8_1(<vscale x 4 x i8> %va) {
114 ; CHECK-LABEL: vor_vx_nxv4i8_1:
115 ; CHECK:       # %bb.0:
116 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma
117 ; CHECK-NEXT:    vor.vi v8, v8, 15
118 ; CHECK-NEXT:    ret
119   %vc = or <vscale x 4 x i8> %va, splat (i8 15)
120   ret <vscale x 4 x i8> %vc
123 define <vscale x 4 x i8> @vor_vx_nxv4i8_2(<vscale x 4 x i8> %va) {
124 ; CHECK-LABEL: vor_vx_nxv4i8_2:
125 ; CHECK:       # %bb.0:
126 ; CHECK-NEXT:    li a0, 16
127 ; CHECK-NEXT:    vsetvli a1, zero, e8, mf2, ta, ma
128 ; CHECK-NEXT:    vor.vx v8, v8, a0
129 ; CHECK-NEXT:    ret
130   %vc = or <vscale x 4 x i8> %va, splat (i8 16)
131   ret <vscale x 4 x i8> %vc
134 define <vscale x 8 x i8> @vor_vx_nxv8i8(<vscale x 8 x i8> %va, i8 signext %b) {
135 ; CHECK-LABEL: vor_vx_nxv8i8:
136 ; CHECK:       # %bb.0:
137 ; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma
138 ; CHECK-NEXT:    vor.vx v8, v8, a0
139 ; CHECK-NEXT:    ret
140   %head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
141   %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
142   %vc = or <vscale x 8 x i8> %va, %splat
143   ret <vscale x 8 x i8> %vc
146 define <vscale x 8 x i8> @vor_vx_nxv8i8_0(<vscale x 8 x i8> %va) {
147 ; CHECK-LABEL: vor_vx_nxv8i8_0:
148 ; CHECK:       # %bb.0:
149 ; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma
150 ; CHECK-NEXT:    vor.vi v8, v8, -12
151 ; CHECK-NEXT:    ret
152   %vc = or <vscale x 8 x i8> %va, splat (i8 -12)
153   ret <vscale x 8 x i8> %vc
156 define <vscale x 8 x i8> @vor_vx_nxv8i8_1(<vscale x 8 x i8> %va) {
157 ; CHECK-LABEL: vor_vx_nxv8i8_1:
158 ; CHECK:       # %bb.0:
159 ; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma
160 ; CHECK-NEXT:    vor.vi v8, v8, 15
161 ; CHECK-NEXT:    ret
162   %vc = or <vscale x 8 x i8> %va, splat (i8 15)
163   ret <vscale x 8 x i8> %vc
166 define <vscale x 8 x i8> @vor_vx_nxv8i8_2(<vscale x 8 x i8> %va) {
167 ; CHECK-LABEL: vor_vx_nxv8i8_2:
168 ; CHECK:       # %bb.0:
169 ; CHECK-NEXT:    li a0, 16
170 ; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma
171 ; CHECK-NEXT:    vor.vx v8, v8, a0
172 ; CHECK-NEXT:    ret
173   %vc = or <vscale x 8 x i8> %va, splat (i8 16)
174   ret <vscale x 8 x i8> %vc
177 define <vscale x 16 x i8> @vor_vx_nxv16i8(<vscale x 16 x i8> %va, i8 signext %b) {
178 ; CHECK-LABEL: vor_vx_nxv16i8:
179 ; CHECK:       # %bb.0:
180 ; CHECK-NEXT:    vsetvli a1, zero, e8, m2, ta, ma
181 ; CHECK-NEXT:    vor.vx v8, v8, a0
182 ; CHECK-NEXT:    ret
183   %head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0
184   %splat = shufflevector <vscale x 16 x i8> %head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
185   %vc = or <vscale x 16 x i8> %va, %splat
186   ret <vscale x 16 x i8> %vc
189 define <vscale x 16 x i8> @vor_vx_nxv16i8_0(<vscale x 16 x i8> %va) {
190 ; CHECK-LABEL: vor_vx_nxv16i8_0:
191 ; CHECK:       # %bb.0:
192 ; CHECK-NEXT:    vsetvli a0, zero, e8, m2, ta, ma
193 ; CHECK-NEXT:    vor.vi v8, v8, -12
194 ; CHECK-NEXT:    ret
195   %vc = or <vscale x 16 x i8> %va, splat (i8 -12)
196   ret <vscale x 16 x i8> %vc
199 define <vscale x 16 x i8> @vor_vx_nxv16i8_1(<vscale x 16 x i8> %va) {
200 ; CHECK-LABEL: vor_vx_nxv16i8_1:
201 ; CHECK:       # %bb.0:
202 ; CHECK-NEXT:    vsetvli a0, zero, e8, m2, ta, ma
203 ; CHECK-NEXT:    vor.vi v8, v8, 15
204 ; CHECK-NEXT:    ret
205   %vc = or <vscale x 16 x i8> %va, splat (i8 15)
206   ret <vscale x 16 x i8> %vc
209 define <vscale x 16 x i8> @vor_vx_nxv16i8_2(<vscale x 16 x i8> %va) {
210 ; CHECK-LABEL: vor_vx_nxv16i8_2:
211 ; CHECK:       # %bb.0:
212 ; CHECK-NEXT:    li a0, 16
213 ; CHECK-NEXT:    vsetvli a1, zero, e8, m2, ta, ma
214 ; CHECK-NEXT:    vor.vx v8, v8, a0
215 ; CHECK-NEXT:    ret
216   %vc = or <vscale x 16 x i8> %va, splat (i8 16)
217   ret <vscale x 16 x i8> %vc
220 define <vscale x 32 x i8> @vor_vx_nxv32i8(<vscale x 32 x i8> %va, i8 signext %b) {
221 ; CHECK-LABEL: vor_vx_nxv32i8:
222 ; CHECK:       # %bb.0:
223 ; CHECK-NEXT:    vsetvli a1, zero, e8, m4, ta, ma
224 ; CHECK-NEXT:    vor.vx v8, v8, a0
225 ; CHECK-NEXT:    ret
226   %head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0
227   %splat = shufflevector <vscale x 32 x i8> %head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
228   %vc = or <vscale x 32 x i8> %va, %splat
229   ret <vscale x 32 x i8> %vc
232 define <vscale x 32 x i8> @vor_vx_nxv32i8_0(<vscale x 32 x i8> %va) {
233 ; CHECK-LABEL: vor_vx_nxv32i8_0:
234 ; CHECK:       # %bb.0:
235 ; CHECK-NEXT:    vsetvli a0, zero, e8, m4, ta, ma
236 ; CHECK-NEXT:    vor.vi v8, v8, -12
237 ; CHECK-NEXT:    ret
238   %vc = or <vscale x 32 x i8> %va, splat (i8 -12)
239   ret <vscale x 32 x i8> %vc
242 define <vscale x 32 x i8> @vor_vx_nxv32i8_1(<vscale x 32 x i8> %va) {
243 ; CHECK-LABEL: vor_vx_nxv32i8_1:
244 ; CHECK:       # %bb.0:
245 ; CHECK-NEXT:    vsetvli a0, zero, e8, m4, ta, ma
246 ; CHECK-NEXT:    vor.vi v8, v8, 15
247 ; CHECK-NEXT:    ret
248   %vc = or <vscale x 32 x i8> %va, splat (i8 15)
249   ret <vscale x 32 x i8> %vc
252 define <vscale x 32 x i8> @vor_vx_nxv32i8_2(<vscale x 32 x i8> %va) {
253 ; CHECK-LABEL: vor_vx_nxv32i8_2:
254 ; CHECK:       # %bb.0:
255 ; CHECK-NEXT:    li a0, 16
256 ; CHECK-NEXT:    vsetvli a1, zero, e8, m4, ta, ma
257 ; CHECK-NEXT:    vor.vx v8, v8, a0
258 ; CHECK-NEXT:    ret
259   %vc = or <vscale x 32 x i8> %va, splat (i8 16)
260   ret <vscale x 32 x i8> %vc
263 define <vscale x 64 x i8> @vor_vx_nxv64i8(<vscale x 64 x i8> %va, i8 signext %b) {
264 ; CHECK-LABEL: vor_vx_nxv64i8:
265 ; CHECK:       # %bb.0:
266 ; CHECK-NEXT:    vsetvli a1, zero, e8, m8, ta, ma
267 ; CHECK-NEXT:    vor.vx v8, v8, a0
268 ; CHECK-NEXT:    ret
269   %head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0
270   %splat = shufflevector <vscale x 64 x i8> %head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
271   %vc = or <vscale x 64 x i8> %va, %splat
272   ret <vscale x 64 x i8> %vc
275 define <vscale x 64 x i8> @vor_vx_nxv64i8_0(<vscale x 64 x i8> %va) {
276 ; CHECK-LABEL: vor_vx_nxv64i8_0:
277 ; CHECK:       # %bb.0:
278 ; CHECK-NEXT:    vsetvli a0, zero, e8, m8, ta, ma
279 ; CHECK-NEXT:    vor.vi v8, v8, -12
280 ; CHECK-NEXT:    ret
281   %vc = or <vscale x 64 x i8> %va, splat (i8 -12)
282   ret <vscale x 64 x i8> %vc
285 define <vscale x 64 x i8> @vor_vx_nxv64i8_1(<vscale x 64 x i8> %va) {
286 ; CHECK-LABEL: vor_vx_nxv64i8_1:
287 ; CHECK:       # %bb.0:
288 ; CHECK-NEXT:    vsetvli a0, zero, e8, m8, ta, ma
289 ; CHECK-NEXT:    vor.vi v8, v8, 15
290 ; CHECK-NEXT:    ret
291   %vc = or <vscale x 64 x i8> %va, splat (i8 15)
292   ret <vscale x 64 x i8> %vc
295 define <vscale x 64 x i8> @vor_vx_nxv64i8_2(<vscale x 64 x i8> %va) {
296 ; CHECK-LABEL: vor_vx_nxv64i8_2:
297 ; CHECK:       # %bb.0:
298 ; CHECK-NEXT:    li a0, 16
299 ; CHECK-NEXT:    vsetvli a1, zero, e8, m8, ta, ma
300 ; CHECK-NEXT:    vor.vx v8, v8, a0
301 ; CHECK-NEXT:    ret
302   %vc = or <vscale x 64 x i8> %va, splat (i8 16)
303   ret <vscale x 64 x i8> %vc
306 define <vscale x 1 x i16> @vor_vx_nxv1i16(<vscale x 1 x i16> %va, i16 signext %b) {
307 ; CHECK-LABEL: vor_vx_nxv1i16:
308 ; CHECK:       # %bb.0:
309 ; CHECK-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
310 ; CHECK-NEXT:    vor.vx v8, v8, a0
311 ; CHECK-NEXT:    ret
312   %head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
313   %splat = shufflevector <vscale x 1 x i16> %head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
314   %vc = or <vscale x 1 x i16> %va, %splat
315   ret <vscale x 1 x i16> %vc
318 define <vscale x 1 x i16> @vor_vx_nxv1i16_0(<vscale x 1 x i16> %va) {
319 ; CHECK-LABEL: vor_vx_nxv1i16_0:
320 ; CHECK:       # %bb.0:
321 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma
322 ; CHECK-NEXT:    vor.vi v8, v8, -12
323 ; CHECK-NEXT:    ret
324   %vc = or <vscale x 1 x i16> %va, splat (i16 -12)
325   ret <vscale x 1 x i16> %vc
328 define <vscale x 1 x i16> @vor_vx_nxv1i16_1(<vscale x 1 x i16> %va) {
329 ; CHECK-LABEL: vor_vx_nxv1i16_1:
330 ; CHECK:       # %bb.0:
331 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma
332 ; CHECK-NEXT:    vor.vi v8, v8, 15
333 ; CHECK-NEXT:    ret
334   %vc = or <vscale x 1 x i16> %va, splat (i16 15)
335   ret <vscale x 1 x i16> %vc
338 define <vscale x 1 x i16> @vor_vx_nxv1i16_2(<vscale x 1 x i16> %va) {
339 ; CHECK-LABEL: vor_vx_nxv1i16_2:
340 ; CHECK:       # %bb.0:
341 ; CHECK-NEXT:    li a0, 16
342 ; CHECK-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
343 ; CHECK-NEXT:    vor.vx v8, v8, a0
344 ; CHECK-NEXT:    ret
345   %vc = or <vscale x 1 x i16> %va, splat (i16 16)
346   ret <vscale x 1 x i16> %vc
349 define <vscale x 2 x i16> @vor_vx_nxv2i16(<vscale x 2 x i16> %va, i16 signext %b) {
350 ; CHECK-LABEL: vor_vx_nxv2i16:
351 ; CHECK:       # %bb.0:
352 ; CHECK-NEXT:    vsetvli a1, zero, e16, mf2, ta, ma
353 ; CHECK-NEXT:    vor.vx v8, v8, a0
354 ; CHECK-NEXT:    ret
355   %head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0
356   %splat = shufflevector <vscale x 2 x i16> %head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
357   %vc = or <vscale x 2 x i16> %va, %splat
358   ret <vscale x 2 x i16> %vc
361 define <vscale x 2 x i16> @vor_vx_nxv2i16_0(<vscale x 2 x i16> %va) {
362 ; CHECK-LABEL: vor_vx_nxv2i16_0:
363 ; CHECK:       # %bb.0:
364 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma
365 ; CHECK-NEXT:    vor.vi v8, v8, -12
366 ; CHECK-NEXT:    ret
367   %vc = or <vscale x 2 x i16> %va, splat (i16 -12)
368   ret <vscale x 2 x i16> %vc
371 define <vscale x 2 x i16> @vor_vx_nxv2i16_1(<vscale x 2 x i16> %va) {
372 ; CHECK-LABEL: vor_vx_nxv2i16_1:
373 ; CHECK:       # %bb.0:
374 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma
375 ; CHECK-NEXT:    vor.vi v8, v8, 15
376 ; CHECK-NEXT:    ret
377   %vc = or <vscale x 2 x i16> %va, splat (i16 15)
378   ret <vscale x 2 x i16> %vc
381 define <vscale x 2 x i16> @vor_vx_nxv2i16_2(<vscale x 2 x i16> %va) {
382 ; CHECK-LABEL: vor_vx_nxv2i16_2:
383 ; CHECK:       # %bb.0:
384 ; CHECK-NEXT:    li a0, 16
385 ; CHECK-NEXT:    vsetvli a1, zero, e16, mf2, ta, ma
386 ; CHECK-NEXT:    vor.vx v8, v8, a0
387 ; CHECK-NEXT:    ret
388   %vc = or <vscale x 2 x i16> %va, splat (i16 16)
389   ret <vscale x 2 x i16> %vc
392 define <vscale x 4 x i16> @vor_vx_nxv4i16(<vscale x 4 x i16> %va, i16 signext %b) {
393 ; CHECK-LABEL: vor_vx_nxv4i16:
394 ; CHECK:       # %bb.0:
395 ; CHECK-NEXT:    vsetvli a1, zero, e16, m1, ta, ma
396 ; CHECK-NEXT:    vor.vx v8, v8, a0
397 ; CHECK-NEXT:    ret
398   %head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0
399   %splat = shufflevector <vscale x 4 x i16> %head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
400   %vc = or <vscale x 4 x i16> %va, %splat
401   ret <vscale x 4 x i16> %vc
404 define <vscale x 4 x i16> @vor_vx_nxv4i16_0(<vscale x 4 x i16> %va) {
405 ; CHECK-LABEL: vor_vx_nxv4i16_0:
406 ; CHECK:       # %bb.0:
407 ; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma
408 ; CHECK-NEXT:    vor.vi v8, v8, -12
409 ; CHECK-NEXT:    ret
410   %vc = or <vscale x 4 x i16> %va, splat (i16 -12)
411   ret <vscale x 4 x i16> %vc
414 define <vscale x 4 x i16> @vor_vx_nxv4i16_1(<vscale x 4 x i16> %va) {
415 ; CHECK-LABEL: vor_vx_nxv4i16_1:
416 ; CHECK:       # %bb.0:
417 ; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma
418 ; CHECK-NEXT:    vor.vi v8, v8, 15
419 ; CHECK-NEXT:    ret
420   %vc = or <vscale x 4 x i16> %va, splat (i16 15)
421   ret <vscale x 4 x i16> %vc
424 define <vscale x 4 x i16> @vor_vx_nxv4i16_2(<vscale x 4 x i16> %va) {
425 ; CHECK-LABEL: vor_vx_nxv4i16_2:
426 ; CHECK:       # %bb.0:
427 ; CHECK-NEXT:    li a0, 16
428 ; CHECK-NEXT:    vsetvli a1, zero, e16, m1, ta, ma
429 ; CHECK-NEXT:    vor.vx v8, v8, a0
430 ; CHECK-NEXT:    ret
431   %vc = or <vscale x 4 x i16> %va, splat (i16 16)
432   ret <vscale x 4 x i16> %vc
435 define <vscale x 8 x i16> @vor_vx_nxv8i16(<vscale x 8 x i16> %va, i16 signext %b) {
436 ; CHECK-LABEL: vor_vx_nxv8i16:
437 ; CHECK:       # %bb.0:
438 ; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
439 ; CHECK-NEXT:    vor.vx v8, v8, a0
440 ; CHECK-NEXT:    ret
441   %head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0
442   %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
443   %vc = or <vscale x 8 x i16> %va, %splat
444   ret <vscale x 8 x i16> %vc
447 define <vscale x 8 x i16> @vor_vx_nxv8i16_0(<vscale x 8 x i16> %va) {
448 ; CHECK-LABEL: vor_vx_nxv8i16_0:
449 ; CHECK:       # %bb.0:
450 ; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma
451 ; CHECK-NEXT:    vor.vi v8, v8, -12
452 ; CHECK-NEXT:    ret
453   %vc = or <vscale x 8 x i16> %va, splat (i16 -12)
454   ret <vscale x 8 x i16> %vc
457 define <vscale x 8 x i16> @vor_vx_nxv8i16_1(<vscale x 8 x i16> %va) {
458 ; CHECK-LABEL: vor_vx_nxv8i16_1:
459 ; CHECK:       # %bb.0:
460 ; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma
461 ; CHECK-NEXT:    vor.vi v8, v8, 15
462 ; CHECK-NEXT:    ret
463   %vc = or <vscale x 8 x i16> %va, splat (i16 15)
464   ret <vscale x 8 x i16> %vc
467 define <vscale x 8 x i16> @vor_vx_nxv8i16_2(<vscale x 8 x i16> %va) {
468 ; CHECK-LABEL: vor_vx_nxv8i16_2:
469 ; CHECK:       # %bb.0:
470 ; CHECK-NEXT:    li a0, 16
471 ; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
472 ; CHECK-NEXT:    vor.vx v8, v8, a0
473 ; CHECK-NEXT:    ret
474   %vc = or <vscale x 8 x i16> %va, splat (i16 16)
475   ret <vscale x 8 x i16> %vc
478 define <vscale x 16 x i16> @vor_vx_nxv16i16(<vscale x 16 x i16> %va, i16 signext %b) {
479 ; CHECK-LABEL: vor_vx_nxv16i16:
480 ; CHECK:       # %bb.0:
481 ; CHECK-NEXT:    vsetvli a1, zero, e16, m4, ta, ma
482 ; CHECK-NEXT:    vor.vx v8, v8, a0
483 ; CHECK-NEXT:    ret
484   %head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0
485   %splat = shufflevector <vscale x 16 x i16> %head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
486   %vc = or <vscale x 16 x i16> %va, %splat
487   ret <vscale x 16 x i16> %vc
490 define <vscale x 16 x i16> @vor_vx_nxv16i16_0(<vscale x 16 x i16> %va) {
491 ; CHECK-LABEL: vor_vx_nxv16i16_0:
492 ; CHECK:       # %bb.0:
493 ; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma
494 ; CHECK-NEXT:    vor.vi v8, v8, -12
495 ; CHECK-NEXT:    ret
496   %vc = or <vscale x 16 x i16> %va, splat (i16 -12)
497   ret <vscale x 16 x i16> %vc
500 define <vscale x 16 x i16> @vor_vx_nxv16i16_1(<vscale x 16 x i16> %va) {
501 ; CHECK-LABEL: vor_vx_nxv16i16_1:
502 ; CHECK:       # %bb.0:
503 ; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma
504 ; CHECK-NEXT:    vor.vi v8, v8, 15
505 ; CHECK-NEXT:    ret
506   %vc = or <vscale x 16 x i16> %va, splat (i16 15)
507   ret <vscale x 16 x i16> %vc
510 define <vscale x 16 x i16> @vor_vx_nxv16i16_2(<vscale x 16 x i16> %va) {
511 ; CHECK-LABEL: vor_vx_nxv16i16_2:
512 ; CHECK:       # %bb.0:
513 ; CHECK-NEXT:    li a0, 16
514 ; CHECK-NEXT:    vsetvli a1, zero, e16, m4, ta, ma
515 ; CHECK-NEXT:    vor.vx v8, v8, a0
516 ; CHECK-NEXT:    ret
517   %vc = or <vscale x 16 x i16> %va, splat (i16 16)
518   ret <vscale x 16 x i16> %vc
521 define <vscale x 32 x i16> @vor_vx_nxv32i16(<vscale x 32 x i16> %va, i16 signext %b) {
522 ; CHECK-LABEL: vor_vx_nxv32i16:
523 ; CHECK:       # %bb.0:
524 ; CHECK-NEXT:    vsetvli a1, zero, e16, m8, ta, ma
525 ; CHECK-NEXT:    vor.vx v8, v8, a0
526 ; CHECK-NEXT:    ret
527   %head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
528   %splat = shufflevector <vscale x 32 x i16> %head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
529   %vc = or <vscale x 32 x i16> %va, %splat
530   ret <vscale x 32 x i16> %vc
533 define <vscale x 32 x i16> @vor_vx_nxv32i16_0(<vscale x 32 x i16> %va) {
534 ; CHECK-LABEL: vor_vx_nxv32i16_0:
535 ; CHECK:       # %bb.0:
536 ; CHECK-NEXT:    vsetvli a0, zero, e16, m8, ta, ma
537 ; CHECK-NEXT:    vor.vi v8, v8, -12
538 ; CHECK-NEXT:    ret
539   %vc = or <vscale x 32 x i16> %va, splat (i16 -12)
540   ret <vscale x 32 x i16> %vc
543 define <vscale x 32 x i16> @vor_vx_nxv32i16_1(<vscale x 32 x i16> %va) {
544 ; CHECK-LABEL: vor_vx_nxv32i16_1:
545 ; CHECK:       # %bb.0:
546 ; CHECK-NEXT:    vsetvli a0, zero, e16, m8, ta, ma
547 ; CHECK-NEXT:    vor.vi v8, v8, 15
548 ; CHECK-NEXT:    ret
549   %vc = or <vscale x 32 x i16> %va, splat (i16 15)
550   ret <vscale x 32 x i16> %vc
553 define <vscale x 32 x i16> @vor_vx_nxv32i16_2(<vscale x 32 x i16> %va) {
554 ; CHECK-LABEL: vor_vx_nxv32i16_2:
555 ; CHECK:       # %bb.0:
556 ; CHECK-NEXT:    li a0, 16
557 ; CHECK-NEXT:    vsetvli a1, zero, e16, m8, ta, ma
558 ; CHECK-NEXT:    vor.vx v8, v8, a0
559 ; CHECK-NEXT:    ret
560   %vc = or <vscale x 32 x i16> %va, splat (i16 16)
561   ret <vscale x 32 x i16> %vc
564 define <vscale x 1 x i32> @vor_vx_nxv1i32(<vscale x 1 x i32> %va, i32 signext %b) {
565 ; CHECK-LABEL: vor_vx_nxv1i32:
566 ; CHECK:       # %bb.0:
567 ; CHECK-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
568 ; CHECK-NEXT:    vor.vx v8, v8, a0
569 ; CHECK-NEXT:    ret
570   %head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
571   %splat = shufflevector <vscale x 1 x i32> %head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
572   %vc = or <vscale x 1 x i32> %va, %splat
573   ret <vscale x 1 x i32> %vc
576 define <vscale x 1 x i32> @vor_vx_nxv1i32_0(<vscale x 1 x i32> %va) {
577 ; CHECK-LABEL: vor_vx_nxv1i32_0:
578 ; CHECK:       # %bb.0:
579 ; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
580 ; CHECK-NEXT:    vor.vi v8, v8, -12
581 ; CHECK-NEXT:    ret
582   %vc = or <vscale x 1 x i32> %va, splat (i32 -12)
583   ret <vscale x 1 x i32> %vc
586 define <vscale x 1 x i32> @vor_vx_nxv1i32_1(<vscale x 1 x i32> %va) {
587 ; CHECK-LABEL: vor_vx_nxv1i32_1:
588 ; CHECK:       # %bb.0:
589 ; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
590 ; CHECK-NEXT:    vor.vi v8, v8, 15
591 ; CHECK-NEXT:    ret
592   %vc = or <vscale x 1 x i32> %va, splat (i32 15)
593   ret <vscale x 1 x i32> %vc
596 define <vscale x 1 x i32> @vor_vx_nxv1i32_2(<vscale x 1 x i32> %va) {
597 ; CHECK-LABEL: vor_vx_nxv1i32_2:
598 ; CHECK:       # %bb.0:
599 ; CHECK-NEXT:    li a0, 16
600 ; CHECK-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
601 ; CHECK-NEXT:    vor.vx v8, v8, a0
602 ; CHECK-NEXT:    ret
603   %vc = or <vscale x 1 x i32> %va, splat (i32 16)
604   ret <vscale x 1 x i32> %vc
607 define <vscale x 2 x i32> @vor_vx_nxv2i32(<vscale x 2 x i32> %va, i32 signext %b) {
608 ; CHECK-LABEL: vor_vx_nxv2i32:
609 ; CHECK:       # %bb.0:
610 ; CHECK-NEXT:    vsetvli a1, zero, e32, m1, ta, ma
611 ; CHECK-NEXT:    vor.vx v8, v8, a0
612 ; CHECK-NEXT:    ret
613   %head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
614   %splat = shufflevector <vscale x 2 x i32> %head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
615   %vc = or <vscale x 2 x i32> %va, %splat
616   ret <vscale x 2 x i32> %vc
619 define <vscale x 2 x i32> @vor_vx_nxv2i32_0(<vscale x 2 x i32> %va) {
620 ; CHECK-LABEL: vor_vx_nxv2i32_0:
621 ; CHECK:       # %bb.0:
622 ; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma
623 ; CHECK-NEXT:    vor.vi v8, v8, -12
624 ; CHECK-NEXT:    ret
625   %vc = or <vscale x 2 x i32> %va, splat (i32 -12)
626   ret <vscale x 2 x i32> %vc
629 define <vscale x 2 x i32> @vor_vx_nxv2i32_1(<vscale x 2 x i32> %va) {
630 ; CHECK-LABEL: vor_vx_nxv2i32_1:
631 ; CHECK:       # %bb.0:
632 ; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma
633 ; CHECK-NEXT:    vor.vi v8, v8, 15
634 ; CHECK-NEXT:    ret
635   %vc = or <vscale x 2 x i32> %va, splat (i32 15)
636   ret <vscale x 2 x i32> %vc
639 define <vscale x 2 x i32> @vor_vx_nxv2i32_2(<vscale x 2 x i32> %va) {
640 ; CHECK-LABEL: vor_vx_nxv2i32_2:
641 ; CHECK:       # %bb.0:
642 ; CHECK-NEXT:    li a0, 16
643 ; CHECK-NEXT:    vsetvli a1, zero, e32, m1, ta, ma
644 ; CHECK-NEXT:    vor.vx v8, v8, a0
645 ; CHECK-NEXT:    ret
646   %vc = or <vscale x 2 x i32> %va, splat (i32 16)
647   ret <vscale x 2 x i32> %vc
650 define <vscale x 4 x i32> @vor_vx_nxv4i32(<vscale x 4 x i32> %va, i32 signext %b) {
651 ; CHECK-LABEL: vor_vx_nxv4i32:
652 ; CHECK:       # %bb.0:
653 ; CHECK-NEXT:    vsetvli a1, zero, e32, m2, ta, ma
654 ; CHECK-NEXT:    vor.vx v8, v8, a0
655 ; CHECK-NEXT:    ret
656   %head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
657   %splat = shufflevector <vscale x 4 x i32> %head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
658   %vc = or <vscale x 4 x i32> %va, %splat
659   ret <vscale x 4 x i32> %vc
662 define <vscale x 4 x i32> @vor_vx_nxv4i32_0(<vscale x 4 x i32> %va) {
663 ; CHECK-LABEL: vor_vx_nxv4i32_0:
664 ; CHECK:       # %bb.0:
665 ; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma
666 ; CHECK-NEXT:    vor.vi v8, v8, -12
667 ; CHECK-NEXT:    ret
668   %vc = or <vscale x 4 x i32> %va, splat (i32 -12)
669   ret <vscale x 4 x i32> %vc
672 define <vscale x 4 x i32> @vor_vx_nxv4i32_1(<vscale x 4 x i32> %va) {
673 ; CHECK-LABEL: vor_vx_nxv4i32_1:
674 ; CHECK:       # %bb.0:
675 ; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma
676 ; CHECK-NEXT:    vor.vi v8, v8, 15
677 ; CHECK-NEXT:    ret
678   %vc = or <vscale x 4 x i32> %va, splat (i32 15)
679   ret <vscale x 4 x i32> %vc
682 define <vscale x 4 x i32> @vor_vx_nxv4i32_2(<vscale x 4 x i32> %va) {
683 ; CHECK-LABEL: vor_vx_nxv4i32_2:
684 ; CHECK:       # %bb.0:
685 ; CHECK-NEXT:    li a0, 16
686 ; CHECK-NEXT:    vsetvli a1, zero, e32, m2, ta, ma
687 ; CHECK-NEXT:    vor.vx v8, v8, a0
688 ; CHECK-NEXT:    ret
689   %vc = or <vscale x 4 x i32> %va, splat (i32 16)
690   ret <vscale x 4 x i32> %vc
693 define <vscale x 8 x i32> @vor_vx_nxv8i32(<vscale x 8 x i32> %va, i32 signext %b) {
694 ; CHECK-LABEL: vor_vx_nxv8i32:
695 ; CHECK:       # %bb.0:
696 ; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
697 ; CHECK-NEXT:    vor.vx v8, v8, a0
698 ; CHECK-NEXT:    ret
699   %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
700   %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
701   %vc = or <vscale x 8 x i32> %va, %splat
702   ret <vscale x 8 x i32> %vc
705 define <vscale x 8 x i32> @vor_vx_nxv8i32_0(<vscale x 8 x i32> %va) {
706 ; CHECK-LABEL: vor_vx_nxv8i32_0:
707 ; CHECK:       # %bb.0:
708 ; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma
709 ; CHECK-NEXT:    vor.vi v8, v8, -12
710 ; CHECK-NEXT:    ret
711   %vc = or <vscale x 8 x i32> %va, splat (i32 -12)
712   ret <vscale x 8 x i32> %vc
715 define <vscale x 8 x i32> @vor_vx_nxv8i32_1(<vscale x 8 x i32> %va) {
716 ; CHECK-LABEL: vor_vx_nxv8i32_1:
717 ; CHECK:       # %bb.0:
718 ; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma
719 ; CHECK-NEXT:    vor.vi v8, v8, 15
720 ; CHECK-NEXT:    ret
721   %vc = or <vscale x 8 x i32> %va, splat (i32 15)
722   ret <vscale x 8 x i32> %vc
725 define <vscale x 8 x i32> @vor_vx_nxv8i32_2(<vscale x 8 x i32> %va) {
726 ; CHECK-LABEL: vor_vx_nxv8i32_2:
727 ; CHECK:       # %bb.0:
728 ; CHECK-NEXT:    li a0, 16
729 ; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
730 ; CHECK-NEXT:    vor.vx v8, v8, a0
731 ; CHECK-NEXT:    ret
732   %vc = or <vscale x 8 x i32> %va, splat (i32 16)
733   ret <vscale x 8 x i32> %vc
736 define <vscale x 16 x i32> @vor_vx_nxv16i32(<vscale x 16 x i32> %va, i32 signext %b) {
737 ; CHECK-LABEL: vor_vx_nxv16i32:
738 ; CHECK:       # %bb.0:
739 ; CHECK-NEXT:    vsetvli a1, zero, e32, m8, ta, ma
740 ; CHECK-NEXT:    vor.vx v8, v8, a0
741 ; CHECK-NEXT:    ret
742   %head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0
743   %splat = shufflevector <vscale x 16 x i32> %head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
744   %vc = or <vscale x 16 x i32> %va, %splat
745   ret <vscale x 16 x i32> %vc
748 define <vscale x 16 x i32> @vor_vx_nxv16i32_0(<vscale x 16 x i32> %va) {
749 ; CHECK-LABEL: vor_vx_nxv16i32_0:
750 ; CHECK:       # %bb.0:
751 ; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma
752 ; CHECK-NEXT:    vor.vi v8, v8, -12
753 ; CHECK-NEXT:    ret
754   %vc = or <vscale x 16 x i32> %va, splat (i32 -12)
755   ret <vscale x 16 x i32> %vc
758 define <vscale x 16 x i32> @vor_vx_nxv16i32_1(<vscale x 16 x i32> %va) {
759 ; CHECK-LABEL: vor_vx_nxv16i32_1:
760 ; CHECK:       # %bb.0:
761 ; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma
762 ; CHECK-NEXT:    vor.vi v8, v8, 15
763 ; CHECK-NEXT:    ret
764   %vc = or <vscale x 16 x i32> %va, splat (i32 15)
765   ret <vscale x 16 x i32> %vc
768 define <vscale x 16 x i32> @vor_vx_nxv16i32_2(<vscale x 16 x i32> %va) {
769 ; CHECK-LABEL: vor_vx_nxv16i32_2:
770 ; CHECK:       # %bb.0:
771 ; CHECK-NEXT:    li a0, 16
772 ; CHECK-NEXT:    vsetvli a1, zero, e32, m8, ta, ma
773 ; CHECK-NEXT:    vor.vx v8, v8, a0
774 ; CHECK-NEXT:    ret
775   %vc = or <vscale x 16 x i32> %va, splat (i32 16)
776   ret <vscale x 16 x i32> %vc
779 define <vscale x 1 x i64> @vor_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b) {
780 ; RV32-LABEL: vor_vx_nxv1i64:
781 ; RV32:       # %bb.0:
782 ; RV32-NEXT:    addi sp, sp, -16
783 ; RV32-NEXT:    .cfi_def_cfa_offset 16
784 ; RV32-NEXT:    sw a1, 12(sp)
785 ; RV32-NEXT:    sw a0, 8(sp)
786 ; RV32-NEXT:    addi a0, sp, 8
787 ; RV32-NEXT:    vsetvli a1, zero, e64, m1, ta, ma
788 ; RV32-NEXT:    vlse64.v v9, (a0), zero
789 ; RV32-NEXT:    vor.vv v8, v8, v9
790 ; RV32-NEXT:    addi sp, sp, 16
791 ; RV32-NEXT:    ret
793 ; RV64-LABEL: vor_vx_nxv1i64:
794 ; RV64:       # %bb.0:
795 ; RV64-NEXT:    vsetvli a1, zero, e64, m1, ta, ma
796 ; RV64-NEXT:    vor.vx v8, v8, a0
797 ; RV64-NEXT:    ret
798   %head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
799   %splat = shufflevector <vscale x 1 x i64> %head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
800   %vc = or <vscale x 1 x i64> %va, %splat
801   ret <vscale x 1 x i64> %vc
804 define <vscale x 1 x i64> @vor_vx_nxv1i64_0(<vscale x 1 x i64> %va) {
805 ; CHECK-LABEL: vor_vx_nxv1i64_0:
806 ; CHECK:       # %bb.0:
807 ; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma
808 ; CHECK-NEXT:    vor.vi v8, v8, -12
809 ; CHECK-NEXT:    ret
810   %vc = or <vscale x 1 x i64> %va, splat (i64 -12)
811   ret <vscale x 1 x i64> %vc
814 define <vscale x 1 x i64> @vor_vx_nxv1i64_1(<vscale x 1 x i64> %va) {
815 ; CHECK-LABEL: vor_vx_nxv1i64_1:
816 ; CHECK:       # %bb.0:
817 ; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma
818 ; CHECK-NEXT:    vor.vi v8, v8, 15
819 ; CHECK-NEXT:    ret
820   %vc = or <vscale x 1 x i64> %va, splat (i64 15)
821   ret <vscale x 1 x i64> %vc
824 define <vscale x 1 x i64> @vor_vx_nxv1i64_2(<vscale x 1 x i64> %va) {
825 ; CHECK-LABEL: vor_vx_nxv1i64_2:
826 ; CHECK:       # %bb.0:
827 ; CHECK-NEXT:    li a0, 16
828 ; CHECK-NEXT:    vsetvli a1, zero, e64, m1, ta, ma
829 ; CHECK-NEXT:    vor.vx v8, v8, a0
830 ; CHECK-NEXT:    ret
831   %vc = or <vscale x 1 x i64> %va, splat (i64 16)
832   ret <vscale x 1 x i64> %vc
835 define <vscale x 2 x i64> @vor_vx_nxv2i64(<vscale x 2 x i64> %va, i64 %b) {
836 ; RV32-LABEL: vor_vx_nxv2i64:
837 ; RV32:       # %bb.0:
838 ; RV32-NEXT:    addi sp, sp, -16
839 ; RV32-NEXT:    .cfi_def_cfa_offset 16
840 ; RV32-NEXT:    sw a1, 12(sp)
841 ; RV32-NEXT:    sw a0, 8(sp)
842 ; RV32-NEXT:    addi a0, sp, 8
843 ; RV32-NEXT:    vsetvli a1, zero, e64, m2, ta, ma
844 ; RV32-NEXT:    vlse64.v v10, (a0), zero
845 ; RV32-NEXT:    vor.vv v8, v8, v10
846 ; RV32-NEXT:    addi sp, sp, 16
847 ; RV32-NEXT:    ret
849 ; RV64-LABEL: vor_vx_nxv2i64:
850 ; RV64:       # %bb.0:
851 ; RV64-NEXT:    vsetvli a1, zero, e64, m2, ta, ma
852 ; RV64-NEXT:    vor.vx v8, v8, a0
853 ; RV64-NEXT:    ret
854   %head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0
855   %splat = shufflevector <vscale x 2 x i64> %head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
856   %vc = or <vscale x 2 x i64> %va, %splat
857   ret <vscale x 2 x i64> %vc
860 define <vscale x 2 x i64> @vor_vx_nxv2i64_0(<vscale x 2 x i64> %va) {
861 ; CHECK-LABEL: vor_vx_nxv2i64_0:
862 ; CHECK:       # %bb.0:
863 ; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma
864 ; CHECK-NEXT:    vor.vi v8, v8, -12
865 ; CHECK-NEXT:    ret
866   %vc = or <vscale x 2 x i64> %va, splat (i64 -12)
867   ret <vscale x 2 x i64> %vc
870 define <vscale x 2 x i64> @vor_vx_nxv2i64_1(<vscale x 2 x i64> %va) {
871 ; CHECK-LABEL: vor_vx_nxv2i64_1:
872 ; CHECK:       # %bb.0:
873 ; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma
874 ; CHECK-NEXT:    vor.vi v8, v8, 15
875 ; CHECK-NEXT:    ret
876   %vc = or <vscale x 2 x i64> %va, splat (i64 15)
877   ret <vscale x 2 x i64> %vc
880 define <vscale x 2 x i64> @vor_vx_nxv2i64_2(<vscale x 2 x i64> %va) {
881 ; CHECK-LABEL: vor_vx_nxv2i64_2:
882 ; CHECK:       # %bb.0:
883 ; CHECK-NEXT:    li a0, 16
884 ; CHECK-NEXT:    vsetvli a1, zero, e64, m2, ta, ma
885 ; CHECK-NEXT:    vor.vx v8, v8, a0
886 ; CHECK-NEXT:    ret
887   %vc = or <vscale x 2 x i64> %va, splat (i64 16)
888   ret <vscale x 2 x i64> %vc
891 define <vscale x 4 x i64> @vor_vx_nxv4i64(<vscale x 4 x i64> %va, i64 %b) {
892 ; RV32-LABEL: vor_vx_nxv4i64:
893 ; RV32:       # %bb.0:
894 ; RV32-NEXT:    addi sp, sp, -16
895 ; RV32-NEXT:    .cfi_def_cfa_offset 16
896 ; RV32-NEXT:    sw a1, 12(sp)
897 ; RV32-NEXT:    sw a0, 8(sp)
898 ; RV32-NEXT:    addi a0, sp, 8
899 ; RV32-NEXT:    vsetvli a1, zero, e64, m4, ta, ma
900 ; RV32-NEXT:    vlse64.v v12, (a0), zero
901 ; RV32-NEXT:    vor.vv v8, v8, v12
902 ; RV32-NEXT:    addi sp, sp, 16
903 ; RV32-NEXT:    ret
905 ; RV64-LABEL: vor_vx_nxv4i64:
906 ; RV64:       # %bb.0:
907 ; RV64-NEXT:    vsetvli a1, zero, e64, m4, ta, ma
908 ; RV64-NEXT:    vor.vx v8, v8, a0
909 ; RV64-NEXT:    ret
910   %head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0
911   %splat = shufflevector <vscale x 4 x i64> %head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
912   %vc = or <vscale x 4 x i64> %va, %splat
913   ret <vscale x 4 x i64> %vc
916 define <vscale x 4 x i64> @vor_vx_nxv4i64_0(<vscale x 4 x i64> %va) {
917 ; CHECK-LABEL: vor_vx_nxv4i64_0:
918 ; CHECK:       # %bb.0:
919 ; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma
920 ; CHECK-NEXT:    vor.vi v8, v8, -12
921 ; CHECK-NEXT:    ret
922   %vc = or <vscale x 4 x i64> %va, splat (i64 -12)
923   ret <vscale x 4 x i64> %vc
926 define <vscale x 4 x i64> @vor_vx_nxv4i64_1(<vscale x 4 x i64> %va) {
927 ; CHECK-LABEL: vor_vx_nxv4i64_1:
928 ; CHECK:       # %bb.0:
929 ; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma
930 ; CHECK-NEXT:    vor.vi v8, v8, 15
931 ; CHECK-NEXT:    ret
932   %vc = or <vscale x 4 x i64> %va, splat (i64 15)
933   ret <vscale x 4 x i64> %vc
936 define <vscale x 4 x i64> @vor_vx_nxv4i64_2(<vscale x 4 x i64> %va) {
937 ; CHECK-LABEL: vor_vx_nxv4i64_2:
938 ; CHECK:       # %bb.0:
939 ; CHECK-NEXT:    li a0, 16
940 ; CHECK-NEXT:    vsetvli a1, zero, e64, m4, ta, ma
941 ; CHECK-NEXT:    vor.vx v8, v8, a0
942 ; CHECK-NEXT:    ret
943   %vc = or <vscale x 4 x i64> %va, splat (i64 16)
944   ret <vscale x 4 x i64> %vc
947 define <vscale x 8 x i64> @vor_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {
948 ; RV32-LABEL: vor_vx_nxv8i64:
949 ; RV32:       # %bb.0:
950 ; RV32-NEXT:    addi sp, sp, -16
951 ; RV32-NEXT:    .cfi_def_cfa_offset 16
952 ; RV32-NEXT:    sw a1, 12(sp)
953 ; RV32-NEXT:    sw a0, 8(sp)
954 ; RV32-NEXT:    addi a0, sp, 8
955 ; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma
956 ; RV32-NEXT:    vlse64.v v16, (a0), zero
957 ; RV32-NEXT:    vor.vv v8, v8, v16
958 ; RV32-NEXT:    addi sp, sp, 16
959 ; RV32-NEXT:    ret
961 ; RV64-LABEL: vor_vx_nxv8i64:
962 ; RV64:       # %bb.0:
963 ; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma
964 ; RV64-NEXT:    vor.vx v8, v8, a0
965 ; RV64-NEXT:    ret
966   %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
967   %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
968   %vc = or <vscale x 8 x i64> %va, %splat
969   ret <vscale x 8 x i64> %vc
972 define <vscale x 8 x i64> @vor_vx_nxv8i64_0(<vscale x 8 x i64> %va) {
973 ; CHECK-LABEL: vor_vx_nxv8i64_0:
974 ; CHECK:       # %bb.0:
975 ; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma
976 ; CHECK-NEXT:    vor.vi v8, v8, -12
977 ; CHECK-NEXT:    ret
978   %vc = or <vscale x 8 x i64> %va, splat (i64 -12)
979   ret <vscale x 8 x i64> %vc
982 define <vscale x 8 x i64> @vor_vx_nxv8i64_1(<vscale x 8 x i64> %va) {
983 ; CHECK-LABEL: vor_vx_nxv8i64_1:
984 ; CHECK:       # %bb.0:
985 ; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma
986 ; CHECK-NEXT:    vor.vi v8, v8, 15
987 ; CHECK-NEXT:    ret
988   %vc = or <vscale x 8 x i64> %va, splat (i64 15)
989   ret <vscale x 8 x i64> %vc
992 define <vscale x 8 x i64> @vor_vx_nxv8i64_2(<vscale x 8 x i64> %va) {
993 ; CHECK-LABEL: vor_vx_nxv8i64_2:
994 ; CHECK:       # %bb.0:
995 ; CHECK-NEXT:    li a0, 16
996 ; CHECK-NEXT:    vsetvli a1, zero, e64, m8, ta, ma
997 ; CHECK-NEXT:    vor.vx v8, v8, a0
998 ; CHECK-NEXT:    ret
999   %vc = or <vscale x 8 x i64> %va, splat (i64 16)
1000   ret <vscale x 8 x i64> %vc
1004 define <vscale x 8 x i64> @vor_vx_nxv8i64_3(<vscale x 8 x i64> %va) {
1005 ; CHECK-LABEL: vor_vx_nxv8i64_3:
1006 ; CHECK:       # %bb.0:
1007 ; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma
1008 ; CHECK-NEXT:    vmv.v.i v8, -1
1009 ; CHECK-NEXT:    ret
1010   %vc = or <vscale x 8 x i64> %va, splat (i64 -1)
1011   ret <vscale x 8 x i64> %vc
1014 define <vscale x 8 x i64> @vor_xx_nxv8i64(i64 %a, i64 %b) nounwind {
1015 ; RV32-LABEL: vor_xx_nxv8i64:
1016 ; RV32:       # %bb.0:
1017 ; RV32-NEXT:    addi sp, sp, -16
1018 ; RV32-NEXT:    sw a1, 12(sp)
1019 ; RV32-NEXT:    sw a0, 8(sp)
1020 ; RV32-NEXT:    addi a0, sp, 8
1021 ; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma
1022 ; RV32-NEXT:    vlse64.v v8, (a0), zero
1023 ; RV32-NEXT:    sw a3, 4(sp)
1024 ; RV32-NEXT:    sw a2, 0(sp)
1025 ; RV32-NEXT:    mv a0, sp
1026 ; RV32-NEXT:    vlse64.v v16, (a0), zero
1027 ; RV32-NEXT:    vor.vv v8, v8, v16
1028 ; RV32-NEXT:    addi sp, sp, 16
1029 ; RV32-NEXT:    ret
1031 ; RV64-LABEL: vor_xx_nxv8i64:
1032 ; RV64:       # %bb.0:
1033 ; RV64-NEXT:    or a0, a0, a1
1034 ; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma
1035 ; RV64-NEXT:    vmv.v.x v8, a0
1036 ; RV64-NEXT:    ret
1037   %head1 = insertelement <vscale x 8 x i64> poison, i64 %a, i32 0
1038   %splat1 = shufflevector <vscale x 8 x i64> %head1, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1039   %head2 = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
1040   %splat2 = shufflevector <vscale x 8 x i64> %head2, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1041   %v = or <vscale x 8 x i64> %splat1, %splat2
1042   ret <vscale x 8 x i64> %v
1045 define <vscale x 8 x i32> @vor_vv_mask_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %mask) {
1046 ; CHECK-LABEL: vor_vv_mask_nxv8i32:
1047 ; CHECK:       # %bb.0:
1048 ; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, mu
1049 ; CHECK-NEXT:    vor.vv v8, v8, v12, v0.t
1050 ; CHECK-NEXT:    ret
1051   %vs = select <vscale x 8 x i1> %mask, <vscale x 8 x i32> %vb, <vscale x 8 x i32> zeroinitializer
1052   %vc = or <vscale x 8 x i32> %va, %vs
1053   ret <vscale x 8 x i32> %vc
1056 define <vscale x 8 x i32> @vor_vx_mask_nxv8i32(<vscale x 8 x i32> %va, i32 signext %b, <vscale x 8 x i1> %mask) {
1057 ; CHECK-LABEL: vor_vx_mask_nxv8i32:
1058 ; CHECK:       # %bb.0:
1059 ; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, mu
1060 ; CHECK-NEXT:    vor.vx v8, v8, a0, v0.t
1061 ; CHECK-NEXT:    ret
1062   %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1063   %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1064   %vs = select <vscale x 8 x i1> %mask, <vscale x 8 x i32> %splat, <vscale x 8 x i32> zeroinitializer
1065   %vc = or <vscale x 8 x i32> %va, %vs
1066   ret <vscale x 8 x i32> %vc
1069 define <vscale x 8 x i32> @vor_vi_mask_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %mask) {
1070 ; CHECK-LABEL: vor_vi_mask_nxv8i32:
1071 ; CHECK:       # %bb.0:
1072 ; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, mu
1073 ; CHECK-NEXT:    vor.vi v8, v8, 7, v0.t
1074 ; CHECK-NEXT:    ret
1075   %vs = select <vscale x 8 x i1> %mask, <vscale x 8 x i32> splat (i32 7), <vscale x 8 x i32> zeroinitializer
1076   %vc = or <vscale x 8 x i32> %va, %vs
1077   ret <vscale x 8 x i32> %vc