xref: /llvm-project/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vor-vp.ll (revision 97982a8c605fac7c86d02e641a6cd7898b3ca343)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s \
3; RUN:   | FileCheck %s --check-prefixes=CHECK,RV32
4; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s \
5; RUN:   | FileCheck %s --check-prefixes=CHECK,RV64
6
7declare <8 x i7> @llvm.vp.or.v8i7(<8 x i7>, <8 x i7>, <8 x i1>, i32)
8
9define <8 x i7> @vor_vv_v8i7(<8 x i7> %va, <8 x i7> %b, <8 x i1> %m, i32 zeroext %evl) {
10; CHECK-LABEL: vor_vv_v8i7:
11; CHECK:       # %bb.0:
12; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
13; CHECK-NEXT:    vor.vv v8, v8, v9, v0.t
14; CHECK-NEXT:    ret
15  %v = call <8 x i7> @llvm.vp.or.v8i7(<8 x i7> %va, <8 x i7> %b, <8 x i1> %m, i32 %evl)
16  ret <8 x i7> %v
17}
18
19declare <2 x i8> @llvm.vp.or.v2i8(<2 x i8>, <2 x i8>, <2 x i1>, i32)
20
21define <2 x i8> @vor_vv_v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> %m, i32 zeroext %evl) {
22; CHECK-LABEL: vor_vv_v2i8:
23; CHECK:       # %bb.0:
24; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
25; CHECK-NEXT:    vor.vv v8, v8, v9, v0.t
26; CHECK-NEXT:    ret
27  %v = call <2 x i8> @llvm.vp.or.v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> %m, i32 %evl)
28  ret <2 x i8> %v
29}
30
31define <2 x i8> @vor_vv_v2i8_unmasked(<2 x i8> %va, <2 x i8> %b, i32 zeroext %evl) {
32; CHECK-LABEL: vor_vv_v2i8_unmasked:
33; CHECK:       # %bb.0:
34; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
35; CHECK-NEXT:    vor.vv v8, v8, v9
36; CHECK-NEXT:    ret
37  %v = call <2 x i8> @llvm.vp.or.v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> splat (i1 true), i32 %evl)
38  ret <2 x i8> %v
39}
40
41define <2 x i8> @vor_vx_v2i8(<2 x i8> %va, i8 %b, <2 x i1> %m, i32 zeroext %evl) {
42; CHECK-LABEL: vor_vx_v2i8:
43; CHECK:       # %bb.0:
44; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
45; CHECK-NEXT:    vor.vx v8, v8, a0, v0.t
46; CHECK-NEXT:    ret
47  %elt.head = insertelement <2 x i8> poison, i8 %b, i32 0
48  %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
49  %v = call <2 x i8> @llvm.vp.or.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> %m, i32 %evl)
50  ret <2 x i8> %v
51}
52
53define <2 x i8> @vor_vx_v2i8_unmasked(<2 x i8> %va, i8 %b, i32 zeroext %evl) {
54; CHECK-LABEL: vor_vx_v2i8_unmasked:
55; CHECK:       # %bb.0:
56; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
57; CHECK-NEXT:    vor.vx v8, v8, a0
58; CHECK-NEXT:    ret
59  %elt.head = insertelement <2 x i8> poison, i8 %b, i32 0
60  %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
61  %v = call <2 x i8> @llvm.vp.or.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> splat (i1 true), i32 %evl)
62  ret <2 x i8> %v
63}
64
65define <2 x i8> @vor_vi_v2i8(<2 x i8> %va, <2 x i1> %m, i32 zeroext %evl) {
66; CHECK-LABEL: vor_vi_v2i8:
67; CHECK:       # %bb.0:
68; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
69; CHECK-NEXT:    vor.vi v8, v8, 5, v0.t
70; CHECK-NEXT:    ret
71  %v = call <2 x i8> @llvm.vp.or.v2i8(<2 x i8> %va, <2 x i8> splat (i8 5), <2 x i1> %m, i32 %evl)
72  ret <2 x i8> %v
73}
74
75define <2 x i8> @vor_vi_v2i8_unmasked(<2 x i8> %va, i32 zeroext %evl) {
76; CHECK-LABEL: vor_vi_v2i8_unmasked:
77; CHECK:       # %bb.0:
78; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
79; CHECK-NEXT:    vor.vi v8, v8, 5
80; CHECK-NEXT:    ret
81  %v = call <2 x i8> @llvm.vp.or.v2i8(<2 x i8> %va, <2 x i8> splat (i8 5), <2 x i1> splat (i1 true), i32 %evl)
82  ret <2 x i8> %v
83}
84
85declare <4 x i8> @llvm.vp.or.v4i8(<4 x i8>, <4 x i8>, <4 x i1>, i32)
86
87define <4 x i8> @vor_vv_v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 zeroext %evl) {
88; CHECK-LABEL: vor_vv_v4i8:
89; CHECK:       # %bb.0:
90; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
91; CHECK-NEXT:    vor.vv v8, v8, v9, v0.t
92; CHECK-NEXT:    ret
93  %v = call <4 x i8> @llvm.vp.or.v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 %evl)
94  ret <4 x i8> %v
95}
96
97define <4 x i8> @vor_vv_v4i8_unmasked(<4 x i8> %va, <4 x i8> %b, i32 zeroext %evl) {
98; CHECK-LABEL: vor_vv_v4i8_unmasked:
99; CHECK:       # %bb.0:
100; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
101; CHECK-NEXT:    vor.vv v8, v8, v9
102; CHECK-NEXT:    ret
103  %v = call <4 x i8> @llvm.vp.or.v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> splat (i1 true), i32 %evl)
104  ret <4 x i8> %v
105}
106
107define <4 x i8> @vor_vx_v4i8(<4 x i8> %va, i8 %b, <4 x i1> %m, i32 zeroext %evl) {
108; CHECK-LABEL: vor_vx_v4i8:
109; CHECK:       # %bb.0:
110; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
111; CHECK-NEXT:    vor.vx v8, v8, a0, v0.t
112; CHECK-NEXT:    ret
113  %elt.head = insertelement <4 x i8> poison, i8 %b, i32 0
114  %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
115  %v = call <4 x i8> @llvm.vp.or.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> %m, i32 %evl)
116  ret <4 x i8> %v
117}
118
119define <4 x i8> @vor_vx_v4i8_commute(<4 x i8> %va, i8 %b, <4 x i1> %m, i32 zeroext %evl) {
120; CHECK-LABEL: vor_vx_v4i8_commute:
121; CHECK:       # %bb.0:
122; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
123; CHECK-NEXT:    vor.vx v8, v8, a0, v0.t
124; CHECK-NEXT:    ret
125  %elt.head = insertelement <4 x i8> poison, i8 %b, i32 0
126  %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
127  %v = call <4 x i8> @llvm.vp.or.v4i8(<4 x i8> %vb, <4 x i8> %va, <4 x i1> %m, i32 %evl)
128  ret <4 x i8> %v
129}
130
131define <4 x i8> @vor_vx_v4i8_unmasked(<4 x i8> %va, i8 %b, i32 zeroext %evl) {
132; CHECK-LABEL: vor_vx_v4i8_unmasked:
133; CHECK:       # %bb.0:
134; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
135; CHECK-NEXT:    vor.vx v8, v8, a0
136; CHECK-NEXT:    ret
137  %elt.head = insertelement <4 x i8> poison, i8 %b, i32 0
138  %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
139  %v = call <4 x i8> @llvm.vp.or.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> splat (i1 true), i32 %evl)
140  ret <4 x i8> %v
141}
142
143define <4 x i8> @vor_vi_v4i8(<4 x i8> %va, <4 x i1> %m, i32 zeroext %evl) {
144; CHECK-LABEL: vor_vi_v4i8:
145; CHECK:       # %bb.0:
146; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
147; CHECK-NEXT:    vor.vi v8, v8, 5, v0.t
148; CHECK-NEXT:    ret
149  %v = call <4 x i8> @llvm.vp.or.v4i8(<4 x i8> %va, <4 x i8> splat (i8 5), <4 x i1> %m, i32 %evl)
150  ret <4 x i8> %v
151}
152
153define <4 x i8> @vor_vi_v4i8_unmasked(<4 x i8> %va, i32 zeroext %evl) {
154; CHECK-LABEL: vor_vi_v4i8_unmasked:
155; CHECK:       # %bb.0:
156; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
157; CHECK-NEXT:    vor.vi v8, v8, 5
158; CHECK-NEXT:    ret
159  %v = call <4 x i8> @llvm.vp.or.v4i8(<4 x i8> %va, <4 x i8> splat (i8 5), <4 x i1> splat (i1 true), i32 %evl)
160  ret <4 x i8> %v
161}
162
163declare <7 x i8> @llvm.vp.or.v5i8(<7 x i8>, <7 x i8>, <7 x i1>, i32)
164
165define <7 x i8> @vor_vv_v5i8(<7 x i8> %va, <7 x i8> %b, <7 x i1> %m, i32 zeroext %evl) {
166; CHECK-LABEL: vor_vv_v5i8:
167; CHECK:       # %bb.0:
168; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
169; CHECK-NEXT:    vor.vv v8, v8, v9, v0.t
170; CHECK-NEXT:    ret
171  %v = call <7 x i8> @llvm.vp.or.v5i8(<7 x i8> %va, <7 x i8> %b, <7 x i1> %m, i32 %evl)
172  ret <7 x i8> %v
173}
174
175define <7 x i8> @vor_vv_v5i8_unmasked(<7 x i8> %va, <7 x i8> %b, i32 zeroext %evl) {
176; CHECK-LABEL: vor_vv_v5i8_unmasked:
177; CHECK:       # %bb.0:
178; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
179; CHECK-NEXT:    vor.vv v8, v8, v9
180; CHECK-NEXT:    ret
181  %v = call <7 x i8> @llvm.vp.or.v5i8(<7 x i8> %va, <7 x i8> %b, <7 x i1> splat (i1 true), i32 %evl)
182  ret <7 x i8> %v
183}
184
185define <7 x i8> @vor_vx_v5i8(<7 x i8> %va, i8 %b, <7 x i1> %m, i32 zeroext %evl) {
186; CHECK-LABEL: vor_vx_v5i8:
187; CHECK:       # %bb.0:
188; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
189; CHECK-NEXT:    vor.vx v8, v8, a0, v0.t
190; CHECK-NEXT:    ret
191  %elt.head = insertelement <7 x i8> poison, i8 %b, i32 0
192  %vb = shufflevector <7 x i8> %elt.head, <7 x i8> poison, <7 x i32> zeroinitializer
193  %v = call <7 x i8> @llvm.vp.or.v5i8(<7 x i8> %va, <7 x i8> %vb, <7 x i1> %m, i32 %evl)
194  ret <7 x i8> %v
195}
196
197define <7 x i8> @vor_vx_v5i8_unmasked(<7 x i8> %va, i8 %b, i32 zeroext %evl) {
198; CHECK-LABEL: vor_vx_v5i8_unmasked:
199; CHECK:       # %bb.0:
200; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
201; CHECK-NEXT:    vor.vx v8, v8, a0
202; CHECK-NEXT:    ret
203  %elt.head = insertelement <7 x i8> poison, i8 %b, i32 0
204  %vb = shufflevector <7 x i8> %elt.head, <7 x i8> poison, <7 x i32> zeroinitializer
205  %v = call <7 x i8> @llvm.vp.or.v5i8(<7 x i8> %va, <7 x i8> %vb, <7 x i1> splat (i1 true), i32 %evl)
206  ret <7 x i8> %v
207}
208
209define <7 x i8> @vor_vi_v5i8(<7 x i8> %va, <7 x i1> %m, i32 zeroext %evl) {
210; CHECK-LABEL: vor_vi_v5i8:
211; CHECK:       # %bb.0:
212; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
213; CHECK-NEXT:    vor.vi v8, v8, 5, v0.t
214; CHECK-NEXT:    ret
215  %v = call <7 x i8> @llvm.vp.or.v5i8(<7 x i8> %va, <7 x i8> splat (i8 5), <7 x i1> %m, i32 %evl)
216  ret <7 x i8> %v
217}
218
219define <7 x i8> @vor_vi_v5i8_unmasked(<7 x i8> %va, i32 zeroext %evl) {
220; CHECK-LABEL: vor_vi_v5i8_unmasked:
221; CHECK:       # %bb.0:
222; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
223; CHECK-NEXT:    vor.vi v8, v8, 5
224; CHECK-NEXT:    ret
225  %v = call <7 x i8> @llvm.vp.or.v5i8(<7 x i8> %va, <7 x i8> splat (i8 5), <7 x i1> splat (i1 true), i32 %evl)
226  ret <7 x i8> %v
227}
228
229declare <8 x i8> @llvm.vp.or.v8i8(<8 x i8>, <8 x i8>, <8 x i1>, i32)
230
231define <8 x i8> @vor_vv_v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 zeroext %evl) {
232; CHECK-LABEL: vor_vv_v8i8:
233; CHECK:       # %bb.0:
234; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
235; CHECK-NEXT:    vor.vv v8, v8, v9, v0.t
236; CHECK-NEXT:    ret
237  %v = call <8 x i8> @llvm.vp.or.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 %evl)
238  ret <8 x i8> %v
239}
240
241define <8 x i8> @vor_vv_v8i8_unmasked(<8 x i8> %va, <8 x i8> %b, i32 zeroext %evl) {
242; CHECK-LABEL: vor_vv_v8i8_unmasked:
243; CHECK:       # %bb.0:
244; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
245; CHECK-NEXT:    vor.vv v8, v8, v9
246; CHECK-NEXT:    ret
247  %v = call <8 x i8> @llvm.vp.or.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> splat (i1 true), i32 %evl)
248  ret <8 x i8> %v
249}
250
251define <8 x i8> @vor_vx_v8i8(<8 x i8> %va, i8 %b, <8 x i1> %m, i32 zeroext %evl) {
252; CHECK-LABEL: vor_vx_v8i8:
253; CHECK:       # %bb.0:
254; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
255; CHECK-NEXT:    vor.vx v8, v8, a0, v0.t
256; CHECK-NEXT:    ret
257  %elt.head = insertelement <8 x i8> poison, i8 %b, i32 0
258  %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
259  %v = call <8 x i8> @llvm.vp.or.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> %m, i32 %evl)
260  ret <8 x i8> %v
261}
262
263define <8 x i8> @vor_vx_v8i8_unmasked(<8 x i8> %va, i8 %b, i32 zeroext %evl) {
264; CHECK-LABEL: vor_vx_v8i8_unmasked:
265; CHECK:       # %bb.0:
266; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
267; CHECK-NEXT:    vor.vx v8, v8, a0
268; CHECK-NEXT:    ret
269  %elt.head = insertelement <8 x i8> poison, i8 %b, i32 0
270  %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
271  %v = call <8 x i8> @llvm.vp.or.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> splat (i1 true), i32 %evl)
272  ret <8 x i8> %v
273}
274
275define <8 x i8> @vor_vi_v8i8(<8 x i8> %va, <8 x i1> %m, i32 zeroext %evl) {
276; CHECK-LABEL: vor_vi_v8i8:
277; CHECK:       # %bb.0:
278; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
279; CHECK-NEXT:    vor.vi v8, v8, 5, v0.t
280; CHECK-NEXT:    ret
281  %v = call <8 x i8> @llvm.vp.or.v8i8(<8 x i8> %va, <8 x i8> splat (i8 5), <8 x i1> %m, i32 %evl)
282  ret <8 x i8> %v
283}
284
285define <8 x i8> @vor_vi_v8i8_unmasked(<8 x i8> %va, i32 zeroext %evl) {
286; CHECK-LABEL: vor_vi_v8i8_unmasked:
287; CHECK:       # %bb.0:
288; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
289; CHECK-NEXT:    vor.vi v8, v8, 5
290; CHECK-NEXT:    ret
291  %v = call <8 x i8> @llvm.vp.or.v8i8(<8 x i8> %va, <8 x i8> splat (i8 5), <8 x i1> splat (i1 true), i32 %evl)
292  ret <8 x i8> %v
293}
294
295declare <16 x i8> @llvm.vp.or.v16i8(<16 x i8>, <16 x i8>, <16 x i1>, i32)
296
297define <16 x i8> @vor_vv_v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 zeroext %evl) {
298; CHECK-LABEL: vor_vv_v16i8:
299; CHECK:       # %bb.0:
300; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
301; CHECK-NEXT:    vor.vv v8, v8, v9, v0.t
302; CHECK-NEXT:    ret
303  %v = call <16 x i8> @llvm.vp.or.v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 %evl)
304  ret <16 x i8> %v
305}
306
307define <16 x i8> @vor_vv_v16i8_unmasked(<16 x i8> %va, <16 x i8> %b, i32 zeroext %evl) {
308; CHECK-LABEL: vor_vv_v16i8_unmasked:
309; CHECK:       # %bb.0:
310; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
311; CHECK-NEXT:    vor.vv v8, v8, v9
312; CHECK-NEXT:    ret
313  %v = call <16 x i8> @llvm.vp.or.v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> splat (i1 true), i32 %evl)
314  ret <16 x i8> %v
315}
316
317define <16 x i8> @vor_vx_v16i8(<16 x i8> %va, i8 %b, <16 x i1> %m, i32 zeroext %evl) {
318; CHECK-LABEL: vor_vx_v16i8:
319; CHECK:       # %bb.0:
320; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
321; CHECK-NEXT:    vor.vx v8, v8, a0, v0.t
322; CHECK-NEXT:    ret
323  %elt.head = insertelement <16 x i8> poison, i8 %b, i32 0
324  %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
325  %v = call <16 x i8> @llvm.vp.or.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> %m, i32 %evl)
326  ret <16 x i8> %v
327}
328
329define <16 x i8> @vor_vx_v16i8_unmasked(<16 x i8> %va, i8 %b, i32 zeroext %evl) {
330; CHECK-LABEL: vor_vx_v16i8_unmasked:
331; CHECK:       # %bb.0:
332; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
333; CHECK-NEXT:    vor.vx v8, v8, a0
334; CHECK-NEXT:    ret
335  %elt.head = insertelement <16 x i8> poison, i8 %b, i32 0
336  %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
337  %v = call <16 x i8> @llvm.vp.or.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> splat (i1 true), i32 %evl)
338  ret <16 x i8> %v
339}
340
341define <16 x i8> @vor_vi_v16i8(<16 x i8> %va, <16 x i1> %m, i32 zeroext %evl) {
342; CHECK-LABEL: vor_vi_v16i8:
343; CHECK:       # %bb.0:
344; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
345; CHECK-NEXT:    vor.vi v8, v8, 5, v0.t
346; CHECK-NEXT:    ret
347  %v = call <16 x i8> @llvm.vp.or.v16i8(<16 x i8> %va, <16 x i8> splat (i8 5), <16 x i1> %m, i32 %evl)
348  ret <16 x i8> %v
349}
350
351define <16 x i8> @vor_vi_v16i8_unmasked(<16 x i8> %va, i32 zeroext %evl) {
352; CHECK-LABEL: vor_vi_v16i8_unmasked:
353; CHECK:       # %bb.0:
354; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
355; CHECK-NEXT:    vor.vi v8, v8, 5
356; CHECK-NEXT:    ret
357  %v = call <16 x i8> @llvm.vp.or.v16i8(<16 x i8> %va, <16 x i8> splat (i8 5), <16 x i1> splat (i1 true), i32 %evl)
358  ret <16 x i8> %v
359}
360
361declare <2 x i16> @llvm.vp.or.v2i16(<2 x i16>, <2 x i16>, <2 x i1>, i32)
362
363define <2 x i16> @vor_vv_v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 zeroext %evl) {
364; CHECK-LABEL: vor_vv_v2i16:
365; CHECK:       # %bb.0:
366; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
367; CHECK-NEXT:    vor.vv v8, v8, v9, v0.t
368; CHECK-NEXT:    ret
369  %v = call <2 x i16> @llvm.vp.or.v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 %evl)
370  ret <2 x i16> %v
371}
372
373define <2 x i16> @vor_vv_v2i16_unmasked(<2 x i16> %va, <2 x i16> %b, i32 zeroext %evl) {
374; CHECK-LABEL: vor_vv_v2i16_unmasked:
375; CHECK:       # %bb.0:
376; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
377; CHECK-NEXT:    vor.vv v8, v8, v9
378; CHECK-NEXT:    ret
379  %v = call <2 x i16> @llvm.vp.or.v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> splat (i1 true), i32 %evl)
380  ret <2 x i16> %v
381}
382
383define <2 x i16> @vor_vx_v2i16(<2 x i16> %va, i16 %b, <2 x i1> %m, i32 zeroext %evl) {
384; CHECK-LABEL: vor_vx_v2i16:
385; CHECK:       # %bb.0:
386; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
387; CHECK-NEXT:    vor.vx v8, v8, a0, v0.t
388; CHECK-NEXT:    ret
389  %elt.head = insertelement <2 x i16> poison, i16 %b, i32 0
390  %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
391  %v = call <2 x i16> @llvm.vp.or.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> %m, i32 %evl)
392  ret <2 x i16> %v
393}
394
395define <2 x i16> @vor_vx_v2i16_unmasked(<2 x i16> %va, i16 %b, i32 zeroext %evl) {
396; CHECK-LABEL: vor_vx_v2i16_unmasked:
397; CHECK:       # %bb.0:
398; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
399; CHECK-NEXT:    vor.vx v8, v8, a0
400; CHECK-NEXT:    ret
401  %elt.head = insertelement <2 x i16> poison, i16 %b, i32 0
402  %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
403  %v = call <2 x i16> @llvm.vp.or.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> splat (i1 true), i32 %evl)
404  ret <2 x i16> %v
405}
406
407define <2 x i16> @vor_vi_v2i16(<2 x i16> %va, <2 x i1> %m, i32 zeroext %evl) {
408; CHECK-LABEL: vor_vi_v2i16:
409; CHECK:       # %bb.0:
410; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
411; CHECK-NEXT:    vor.vi v8, v8, 5, v0.t
412; CHECK-NEXT:    ret
413  %v = call <2 x i16> @llvm.vp.or.v2i16(<2 x i16> %va, <2 x i16> splat (i16 5), <2 x i1> %m, i32 %evl)
414  ret <2 x i16> %v
415}
416
417define <2 x i16> @vor_vi_v2i16_unmasked(<2 x i16> %va, i32 zeroext %evl) {
418; CHECK-LABEL: vor_vi_v2i16_unmasked:
419; CHECK:       # %bb.0:
420; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
421; CHECK-NEXT:    vor.vi v8, v8, 5
422; CHECK-NEXT:    ret
423  %v = call <2 x i16> @llvm.vp.or.v2i16(<2 x i16> %va, <2 x i16> splat (i16 5), <2 x i1> splat (i1 true), i32 %evl)
424  ret <2 x i16> %v
425}
426
427declare <4 x i16> @llvm.vp.or.v4i16(<4 x i16>, <4 x i16>, <4 x i1>, i32)
428
429define <4 x i16> @vor_vv_v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 zeroext %evl) {
430; CHECK-LABEL: vor_vv_v4i16:
431; CHECK:       # %bb.0:
432; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
433; CHECK-NEXT:    vor.vv v8, v8, v9, v0.t
434; CHECK-NEXT:    ret
435  %v = call <4 x i16> @llvm.vp.or.v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 %evl)
436  ret <4 x i16> %v
437}
438
439define <4 x i16> @vor_vv_v4i16_unmasked(<4 x i16> %va, <4 x i16> %b, i32 zeroext %evl) {
440; CHECK-LABEL: vor_vv_v4i16_unmasked:
441; CHECK:       # %bb.0:
442; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
443; CHECK-NEXT:    vor.vv v8, v8, v9
444; CHECK-NEXT:    ret
445  %v = call <4 x i16> @llvm.vp.or.v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> splat (i1 true), i32 %evl)
446  ret <4 x i16> %v
447}
448
449define <4 x i16> @vor_vx_v4i16(<4 x i16> %va, i16 %b, <4 x i1> %m, i32 zeroext %evl) {
450; CHECK-LABEL: vor_vx_v4i16:
451; CHECK:       # %bb.0:
452; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
453; CHECK-NEXT:    vor.vx v8, v8, a0, v0.t
454; CHECK-NEXT:    ret
455  %elt.head = insertelement <4 x i16> poison, i16 %b, i32 0
456  %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
457  %v = call <4 x i16> @llvm.vp.or.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> %m, i32 %evl)
458  ret <4 x i16> %v
459}
460
461define <4 x i16> @vor_vx_v4i16_unmasked(<4 x i16> %va, i16 %b, i32 zeroext %evl) {
462; CHECK-LABEL: vor_vx_v4i16_unmasked:
463; CHECK:       # %bb.0:
464; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
465; CHECK-NEXT:    vor.vx v8, v8, a0
466; CHECK-NEXT:    ret
467  %elt.head = insertelement <4 x i16> poison, i16 %b, i32 0
468  %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
469  %v = call <4 x i16> @llvm.vp.or.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> splat (i1 true), i32 %evl)
470  ret <4 x i16> %v
471}
472
473define <4 x i16> @vor_vi_v4i16(<4 x i16> %va, <4 x i1> %m, i32 zeroext %evl) {
474; CHECK-LABEL: vor_vi_v4i16:
475; CHECK:       # %bb.0:
476; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
477; CHECK-NEXT:    vor.vi v8, v8, 5, v0.t
478; CHECK-NEXT:    ret
479  %v = call <4 x i16> @llvm.vp.or.v4i16(<4 x i16> %va, <4 x i16> splat (i16 5), <4 x i1> %m, i32 %evl)
480  ret <4 x i16> %v
481}
482
483define <4 x i16> @vor_vi_v4i16_unmasked(<4 x i16> %va, i32 zeroext %evl) {
484; CHECK-LABEL: vor_vi_v4i16_unmasked:
485; CHECK:       # %bb.0:
486; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
487; CHECK-NEXT:    vor.vi v8, v8, 5
488; CHECK-NEXT:    ret
489  %v = call <4 x i16> @llvm.vp.or.v4i16(<4 x i16> %va, <4 x i16> splat (i16 5), <4 x i1> splat (i1 true), i32 %evl)
490  ret <4 x i16> %v
491}
492
493declare <8 x i16> @llvm.vp.or.v8i16(<8 x i16>, <8 x i16>, <8 x i1>, i32)
494
495define <8 x i16> @vor_vv_v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 zeroext %evl) {
496; CHECK-LABEL: vor_vv_v8i16:
497; CHECK:       # %bb.0:
498; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
499; CHECK-NEXT:    vor.vv v8, v8, v9, v0.t
500; CHECK-NEXT:    ret
501  %v = call <8 x i16> @llvm.vp.or.v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 %evl)
502  ret <8 x i16> %v
503}
504
505define <8 x i16> @vor_vv_v8i16_unmasked(<8 x i16> %va, <8 x i16> %b, i32 zeroext %evl) {
506; CHECK-LABEL: vor_vv_v8i16_unmasked:
507; CHECK:       # %bb.0:
508; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
509; CHECK-NEXT:    vor.vv v8, v8, v9
510; CHECK-NEXT:    ret
511  %v = call <8 x i16> @llvm.vp.or.v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> splat (i1 true), i32 %evl)
512  ret <8 x i16> %v
513}
514
515define <8 x i16> @vor_vx_v8i16(<8 x i16> %va, i16 %b, <8 x i1> %m, i32 zeroext %evl) {
516; CHECK-LABEL: vor_vx_v8i16:
517; CHECK:       # %bb.0:
518; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
519; CHECK-NEXT:    vor.vx v8, v8, a0, v0.t
520; CHECK-NEXT:    ret
521  %elt.head = insertelement <8 x i16> poison, i16 %b, i32 0
522  %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
523  %v = call <8 x i16> @llvm.vp.or.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> %m, i32 %evl)
524  ret <8 x i16> %v
525}
526
527define <8 x i16> @vor_vx_v8i16_unmasked(<8 x i16> %va, i16 %b, i32 zeroext %evl) {
528; CHECK-LABEL: vor_vx_v8i16_unmasked:
529; CHECK:       # %bb.0:
530; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
531; CHECK-NEXT:    vor.vx v8, v8, a0
532; CHECK-NEXT:    ret
533  %elt.head = insertelement <8 x i16> poison, i16 %b, i32 0
534  %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
535  %v = call <8 x i16> @llvm.vp.or.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> splat (i1 true), i32 %evl)
536  ret <8 x i16> %v
537}
538
539define <8 x i16> @vor_vi_v8i16(<8 x i16> %va, <8 x i1> %m, i32 zeroext %evl) {
540; CHECK-LABEL: vor_vi_v8i16:
541; CHECK:       # %bb.0:
542; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
543; CHECK-NEXT:    vor.vi v8, v8, 5, v0.t
544; CHECK-NEXT:    ret
545  %v = call <8 x i16> @llvm.vp.or.v8i16(<8 x i16> %va, <8 x i16> splat (i16 5), <8 x i1> %m, i32 %evl)
546  ret <8 x i16> %v
547}
548
549define <8 x i16> @vor_vi_v8i16_unmasked(<8 x i16> %va, i32 zeroext %evl) {
550; CHECK-LABEL: vor_vi_v8i16_unmasked:
551; CHECK:       # %bb.0:
552; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
553; CHECK-NEXT:    vor.vi v8, v8, 5
554; CHECK-NEXT:    ret
555  %v = call <8 x i16> @llvm.vp.or.v8i16(<8 x i16> %va, <8 x i16> splat (i16 5), <8 x i1> splat (i1 true), i32 %evl)
556  ret <8 x i16> %v
557}
558
559declare <16 x i16> @llvm.vp.or.v16i16(<16 x i16>, <16 x i16>, <16 x i1>, i32)
560
561define <16 x i16> @vor_vv_v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 zeroext %evl) {
562; CHECK-LABEL: vor_vv_v16i16:
563; CHECK:       # %bb.0:
564; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
565; CHECK-NEXT:    vor.vv v8, v8, v10, v0.t
566; CHECK-NEXT:    ret
567  %v = call <16 x i16> @llvm.vp.or.v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 %evl)
568  ret <16 x i16> %v
569}
570
571define <16 x i16> @vor_vv_v16i16_unmasked(<16 x i16> %va, <16 x i16> %b, i32 zeroext %evl) {
572; CHECK-LABEL: vor_vv_v16i16_unmasked:
573; CHECK:       # %bb.0:
574; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
575; CHECK-NEXT:    vor.vv v8, v8, v10
576; CHECK-NEXT:    ret
577  %v = call <16 x i16> @llvm.vp.or.v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> splat (i1 true), i32 %evl)
578  ret <16 x i16> %v
579}
580
581define <16 x i16> @vor_vx_v16i16(<16 x i16> %va, i16 %b, <16 x i1> %m, i32 zeroext %evl) {
582; CHECK-LABEL: vor_vx_v16i16:
583; CHECK:       # %bb.0:
584; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
585; CHECK-NEXT:    vor.vx v8, v8, a0, v0.t
586; CHECK-NEXT:    ret
587  %elt.head = insertelement <16 x i16> poison, i16 %b, i32 0
588  %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
589  %v = call <16 x i16> @llvm.vp.or.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> %m, i32 %evl)
590  ret <16 x i16> %v
591}
592
593define <16 x i16> @vor_vx_v16i16_unmasked(<16 x i16> %va, i16 %b, i32 zeroext %evl) {
594; CHECK-LABEL: vor_vx_v16i16_unmasked:
595; CHECK:       # %bb.0:
596; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
597; CHECK-NEXT:    vor.vx v8, v8, a0
598; CHECK-NEXT:    ret
599  %elt.head = insertelement <16 x i16> poison, i16 %b, i32 0
600  %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
601  %v = call <16 x i16> @llvm.vp.or.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> splat (i1 true), i32 %evl)
602  ret <16 x i16> %v
603}
604
605define <16 x i16> @vor_vi_v16i16(<16 x i16> %va, <16 x i1> %m, i32 zeroext %evl) {
606; CHECK-LABEL: vor_vi_v16i16:
607; CHECK:       # %bb.0:
608; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
609; CHECK-NEXT:    vor.vi v8, v8, 5, v0.t
610; CHECK-NEXT:    ret
611  %v = call <16 x i16> @llvm.vp.or.v16i16(<16 x i16> %va, <16 x i16> splat (i16 5), <16 x i1> %m, i32 %evl)
612  ret <16 x i16> %v
613}
614
615define <16 x i16> @vor_vi_v16i16_unmasked(<16 x i16> %va, i32 zeroext %evl) {
616; CHECK-LABEL: vor_vi_v16i16_unmasked:
617; CHECK:       # %bb.0:
618; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
619; CHECK-NEXT:    vor.vi v8, v8, 5
620; CHECK-NEXT:    ret
621  %v = call <16 x i16> @llvm.vp.or.v16i16(<16 x i16> %va, <16 x i16> splat (i16 5), <16 x i1> splat (i1 true), i32 %evl)
622  ret <16 x i16> %v
623}
624
625declare <2 x i32> @llvm.vp.or.v2i32(<2 x i32>, <2 x i32>, <2 x i1>, i32)
626
627define <2 x i32> @vor_vv_v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 zeroext %evl) {
628; CHECK-LABEL: vor_vv_v2i32:
629; CHECK:       # %bb.0:
630; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
631; CHECK-NEXT:    vor.vv v8, v8, v9, v0.t
632; CHECK-NEXT:    ret
633  %v = call <2 x i32> @llvm.vp.or.v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 %evl)
634  ret <2 x i32> %v
635}
636
637define <2 x i32> @vor_vv_v2i32_unmasked(<2 x i32> %va, <2 x i32> %b, i32 zeroext %evl) {
638; CHECK-LABEL: vor_vv_v2i32_unmasked:
639; CHECK:       # %bb.0:
640; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
641; CHECK-NEXT:    vor.vv v8, v8, v9
642; CHECK-NEXT:    ret
643  %v = call <2 x i32> @llvm.vp.or.v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> splat (i1 true), i32 %evl)
644  ret <2 x i32> %v
645}
646
647define <2 x i32> @vor_vx_v2i32(<2 x i32> %va, i32 %b, <2 x i1> %m, i32 zeroext %evl) {
648; CHECK-LABEL: vor_vx_v2i32:
649; CHECK:       # %bb.0:
650; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
651; CHECK-NEXT:    vor.vx v8, v8, a0, v0.t
652; CHECK-NEXT:    ret
653  %elt.head = insertelement <2 x i32> poison, i32 %b, i32 0
654  %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
655  %v = call <2 x i32> @llvm.vp.or.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> %m, i32 %evl)
656  ret <2 x i32> %v
657}
658
659define <2 x i32> @vor_vx_v2i32_unmasked(<2 x i32> %va, i32 %b, i32 zeroext %evl) {
660; CHECK-LABEL: vor_vx_v2i32_unmasked:
661; CHECK:       # %bb.0:
662; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
663; CHECK-NEXT:    vor.vx v8, v8, a0
664; CHECK-NEXT:    ret
665  %elt.head = insertelement <2 x i32> poison, i32 %b, i32 0
666  %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
667  %v = call <2 x i32> @llvm.vp.or.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> splat (i1 true), i32 %evl)
668  ret <2 x i32> %v
669}
670
671define <2 x i32> @vor_vi_v2i32(<2 x i32> %va, <2 x i1> %m, i32 zeroext %evl) {
672; CHECK-LABEL: vor_vi_v2i32:
673; CHECK:       # %bb.0:
674; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
675; CHECK-NEXT:    vor.vi v8, v8, 5, v0.t
676; CHECK-NEXT:    ret
677  %v = call <2 x i32> @llvm.vp.or.v2i32(<2 x i32> %va, <2 x i32> splat (i32 5), <2 x i1> %m, i32 %evl)
678  ret <2 x i32> %v
679}
680
681define <2 x i32> @vor_vi_v2i32_unmasked(<2 x i32> %va, i32 zeroext %evl) {
682; CHECK-LABEL: vor_vi_v2i32_unmasked:
683; CHECK:       # %bb.0:
684; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
685; CHECK-NEXT:    vor.vi v8, v8, 5
686; CHECK-NEXT:    ret
687  %v = call <2 x i32> @llvm.vp.or.v2i32(<2 x i32> %va, <2 x i32> splat (i32 5), <2 x i1> splat (i1 true), i32 %evl)
688  ret <2 x i32> %v
689}
690
691declare <4 x i32> @llvm.vp.or.v4i32(<4 x i32>, <4 x i32>, <4 x i1>, i32)
692
693define <4 x i32> @vor_vv_v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 zeroext %evl) {
694; CHECK-LABEL: vor_vv_v4i32:
695; CHECK:       # %bb.0:
696; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
697; CHECK-NEXT:    vor.vv v8, v8, v9, v0.t
698; CHECK-NEXT:    ret
699  %v = call <4 x i32> @llvm.vp.or.v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 %evl)
700  ret <4 x i32> %v
701}
702
703define <4 x i32> @vor_vv_v4i32_unmasked(<4 x i32> %va, <4 x i32> %b, i32 zeroext %evl) {
704; CHECK-LABEL: vor_vv_v4i32_unmasked:
705; CHECK:       # %bb.0:
706; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
707; CHECK-NEXT:    vor.vv v8, v8, v9
708; CHECK-NEXT:    ret
709  %v = call <4 x i32> @llvm.vp.or.v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> splat (i1 true), i32 %evl)
710  ret <4 x i32> %v
711}
712
713define <4 x i32> @vor_vx_v4i32(<4 x i32> %va, i32 %b, <4 x i1> %m, i32 zeroext %evl) {
714; CHECK-LABEL: vor_vx_v4i32:
715; CHECK:       # %bb.0:
716; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
717; CHECK-NEXT:    vor.vx v8, v8, a0, v0.t
718; CHECK-NEXT:    ret
719  %elt.head = insertelement <4 x i32> poison, i32 %b, i32 0
720  %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
721  %v = call <4 x i32> @llvm.vp.or.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> %m, i32 %evl)
722  ret <4 x i32> %v
723}
724
725define <4 x i32> @vor_vx_v4i32_unmasked(<4 x i32> %va, i32 %b, i32 zeroext %evl) {
726; CHECK-LABEL: vor_vx_v4i32_unmasked:
727; CHECK:       # %bb.0:
728; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
729; CHECK-NEXT:    vor.vx v8, v8, a0
730; CHECK-NEXT:    ret
731  %elt.head = insertelement <4 x i32> poison, i32 %b, i32 0
732  %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
733  %v = call <4 x i32> @llvm.vp.or.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> splat (i1 true), i32 %evl)
734  ret <4 x i32> %v
735}
736
737define <4 x i32> @vor_vi_v4i32(<4 x i32> %va, <4 x i1> %m, i32 zeroext %evl) {
738; CHECK-LABEL: vor_vi_v4i32:
739; CHECK:       # %bb.0:
740; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
741; CHECK-NEXT:    vor.vi v8, v8, 5, v0.t
742; CHECK-NEXT:    ret
743  %v = call <4 x i32> @llvm.vp.or.v4i32(<4 x i32> %va, <4 x i32> splat (i32 5), <4 x i1> %m, i32 %evl)
744  ret <4 x i32> %v
745}
746
747define <4 x i32> @vor_vi_v4i32_unmasked(<4 x i32> %va, i32 zeroext %evl) {
748; CHECK-LABEL: vor_vi_v4i32_unmasked:
749; CHECK:       # %bb.0:
750; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
751; CHECK-NEXT:    vor.vi v8, v8, 5
752; CHECK-NEXT:    ret
753  %v = call <4 x i32> @llvm.vp.or.v4i32(<4 x i32> %va, <4 x i32> splat (i32 5), <4 x i1> splat (i1 true), i32 %evl)
754  ret <4 x i32> %v
755}
756
757declare <8 x i32> @llvm.vp.or.v8i32(<8 x i32>, <8 x i32>, <8 x i1>, i32)
758
759define <8 x i32> @vor_vv_v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 zeroext %evl) {
760; CHECK-LABEL: vor_vv_v8i32:
761; CHECK:       # %bb.0:
762; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
763; CHECK-NEXT:    vor.vv v8, v8, v10, v0.t
764; CHECK-NEXT:    ret
765  %v = call <8 x i32> @llvm.vp.or.v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 %evl)
766  ret <8 x i32> %v
767}
768
769define <8 x i32> @vor_vv_v8i32_unmasked(<8 x i32> %va, <8 x i32> %b, i32 zeroext %evl) {
770; CHECK-LABEL: vor_vv_v8i32_unmasked:
771; CHECK:       # %bb.0:
772; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
773; CHECK-NEXT:    vor.vv v8, v8, v10
774; CHECK-NEXT:    ret
775  %v = call <8 x i32> @llvm.vp.or.v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> splat (i1 true), i32 %evl)
776  ret <8 x i32> %v
777}
778
779define <8 x i32> @vor_vx_v8i32(<8 x i32> %va, i32 %b, <8 x i1> %m, i32 zeroext %evl) {
780; CHECK-LABEL: vor_vx_v8i32:
781; CHECK:       # %bb.0:
782; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
783; CHECK-NEXT:    vor.vx v8, v8, a0, v0.t
784; CHECK-NEXT:    ret
785  %elt.head = insertelement <8 x i32> poison, i32 %b, i32 0
786  %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
787  %v = call <8 x i32> @llvm.vp.or.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> %m, i32 %evl)
788  ret <8 x i32> %v
789}
790
791define <8 x i32> @vor_vx_v8i32_unmasked(<8 x i32> %va, i32 %b, i32 zeroext %evl) {
792; CHECK-LABEL: vor_vx_v8i32_unmasked:
793; CHECK:       # %bb.0:
794; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
795; CHECK-NEXT:    vor.vx v8, v8, a0
796; CHECK-NEXT:    ret
797  %elt.head = insertelement <8 x i32> poison, i32 %b, i32 0
798  %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
799  %v = call <8 x i32> @llvm.vp.or.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> splat (i1 true), i32 %evl)
800  ret <8 x i32> %v
801}
802
803define <8 x i32> @vor_vi_v8i32(<8 x i32> %va, <8 x i1> %m, i32 zeroext %evl) {
804; CHECK-LABEL: vor_vi_v8i32:
805; CHECK:       # %bb.0:
806; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
807; CHECK-NEXT:    vor.vi v8, v8, 5, v0.t
808; CHECK-NEXT:    ret
809  %v = call <8 x i32> @llvm.vp.or.v8i32(<8 x i32> %va, <8 x i32> splat (i32 5), <8 x i1> %m, i32 %evl)
810  ret <8 x i32> %v
811}
812
813define <8 x i32> @vor_vi_v8i32_unmasked(<8 x i32> %va, i32 zeroext %evl) {
814; CHECK-LABEL: vor_vi_v8i32_unmasked:
815; CHECK:       # %bb.0:
816; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
817; CHECK-NEXT:    vor.vi v8, v8, 5
818; CHECK-NEXT:    ret
819  %v = call <8 x i32> @llvm.vp.or.v8i32(<8 x i32> %va, <8 x i32> splat (i32 5), <8 x i1> splat (i1 true), i32 %evl)
820  ret <8 x i32> %v
821}
822
823declare <16 x i32> @llvm.vp.or.v16i32(<16 x i32>, <16 x i32>, <16 x i1>, i32)
824
825define <16 x i32> @vor_vv_v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 zeroext %evl) {
826; CHECK-LABEL: vor_vv_v16i32:
827; CHECK:       # %bb.0:
828; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
829; CHECK-NEXT:    vor.vv v8, v8, v12, v0.t
830; CHECK-NEXT:    ret
831  %v = call <16 x i32> @llvm.vp.or.v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 %evl)
832  ret <16 x i32> %v
833}
834
835define <16 x i32> @vor_vv_v16i32_unmasked(<16 x i32> %va, <16 x i32> %b, i32 zeroext %evl) {
836; CHECK-LABEL: vor_vv_v16i32_unmasked:
837; CHECK:       # %bb.0:
838; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
839; CHECK-NEXT:    vor.vv v8, v8, v12
840; CHECK-NEXT:    ret
841  %v = call <16 x i32> @llvm.vp.or.v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> splat (i1 true), i32 %evl)
842  ret <16 x i32> %v
843}
844
845define <16 x i32> @vor_vx_v16i32(<16 x i32> %va, i32 %b, <16 x i1> %m, i32 zeroext %evl) {
846; CHECK-LABEL: vor_vx_v16i32:
847; CHECK:       # %bb.0:
848; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
849; CHECK-NEXT:    vor.vx v8, v8, a0, v0.t
850; CHECK-NEXT:    ret
851  %elt.head = insertelement <16 x i32> poison, i32 %b, i32 0
852  %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
853  %v = call <16 x i32> @llvm.vp.or.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> %m, i32 %evl)
854  ret <16 x i32> %v
855}
856
857define <16 x i32> @vor_vx_v16i32_unmasked(<16 x i32> %va, i32 %b, i32 zeroext %evl) {
858; CHECK-LABEL: vor_vx_v16i32_unmasked:
859; CHECK:       # %bb.0:
860; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
861; CHECK-NEXT:    vor.vx v8, v8, a0
862; CHECK-NEXT:    ret
863  %elt.head = insertelement <16 x i32> poison, i32 %b, i32 0
864  %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
865  %v = call <16 x i32> @llvm.vp.or.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> splat (i1 true), i32 %evl)
866  ret <16 x i32> %v
867}
868
869define <16 x i32> @vor_vi_v16i32(<16 x i32> %va, <16 x i1> %m, i32 zeroext %evl) {
870; CHECK-LABEL: vor_vi_v16i32:
871; CHECK:       # %bb.0:
872; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
873; CHECK-NEXT:    vor.vi v8, v8, 5, v0.t
874; CHECK-NEXT:    ret
875  %v = call <16 x i32> @llvm.vp.or.v16i32(<16 x i32> %va, <16 x i32> splat (i32 5), <16 x i1> %m, i32 %evl)
876  ret <16 x i32> %v
877}
878
879define <16 x i32> @vor_vi_v16i32_unmasked(<16 x i32> %va, i32 zeroext %evl) {
880; CHECK-LABEL: vor_vi_v16i32_unmasked:
881; CHECK:       # %bb.0:
882; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
883; CHECK-NEXT:    vor.vi v8, v8, 5
884; CHECK-NEXT:    ret
885  %v = call <16 x i32> @llvm.vp.or.v16i32(<16 x i32> %va, <16 x i32> splat (i32 5), <16 x i1> splat (i1 true), i32 %evl)
886  ret <16 x i32> %v
887}
888
889declare <2 x i64> @llvm.vp.or.v2i64(<2 x i64>, <2 x i64>, <2 x i1>, i32)
890
891define <2 x i64> @vor_vv_v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 zeroext %evl) {
892; CHECK-LABEL: vor_vv_v2i64:
893; CHECK:       # %bb.0:
894; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
895; CHECK-NEXT:    vor.vv v8, v8, v9, v0.t
896; CHECK-NEXT:    ret
897  %v = call <2 x i64> @llvm.vp.or.v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 %evl)
898  ret <2 x i64> %v
899}
900
901define <2 x i64> @vor_vv_v2i64_unmasked(<2 x i64> %va, <2 x i64> %b, i32 zeroext %evl) {
902; CHECK-LABEL: vor_vv_v2i64_unmasked:
903; CHECK:       # %bb.0:
904; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
905; CHECK-NEXT:    vor.vv v8, v8, v9
906; CHECK-NEXT:    ret
907  %v = call <2 x i64> @llvm.vp.or.v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> splat (i1 true), i32 %evl)
908  ret <2 x i64> %v
909}
910
911define <2 x i64> @vor_vx_v2i64(<2 x i64> %va, i64 %b, <2 x i1> %m, i32 zeroext %evl) {
912; RV32-LABEL: vor_vx_v2i64:
913; RV32:       # %bb.0:
914; RV32-NEXT:    addi sp, sp, -16
915; RV32-NEXT:    .cfi_def_cfa_offset 16
916; RV32-NEXT:    sw a0, 8(sp)
917; RV32-NEXT:    sw a1, 12(sp)
918; RV32-NEXT:    addi a0, sp, 8
919; RV32-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
920; RV32-NEXT:    vlse64.v v9, (a0), zero
921; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
922; RV32-NEXT:    vor.vv v8, v8, v9, v0.t
923; RV32-NEXT:    addi sp, sp, 16
924; RV32-NEXT:    .cfi_def_cfa_offset 0
925; RV32-NEXT:    ret
926;
927; RV64-LABEL: vor_vx_v2i64:
928; RV64:       # %bb.0:
929; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
930; RV64-NEXT:    vor.vx v8, v8, a0, v0.t
931; RV64-NEXT:    ret
932  %elt.head = insertelement <2 x i64> poison, i64 %b, i32 0
933  %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
934  %v = call <2 x i64> @llvm.vp.or.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> %m, i32 %evl)
935  ret <2 x i64> %v
936}
937
938define <2 x i64> @vor_vx_v2i64_unmasked(<2 x i64> %va, i64 %b, i32 zeroext %evl) {
939; RV32-LABEL: vor_vx_v2i64_unmasked:
940; RV32:       # %bb.0:
941; RV32-NEXT:    addi sp, sp, -16
942; RV32-NEXT:    .cfi_def_cfa_offset 16
943; RV32-NEXT:    sw a0, 8(sp)
944; RV32-NEXT:    sw a1, 12(sp)
945; RV32-NEXT:    addi a0, sp, 8
946; RV32-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
947; RV32-NEXT:    vlse64.v v9, (a0), zero
948; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
949; RV32-NEXT:    vor.vv v8, v8, v9
950; RV32-NEXT:    addi sp, sp, 16
951; RV32-NEXT:    .cfi_def_cfa_offset 0
952; RV32-NEXT:    ret
953;
954; RV64-LABEL: vor_vx_v2i64_unmasked:
955; RV64:       # %bb.0:
956; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
957; RV64-NEXT:    vor.vx v8, v8, a0
958; RV64-NEXT:    ret
959  %elt.head = insertelement <2 x i64> poison, i64 %b, i32 0
960  %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
961  %v = call <2 x i64> @llvm.vp.or.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> splat (i1 true), i32 %evl)
962  ret <2 x i64> %v
963}
964
965define <2 x i64> @vor_vi_v2i64(<2 x i64> %va, <2 x i1> %m, i32 zeroext %evl) {
966; CHECK-LABEL: vor_vi_v2i64:
967; CHECK:       # %bb.0:
968; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
969; CHECK-NEXT:    vor.vi v8, v8, 5, v0.t
970; CHECK-NEXT:    ret
971  %v = call <2 x i64> @llvm.vp.or.v2i64(<2 x i64> %va, <2 x i64> splat (i64 5), <2 x i1> %m, i32 %evl)
972  ret <2 x i64> %v
973}
974
975define <2 x i64> @vor_vi_v2i64_unmasked(<2 x i64> %va, i32 zeroext %evl) {
976; CHECK-LABEL: vor_vi_v2i64_unmasked:
977; CHECK:       # %bb.0:
978; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
979; CHECK-NEXT:    vor.vi v8, v8, 5
980; CHECK-NEXT:    ret
981  %v = call <2 x i64> @llvm.vp.or.v2i64(<2 x i64> %va, <2 x i64> splat (i64 5), <2 x i1> splat (i1 true), i32 %evl)
982  ret <2 x i64> %v
983}
984
985declare <4 x i64> @llvm.vp.or.v4i64(<4 x i64>, <4 x i64>, <4 x i1>, i32)
986
987define <4 x i64> @vor_vv_v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 zeroext %evl) {
988; CHECK-LABEL: vor_vv_v4i64:
989; CHECK:       # %bb.0:
990; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
991; CHECK-NEXT:    vor.vv v8, v8, v10, v0.t
992; CHECK-NEXT:    ret
993  %v = call <4 x i64> @llvm.vp.or.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 %evl)
994  ret <4 x i64> %v
995}
996
997define <4 x i64> @vor_vv_v4i64_unmasked(<4 x i64> %va, <4 x i64> %b, i32 zeroext %evl) {
998; CHECK-LABEL: vor_vv_v4i64_unmasked:
999; CHECK:       # %bb.0:
1000; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1001; CHECK-NEXT:    vor.vv v8, v8, v10
1002; CHECK-NEXT:    ret
1003  %v = call <4 x i64> @llvm.vp.or.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> splat (i1 true), i32 %evl)
1004  ret <4 x i64> %v
1005}
1006
1007define <4 x i64> @vor_vx_v4i64(<4 x i64> %va, i64 %b, <4 x i1> %m, i32 zeroext %evl) {
1008; RV32-LABEL: vor_vx_v4i64:
1009; RV32:       # %bb.0:
1010; RV32-NEXT:    addi sp, sp, -16
1011; RV32-NEXT:    .cfi_def_cfa_offset 16
1012; RV32-NEXT:    sw a0, 8(sp)
1013; RV32-NEXT:    sw a1, 12(sp)
1014; RV32-NEXT:    addi a0, sp, 8
1015; RV32-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
1016; RV32-NEXT:    vlse64.v v10, (a0), zero
1017; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1018; RV32-NEXT:    vor.vv v8, v8, v10, v0.t
1019; RV32-NEXT:    addi sp, sp, 16
1020; RV32-NEXT:    .cfi_def_cfa_offset 0
1021; RV32-NEXT:    ret
1022;
1023; RV64-LABEL: vor_vx_v4i64:
1024; RV64:       # %bb.0:
1025; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1026; RV64-NEXT:    vor.vx v8, v8, a0, v0.t
1027; RV64-NEXT:    ret
1028  %elt.head = insertelement <4 x i64> poison, i64 %b, i32 0
1029  %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
1030  %v = call <4 x i64> @llvm.vp.or.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> %m, i32 %evl)
1031  ret <4 x i64> %v
1032}
1033
1034define <4 x i64> @vor_vx_v4i64_unmasked(<4 x i64> %va, i64 %b, i32 zeroext %evl) {
1035; RV32-LABEL: vor_vx_v4i64_unmasked:
1036; RV32:       # %bb.0:
1037; RV32-NEXT:    addi sp, sp, -16
1038; RV32-NEXT:    .cfi_def_cfa_offset 16
1039; RV32-NEXT:    sw a0, 8(sp)
1040; RV32-NEXT:    sw a1, 12(sp)
1041; RV32-NEXT:    addi a0, sp, 8
1042; RV32-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
1043; RV32-NEXT:    vlse64.v v10, (a0), zero
1044; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1045; RV32-NEXT:    vor.vv v8, v8, v10
1046; RV32-NEXT:    addi sp, sp, 16
1047; RV32-NEXT:    .cfi_def_cfa_offset 0
1048; RV32-NEXT:    ret
1049;
1050; RV64-LABEL: vor_vx_v4i64_unmasked:
1051; RV64:       # %bb.0:
1052; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1053; RV64-NEXT:    vor.vx v8, v8, a0
1054; RV64-NEXT:    ret
1055  %elt.head = insertelement <4 x i64> poison, i64 %b, i32 0
1056  %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
1057  %v = call <4 x i64> @llvm.vp.or.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> splat (i1 true), i32 %evl)
1058  ret <4 x i64> %v
1059}
1060
1061define <4 x i64> @vor_vi_v4i64(<4 x i64> %va, <4 x i1> %m, i32 zeroext %evl) {
1062; CHECK-LABEL: vor_vi_v4i64:
1063; CHECK:       # %bb.0:
1064; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1065; CHECK-NEXT:    vor.vi v8, v8, 5, v0.t
1066; CHECK-NEXT:    ret
1067  %v = call <4 x i64> @llvm.vp.or.v4i64(<4 x i64> %va, <4 x i64> splat (i64 5), <4 x i1> %m, i32 %evl)
1068  ret <4 x i64> %v
1069}
1070
1071define <4 x i64> @vor_vi_v4i64_unmasked(<4 x i64> %va, i32 zeroext %evl) {
1072; CHECK-LABEL: vor_vi_v4i64_unmasked:
1073; CHECK:       # %bb.0:
1074; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1075; CHECK-NEXT:    vor.vi v8, v8, 5
1076; CHECK-NEXT:    ret
1077  %v = call <4 x i64> @llvm.vp.or.v4i64(<4 x i64> %va, <4 x i64> splat (i64 5), <4 x i1> splat (i1 true), i32 %evl)
1078  ret <4 x i64> %v
1079}
1080
1081declare <8 x i64> @llvm.vp.or.v8i64(<8 x i64>, <8 x i64>, <8 x i1>, i32)
1082
1083define <8 x i64> @vor_vv_v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 zeroext %evl) {
1084; CHECK-LABEL: vor_vv_v8i64:
1085; CHECK:       # %bb.0:
1086; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1087; CHECK-NEXT:    vor.vv v8, v8, v12, v0.t
1088; CHECK-NEXT:    ret
1089  %v = call <8 x i64> @llvm.vp.or.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 %evl)
1090  ret <8 x i64> %v
1091}
1092
1093define <8 x i64> @vor_vv_v8i64_unmasked(<8 x i64> %va, <8 x i64> %b, i32 zeroext %evl) {
1094; CHECK-LABEL: vor_vv_v8i64_unmasked:
1095; CHECK:       # %bb.0:
1096; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1097; CHECK-NEXT:    vor.vv v8, v8, v12
1098; CHECK-NEXT:    ret
1099  %v = call <8 x i64> @llvm.vp.or.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> splat (i1 true), i32 %evl)
1100  ret <8 x i64> %v
1101}
1102
1103define <8 x i64> @vor_vx_v8i64(<8 x i64> %va, i64 %b, <8 x i1> %m, i32 zeroext %evl) {
1104; RV32-LABEL: vor_vx_v8i64:
1105; RV32:       # %bb.0:
1106; RV32-NEXT:    addi sp, sp, -16
1107; RV32-NEXT:    .cfi_def_cfa_offset 16
1108; RV32-NEXT:    sw a0, 8(sp)
1109; RV32-NEXT:    sw a1, 12(sp)
1110; RV32-NEXT:    addi a0, sp, 8
1111; RV32-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
1112; RV32-NEXT:    vlse64.v v12, (a0), zero
1113; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1114; RV32-NEXT:    vor.vv v8, v8, v12, v0.t
1115; RV32-NEXT:    addi sp, sp, 16
1116; RV32-NEXT:    .cfi_def_cfa_offset 0
1117; RV32-NEXT:    ret
1118;
1119; RV64-LABEL: vor_vx_v8i64:
1120; RV64:       # %bb.0:
1121; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1122; RV64-NEXT:    vor.vx v8, v8, a0, v0.t
1123; RV64-NEXT:    ret
1124  %elt.head = insertelement <8 x i64> poison, i64 %b, i32 0
1125  %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
1126  %v = call <8 x i64> @llvm.vp.or.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> %m, i32 %evl)
1127  ret <8 x i64> %v
1128}
1129
1130define <8 x i64> @vor_vx_v8i64_unmasked(<8 x i64> %va, i64 %b, i32 zeroext %evl) {
1131; RV32-LABEL: vor_vx_v8i64_unmasked:
1132; RV32:       # %bb.0:
1133; RV32-NEXT:    addi sp, sp, -16
1134; RV32-NEXT:    .cfi_def_cfa_offset 16
1135; RV32-NEXT:    sw a0, 8(sp)
1136; RV32-NEXT:    sw a1, 12(sp)
1137; RV32-NEXT:    addi a0, sp, 8
1138; RV32-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
1139; RV32-NEXT:    vlse64.v v12, (a0), zero
1140; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1141; RV32-NEXT:    vor.vv v8, v8, v12
1142; RV32-NEXT:    addi sp, sp, 16
1143; RV32-NEXT:    .cfi_def_cfa_offset 0
1144; RV32-NEXT:    ret
1145;
1146; RV64-LABEL: vor_vx_v8i64_unmasked:
1147; RV64:       # %bb.0:
1148; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1149; RV64-NEXT:    vor.vx v8, v8, a0
1150; RV64-NEXT:    ret
1151  %elt.head = insertelement <8 x i64> poison, i64 %b, i32 0
1152  %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
1153  %v = call <8 x i64> @llvm.vp.or.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> splat (i1 true), i32 %evl)
1154  ret <8 x i64> %v
1155}
1156
1157define <8 x i64> @vor_vi_v8i64(<8 x i64> %va, <8 x i1> %m, i32 zeroext %evl) {
1158; CHECK-LABEL: vor_vi_v8i64:
1159; CHECK:       # %bb.0:
1160; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1161; CHECK-NEXT:    vor.vi v8, v8, 5, v0.t
1162; CHECK-NEXT:    ret
1163  %v = call <8 x i64> @llvm.vp.or.v8i64(<8 x i64> %va, <8 x i64> splat (i64 5), <8 x i1> %m, i32 %evl)
1164  ret <8 x i64> %v
1165}
1166
1167define <8 x i64> @vor_vi_v8i64_unmasked(<8 x i64> %va, i32 zeroext %evl) {
1168; CHECK-LABEL: vor_vi_v8i64_unmasked:
1169; CHECK:       # %bb.0:
1170; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1171; CHECK-NEXT:    vor.vi v8, v8, 5
1172; CHECK-NEXT:    ret
1173  %v = call <8 x i64> @llvm.vp.or.v8i64(<8 x i64> %va, <8 x i64> splat (i64 5), <8 x i1> splat (i1 true), i32 %evl)
1174  ret <8 x i64> %v
1175}
1176
1177declare <16 x i64> @llvm.vp.or.v16i64(<16 x i64>, <16 x i64>, <16 x i1>, i32)
1178
1179define <16 x i64> @vor_vv_v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 zeroext %evl) {
1180; CHECK-LABEL: vor_vv_v16i64:
1181; CHECK:       # %bb.0:
1182; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1183; CHECK-NEXT:    vor.vv v8, v8, v16, v0.t
1184; CHECK-NEXT:    ret
1185  %v = call <16 x i64> @llvm.vp.or.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 %evl)
1186  ret <16 x i64> %v
1187}
1188
1189define <16 x i64> @vor_vv_v16i64_unmasked(<16 x i64> %va, <16 x i64> %b, i32 zeroext %evl) {
1190; CHECK-LABEL: vor_vv_v16i64_unmasked:
1191; CHECK:       # %bb.0:
1192; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1193; CHECK-NEXT:    vor.vv v8, v8, v16
1194; CHECK-NEXT:    ret
1195  %v = call <16 x i64> @llvm.vp.or.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> splat (i1 true), i32 %evl)
1196  ret <16 x i64> %v
1197}
1198
1199define <16 x i64> @vor_vx_v16i64(<16 x i64> %va, i64 %b, <16 x i1> %m, i32 zeroext %evl) {
1200; RV32-LABEL: vor_vx_v16i64:
1201; RV32:       # %bb.0:
1202; RV32-NEXT:    addi sp, sp, -16
1203; RV32-NEXT:    .cfi_def_cfa_offset 16
1204; RV32-NEXT:    sw a0, 8(sp)
1205; RV32-NEXT:    sw a1, 12(sp)
1206; RV32-NEXT:    addi a0, sp, 8
1207; RV32-NEXT:    vsetivli zero, 16, e64, m8, ta, ma
1208; RV32-NEXT:    vlse64.v v16, (a0), zero
1209; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
1210; RV32-NEXT:    vor.vv v8, v8, v16, v0.t
1211; RV32-NEXT:    addi sp, sp, 16
1212; RV32-NEXT:    .cfi_def_cfa_offset 0
1213; RV32-NEXT:    ret
1214;
1215; RV64-LABEL: vor_vx_v16i64:
1216; RV64:       # %bb.0:
1217; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
1218; RV64-NEXT:    vor.vx v8, v8, a0, v0.t
1219; RV64-NEXT:    ret
1220  %elt.head = insertelement <16 x i64> poison, i64 %b, i32 0
1221  %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
1222  %v = call <16 x i64> @llvm.vp.or.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> %m, i32 %evl)
1223  ret <16 x i64> %v
1224}
1225
1226define <16 x i64> @vor_vx_v16i64_unmasked(<16 x i64> %va, i64 %b, i32 zeroext %evl) {
1227; RV32-LABEL: vor_vx_v16i64_unmasked:
1228; RV32:       # %bb.0:
1229; RV32-NEXT:    addi sp, sp, -16
1230; RV32-NEXT:    .cfi_def_cfa_offset 16
1231; RV32-NEXT:    sw a0, 8(sp)
1232; RV32-NEXT:    sw a1, 12(sp)
1233; RV32-NEXT:    addi a0, sp, 8
1234; RV32-NEXT:    vsetivli zero, 16, e64, m8, ta, ma
1235; RV32-NEXT:    vlse64.v v16, (a0), zero
1236; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
1237; RV32-NEXT:    vor.vv v8, v8, v16
1238; RV32-NEXT:    addi sp, sp, 16
1239; RV32-NEXT:    .cfi_def_cfa_offset 0
1240; RV32-NEXT:    ret
1241;
1242; RV64-LABEL: vor_vx_v16i64_unmasked:
1243; RV64:       # %bb.0:
1244; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
1245; RV64-NEXT:    vor.vx v8, v8, a0
1246; RV64-NEXT:    ret
1247  %elt.head = insertelement <16 x i64> poison, i64 %b, i32 0
1248  %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
1249  %v = call <16 x i64> @llvm.vp.or.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> splat (i1 true), i32 %evl)
1250  ret <16 x i64> %v
1251}
1252
1253define <16 x i64> @vor_vi_v16i64(<16 x i64> %va, <16 x i1> %m, i32 zeroext %evl) {
1254; CHECK-LABEL: vor_vi_v16i64:
1255; CHECK:       # %bb.0:
1256; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1257; CHECK-NEXT:    vor.vi v8, v8, 5, v0.t
1258; CHECK-NEXT:    ret
1259  %v = call <16 x i64> @llvm.vp.or.v16i64(<16 x i64> %va, <16 x i64> splat (i64 5), <16 x i1> %m, i32 %evl)
1260  ret <16 x i64> %v
1261}
1262
1263define <16 x i64> @vor_vi_v16i64_unmasked(<16 x i64> %va, i32 zeroext %evl) {
1264; CHECK-LABEL: vor_vi_v16i64_unmasked:
1265; CHECK:       # %bb.0:
1266; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1267; CHECK-NEXT:    vor.vi v8, v8, 5
1268; CHECK-NEXT:    ret
1269  %v = call <16 x i64> @llvm.vp.or.v16i64(<16 x i64> %va, <16 x i64> splat (i64 5), <16 x i1> splat (i1 true), i32 %evl)
1270  ret <16 x i64> %v
1271}
1272