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