Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vmsgeu.ll
blob5568c1e9b1cfb93ceb55aa87b42de7c10a028598
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v \
3 ; RUN:   -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK,RV32
4 ; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v \
5 ; RUN:   -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK,RV64
7 declare <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i8(
8   <vscale x 1 x i8>,
9   <vscale x 1 x i8>,
10   iXLen);
12 define <vscale x 1 x i1> @intrinsic_vmsgeu_vv_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, iXLen %2) nounwind {
13 ; CHECK-LABEL: intrinsic_vmsgeu_vv_nxv1i8_nxv1i8:
14 ; CHECK:       # %bb.0: # %entry
15 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
16 ; CHECK-NEXT:    vmsleu.vv v0, v9, v8
17 ; CHECK-NEXT:    ret
18 entry:
19   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i8(
20     <vscale x 1 x i8> %0,
21     <vscale x 1 x i8> %1,
22     iXLen %2)
24   ret <vscale x 1 x i1> %a
27 declare <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i8(
28   <vscale x 1 x i1>,
29   <vscale x 1 x i8>,
30   <vscale x 1 x i8>,
31   <vscale x 1 x i1>,
32   iXLen);
34 define <vscale x 1 x i1> @intrinsic_vmsgeu_mask_vv_nxv1i8_nxv1i8(<vscale x 1 x i1> %0, <vscale x 1 x i8> %1, <vscale x 1 x i8> %2, <vscale x 1 x i8> %3, iXLen %4) nounwind {
35 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vv_nxv1i8_nxv1i8:
36 ; CHECK:       # %bb.0: # %entry
37 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, mu
38 ; CHECK-NEXT:    vmsleu.vv v8, v9, v8
39 ; CHECK-NEXT:    vmv1r.v v11, v0
40 ; CHECK-NEXT:    vmv1r.v v0, v8
41 ; CHECK-NEXT:    vmsleu.vv v11, v10, v9, v0.t
42 ; CHECK-NEXT:    vmv1r.v v0, v11
43 ; CHECK-NEXT:    ret
44 entry:
45   %mask = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i8(
46     <vscale x 1 x i8> %1,
47     <vscale x 1 x i8> %2,
48     iXLen %4)
49   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i8(
50     <vscale x 1 x i1> %0,
51     <vscale x 1 x i8> %2,
52     <vscale x 1 x i8> %3,
53     <vscale x 1 x i1> %mask,
54     iXLen %4)
56   ret <vscale x 1 x i1> %a
59 declare <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i8(
60   <vscale x 2 x i8>,
61   <vscale x 2 x i8>,
62   iXLen);
64 define <vscale x 2 x i1> @intrinsic_vmsgeu_vv_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, iXLen %2) nounwind {
65 ; CHECK-LABEL: intrinsic_vmsgeu_vv_nxv2i8_nxv2i8:
66 ; CHECK:       # %bb.0: # %entry
67 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
68 ; CHECK-NEXT:    vmsleu.vv v0, v9, v8
69 ; CHECK-NEXT:    ret
70 entry:
71   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i8(
72     <vscale x 2 x i8> %0,
73     <vscale x 2 x i8> %1,
74     iXLen %2)
76   ret <vscale x 2 x i1> %a
79 declare <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i8(
80   <vscale x 2 x i1>,
81   <vscale x 2 x i8>,
82   <vscale x 2 x i8>,
83   <vscale x 2 x i1>,
84   iXLen);
86 define <vscale x 2 x i1> @intrinsic_vmsgeu_mask_vv_nxv2i8_nxv2i8(<vscale x 2 x i1> %0, <vscale x 2 x i8> %1, <vscale x 2 x i8> %2, <vscale x 2 x i8> %3, iXLen %4) nounwind {
87 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vv_nxv2i8_nxv2i8:
88 ; CHECK:       # %bb.0: # %entry
89 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, mu
90 ; CHECK-NEXT:    vmsleu.vv v8, v9, v8
91 ; CHECK-NEXT:    vmv1r.v v11, v0
92 ; CHECK-NEXT:    vmv1r.v v0, v8
93 ; CHECK-NEXT:    vmsleu.vv v11, v10, v9, v0.t
94 ; CHECK-NEXT:    vmv1r.v v0, v11
95 ; CHECK-NEXT:    ret
96 entry:
97   %mask = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i8(
98     <vscale x 2 x i8> %1,
99     <vscale x 2 x i8> %2,
100     iXLen %4)
101   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i8(
102     <vscale x 2 x i1> %0,
103     <vscale x 2 x i8> %2,
104     <vscale x 2 x i8> %3,
105     <vscale x 2 x i1> %mask,
106     iXLen %4)
108   ret <vscale x 2 x i1> %a
111 declare <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i8(
112   <vscale x 4 x i8>,
113   <vscale x 4 x i8>,
114   iXLen);
116 define <vscale x 4 x i1> @intrinsic_vmsgeu_vv_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, iXLen %2) nounwind {
117 ; CHECK-LABEL: intrinsic_vmsgeu_vv_nxv4i8_nxv4i8:
118 ; CHECK:       # %bb.0: # %entry
119 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
120 ; CHECK-NEXT:    vmsleu.vv v0, v9, v8
121 ; CHECK-NEXT:    ret
122 entry:
123   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i8(
124     <vscale x 4 x i8> %0,
125     <vscale x 4 x i8> %1,
126     iXLen %2)
128   ret <vscale x 4 x i1> %a
131 declare <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i8(
132   <vscale x 4 x i1>,
133   <vscale x 4 x i8>,
134   <vscale x 4 x i8>,
135   <vscale x 4 x i1>,
136   iXLen);
138 define <vscale x 4 x i1> @intrinsic_vmsgeu_mask_vv_nxv4i8_nxv4i8(<vscale x 4 x i1> %0, <vscale x 4 x i8> %1, <vscale x 4 x i8> %2, <vscale x 4 x i8> %3, iXLen %4) nounwind {
139 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vv_nxv4i8_nxv4i8:
140 ; CHECK:       # %bb.0: # %entry
141 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, mu
142 ; CHECK-NEXT:    vmsleu.vv v8, v9, v8
143 ; CHECK-NEXT:    vmv1r.v v11, v0
144 ; CHECK-NEXT:    vmv1r.v v0, v8
145 ; CHECK-NEXT:    vmsleu.vv v11, v10, v9, v0.t
146 ; CHECK-NEXT:    vmv1r.v v0, v11
147 ; CHECK-NEXT:    ret
148 entry:
149   %mask = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i8(
150     <vscale x 4 x i8> %1,
151     <vscale x 4 x i8> %2,
152     iXLen %4)
153   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i8(
154     <vscale x 4 x i1> %0,
155     <vscale x 4 x i8> %2,
156     <vscale x 4 x i8> %3,
157     <vscale x 4 x i1> %mask,
158     iXLen %4)
160   ret <vscale x 4 x i1> %a
163 declare <vscale x 8 x i1> @llvm.riscv.vmsgeu.nxv8i8(
164   <vscale x 8 x i8>,
165   <vscale x 8 x i8>,
166   iXLen);
168 define <vscale x 8 x i1> @intrinsic_vmsgeu_vv_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, iXLen %2) nounwind {
169 ; CHECK-LABEL: intrinsic_vmsgeu_vv_nxv8i8_nxv8i8:
170 ; CHECK:       # %bb.0: # %entry
171 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
172 ; CHECK-NEXT:    vmsleu.vv v0, v9, v8
173 ; CHECK-NEXT:    ret
174 entry:
175   %a = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.nxv8i8(
176     <vscale x 8 x i8> %0,
177     <vscale x 8 x i8> %1,
178     iXLen %2)
180   ret <vscale x 8 x i1> %a
183 declare <vscale x 8 x i1> @llvm.riscv.vmsgeu.mask.nxv8i8(
184   <vscale x 8 x i1>,
185   <vscale x 8 x i8>,
186   <vscale x 8 x i8>,
187   <vscale x 8 x i1>,
188   iXLen);
190 define <vscale x 8 x i1> @intrinsic_vmsgeu_mask_vv_nxv8i8_nxv8i8(<vscale x 8 x i1> %0, <vscale x 8 x i8> %1, <vscale x 8 x i8> %2, <vscale x 8 x i8> %3, iXLen %4) nounwind {
191 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vv_nxv8i8_nxv8i8:
192 ; CHECK:       # %bb.0: # %entry
193 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, mu
194 ; CHECK-NEXT:    vmsleu.vv v8, v9, v8
195 ; CHECK-NEXT:    vmv1r.v v11, v0
196 ; CHECK-NEXT:    vmv.v.v v0, v8
197 ; CHECK-NEXT:    vmsleu.vv v11, v10, v9, v0.t
198 ; CHECK-NEXT:    vmv.v.v v0, v11
199 ; CHECK-NEXT:    ret
200 entry:
201   %mask = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.nxv8i8(
202     <vscale x 8 x i8> %1,
203     <vscale x 8 x i8> %2,
204     iXLen %4)
205   %a = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.mask.nxv8i8(
206     <vscale x 8 x i1> %0,
207     <vscale x 8 x i8> %2,
208     <vscale x 8 x i8> %3,
209     <vscale x 8 x i1> %mask,
210     iXLen %4)
212   ret <vscale x 8 x i1> %a
215 declare <vscale x 16 x i1> @llvm.riscv.vmsgeu.nxv16i8(
216   <vscale x 16 x i8>,
217   <vscale x 16 x i8>,
218   iXLen);
220 define <vscale x 16 x i1> @intrinsic_vmsgeu_vv_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, iXLen %2) nounwind {
221 ; CHECK-LABEL: intrinsic_vmsgeu_vv_nxv16i8_nxv16i8:
222 ; CHECK:       # %bb.0: # %entry
223 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
224 ; CHECK-NEXT:    vmsleu.vv v0, v10, v8
225 ; CHECK-NEXT:    ret
226 entry:
227   %a = call <vscale x 16 x i1> @llvm.riscv.vmsgeu.nxv16i8(
228     <vscale x 16 x i8> %0,
229     <vscale x 16 x i8> %1,
230     iXLen %2)
232   ret <vscale x 16 x i1> %a
235 declare <vscale x 16 x i1> @llvm.riscv.vmsgeu.mask.nxv16i8(
236   <vscale x 16 x i1>,
237   <vscale x 16 x i8>,
238   <vscale x 16 x i8>,
239   <vscale x 16 x i1>,
240   iXLen);
242 define <vscale x 16 x i1> @intrinsic_vmsgeu_mask_vv_nxv16i8_nxv16i8(<vscale x 16 x i1> %0, <vscale x 16 x i8> %1, <vscale x 16 x i8> %2, <vscale x 16 x i8> %3, iXLen %4) nounwind {
243 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vv_nxv16i8_nxv16i8:
244 ; CHECK:       # %bb.0: # %entry
245 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, mu
246 ; CHECK-NEXT:    vmsleu.vv v14, v10, v8
247 ; CHECK-NEXT:    vmv1r.v v8, v0
248 ; CHECK-NEXT:    vmv1r.v v0, v14
249 ; CHECK-NEXT:    vmsleu.vv v8, v12, v10, v0.t
250 ; CHECK-NEXT:    vmv1r.v v0, v8
251 ; CHECK-NEXT:    ret
252 entry:
253   %mask = call <vscale x 16 x i1> @llvm.riscv.vmsgeu.nxv16i8(
254     <vscale x 16 x i8> %1,
255     <vscale x 16 x i8> %2,
256     iXLen %4)
257   %a = call <vscale x 16 x i1> @llvm.riscv.vmsgeu.mask.nxv16i8(
258     <vscale x 16 x i1> %0,
259     <vscale x 16 x i8> %2,
260     <vscale x 16 x i8> %3,
261     <vscale x 16 x i1> %mask,
262     iXLen %4)
264   ret <vscale x 16 x i1> %a
267 declare <vscale x 32 x i1> @llvm.riscv.vmsgeu.nxv32i8(
268   <vscale x 32 x i8>,
269   <vscale x 32 x i8>,
270   iXLen);
272 define <vscale x 32 x i1> @intrinsic_vmsgeu_vv_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, iXLen %2) nounwind {
273 ; CHECK-LABEL: intrinsic_vmsgeu_vv_nxv32i8_nxv32i8:
274 ; CHECK:       # %bb.0: # %entry
275 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
276 ; CHECK-NEXT:    vmsleu.vv v0, v12, v8
277 ; CHECK-NEXT:    ret
278 entry:
279   %a = call <vscale x 32 x i1> @llvm.riscv.vmsgeu.nxv32i8(
280     <vscale x 32 x i8> %0,
281     <vscale x 32 x i8> %1,
282     iXLen %2)
284   ret <vscale x 32 x i1> %a
287 declare <vscale x 32 x i1> @llvm.riscv.vmsgeu.mask.nxv32i8(
288   <vscale x 32 x i1>,
289   <vscale x 32 x i8>,
290   <vscale x 32 x i8>,
291   <vscale x 32 x i1>,
292   iXLen);
294 define <vscale x 32 x i1> @intrinsic_vmsgeu_mask_vv_nxv32i8_nxv32i8(<vscale x 32 x i1> %0, <vscale x 32 x i8> %1, <vscale x 32 x i8> %2, <vscale x 32 x i8> %3, iXLen %4) nounwind {
295 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vv_nxv32i8_nxv32i8:
296 ; CHECK:       # %bb.0: # %entry
297 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, mu
298 ; CHECK-NEXT:    vmsleu.vv v20, v12, v8
299 ; CHECK-NEXT:    vmv1r.v v8, v0
300 ; CHECK-NEXT:    vmv1r.v v0, v20
301 ; CHECK-NEXT:    vmsleu.vv v8, v16, v12, v0.t
302 ; CHECK-NEXT:    vmv1r.v v0, v8
303 ; CHECK-NEXT:    ret
304 entry:
305   %mask = call <vscale x 32 x i1> @llvm.riscv.vmsgeu.nxv32i8(
306     <vscale x 32 x i8> %1,
307     <vscale x 32 x i8> %2,
308     iXLen %4)
309   %a = call <vscale x 32 x i1> @llvm.riscv.vmsgeu.mask.nxv32i8(
310     <vscale x 32 x i1> %0,
311     <vscale x 32 x i8> %2,
312     <vscale x 32 x i8> %3,
313     <vscale x 32 x i1> %mask,
314     iXLen %4)
316   ret <vscale x 32 x i1> %a
319 declare <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i16(
320   <vscale x 1 x i16>,
321   <vscale x 1 x i16>,
322   iXLen);
324 define <vscale x 1 x i1> @intrinsic_vmsgeu_vv_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, iXLen %2) nounwind {
325 ; CHECK-LABEL: intrinsic_vmsgeu_vv_nxv1i16_nxv1i16:
326 ; CHECK:       # %bb.0: # %entry
327 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
328 ; CHECK-NEXT:    vmsleu.vv v0, v9, v8
329 ; CHECK-NEXT:    ret
330 entry:
331   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i16(
332     <vscale x 1 x i16> %0,
333     <vscale x 1 x i16> %1,
334     iXLen %2)
336   ret <vscale x 1 x i1> %a
339 declare <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i16(
340   <vscale x 1 x i1>,
341   <vscale x 1 x i16>,
342   <vscale x 1 x i16>,
343   <vscale x 1 x i1>,
344   iXLen);
346 define <vscale x 1 x i1> @intrinsic_vmsgeu_mask_vv_nxv1i16_nxv1i16(<vscale x 1 x i1> %0, <vscale x 1 x i16> %1, <vscale x 1 x i16> %2, <vscale x 1 x i16> %3, iXLen %4) nounwind {
347 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vv_nxv1i16_nxv1i16:
348 ; CHECK:       # %bb.0: # %entry
349 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu
350 ; CHECK-NEXT:    vmsleu.vv v8, v9, v8
351 ; CHECK-NEXT:    vmv1r.v v11, v0
352 ; CHECK-NEXT:    vmv1r.v v0, v8
353 ; CHECK-NEXT:    vmsleu.vv v11, v10, v9, v0.t
354 ; CHECK-NEXT:    vmv1r.v v0, v11
355 ; CHECK-NEXT:    ret
356 entry:
357   %mask = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i16(
358     <vscale x 1 x i16> %1,
359     <vscale x 1 x i16> %2,
360     iXLen %4)
361   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i16(
362     <vscale x 1 x i1> %0,
363     <vscale x 1 x i16> %2,
364     <vscale x 1 x i16> %3,
365     <vscale x 1 x i1> %mask,
366     iXLen %4)
368   ret <vscale x 1 x i1> %a
371 declare <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i16(
372   <vscale x 2 x i16>,
373   <vscale x 2 x i16>,
374   iXLen);
376 define <vscale x 2 x i1> @intrinsic_vmsgeu_vv_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, iXLen %2) nounwind {
377 ; CHECK-LABEL: intrinsic_vmsgeu_vv_nxv2i16_nxv2i16:
378 ; CHECK:       # %bb.0: # %entry
379 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
380 ; CHECK-NEXT:    vmsleu.vv v0, v9, v8
381 ; CHECK-NEXT:    ret
382 entry:
383   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i16(
384     <vscale x 2 x i16> %0,
385     <vscale x 2 x i16> %1,
386     iXLen %2)
388   ret <vscale x 2 x i1> %a
391 declare <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i16(
392   <vscale x 2 x i1>,
393   <vscale x 2 x i16>,
394   <vscale x 2 x i16>,
395   <vscale x 2 x i1>,
396   iXLen);
398 define <vscale x 2 x i1> @intrinsic_vmsgeu_mask_vv_nxv2i16_nxv2i16(<vscale x 2 x i1> %0, <vscale x 2 x i16> %1, <vscale x 2 x i16> %2, <vscale x 2 x i16> %3, iXLen %4) nounwind {
399 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vv_nxv2i16_nxv2i16:
400 ; CHECK:       # %bb.0: # %entry
401 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu
402 ; CHECK-NEXT:    vmsleu.vv v8, v9, v8
403 ; CHECK-NEXT:    vmv1r.v v11, v0
404 ; CHECK-NEXT:    vmv1r.v v0, v8
405 ; CHECK-NEXT:    vmsleu.vv v11, v10, v9, v0.t
406 ; CHECK-NEXT:    vmv1r.v v0, v11
407 ; CHECK-NEXT:    ret
408 entry:
409   %mask = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i16(
410     <vscale x 2 x i16> %1,
411     <vscale x 2 x i16> %2,
412     iXLen %4)
413   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i16(
414     <vscale x 2 x i1> %0,
415     <vscale x 2 x i16> %2,
416     <vscale x 2 x i16> %3,
417     <vscale x 2 x i1> %mask,
418     iXLen %4)
420   ret <vscale x 2 x i1> %a
423 declare <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i16(
424   <vscale x 4 x i16>,
425   <vscale x 4 x i16>,
426   iXLen);
428 define <vscale x 4 x i1> @intrinsic_vmsgeu_vv_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, iXLen %2) nounwind {
429 ; CHECK-LABEL: intrinsic_vmsgeu_vv_nxv4i16_nxv4i16:
430 ; CHECK:       # %bb.0: # %entry
431 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
432 ; CHECK-NEXT:    vmsleu.vv v0, v9, v8
433 ; CHECK-NEXT:    ret
434 entry:
435   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i16(
436     <vscale x 4 x i16> %0,
437     <vscale x 4 x i16> %1,
438     iXLen %2)
440   ret <vscale x 4 x i1> %a
443 declare <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i16(
444   <vscale x 4 x i1>,
445   <vscale x 4 x i16>,
446   <vscale x 4 x i16>,
447   <vscale x 4 x i1>,
448   iXLen);
450 define <vscale x 4 x i1> @intrinsic_vmsgeu_mask_vv_nxv4i16_nxv4i16(<vscale x 4 x i1> %0, <vscale x 4 x i16> %1, <vscale x 4 x i16> %2, <vscale x 4 x i16> %3, iXLen %4) nounwind {
451 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vv_nxv4i16_nxv4i16:
452 ; CHECK:       # %bb.0: # %entry
453 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu
454 ; CHECK-NEXT:    vmsleu.vv v8, v9, v8
455 ; CHECK-NEXT:    vmv1r.v v11, v0
456 ; CHECK-NEXT:    vmv.v.v v0, v8
457 ; CHECK-NEXT:    vmsleu.vv v11, v10, v9, v0.t
458 ; CHECK-NEXT:    vmv.v.v v0, v11
459 ; CHECK-NEXT:    ret
460 entry:
461   %mask = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i16(
462     <vscale x 4 x i16> %1,
463     <vscale x 4 x i16> %2,
464     iXLen %4)
465   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i16(
466     <vscale x 4 x i1> %0,
467     <vscale x 4 x i16> %2,
468     <vscale x 4 x i16> %3,
469     <vscale x 4 x i1> %mask,
470     iXLen %4)
472   ret <vscale x 4 x i1> %a
475 declare <vscale x 8 x i1> @llvm.riscv.vmsgeu.nxv8i16(
476   <vscale x 8 x i16>,
477   <vscale x 8 x i16>,
478   iXLen);
480 define <vscale x 8 x i1> @intrinsic_vmsgeu_vv_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, iXLen %2) nounwind {
481 ; CHECK-LABEL: intrinsic_vmsgeu_vv_nxv8i16_nxv8i16:
482 ; CHECK:       # %bb.0: # %entry
483 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
484 ; CHECK-NEXT:    vmsleu.vv v0, v10, v8
485 ; CHECK-NEXT:    ret
486 entry:
487   %a = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.nxv8i16(
488     <vscale x 8 x i16> %0,
489     <vscale x 8 x i16> %1,
490     iXLen %2)
492   ret <vscale x 8 x i1> %a
495 declare <vscale x 8 x i1> @llvm.riscv.vmsgeu.mask.nxv8i16(
496   <vscale x 8 x i1>,
497   <vscale x 8 x i16>,
498   <vscale x 8 x i16>,
499   <vscale x 8 x i1>,
500   iXLen);
502 define <vscale x 8 x i1> @intrinsic_vmsgeu_mask_vv_nxv8i16_nxv8i16(<vscale x 8 x i1> %0, <vscale x 8 x i16> %1, <vscale x 8 x i16> %2, <vscale x 8 x i16> %3, iXLen %4) nounwind {
503 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vv_nxv8i16_nxv8i16:
504 ; CHECK:       # %bb.0: # %entry
505 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu
506 ; CHECK-NEXT:    vmsleu.vv v14, v10, v8
507 ; CHECK-NEXT:    vmv1r.v v8, v0
508 ; CHECK-NEXT:    vmv1r.v v0, v14
509 ; CHECK-NEXT:    vmsleu.vv v8, v12, v10, v0.t
510 ; CHECK-NEXT:    vmv1r.v v0, v8
511 ; CHECK-NEXT:    ret
512 entry:
513   %mask = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.nxv8i16(
514     <vscale x 8 x i16> %1,
515     <vscale x 8 x i16> %2,
516     iXLen %4)
517   %a = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.mask.nxv8i16(
518     <vscale x 8 x i1> %0,
519     <vscale x 8 x i16> %2,
520     <vscale x 8 x i16> %3,
521     <vscale x 8 x i1> %mask,
522     iXLen %4)
524   ret <vscale x 8 x i1> %a
527 declare <vscale x 16 x i1> @llvm.riscv.vmsgeu.nxv16i16(
528   <vscale x 16 x i16>,
529   <vscale x 16 x i16>,
530   iXLen);
532 define <vscale x 16 x i1> @intrinsic_vmsgeu_vv_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, iXLen %2) nounwind {
533 ; CHECK-LABEL: intrinsic_vmsgeu_vv_nxv16i16_nxv16i16:
534 ; CHECK:       # %bb.0: # %entry
535 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
536 ; CHECK-NEXT:    vmsleu.vv v0, v12, v8
537 ; CHECK-NEXT:    ret
538 entry:
539   %a = call <vscale x 16 x i1> @llvm.riscv.vmsgeu.nxv16i16(
540     <vscale x 16 x i16> %0,
541     <vscale x 16 x i16> %1,
542     iXLen %2)
544   ret <vscale x 16 x i1> %a
547 declare <vscale x 16 x i1> @llvm.riscv.vmsgeu.mask.nxv16i16(
548   <vscale x 16 x i1>,
549   <vscale x 16 x i16>,
550   <vscale x 16 x i16>,
551   <vscale x 16 x i1>,
552   iXLen);
554 define <vscale x 16 x i1> @intrinsic_vmsgeu_mask_vv_nxv16i16_nxv16i16(<vscale x 16 x i1> %0, <vscale x 16 x i16> %1, <vscale x 16 x i16> %2, <vscale x 16 x i16> %3, iXLen %4) nounwind {
555 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vv_nxv16i16_nxv16i16:
556 ; CHECK:       # %bb.0: # %entry
557 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu
558 ; CHECK-NEXT:    vmsleu.vv v20, v12, v8
559 ; CHECK-NEXT:    vmv1r.v v8, v0
560 ; CHECK-NEXT:    vmv1r.v v0, v20
561 ; CHECK-NEXT:    vmsleu.vv v8, v16, v12, v0.t
562 ; CHECK-NEXT:    vmv1r.v v0, v8
563 ; CHECK-NEXT:    ret
564 entry:
565   %mask = call <vscale x 16 x i1> @llvm.riscv.vmsgeu.nxv16i16(
566     <vscale x 16 x i16> %1,
567     <vscale x 16 x i16> %2,
568     iXLen %4)
569   %a = call <vscale x 16 x i1> @llvm.riscv.vmsgeu.mask.nxv16i16(
570     <vscale x 16 x i1> %0,
571     <vscale x 16 x i16> %2,
572     <vscale x 16 x i16> %3,
573     <vscale x 16 x i1> %mask,
574     iXLen %4)
576   ret <vscale x 16 x i1> %a
579 declare <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i32(
580   <vscale x 1 x i32>,
581   <vscale x 1 x i32>,
582   iXLen);
584 define <vscale x 1 x i1> @intrinsic_vmsgeu_vv_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, iXLen %2) nounwind {
585 ; CHECK-LABEL: intrinsic_vmsgeu_vv_nxv1i32_nxv1i32:
586 ; CHECK:       # %bb.0: # %entry
587 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
588 ; CHECK-NEXT:    vmsleu.vv v0, v9, v8
589 ; CHECK-NEXT:    ret
590 entry:
591   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i32(
592     <vscale x 1 x i32> %0,
593     <vscale x 1 x i32> %1,
594     iXLen %2)
596   ret <vscale x 1 x i1> %a
599 declare <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i32(
600   <vscale x 1 x i1>,
601   <vscale x 1 x i32>,
602   <vscale x 1 x i32>,
603   <vscale x 1 x i1>,
604   iXLen);
606 define <vscale x 1 x i1> @intrinsic_vmsgeu_mask_vv_nxv1i32_nxv1i32(<vscale x 1 x i1> %0, <vscale x 1 x i32> %1, <vscale x 1 x i32> %2, <vscale x 1 x i32> %3, iXLen %4) nounwind {
607 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vv_nxv1i32_nxv1i32:
608 ; CHECK:       # %bb.0: # %entry
609 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu
610 ; CHECK-NEXT:    vmsleu.vv v8, v9, v8
611 ; CHECK-NEXT:    vmv1r.v v11, v0
612 ; CHECK-NEXT:    vmv1r.v v0, v8
613 ; CHECK-NEXT:    vmsleu.vv v11, v10, v9, v0.t
614 ; CHECK-NEXT:    vmv1r.v v0, v11
615 ; CHECK-NEXT:    ret
616 entry:
617   %mask = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i32(
618     <vscale x 1 x i32> %1,
619     <vscale x 1 x i32> %2,
620     iXLen %4)
621   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i32(
622     <vscale x 1 x i1> %0,
623     <vscale x 1 x i32> %2,
624     <vscale x 1 x i32> %3,
625     <vscale x 1 x i1> %mask,
626     iXLen %4)
628   ret <vscale x 1 x i1> %a
631 declare <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i32(
632   <vscale x 2 x i32>,
633   <vscale x 2 x i32>,
634   iXLen);
636 define <vscale x 2 x i1> @intrinsic_vmsgeu_vv_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, iXLen %2) nounwind {
637 ; CHECK-LABEL: intrinsic_vmsgeu_vv_nxv2i32_nxv2i32:
638 ; CHECK:       # %bb.0: # %entry
639 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
640 ; CHECK-NEXT:    vmsleu.vv v0, v9, v8
641 ; CHECK-NEXT:    ret
642 entry:
643   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i32(
644     <vscale x 2 x i32> %0,
645     <vscale x 2 x i32> %1,
646     iXLen %2)
648   ret <vscale x 2 x i1> %a
651 declare <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i32(
652   <vscale x 2 x i1>,
653   <vscale x 2 x i32>,
654   <vscale x 2 x i32>,
655   <vscale x 2 x i1>,
656   iXLen);
658 define <vscale x 2 x i1> @intrinsic_vmsgeu_mask_vv_nxv2i32_nxv2i32(<vscale x 2 x i1> %0, <vscale x 2 x i32> %1, <vscale x 2 x i32> %2, <vscale x 2 x i32> %3, iXLen %4) nounwind {
659 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vv_nxv2i32_nxv2i32:
660 ; CHECK:       # %bb.0: # %entry
661 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu
662 ; CHECK-NEXT:    vmsleu.vv v8, v9, v8
663 ; CHECK-NEXT:    vmv1r.v v11, v0
664 ; CHECK-NEXT:    vmv.v.v v0, v8
665 ; CHECK-NEXT:    vmsleu.vv v11, v10, v9, v0.t
666 ; CHECK-NEXT:    vmv.v.v v0, v11
667 ; CHECK-NEXT:    ret
668 entry:
669   %mask = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i32(
670     <vscale x 2 x i32> %1,
671     <vscale x 2 x i32> %2,
672     iXLen %4)
673   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i32(
674     <vscale x 2 x i1> %0,
675     <vscale x 2 x i32> %2,
676     <vscale x 2 x i32> %3,
677     <vscale x 2 x i1> %mask,
678     iXLen %4)
680   ret <vscale x 2 x i1> %a
683 declare <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i32(
684   <vscale x 4 x i32>,
685   <vscale x 4 x i32>,
686   iXLen);
688 define <vscale x 4 x i1> @intrinsic_vmsgeu_vv_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, iXLen %2) nounwind {
689 ; CHECK-LABEL: intrinsic_vmsgeu_vv_nxv4i32_nxv4i32:
690 ; CHECK:       # %bb.0: # %entry
691 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
692 ; CHECK-NEXT:    vmsleu.vv v0, v10, v8
693 ; CHECK-NEXT:    ret
694 entry:
695   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i32(
696     <vscale x 4 x i32> %0,
697     <vscale x 4 x i32> %1,
698     iXLen %2)
700   ret <vscale x 4 x i1> %a
703 declare <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i32(
704   <vscale x 4 x i1>,
705   <vscale x 4 x i32>,
706   <vscale x 4 x i32>,
707   <vscale x 4 x i1>,
708   iXLen);
710 define <vscale x 4 x i1> @intrinsic_vmsgeu_mask_vv_nxv4i32_nxv4i32(<vscale x 4 x i1> %0, <vscale x 4 x i32> %1, <vscale x 4 x i32> %2, <vscale x 4 x i32> %3, iXLen %4) nounwind {
711 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vv_nxv4i32_nxv4i32:
712 ; CHECK:       # %bb.0: # %entry
713 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu
714 ; CHECK-NEXT:    vmsleu.vv v14, v10, v8
715 ; CHECK-NEXT:    vmv1r.v v8, v0
716 ; CHECK-NEXT:    vmv1r.v v0, v14
717 ; CHECK-NEXT:    vmsleu.vv v8, v12, v10, v0.t
718 ; CHECK-NEXT:    vmv1r.v v0, v8
719 ; CHECK-NEXT:    ret
720 entry:
721   %mask = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i32(
722     <vscale x 4 x i32> %1,
723     <vscale x 4 x i32> %2,
724     iXLen %4)
725   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i32(
726     <vscale x 4 x i1> %0,
727     <vscale x 4 x i32> %2,
728     <vscale x 4 x i32> %3,
729     <vscale x 4 x i1> %mask,
730     iXLen %4)
732   ret <vscale x 4 x i1> %a
735 declare <vscale x 8 x i1> @llvm.riscv.vmsgeu.nxv8i32(
736   <vscale x 8 x i32>,
737   <vscale x 8 x i32>,
738   iXLen);
740 define <vscale x 8 x i1> @intrinsic_vmsgeu_vv_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, iXLen %2) nounwind {
741 ; CHECK-LABEL: intrinsic_vmsgeu_vv_nxv8i32_nxv8i32:
742 ; CHECK:       # %bb.0: # %entry
743 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
744 ; CHECK-NEXT:    vmsleu.vv v0, v12, v8
745 ; CHECK-NEXT:    ret
746 entry:
747   %a = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.nxv8i32(
748     <vscale x 8 x i32> %0,
749     <vscale x 8 x i32> %1,
750     iXLen %2)
752   ret <vscale x 8 x i1> %a
755 declare <vscale x 8 x i1> @llvm.riscv.vmsgeu.mask.nxv8i32(
756   <vscale x 8 x i1>,
757   <vscale x 8 x i32>,
758   <vscale x 8 x i32>,
759   <vscale x 8 x i1>,
760   iXLen);
762 define <vscale x 8 x i1> @intrinsic_vmsgeu_mask_vv_nxv8i32_nxv8i32(<vscale x 8 x i1> %0, <vscale x 8 x i32> %1, <vscale x 8 x i32> %2, <vscale x 8 x i32> %3, iXLen %4) nounwind {
763 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vv_nxv8i32_nxv8i32:
764 ; CHECK:       # %bb.0: # %entry
765 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu
766 ; CHECK-NEXT:    vmsleu.vv v20, v12, v8
767 ; CHECK-NEXT:    vmv1r.v v8, v0
768 ; CHECK-NEXT:    vmv1r.v v0, v20
769 ; CHECK-NEXT:    vmsleu.vv v8, v16, v12, v0.t
770 ; CHECK-NEXT:    vmv1r.v v0, v8
771 ; CHECK-NEXT:    ret
772 entry:
773   %mask = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.nxv8i32(
774     <vscale x 8 x i32> %1,
775     <vscale x 8 x i32> %2,
776     iXLen %4)
777   %a = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.mask.nxv8i32(
778     <vscale x 8 x i1> %0,
779     <vscale x 8 x i32> %2,
780     <vscale x 8 x i32> %3,
781     <vscale x 8 x i1> %mask,
782     iXLen %4)
784   ret <vscale x 8 x i1> %a
787 declare <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i64(
788   <vscale x 1 x i64>,
789   <vscale x 1 x i64>,
790   iXLen);
792 define <vscale x 1 x i1> @intrinsic_vmsgeu_vv_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, iXLen %2) nounwind {
793 ; CHECK-LABEL: intrinsic_vmsgeu_vv_nxv1i64_nxv1i64:
794 ; CHECK:       # %bb.0: # %entry
795 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
796 ; CHECK-NEXT:    vmsleu.vv v0, v9, v8
797 ; CHECK-NEXT:    ret
798 entry:
799   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i64(
800     <vscale x 1 x i64> %0,
801     <vscale x 1 x i64> %1,
802     iXLen %2)
804   ret <vscale x 1 x i1> %a
807 declare <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i64(
808   <vscale x 1 x i1>,
809   <vscale x 1 x i64>,
810   <vscale x 1 x i64>,
811   <vscale x 1 x i1>,
812   iXLen);
814 define <vscale x 1 x i1> @intrinsic_vmsgeu_mask_vv_nxv1i64_nxv1i64(<vscale x 1 x i1> %0, <vscale x 1 x i64> %1, <vscale x 1 x i64> %2, <vscale x 1 x i64> %3, iXLen %4) nounwind {
815 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vv_nxv1i64_nxv1i64:
816 ; CHECK:       # %bb.0: # %entry
817 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu
818 ; CHECK-NEXT:    vmsleu.vv v8, v9, v8
819 ; CHECK-NEXT:    vmv1r.v v11, v0
820 ; CHECK-NEXT:    vmv.v.v v0, v8
821 ; CHECK-NEXT:    vmsleu.vv v11, v10, v9, v0.t
822 ; CHECK-NEXT:    vmv.v.v v0, v11
823 ; CHECK-NEXT:    ret
824 entry:
825   %mask = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i64(
826     <vscale x 1 x i64> %1,
827     <vscale x 1 x i64> %2,
828     iXLen %4)
829   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i64(
830     <vscale x 1 x i1> %0,
831     <vscale x 1 x i64> %2,
832     <vscale x 1 x i64> %3,
833     <vscale x 1 x i1> %mask,
834     iXLen %4)
836   ret <vscale x 1 x i1> %a
839 declare <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i64(
840   <vscale x 2 x i64>,
841   <vscale x 2 x i64>,
842   iXLen);
844 define <vscale x 2 x i1> @intrinsic_vmsgeu_vv_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, iXLen %2) nounwind {
845 ; CHECK-LABEL: intrinsic_vmsgeu_vv_nxv2i64_nxv2i64:
846 ; CHECK:       # %bb.0: # %entry
847 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
848 ; CHECK-NEXT:    vmsleu.vv v0, v10, v8
849 ; CHECK-NEXT:    ret
850 entry:
851   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i64(
852     <vscale x 2 x i64> %0,
853     <vscale x 2 x i64> %1,
854     iXLen %2)
856   ret <vscale x 2 x i1> %a
859 declare <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i64(
860   <vscale x 2 x i1>,
861   <vscale x 2 x i64>,
862   <vscale x 2 x i64>,
863   <vscale x 2 x i1>,
864   iXLen);
866 define <vscale x 2 x i1> @intrinsic_vmsgeu_mask_vv_nxv2i64_nxv2i64(<vscale x 2 x i1> %0, <vscale x 2 x i64> %1, <vscale x 2 x i64> %2, <vscale x 2 x i64> %3, iXLen %4) nounwind {
867 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vv_nxv2i64_nxv2i64:
868 ; CHECK:       # %bb.0: # %entry
869 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu
870 ; CHECK-NEXT:    vmsleu.vv v14, v10, v8
871 ; CHECK-NEXT:    vmv1r.v v8, v0
872 ; CHECK-NEXT:    vmv1r.v v0, v14
873 ; CHECK-NEXT:    vmsleu.vv v8, v12, v10, v0.t
874 ; CHECK-NEXT:    vmv1r.v v0, v8
875 ; CHECK-NEXT:    ret
876 entry:
877   %mask = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i64(
878     <vscale x 2 x i64> %1,
879     <vscale x 2 x i64> %2,
880     iXLen %4)
881   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i64(
882     <vscale x 2 x i1> %0,
883     <vscale x 2 x i64> %2,
884     <vscale x 2 x i64> %3,
885     <vscale x 2 x i1> %mask,
886     iXLen %4)
888   ret <vscale x 2 x i1> %a
891 declare <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i64(
892   <vscale x 4 x i64>,
893   <vscale x 4 x i64>,
894   iXLen);
896 define <vscale x 4 x i1> @intrinsic_vmsgeu_vv_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, iXLen %2) nounwind {
897 ; CHECK-LABEL: intrinsic_vmsgeu_vv_nxv4i64_nxv4i64:
898 ; CHECK:       # %bb.0: # %entry
899 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
900 ; CHECK-NEXT:    vmsleu.vv v0, v12, v8
901 ; CHECK-NEXT:    ret
902 entry:
903   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i64(
904     <vscale x 4 x i64> %0,
905     <vscale x 4 x i64> %1,
906     iXLen %2)
908   ret <vscale x 4 x i1> %a
911 declare <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i64(
912   <vscale x 4 x i1>,
913   <vscale x 4 x i64>,
914   <vscale x 4 x i64>,
915   <vscale x 4 x i1>,
916   iXLen);
918 define <vscale x 4 x i1> @intrinsic_vmsgeu_mask_vv_nxv4i64_nxv4i64(<vscale x 4 x i1> %0, <vscale x 4 x i64> %1, <vscale x 4 x i64> %2, <vscale x 4 x i64> %3, iXLen %4) nounwind {
919 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vv_nxv4i64_nxv4i64:
920 ; CHECK:       # %bb.0: # %entry
921 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu
922 ; CHECK-NEXT:    vmsleu.vv v20, v12, v8
923 ; CHECK-NEXT:    vmv1r.v v8, v0
924 ; CHECK-NEXT:    vmv1r.v v0, v20
925 ; CHECK-NEXT:    vmsleu.vv v8, v16, v12, v0.t
926 ; CHECK-NEXT:    vmv1r.v v0, v8
927 ; CHECK-NEXT:    ret
928 entry:
929   %mask = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i64(
930     <vscale x 4 x i64> %1,
931     <vscale x 4 x i64> %2,
932     iXLen %4)
933   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i64(
934     <vscale x 4 x i1> %0,
935     <vscale x 4 x i64> %2,
936     <vscale x 4 x i64> %3,
937     <vscale x 4 x i1> %mask,
938     iXLen %4)
940   ret <vscale x 4 x i1> %a
943 declare <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i8.i8(
944   <vscale x 1 x i8>,
945   i8,
946   iXLen);
948 define <vscale x 1 x i1> @intrinsic_vmsgeu_vx_nxv1i8_i8(<vscale x 1 x i8> %0, i8 %1, iXLen %2) nounwind {
949 ; CHECK-LABEL: intrinsic_vmsgeu_vx_nxv1i8_i8:
950 ; CHECK:       # %bb.0: # %entry
951 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
952 ; CHECK-NEXT:    vmsltu.vx v8, v8, a0
953 ; CHECK-NEXT:    vmnot.m v0, v8
954 ; CHECK-NEXT:    ret
955 entry:
956   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i8.i8(
957     <vscale x 1 x i8> %0,
958     i8 %1,
959     iXLen %2)
961   ret <vscale x 1 x i1> %a
964 declare <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i8.i8(
965   <vscale x 1 x i1>,
966   <vscale x 1 x i8>,
967   i8,
968   <vscale x 1 x i1>,
969   iXLen);
971 define <vscale x 1 x i1> @intrinsic_vmsgeu_mask_vx_nxv1i8_i8(<vscale x 1 x i1> %0, <vscale x 1 x i8> %1, i8 %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
972 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vx_nxv1i8_i8:
973 ; CHECK:       # %bb.0: # %entry
974 ; CHECK-NEXT:    vmv1r.v v10, v0
975 ; CHECK-NEXT:    vmv1r.v v0, v9
976 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, mu
977 ; CHECK-NEXT:    vmsltu.vx v10, v8, a0, v0.t
978 ; CHECK-NEXT:    vmxor.mm v0, v10, v9
979 ; CHECK-NEXT:    ret
980 entry:
981   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i8.i8(
982     <vscale x 1 x i1> %0,
983     <vscale x 1 x i8> %1,
984     i8 %2,
985     <vscale x 1 x i1> %3,
986     iXLen %4)
988   ret <vscale x 1 x i1> %a
991 declare <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i8.i8(
992   <vscale x 2 x i8>,
993   i8,
994   iXLen);
996 define <vscale x 2 x i1> @intrinsic_vmsgeu_vx_nxv2i8_i8(<vscale x 2 x i8> %0, i8 %1, iXLen %2) nounwind {
997 ; CHECK-LABEL: intrinsic_vmsgeu_vx_nxv2i8_i8:
998 ; CHECK:       # %bb.0: # %entry
999 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
1000 ; CHECK-NEXT:    vmsltu.vx v8, v8, a0
1001 ; CHECK-NEXT:    vmnot.m v0, v8
1002 ; CHECK-NEXT:    ret
1003 entry:
1004   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i8.i8(
1005     <vscale x 2 x i8> %0,
1006     i8 %1,
1007     iXLen %2)
1009   ret <vscale x 2 x i1> %a
1012 declare <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i8.i8(
1013   <vscale x 2 x i1>,
1014   <vscale x 2 x i8>,
1015   i8,
1016   <vscale x 2 x i1>,
1017   iXLen);
1019 define <vscale x 2 x i1> @intrinsic_vmsgeu_mask_vx_nxv2i8_i8(<vscale x 2 x i1> %0, <vscale x 2 x i8> %1, i8 %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1020 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vx_nxv2i8_i8:
1021 ; CHECK:       # %bb.0: # %entry
1022 ; CHECK-NEXT:    vmv1r.v v10, v0
1023 ; CHECK-NEXT:    vmv1r.v v0, v9
1024 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, mu
1025 ; CHECK-NEXT:    vmsltu.vx v10, v8, a0, v0.t
1026 ; CHECK-NEXT:    vmxor.mm v0, v10, v9
1027 ; CHECK-NEXT:    ret
1028 entry:
1029   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i8.i8(
1030     <vscale x 2 x i1> %0,
1031     <vscale x 2 x i8> %1,
1032     i8 %2,
1033     <vscale x 2 x i1> %3,
1034     iXLen %4)
1036   ret <vscale x 2 x i1> %a
1039 declare <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i8.i8(
1040   <vscale x 4 x i8>,
1041   i8,
1042   iXLen);
1044 define <vscale x 4 x i1> @intrinsic_vmsgeu_vx_nxv4i8_i8(<vscale x 4 x i8> %0, i8 %1, iXLen %2) nounwind {
1045 ; CHECK-LABEL: intrinsic_vmsgeu_vx_nxv4i8_i8:
1046 ; CHECK:       # %bb.0: # %entry
1047 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
1048 ; CHECK-NEXT:    vmsltu.vx v8, v8, a0
1049 ; CHECK-NEXT:    vmnot.m v0, v8
1050 ; CHECK-NEXT:    ret
1051 entry:
1052   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i8.i8(
1053     <vscale x 4 x i8> %0,
1054     i8 %1,
1055     iXLen %2)
1057   ret <vscale x 4 x i1> %a
1060 declare <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i8.i8(
1061   <vscale x 4 x i1>,
1062   <vscale x 4 x i8>,
1063   i8,
1064   <vscale x 4 x i1>,
1065   iXLen);
1067 define <vscale x 4 x i1> @intrinsic_vmsgeu_mask_vx_nxv4i8_i8(<vscale x 4 x i1> %0, <vscale x 4 x i8> %1, i8 %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1068 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vx_nxv4i8_i8:
1069 ; CHECK:       # %bb.0: # %entry
1070 ; CHECK-NEXT:    vmv1r.v v10, v0
1071 ; CHECK-NEXT:    vmv1r.v v0, v9
1072 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, mu
1073 ; CHECK-NEXT:    vmsltu.vx v10, v8, a0, v0.t
1074 ; CHECK-NEXT:    vmxor.mm v0, v10, v9
1075 ; CHECK-NEXT:    ret
1076 entry:
1077   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i8.i8(
1078     <vscale x 4 x i1> %0,
1079     <vscale x 4 x i8> %1,
1080     i8 %2,
1081     <vscale x 4 x i1> %3,
1082     iXLen %4)
1084   ret <vscale x 4 x i1> %a
1087 declare <vscale x 8 x i1> @llvm.riscv.vmsgeu.nxv8i8.i8(
1088   <vscale x 8 x i8>,
1089   i8,
1090   iXLen);
1092 define <vscale x 8 x i1> @intrinsic_vmsgeu_vx_nxv8i8_i8(<vscale x 8 x i8> %0, i8 %1, iXLen %2) nounwind {
1093 ; CHECK-LABEL: intrinsic_vmsgeu_vx_nxv8i8_i8:
1094 ; CHECK:       # %bb.0: # %entry
1095 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
1096 ; CHECK-NEXT:    vmsltu.vx v8, v8, a0
1097 ; CHECK-NEXT:    vmnot.m v0, v8
1098 ; CHECK-NEXT:    ret
1099 entry:
1100   %a = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.nxv8i8.i8(
1101     <vscale x 8 x i8> %0,
1102     i8 %1,
1103     iXLen %2)
1105   ret <vscale x 8 x i1> %a
1108 declare <vscale x 8 x i1> @llvm.riscv.vmsgeu.mask.nxv8i8.i8(
1109   <vscale x 8 x i1>,
1110   <vscale x 8 x i8>,
1111   i8,
1112   <vscale x 8 x i1>,
1113   iXLen);
1115 define <vscale x 8 x i1> @intrinsic_vmsgeu_mask_vx_nxv8i8_i8(<vscale x 8 x i1> %0, <vscale x 8 x i8> %1, i8 %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1116 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vx_nxv8i8_i8:
1117 ; CHECK:       # %bb.0: # %entry
1118 ; CHECK-NEXT:    vmv1r.v v10, v0
1119 ; CHECK-NEXT:    vmv1r.v v0, v9
1120 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, mu
1121 ; CHECK-NEXT:    vmsltu.vx v10, v8, a0, v0.t
1122 ; CHECK-NEXT:    vmxor.mm v0, v10, v9
1123 ; CHECK-NEXT:    ret
1124 entry:
1125   %a = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.mask.nxv8i8.i8(
1126     <vscale x 8 x i1> %0,
1127     <vscale x 8 x i8> %1,
1128     i8 %2,
1129     <vscale x 8 x i1> %3,
1130     iXLen %4)
1132   ret <vscale x 8 x i1> %a
1135 declare <vscale x 16 x i1> @llvm.riscv.vmsgeu.nxv16i8.i8(
1136   <vscale x 16 x i8>,
1137   i8,
1138   iXLen);
1140 define <vscale x 16 x i1> @intrinsic_vmsgeu_vx_nxv16i8_i8(<vscale x 16 x i8> %0, i8 %1, iXLen %2) nounwind {
1141 ; CHECK-LABEL: intrinsic_vmsgeu_vx_nxv16i8_i8:
1142 ; CHECK:       # %bb.0: # %entry
1143 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
1144 ; CHECK-NEXT:    vmsltu.vx v10, v8, a0
1145 ; CHECK-NEXT:    vmnot.m v0, v10
1146 ; CHECK-NEXT:    ret
1147 entry:
1148   %a = call <vscale x 16 x i1> @llvm.riscv.vmsgeu.nxv16i8.i8(
1149     <vscale x 16 x i8> %0,
1150     i8 %1,
1151     iXLen %2)
1153   ret <vscale x 16 x i1> %a
1156 declare <vscale x 16 x i1> @llvm.riscv.vmsgeu.mask.nxv16i8.i8(
1157   <vscale x 16 x i1>,
1158   <vscale x 16 x i8>,
1159   i8,
1160   <vscale x 16 x i1>,
1161   iXLen);
1163 define <vscale x 16 x i1> @intrinsic_vmsgeu_mask_vx_nxv16i8_i8(<vscale x 16 x i1> %0, <vscale x 16 x i8> %1, i8 %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1164 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vx_nxv16i8_i8:
1165 ; CHECK:       # %bb.0: # %entry
1166 ; CHECK-NEXT:    vmv1r.v v11, v0
1167 ; CHECK-NEXT:    vmv1r.v v0, v10
1168 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, mu
1169 ; CHECK-NEXT:    vmsltu.vx v11, v8, a0, v0.t
1170 ; CHECK-NEXT:    vmxor.mm v0, v11, v10
1171 ; CHECK-NEXT:    ret
1172 entry:
1173   %a = call <vscale x 16 x i1> @llvm.riscv.vmsgeu.mask.nxv16i8.i8(
1174     <vscale x 16 x i1> %0,
1175     <vscale x 16 x i8> %1,
1176     i8 %2,
1177     <vscale x 16 x i1> %3,
1178     iXLen %4)
1180   ret <vscale x 16 x i1> %a
1183 declare <vscale x 32 x i1> @llvm.riscv.vmsgeu.nxv32i8.i8(
1184   <vscale x 32 x i8>,
1185   i8,
1186   iXLen);
1188 define <vscale x 32 x i1> @intrinsic_vmsgeu_vx_nxv32i8_i8(<vscale x 32 x i8> %0, i8 %1, iXLen %2) nounwind {
1189 ; CHECK-LABEL: intrinsic_vmsgeu_vx_nxv32i8_i8:
1190 ; CHECK:       # %bb.0: # %entry
1191 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
1192 ; CHECK-NEXT:    vmsltu.vx v12, v8, a0
1193 ; CHECK-NEXT:    vmnot.m v0, v12
1194 ; CHECK-NEXT:    ret
1195 entry:
1196   %a = call <vscale x 32 x i1> @llvm.riscv.vmsgeu.nxv32i8.i8(
1197     <vscale x 32 x i8> %0,
1198     i8 %1,
1199     iXLen %2)
1201   ret <vscale x 32 x i1> %a
1204 declare <vscale x 32 x i1> @llvm.riscv.vmsgeu.mask.nxv32i8.i8(
1205   <vscale x 32 x i1>,
1206   <vscale x 32 x i8>,
1207   i8,
1208   <vscale x 32 x i1>,
1209   iXLen);
1211 define <vscale x 32 x i1> @intrinsic_vmsgeu_mask_vx_nxv32i8_i8(<vscale x 32 x i1> %0, <vscale x 32 x i8> %1, i8 %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
1212 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vx_nxv32i8_i8:
1213 ; CHECK:       # %bb.0: # %entry
1214 ; CHECK-NEXT:    vmv1r.v v13, v0
1215 ; CHECK-NEXT:    vmv1r.v v0, v12
1216 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, mu
1217 ; CHECK-NEXT:    vmsltu.vx v13, v8, a0, v0.t
1218 ; CHECK-NEXT:    vmxor.mm v0, v13, v12
1219 ; CHECK-NEXT:    ret
1220 entry:
1221   %a = call <vscale x 32 x i1> @llvm.riscv.vmsgeu.mask.nxv32i8.i8(
1222     <vscale x 32 x i1> %0,
1223     <vscale x 32 x i8> %1,
1224     i8 %2,
1225     <vscale x 32 x i1> %3,
1226     iXLen %4)
1228   ret <vscale x 32 x i1> %a
1231 declare <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i16.i16(
1232   <vscale x 1 x i16>,
1233   i16,
1234   iXLen);
1236 define <vscale x 1 x i1> @intrinsic_vmsgeu_vx_nxv1i16_i16(<vscale x 1 x i16> %0, i16 %1, iXLen %2) nounwind {
1237 ; CHECK-LABEL: intrinsic_vmsgeu_vx_nxv1i16_i16:
1238 ; CHECK:       # %bb.0: # %entry
1239 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
1240 ; CHECK-NEXT:    vmsltu.vx v8, v8, a0
1241 ; CHECK-NEXT:    vmnot.m v0, v8
1242 ; CHECK-NEXT:    ret
1243 entry:
1244   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i16.i16(
1245     <vscale x 1 x i16> %0,
1246     i16 %1,
1247     iXLen %2)
1249   ret <vscale x 1 x i1> %a
1252 declare <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i16.i16(
1253   <vscale x 1 x i1>,
1254   <vscale x 1 x i16>,
1255   i16,
1256   <vscale x 1 x i1>,
1257   iXLen);
1259 define <vscale x 1 x i1> @intrinsic_vmsgeu_mask_vx_nxv1i16_i16(<vscale x 1 x i1> %0, <vscale x 1 x i16> %1, i16 %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1260 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vx_nxv1i16_i16:
1261 ; CHECK:       # %bb.0: # %entry
1262 ; CHECK-NEXT:    vmv1r.v v10, v0
1263 ; CHECK-NEXT:    vmv1r.v v0, v9
1264 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu
1265 ; CHECK-NEXT:    vmsltu.vx v10, v8, a0, v0.t
1266 ; CHECK-NEXT:    vmxor.mm v0, v10, v9
1267 ; CHECK-NEXT:    ret
1268 entry:
1269   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i16.i16(
1270     <vscale x 1 x i1> %0,
1271     <vscale x 1 x i16> %1,
1272     i16 %2,
1273     <vscale x 1 x i1> %3,
1274     iXLen %4)
1276   ret <vscale x 1 x i1> %a
1279 declare <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i16.i16(
1280   <vscale x 2 x i16>,
1281   i16,
1282   iXLen);
1284 define <vscale x 2 x i1> @intrinsic_vmsgeu_vx_nxv2i16_i16(<vscale x 2 x i16> %0, i16 %1, iXLen %2) nounwind {
1285 ; CHECK-LABEL: intrinsic_vmsgeu_vx_nxv2i16_i16:
1286 ; CHECK:       # %bb.0: # %entry
1287 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
1288 ; CHECK-NEXT:    vmsltu.vx v8, v8, a0
1289 ; CHECK-NEXT:    vmnot.m v0, v8
1290 ; CHECK-NEXT:    ret
1291 entry:
1292   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i16.i16(
1293     <vscale x 2 x i16> %0,
1294     i16 %1,
1295     iXLen %2)
1297   ret <vscale x 2 x i1> %a
1300 declare <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i16.i16(
1301   <vscale x 2 x i1>,
1302   <vscale x 2 x i16>,
1303   i16,
1304   <vscale x 2 x i1>,
1305   iXLen);
1307 define <vscale x 2 x i1> @intrinsic_vmsgeu_mask_vx_nxv2i16_i16(<vscale x 2 x i1> %0, <vscale x 2 x i16> %1, i16 %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1308 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vx_nxv2i16_i16:
1309 ; CHECK:       # %bb.0: # %entry
1310 ; CHECK-NEXT:    vmv1r.v v10, v0
1311 ; CHECK-NEXT:    vmv1r.v v0, v9
1312 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu
1313 ; CHECK-NEXT:    vmsltu.vx v10, v8, a0, v0.t
1314 ; CHECK-NEXT:    vmxor.mm v0, v10, v9
1315 ; CHECK-NEXT:    ret
1316 entry:
1317   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i16.i16(
1318     <vscale x 2 x i1> %0,
1319     <vscale x 2 x i16> %1,
1320     i16 %2,
1321     <vscale x 2 x i1> %3,
1322     iXLen %4)
1324   ret <vscale x 2 x i1> %a
1327 declare <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i16.i16(
1328   <vscale x 4 x i16>,
1329   i16,
1330   iXLen);
1332 define <vscale x 4 x i1> @intrinsic_vmsgeu_vx_nxv4i16_i16(<vscale x 4 x i16> %0, i16 %1, iXLen %2) nounwind {
1333 ; CHECK-LABEL: intrinsic_vmsgeu_vx_nxv4i16_i16:
1334 ; CHECK:       # %bb.0: # %entry
1335 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1336 ; CHECK-NEXT:    vmsltu.vx v8, v8, a0
1337 ; CHECK-NEXT:    vmnot.m v0, v8
1338 ; CHECK-NEXT:    ret
1339 entry:
1340   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i16.i16(
1341     <vscale x 4 x i16> %0,
1342     i16 %1,
1343     iXLen %2)
1345   ret <vscale x 4 x i1> %a
1348 declare <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i16.i16(
1349   <vscale x 4 x i1>,
1350   <vscale x 4 x i16>,
1351   i16,
1352   <vscale x 4 x i1>,
1353   iXLen);
1355 define <vscale x 4 x i1> @intrinsic_vmsgeu_mask_vx_nxv4i16_i16(<vscale x 4 x i1> %0, <vscale x 4 x i16> %1, i16 %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1356 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vx_nxv4i16_i16:
1357 ; CHECK:       # %bb.0: # %entry
1358 ; CHECK-NEXT:    vmv1r.v v10, v0
1359 ; CHECK-NEXT:    vmv1r.v v0, v9
1360 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu
1361 ; CHECK-NEXT:    vmsltu.vx v10, v8, a0, v0.t
1362 ; CHECK-NEXT:    vmxor.mm v0, v10, v9
1363 ; CHECK-NEXT:    ret
1364 entry:
1365   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i16.i16(
1366     <vscale x 4 x i1> %0,
1367     <vscale x 4 x i16> %1,
1368     i16 %2,
1369     <vscale x 4 x i1> %3,
1370     iXLen %4)
1372   ret <vscale x 4 x i1> %a
1375 declare <vscale x 8 x i1> @llvm.riscv.vmsgeu.nxv8i16.i16(
1376   <vscale x 8 x i16>,
1377   i16,
1378   iXLen);
1380 define <vscale x 8 x i1> @intrinsic_vmsgeu_vx_nxv8i16_i16(<vscale x 8 x i16> %0, i16 %1, iXLen %2) nounwind {
1381 ; CHECK-LABEL: intrinsic_vmsgeu_vx_nxv8i16_i16:
1382 ; CHECK:       # %bb.0: # %entry
1383 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
1384 ; CHECK-NEXT:    vmsltu.vx v10, v8, a0
1385 ; CHECK-NEXT:    vmnot.m v0, v10
1386 ; CHECK-NEXT:    ret
1387 entry:
1388   %a = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.nxv8i16.i16(
1389     <vscale x 8 x i16> %0,
1390     i16 %1,
1391     iXLen %2)
1393   ret <vscale x 8 x i1> %a
1396 declare <vscale x 8 x i1> @llvm.riscv.vmsgeu.mask.nxv8i16.i16(
1397   <vscale x 8 x i1>,
1398   <vscale x 8 x i16>,
1399   i16,
1400   <vscale x 8 x i1>,
1401   iXLen);
1403 define <vscale x 8 x i1> @intrinsic_vmsgeu_mask_vx_nxv8i16_i16(<vscale x 8 x i1> %0, <vscale x 8 x i16> %1, i16 %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1404 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vx_nxv8i16_i16:
1405 ; CHECK:       # %bb.0: # %entry
1406 ; CHECK-NEXT:    vmv1r.v v11, v0
1407 ; CHECK-NEXT:    vmv1r.v v0, v10
1408 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu
1409 ; CHECK-NEXT:    vmsltu.vx v11, v8, a0, v0.t
1410 ; CHECK-NEXT:    vmxor.mm v0, v11, v10
1411 ; CHECK-NEXT:    ret
1412 entry:
1413   %a = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.mask.nxv8i16.i16(
1414     <vscale x 8 x i1> %0,
1415     <vscale x 8 x i16> %1,
1416     i16 %2,
1417     <vscale x 8 x i1> %3,
1418     iXLen %4)
1420   ret <vscale x 8 x i1> %a
1423 declare <vscale x 16 x i1> @llvm.riscv.vmsgeu.nxv16i16.i16(
1424   <vscale x 16 x i16>,
1425   i16,
1426   iXLen);
1428 define <vscale x 16 x i1> @intrinsic_vmsgeu_vx_nxv16i16_i16(<vscale x 16 x i16> %0, i16 %1, iXLen %2) nounwind {
1429 ; CHECK-LABEL: intrinsic_vmsgeu_vx_nxv16i16_i16:
1430 ; CHECK:       # %bb.0: # %entry
1431 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
1432 ; CHECK-NEXT:    vmsltu.vx v12, v8, a0
1433 ; CHECK-NEXT:    vmnot.m v0, v12
1434 ; CHECK-NEXT:    ret
1435 entry:
1436   %a = call <vscale x 16 x i1> @llvm.riscv.vmsgeu.nxv16i16.i16(
1437     <vscale x 16 x i16> %0,
1438     i16 %1,
1439     iXLen %2)
1441   ret <vscale x 16 x i1> %a
1444 declare <vscale x 16 x i1> @llvm.riscv.vmsgeu.mask.nxv16i16.i16(
1445   <vscale x 16 x i1>,
1446   <vscale x 16 x i16>,
1447   i16,
1448   <vscale x 16 x i1>,
1449   iXLen);
1451 define <vscale x 16 x i1> @intrinsic_vmsgeu_mask_vx_nxv16i16_i16(<vscale x 16 x i1> %0, <vscale x 16 x i16> %1, i16 %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1452 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vx_nxv16i16_i16:
1453 ; CHECK:       # %bb.0: # %entry
1454 ; CHECK-NEXT:    vmv1r.v v13, v0
1455 ; CHECK-NEXT:    vmv1r.v v0, v12
1456 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, mu
1457 ; CHECK-NEXT:    vmsltu.vx v13, v8, a0, v0.t
1458 ; CHECK-NEXT:    vmxor.mm v0, v13, v12
1459 ; CHECK-NEXT:    ret
1460 entry:
1461   %a = call <vscale x 16 x i1> @llvm.riscv.vmsgeu.mask.nxv16i16.i16(
1462     <vscale x 16 x i1> %0,
1463     <vscale x 16 x i16> %1,
1464     i16 %2,
1465     <vscale x 16 x i1> %3,
1466     iXLen %4)
1468   ret <vscale x 16 x i1> %a
1471 declare <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i32.i32(
1472   <vscale x 1 x i32>,
1473   i32,
1474   iXLen);
1476 define <vscale x 1 x i1> @intrinsic_vmsgeu_vx_nxv1i32_i32(<vscale x 1 x i32> %0, i32 %1, iXLen %2) nounwind {
1477 ; CHECK-LABEL: intrinsic_vmsgeu_vx_nxv1i32_i32:
1478 ; CHECK:       # %bb.0: # %entry
1479 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1480 ; CHECK-NEXT:    vmsltu.vx v8, v8, a0
1481 ; CHECK-NEXT:    vmnot.m v0, v8
1482 ; CHECK-NEXT:    ret
1483 entry:
1484   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i32.i32(
1485     <vscale x 1 x i32> %0,
1486     i32 %1,
1487     iXLen %2)
1489   ret <vscale x 1 x i1> %a
1492 declare <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i32.i32(
1493   <vscale x 1 x i1>,
1494   <vscale x 1 x i32>,
1495   i32,
1496   <vscale x 1 x i1>,
1497   iXLen);
1499 define <vscale x 1 x i1> @intrinsic_vmsgeu_mask_vx_nxv1i32_i32(<vscale x 1 x i1> %0, <vscale x 1 x i32> %1, i32 %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1500 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vx_nxv1i32_i32:
1501 ; CHECK:       # %bb.0: # %entry
1502 ; CHECK-NEXT:    vmv1r.v v10, v0
1503 ; CHECK-NEXT:    vmv1r.v v0, v9
1504 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu
1505 ; CHECK-NEXT:    vmsltu.vx v10, v8, a0, v0.t
1506 ; CHECK-NEXT:    vmxor.mm v0, v10, v9
1507 ; CHECK-NEXT:    ret
1508 entry:
1509   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i32.i32(
1510     <vscale x 1 x i1> %0,
1511     <vscale x 1 x i32> %1,
1512     i32 %2,
1513     <vscale x 1 x i1> %3,
1514     iXLen %4)
1516   ret <vscale x 1 x i1> %a
1519 declare <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i32.i32(
1520   <vscale x 2 x i32>,
1521   i32,
1522   iXLen);
1524 define <vscale x 2 x i1> @intrinsic_vmsgeu_vx_nxv2i32_i32(<vscale x 2 x i32> %0, i32 %1, iXLen %2) nounwind {
1525 ; CHECK-LABEL: intrinsic_vmsgeu_vx_nxv2i32_i32:
1526 ; CHECK:       # %bb.0: # %entry
1527 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1528 ; CHECK-NEXT:    vmsltu.vx v8, v8, a0
1529 ; CHECK-NEXT:    vmnot.m v0, v8
1530 ; CHECK-NEXT:    ret
1531 entry:
1532   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i32.i32(
1533     <vscale x 2 x i32> %0,
1534     i32 %1,
1535     iXLen %2)
1537   ret <vscale x 2 x i1> %a
1540 declare <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i32.i32(
1541   <vscale x 2 x i1>,
1542   <vscale x 2 x i32>,
1543   i32,
1544   <vscale x 2 x i1>,
1545   iXLen);
1547 define <vscale x 2 x i1> @intrinsic_vmsgeu_mask_vx_nxv2i32_i32(<vscale x 2 x i1> %0, <vscale x 2 x i32> %1, i32 %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1548 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vx_nxv2i32_i32:
1549 ; CHECK:       # %bb.0: # %entry
1550 ; CHECK-NEXT:    vmv1r.v v10, v0
1551 ; CHECK-NEXT:    vmv1r.v v0, v9
1552 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu
1553 ; CHECK-NEXT:    vmsltu.vx v10, v8, a0, v0.t
1554 ; CHECK-NEXT:    vmxor.mm v0, v10, v9
1555 ; CHECK-NEXT:    ret
1556 entry:
1557   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i32.i32(
1558     <vscale x 2 x i1> %0,
1559     <vscale x 2 x i32> %1,
1560     i32 %2,
1561     <vscale x 2 x i1> %3,
1562     iXLen %4)
1564   ret <vscale x 2 x i1> %a
1567 declare <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i32.i32(
1568   <vscale x 4 x i32>,
1569   i32,
1570   iXLen);
1572 define <vscale x 4 x i1> @intrinsic_vmsgeu_vx_nxv4i32_i32(<vscale x 4 x i32> %0, i32 %1, iXLen %2) nounwind {
1573 ; CHECK-LABEL: intrinsic_vmsgeu_vx_nxv4i32_i32:
1574 ; CHECK:       # %bb.0: # %entry
1575 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1576 ; CHECK-NEXT:    vmsltu.vx v10, v8, a0
1577 ; CHECK-NEXT:    vmnot.m v0, v10
1578 ; CHECK-NEXT:    ret
1579 entry:
1580   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i32.i32(
1581     <vscale x 4 x i32> %0,
1582     i32 %1,
1583     iXLen %2)
1585   ret <vscale x 4 x i1> %a
1588 declare <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i32.i32(
1589   <vscale x 4 x i1>,
1590   <vscale x 4 x i32>,
1591   i32,
1592   <vscale x 4 x i1>,
1593   iXLen);
1595 define <vscale x 4 x i1> @intrinsic_vmsgeu_mask_vx_nxv4i32_i32(<vscale x 4 x i1> %0, <vscale x 4 x i32> %1, i32 %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1596 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vx_nxv4i32_i32:
1597 ; CHECK:       # %bb.0: # %entry
1598 ; CHECK-NEXT:    vmv1r.v v11, v0
1599 ; CHECK-NEXT:    vmv1r.v v0, v10
1600 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu
1601 ; CHECK-NEXT:    vmsltu.vx v11, v8, a0, v0.t
1602 ; CHECK-NEXT:    vmxor.mm v0, v11, v10
1603 ; CHECK-NEXT:    ret
1604 entry:
1605   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i32.i32(
1606     <vscale x 4 x i1> %0,
1607     <vscale x 4 x i32> %1,
1608     i32 %2,
1609     <vscale x 4 x i1> %3,
1610     iXLen %4)
1612   ret <vscale x 4 x i1> %a
1615 declare <vscale x 8 x i1> @llvm.riscv.vmsgeu.nxv8i32.i32(
1616   <vscale x 8 x i32>,
1617   i32,
1618   iXLen);
1620 define <vscale x 8 x i1> @intrinsic_vmsgeu_vx_nxv8i32_i32(<vscale x 8 x i32> %0, i32 %1, iXLen %2) nounwind {
1621 ; CHECK-LABEL: intrinsic_vmsgeu_vx_nxv8i32_i32:
1622 ; CHECK:       # %bb.0: # %entry
1623 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1624 ; CHECK-NEXT:    vmsltu.vx v12, v8, a0
1625 ; CHECK-NEXT:    vmnot.m v0, v12
1626 ; CHECK-NEXT:    ret
1627 entry:
1628   %a = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.nxv8i32.i32(
1629     <vscale x 8 x i32> %0,
1630     i32 %1,
1631     iXLen %2)
1633   ret <vscale x 8 x i1> %a
1636 declare <vscale x 8 x i1> @llvm.riscv.vmsgeu.mask.nxv8i32.i32(
1637   <vscale x 8 x i1>,
1638   <vscale x 8 x i32>,
1639   i32,
1640   <vscale x 8 x i1>,
1641   iXLen);
1643 define <vscale x 8 x i1> @intrinsic_vmsgeu_mask_vx_nxv8i32_i32(<vscale x 8 x i1> %0, <vscale x 8 x i32> %1, i32 %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1644 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vx_nxv8i32_i32:
1645 ; CHECK:       # %bb.0: # %entry
1646 ; CHECK-NEXT:    vmv1r.v v13, v0
1647 ; CHECK-NEXT:    vmv1r.v v0, v12
1648 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, mu
1649 ; CHECK-NEXT:    vmsltu.vx v13, v8, a0, v0.t
1650 ; CHECK-NEXT:    vmxor.mm v0, v13, v12
1651 ; CHECK-NEXT:    ret
1652 entry:
1653   %a = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.mask.nxv8i32.i32(
1654     <vscale x 8 x i1> %0,
1655     <vscale x 8 x i32> %1,
1656     i32 %2,
1657     <vscale x 8 x i1> %3,
1658     iXLen %4)
1660   ret <vscale x 8 x i1> %a
1663 declare <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i64.i64(
1664   <vscale x 1 x i64>,
1665   i64,
1666   iXLen);
1668 define <vscale x 1 x i1> @intrinsic_vmsgeu_vx_nxv1i64_i64(<vscale x 1 x i64> %0, i64 %1, iXLen %2) nounwind {
1669 ; RV32-LABEL: intrinsic_vmsgeu_vx_nxv1i64_i64:
1670 ; RV32:       # %bb.0: # %entry
1671 ; RV32-NEXT:    addi sp, sp, -16
1672 ; RV32-NEXT:    sw a1, 12(sp)
1673 ; RV32-NEXT:    sw a0, 8(sp)
1674 ; RV32-NEXT:    addi a0, sp, 8
1675 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
1676 ; RV32-NEXT:    vlse64.v v9, (a0), zero
1677 ; RV32-NEXT:    vmsleu.vv v0, v9, v8
1678 ; RV32-NEXT:    addi sp, sp, 16
1679 ; RV32-NEXT:    ret
1681 ; RV64-LABEL: intrinsic_vmsgeu_vx_nxv1i64_i64:
1682 ; RV64:       # %bb.0: # %entry
1683 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1684 ; RV64-NEXT:    vmsltu.vx v8, v8, a0
1685 ; RV64-NEXT:    vmnot.m v0, v8
1686 ; RV64-NEXT:    ret
1687 entry:
1688   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i64.i64(
1689     <vscale x 1 x i64> %0,
1690     i64 %1,
1691     iXLen %2)
1693   ret <vscale x 1 x i1> %a
1696 declare <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i64.i64(
1697   <vscale x 1 x i1>,
1698   <vscale x 1 x i64>,
1699   i64,
1700   <vscale x 1 x i1>,
1701   iXLen);
1703 define <vscale x 1 x i1> @intrinsic_vmsgeu_mask_vx_nxv1i64_i64(<vscale x 1 x i1> %0, <vscale x 1 x i64> %1, i64 %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1704 ; RV32-LABEL: intrinsic_vmsgeu_mask_vx_nxv1i64_i64:
1705 ; RV32:       # %bb.0: # %entry
1706 ; RV32-NEXT:    addi sp, sp, -16
1707 ; RV32-NEXT:    sw a1, 12(sp)
1708 ; RV32-NEXT:    sw a0, 8(sp)
1709 ; RV32-NEXT:    addi a0, sp, 8
1710 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, mu
1711 ; RV32-NEXT:    vlse64.v v11, (a0), zero
1712 ; RV32-NEXT:    vmv1r.v v10, v0
1713 ; RV32-NEXT:    vmv1r.v v0, v9
1714 ; RV32-NEXT:    vmsleu.vv v10, v11, v8, v0.t
1715 ; RV32-NEXT:    vmv.v.v v0, v10
1716 ; RV32-NEXT:    addi sp, sp, 16
1717 ; RV32-NEXT:    ret
1719 ; RV64-LABEL: intrinsic_vmsgeu_mask_vx_nxv1i64_i64:
1720 ; RV64:       # %bb.0: # %entry
1721 ; RV64-NEXT:    vmv1r.v v10, v0
1722 ; RV64-NEXT:    vmv1r.v v0, v9
1723 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, mu
1724 ; RV64-NEXT:    vmsltu.vx v10, v8, a0, v0.t
1725 ; RV64-NEXT:    vmxor.mm v0, v10, v9
1726 ; RV64-NEXT:    ret
1727 entry:
1728   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i64.i64(
1729     <vscale x 1 x i1> %0,
1730     <vscale x 1 x i64> %1,
1731     i64 %2,
1732     <vscale x 1 x i1> %3,
1733     iXLen %4)
1735   ret <vscale x 1 x i1> %a
1738 declare <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i64.i64(
1739   <vscale x 2 x i64>,
1740   i64,
1741   iXLen);
1743 define <vscale x 2 x i1> @intrinsic_vmsgeu_vx_nxv2i64_i64(<vscale x 2 x i64> %0, i64 %1, iXLen %2) nounwind {
1744 ; RV32-LABEL: intrinsic_vmsgeu_vx_nxv2i64_i64:
1745 ; RV32:       # %bb.0: # %entry
1746 ; RV32-NEXT:    addi sp, sp, -16
1747 ; RV32-NEXT:    sw a1, 12(sp)
1748 ; RV32-NEXT:    sw a0, 8(sp)
1749 ; RV32-NEXT:    addi a0, sp, 8
1750 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1751 ; RV32-NEXT:    vlse64.v v10, (a0), zero
1752 ; RV32-NEXT:    vmsleu.vv v0, v10, v8
1753 ; RV32-NEXT:    addi sp, sp, 16
1754 ; RV32-NEXT:    ret
1756 ; RV64-LABEL: intrinsic_vmsgeu_vx_nxv2i64_i64:
1757 ; RV64:       # %bb.0: # %entry
1758 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1759 ; RV64-NEXT:    vmsltu.vx v10, v8, a0
1760 ; RV64-NEXT:    vmnot.m v0, v10
1761 ; RV64-NEXT:    ret
1762 entry:
1763   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i64.i64(
1764     <vscale x 2 x i64> %0,
1765     i64 %1,
1766     iXLen %2)
1768   ret <vscale x 2 x i1> %a
1771 declare <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i64.i64(
1772   <vscale x 2 x i1>,
1773   <vscale x 2 x i64>,
1774   i64,
1775   <vscale x 2 x i1>,
1776   iXLen);
1778 define <vscale x 2 x i1> @intrinsic_vmsgeu_mask_vx_nxv2i64_i64(<vscale x 2 x i1> %0, <vscale x 2 x i64> %1, i64 %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1779 ; RV32-LABEL: intrinsic_vmsgeu_mask_vx_nxv2i64_i64:
1780 ; RV32:       # %bb.0: # %entry
1781 ; RV32-NEXT:    addi sp, sp, -16
1782 ; RV32-NEXT:    sw a1, 12(sp)
1783 ; RV32-NEXT:    sw a0, 8(sp)
1784 ; RV32-NEXT:    addi a0, sp, 8
1785 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, mu
1786 ; RV32-NEXT:    vlse64.v v12, (a0), zero
1787 ; RV32-NEXT:    vmv1r.v v11, v0
1788 ; RV32-NEXT:    vmv1r.v v0, v10
1789 ; RV32-NEXT:    vmsleu.vv v11, v12, v8, v0.t
1790 ; RV32-NEXT:    vmv1r.v v0, v11
1791 ; RV32-NEXT:    addi sp, sp, 16
1792 ; RV32-NEXT:    ret
1794 ; RV64-LABEL: intrinsic_vmsgeu_mask_vx_nxv2i64_i64:
1795 ; RV64:       # %bb.0: # %entry
1796 ; RV64-NEXT:    vmv1r.v v11, v0
1797 ; RV64-NEXT:    vmv1r.v v0, v10
1798 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, mu
1799 ; RV64-NEXT:    vmsltu.vx v11, v8, a0, v0.t
1800 ; RV64-NEXT:    vmxor.mm v0, v11, v10
1801 ; RV64-NEXT:    ret
1802 entry:
1803   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i64.i64(
1804     <vscale x 2 x i1> %0,
1805     <vscale x 2 x i64> %1,
1806     i64 %2,
1807     <vscale x 2 x i1> %3,
1808     iXLen %4)
1810   ret <vscale x 2 x i1> %a
1813 declare <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i64.i64(
1814   <vscale x 4 x i64>,
1815   i64,
1816   iXLen);
1818 define <vscale x 4 x i1> @intrinsic_vmsgeu_vx_nxv4i64_i64(<vscale x 4 x i64> %0, i64 %1, iXLen %2) nounwind {
1819 ; RV32-LABEL: intrinsic_vmsgeu_vx_nxv4i64_i64:
1820 ; RV32:       # %bb.0: # %entry
1821 ; RV32-NEXT:    addi sp, sp, -16
1822 ; RV32-NEXT:    sw a1, 12(sp)
1823 ; RV32-NEXT:    sw a0, 8(sp)
1824 ; RV32-NEXT:    addi a0, sp, 8
1825 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1826 ; RV32-NEXT:    vlse64.v v12, (a0), zero
1827 ; RV32-NEXT:    vmsleu.vv v0, v12, v8
1828 ; RV32-NEXT:    addi sp, sp, 16
1829 ; RV32-NEXT:    ret
1831 ; RV64-LABEL: intrinsic_vmsgeu_vx_nxv4i64_i64:
1832 ; RV64:       # %bb.0: # %entry
1833 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1834 ; RV64-NEXT:    vmsltu.vx v12, v8, a0
1835 ; RV64-NEXT:    vmnot.m v0, v12
1836 ; RV64-NEXT:    ret
1837 entry:
1838   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i64.i64(
1839     <vscale x 4 x i64> %0,
1840     i64 %1,
1841     iXLen %2)
1843   ret <vscale x 4 x i1> %a
1846 declare <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i64.i64(
1847   <vscale x 4 x i1>,
1848   <vscale x 4 x i64>,
1849   i64,
1850   <vscale x 4 x i1>,
1851   iXLen);
1853 define <vscale x 4 x i1> @intrinsic_vmsgeu_mask_vx_nxv4i64_i64(<vscale x 4 x i1> %0, <vscale x 4 x i64> %1, i64 %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1854 ; RV32-LABEL: intrinsic_vmsgeu_mask_vx_nxv4i64_i64:
1855 ; RV32:       # %bb.0: # %entry
1856 ; RV32-NEXT:    addi sp, sp, -16
1857 ; RV32-NEXT:    sw a1, 12(sp)
1858 ; RV32-NEXT:    sw a0, 8(sp)
1859 ; RV32-NEXT:    addi a0, sp, 8
1860 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, mu
1861 ; RV32-NEXT:    vlse64.v v16, (a0), zero
1862 ; RV32-NEXT:    vmv1r.v v13, v0
1863 ; RV32-NEXT:    vmv1r.v v0, v12
1864 ; RV32-NEXT:    vmsleu.vv v13, v16, v8, v0.t
1865 ; RV32-NEXT:    vmv1r.v v0, v13
1866 ; RV32-NEXT:    addi sp, sp, 16
1867 ; RV32-NEXT:    ret
1869 ; RV64-LABEL: intrinsic_vmsgeu_mask_vx_nxv4i64_i64:
1870 ; RV64:       # %bb.0: # %entry
1871 ; RV64-NEXT:    vmv1r.v v13, v0
1872 ; RV64-NEXT:    vmv1r.v v0, v12
1873 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, mu
1874 ; RV64-NEXT:    vmsltu.vx v13, v8, a0, v0.t
1875 ; RV64-NEXT:    vmxor.mm v0, v13, v12
1876 ; RV64-NEXT:    ret
1877 entry:
1878   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i64.i64(
1879     <vscale x 4 x i1> %0,
1880     <vscale x 4 x i64> %1,
1881     i64 %2,
1882     <vscale x 4 x i1> %3,
1883     iXLen %4)
1885   ret <vscale x 4 x i1> %a
1888 define <vscale x 1 x i1> @intrinsic_vmsgeu_vi_nxv1i8_i8(<vscale x 1 x i8> %0, iXLen %1) nounwind {
1889 ; CHECK-LABEL: intrinsic_vmsgeu_vi_nxv1i8_i8:
1890 ; CHECK:       # %bb.0: # %entry
1891 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
1892 ; CHECK-NEXT:    vmsgtu.vi v0, v8, -16
1893 ; CHECK-NEXT:    ret
1894 entry:
1895   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i8.i8(
1896     <vscale x 1 x i8> %0,
1897     i8 -15,
1898     iXLen %1)
1900   ret <vscale x 1 x i1> %a
1903 define <vscale x 1 x i1> @intrinsic_vmsgeu_mask_vi_nxv1i8_i8(<vscale x 1 x i1> %0, <vscale x 1 x i8> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
1904 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vi_nxv1i8_i8:
1905 ; CHECK:       # %bb.0: # %entry
1906 ; CHECK-NEXT:    vmv1r.v v10, v0
1907 ; CHECK-NEXT:    vmv1r.v v0, v9
1908 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, mu
1909 ; CHECK-NEXT:    vmsgtu.vi v10, v8, -15, v0.t
1910 ; CHECK-NEXT:    vmv1r.v v0, v10
1911 ; CHECK-NEXT:    ret
1912 entry:
1913   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i8.i8(
1914     <vscale x 1 x i1> %0,
1915     <vscale x 1 x i8> %1,
1916     i8 -14,
1917     <vscale x 1 x i1> %2,
1918     iXLen %3)
1920   ret <vscale x 1 x i1> %a
1923 define <vscale x 2 x i1> @intrinsic_vmsgeu_vi_nxv2i8_i8(<vscale x 2 x i8> %0, iXLen %1) nounwind {
1924 ; CHECK-LABEL: intrinsic_vmsgeu_vi_nxv2i8_i8:
1925 ; CHECK:       # %bb.0: # %entry
1926 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
1927 ; CHECK-NEXT:    vmsgtu.vi v0, v8, -14
1928 ; CHECK-NEXT:    ret
1929 entry:
1930   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i8.i8(
1931     <vscale x 2 x i8> %0,
1932     i8 -13,
1933     iXLen %1)
1935   ret <vscale x 2 x i1> %a
1938 define <vscale x 2 x i1> @intrinsic_vmsgeu_mask_vi_nxv2i8_i8(<vscale x 2 x i1> %0, <vscale x 2 x i8> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
1939 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vi_nxv2i8_i8:
1940 ; CHECK:       # %bb.0: # %entry
1941 ; CHECK-NEXT:    vmv1r.v v10, v0
1942 ; CHECK-NEXT:    vmv1r.v v0, v9
1943 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, mu
1944 ; CHECK-NEXT:    vmsgtu.vi v10, v8, -13, v0.t
1945 ; CHECK-NEXT:    vmv1r.v v0, v10
1946 ; CHECK-NEXT:    ret
1947 entry:
1948   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i8.i8(
1949     <vscale x 2 x i1> %0,
1950     <vscale x 2 x i8> %1,
1951     i8 -12,
1952     <vscale x 2 x i1> %2,
1953     iXLen %3)
1955   ret <vscale x 2 x i1> %a
1958 define <vscale x 4 x i1> @intrinsic_vmsgeu_vi_nxv4i8_i8(<vscale x 4 x i8> %0, iXLen %1) nounwind {
1959 ; CHECK-LABEL: intrinsic_vmsgeu_vi_nxv4i8_i8:
1960 ; CHECK:       # %bb.0: # %entry
1961 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
1962 ; CHECK-NEXT:    vmsgtu.vi v0, v8, -12
1963 ; CHECK-NEXT:    ret
1964 entry:
1965   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i8.i8(
1966     <vscale x 4 x i8> %0,
1967     i8 -11,
1968     iXLen %1)
1970   ret <vscale x 4 x i1> %a
1973 define <vscale x 4 x i1> @intrinsic_vmsgeu_mask_vi_nxv4i8_i8(<vscale x 4 x i1> %0, <vscale x 4 x i8> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
1974 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vi_nxv4i8_i8:
1975 ; CHECK:       # %bb.0: # %entry
1976 ; CHECK-NEXT:    vmv1r.v v10, v0
1977 ; CHECK-NEXT:    vmv1r.v v0, v9
1978 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, mu
1979 ; CHECK-NEXT:    vmsgtu.vi v10, v8, -11, v0.t
1980 ; CHECK-NEXT:    vmv1r.v v0, v10
1981 ; CHECK-NEXT:    ret
1982 entry:
1983   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i8.i8(
1984     <vscale x 4 x i1> %0,
1985     <vscale x 4 x i8> %1,
1986     i8 -10,
1987     <vscale x 4 x i1> %2,
1988     iXLen %3)
1990   ret <vscale x 4 x i1> %a
1993 define <vscale x 8 x i1> @intrinsic_vmsgeu_vi_nxv8i8_i8(<vscale x 8 x i8> %0, iXLen %1) nounwind {
1994 ; CHECK-LABEL: intrinsic_vmsgeu_vi_nxv8i8_i8:
1995 ; CHECK:       # %bb.0: # %entry
1996 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
1997 ; CHECK-NEXT:    vmsgtu.vi v0, v8, -10
1998 ; CHECK-NEXT:    ret
1999 entry:
2000   %a = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.nxv8i8.i8(
2001     <vscale x 8 x i8> %0,
2002     i8 -9,
2003     iXLen %1)
2005   ret <vscale x 8 x i1> %a
2008 define <vscale x 8 x i1> @intrinsic_vmsgeu_mask_vi_nxv8i8_i8(<vscale x 8 x i1> %0, <vscale x 8 x i8> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
2009 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vi_nxv8i8_i8:
2010 ; CHECK:       # %bb.0: # %entry
2011 ; CHECK-NEXT:    vmv1r.v v10, v0
2012 ; CHECK-NEXT:    vmv1r.v v0, v9
2013 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, mu
2014 ; CHECK-NEXT:    vmsgtu.vi v10, v8, -9, v0.t
2015 ; CHECK-NEXT:    vmv.v.v v0, v10
2016 ; CHECK-NEXT:    ret
2017 entry:
2018   %a = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.mask.nxv8i8.i8(
2019     <vscale x 8 x i1> %0,
2020     <vscale x 8 x i8> %1,
2021     i8 -8,
2022     <vscale x 8 x i1> %2,
2023     iXLen %3)
2025   ret <vscale x 8 x i1> %a
2028 define <vscale x 16 x i1> @intrinsic_vmsgeu_vi_nxv16i8_i8(<vscale x 16 x i8> %0, iXLen %1) nounwind {
2029 ; CHECK-LABEL: intrinsic_vmsgeu_vi_nxv16i8_i8:
2030 ; CHECK:       # %bb.0: # %entry
2031 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
2032 ; CHECK-NEXT:    vmsgtu.vi v0, v8, -8
2033 ; CHECK-NEXT:    ret
2034 entry:
2035   %a = call <vscale x 16 x i1> @llvm.riscv.vmsgeu.nxv16i8.i8(
2036     <vscale x 16 x i8> %0,
2037     i8 -7,
2038     iXLen %1)
2040   ret <vscale x 16 x i1> %a
2043 define <vscale x 16 x i1> @intrinsic_vmsgeu_mask_vi_nxv16i8_i8(<vscale x 16 x i1> %0, <vscale x 16 x i8> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
2044 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vi_nxv16i8_i8:
2045 ; CHECK:       # %bb.0: # %entry
2046 ; CHECK-NEXT:    vmv1r.v v11, v0
2047 ; CHECK-NEXT:    vmv1r.v v0, v10
2048 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, mu
2049 ; CHECK-NEXT:    vmsgtu.vi v11, v8, -7, v0.t
2050 ; CHECK-NEXT:    vmv1r.v v0, v11
2051 ; CHECK-NEXT:    ret
2052 entry:
2053   %a = call <vscale x 16 x i1> @llvm.riscv.vmsgeu.mask.nxv16i8.i8(
2054     <vscale x 16 x i1> %0,
2055     <vscale x 16 x i8> %1,
2056     i8 -6,
2057     <vscale x 16 x i1> %2,
2058     iXLen %3)
2060   ret <vscale x 16 x i1> %a
2063 define <vscale x 32 x i1> @intrinsic_vmsgeu_vi_nxv32i8_i8(<vscale x 32 x i8> %0, iXLen %1) nounwind {
2064 ; CHECK-LABEL: intrinsic_vmsgeu_vi_nxv32i8_i8:
2065 ; CHECK:       # %bb.0: # %entry
2066 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
2067 ; CHECK-NEXT:    vmsgtu.vi v0, v8, -6
2068 ; CHECK-NEXT:    ret
2069 entry:
2070   %a = call <vscale x 32 x i1> @llvm.riscv.vmsgeu.nxv32i8.i8(
2071     <vscale x 32 x i8> %0,
2072     i8 -5,
2073     iXLen %1)
2075   ret <vscale x 32 x i1> %a
2078 define <vscale x 32 x i1> @intrinsic_vmsgeu_mask_vi_nxv32i8_i8(<vscale x 32 x i1> %0, <vscale x 32 x i8> %1, <vscale x 32 x i1> %2, iXLen %3) nounwind {
2079 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vi_nxv32i8_i8:
2080 ; CHECK:       # %bb.0: # %entry
2081 ; CHECK-NEXT:    vmv1r.v v13, v0
2082 ; CHECK-NEXT:    vmv1r.v v0, v12
2083 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, mu
2084 ; CHECK-NEXT:    vmsgtu.vi v13, v8, -5, v0.t
2085 ; CHECK-NEXT:    vmv1r.v v0, v13
2086 ; CHECK-NEXT:    ret
2087 entry:
2088   %a = call <vscale x 32 x i1> @llvm.riscv.vmsgeu.mask.nxv32i8.i8(
2089     <vscale x 32 x i1> %0,
2090     <vscale x 32 x i8> %1,
2091     i8 -4,
2092     <vscale x 32 x i1> %2,
2093     iXLen %3)
2095   ret <vscale x 32 x i1> %a
2098 define <vscale x 1 x i1> @intrinsic_vmsgeu_vi_nxv1i16_i16(<vscale x 1 x i16> %0, iXLen %1) nounwind {
2099 ; CHECK-LABEL: intrinsic_vmsgeu_vi_nxv1i16_i16:
2100 ; CHECK:       # %bb.0: # %entry
2101 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
2102 ; CHECK-NEXT:    vmsgtu.vi v0, v8, -4
2103 ; CHECK-NEXT:    ret
2104 entry:
2105   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i16.i16(
2106     <vscale x 1 x i16> %0,
2107     i16 -3,
2108     iXLen %1)
2110   ret <vscale x 1 x i1> %a
2113 define <vscale x 1 x i1> @intrinsic_vmsgeu_mask_vi_nxv1i16_i16(<vscale x 1 x i1> %0, <vscale x 1 x i16> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
2114 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vi_nxv1i16_i16:
2115 ; CHECK:       # %bb.0: # %entry
2116 ; CHECK-NEXT:    vmv1r.v v10, v0
2117 ; CHECK-NEXT:    vmv1r.v v0, v9
2118 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu
2119 ; CHECK-NEXT:    vmsgtu.vi v10, v8, -3, v0.t
2120 ; CHECK-NEXT:    vmv1r.v v0, v10
2121 ; CHECK-NEXT:    ret
2122 entry:
2123   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i16.i16(
2124     <vscale x 1 x i1> %0,
2125     <vscale x 1 x i16> %1,
2126     i16 -2,
2127     <vscale x 1 x i1> %2,
2128     iXLen %3)
2130   ret <vscale x 1 x i1> %a
2133 define <vscale x 2 x i1> @intrinsic_vmsgeu_vi_nxv2i16_i16(<vscale x 2 x i16> %0, iXLen %1) nounwind {
2134 ; CHECK-LABEL: intrinsic_vmsgeu_vi_nxv2i16_i16:
2135 ; CHECK:       # %bb.0: # %entry
2136 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
2137 ; CHECK-NEXT:    vmsgtu.vi v0, v8, -2
2138 ; CHECK-NEXT:    ret
2139 entry:
2140   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i16.i16(
2141     <vscale x 2 x i16> %0,
2142     i16 -1,
2143     iXLen %1)
2145   ret <vscale x 2 x i1> %a
2148 define <vscale x 2 x i1> @intrinsic_vmsgeu_mask_vi_nxv2i16_i16(<vscale x 2 x i1> %0, <vscale x 2 x i16> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
2149 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vi_nxv2i16_i16:
2150 ; CHECK:       # %bb.0: # %entry
2151 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
2152 ; CHECK-NEXT:    vmor.mm v0, v9, v0
2153 ; CHECK-NEXT:    ret
2154 entry:
2155   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i16.i16(
2156     <vscale x 2 x i1> %0,
2157     <vscale x 2 x i16> %1,
2158     i16 0,
2159     <vscale x 2 x i1> %2,
2160     iXLen %3)
2162   ret <vscale x 2 x i1> %a
2165 define <vscale x 2 x i1> @intrinsic_vmsgeu_mask_vi_nxv2i16_i16_same_mask_maskedoff(<vscale x 2 x i1> %0, <vscale x 2 x i16> %1, iXLen %2) nounwind {
2166 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vi_nxv2i16_i16_same_mask_maskedoff:
2167 ; CHECK:       # %bb.0: # %entry
2168 ; CHECK-NEXT:    ret
2169 entry:
2170   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i16.i16(
2171     <vscale x 2 x i1> %0,
2172     <vscale x 2 x i16> %1,
2173     i16 0,
2174     <vscale x 2 x i1> %0,
2175     iXLen %2)
2177   ret <vscale x 2 x i1> %a
2180 define <vscale x 4 x i1> @intrinsic_vmsgeu_vi_nxv4i16_i16(<vscale x 4 x i16> %0, iXLen %1) nounwind {
2181 ; CHECK-LABEL: intrinsic_vmsgeu_vi_nxv4i16_i16:
2182 ; CHECK:       # %bb.0: # %entry
2183 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
2184 ; CHECK-NEXT:    vmset.m v0
2185 ; CHECK-NEXT:    ret
2186 entry:
2187   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i16.i16(
2188     <vscale x 4 x i16> %0,
2189     i16 0,
2190     iXLen %1)
2192   ret <vscale x 4 x i1> %a
2195 define <vscale x 4 x i1> @intrinsic_vmsgeu_mask_vi_nxv4i16_i16(<vscale x 4 x i1> %0, <vscale x 4 x i16> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
2196 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vi_nxv4i16_i16:
2197 ; CHECK:       # %bb.0: # %entry
2198 ; CHECK-NEXT:    vmv1r.v v10, v0
2199 ; CHECK-NEXT:    vmv1r.v v0, v9
2200 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu
2201 ; CHECK-NEXT:    vmsgtu.vi v10, v8, 0, v0.t
2202 ; CHECK-NEXT:    vmv.v.v v0, v10
2203 ; CHECK-NEXT:    ret
2204 entry:
2205   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i16.i16(
2206     <vscale x 4 x i1> %0,
2207     <vscale x 4 x i16> %1,
2208     i16 1,
2209     <vscale x 4 x i1> %2,
2210     iXLen %3)
2212   ret <vscale x 4 x i1> %a
2215 define <vscale x 8 x i1> @intrinsic_vmsgeu_vi_nxv8i16_i16(<vscale x 8 x i16> %0, iXLen %1) nounwind {
2216 ; CHECK-LABEL: intrinsic_vmsgeu_vi_nxv8i16_i16:
2217 ; CHECK:       # %bb.0: # %entry
2218 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
2219 ; CHECK-NEXT:    vmsgtu.vi v0, v8, 1
2220 ; CHECK-NEXT:    ret
2221 entry:
2222   %a = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.nxv8i16.i16(
2223     <vscale x 8 x i16> %0,
2224     i16 2,
2225     iXLen %1)
2227   ret <vscale x 8 x i1> %a
2230 define <vscale x 8 x i1> @intrinsic_vmsgeu_mask_vi_nxv8i16_i16(<vscale x 8 x i1> %0, <vscale x 8 x i16> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
2231 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vi_nxv8i16_i16:
2232 ; CHECK:       # %bb.0: # %entry
2233 ; CHECK-NEXT:    vmv1r.v v11, v0
2234 ; CHECK-NEXT:    vmv1r.v v0, v10
2235 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu
2236 ; CHECK-NEXT:    vmsgtu.vi v11, v8, 2, v0.t
2237 ; CHECK-NEXT:    vmv1r.v v0, v11
2238 ; CHECK-NEXT:    ret
2239 entry:
2240   %a = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.mask.nxv8i16.i16(
2241     <vscale x 8 x i1> %0,
2242     <vscale x 8 x i16> %1,
2243     i16 3,
2244     <vscale x 8 x i1> %2,
2245     iXLen %3)
2247   ret <vscale x 8 x i1> %a
2250 define <vscale x 16 x i1> @intrinsic_vmsgeu_vi_nxv16i16_i16(<vscale x 16 x i16> %0, iXLen %1) nounwind {
2251 ; CHECK-LABEL: intrinsic_vmsgeu_vi_nxv16i16_i16:
2252 ; CHECK:       # %bb.0: # %entry
2253 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2254 ; CHECK-NEXT:    vmsgtu.vi v0, v8, 3
2255 ; CHECK-NEXT:    ret
2256 entry:
2257   %a = call <vscale x 16 x i1> @llvm.riscv.vmsgeu.nxv16i16.i16(
2258     <vscale x 16 x i16> %0,
2259     i16 4,
2260     iXLen %1)
2262   ret <vscale x 16 x i1> %a
2265 define <vscale x 16 x i1> @intrinsic_vmsgeu_mask_vi_nxv16i16_i16(<vscale x 16 x i1> %0, <vscale x 16 x i16> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
2266 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vi_nxv16i16_i16:
2267 ; CHECK:       # %bb.0: # %entry
2268 ; CHECK-NEXT:    vmv1r.v v13, v0
2269 ; CHECK-NEXT:    vmv1r.v v0, v12
2270 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu
2271 ; CHECK-NEXT:    vmsgtu.vi v13, v8, 4, v0.t
2272 ; CHECK-NEXT:    vmv1r.v v0, v13
2273 ; CHECK-NEXT:    ret
2274 entry:
2275   %a = call <vscale x 16 x i1> @llvm.riscv.vmsgeu.mask.nxv16i16.i16(
2276     <vscale x 16 x i1> %0,
2277     <vscale x 16 x i16> %1,
2278     i16 5,
2279     <vscale x 16 x i1> %2,
2280     iXLen %3)
2282   ret <vscale x 16 x i1> %a
2285 define <vscale x 1 x i1> @intrinsic_vmsgeu_vi_nxv1i32_i32(<vscale x 1 x i32> %0, iXLen %1) nounwind {
2286 ; CHECK-LABEL: intrinsic_vmsgeu_vi_nxv1i32_i32:
2287 ; CHECK:       # %bb.0: # %entry
2288 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
2289 ; CHECK-NEXT:    vmsgtu.vi v0, v8, 5
2290 ; CHECK-NEXT:    ret
2291 entry:
2292   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i32.i32(
2293     <vscale x 1 x i32> %0,
2294     i32 6,
2295     iXLen %1)
2297   ret <vscale x 1 x i1> %a
2300 define <vscale x 1 x i1> @intrinsic_vmsgeu_mask_vi_nxv1i32_i32(<vscale x 1 x i1> %0, <vscale x 1 x i32> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
2301 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vi_nxv1i32_i32:
2302 ; CHECK:       # %bb.0: # %entry
2303 ; CHECK-NEXT:    vmv1r.v v10, v0
2304 ; CHECK-NEXT:    vmv1r.v v0, v9
2305 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu
2306 ; CHECK-NEXT:    vmsgtu.vi v10, v8, 6, v0.t
2307 ; CHECK-NEXT:    vmv1r.v v0, v10
2308 ; CHECK-NEXT:    ret
2309 entry:
2310   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i32.i32(
2311     <vscale x 1 x i1> %0,
2312     <vscale x 1 x i32> %1,
2313     i32 7,
2314     <vscale x 1 x i1> %2,
2315     iXLen %3)
2317   ret <vscale x 1 x i1> %a
2320 define <vscale x 2 x i1> @intrinsic_vmsgeu_vi_nxv2i32_i32(<vscale x 2 x i32> %0, iXLen %1) nounwind {
2321 ; CHECK-LABEL: intrinsic_vmsgeu_vi_nxv2i32_i32:
2322 ; CHECK:       # %bb.0: # %entry
2323 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
2324 ; CHECK-NEXT:    vmsgtu.vi v0, v8, 7
2325 ; CHECK-NEXT:    ret
2326 entry:
2327   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i32.i32(
2328     <vscale x 2 x i32> %0,
2329     i32 8,
2330     iXLen %1)
2332   ret <vscale x 2 x i1> %a
2335 define <vscale x 2 x i1> @intrinsic_vmsgeu_mask_vi_nxv2i32_i32(<vscale x 2 x i1> %0, <vscale x 2 x i32> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
2336 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vi_nxv2i32_i32:
2337 ; CHECK:       # %bb.0: # %entry
2338 ; CHECK-NEXT:    vmv1r.v v10, v0
2339 ; CHECK-NEXT:    vmv1r.v v0, v9
2340 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu
2341 ; CHECK-NEXT:    vmsgtu.vi v10, v8, 8, v0.t
2342 ; CHECK-NEXT:    vmv.v.v v0, v10
2343 ; CHECK-NEXT:    ret
2344 entry:
2345   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i32.i32(
2346     <vscale x 2 x i1> %0,
2347     <vscale x 2 x i32> %1,
2348     i32 9,
2349     <vscale x 2 x i1> %2,
2350     iXLen %3)
2352   ret <vscale x 2 x i1> %a
2355 define <vscale x 4 x i1> @intrinsic_vmsgeu_vi_nxv4i32_i32(<vscale x 4 x i32> %0, iXLen %1) nounwind {
2356 ; CHECK-LABEL: intrinsic_vmsgeu_vi_nxv4i32_i32:
2357 ; CHECK:       # %bb.0: # %entry
2358 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
2359 ; CHECK-NEXT:    vmsgtu.vi v0, v8, 9
2360 ; CHECK-NEXT:    ret
2361 entry:
2362   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i32.i32(
2363     <vscale x 4 x i32> %0,
2364     i32 10,
2365     iXLen %1)
2367   ret <vscale x 4 x i1> %a
2370 define <vscale x 4 x i1> @intrinsic_vmsgeu_mask_vi_nxv4i32_i32(<vscale x 4 x i1> %0, <vscale x 4 x i32> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
2371 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vi_nxv4i32_i32:
2372 ; CHECK:       # %bb.0: # %entry
2373 ; CHECK-NEXT:    vmv1r.v v11, v0
2374 ; CHECK-NEXT:    vmv1r.v v0, v10
2375 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu
2376 ; CHECK-NEXT:    vmsgtu.vi v11, v8, 10, v0.t
2377 ; CHECK-NEXT:    vmv1r.v v0, v11
2378 ; CHECK-NEXT:    ret
2379 entry:
2380   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i32.i32(
2381     <vscale x 4 x i1> %0,
2382     <vscale x 4 x i32> %1,
2383     i32 11,
2384     <vscale x 4 x i1> %2,
2385     iXLen %3)
2387   ret <vscale x 4 x i1> %a
2390 define <vscale x 8 x i1> @intrinsic_vmsgeu_vi_nxv8i32_i32(<vscale x 8 x i32> %0, iXLen %1) nounwind {
2391 ; CHECK-LABEL: intrinsic_vmsgeu_vi_nxv8i32_i32:
2392 ; CHECK:       # %bb.0: # %entry
2393 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2394 ; CHECK-NEXT:    vmsgtu.vi v0, v8, 11
2395 ; CHECK-NEXT:    ret
2396 entry:
2397   %a = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.nxv8i32.i32(
2398     <vscale x 8 x i32> %0,
2399     i32 12,
2400     iXLen %1)
2402   ret <vscale x 8 x i1> %a
2405 define <vscale x 8 x i1> @intrinsic_vmsgeu_mask_vi_nxv8i32_i32(<vscale x 8 x i1> %0, <vscale x 8 x i32> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
2406 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vi_nxv8i32_i32:
2407 ; CHECK:       # %bb.0: # %entry
2408 ; CHECK-NEXT:    vmv1r.v v13, v0
2409 ; CHECK-NEXT:    vmv1r.v v0, v12
2410 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu
2411 ; CHECK-NEXT:    vmsgtu.vi v13, v8, 12, v0.t
2412 ; CHECK-NEXT:    vmv1r.v v0, v13
2413 ; CHECK-NEXT:    ret
2414 entry:
2415   %a = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.mask.nxv8i32.i32(
2416     <vscale x 8 x i1> %0,
2417     <vscale x 8 x i32> %1,
2418     i32 13,
2419     <vscale x 8 x i1> %2,
2420     iXLen %3)
2422   ret <vscale x 8 x i1> %a
2425 define <vscale x 1 x i1> @intrinsic_vmsgeu_vi_nxv1i64_i64(<vscale x 1 x i64> %0, iXLen %1) nounwind {
2426 ; CHECK-LABEL: intrinsic_vmsgeu_vi_nxv1i64_i64:
2427 ; CHECK:       # %bb.0: # %entry
2428 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2429 ; CHECK-NEXT:    vmsgtu.vi v0, v8, 13
2430 ; CHECK-NEXT:    ret
2431 entry:
2432   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.nxv1i64.i64(
2433     <vscale x 1 x i64> %0,
2434     i64 14,
2435     iXLen %1)
2437   ret <vscale x 1 x i1> %a
2440 define <vscale x 1 x i1> @intrinsic_vmsgeu_mask_vi_nxv1i64_i64(<vscale x 1 x i1> %0, <vscale x 1 x i64> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
2441 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vi_nxv1i64_i64:
2442 ; CHECK:       # %bb.0: # %entry
2443 ; CHECK-NEXT:    vmv1r.v v10, v0
2444 ; CHECK-NEXT:    vmv1r.v v0, v9
2445 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu
2446 ; CHECK-NEXT:    vmsgtu.vi v10, v8, 14, v0.t
2447 ; CHECK-NEXT:    vmv.v.v v0, v10
2448 ; CHECK-NEXT:    ret
2449 entry:
2450   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i64.i64(
2451     <vscale x 1 x i1> %0,
2452     <vscale x 1 x i64> %1,
2453     i64 15,
2454     <vscale x 1 x i1> %2,
2455     iXLen %3)
2457   ret <vscale x 1 x i1> %a
2460 define <vscale x 2 x i1> @intrinsic_vmsgeu_vi_nxv2i64_i64(<vscale x 2 x i64> %0, iXLen %1) nounwind {
2461 ; CHECK-LABEL: intrinsic_vmsgeu_vi_nxv2i64_i64:
2462 ; CHECK:       # %bb.0: # %entry
2463 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
2464 ; CHECK-NEXT:    vmsgtu.vi v0, v8, 15
2465 ; CHECK-NEXT:    ret
2466 entry:
2467   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.nxv2i64.i64(
2468     <vscale x 2 x i64> %0,
2469     i64 16,
2470     iXLen %1)
2472   ret <vscale x 2 x i1> %a
2475 define <vscale x 2 x i1> @intrinsic_vmsgeu_mask_vi_nxv2i64_i64(<vscale x 2 x i1> %0, <vscale x 2 x i64> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
2476 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vi_nxv2i64_i64:
2477 ; CHECK:       # %bb.0: # %entry
2478 ; CHECK-NEXT:    vmv1r.v v11, v0
2479 ; CHECK-NEXT:    vmv1r.v v0, v10
2480 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu
2481 ; CHECK-NEXT:    vmsgtu.vi v11, v8, -16, v0.t
2482 ; CHECK-NEXT:    vmv1r.v v0, v11
2483 ; CHECK-NEXT:    ret
2484 entry:
2485   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i64.i64(
2486     <vscale x 2 x i1> %0,
2487     <vscale x 2 x i64> %1,
2488     i64 -15,
2489     <vscale x 2 x i1> %2,
2490     iXLen %3)
2492   ret <vscale x 2 x i1> %a
2495 define <vscale x 4 x i1> @intrinsic_vmsgeu_vi_nxv4i64_i64(<vscale x 4 x i64> %0, iXLen %1) nounwind {
2496 ; CHECK-LABEL: intrinsic_vmsgeu_vi_nxv4i64_i64:
2497 ; CHECK:       # %bb.0: # %entry
2498 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
2499 ; CHECK-NEXT:    vmsgtu.vi v0, v8, -15
2500 ; CHECK-NEXT:    ret
2501 entry:
2502   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.nxv4i64.i64(
2503     <vscale x 4 x i64> %0,
2504     i64 -14,
2505     iXLen %1)
2507   ret <vscale x 4 x i1> %a
2510 define <vscale x 4 x i1> @intrinsic_vmsgeu_mask_vi_nxv4i64_i64(<vscale x 4 x i1> %0, <vscale x 4 x i64> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
2511 ; CHECK-LABEL: intrinsic_vmsgeu_mask_vi_nxv4i64_i64:
2512 ; CHECK:       # %bb.0: # %entry
2513 ; CHECK-NEXT:    vmv1r.v v13, v0
2514 ; CHECK-NEXT:    vmv1r.v v0, v12
2515 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu
2516 ; CHECK-NEXT:    vmsgtu.vi v13, v8, -14, v0.t
2517 ; CHECK-NEXT:    vmv1r.v v0, v13
2518 ; CHECK-NEXT:    ret
2519 entry:
2520   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i64.i64(
2521     <vscale x 4 x i1> %0,
2522     <vscale x 4 x i64> %1,
2523     i64 -13,
2524     <vscale x 4 x i1> %2,
2525     iXLen %3)
2527   ret <vscale x 4 x i1> %a
2530 ; Test cases where the mask and maskedoff are the same value.
2531 define <vscale x 1 x i1> @intrinsic_vmsgeu_maskedoff_mask_vx_nxv1i8_i8(<vscale x 1 x i1> %0, <vscale x 1 x i8> %1, i8 %2, iXLen %3) nounwind {
2532 ; CHECK-LABEL: intrinsic_vmsgeu_maskedoff_mask_vx_nxv1i8_i8:
2533 ; CHECK:       # %bb.0: # %entry
2534 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
2535 ; CHECK-NEXT:    vmsltu.vx v8, v8, a0
2536 ; CHECK-NEXT:    vmandn.mm v0, v0, v8
2537 ; CHECK-NEXT:    ret
2538 entry:
2539   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i8.i8(
2540     <vscale x 1 x i1> %0,
2541     <vscale x 1 x i8> %1,
2542     i8 %2,
2543     <vscale x 1 x i1> %0,
2544     iXLen %3)
2546   ret <vscale x 1 x i1> %a
2549 define <vscale x 2 x i1> @intrinsic_vmsgeu_maskedoff_mask_vx_nxv2i8_i8(<vscale x 2 x i1> %0, <vscale x 2 x i8> %1, i8 %2, iXLen %3) nounwind {
2550 ; CHECK-LABEL: intrinsic_vmsgeu_maskedoff_mask_vx_nxv2i8_i8:
2551 ; CHECK:       # %bb.0: # %entry
2552 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
2553 ; CHECK-NEXT:    vmsltu.vx v8, v8, a0
2554 ; CHECK-NEXT:    vmandn.mm v0, v0, v8
2555 ; CHECK-NEXT:    ret
2556 entry:
2557   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i8.i8(
2558     <vscale x 2 x i1> %0,
2559     <vscale x 2 x i8> %1,
2560     i8 %2,
2561     <vscale x 2 x i1> %0,
2562     iXLen %3)
2564   ret <vscale x 2 x i1> %a
2567 define <vscale x 4 x i1> @intrinsic_vmsgeu_maskedoff_mask_vx_nxv4i8_i8(<vscale x 4 x i1> %0, <vscale x 4 x i8> %1, i8 %2, iXLen %3) nounwind {
2568 ; CHECK-LABEL: intrinsic_vmsgeu_maskedoff_mask_vx_nxv4i8_i8:
2569 ; CHECK:       # %bb.0: # %entry
2570 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
2571 ; CHECK-NEXT:    vmsltu.vx v8, v8, a0
2572 ; CHECK-NEXT:    vmandn.mm v0, v0, v8
2573 ; CHECK-NEXT:    ret
2574 entry:
2575   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i8.i8(
2576     <vscale x 4 x i1> %0,
2577     <vscale x 4 x i8> %1,
2578     i8 %2,
2579     <vscale x 4 x i1> %0,
2580     iXLen %3)
2582   ret <vscale x 4 x i1> %a
2585 define <vscale x 8 x i1> @intrinsic_vmsgeu_maskedoff_mask_vx_nxv8i8_i8(<vscale x 8 x i1> %0, <vscale x 8 x i8> %1, i8 %2, iXLen %3) nounwind {
2586 ; CHECK-LABEL: intrinsic_vmsgeu_maskedoff_mask_vx_nxv8i8_i8:
2587 ; CHECK:       # %bb.0: # %entry
2588 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
2589 ; CHECK-NEXT:    vmsltu.vx v8, v8, a0
2590 ; CHECK-NEXT:    vmandn.mm v0, v0, v8
2591 ; CHECK-NEXT:    ret
2592 entry:
2593   %a = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.mask.nxv8i8.i8(
2594     <vscale x 8 x i1> %0,
2595     <vscale x 8 x i8> %1,
2596     i8 %2,
2597     <vscale x 8 x i1> %0,
2598     iXLen %3)
2600   ret <vscale x 8 x i1> %a
2603 define <vscale x 16 x i1> @intrinsic_vmsgeu_maskedoff_mask_vx_nxv16i8_i8(<vscale x 16 x i1> %0, <vscale x 16 x i8> %1, i8 %2, iXLen %3) nounwind {
2604 ; CHECK-LABEL: intrinsic_vmsgeu_maskedoff_mask_vx_nxv16i8_i8:
2605 ; CHECK:       # %bb.0: # %entry
2606 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
2607 ; CHECK-NEXT:    vmsltu.vx v10, v8, a0
2608 ; CHECK-NEXT:    vmandn.mm v0, v0, v10
2609 ; CHECK-NEXT:    ret
2610 entry:
2611   %a = call <vscale x 16 x i1> @llvm.riscv.vmsgeu.mask.nxv16i8.i8(
2612     <vscale x 16 x i1> %0,
2613     <vscale x 16 x i8> %1,
2614     i8 %2,
2615     <vscale x 16 x i1> %0,
2616     iXLen %3)
2618   ret <vscale x 16 x i1> %a
2621 define <vscale x 32 x i1> @intrinsic_vmsgeu_maskedoff_mask_vx_nxv32i8_i8(<vscale x 32 x i1> %0, <vscale x 32 x i8> %1, i8 %2, iXLen %3) nounwind {
2622 ; CHECK-LABEL: intrinsic_vmsgeu_maskedoff_mask_vx_nxv32i8_i8:
2623 ; CHECK:       # %bb.0: # %entry
2624 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
2625 ; CHECK-NEXT:    vmsltu.vx v12, v8, a0
2626 ; CHECK-NEXT:    vmandn.mm v0, v0, v12
2627 ; CHECK-NEXT:    ret
2628 entry:
2629   %a = call <vscale x 32 x i1> @llvm.riscv.vmsgeu.mask.nxv32i8.i8(
2630     <vscale x 32 x i1> %0,
2631     <vscale x 32 x i8> %1,
2632     i8 %2,
2633     <vscale x 32 x i1> %0,
2634     iXLen %3)
2636   ret <vscale x 32 x i1> %a
2639 define <vscale x 1 x i1> @intrinsic_vmsgeu_maskedoff_mask_vx_nxv1i16_i16(<vscale x 1 x i1> %0, <vscale x 1 x i16> %1, i16 %2, iXLen %3) nounwind {
2640 ; CHECK-LABEL: intrinsic_vmsgeu_maskedoff_mask_vx_nxv1i16_i16:
2641 ; CHECK:       # %bb.0: # %entry
2642 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
2643 ; CHECK-NEXT:    vmsltu.vx v8, v8, a0
2644 ; CHECK-NEXT:    vmandn.mm v0, v0, v8
2645 ; CHECK-NEXT:    ret
2646 entry:
2647   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i16.i16(
2648     <vscale x 1 x i1> %0,
2649     <vscale x 1 x i16> %1,
2650     i16 %2,
2651     <vscale x 1 x i1> %0,
2652     iXLen %3)
2654   ret <vscale x 1 x i1> %a
2657 define <vscale x 2 x i1> @intrinsic_vmsgeu_maskedoff_mask_vx_nxv2i16_i16(<vscale x 2 x i1> %0, <vscale x 2 x i16> %1, i16 %2, iXLen %3) nounwind {
2658 ; CHECK-LABEL: intrinsic_vmsgeu_maskedoff_mask_vx_nxv2i16_i16:
2659 ; CHECK:       # %bb.0: # %entry
2660 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
2661 ; CHECK-NEXT:    vmsltu.vx v8, v8, a0
2662 ; CHECK-NEXT:    vmandn.mm v0, v0, v8
2663 ; CHECK-NEXT:    ret
2664 entry:
2665   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i16.i16(
2666     <vscale x 2 x i1> %0,
2667     <vscale x 2 x i16> %1,
2668     i16 %2,
2669     <vscale x 2 x i1> %0,
2670     iXLen %3)
2672   ret <vscale x 2 x i1> %a
2675 define <vscale x 4 x i1> @intrinsic_vmsgeu_maskedoff_mask_vx_nxv4i16_i16(<vscale x 4 x i1> %0, <vscale x 4 x i16> %1, i16 %2, iXLen %3) nounwind {
2676 ; CHECK-LABEL: intrinsic_vmsgeu_maskedoff_mask_vx_nxv4i16_i16:
2677 ; CHECK:       # %bb.0: # %entry
2678 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2679 ; CHECK-NEXT:    vmsltu.vx v8, v8, a0
2680 ; CHECK-NEXT:    vmandn.mm v0, v0, v8
2681 ; CHECK-NEXT:    ret
2682 entry:
2683   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i16.i16(
2684     <vscale x 4 x i1> %0,
2685     <vscale x 4 x i16> %1,
2686     i16 %2,
2687     <vscale x 4 x i1> %0,
2688     iXLen %3)
2690   ret <vscale x 4 x i1> %a
2693 define <vscale x 8 x i1> @intrinsic_vmsgeu_maskedoff_mask_vx_nxv8i16_i16(<vscale x 8 x i1> %0, <vscale x 8 x i16> %1, i16 %2, iXLen %3) nounwind {
2694 ; CHECK-LABEL: intrinsic_vmsgeu_maskedoff_mask_vx_nxv8i16_i16:
2695 ; CHECK:       # %bb.0: # %entry
2696 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
2697 ; CHECK-NEXT:    vmsltu.vx v10, v8, a0
2698 ; CHECK-NEXT:    vmandn.mm v0, v0, v10
2699 ; CHECK-NEXT:    ret
2700 entry:
2701   %a = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.mask.nxv8i16.i16(
2702     <vscale x 8 x i1> %0,
2703     <vscale x 8 x i16> %1,
2704     i16 %2,
2705     <vscale x 8 x i1> %0,
2706     iXLen %3)
2708   ret <vscale x 8 x i1> %a
2711 define <vscale x 16 x i1> @intrinsic_vmsgeu_maskedoff_mask_vx_nxv16i16_i16(<vscale x 16 x i1> %0, <vscale x 16 x i16> %1, i16 %2, iXLen %3) nounwind {
2712 ; CHECK-LABEL: intrinsic_vmsgeu_maskedoff_mask_vx_nxv16i16_i16:
2713 ; CHECK:       # %bb.0: # %entry
2714 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
2715 ; CHECK-NEXT:    vmsltu.vx v12, v8, a0
2716 ; CHECK-NEXT:    vmandn.mm v0, v0, v12
2717 ; CHECK-NEXT:    ret
2718 entry:
2719   %a = call <vscale x 16 x i1> @llvm.riscv.vmsgeu.mask.nxv16i16.i16(
2720     <vscale x 16 x i1> %0,
2721     <vscale x 16 x i16> %1,
2722     i16 %2,
2723     <vscale x 16 x i1> %0,
2724     iXLen %3)
2726   ret <vscale x 16 x i1> %a
2729 define <vscale x 1 x i1> @intrinsic_vmsgeu_maskedoff_mask_vx_nxv1i32_i32(<vscale x 1 x i1> %0, <vscale x 1 x i32> %1, i32 %2, iXLen %3) nounwind {
2730 ; CHECK-LABEL: intrinsic_vmsgeu_maskedoff_mask_vx_nxv1i32_i32:
2731 ; CHECK:       # %bb.0: # %entry
2732 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2733 ; CHECK-NEXT:    vmsltu.vx v8, v8, a0
2734 ; CHECK-NEXT:    vmandn.mm v0, v0, v8
2735 ; CHECK-NEXT:    ret
2736 entry:
2737   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i32.i32(
2738     <vscale x 1 x i1> %0,
2739     <vscale x 1 x i32> %1,
2740     i32 %2,
2741     <vscale x 1 x i1> %0,
2742     iXLen %3)
2744   ret <vscale x 1 x i1> %a
2747 define <vscale x 2 x i1> @intrinsic_vmsgeu_maskedoff_mask_vx_nxv2i32_i32(<vscale x 2 x i1> %0, <vscale x 2 x i32> %1, i32 %2, iXLen %3) nounwind {
2748 ; CHECK-LABEL: intrinsic_vmsgeu_maskedoff_mask_vx_nxv2i32_i32:
2749 ; CHECK:       # %bb.0: # %entry
2750 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
2751 ; CHECK-NEXT:    vmsltu.vx v8, v8, a0
2752 ; CHECK-NEXT:    vmandn.mm v0, v0, v8
2753 ; CHECK-NEXT:    ret
2754 entry:
2755   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i32.i32(
2756     <vscale x 2 x i1> %0,
2757     <vscale x 2 x i32> %1,
2758     i32 %2,
2759     <vscale x 2 x i1> %0,
2760     iXLen %3)
2762   ret <vscale x 2 x i1> %a
2765 define <vscale x 4 x i1> @intrinsic_vmsgeu_maskedoff_mask_vx_nxv4i32_i32(<vscale x 4 x i1> %0, <vscale x 4 x i32> %1, i32 %2, iXLen %3) nounwind {
2766 ; CHECK-LABEL: intrinsic_vmsgeu_maskedoff_mask_vx_nxv4i32_i32:
2767 ; CHECK:       # %bb.0: # %entry
2768 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
2769 ; CHECK-NEXT:    vmsltu.vx v10, v8, a0
2770 ; CHECK-NEXT:    vmandn.mm v0, v0, v10
2771 ; CHECK-NEXT:    ret
2772 entry:
2773   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i32.i32(
2774     <vscale x 4 x i1> %0,
2775     <vscale x 4 x i32> %1,
2776     i32 %2,
2777     <vscale x 4 x i1> %0,
2778     iXLen %3)
2780   ret <vscale x 4 x i1> %a
2783 define <vscale x 8 x i1> @intrinsic_vmsgeu_maskedoff_mask_vx_nxv8i32_i32(<vscale x 8 x i1> %0, <vscale x 8 x i32> %1, i32 %2, iXLen %3) nounwind {
2784 ; CHECK-LABEL: intrinsic_vmsgeu_maskedoff_mask_vx_nxv8i32_i32:
2785 ; CHECK:       # %bb.0: # %entry
2786 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
2787 ; CHECK-NEXT:    vmsltu.vx v12, v8, a0
2788 ; CHECK-NEXT:    vmandn.mm v0, v0, v12
2789 ; CHECK-NEXT:    ret
2790 entry:
2791   %a = call <vscale x 8 x i1> @llvm.riscv.vmsgeu.mask.nxv8i32.i32(
2792     <vscale x 8 x i1> %0,
2793     <vscale x 8 x i32> %1,
2794     i32 %2,
2795     <vscale x 8 x i1> %0,
2796     iXLen %3)
2798   ret <vscale x 8 x i1> %a
2801 define <vscale x 1 x i1> @intrinsic_vmsgeu_maskedoff_mask_vx_nxv1i64_i64(<vscale x 1 x i1> %0, <vscale x 1 x i64> %1, i64 %2, iXLen %3) nounwind {
2802 ; RV32-LABEL: intrinsic_vmsgeu_maskedoff_mask_vx_nxv1i64_i64:
2803 ; RV32:       # %bb.0: # %entry
2804 ; RV32-NEXT:    addi sp, sp, -16
2805 ; RV32-NEXT:    sw a1, 12(sp)
2806 ; RV32-NEXT:    sw a0, 8(sp)
2807 ; RV32-NEXT:    addi a0, sp, 8
2808 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, mu
2809 ; RV32-NEXT:    vlse64.v v9, (a0), zero
2810 ; RV32-NEXT:    vmsleu.vv v0, v9, v8, v0.t
2811 ; RV32-NEXT:    addi sp, sp, 16
2812 ; RV32-NEXT:    ret
2814 ; RV64-LABEL: intrinsic_vmsgeu_maskedoff_mask_vx_nxv1i64_i64:
2815 ; RV64:       # %bb.0: # %entry
2816 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
2817 ; RV64-NEXT:    vmsltu.vx v8, v8, a0
2818 ; RV64-NEXT:    vmandn.mm v0, v0, v8
2819 ; RV64-NEXT:    ret
2820 entry:
2821   %a = call <vscale x 1 x i1> @llvm.riscv.vmsgeu.mask.nxv1i64.i64(
2822     <vscale x 1 x i1> %0,
2823     <vscale x 1 x i64> %1,
2824     i64 %2,
2825     <vscale x 1 x i1> %0,
2826     iXLen %3)
2828   ret <vscale x 1 x i1> %a
2831 define <vscale x 2 x i1> @intrinsic_vmsgeu_maskedoff_mask_vx_nxv2i64_i64(<vscale x 2 x i1> %0, <vscale x 2 x i64> %1, i64 %2, iXLen %3) nounwind {
2832 ; RV32-LABEL: intrinsic_vmsgeu_maskedoff_mask_vx_nxv2i64_i64:
2833 ; RV32:       # %bb.0: # %entry
2834 ; RV32-NEXT:    addi sp, sp, -16
2835 ; RV32-NEXT:    sw a1, 12(sp)
2836 ; RV32-NEXT:    sw a0, 8(sp)
2837 ; RV32-NEXT:    addi a0, sp, 8
2838 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, mu
2839 ; RV32-NEXT:    vlse64.v v12, (a0), zero
2840 ; RV32-NEXT:    vmv1r.v v10, v0
2841 ; RV32-NEXT:    vmsleu.vv v10, v12, v8, v0.t
2842 ; RV32-NEXT:    vmv1r.v v0, v10
2843 ; RV32-NEXT:    addi sp, sp, 16
2844 ; RV32-NEXT:    ret
2846 ; RV64-LABEL: intrinsic_vmsgeu_maskedoff_mask_vx_nxv2i64_i64:
2847 ; RV64:       # %bb.0: # %entry
2848 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
2849 ; RV64-NEXT:    vmsltu.vx v10, v8, a0
2850 ; RV64-NEXT:    vmandn.mm v0, v0, v10
2851 ; RV64-NEXT:    ret
2852 entry:
2853   %a = call <vscale x 2 x i1> @llvm.riscv.vmsgeu.mask.nxv2i64.i64(
2854     <vscale x 2 x i1> %0,
2855     <vscale x 2 x i64> %1,
2856     i64 %2,
2857     <vscale x 2 x i1> %0,
2858     iXLen %3)
2860   ret <vscale x 2 x i1> %a
2863 define <vscale x 4 x i1> @intrinsic_vmsgeu_maskedoff_mask_vx_nxv4i64_i64(<vscale x 4 x i1> %0, <vscale x 4 x i64> %1, i64 %2, iXLen %3) nounwind {
2864 ; RV32-LABEL: intrinsic_vmsgeu_maskedoff_mask_vx_nxv4i64_i64:
2865 ; RV32:       # %bb.0: # %entry
2866 ; RV32-NEXT:    addi sp, sp, -16
2867 ; RV32-NEXT:    sw a1, 12(sp)
2868 ; RV32-NEXT:    sw a0, 8(sp)
2869 ; RV32-NEXT:    addi a0, sp, 8
2870 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, mu
2871 ; RV32-NEXT:    vlse64.v v16, (a0), zero
2872 ; RV32-NEXT:    vmv1r.v v12, v0
2873 ; RV32-NEXT:    vmsleu.vv v12, v16, v8, v0.t
2874 ; RV32-NEXT:    vmv1r.v v0, v12
2875 ; RV32-NEXT:    addi sp, sp, 16
2876 ; RV32-NEXT:    ret
2878 ; RV64-LABEL: intrinsic_vmsgeu_maskedoff_mask_vx_nxv4i64_i64:
2879 ; RV64:       # %bb.0: # %entry
2880 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
2881 ; RV64-NEXT:    vmsltu.vx v12, v8, a0
2882 ; RV64-NEXT:    vmandn.mm v0, v0, v12
2883 ; RV64-NEXT:    ret
2884 entry:
2885   %a = call <vscale x 4 x i1> @llvm.riscv.vmsgeu.mask.nxv4i64.i64(
2886     <vscale x 4 x i1> %0,
2887     <vscale x 4 x i64> %1,
2888     i64 %2,
2889     <vscale x 4 x i1> %0,
2890     iXLen %3)
2892   ret <vscale x 4 x i1> %a