Revert "[InstCombine] Support gep nuw in icmp folds" (#118698)
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vmfle.ll
blobef5de6bc3481fb868b8a3ea82b6c2d227112e153
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,+zvfh \
3 ; RUN:   -verify-machineinstrs -target-abi=ilp32d | FileCheck %s
4 ; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+zvfh \
5 ; RUN:   -verify-machineinstrs -target-abi=lp64d | FileCheck %s
7 declare <vscale x 1 x i1> @llvm.riscv.vmfle.nxv1f16(
8   <vscale x 1 x half>,
9   <vscale x 1 x half>,
10   iXLen);
12 define <vscale x 1 x i1> @intrinsic_vmfle_vv_nxv1f16_nxv1f16(<vscale x 1 x half> %0, <vscale x 1 x half> %1, iXLen %2) nounwind {
13 ; CHECK-LABEL: intrinsic_vmfle_vv_nxv1f16_nxv1f16:
14 ; CHECK:       # %bb.0: # %entry
15 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
16 ; CHECK-NEXT:    vmfle.vv v0, v8, v9
17 ; CHECK-NEXT:    ret
18 entry:
19   %a = call <vscale x 1 x i1> @llvm.riscv.vmfle.nxv1f16(
20     <vscale x 1 x half> %0,
21     <vscale x 1 x half> %1,
22     iXLen %2)
24   ret <vscale x 1 x i1> %a
27 declare <vscale x 1 x i1> @llvm.riscv.vmfle.mask.nxv1f16(
28   <vscale x 1 x i1>,
29   <vscale x 1 x half>,
30   <vscale x 1 x half>,
31   <vscale x 1 x i1>,
32   iXLen);
34 define <vscale x 1 x i1> @intrinsic_vmfle_mask_vv_nxv1f16_nxv1f16(<vscale x 1 x i1> %0, <vscale x 1 x half> %1, <vscale x 1 x half> %2, <vscale x 1 x half> %3, iXLen %4) nounwind {
35 ; CHECK-LABEL: intrinsic_vmfle_mask_vv_nxv1f16_nxv1f16:
36 ; CHECK:       # %bb.0: # %entry
37 ; CHECK-NEXT:    vmv1r.v v11, v0
38 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu
39 ; CHECK-NEXT:    vmfle.vv v0, v8, v9
40 ; CHECK-NEXT:    vmfle.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.vmfle.nxv1f16(
45     <vscale x 1 x half> %1,
46     <vscale x 1 x half> %2,
47     iXLen %4)
48   %a = call <vscale x 1 x i1> @llvm.riscv.vmfle.mask.nxv1f16(
49     <vscale x 1 x i1> %0,
50     <vscale x 1 x half> %2,
51     <vscale x 1 x half> %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.vmfle.nxv2f16(
59   <vscale x 2 x half>,
60   <vscale x 2 x half>,
61   iXLen);
63 define <vscale x 2 x i1> @intrinsic_vmfle_vv_nxv2f16_nxv2f16(<vscale x 2 x half> %0, <vscale x 2 x half> %1, iXLen %2) nounwind {
64 ; CHECK-LABEL: intrinsic_vmfle_vv_nxv2f16_nxv2f16:
65 ; CHECK:       # %bb.0: # %entry
66 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
67 ; CHECK-NEXT:    vmfle.vv v0, v8, v9
68 ; CHECK-NEXT:    ret
69 entry:
70   %a = call <vscale x 2 x i1> @llvm.riscv.vmfle.nxv2f16(
71     <vscale x 2 x half> %0,
72     <vscale x 2 x half> %1,
73     iXLen %2)
75   ret <vscale x 2 x i1> %a
78 declare <vscale x 2 x i1> @llvm.riscv.vmfle.mask.nxv2f16(
79   <vscale x 2 x i1>,
80   <vscale x 2 x half>,
81   <vscale x 2 x half>,
82   <vscale x 2 x i1>,
83   iXLen);
85 define <vscale x 2 x i1> @intrinsic_vmfle_mask_vv_nxv2f16_nxv2f16(<vscale x 2 x i1> %0, <vscale x 2 x half> %1, <vscale x 2 x half> %2, <vscale x 2 x half> %3, iXLen %4) nounwind {
86 ; CHECK-LABEL: intrinsic_vmfle_mask_vv_nxv2f16_nxv2f16:
87 ; CHECK:       # %bb.0: # %entry
88 ; CHECK-NEXT:    vmv1r.v v11, v0
89 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu
90 ; CHECK-NEXT:    vmfle.vv v0, v8, v9
91 ; CHECK-NEXT:    vmfle.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.vmfle.nxv2f16(
96     <vscale x 2 x half> %1,
97     <vscale x 2 x half> %2,
98     iXLen %4)
99   %a = call <vscale x 2 x i1> @llvm.riscv.vmfle.mask.nxv2f16(
100     <vscale x 2 x i1> %0,
101     <vscale x 2 x half> %2,
102     <vscale x 2 x half> %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.vmfle.nxv4f16(
110   <vscale x 4 x half>,
111   <vscale x 4 x half>,
112   iXLen);
114 define <vscale x 4 x i1> @intrinsic_vmfle_vv_nxv4f16_nxv4f16(<vscale x 4 x half> %0, <vscale x 4 x half> %1, iXLen %2) nounwind {
115 ; CHECK-LABEL: intrinsic_vmfle_vv_nxv4f16_nxv4f16:
116 ; CHECK:       # %bb.0: # %entry
117 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
118 ; CHECK-NEXT:    vmfle.vv v0, v8, v9
119 ; CHECK-NEXT:    ret
120 entry:
121   %a = call <vscale x 4 x i1> @llvm.riscv.vmfle.nxv4f16(
122     <vscale x 4 x half> %0,
123     <vscale x 4 x half> %1,
124     iXLen %2)
126   ret <vscale x 4 x i1> %a
129 declare <vscale x 4 x i1> @llvm.riscv.vmfle.mask.nxv4f16(
130   <vscale x 4 x i1>,
131   <vscale x 4 x half>,
132   <vscale x 4 x half>,
133   <vscale x 4 x i1>,
134   iXLen);
136 define <vscale x 4 x i1> @intrinsic_vmfle_mask_vv_nxv4f16_nxv4f16(<vscale x 4 x i1> %0, <vscale x 4 x half> %1, <vscale x 4 x half> %2, <vscale x 4 x half> %3, iXLen %4) nounwind {
137 ; CHECK-LABEL: intrinsic_vmfle_mask_vv_nxv4f16_nxv4f16:
138 ; CHECK:       # %bb.0: # %entry
139 ; CHECK-NEXT:    vmv1r.v v11, v0
140 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu
141 ; CHECK-NEXT:    vmfle.vv v0, v8, v9
142 ; CHECK-NEXT:    vmfle.vv v11, v9, v10, v0.t
143 ; CHECK-NEXT:    vmv.v.v v0, v11
144 ; CHECK-NEXT:    ret
145 entry:
146   %mask = call <vscale x 4 x i1> @llvm.riscv.vmfle.nxv4f16(
147     <vscale x 4 x half> %1,
148     <vscale x 4 x half> %2,
149     iXLen %4)
150   %a = call <vscale x 4 x i1> @llvm.riscv.vmfle.mask.nxv4f16(
151     <vscale x 4 x i1> %0,
152     <vscale x 4 x half> %2,
153     <vscale x 4 x half> %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.vmfle.nxv8f16(
161   <vscale x 8 x half>,
162   <vscale x 8 x half>,
163   iXLen);
165 define <vscale x 8 x i1> @intrinsic_vmfle_vv_nxv8f16_nxv8f16(<vscale x 8 x half> %0, <vscale x 8 x half> %1, iXLen %2) nounwind {
166 ; CHECK-LABEL: intrinsic_vmfle_vv_nxv8f16_nxv8f16:
167 ; CHECK:       # %bb.0: # %entry
168 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
169 ; CHECK-NEXT:    vmfle.vv v0, v8, v10
170 ; CHECK-NEXT:    ret
171 entry:
172   %a = call <vscale x 8 x i1> @llvm.riscv.vmfle.nxv8f16(
173     <vscale x 8 x half> %0,
174     <vscale x 8 x half> %1,
175     iXLen %2)
177   ret <vscale x 8 x i1> %a
180 declare <vscale x 8 x i1> @llvm.riscv.vmfle.mask.nxv8f16(
181   <vscale x 8 x i1>,
182   <vscale x 8 x half>,
183   <vscale x 8 x half>,
184   <vscale x 8 x i1>,
185   iXLen);
187 define <vscale x 8 x i1> @intrinsic_vmfle_mask_vv_nxv8f16_nxv8f16(<vscale x 8 x i1> %0, <vscale x 8 x half> %1, <vscale x 8 x half> %2, <vscale x 8 x half> %3, iXLen %4) nounwind {
188 ; CHECK-LABEL: intrinsic_vmfle_mask_vv_nxv8f16_nxv8f16:
189 ; CHECK:       # %bb.0: # %entry
190 ; CHECK-NEXT:    vmv1r.v v14, v0
191 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu
192 ; CHECK-NEXT:    vmfle.vv v0, v8, v10
193 ; CHECK-NEXT:    vmfle.vv v14, v10, v12, v0.t
194 ; CHECK-NEXT:    vmv1r.v v0, v14
195 ; CHECK-NEXT:    ret
196 entry:
197   %mask = call <vscale x 8 x i1> @llvm.riscv.vmfle.nxv8f16(
198     <vscale x 8 x half> %1,
199     <vscale x 8 x half> %2,
200     iXLen %4)
201   %a = call <vscale x 8 x i1> @llvm.riscv.vmfle.mask.nxv8f16(
202     <vscale x 8 x i1> %0,
203     <vscale x 8 x half> %2,
204     <vscale x 8 x half> %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.vmfle.nxv16f16(
212   <vscale x 16 x half>,
213   <vscale x 16 x half>,
214   iXLen);
216 define <vscale x 16 x i1> @intrinsic_vmfle_vv_nxv16f16_nxv16f16(<vscale x 16 x half> %0, <vscale x 16 x half> %1, iXLen %2) nounwind {
217 ; CHECK-LABEL: intrinsic_vmfle_vv_nxv16f16_nxv16f16:
218 ; CHECK:       # %bb.0: # %entry
219 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
220 ; CHECK-NEXT:    vmfle.vv v0, v8, v12
221 ; CHECK-NEXT:    ret
222 entry:
223   %a = call <vscale x 16 x i1> @llvm.riscv.vmfle.nxv16f16(
224     <vscale x 16 x half> %0,
225     <vscale x 16 x half> %1,
226     iXLen %2)
228   ret <vscale x 16 x i1> %a
231 declare <vscale x 16 x i1> @llvm.riscv.vmfle.mask.nxv16f16(
232   <vscale x 16 x i1>,
233   <vscale x 16 x half>,
234   <vscale x 16 x half>,
235   <vscale x 16 x i1>,
236   iXLen);
238 define <vscale x 16 x i1> @intrinsic_vmfle_mask_vv_nxv16f16_nxv16f16(<vscale x 16 x i1> %0, <vscale x 16 x half> %1, <vscale x 16 x half> %2, <vscale x 16 x half> %3, iXLen %4) nounwind {
239 ; CHECK-LABEL: intrinsic_vmfle_mask_vv_nxv16f16_nxv16f16:
240 ; CHECK:       # %bb.0: # %entry
241 ; CHECK-NEXT:    vmv1r.v v20, v0
242 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu
243 ; CHECK-NEXT:    vmfle.vv v0, v8, v12
244 ; CHECK-NEXT:    vmfle.vv v20, v12, v16, v0.t
245 ; CHECK-NEXT:    vmv1r.v v0, v20
246 ; CHECK-NEXT:    ret
247 entry:
248   %mask = call <vscale x 16 x i1> @llvm.riscv.vmfle.nxv16f16(
249     <vscale x 16 x half> %1,
250     <vscale x 16 x half> %2,
251     iXLen %4)
252   %a = call <vscale x 16 x i1> @llvm.riscv.vmfle.mask.nxv16f16(
253     <vscale x 16 x i1> %0,
254     <vscale x 16 x half> %2,
255     <vscale x 16 x half> %3,
256     <vscale x 16 x i1> %mask,
257     iXLen %4)
259   ret <vscale x 16 x i1> %a
262 declare <vscale x 1 x i1> @llvm.riscv.vmfle.nxv1f32(
263   <vscale x 1 x float>,
264   <vscale x 1 x float>,
265   iXLen);
267 define <vscale x 1 x i1> @intrinsic_vmfle_vv_nxv1f32_nxv1f32(<vscale x 1 x float> %0, <vscale x 1 x float> %1, iXLen %2) nounwind {
268 ; CHECK-LABEL: intrinsic_vmfle_vv_nxv1f32_nxv1f32:
269 ; CHECK:       # %bb.0: # %entry
270 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
271 ; CHECK-NEXT:    vmfle.vv v0, v8, v9
272 ; CHECK-NEXT:    ret
273 entry:
274   %a = call <vscale x 1 x i1> @llvm.riscv.vmfle.nxv1f32(
275     <vscale x 1 x float> %0,
276     <vscale x 1 x float> %1,
277     iXLen %2)
279   ret <vscale x 1 x i1> %a
282 declare <vscale x 1 x i1> @llvm.riscv.vmfle.mask.nxv1f32(
283   <vscale x 1 x i1>,
284   <vscale x 1 x float>,
285   <vscale x 1 x float>,
286   <vscale x 1 x i1>,
287   iXLen);
289 define <vscale x 1 x i1> @intrinsic_vmfle_mask_vv_nxv1f32_nxv1f32(<vscale x 1 x i1> %0, <vscale x 1 x float> %1, <vscale x 1 x float> %2, <vscale x 1 x float> %3, iXLen %4) nounwind {
290 ; CHECK-LABEL: intrinsic_vmfle_mask_vv_nxv1f32_nxv1f32:
291 ; CHECK:       # %bb.0: # %entry
292 ; CHECK-NEXT:    vmv1r.v v11, v0
293 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu
294 ; CHECK-NEXT:    vmfle.vv v0, v8, v9
295 ; CHECK-NEXT:    vmfle.vv v11, v9, v10, v0.t
296 ; CHECK-NEXT:    vmv1r.v v0, v11
297 ; CHECK-NEXT:    ret
298 entry:
299   %mask = call <vscale x 1 x i1> @llvm.riscv.vmfle.nxv1f32(
300     <vscale x 1 x float> %1,
301     <vscale x 1 x float> %2,
302     iXLen %4)
303   %a = call <vscale x 1 x i1> @llvm.riscv.vmfle.mask.nxv1f32(
304     <vscale x 1 x i1> %0,
305     <vscale x 1 x float> %2,
306     <vscale x 1 x float> %3,
307     <vscale x 1 x i1> %mask,
308     iXLen %4)
310   ret <vscale x 1 x i1> %a
313 declare <vscale x 2 x i1> @llvm.riscv.vmfle.nxv2f32(
314   <vscale x 2 x float>,
315   <vscale x 2 x float>,
316   iXLen);
318 define <vscale x 2 x i1> @intrinsic_vmfle_vv_nxv2f32_nxv2f32(<vscale x 2 x float> %0, <vscale x 2 x float> %1, iXLen %2) nounwind {
319 ; CHECK-LABEL: intrinsic_vmfle_vv_nxv2f32_nxv2f32:
320 ; CHECK:       # %bb.0: # %entry
321 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
322 ; CHECK-NEXT:    vmfle.vv v0, v8, v9
323 ; CHECK-NEXT:    ret
324 entry:
325   %a = call <vscale x 2 x i1> @llvm.riscv.vmfle.nxv2f32(
326     <vscale x 2 x float> %0,
327     <vscale x 2 x float> %1,
328     iXLen %2)
330   ret <vscale x 2 x i1> %a
333 declare <vscale x 2 x i1> @llvm.riscv.vmfle.mask.nxv2f32(
334   <vscale x 2 x i1>,
335   <vscale x 2 x float>,
336   <vscale x 2 x float>,
337   <vscale x 2 x i1>,
338   iXLen);
340 define <vscale x 2 x i1> @intrinsic_vmfle_mask_vv_nxv2f32_nxv2f32(<vscale x 2 x i1> %0, <vscale x 2 x float> %1, <vscale x 2 x float> %2, <vscale x 2 x float> %3, iXLen %4) nounwind {
341 ; CHECK-LABEL: intrinsic_vmfle_mask_vv_nxv2f32_nxv2f32:
342 ; CHECK:       # %bb.0: # %entry
343 ; CHECK-NEXT:    vmv1r.v v11, v0
344 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu
345 ; CHECK-NEXT:    vmfle.vv v0, v8, v9
346 ; CHECK-NEXT:    vmfle.vv v11, v9, v10, v0.t
347 ; CHECK-NEXT:    vmv.v.v v0, v11
348 ; CHECK-NEXT:    ret
349 entry:
350   %mask = call <vscale x 2 x i1> @llvm.riscv.vmfle.nxv2f32(
351     <vscale x 2 x float> %1,
352     <vscale x 2 x float> %2,
353     iXLen %4)
354   %a = call <vscale x 2 x i1> @llvm.riscv.vmfle.mask.nxv2f32(
355     <vscale x 2 x i1> %0,
356     <vscale x 2 x float> %2,
357     <vscale x 2 x float> %3,
358     <vscale x 2 x i1> %mask,
359     iXLen %4)
361   ret <vscale x 2 x i1> %a
364 declare <vscale x 4 x i1> @llvm.riscv.vmfle.nxv4f32(
365   <vscale x 4 x float>,
366   <vscale x 4 x float>,
367   iXLen);
369 define <vscale x 4 x i1> @intrinsic_vmfle_vv_nxv4f32_nxv4f32(<vscale x 4 x float> %0, <vscale x 4 x float> %1, iXLen %2) nounwind {
370 ; CHECK-LABEL: intrinsic_vmfle_vv_nxv4f32_nxv4f32:
371 ; CHECK:       # %bb.0: # %entry
372 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
373 ; CHECK-NEXT:    vmfle.vv v0, v8, v10
374 ; CHECK-NEXT:    ret
375 entry:
376   %a = call <vscale x 4 x i1> @llvm.riscv.vmfle.nxv4f32(
377     <vscale x 4 x float> %0,
378     <vscale x 4 x float> %1,
379     iXLen %2)
381   ret <vscale x 4 x i1> %a
384 declare <vscale x 4 x i1> @llvm.riscv.vmfle.mask.nxv4f32(
385   <vscale x 4 x i1>,
386   <vscale x 4 x float>,
387   <vscale x 4 x float>,
388   <vscale x 4 x i1>,
389   iXLen);
391 define <vscale x 4 x i1> @intrinsic_vmfle_mask_vv_nxv4f32_nxv4f32(<vscale x 4 x i1> %0, <vscale x 4 x float> %1, <vscale x 4 x float> %2, <vscale x 4 x float> %3, iXLen %4) nounwind {
392 ; CHECK-LABEL: intrinsic_vmfle_mask_vv_nxv4f32_nxv4f32:
393 ; CHECK:       # %bb.0: # %entry
394 ; CHECK-NEXT:    vmv1r.v v14, v0
395 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu
396 ; CHECK-NEXT:    vmfle.vv v0, v8, v10
397 ; CHECK-NEXT:    vmfle.vv v14, v10, v12, v0.t
398 ; CHECK-NEXT:    vmv1r.v v0, v14
399 ; CHECK-NEXT:    ret
400 entry:
401   %mask = call <vscale x 4 x i1> @llvm.riscv.vmfle.nxv4f32(
402     <vscale x 4 x float> %1,
403     <vscale x 4 x float> %2,
404     iXLen %4)
405   %a = call <vscale x 4 x i1> @llvm.riscv.vmfle.mask.nxv4f32(
406     <vscale x 4 x i1> %0,
407     <vscale x 4 x float> %2,
408     <vscale x 4 x float> %3,
409     <vscale x 4 x i1> %mask,
410     iXLen %4)
412   ret <vscale x 4 x i1> %a
415 declare <vscale x 8 x i1> @llvm.riscv.vmfle.nxv8f32(
416   <vscale x 8 x float>,
417   <vscale x 8 x float>,
418   iXLen);
420 define <vscale x 8 x i1> @intrinsic_vmfle_vv_nxv8f32_nxv8f32(<vscale x 8 x float> %0, <vscale x 8 x float> %1, iXLen %2) nounwind {
421 ; CHECK-LABEL: intrinsic_vmfle_vv_nxv8f32_nxv8f32:
422 ; CHECK:       # %bb.0: # %entry
423 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
424 ; CHECK-NEXT:    vmfle.vv v0, v8, v12
425 ; CHECK-NEXT:    ret
426 entry:
427   %a = call <vscale x 8 x i1> @llvm.riscv.vmfle.nxv8f32(
428     <vscale x 8 x float> %0,
429     <vscale x 8 x float> %1,
430     iXLen %2)
432   ret <vscale x 8 x i1> %a
435 declare <vscale x 8 x i1> @llvm.riscv.vmfle.mask.nxv8f32(
436   <vscale x 8 x i1>,
437   <vscale x 8 x float>,
438   <vscale x 8 x float>,
439   <vscale x 8 x i1>,
440   iXLen);
442 define <vscale x 8 x i1> @intrinsic_vmfle_mask_vv_nxv8f32_nxv8f32(<vscale x 8 x i1> %0, <vscale x 8 x float> %1, <vscale x 8 x float> %2, <vscale x 8 x float> %3, iXLen %4) nounwind {
443 ; CHECK-LABEL: intrinsic_vmfle_mask_vv_nxv8f32_nxv8f32:
444 ; CHECK:       # %bb.0: # %entry
445 ; CHECK-NEXT:    vmv1r.v v20, v0
446 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu
447 ; CHECK-NEXT:    vmfle.vv v0, v8, v12
448 ; CHECK-NEXT:    vmfle.vv v20, v12, v16, v0.t
449 ; CHECK-NEXT:    vmv1r.v v0, v20
450 ; CHECK-NEXT:    ret
451 entry:
452   %mask = call <vscale x 8 x i1> @llvm.riscv.vmfle.nxv8f32(
453     <vscale x 8 x float> %1,
454     <vscale x 8 x float> %2,
455     iXLen %4)
456   %a = call <vscale x 8 x i1> @llvm.riscv.vmfle.mask.nxv8f32(
457     <vscale x 8 x i1> %0,
458     <vscale x 8 x float> %2,
459     <vscale x 8 x float> %3,
460     <vscale x 8 x i1> %mask,
461     iXLen %4)
463   ret <vscale x 8 x i1> %a
466 declare <vscale x 1 x i1> @llvm.riscv.vmfle.nxv1f64(
467   <vscale x 1 x double>,
468   <vscale x 1 x double>,
469   iXLen);
471 define <vscale x 1 x i1> @intrinsic_vmfle_vv_nxv1f64_nxv1f64(<vscale x 1 x double> %0, <vscale x 1 x double> %1, iXLen %2) nounwind {
472 ; CHECK-LABEL: intrinsic_vmfle_vv_nxv1f64_nxv1f64:
473 ; CHECK:       # %bb.0: # %entry
474 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
475 ; CHECK-NEXT:    vmfle.vv v0, v8, v9
476 ; CHECK-NEXT:    ret
477 entry:
478   %a = call <vscale x 1 x i1> @llvm.riscv.vmfle.nxv1f64(
479     <vscale x 1 x double> %0,
480     <vscale x 1 x double> %1,
481     iXLen %2)
483   ret <vscale x 1 x i1> %a
486 declare <vscale x 1 x i1> @llvm.riscv.vmfle.mask.nxv1f64(
487   <vscale x 1 x i1>,
488   <vscale x 1 x double>,
489   <vscale x 1 x double>,
490   <vscale x 1 x i1>,
491   iXLen);
493 define <vscale x 1 x i1> @intrinsic_vmfle_mask_vv_nxv1f64_nxv1f64(<vscale x 1 x i1> %0, <vscale x 1 x double> %1, <vscale x 1 x double> %2, <vscale x 1 x double> %3, iXLen %4) nounwind {
494 ; CHECK-LABEL: intrinsic_vmfle_mask_vv_nxv1f64_nxv1f64:
495 ; CHECK:       # %bb.0: # %entry
496 ; CHECK-NEXT:    vmv1r.v v11, v0
497 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu
498 ; CHECK-NEXT:    vmfle.vv v0, v8, v9
499 ; CHECK-NEXT:    vmfle.vv v11, v9, v10, v0.t
500 ; CHECK-NEXT:    vmv.v.v v0, v11
501 ; CHECK-NEXT:    ret
502 entry:
503   %mask = call <vscale x 1 x i1> @llvm.riscv.vmfle.nxv1f64(
504     <vscale x 1 x double> %1,
505     <vscale x 1 x double> %2,
506     iXLen %4)
507   %a = call <vscale x 1 x i1> @llvm.riscv.vmfle.mask.nxv1f64(
508     <vscale x 1 x i1> %0,
509     <vscale x 1 x double> %2,
510     <vscale x 1 x double> %3,
511     <vscale x 1 x i1> %mask,
512     iXLen %4)
514   ret <vscale x 1 x i1> %a
517 declare <vscale x 2 x i1> @llvm.riscv.vmfle.nxv2f64(
518   <vscale x 2 x double>,
519   <vscale x 2 x double>,
520   iXLen);
522 define <vscale x 2 x i1> @intrinsic_vmfle_vv_nxv2f64_nxv2f64(<vscale x 2 x double> %0, <vscale x 2 x double> %1, iXLen %2) nounwind {
523 ; CHECK-LABEL: intrinsic_vmfle_vv_nxv2f64_nxv2f64:
524 ; CHECK:       # %bb.0: # %entry
525 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
526 ; CHECK-NEXT:    vmfle.vv v0, v8, v10
527 ; CHECK-NEXT:    ret
528 entry:
529   %a = call <vscale x 2 x i1> @llvm.riscv.vmfle.nxv2f64(
530     <vscale x 2 x double> %0,
531     <vscale x 2 x double> %1,
532     iXLen %2)
534   ret <vscale x 2 x i1> %a
537 declare <vscale x 2 x i1> @llvm.riscv.vmfle.mask.nxv2f64(
538   <vscale x 2 x i1>,
539   <vscale x 2 x double>,
540   <vscale x 2 x double>,
541   <vscale x 2 x i1>,
542   iXLen);
544 define <vscale x 2 x i1> @intrinsic_vmfle_mask_vv_nxv2f64_nxv2f64(<vscale x 2 x i1> %0, <vscale x 2 x double> %1, <vscale x 2 x double> %2, <vscale x 2 x double> %3, iXLen %4) nounwind {
545 ; CHECK-LABEL: intrinsic_vmfle_mask_vv_nxv2f64_nxv2f64:
546 ; CHECK:       # %bb.0: # %entry
547 ; CHECK-NEXT:    vmv1r.v v14, v0
548 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu
549 ; CHECK-NEXT:    vmfle.vv v0, v8, v10
550 ; CHECK-NEXT:    vmfle.vv v14, v10, v12, v0.t
551 ; CHECK-NEXT:    vmv1r.v v0, v14
552 ; CHECK-NEXT:    ret
553 entry:
554   %mask = call <vscale x 2 x i1> @llvm.riscv.vmfle.nxv2f64(
555     <vscale x 2 x double> %1,
556     <vscale x 2 x double> %2,
557     iXLen %4)
558   %a = call <vscale x 2 x i1> @llvm.riscv.vmfle.mask.nxv2f64(
559     <vscale x 2 x i1> %0,
560     <vscale x 2 x double> %2,
561     <vscale x 2 x double> %3,
562     <vscale x 2 x i1> %mask,
563     iXLen %4)
565   ret <vscale x 2 x i1> %a
568 declare <vscale x 4 x i1> @llvm.riscv.vmfle.nxv4f64(
569   <vscale x 4 x double>,
570   <vscale x 4 x double>,
571   iXLen);
573 define <vscale x 4 x i1> @intrinsic_vmfle_vv_nxv4f64_nxv4f64(<vscale x 4 x double> %0, <vscale x 4 x double> %1, iXLen %2) nounwind {
574 ; CHECK-LABEL: intrinsic_vmfle_vv_nxv4f64_nxv4f64:
575 ; CHECK:       # %bb.0: # %entry
576 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
577 ; CHECK-NEXT:    vmfle.vv v0, v8, v12
578 ; CHECK-NEXT:    ret
579 entry:
580   %a = call <vscale x 4 x i1> @llvm.riscv.vmfle.nxv4f64(
581     <vscale x 4 x double> %0,
582     <vscale x 4 x double> %1,
583     iXLen %2)
585   ret <vscale x 4 x i1> %a
588 declare <vscale x 4 x i1> @llvm.riscv.vmfle.mask.nxv4f64(
589   <vscale x 4 x i1>,
590   <vscale x 4 x double>,
591   <vscale x 4 x double>,
592   <vscale x 4 x i1>,
593   iXLen);
595 define <vscale x 4 x i1> @intrinsic_vmfle_mask_vv_nxv4f64_nxv4f64(<vscale x 4 x i1> %0, <vscale x 4 x double> %1, <vscale x 4 x double> %2, <vscale x 4 x double> %3, iXLen %4) nounwind {
596 ; CHECK-LABEL: intrinsic_vmfle_mask_vv_nxv4f64_nxv4f64:
597 ; CHECK:       # %bb.0: # %entry
598 ; CHECK-NEXT:    vmv1r.v v20, v0
599 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu
600 ; CHECK-NEXT:    vmfle.vv v0, v8, v12
601 ; CHECK-NEXT:    vmfle.vv v20, v12, v16, v0.t
602 ; CHECK-NEXT:    vmv1r.v v0, v20
603 ; CHECK-NEXT:    ret
604 entry:
605   %mask = call <vscale x 4 x i1> @llvm.riscv.vmfle.nxv4f64(
606     <vscale x 4 x double> %1,
607     <vscale x 4 x double> %2,
608     iXLen %4)
609   %a = call <vscale x 4 x i1> @llvm.riscv.vmfle.mask.nxv4f64(
610     <vscale x 4 x i1> %0,
611     <vscale x 4 x double> %2,
612     <vscale x 4 x double> %3,
613     <vscale x 4 x i1> %mask,
614     iXLen %4)
616   ret <vscale x 4 x i1> %a
619 declare <vscale x 1 x i1> @llvm.riscv.vmfle.nxv1f16.f16(
620   <vscale x 1 x half>,
621   half,
622   iXLen);
624 define <vscale x 1 x i1> @intrinsic_vmfle_vf_nxv1f16_f16(<vscale x 1 x half> %0, half %1, iXLen %2) nounwind {
625 ; CHECK-LABEL: intrinsic_vmfle_vf_nxv1f16_f16:
626 ; CHECK:       # %bb.0: # %entry
627 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
628 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
629 ; CHECK-NEXT:    ret
630 entry:
631   %a = call <vscale x 1 x i1> @llvm.riscv.vmfle.nxv1f16.f16(
632     <vscale x 1 x half> %0,
633     half %1,
634     iXLen %2)
636   ret <vscale x 1 x i1> %a
639 declare <vscale x 1 x i1> @llvm.riscv.vmfle.mask.nxv1f16.f16(
640   <vscale x 1 x i1>,
641   <vscale x 1 x half>,
642   half,
643   <vscale x 1 x i1>,
644   iXLen);
646 define <vscale x 1 x i1> @intrinsic_vmfle_mask_vf_nxv1f16_f16(<vscale x 1 x i1> %0, <vscale x 1 x half> %1, half %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
647 ; CHECK-LABEL: intrinsic_vmfle_mask_vf_nxv1f16_f16:
648 ; CHECK:       # %bb.0: # %entry
649 ; CHECK-NEXT:    vmv1r.v v10, v0
650 ; CHECK-NEXT:    vmv1r.v v0, v9
651 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu
652 ; CHECK-NEXT:    vmfle.vf v10, v8, fa0, v0.t
653 ; CHECK-NEXT:    vmv1r.v v0, v10
654 ; CHECK-NEXT:    ret
655 entry:
656   %a = call <vscale x 1 x i1> @llvm.riscv.vmfle.mask.nxv1f16.f16(
657     <vscale x 1 x i1> %0,
658     <vscale x 1 x half> %1,
659     half %2,
660     <vscale x 1 x i1> %3,
661     iXLen %4)
663   ret <vscale x 1 x i1> %a
666 declare <vscale x 2 x i1> @llvm.riscv.vmfle.nxv2f16.f16(
667   <vscale x 2 x half>,
668   half,
669   iXLen);
671 define <vscale x 2 x i1> @intrinsic_vmfle_vf_nxv2f16_f16(<vscale x 2 x half> %0, half %1, iXLen %2) nounwind {
672 ; CHECK-LABEL: intrinsic_vmfle_vf_nxv2f16_f16:
673 ; CHECK:       # %bb.0: # %entry
674 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
675 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
676 ; CHECK-NEXT:    ret
677 entry:
678   %a = call <vscale x 2 x i1> @llvm.riscv.vmfle.nxv2f16.f16(
679     <vscale x 2 x half> %0,
680     half %1,
681     iXLen %2)
683   ret <vscale x 2 x i1> %a
686 declare <vscale x 2 x i1> @llvm.riscv.vmfle.mask.nxv2f16.f16(
687   <vscale x 2 x i1>,
688   <vscale x 2 x half>,
689   half,
690   <vscale x 2 x i1>,
691   iXLen);
693 define <vscale x 2 x i1> @intrinsic_vmfle_mask_vf_nxv2f16_f16(<vscale x 2 x i1> %0, <vscale x 2 x half> %1, half %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
694 ; CHECK-LABEL: intrinsic_vmfle_mask_vf_nxv2f16_f16:
695 ; CHECK:       # %bb.0: # %entry
696 ; CHECK-NEXT:    vmv1r.v v10, v0
697 ; CHECK-NEXT:    vmv1r.v v0, v9
698 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu
699 ; CHECK-NEXT:    vmfle.vf v10, v8, fa0, v0.t
700 ; CHECK-NEXT:    vmv1r.v v0, v10
701 ; CHECK-NEXT:    ret
702 entry:
703   %a = call <vscale x 2 x i1> @llvm.riscv.vmfle.mask.nxv2f16.f16(
704     <vscale x 2 x i1> %0,
705     <vscale x 2 x half> %1,
706     half %2,
707     <vscale x 2 x i1> %3,
708     iXLen %4)
710   ret <vscale x 2 x i1> %a
713 declare <vscale x 4 x i1> @llvm.riscv.vmfle.nxv4f16.f16(
714   <vscale x 4 x half>,
715   half,
716   iXLen);
718 define <vscale x 4 x i1> @intrinsic_vmfle_vf_nxv4f16_f16(<vscale x 4 x half> %0, half %1, iXLen %2) nounwind {
719 ; CHECK-LABEL: intrinsic_vmfle_vf_nxv4f16_f16:
720 ; CHECK:       # %bb.0: # %entry
721 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
722 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
723 ; CHECK-NEXT:    ret
724 entry:
725   %a = call <vscale x 4 x i1> @llvm.riscv.vmfle.nxv4f16.f16(
726     <vscale x 4 x half> %0,
727     half %1,
728     iXLen %2)
730   ret <vscale x 4 x i1> %a
733 declare <vscale x 4 x i1> @llvm.riscv.vmfle.mask.nxv4f16.f16(
734   <vscale x 4 x i1>,
735   <vscale x 4 x half>,
736   half,
737   <vscale x 4 x i1>,
738   iXLen);
740 define <vscale x 4 x i1> @intrinsic_vmfle_mask_vf_nxv4f16_f16(<vscale x 4 x i1> %0, <vscale x 4 x half> %1, half %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
741 ; CHECK-LABEL: intrinsic_vmfle_mask_vf_nxv4f16_f16:
742 ; CHECK:       # %bb.0: # %entry
743 ; CHECK-NEXT:    vmv1r.v v10, v0
744 ; CHECK-NEXT:    vmv1r.v v0, v9
745 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu
746 ; CHECK-NEXT:    vmfle.vf v10, v8, fa0, v0.t
747 ; CHECK-NEXT:    vmv.v.v v0, v10
748 ; CHECK-NEXT:    ret
749 entry:
750   %a = call <vscale x 4 x i1> @llvm.riscv.vmfle.mask.nxv4f16.f16(
751     <vscale x 4 x i1> %0,
752     <vscale x 4 x half> %1,
753     half %2,
754     <vscale x 4 x i1> %3,
755     iXLen %4)
757   ret <vscale x 4 x i1> %a
760 declare <vscale x 8 x i1> @llvm.riscv.vmfle.nxv8f16.f16(
761   <vscale x 8 x half>,
762   half,
763   iXLen);
765 define <vscale x 8 x i1> @intrinsic_vmfle_vf_nxv8f16_f16(<vscale x 8 x half> %0, half %1, iXLen %2) nounwind {
766 ; CHECK-LABEL: intrinsic_vmfle_vf_nxv8f16_f16:
767 ; CHECK:       # %bb.0: # %entry
768 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
769 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
770 ; CHECK-NEXT:    ret
771 entry:
772   %a = call <vscale x 8 x i1> @llvm.riscv.vmfle.nxv8f16.f16(
773     <vscale x 8 x half> %0,
774     half %1,
775     iXLen %2)
777   ret <vscale x 8 x i1> %a
780 declare <vscale x 8 x i1> @llvm.riscv.vmfle.mask.nxv8f16.f16(
781   <vscale x 8 x i1>,
782   <vscale x 8 x half>,
783   half,
784   <vscale x 8 x i1>,
785   iXLen);
787 define <vscale x 8 x i1> @intrinsic_vmfle_mask_vf_nxv8f16_f16(<vscale x 8 x i1> %0, <vscale x 8 x half> %1, half %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
788 ; CHECK-LABEL: intrinsic_vmfle_mask_vf_nxv8f16_f16:
789 ; CHECK:       # %bb.0: # %entry
790 ; CHECK-NEXT:    vmv1r.v v11, v0
791 ; CHECK-NEXT:    vmv1r.v v0, v10
792 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu
793 ; CHECK-NEXT:    vmfle.vf v11, v8, fa0, v0.t
794 ; CHECK-NEXT:    vmv1r.v v0, v11
795 ; CHECK-NEXT:    ret
796 entry:
797   %a = call <vscale x 8 x i1> @llvm.riscv.vmfle.mask.nxv8f16.f16(
798     <vscale x 8 x i1> %0,
799     <vscale x 8 x half> %1,
800     half %2,
801     <vscale x 8 x i1> %3,
802     iXLen %4)
804   ret <vscale x 8 x i1> %a
807 declare <vscale x 16 x i1> @llvm.riscv.vmfle.nxv16f16.f16(
808   <vscale x 16 x half>,
809   half,
810   iXLen);
812 define <vscale x 16 x i1> @intrinsic_vmfle_vf_nxv16f16_f16(<vscale x 16 x half> %0, half %1, iXLen %2) nounwind {
813 ; CHECK-LABEL: intrinsic_vmfle_vf_nxv16f16_f16:
814 ; CHECK:       # %bb.0: # %entry
815 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
816 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
817 ; CHECK-NEXT:    ret
818 entry:
819   %a = call <vscale x 16 x i1> @llvm.riscv.vmfle.nxv16f16.f16(
820     <vscale x 16 x half> %0,
821     half %1,
822     iXLen %2)
824   ret <vscale x 16 x i1> %a
827 declare <vscale x 16 x i1> @llvm.riscv.vmfle.mask.nxv16f16.f16(
828   <vscale x 16 x i1>,
829   <vscale x 16 x half>,
830   half,
831   <vscale x 16 x i1>,
832   iXLen);
834 define <vscale x 16 x i1> @intrinsic_vmfle_mask_vf_nxv16f16_f16(<vscale x 16 x i1> %0, <vscale x 16 x half> %1, half %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
835 ; CHECK-LABEL: intrinsic_vmfle_mask_vf_nxv16f16_f16:
836 ; CHECK:       # %bb.0: # %entry
837 ; CHECK-NEXT:    vmv1r.v v13, v0
838 ; CHECK-NEXT:    vmv1r.v v0, v12
839 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu
840 ; CHECK-NEXT:    vmfle.vf v13, v8, fa0, v0.t
841 ; CHECK-NEXT:    vmv1r.v v0, v13
842 ; CHECK-NEXT:    ret
843 entry:
844   %a = call <vscale x 16 x i1> @llvm.riscv.vmfle.mask.nxv16f16.f16(
845     <vscale x 16 x i1> %0,
846     <vscale x 16 x half> %1,
847     half %2,
848     <vscale x 16 x i1> %3,
849     iXLen %4)
851   ret <vscale x 16 x i1> %a
854 declare <vscale x 1 x i1> @llvm.riscv.vmfle.nxv1f32.f32(
855   <vscale x 1 x float>,
856   float,
857   iXLen);
859 define <vscale x 1 x i1> @intrinsic_vmfle_vf_nxv1f32_f32(<vscale x 1 x float> %0, float %1, iXLen %2) nounwind {
860 ; CHECK-LABEL: intrinsic_vmfle_vf_nxv1f32_f32:
861 ; CHECK:       # %bb.0: # %entry
862 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
863 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
864 ; CHECK-NEXT:    ret
865 entry:
866   %a = call <vscale x 1 x i1> @llvm.riscv.vmfle.nxv1f32.f32(
867     <vscale x 1 x float> %0,
868     float %1,
869     iXLen %2)
871   ret <vscale x 1 x i1> %a
874 declare <vscale x 1 x i1> @llvm.riscv.vmfle.mask.nxv1f32.f32(
875   <vscale x 1 x i1>,
876   <vscale x 1 x float>,
877   float,
878   <vscale x 1 x i1>,
879   iXLen);
881 define <vscale x 1 x i1> @intrinsic_vmfle_mask_vf_nxv1f32_f32(<vscale x 1 x i1> %0, <vscale x 1 x float> %1, float %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
882 ; CHECK-LABEL: intrinsic_vmfle_mask_vf_nxv1f32_f32:
883 ; CHECK:       # %bb.0: # %entry
884 ; CHECK-NEXT:    vmv1r.v v10, v0
885 ; CHECK-NEXT:    vmv1r.v v0, v9
886 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu
887 ; CHECK-NEXT:    vmfle.vf v10, v8, fa0, v0.t
888 ; CHECK-NEXT:    vmv1r.v v0, v10
889 ; CHECK-NEXT:    ret
890 entry:
891   %a = call <vscale x 1 x i1> @llvm.riscv.vmfle.mask.nxv1f32.f32(
892     <vscale x 1 x i1> %0,
893     <vscale x 1 x float> %1,
894     float %2,
895     <vscale x 1 x i1> %3,
896     iXLen %4)
898   ret <vscale x 1 x i1> %a
901 declare <vscale x 2 x i1> @llvm.riscv.vmfle.nxv2f32.f32(
902   <vscale x 2 x float>,
903   float,
904   iXLen);
906 define <vscale x 2 x i1> @intrinsic_vmfle_vf_nxv2f32_f32(<vscale x 2 x float> %0, float %1, iXLen %2) nounwind {
907 ; CHECK-LABEL: intrinsic_vmfle_vf_nxv2f32_f32:
908 ; CHECK:       # %bb.0: # %entry
909 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
910 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
911 ; CHECK-NEXT:    ret
912 entry:
913   %a = call <vscale x 2 x i1> @llvm.riscv.vmfle.nxv2f32.f32(
914     <vscale x 2 x float> %0,
915     float %1,
916     iXLen %2)
918   ret <vscale x 2 x i1> %a
921 declare <vscale x 2 x i1> @llvm.riscv.vmfle.mask.nxv2f32.f32(
922   <vscale x 2 x i1>,
923   <vscale x 2 x float>,
924   float,
925   <vscale x 2 x i1>,
926   iXLen);
928 define <vscale x 2 x i1> @intrinsic_vmfle_mask_vf_nxv2f32_f32(<vscale x 2 x i1> %0, <vscale x 2 x float> %1, float %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
929 ; CHECK-LABEL: intrinsic_vmfle_mask_vf_nxv2f32_f32:
930 ; CHECK:       # %bb.0: # %entry
931 ; CHECK-NEXT:    vmv1r.v v10, v0
932 ; CHECK-NEXT:    vmv1r.v v0, v9
933 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu
934 ; CHECK-NEXT:    vmfle.vf v10, v8, fa0, v0.t
935 ; CHECK-NEXT:    vmv.v.v v0, v10
936 ; CHECK-NEXT:    ret
937 entry:
938   %a = call <vscale x 2 x i1> @llvm.riscv.vmfle.mask.nxv2f32.f32(
939     <vscale x 2 x i1> %0,
940     <vscale x 2 x float> %1,
941     float %2,
942     <vscale x 2 x i1> %3,
943     iXLen %4)
945   ret <vscale x 2 x i1> %a
948 declare <vscale x 4 x i1> @llvm.riscv.vmfle.nxv4f32.f32(
949   <vscale x 4 x float>,
950   float,
951   iXLen);
953 define <vscale x 4 x i1> @intrinsic_vmfle_vf_nxv4f32_f32(<vscale x 4 x float> %0, float %1, iXLen %2) nounwind {
954 ; CHECK-LABEL: intrinsic_vmfle_vf_nxv4f32_f32:
955 ; CHECK:       # %bb.0: # %entry
956 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
957 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
958 ; CHECK-NEXT:    ret
959 entry:
960   %a = call <vscale x 4 x i1> @llvm.riscv.vmfle.nxv4f32.f32(
961     <vscale x 4 x float> %0,
962     float %1,
963     iXLen %2)
965   ret <vscale x 4 x i1> %a
968 declare <vscale x 4 x i1> @llvm.riscv.vmfle.mask.nxv4f32.f32(
969   <vscale x 4 x i1>,
970   <vscale x 4 x float>,
971   float,
972   <vscale x 4 x i1>,
973   iXLen);
975 define <vscale x 4 x i1> @intrinsic_vmfle_mask_vf_nxv4f32_f32(<vscale x 4 x i1> %0, <vscale x 4 x float> %1, float %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
976 ; CHECK-LABEL: intrinsic_vmfle_mask_vf_nxv4f32_f32:
977 ; CHECK:       # %bb.0: # %entry
978 ; CHECK-NEXT:    vmv1r.v v11, v0
979 ; CHECK-NEXT:    vmv1r.v v0, v10
980 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu
981 ; CHECK-NEXT:    vmfle.vf v11, v8, fa0, v0.t
982 ; CHECK-NEXT:    vmv1r.v v0, v11
983 ; CHECK-NEXT:    ret
984 entry:
985   %a = call <vscale x 4 x i1> @llvm.riscv.vmfle.mask.nxv4f32.f32(
986     <vscale x 4 x i1> %0,
987     <vscale x 4 x float> %1,
988     float %2,
989     <vscale x 4 x i1> %3,
990     iXLen %4)
992   ret <vscale x 4 x i1> %a
995 declare <vscale x 8 x i1> @llvm.riscv.vmfle.nxv8f32.f32(
996   <vscale x 8 x float>,
997   float,
998   iXLen);
1000 define <vscale x 8 x i1> @intrinsic_vmfle_vf_nxv8f32_f32(<vscale x 8 x float> %0, float %1, iXLen %2) nounwind {
1001 ; CHECK-LABEL: intrinsic_vmfle_vf_nxv8f32_f32:
1002 ; CHECK:       # %bb.0: # %entry
1003 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1004 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
1005 ; CHECK-NEXT:    ret
1006 entry:
1007   %a = call <vscale x 8 x i1> @llvm.riscv.vmfle.nxv8f32.f32(
1008     <vscale x 8 x float> %0,
1009     float %1,
1010     iXLen %2)
1012   ret <vscale x 8 x i1> %a
1015 declare <vscale x 8 x i1> @llvm.riscv.vmfle.mask.nxv8f32.f32(
1016   <vscale x 8 x i1>,
1017   <vscale x 8 x float>,
1018   float,
1019   <vscale x 8 x i1>,
1020   iXLen);
1022 define <vscale x 8 x i1> @intrinsic_vmfle_mask_vf_nxv8f32_f32(<vscale x 8 x i1> %0, <vscale x 8 x float> %1, float %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1023 ; CHECK-LABEL: intrinsic_vmfle_mask_vf_nxv8f32_f32:
1024 ; CHECK:       # %bb.0: # %entry
1025 ; CHECK-NEXT:    vmv1r.v v13, v0
1026 ; CHECK-NEXT:    vmv1r.v v0, v12
1027 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu
1028 ; CHECK-NEXT:    vmfle.vf v13, v8, fa0, v0.t
1029 ; CHECK-NEXT:    vmv1r.v v0, v13
1030 ; CHECK-NEXT:    ret
1031 entry:
1032   %a = call <vscale x 8 x i1> @llvm.riscv.vmfle.mask.nxv8f32.f32(
1033     <vscale x 8 x i1> %0,
1034     <vscale x 8 x float> %1,
1035     float %2,
1036     <vscale x 8 x i1> %3,
1037     iXLen %4)
1039   ret <vscale x 8 x i1> %a
1042 declare <vscale x 1 x i1> @llvm.riscv.vmfle.nxv1f64.f64(
1043   <vscale x 1 x double>,
1044   double,
1045   iXLen);
1047 define <vscale x 1 x i1> @intrinsic_vmfle_vf_nxv1f64_f64(<vscale x 1 x double> %0, double %1, iXLen %2) nounwind {
1048 ; CHECK-LABEL: intrinsic_vmfle_vf_nxv1f64_f64:
1049 ; CHECK:       # %bb.0: # %entry
1050 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1051 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
1052 ; CHECK-NEXT:    ret
1053 entry:
1054   %a = call <vscale x 1 x i1> @llvm.riscv.vmfle.nxv1f64.f64(
1055     <vscale x 1 x double> %0,
1056     double %1,
1057     iXLen %2)
1059   ret <vscale x 1 x i1> %a
1062 declare <vscale x 1 x i1> @llvm.riscv.vmfle.mask.nxv1f64.f64(
1063   <vscale x 1 x i1>,
1064   <vscale x 1 x double>,
1065   double,
1066   <vscale x 1 x i1>,
1067   iXLen);
1069 define <vscale x 1 x i1> @intrinsic_vmfle_mask_vf_nxv1f64_f64(<vscale x 1 x i1> %0, <vscale x 1 x double> %1, double %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1070 ; CHECK-LABEL: intrinsic_vmfle_mask_vf_nxv1f64_f64:
1071 ; CHECK:       # %bb.0: # %entry
1072 ; CHECK-NEXT:    vmv1r.v v10, v0
1073 ; CHECK-NEXT:    vmv1r.v v0, v9
1074 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu
1075 ; CHECK-NEXT:    vmfle.vf v10, v8, fa0, v0.t
1076 ; CHECK-NEXT:    vmv.v.v v0, v10
1077 ; CHECK-NEXT:    ret
1078 entry:
1079   %a = call <vscale x 1 x i1> @llvm.riscv.vmfle.mask.nxv1f64.f64(
1080     <vscale x 1 x i1> %0,
1081     <vscale x 1 x double> %1,
1082     double %2,
1083     <vscale x 1 x i1> %3,
1084     iXLen %4)
1086   ret <vscale x 1 x i1> %a
1089 declare <vscale x 2 x i1> @llvm.riscv.vmfle.nxv2f64.f64(
1090   <vscale x 2 x double>,
1091   double,
1092   iXLen);
1094 define <vscale x 2 x i1> @intrinsic_vmfle_vf_nxv2f64_f64(<vscale x 2 x double> %0, double %1, iXLen %2) nounwind {
1095 ; CHECK-LABEL: intrinsic_vmfle_vf_nxv2f64_f64:
1096 ; CHECK:       # %bb.0: # %entry
1097 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1098 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
1099 ; CHECK-NEXT:    ret
1100 entry:
1101   %a = call <vscale x 2 x i1> @llvm.riscv.vmfle.nxv2f64.f64(
1102     <vscale x 2 x double> %0,
1103     double %1,
1104     iXLen %2)
1106   ret <vscale x 2 x i1> %a
1109 declare <vscale x 2 x i1> @llvm.riscv.vmfle.mask.nxv2f64.f64(
1110   <vscale x 2 x i1>,
1111   <vscale x 2 x double>,
1112   double,
1113   <vscale x 2 x i1>,
1114   iXLen);
1116 define <vscale x 2 x i1> @intrinsic_vmfle_mask_vf_nxv2f64_f64(<vscale x 2 x i1> %0, <vscale x 2 x double> %1, double %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1117 ; CHECK-LABEL: intrinsic_vmfle_mask_vf_nxv2f64_f64:
1118 ; CHECK:       # %bb.0: # %entry
1119 ; CHECK-NEXT:    vmv1r.v v11, v0
1120 ; CHECK-NEXT:    vmv1r.v v0, v10
1121 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu
1122 ; CHECK-NEXT:    vmfle.vf v11, v8, fa0, v0.t
1123 ; CHECK-NEXT:    vmv1r.v v0, v11
1124 ; CHECK-NEXT:    ret
1125 entry:
1126   %a = call <vscale x 2 x i1> @llvm.riscv.vmfle.mask.nxv2f64.f64(
1127     <vscale x 2 x i1> %0,
1128     <vscale x 2 x double> %1,
1129     double %2,
1130     <vscale x 2 x i1> %3,
1131     iXLen %4)
1133   ret <vscale x 2 x i1> %a
1136 declare <vscale x 4 x i1> @llvm.riscv.vmfle.nxv4f64.f64(
1137   <vscale x 4 x double>,
1138   double,
1139   iXLen);
1141 define <vscale x 4 x i1> @intrinsic_vmfle_vf_nxv4f64_f64(<vscale x 4 x double> %0, double %1, iXLen %2) nounwind {
1142 ; CHECK-LABEL: intrinsic_vmfle_vf_nxv4f64_f64:
1143 ; CHECK:       # %bb.0: # %entry
1144 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1145 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
1146 ; CHECK-NEXT:    ret
1147 entry:
1148   %a = call <vscale x 4 x i1> @llvm.riscv.vmfle.nxv4f64.f64(
1149     <vscale x 4 x double> %0,
1150     double %1,
1151     iXLen %2)
1153   ret <vscale x 4 x i1> %a
1156 declare <vscale x 4 x i1> @llvm.riscv.vmfle.mask.nxv4f64.f64(
1157   <vscale x 4 x i1>,
1158   <vscale x 4 x double>,
1159   double,
1160   <vscale x 4 x i1>,
1161   iXLen);
1163 define <vscale x 4 x i1> @intrinsic_vmfle_mask_vf_nxv4f64_f64(<vscale x 4 x i1> %0, <vscale x 4 x double> %1, double %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1164 ; CHECK-LABEL: intrinsic_vmfle_mask_vf_nxv4f64_f64:
1165 ; CHECK:       # %bb.0: # %entry
1166 ; CHECK-NEXT:    vmv1r.v v13, v0
1167 ; CHECK-NEXT:    vmv1r.v v0, v12
1168 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu
1169 ; CHECK-NEXT:    vmfle.vf v13, v8, fa0, v0.t
1170 ; CHECK-NEXT:    vmv1r.v v0, v13
1171 ; CHECK-NEXT:    ret
1172 entry:
1173   %a = call <vscale x 4 x i1> @llvm.riscv.vmfle.mask.nxv4f64.f64(
1174     <vscale x 4 x i1> %0,
1175     <vscale x 4 x double> %1,
1176     double %2,
1177     <vscale x 4 x i1> %3,
1178     iXLen %4)
1180   ret <vscale x 4 x i1> %a