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:
12 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
13 ; CHECK-NEXT: vor.vv v8, v8, v9, v0.t
15 %v = call <8 x i7> @llvm.vp.or.v8i7(<8 x i7> %va, <8 x i7> %b, <8 x i1> %m, i32 %evl)
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:
24 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
25 ; CHECK-NEXT: vor.vv v8, v8, v9, v0.t
27 %v = call <2 x i8> @llvm.vp.or.v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> %m, i32 %evl)
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:
34 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
35 ; CHECK-NEXT: vor.vv v8, v8, v9
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)
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:
44 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
45 ; CHECK-NEXT: vor.vx v8, v8, a0, v0.t
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)
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:
56 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
57 ; CHECK-NEXT: vor.vx v8, v8, a0
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)
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:
68 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
69 ; CHECK-NEXT: vor.vi v8, v8, 5, v0.t
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)
75 define <2 x i8> @vor_vi_v2i8_unmasked(<2 x i8> %va, i32 zeroext %evl) {
76 ; CHECK-LABEL: vor_vi_v2i8_unmasked:
78 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
79 ; CHECK-NEXT: vor.vi v8, v8, 5
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)
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:
90 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
91 ; CHECK-NEXT: vor.vv v8, v8, v9, v0.t
93 %v = call <4 x i8> @llvm.vp.or.v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 %evl)
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:
100 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
101 ; CHECK-NEXT: vor.vv v8, v8, v9
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)
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:
110 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
111 ; CHECK-NEXT: vor.vx v8, v8, a0, v0.t
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)
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:
122 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
123 ; CHECK-NEXT: vor.vx v8, v8, a0, v0.t
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)
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:
134 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
135 ; CHECK-NEXT: vor.vx v8, v8, a0
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)
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:
146 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
147 ; CHECK-NEXT: vor.vi v8, v8, 5, v0.t
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)
153 define <4 x i8> @vor_vi_v4i8_unmasked(<4 x i8> %va, i32 zeroext %evl) {
154 ; CHECK-LABEL: vor_vi_v4i8_unmasked:
156 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
157 ; CHECK-NEXT: vor.vi v8, v8, 5
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)
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:
168 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
169 ; CHECK-NEXT: vor.vv v8, v8, v9, v0.t
171 %v = call <7 x i8> @llvm.vp.or.v5i8(<7 x i8> %va, <7 x i8> %b, <7 x i1> %m, i32 %evl)
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:
178 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
179 ; CHECK-NEXT: vor.vv v8, v8, v9
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)
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:
188 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
189 ; CHECK-NEXT: vor.vx v8, v8, a0, v0.t
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)
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:
200 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
201 ; CHECK-NEXT: vor.vx v8, v8, a0
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)
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:
212 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
213 ; CHECK-NEXT: vor.vi v8, v8, 5, v0.t
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)
219 define <7 x i8> @vor_vi_v5i8_unmasked(<7 x i8> %va, i32 zeroext %evl) {
220 ; CHECK-LABEL: vor_vi_v5i8_unmasked:
222 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
223 ; CHECK-NEXT: vor.vi v8, v8, 5
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)
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:
234 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
235 ; CHECK-NEXT: vor.vv v8, v8, v9, v0.t
237 %v = call <8 x i8> @llvm.vp.or.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 %evl)
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:
244 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
245 ; CHECK-NEXT: vor.vv v8, v8, v9
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)
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:
254 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
255 ; CHECK-NEXT: vor.vx v8, v8, a0, v0.t
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)
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:
266 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
267 ; CHECK-NEXT: vor.vx v8, v8, a0
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)
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:
278 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
279 ; CHECK-NEXT: vor.vi v8, v8, 5, v0.t
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)
285 define <8 x i8> @vor_vi_v8i8_unmasked(<8 x i8> %va, i32 zeroext %evl) {
286 ; CHECK-LABEL: vor_vi_v8i8_unmasked:
288 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
289 ; CHECK-NEXT: vor.vi v8, v8, 5
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)
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:
300 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
301 ; CHECK-NEXT: vor.vv v8, v8, v9, v0.t
303 %v = call <16 x i8> @llvm.vp.or.v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 %evl)
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:
310 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
311 ; CHECK-NEXT: vor.vv v8, v8, v9
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)
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:
320 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
321 ; CHECK-NEXT: vor.vx v8, v8, a0, v0.t
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)
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:
332 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
333 ; CHECK-NEXT: vor.vx v8, v8, a0
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)
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:
344 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
345 ; CHECK-NEXT: vor.vi v8, v8, 5, v0.t
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)
351 define <16 x i8> @vor_vi_v16i8_unmasked(<16 x i8> %va, i32 zeroext %evl) {
352 ; CHECK-LABEL: vor_vi_v16i8_unmasked:
354 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
355 ; CHECK-NEXT: vor.vi v8, v8, 5
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)
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:
366 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
367 ; CHECK-NEXT: vor.vv v8, v8, v9, v0.t
369 %v = call <2 x i16> @llvm.vp.or.v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 %evl)
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:
376 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
377 ; CHECK-NEXT: vor.vv v8, v8, v9
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)
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:
386 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
387 ; CHECK-NEXT: vor.vx v8, v8, a0, v0.t
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)
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:
398 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
399 ; CHECK-NEXT: vor.vx v8, v8, a0
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)
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:
410 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
411 ; CHECK-NEXT: vor.vi v8, v8, 5, v0.t
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)
417 define <2 x i16> @vor_vi_v2i16_unmasked(<2 x i16> %va, i32 zeroext %evl) {
418 ; CHECK-LABEL: vor_vi_v2i16_unmasked:
420 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
421 ; CHECK-NEXT: vor.vi v8, v8, 5
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)
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:
432 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
433 ; CHECK-NEXT: vor.vv v8, v8, v9, v0.t
435 %v = call <4 x i16> @llvm.vp.or.v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 %evl)
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:
442 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
443 ; CHECK-NEXT: vor.vv v8, v8, v9
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)
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:
452 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
453 ; CHECK-NEXT: vor.vx v8, v8, a0, v0.t
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)
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:
464 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
465 ; CHECK-NEXT: vor.vx v8, v8, a0
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)
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:
476 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
477 ; CHECK-NEXT: vor.vi v8, v8, 5, v0.t
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)
483 define <4 x i16> @vor_vi_v4i16_unmasked(<4 x i16> %va, i32 zeroext %evl) {
484 ; CHECK-LABEL: vor_vi_v4i16_unmasked:
486 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
487 ; CHECK-NEXT: vor.vi v8, v8, 5
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)
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:
498 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
499 ; CHECK-NEXT: vor.vv v8, v8, v9, v0.t
501 %v = call <8 x i16> @llvm.vp.or.v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 %evl)
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:
508 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
509 ; CHECK-NEXT: vor.vv v8, v8, v9
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)
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:
518 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
519 ; CHECK-NEXT: vor.vx v8, v8, a0, v0.t
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)
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:
530 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
531 ; CHECK-NEXT: vor.vx v8, v8, a0
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)
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:
542 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
543 ; CHECK-NEXT: vor.vi v8, v8, 5, v0.t
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)
549 define <8 x i16> @vor_vi_v8i16_unmasked(<8 x i16> %va, i32 zeroext %evl) {
550 ; CHECK-LABEL: vor_vi_v8i16_unmasked:
552 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
553 ; CHECK-NEXT: vor.vi v8, v8, 5
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)
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:
564 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
565 ; CHECK-NEXT: vor.vv v8, v8, v10, v0.t
567 %v = call <16 x i16> @llvm.vp.or.v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 %evl)
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:
574 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
575 ; CHECK-NEXT: vor.vv v8, v8, v10
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)
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:
584 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
585 ; CHECK-NEXT: vor.vx v8, v8, a0, v0.t
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)
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:
596 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
597 ; CHECK-NEXT: vor.vx v8, v8, a0
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)
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:
608 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
609 ; CHECK-NEXT: vor.vi v8, v8, 5, v0.t
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)
615 define <16 x i16> @vor_vi_v16i16_unmasked(<16 x i16> %va, i32 zeroext %evl) {
616 ; CHECK-LABEL: vor_vi_v16i16_unmasked:
618 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
619 ; CHECK-NEXT: vor.vi v8, v8, 5
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)
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:
630 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
631 ; CHECK-NEXT: vor.vv v8, v8, v9, v0.t
633 %v = call <2 x i32> @llvm.vp.or.v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 %evl)
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:
640 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
641 ; CHECK-NEXT: vor.vv v8, v8, v9
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)
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:
650 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
651 ; CHECK-NEXT: vor.vx v8, v8, a0, v0.t
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)
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:
662 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
663 ; CHECK-NEXT: vor.vx v8, v8, a0
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)
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:
674 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
675 ; CHECK-NEXT: vor.vi v8, v8, 5, v0.t
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)
681 define <2 x i32> @vor_vi_v2i32_unmasked(<2 x i32> %va, i32 zeroext %evl) {
682 ; CHECK-LABEL: vor_vi_v2i32_unmasked:
684 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
685 ; CHECK-NEXT: vor.vi v8, v8, 5
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)
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:
696 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
697 ; CHECK-NEXT: vor.vv v8, v8, v9, v0.t
699 %v = call <4 x i32> @llvm.vp.or.v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 %evl)
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:
706 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
707 ; CHECK-NEXT: vor.vv v8, v8, v9
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)
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:
716 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
717 ; CHECK-NEXT: vor.vx v8, v8, a0, v0.t
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)
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:
728 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
729 ; CHECK-NEXT: vor.vx v8, v8, a0
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)
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:
740 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
741 ; CHECK-NEXT: vor.vi v8, v8, 5, v0.t
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)
747 define <4 x i32> @vor_vi_v4i32_unmasked(<4 x i32> %va, i32 zeroext %evl) {
748 ; CHECK-LABEL: vor_vi_v4i32_unmasked:
750 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
751 ; CHECK-NEXT: vor.vi v8, v8, 5
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)
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:
762 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
763 ; CHECK-NEXT: vor.vv v8, v8, v10, v0.t
765 %v = call <8 x i32> @llvm.vp.or.v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 %evl)
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:
772 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
773 ; CHECK-NEXT: vor.vv v8, v8, v10
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)
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:
782 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
783 ; CHECK-NEXT: vor.vx v8, v8, a0, v0.t
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)
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:
794 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
795 ; CHECK-NEXT: vor.vx v8, v8, a0
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)
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:
806 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
807 ; CHECK-NEXT: vor.vi v8, v8, 5, v0.t
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)
813 define <8 x i32> @vor_vi_v8i32_unmasked(<8 x i32> %va, i32 zeroext %evl) {
814 ; CHECK-LABEL: vor_vi_v8i32_unmasked:
816 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
817 ; CHECK-NEXT: vor.vi v8, v8, 5
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)
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:
828 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
829 ; CHECK-NEXT: vor.vv v8, v8, v12, v0.t
831 %v = call <16 x i32> @llvm.vp.or.v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 %evl)
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:
838 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
839 ; CHECK-NEXT: vor.vv v8, v8, v12
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)
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:
848 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
849 ; CHECK-NEXT: vor.vx v8, v8, a0, v0.t
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)
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:
860 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
861 ; CHECK-NEXT: vor.vx v8, v8, a0
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)
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:
872 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
873 ; CHECK-NEXT: vor.vi v8, v8, 5, v0.t
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)
879 define <16 x i32> @vor_vi_v16i32_unmasked(<16 x i32> %va, i32 zeroext %evl) {
880 ; CHECK-LABEL: vor_vi_v16i32_unmasked:
882 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
883 ; CHECK-NEXT: vor.vi v8, v8, 5
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)
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:
894 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
895 ; CHECK-NEXT: vor.vv v8, v8, v9, v0.t
897 %v = call <2 x i64> @llvm.vp.or.v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 %evl)
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:
904 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
905 ; CHECK-NEXT: vor.vv v8, v8, v9
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)
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:
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
927 ; RV64-LABEL: vor_vx_v2i64:
929 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
930 ; RV64-NEXT: vor.vx v8, v8, a0, v0.t
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)
938 define <2 x i64> @vor_vx_v2i64_unmasked(<2 x i64> %va, i64 %b, i32 zeroext %evl) {
939 ; RV32-LABEL: vor_vx_v2i64_unmasked:
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
954 ; RV64-LABEL: vor_vx_v2i64_unmasked:
956 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
957 ; RV64-NEXT: vor.vx v8, v8, a0
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)
965 define <2 x i64> @vor_vi_v2i64(<2 x i64> %va, <2 x i1> %m, i32 zeroext %evl) {
966 ; CHECK-LABEL: vor_vi_v2i64:
968 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
969 ; CHECK-NEXT: vor.vi v8, v8, 5, v0.t
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)
975 define <2 x i64> @vor_vi_v2i64_unmasked(<2 x i64> %va, i32 zeroext %evl) {
976 ; CHECK-LABEL: vor_vi_v2i64_unmasked:
978 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
979 ; CHECK-NEXT: vor.vi v8, v8, 5
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)
985 declare <4 x i64> @llvm.vp.or.v4i64(<4 x i64>, <4 x i64>, <4 x i1>, i32)
987 define <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:
990 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
991 ; CHECK-NEXT: vor.vv v8, v8, v10, v0.t
993 %v = call <4 x i64> @llvm.vp.or.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 %evl)
997 define <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:
1000 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1001 ; CHECK-NEXT: vor.vv v8, v8, v10
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)
1007 define <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:
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
1023 ; RV64-LABEL: vor_vx_v4i64:
1025 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
1026 ; RV64-NEXT: vor.vx v8, v8, a0, v0.t
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)
1034 define <4 x i64> @vor_vx_v4i64_unmasked(<4 x i64> %va, i64 %b, i32 zeroext %evl) {
1035 ; RV32-LABEL: vor_vx_v4i64_unmasked:
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
1050 ; RV64-LABEL: vor_vx_v4i64_unmasked:
1052 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
1053 ; RV64-NEXT: vor.vx v8, v8, a0
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)
1061 define <4 x i64> @vor_vi_v4i64(<4 x i64> %va, <4 x i1> %m, i32 zeroext %evl) {
1062 ; CHECK-LABEL: vor_vi_v4i64:
1064 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1065 ; CHECK-NEXT: vor.vi v8, v8, 5, v0.t
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)
1071 define <4 x i64> @vor_vi_v4i64_unmasked(<4 x i64> %va, i32 zeroext %evl) {
1072 ; CHECK-LABEL: vor_vi_v4i64_unmasked:
1074 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1075 ; CHECK-NEXT: vor.vi v8, v8, 5
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)
1081 declare <8 x i64> @llvm.vp.or.v8i64(<8 x i64>, <8 x i64>, <8 x i1>, i32)
1083 define <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:
1086 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1087 ; CHECK-NEXT: vor.vv v8, v8, v12, v0.t
1089 %v = call <8 x i64> @llvm.vp.or.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 %evl)
1093 define <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:
1096 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1097 ; CHECK-NEXT: vor.vv v8, v8, v12
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)
1103 define <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:
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
1119 ; RV64-LABEL: vor_vx_v8i64:
1121 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
1122 ; RV64-NEXT: vor.vx v8, v8, a0, v0.t
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)
1130 define <8 x i64> @vor_vx_v8i64_unmasked(<8 x i64> %va, i64 %b, i32 zeroext %evl) {
1131 ; RV32-LABEL: vor_vx_v8i64_unmasked:
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
1146 ; RV64-LABEL: vor_vx_v8i64_unmasked:
1148 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
1149 ; RV64-NEXT: vor.vx v8, v8, a0
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)
1157 define <8 x i64> @vor_vi_v8i64(<8 x i64> %va, <8 x i1> %m, i32 zeroext %evl) {
1158 ; CHECK-LABEL: vor_vi_v8i64:
1160 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1161 ; CHECK-NEXT: vor.vi v8, v8, 5, v0.t
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)
1167 define <8 x i64> @vor_vi_v8i64_unmasked(<8 x i64> %va, i32 zeroext %evl) {
1168 ; CHECK-LABEL: vor_vi_v8i64_unmasked:
1170 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1171 ; CHECK-NEXT: vor.vi v8, v8, 5
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)
1177 declare <16 x i64> @llvm.vp.or.v16i64(<16 x i64>, <16 x i64>, <16 x i1>, i32)
1179 define <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:
1182 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1183 ; CHECK-NEXT: vor.vv v8, v8, v16, v0.t
1185 %v = call <16 x i64> @llvm.vp.or.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 %evl)
1189 define <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:
1192 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1193 ; CHECK-NEXT: vor.vv v8, v8, v16
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)
1199 define <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:
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
1215 ; RV64-LABEL: vor_vx_v16i64:
1217 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1218 ; RV64-NEXT: vor.vx v8, v8, a0, v0.t
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)
1226 define <16 x i64> @vor_vx_v16i64_unmasked(<16 x i64> %va, i64 %b, i32 zeroext %evl) {
1227 ; RV32-LABEL: vor_vx_v16i64_unmasked:
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
1242 ; RV64-LABEL: vor_vx_v16i64_unmasked:
1244 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1245 ; RV64-NEXT: vor.vx v8, v8, a0
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)
1253 define <16 x i64> @vor_vi_v16i64(<16 x i64> %va, <16 x i1> %m, i32 zeroext %evl) {
1254 ; CHECK-LABEL: vor_vi_v16i64:
1256 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1257 ; CHECK-NEXT: vor.vi v8, v8, 5, v0.t
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)
1263 define <16 x i64> @vor_vi_v16i64_unmasked(<16 x i64> %va, i32 zeroext %evl) {
1264 ; CHECK-LABEL: vor_vi_v16i64_unmasked:
1266 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1267 ; CHECK-NEXT: vor.vi v8, v8, 5
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)