[RISCV] Support postRA vsetvl insertion pass (#70549)
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / fixed-vectors-vor-vp.ll
blob09c281b525a643960a17c1db3e0e5a9a65aca079
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
7 declare <8 x i7> @llvm.vp.or.v8i7(<8 x i7>, <8 x i7>, <8 x i1>, i32)
9 define <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
19 declare <2 x i8> @llvm.vp.or.v2i8(<2 x i8>, <2 x i8>, <2 x i1>, i32)
21 define <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
31 define <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
41 define <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
53 define <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
65 define <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
75 define <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
85 declare <4 x i8> @llvm.vp.or.v4i8(<4 x i8>, <4 x i8>, <4 x i1>, i32)
87 define <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
97 define <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
107 define <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
119 define <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
131 define <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
143 define <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
153 define <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
163 declare <7 x i8> @llvm.vp.or.v5i8(<7 x i8>, <7 x i8>, <7 x i1>, i32)
165 define <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
175 define <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
185 define <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
197 define <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
209 define <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
219 define <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
229 declare <8 x i8> @llvm.vp.or.v8i8(<8 x i8>, <8 x i8>, <8 x i1>, i32)
231 define <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
241 define <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
251 define <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
263 define <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
275 define <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
285 define <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
295 declare <16 x i8> @llvm.vp.or.v16i8(<16 x i8>, <16 x i8>, <16 x i1>, i32)
297 define <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
307 define <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
317 define <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
329 define <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
341 define <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
351 define <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
361 declare <2 x i16> @llvm.vp.or.v2i16(<2 x i16>, <2 x i16>, <2 x i1>, i32)
363 define <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
373 define <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
383 define <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
395 define <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
407 define <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
417 define <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
427 declare <4 x i16> @llvm.vp.or.v4i16(<4 x i16>, <4 x i16>, <4 x i1>, i32)
429 define <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
439 define <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
449 define <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
461 define <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
473 define <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
483 define <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
493 declare <8 x i16> @llvm.vp.or.v8i16(<8 x i16>, <8 x i16>, <8 x i1>, i32)
495 define <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
505 define <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
515 define <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
527 define <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
539 define <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
549 define <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
559 declare <16 x i16> @llvm.vp.or.v16i16(<16 x i16>, <16 x i16>, <16 x i1>, i32)
561 define <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
571 define <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
581 define <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
593 define <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
605 define <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
615 define <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
625 declare <2 x i32> @llvm.vp.or.v2i32(<2 x i32>, <2 x i32>, <2 x i1>, i32)
627 define <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
637 define <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
647 define <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
659 define <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
671 define <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
681 define <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
691 declare <4 x i32> @llvm.vp.or.v4i32(<4 x i32>, <4 x i32>, <4 x i1>, i32)
693 define <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
703 define <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
713 define <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
725 define <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
737 define <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
747 define <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
757 declare <8 x i32> @llvm.vp.or.v8i32(<8 x i32>, <8 x i32>, <8 x i1>, i32)
759 define <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
769 define <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
779 define <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
791 define <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
803 define <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
813 define <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
823 declare <16 x i32> @llvm.vp.or.v16i32(<16 x i32>, <16 x i32>, <16 x i1>, i32)
825 define <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
835 define <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
845 define <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
857 define <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
869 define <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
879 define <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
889 declare <2 x i64> @llvm.vp.or.v2i64(<2 x i64>, <2 x i64>, <2 x i1>, i32)
891 define <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
901 define <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
911 define <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 a1, 12(sp)
917 ; RV32-NEXT:    sw a0, 8(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:    ret
926 ; RV64-LABEL: vor_vx_v2i64:
927 ; RV64:       # %bb.0:
928 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
929 ; RV64-NEXT:    vor.vx v8, v8, a0, v0.t
930 ; RV64-NEXT:    ret
931   %elt.head = insertelement <2 x i64> poison, i64 %b, i32 0
932   %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
933   %v = call <2 x i64> @llvm.vp.or.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> %m, i32 %evl)
934   ret <2 x i64> %v
937 define <2 x i64> @vor_vx_v2i64_unmasked(<2 x i64> %va, i64 %b, i32 zeroext %evl) {
938 ; RV32-LABEL: vor_vx_v2i64_unmasked:
939 ; RV32:       # %bb.0:
940 ; RV32-NEXT:    addi sp, sp, -16
941 ; RV32-NEXT:    .cfi_def_cfa_offset 16
942 ; RV32-NEXT:    sw a1, 12(sp)
943 ; RV32-NEXT:    sw a0, 8(sp)
944 ; RV32-NEXT:    addi a0, sp, 8
945 ; RV32-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
946 ; RV32-NEXT:    vlse64.v v9, (a0), zero
947 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
948 ; RV32-NEXT:    vor.vv v8, v8, v9
949 ; RV32-NEXT:    addi sp, sp, 16
950 ; RV32-NEXT:    ret
952 ; RV64-LABEL: vor_vx_v2i64_unmasked:
953 ; RV64:       # %bb.0:
954 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
955 ; RV64-NEXT:    vor.vx v8, v8, a0
956 ; RV64-NEXT:    ret
957   %elt.head = insertelement <2 x i64> poison, i64 %b, i32 0
958   %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
959   %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)
960   ret <2 x i64> %v
963 define <2 x i64> @vor_vi_v2i64(<2 x i64> %va, <2 x i1> %m, i32 zeroext %evl) {
964 ; CHECK-LABEL: vor_vi_v2i64:
965 ; CHECK:       # %bb.0:
966 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
967 ; CHECK-NEXT:    vor.vi v8, v8, 5, v0.t
968 ; CHECK-NEXT:    ret
969   %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)
970   ret <2 x i64> %v
973 define <2 x i64> @vor_vi_v2i64_unmasked(<2 x i64> %va, i32 zeroext %evl) {
974 ; CHECK-LABEL: vor_vi_v2i64_unmasked:
975 ; CHECK:       # %bb.0:
976 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
977 ; CHECK-NEXT:    vor.vi v8, v8, 5
978 ; CHECK-NEXT:    ret
979   %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)
980   ret <2 x i64> %v
983 declare <4 x i64> @llvm.vp.or.v4i64(<4 x i64>, <4 x i64>, <4 x i1>, i32)
985 define <4 x i64> @vor_vv_v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 zeroext %evl) {
986 ; CHECK-LABEL: vor_vv_v4i64:
987 ; CHECK:       # %bb.0:
988 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
989 ; CHECK-NEXT:    vor.vv v8, v8, v10, v0.t
990 ; CHECK-NEXT:    ret
991   %v = call <4 x i64> @llvm.vp.or.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 %evl)
992   ret <4 x i64> %v
995 define <4 x i64> @vor_vv_v4i64_unmasked(<4 x i64> %va, <4 x i64> %b, i32 zeroext %evl) {
996 ; CHECK-LABEL: vor_vv_v4i64_unmasked:
997 ; CHECK:       # %bb.0:
998 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
999 ; CHECK-NEXT:    vor.vv v8, v8, v10
1000 ; CHECK-NEXT:    ret
1001   %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)
1002   ret <4 x i64> %v
1005 define <4 x i64> @vor_vx_v4i64(<4 x i64> %va, i64 %b, <4 x i1> %m, i32 zeroext %evl) {
1006 ; RV32-LABEL: vor_vx_v4i64:
1007 ; RV32:       # %bb.0:
1008 ; RV32-NEXT:    addi sp, sp, -16
1009 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1010 ; RV32-NEXT:    sw a1, 12(sp)
1011 ; RV32-NEXT:    sw a0, 8(sp)
1012 ; RV32-NEXT:    addi a0, sp, 8
1013 ; RV32-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
1014 ; RV32-NEXT:    vlse64.v v10, (a0), zero
1015 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1016 ; RV32-NEXT:    vor.vv v8, v8, v10, v0.t
1017 ; RV32-NEXT:    addi sp, sp, 16
1018 ; RV32-NEXT:    ret
1020 ; RV64-LABEL: vor_vx_v4i64:
1021 ; RV64:       # %bb.0:
1022 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1023 ; RV64-NEXT:    vor.vx v8, v8, a0, v0.t
1024 ; RV64-NEXT:    ret
1025   %elt.head = insertelement <4 x i64> poison, i64 %b, i32 0
1026   %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
1027   %v = call <4 x i64> @llvm.vp.or.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> %m, i32 %evl)
1028   ret <4 x i64> %v
1031 define <4 x i64> @vor_vx_v4i64_unmasked(<4 x i64> %va, i64 %b, i32 zeroext %evl) {
1032 ; RV32-LABEL: vor_vx_v4i64_unmasked:
1033 ; RV32:       # %bb.0:
1034 ; RV32-NEXT:    addi sp, sp, -16
1035 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1036 ; RV32-NEXT:    sw a1, 12(sp)
1037 ; RV32-NEXT:    sw a0, 8(sp)
1038 ; RV32-NEXT:    addi a0, sp, 8
1039 ; RV32-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
1040 ; RV32-NEXT:    vlse64.v v10, (a0), zero
1041 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1042 ; RV32-NEXT:    vor.vv v8, v8, v10
1043 ; RV32-NEXT:    addi sp, sp, 16
1044 ; RV32-NEXT:    ret
1046 ; RV64-LABEL: vor_vx_v4i64_unmasked:
1047 ; RV64:       # %bb.0:
1048 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1049 ; RV64-NEXT:    vor.vx v8, v8, a0
1050 ; RV64-NEXT:    ret
1051   %elt.head = insertelement <4 x i64> poison, i64 %b, i32 0
1052   %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
1053   %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)
1054   ret <4 x i64> %v
1057 define <4 x i64> @vor_vi_v4i64(<4 x i64> %va, <4 x i1> %m, i32 zeroext %evl) {
1058 ; CHECK-LABEL: vor_vi_v4i64:
1059 ; CHECK:       # %bb.0:
1060 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1061 ; CHECK-NEXT:    vor.vi v8, v8, 5, v0.t
1062 ; CHECK-NEXT:    ret
1063   %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)
1064   ret <4 x i64> %v
1067 define <4 x i64> @vor_vi_v4i64_unmasked(<4 x i64> %va, i32 zeroext %evl) {
1068 ; CHECK-LABEL: vor_vi_v4i64_unmasked:
1069 ; CHECK:       # %bb.0:
1070 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1071 ; CHECK-NEXT:    vor.vi v8, v8, 5
1072 ; CHECK-NEXT:    ret
1073   %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)
1074   ret <4 x i64> %v
1077 declare <8 x i64> @llvm.vp.or.v8i64(<8 x i64>, <8 x i64>, <8 x i1>, i32)
1079 define <8 x i64> @vor_vv_v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 zeroext %evl) {
1080 ; CHECK-LABEL: vor_vv_v8i64:
1081 ; CHECK:       # %bb.0:
1082 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1083 ; CHECK-NEXT:    vor.vv v8, v8, v12, v0.t
1084 ; CHECK-NEXT:    ret
1085   %v = call <8 x i64> @llvm.vp.or.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 %evl)
1086   ret <8 x i64> %v
1089 define <8 x i64> @vor_vv_v8i64_unmasked(<8 x i64> %va, <8 x i64> %b, i32 zeroext %evl) {
1090 ; CHECK-LABEL: vor_vv_v8i64_unmasked:
1091 ; CHECK:       # %bb.0:
1092 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1093 ; CHECK-NEXT:    vor.vv v8, v8, v12
1094 ; CHECK-NEXT:    ret
1095   %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)
1096   ret <8 x i64> %v
1099 define <8 x i64> @vor_vx_v8i64(<8 x i64> %va, i64 %b, <8 x i1> %m, i32 zeroext %evl) {
1100 ; RV32-LABEL: vor_vx_v8i64:
1101 ; RV32:       # %bb.0:
1102 ; RV32-NEXT:    addi sp, sp, -16
1103 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1104 ; RV32-NEXT:    sw a1, 12(sp)
1105 ; RV32-NEXT:    sw a0, 8(sp)
1106 ; RV32-NEXT:    addi a0, sp, 8
1107 ; RV32-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
1108 ; RV32-NEXT:    vlse64.v v12, (a0), zero
1109 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1110 ; RV32-NEXT:    vor.vv v8, v8, v12, v0.t
1111 ; RV32-NEXT:    addi sp, sp, 16
1112 ; RV32-NEXT:    ret
1114 ; RV64-LABEL: vor_vx_v8i64:
1115 ; RV64:       # %bb.0:
1116 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1117 ; RV64-NEXT:    vor.vx v8, v8, a0, v0.t
1118 ; RV64-NEXT:    ret
1119   %elt.head = insertelement <8 x i64> poison, i64 %b, i32 0
1120   %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
1121   %v = call <8 x i64> @llvm.vp.or.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> %m, i32 %evl)
1122   ret <8 x i64> %v
1125 define <8 x i64> @vor_vx_v8i64_unmasked(<8 x i64> %va, i64 %b, i32 zeroext %evl) {
1126 ; RV32-LABEL: vor_vx_v8i64_unmasked:
1127 ; RV32:       # %bb.0:
1128 ; RV32-NEXT:    addi sp, sp, -16
1129 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1130 ; RV32-NEXT:    sw a1, 12(sp)
1131 ; RV32-NEXT:    sw a0, 8(sp)
1132 ; RV32-NEXT:    addi a0, sp, 8
1133 ; RV32-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
1134 ; RV32-NEXT:    vlse64.v v12, (a0), zero
1135 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1136 ; RV32-NEXT:    vor.vv v8, v8, v12
1137 ; RV32-NEXT:    addi sp, sp, 16
1138 ; RV32-NEXT:    ret
1140 ; RV64-LABEL: vor_vx_v8i64_unmasked:
1141 ; RV64:       # %bb.0:
1142 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1143 ; RV64-NEXT:    vor.vx v8, v8, a0
1144 ; RV64-NEXT:    ret
1145   %elt.head = insertelement <8 x i64> poison, i64 %b, i32 0
1146   %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
1147   %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)
1148   ret <8 x i64> %v
1151 define <8 x i64> @vor_vi_v8i64(<8 x i64> %va, <8 x i1> %m, i32 zeroext %evl) {
1152 ; CHECK-LABEL: vor_vi_v8i64:
1153 ; CHECK:       # %bb.0:
1154 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1155 ; CHECK-NEXT:    vor.vi v8, v8, 5, v0.t
1156 ; CHECK-NEXT:    ret
1157   %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)
1158   ret <8 x i64> %v
1161 define <8 x i64> @vor_vi_v8i64_unmasked(<8 x i64> %va, i32 zeroext %evl) {
1162 ; CHECK-LABEL: vor_vi_v8i64_unmasked:
1163 ; CHECK:       # %bb.0:
1164 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1165 ; CHECK-NEXT:    vor.vi v8, v8, 5
1166 ; CHECK-NEXT:    ret
1167   %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)
1168   ret <8 x i64> %v
1171 declare <16 x i64> @llvm.vp.or.v16i64(<16 x i64>, <16 x i64>, <16 x i1>, i32)
1173 define <16 x i64> @vor_vv_v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 zeroext %evl) {
1174 ; CHECK-LABEL: vor_vv_v16i64:
1175 ; CHECK:       # %bb.0:
1176 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1177 ; CHECK-NEXT:    vor.vv v8, v8, v16, v0.t
1178 ; CHECK-NEXT:    ret
1179   %v = call <16 x i64> @llvm.vp.or.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 %evl)
1180   ret <16 x i64> %v
1183 define <16 x i64> @vor_vv_v16i64_unmasked(<16 x i64> %va, <16 x i64> %b, i32 zeroext %evl) {
1184 ; CHECK-LABEL: vor_vv_v16i64_unmasked:
1185 ; CHECK:       # %bb.0:
1186 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1187 ; CHECK-NEXT:    vor.vv v8, v8, v16
1188 ; CHECK-NEXT:    ret
1189   %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)
1190   ret <16 x i64> %v
1193 define <16 x i64> @vor_vx_v16i64(<16 x i64> %va, i64 %b, <16 x i1> %m, i32 zeroext %evl) {
1194 ; RV32-LABEL: vor_vx_v16i64:
1195 ; RV32:       # %bb.0:
1196 ; RV32-NEXT:    addi sp, sp, -16
1197 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1198 ; RV32-NEXT:    sw a1, 12(sp)
1199 ; RV32-NEXT:    sw a0, 8(sp)
1200 ; RV32-NEXT:    addi a0, sp, 8
1201 ; RV32-NEXT:    vsetivli zero, 16, e64, m8, ta, ma
1202 ; RV32-NEXT:    vlse64.v v16, (a0), zero
1203 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
1204 ; RV32-NEXT:    vor.vv v8, v8, v16, v0.t
1205 ; RV32-NEXT:    addi sp, sp, 16
1206 ; RV32-NEXT:    ret
1208 ; RV64-LABEL: vor_vx_v16i64:
1209 ; RV64:       # %bb.0:
1210 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
1211 ; RV64-NEXT:    vor.vx v8, v8, a0, v0.t
1212 ; RV64-NEXT:    ret
1213   %elt.head = insertelement <16 x i64> poison, i64 %b, i32 0
1214   %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
1215   %v = call <16 x i64> @llvm.vp.or.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> %m, i32 %evl)
1216   ret <16 x i64> %v
1219 define <16 x i64> @vor_vx_v16i64_unmasked(<16 x i64> %va, i64 %b, i32 zeroext %evl) {
1220 ; RV32-LABEL: vor_vx_v16i64_unmasked:
1221 ; RV32:       # %bb.0:
1222 ; RV32-NEXT:    addi sp, sp, -16
1223 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1224 ; RV32-NEXT:    sw a1, 12(sp)
1225 ; RV32-NEXT:    sw a0, 8(sp)
1226 ; RV32-NEXT:    addi a0, sp, 8
1227 ; RV32-NEXT:    vsetivli zero, 16, e64, m8, ta, ma
1228 ; RV32-NEXT:    vlse64.v v16, (a0), zero
1229 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
1230 ; RV32-NEXT:    vor.vv v8, v8, v16
1231 ; RV32-NEXT:    addi sp, sp, 16
1232 ; RV32-NEXT:    ret
1234 ; RV64-LABEL: vor_vx_v16i64_unmasked:
1235 ; RV64:       # %bb.0:
1236 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
1237 ; RV64-NEXT:    vor.vx v8, v8, a0
1238 ; RV64-NEXT:    ret
1239   %elt.head = insertelement <16 x i64> poison, i64 %b, i32 0
1240   %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
1241   %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)
1242   ret <16 x i64> %v
1245 define <16 x i64> @vor_vi_v16i64(<16 x i64> %va, <16 x i1> %m, i32 zeroext %evl) {
1246 ; CHECK-LABEL: vor_vi_v16i64:
1247 ; CHECK:       # %bb.0:
1248 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1249 ; CHECK-NEXT:    vor.vi v8, v8, 5, v0.t
1250 ; CHECK-NEXT:    ret
1251   %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)
1252   ret <16 x i64> %v
1255 define <16 x i64> @vor_vi_v16i64_unmasked(<16 x i64> %va, i32 zeroext %evl) {
1256 ; CHECK-LABEL: vor_vi_v16i64_unmasked:
1257 ; CHECK:       # %bb.0:
1258 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1259 ; CHECK-NEXT:    vor.vi v8, v8, 5
1260 ; CHECK-NEXT:    ret
1261   %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)
1262   ret <16 x i64> %v