Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vmarith-sdnode.ll
blob91ea33733560b1e7d640da0e6f0e4ae42f8f3d03
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s | FileCheck %s
3 ; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s | FileCheck %s
5 define <vscale x 1 x i1> @vmand_vv_nxv1i1(<vscale x 1 x i1> %va, <vscale x 1 x i1> %vb) {
6 ; CHECK-LABEL: vmand_vv_nxv1i1:
7 ; CHECK:       # %bb.0:
8 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma
9 ; CHECK-NEXT:    vmand.mm v0, v0, v8
10 ; CHECK-NEXT:    ret
11   %vc = and <vscale x 1 x i1> %va, %vb
12   ret <vscale x 1 x i1> %vc
15 define <vscale x 2 x i1> @vmand_vv_nxv2i1(<vscale x 2 x i1> %va, <vscale x 2 x i1> %vb) {
16 ; CHECK-LABEL: vmand_vv_nxv2i1:
17 ; CHECK:       # %bb.0:
18 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma
19 ; CHECK-NEXT:    vmand.mm v0, v0, v8
20 ; CHECK-NEXT:    ret
21   %vc = and <vscale x 2 x i1> %va, %vb
22   ret <vscale x 2 x i1> %vc
25 define <vscale x 4 x i1> @vmand_vv_nxv4i1(<vscale x 4 x i1> %va, <vscale x 4 x i1> %vb) {
26 ; CHECK-LABEL: vmand_vv_nxv4i1:
27 ; CHECK:       # %bb.0:
28 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma
29 ; CHECK-NEXT:    vmand.mm v0, v0, v8
30 ; CHECK-NEXT:    ret
31   %vc = and <vscale x 4 x i1> %va, %vb
32   ret <vscale x 4 x i1> %vc
35 define <vscale x 8 x i1> @vmand_vv_nxv8i1(<vscale x 8 x i1> %va, <vscale x 8 x i1> %vb) {
36 ; CHECK-LABEL: vmand_vv_nxv8i1:
37 ; CHECK:       # %bb.0:
38 ; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma
39 ; CHECK-NEXT:    vmand.mm v0, v0, v8
40 ; CHECK-NEXT:    ret
41   %vc = and <vscale x 8 x i1> %va, %vb
42   ret <vscale x 8 x i1> %vc
45 define <vscale x 16 x i1> @vmand_vv_nxv16i1(<vscale x 16 x i1> %va, <vscale x 16 x i1> %vb) {
46 ; CHECK-LABEL: vmand_vv_nxv16i1:
47 ; CHECK:       # %bb.0:
48 ; CHECK-NEXT:    vsetvli a0, zero, e8, m2, ta, ma
49 ; CHECK-NEXT:    vmand.mm v0, v0, v8
50 ; CHECK-NEXT:    ret
51   %vc = and <vscale x 16 x i1> %va, %vb
52   ret <vscale x 16 x i1> %vc
55 define <vscale x 1 x i1> @vmor_vv_nxv1i1(<vscale x 1 x i1> %va, <vscale x 1 x i1> %vb) {
56 ; CHECK-LABEL: vmor_vv_nxv1i1:
57 ; CHECK:       # %bb.0:
58 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma
59 ; CHECK-NEXT:    vmor.mm v0, v0, v8
60 ; CHECK-NEXT:    ret
61   %vc = or <vscale x 1 x i1> %va, %vb
62   ret <vscale x 1 x i1> %vc
65 define <vscale x 2 x i1> @vmor_vv_nxv2i1(<vscale x 2 x i1> %va, <vscale x 2 x i1> %vb) {
66 ; CHECK-LABEL: vmor_vv_nxv2i1:
67 ; CHECK:       # %bb.0:
68 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma
69 ; CHECK-NEXT:    vmor.mm v0, v0, v8
70 ; CHECK-NEXT:    ret
71   %vc = or <vscale x 2 x i1> %va, %vb
72   ret <vscale x 2 x i1> %vc
75 define <vscale x 4 x i1> @vmor_vv_nxv4i1(<vscale x 4 x i1> %va, <vscale x 4 x i1> %vb) {
76 ; CHECK-LABEL: vmor_vv_nxv4i1:
77 ; CHECK:       # %bb.0:
78 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma
79 ; CHECK-NEXT:    vmor.mm v0, v0, v8
80 ; CHECK-NEXT:    ret
81   %vc = or <vscale x 4 x i1> %va, %vb
82   ret <vscale x 4 x i1> %vc
85 define <vscale x 8 x i1> @vmor_vv_nxv8i1(<vscale x 8 x i1> %va, <vscale x 8 x i1> %vb) {
86 ; CHECK-LABEL: vmor_vv_nxv8i1:
87 ; CHECK:       # %bb.0:
88 ; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma
89 ; CHECK-NEXT:    vmor.mm v0, v0, v8
90 ; CHECK-NEXT:    ret
91   %vc = or <vscale x 8 x i1> %va, %vb
92   ret <vscale x 8 x i1> %vc
95 define <vscale x 16 x i1> @vmor_vv_nxv16i1(<vscale x 16 x i1> %va, <vscale x 16 x i1> %vb) {
96 ; CHECK-LABEL: vmor_vv_nxv16i1:
97 ; CHECK:       # %bb.0:
98 ; CHECK-NEXT:    vsetvli a0, zero, e8, m2, ta, ma
99 ; CHECK-NEXT:    vmor.mm v0, v0, v8
100 ; CHECK-NEXT:    ret
101   %vc = or <vscale x 16 x i1> %va, %vb
102   ret <vscale x 16 x i1> %vc
105 define <vscale x 1 x i1> @vmxor_vv_nxv1i1(<vscale x 1 x i1> %va, <vscale x 1 x i1> %vb) {
106 ; CHECK-LABEL: vmxor_vv_nxv1i1:
107 ; CHECK:       # %bb.0:
108 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma
109 ; CHECK-NEXT:    vmxor.mm v0, v0, v8
110 ; CHECK-NEXT:    ret
111   %vc = xor <vscale x 1 x i1> %va, %vb
112   ret <vscale x 1 x i1> %vc
115 define <vscale x 2 x i1> @vmxor_vv_nxv2i1(<vscale x 2 x i1> %va, <vscale x 2 x i1> %vb) {
116 ; CHECK-LABEL: vmxor_vv_nxv2i1:
117 ; CHECK:       # %bb.0:
118 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma
119 ; CHECK-NEXT:    vmxor.mm v0, v0, v8
120 ; CHECK-NEXT:    ret
121   %vc = xor <vscale x 2 x i1> %va, %vb
122   ret <vscale x 2 x i1> %vc
125 define <vscale x 4 x i1> @vmxor_vv_nxv4i1(<vscale x 4 x i1> %va, <vscale x 4 x i1> %vb) {
126 ; CHECK-LABEL: vmxor_vv_nxv4i1:
127 ; CHECK:       # %bb.0:
128 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma
129 ; CHECK-NEXT:    vmxor.mm v0, v0, v8
130 ; CHECK-NEXT:    ret
131   %vc = xor <vscale x 4 x i1> %va, %vb
132   ret <vscale x 4 x i1> %vc
135 define <vscale x 8 x i1> @vmxor_vv_nxv8i1(<vscale x 8 x i1> %va, <vscale x 8 x i1> %vb) {
136 ; CHECK-LABEL: vmxor_vv_nxv8i1:
137 ; CHECK:       # %bb.0:
138 ; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma
139 ; CHECK-NEXT:    vmxor.mm v0, v0, v8
140 ; CHECK-NEXT:    ret
141   %vc = xor <vscale x 8 x i1> %va, %vb
142   ret <vscale x 8 x i1> %vc
145 define <vscale x 16 x i1> @vmxor_vv_nxv16i1(<vscale x 16 x i1> %va, <vscale x 16 x i1> %vb) {
146 ; CHECK-LABEL: vmxor_vv_nxv16i1:
147 ; CHECK:       # %bb.0:
148 ; CHECK-NEXT:    vsetvli a0, zero, e8, m2, ta, ma
149 ; CHECK-NEXT:    vmxor.mm v0, v0, v8
150 ; CHECK-NEXT:    ret
151   %vc = xor <vscale x 16 x i1> %va, %vb
152   ret <vscale x 16 x i1> %vc
155 define <vscale x 1 x i1> @vmnand_vv_nxv1i1(<vscale x 1 x i1> %va, <vscale x 1 x i1> %vb) {
156 ; CHECK-LABEL: vmnand_vv_nxv1i1:
157 ; CHECK:       # %bb.0:
158 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma
159 ; CHECK-NEXT:    vmnand.mm v0, v0, v8
160 ; CHECK-NEXT:    ret
161   %vc = and <vscale x 1 x i1> %va, %vb
162   %not = xor <vscale x 1 x i1> %vc, splat (i1 1)
163   ret <vscale x 1 x i1> %not
166 define <vscale x 2 x i1> @vmnand_vv_nxv2i1(<vscale x 2 x i1> %va, <vscale x 2 x i1> %vb) {
167 ; CHECK-LABEL: vmnand_vv_nxv2i1:
168 ; CHECK:       # %bb.0:
169 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma
170 ; CHECK-NEXT:    vmnand.mm v0, v0, v8
171 ; CHECK-NEXT:    ret
172   %vc = and <vscale x 2 x i1> %va, %vb
173   %not = xor <vscale x 2 x i1> %vc, splat (i1 1)
174   ret <vscale x 2 x i1> %not
177 define <vscale x 4 x i1> @vmnand_vv_nxv4i1(<vscale x 4 x i1> %va, <vscale x 4 x i1> %vb) {
178 ; CHECK-LABEL: vmnand_vv_nxv4i1:
179 ; CHECK:       # %bb.0:
180 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma
181 ; CHECK-NEXT:    vmnand.mm v0, v0, v8
182 ; CHECK-NEXT:    ret
183   %vc = and <vscale x 4 x i1> %va, %vb
184   %not = xor <vscale x 4 x i1> %vc, splat (i1 1)
185   ret <vscale x 4 x i1> %not
188 define <vscale x 8 x i1> @vmnand_vv_nxv8i1(<vscale x 8 x i1> %va, <vscale x 8 x i1> %vb) {
189 ; CHECK-LABEL: vmnand_vv_nxv8i1:
190 ; CHECK:       # %bb.0:
191 ; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma
192 ; CHECK-NEXT:    vmnand.mm v0, v0, v8
193 ; CHECK-NEXT:    ret
194   %vc = and <vscale x 8 x i1> %va, %vb
195   %not = xor <vscale x 8 x i1> %vc, splat (i1 1)
196   ret <vscale x 8 x i1> %not
199 define <vscale x 16 x i1> @vmnand_vv_nxv16i1(<vscale x 16 x i1> %va, <vscale x 16 x i1> %vb) {
200 ; CHECK-LABEL: vmnand_vv_nxv16i1:
201 ; CHECK:       # %bb.0:
202 ; CHECK-NEXT:    vsetvli a0, zero, e8, m2, ta, ma
203 ; CHECK-NEXT:    vmnand.mm v0, v0, v8
204 ; CHECK-NEXT:    ret
205   %vc = and <vscale x 16 x i1> %va, %vb
206   %not = xor <vscale x 16 x i1> %vc, splat (i1 1)
207   ret <vscale x 16 x i1> %not
210 define <vscale x 1 x i1> @vmnor_vv_nxv1i1(<vscale x 1 x i1> %va, <vscale x 1 x i1> %vb) {
211 ; CHECK-LABEL: vmnor_vv_nxv1i1:
212 ; CHECK:       # %bb.0:
213 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma
214 ; CHECK-NEXT:    vmnor.mm v0, v0, v8
215 ; CHECK-NEXT:    ret
216   %vc = or <vscale x 1 x i1> %va, %vb
217   %not = xor <vscale x 1 x i1> %vc, splat (i1 1)
218   ret <vscale x 1 x i1> %not
221 define <vscale x 2 x i1> @vmnor_vv_nxv2i1(<vscale x 2 x i1> %va, <vscale x 2 x i1> %vb) {
222 ; CHECK-LABEL: vmnor_vv_nxv2i1:
223 ; CHECK:       # %bb.0:
224 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma
225 ; CHECK-NEXT:    vmnor.mm v0, v0, v8
226 ; CHECK-NEXT:    ret
227   %vc = or <vscale x 2 x i1> %va, %vb
228   %not = xor <vscale x 2 x i1> %vc, splat (i1 1)
229   ret <vscale x 2 x i1> %not
232 define <vscale x 4 x i1> @vmnor_vv_nxv4i1(<vscale x 4 x i1> %va, <vscale x 4 x i1> %vb) {
233 ; CHECK-LABEL: vmnor_vv_nxv4i1:
234 ; CHECK:       # %bb.0:
235 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma
236 ; CHECK-NEXT:    vmnor.mm v0, v0, v8
237 ; CHECK-NEXT:    ret
238   %vc = or <vscale x 4 x i1> %va, %vb
239   %not = xor <vscale x 4 x i1> %vc, splat (i1 1)
240   ret <vscale x 4 x i1> %not
243 define <vscale x 8 x i1> @vmnor_vv_nxv8i1(<vscale x 8 x i1> %va, <vscale x 8 x i1> %vb) {
244 ; CHECK-LABEL: vmnor_vv_nxv8i1:
245 ; CHECK:       # %bb.0:
246 ; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma
247 ; CHECK-NEXT:    vmnor.mm v0, v0, v8
248 ; CHECK-NEXT:    ret
249   %vc = or <vscale x 8 x i1> %va, %vb
250   %not = xor <vscale x 8 x i1> %vc, splat (i1 1)
251   ret <vscale x 8 x i1> %not
254 define <vscale x 16 x i1> @vmnor_vv_nxv16i1(<vscale x 16 x i1> %va, <vscale x 16 x i1> %vb) {
255 ; CHECK-LABEL: vmnor_vv_nxv16i1:
256 ; CHECK:       # %bb.0:
257 ; CHECK-NEXT:    vsetvli a0, zero, e8, m2, ta, ma
258 ; CHECK-NEXT:    vmnor.mm v0, v0, v8
259 ; CHECK-NEXT:    ret
260   %vc = or <vscale x 16 x i1> %va, %vb
261   %not = xor <vscale x 16 x i1> %vc, splat (i1 1)
262   ret <vscale x 16 x i1> %not
265 define <vscale x 1 x i1> @vmxnor_vv_nxv1i1(<vscale x 1 x i1> %va, <vscale x 1 x i1> %vb) {
266 ; CHECK-LABEL: vmxnor_vv_nxv1i1:
267 ; CHECK:       # %bb.0:
268 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma
269 ; CHECK-NEXT:    vmxnor.mm v0, v0, v8
270 ; CHECK-NEXT:    ret
271   %vc = xor <vscale x 1 x i1> %va, %vb
272   %not = xor <vscale x 1 x i1> %vc, splat (i1 1)
273   ret <vscale x 1 x i1> %not
276 define <vscale x 2 x i1> @vmxnor_vv_nxv2i1(<vscale x 2 x i1> %va, <vscale x 2 x i1> %vb) {
277 ; CHECK-LABEL: vmxnor_vv_nxv2i1:
278 ; CHECK:       # %bb.0:
279 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma
280 ; CHECK-NEXT:    vmxnor.mm v0, v0, v8
281 ; CHECK-NEXT:    ret
282   %vc = xor <vscale x 2 x i1> %va, %vb
283   %not = xor <vscale x 2 x i1> %vc, splat (i1 1)
284   ret <vscale x 2 x i1> %not
287 define <vscale x 4 x i1> @vmxnor_vv_nxv4i1(<vscale x 4 x i1> %va, <vscale x 4 x i1> %vb) {
288 ; CHECK-LABEL: vmxnor_vv_nxv4i1:
289 ; CHECK:       # %bb.0:
290 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma
291 ; CHECK-NEXT:    vmxnor.mm v0, v0, v8
292 ; CHECK-NEXT:    ret
293   %vc = xor <vscale x 4 x i1> %va, %vb
294   %not = xor <vscale x 4 x i1> %vc, splat (i1 1)
295   ret <vscale x 4 x i1> %not
298 define <vscale x 8 x i1> @vmxnor_vv_nxv8i1(<vscale x 8 x i1> %va, <vscale x 8 x i1> %vb) {
299 ; CHECK-LABEL: vmxnor_vv_nxv8i1:
300 ; CHECK:       # %bb.0:
301 ; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma
302 ; CHECK-NEXT:    vmxnor.mm v0, v0, v8
303 ; CHECK-NEXT:    ret
304   %vc = xor <vscale x 8 x i1> %va, %vb
305   %not = xor <vscale x 8 x i1> %vc, splat (i1 1)
306   ret <vscale x 8 x i1> %not
309 define <vscale x 16 x i1> @vmxnor_vv_nxv16i1(<vscale x 16 x i1> %va, <vscale x 16 x i1> %vb) {
310 ; CHECK-LABEL: vmxnor_vv_nxv16i1:
311 ; CHECK:       # %bb.0:
312 ; CHECK-NEXT:    vsetvli a0, zero, e8, m2, ta, ma
313 ; CHECK-NEXT:    vmxnor.mm v0, v0, v8
314 ; CHECK-NEXT:    ret
315   %vc = xor <vscale x 16 x i1> %va, %vb
316   %not = xor <vscale x 16 x i1> %vc, splat (i1 1)
317   ret <vscale x 16 x i1> %not
320 define <vscale x 1 x i1> @vmandn_vv_nxv1i1(<vscale x 1 x i1> %va, <vscale x 1 x i1> %vb) {
321 ; CHECK-LABEL: vmandn_vv_nxv1i1:
322 ; CHECK:       # %bb.0:
323 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma
324 ; CHECK-NEXT:    vmandn.mm v0, v0, v8
325 ; CHECK-NEXT:    ret
326   %not = xor <vscale x 1 x i1> %vb, splat (i1 1)
327   %vc = and <vscale x 1 x i1> %va, %not
328   ret <vscale x 1 x i1> %vc
331 define <vscale x 2 x i1> @vmandn_vv_nxv2i1(<vscale x 2 x i1> %va, <vscale x 2 x i1> %vb) {
332 ; CHECK-LABEL: vmandn_vv_nxv2i1:
333 ; CHECK:       # %bb.0:
334 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma
335 ; CHECK-NEXT:    vmandn.mm v0, v0, v8
336 ; CHECK-NEXT:    ret
337   %not = xor <vscale x 2 x i1> %vb, splat (i1 1)
338   %vc = and <vscale x 2 x i1> %va, %not
339   ret <vscale x 2 x i1> %vc
342 define <vscale x 4 x i1> @vmandn_vv_nxv4i1(<vscale x 4 x i1> %va, <vscale x 4 x i1> %vb) {
343 ; CHECK-LABEL: vmandn_vv_nxv4i1:
344 ; CHECK:       # %bb.0:
345 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma
346 ; CHECK-NEXT:    vmandn.mm v0, v0, v8
347 ; CHECK-NEXT:    ret
348   %not = xor <vscale x 4 x i1> %vb, splat (i1 1)
349   %vc = and <vscale x 4 x i1> %va, %not
350   ret <vscale x 4 x i1> %vc
353 define <vscale x 8 x i1> @vmandn_vv_nxv8i1(<vscale x 8 x i1> %va, <vscale x 8 x i1> %vb) {
354 ; CHECK-LABEL: vmandn_vv_nxv8i1:
355 ; CHECK:       # %bb.0:
356 ; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma
357 ; CHECK-NEXT:    vmandn.mm v0, v0, v8
358 ; CHECK-NEXT:    ret
359   %not = xor <vscale x 8 x i1> %vb, splat (i1 1)
360   %vc = and <vscale x 8 x i1> %va, %not
361   ret <vscale x 8 x i1> %vc
364 define <vscale x 16 x i1> @vmandn_vv_nxv16i1(<vscale x 16 x i1> %va, <vscale x 16 x i1> %vb) {
365 ; CHECK-LABEL: vmandn_vv_nxv16i1:
366 ; CHECK:       # %bb.0:
367 ; CHECK-NEXT:    vsetvli a0, zero, e8, m2, ta, ma
368 ; CHECK-NEXT:    vmandn.mm v0, v0, v8
369 ; CHECK-NEXT:    ret
370   %not = xor <vscale x 16 x i1> %vb, splat (i1 1)
371   %vc = and <vscale x 16 x i1> %va, %not
372   ret <vscale x 16 x i1> %vc
375 define <vscale x 1 x i1> @vmorn_vv_nxv1i1(<vscale x 1 x i1> %va, <vscale x 1 x i1> %vb) {
376 ; CHECK-LABEL: vmorn_vv_nxv1i1:
377 ; CHECK:       # %bb.0:
378 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma
379 ; CHECK-NEXT:    vmorn.mm v0, v0, v8
380 ; CHECK-NEXT:    ret
381   %not = xor <vscale x 1 x i1> %vb, splat (i1 1)
382   %vc = or <vscale x 1 x i1> %va, %not
383   ret <vscale x 1 x i1> %vc
386 define <vscale x 2 x i1> @vmorn_vv_nxv2i1(<vscale x 2 x i1> %va, <vscale x 2 x i1> %vb) {
387 ; CHECK-LABEL: vmorn_vv_nxv2i1:
388 ; CHECK:       # %bb.0:
389 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma
390 ; CHECK-NEXT:    vmorn.mm v0, v0, v8
391 ; CHECK-NEXT:    ret
392   %not = xor <vscale x 2 x i1> %vb, splat (i1 1)
393   %vc = or <vscale x 2 x i1> %va, %not
394   ret <vscale x 2 x i1> %vc
397 define <vscale x 4 x i1> @vmorn_vv_nxv4i1(<vscale x 4 x i1> %va, <vscale x 4 x i1> %vb) {
398 ; CHECK-LABEL: vmorn_vv_nxv4i1:
399 ; CHECK:       # %bb.0:
400 ; CHECK-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma
401 ; CHECK-NEXT:    vmorn.mm v0, v0, v8
402 ; CHECK-NEXT:    ret
403   %not = xor <vscale x 4 x i1> %vb, splat (i1 1)
404   %vc = or <vscale x 4 x i1> %va, %not
405   ret <vscale x 4 x i1> %vc
408 define <vscale x 8 x i1> @vmorn_vv_nxv8i1(<vscale x 8 x i1> %va, <vscale x 8 x i1> %vb) {
409 ; CHECK-LABEL: vmorn_vv_nxv8i1:
410 ; CHECK:       # %bb.0:
411 ; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma
412 ; CHECK-NEXT:    vmorn.mm v0, v0, v8
413 ; CHECK-NEXT:    ret
414   %not = xor <vscale x 8 x i1> %vb, splat (i1 1)
415   %vc = or <vscale x 8 x i1> %va, %not
416   ret <vscale x 8 x i1> %vc
419 define <vscale x 16 x i1> @vmorn_vv_nxv16i1(<vscale x 16 x i1> %va, <vscale x 16 x i1> %vb) {
420 ; CHECK-LABEL: vmorn_vv_nxv16i1:
421 ; CHECK:       # %bb.0:
422 ; CHECK-NEXT:    vsetvli a0, zero, e8, m2, ta, ma
423 ; CHECK-NEXT:    vmorn.mm v0, v0, v8
424 ; CHECK-NEXT:    ret
425   %not = xor <vscale x 16 x i1> %vb, splat (i1 1)
426   %vc = or <vscale x 16 x i1> %va, %not
427   ret <vscale x 16 x i1> %vc