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 %head = insertelement <vscale x 1 x i8> poison, i8 -12, i32 0
24 %splat = shufflevector <vscale x 1 x i8> %head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
25 %vc = or <vscale x 1 x i8> %va, %splat
26 ret <vscale x 1 x i8> %vc
29 define <vscale x 1 x i8> @vor_vx_nxv1i8_1(<vscale x 1 x i8> %va) {
30 ; CHECK-LABEL: vor_vx_nxv1i8_1:
32 ; CHECK-NEXT: vsetvli a0, zero, e8, mf8, ta, ma
33 ; CHECK-NEXT: vor.vi v8, v8, 15
35 %head = insertelement <vscale x 1 x i8> poison, i8 15, i32 0
36 %splat = shufflevector <vscale x 1 x i8> %head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
37 %vc = or <vscale x 1 x i8> %va, %splat
38 ret <vscale x 1 x i8> %vc
41 define <vscale x 1 x i8> @vor_vx_nxv1i8_2(<vscale x 1 x i8> %va) {
42 ; CHECK-LABEL: vor_vx_nxv1i8_2:
44 ; CHECK-NEXT: li a0, 16
45 ; CHECK-NEXT: vsetvli a1, zero, e8, mf8, ta, ma
46 ; CHECK-NEXT: vor.vx v8, v8, a0
48 %head = insertelement <vscale x 1 x i8> poison, i8 16, i32 0
49 %splat = shufflevector <vscale x 1 x i8> %head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
50 %vc = or <vscale x 1 x i8> %va, %splat
51 ret <vscale x 1 x i8> %vc
54 define <vscale x 2 x i8> @vor_vx_nxv2i8(<vscale x 2 x i8> %va, i8 signext %b) {
55 ; CHECK-LABEL: vor_vx_nxv2i8:
57 ; CHECK-NEXT: vsetvli a1, zero, e8, mf4, ta, ma
58 ; CHECK-NEXT: vor.vx v8, v8, a0
60 %head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0
61 %splat = shufflevector <vscale x 2 x i8> %head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
62 %vc = or <vscale x 2 x i8> %va, %splat
63 ret <vscale x 2 x i8> %vc
66 define <vscale x 2 x i8> @vor_vx_nxv2i8_0(<vscale x 2 x i8> %va) {
67 ; CHECK-LABEL: vor_vx_nxv2i8_0:
69 ; CHECK-NEXT: vsetvli a0, zero, e8, mf4, ta, ma
70 ; CHECK-NEXT: vor.vi v8, v8, -12
72 %head = insertelement <vscale x 2 x i8> poison, i8 -12, i32 0
73 %splat = shufflevector <vscale x 2 x i8> %head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
74 %vc = or <vscale x 2 x i8> %va, %splat
75 ret <vscale x 2 x i8> %vc
78 define <vscale x 2 x i8> @vor_vx_nxv2i8_1(<vscale x 2 x i8> %va) {
79 ; CHECK-LABEL: vor_vx_nxv2i8_1:
81 ; CHECK-NEXT: vsetvli a0, zero, e8, mf4, ta, ma
82 ; CHECK-NEXT: vor.vi v8, v8, 15
84 %head = insertelement <vscale x 2 x i8> poison, i8 15, i32 0
85 %splat = shufflevector <vscale x 2 x i8> %head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
86 %vc = or <vscale x 2 x i8> %va, %splat
87 ret <vscale x 2 x i8> %vc
90 define <vscale x 2 x i8> @vor_vx_nxv2i8_2(<vscale x 2 x i8> %va) {
91 ; CHECK-LABEL: vor_vx_nxv2i8_2:
93 ; CHECK-NEXT: li a0, 16
94 ; CHECK-NEXT: vsetvli a1, zero, e8, mf4, ta, ma
95 ; CHECK-NEXT: vor.vx v8, v8, a0
97 %head = insertelement <vscale x 2 x i8> poison, i8 16, i32 0
98 %splat = shufflevector <vscale x 2 x i8> %head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
99 %vc = or <vscale x 2 x i8> %va, %splat
100 ret <vscale x 2 x i8> %vc
103 define <vscale x 4 x i8> @vor_vx_nxv4i8(<vscale x 4 x i8> %va, i8 signext %b) {
104 ; CHECK-LABEL: vor_vx_nxv4i8:
106 ; CHECK-NEXT: vsetvli a1, zero, e8, mf2, ta, ma
107 ; CHECK-NEXT: vor.vx v8, v8, a0
109 %head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0
110 %splat = shufflevector <vscale x 4 x i8> %head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
111 %vc = or <vscale x 4 x i8> %va, %splat
112 ret <vscale x 4 x i8> %vc
115 define <vscale x 4 x i8> @vor_vx_nxv4i8_0(<vscale x 4 x i8> %va) {
116 ; CHECK-LABEL: vor_vx_nxv4i8_0:
118 ; CHECK-NEXT: vsetvli a0, zero, e8, mf2, ta, ma
119 ; CHECK-NEXT: vor.vi v8, v8, -12
121 %head = insertelement <vscale x 4 x i8> poison, i8 -12, i32 0
122 %splat = shufflevector <vscale x 4 x i8> %head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
123 %vc = or <vscale x 4 x i8> %va, %splat
124 ret <vscale x 4 x i8> %vc
127 define <vscale x 4 x i8> @vor_vx_nxv4i8_1(<vscale x 4 x i8> %va) {
128 ; CHECK-LABEL: vor_vx_nxv4i8_1:
130 ; CHECK-NEXT: vsetvli a0, zero, e8, mf2, ta, ma
131 ; CHECK-NEXT: vor.vi v8, v8, 15
133 %head = insertelement <vscale x 4 x i8> poison, i8 15, i32 0
134 %splat = shufflevector <vscale x 4 x i8> %head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
135 %vc = or <vscale x 4 x i8> %va, %splat
136 ret <vscale x 4 x i8> %vc
139 define <vscale x 4 x i8> @vor_vx_nxv4i8_2(<vscale x 4 x i8> %va) {
140 ; CHECK-LABEL: vor_vx_nxv4i8_2:
142 ; CHECK-NEXT: li a0, 16
143 ; CHECK-NEXT: vsetvli a1, zero, e8, mf2, ta, ma
144 ; CHECK-NEXT: vor.vx v8, v8, a0
146 %head = insertelement <vscale x 4 x i8> poison, i8 16, i32 0
147 %splat = shufflevector <vscale x 4 x i8> %head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
148 %vc = or <vscale x 4 x i8> %va, %splat
149 ret <vscale x 4 x i8> %vc
152 define <vscale x 8 x i8> @vor_vx_nxv8i8(<vscale x 8 x i8> %va, i8 signext %b) {
153 ; CHECK-LABEL: vor_vx_nxv8i8:
155 ; CHECK-NEXT: vsetvli a1, zero, e8, m1, ta, ma
156 ; CHECK-NEXT: vor.vx v8, v8, a0
158 %head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
159 %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
160 %vc = or <vscale x 8 x i8> %va, %splat
161 ret <vscale x 8 x i8> %vc
164 define <vscale x 8 x i8> @vor_vx_nxv8i8_0(<vscale x 8 x i8> %va) {
165 ; CHECK-LABEL: vor_vx_nxv8i8_0:
167 ; CHECK-NEXT: vsetvli a0, zero, e8, m1, ta, ma
168 ; CHECK-NEXT: vor.vi v8, v8, -12
170 %head = insertelement <vscale x 8 x i8> poison, i8 -12, i32 0
171 %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
172 %vc = or <vscale x 8 x i8> %va, %splat
173 ret <vscale x 8 x i8> %vc
176 define <vscale x 8 x i8> @vor_vx_nxv8i8_1(<vscale x 8 x i8> %va) {
177 ; CHECK-LABEL: vor_vx_nxv8i8_1:
179 ; CHECK-NEXT: vsetvli a0, zero, e8, m1, ta, ma
180 ; CHECK-NEXT: vor.vi v8, v8, 15
182 %head = insertelement <vscale x 8 x i8> poison, i8 15, i32 0
183 %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
184 %vc = or <vscale x 8 x i8> %va, %splat
185 ret <vscale x 8 x i8> %vc
188 define <vscale x 8 x i8> @vor_vx_nxv8i8_2(<vscale x 8 x i8> %va) {
189 ; CHECK-LABEL: vor_vx_nxv8i8_2:
191 ; CHECK-NEXT: li a0, 16
192 ; CHECK-NEXT: vsetvli a1, zero, e8, m1, ta, ma
193 ; CHECK-NEXT: vor.vx v8, v8, a0
195 %head = insertelement <vscale x 8 x i8> poison, i8 16, i32 0
196 %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
197 %vc = or <vscale x 8 x i8> %va, %splat
198 ret <vscale x 8 x i8> %vc
201 define <vscale x 16 x i8> @vor_vx_nxv16i8(<vscale x 16 x i8> %va, i8 signext %b) {
202 ; CHECK-LABEL: vor_vx_nxv16i8:
204 ; CHECK-NEXT: vsetvli a1, zero, e8, m2, ta, ma
205 ; CHECK-NEXT: vor.vx v8, v8, a0
207 %head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0
208 %splat = shufflevector <vscale x 16 x i8> %head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
209 %vc = or <vscale x 16 x i8> %va, %splat
210 ret <vscale x 16 x i8> %vc
213 define <vscale x 16 x i8> @vor_vx_nxv16i8_0(<vscale x 16 x i8> %va) {
214 ; CHECK-LABEL: vor_vx_nxv16i8_0:
216 ; CHECK-NEXT: vsetvli a0, zero, e8, m2, ta, ma
217 ; CHECK-NEXT: vor.vi v8, v8, -12
219 %head = insertelement <vscale x 16 x i8> poison, i8 -12, i32 0
220 %splat = shufflevector <vscale x 16 x i8> %head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
221 %vc = or <vscale x 16 x i8> %va, %splat
222 ret <vscale x 16 x i8> %vc
225 define <vscale x 16 x i8> @vor_vx_nxv16i8_1(<vscale x 16 x i8> %va) {
226 ; CHECK-LABEL: vor_vx_nxv16i8_1:
228 ; CHECK-NEXT: vsetvli a0, zero, e8, m2, ta, ma
229 ; CHECK-NEXT: vor.vi v8, v8, 15
231 %head = insertelement <vscale x 16 x i8> poison, i8 15, i32 0
232 %splat = shufflevector <vscale x 16 x i8> %head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
233 %vc = or <vscale x 16 x i8> %va, %splat
234 ret <vscale x 16 x i8> %vc
237 define <vscale x 16 x i8> @vor_vx_nxv16i8_2(<vscale x 16 x i8> %va) {
238 ; CHECK-LABEL: vor_vx_nxv16i8_2:
240 ; CHECK-NEXT: li a0, 16
241 ; CHECK-NEXT: vsetvli a1, zero, e8, m2, ta, ma
242 ; CHECK-NEXT: vor.vx v8, v8, a0
244 %head = insertelement <vscale x 16 x i8> poison, i8 16, i32 0
245 %splat = shufflevector <vscale x 16 x i8> %head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
246 %vc = or <vscale x 16 x i8> %va, %splat
247 ret <vscale x 16 x i8> %vc
250 define <vscale x 32 x i8> @vor_vx_nxv32i8(<vscale x 32 x i8> %va, i8 signext %b) {
251 ; CHECK-LABEL: vor_vx_nxv32i8:
253 ; CHECK-NEXT: vsetvli a1, zero, e8, m4, ta, ma
254 ; CHECK-NEXT: vor.vx v8, v8, a0
256 %head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0
257 %splat = shufflevector <vscale x 32 x i8> %head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
258 %vc = or <vscale x 32 x i8> %va, %splat
259 ret <vscale x 32 x i8> %vc
262 define <vscale x 32 x i8> @vor_vx_nxv32i8_0(<vscale x 32 x i8> %va) {
263 ; CHECK-LABEL: vor_vx_nxv32i8_0:
265 ; CHECK-NEXT: vsetvli a0, zero, e8, m4, ta, ma
266 ; CHECK-NEXT: vor.vi v8, v8, -12
268 %head = insertelement <vscale x 32 x i8> poison, i8 -12, i32 0
269 %splat = shufflevector <vscale x 32 x i8> %head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
270 %vc = or <vscale x 32 x i8> %va, %splat
271 ret <vscale x 32 x i8> %vc
274 define <vscale x 32 x i8> @vor_vx_nxv32i8_1(<vscale x 32 x i8> %va) {
275 ; CHECK-LABEL: vor_vx_nxv32i8_1:
277 ; CHECK-NEXT: vsetvli a0, zero, e8, m4, ta, ma
278 ; CHECK-NEXT: vor.vi v8, v8, 15
280 %head = insertelement <vscale x 32 x i8> poison, i8 15, i32 0
281 %splat = shufflevector <vscale x 32 x i8> %head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
282 %vc = or <vscale x 32 x i8> %va, %splat
283 ret <vscale x 32 x i8> %vc
286 define <vscale x 32 x i8> @vor_vx_nxv32i8_2(<vscale x 32 x i8> %va) {
287 ; CHECK-LABEL: vor_vx_nxv32i8_2:
289 ; CHECK-NEXT: li a0, 16
290 ; CHECK-NEXT: vsetvli a1, zero, e8, m4, ta, ma
291 ; CHECK-NEXT: vor.vx v8, v8, a0
293 %head = insertelement <vscale x 32 x i8> poison, i8 16, i32 0
294 %splat = shufflevector <vscale x 32 x i8> %head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
295 %vc = or <vscale x 32 x i8> %va, %splat
296 ret <vscale x 32 x i8> %vc
299 define <vscale x 64 x i8> @vor_vx_nxv64i8(<vscale x 64 x i8> %va, i8 signext %b) {
300 ; CHECK-LABEL: vor_vx_nxv64i8:
302 ; CHECK-NEXT: vsetvli a1, zero, e8, m8, ta, ma
303 ; CHECK-NEXT: vor.vx v8, v8, a0
305 %head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0
306 %splat = shufflevector <vscale x 64 x i8> %head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
307 %vc = or <vscale x 64 x i8> %va, %splat
308 ret <vscale x 64 x i8> %vc
311 define <vscale x 64 x i8> @vor_vx_nxv64i8_0(<vscale x 64 x i8> %va) {
312 ; CHECK-LABEL: vor_vx_nxv64i8_0:
314 ; CHECK-NEXT: vsetvli a0, zero, e8, m8, ta, ma
315 ; CHECK-NEXT: vor.vi v8, v8, -12
317 %head = insertelement <vscale x 64 x i8> poison, i8 -12, i32 0
318 %splat = shufflevector <vscale x 64 x i8> %head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
319 %vc = or <vscale x 64 x i8> %va, %splat
320 ret <vscale x 64 x i8> %vc
323 define <vscale x 64 x i8> @vor_vx_nxv64i8_1(<vscale x 64 x i8> %va) {
324 ; CHECK-LABEL: vor_vx_nxv64i8_1:
326 ; CHECK-NEXT: vsetvli a0, zero, e8, m8, ta, ma
327 ; CHECK-NEXT: vor.vi v8, v8, 15
329 %head = insertelement <vscale x 64 x i8> poison, i8 15, i32 0
330 %splat = shufflevector <vscale x 64 x i8> %head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
331 %vc = or <vscale x 64 x i8> %va, %splat
332 ret <vscale x 64 x i8> %vc
335 define <vscale x 64 x i8> @vor_vx_nxv64i8_2(<vscale x 64 x i8> %va) {
336 ; CHECK-LABEL: vor_vx_nxv64i8_2:
338 ; CHECK-NEXT: li a0, 16
339 ; CHECK-NEXT: vsetvli a1, zero, e8, m8, ta, ma
340 ; CHECK-NEXT: vor.vx v8, v8, a0
342 %head = insertelement <vscale x 64 x i8> poison, i8 16, i32 0
343 %splat = shufflevector <vscale x 64 x i8> %head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
344 %vc = or <vscale x 64 x i8> %va, %splat
345 ret <vscale x 64 x i8> %vc
348 define <vscale x 1 x i16> @vor_vx_nxv1i16(<vscale x 1 x i16> %va, i16 signext %b) {
349 ; CHECK-LABEL: vor_vx_nxv1i16:
351 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
352 ; CHECK-NEXT: vor.vx v8, v8, a0
354 %head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
355 %splat = shufflevector <vscale x 1 x i16> %head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
356 %vc = or <vscale x 1 x i16> %va, %splat
357 ret <vscale x 1 x i16> %vc
360 define <vscale x 1 x i16> @vor_vx_nxv1i16_0(<vscale x 1 x i16> %va) {
361 ; CHECK-LABEL: vor_vx_nxv1i16_0:
363 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
364 ; CHECK-NEXT: vor.vi v8, v8, -12
366 %head = insertelement <vscale x 1 x i16> poison, i16 -12, i32 0
367 %splat = shufflevector <vscale x 1 x i16> %head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
368 %vc = or <vscale x 1 x i16> %va, %splat
369 ret <vscale x 1 x i16> %vc
372 define <vscale x 1 x i16> @vor_vx_nxv1i16_1(<vscale x 1 x i16> %va) {
373 ; CHECK-LABEL: vor_vx_nxv1i16_1:
375 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
376 ; CHECK-NEXT: vor.vi v8, v8, 15
378 %head = insertelement <vscale x 1 x i16> poison, i16 15, i32 0
379 %splat = shufflevector <vscale x 1 x i16> %head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
380 %vc = or <vscale x 1 x i16> %va, %splat
381 ret <vscale x 1 x i16> %vc
384 define <vscale x 1 x i16> @vor_vx_nxv1i16_2(<vscale x 1 x i16> %va) {
385 ; CHECK-LABEL: vor_vx_nxv1i16_2:
387 ; CHECK-NEXT: li a0, 16
388 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
389 ; CHECK-NEXT: vor.vx v8, v8, a0
391 %head = insertelement <vscale x 1 x i16> poison, i16 16, i32 0
392 %splat = shufflevector <vscale x 1 x i16> %head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
393 %vc = or <vscale x 1 x i16> %va, %splat
394 ret <vscale x 1 x i16> %vc
397 define <vscale x 2 x i16> @vor_vx_nxv2i16(<vscale x 2 x i16> %va, i16 signext %b) {
398 ; CHECK-LABEL: vor_vx_nxv2i16:
400 ; CHECK-NEXT: vsetvli a1, zero, e16, mf2, ta, ma
401 ; CHECK-NEXT: vor.vx v8, v8, a0
403 %head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0
404 %splat = shufflevector <vscale x 2 x i16> %head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
405 %vc = or <vscale x 2 x i16> %va, %splat
406 ret <vscale x 2 x i16> %vc
409 define <vscale x 2 x i16> @vor_vx_nxv2i16_0(<vscale x 2 x i16> %va) {
410 ; CHECK-LABEL: vor_vx_nxv2i16_0:
412 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
413 ; CHECK-NEXT: vor.vi v8, v8, -12
415 %head = insertelement <vscale x 2 x i16> poison, i16 -12, i32 0
416 %splat = shufflevector <vscale x 2 x i16> %head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
417 %vc = or <vscale x 2 x i16> %va, %splat
418 ret <vscale x 2 x i16> %vc
421 define <vscale x 2 x i16> @vor_vx_nxv2i16_1(<vscale x 2 x i16> %va) {
422 ; CHECK-LABEL: vor_vx_nxv2i16_1:
424 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
425 ; CHECK-NEXT: vor.vi v8, v8, 15
427 %head = insertelement <vscale x 2 x i16> poison, i16 15, i32 0
428 %splat = shufflevector <vscale x 2 x i16> %head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
429 %vc = or <vscale x 2 x i16> %va, %splat
430 ret <vscale x 2 x i16> %vc
433 define <vscale x 2 x i16> @vor_vx_nxv2i16_2(<vscale x 2 x i16> %va) {
434 ; CHECK-LABEL: vor_vx_nxv2i16_2:
436 ; CHECK-NEXT: li a0, 16
437 ; CHECK-NEXT: vsetvli a1, zero, e16, mf2, ta, ma
438 ; CHECK-NEXT: vor.vx v8, v8, a0
440 %head = insertelement <vscale x 2 x i16> poison, i16 16, i32 0
441 %splat = shufflevector <vscale x 2 x i16> %head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
442 %vc = or <vscale x 2 x i16> %va, %splat
443 ret <vscale x 2 x i16> %vc
446 define <vscale x 4 x i16> @vor_vx_nxv4i16(<vscale x 4 x i16> %va, i16 signext %b) {
447 ; CHECK-LABEL: vor_vx_nxv4i16:
449 ; CHECK-NEXT: vsetvli a1, zero, e16, m1, ta, ma
450 ; CHECK-NEXT: vor.vx v8, v8, a0
452 %head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0
453 %splat = shufflevector <vscale x 4 x i16> %head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
454 %vc = or <vscale x 4 x i16> %va, %splat
455 ret <vscale x 4 x i16> %vc
458 define <vscale x 4 x i16> @vor_vx_nxv4i16_0(<vscale x 4 x i16> %va) {
459 ; CHECK-LABEL: vor_vx_nxv4i16_0:
461 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
462 ; CHECK-NEXT: vor.vi v8, v8, -12
464 %head = insertelement <vscale x 4 x i16> poison, i16 -12, i32 0
465 %splat = shufflevector <vscale x 4 x i16> %head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
466 %vc = or <vscale x 4 x i16> %va, %splat
467 ret <vscale x 4 x i16> %vc
470 define <vscale x 4 x i16> @vor_vx_nxv4i16_1(<vscale x 4 x i16> %va) {
471 ; CHECK-LABEL: vor_vx_nxv4i16_1:
473 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
474 ; CHECK-NEXT: vor.vi v8, v8, 15
476 %head = insertelement <vscale x 4 x i16> poison, i16 15, i32 0
477 %splat = shufflevector <vscale x 4 x i16> %head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
478 %vc = or <vscale x 4 x i16> %va, %splat
479 ret <vscale x 4 x i16> %vc
482 define <vscale x 4 x i16> @vor_vx_nxv4i16_2(<vscale x 4 x i16> %va) {
483 ; CHECK-LABEL: vor_vx_nxv4i16_2:
485 ; CHECK-NEXT: li a0, 16
486 ; CHECK-NEXT: vsetvli a1, zero, e16, m1, ta, ma
487 ; CHECK-NEXT: vor.vx v8, v8, a0
489 %head = insertelement <vscale x 4 x i16> poison, i16 16, i32 0
490 %splat = shufflevector <vscale x 4 x i16> %head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
491 %vc = or <vscale x 4 x i16> %va, %splat
492 ret <vscale x 4 x i16> %vc
495 define <vscale x 8 x i16> @vor_vx_nxv8i16(<vscale x 8 x i16> %va, i16 signext %b) {
496 ; CHECK-LABEL: vor_vx_nxv8i16:
498 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
499 ; CHECK-NEXT: vor.vx v8, v8, a0
501 %head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0
502 %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
503 %vc = or <vscale x 8 x i16> %va, %splat
504 ret <vscale x 8 x i16> %vc
507 define <vscale x 8 x i16> @vor_vx_nxv8i16_0(<vscale x 8 x i16> %va) {
508 ; CHECK-LABEL: vor_vx_nxv8i16_0:
510 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
511 ; CHECK-NEXT: vor.vi v8, v8, -12
513 %head = insertelement <vscale x 8 x i16> poison, i16 -12, i32 0
514 %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
515 %vc = or <vscale x 8 x i16> %va, %splat
516 ret <vscale x 8 x i16> %vc
519 define <vscale x 8 x i16> @vor_vx_nxv8i16_1(<vscale x 8 x i16> %va) {
520 ; CHECK-LABEL: vor_vx_nxv8i16_1:
522 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
523 ; CHECK-NEXT: vor.vi v8, v8, 15
525 %head = insertelement <vscale x 8 x i16> poison, i16 15, i32 0
526 %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
527 %vc = or <vscale x 8 x i16> %va, %splat
528 ret <vscale x 8 x i16> %vc
531 define <vscale x 8 x i16> @vor_vx_nxv8i16_2(<vscale x 8 x i16> %va) {
532 ; CHECK-LABEL: vor_vx_nxv8i16_2:
534 ; CHECK-NEXT: li a0, 16
535 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
536 ; CHECK-NEXT: vor.vx v8, v8, a0
538 %head = insertelement <vscale x 8 x i16> poison, i16 16, i32 0
539 %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
540 %vc = or <vscale x 8 x i16> %va, %splat
541 ret <vscale x 8 x i16> %vc
544 define <vscale x 16 x i16> @vor_vx_nxv16i16(<vscale x 16 x i16> %va, i16 signext %b) {
545 ; CHECK-LABEL: vor_vx_nxv16i16:
547 ; CHECK-NEXT: vsetvli a1, zero, e16, m4, ta, ma
548 ; CHECK-NEXT: vor.vx v8, v8, a0
550 %head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0
551 %splat = shufflevector <vscale x 16 x i16> %head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
552 %vc = or <vscale x 16 x i16> %va, %splat
553 ret <vscale x 16 x i16> %vc
556 define <vscale x 16 x i16> @vor_vx_nxv16i16_0(<vscale x 16 x i16> %va) {
557 ; CHECK-LABEL: vor_vx_nxv16i16_0:
559 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
560 ; CHECK-NEXT: vor.vi v8, v8, -12
562 %head = insertelement <vscale x 16 x i16> poison, i16 -12, i32 0
563 %splat = shufflevector <vscale x 16 x i16> %head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
564 %vc = or <vscale x 16 x i16> %va, %splat
565 ret <vscale x 16 x i16> %vc
568 define <vscale x 16 x i16> @vor_vx_nxv16i16_1(<vscale x 16 x i16> %va) {
569 ; CHECK-LABEL: vor_vx_nxv16i16_1:
571 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
572 ; CHECK-NEXT: vor.vi v8, v8, 15
574 %head = insertelement <vscale x 16 x i16> poison, i16 15, i32 0
575 %splat = shufflevector <vscale x 16 x i16> %head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
576 %vc = or <vscale x 16 x i16> %va, %splat
577 ret <vscale x 16 x i16> %vc
580 define <vscale x 16 x i16> @vor_vx_nxv16i16_2(<vscale x 16 x i16> %va) {
581 ; CHECK-LABEL: vor_vx_nxv16i16_2:
583 ; CHECK-NEXT: li a0, 16
584 ; CHECK-NEXT: vsetvli a1, zero, e16, m4, ta, ma
585 ; CHECK-NEXT: vor.vx v8, v8, a0
587 %head = insertelement <vscale x 16 x i16> poison, i16 16, i32 0
588 %splat = shufflevector <vscale x 16 x i16> %head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
589 %vc = or <vscale x 16 x i16> %va, %splat
590 ret <vscale x 16 x i16> %vc
593 define <vscale x 32 x i16> @vor_vx_nxv32i16(<vscale x 32 x i16> %va, i16 signext %b) {
594 ; CHECK-LABEL: vor_vx_nxv32i16:
596 ; CHECK-NEXT: vsetvli a1, zero, e16, m8, ta, ma
597 ; CHECK-NEXT: vor.vx v8, v8, a0
599 %head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
600 %splat = shufflevector <vscale x 32 x i16> %head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
601 %vc = or <vscale x 32 x i16> %va, %splat
602 ret <vscale x 32 x i16> %vc
605 define <vscale x 32 x i16> @vor_vx_nxv32i16_0(<vscale x 32 x i16> %va) {
606 ; CHECK-LABEL: vor_vx_nxv32i16_0:
608 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
609 ; CHECK-NEXT: vor.vi v8, v8, -12
611 %head = insertelement <vscale x 32 x i16> poison, i16 -12, i32 0
612 %splat = shufflevector <vscale x 32 x i16> %head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
613 %vc = or <vscale x 32 x i16> %va, %splat
614 ret <vscale x 32 x i16> %vc
617 define <vscale x 32 x i16> @vor_vx_nxv32i16_1(<vscale x 32 x i16> %va) {
618 ; CHECK-LABEL: vor_vx_nxv32i16_1:
620 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
621 ; CHECK-NEXT: vor.vi v8, v8, 15
623 %head = insertelement <vscale x 32 x i16> poison, i16 15, i32 0
624 %splat = shufflevector <vscale x 32 x i16> %head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
625 %vc = or <vscale x 32 x i16> %va, %splat
626 ret <vscale x 32 x i16> %vc
629 define <vscale x 32 x i16> @vor_vx_nxv32i16_2(<vscale x 32 x i16> %va) {
630 ; CHECK-LABEL: vor_vx_nxv32i16_2:
632 ; CHECK-NEXT: li a0, 16
633 ; CHECK-NEXT: vsetvli a1, zero, e16, m8, ta, ma
634 ; CHECK-NEXT: vor.vx v8, v8, a0
636 %head = insertelement <vscale x 32 x i16> poison, i16 16, i32 0
637 %splat = shufflevector <vscale x 32 x i16> %head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
638 %vc = or <vscale x 32 x i16> %va, %splat
639 ret <vscale x 32 x i16> %vc
642 define <vscale x 1 x i32> @vor_vx_nxv1i32(<vscale x 1 x i32> %va, i32 signext %b) {
643 ; CHECK-LABEL: vor_vx_nxv1i32:
645 ; CHECK-NEXT: vsetvli a1, zero, e32, mf2, ta, ma
646 ; CHECK-NEXT: vor.vx v8, v8, a0
648 %head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
649 %splat = shufflevector <vscale x 1 x i32> %head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
650 %vc = or <vscale x 1 x i32> %va, %splat
651 ret <vscale x 1 x i32> %vc
654 define <vscale x 1 x i32> @vor_vx_nxv1i32_0(<vscale x 1 x i32> %va) {
655 ; CHECK-LABEL: vor_vx_nxv1i32_0:
657 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
658 ; CHECK-NEXT: vor.vi v8, v8, -12
660 %head = insertelement <vscale x 1 x i32> poison, i32 -12, i32 0
661 %splat = shufflevector <vscale x 1 x i32> %head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
662 %vc = or <vscale x 1 x i32> %va, %splat
663 ret <vscale x 1 x i32> %vc
666 define <vscale x 1 x i32> @vor_vx_nxv1i32_1(<vscale x 1 x i32> %va) {
667 ; CHECK-LABEL: vor_vx_nxv1i32_1:
669 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
670 ; CHECK-NEXT: vor.vi v8, v8, 15
672 %head = insertelement <vscale x 1 x i32> poison, i32 15, i32 0
673 %splat = shufflevector <vscale x 1 x i32> %head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
674 %vc = or <vscale x 1 x i32> %va, %splat
675 ret <vscale x 1 x i32> %vc
678 define <vscale x 1 x i32> @vor_vx_nxv1i32_2(<vscale x 1 x i32> %va) {
679 ; CHECK-LABEL: vor_vx_nxv1i32_2:
681 ; CHECK-NEXT: li a0, 16
682 ; CHECK-NEXT: vsetvli a1, zero, e32, mf2, ta, ma
683 ; CHECK-NEXT: vor.vx v8, v8, a0
685 %head = insertelement <vscale x 1 x i32> poison, i32 16, i32 0
686 %splat = shufflevector <vscale x 1 x i32> %head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
687 %vc = or <vscale x 1 x i32> %va, %splat
688 ret <vscale x 1 x i32> %vc
691 define <vscale x 2 x i32> @vor_vx_nxv2i32(<vscale x 2 x i32> %va, i32 signext %b) {
692 ; CHECK-LABEL: vor_vx_nxv2i32:
694 ; CHECK-NEXT: vsetvli a1, zero, e32, m1, ta, ma
695 ; CHECK-NEXT: vor.vx v8, v8, a0
697 %head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
698 %splat = shufflevector <vscale x 2 x i32> %head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
699 %vc = or <vscale x 2 x i32> %va, %splat
700 ret <vscale x 2 x i32> %vc
703 define <vscale x 2 x i32> @vor_vx_nxv2i32_0(<vscale x 2 x i32> %va) {
704 ; CHECK-LABEL: vor_vx_nxv2i32_0:
706 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
707 ; CHECK-NEXT: vor.vi v8, v8, -12
709 %head = insertelement <vscale x 2 x i32> poison, i32 -12, i32 0
710 %splat = shufflevector <vscale x 2 x i32> %head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
711 %vc = or <vscale x 2 x i32> %va, %splat
712 ret <vscale x 2 x i32> %vc
715 define <vscale x 2 x i32> @vor_vx_nxv2i32_1(<vscale x 2 x i32> %va) {
716 ; CHECK-LABEL: vor_vx_nxv2i32_1:
718 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
719 ; CHECK-NEXT: vor.vi v8, v8, 15
721 %head = insertelement <vscale x 2 x i32> poison, i32 15, i32 0
722 %splat = shufflevector <vscale x 2 x i32> %head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
723 %vc = or <vscale x 2 x i32> %va, %splat
724 ret <vscale x 2 x i32> %vc
727 define <vscale x 2 x i32> @vor_vx_nxv2i32_2(<vscale x 2 x i32> %va) {
728 ; CHECK-LABEL: vor_vx_nxv2i32_2:
730 ; CHECK-NEXT: li a0, 16
731 ; CHECK-NEXT: vsetvli a1, zero, e32, m1, ta, ma
732 ; CHECK-NEXT: vor.vx v8, v8, a0
734 %head = insertelement <vscale x 2 x i32> poison, i32 16, i32 0
735 %splat = shufflevector <vscale x 2 x i32> %head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
736 %vc = or <vscale x 2 x i32> %va, %splat
737 ret <vscale x 2 x i32> %vc
740 define <vscale x 4 x i32> @vor_vx_nxv4i32(<vscale x 4 x i32> %va, i32 signext %b) {
741 ; CHECK-LABEL: vor_vx_nxv4i32:
743 ; CHECK-NEXT: vsetvli a1, zero, e32, m2, ta, ma
744 ; CHECK-NEXT: vor.vx v8, v8, a0
746 %head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
747 %splat = shufflevector <vscale x 4 x i32> %head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
748 %vc = or <vscale x 4 x i32> %va, %splat
749 ret <vscale x 4 x i32> %vc
752 define <vscale x 4 x i32> @vor_vx_nxv4i32_0(<vscale x 4 x i32> %va) {
753 ; CHECK-LABEL: vor_vx_nxv4i32_0:
755 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
756 ; CHECK-NEXT: vor.vi v8, v8, -12
758 %head = insertelement <vscale x 4 x i32> poison, i32 -12, i32 0
759 %splat = shufflevector <vscale x 4 x i32> %head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
760 %vc = or <vscale x 4 x i32> %va, %splat
761 ret <vscale x 4 x i32> %vc
764 define <vscale x 4 x i32> @vor_vx_nxv4i32_1(<vscale x 4 x i32> %va) {
765 ; CHECK-LABEL: vor_vx_nxv4i32_1:
767 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
768 ; CHECK-NEXT: vor.vi v8, v8, 15
770 %head = insertelement <vscale x 4 x i32> poison, i32 15, i32 0
771 %splat = shufflevector <vscale x 4 x i32> %head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
772 %vc = or <vscale x 4 x i32> %va, %splat
773 ret <vscale x 4 x i32> %vc
776 define <vscale x 4 x i32> @vor_vx_nxv4i32_2(<vscale x 4 x i32> %va) {
777 ; CHECK-LABEL: vor_vx_nxv4i32_2:
779 ; CHECK-NEXT: li a0, 16
780 ; CHECK-NEXT: vsetvli a1, zero, e32, m2, ta, ma
781 ; CHECK-NEXT: vor.vx v8, v8, a0
783 %head = insertelement <vscale x 4 x i32> poison, i32 16, i32 0
784 %splat = shufflevector <vscale x 4 x i32> %head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
785 %vc = or <vscale x 4 x i32> %va, %splat
786 ret <vscale x 4 x i32> %vc
789 define <vscale x 8 x i32> @vor_vx_nxv8i32(<vscale x 8 x i32> %va, i32 signext %b) {
790 ; CHECK-LABEL: vor_vx_nxv8i32:
792 ; CHECK-NEXT: vsetvli a1, zero, e32, m4, ta, ma
793 ; CHECK-NEXT: vor.vx v8, v8, a0
795 %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
796 %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
797 %vc = or <vscale x 8 x i32> %va, %splat
798 ret <vscale x 8 x i32> %vc
801 define <vscale x 8 x i32> @vor_vx_nxv8i32_0(<vscale x 8 x i32> %va) {
802 ; CHECK-LABEL: vor_vx_nxv8i32_0:
804 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
805 ; CHECK-NEXT: vor.vi v8, v8, -12
807 %head = insertelement <vscale x 8 x i32> poison, i32 -12, i32 0
808 %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
809 %vc = or <vscale x 8 x i32> %va, %splat
810 ret <vscale x 8 x i32> %vc
813 define <vscale x 8 x i32> @vor_vx_nxv8i32_1(<vscale x 8 x i32> %va) {
814 ; CHECK-LABEL: vor_vx_nxv8i32_1:
816 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
817 ; CHECK-NEXT: vor.vi v8, v8, 15
819 %head = insertelement <vscale x 8 x i32> poison, i32 15, i32 0
820 %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
821 %vc = or <vscale x 8 x i32> %va, %splat
822 ret <vscale x 8 x i32> %vc
825 define <vscale x 8 x i32> @vor_vx_nxv8i32_2(<vscale x 8 x i32> %va) {
826 ; CHECK-LABEL: vor_vx_nxv8i32_2:
828 ; CHECK-NEXT: li a0, 16
829 ; CHECK-NEXT: vsetvli a1, zero, e32, m4, ta, ma
830 ; CHECK-NEXT: vor.vx v8, v8, a0
832 %head = insertelement <vscale x 8 x i32> poison, i32 16, i32 0
833 %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
834 %vc = or <vscale x 8 x i32> %va, %splat
835 ret <vscale x 8 x i32> %vc
838 define <vscale x 16 x i32> @vor_vx_nxv16i32(<vscale x 16 x i32> %va, i32 signext %b) {
839 ; CHECK-LABEL: vor_vx_nxv16i32:
841 ; CHECK-NEXT: vsetvli a1, zero, e32, m8, ta, ma
842 ; CHECK-NEXT: vor.vx v8, v8, a0
844 %head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0
845 %splat = shufflevector <vscale x 16 x i32> %head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
846 %vc = or <vscale x 16 x i32> %va, %splat
847 ret <vscale x 16 x i32> %vc
850 define <vscale x 16 x i32> @vor_vx_nxv16i32_0(<vscale x 16 x i32> %va) {
851 ; CHECK-LABEL: vor_vx_nxv16i32_0:
853 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
854 ; CHECK-NEXT: vor.vi v8, v8, -12
856 %head = insertelement <vscale x 16 x i32> poison, i32 -12, i32 0
857 %splat = shufflevector <vscale x 16 x i32> %head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
858 %vc = or <vscale x 16 x i32> %va, %splat
859 ret <vscale x 16 x i32> %vc
862 define <vscale x 16 x i32> @vor_vx_nxv16i32_1(<vscale x 16 x i32> %va) {
863 ; CHECK-LABEL: vor_vx_nxv16i32_1:
865 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
866 ; CHECK-NEXT: vor.vi v8, v8, 15
868 %head = insertelement <vscale x 16 x i32> poison, i32 15, i32 0
869 %splat = shufflevector <vscale x 16 x i32> %head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
870 %vc = or <vscale x 16 x i32> %va, %splat
871 ret <vscale x 16 x i32> %vc
874 define <vscale x 16 x i32> @vor_vx_nxv16i32_2(<vscale x 16 x i32> %va) {
875 ; CHECK-LABEL: vor_vx_nxv16i32_2:
877 ; CHECK-NEXT: li a0, 16
878 ; CHECK-NEXT: vsetvli a1, zero, e32, m8, ta, ma
879 ; CHECK-NEXT: vor.vx v8, v8, a0
881 %head = insertelement <vscale x 16 x i32> poison, i32 16, i32 0
882 %splat = shufflevector <vscale x 16 x i32> %head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
883 %vc = or <vscale x 16 x i32> %va, %splat
884 ret <vscale x 16 x i32> %vc
887 define <vscale x 1 x i64> @vor_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b) {
888 ; RV32-LABEL: vor_vx_nxv1i64:
890 ; RV32-NEXT: addi sp, sp, -16
891 ; RV32-NEXT: .cfi_def_cfa_offset 16
892 ; RV32-NEXT: sw a1, 12(sp)
893 ; RV32-NEXT: sw a0, 8(sp)
894 ; RV32-NEXT: addi a0, sp, 8
895 ; RV32-NEXT: vsetvli a1, zero, e64, m1, ta, ma
896 ; RV32-NEXT: vlse64.v v9, (a0), zero
897 ; RV32-NEXT: vor.vv v8, v8, v9
898 ; RV32-NEXT: addi sp, sp, 16
901 ; RV64-LABEL: vor_vx_nxv1i64:
903 ; RV64-NEXT: vsetvli a1, zero, e64, m1, ta, ma
904 ; RV64-NEXT: vor.vx v8, v8, a0
906 %head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
907 %splat = shufflevector <vscale x 1 x i64> %head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
908 %vc = or <vscale x 1 x i64> %va, %splat
909 ret <vscale x 1 x i64> %vc
912 define <vscale x 1 x i64> @vor_vx_nxv1i64_0(<vscale x 1 x i64> %va) {
913 ; CHECK-LABEL: vor_vx_nxv1i64_0:
915 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
916 ; CHECK-NEXT: vor.vi v8, v8, -12
918 %head = insertelement <vscale x 1 x i64> poison, i64 -12, i32 0
919 %splat = shufflevector <vscale x 1 x i64> %head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
920 %vc = or <vscale x 1 x i64> %va, %splat
921 ret <vscale x 1 x i64> %vc
924 define <vscale x 1 x i64> @vor_vx_nxv1i64_1(<vscale x 1 x i64> %va) {
925 ; CHECK-LABEL: vor_vx_nxv1i64_1:
927 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
928 ; CHECK-NEXT: vor.vi v8, v8, 15
930 %head = insertelement <vscale x 1 x i64> poison, i64 15, i32 0
931 %splat = shufflevector <vscale x 1 x i64> %head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
932 %vc = or <vscale x 1 x i64> %va, %splat
933 ret <vscale x 1 x i64> %vc
936 define <vscale x 1 x i64> @vor_vx_nxv1i64_2(<vscale x 1 x i64> %va) {
937 ; CHECK-LABEL: vor_vx_nxv1i64_2:
939 ; CHECK-NEXT: li a0, 16
940 ; CHECK-NEXT: vsetvli a1, zero, e64, m1, ta, ma
941 ; CHECK-NEXT: vor.vx v8, v8, a0
943 %head = insertelement <vscale x 1 x i64> poison, i64 16, i32 0
944 %splat = shufflevector <vscale x 1 x i64> %head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
945 %vc = or <vscale x 1 x i64> %va, %splat
946 ret <vscale x 1 x i64> %vc
949 define <vscale x 2 x i64> @vor_vx_nxv2i64(<vscale x 2 x i64> %va, i64 %b) {
950 ; RV32-LABEL: vor_vx_nxv2i64:
952 ; RV32-NEXT: addi sp, sp, -16
953 ; RV32-NEXT: .cfi_def_cfa_offset 16
954 ; RV32-NEXT: sw a1, 12(sp)
955 ; RV32-NEXT: sw a0, 8(sp)
956 ; RV32-NEXT: addi a0, sp, 8
957 ; RV32-NEXT: vsetvli a1, zero, e64, m2, ta, ma
958 ; RV32-NEXT: vlse64.v v10, (a0), zero
959 ; RV32-NEXT: vor.vv v8, v8, v10
960 ; RV32-NEXT: addi sp, sp, 16
963 ; RV64-LABEL: vor_vx_nxv2i64:
965 ; RV64-NEXT: vsetvli a1, zero, e64, m2, ta, ma
966 ; RV64-NEXT: vor.vx v8, v8, a0
968 %head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0
969 %splat = shufflevector <vscale x 2 x i64> %head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
970 %vc = or <vscale x 2 x i64> %va, %splat
971 ret <vscale x 2 x i64> %vc
974 define <vscale x 2 x i64> @vor_vx_nxv2i64_0(<vscale x 2 x i64> %va) {
975 ; CHECK-LABEL: vor_vx_nxv2i64_0:
977 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
978 ; CHECK-NEXT: vor.vi v8, v8, -12
980 %head = insertelement <vscale x 2 x i64> poison, i64 -12, i32 0
981 %splat = shufflevector <vscale x 2 x i64> %head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
982 %vc = or <vscale x 2 x i64> %va, %splat
983 ret <vscale x 2 x i64> %vc
986 define <vscale x 2 x i64> @vor_vx_nxv2i64_1(<vscale x 2 x i64> %va) {
987 ; CHECK-LABEL: vor_vx_nxv2i64_1:
989 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
990 ; CHECK-NEXT: vor.vi v8, v8, 15
992 %head = insertelement <vscale x 2 x i64> poison, i64 15, i32 0
993 %splat = shufflevector <vscale x 2 x i64> %head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
994 %vc = or <vscale x 2 x i64> %va, %splat
995 ret <vscale x 2 x i64> %vc
998 define <vscale x 2 x i64> @vor_vx_nxv2i64_2(<vscale x 2 x i64> %va) {
999 ; CHECK-LABEL: vor_vx_nxv2i64_2:
1001 ; CHECK-NEXT: li a0, 16
1002 ; CHECK-NEXT: vsetvli a1, zero, e64, m2, ta, ma
1003 ; CHECK-NEXT: vor.vx v8, v8, a0
1005 %head = insertelement <vscale x 2 x i64> poison, i64 16, i32 0
1006 %splat = shufflevector <vscale x 2 x i64> %head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1007 %vc = or <vscale x 2 x i64> %va, %splat
1008 ret <vscale x 2 x i64> %vc
1011 define <vscale x 4 x i64> @vor_vx_nxv4i64(<vscale x 4 x i64> %va, i64 %b) {
1012 ; RV32-LABEL: vor_vx_nxv4i64:
1014 ; RV32-NEXT: addi sp, sp, -16
1015 ; RV32-NEXT: .cfi_def_cfa_offset 16
1016 ; RV32-NEXT: sw a1, 12(sp)
1017 ; RV32-NEXT: sw a0, 8(sp)
1018 ; RV32-NEXT: addi a0, sp, 8
1019 ; RV32-NEXT: vsetvli a1, zero, e64, m4, ta, ma
1020 ; RV32-NEXT: vlse64.v v12, (a0), zero
1021 ; RV32-NEXT: vor.vv v8, v8, v12
1022 ; RV32-NEXT: addi sp, sp, 16
1025 ; RV64-LABEL: vor_vx_nxv4i64:
1027 ; RV64-NEXT: vsetvli a1, zero, e64, m4, ta, ma
1028 ; RV64-NEXT: vor.vx v8, v8, a0
1030 %head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0
1031 %splat = shufflevector <vscale x 4 x i64> %head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1032 %vc = or <vscale x 4 x i64> %va, %splat
1033 ret <vscale x 4 x i64> %vc
1036 define <vscale x 4 x i64> @vor_vx_nxv4i64_0(<vscale x 4 x i64> %va) {
1037 ; CHECK-LABEL: vor_vx_nxv4i64_0:
1039 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
1040 ; CHECK-NEXT: vor.vi v8, v8, -12
1042 %head = insertelement <vscale x 4 x i64> poison, i64 -12, i32 0
1043 %splat = shufflevector <vscale x 4 x i64> %head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1044 %vc = or <vscale x 4 x i64> %va, %splat
1045 ret <vscale x 4 x i64> %vc
1048 define <vscale x 4 x i64> @vor_vx_nxv4i64_1(<vscale x 4 x i64> %va) {
1049 ; CHECK-LABEL: vor_vx_nxv4i64_1:
1051 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
1052 ; CHECK-NEXT: vor.vi v8, v8, 15
1054 %head = insertelement <vscale x 4 x i64> poison, i64 15, i32 0
1055 %splat = shufflevector <vscale x 4 x i64> %head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1056 %vc = or <vscale x 4 x i64> %va, %splat
1057 ret <vscale x 4 x i64> %vc
1060 define <vscale x 4 x i64> @vor_vx_nxv4i64_2(<vscale x 4 x i64> %va) {
1061 ; CHECK-LABEL: vor_vx_nxv4i64_2:
1063 ; CHECK-NEXT: li a0, 16
1064 ; CHECK-NEXT: vsetvli a1, zero, e64, m4, ta, ma
1065 ; CHECK-NEXT: vor.vx v8, v8, a0
1067 %head = insertelement <vscale x 4 x i64> poison, i64 16, i32 0
1068 %splat = shufflevector <vscale x 4 x i64> %head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1069 %vc = or <vscale x 4 x i64> %va, %splat
1070 ret <vscale x 4 x i64> %vc
1073 define <vscale x 8 x i64> @vor_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {
1074 ; RV32-LABEL: vor_vx_nxv8i64:
1076 ; RV32-NEXT: addi sp, sp, -16
1077 ; RV32-NEXT: .cfi_def_cfa_offset 16
1078 ; RV32-NEXT: sw a1, 12(sp)
1079 ; RV32-NEXT: sw a0, 8(sp)
1080 ; RV32-NEXT: addi a0, sp, 8
1081 ; RV32-NEXT: vsetvli a1, zero, e64, m8, ta, ma
1082 ; RV32-NEXT: vlse64.v v16, (a0), zero
1083 ; RV32-NEXT: vor.vv v8, v8, v16
1084 ; RV32-NEXT: addi sp, sp, 16
1087 ; RV64-LABEL: vor_vx_nxv8i64:
1089 ; RV64-NEXT: vsetvli a1, zero, e64, m8, ta, ma
1090 ; RV64-NEXT: vor.vx v8, v8, a0
1092 %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
1093 %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1094 %vc = or <vscale x 8 x i64> %va, %splat
1095 ret <vscale x 8 x i64> %vc
1098 define <vscale x 8 x i64> @vor_vx_nxv8i64_0(<vscale x 8 x i64> %va) {
1099 ; CHECK-LABEL: vor_vx_nxv8i64_0:
1101 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
1102 ; CHECK-NEXT: vor.vi v8, v8, -12
1104 %head = insertelement <vscale x 8 x i64> poison, i64 -12, i32 0
1105 %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1106 %vc = or <vscale x 8 x i64> %va, %splat
1107 ret <vscale x 8 x i64> %vc
1110 define <vscale x 8 x i64> @vor_vx_nxv8i64_1(<vscale x 8 x i64> %va) {
1111 ; CHECK-LABEL: vor_vx_nxv8i64_1:
1113 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
1114 ; CHECK-NEXT: vor.vi v8, v8, 15
1116 %head = insertelement <vscale x 8 x i64> poison, i64 15, i32 0
1117 %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1118 %vc = or <vscale x 8 x i64> %va, %splat
1119 ret <vscale x 8 x i64> %vc
1122 define <vscale x 8 x i64> @vor_vx_nxv8i64_2(<vscale x 8 x i64> %va) {
1123 ; CHECK-LABEL: vor_vx_nxv8i64_2:
1125 ; CHECK-NEXT: li a0, 16
1126 ; CHECK-NEXT: vsetvli a1, zero, e64, m8, ta, ma
1127 ; CHECK-NEXT: vor.vx v8, v8, a0
1129 %head = insertelement <vscale x 8 x i64> poison, i64 16, i32 0
1130 %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1131 %vc = or <vscale x 8 x i64> %va, %splat
1132 ret <vscale x 8 x i64> %vc
1136 define <vscale x 8 x i64> @vor_vx_nxv8i64_3(<vscale x 8 x i64> %va) {
1137 ; CHECK-LABEL: vor_vx_nxv8i64_3:
1139 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
1140 ; CHECK-NEXT: vmv.v.i v8, -1
1142 %head = insertelement <vscale x 8 x i64> poison, i64 -1, i32 0
1143 %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1144 %vc = or <vscale x 8 x i64> %va, %splat
1145 ret <vscale x 8 x i64> %vc
1148 define <vscale x 8 x i64> @vor_xx_nxv8i64(i64 %a, i64 %b) nounwind {
1149 ; RV32-LABEL: vor_xx_nxv8i64:
1151 ; RV32-NEXT: addi sp, sp, -16
1152 ; RV32-NEXT: sw a1, 12(sp)
1153 ; RV32-NEXT: sw a0, 8(sp)
1154 ; RV32-NEXT: addi a0, sp, 8
1155 ; RV32-NEXT: vsetvli a1, zero, e64, m8, ta, ma
1156 ; RV32-NEXT: vlse64.v v8, (a0), zero
1157 ; RV32-NEXT: sw a3, 4(sp)
1158 ; RV32-NEXT: sw a2, 0(sp)
1159 ; RV32-NEXT: mv a0, sp
1160 ; RV32-NEXT: vlse64.v v16, (a0), zero
1161 ; RV32-NEXT: vor.vv v8, v8, v16
1162 ; RV32-NEXT: addi sp, sp, 16
1165 ; RV64-LABEL: vor_xx_nxv8i64:
1167 ; RV64-NEXT: or a0, a0, a1
1168 ; RV64-NEXT: vsetvli a1, zero, e64, m8, ta, ma
1169 ; RV64-NEXT: vmv.v.x v8, a0
1171 %head1 = insertelement <vscale x 8 x i64> poison, i64 %a, i32 0
1172 %splat1 = shufflevector <vscale x 8 x i64> %head1, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1173 %head2 = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
1174 %splat2 = shufflevector <vscale x 8 x i64> %head2, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1175 %v = or <vscale x 8 x i64> %splat1, %splat2
1176 ret <vscale x 8 x i64> %v
1179 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) {
1180 ; CHECK-LABEL: vor_vv_mask_nxv8i32:
1182 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
1183 ; CHECK-NEXT: vor.vv v8, v8, v12, v0.t
1185 %vs = select <vscale x 8 x i1> %mask, <vscale x 8 x i32> %vb, <vscale x 8 x i32> zeroinitializer
1186 %vc = or <vscale x 8 x i32> %va, %vs
1187 ret <vscale x 8 x i32> %vc
1190 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) {
1191 ; CHECK-LABEL: vor_vx_mask_nxv8i32:
1193 ; CHECK-NEXT: vsetvli a1, zero, e32, m4, ta, mu
1194 ; CHECK-NEXT: vor.vx v8, v8, a0, v0.t
1196 %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1197 %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1198 %vs = select <vscale x 8 x i1> %mask, <vscale x 8 x i32> %splat, <vscale x 8 x i32> zeroinitializer
1199 %vc = or <vscale x 8 x i32> %va, %vs
1200 ret <vscale x 8 x i32> %vc
1203 define <vscale x 8 x i32> @vor_vi_mask_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %mask) {
1204 ; CHECK-LABEL: vor_vi_mask_nxv8i32:
1206 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
1207 ; CHECK-NEXT: vor.vi v8, v8, 7, v0.t
1209 %head = insertelement <vscale x 8 x i32> poison, i32 7, i32 0
1210 %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1211 %vs = select <vscale x 8 x i1> %mask, <vscale x 8 x i32> %splat, <vscale x 8 x i32> zeroinitializer
1212 %vc = or <vscale x 8 x i32> %va, %vs
1213 ret <vscale x 8 x i32> %vc