[Transforms] Silence a warning in SROA.cpp (NFC)
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vmsne.ll
blobed41a18dcc8d3a7342223674034409f78e460823
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.vmsne.nxv1i8(
8   <vscale x 1 x i8>,
9   <vscale x 1 x i8>,
10   iXLen);
12 define <vscale x 1 x i1> @intrinsic_vmsne_vv_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, iXLen %2) nounwind {
13 ; CHECK-LABEL: intrinsic_vmsne_vv_nxv1i8_nxv1i8:
14 ; CHECK:       # %bb.0: # %entry
15 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
16 ; CHECK-NEXT:    vmsne.vv v0, v8, v9
17 ; CHECK-NEXT:    ret
18 entry:
19   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.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.vmsne.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_vmsne_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_vmsne_mask_vv_nxv1i8_nxv1i8:
36 ; CHECK:       # %bb.0: # %entry
37 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, mu
38 ; CHECK-NEXT:    vmv1r.v v11, v0
39 ; CHECK-NEXT:    vmsne.vv v0, v8, v9
40 ; CHECK-NEXT:    vmsne.vv v11, v9, v10, v0.t
41 ; CHECK-NEXT:    vmv1r.v v0, v11
42 ; CHECK-NEXT:    ret
43 entry:
44   %mask = call <vscale x 1 x i1> @llvm.riscv.vmsne.nxv1i8(
45     <vscale x 1 x i8> %1,
46     <vscale x 1 x i8> %2,
47     iXLen %4)
48   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.mask.nxv1i8(
49     <vscale x 1 x i1> %0,
50     <vscale x 1 x i8> %2,
51     <vscale x 1 x i8> %3,
52     <vscale x 1 x i1> %mask,
53     iXLen %4)
55   ret <vscale x 1 x i1> %a
58 declare <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i8(
59   <vscale x 2 x i8>,
60   <vscale x 2 x i8>,
61   iXLen);
63 define <vscale x 2 x i1> @intrinsic_vmsne_vv_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, iXLen %2) nounwind {
64 ; CHECK-LABEL: intrinsic_vmsne_vv_nxv2i8_nxv2i8:
65 ; CHECK:       # %bb.0: # %entry
66 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
67 ; CHECK-NEXT:    vmsne.vv v0, v8, v9
68 ; CHECK-NEXT:    ret
69 entry:
70   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i8(
71     <vscale x 2 x i8> %0,
72     <vscale x 2 x i8> %1,
73     iXLen %2)
75   ret <vscale x 2 x i1> %a
78 declare <vscale x 2 x i1> @llvm.riscv.vmsne.mask.nxv2i8(
79   <vscale x 2 x i1>,
80   <vscale x 2 x i8>,
81   <vscale x 2 x i8>,
82   <vscale x 2 x i1>,
83   iXLen);
85 define <vscale x 2 x i1> @intrinsic_vmsne_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 {
86 ; CHECK-LABEL: intrinsic_vmsne_mask_vv_nxv2i8_nxv2i8:
87 ; CHECK:       # %bb.0: # %entry
88 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, mu
89 ; CHECK-NEXT:    vmv1r.v v11, v0
90 ; CHECK-NEXT:    vmsne.vv v0, v8, v9
91 ; CHECK-NEXT:    vmsne.vv v11, v9, v10, v0.t
92 ; CHECK-NEXT:    vmv1r.v v0, v11
93 ; CHECK-NEXT:    ret
94 entry:
95   %mask = call <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i8(
96     <vscale x 2 x i8> %1,
97     <vscale x 2 x i8> %2,
98     iXLen %4)
99   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.mask.nxv2i8(
100     <vscale x 2 x i1> %0,
101     <vscale x 2 x i8> %2,
102     <vscale x 2 x i8> %3,
103     <vscale x 2 x i1> %mask,
104     iXLen %4)
106   ret <vscale x 2 x i1> %a
109 declare <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i8(
110   <vscale x 4 x i8>,
111   <vscale x 4 x i8>,
112   iXLen);
114 define <vscale x 4 x i1> @intrinsic_vmsne_vv_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, iXLen %2) nounwind {
115 ; CHECK-LABEL: intrinsic_vmsne_vv_nxv4i8_nxv4i8:
116 ; CHECK:       # %bb.0: # %entry
117 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
118 ; CHECK-NEXT:    vmsne.vv v0, v8, v9
119 ; CHECK-NEXT:    ret
120 entry:
121   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i8(
122     <vscale x 4 x i8> %0,
123     <vscale x 4 x i8> %1,
124     iXLen %2)
126   ret <vscale x 4 x i1> %a
129 declare <vscale x 4 x i1> @llvm.riscv.vmsne.mask.nxv4i8(
130   <vscale x 4 x i1>,
131   <vscale x 4 x i8>,
132   <vscale x 4 x i8>,
133   <vscale x 4 x i1>,
134   iXLen);
136 define <vscale x 4 x i1> @intrinsic_vmsne_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 {
137 ; CHECK-LABEL: intrinsic_vmsne_mask_vv_nxv4i8_nxv4i8:
138 ; CHECK:       # %bb.0: # %entry
139 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, mu
140 ; CHECK-NEXT:    vmv1r.v v11, v0
141 ; CHECK-NEXT:    vmsne.vv v0, v8, v9
142 ; CHECK-NEXT:    vmsne.vv v11, v9, v10, v0.t
143 ; CHECK-NEXT:    vmv1r.v v0, v11
144 ; CHECK-NEXT:    ret
145 entry:
146   %mask = call <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i8(
147     <vscale x 4 x i8> %1,
148     <vscale x 4 x i8> %2,
149     iXLen %4)
150   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.mask.nxv4i8(
151     <vscale x 4 x i1> %0,
152     <vscale x 4 x i8> %2,
153     <vscale x 4 x i8> %3,
154     <vscale x 4 x i1> %mask,
155     iXLen %4)
157   ret <vscale x 4 x i1> %a
160 declare <vscale x 8 x i1> @llvm.riscv.vmsne.nxv8i8(
161   <vscale x 8 x i8>,
162   <vscale x 8 x i8>,
163   iXLen);
165 define <vscale x 8 x i1> @intrinsic_vmsne_vv_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, iXLen %2) nounwind {
166 ; CHECK-LABEL: intrinsic_vmsne_vv_nxv8i8_nxv8i8:
167 ; CHECK:       # %bb.0: # %entry
168 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
169 ; CHECK-NEXT:    vmsne.vv v0, v8, v9
170 ; CHECK-NEXT:    ret
171 entry:
172   %a = call <vscale x 8 x i1> @llvm.riscv.vmsne.nxv8i8(
173     <vscale x 8 x i8> %0,
174     <vscale x 8 x i8> %1,
175     iXLen %2)
177   ret <vscale x 8 x i1> %a
180 declare <vscale x 8 x i1> @llvm.riscv.vmsne.mask.nxv8i8(
181   <vscale x 8 x i1>,
182   <vscale x 8 x i8>,
183   <vscale x 8 x i8>,
184   <vscale x 8 x i1>,
185   iXLen);
187 define <vscale x 8 x i1> @intrinsic_vmsne_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 {
188 ; CHECK-LABEL: intrinsic_vmsne_mask_vv_nxv8i8_nxv8i8:
189 ; CHECK:       # %bb.0: # %entry
190 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, mu
191 ; CHECK-NEXT:    vmv1r.v v11, v0
192 ; CHECK-NEXT:    vmsne.vv v0, v8, v9
193 ; CHECK-NEXT:    vmsne.vv v11, v9, v10, v0.t
194 ; CHECK-NEXT:    vmv.v.v v0, v11
195 ; CHECK-NEXT:    ret
196 entry:
197   %mask = call <vscale x 8 x i1> @llvm.riscv.vmsne.nxv8i8(
198     <vscale x 8 x i8> %1,
199     <vscale x 8 x i8> %2,
200     iXLen %4)
201   %a = call <vscale x 8 x i1> @llvm.riscv.vmsne.mask.nxv8i8(
202     <vscale x 8 x i1> %0,
203     <vscale x 8 x i8> %2,
204     <vscale x 8 x i8> %3,
205     <vscale x 8 x i1> %mask,
206     iXLen %4)
208   ret <vscale x 8 x i1> %a
211 declare <vscale x 16 x i1> @llvm.riscv.vmsne.nxv16i8(
212   <vscale x 16 x i8>,
213   <vscale x 16 x i8>,
214   iXLen);
216 define <vscale x 16 x i1> @intrinsic_vmsne_vv_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, iXLen %2) nounwind {
217 ; CHECK-LABEL: intrinsic_vmsne_vv_nxv16i8_nxv16i8:
218 ; CHECK:       # %bb.0: # %entry
219 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
220 ; CHECK-NEXT:    vmsne.vv v0, v8, v10
221 ; CHECK-NEXT:    ret
222 entry:
223   %a = call <vscale x 16 x i1> @llvm.riscv.vmsne.nxv16i8(
224     <vscale x 16 x i8> %0,
225     <vscale x 16 x i8> %1,
226     iXLen %2)
228   ret <vscale x 16 x i1> %a
231 declare <vscale x 16 x i1> @llvm.riscv.vmsne.mask.nxv16i8(
232   <vscale x 16 x i1>,
233   <vscale x 16 x i8>,
234   <vscale x 16 x i8>,
235   <vscale x 16 x i1>,
236   iXLen);
238 define <vscale x 16 x i1> @intrinsic_vmsne_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 {
239 ; CHECK-LABEL: intrinsic_vmsne_mask_vv_nxv16i8_nxv16i8:
240 ; CHECK:       # %bb.0: # %entry
241 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, mu
242 ; CHECK-NEXT:    vmv1r.v v14, v0
243 ; CHECK-NEXT:    vmsne.vv v0, v8, v10
244 ; CHECK-NEXT:    vmsne.vv v14, v10, v12, v0.t
245 ; CHECK-NEXT:    vmv1r.v v0, v14
246 ; CHECK-NEXT:    ret
247 entry:
248   %mask = call <vscale x 16 x i1> @llvm.riscv.vmsne.nxv16i8(
249     <vscale x 16 x i8> %1,
250     <vscale x 16 x i8> %2,
251     iXLen %4)
252   %a = call <vscale x 16 x i1> @llvm.riscv.vmsne.mask.nxv16i8(
253     <vscale x 16 x i1> %0,
254     <vscale x 16 x i8> %2,
255     <vscale x 16 x i8> %3,
256     <vscale x 16 x i1> %mask,
257     iXLen %4)
259   ret <vscale x 16 x i1> %a
262 declare <vscale x 32 x i1> @llvm.riscv.vmsne.nxv32i8(
263   <vscale x 32 x i8>,
264   <vscale x 32 x i8>,
265   iXLen);
267 define <vscale x 32 x i1> @intrinsic_vmsne_vv_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, iXLen %2) nounwind {
268 ; CHECK-LABEL: intrinsic_vmsne_vv_nxv32i8_nxv32i8:
269 ; CHECK:       # %bb.0: # %entry
270 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
271 ; CHECK-NEXT:    vmsne.vv v0, v8, v12
272 ; CHECK-NEXT:    ret
273 entry:
274   %a = call <vscale x 32 x i1> @llvm.riscv.vmsne.nxv32i8(
275     <vscale x 32 x i8> %0,
276     <vscale x 32 x i8> %1,
277     iXLen %2)
279   ret <vscale x 32 x i1> %a
282 declare <vscale x 32 x i1> @llvm.riscv.vmsne.mask.nxv32i8(
283   <vscale x 32 x i1>,
284   <vscale x 32 x i8>,
285   <vscale x 32 x i8>,
286   <vscale x 32 x i1>,
287   iXLen);
289 define <vscale x 32 x i1> @intrinsic_vmsne_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 {
290 ; CHECK-LABEL: intrinsic_vmsne_mask_vv_nxv32i8_nxv32i8:
291 ; CHECK:       # %bb.0: # %entry
292 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, mu
293 ; CHECK-NEXT:    vmv1r.v v20, v0
294 ; CHECK-NEXT:    vmsne.vv v0, v8, v12
295 ; CHECK-NEXT:    vmsne.vv v20, v12, v16, v0.t
296 ; CHECK-NEXT:    vmv1r.v v0, v20
297 ; CHECK-NEXT:    ret
298 entry:
299   %mask = call <vscale x 32 x i1> @llvm.riscv.vmsne.nxv32i8(
300     <vscale x 32 x i8> %1,
301     <vscale x 32 x i8> %2,
302     iXLen %4)
303   %a = call <vscale x 32 x i1> @llvm.riscv.vmsne.mask.nxv32i8(
304     <vscale x 32 x i1> %0,
305     <vscale x 32 x i8> %2,
306     <vscale x 32 x i8> %3,
307     <vscale x 32 x i1> %mask,
308     iXLen %4)
310   ret <vscale x 32 x i1> %a
313 declare <vscale x 1 x i1> @llvm.riscv.vmsne.nxv1i16(
314   <vscale x 1 x i16>,
315   <vscale x 1 x i16>,
316   iXLen);
318 define <vscale x 1 x i1> @intrinsic_vmsne_vv_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, iXLen %2) nounwind {
319 ; CHECK-LABEL: intrinsic_vmsne_vv_nxv1i16_nxv1i16:
320 ; CHECK:       # %bb.0: # %entry
321 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
322 ; CHECK-NEXT:    vmsne.vv v0, v8, v9
323 ; CHECK-NEXT:    ret
324 entry:
325   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.nxv1i16(
326     <vscale x 1 x i16> %0,
327     <vscale x 1 x i16> %1,
328     iXLen %2)
330   ret <vscale x 1 x i1> %a
333 declare <vscale x 1 x i1> @llvm.riscv.vmsne.mask.nxv1i16(
334   <vscale x 1 x i1>,
335   <vscale x 1 x i16>,
336   <vscale x 1 x i16>,
337   <vscale x 1 x i1>,
338   iXLen);
340 define <vscale x 1 x i1> @intrinsic_vmsne_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 {
341 ; CHECK-LABEL: intrinsic_vmsne_mask_vv_nxv1i16_nxv1i16:
342 ; CHECK:       # %bb.0: # %entry
343 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu
344 ; CHECK-NEXT:    vmv1r.v v11, v0
345 ; CHECK-NEXT:    vmsne.vv v0, v8, v9
346 ; CHECK-NEXT:    vmsne.vv v11, v9, v10, v0.t
347 ; CHECK-NEXT:    vmv1r.v v0, v11
348 ; CHECK-NEXT:    ret
349 entry:
350   %mask = call <vscale x 1 x i1> @llvm.riscv.vmsne.nxv1i16(
351     <vscale x 1 x i16> %1,
352     <vscale x 1 x i16> %2,
353     iXLen %4)
354   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.mask.nxv1i16(
355     <vscale x 1 x i1> %0,
356     <vscale x 1 x i16> %2,
357     <vscale x 1 x i16> %3,
358     <vscale x 1 x i1> %mask,
359     iXLen %4)
361   ret <vscale x 1 x i1> %a
364 declare <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i16(
365   <vscale x 2 x i16>,
366   <vscale x 2 x i16>,
367   iXLen);
369 define <vscale x 2 x i1> @intrinsic_vmsne_vv_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, iXLen %2) nounwind {
370 ; CHECK-LABEL: intrinsic_vmsne_vv_nxv2i16_nxv2i16:
371 ; CHECK:       # %bb.0: # %entry
372 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
373 ; CHECK-NEXT:    vmsne.vv v0, v8, v9
374 ; CHECK-NEXT:    ret
375 entry:
376   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i16(
377     <vscale x 2 x i16> %0,
378     <vscale x 2 x i16> %1,
379     iXLen %2)
381   ret <vscale x 2 x i1> %a
384 declare <vscale x 2 x i1> @llvm.riscv.vmsne.mask.nxv2i16(
385   <vscale x 2 x i1>,
386   <vscale x 2 x i16>,
387   <vscale x 2 x i16>,
388   <vscale x 2 x i1>,
389   iXLen);
391 define <vscale x 2 x i1> @intrinsic_vmsne_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 {
392 ; CHECK-LABEL: intrinsic_vmsne_mask_vv_nxv2i16_nxv2i16:
393 ; CHECK:       # %bb.0: # %entry
394 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu
395 ; CHECK-NEXT:    vmv1r.v v11, v0
396 ; CHECK-NEXT:    vmsne.vv v0, v8, v9
397 ; CHECK-NEXT:    vmsne.vv v11, v9, v10, v0.t
398 ; CHECK-NEXT:    vmv1r.v v0, v11
399 ; CHECK-NEXT:    ret
400 entry:
401   %mask = call <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i16(
402     <vscale x 2 x i16> %1,
403     <vscale x 2 x i16> %2,
404     iXLen %4)
405   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.mask.nxv2i16(
406     <vscale x 2 x i1> %0,
407     <vscale x 2 x i16> %2,
408     <vscale x 2 x i16> %3,
409     <vscale x 2 x i1> %mask,
410     iXLen %4)
412   ret <vscale x 2 x i1> %a
415 declare <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i16(
416   <vscale x 4 x i16>,
417   <vscale x 4 x i16>,
418   iXLen);
420 define <vscale x 4 x i1> @intrinsic_vmsne_vv_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, iXLen %2) nounwind {
421 ; CHECK-LABEL: intrinsic_vmsne_vv_nxv4i16_nxv4i16:
422 ; CHECK:       # %bb.0: # %entry
423 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
424 ; CHECK-NEXT:    vmsne.vv v0, v8, v9
425 ; CHECK-NEXT:    ret
426 entry:
427   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i16(
428     <vscale x 4 x i16> %0,
429     <vscale x 4 x i16> %1,
430     iXLen %2)
432   ret <vscale x 4 x i1> %a
435 declare <vscale x 4 x i1> @llvm.riscv.vmsne.mask.nxv4i16(
436   <vscale x 4 x i1>,
437   <vscale x 4 x i16>,
438   <vscale x 4 x i16>,
439   <vscale x 4 x i1>,
440   iXLen);
442 define <vscale x 4 x i1> @intrinsic_vmsne_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 {
443 ; CHECK-LABEL: intrinsic_vmsne_mask_vv_nxv4i16_nxv4i16:
444 ; CHECK:       # %bb.0: # %entry
445 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu
446 ; CHECK-NEXT:    vmv1r.v v11, v0
447 ; CHECK-NEXT:    vmsne.vv v0, v8, v9
448 ; CHECK-NEXT:    vmsne.vv v11, v9, v10, v0.t
449 ; CHECK-NEXT:    vmv.v.v v0, v11
450 ; CHECK-NEXT:    ret
451 entry:
452   %mask = call <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i16(
453     <vscale x 4 x i16> %1,
454     <vscale x 4 x i16> %2,
455     iXLen %4)
456   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.mask.nxv4i16(
457     <vscale x 4 x i1> %0,
458     <vscale x 4 x i16> %2,
459     <vscale x 4 x i16> %3,
460     <vscale x 4 x i1> %mask,
461     iXLen %4)
463   ret <vscale x 4 x i1> %a
466 declare <vscale x 8 x i1> @llvm.riscv.vmsne.nxv8i16(
467   <vscale x 8 x i16>,
468   <vscale x 8 x i16>,
469   iXLen);
471 define <vscale x 8 x i1> @intrinsic_vmsne_vv_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, iXLen %2) nounwind {
472 ; CHECK-LABEL: intrinsic_vmsne_vv_nxv8i16_nxv8i16:
473 ; CHECK:       # %bb.0: # %entry
474 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
475 ; CHECK-NEXT:    vmsne.vv v0, v8, v10
476 ; CHECK-NEXT:    ret
477 entry:
478   %a = call <vscale x 8 x i1> @llvm.riscv.vmsne.nxv8i16(
479     <vscale x 8 x i16> %0,
480     <vscale x 8 x i16> %1,
481     iXLen %2)
483   ret <vscale x 8 x i1> %a
486 declare <vscale x 8 x i1> @llvm.riscv.vmsne.mask.nxv8i16(
487   <vscale x 8 x i1>,
488   <vscale x 8 x i16>,
489   <vscale x 8 x i16>,
490   <vscale x 8 x i1>,
491   iXLen);
493 define <vscale x 8 x i1> @intrinsic_vmsne_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 {
494 ; CHECK-LABEL: intrinsic_vmsne_mask_vv_nxv8i16_nxv8i16:
495 ; CHECK:       # %bb.0: # %entry
496 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu
497 ; CHECK-NEXT:    vmv1r.v v14, v0
498 ; CHECK-NEXT:    vmsne.vv v0, v8, v10
499 ; CHECK-NEXT:    vmsne.vv v14, v10, v12, v0.t
500 ; CHECK-NEXT:    vmv1r.v v0, v14
501 ; CHECK-NEXT:    ret
502 entry:
503   %mask = call <vscale x 8 x i1> @llvm.riscv.vmsne.nxv8i16(
504     <vscale x 8 x i16> %1,
505     <vscale x 8 x i16> %2,
506     iXLen %4)
507   %a = call <vscale x 8 x i1> @llvm.riscv.vmsne.mask.nxv8i16(
508     <vscale x 8 x i1> %0,
509     <vscale x 8 x i16> %2,
510     <vscale x 8 x i16> %3,
511     <vscale x 8 x i1> %mask,
512     iXLen %4)
514   ret <vscale x 8 x i1> %a
517 declare <vscale x 16 x i1> @llvm.riscv.vmsne.nxv16i16(
518   <vscale x 16 x i16>,
519   <vscale x 16 x i16>,
520   iXLen);
522 define <vscale x 16 x i1> @intrinsic_vmsne_vv_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, iXLen %2) nounwind {
523 ; CHECK-LABEL: intrinsic_vmsne_vv_nxv16i16_nxv16i16:
524 ; CHECK:       # %bb.0: # %entry
525 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
526 ; CHECK-NEXT:    vmsne.vv v0, v8, v12
527 ; CHECK-NEXT:    ret
528 entry:
529   %a = call <vscale x 16 x i1> @llvm.riscv.vmsne.nxv16i16(
530     <vscale x 16 x i16> %0,
531     <vscale x 16 x i16> %1,
532     iXLen %2)
534   ret <vscale x 16 x i1> %a
537 declare <vscale x 16 x i1> @llvm.riscv.vmsne.mask.nxv16i16(
538   <vscale x 16 x i1>,
539   <vscale x 16 x i16>,
540   <vscale x 16 x i16>,
541   <vscale x 16 x i1>,
542   iXLen);
544 define <vscale x 16 x i1> @intrinsic_vmsne_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 {
545 ; CHECK-LABEL: intrinsic_vmsne_mask_vv_nxv16i16_nxv16i16:
546 ; CHECK:       # %bb.0: # %entry
547 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu
548 ; CHECK-NEXT:    vmv1r.v v20, v0
549 ; CHECK-NEXT:    vmsne.vv v0, v8, v12
550 ; CHECK-NEXT:    vmsne.vv v20, v12, v16, v0.t
551 ; CHECK-NEXT:    vmv1r.v v0, v20
552 ; CHECK-NEXT:    ret
553 entry:
554   %mask = call <vscale x 16 x i1> @llvm.riscv.vmsne.nxv16i16(
555     <vscale x 16 x i16> %1,
556     <vscale x 16 x i16> %2,
557     iXLen %4)
558   %a = call <vscale x 16 x i1> @llvm.riscv.vmsne.mask.nxv16i16(
559     <vscale x 16 x i1> %0,
560     <vscale x 16 x i16> %2,
561     <vscale x 16 x i16> %3,
562     <vscale x 16 x i1> %mask,
563     iXLen %4)
565   ret <vscale x 16 x i1> %a
568 declare <vscale x 1 x i1> @llvm.riscv.vmsne.nxv1i32(
569   <vscale x 1 x i32>,
570   <vscale x 1 x i32>,
571   iXLen);
573 define <vscale x 1 x i1> @intrinsic_vmsne_vv_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, iXLen %2) nounwind {
574 ; CHECK-LABEL: intrinsic_vmsne_vv_nxv1i32_nxv1i32:
575 ; CHECK:       # %bb.0: # %entry
576 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
577 ; CHECK-NEXT:    vmsne.vv v0, v8, v9
578 ; CHECK-NEXT:    ret
579 entry:
580   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.nxv1i32(
581     <vscale x 1 x i32> %0,
582     <vscale x 1 x i32> %1,
583     iXLen %2)
585   ret <vscale x 1 x i1> %a
588 declare <vscale x 1 x i1> @llvm.riscv.vmsne.mask.nxv1i32(
589   <vscale x 1 x i1>,
590   <vscale x 1 x i32>,
591   <vscale x 1 x i32>,
592   <vscale x 1 x i1>,
593   iXLen);
595 define <vscale x 1 x i1> @intrinsic_vmsne_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 {
596 ; CHECK-LABEL: intrinsic_vmsne_mask_vv_nxv1i32_nxv1i32:
597 ; CHECK:       # %bb.0: # %entry
598 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu
599 ; CHECK-NEXT:    vmv1r.v v11, v0
600 ; CHECK-NEXT:    vmsne.vv v0, v8, v9
601 ; CHECK-NEXT:    vmsne.vv v11, v9, v10, v0.t
602 ; CHECK-NEXT:    vmv1r.v v0, v11
603 ; CHECK-NEXT:    ret
604 entry:
605   %mask = call <vscale x 1 x i1> @llvm.riscv.vmsne.nxv1i32(
606     <vscale x 1 x i32> %1,
607     <vscale x 1 x i32> %2,
608     iXLen %4)
609   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.mask.nxv1i32(
610     <vscale x 1 x i1> %0,
611     <vscale x 1 x i32> %2,
612     <vscale x 1 x i32> %3,
613     <vscale x 1 x i1> %mask,
614     iXLen %4)
616   ret <vscale x 1 x i1> %a
619 declare <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i32(
620   <vscale x 2 x i32>,
621   <vscale x 2 x i32>,
622   iXLen);
624 define <vscale x 2 x i1> @intrinsic_vmsne_vv_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, iXLen %2) nounwind {
625 ; CHECK-LABEL: intrinsic_vmsne_vv_nxv2i32_nxv2i32:
626 ; CHECK:       # %bb.0: # %entry
627 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
628 ; CHECK-NEXT:    vmsne.vv v0, v8, v9
629 ; CHECK-NEXT:    ret
630 entry:
631   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i32(
632     <vscale x 2 x i32> %0,
633     <vscale x 2 x i32> %1,
634     iXLen %2)
636   ret <vscale x 2 x i1> %a
639 declare <vscale x 2 x i1> @llvm.riscv.vmsne.mask.nxv2i32(
640   <vscale x 2 x i1>,
641   <vscale x 2 x i32>,
642   <vscale x 2 x i32>,
643   <vscale x 2 x i1>,
644   iXLen);
646 define <vscale x 2 x i1> @intrinsic_vmsne_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 {
647 ; CHECK-LABEL: intrinsic_vmsne_mask_vv_nxv2i32_nxv2i32:
648 ; CHECK:       # %bb.0: # %entry
649 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu
650 ; CHECK-NEXT:    vmv1r.v v11, v0
651 ; CHECK-NEXT:    vmsne.vv v0, v8, v9
652 ; CHECK-NEXT:    vmsne.vv v11, v9, v10, v0.t
653 ; CHECK-NEXT:    vmv.v.v v0, v11
654 ; CHECK-NEXT:    ret
655 entry:
656   %mask = call <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i32(
657     <vscale x 2 x i32> %1,
658     <vscale x 2 x i32> %2,
659     iXLen %4)
660   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.mask.nxv2i32(
661     <vscale x 2 x i1> %0,
662     <vscale x 2 x i32> %2,
663     <vscale x 2 x i32> %3,
664     <vscale x 2 x i1> %mask,
665     iXLen %4)
667   ret <vscale x 2 x i1> %a
670 declare <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i32(
671   <vscale x 4 x i32>,
672   <vscale x 4 x i32>,
673   iXLen);
675 define <vscale x 4 x i1> @intrinsic_vmsne_vv_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, iXLen %2) nounwind {
676 ; CHECK-LABEL: intrinsic_vmsne_vv_nxv4i32_nxv4i32:
677 ; CHECK:       # %bb.0: # %entry
678 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
679 ; CHECK-NEXT:    vmsne.vv v0, v8, v10
680 ; CHECK-NEXT:    ret
681 entry:
682   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i32(
683     <vscale x 4 x i32> %0,
684     <vscale x 4 x i32> %1,
685     iXLen %2)
687   ret <vscale x 4 x i1> %a
690 declare <vscale x 4 x i1> @llvm.riscv.vmsne.mask.nxv4i32(
691   <vscale x 4 x i1>,
692   <vscale x 4 x i32>,
693   <vscale x 4 x i32>,
694   <vscale x 4 x i1>,
695   iXLen);
697 define <vscale x 4 x i1> @intrinsic_vmsne_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 {
698 ; CHECK-LABEL: intrinsic_vmsne_mask_vv_nxv4i32_nxv4i32:
699 ; CHECK:       # %bb.0: # %entry
700 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu
701 ; CHECK-NEXT:    vmv1r.v v14, v0
702 ; CHECK-NEXT:    vmsne.vv v0, v8, v10
703 ; CHECK-NEXT:    vmsne.vv v14, v10, v12, v0.t
704 ; CHECK-NEXT:    vmv1r.v v0, v14
705 ; CHECK-NEXT:    ret
706 entry:
707   %mask = call <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i32(
708     <vscale x 4 x i32> %1,
709     <vscale x 4 x i32> %2,
710     iXLen %4)
711   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.mask.nxv4i32(
712     <vscale x 4 x i1> %0,
713     <vscale x 4 x i32> %2,
714     <vscale x 4 x i32> %3,
715     <vscale x 4 x i1> %mask,
716     iXLen %4)
718   ret <vscale x 4 x i1> %a
721 declare <vscale x 8 x i1> @llvm.riscv.vmsne.nxv8i32(
722   <vscale x 8 x i32>,
723   <vscale x 8 x i32>,
724   iXLen);
726 define <vscale x 8 x i1> @intrinsic_vmsne_vv_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, iXLen %2) nounwind {
727 ; CHECK-LABEL: intrinsic_vmsne_vv_nxv8i32_nxv8i32:
728 ; CHECK:       # %bb.0: # %entry
729 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
730 ; CHECK-NEXT:    vmsne.vv v0, v8, v12
731 ; CHECK-NEXT:    ret
732 entry:
733   %a = call <vscale x 8 x i1> @llvm.riscv.vmsne.nxv8i32(
734     <vscale x 8 x i32> %0,
735     <vscale x 8 x i32> %1,
736     iXLen %2)
738   ret <vscale x 8 x i1> %a
741 declare <vscale x 8 x i1> @llvm.riscv.vmsne.mask.nxv8i32(
742   <vscale x 8 x i1>,
743   <vscale x 8 x i32>,
744   <vscale x 8 x i32>,
745   <vscale x 8 x i1>,
746   iXLen);
748 define <vscale x 8 x i1> @intrinsic_vmsne_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 {
749 ; CHECK-LABEL: intrinsic_vmsne_mask_vv_nxv8i32_nxv8i32:
750 ; CHECK:       # %bb.0: # %entry
751 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu
752 ; CHECK-NEXT:    vmv1r.v v20, v0
753 ; CHECK-NEXT:    vmsne.vv v0, v8, v12
754 ; CHECK-NEXT:    vmsne.vv v20, v12, v16, v0.t
755 ; CHECK-NEXT:    vmv1r.v v0, v20
756 ; CHECK-NEXT:    ret
757 entry:
758   %mask = call <vscale x 8 x i1> @llvm.riscv.vmsne.nxv8i32(
759     <vscale x 8 x i32> %1,
760     <vscale x 8 x i32> %2,
761     iXLen %4)
762   %a = call <vscale x 8 x i1> @llvm.riscv.vmsne.mask.nxv8i32(
763     <vscale x 8 x i1> %0,
764     <vscale x 8 x i32> %2,
765     <vscale x 8 x i32> %3,
766     <vscale x 8 x i1> %mask,
767     iXLen %4)
769   ret <vscale x 8 x i1> %a
772 declare <vscale x 1 x i1> @llvm.riscv.vmsne.nxv1i64(
773   <vscale x 1 x i64>,
774   <vscale x 1 x i64>,
775   iXLen);
777 define <vscale x 1 x i1> @intrinsic_vmsne_vv_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, iXLen %2) nounwind {
778 ; CHECK-LABEL: intrinsic_vmsne_vv_nxv1i64_nxv1i64:
779 ; CHECK:       # %bb.0: # %entry
780 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
781 ; CHECK-NEXT:    vmsne.vv v0, v8, v9
782 ; CHECK-NEXT:    ret
783 entry:
784   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.nxv1i64(
785     <vscale x 1 x i64> %0,
786     <vscale x 1 x i64> %1,
787     iXLen %2)
789   ret <vscale x 1 x i1> %a
792 declare <vscale x 1 x i1> @llvm.riscv.vmsne.mask.nxv1i64(
793   <vscale x 1 x i1>,
794   <vscale x 1 x i64>,
795   <vscale x 1 x i64>,
796   <vscale x 1 x i1>,
797   iXLen);
799 define <vscale x 1 x i1> @intrinsic_vmsne_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 {
800 ; CHECK-LABEL: intrinsic_vmsne_mask_vv_nxv1i64_nxv1i64:
801 ; CHECK:       # %bb.0: # %entry
802 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu
803 ; CHECK-NEXT:    vmv1r.v v11, v0
804 ; CHECK-NEXT:    vmsne.vv v0, v8, v9
805 ; CHECK-NEXT:    vmsne.vv v11, v9, v10, v0.t
806 ; CHECK-NEXT:    vmv.v.v v0, v11
807 ; CHECK-NEXT:    ret
808 entry:
809   %mask = call <vscale x 1 x i1> @llvm.riscv.vmsne.nxv1i64(
810     <vscale x 1 x i64> %1,
811     <vscale x 1 x i64> %2,
812     iXLen %4)
813   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.mask.nxv1i64(
814     <vscale x 1 x i1> %0,
815     <vscale x 1 x i64> %2,
816     <vscale x 1 x i64> %3,
817     <vscale x 1 x i1> %mask,
818     iXLen %4)
820   ret <vscale x 1 x i1> %a
823 declare <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i64(
824   <vscale x 2 x i64>,
825   <vscale x 2 x i64>,
826   iXLen);
828 define <vscale x 2 x i1> @intrinsic_vmsne_vv_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, iXLen %2) nounwind {
829 ; CHECK-LABEL: intrinsic_vmsne_vv_nxv2i64_nxv2i64:
830 ; CHECK:       # %bb.0: # %entry
831 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
832 ; CHECK-NEXT:    vmsne.vv v0, v8, v10
833 ; CHECK-NEXT:    ret
834 entry:
835   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i64(
836     <vscale x 2 x i64> %0,
837     <vscale x 2 x i64> %1,
838     iXLen %2)
840   ret <vscale x 2 x i1> %a
843 declare <vscale x 2 x i1> @llvm.riscv.vmsne.mask.nxv2i64(
844   <vscale x 2 x i1>,
845   <vscale x 2 x i64>,
846   <vscale x 2 x i64>,
847   <vscale x 2 x i1>,
848   iXLen);
850 define <vscale x 2 x i1> @intrinsic_vmsne_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 {
851 ; CHECK-LABEL: intrinsic_vmsne_mask_vv_nxv2i64_nxv2i64:
852 ; CHECK:       # %bb.0: # %entry
853 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu
854 ; CHECK-NEXT:    vmv1r.v v14, v0
855 ; CHECK-NEXT:    vmsne.vv v0, v8, v10
856 ; CHECK-NEXT:    vmsne.vv v14, v10, v12, v0.t
857 ; CHECK-NEXT:    vmv1r.v v0, v14
858 ; CHECK-NEXT:    ret
859 entry:
860   %mask = call <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i64(
861     <vscale x 2 x i64> %1,
862     <vscale x 2 x i64> %2,
863     iXLen %4)
864   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.mask.nxv2i64(
865     <vscale x 2 x i1> %0,
866     <vscale x 2 x i64> %2,
867     <vscale x 2 x i64> %3,
868     <vscale x 2 x i1> %mask,
869     iXLen %4)
871   ret <vscale x 2 x i1> %a
874 declare <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i64(
875   <vscale x 4 x i64>,
876   <vscale x 4 x i64>,
877   iXLen);
879 define <vscale x 4 x i1> @intrinsic_vmsne_vv_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, iXLen %2) nounwind {
880 ; CHECK-LABEL: intrinsic_vmsne_vv_nxv4i64_nxv4i64:
881 ; CHECK:       # %bb.0: # %entry
882 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
883 ; CHECK-NEXT:    vmsne.vv v0, v8, v12
884 ; CHECK-NEXT:    ret
885 entry:
886   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i64(
887     <vscale x 4 x i64> %0,
888     <vscale x 4 x i64> %1,
889     iXLen %2)
891   ret <vscale x 4 x i1> %a
894 declare <vscale x 4 x i1> @llvm.riscv.vmsne.mask.nxv4i64(
895   <vscale x 4 x i1>,
896   <vscale x 4 x i64>,
897   <vscale x 4 x i64>,
898   <vscale x 4 x i1>,
899   iXLen);
901 define <vscale x 4 x i1> @intrinsic_vmsne_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 {
902 ; CHECK-LABEL: intrinsic_vmsne_mask_vv_nxv4i64_nxv4i64:
903 ; CHECK:       # %bb.0: # %entry
904 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu
905 ; CHECK-NEXT:    vmv1r.v v20, v0
906 ; CHECK-NEXT:    vmsne.vv v0, v8, v12
907 ; CHECK-NEXT:    vmsne.vv v20, v12, v16, v0.t
908 ; CHECK-NEXT:    vmv1r.v v0, v20
909 ; CHECK-NEXT:    ret
910 entry:
911   %mask = call <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i64(
912     <vscale x 4 x i64> %1,
913     <vscale x 4 x i64> %2,
914     iXLen %4)
915   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.mask.nxv4i64(
916     <vscale x 4 x i1> %0,
917     <vscale x 4 x i64> %2,
918     <vscale x 4 x i64> %3,
919     <vscale x 4 x i1> %mask,
920     iXLen %4)
922   ret <vscale x 4 x i1> %a
925 declare <vscale x 1 x i1> @llvm.riscv.vmsne.nxv1i8.i8(
926   <vscale x 1 x i8>,
927   i8,
928   iXLen);
930 define <vscale x 1 x i1> @intrinsic_vmsne_vx_nxv1i8_i8(<vscale x 1 x i8> %0, i8 %1, iXLen %2) nounwind {
931 ; CHECK-LABEL: intrinsic_vmsne_vx_nxv1i8_i8:
932 ; CHECK:       # %bb.0: # %entry
933 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
934 ; CHECK-NEXT:    vmsne.vx v0, v8, a0
935 ; CHECK-NEXT:    ret
936 entry:
937   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.nxv1i8.i8(
938     <vscale x 1 x i8> %0,
939     i8 %1,
940     iXLen %2)
942   ret <vscale x 1 x i1> %a
945 declare <vscale x 1 x i1> @llvm.riscv.vmsne.mask.nxv1i8.i8(
946   <vscale x 1 x i1>,
947   <vscale x 1 x i8>,
948   i8,
949   <vscale x 1 x i1>,
950   iXLen);
952 define <vscale x 1 x i1> @intrinsic_vmsne_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 {
953 ; CHECK-LABEL: intrinsic_vmsne_mask_vx_nxv1i8_i8:
954 ; CHECK:       # %bb.0: # %entry
955 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, mu
956 ; CHECK-NEXT:    vmv1r.v v10, v0
957 ; CHECK-NEXT:    vmv1r.v v0, v9
958 ; CHECK-NEXT:    vmsne.vx v10, v8, a0, v0.t
959 ; CHECK-NEXT:    vmv1r.v v0, v10
960 ; CHECK-NEXT:    ret
961 entry:
962   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.mask.nxv1i8.i8(
963     <vscale x 1 x i1> %0,
964     <vscale x 1 x i8> %1,
965     i8 %2,
966     <vscale x 1 x i1> %3,
967     iXLen %4)
969   ret <vscale x 1 x i1> %a
972 declare <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i8.i8(
973   <vscale x 2 x i8>,
974   i8,
975   iXLen);
977 define <vscale x 2 x i1> @intrinsic_vmsne_vx_nxv2i8_i8(<vscale x 2 x i8> %0, i8 %1, iXLen %2) nounwind {
978 ; CHECK-LABEL: intrinsic_vmsne_vx_nxv2i8_i8:
979 ; CHECK:       # %bb.0: # %entry
980 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
981 ; CHECK-NEXT:    vmsne.vx v0, v8, a0
982 ; CHECK-NEXT:    ret
983 entry:
984   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i8.i8(
985     <vscale x 2 x i8> %0,
986     i8 %1,
987     iXLen %2)
989   ret <vscale x 2 x i1> %a
992 declare <vscale x 2 x i1> @llvm.riscv.vmsne.mask.nxv2i8.i8(
993   <vscale x 2 x i1>,
994   <vscale x 2 x i8>,
995   i8,
996   <vscale x 2 x i1>,
997   iXLen);
999 define <vscale x 2 x i1> @intrinsic_vmsne_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 {
1000 ; CHECK-LABEL: intrinsic_vmsne_mask_vx_nxv2i8_i8:
1001 ; CHECK:       # %bb.0: # %entry
1002 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, mu
1003 ; CHECK-NEXT:    vmv1r.v v10, v0
1004 ; CHECK-NEXT:    vmv1r.v v0, v9
1005 ; CHECK-NEXT:    vmsne.vx v10, v8, a0, v0.t
1006 ; CHECK-NEXT:    vmv1r.v v0, v10
1007 ; CHECK-NEXT:    ret
1008 entry:
1009   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.mask.nxv2i8.i8(
1010     <vscale x 2 x i1> %0,
1011     <vscale x 2 x i8> %1,
1012     i8 %2,
1013     <vscale x 2 x i1> %3,
1014     iXLen %4)
1016   ret <vscale x 2 x i1> %a
1019 declare <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i8.i8(
1020   <vscale x 4 x i8>,
1021   i8,
1022   iXLen);
1024 define <vscale x 4 x i1> @intrinsic_vmsne_vx_nxv4i8_i8(<vscale x 4 x i8> %0, i8 %1, iXLen %2) nounwind {
1025 ; CHECK-LABEL: intrinsic_vmsne_vx_nxv4i8_i8:
1026 ; CHECK:       # %bb.0: # %entry
1027 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
1028 ; CHECK-NEXT:    vmsne.vx v0, v8, a0
1029 ; CHECK-NEXT:    ret
1030 entry:
1031   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i8.i8(
1032     <vscale x 4 x i8> %0,
1033     i8 %1,
1034     iXLen %2)
1036   ret <vscale x 4 x i1> %a
1039 declare <vscale x 4 x i1> @llvm.riscv.vmsne.mask.nxv4i8.i8(
1040   <vscale x 4 x i1>,
1041   <vscale x 4 x i8>,
1042   i8,
1043   <vscale x 4 x i1>,
1044   iXLen);
1046 define <vscale x 4 x i1> @intrinsic_vmsne_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 {
1047 ; CHECK-LABEL: intrinsic_vmsne_mask_vx_nxv4i8_i8:
1048 ; CHECK:       # %bb.0: # %entry
1049 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, mu
1050 ; CHECK-NEXT:    vmv1r.v v10, v0
1051 ; CHECK-NEXT:    vmv1r.v v0, v9
1052 ; CHECK-NEXT:    vmsne.vx v10, v8, a0, v0.t
1053 ; CHECK-NEXT:    vmv1r.v v0, v10
1054 ; CHECK-NEXT:    ret
1055 entry:
1056   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.mask.nxv4i8.i8(
1057     <vscale x 4 x i1> %0,
1058     <vscale x 4 x i8> %1,
1059     i8 %2,
1060     <vscale x 4 x i1> %3,
1061     iXLen %4)
1063   ret <vscale x 4 x i1> %a
1066 declare <vscale x 8 x i1> @llvm.riscv.vmsne.nxv8i8.i8(
1067   <vscale x 8 x i8>,
1068   i8,
1069   iXLen);
1071 define <vscale x 8 x i1> @intrinsic_vmsne_vx_nxv8i8_i8(<vscale x 8 x i8> %0, i8 %1, iXLen %2) nounwind {
1072 ; CHECK-LABEL: intrinsic_vmsne_vx_nxv8i8_i8:
1073 ; CHECK:       # %bb.0: # %entry
1074 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
1075 ; CHECK-NEXT:    vmsne.vx v0, v8, a0
1076 ; CHECK-NEXT:    ret
1077 entry:
1078   %a = call <vscale x 8 x i1> @llvm.riscv.vmsne.nxv8i8.i8(
1079     <vscale x 8 x i8> %0,
1080     i8 %1,
1081     iXLen %2)
1083   ret <vscale x 8 x i1> %a
1086 declare <vscale x 8 x i1> @llvm.riscv.vmsne.mask.nxv8i8.i8(
1087   <vscale x 8 x i1>,
1088   <vscale x 8 x i8>,
1089   i8,
1090   <vscale x 8 x i1>,
1091   iXLen);
1093 define <vscale x 8 x i1> @intrinsic_vmsne_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 {
1094 ; CHECK-LABEL: intrinsic_vmsne_mask_vx_nxv8i8_i8:
1095 ; CHECK:       # %bb.0: # %entry
1096 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, mu
1097 ; CHECK-NEXT:    vmv1r.v v10, v0
1098 ; CHECK-NEXT:    vmv1r.v v0, v9
1099 ; CHECK-NEXT:    vmsne.vx v10, v8, a0, v0.t
1100 ; CHECK-NEXT:    vmv.v.v v0, v10
1101 ; CHECK-NEXT:    ret
1102 entry:
1103   %a = call <vscale x 8 x i1> @llvm.riscv.vmsne.mask.nxv8i8.i8(
1104     <vscale x 8 x i1> %0,
1105     <vscale x 8 x i8> %1,
1106     i8 %2,
1107     <vscale x 8 x i1> %3,
1108     iXLen %4)
1110   ret <vscale x 8 x i1> %a
1113 declare <vscale x 16 x i1> @llvm.riscv.vmsne.nxv16i8.i8(
1114   <vscale x 16 x i8>,
1115   i8,
1116   iXLen);
1118 define <vscale x 16 x i1> @intrinsic_vmsne_vx_nxv16i8_i8(<vscale x 16 x i8> %0, i8 %1, iXLen %2) nounwind {
1119 ; CHECK-LABEL: intrinsic_vmsne_vx_nxv16i8_i8:
1120 ; CHECK:       # %bb.0: # %entry
1121 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
1122 ; CHECK-NEXT:    vmsne.vx v0, v8, a0
1123 ; CHECK-NEXT:    ret
1124 entry:
1125   %a = call <vscale x 16 x i1> @llvm.riscv.vmsne.nxv16i8.i8(
1126     <vscale x 16 x i8> %0,
1127     i8 %1,
1128     iXLen %2)
1130   ret <vscale x 16 x i1> %a
1133 declare <vscale x 16 x i1> @llvm.riscv.vmsne.mask.nxv16i8.i8(
1134   <vscale x 16 x i1>,
1135   <vscale x 16 x i8>,
1136   i8,
1137   <vscale x 16 x i1>,
1138   iXLen);
1140 define <vscale x 16 x i1> @intrinsic_vmsne_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 {
1141 ; CHECK-LABEL: intrinsic_vmsne_mask_vx_nxv16i8_i8:
1142 ; CHECK:       # %bb.0: # %entry
1143 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, mu
1144 ; CHECK-NEXT:    vmv1r.v v11, v0
1145 ; CHECK-NEXT:    vmv1r.v v0, v10
1146 ; CHECK-NEXT:    vmsne.vx v11, v8, a0, v0.t
1147 ; CHECK-NEXT:    vmv1r.v v0, v11
1148 ; CHECK-NEXT:    ret
1149 entry:
1150   %a = call <vscale x 16 x i1> @llvm.riscv.vmsne.mask.nxv16i8.i8(
1151     <vscale x 16 x i1> %0,
1152     <vscale x 16 x i8> %1,
1153     i8 %2,
1154     <vscale x 16 x i1> %3,
1155     iXLen %4)
1157   ret <vscale x 16 x i1> %a
1160 declare <vscale x 32 x i1> @llvm.riscv.vmsne.nxv32i8.i8(
1161   <vscale x 32 x i8>,
1162   i8,
1163   iXLen);
1165 define <vscale x 32 x i1> @intrinsic_vmsne_vx_nxv32i8_i8(<vscale x 32 x i8> %0, i8 %1, iXLen %2) nounwind {
1166 ; CHECK-LABEL: intrinsic_vmsne_vx_nxv32i8_i8:
1167 ; CHECK:       # %bb.0: # %entry
1168 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
1169 ; CHECK-NEXT:    vmsne.vx v0, v8, a0
1170 ; CHECK-NEXT:    ret
1171 entry:
1172   %a = call <vscale x 32 x i1> @llvm.riscv.vmsne.nxv32i8.i8(
1173     <vscale x 32 x i8> %0,
1174     i8 %1,
1175     iXLen %2)
1177   ret <vscale x 32 x i1> %a
1180 declare <vscale x 32 x i1> @llvm.riscv.vmsne.mask.nxv32i8.i8(
1181   <vscale x 32 x i1>,
1182   <vscale x 32 x i8>,
1183   i8,
1184   <vscale x 32 x i1>,
1185   iXLen);
1187 define <vscale x 32 x i1> @intrinsic_vmsne_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 {
1188 ; CHECK-LABEL: intrinsic_vmsne_mask_vx_nxv32i8_i8:
1189 ; CHECK:       # %bb.0: # %entry
1190 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, mu
1191 ; CHECK-NEXT:    vmv1r.v v13, v0
1192 ; CHECK-NEXT:    vmv1r.v v0, v12
1193 ; CHECK-NEXT:    vmsne.vx v13, v8, a0, v0.t
1194 ; CHECK-NEXT:    vmv1r.v v0, v13
1195 ; CHECK-NEXT:    ret
1196 entry:
1197   %a = call <vscale x 32 x i1> @llvm.riscv.vmsne.mask.nxv32i8.i8(
1198     <vscale x 32 x i1> %0,
1199     <vscale x 32 x i8> %1,
1200     i8 %2,
1201     <vscale x 32 x i1> %3,
1202     iXLen %4)
1204   ret <vscale x 32 x i1> %a
1207 declare <vscale x 1 x i1> @llvm.riscv.vmsne.nxv1i16.i16(
1208   <vscale x 1 x i16>,
1209   i16,
1210   iXLen);
1212 define <vscale x 1 x i1> @intrinsic_vmsne_vx_nxv1i16_i16(<vscale x 1 x i16> %0, i16 %1, iXLen %2) nounwind {
1213 ; CHECK-LABEL: intrinsic_vmsne_vx_nxv1i16_i16:
1214 ; CHECK:       # %bb.0: # %entry
1215 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
1216 ; CHECK-NEXT:    vmsne.vx v0, v8, a0
1217 ; CHECK-NEXT:    ret
1218 entry:
1219   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.nxv1i16.i16(
1220     <vscale x 1 x i16> %0,
1221     i16 %1,
1222     iXLen %2)
1224   ret <vscale x 1 x i1> %a
1227 declare <vscale x 1 x i1> @llvm.riscv.vmsne.mask.nxv1i16.i16(
1228   <vscale x 1 x i1>,
1229   <vscale x 1 x i16>,
1230   i16,
1231   <vscale x 1 x i1>,
1232   iXLen);
1234 define <vscale x 1 x i1> @intrinsic_vmsne_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 {
1235 ; CHECK-LABEL: intrinsic_vmsne_mask_vx_nxv1i16_i16:
1236 ; CHECK:       # %bb.0: # %entry
1237 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu
1238 ; CHECK-NEXT:    vmv1r.v v10, v0
1239 ; CHECK-NEXT:    vmv1r.v v0, v9
1240 ; CHECK-NEXT:    vmsne.vx v10, v8, a0, v0.t
1241 ; CHECK-NEXT:    vmv1r.v v0, v10
1242 ; CHECK-NEXT:    ret
1243 entry:
1244   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.mask.nxv1i16.i16(
1245     <vscale x 1 x i1> %0,
1246     <vscale x 1 x i16> %1,
1247     i16 %2,
1248     <vscale x 1 x i1> %3,
1249     iXLen %4)
1251   ret <vscale x 1 x i1> %a
1254 declare <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i16.i16(
1255   <vscale x 2 x i16>,
1256   i16,
1257   iXLen);
1259 define <vscale x 2 x i1> @intrinsic_vmsne_vx_nxv2i16_i16(<vscale x 2 x i16> %0, i16 %1, iXLen %2) nounwind {
1260 ; CHECK-LABEL: intrinsic_vmsne_vx_nxv2i16_i16:
1261 ; CHECK:       # %bb.0: # %entry
1262 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
1263 ; CHECK-NEXT:    vmsne.vx v0, v8, a0
1264 ; CHECK-NEXT:    ret
1265 entry:
1266   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i16.i16(
1267     <vscale x 2 x i16> %0,
1268     i16 %1,
1269     iXLen %2)
1271   ret <vscale x 2 x i1> %a
1274 declare <vscale x 2 x i1> @llvm.riscv.vmsne.mask.nxv2i16.i16(
1275   <vscale x 2 x i1>,
1276   <vscale x 2 x i16>,
1277   i16,
1278   <vscale x 2 x i1>,
1279   iXLen);
1281 define <vscale x 2 x i1> @intrinsic_vmsne_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 {
1282 ; CHECK-LABEL: intrinsic_vmsne_mask_vx_nxv2i16_i16:
1283 ; CHECK:       # %bb.0: # %entry
1284 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu
1285 ; CHECK-NEXT:    vmv1r.v v10, v0
1286 ; CHECK-NEXT:    vmv1r.v v0, v9
1287 ; CHECK-NEXT:    vmsne.vx v10, v8, a0, v0.t
1288 ; CHECK-NEXT:    vmv1r.v v0, v10
1289 ; CHECK-NEXT:    ret
1290 entry:
1291   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.mask.nxv2i16.i16(
1292     <vscale x 2 x i1> %0,
1293     <vscale x 2 x i16> %1,
1294     i16 %2,
1295     <vscale x 2 x i1> %3,
1296     iXLen %4)
1298   ret <vscale x 2 x i1> %a
1301 declare <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i16.i16(
1302   <vscale x 4 x i16>,
1303   i16,
1304   iXLen);
1306 define <vscale x 4 x i1> @intrinsic_vmsne_vx_nxv4i16_i16(<vscale x 4 x i16> %0, i16 %1, iXLen %2) nounwind {
1307 ; CHECK-LABEL: intrinsic_vmsne_vx_nxv4i16_i16:
1308 ; CHECK:       # %bb.0: # %entry
1309 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1310 ; CHECK-NEXT:    vmsne.vx v0, v8, a0
1311 ; CHECK-NEXT:    ret
1312 entry:
1313   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i16.i16(
1314     <vscale x 4 x i16> %0,
1315     i16 %1,
1316     iXLen %2)
1318   ret <vscale x 4 x i1> %a
1321 declare <vscale x 4 x i1> @llvm.riscv.vmsne.mask.nxv4i16.i16(
1322   <vscale x 4 x i1>,
1323   <vscale x 4 x i16>,
1324   i16,
1325   <vscale x 4 x i1>,
1326   iXLen);
1328 define <vscale x 4 x i1> @intrinsic_vmsne_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 {
1329 ; CHECK-LABEL: intrinsic_vmsne_mask_vx_nxv4i16_i16:
1330 ; CHECK:       # %bb.0: # %entry
1331 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu
1332 ; CHECK-NEXT:    vmv1r.v v10, v0
1333 ; CHECK-NEXT:    vmv1r.v v0, v9
1334 ; CHECK-NEXT:    vmsne.vx v10, v8, a0, v0.t
1335 ; CHECK-NEXT:    vmv.v.v v0, v10
1336 ; CHECK-NEXT:    ret
1337 entry:
1338   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.mask.nxv4i16.i16(
1339     <vscale x 4 x i1> %0,
1340     <vscale x 4 x i16> %1,
1341     i16 %2,
1342     <vscale x 4 x i1> %3,
1343     iXLen %4)
1345   ret <vscale x 4 x i1> %a
1348 declare <vscale x 8 x i1> @llvm.riscv.vmsne.nxv8i16.i16(
1349   <vscale x 8 x i16>,
1350   i16,
1351   iXLen);
1353 define <vscale x 8 x i1> @intrinsic_vmsne_vx_nxv8i16_i16(<vscale x 8 x i16> %0, i16 %1, iXLen %2) nounwind {
1354 ; CHECK-LABEL: intrinsic_vmsne_vx_nxv8i16_i16:
1355 ; CHECK:       # %bb.0: # %entry
1356 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
1357 ; CHECK-NEXT:    vmsne.vx v0, v8, a0
1358 ; CHECK-NEXT:    ret
1359 entry:
1360   %a = call <vscale x 8 x i1> @llvm.riscv.vmsne.nxv8i16.i16(
1361     <vscale x 8 x i16> %0,
1362     i16 %1,
1363     iXLen %2)
1365   ret <vscale x 8 x i1> %a
1368 declare <vscale x 8 x i1> @llvm.riscv.vmsne.mask.nxv8i16.i16(
1369   <vscale x 8 x i1>,
1370   <vscale x 8 x i16>,
1371   i16,
1372   <vscale x 8 x i1>,
1373   iXLen);
1375 define <vscale x 8 x i1> @intrinsic_vmsne_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 {
1376 ; CHECK-LABEL: intrinsic_vmsne_mask_vx_nxv8i16_i16:
1377 ; CHECK:       # %bb.0: # %entry
1378 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu
1379 ; CHECK-NEXT:    vmv1r.v v11, v0
1380 ; CHECK-NEXT:    vmv1r.v v0, v10
1381 ; CHECK-NEXT:    vmsne.vx v11, v8, a0, v0.t
1382 ; CHECK-NEXT:    vmv1r.v v0, v11
1383 ; CHECK-NEXT:    ret
1384 entry:
1385   %a = call <vscale x 8 x i1> @llvm.riscv.vmsne.mask.nxv8i16.i16(
1386     <vscale x 8 x i1> %0,
1387     <vscale x 8 x i16> %1,
1388     i16 %2,
1389     <vscale x 8 x i1> %3,
1390     iXLen %4)
1392   ret <vscale x 8 x i1> %a
1395 declare <vscale x 16 x i1> @llvm.riscv.vmsne.nxv16i16.i16(
1396   <vscale x 16 x i16>,
1397   i16,
1398   iXLen);
1400 define <vscale x 16 x i1> @intrinsic_vmsne_vx_nxv16i16_i16(<vscale x 16 x i16> %0, i16 %1, iXLen %2) nounwind {
1401 ; CHECK-LABEL: intrinsic_vmsne_vx_nxv16i16_i16:
1402 ; CHECK:       # %bb.0: # %entry
1403 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
1404 ; CHECK-NEXT:    vmsne.vx v0, v8, a0
1405 ; CHECK-NEXT:    ret
1406 entry:
1407   %a = call <vscale x 16 x i1> @llvm.riscv.vmsne.nxv16i16.i16(
1408     <vscale x 16 x i16> %0,
1409     i16 %1,
1410     iXLen %2)
1412   ret <vscale x 16 x i1> %a
1415 declare <vscale x 16 x i1> @llvm.riscv.vmsne.mask.nxv16i16.i16(
1416   <vscale x 16 x i1>,
1417   <vscale x 16 x i16>,
1418   i16,
1419   <vscale x 16 x i1>,
1420   iXLen);
1422 define <vscale x 16 x i1> @intrinsic_vmsne_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 {
1423 ; CHECK-LABEL: intrinsic_vmsne_mask_vx_nxv16i16_i16:
1424 ; CHECK:       # %bb.0: # %entry
1425 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, mu
1426 ; CHECK-NEXT:    vmv1r.v v13, v0
1427 ; CHECK-NEXT:    vmv1r.v v0, v12
1428 ; CHECK-NEXT:    vmsne.vx v13, v8, a0, v0.t
1429 ; CHECK-NEXT:    vmv1r.v v0, v13
1430 ; CHECK-NEXT:    ret
1431 entry:
1432   %a = call <vscale x 16 x i1> @llvm.riscv.vmsne.mask.nxv16i16.i16(
1433     <vscale x 16 x i1> %0,
1434     <vscale x 16 x i16> %1,
1435     i16 %2,
1436     <vscale x 16 x i1> %3,
1437     iXLen %4)
1439   ret <vscale x 16 x i1> %a
1442 declare <vscale x 1 x i1> @llvm.riscv.vmsne.nxv1i32.i32(
1443   <vscale x 1 x i32>,
1444   i32,
1445   iXLen);
1447 define <vscale x 1 x i1> @intrinsic_vmsne_vx_nxv1i32_i32(<vscale x 1 x i32> %0, i32 %1, iXLen %2) nounwind {
1448 ; CHECK-LABEL: intrinsic_vmsne_vx_nxv1i32_i32:
1449 ; CHECK:       # %bb.0: # %entry
1450 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1451 ; CHECK-NEXT:    vmsne.vx v0, v8, a0
1452 ; CHECK-NEXT:    ret
1453 entry:
1454   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.nxv1i32.i32(
1455     <vscale x 1 x i32> %0,
1456     i32 %1,
1457     iXLen %2)
1459   ret <vscale x 1 x i1> %a
1462 declare <vscale x 1 x i1> @llvm.riscv.vmsne.mask.nxv1i32.i32(
1463   <vscale x 1 x i1>,
1464   <vscale x 1 x i32>,
1465   i32,
1466   <vscale x 1 x i1>,
1467   iXLen);
1469 define <vscale x 1 x i1> @intrinsic_vmsne_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 {
1470 ; CHECK-LABEL: intrinsic_vmsne_mask_vx_nxv1i32_i32:
1471 ; CHECK:       # %bb.0: # %entry
1472 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu
1473 ; CHECK-NEXT:    vmv1r.v v10, v0
1474 ; CHECK-NEXT:    vmv1r.v v0, v9
1475 ; CHECK-NEXT:    vmsne.vx v10, v8, a0, v0.t
1476 ; CHECK-NEXT:    vmv1r.v v0, v10
1477 ; CHECK-NEXT:    ret
1478 entry:
1479   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.mask.nxv1i32.i32(
1480     <vscale x 1 x i1> %0,
1481     <vscale x 1 x i32> %1,
1482     i32 %2,
1483     <vscale x 1 x i1> %3,
1484     iXLen %4)
1486   ret <vscale x 1 x i1> %a
1489 declare <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i32.i32(
1490   <vscale x 2 x i32>,
1491   i32,
1492   iXLen);
1494 define <vscale x 2 x i1> @intrinsic_vmsne_vx_nxv2i32_i32(<vscale x 2 x i32> %0, i32 %1, iXLen %2) nounwind {
1495 ; CHECK-LABEL: intrinsic_vmsne_vx_nxv2i32_i32:
1496 ; CHECK:       # %bb.0: # %entry
1497 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1498 ; CHECK-NEXT:    vmsne.vx v0, v8, a0
1499 ; CHECK-NEXT:    ret
1500 entry:
1501   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i32.i32(
1502     <vscale x 2 x i32> %0,
1503     i32 %1,
1504     iXLen %2)
1506   ret <vscale x 2 x i1> %a
1509 declare <vscale x 2 x i1> @llvm.riscv.vmsne.mask.nxv2i32.i32(
1510   <vscale x 2 x i1>,
1511   <vscale x 2 x i32>,
1512   i32,
1513   <vscale x 2 x i1>,
1514   iXLen);
1516 define <vscale x 2 x i1> @intrinsic_vmsne_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 {
1517 ; CHECK-LABEL: intrinsic_vmsne_mask_vx_nxv2i32_i32:
1518 ; CHECK:       # %bb.0: # %entry
1519 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu
1520 ; CHECK-NEXT:    vmv1r.v v10, v0
1521 ; CHECK-NEXT:    vmv1r.v v0, v9
1522 ; CHECK-NEXT:    vmsne.vx v10, v8, a0, v0.t
1523 ; CHECK-NEXT:    vmv.v.v v0, v10
1524 ; CHECK-NEXT:    ret
1525 entry:
1526   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.mask.nxv2i32.i32(
1527     <vscale x 2 x i1> %0,
1528     <vscale x 2 x i32> %1,
1529     i32 %2,
1530     <vscale x 2 x i1> %3,
1531     iXLen %4)
1533   ret <vscale x 2 x i1> %a
1536 declare <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i32.i32(
1537   <vscale x 4 x i32>,
1538   i32,
1539   iXLen);
1541 define <vscale x 4 x i1> @intrinsic_vmsne_vx_nxv4i32_i32(<vscale x 4 x i32> %0, i32 %1, iXLen %2) nounwind {
1542 ; CHECK-LABEL: intrinsic_vmsne_vx_nxv4i32_i32:
1543 ; CHECK:       # %bb.0: # %entry
1544 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1545 ; CHECK-NEXT:    vmsne.vx v0, v8, a0
1546 ; CHECK-NEXT:    ret
1547 entry:
1548   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i32.i32(
1549     <vscale x 4 x i32> %0,
1550     i32 %1,
1551     iXLen %2)
1553   ret <vscale x 4 x i1> %a
1556 declare <vscale x 4 x i1> @llvm.riscv.vmsne.mask.nxv4i32.i32(
1557   <vscale x 4 x i1>,
1558   <vscale x 4 x i32>,
1559   i32,
1560   <vscale x 4 x i1>,
1561   iXLen);
1563 define <vscale x 4 x i1> @intrinsic_vmsne_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 {
1564 ; CHECK-LABEL: intrinsic_vmsne_mask_vx_nxv4i32_i32:
1565 ; CHECK:       # %bb.0: # %entry
1566 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu
1567 ; CHECK-NEXT:    vmv1r.v v11, v0
1568 ; CHECK-NEXT:    vmv1r.v v0, v10
1569 ; CHECK-NEXT:    vmsne.vx v11, v8, a0, v0.t
1570 ; CHECK-NEXT:    vmv1r.v v0, v11
1571 ; CHECK-NEXT:    ret
1572 entry:
1573   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.mask.nxv4i32.i32(
1574     <vscale x 4 x i1> %0,
1575     <vscale x 4 x i32> %1,
1576     i32 %2,
1577     <vscale x 4 x i1> %3,
1578     iXLen %4)
1580   ret <vscale x 4 x i1> %a
1583 declare <vscale x 8 x i1> @llvm.riscv.vmsne.nxv8i32.i32(
1584   <vscale x 8 x i32>,
1585   i32,
1586   iXLen);
1588 define <vscale x 8 x i1> @intrinsic_vmsne_vx_nxv8i32_i32(<vscale x 8 x i32> %0, i32 %1, iXLen %2) nounwind {
1589 ; CHECK-LABEL: intrinsic_vmsne_vx_nxv8i32_i32:
1590 ; CHECK:       # %bb.0: # %entry
1591 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1592 ; CHECK-NEXT:    vmsne.vx v0, v8, a0
1593 ; CHECK-NEXT:    ret
1594 entry:
1595   %a = call <vscale x 8 x i1> @llvm.riscv.vmsne.nxv8i32.i32(
1596     <vscale x 8 x i32> %0,
1597     i32 %1,
1598     iXLen %2)
1600   ret <vscale x 8 x i1> %a
1603 declare <vscale x 8 x i1> @llvm.riscv.vmsne.mask.nxv8i32.i32(
1604   <vscale x 8 x i1>,
1605   <vscale x 8 x i32>,
1606   i32,
1607   <vscale x 8 x i1>,
1608   iXLen);
1610 define <vscale x 8 x i1> @intrinsic_vmsne_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 {
1611 ; CHECK-LABEL: intrinsic_vmsne_mask_vx_nxv8i32_i32:
1612 ; CHECK:       # %bb.0: # %entry
1613 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, mu
1614 ; CHECK-NEXT:    vmv1r.v v13, v0
1615 ; CHECK-NEXT:    vmv1r.v v0, v12
1616 ; CHECK-NEXT:    vmsne.vx v13, v8, a0, v0.t
1617 ; CHECK-NEXT:    vmv1r.v v0, v13
1618 ; CHECK-NEXT:    ret
1619 entry:
1620   %a = call <vscale x 8 x i1> @llvm.riscv.vmsne.mask.nxv8i32.i32(
1621     <vscale x 8 x i1> %0,
1622     <vscale x 8 x i32> %1,
1623     i32 %2,
1624     <vscale x 8 x i1> %3,
1625     iXLen %4)
1627   ret <vscale x 8 x i1> %a
1630 declare <vscale x 1 x i1> @llvm.riscv.vmsne.nxv1i64.i64(
1631   <vscale x 1 x i64>,
1632   i64,
1633   iXLen);
1635 define <vscale x 1 x i1> @intrinsic_vmsne_vx_nxv1i64_i64(<vscale x 1 x i64> %0, i64 %1, iXLen %2) nounwind {
1636 ; RV32-LABEL: intrinsic_vmsne_vx_nxv1i64_i64:
1637 ; RV32:       # %bb.0: # %entry
1638 ; RV32-NEXT:    addi sp, sp, -16
1639 ; RV32-NEXT:    sw a0, 8(sp)
1640 ; RV32-NEXT:    sw a1, 12(sp)
1641 ; RV32-NEXT:    addi a0, sp, 8
1642 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
1643 ; RV32-NEXT:    vlse64.v v9, (a0), zero
1644 ; RV32-NEXT:    vmsne.vv v0, v8, v9
1645 ; RV32-NEXT:    addi sp, sp, 16
1646 ; RV32-NEXT:    ret
1648 ; RV64-LABEL: intrinsic_vmsne_vx_nxv1i64_i64:
1649 ; RV64:       # %bb.0: # %entry
1650 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1651 ; RV64-NEXT:    vmsne.vx v0, v8, a0
1652 ; RV64-NEXT:    ret
1653 entry:
1654   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.nxv1i64.i64(
1655     <vscale x 1 x i64> %0,
1656     i64 %1,
1657     iXLen %2)
1659   ret <vscale x 1 x i1> %a
1662 declare <vscale x 1 x i1> @llvm.riscv.vmsne.mask.nxv1i64.i64(
1663   <vscale x 1 x i1>,
1664   <vscale x 1 x i64>,
1665   i64,
1666   <vscale x 1 x i1>,
1667   iXLen);
1669 define <vscale x 1 x i1> @intrinsic_vmsne_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 {
1670 ; RV32-LABEL: intrinsic_vmsne_mask_vx_nxv1i64_i64:
1671 ; RV32:       # %bb.0: # %entry
1672 ; RV32-NEXT:    addi sp, sp, -16
1673 ; RV32-NEXT:    sw a0, 8(sp)
1674 ; RV32-NEXT:    sw a1, 12(sp)
1675 ; RV32-NEXT:    addi a0, sp, 8
1676 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, mu
1677 ; RV32-NEXT:    vlse64.v v11, (a0), zero
1678 ; RV32-NEXT:    vmv1r.v v10, v0
1679 ; RV32-NEXT:    vmv1r.v v0, v9
1680 ; RV32-NEXT:    vmsne.vv v10, v8, v11, v0.t
1681 ; RV32-NEXT:    vmv.v.v v0, v10
1682 ; RV32-NEXT:    addi sp, sp, 16
1683 ; RV32-NEXT:    ret
1685 ; RV64-LABEL: intrinsic_vmsne_mask_vx_nxv1i64_i64:
1686 ; RV64:       # %bb.0: # %entry
1687 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, mu
1688 ; RV64-NEXT:    vmv1r.v v10, v0
1689 ; RV64-NEXT:    vmv1r.v v0, v9
1690 ; RV64-NEXT:    vmsne.vx v10, v8, a0, v0.t
1691 ; RV64-NEXT:    vmv.v.v v0, v10
1692 ; RV64-NEXT:    ret
1693 entry:
1694   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.mask.nxv1i64.i64(
1695     <vscale x 1 x i1> %0,
1696     <vscale x 1 x i64> %1,
1697     i64 %2,
1698     <vscale x 1 x i1> %3,
1699     iXLen %4)
1701   ret <vscale x 1 x i1> %a
1704 declare <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i64.i64(
1705   <vscale x 2 x i64>,
1706   i64,
1707   iXLen);
1709 define <vscale x 2 x i1> @intrinsic_vmsne_vx_nxv2i64_i64(<vscale x 2 x i64> %0, i64 %1, iXLen %2) nounwind {
1710 ; RV32-LABEL: intrinsic_vmsne_vx_nxv2i64_i64:
1711 ; RV32:       # %bb.0: # %entry
1712 ; RV32-NEXT:    addi sp, sp, -16
1713 ; RV32-NEXT:    sw a0, 8(sp)
1714 ; RV32-NEXT:    sw a1, 12(sp)
1715 ; RV32-NEXT:    addi a0, sp, 8
1716 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1717 ; RV32-NEXT:    vlse64.v v10, (a0), zero
1718 ; RV32-NEXT:    vmsne.vv v0, v8, v10
1719 ; RV32-NEXT:    addi sp, sp, 16
1720 ; RV32-NEXT:    ret
1722 ; RV64-LABEL: intrinsic_vmsne_vx_nxv2i64_i64:
1723 ; RV64:       # %bb.0: # %entry
1724 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1725 ; RV64-NEXT:    vmsne.vx v0, v8, a0
1726 ; RV64-NEXT:    ret
1727 entry:
1728   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i64.i64(
1729     <vscale x 2 x i64> %0,
1730     i64 %1,
1731     iXLen %2)
1733   ret <vscale x 2 x i1> %a
1736 declare <vscale x 2 x i1> @llvm.riscv.vmsne.mask.nxv2i64.i64(
1737   <vscale x 2 x i1>,
1738   <vscale x 2 x i64>,
1739   i64,
1740   <vscale x 2 x i1>,
1741   iXLen);
1743 define <vscale x 2 x i1> @intrinsic_vmsne_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 {
1744 ; RV32-LABEL: intrinsic_vmsne_mask_vx_nxv2i64_i64:
1745 ; RV32:       # %bb.0: # %entry
1746 ; RV32-NEXT:    addi sp, sp, -16
1747 ; RV32-NEXT:    sw a0, 8(sp)
1748 ; RV32-NEXT:    sw a1, 12(sp)
1749 ; RV32-NEXT:    addi a0, sp, 8
1750 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, mu
1751 ; RV32-NEXT:    vlse64.v v12, (a0), zero
1752 ; RV32-NEXT:    vmv1r.v v11, v0
1753 ; RV32-NEXT:    vmv1r.v v0, v10
1754 ; RV32-NEXT:    vmsne.vv v11, v8, v12, v0.t
1755 ; RV32-NEXT:    vmv1r.v v0, v11
1756 ; RV32-NEXT:    addi sp, sp, 16
1757 ; RV32-NEXT:    ret
1759 ; RV64-LABEL: intrinsic_vmsne_mask_vx_nxv2i64_i64:
1760 ; RV64:       # %bb.0: # %entry
1761 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, mu
1762 ; RV64-NEXT:    vmv1r.v v11, v0
1763 ; RV64-NEXT:    vmv1r.v v0, v10
1764 ; RV64-NEXT:    vmsne.vx v11, v8, a0, v0.t
1765 ; RV64-NEXT:    vmv1r.v v0, v11
1766 ; RV64-NEXT:    ret
1767 entry:
1768   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.mask.nxv2i64.i64(
1769     <vscale x 2 x i1> %0,
1770     <vscale x 2 x i64> %1,
1771     i64 %2,
1772     <vscale x 2 x i1> %3,
1773     iXLen %4)
1775   ret <vscale x 2 x i1> %a
1778 declare <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i64.i64(
1779   <vscale x 4 x i64>,
1780   i64,
1781   iXLen);
1783 define <vscale x 4 x i1> @intrinsic_vmsne_vx_nxv4i64_i64(<vscale x 4 x i64> %0, i64 %1, iXLen %2) nounwind {
1784 ; RV32-LABEL: intrinsic_vmsne_vx_nxv4i64_i64:
1785 ; RV32:       # %bb.0: # %entry
1786 ; RV32-NEXT:    addi sp, sp, -16
1787 ; RV32-NEXT:    sw a0, 8(sp)
1788 ; RV32-NEXT:    sw a1, 12(sp)
1789 ; RV32-NEXT:    addi a0, sp, 8
1790 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1791 ; RV32-NEXT:    vlse64.v v12, (a0), zero
1792 ; RV32-NEXT:    vmsne.vv v0, v8, v12
1793 ; RV32-NEXT:    addi sp, sp, 16
1794 ; RV32-NEXT:    ret
1796 ; RV64-LABEL: intrinsic_vmsne_vx_nxv4i64_i64:
1797 ; RV64:       # %bb.0: # %entry
1798 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1799 ; RV64-NEXT:    vmsne.vx v0, v8, a0
1800 ; RV64-NEXT:    ret
1801 entry:
1802   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i64.i64(
1803     <vscale x 4 x i64> %0,
1804     i64 %1,
1805     iXLen %2)
1807   ret <vscale x 4 x i1> %a
1810 declare <vscale x 4 x i1> @llvm.riscv.vmsne.mask.nxv4i64.i64(
1811   <vscale x 4 x i1>,
1812   <vscale x 4 x i64>,
1813   i64,
1814   <vscale x 4 x i1>,
1815   iXLen);
1817 define <vscale x 4 x i1> @intrinsic_vmsne_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 {
1818 ; RV32-LABEL: intrinsic_vmsne_mask_vx_nxv4i64_i64:
1819 ; RV32:       # %bb.0: # %entry
1820 ; RV32-NEXT:    addi sp, sp, -16
1821 ; RV32-NEXT:    sw a0, 8(sp)
1822 ; RV32-NEXT:    sw a1, 12(sp)
1823 ; RV32-NEXT:    addi a0, sp, 8
1824 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, mu
1825 ; RV32-NEXT:    vlse64.v v16, (a0), zero
1826 ; RV32-NEXT:    vmv1r.v v13, v0
1827 ; RV32-NEXT:    vmv1r.v v0, v12
1828 ; RV32-NEXT:    vmsne.vv v13, v8, v16, v0.t
1829 ; RV32-NEXT:    vmv1r.v v0, v13
1830 ; RV32-NEXT:    addi sp, sp, 16
1831 ; RV32-NEXT:    ret
1833 ; RV64-LABEL: intrinsic_vmsne_mask_vx_nxv4i64_i64:
1834 ; RV64:       # %bb.0: # %entry
1835 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, mu
1836 ; RV64-NEXT:    vmv1r.v v13, v0
1837 ; RV64-NEXT:    vmv1r.v v0, v12
1838 ; RV64-NEXT:    vmsne.vx v13, v8, a0, v0.t
1839 ; RV64-NEXT:    vmv1r.v v0, v13
1840 ; RV64-NEXT:    ret
1841 entry:
1842   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.mask.nxv4i64.i64(
1843     <vscale x 4 x i1> %0,
1844     <vscale x 4 x i64> %1,
1845     i64 %2,
1846     <vscale x 4 x i1> %3,
1847     iXLen %4)
1849   ret <vscale x 4 x i1> %a
1852 define <vscale x 1 x i1> @intrinsic_vmsne_vi_nxv1i8_i8(<vscale x 1 x i8> %0, iXLen %1) nounwind {
1853 ; CHECK-LABEL: intrinsic_vmsne_vi_nxv1i8_i8:
1854 ; CHECK:       # %bb.0: # %entry
1855 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
1856 ; CHECK-NEXT:    vmsne.vi v0, v8, 9
1857 ; CHECK-NEXT:    ret
1858 entry:
1859   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.nxv1i8.i8(
1860     <vscale x 1 x i8> %0,
1861     i8 9,
1862     iXLen %1)
1864   ret <vscale x 1 x i1> %a
1867 define <vscale x 1 x i1> @intrinsic_vmsne_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 {
1868 ; CHECK-LABEL: intrinsic_vmsne_mask_vi_nxv1i8_i8:
1869 ; CHECK:       # %bb.0: # %entry
1870 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, mu
1871 ; CHECK-NEXT:    vmv1r.v v10, v0
1872 ; CHECK-NEXT:    vmv1r.v v0, v9
1873 ; CHECK-NEXT:    vmsne.vi v10, v8, 9, v0.t
1874 ; CHECK-NEXT:    vmv1r.v v0, v10
1875 ; CHECK-NEXT:    ret
1876 entry:
1877   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.mask.nxv1i8.i8(
1878     <vscale x 1 x i1> %0,
1879     <vscale x 1 x i8> %1,
1880     i8 9,
1881     <vscale x 1 x i1> %2,
1882     iXLen %3)
1884   ret <vscale x 1 x i1> %a
1887 define <vscale x 2 x i1> @intrinsic_vmsne_vi_nxv2i8_i8(<vscale x 2 x i8> %0, iXLen %1) nounwind {
1888 ; CHECK-LABEL: intrinsic_vmsne_vi_nxv2i8_i8:
1889 ; CHECK:       # %bb.0: # %entry
1890 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
1891 ; CHECK-NEXT:    vmsne.vi v0, v8, 9
1892 ; CHECK-NEXT:    ret
1893 entry:
1894   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i8.i8(
1895     <vscale x 2 x i8> %0,
1896     i8 9,
1897     iXLen %1)
1899   ret <vscale x 2 x i1> %a
1902 define <vscale x 2 x i1> @intrinsic_vmsne_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 {
1903 ; CHECK-LABEL: intrinsic_vmsne_mask_vi_nxv2i8_i8:
1904 ; CHECK:       # %bb.0: # %entry
1905 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, mu
1906 ; CHECK-NEXT:    vmv1r.v v10, v0
1907 ; CHECK-NEXT:    vmv1r.v v0, v9
1908 ; CHECK-NEXT:    vmsne.vi v10, v8, 9, v0.t
1909 ; CHECK-NEXT:    vmv1r.v v0, v10
1910 ; CHECK-NEXT:    ret
1911 entry:
1912   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.mask.nxv2i8.i8(
1913     <vscale x 2 x i1> %0,
1914     <vscale x 2 x i8> %1,
1915     i8 9,
1916     <vscale x 2 x i1> %2,
1917     iXLen %3)
1919   ret <vscale x 2 x i1> %a
1922 define <vscale x 4 x i1> @intrinsic_vmsne_vi_nxv4i8_i8(<vscale x 4 x i8> %0, iXLen %1) nounwind {
1923 ; CHECK-LABEL: intrinsic_vmsne_vi_nxv4i8_i8:
1924 ; CHECK:       # %bb.0: # %entry
1925 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
1926 ; CHECK-NEXT:    vmsne.vi v0, v8, 9
1927 ; CHECK-NEXT:    ret
1928 entry:
1929   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i8.i8(
1930     <vscale x 4 x i8> %0,
1931     i8 9,
1932     iXLen %1)
1934   ret <vscale x 4 x i1> %a
1937 define <vscale x 4 x i1> @intrinsic_vmsne_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 {
1938 ; CHECK-LABEL: intrinsic_vmsne_mask_vi_nxv4i8_i8:
1939 ; CHECK:       # %bb.0: # %entry
1940 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, mu
1941 ; CHECK-NEXT:    vmv1r.v v10, v0
1942 ; CHECK-NEXT:    vmv1r.v v0, v9
1943 ; CHECK-NEXT:    vmsne.vi v10, v8, 9, v0.t
1944 ; CHECK-NEXT:    vmv1r.v v0, v10
1945 ; CHECK-NEXT:    ret
1946 entry:
1947   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.mask.nxv4i8.i8(
1948     <vscale x 4 x i1> %0,
1949     <vscale x 4 x i8> %1,
1950     i8 9,
1951     <vscale x 4 x i1> %2,
1952     iXLen %3)
1954   ret <vscale x 4 x i1> %a
1957 define <vscale x 8 x i1> @intrinsic_vmsne_vi_nxv8i8_i8(<vscale x 8 x i8> %0, iXLen %1) nounwind {
1958 ; CHECK-LABEL: intrinsic_vmsne_vi_nxv8i8_i8:
1959 ; CHECK:       # %bb.0: # %entry
1960 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
1961 ; CHECK-NEXT:    vmsne.vi v0, v8, 9
1962 ; CHECK-NEXT:    ret
1963 entry:
1964   %a = call <vscale x 8 x i1> @llvm.riscv.vmsne.nxv8i8.i8(
1965     <vscale x 8 x i8> %0,
1966     i8 9,
1967     iXLen %1)
1969   ret <vscale x 8 x i1> %a
1972 define <vscale x 8 x i1> @intrinsic_vmsne_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 {
1973 ; CHECK-LABEL: intrinsic_vmsne_mask_vi_nxv8i8_i8:
1974 ; CHECK:       # %bb.0: # %entry
1975 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, mu
1976 ; CHECK-NEXT:    vmv1r.v v10, v0
1977 ; CHECK-NEXT:    vmv1r.v v0, v9
1978 ; CHECK-NEXT:    vmsne.vi v10, v8, 9, v0.t
1979 ; CHECK-NEXT:    vmv.v.v v0, v10
1980 ; CHECK-NEXT:    ret
1981 entry:
1982   %a = call <vscale x 8 x i1> @llvm.riscv.vmsne.mask.nxv8i8.i8(
1983     <vscale x 8 x i1> %0,
1984     <vscale x 8 x i8> %1,
1985     i8 9,
1986     <vscale x 8 x i1> %2,
1987     iXLen %3)
1989   ret <vscale x 8 x i1> %a
1992 define <vscale x 16 x i1> @intrinsic_vmsne_vi_nxv16i8_i8(<vscale x 16 x i8> %0, iXLen %1) nounwind {
1993 ; CHECK-LABEL: intrinsic_vmsne_vi_nxv16i8_i8:
1994 ; CHECK:       # %bb.0: # %entry
1995 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
1996 ; CHECK-NEXT:    vmsne.vi v0, v8, 9
1997 ; CHECK-NEXT:    ret
1998 entry:
1999   %a = call <vscale x 16 x i1> @llvm.riscv.vmsne.nxv16i8.i8(
2000     <vscale x 16 x i8> %0,
2001     i8 9,
2002     iXLen %1)
2004   ret <vscale x 16 x i1> %a
2007 define <vscale x 16 x i1> @intrinsic_vmsne_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 {
2008 ; CHECK-LABEL: intrinsic_vmsne_mask_vi_nxv16i8_i8:
2009 ; CHECK:       # %bb.0: # %entry
2010 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, mu
2011 ; CHECK-NEXT:    vmv1r.v v11, v0
2012 ; CHECK-NEXT:    vmv1r.v v0, v10
2013 ; CHECK-NEXT:    vmsne.vi v11, v8, 9, v0.t
2014 ; CHECK-NEXT:    vmv1r.v v0, v11
2015 ; CHECK-NEXT:    ret
2016 entry:
2017   %a = call <vscale x 16 x i1> @llvm.riscv.vmsne.mask.nxv16i8.i8(
2018     <vscale x 16 x i1> %0,
2019     <vscale x 16 x i8> %1,
2020     i8 9,
2021     <vscale x 16 x i1> %2,
2022     iXLen %3)
2024   ret <vscale x 16 x i1> %a
2027 define <vscale x 32 x i1> @intrinsic_vmsne_vi_nxv32i8_i8(<vscale x 32 x i8> %0, iXLen %1) nounwind {
2028 ; CHECK-LABEL: intrinsic_vmsne_vi_nxv32i8_i8:
2029 ; CHECK:       # %bb.0: # %entry
2030 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
2031 ; CHECK-NEXT:    vmsne.vi v0, v8, 9
2032 ; CHECK-NEXT:    ret
2033 entry:
2034   %a = call <vscale x 32 x i1> @llvm.riscv.vmsne.nxv32i8.i8(
2035     <vscale x 32 x i8> %0,
2036     i8 9,
2037     iXLen %1)
2039   ret <vscale x 32 x i1> %a
2042 define <vscale x 32 x i1> @intrinsic_vmsne_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 {
2043 ; CHECK-LABEL: intrinsic_vmsne_mask_vi_nxv32i8_i8:
2044 ; CHECK:       # %bb.0: # %entry
2045 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, mu
2046 ; CHECK-NEXT:    vmv1r.v v13, v0
2047 ; CHECK-NEXT:    vmv1r.v v0, v12
2048 ; CHECK-NEXT:    vmsne.vi v13, v8, 9, v0.t
2049 ; CHECK-NEXT:    vmv1r.v v0, v13
2050 ; CHECK-NEXT:    ret
2051 entry:
2052   %a = call <vscale x 32 x i1> @llvm.riscv.vmsne.mask.nxv32i8.i8(
2053     <vscale x 32 x i1> %0,
2054     <vscale x 32 x i8> %1,
2055     i8 9,
2056     <vscale x 32 x i1> %2,
2057     iXLen %3)
2059   ret <vscale x 32 x i1> %a
2062 define <vscale x 1 x i1> @intrinsic_vmsne_vi_nxv1i16_i16(<vscale x 1 x i16> %0, iXLen %1) nounwind {
2063 ; CHECK-LABEL: intrinsic_vmsne_vi_nxv1i16_i16:
2064 ; CHECK:       # %bb.0: # %entry
2065 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
2066 ; CHECK-NEXT:    vmsne.vi v0, v8, 9
2067 ; CHECK-NEXT:    ret
2068 entry:
2069   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.nxv1i16.i16(
2070     <vscale x 1 x i16> %0,
2071     i16 9,
2072     iXLen %1)
2074   ret <vscale x 1 x i1> %a
2077 define <vscale x 1 x i1> @intrinsic_vmsne_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 {
2078 ; CHECK-LABEL: intrinsic_vmsne_mask_vi_nxv1i16_i16:
2079 ; CHECK:       # %bb.0: # %entry
2080 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu
2081 ; CHECK-NEXT:    vmv1r.v v10, v0
2082 ; CHECK-NEXT:    vmv1r.v v0, v9
2083 ; CHECK-NEXT:    vmsne.vi v10, v8, 9, v0.t
2084 ; CHECK-NEXT:    vmv1r.v v0, v10
2085 ; CHECK-NEXT:    ret
2086 entry:
2087   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.mask.nxv1i16.i16(
2088     <vscale x 1 x i1> %0,
2089     <vscale x 1 x i16> %1,
2090     i16 9,
2091     <vscale x 1 x i1> %2,
2092     iXLen %3)
2094   ret <vscale x 1 x i1> %a
2097 define <vscale x 2 x i1> @intrinsic_vmsne_vi_nxv2i16_i16(<vscale x 2 x i16> %0, iXLen %1) nounwind {
2098 ; CHECK-LABEL: intrinsic_vmsne_vi_nxv2i16_i16:
2099 ; CHECK:       # %bb.0: # %entry
2100 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
2101 ; CHECK-NEXT:    vmsne.vi v0, v8, 9
2102 ; CHECK-NEXT:    ret
2103 entry:
2104   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i16.i16(
2105     <vscale x 2 x i16> %0,
2106     i16 9,
2107     iXLen %1)
2109   ret <vscale x 2 x i1> %a
2112 define <vscale x 2 x i1> @intrinsic_vmsne_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 {
2113 ; CHECK-LABEL: intrinsic_vmsne_mask_vi_nxv2i16_i16:
2114 ; CHECK:       # %bb.0: # %entry
2115 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu
2116 ; CHECK-NEXT:    vmv1r.v v10, v0
2117 ; CHECK-NEXT:    vmv1r.v v0, v9
2118 ; CHECK-NEXT:    vmsne.vi v10, v8, 9, v0.t
2119 ; CHECK-NEXT:    vmv1r.v v0, v10
2120 ; CHECK-NEXT:    ret
2121 entry:
2122   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.mask.nxv2i16.i16(
2123     <vscale x 2 x i1> %0,
2124     <vscale x 2 x i16> %1,
2125     i16 9,
2126     <vscale x 2 x i1> %2,
2127     iXLen %3)
2129   ret <vscale x 2 x i1> %a
2132 define <vscale x 4 x i1> @intrinsic_vmsne_vi_nxv4i16_i16(<vscale x 4 x i16> %0, iXLen %1) nounwind {
2133 ; CHECK-LABEL: intrinsic_vmsne_vi_nxv4i16_i16:
2134 ; CHECK:       # %bb.0: # %entry
2135 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
2136 ; CHECK-NEXT:    vmsne.vi v0, v8, 9
2137 ; CHECK-NEXT:    ret
2138 entry:
2139   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i16.i16(
2140     <vscale x 4 x i16> %0,
2141     i16 9,
2142     iXLen %1)
2144   ret <vscale x 4 x i1> %a
2147 define <vscale x 4 x i1> @intrinsic_vmsne_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 {
2148 ; CHECK-LABEL: intrinsic_vmsne_mask_vi_nxv4i16_i16:
2149 ; CHECK:       # %bb.0: # %entry
2150 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu
2151 ; CHECK-NEXT:    vmv1r.v v10, v0
2152 ; CHECK-NEXT:    vmv1r.v v0, v9
2153 ; CHECK-NEXT:    vmsne.vi v10, v8, 9, v0.t
2154 ; CHECK-NEXT:    vmv.v.v v0, v10
2155 ; CHECK-NEXT:    ret
2156 entry:
2157   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.mask.nxv4i16.i16(
2158     <vscale x 4 x i1> %0,
2159     <vscale x 4 x i16> %1,
2160     i16 9,
2161     <vscale x 4 x i1> %2,
2162     iXLen %3)
2164   ret <vscale x 4 x i1> %a
2167 define <vscale x 8 x i1> @intrinsic_vmsne_vi_nxv8i16_i16(<vscale x 8 x i16> %0, iXLen %1) nounwind {
2168 ; CHECK-LABEL: intrinsic_vmsne_vi_nxv8i16_i16:
2169 ; CHECK:       # %bb.0: # %entry
2170 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
2171 ; CHECK-NEXT:    vmsne.vi v0, v8, 9
2172 ; CHECK-NEXT:    ret
2173 entry:
2174   %a = call <vscale x 8 x i1> @llvm.riscv.vmsne.nxv8i16.i16(
2175     <vscale x 8 x i16> %0,
2176     i16 9,
2177     iXLen %1)
2179   ret <vscale x 8 x i1> %a
2182 define <vscale x 8 x i1> @intrinsic_vmsne_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 {
2183 ; CHECK-LABEL: intrinsic_vmsne_mask_vi_nxv8i16_i16:
2184 ; CHECK:       # %bb.0: # %entry
2185 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu
2186 ; CHECK-NEXT:    vmv1r.v v11, v0
2187 ; CHECK-NEXT:    vmv1r.v v0, v10
2188 ; CHECK-NEXT:    vmsne.vi v11, v8, 9, v0.t
2189 ; CHECK-NEXT:    vmv1r.v v0, v11
2190 ; CHECK-NEXT:    ret
2191 entry:
2192   %a = call <vscale x 8 x i1> @llvm.riscv.vmsne.mask.nxv8i16.i16(
2193     <vscale x 8 x i1> %0,
2194     <vscale x 8 x i16> %1,
2195     i16 9,
2196     <vscale x 8 x i1> %2,
2197     iXLen %3)
2199   ret <vscale x 8 x i1> %a
2202 define <vscale x 16 x i1> @intrinsic_vmsne_vi_nxv16i16_i16(<vscale x 16 x i16> %0, iXLen %1) nounwind {
2203 ; CHECK-LABEL: intrinsic_vmsne_vi_nxv16i16_i16:
2204 ; CHECK:       # %bb.0: # %entry
2205 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2206 ; CHECK-NEXT:    vmsne.vi v0, v8, 9
2207 ; CHECK-NEXT:    ret
2208 entry:
2209   %a = call <vscale x 16 x i1> @llvm.riscv.vmsne.nxv16i16.i16(
2210     <vscale x 16 x i16> %0,
2211     i16 9,
2212     iXLen %1)
2214   ret <vscale x 16 x i1> %a
2217 define <vscale x 16 x i1> @intrinsic_vmsne_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 {
2218 ; CHECK-LABEL: intrinsic_vmsne_mask_vi_nxv16i16_i16:
2219 ; CHECK:       # %bb.0: # %entry
2220 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu
2221 ; CHECK-NEXT:    vmv1r.v v13, v0
2222 ; CHECK-NEXT:    vmv1r.v v0, v12
2223 ; CHECK-NEXT:    vmsne.vi v13, v8, 9, v0.t
2224 ; CHECK-NEXT:    vmv1r.v v0, v13
2225 ; CHECK-NEXT:    ret
2226 entry:
2227   %a = call <vscale x 16 x i1> @llvm.riscv.vmsne.mask.nxv16i16.i16(
2228     <vscale x 16 x i1> %0,
2229     <vscale x 16 x i16> %1,
2230     i16 9,
2231     <vscale x 16 x i1> %2,
2232     iXLen %3)
2234   ret <vscale x 16 x i1> %a
2237 define <vscale x 1 x i1> @intrinsic_vmsne_vi_nxv1i32_i32(<vscale x 1 x i32> %0, iXLen %1) nounwind {
2238 ; CHECK-LABEL: intrinsic_vmsne_vi_nxv1i32_i32:
2239 ; CHECK:       # %bb.0: # %entry
2240 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
2241 ; CHECK-NEXT:    vmsne.vi v0, v8, 9
2242 ; CHECK-NEXT:    ret
2243 entry:
2244   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.nxv1i32.i32(
2245     <vscale x 1 x i32> %0,
2246     i32 9,
2247     iXLen %1)
2249   ret <vscale x 1 x i1> %a
2252 define <vscale x 1 x i1> @intrinsic_vmsne_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 {
2253 ; CHECK-LABEL: intrinsic_vmsne_mask_vi_nxv1i32_i32:
2254 ; CHECK:       # %bb.0: # %entry
2255 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu
2256 ; CHECK-NEXT:    vmv1r.v v10, v0
2257 ; CHECK-NEXT:    vmv1r.v v0, v9
2258 ; CHECK-NEXT:    vmsne.vi v10, v8, 9, v0.t
2259 ; CHECK-NEXT:    vmv1r.v v0, v10
2260 ; CHECK-NEXT:    ret
2261 entry:
2262   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.mask.nxv1i32.i32(
2263     <vscale x 1 x i1> %0,
2264     <vscale x 1 x i32> %1,
2265     i32 9,
2266     <vscale x 1 x i1> %2,
2267     iXLen %3)
2269   ret <vscale x 1 x i1> %a
2272 define <vscale x 2 x i1> @intrinsic_vmsne_vi_nxv2i32_i32(<vscale x 2 x i32> %0, iXLen %1) nounwind {
2273 ; CHECK-LABEL: intrinsic_vmsne_vi_nxv2i32_i32:
2274 ; CHECK:       # %bb.0: # %entry
2275 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
2276 ; CHECK-NEXT:    vmsne.vi v0, v8, 9
2277 ; CHECK-NEXT:    ret
2278 entry:
2279   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i32.i32(
2280     <vscale x 2 x i32> %0,
2281     i32 9,
2282     iXLen %1)
2284   ret <vscale x 2 x i1> %a
2287 define <vscale x 2 x i1> @intrinsic_vmsne_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 {
2288 ; CHECK-LABEL: intrinsic_vmsne_mask_vi_nxv2i32_i32:
2289 ; CHECK:       # %bb.0: # %entry
2290 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu
2291 ; CHECK-NEXT:    vmv1r.v v10, v0
2292 ; CHECK-NEXT:    vmv1r.v v0, v9
2293 ; CHECK-NEXT:    vmsne.vi v10, v8, 9, v0.t
2294 ; CHECK-NEXT:    vmv.v.v v0, v10
2295 ; CHECK-NEXT:    ret
2296 entry:
2297   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.mask.nxv2i32.i32(
2298     <vscale x 2 x i1> %0,
2299     <vscale x 2 x i32> %1,
2300     i32 9,
2301     <vscale x 2 x i1> %2,
2302     iXLen %3)
2304   ret <vscale x 2 x i1> %a
2307 define <vscale x 4 x i1> @intrinsic_vmsne_vi_nxv4i32_i32(<vscale x 4 x i32> %0, iXLen %1) nounwind {
2308 ; CHECK-LABEL: intrinsic_vmsne_vi_nxv4i32_i32:
2309 ; CHECK:       # %bb.0: # %entry
2310 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
2311 ; CHECK-NEXT:    vmsne.vi v0, v8, 9
2312 ; CHECK-NEXT:    ret
2313 entry:
2314   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i32.i32(
2315     <vscale x 4 x i32> %0,
2316     i32 9,
2317     iXLen %1)
2319   ret <vscale x 4 x i1> %a
2322 define <vscale x 4 x i1> @intrinsic_vmsne_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 {
2323 ; CHECK-LABEL: intrinsic_vmsne_mask_vi_nxv4i32_i32:
2324 ; CHECK:       # %bb.0: # %entry
2325 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu
2326 ; CHECK-NEXT:    vmv1r.v v11, v0
2327 ; CHECK-NEXT:    vmv1r.v v0, v10
2328 ; CHECK-NEXT:    vmsne.vi v11, v8, 9, v0.t
2329 ; CHECK-NEXT:    vmv1r.v v0, v11
2330 ; CHECK-NEXT:    ret
2331 entry:
2332   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.mask.nxv4i32.i32(
2333     <vscale x 4 x i1> %0,
2334     <vscale x 4 x i32> %1,
2335     i32 9,
2336     <vscale x 4 x i1> %2,
2337     iXLen %3)
2339   ret <vscale x 4 x i1> %a
2342 define <vscale x 8 x i1> @intrinsic_vmsne_vi_nxv8i32_i32(<vscale x 8 x i32> %0, iXLen %1) nounwind {
2343 ; CHECK-LABEL: intrinsic_vmsne_vi_nxv8i32_i32:
2344 ; CHECK:       # %bb.0: # %entry
2345 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2346 ; CHECK-NEXT:    vmsne.vi v0, v8, 9
2347 ; CHECK-NEXT:    ret
2348 entry:
2349   %a = call <vscale x 8 x i1> @llvm.riscv.vmsne.nxv8i32.i32(
2350     <vscale x 8 x i32> %0,
2351     i32 9,
2352     iXLen %1)
2354   ret <vscale x 8 x i1> %a
2357 define <vscale x 8 x i1> @intrinsic_vmsne_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 {
2358 ; CHECK-LABEL: intrinsic_vmsne_mask_vi_nxv8i32_i32:
2359 ; CHECK:       # %bb.0: # %entry
2360 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu
2361 ; CHECK-NEXT:    vmv1r.v v13, v0
2362 ; CHECK-NEXT:    vmv1r.v v0, v12
2363 ; CHECK-NEXT:    vmsne.vi v13, v8, 9, v0.t
2364 ; CHECK-NEXT:    vmv1r.v v0, v13
2365 ; CHECK-NEXT:    ret
2366 entry:
2367   %a = call <vscale x 8 x i1> @llvm.riscv.vmsne.mask.nxv8i32.i32(
2368     <vscale x 8 x i1> %0,
2369     <vscale x 8 x i32> %1,
2370     i32 9,
2371     <vscale x 8 x i1> %2,
2372     iXLen %3)
2374   ret <vscale x 8 x i1> %a
2377 define <vscale x 1 x i1> @intrinsic_vmsne_vi_nxv1i64_i64(<vscale x 1 x i64> %0, iXLen %1) nounwind {
2378 ; CHECK-LABEL: intrinsic_vmsne_vi_nxv1i64_i64:
2379 ; CHECK:       # %bb.0: # %entry
2380 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2381 ; CHECK-NEXT:    vmsne.vi v0, v8, 9
2382 ; CHECK-NEXT:    ret
2383 entry:
2384   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.nxv1i64.i64(
2385     <vscale x 1 x i64> %0,
2386     i64 9,
2387     iXLen %1)
2389   ret <vscale x 1 x i1> %a
2392 define <vscale x 1 x i1> @intrinsic_vmsne_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 {
2393 ; CHECK-LABEL: intrinsic_vmsne_mask_vi_nxv1i64_i64:
2394 ; CHECK:       # %bb.0: # %entry
2395 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu
2396 ; CHECK-NEXT:    vmv1r.v v10, v0
2397 ; CHECK-NEXT:    vmv1r.v v0, v9
2398 ; CHECK-NEXT:    vmsne.vi v10, v8, 9, v0.t
2399 ; CHECK-NEXT:    vmv.v.v v0, v10
2400 ; CHECK-NEXT:    ret
2401 entry:
2402   %a = call <vscale x 1 x i1> @llvm.riscv.vmsne.mask.nxv1i64.i64(
2403     <vscale x 1 x i1> %0,
2404     <vscale x 1 x i64> %1,
2405     i64 9,
2406     <vscale x 1 x i1> %2,
2407     iXLen %3)
2409   ret <vscale x 1 x i1> %a
2412 define <vscale x 2 x i1> @intrinsic_vmsne_vi_nxv2i64_i64(<vscale x 2 x i64> %0, iXLen %1) nounwind {
2413 ; CHECK-LABEL: intrinsic_vmsne_vi_nxv2i64_i64:
2414 ; CHECK:       # %bb.0: # %entry
2415 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
2416 ; CHECK-NEXT:    vmsne.vi v0, v8, 9
2417 ; CHECK-NEXT:    ret
2418 entry:
2419   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.nxv2i64.i64(
2420     <vscale x 2 x i64> %0,
2421     i64 9,
2422     iXLen %1)
2424   ret <vscale x 2 x i1> %a
2427 define <vscale x 2 x i1> @intrinsic_vmsne_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 {
2428 ; CHECK-LABEL: intrinsic_vmsne_mask_vi_nxv2i64_i64:
2429 ; CHECK:       # %bb.0: # %entry
2430 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu
2431 ; CHECK-NEXT:    vmv1r.v v11, v0
2432 ; CHECK-NEXT:    vmv1r.v v0, v10
2433 ; CHECK-NEXT:    vmsne.vi v11, v8, 9, v0.t
2434 ; CHECK-NEXT:    vmv1r.v v0, v11
2435 ; CHECK-NEXT:    ret
2436 entry:
2437   %a = call <vscale x 2 x i1> @llvm.riscv.vmsne.mask.nxv2i64.i64(
2438     <vscale x 2 x i1> %0,
2439     <vscale x 2 x i64> %1,
2440     i64 9,
2441     <vscale x 2 x i1> %2,
2442     iXLen %3)
2444   ret <vscale x 2 x i1> %a
2447 define <vscale x 4 x i1> @intrinsic_vmsne_vi_nxv4i64_i64(<vscale x 4 x i64> %0, iXLen %1) nounwind {
2448 ; CHECK-LABEL: intrinsic_vmsne_vi_nxv4i64_i64:
2449 ; CHECK:       # %bb.0: # %entry
2450 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
2451 ; CHECK-NEXT:    vmsne.vi v0, v8, 9
2452 ; CHECK-NEXT:    ret
2453 entry:
2454   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.nxv4i64.i64(
2455     <vscale x 4 x i64> %0,
2456     i64 9,
2457     iXLen %1)
2459   ret <vscale x 4 x i1> %a
2462 define <vscale x 4 x i1> @intrinsic_vmsne_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 {
2463 ; CHECK-LABEL: intrinsic_vmsne_mask_vi_nxv4i64_i64:
2464 ; CHECK:       # %bb.0: # %entry
2465 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu
2466 ; CHECK-NEXT:    vmv1r.v v13, v0
2467 ; CHECK-NEXT:    vmv1r.v v0, v12
2468 ; CHECK-NEXT:    vmsne.vi v13, v8, 9, v0.t
2469 ; CHECK-NEXT:    vmv1r.v v0, v13
2470 ; CHECK-NEXT:    ret
2471 entry:
2472   %a = call <vscale x 4 x i1> @llvm.riscv.vmsne.mask.nxv4i64.i64(
2473     <vscale x 4 x i1> %0,
2474     <vscale x 4 x i64> %1,
2475     i64 9,
2476     <vscale x 4 x i1> %2,
2477     iXLen %3)
2479   ret <vscale x 4 x i1> %a