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:
8 ; CHECK-NEXT: vsetvli a1, zero, e8, mf8, ta, ma
9 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
20 ; CHECK-NEXT: vsetvli a0, zero, e8, mf8, ta, ma
21 ; CHECK-NEXT: vor.vi v8, v8, -12
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:
30 ; CHECK-NEXT: vsetvli a0, zero, e8, mf8, ta, ma
31 ; CHECK-NEXT: vor.vi v8, v8, 15
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:
40 ; CHECK-NEXT: li a0, 16
41 ; CHECK-NEXT: vsetvli a1, zero, e8, mf8, ta, ma
42 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
51 ; CHECK-NEXT: vsetvli a1, zero, e8, mf4, ta, ma
52 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
63 ; CHECK-NEXT: vsetvli a0, zero, e8, mf4, ta, ma
64 ; CHECK-NEXT: vor.vi v8, v8, -12
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:
73 ; CHECK-NEXT: vsetvli a0, zero, e8, mf4, ta, ma
74 ; CHECK-NEXT: vor.vi v8, v8, 15
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:
83 ; CHECK-NEXT: li a0, 16
84 ; CHECK-NEXT: vsetvli a1, zero, e8, mf4, ta, ma
85 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
94 ; CHECK-NEXT: vsetvli a1, zero, e8, mf2, ta, ma
95 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
106 ; CHECK-NEXT: vsetvli a0, zero, e8, mf2, ta, ma
107 ; CHECK-NEXT: vor.vi v8, v8, -12
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:
116 ; CHECK-NEXT: vsetvli a0, zero, e8, mf2, ta, ma
117 ; CHECK-NEXT: vor.vi v8, v8, 15
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:
126 ; CHECK-NEXT: li a0, 16
127 ; CHECK-NEXT: vsetvli a1, zero, e8, mf2, ta, ma
128 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
137 ; CHECK-NEXT: vsetvli a1, zero, e8, m1, ta, ma
138 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
149 ; CHECK-NEXT: vsetvli a0, zero, e8, m1, ta, ma
150 ; CHECK-NEXT: vor.vi v8, v8, -12
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:
159 ; CHECK-NEXT: vsetvli a0, zero, e8, m1, ta, ma
160 ; CHECK-NEXT: vor.vi v8, v8, 15
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:
169 ; CHECK-NEXT: li a0, 16
170 ; CHECK-NEXT: vsetvli a1, zero, e8, m1, ta, ma
171 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
180 ; CHECK-NEXT: vsetvli a1, zero, e8, m2, ta, ma
181 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
192 ; CHECK-NEXT: vsetvli a0, zero, e8, m2, ta, ma
193 ; CHECK-NEXT: vor.vi v8, v8, -12
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:
202 ; CHECK-NEXT: vsetvli a0, zero, e8, m2, ta, ma
203 ; CHECK-NEXT: vor.vi v8, v8, 15
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:
212 ; CHECK-NEXT: li a0, 16
213 ; CHECK-NEXT: vsetvli a1, zero, e8, m2, ta, ma
214 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
223 ; CHECK-NEXT: vsetvli a1, zero, e8, m4, ta, ma
224 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
235 ; CHECK-NEXT: vsetvli a0, zero, e8, m4, ta, ma
236 ; CHECK-NEXT: vor.vi v8, v8, -12
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:
245 ; CHECK-NEXT: vsetvli a0, zero, e8, m4, ta, ma
246 ; CHECK-NEXT: vor.vi v8, v8, 15
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:
255 ; CHECK-NEXT: li a0, 16
256 ; CHECK-NEXT: vsetvli a1, zero, e8, m4, ta, ma
257 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
266 ; CHECK-NEXT: vsetvli a1, zero, e8, m8, ta, ma
267 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
278 ; CHECK-NEXT: vsetvli a0, zero, e8, m8, ta, ma
279 ; CHECK-NEXT: vor.vi v8, v8, -12
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:
288 ; CHECK-NEXT: vsetvli a0, zero, e8, m8, ta, ma
289 ; CHECK-NEXT: vor.vi v8, v8, 15
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:
298 ; CHECK-NEXT: li a0, 16
299 ; CHECK-NEXT: vsetvli a1, zero, e8, m8, ta, ma
300 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
309 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
310 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
321 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
322 ; CHECK-NEXT: vor.vi v8, v8, -12
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:
331 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
332 ; CHECK-NEXT: vor.vi v8, v8, 15
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:
341 ; CHECK-NEXT: li a0, 16
342 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
343 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
352 ; CHECK-NEXT: vsetvli a1, zero, e16, mf2, ta, ma
353 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
364 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
365 ; CHECK-NEXT: vor.vi v8, v8, -12
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:
374 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
375 ; CHECK-NEXT: vor.vi v8, v8, 15
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:
384 ; CHECK-NEXT: li a0, 16
385 ; CHECK-NEXT: vsetvli a1, zero, e16, mf2, ta, ma
386 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
395 ; CHECK-NEXT: vsetvli a1, zero, e16, m1, ta, ma
396 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
407 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
408 ; CHECK-NEXT: vor.vi v8, v8, -12
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:
417 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
418 ; CHECK-NEXT: vor.vi v8, v8, 15
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:
427 ; CHECK-NEXT: li a0, 16
428 ; CHECK-NEXT: vsetvli a1, zero, e16, m1, ta, ma
429 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
438 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
439 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
450 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
451 ; CHECK-NEXT: vor.vi v8, v8, -12
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:
460 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
461 ; CHECK-NEXT: vor.vi v8, v8, 15
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:
470 ; CHECK-NEXT: li a0, 16
471 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
472 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
481 ; CHECK-NEXT: vsetvli a1, zero, e16, m4, ta, ma
482 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
493 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
494 ; CHECK-NEXT: vor.vi v8, v8, -12
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:
503 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
504 ; CHECK-NEXT: vor.vi v8, v8, 15
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:
513 ; CHECK-NEXT: li a0, 16
514 ; CHECK-NEXT: vsetvli a1, zero, e16, m4, ta, ma
515 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
524 ; CHECK-NEXT: vsetvli a1, zero, e16, m8, ta, ma
525 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
536 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
537 ; CHECK-NEXT: vor.vi v8, v8, -12
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:
546 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
547 ; CHECK-NEXT: vor.vi v8, v8, 15
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:
556 ; CHECK-NEXT: li a0, 16
557 ; CHECK-NEXT: vsetvli a1, zero, e16, m8, ta, ma
558 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
567 ; CHECK-NEXT: vsetvli a1, zero, e32, mf2, ta, ma
568 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
579 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
580 ; CHECK-NEXT: vor.vi v8, v8, -12
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:
589 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
590 ; CHECK-NEXT: vor.vi v8, v8, 15
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:
599 ; CHECK-NEXT: li a0, 16
600 ; CHECK-NEXT: vsetvli a1, zero, e32, mf2, ta, ma
601 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
610 ; CHECK-NEXT: vsetvli a1, zero, e32, m1, ta, ma
611 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
622 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
623 ; CHECK-NEXT: vor.vi v8, v8, -12
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:
632 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
633 ; CHECK-NEXT: vor.vi v8, v8, 15
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:
642 ; CHECK-NEXT: li a0, 16
643 ; CHECK-NEXT: vsetvli a1, zero, e32, m1, ta, ma
644 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
653 ; CHECK-NEXT: vsetvli a1, zero, e32, m2, ta, ma
654 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
665 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
666 ; CHECK-NEXT: vor.vi v8, v8, -12
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:
675 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
676 ; CHECK-NEXT: vor.vi v8, v8, 15
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:
685 ; CHECK-NEXT: li a0, 16
686 ; CHECK-NEXT: vsetvli a1, zero, e32, m2, ta, ma
687 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
696 ; CHECK-NEXT: vsetvli a1, zero, e32, m4, ta, ma
697 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
708 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
709 ; CHECK-NEXT: vor.vi v8, v8, -12
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:
718 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
719 ; CHECK-NEXT: vor.vi v8, v8, 15
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:
728 ; CHECK-NEXT: li a0, 16
729 ; CHECK-NEXT: vsetvli a1, zero, e32, m4, ta, ma
730 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
739 ; CHECK-NEXT: vsetvli a1, zero, e32, m8, ta, ma
740 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
751 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
752 ; CHECK-NEXT: vor.vi v8, v8, -12
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:
761 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
762 ; CHECK-NEXT: vor.vi v8, v8, 15
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:
771 ; CHECK-NEXT: li a0, 16
772 ; CHECK-NEXT: vsetvli a1, zero, e32, m8, ta, ma
773 ; CHECK-NEXT: vor.vx v8, v8, a0
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:
782 ; RV32-NEXT: addi sp, sp, -16
783 ; RV32-NEXT: .cfi_def_cfa_offset 16
784 ; RV32-NEXT: sw a0, 8(sp)
785 ; RV32-NEXT: sw a1, 12(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: .cfi_def_cfa_offset 0
794 ; RV64-LABEL: vor_vx_nxv1i64:
796 ; RV64-NEXT: vsetvli a1, zero, e64, m1, ta, ma
797 ; RV64-NEXT: vor.vx v8, v8, a0
799 %head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
800 %splat = shufflevector <vscale x 1 x i64> %head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
801 %vc = or <vscale x 1 x i64> %va, %splat
802 ret <vscale x 1 x i64> %vc
805 define <vscale x 1 x i64> @vor_vx_nxv1i64_0(<vscale x 1 x i64> %va) {
806 ; CHECK-LABEL: vor_vx_nxv1i64_0:
808 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
809 ; CHECK-NEXT: vor.vi v8, v8, -12
811 %vc = or <vscale x 1 x i64> %va, splat (i64 -12)
812 ret <vscale x 1 x i64> %vc
815 define <vscale x 1 x i64> @vor_vx_nxv1i64_1(<vscale x 1 x i64> %va) {
816 ; CHECK-LABEL: vor_vx_nxv1i64_1:
818 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
819 ; CHECK-NEXT: vor.vi v8, v8, 15
821 %vc = or <vscale x 1 x i64> %va, splat (i64 15)
822 ret <vscale x 1 x i64> %vc
825 define <vscale x 1 x i64> @vor_vx_nxv1i64_2(<vscale x 1 x i64> %va) {
826 ; CHECK-LABEL: vor_vx_nxv1i64_2:
828 ; CHECK-NEXT: li a0, 16
829 ; CHECK-NEXT: vsetvli a1, zero, e64, m1, ta, ma
830 ; CHECK-NEXT: vor.vx v8, v8, a0
832 %vc = or <vscale x 1 x i64> %va, splat (i64 16)
833 ret <vscale x 1 x i64> %vc
836 define <vscale x 2 x i64> @vor_vx_nxv2i64(<vscale x 2 x i64> %va, i64 %b) {
837 ; RV32-LABEL: vor_vx_nxv2i64:
839 ; RV32-NEXT: addi sp, sp, -16
840 ; RV32-NEXT: .cfi_def_cfa_offset 16
841 ; RV32-NEXT: sw a0, 8(sp)
842 ; RV32-NEXT: sw a1, 12(sp)
843 ; RV32-NEXT: addi a0, sp, 8
844 ; RV32-NEXT: vsetvli a1, zero, e64, m2, ta, ma
845 ; RV32-NEXT: vlse64.v v10, (a0), zero
846 ; RV32-NEXT: vor.vv v8, v8, v10
847 ; RV32-NEXT: addi sp, sp, 16
848 ; RV32-NEXT: .cfi_def_cfa_offset 0
851 ; RV64-LABEL: vor_vx_nxv2i64:
853 ; RV64-NEXT: vsetvli a1, zero, e64, m2, ta, ma
854 ; RV64-NEXT: vor.vx v8, v8, a0
856 %head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0
857 %splat = shufflevector <vscale x 2 x i64> %head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
858 %vc = or <vscale x 2 x i64> %va, %splat
859 ret <vscale x 2 x i64> %vc
862 define <vscale x 2 x i64> @vor_vx_nxv2i64_0(<vscale x 2 x i64> %va) {
863 ; CHECK-LABEL: vor_vx_nxv2i64_0:
865 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
866 ; CHECK-NEXT: vor.vi v8, v8, -12
868 %vc = or <vscale x 2 x i64> %va, splat (i64 -12)
869 ret <vscale x 2 x i64> %vc
872 define <vscale x 2 x i64> @vor_vx_nxv2i64_1(<vscale x 2 x i64> %va) {
873 ; CHECK-LABEL: vor_vx_nxv2i64_1:
875 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
876 ; CHECK-NEXT: vor.vi v8, v8, 15
878 %vc = or <vscale x 2 x i64> %va, splat (i64 15)
879 ret <vscale x 2 x i64> %vc
882 define <vscale x 2 x i64> @vor_vx_nxv2i64_2(<vscale x 2 x i64> %va) {
883 ; CHECK-LABEL: vor_vx_nxv2i64_2:
885 ; CHECK-NEXT: li a0, 16
886 ; CHECK-NEXT: vsetvli a1, zero, e64, m2, ta, ma
887 ; CHECK-NEXT: vor.vx v8, v8, a0
889 %vc = or <vscale x 2 x i64> %va, splat (i64 16)
890 ret <vscale x 2 x i64> %vc
893 define <vscale x 4 x i64> @vor_vx_nxv4i64(<vscale x 4 x i64> %va, i64 %b) {
894 ; RV32-LABEL: vor_vx_nxv4i64:
896 ; RV32-NEXT: addi sp, sp, -16
897 ; RV32-NEXT: .cfi_def_cfa_offset 16
898 ; RV32-NEXT: sw a0, 8(sp)
899 ; RV32-NEXT: sw a1, 12(sp)
900 ; RV32-NEXT: addi a0, sp, 8
901 ; RV32-NEXT: vsetvli a1, zero, e64, m4, ta, ma
902 ; RV32-NEXT: vlse64.v v12, (a0), zero
903 ; RV32-NEXT: vor.vv v8, v8, v12
904 ; RV32-NEXT: addi sp, sp, 16
905 ; RV32-NEXT: .cfi_def_cfa_offset 0
908 ; RV64-LABEL: vor_vx_nxv4i64:
910 ; RV64-NEXT: vsetvli a1, zero, e64, m4, ta, ma
911 ; RV64-NEXT: vor.vx v8, v8, a0
913 %head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0
914 %splat = shufflevector <vscale x 4 x i64> %head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
915 %vc = or <vscale x 4 x i64> %va, %splat
916 ret <vscale x 4 x i64> %vc
919 define <vscale x 4 x i64> @vor_vx_nxv4i64_0(<vscale x 4 x i64> %va) {
920 ; CHECK-LABEL: vor_vx_nxv4i64_0:
922 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
923 ; CHECK-NEXT: vor.vi v8, v8, -12
925 %vc = or <vscale x 4 x i64> %va, splat (i64 -12)
926 ret <vscale x 4 x i64> %vc
929 define <vscale x 4 x i64> @vor_vx_nxv4i64_1(<vscale x 4 x i64> %va) {
930 ; CHECK-LABEL: vor_vx_nxv4i64_1:
932 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
933 ; CHECK-NEXT: vor.vi v8, v8, 15
935 %vc = or <vscale x 4 x i64> %va, splat (i64 15)
936 ret <vscale x 4 x i64> %vc
939 define <vscale x 4 x i64> @vor_vx_nxv4i64_2(<vscale x 4 x i64> %va) {
940 ; CHECK-LABEL: vor_vx_nxv4i64_2:
942 ; CHECK-NEXT: li a0, 16
943 ; CHECK-NEXT: vsetvli a1, zero, e64, m4, ta, ma
944 ; CHECK-NEXT: vor.vx v8, v8, a0
946 %vc = or <vscale x 4 x i64> %va, splat (i64 16)
947 ret <vscale x 4 x i64> %vc
950 define <vscale x 8 x i64> @vor_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {
951 ; RV32-LABEL: vor_vx_nxv8i64:
953 ; RV32-NEXT: addi sp, sp, -16
954 ; RV32-NEXT: .cfi_def_cfa_offset 16
955 ; RV32-NEXT: sw a0, 8(sp)
956 ; RV32-NEXT: sw a1, 12(sp)
957 ; RV32-NEXT: addi a0, sp, 8
958 ; RV32-NEXT: vsetvli a1, zero, e64, m8, ta, ma
959 ; RV32-NEXT: vlse64.v v16, (a0), zero
960 ; RV32-NEXT: vor.vv v8, v8, v16
961 ; RV32-NEXT: addi sp, sp, 16
962 ; RV32-NEXT: .cfi_def_cfa_offset 0
965 ; RV64-LABEL: vor_vx_nxv8i64:
967 ; RV64-NEXT: vsetvli a1, zero, e64, m8, ta, ma
968 ; RV64-NEXT: vor.vx v8, v8, a0
970 %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
971 %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
972 %vc = or <vscale x 8 x i64> %va, %splat
973 ret <vscale x 8 x i64> %vc
976 define <vscale x 8 x i64> @vor_vx_nxv8i64_0(<vscale x 8 x i64> %va) {
977 ; CHECK-LABEL: vor_vx_nxv8i64_0:
979 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
980 ; CHECK-NEXT: vor.vi v8, v8, -12
982 %vc = or <vscale x 8 x i64> %va, splat (i64 -12)
983 ret <vscale x 8 x i64> %vc
986 define <vscale x 8 x i64> @vor_vx_nxv8i64_1(<vscale x 8 x i64> %va) {
987 ; CHECK-LABEL: vor_vx_nxv8i64_1:
989 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
990 ; CHECK-NEXT: vor.vi v8, v8, 15
992 %vc = or <vscale x 8 x i64> %va, splat (i64 15)
993 ret <vscale x 8 x i64> %vc
996 define <vscale x 8 x i64> @vor_vx_nxv8i64_2(<vscale x 8 x i64> %va) {
997 ; CHECK-LABEL: vor_vx_nxv8i64_2:
999 ; CHECK-NEXT: li a0, 16
1000 ; CHECK-NEXT: vsetvli a1, zero, e64, m8, ta, ma
1001 ; CHECK-NEXT: vor.vx v8, v8, a0
1003 %vc = or <vscale x 8 x i64> %va, splat (i64 16)
1004 ret <vscale x 8 x i64> %vc
1008 define <vscale x 8 x i64> @vor_vx_nxv8i64_3(<vscale x 8 x i64> %va) {
1009 ; CHECK-LABEL: vor_vx_nxv8i64_3:
1011 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
1012 ; CHECK-NEXT: vmv.v.i v8, -1
1014 %vc = or <vscale x 8 x i64> %va, splat (i64 -1)
1015 ret <vscale x 8 x i64> %vc
1018 define <vscale x 8 x i64> @vor_xx_nxv8i64(i64 %a, i64 %b) nounwind {
1019 ; RV32-LABEL: vor_xx_nxv8i64:
1021 ; RV32-NEXT: addi sp, sp, -16
1022 ; RV32-NEXT: or a1, a1, a3
1023 ; RV32-NEXT: or a0, a0, a2
1024 ; RV32-NEXT: sw a0, 8(sp)
1025 ; RV32-NEXT: sw a1, 12(sp)
1026 ; RV32-NEXT: addi a0, sp, 8
1027 ; RV32-NEXT: vsetvli a1, zero, e64, m8, ta, ma
1028 ; RV32-NEXT: vlse64.v v8, (a0), zero
1029 ; RV32-NEXT: addi sp, sp, 16
1032 ; RV64-LABEL: vor_xx_nxv8i64:
1034 ; RV64-NEXT: or a0, a0, a1
1035 ; RV64-NEXT: vsetvli a1, zero, e64, m8, ta, ma
1036 ; RV64-NEXT: vmv.v.x v8, a0
1038 %head1 = insertelement <vscale x 8 x i64> poison, i64 %a, i32 0
1039 %splat1 = shufflevector <vscale x 8 x i64> %head1, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1040 %head2 = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
1041 %splat2 = shufflevector <vscale x 8 x i64> %head2, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1042 %v = or <vscale x 8 x i64> %splat1, %splat2
1043 ret <vscale x 8 x i64> %v
1046 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) {
1047 ; CHECK-LABEL: vor_vv_mask_nxv8i32:
1049 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
1050 ; CHECK-NEXT: vor.vv v8, v8, v12, v0.t
1052 %vs = select <vscale x 8 x i1> %mask, <vscale x 8 x i32> %vb, <vscale x 8 x i32> zeroinitializer
1053 %vc = or <vscale x 8 x i32> %va, %vs
1054 ret <vscale x 8 x i32> %vc
1057 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) {
1058 ; CHECK-LABEL: vor_vx_mask_nxv8i32:
1060 ; CHECK-NEXT: vsetvli a1, zero, e32, m4, ta, mu
1061 ; CHECK-NEXT: vor.vx v8, v8, a0, v0.t
1063 %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1064 %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1065 %vs = select <vscale x 8 x i1> %mask, <vscale x 8 x i32> %splat, <vscale x 8 x i32> zeroinitializer
1066 %vc = or <vscale x 8 x i32> %va, %vs
1067 ret <vscale x 8 x i32> %vc
1070 define <vscale x 8 x i32> @vor_vi_mask_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %mask) {
1071 ; CHECK-LABEL: vor_vi_mask_nxv8i32:
1073 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
1074 ; CHECK-NEXT: vor.vi v8, v8, 7, v0.t
1076 %vs = select <vscale x 8 x i1> %mask, <vscale x 8 x i32> splat (i32 7), <vscale x 8 x i32> zeroinitializer
1077 %vc = or <vscale x 8 x i32> %va, %vs
1078 ret <vscale x 8 x i32> %vc