1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zvfh,+v -target-abi=ilp32d \
3 ; RUN: -verify-machineinstrs < %s | FileCheck %s
4 ; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+zvfh,+v -target-abi=lp64d \
5 ; RUN: -verify-machineinstrs < %s | FileCheck %s
7 declare <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half>, <vscale x 1 x half>, metadata, metadata)
8 define <vscale x 1 x i1> @fcmps_oeq_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
9 ; CHECK-LABEL: fcmps_oeq_vv_nxv1f16:
11 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
12 ; CHECK-NEXT: vmfle.vv v10, v9, v8
13 ; CHECK-NEXT: vmfle.vv v8, v8, v9
14 ; CHECK-NEXT: vmand.mm v0, v8, v10
16 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
17 ret <vscale x 1 x i1> %1
20 define <vscale x 1 x i1> @fcmps_oeq_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
21 ; CHECK-LABEL: fcmps_oeq_vf_nxv1f16:
23 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
24 ; CHECK-NEXT: vmfge.vf v9, v8, fa0
25 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
26 ; CHECK-NEXT: vmand.mm v0, v8, v9
28 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
29 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
30 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
31 ret <vscale x 1 x i1> %1
34 define <vscale x 1 x i1> @fcmps_oeq_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
35 ; CHECK-LABEL: fcmps_oeq_fv_nxv1f16:
37 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
38 ; CHECK-NEXT: vmfle.vf v9, v8, fa0
39 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
40 ; CHECK-NEXT: vmand.mm v0, v8, v9
42 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
43 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
44 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
45 ret <vscale x 1 x i1> %1
48 define <vscale x 1 x i1> @fcmps_ogt_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
49 ; CHECK-LABEL: fcmps_ogt_vv_nxv1f16:
51 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
52 ; CHECK-NEXT: vmflt.vv v0, v9, v8
54 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
55 ret <vscale x 1 x i1> %1
58 define <vscale x 1 x i1> @fcmps_ogt_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
59 ; CHECK-LABEL: fcmps_ogt_vf_nxv1f16:
61 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
62 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
64 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
65 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
66 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
67 ret <vscale x 1 x i1> %1
70 define <vscale x 1 x i1> @fcmps_ogt_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
71 ; CHECK-LABEL: fcmps_ogt_fv_nxv1f16:
73 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
74 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
76 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
77 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
78 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
79 ret <vscale x 1 x i1> %1
82 define <vscale x 1 x i1> @fcmps_oge_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
83 ; CHECK-LABEL: fcmps_oge_vv_nxv1f16:
85 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
86 ; CHECK-NEXT: vmfle.vv v0, v9, v8
88 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
89 ret <vscale x 1 x i1> %1
92 define <vscale x 1 x i1> @fcmps_oge_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
93 ; CHECK-LABEL: fcmps_oge_vf_nxv1f16:
95 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
96 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
98 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
99 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
100 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
101 ret <vscale x 1 x i1> %1
104 define <vscale x 1 x i1> @fcmps_oge_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
105 ; CHECK-LABEL: fcmps_oge_fv_nxv1f16:
107 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
108 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
110 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
111 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
112 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
113 ret <vscale x 1 x i1> %1
116 define <vscale x 1 x i1> @fcmps_olt_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
117 ; CHECK-LABEL: fcmps_olt_vv_nxv1f16:
119 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
120 ; CHECK-NEXT: vmflt.vv v0, v8, v9
122 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
123 ret <vscale x 1 x i1> %1
126 define <vscale x 1 x i1> @fcmps_olt_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
127 ; CHECK-LABEL: fcmps_olt_vf_nxv1f16:
129 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
130 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
132 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
133 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
134 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
135 ret <vscale x 1 x i1> %1
138 define <vscale x 1 x i1> @fcmps_olt_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
139 ; CHECK-LABEL: fcmps_olt_fv_nxv1f16:
141 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
142 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
144 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
145 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
146 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
147 ret <vscale x 1 x i1> %1
150 define <vscale x 1 x i1> @fcmps_ole_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
151 ; CHECK-LABEL: fcmps_ole_vv_nxv1f16:
153 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
154 ; CHECK-NEXT: vmfle.vv v0, v8, v9
156 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
157 ret <vscale x 1 x i1> %1
160 define <vscale x 1 x i1> @fcmps_ole_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
161 ; CHECK-LABEL: fcmps_ole_vf_nxv1f16:
163 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
164 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
166 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
167 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
168 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
169 ret <vscale x 1 x i1> %1
172 define <vscale x 1 x i1> @fcmps_ole_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
173 ; CHECK-LABEL: fcmps_ole_fv_nxv1f16:
175 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
176 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
178 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
179 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
180 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
181 ret <vscale x 1 x i1> %1
184 define <vscale x 1 x i1> @fcmps_one_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
185 ; CHECK-LABEL: fcmps_one_vv_nxv1f16:
187 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
188 ; CHECK-NEXT: vmflt.vv v10, v8, v9
189 ; CHECK-NEXT: vmflt.vv v8, v9, v8
190 ; CHECK-NEXT: vmor.mm v0, v8, v10
192 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
193 ret <vscale x 1 x i1> %1
196 define <vscale x 1 x i1> @fcmps_one_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
197 ; CHECK-LABEL: fcmps_one_vf_nxv1f16:
199 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
200 ; CHECK-NEXT: vmflt.vf v9, v8, fa0
201 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
202 ; CHECK-NEXT: vmor.mm v0, v8, v9
204 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
205 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
206 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
207 ret <vscale x 1 x i1> %1
210 define <vscale x 1 x i1> @fcmps_one_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
211 ; CHECK-LABEL: fcmps_one_fv_nxv1f16:
213 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
214 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0
215 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
216 ; CHECK-NEXT: vmor.mm v0, v8, v9
218 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
219 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
220 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
221 ret <vscale x 1 x i1> %1
224 define <vscale x 1 x i1> @fcmps_ord_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
225 ; CHECK-LABEL: fcmps_ord_vv_nxv1f16:
227 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
228 ; CHECK-NEXT: vmfle.vv v9, v9, v9
229 ; CHECK-NEXT: vmfle.vv v8, v8, v8
230 ; CHECK-NEXT: vmand.mm v0, v8, v9
232 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
233 ret <vscale x 1 x i1> %1
236 define <vscale x 1 x i1> @fcmps_ord_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
237 ; CHECK-LABEL: fcmps_ord_vf_nxv1f16:
239 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
240 ; CHECK-NEXT: vfmv.v.f v9, fa0
241 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
242 ; CHECK-NEXT: vmfle.vv v8, v8, v8
243 ; CHECK-NEXT: vmand.mm v0, v8, v9
245 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
246 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
247 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
248 ret <vscale x 1 x i1> %1
251 define <vscale x 1 x i1> @fcmps_ord_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
252 ; CHECK-LABEL: fcmps_ord_fv_nxv1f16:
254 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
255 ; CHECK-NEXT: vfmv.v.f v9, fa0
256 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
257 ; CHECK-NEXT: vmfle.vv v8, v8, v8
258 ; CHECK-NEXT: vmand.mm v0, v9, v8
260 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
261 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
262 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
263 ret <vscale x 1 x i1> %1
266 define <vscale x 1 x i1> @fcmps_ueq_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
267 ; CHECK-LABEL: fcmps_ueq_vv_nxv1f16:
269 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
270 ; CHECK-NEXT: vmflt.vv v10, v8, v9
271 ; CHECK-NEXT: vmflt.vv v8, v9, v8
272 ; CHECK-NEXT: vmnor.mm v0, v8, v10
274 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
275 ret <vscale x 1 x i1> %1
278 define <vscale x 1 x i1> @fcmps_ueq_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
279 ; CHECK-LABEL: fcmps_ueq_vf_nxv1f16:
281 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
282 ; CHECK-NEXT: vmflt.vf v9, v8, fa0
283 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
284 ; CHECK-NEXT: vmnor.mm v0, v8, v9
286 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
287 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
288 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
289 ret <vscale x 1 x i1> %1
292 define <vscale x 1 x i1> @fcmps_ueq_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
293 ; CHECK-LABEL: fcmps_ueq_fv_nxv1f16:
295 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
296 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0
297 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
298 ; CHECK-NEXT: vmnor.mm v0, v8, v9
300 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
301 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
302 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
303 ret <vscale x 1 x i1> %1
306 define <vscale x 1 x i1> @fcmps_ugt_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
307 ; CHECK-LABEL: fcmps_ugt_vv_nxv1f16:
309 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
310 ; CHECK-NEXT: vmfle.vv v8, v8, v9
311 ; CHECK-NEXT: vmnot.m v0, v8
313 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
314 ret <vscale x 1 x i1> %1
317 define <vscale x 1 x i1> @fcmps_ugt_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
318 ; CHECK-LABEL: fcmps_ugt_vf_nxv1f16:
320 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
321 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
322 ; CHECK-NEXT: vmnot.m v0, v8
324 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
325 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
326 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
327 ret <vscale x 1 x i1> %1
330 define <vscale x 1 x i1> @fcmps_ugt_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
331 ; CHECK-LABEL: fcmps_ugt_fv_nxv1f16:
333 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
334 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
335 ; CHECK-NEXT: vmnot.m v0, v8
337 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
338 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
339 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
340 ret <vscale x 1 x i1> %1
343 define <vscale x 1 x i1> @fcmps_uge_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
344 ; CHECK-LABEL: fcmps_uge_vv_nxv1f16:
346 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
347 ; CHECK-NEXT: vmflt.vv v8, v8, v9
348 ; CHECK-NEXT: vmnot.m v0, v8
350 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
351 ret <vscale x 1 x i1> %1
354 define <vscale x 1 x i1> @fcmps_uge_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
355 ; CHECK-LABEL: fcmps_uge_vf_nxv1f16:
357 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
358 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
359 ; CHECK-NEXT: vmnot.m v0, v8
361 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
362 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
363 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
364 ret <vscale x 1 x i1> %1
367 define <vscale x 1 x i1> @fcmps_uge_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
368 ; CHECK-LABEL: fcmps_uge_fv_nxv1f16:
370 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
371 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
372 ; CHECK-NEXT: vmnot.m v0, v8
374 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
375 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
376 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
377 ret <vscale x 1 x i1> %1
380 define <vscale x 1 x i1> @fcmps_ult_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
381 ; CHECK-LABEL: fcmps_ult_vv_nxv1f16:
383 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
384 ; CHECK-NEXT: vmfle.vv v8, v9, v8
385 ; CHECK-NEXT: vmnot.m v0, v8
387 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
388 ret <vscale x 1 x i1> %1
391 define <vscale x 1 x i1> @fcmps_ult_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
392 ; CHECK-LABEL: fcmps_ult_vf_nxv1f16:
394 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
395 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
396 ; CHECK-NEXT: vmnot.m v0, v8
398 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
399 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
400 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
401 ret <vscale x 1 x i1> %1
404 define <vscale x 1 x i1> @fcmps_ult_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
405 ; CHECK-LABEL: fcmps_ult_fv_nxv1f16:
407 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
408 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
409 ; CHECK-NEXT: vmnot.m v0, v8
411 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
412 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
413 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
414 ret <vscale x 1 x i1> %1
417 define <vscale x 1 x i1> @fcmps_ule_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
418 ; CHECK-LABEL: fcmps_ule_vv_nxv1f16:
420 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
421 ; CHECK-NEXT: vmflt.vv v8, v9, v8
422 ; CHECK-NEXT: vmnot.m v0, v8
424 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
425 ret <vscale x 1 x i1> %1
428 define <vscale x 1 x i1> @fcmps_ule_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
429 ; CHECK-LABEL: fcmps_ule_vf_nxv1f16:
431 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
432 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
433 ; CHECK-NEXT: vmnot.m v0, v8
435 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
436 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
437 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
438 ret <vscale x 1 x i1> %1
441 define <vscale x 1 x i1> @fcmps_ule_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
442 ; CHECK-LABEL: fcmps_ule_fv_nxv1f16:
444 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
445 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
446 ; CHECK-NEXT: vmnot.m v0, v8
448 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
449 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
450 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
451 ret <vscale x 1 x i1> %1
454 define <vscale x 1 x i1> @fcmps_une_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
455 ; CHECK-LABEL: fcmps_une_vv_nxv1f16:
457 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
458 ; CHECK-NEXT: vmfle.vv v10, v9, v8
459 ; CHECK-NEXT: vmfle.vv v8, v8, v9
460 ; CHECK-NEXT: vmnand.mm v0, v8, v10
462 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
463 ret <vscale x 1 x i1> %1
466 define <vscale x 1 x i1> @fcmps_une_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
467 ; CHECK-LABEL: fcmps_une_vf_nxv1f16:
469 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
470 ; CHECK-NEXT: vmfge.vf v9, v8, fa0
471 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
472 ; CHECK-NEXT: vmnand.mm v0, v8, v9
474 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
475 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
476 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
477 ret <vscale x 1 x i1> %1
480 define <vscale x 1 x i1> @fcmps_une_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
481 ; CHECK-LABEL: fcmps_une_fv_nxv1f16:
483 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
484 ; CHECK-NEXT: vmfle.vf v9, v8, fa0
485 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
486 ; CHECK-NEXT: vmnand.mm v0, v8, v9
488 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
489 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
490 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
491 ret <vscale x 1 x i1> %1
494 define <vscale x 1 x i1> @fcmps_uno_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
495 ; CHECK-LABEL: fcmps_uno_vv_nxv1f16:
497 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
498 ; CHECK-NEXT: vmfle.vv v9, v9, v9
499 ; CHECK-NEXT: vmfle.vv v8, v8, v8
500 ; CHECK-NEXT: vmnot.m v8, v8
501 ; CHECK-NEXT: vmorn.mm v0, v8, v9
503 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
504 ret <vscale x 1 x i1> %1
507 define <vscale x 1 x i1> @fcmps_uno_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
508 ; CHECK-LABEL: fcmps_uno_vf_nxv1f16:
510 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
511 ; CHECK-NEXT: vfmv.v.f v9, fa0
512 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
513 ; CHECK-NEXT: vmfle.vv v8, v8, v8
514 ; CHECK-NEXT: vmnot.m v8, v8
515 ; CHECK-NEXT: vmorn.mm v0, v8, v9
517 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
518 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
519 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
520 ret <vscale x 1 x i1> %1
523 define <vscale x 1 x i1> @fcmps_uno_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
524 ; CHECK-LABEL: fcmps_uno_fv_nxv1f16:
526 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
527 ; CHECK-NEXT: vfmv.v.f v9, fa0
528 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
529 ; CHECK-NEXT: vmnot.m v9, v9
530 ; CHECK-NEXT: vmfle.vv v8, v8, v8
531 ; CHECK-NEXT: vmorn.mm v0, v9, v8
533 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
534 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
535 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
536 ret <vscale x 1 x i1> %1
539 declare <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half>, <vscale x 2 x half>, metadata, metadata)
540 define <vscale x 2 x i1> @fcmps_oeq_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
541 ; CHECK-LABEL: fcmps_oeq_vv_nxv2f16:
543 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
544 ; CHECK-NEXT: vmfle.vv v10, v9, v8
545 ; CHECK-NEXT: vmfle.vv v8, v8, v9
546 ; CHECK-NEXT: vmand.mm v0, v8, v10
548 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
549 ret <vscale x 2 x i1> %1
552 define <vscale x 2 x i1> @fcmps_oeq_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
553 ; CHECK-LABEL: fcmps_oeq_vf_nxv2f16:
555 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
556 ; CHECK-NEXT: vmfge.vf v9, v8, fa0
557 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
558 ; CHECK-NEXT: vmand.mm v0, v8, v9
560 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
561 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
562 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
563 ret <vscale x 2 x i1> %1
566 define <vscale x 2 x i1> @fcmps_oeq_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
567 ; CHECK-LABEL: fcmps_oeq_fv_nxv2f16:
569 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
570 ; CHECK-NEXT: vmfle.vf v9, v8, fa0
571 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
572 ; CHECK-NEXT: vmand.mm v0, v8, v9
574 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
575 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
576 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
577 ret <vscale x 2 x i1> %1
580 define <vscale x 2 x i1> @fcmps_ogt_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
581 ; CHECK-LABEL: fcmps_ogt_vv_nxv2f16:
583 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
584 ; CHECK-NEXT: vmflt.vv v0, v9, v8
586 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
587 ret <vscale x 2 x i1> %1
590 define <vscale x 2 x i1> @fcmps_ogt_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
591 ; CHECK-LABEL: fcmps_ogt_vf_nxv2f16:
593 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
594 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
596 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
597 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
598 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
599 ret <vscale x 2 x i1> %1
602 define <vscale x 2 x i1> @fcmps_ogt_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
603 ; CHECK-LABEL: fcmps_ogt_fv_nxv2f16:
605 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
606 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
608 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
609 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
610 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
611 ret <vscale x 2 x i1> %1
614 define <vscale x 2 x i1> @fcmps_oge_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
615 ; CHECK-LABEL: fcmps_oge_vv_nxv2f16:
617 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
618 ; CHECK-NEXT: vmfle.vv v0, v9, v8
620 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
621 ret <vscale x 2 x i1> %1
624 define <vscale x 2 x i1> @fcmps_oge_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
625 ; CHECK-LABEL: fcmps_oge_vf_nxv2f16:
627 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
628 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
630 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
631 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
632 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
633 ret <vscale x 2 x i1> %1
636 define <vscale x 2 x i1> @fcmps_oge_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
637 ; CHECK-LABEL: fcmps_oge_fv_nxv2f16:
639 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
640 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
642 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
643 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
644 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
645 ret <vscale x 2 x i1> %1
648 define <vscale x 2 x i1> @fcmps_olt_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
649 ; CHECK-LABEL: fcmps_olt_vv_nxv2f16:
651 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
652 ; CHECK-NEXT: vmflt.vv v0, v8, v9
654 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
655 ret <vscale x 2 x i1> %1
658 define <vscale x 2 x i1> @fcmps_olt_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
659 ; CHECK-LABEL: fcmps_olt_vf_nxv2f16:
661 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
662 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
664 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
665 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
666 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
667 ret <vscale x 2 x i1> %1
670 define <vscale x 2 x i1> @fcmps_olt_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
671 ; CHECK-LABEL: fcmps_olt_fv_nxv2f16:
673 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
674 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
676 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
677 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
678 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
679 ret <vscale x 2 x i1> %1
682 define <vscale x 2 x i1> @fcmps_ole_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
683 ; CHECK-LABEL: fcmps_ole_vv_nxv2f16:
685 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
686 ; CHECK-NEXT: vmfle.vv v0, v8, v9
688 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
689 ret <vscale x 2 x i1> %1
692 define <vscale x 2 x i1> @fcmps_ole_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
693 ; CHECK-LABEL: fcmps_ole_vf_nxv2f16:
695 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
696 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
698 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
699 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
700 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
701 ret <vscale x 2 x i1> %1
704 define <vscale x 2 x i1> @fcmps_ole_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
705 ; CHECK-LABEL: fcmps_ole_fv_nxv2f16:
707 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
708 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
710 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
711 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
712 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
713 ret <vscale x 2 x i1> %1
716 define <vscale x 2 x i1> @fcmps_one_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
717 ; CHECK-LABEL: fcmps_one_vv_nxv2f16:
719 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
720 ; CHECK-NEXT: vmflt.vv v10, v8, v9
721 ; CHECK-NEXT: vmflt.vv v8, v9, v8
722 ; CHECK-NEXT: vmor.mm v0, v8, v10
724 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
725 ret <vscale x 2 x i1> %1
728 define <vscale x 2 x i1> @fcmps_one_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
729 ; CHECK-LABEL: fcmps_one_vf_nxv2f16:
731 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
732 ; CHECK-NEXT: vmflt.vf v9, v8, fa0
733 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
734 ; CHECK-NEXT: vmor.mm v0, v8, v9
736 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
737 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
738 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
739 ret <vscale x 2 x i1> %1
742 define <vscale x 2 x i1> @fcmps_one_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
743 ; CHECK-LABEL: fcmps_one_fv_nxv2f16:
745 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
746 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0
747 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
748 ; CHECK-NEXT: vmor.mm v0, v8, v9
750 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
751 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
752 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
753 ret <vscale x 2 x i1> %1
756 define <vscale x 2 x i1> @fcmps_ord_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
757 ; CHECK-LABEL: fcmps_ord_vv_nxv2f16:
759 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
760 ; CHECK-NEXT: vmfle.vv v9, v9, v9
761 ; CHECK-NEXT: vmfle.vv v8, v8, v8
762 ; CHECK-NEXT: vmand.mm v0, v8, v9
764 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
765 ret <vscale x 2 x i1> %1
768 define <vscale x 2 x i1> @fcmps_ord_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
769 ; CHECK-LABEL: fcmps_ord_vf_nxv2f16:
771 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
772 ; CHECK-NEXT: vfmv.v.f v9, fa0
773 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
774 ; CHECK-NEXT: vmfle.vv v8, v8, v8
775 ; CHECK-NEXT: vmand.mm v0, v8, v9
777 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
778 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
779 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
780 ret <vscale x 2 x i1> %1
783 define <vscale x 2 x i1> @fcmps_ord_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
784 ; CHECK-LABEL: fcmps_ord_fv_nxv2f16:
786 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
787 ; CHECK-NEXT: vfmv.v.f v9, fa0
788 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
789 ; CHECK-NEXT: vmfle.vv v8, v8, v8
790 ; CHECK-NEXT: vmand.mm v0, v9, v8
792 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
793 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
794 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
795 ret <vscale x 2 x i1> %1
798 define <vscale x 2 x i1> @fcmps_ueq_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
799 ; CHECK-LABEL: fcmps_ueq_vv_nxv2f16:
801 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
802 ; CHECK-NEXT: vmflt.vv v10, v8, v9
803 ; CHECK-NEXT: vmflt.vv v8, v9, v8
804 ; CHECK-NEXT: vmnor.mm v0, v8, v10
806 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
807 ret <vscale x 2 x i1> %1
810 define <vscale x 2 x i1> @fcmps_ueq_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
811 ; CHECK-LABEL: fcmps_ueq_vf_nxv2f16:
813 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
814 ; CHECK-NEXT: vmflt.vf v9, v8, fa0
815 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
816 ; CHECK-NEXT: vmnor.mm v0, v8, v9
818 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
819 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
820 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
821 ret <vscale x 2 x i1> %1
824 define <vscale x 2 x i1> @fcmps_ueq_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
825 ; CHECK-LABEL: fcmps_ueq_fv_nxv2f16:
827 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
828 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0
829 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
830 ; CHECK-NEXT: vmnor.mm v0, v8, v9
832 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
833 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
834 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
835 ret <vscale x 2 x i1> %1
838 define <vscale x 2 x i1> @fcmps_ugt_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
839 ; CHECK-LABEL: fcmps_ugt_vv_nxv2f16:
841 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
842 ; CHECK-NEXT: vmfle.vv v8, v8, v9
843 ; CHECK-NEXT: vmnot.m v0, v8
845 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
846 ret <vscale x 2 x i1> %1
849 define <vscale x 2 x i1> @fcmps_ugt_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
850 ; CHECK-LABEL: fcmps_ugt_vf_nxv2f16:
852 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
853 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
854 ; CHECK-NEXT: vmnot.m v0, v8
856 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
857 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
858 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
859 ret <vscale x 2 x i1> %1
862 define <vscale x 2 x i1> @fcmps_ugt_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
863 ; CHECK-LABEL: fcmps_ugt_fv_nxv2f16:
865 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
866 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
867 ; CHECK-NEXT: vmnot.m v0, v8
869 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
870 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
871 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
872 ret <vscale x 2 x i1> %1
875 define <vscale x 2 x i1> @fcmps_uge_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
876 ; CHECK-LABEL: fcmps_uge_vv_nxv2f16:
878 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
879 ; CHECK-NEXT: vmflt.vv v8, v8, v9
880 ; CHECK-NEXT: vmnot.m v0, v8
882 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
883 ret <vscale x 2 x i1> %1
886 define <vscale x 2 x i1> @fcmps_uge_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
887 ; CHECK-LABEL: fcmps_uge_vf_nxv2f16:
889 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
890 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
891 ; CHECK-NEXT: vmnot.m v0, v8
893 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
894 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
895 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
896 ret <vscale x 2 x i1> %1
899 define <vscale x 2 x i1> @fcmps_uge_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
900 ; CHECK-LABEL: fcmps_uge_fv_nxv2f16:
902 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
903 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
904 ; CHECK-NEXT: vmnot.m v0, v8
906 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
907 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
908 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
909 ret <vscale x 2 x i1> %1
912 define <vscale x 2 x i1> @fcmps_ult_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
913 ; CHECK-LABEL: fcmps_ult_vv_nxv2f16:
915 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
916 ; CHECK-NEXT: vmfle.vv v8, v9, v8
917 ; CHECK-NEXT: vmnot.m v0, v8
919 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
920 ret <vscale x 2 x i1> %1
923 define <vscale x 2 x i1> @fcmps_ult_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
924 ; CHECK-LABEL: fcmps_ult_vf_nxv2f16:
926 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
927 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
928 ; CHECK-NEXT: vmnot.m v0, v8
930 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
931 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
932 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
933 ret <vscale x 2 x i1> %1
936 define <vscale x 2 x i1> @fcmps_ult_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
937 ; CHECK-LABEL: fcmps_ult_fv_nxv2f16:
939 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
940 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
941 ; CHECK-NEXT: vmnot.m v0, v8
943 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
944 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
945 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
946 ret <vscale x 2 x i1> %1
949 define <vscale x 2 x i1> @fcmps_ule_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
950 ; CHECK-LABEL: fcmps_ule_vv_nxv2f16:
952 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
953 ; CHECK-NEXT: vmflt.vv v8, v9, v8
954 ; CHECK-NEXT: vmnot.m v0, v8
956 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
957 ret <vscale x 2 x i1> %1
960 define <vscale x 2 x i1> @fcmps_ule_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
961 ; CHECK-LABEL: fcmps_ule_vf_nxv2f16:
963 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
964 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
965 ; CHECK-NEXT: vmnot.m v0, v8
967 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
968 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
969 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
970 ret <vscale x 2 x i1> %1
973 define <vscale x 2 x i1> @fcmps_ule_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
974 ; CHECK-LABEL: fcmps_ule_fv_nxv2f16:
976 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
977 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
978 ; CHECK-NEXT: vmnot.m v0, v8
980 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
981 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
982 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
983 ret <vscale x 2 x i1> %1
986 define <vscale x 2 x i1> @fcmps_une_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
987 ; CHECK-LABEL: fcmps_une_vv_nxv2f16:
989 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
990 ; CHECK-NEXT: vmfle.vv v10, v9, v8
991 ; CHECK-NEXT: vmfle.vv v8, v8, v9
992 ; CHECK-NEXT: vmnand.mm v0, v8, v10
994 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
995 ret <vscale x 2 x i1> %1
998 define <vscale x 2 x i1> @fcmps_une_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
999 ; CHECK-LABEL: fcmps_une_vf_nxv2f16:
1001 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
1002 ; CHECK-NEXT: vmfge.vf v9, v8, fa0
1003 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
1004 ; CHECK-NEXT: vmnand.mm v0, v8, v9
1006 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1007 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1008 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
1009 ret <vscale x 2 x i1> %1
1012 define <vscale x 2 x i1> @fcmps_une_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
1013 ; CHECK-LABEL: fcmps_une_fv_nxv2f16:
1015 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
1016 ; CHECK-NEXT: vmfle.vf v9, v8, fa0
1017 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
1018 ; CHECK-NEXT: vmnand.mm v0, v8, v9
1020 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1021 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1022 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
1023 ret <vscale x 2 x i1> %1
1026 define <vscale x 2 x i1> @fcmps_uno_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
1027 ; CHECK-LABEL: fcmps_uno_vv_nxv2f16:
1029 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
1030 ; CHECK-NEXT: vmfle.vv v9, v9, v9
1031 ; CHECK-NEXT: vmfle.vv v8, v8, v8
1032 ; CHECK-NEXT: vmnot.m v8, v8
1033 ; CHECK-NEXT: vmorn.mm v0, v8, v9
1035 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
1036 ret <vscale x 2 x i1> %1
1039 define <vscale x 2 x i1> @fcmps_uno_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
1040 ; CHECK-LABEL: fcmps_uno_vf_nxv2f16:
1042 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
1043 ; CHECK-NEXT: vfmv.v.f v9, fa0
1044 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
1045 ; CHECK-NEXT: vmfle.vv v8, v8, v8
1046 ; CHECK-NEXT: vmnot.m v8, v8
1047 ; CHECK-NEXT: vmorn.mm v0, v8, v9
1049 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1050 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1051 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
1052 ret <vscale x 2 x i1> %1
1055 define <vscale x 2 x i1> @fcmps_uno_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
1056 ; CHECK-LABEL: fcmps_uno_fv_nxv2f16:
1058 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
1059 ; CHECK-NEXT: vfmv.v.f v9, fa0
1060 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
1061 ; CHECK-NEXT: vmnot.m v9, v9
1062 ; CHECK-NEXT: vmfle.vv v8, v8, v8
1063 ; CHECK-NEXT: vmorn.mm v0, v9, v8
1065 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1066 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1067 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
1068 ret <vscale x 2 x i1> %1
1071 declare <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half>, <vscale x 4 x half>, metadata, metadata)
1072 define <vscale x 4 x i1> @fcmps_oeq_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1073 ; CHECK-LABEL: fcmps_oeq_vv_nxv4f16:
1075 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1076 ; CHECK-NEXT: vmfle.vv v10, v9, v8
1077 ; CHECK-NEXT: vmfle.vv v8, v8, v9
1078 ; CHECK-NEXT: vmand.mm v0, v8, v10
1080 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
1081 ret <vscale x 4 x i1> %1
1084 define <vscale x 4 x i1> @fcmps_oeq_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1085 ; CHECK-LABEL: fcmps_oeq_vf_nxv4f16:
1087 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1088 ; CHECK-NEXT: vmfge.vf v9, v8, fa0
1089 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
1090 ; CHECK-NEXT: vmand.mm v0, v8, v9
1092 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1093 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1094 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
1095 ret <vscale x 4 x i1> %1
1098 define <vscale x 4 x i1> @fcmps_oeq_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1099 ; CHECK-LABEL: fcmps_oeq_fv_nxv4f16:
1101 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1102 ; CHECK-NEXT: vmfle.vf v9, v8, fa0
1103 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
1104 ; CHECK-NEXT: vmand.mm v0, v8, v9
1106 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1107 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1108 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
1109 ret <vscale x 4 x i1> %1
1112 define <vscale x 4 x i1> @fcmps_ogt_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1113 ; CHECK-LABEL: fcmps_ogt_vv_nxv4f16:
1115 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1116 ; CHECK-NEXT: vmflt.vv v0, v9, v8
1118 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
1119 ret <vscale x 4 x i1> %1
1122 define <vscale x 4 x i1> @fcmps_ogt_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1123 ; CHECK-LABEL: fcmps_ogt_vf_nxv4f16:
1125 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1126 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
1128 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1129 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1130 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
1131 ret <vscale x 4 x i1> %1
1134 define <vscale x 4 x i1> @fcmps_ogt_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1135 ; CHECK-LABEL: fcmps_ogt_fv_nxv4f16:
1137 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1138 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
1140 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1141 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1142 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
1143 ret <vscale x 4 x i1> %1
1146 define <vscale x 4 x i1> @fcmps_oge_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1147 ; CHECK-LABEL: fcmps_oge_vv_nxv4f16:
1149 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1150 ; CHECK-NEXT: vmfle.vv v0, v9, v8
1152 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
1153 ret <vscale x 4 x i1> %1
1156 define <vscale x 4 x i1> @fcmps_oge_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1157 ; CHECK-LABEL: fcmps_oge_vf_nxv4f16:
1159 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1160 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
1162 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1163 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1164 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
1165 ret <vscale x 4 x i1> %1
1168 define <vscale x 4 x i1> @fcmps_oge_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1169 ; CHECK-LABEL: fcmps_oge_fv_nxv4f16:
1171 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1172 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
1174 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1175 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1176 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
1177 ret <vscale x 4 x i1> %1
1180 define <vscale x 4 x i1> @fcmps_olt_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1181 ; CHECK-LABEL: fcmps_olt_vv_nxv4f16:
1183 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1184 ; CHECK-NEXT: vmflt.vv v0, v8, v9
1186 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
1187 ret <vscale x 4 x i1> %1
1190 define <vscale x 4 x i1> @fcmps_olt_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1191 ; CHECK-LABEL: fcmps_olt_vf_nxv4f16:
1193 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1194 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
1196 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1197 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1198 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
1199 ret <vscale x 4 x i1> %1
1202 define <vscale x 4 x i1> @fcmps_olt_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1203 ; CHECK-LABEL: fcmps_olt_fv_nxv4f16:
1205 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1206 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
1208 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1209 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1210 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
1211 ret <vscale x 4 x i1> %1
1214 define <vscale x 4 x i1> @fcmps_ole_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1215 ; CHECK-LABEL: fcmps_ole_vv_nxv4f16:
1217 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1218 ; CHECK-NEXT: vmfle.vv v0, v8, v9
1220 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
1221 ret <vscale x 4 x i1> %1
1224 define <vscale x 4 x i1> @fcmps_ole_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1225 ; CHECK-LABEL: fcmps_ole_vf_nxv4f16:
1227 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1228 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
1230 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1231 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1232 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
1233 ret <vscale x 4 x i1> %1
1236 define <vscale x 4 x i1> @fcmps_ole_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1237 ; CHECK-LABEL: fcmps_ole_fv_nxv4f16:
1239 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1240 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
1242 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1243 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1244 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
1245 ret <vscale x 4 x i1> %1
1248 define <vscale x 4 x i1> @fcmps_one_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1249 ; CHECK-LABEL: fcmps_one_vv_nxv4f16:
1251 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1252 ; CHECK-NEXT: vmflt.vv v10, v8, v9
1253 ; CHECK-NEXT: vmflt.vv v8, v9, v8
1254 ; CHECK-NEXT: vmor.mm v0, v8, v10
1256 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
1257 ret <vscale x 4 x i1> %1
1260 define <vscale x 4 x i1> @fcmps_one_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1261 ; CHECK-LABEL: fcmps_one_vf_nxv4f16:
1263 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1264 ; CHECK-NEXT: vmflt.vf v9, v8, fa0
1265 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
1266 ; CHECK-NEXT: vmor.mm v0, v8, v9
1268 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1269 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1270 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
1271 ret <vscale x 4 x i1> %1
1274 define <vscale x 4 x i1> @fcmps_one_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1275 ; CHECK-LABEL: fcmps_one_fv_nxv4f16:
1277 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1278 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0
1279 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
1280 ; CHECK-NEXT: vmor.mm v0, v8, v9
1282 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1283 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1284 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
1285 ret <vscale x 4 x i1> %1
1288 define <vscale x 4 x i1> @fcmps_ord_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1289 ; CHECK-LABEL: fcmps_ord_vv_nxv4f16:
1291 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1292 ; CHECK-NEXT: vmfle.vv v9, v9, v9
1293 ; CHECK-NEXT: vmfle.vv v8, v8, v8
1294 ; CHECK-NEXT: vmand.mm v0, v8, v9
1296 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
1297 ret <vscale x 4 x i1> %1
1300 define <vscale x 4 x i1> @fcmps_ord_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1301 ; CHECK-LABEL: fcmps_ord_vf_nxv4f16:
1303 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1304 ; CHECK-NEXT: vfmv.v.f v9, fa0
1305 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
1306 ; CHECK-NEXT: vmfle.vv v8, v8, v8
1307 ; CHECK-NEXT: vmand.mm v0, v8, v9
1309 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1310 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1311 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
1312 ret <vscale x 4 x i1> %1
1315 define <vscale x 4 x i1> @fcmps_ord_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1316 ; CHECK-LABEL: fcmps_ord_fv_nxv4f16:
1318 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1319 ; CHECK-NEXT: vfmv.v.f v9, fa0
1320 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
1321 ; CHECK-NEXT: vmfle.vv v8, v8, v8
1322 ; CHECK-NEXT: vmand.mm v0, v9, v8
1324 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1325 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1326 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
1327 ret <vscale x 4 x i1> %1
1330 define <vscale x 4 x i1> @fcmps_ueq_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1331 ; CHECK-LABEL: fcmps_ueq_vv_nxv4f16:
1333 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1334 ; CHECK-NEXT: vmflt.vv v10, v8, v9
1335 ; CHECK-NEXT: vmflt.vv v8, v9, v8
1336 ; CHECK-NEXT: vmnor.mm v0, v8, v10
1338 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
1339 ret <vscale x 4 x i1> %1
1342 define <vscale x 4 x i1> @fcmps_ueq_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1343 ; CHECK-LABEL: fcmps_ueq_vf_nxv4f16:
1345 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1346 ; CHECK-NEXT: vmflt.vf v9, v8, fa0
1347 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
1348 ; CHECK-NEXT: vmnor.mm v0, v8, v9
1350 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1351 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1352 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
1353 ret <vscale x 4 x i1> %1
1356 define <vscale x 4 x i1> @fcmps_ueq_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1357 ; CHECK-LABEL: fcmps_ueq_fv_nxv4f16:
1359 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1360 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0
1361 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
1362 ; CHECK-NEXT: vmnor.mm v0, v8, v9
1364 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1365 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1366 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
1367 ret <vscale x 4 x i1> %1
1370 define <vscale x 4 x i1> @fcmps_ugt_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1371 ; CHECK-LABEL: fcmps_ugt_vv_nxv4f16:
1373 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1374 ; CHECK-NEXT: vmfle.vv v8, v8, v9
1375 ; CHECK-NEXT: vmnot.m v0, v8
1377 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
1378 ret <vscale x 4 x i1> %1
1381 define <vscale x 4 x i1> @fcmps_ugt_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1382 ; CHECK-LABEL: fcmps_ugt_vf_nxv4f16:
1384 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1385 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
1386 ; CHECK-NEXT: vmnot.m v0, v8
1388 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1389 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1390 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
1391 ret <vscale x 4 x i1> %1
1394 define <vscale x 4 x i1> @fcmps_ugt_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1395 ; CHECK-LABEL: fcmps_ugt_fv_nxv4f16:
1397 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1398 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
1399 ; CHECK-NEXT: vmnot.m v0, v8
1401 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1402 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1403 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
1404 ret <vscale x 4 x i1> %1
1407 define <vscale x 4 x i1> @fcmps_uge_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1408 ; CHECK-LABEL: fcmps_uge_vv_nxv4f16:
1410 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1411 ; CHECK-NEXT: vmflt.vv v8, v8, v9
1412 ; CHECK-NEXT: vmnot.m v0, v8
1414 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
1415 ret <vscale x 4 x i1> %1
1418 define <vscale x 4 x i1> @fcmps_uge_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1419 ; CHECK-LABEL: fcmps_uge_vf_nxv4f16:
1421 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1422 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
1423 ; CHECK-NEXT: vmnot.m v0, v8
1425 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1426 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1427 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
1428 ret <vscale x 4 x i1> %1
1431 define <vscale x 4 x i1> @fcmps_uge_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1432 ; CHECK-LABEL: fcmps_uge_fv_nxv4f16:
1434 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1435 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
1436 ; CHECK-NEXT: vmnot.m v0, v8
1438 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1439 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1440 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
1441 ret <vscale x 4 x i1> %1
1444 define <vscale x 4 x i1> @fcmps_ult_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1445 ; CHECK-LABEL: fcmps_ult_vv_nxv4f16:
1447 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1448 ; CHECK-NEXT: vmfle.vv v8, v9, v8
1449 ; CHECK-NEXT: vmnot.m v0, v8
1451 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
1452 ret <vscale x 4 x i1> %1
1455 define <vscale x 4 x i1> @fcmps_ult_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1456 ; CHECK-LABEL: fcmps_ult_vf_nxv4f16:
1458 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1459 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
1460 ; CHECK-NEXT: vmnot.m v0, v8
1462 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1463 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1464 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
1465 ret <vscale x 4 x i1> %1
1468 define <vscale x 4 x i1> @fcmps_ult_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1469 ; CHECK-LABEL: fcmps_ult_fv_nxv4f16:
1471 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1472 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
1473 ; CHECK-NEXT: vmnot.m v0, v8
1475 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1476 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1477 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
1478 ret <vscale x 4 x i1> %1
1481 define <vscale x 4 x i1> @fcmps_ule_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1482 ; CHECK-LABEL: fcmps_ule_vv_nxv4f16:
1484 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1485 ; CHECK-NEXT: vmflt.vv v8, v9, v8
1486 ; CHECK-NEXT: vmnot.m v0, v8
1488 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
1489 ret <vscale x 4 x i1> %1
1492 define <vscale x 4 x i1> @fcmps_ule_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1493 ; CHECK-LABEL: fcmps_ule_vf_nxv4f16:
1495 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1496 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
1497 ; CHECK-NEXT: vmnot.m v0, v8
1499 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1500 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1501 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
1502 ret <vscale x 4 x i1> %1
1505 define <vscale x 4 x i1> @fcmps_ule_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1506 ; CHECK-LABEL: fcmps_ule_fv_nxv4f16:
1508 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1509 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
1510 ; CHECK-NEXT: vmnot.m v0, v8
1512 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1513 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1514 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
1515 ret <vscale x 4 x i1> %1
1518 define <vscale x 4 x i1> @fcmps_une_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1519 ; CHECK-LABEL: fcmps_une_vv_nxv4f16:
1521 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1522 ; CHECK-NEXT: vmfle.vv v10, v9, v8
1523 ; CHECK-NEXT: vmfle.vv v8, v8, v9
1524 ; CHECK-NEXT: vmnand.mm v0, v8, v10
1526 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
1527 ret <vscale x 4 x i1> %1
1530 define <vscale x 4 x i1> @fcmps_une_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1531 ; CHECK-LABEL: fcmps_une_vf_nxv4f16:
1533 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1534 ; CHECK-NEXT: vmfge.vf v9, v8, fa0
1535 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
1536 ; CHECK-NEXT: vmnand.mm v0, v8, v9
1538 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1539 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1540 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
1541 ret <vscale x 4 x i1> %1
1544 define <vscale x 4 x i1> @fcmps_une_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1545 ; CHECK-LABEL: fcmps_une_fv_nxv4f16:
1547 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1548 ; CHECK-NEXT: vmfle.vf v9, v8, fa0
1549 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
1550 ; CHECK-NEXT: vmnand.mm v0, v8, v9
1552 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1553 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1554 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
1555 ret <vscale x 4 x i1> %1
1558 define <vscale x 4 x i1> @fcmps_uno_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1559 ; CHECK-LABEL: fcmps_uno_vv_nxv4f16:
1561 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1562 ; CHECK-NEXT: vmfle.vv v9, v9, v9
1563 ; CHECK-NEXT: vmfle.vv v8, v8, v8
1564 ; CHECK-NEXT: vmnot.m v8, v8
1565 ; CHECK-NEXT: vmorn.mm v0, v8, v9
1567 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
1568 ret <vscale x 4 x i1> %1
1571 define <vscale x 4 x i1> @fcmps_uno_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1572 ; CHECK-LABEL: fcmps_uno_vf_nxv4f16:
1574 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1575 ; CHECK-NEXT: vfmv.v.f v9, fa0
1576 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
1577 ; CHECK-NEXT: vmfle.vv v8, v8, v8
1578 ; CHECK-NEXT: vmnot.m v8, v8
1579 ; CHECK-NEXT: vmorn.mm v0, v8, v9
1581 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1582 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1583 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
1584 ret <vscale x 4 x i1> %1
1587 define <vscale x 4 x i1> @fcmps_uno_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1588 ; CHECK-LABEL: fcmps_uno_fv_nxv4f16:
1590 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1591 ; CHECK-NEXT: vfmv.v.f v9, fa0
1592 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
1593 ; CHECK-NEXT: vmnot.m v9, v9
1594 ; CHECK-NEXT: vmfle.vv v8, v8, v8
1595 ; CHECK-NEXT: vmorn.mm v0, v9, v8
1597 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1598 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1599 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
1600 ret <vscale x 4 x i1> %1
1603 declare <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>, metadata, metadata)
1604 define <vscale x 8 x i1> @fcmps_oeq_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
1605 ; CHECK-LABEL: fcmps_oeq_vv_nxv8f16:
1607 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1608 ; CHECK-NEXT: vmfle.vv v12, v10, v8
1609 ; CHECK-NEXT: vmfle.vv v13, v8, v10
1610 ; CHECK-NEXT: vmand.mm v0, v13, v12
1612 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
1613 ret <vscale x 8 x i1> %1
1616 define <vscale x 8 x i1> @fcmps_oeq_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1617 ; CHECK-LABEL: fcmps_oeq_vf_nxv8f16:
1619 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1620 ; CHECK-NEXT: vmfge.vf v10, v8, fa0
1621 ; CHECK-NEXT: vmfle.vf v11, v8, fa0
1622 ; CHECK-NEXT: vmand.mm v0, v11, v10
1624 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1625 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1626 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
1627 ret <vscale x 8 x i1> %1
1630 define <vscale x 8 x i1> @fcmps_oeq_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1631 ; CHECK-LABEL: fcmps_oeq_fv_nxv8f16:
1633 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1634 ; CHECK-NEXT: vmfle.vf v10, v8, fa0
1635 ; CHECK-NEXT: vmfge.vf v11, v8, fa0
1636 ; CHECK-NEXT: vmand.mm v0, v11, v10
1638 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1639 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1640 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
1641 ret <vscale x 8 x i1> %1
1644 define <vscale x 8 x i1> @fcmps_ogt_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
1645 ; CHECK-LABEL: fcmps_ogt_vv_nxv8f16:
1647 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1648 ; CHECK-NEXT: vmflt.vv v0, v10, v8
1650 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
1651 ret <vscale x 8 x i1> %1
1654 define <vscale x 8 x i1> @fcmps_ogt_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1655 ; CHECK-LABEL: fcmps_ogt_vf_nxv8f16:
1657 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1658 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
1660 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1661 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1662 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
1663 ret <vscale x 8 x i1> %1
1666 define <vscale x 8 x i1> @fcmps_ogt_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1667 ; CHECK-LABEL: fcmps_ogt_fv_nxv8f16:
1669 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1670 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
1672 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1673 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1674 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
1675 ret <vscale x 8 x i1> %1
1678 define <vscale x 8 x i1> @fcmps_oge_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
1679 ; CHECK-LABEL: fcmps_oge_vv_nxv8f16:
1681 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1682 ; CHECK-NEXT: vmfle.vv v0, v10, v8
1684 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
1685 ret <vscale x 8 x i1> %1
1688 define <vscale x 8 x i1> @fcmps_oge_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1689 ; CHECK-LABEL: fcmps_oge_vf_nxv8f16:
1691 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1692 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
1694 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1695 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1696 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
1697 ret <vscale x 8 x i1> %1
1700 define <vscale x 8 x i1> @fcmps_oge_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1701 ; CHECK-LABEL: fcmps_oge_fv_nxv8f16:
1703 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1704 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
1706 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1707 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1708 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
1709 ret <vscale x 8 x i1> %1
1712 define <vscale x 8 x i1> @fcmps_olt_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
1713 ; CHECK-LABEL: fcmps_olt_vv_nxv8f16:
1715 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1716 ; CHECK-NEXT: vmflt.vv v0, v8, v10
1718 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
1719 ret <vscale x 8 x i1> %1
1722 define <vscale x 8 x i1> @fcmps_olt_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1723 ; CHECK-LABEL: fcmps_olt_vf_nxv8f16:
1725 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1726 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
1728 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1729 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1730 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
1731 ret <vscale x 8 x i1> %1
1734 define <vscale x 8 x i1> @fcmps_olt_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1735 ; CHECK-LABEL: fcmps_olt_fv_nxv8f16:
1737 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1738 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
1740 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1741 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1742 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
1743 ret <vscale x 8 x i1> %1
1746 define <vscale x 8 x i1> @fcmps_ole_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
1747 ; CHECK-LABEL: fcmps_ole_vv_nxv8f16:
1749 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1750 ; CHECK-NEXT: vmfle.vv v0, v8, v10
1752 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
1753 ret <vscale x 8 x i1> %1
1756 define <vscale x 8 x i1> @fcmps_ole_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1757 ; CHECK-LABEL: fcmps_ole_vf_nxv8f16:
1759 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1760 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
1762 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1763 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1764 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
1765 ret <vscale x 8 x i1> %1
1768 define <vscale x 8 x i1> @fcmps_ole_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1769 ; CHECK-LABEL: fcmps_ole_fv_nxv8f16:
1771 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1772 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
1774 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1775 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1776 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
1777 ret <vscale x 8 x i1> %1
1780 define <vscale x 8 x i1> @fcmps_one_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
1781 ; CHECK-LABEL: fcmps_one_vv_nxv8f16:
1783 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1784 ; CHECK-NEXT: vmflt.vv v12, v8, v10
1785 ; CHECK-NEXT: vmflt.vv v13, v10, v8
1786 ; CHECK-NEXT: vmor.mm v0, v13, v12
1788 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
1789 ret <vscale x 8 x i1> %1
1792 define <vscale x 8 x i1> @fcmps_one_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1793 ; CHECK-LABEL: fcmps_one_vf_nxv8f16:
1795 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1796 ; CHECK-NEXT: vmflt.vf v10, v8, fa0
1797 ; CHECK-NEXT: vmfgt.vf v11, v8, fa0
1798 ; CHECK-NEXT: vmor.mm v0, v11, v10
1800 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1801 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1802 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
1803 ret <vscale x 8 x i1> %1
1806 define <vscale x 8 x i1> @fcmps_one_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1807 ; CHECK-LABEL: fcmps_one_fv_nxv8f16:
1809 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1810 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0
1811 ; CHECK-NEXT: vmflt.vf v11, v8, fa0
1812 ; CHECK-NEXT: vmor.mm v0, v11, v10
1814 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1815 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1816 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
1817 ret <vscale x 8 x i1> %1
1820 define <vscale x 8 x i1> @fcmps_ord_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
1821 ; CHECK-LABEL: fcmps_ord_vv_nxv8f16:
1823 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1824 ; CHECK-NEXT: vmfle.vv v12, v10, v10
1825 ; CHECK-NEXT: vmfle.vv v10, v8, v8
1826 ; CHECK-NEXT: vmand.mm v0, v10, v12
1828 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
1829 ret <vscale x 8 x i1> %1
1832 define <vscale x 8 x i1> @fcmps_ord_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1833 ; CHECK-LABEL: fcmps_ord_vf_nxv8f16:
1835 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1836 ; CHECK-NEXT: vfmv.v.f v10, fa0
1837 ; CHECK-NEXT: vmfle.vf v12, v10, fa0
1838 ; CHECK-NEXT: vmfle.vv v10, v8, v8
1839 ; CHECK-NEXT: vmand.mm v0, v10, v12
1841 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1842 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1843 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
1844 ret <vscale x 8 x i1> %1
1847 define <vscale x 8 x i1> @fcmps_ord_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1848 ; CHECK-LABEL: fcmps_ord_fv_nxv8f16:
1850 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1851 ; CHECK-NEXT: vfmv.v.f v10, fa0
1852 ; CHECK-NEXT: vmfle.vf v12, v10, fa0
1853 ; CHECK-NEXT: vmfle.vv v10, v8, v8
1854 ; CHECK-NEXT: vmand.mm v0, v12, v10
1856 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1857 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1858 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
1859 ret <vscale x 8 x i1> %1
1862 define <vscale x 8 x i1> @fcmps_ueq_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
1863 ; CHECK-LABEL: fcmps_ueq_vv_nxv8f16:
1865 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1866 ; CHECK-NEXT: vmflt.vv v12, v8, v10
1867 ; CHECK-NEXT: vmflt.vv v13, v10, v8
1868 ; CHECK-NEXT: vmnor.mm v0, v13, v12
1870 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
1871 ret <vscale x 8 x i1> %1
1874 define <vscale x 8 x i1> @fcmps_ueq_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1875 ; CHECK-LABEL: fcmps_ueq_vf_nxv8f16:
1877 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1878 ; CHECK-NEXT: vmflt.vf v10, v8, fa0
1879 ; CHECK-NEXT: vmfgt.vf v11, v8, fa0
1880 ; CHECK-NEXT: vmnor.mm v0, v11, v10
1882 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1883 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1884 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
1885 ret <vscale x 8 x i1> %1
1888 define <vscale x 8 x i1> @fcmps_ueq_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1889 ; CHECK-LABEL: fcmps_ueq_fv_nxv8f16:
1891 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1892 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0
1893 ; CHECK-NEXT: vmflt.vf v11, v8, fa0
1894 ; CHECK-NEXT: vmnor.mm v0, v11, v10
1896 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1897 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1898 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
1899 ret <vscale x 8 x i1> %1
1902 define <vscale x 8 x i1> @fcmps_ugt_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
1903 ; CHECK-LABEL: fcmps_ugt_vv_nxv8f16:
1905 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1906 ; CHECK-NEXT: vmfle.vv v12, v8, v10
1907 ; CHECK-NEXT: vmnot.m v0, v12
1909 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
1910 ret <vscale x 8 x i1> %1
1913 define <vscale x 8 x i1> @fcmps_ugt_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1914 ; CHECK-LABEL: fcmps_ugt_vf_nxv8f16:
1916 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1917 ; CHECK-NEXT: vmfle.vf v10, v8, fa0
1918 ; CHECK-NEXT: vmnot.m v0, v10
1920 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1921 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1922 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
1923 ret <vscale x 8 x i1> %1
1926 define <vscale x 8 x i1> @fcmps_ugt_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1927 ; CHECK-LABEL: fcmps_ugt_fv_nxv8f16:
1929 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1930 ; CHECK-NEXT: vmfge.vf v10, v8, fa0
1931 ; CHECK-NEXT: vmnot.m v0, v10
1933 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1934 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1935 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
1936 ret <vscale x 8 x i1> %1
1939 define <vscale x 8 x i1> @fcmps_uge_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
1940 ; CHECK-LABEL: fcmps_uge_vv_nxv8f16:
1942 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1943 ; CHECK-NEXT: vmflt.vv v12, v8, v10
1944 ; CHECK-NEXT: vmnot.m v0, v12
1946 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
1947 ret <vscale x 8 x i1> %1
1950 define <vscale x 8 x i1> @fcmps_uge_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1951 ; CHECK-LABEL: fcmps_uge_vf_nxv8f16:
1953 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1954 ; CHECK-NEXT: vmflt.vf v10, v8, fa0
1955 ; CHECK-NEXT: vmnot.m v0, v10
1957 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1958 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1959 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
1960 ret <vscale x 8 x i1> %1
1963 define <vscale x 8 x i1> @fcmps_uge_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1964 ; CHECK-LABEL: fcmps_uge_fv_nxv8f16:
1966 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1967 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0
1968 ; CHECK-NEXT: vmnot.m v0, v10
1970 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1971 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1972 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
1973 ret <vscale x 8 x i1> %1
1976 define <vscale x 8 x i1> @fcmps_ult_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
1977 ; CHECK-LABEL: fcmps_ult_vv_nxv8f16:
1979 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1980 ; CHECK-NEXT: vmfle.vv v12, v10, v8
1981 ; CHECK-NEXT: vmnot.m v0, v12
1983 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
1984 ret <vscale x 8 x i1> %1
1987 define <vscale x 8 x i1> @fcmps_ult_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1988 ; CHECK-LABEL: fcmps_ult_vf_nxv8f16:
1990 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1991 ; CHECK-NEXT: vmfge.vf v10, v8, fa0
1992 ; CHECK-NEXT: vmnot.m v0, v10
1994 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1995 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1996 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
1997 ret <vscale x 8 x i1> %1
2000 define <vscale x 8 x i1> @fcmps_ult_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2001 ; CHECK-LABEL: fcmps_ult_fv_nxv8f16:
2003 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
2004 ; CHECK-NEXT: vmfle.vf v10, v8, fa0
2005 ; CHECK-NEXT: vmnot.m v0, v10
2007 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2008 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2009 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
2010 ret <vscale x 8 x i1> %1
2013 define <vscale x 8 x i1> @fcmps_ule_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
2014 ; CHECK-LABEL: fcmps_ule_vv_nxv8f16:
2016 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
2017 ; CHECK-NEXT: vmflt.vv v12, v10, v8
2018 ; CHECK-NEXT: vmnot.m v0, v12
2020 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
2021 ret <vscale x 8 x i1> %1
2024 define <vscale x 8 x i1> @fcmps_ule_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2025 ; CHECK-LABEL: fcmps_ule_vf_nxv8f16:
2027 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
2028 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0
2029 ; CHECK-NEXT: vmnot.m v0, v10
2031 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2032 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2033 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
2034 ret <vscale x 8 x i1> %1
2037 define <vscale x 8 x i1> @fcmps_ule_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2038 ; CHECK-LABEL: fcmps_ule_fv_nxv8f16:
2040 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
2041 ; CHECK-NEXT: vmflt.vf v10, v8, fa0
2042 ; CHECK-NEXT: vmnot.m v0, v10
2044 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2045 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2046 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
2047 ret <vscale x 8 x i1> %1
2050 define <vscale x 8 x i1> @fcmps_une_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
2051 ; CHECK-LABEL: fcmps_une_vv_nxv8f16:
2053 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
2054 ; CHECK-NEXT: vmfle.vv v12, v10, v8
2055 ; CHECK-NEXT: vmfle.vv v13, v8, v10
2056 ; CHECK-NEXT: vmnand.mm v0, v13, v12
2058 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
2059 ret <vscale x 8 x i1> %1
2062 define <vscale x 8 x i1> @fcmps_une_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2063 ; CHECK-LABEL: fcmps_une_vf_nxv8f16:
2065 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
2066 ; CHECK-NEXT: vmfge.vf v10, v8, fa0
2067 ; CHECK-NEXT: vmfle.vf v11, v8, fa0
2068 ; CHECK-NEXT: vmnand.mm v0, v11, v10
2070 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2071 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2072 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
2073 ret <vscale x 8 x i1> %1
2076 define <vscale x 8 x i1> @fcmps_une_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2077 ; CHECK-LABEL: fcmps_une_fv_nxv8f16:
2079 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
2080 ; CHECK-NEXT: vmfle.vf v10, v8, fa0
2081 ; CHECK-NEXT: vmfge.vf v11, v8, fa0
2082 ; CHECK-NEXT: vmnand.mm v0, v11, v10
2084 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2085 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2086 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
2087 ret <vscale x 8 x i1> %1
2090 define <vscale x 8 x i1> @fcmps_uno_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
2091 ; CHECK-LABEL: fcmps_uno_vv_nxv8f16:
2093 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
2094 ; CHECK-NEXT: vmfle.vv v12, v10, v10
2095 ; CHECK-NEXT: vmfle.vv v10, v8, v8
2096 ; CHECK-NEXT: vmnot.m v8, v10
2097 ; CHECK-NEXT: vmorn.mm v0, v8, v12
2099 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
2100 ret <vscale x 8 x i1> %1
2103 define <vscale x 8 x i1> @fcmps_uno_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2104 ; CHECK-LABEL: fcmps_uno_vf_nxv8f16:
2106 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
2107 ; CHECK-NEXT: vfmv.v.f v10, fa0
2108 ; CHECK-NEXT: vmfle.vf v12, v10, fa0
2109 ; CHECK-NEXT: vmfle.vv v10, v8, v8
2110 ; CHECK-NEXT: vmnot.m v8, v10
2111 ; CHECK-NEXT: vmorn.mm v0, v8, v12
2113 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2114 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2115 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
2116 ret <vscale x 8 x i1> %1
2119 define <vscale x 8 x i1> @fcmps_uno_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2120 ; CHECK-LABEL: fcmps_uno_fv_nxv8f16:
2122 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
2123 ; CHECK-NEXT: vfmv.v.f v10, fa0
2124 ; CHECK-NEXT: vmfle.vf v12, v10, fa0
2125 ; CHECK-NEXT: vmnot.m v10, v12
2126 ; CHECK-NEXT: vmfle.vv v11, v8, v8
2127 ; CHECK-NEXT: vmorn.mm v0, v10, v11
2129 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2130 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2131 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
2132 ret <vscale x 8 x i1> %1
2135 declare <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half>, <vscale x 16 x half>, metadata, metadata)
2136 define <vscale x 16 x i1> @fcmps_oeq_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2137 ; CHECK-LABEL: fcmps_oeq_vv_nxv16f16:
2139 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2140 ; CHECK-NEXT: vmfle.vv v16, v12, v8
2141 ; CHECK-NEXT: vmfle.vv v17, v8, v12
2142 ; CHECK-NEXT: vmand.mm v0, v17, v16
2144 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
2145 ret <vscale x 16 x i1> %1
2148 define <vscale x 16 x i1> @fcmps_oeq_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2149 ; CHECK-LABEL: fcmps_oeq_vf_nxv16f16:
2151 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2152 ; CHECK-NEXT: vmfge.vf v12, v8, fa0
2153 ; CHECK-NEXT: vmfle.vf v13, v8, fa0
2154 ; CHECK-NEXT: vmand.mm v0, v13, v12
2156 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2157 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2158 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
2159 ret <vscale x 16 x i1> %1
2162 define <vscale x 16 x i1> @fcmps_oeq_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2163 ; CHECK-LABEL: fcmps_oeq_fv_nxv16f16:
2165 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2166 ; CHECK-NEXT: vmfle.vf v12, v8, fa0
2167 ; CHECK-NEXT: vmfge.vf v13, v8, fa0
2168 ; CHECK-NEXT: vmand.mm v0, v13, v12
2170 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2171 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2172 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
2173 ret <vscale x 16 x i1> %1
2176 define <vscale x 16 x i1> @fcmps_ogt_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2177 ; CHECK-LABEL: fcmps_ogt_vv_nxv16f16:
2179 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2180 ; CHECK-NEXT: vmflt.vv v0, v12, v8
2182 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
2183 ret <vscale x 16 x i1> %1
2186 define <vscale x 16 x i1> @fcmps_ogt_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2187 ; CHECK-LABEL: fcmps_ogt_vf_nxv16f16:
2189 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2190 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
2192 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2193 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2194 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
2195 ret <vscale x 16 x i1> %1
2198 define <vscale x 16 x i1> @fcmps_ogt_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2199 ; CHECK-LABEL: fcmps_ogt_fv_nxv16f16:
2201 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2202 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
2204 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2205 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2206 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
2207 ret <vscale x 16 x i1> %1
2210 define <vscale x 16 x i1> @fcmps_oge_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2211 ; CHECK-LABEL: fcmps_oge_vv_nxv16f16:
2213 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2214 ; CHECK-NEXT: vmfle.vv v0, v12, v8
2216 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
2217 ret <vscale x 16 x i1> %1
2220 define <vscale x 16 x i1> @fcmps_oge_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2221 ; CHECK-LABEL: fcmps_oge_vf_nxv16f16:
2223 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2224 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
2226 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2227 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2228 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
2229 ret <vscale x 16 x i1> %1
2232 define <vscale x 16 x i1> @fcmps_oge_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2233 ; CHECK-LABEL: fcmps_oge_fv_nxv16f16:
2235 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2236 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
2238 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2239 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2240 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
2241 ret <vscale x 16 x i1> %1
2244 define <vscale x 16 x i1> @fcmps_olt_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2245 ; CHECK-LABEL: fcmps_olt_vv_nxv16f16:
2247 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2248 ; CHECK-NEXT: vmflt.vv v0, v8, v12
2250 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
2251 ret <vscale x 16 x i1> %1
2254 define <vscale x 16 x i1> @fcmps_olt_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2255 ; CHECK-LABEL: fcmps_olt_vf_nxv16f16:
2257 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2258 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
2260 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2261 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2262 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
2263 ret <vscale x 16 x i1> %1
2266 define <vscale x 16 x i1> @fcmps_olt_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2267 ; CHECK-LABEL: fcmps_olt_fv_nxv16f16:
2269 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2270 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
2272 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2273 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2274 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
2275 ret <vscale x 16 x i1> %1
2278 define <vscale x 16 x i1> @fcmps_ole_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2279 ; CHECK-LABEL: fcmps_ole_vv_nxv16f16:
2281 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2282 ; CHECK-NEXT: vmfle.vv v0, v8, v12
2284 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
2285 ret <vscale x 16 x i1> %1
2288 define <vscale x 16 x i1> @fcmps_ole_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2289 ; CHECK-LABEL: fcmps_ole_vf_nxv16f16:
2291 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2292 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
2294 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2295 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2296 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
2297 ret <vscale x 16 x i1> %1
2300 define <vscale x 16 x i1> @fcmps_ole_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2301 ; CHECK-LABEL: fcmps_ole_fv_nxv16f16:
2303 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2304 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
2306 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2307 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2308 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
2309 ret <vscale x 16 x i1> %1
2312 define <vscale x 16 x i1> @fcmps_one_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2313 ; CHECK-LABEL: fcmps_one_vv_nxv16f16:
2315 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2316 ; CHECK-NEXT: vmflt.vv v16, v8, v12
2317 ; CHECK-NEXT: vmflt.vv v17, v12, v8
2318 ; CHECK-NEXT: vmor.mm v0, v17, v16
2320 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
2321 ret <vscale x 16 x i1> %1
2324 define <vscale x 16 x i1> @fcmps_one_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2325 ; CHECK-LABEL: fcmps_one_vf_nxv16f16:
2327 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2328 ; CHECK-NEXT: vmflt.vf v12, v8, fa0
2329 ; CHECK-NEXT: vmfgt.vf v13, v8, fa0
2330 ; CHECK-NEXT: vmor.mm v0, v13, v12
2332 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2333 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2334 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
2335 ret <vscale x 16 x i1> %1
2338 define <vscale x 16 x i1> @fcmps_one_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2339 ; CHECK-LABEL: fcmps_one_fv_nxv16f16:
2341 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2342 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0
2343 ; CHECK-NEXT: vmflt.vf v13, v8, fa0
2344 ; CHECK-NEXT: vmor.mm v0, v13, v12
2346 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2347 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2348 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
2349 ret <vscale x 16 x i1> %1
2352 define <vscale x 16 x i1> @fcmps_ord_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2353 ; CHECK-LABEL: fcmps_ord_vv_nxv16f16:
2355 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2356 ; CHECK-NEXT: vmfle.vv v16, v12, v12
2357 ; CHECK-NEXT: vmfle.vv v12, v8, v8
2358 ; CHECK-NEXT: vmand.mm v0, v12, v16
2360 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
2361 ret <vscale x 16 x i1> %1
2364 define <vscale x 16 x i1> @fcmps_ord_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2365 ; CHECK-LABEL: fcmps_ord_vf_nxv16f16:
2367 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2368 ; CHECK-NEXT: vfmv.v.f v12, fa0
2369 ; CHECK-NEXT: vmfle.vf v16, v12, fa0
2370 ; CHECK-NEXT: vmfle.vv v12, v8, v8
2371 ; CHECK-NEXT: vmand.mm v0, v12, v16
2373 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2374 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2375 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
2376 ret <vscale x 16 x i1> %1
2379 define <vscale x 16 x i1> @fcmps_ord_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2380 ; CHECK-LABEL: fcmps_ord_fv_nxv16f16:
2382 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2383 ; CHECK-NEXT: vfmv.v.f v12, fa0
2384 ; CHECK-NEXT: vmfle.vf v16, v12, fa0
2385 ; CHECK-NEXT: vmfle.vv v12, v8, v8
2386 ; CHECK-NEXT: vmand.mm v0, v16, v12
2388 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2389 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2390 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
2391 ret <vscale x 16 x i1> %1
2394 define <vscale x 16 x i1> @fcmps_ueq_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2395 ; CHECK-LABEL: fcmps_ueq_vv_nxv16f16:
2397 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2398 ; CHECK-NEXT: vmflt.vv v16, v8, v12
2399 ; CHECK-NEXT: vmflt.vv v17, v12, v8
2400 ; CHECK-NEXT: vmnor.mm v0, v17, v16
2402 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
2403 ret <vscale x 16 x i1> %1
2406 define <vscale x 16 x i1> @fcmps_ueq_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2407 ; CHECK-LABEL: fcmps_ueq_vf_nxv16f16:
2409 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2410 ; CHECK-NEXT: vmflt.vf v12, v8, fa0
2411 ; CHECK-NEXT: vmfgt.vf v13, v8, fa0
2412 ; CHECK-NEXT: vmnor.mm v0, v13, v12
2414 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2415 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2416 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
2417 ret <vscale x 16 x i1> %1
2420 define <vscale x 16 x i1> @fcmps_ueq_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2421 ; CHECK-LABEL: fcmps_ueq_fv_nxv16f16:
2423 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2424 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0
2425 ; CHECK-NEXT: vmflt.vf v13, v8, fa0
2426 ; CHECK-NEXT: vmnor.mm v0, v13, v12
2428 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2429 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2430 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
2431 ret <vscale x 16 x i1> %1
2434 define <vscale x 16 x i1> @fcmps_ugt_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2435 ; CHECK-LABEL: fcmps_ugt_vv_nxv16f16:
2437 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2438 ; CHECK-NEXT: vmfle.vv v16, v8, v12
2439 ; CHECK-NEXT: vmnot.m v0, v16
2441 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
2442 ret <vscale x 16 x i1> %1
2445 define <vscale x 16 x i1> @fcmps_ugt_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2446 ; CHECK-LABEL: fcmps_ugt_vf_nxv16f16:
2448 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2449 ; CHECK-NEXT: vmfle.vf v12, v8, fa0
2450 ; CHECK-NEXT: vmnot.m v0, v12
2452 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2453 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2454 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
2455 ret <vscale x 16 x i1> %1
2458 define <vscale x 16 x i1> @fcmps_ugt_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2459 ; CHECK-LABEL: fcmps_ugt_fv_nxv16f16:
2461 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2462 ; CHECK-NEXT: vmfge.vf v12, v8, fa0
2463 ; CHECK-NEXT: vmnot.m v0, v12
2465 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2466 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2467 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
2468 ret <vscale x 16 x i1> %1
2471 define <vscale x 16 x i1> @fcmps_uge_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2472 ; CHECK-LABEL: fcmps_uge_vv_nxv16f16:
2474 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2475 ; CHECK-NEXT: vmflt.vv v16, v8, v12
2476 ; CHECK-NEXT: vmnot.m v0, v16
2478 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
2479 ret <vscale x 16 x i1> %1
2482 define <vscale x 16 x i1> @fcmps_uge_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2483 ; CHECK-LABEL: fcmps_uge_vf_nxv16f16:
2485 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2486 ; CHECK-NEXT: vmflt.vf v12, v8, fa0
2487 ; CHECK-NEXT: vmnot.m v0, v12
2489 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2490 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2491 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
2492 ret <vscale x 16 x i1> %1
2495 define <vscale x 16 x i1> @fcmps_uge_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2496 ; CHECK-LABEL: fcmps_uge_fv_nxv16f16:
2498 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2499 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0
2500 ; CHECK-NEXT: vmnot.m v0, v12
2502 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2503 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2504 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
2505 ret <vscale x 16 x i1> %1
2508 define <vscale x 16 x i1> @fcmps_ult_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2509 ; CHECK-LABEL: fcmps_ult_vv_nxv16f16:
2511 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2512 ; CHECK-NEXT: vmfle.vv v16, v12, v8
2513 ; CHECK-NEXT: vmnot.m v0, v16
2515 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
2516 ret <vscale x 16 x i1> %1
2519 define <vscale x 16 x i1> @fcmps_ult_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2520 ; CHECK-LABEL: fcmps_ult_vf_nxv16f16:
2522 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2523 ; CHECK-NEXT: vmfge.vf v12, v8, fa0
2524 ; CHECK-NEXT: vmnot.m v0, v12
2526 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2527 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2528 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
2529 ret <vscale x 16 x i1> %1
2532 define <vscale x 16 x i1> @fcmps_ult_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2533 ; CHECK-LABEL: fcmps_ult_fv_nxv16f16:
2535 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2536 ; CHECK-NEXT: vmfle.vf v12, v8, fa0
2537 ; CHECK-NEXT: vmnot.m v0, v12
2539 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2540 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2541 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
2542 ret <vscale x 16 x i1> %1
2545 define <vscale x 16 x i1> @fcmps_ule_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2546 ; CHECK-LABEL: fcmps_ule_vv_nxv16f16:
2548 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2549 ; CHECK-NEXT: vmflt.vv v16, v12, v8
2550 ; CHECK-NEXT: vmnot.m v0, v16
2552 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
2553 ret <vscale x 16 x i1> %1
2556 define <vscale x 16 x i1> @fcmps_ule_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2557 ; CHECK-LABEL: fcmps_ule_vf_nxv16f16:
2559 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2560 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0
2561 ; CHECK-NEXT: vmnot.m v0, v12
2563 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2564 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2565 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
2566 ret <vscale x 16 x i1> %1
2569 define <vscale x 16 x i1> @fcmps_ule_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2570 ; CHECK-LABEL: fcmps_ule_fv_nxv16f16:
2572 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2573 ; CHECK-NEXT: vmflt.vf v12, v8, fa0
2574 ; CHECK-NEXT: vmnot.m v0, v12
2576 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2577 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2578 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
2579 ret <vscale x 16 x i1> %1
2582 define <vscale x 16 x i1> @fcmps_une_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2583 ; CHECK-LABEL: fcmps_une_vv_nxv16f16:
2585 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2586 ; CHECK-NEXT: vmfle.vv v16, v12, v8
2587 ; CHECK-NEXT: vmfle.vv v17, v8, v12
2588 ; CHECK-NEXT: vmnand.mm v0, v17, v16
2590 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
2591 ret <vscale x 16 x i1> %1
2594 define <vscale x 16 x i1> @fcmps_une_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2595 ; CHECK-LABEL: fcmps_une_vf_nxv16f16:
2597 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2598 ; CHECK-NEXT: vmfge.vf v12, v8, fa0
2599 ; CHECK-NEXT: vmfle.vf v13, v8, fa0
2600 ; CHECK-NEXT: vmnand.mm v0, v13, v12
2602 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2603 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2604 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
2605 ret <vscale x 16 x i1> %1
2608 define <vscale x 16 x i1> @fcmps_une_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2609 ; CHECK-LABEL: fcmps_une_fv_nxv16f16:
2611 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2612 ; CHECK-NEXT: vmfle.vf v12, v8, fa0
2613 ; CHECK-NEXT: vmfge.vf v13, v8, fa0
2614 ; CHECK-NEXT: vmnand.mm v0, v13, v12
2616 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2617 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2618 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
2619 ret <vscale x 16 x i1> %1
2622 define <vscale x 16 x i1> @fcmps_uno_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2623 ; CHECK-LABEL: fcmps_uno_vv_nxv16f16:
2625 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2626 ; CHECK-NEXT: vmfle.vv v16, v12, v12
2627 ; CHECK-NEXT: vmfle.vv v12, v8, v8
2628 ; CHECK-NEXT: vmnot.m v8, v12
2629 ; CHECK-NEXT: vmorn.mm v0, v8, v16
2631 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
2632 ret <vscale x 16 x i1> %1
2635 define <vscale x 16 x i1> @fcmps_uno_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2636 ; CHECK-LABEL: fcmps_uno_vf_nxv16f16:
2638 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2639 ; CHECK-NEXT: vfmv.v.f v12, fa0
2640 ; CHECK-NEXT: vmfle.vf v16, v12, fa0
2641 ; CHECK-NEXT: vmfle.vv v12, v8, v8
2642 ; CHECK-NEXT: vmnot.m v8, v12
2643 ; CHECK-NEXT: vmorn.mm v0, v8, v16
2645 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2646 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2647 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
2648 ret <vscale x 16 x i1> %1
2651 define <vscale x 16 x i1> @fcmps_uno_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2652 ; CHECK-LABEL: fcmps_uno_fv_nxv16f16:
2654 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2655 ; CHECK-NEXT: vfmv.v.f v12, fa0
2656 ; CHECK-NEXT: vmfle.vf v16, v12, fa0
2657 ; CHECK-NEXT: vmnot.m v12, v16
2658 ; CHECK-NEXT: vmfle.vv v13, v8, v8
2659 ; CHECK-NEXT: vmorn.mm v0, v12, v13
2661 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2662 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2663 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
2664 ret <vscale x 16 x i1> %1
2667 declare <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half>, <vscale x 32 x half>, metadata, metadata)
2668 define <vscale x 32 x i1> @fcmps_oeq_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
2669 ; CHECK-LABEL: fcmps_oeq_vv_nxv32f16:
2671 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2672 ; CHECK-NEXT: vmfle.vv v24, v16, v8
2673 ; CHECK-NEXT: vmfle.vv v25, v8, v16
2674 ; CHECK-NEXT: vmand.mm v0, v25, v24
2676 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
2677 ret <vscale x 32 x i1> %1
2680 define <vscale x 32 x i1> @fcmps_oeq_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
2681 ; CHECK-LABEL: fcmps_oeq_vf_nxv32f16:
2683 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2684 ; CHECK-NEXT: vmfge.vf v16, v8, fa0
2685 ; CHECK-NEXT: vmfle.vf v17, v8, fa0
2686 ; CHECK-NEXT: vmand.mm v0, v17, v16
2688 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
2689 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
2690 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
2691 ret <vscale x 32 x i1> %1
2694 define <vscale x 32 x i1> @fcmps_oeq_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
2695 ; CHECK-LABEL: fcmps_oeq_fv_nxv32f16:
2697 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2698 ; CHECK-NEXT: vmfle.vf v16, v8, fa0
2699 ; CHECK-NEXT: vmfge.vf v17, v8, fa0
2700 ; CHECK-NEXT: vmand.mm v0, v17, v16
2702 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
2703 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
2704 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
2705 ret <vscale x 32 x i1> %1
2708 define <vscale x 32 x i1> @fcmps_ogt_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
2709 ; CHECK-LABEL: fcmps_ogt_vv_nxv32f16:
2711 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2712 ; CHECK-NEXT: vmflt.vv v0, v16, v8
2714 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
2715 ret <vscale x 32 x i1> %1
2718 define <vscale x 32 x i1> @fcmps_ogt_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
2719 ; CHECK-LABEL: fcmps_ogt_vf_nxv32f16:
2721 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2722 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
2724 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
2725 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
2726 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
2727 ret <vscale x 32 x i1> %1
2730 define <vscale x 32 x i1> @fcmps_ogt_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
2731 ; CHECK-LABEL: fcmps_ogt_fv_nxv32f16:
2733 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2734 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
2736 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
2737 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
2738 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
2739 ret <vscale x 32 x i1> %1
2742 define <vscale x 32 x i1> @fcmps_oge_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
2743 ; CHECK-LABEL: fcmps_oge_vv_nxv32f16:
2745 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2746 ; CHECK-NEXT: vmfle.vv v0, v16, v8
2748 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
2749 ret <vscale x 32 x i1> %1
2752 define <vscale x 32 x i1> @fcmps_oge_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
2753 ; CHECK-LABEL: fcmps_oge_vf_nxv32f16:
2755 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2756 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
2758 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
2759 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
2760 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
2761 ret <vscale x 32 x i1> %1
2764 define <vscale x 32 x i1> @fcmps_oge_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
2765 ; CHECK-LABEL: fcmps_oge_fv_nxv32f16:
2767 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2768 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
2770 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
2771 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
2772 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
2773 ret <vscale x 32 x i1> %1
2776 define <vscale x 32 x i1> @fcmps_olt_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
2777 ; CHECK-LABEL: fcmps_olt_vv_nxv32f16:
2779 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2780 ; CHECK-NEXT: vmflt.vv v0, v8, v16
2782 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
2783 ret <vscale x 32 x i1> %1
2786 define <vscale x 32 x i1> @fcmps_olt_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
2787 ; CHECK-LABEL: fcmps_olt_vf_nxv32f16:
2789 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2790 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
2792 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
2793 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
2794 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
2795 ret <vscale x 32 x i1> %1
2798 define <vscale x 32 x i1> @fcmps_olt_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
2799 ; CHECK-LABEL: fcmps_olt_fv_nxv32f16:
2801 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2802 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
2804 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
2805 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
2806 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
2807 ret <vscale x 32 x i1> %1
2810 define <vscale x 32 x i1> @fcmps_ole_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
2811 ; CHECK-LABEL: fcmps_ole_vv_nxv32f16:
2813 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2814 ; CHECK-NEXT: vmfle.vv v0, v8, v16
2816 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
2817 ret <vscale x 32 x i1> %1
2820 define <vscale x 32 x i1> @fcmps_ole_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
2821 ; CHECK-LABEL: fcmps_ole_vf_nxv32f16:
2823 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2824 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
2826 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
2827 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
2828 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
2829 ret <vscale x 32 x i1> %1
2832 define <vscale x 32 x i1> @fcmps_ole_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
2833 ; CHECK-LABEL: fcmps_ole_fv_nxv32f16:
2835 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2836 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
2838 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
2839 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
2840 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
2841 ret <vscale x 32 x i1> %1
2844 define <vscale x 32 x i1> @fcmps_one_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
2845 ; CHECK-LABEL: fcmps_one_vv_nxv32f16:
2847 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2848 ; CHECK-NEXT: vmflt.vv v24, v8, v16
2849 ; CHECK-NEXT: vmflt.vv v25, v16, v8
2850 ; CHECK-NEXT: vmor.mm v0, v25, v24
2852 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
2853 ret <vscale x 32 x i1> %1
2856 define <vscale x 32 x i1> @fcmps_one_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
2857 ; CHECK-LABEL: fcmps_one_vf_nxv32f16:
2859 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2860 ; CHECK-NEXT: vmflt.vf v16, v8, fa0
2861 ; CHECK-NEXT: vmfgt.vf v17, v8, fa0
2862 ; CHECK-NEXT: vmor.mm v0, v17, v16
2864 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
2865 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
2866 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
2867 ret <vscale x 32 x i1> %1
2870 define <vscale x 32 x i1> @fcmps_one_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
2871 ; CHECK-LABEL: fcmps_one_fv_nxv32f16:
2873 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2874 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0
2875 ; CHECK-NEXT: vmflt.vf v17, v8, fa0
2876 ; CHECK-NEXT: vmor.mm v0, v17, v16
2878 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
2879 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
2880 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
2881 ret <vscale x 32 x i1> %1
2884 define <vscale x 32 x i1> @fcmps_ord_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
2885 ; CHECK-LABEL: fcmps_ord_vv_nxv32f16:
2887 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2888 ; CHECK-NEXT: vmfle.vv v24, v16, v16
2889 ; CHECK-NEXT: vmfle.vv v16, v8, v8
2890 ; CHECK-NEXT: vmand.mm v0, v16, v24
2892 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
2893 ret <vscale x 32 x i1> %1
2896 define <vscale x 32 x i1> @fcmps_ord_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
2897 ; CHECK-LABEL: fcmps_ord_vf_nxv32f16:
2899 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2900 ; CHECK-NEXT: vfmv.v.f v16, fa0
2901 ; CHECK-NEXT: vmfle.vf v24, v16, fa0
2902 ; CHECK-NEXT: vmfle.vv v16, v8, v8
2903 ; CHECK-NEXT: vmand.mm v0, v16, v24
2905 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
2906 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
2907 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
2908 ret <vscale x 32 x i1> %1
2911 define <vscale x 32 x i1> @fcmps_ord_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
2912 ; CHECK-LABEL: fcmps_ord_fv_nxv32f16:
2914 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2915 ; CHECK-NEXT: vfmv.v.f v16, fa0
2916 ; CHECK-NEXT: vmfle.vf v24, v16, fa0
2917 ; CHECK-NEXT: vmfle.vv v16, v8, v8
2918 ; CHECK-NEXT: vmand.mm v0, v24, v16
2920 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
2921 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
2922 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
2923 ret <vscale x 32 x i1> %1
2926 define <vscale x 32 x i1> @fcmps_ueq_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
2927 ; CHECK-LABEL: fcmps_ueq_vv_nxv32f16:
2929 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2930 ; CHECK-NEXT: vmflt.vv v24, v8, v16
2931 ; CHECK-NEXT: vmflt.vv v25, v16, v8
2932 ; CHECK-NEXT: vmnor.mm v0, v25, v24
2934 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
2935 ret <vscale x 32 x i1> %1
2938 define <vscale x 32 x i1> @fcmps_ueq_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
2939 ; CHECK-LABEL: fcmps_ueq_vf_nxv32f16:
2941 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2942 ; CHECK-NEXT: vmflt.vf v16, v8, fa0
2943 ; CHECK-NEXT: vmfgt.vf v17, v8, fa0
2944 ; CHECK-NEXT: vmnor.mm v0, v17, v16
2946 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
2947 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
2948 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
2949 ret <vscale x 32 x i1> %1
2952 define <vscale x 32 x i1> @fcmps_ueq_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
2953 ; CHECK-LABEL: fcmps_ueq_fv_nxv32f16:
2955 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2956 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0
2957 ; CHECK-NEXT: vmflt.vf v17, v8, fa0
2958 ; CHECK-NEXT: vmnor.mm v0, v17, v16
2960 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
2961 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
2962 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
2963 ret <vscale x 32 x i1> %1
2966 define <vscale x 32 x i1> @fcmps_ugt_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
2967 ; CHECK-LABEL: fcmps_ugt_vv_nxv32f16:
2969 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2970 ; CHECK-NEXT: vmfle.vv v24, v8, v16
2971 ; CHECK-NEXT: vmnot.m v0, v24
2973 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
2974 ret <vscale x 32 x i1> %1
2977 define <vscale x 32 x i1> @fcmps_ugt_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
2978 ; CHECK-LABEL: fcmps_ugt_vf_nxv32f16:
2980 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2981 ; CHECK-NEXT: vmfle.vf v16, v8, fa0
2982 ; CHECK-NEXT: vmnot.m v0, v16
2984 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
2985 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
2986 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
2987 ret <vscale x 32 x i1> %1
2990 define <vscale x 32 x i1> @fcmps_ugt_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
2991 ; CHECK-LABEL: fcmps_ugt_fv_nxv32f16:
2993 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
2994 ; CHECK-NEXT: vmfge.vf v16, v8, fa0
2995 ; CHECK-NEXT: vmnot.m v0, v16
2997 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
2998 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
2999 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
3000 ret <vscale x 32 x i1> %1
3003 define <vscale x 32 x i1> @fcmps_uge_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
3004 ; CHECK-LABEL: fcmps_uge_vv_nxv32f16:
3006 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3007 ; CHECK-NEXT: vmflt.vv v24, v8, v16
3008 ; CHECK-NEXT: vmnot.m v0, v24
3010 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
3011 ret <vscale x 32 x i1> %1
3014 define <vscale x 32 x i1> @fcmps_uge_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3015 ; CHECK-LABEL: fcmps_uge_vf_nxv32f16:
3017 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3018 ; CHECK-NEXT: vmflt.vf v16, v8, fa0
3019 ; CHECK-NEXT: vmnot.m v0, v16
3021 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3022 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3023 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
3024 ret <vscale x 32 x i1> %1
3027 define <vscale x 32 x i1> @fcmps_uge_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3028 ; CHECK-LABEL: fcmps_uge_fv_nxv32f16:
3030 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3031 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0
3032 ; CHECK-NEXT: vmnot.m v0, v16
3034 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3035 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3036 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
3037 ret <vscale x 32 x i1> %1
3040 define <vscale x 32 x i1> @fcmps_ult_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
3041 ; CHECK-LABEL: fcmps_ult_vv_nxv32f16:
3043 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3044 ; CHECK-NEXT: vmfle.vv v24, v16, v8
3045 ; CHECK-NEXT: vmnot.m v0, v24
3047 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
3048 ret <vscale x 32 x i1> %1
3051 define <vscale x 32 x i1> @fcmps_ult_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3052 ; CHECK-LABEL: fcmps_ult_vf_nxv32f16:
3054 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3055 ; CHECK-NEXT: vmfge.vf v16, v8, fa0
3056 ; CHECK-NEXT: vmnot.m v0, v16
3058 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3059 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3060 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
3061 ret <vscale x 32 x i1> %1
3064 define <vscale x 32 x i1> @fcmps_ult_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3065 ; CHECK-LABEL: fcmps_ult_fv_nxv32f16:
3067 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3068 ; CHECK-NEXT: vmfle.vf v16, v8, fa0
3069 ; CHECK-NEXT: vmnot.m v0, v16
3071 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3072 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3073 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
3074 ret <vscale x 32 x i1> %1
3077 define <vscale x 32 x i1> @fcmps_ule_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
3078 ; CHECK-LABEL: fcmps_ule_vv_nxv32f16:
3080 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3081 ; CHECK-NEXT: vmflt.vv v24, v16, v8
3082 ; CHECK-NEXT: vmnot.m v0, v24
3084 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
3085 ret <vscale x 32 x i1> %1
3088 define <vscale x 32 x i1> @fcmps_ule_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3089 ; CHECK-LABEL: fcmps_ule_vf_nxv32f16:
3091 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3092 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0
3093 ; CHECK-NEXT: vmnot.m v0, v16
3095 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3096 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3097 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
3098 ret <vscale x 32 x i1> %1
3101 define <vscale x 32 x i1> @fcmps_ule_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3102 ; CHECK-LABEL: fcmps_ule_fv_nxv32f16:
3104 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3105 ; CHECK-NEXT: vmflt.vf v16, v8, fa0
3106 ; CHECK-NEXT: vmnot.m v0, v16
3108 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3109 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3110 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
3111 ret <vscale x 32 x i1> %1
3114 define <vscale x 32 x i1> @fcmps_une_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
3115 ; CHECK-LABEL: fcmps_une_vv_nxv32f16:
3117 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3118 ; CHECK-NEXT: vmfle.vv v24, v16, v8
3119 ; CHECK-NEXT: vmfle.vv v25, v8, v16
3120 ; CHECK-NEXT: vmnand.mm v0, v25, v24
3122 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
3123 ret <vscale x 32 x i1> %1
3126 define <vscale x 32 x i1> @fcmps_une_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3127 ; CHECK-LABEL: fcmps_une_vf_nxv32f16:
3129 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3130 ; CHECK-NEXT: vmfge.vf v16, v8, fa0
3131 ; CHECK-NEXT: vmfle.vf v17, v8, fa0
3132 ; CHECK-NEXT: vmnand.mm v0, v17, v16
3134 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3135 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3136 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
3137 ret <vscale x 32 x i1> %1
3140 define <vscale x 32 x i1> @fcmps_une_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3141 ; CHECK-LABEL: fcmps_une_fv_nxv32f16:
3143 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3144 ; CHECK-NEXT: vmfle.vf v16, v8, fa0
3145 ; CHECK-NEXT: vmfge.vf v17, v8, fa0
3146 ; CHECK-NEXT: vmnand.mm v0, v17, v16
3148 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3149 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3150 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
3151 ret <vscale x 32 x i1> %1
3154 define <vscale x 32 x i1> @fcmps_uno_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
3155 ; CHECK-LABEL: fcmps_uno_vv_nxv32f16:
3157 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3158 ; CHECK-NEXT: vmfle.vv v24, v16, v16
3159 ; CHECK-NEXT: vmfle.vv v16, v8, v8
3160 ; CHECK-NEXT: vmnot.m v8, v16
3161 ; CHECK-NEXT: vmorn.mm v0, v8, v24
3163 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
3164 ret <vscale x 32 x i1> %1
3167 define <vscale x 32 x i1> @fcmps_uno_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3168 ; CHECK-LABEL: fcmps_uno_vf_nxv32f16:
3170 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3171 ; CHECK-NEXT: vfmv.v.f v16, fa0
3172 ; CHECK-NEXT: vmfle.vf v24, v16, fa0
3173 ; CHECK-NEXT: vmfle.vv v16, v8, v8
3174 ; CHECK-NEXT: vmnot.m v8, v16
3175 ; CHECK-NEXT: vmorn.mm v0, v8, v24
3177 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3178 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3179 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
3180 ret <vscale x 32 x i1> %1
3183 define <vscale x 32 x i1> @fcmps_uno_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3184 ; CHECK-LABEL: fcmps_uno_fv_nxv32f16:
3186 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3187 ; CHECK-NEXT: vfmv.v.f v16, fa0
3188 ; CHECK-NEXT: vmfle.vf v24, v16, fa0
3189 ; CHECK-NEXT: vmnot.m v16, v24
3190 ; CHECK-NEXT: vmfle.vv v17, v8, v8
3191 ; CHECK-NEXT: vmorn.mm v0, v16, v17
3193 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3194 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3195 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
3196 ret <vscale x 32 x i1> %1
3199 declare <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float>, <vscale x 1 x float>, metadata, metadata)
3200 define <vscale x 1 x i1> @fcmps_oeq_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
3201 ; CHECK-LABEL: fcmps_oeq_vv_nxv1f32:
3203 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3204 ; CHECK-NEXT: vmfle.vv v10, v9, v8
3205 ; CHECK-NEXT: vmfle.vv v8, v8, v9
3206 ; CHECK-NEXT: vmand.mm v0, v8, v10
3208 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
3209 ret <vscale x 1 x i1> %1
3212 define <vscale x 1 x i1> @fcmps_oeq_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3213 ; CHECK-LABEL: fcmps_oeq_vf_nxv1f32:
3215 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3216 ; CHECK-NEXT: vmfge.vf v9, v8, fa0
3217 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
3218 ; CHECK-NEXT: vmand.mm v0, v8, v9
3220 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3221 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3222 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
3223 ret <vscale x 1 x i1> %1
3226 define <vscale x 1 x i1> @fcmps_oeq_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3227 ; CHECK-LABEL: fcmps_oeq_fv_nxv1f32:
3229 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3230 ; CHECK-NEXT: vmfle.vf v9, v8, fa0
3231 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
3232 ; CHECK-NEXT: vmand.mm v0, v8, v9
3234 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3235 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3236 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
3237 ret <vscale x 1 x i1> %1
3240 define <vscale x 1 x i1> @fcmps_ogt_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
3241 ; CHECK-LABEL: fcmps_ogt_vv_nxv1f32:
3243 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3244 ; CHECK-NEXT: vmflt.vv v0, v9, v8
3246 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
3247 ret <vscale x 1 x i1> %1
3250 define <vscale x 1 x i1> @fcmps_ogt_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3251 ; CHECK-LABEL: fcmps_ogt_vf_nxv1f32:
3253 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3254 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
3256 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3257 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3258 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
3259 ret <vscale x 1 x i1> %1
3262 define <vscale x 1 x i1> @fcmps_ogt_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3263 ; CHECK-LABEL: fcmps_ogt_fv_nxv1f32:
3265 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3266 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
3268 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3269 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3270 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
3271 ret <vscale x 1 x i1> %1
3274 define <vscale x 1 x i1> @fcmps_oge_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
3275 ; CHECK-LABEL: fcmps_oge_vv_nxv1f32:
3277 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3278 ; CHECK-NEXT: vmfle.vv v0, v9, v8
3280 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
3281 ret <vscale x 1 x i1> %1
3284 define <vscale x 1 x i1> @fcmps_oge_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3285 ; CHECK-LABEL: fcmps_oge_vf_nxv1f32:
3287 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3288 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
3290 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3291 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3292 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
3293 ret <vscale x 1 x i1> %1
3296 define <vscale x 1 x i1> @fcmps_oge_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3297 ; CHECK-LABEL: fcmps_oge_fv_nxv1f32:
3299 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3300 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
3302 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3303 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3304 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
3305 ret <vscale x 1 x i1> %1
3308 define <vscale x 1 x i1> @fcmps_olt_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
3309 ; CHECK-LABEL: fcmps_olt_vv_nxv1f32:
3311 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3312 ; CHECK-NEXT: vmflt.vv v0, v8, v9
3314 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
3315 ret <vscale x 1 x i1> %1
3318 define <vscale x 1 x i1> @fcmps_olt_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3319 ; CHECK-LABEL: fcmps_olt_vf_nxv1f32:
3321 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3322 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
3324 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3325 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3326 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
3327 ret <vscale x 1 x i1> %1
3330 define <vscale x 1 x i1> @fcmps_olt_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3331 ; CHECK-LABEL: fcmps_olt_fv_nxv1f32:
3333 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3334 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
3336 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3337 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3338 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
3339 ret <vscale x 1 x i1> %1
3342 define <vscale x 1 x i1> @fcmps_ole_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
3343 ; CHECK-LABEL: fcmps_ole_vv_nxv1f32:
3345 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3346 ; CHECK-NEXT: vmfle.vv v0, v8, v9
3348 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
3349 ret <vscale x 1 x i1> %1
3352 define <vscale x 1 x i1> @fcmps_ole_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3353 ; CHECK-LABEL: fcmps_ole_vf_nxv1f32:
3355 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3356 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
3358 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3359 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3360 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
3361 ret <vscale x 1 x i1> %1
3364 define <vscale x 1 x i1> @fcmps_ole_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3365 ; CHECK-LABEL: fcmps_ole_fv_nxv1f32:
3367 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3368 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
3370 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3371 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3372 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
3373 ret <vscale x 1 x i1> %1
3376 define <vscale x 1 x i1> @fcmps_one_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
3377 ; CHECK-LABEL: fcmps_one_vv_nxv1f32:
3379 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3380 ; CHECK-NEXT: vmflt.vv v10, v8, v9
3381 ; CHECK-NEXT: vmflt.vv v8, v9, v8
3382 ; CHECK-NEXT: vmor.mm v0, v8, v10
3384 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
3385 ret <vscale x 1 x i1> %1
3388 define <vscale x 1 x i1> @fcmps_one_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3389 ; CHECK-LABEL: fcmps_one_vf_nxv1f32:
3391 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3392 ; CHECK-NEXT: vmflt.vf v9, v8, fa0
3393 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
3394 ; CHECK-NEXT: vmor.mm v0, v8, v9
3396 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3397 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3398 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
3399 ret <vscale x 1 x i1> %1
3402 define <vscale x 1 x i1> @fcmps_one_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3403 ; CHECK-LABEL: fcmps_one_fv_nxv1f32:
3405 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3406 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0
3407 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
3408 ; CHECK-NEXT: vmor.mm v0, v8, v9
3410 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3411 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3412 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
3413 ret <vscale x 1 x i1> %1
3416 define <vscale x 1 x i1> @fcmps_ord_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
3417 ; CHECK-LABEL: fcmps_ord_vv_nxv1f32:
3419 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3420 ; CHECK-NEXT: vmfle.vv v9, v9, v9
3421 ; CHECK-NEXT: vmfle.vv v8, v8, v8
3422 ; CHECK-NEXT: vmand.mm v0, v8, v9
3424 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
3425 ret <vscale x 1 x i1> %1
3428 define <vscale x 1 x i1> @fcmps_ord_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3429 ; CHECK-LABEL: fcmps_ord_vf_nxv1f32:
3431 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3432 ; CHECK-NEXT: vfmv.v.f v9, fa0
3433 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
3434 ; CHECK-NEXT: vmfle.vv v8, v8, v8
3435 ; CHECK-NEXT: vmand.mm v0, v8, v9
3437 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3438 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3439 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
3440 ret <vscale x 1 x i1> %1
3443 define <vscale x 1 x i1> @fcmps_ord_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3444 ; CHECK-LABEL: fcmps_ord_fv_nxv1f32:
3446 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3447 ; CHECK-NEXT: vfmv.v.f v9, fa0
3448 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
3449 ; CHECK-NEXT: vmfle.vv v8, v8, v8
3450 ; CHECK-NEXT: vmand.mm v0, v9, v8
3452 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3453 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3454 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
3455 ret <vscale x 1 x i1> %1
3458 define <vscale x 1 x i1> @fcmps_ueq_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
3459 ; CHECK-LABEL: fcmps_ueq_vv_nxv1f32:
3461 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3462 ; CHECK-NEXT: vmflt.vv v10, v8, v9
3463 ; CHECK-NEXT: vmflt.vv v8, v9, v8
3464 ; CHECK-NEXT: vmnor.mm v0, v8, v10
3466 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
3467 ret <vscale x 1 x i1> %1
3470 define <vscale x 1 x i1> @fcmps_ueq_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3471 ; CHECK-LABEL: fcmps_ueq_vf_nxv1f32:
3473 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3474 ; CHECK-NEXT: vmflt.vf v9, v8, fa0
3475 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
3476 ; CHECK-NEXT: vmnor.mm v0, v8, v9
3478 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3479 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3480 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
3481 ret <vscale x 1 x i1> %1
3484 define <vscale x 1 x i1> @fcmps_ueq_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3485 ; CHECK-LABEL: fcmps_ueq_fv_nxv1f32:
3487 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3488 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0
3489 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
3490 ; CHECK-NEXT: vmnor.mm v0, v8, v9
3492 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3493 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3494 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
3495 ret <vscale x 1 x i1> %1
3498 define <vscale x 1 x i1> @fcmps_ugt_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
3499 ; CHECK-LABEL: fcmps_ugt_vv_nxv1f32:
3501 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3502 ; CHECK-NEXT: vmfle.vv v8, v8, v9
3503 ; CHECK-NEXT: vmnot.m v0, v8
3505 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
3506 ret <vscale x 1 x i1> %1
3509 define <vscale x 1 x i1> @fcmps_ugt_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3510 ; CHECK-LABEL: fcmps_ugt_vf_nxv1f32:
3512 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3513 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
3514 ; CHECK-NEXT: vmnot.m v0, v8
3516 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3517 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3518 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
3519 ret <vscale x 1 x i1> %1
3522 define <vscale x 1 x i1> @fcmps_ugt_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3523 ; CHECK-LABEL: fcmps_ugt_fv_nxv1f32:
3525 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3526 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
3527 ; CHECK-NEXT: vmnot.m v0, v8
3529 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3530 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3531 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
3532 ret <vscale x 1 x i1> %1
3535 define <vscale x 1 x i1> @fcmps_uge_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
3536 ; CHECK-LABEL: fcmps_uge_vv_nxv1f32:
3538 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3539 ; CHECK-NEXT: vmflt.vv v8, v8, v9
3540 ; CHECK-NEXT: vmnot.m v0, v8
3542 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
3543 ret <vscale x 1 x i1> %1
3546 define <vscale x 1 x i1> @fcmps_uge_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3547 ; CHECK-LABEL: fcmps_uge_vf_nxv1f32:
3549 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3550 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
3551 ; CHECK-NEXT: vmnot.m v0, v8
3553 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3554 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3555 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
3556 ret <vscale x 1 x i1> %1
3559 define <vscale x 1 x i1> @fcmps_uge_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3560 ; CHECK-LABEL: fcmps_uge_fv_nxv1f32:
3562 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3563 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
3564 ; CHECK-NEXT: vmnot.m v0, v8
3566 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3567 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3568 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
3569 ret <vscale x 1 x i1> %1
3572 define <vscale x 1 x i1> @fcmps_ult_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
3573 ; CHECK-LABEL: fcmps_ult_vv_nxv1f32:
3575 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3576 ; CHECK-NEXT: vmfle.vv v8, v9, v8
3577 ; CHECK-NEXT: vmnot.m v0, v8
3579 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
3580 ret <vscale x 1 x i1> %1
3583 define <vscale x 1 x i1> @fcmps_ult_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3584 ; CHECK-LABEL: fcmps_ult_vf_nxv1f32:
3586 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3587 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
3588 ; CHECK-NEXT: vmnot.m v0, v8
3590 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3591 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3592 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
3593 ret <vscale x 1 x i1> %1
3596 define <vscale x 1 x i1> @fcmps_ult_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3597 ; CHECK-LABEL: fcmps_ult_fv_nxv1f32:
3599 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3600 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
3601 ; CHECK-NEXT: vmnot.m v0, v8
3603 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3604 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3605 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
3606 ret <vscale x 1 x i1> %1
3609 define <vscale x 1 x i1> @fcmps_ule_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
3610 ; CHECK-LABEL: fcmps_ule_vv_nxv1f32:
3612 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3613 ; CHECK-NEXT: vmflt.vv v8, v9, v8
3614 ; CHECK-NEXT: vmnot.m v0, v8
3616 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
3617 ret <vscale x 1 x i1> %1
3620 define <vscale x 1 x i1> @fcmps_ule_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3621 ; CHECK-LABEL: fcmps_ule_vf_nxv1f32:
3623 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3624 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
3625 ; CHECK-NEXT: vmnot.m v0, v8
3627 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3628 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3629 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
3630 ret <vscale x 1 x i1> %1
3633 define <vscale x 1 x i1> @fcmps_ule_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3634 ; CHECK-LABEL: fcmps_ule_fv_nxv1f32:
3636 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3637 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
3638 ; CHECK-NEXT: vmnot.m v0, v8
3640 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3641 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3642 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
3643 ret <vscale x 1 x i1> %1
3646 define <vscale x 1 x i1> @fcmps_une_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
3647 ; CHECK-LABEL: fcmps_une_vv_nxv1f32:
3649 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3650 ; CHECK-NEXT: vmfle.vv v10, v9, v8
3651 ; CHECK-NEXT: vmfle.vv v8, v8, v9
3652 ; CHECK-NEXT: vmnand.mm v0, v8, v10
3654 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
3655 ret <vscale x 1 x i1> %1
3658 define <vscale x 1 x i1> @fcmps_une_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3659 ; CHECK-LABEL: fcmps_une_vf_nxv1f32:
3661 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3662 ; CHECK-NEXT: vmfge.vf v9, v8, fa0
3663 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
3664 ; CHECK-NEXT: vmnand.mm v0, v8, v9
3666 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3667 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3668 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
3669 ret <vscale x 1 x i1> %1
3672 define <vscale x 1 x i1> @fcmps_une_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3673 ; CHECK-LABEL: fcmps_une_fv_nxv1f32:
3675 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3676 ; CHECK-NEXT: vmfle.vf v9, v8, fa0
3677 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
3678 ; CHECK-NEXT: vmnand.mm v0, v8, v9
3680 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3681 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3682 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
3683 ret <vscale x 1 x i1> %1
3686 define <vscale x 1 x i1> @fcmps_uno_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
3687 ; CHECK-LABEL: fcmps_uno_vv_nxv1f32:
3689 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3690 ; CHECK-NEXT: vmfle.vv v9, v9, v9
3691 ; CHECK-NEXT: vmfle.vv v8, v8, v8
3692 ; CHECK-NEXT: vmnot.m v8, v8
3693 ; CHECK-NEXT: vmorn.mm v0, v8, v9
3695 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
3696 ret <vscale x 1 x i1> %1
3699 define <vscale x 1 x i1> @fcmps_uno_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3700 ; CHECK-LABEL: fcmps_uno_vf_nxv1f32:
3702 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3703 ; CHECK-NEXT: vfmv.v.f v9, fa0
3704 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
3705 ; CHECK-NEXT: vmfle.vv v8, v8, v8
3706 ; CHECK-NEXT: vmnot.m v8, v8
3707 ; CHECK-NEXT: vmorn.mm v0, v8, v9
3709 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3710 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3711 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
3712 ret <vscale x 1 x i1> %1
3715 define <vscale x 1 x i1> @fcmps_uno_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3716 ; CHECK-LABEL: fcmps_uno_fv_nxv1f32:
3718 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3719 ; CHECK-NEXT: vfmv.v.f v9, fa0
3720 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
3721 ; CHECK-NEXT: vmnot.m v9, v9
3722 ; CHECK-NEXT: vmfle.vv v8, v8, v8
3723 ; CHECK-NEXT: vmorn.mm v0, v9, v8
3725 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3726 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3727 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
3728 ret <vscale x 1 x i1> %1
3731 declare <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float>, <vscale x 2 x float>, metadata, metadata)
3732 define <vscale x 2 x i1> @fcmps_oeq_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
3733 ; CHECK-LABEL: fcmps_oeq_vv_nxv2f32:
3735 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
3736 ; CHECK-NEXT: vmfle.vv v10, v9, v8
3737 ; CHECK-NEXT: vmfle.vv v8, v8, v9
3738 ; CHECK-NEXT: vmand.mm v0, v8, v10
3740 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
3741 ret <vscale x 2 x i1> %1
3744 define <vscale x 2 x i1> @fcmps_oeq_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
3745 ; CHECK-LABEL: fcmps_oeq_vf_nxv2f32:
3747 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
3748 ; CHECK-NEXT: vmfge.vf v9, v8, fa0
3749 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
3750 ; CHECK-NEXT: vmand.mm v0, v8, v9
3752 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
3753 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
3754 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
3755 ret <vscale x 2 x i1> %1
3758 define <vscale x 2 x i1> @fcmps_oeq_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
3759 ; CHECK-LABEL: fcmps_oeq_fv_nxv2f32:
3761 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
3762 ; CHECK-NEXT: vmfle.vf v9, v8, fa0
3763 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
3764 ; CHECK-NEXT: vmand.mm v0, v8, v9
3766 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
3767 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
3768 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
3769 ret <vscale x 2 x i1> %1
3772 define <vscale x 2 x i1> @fcmps_ogt_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
3773 ; CHECK-LABEL: fcmps_ogt_vv_nxv2f32:
3775 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
3776 ; CHECK-NEXT: vmflt.vv v0, v9, v8
3778 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
3779 ret <vscale x 2 x i1> %1
3782 define <vscale x 2 x i1> @fcmps_ogt_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
3783 ; CHECK-LABEL: fcmps_ogt_vf_nxv2f32:
3785 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
3786 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
3788 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
3789 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
3790 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
3791 ret <vscale x 2 x i1> %1
3794 define <vscale x 2 x i1> @fcmps_ogt_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
3795 ; CHECK-LABEL: fcmps_ogt_fv_nxv2f32:
3797 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
3798 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
3800 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
3801 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
3802 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
3803 ret <vscale x 2 x i1> %1
3806 define <vscale x 2 x i1> @fcmps_oge_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
3807 ; CHECK-LABEL: fcmps_oge_vv_nxv2f32:
3809 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
3810 ; CHECK-NEXT: vmfle.vv v0, v9, v8
3812 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
3813 ret <vscale x 2 x i1> %1
3816 define <vscale x 2 x i1> @fcmps_oge_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
3817 ; CHECK-LABEL: fcmps_oge_vf_nxv2f32:
3819 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
3820 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
3822 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
3823 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
3824 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
3825 ret <vscale x 2 x i1> %1
3828 define <vscale x 2 x i1> @fcmps_oge_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
3829 ; CHECK-LABEL: fcmps_oge_fv_nxv2f32:
3831 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
3832 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
3834 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
3835 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
3836 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
3837 ret <vscale x 2 x i1> %1
3840 define <vscale x 2 x i1> @fcmps_olt_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
3841 ; CHECK-LABEL: fcmps_olt_vv_nxv2f32:
3843 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
3844 ; CHECK-NEXT: vmflt.vv v0, v8, v9
3846 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
3847 ret <vscale x 2 x i1> %1
3850 define <vscale x 2 x i1> @fcmps_olt_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
3851 ; CHECK-LABEL: fcmps_olt_vf_nxv2f32:
3853 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
3854 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
3856 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
3857 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
3858 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
3859 ret <vscale x 2 x i1> %1
3862 define <vscale x 2 x i1> @fcmps_olt_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
3863 ; CHECK-LABEL: fcmps_olt_fv_nxv2f32:
3865 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
3866 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
3868 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
3869 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
3870 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
3871 ret <vscale x 2 x i1> %1
3874 define <vscale x 2 x i1> @fcmps_ole_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
3875 ; CHECK-LABEL: fcmps_ole_vv_nxv2f32:
3877 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
3878 ; CHECK-NEXT: vmfle.vv v0, v8, v9
3880 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
3881 ret <vscale x 2 x i1> %1
3884 define <vscale x 2 x i1> @fcmps_ole_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
3885 ; CHECK-LABEL: fcmps_ole_vf_nxv2f32:
3887 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
3888 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
3890 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
3891 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
3892 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
3893 ret <vscale x 2 x i1> %1
3896 define <vscale x 2 x i1> @fcmps_ole_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
3897 ; CHECK-LABEL: fcmps_ole_fv_nxv2f32:
3899 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
3900 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
3902 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
3903 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
3904 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
3905 ret <vscale x 2 x i1> %1
3908 define <vscale x 2 x i1> @fcmps_one_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
3909 ; CHECK-LABEL: fcmps_one_vv_nxv2f32:
3911 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
3912 ; CHECK-NEXT: vmflt.vv v10, v8, v9
3913 ; CHECK-NEXT: vmflt.vv v8, v9, v8
3914 ; CHECK-NEXT: vmor.mm v0, v8, v10
3916 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
3917 ret <vscale x 2 x i1> %1
3920 define <vscale x 2 x i1> @fcmps_one_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
3921 ; CHECK-LABEL: fcmps_one_vf_nxv2f32:
3923 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
3924 ; CHECK-NEXT: vmflt.vf v9, v8, fa0
3925 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
3926 ; CHECK-NEXT: vmor.mm v0, v8, v9
3928 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
3929 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
3930 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
3931 ret <vscale x 2 x i1> %1
3934 define <vscale x 2 x i1> @fcmps_one_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
3935 ; CHECK-LABEL: fcmps_one_fv_nxv2f32:
3937 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
3938 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0
3939 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
3940 ; CHECK-NEXT: vmor.mm v0, v8, v9
3942 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
3943 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
3944 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
3945 ret <vscale x 2 x i1> %1
3948 define <vscale x 2 x i1> @fcmps_ord_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
3949 ; CHECK-LABEL: fcmps_ord_vv_nxv2f32:
3951 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
3952 ; CHECK-NEXT: vmfle.vv v9, v9, v9
3953 ; CHECK-NEXT: vmfle.vv v8, v8, v8
3954 ; CHECK-NEXT: vmand.mm v0, v8, v9
3956 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
3957 ret <vscale x 2 x i1> %1
3960 define <vscale x 2 x i1> @fcmps_ord_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
3961 ; CHECK-LABEL: fcmps_ord_vf_nxv2f32:
3963 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
3964 ; CHECK-NEXT: vfmv.v.f v9, fa0
3965 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
3966 ; CHECK-NEXT: vmfle.vv v8, v8, v8
3967 ; CHECK-NEXT: vmand.mm v0, v8, v9
3969 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
3970 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
3971 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
3972 ret <vscale x 2 x i1> %1
3975 define <vscale x 2 x i1> @fcmps_ord_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
3976 ; CHECK-LABEL: fcmps_ord_fv_nxv2f32:
3978 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
3979 ; CHECK-NEXT: vfmv.v.f v9, fa0
3980 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
3981 ; CHECK-NEXT: vmfle.vv v8, v8, v8
3982 ; CHECK-NEXT: vmand.mm v0, v9, v8
3984 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
3985 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
3986 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
3987 ret <vscale x 2 x i1> %1
3990 define <vscale x 2 x i1> @fcmps_ueq_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
3991 ; CHECK-LABEL: fcmps_ueq_vv_nxv2f32:
3993 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
3994 ; CHECK-NEXT: vmflt.vv v10, v8, v9
3995 ; CHECK-NEXT: vmflt.vv v8, v9, v8
3996 ; CHECK-NEXT: vmnor.mm v0, v8, v10
3998 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
3999 ret <vscale x 2 x i1> %1
4002 define <vscale x 2 x i1> @fcmps_ueq_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4003 ; CHECK-LABEL: fcmps_ueq_vf_nxv2f32:
4005 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4006 ; CHECK-NEXT: vmflt.vf v9, v8, fa0
4007 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
4008 ; CHECK-NEXT: vmnor.mm v0, v8, v9
4010 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4011 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4012 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
4013 ret <vscale x 2 x i1> %1
4016 define <vscale x 2 x i1> @fcmps_ueq_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4017 ; CHECK-LABEL: fcmps_ueq_fv_nxv2f32:
4019 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4020 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0
4021 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
4022 ; CHECK-NEXT: vmnor.mm v0, v8, v9
4024 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4025 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4026 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
4027 ret <vscale x 2 x i1> %1
4030 define <vscale x 2 x i1> @fcmps_ugt_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
4031 ; CHECK-LABEL: fcmps_ugt_vv_nxv2f32:
4033 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4034 ; CHECK-NEXT: vmfle.vv v8, v8, v9
4035 ; CHECK-NEXT: vmnot.m v0, v8
4037 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
4038 ret <vscale x 2 x i1> %1
4041 define <vscale x 2 x i1> @fcmps_ugt_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4042 ; CHECK-LABEL: fcmps_ugt_vf_nxv2f32:
4044 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4045 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
4046 ; CHECK-NEXT: vmnot.m v0, v8
4048 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4049 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4050 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
4051 ret <vscale x 2 x i1> %1
4054 define <vscale x 2 x i1> @fcmps_ugt_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4055 ; CHECK-LABEL: fcmps_ugt_fv_nxv2f32:
4057 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4058 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
4059 ; CHECK-NEXT: vmnot.m v0, v8
4061 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4062 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4063 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
4064 ret <vscale x 2 x i1> %1
4067 define <vscale x 2 x i1> @fcmps_uge_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
4068 ; CHECK-LABEL: fcmps_uge_vv_nxv2f32:
4070 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4071 ; CHECK-NEXT: vmflt.vv v8, v8, v9
4072 ; CHECK-NEXT: vmnot.m v0, v8
4074 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
4075 ret <vscale x 2 x i1> %1
4078 define <vscale x 2 x i1> @fcmps_uge_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4079 ; CHECK-LABEL: fcmps_uge_vf_nxv2f32:
4081 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4082 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
4083 ; CHECK-NEXT: vmnot.m v0, v8
4085 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4086 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4087 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
4088 ret <vscale x 2 x i1> %1
4091 define <vscale x 2 x i1> @fcmps_uge_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4092 ; CHECK-LABEL: fcmps_uge_fv_nxv2f32:
4094 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4095 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
4096 ; CHECK-NEXT: vmnot.m v0, v8
4098 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4099 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4100 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
4101 ret <vscale x 2 x i1> %1
4104 define <vscale x 2 x i1> @fcmps_ult_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
4105 ; CHECK-LABEL: fcmps_ult_vv_nxv2f32:
4107 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4108 ; CHECK-NEXT: vmfle.vv v8, v9, v8
4109 ; CHECK-NEXT: vmnot.m v0, v8
4111 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
4112 ret <vscale x 2 x i1> %1
4115 define <vscale x 2 x i1> @fcmps_ult_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4116 ; CHECK-LABEL: fcmps_ult_vf_nxv2f32:
4118 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4119 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
4120 ; CHECK-NEXT: vmnot.m v0, v8
4122 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4123 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4124 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
4125 ret <vscale x 2 x i1> %1
4128 define <vscale x 2 x i1> @fcmps_ult_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4129 ; CHECK-LABEL: fcmps_ult_fv_nxv2f32:
4131 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4132 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
4133 ; CHECK-NEXT: vmnot.m v0, v8
4135 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4136 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4137 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
4138 ret <vscale x 2 x i1> %1
4141 define <vscale x 2 x i1> @fcmps_ule_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
4142 ; CHECK-LABEL: fcmps_ule_vv_nxv2f32:
4144 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4145 ; CHECK-NEXT: vmflt.vv v8, v9, v8
4146 ; CHECK-NEXT: vmnot.m v0, v8
4148 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
4149 ret <vscale x 2 x i1> %1
4152 define <vscale x 2 x i1> @fcmps_ule_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4153 ; CHECK-LABEL: fcmps_ule_vf_nxv2f32:
4155 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4156 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
4157 ; CHECK-NEXT: vmnot.m v0, v8
4159 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4160 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4161 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
4162 ret <vscale x 2 x i1> %1
4165 define <vscale x 2 x i1> @fcmps_ule_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4166 ; CHECK-LABEL: fcmps_ule_fv_nxv2f32:
4168 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4169 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
4170 ; CHECK-NEXT: vmnot.m v0, v8
4172 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4173 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4174 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
4175 ret <vscale x 2 x i1> %1
4178 define <vscale x 2 x i1> @fcmps_une_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
4179 ; CHECK-LABEL: fcmps_une_vv_nxv2f32:
4181 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4182 ; CHECK-NEXT: vmfle.vv v10, v9, v8
4183 ; CHECK-NEXT: vmfle.vv v8, v8, v9
4184 ; CHECK-NEXT: vmnand.mm v0, v8, v10
4186 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
4187 ret <vscale x 2 x i1> %1
4190 define <vscale x 2 x i1> @fcmps_une_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4191 ; CHECK-LABEL: fcmps_une_vf_nxv2f32:
4193 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4194 ; CHECK-NEXT: vmfge.vf v9, v8, fa0
4195 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
4196 ; CHECK-NEXT: vmnand.mm v0, v8, v9
4198 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4199 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4200 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
4201 ret <vscale x 2 x i1> %1
4204 define <vscale x 2 x i1> @fcmps_une_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4205 ; CHECK-LABEL: fcmps_une_fv_nxv2f32:
4207 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4208 ; CHECK-NEXT: vmfle.vf v9, v8, fa0
4209 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
4210 ; CHECK-NEXT: vmnand.mm v0, v8, v9
4212 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4213 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4214 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
4215 ret <vscale x 2 x i1> %1
4218 define <vscale x 2 x i1> @fcmps_uno_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
4219 ; CHECK-LABEL: fcmps_uno_vv_nxv2f32:
4221 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4222 ; CHECK-NEXT: vmfle.vv v9, v9, v9
4223 ; CHECK-NEXT: vmfle.vv v8, v8, v8
4224 ; CHECK-NEXT: vmnot.m v8, v8
4225 ; CHECK-NEXT: vmorn.mm v0, v8, v9
4227 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
4228 ret <vscale x 2 x i1> %1
4231 define <vscale x 2 x i1> @fcmps_uno_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4232 ; CHECK-LABEL: fcmps_uno_vf_nxv2f32:
4234 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4235 ; CHECK-NEXT: vfmv.v.f v9, fa0
4236 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
4237 ; CHECK-NEXT: vmfle.vv v8, v8, v8
4238 ; CHECK-NEXT: vmnot.m v8, v8
4239 ; CHECK-NEXT: vmorn.mm v0, v8, v9
4241 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4242 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4243 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
4244 ret <vscale x 2 x i1> %1
4247 define <vscale x 2 x i1> @fcmps_uno_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4248 ; CHECK-LABEL: fcmps_uno_fv_nxv2f32:
4250 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4251 ; CHECK-NEXT: vfmv.v.f v9, fa0
4252 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
4253 ; CHECK-NEXT: vmnot.m v9, v9
4254 ; CHECK-NEXT: vmfle.vv v8, v8, v8
4255 ; CHECK-NEXT: vmorn.mm v0, v9, v8
4257 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4258 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4259 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
4260 ret <vscale x 2 x i1> %1
4263 declare <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>, metadata, metadata)
4264 define <vscale x 4 x i1> @fcmps_oeq_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
4265 ; CHECK-LABEL: fcmps_oeq_vv_nxv4f32:
4267 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4268 ; CHECK-NEXT: vmfle.vv v12, v10, v8
4269 ; CHECK-NEXT: vmfle.vv v13, v8, v10
4270 ; CHECK-NEXT: vmand.mm v0, v13, v12
4272 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
4273 ret <vscale x 4 x i1> %1
4276 define <vscale x 4 x i1> @fcmps_oeq_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4277 ; CHECK-LABEL: fcmps_oeq_vf_nxv4f32:
4279 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4280 ; CHECK-NEXT: vmfge.vf v10, v8, fa0
4281 ; CHECK-NEXT: vmfle.vf v11, v8, fa0
4282 ; CHECK-NEXT: vmand.mm v0, v11, v10
4284 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4285 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4286 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
4287 ret <vscale x 4 x i1> %1
4290 define <vscale x 4 x i1> @fcmps_oeq_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4291 ; CHECK-LABEL: fcmps_oeq_fv_nxv4f32:
4293 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4294 ; CHECK-NEXT: vmfle.vf v10, v8, fa0
4295 ; CHECK-NEXT: vmfge.vf v11, v8, fa0
4296 ; CHECK-NEXT: vmand.mm v0, v11, v10
4298 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4299 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4300 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
4301 ret <vscale x 4 x i1> %1
4304 define <vscale x 4 x i1> @fcmps_ogt_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
4305 ; CHECK-LABEL: fcmps_ogt_vv_nxv4f32:
4307 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4308 ; CHECK-NEXT: vmflt.vv v0, v10, v8
4310 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
4311 ret <vscale x 4 x i1> %1
4314 define <vscale x 4 x i1> @fcmps_ogt_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4315 ; CHECK-LABEL: fcmps_ogt_vf_nxv4f32:
4317 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4318 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
4320 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4321 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4322 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
4323 ret <vscale x 4 x i1> %1
4326 define <vscale x 4 x i1> @fcmps_ogt_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4327 ; CHECK-LABEL: fcmps_ogt_fv_nxv4f32:
4329 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4330 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
4332 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4333 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4334 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
4335 ret <vscale x 4 x i1> %1
4338 define <vscale x 4 x i1> @fcmps_oge_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
4339 ; CHECK-LABEL: fcmps_oge_vv_nxv4f32:
4341 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4342 ; CHECK-NEXT: vmfle.vv v0, v10, v8
4344 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
4345 ret <vscale x 4 x i1> %1
4348 define <vscale x 4 x i1> @fcmps_oge_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4349 ; CHECK-LABEL: fcmps_oge_vf_nxv4f32:
4351 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4352 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
4354 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4355 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4356 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
4357 ret <vscale x 4 x i1> %1
4360 define <vscale x 4 x i1> @fcmps_oge_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4361 ; CHECK-LABEL: fcmps_oge_fv_nxv4f32:
4363 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4364 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
4366 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4367 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4368 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
4369 ret <vscale x 4 x i1> %1
4372 define <vscale x 4 x i1> @fcmps_olt_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
4373 ; CHECK-LABEL: fcmps_olt_vv_nxv4f32:
4375 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4376 ; CHECK-NEXT: vmflt.vv v0, v8, v10
4378 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
4379 ret <vscale x 4 x i1> %1
4382 define <vscale x 4 x i1> @fcmps_olt_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4383 ; CHECK-LABEL: fcmps_olt_vf_nxv4f32:
4385 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4386 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
4388 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4389 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4390 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
4391 ret <vscale x 4 x i1> %1
4394 define <vscale x 4 x i1> @fcmps_olt_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4395 ; CHECK-LABEL: fcmps_olt_fv_nxv4f32:
4397 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4398 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
4400 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4401 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4402 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
4403 ret <vscale x 4 x i1> %1
4406 define <vscale x 4 x i1> @fcmps_ole_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
4407 ; CHECK-LABEL: fcmps_ole_vv_nxv4f32:
4409 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4410 ; CHECK-NEXT: vmfle.vv v0, v8, v10
4412 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
4413 ret <vscale x 4 x i1> %1
4416 define <vscale x 4 x i1> @fcmps_ole_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4417 ; CHECK-LABEL: fcmps_ole_vf_nxv4f32:
4419 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4420 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
4422 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4423 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4424 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
4425 ret <vscale x 4 x i1> %1
4428 define <vscale x 4 x i1> @fcmps_ole_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4429 ; CHECK-LABEL: fcmps_ole_fv_nxv4f32:
4431 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4432 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
4434 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4435 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4436 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
4437 ret <vscale x 4 x i1> %1
4440 define <vscale x 4 x i1> @fcmps_one_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
4441 ; CHECK-LABEL: fcmps_one_vv_nxv4f32:
4443 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4444 ; CHECK-NEXT: vmflt.vv v12, v8, v10
4445 ; CHECK-NEXT: vmflt.vv v13, v10, v8
4446 ; CHECK-NEXT: vmor.mm v0, v13, v12
4448 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
4449 ret <vscale x 4 x i1> %1
4452 define <vscale x 4 x i1> @fcmps_one_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4453 ; CHECK-LABEL: fcmps_one_vf_nxv4f32:
4455 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4456 ; CHECK-NEXT: vmflt.vf v10, v8, fa0
4457 ; CHECK-NEXT: vmfgt.vf v11, v8, fa0
4458 ; CHECK-NEXT: vmor.mm v0, v11, v10
4460 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4461 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4462 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
4463 ret <vscale x 4 x i1> %1
4466 define <vscale x 4 x i1> @fcmps_one_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4467 ; CHECK-LABEL: fcmps_one_fv_nxv4f32:
4469 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4470 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0
4471 ; CHECK-NEXT: vmflt.vf v11, v8, fa0
4472 ; CHECK-NEXT: vmor.mm v0, v11, v10
4474 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4475 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4476 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
4477 ret <vscale x 4 x i1> %1
4480 define <vscale x 4 x i1> @fcmps_ord_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
4481 ; CHECK-LABEL: fcmps_ord_vv_nxv4f32:
4483 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4484 ; CHECK-NEXT: vmfle.vv v12, v10, v10
4485 ; CHECK-NEXT: vmfle.vv v10, v8, v8
4486 ; CHECK-NEXT: vmand.mm v0, v10, v12
4488 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
4489 ret <vscale x 4 x i1> %1
4492 define <vscale x 4 x i1> @fcmps_ord_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4493 ; CHECK-LABEL: fcmps_ord_vf_nxv4f32:
4495 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4496 ; CHECK-NEXT: vfmv.v.f v10, fa0
4497 ; CHECK-NEXT: vmfle.vf v12, v10, fa0
4498 ; CHECK-NEXT: vmfle.vv v10, v8, v8
4499 ; CHECK-NEXT: vmand.mm v0, v10, v12
4501 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4502 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4503 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
4504 ret <vscale x 4 x i1> %1
4507 define <vscale x 4 x i1> @fcmps_ord_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4508 ; CHECK-LABEL: fcmps_ord_fv_nxv4f32:
4510 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4511 ; CHECK-NEXT: vfmv.v.f v10, fa0
4512 ; CHECK-NEXT: vmfle.vf v12, v10, fa0
4513 ; CHECK-NEXT: vmfle.vv v10, v8, v8
4514 ; CHECK-NEXT: vmand.mm v0, v12, v10
4516 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4517 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4518 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
4519 ret <vscale x 4 x i1> %1
4522 define <vscale x 4 x i1> @fcmps_ueq_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
4523 ; CHECK-LABEL: fcmps_ueq_vv_nxv4f32:
4525 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4526 ; CHECK-NEXT: vmflt.vv v12, v8, v10
4527 ; CHECK-NEXT: vmflt.vv v13, v10, v8
4528 ; CHECK-NEXT: vmnor.mm v0, v13, v12
4530 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
4531 ret <vscale x 4 x i1> %1
4534 define <vscale x 4 x i1> @fcmps_ueq_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4535 ; CHECK-LABEL: fcmps_ueq_vf_nxv4f32:
4537 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4538 ; CHECK-NEXT: vmflt.vf v10, v8, fa0
4539 ; CHECK-NEXT: vmfgt.vf v11, v8, fa0
4540 ; CHECK-NEXT: vmnor.mm v0, v11, v10
4542 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4543 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4544 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
4545 ret <vscale x 4 x i1> %1
4548 define <vscale x 4 x i1> @fcmps_ueq_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4549 ; CHECK-LABEL: fcmps_ueq_fv_nxv4f32:
4551 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4552 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0
4553 ; CHECK-NEXT: vmflt.vf v11, v8, fa0
4554 ; CHECK-NEXT: vmnor.mm v0, v11, v10
4556 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4557 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4558 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
4559 ret <vscale x 4 x i1> %1
4562 define <vscale x 4 x i1> @fcmps_ugt_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
4563 ; CHECK-LABEL: fcmps_ugt_vv_nxv4f32:
4565 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4566 ; CHECK-NEXT: vmfle.vv v12, v8, v10
4567 ; CHECK-NEXT: vmnot.m v0, v12
4569 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
4570 ret <vscale x 4 x i1> %1
4573 define <vscale x 4 x i1> @fcmps_ugt_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4574 ; CHECK-LABEL: fcmps_ugt_vf_nxv4f32:
4576 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4577 ; CHECK-NEXT: vmfle.vf v10, v8, fa0
4578 ; CHECK-NEXT: vmnot.m v0, v10
4580 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4581 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4582 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
4583 ret <vscale x 4 x i1> %1
4586 define <vscale x 4 x i1> @fcmps_ugt_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4587 ; CHECK-LABEL: fcmps_ugt_fv_nxv4f32:
4589 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4590 ; CHECK-NEXT: vmfge.vf v10, v8, fa0
4591 ; CHECK-NEXT: vmnot.m v0, v10
4593 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4594 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4595 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
4596 ret <vscale x 4 x i1> %1
4599 define <vscale x 4 x i1> @fcmps_uge_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
4600 ; CHECK-LABEL: fcmps_uge_vv_nxv4f32:
4602 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4603 ; CHECK-NEXT: vmflt.vv v12, v8, v10
4604 ; CHECK-NEXT: vmnot.m v0, v12
4606 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
4607 ret <vscale x 4 x i1> %1
4610 define <vscale x 4 x i1> @fcmps_uge_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4611 ; CHECK-LABEL: fcmps_uge_vf_nxv4f32:
4613 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4614 ; CHECK-NEXT: vmflt.vf v10, v8, fa0
4615 ; CHECK-NEXT: vmnot.m v0, v10
4617 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4618 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4619 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
4620 ret <vscale x 4 x i1> %1
4623 define <vscale x 4 x i1> @fcmps_uge_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4624 ; CHECK-LABEL: fcmps_uge_fv_nxv4f32:
4626 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4627 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0
4628 ; CHECK-NEXT: vmnot.m v0, v10
4630 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4631 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4632 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
4633 ret <vscale x 4 x i1> %1
4636 define <vscale x 4 x i1> @fcmps_ult_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
4637 ; CHECK-LABEL: fcmps_ult_vv_nxv4f32:
4639 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4640 ; CHECK-NEXT: vmfle.vv v12, v10, v8
4641 ; CHECK-NEXT: vmnot.m v0, v12
4643 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
4644 ret <vscale x 4 x i1> %1
4647 define <vscale x 4 x i1> @fcmps_ult_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4648 ; CHECK-LABEL: fcmps_ult_vf_nxv4f32:
4650 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4651 ; CHECK-NEXT: vmfge.vf v10, v8, fa0
4652 ; CHECK-NEXT: vmnot.m v0, v10
4654 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4655 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4656 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
4657 ret <vscale x 4 x i1> %1
4660 define <vscale x 4 x i1> @fcmps_ult_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4661 ; CHECK-LABEL: fcmps_ult_fv_nxv4f32:
4663 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4664 ; CHECK-NEXT: vmfle.vf v10, v8, fa0
4665 ; CHECK-NEXT: vmnot.m v0, v10
4667 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4668 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4669 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
4670 ret <vscale x 4 x i1> %1
4673 define <vscale x 4 x i1> @fcmps_ule_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
4674 ; CHECK-LABEL: fcmps_ule_vv_nxv4f32:
4676 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4677 ; CHECK-NEXT: vmflt.vv v12, v10, v8
4678 ; CHECK-NEXT: vmnot.m v0, v12
4680 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
4681 ret <vscale x 4 x i1> %1
4684 define <vscale x 4 x i1> @fcmps_ule_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4685 ; CHECK-LABEL: fcmps_ule_vf_nxv4f32:
4687 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4688 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0
4689 ; CHECK-NEXT: vmnot.m v0, v10
4691 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4692 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4693 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
4694 ret <vscale x 4 x i1> %1
4697 define <vscale x 4 x i1> @fcmps_ule_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4698 ; CHECK-LABEL: fcmps_ule_fv_nxv4f32:
4700 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4701 ; CHECK-NEXT: vmflt.vf v10, v8, fa0
4702 ; CHECK-NEXT: vmnot.m v0, v10
4704 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4705 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4706 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
4707 ret <vscale x 4 x i1> %1
4710 define <vscale x 4 x i1> @fcmps_une_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
4711 ; CHECK-LABEL: fcmps_une_vv_nxv4f32:
4713 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4714 ; CHECK-NEXT: vmfle.vv v12, v10, v8
4715 ; CHECK-NEXT: vmfle.vv v13, v8, v10
4716 ; CHECK-NEXT: vmnand.mm v0, v13, v12
4718 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
4719 ret <vscale x 4 x i1> %1
4722 define <vscale x 4 x i1> @fcmps_une_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4723 ; CHECK-LABEL: fcmps_une_vf_nxv4f32:
4725 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4726 ; CHECK-NEXT: vmfge.vf v10, v8, fa0
4727 ; CHECK-NEXT: vmfle.vf v11, v8, fa0
4728 ; CHECK-NEXT: vmnand.mm v0, v11, v10
4730 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4731 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4732 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
4733 ret <vscale x 4 x i1> %1
4736 define <vscale x 4 x i1> @fcmps_une_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4737 ; CHECK-LABEL: fcmps_une_fv_nxv4f32:
4739 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4740 ; CHECK-NEXT: vmfle.vf v10, v8, fa0
4741 ; CHECK-NEXT: vmfge.vf v11, v8, fa0
4742 ; CHECK-NEXT: vmnand.mm v0, v11, v10
4744 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4745 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4746 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
4747 ret <vscale x 4 x i1> %1
4750 define <vscale x 4 x i1> @fcmps_uno_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
4751 ; CHECK-LABEL: fcmps_uno_vv_nxv4f32:
4753 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4754 ; CHECK-NEXT: vmfle.vv v12, v10, v10
4755 ; CHECK-NEXT: vmfle.vv v10, v8, v8
4756 ; CHECK-NEXT: vmnot.m v8, v10
4757 ; CHECK-NEXT: vmorn.mm v0, v8, v12
4759 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
4760 ret <vscale x 4 x i1> %1
4763 define <vscale x 4 x i1> @fcmps_uno_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4764 ; CHECK-LABEL: fcmps_uno_vf_nxv4f32:
4766 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4767 ; CHECK-NEXT: vfmv.v.f v10, fa0
4768 ; CHECK-NEXT: vmfle.vf v12, v10, fa0
4769 ; CHECK-NEXT: vmfle.vv v10, v8, v8
4770 ; CHECK-NEXT: vmnot.m v8, v10
4771 ; CHECK-NEXT: vmorn.mm v0, v8, v12
4773 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4774 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4775 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
4776 ret <vscale x 4 x i1> %1
4779 define <vscale x 4 x i1> @fcmps_uno_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
4780 ; CHECK-LABEL: fcmps_uno_fv_nxv4f32:
4782 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
4783 ; CHECK-NEXT: vfmv.v.f v10, fa0
4784 ; CHECK-NEXT: vmfle.vf v12, v10, fa0
4785 ; CHECK-NEXT: vmnot.m v10, v12
4786 ; CHECK-NEXT: vmfle.vv v11, v8, v8
4787 ; CHECK-NEXT: vmorn.mm v0, v10, v11
4789 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
4790 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
4791 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
4792 ret <vscale x 4 x i1> %1
4795 declare <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float>, <vscale x 8 x float>, metadata, metadata)
4796 define <vscale x 8 x i1> @fcmps_oeq_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
4797 ; CHECK-LABEL: fcmps_oeq_vv_nxv8f32:
4799 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
4800 ; CHECK-NEXT: vmfle.vv v16, v12, v8
4801 ; CHECK-NEXT: vmfle.vv v17, v8, v12
4802 ; CHECK-NEXT: vmand.mm v0, v17, v16
4804 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
4805 ret <vscale x 8 x i1> %1
4808 define <vscale x 8 x i1> @fcmps_oeq_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
4809 ; CHECK-LABEL: fcmps_oeq_vf_nxv8f32:
4811 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
4812 ; CHECK-NEXT: vmfge.vf v12, v8, fa0
4813 ; CHECK-NEXT: vmfle.vf v13, v8, fa0
4814 ; CHECK-NEXT: vmand.mm v0, v13, v12
4816 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4817 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4818 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
4819 ret <vscale x 8 x i1> %1
4822 define <vscale x 8 x i1> @fcmps_oeq_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
4823 ; CHECK-LABEL: fcmps_oeq_fv_nxv8f32:
4825 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
4826 ; CHECK-NEXT: vmfle.vf v12, v8, fa0
4827 ; CHECK-NEXT: vmfge.vf v13, v8, fa0
4828 ; CHECK-NEXT: vmand.mm v0, v13, v12
4830 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4831 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4832 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
4833 ret <vscale x 8 x i1> %1
4836 define <vscale x 8 x i1> @fcmps_ogt_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
4837 ; CHECK-LABEL: fcmps_ogt_vv_nxv8f32:
4839 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
4840 ; CHECK-NEXT: vmflt.vv v0, v12, v8
4842 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
4843 ret <vscale x 8 x i1> %1
4846 define <vscale x 8 x i1> @fcmps_ogt_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
4847 ; CHECK-LABEL: fcmps_ogt_vf_nxv8f32:
4849 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
4850 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
4852 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4853 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4854 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
4855 ret <vscale x 8 x i1> %1
4858 define <vscale x 8 x i1> @fcmps_ogt_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
4859 ; CHECK-LABEL: fcmps_ogt_fv_nxv8f32:
4861 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
4862 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
4864 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4865 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4866 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
4867 ret <vscale x 8 x i1> %1
4870 define <vscale x 8 x i1> @fcmps_oge_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
4871 ; CHECK-LABEL: fcmps_oge_vv_nxv8f32:
4873 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
4874 ; CHECK-NEXT: vmfle.vv v0, v12, v8
4876 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
4877 ret <vscale x 8 x i1> %1
4880 define <vscale x 8 x i1> @fcmps_oge_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
4881 ; CHECK-LABEL: fcmps_oge_vf_nxv8f32:
4883 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
4884 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
4886 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4887 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4888 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
4889 ret <vscale x 8 x i1> %1
4892 define <vscale x 8 x i1> @fcmps_oge_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
4893 ; CHECK-LABEL: fcmps_oge_fv_nxv8f32:
4895 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
4896 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
4898 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4899 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4900 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
4901 ret <vscale x 8 x i1> %1
4904 define <vscale x 8 x i1> @fcmps_olt_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
4905 ; CHECK-LABEL: fcmps_olt_vv_nxv8f32:
4907 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
4908 ; CHECK-NEXT: vmflt.vv v0, v8, v12
4910 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
4911 ret <vscale x 8 x i1> %1
4914 define <vscale x 8 x i1> @fcmps_olt_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
4915 ; CHECK-LABEL: fcmps_olt_vf_nxv8f32:
4917 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
4918 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
4920 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4921 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4922 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
4923 ret <vscale x 8 x i1> %1
4926 define <vscale x 8 x i1> @fcmps_olt_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
4927 ; CHECK-LABEL: fcmps_olt_fv_nxv8f32:
4929 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
4930 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
4932 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4933 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4934 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
4935 ret <vscale x 8 x i1> %1
4938 define <vscale x 8 x i1> @fcmps_ole_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
4939 ; CHECK-LABEL: fcmps_ole_vv_nxv8f32:
4941 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
4942 ; CHECK-NEXT: vmfle.vv v0, v8, v12
4944 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
4945 ret <vscale x 8 x i1> %1
4948 define <vscale x 8 x i1> @fcmps_ole_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
4949 ; CHECK-LABEL: fcmps_ole_vf_nxv8f32:
4951 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
4952 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
4954 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4955 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4956 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
4957 ret <vscale x 8 x i1> %1
4960 define <vscale x 8 x i1> @fcmps_ole_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
4961 ; CHECK-LABEL: fcmps_ole_fv_nxv8f32:
4963 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
4964 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
4966 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4967 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4968 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
4969 ret <vscale x 8 x i1> %1
4972 define <vscale x 8 x i1> @fcmps_one_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
4973 ; CHECK-LABEL: fcmps_one_vv_nxv8f32:
4975 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
4976 ; CHECK-NEXT: vmflt.vv v16, v8, v12
4977 ; CHECK-NEXT: vmflt.vv v17, v12, v8
4978 ; CHECK-NEXT: vmor.mm v0, v17, v16
4980 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
4981 ret <vscale x 8 x i1> %1
4984 define <vscale x 8 x i1> @fcmps_one_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
4985 ; CHECK-LABEL: fcmps_one_vf_nxv8f32:
4987 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
4988 ; CHECK-NEXT: vmflt.vf v12, v8, fa0
4989 ; CHECK-NEXT: vmfgt.vf v13, v8, fa0
4990 ; CHECK-NEXT: vmor.mm v0, v13, v12
4992 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
4993 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
4994 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
4995 ret <vscale x 8 x i1> %1
4998 define <vscale x 8 x i1> @fcmps_one_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
4999 ; CHECK-LABEL: fcmps_one_fv_nxv8f32:
5001 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5002 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0
5003 ; CHECK-NEXT: vmflt.vf v13, v8, fa0
5004 ; CHECK-NEXT: vmor.mm v0, v13, v12
5006 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5007 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5008 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
5009 ret <vscale x 8 x i1> %1
5012 define <vscale x 8 x i1> @fcmps_ord_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
5013 ; CHECK-LABEL: fcmps_ord_vv_nxv8f32:
5015 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5016 ; CHECK-NEXT: vmfle.vv v16, v12, v12
5017 ; CHECK-NEXT: vmfle.vv v12, v8, v8
5018 ; CHECK-NEXT: vmand.mm v0, v12, v16
5020 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
5021 ret <vscale x 8 x i1> %1
5024 define <vscale x 8 x i1> @fcmps_ord_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
5025 ; CHECK-LABEL: fcmps_ord_vf_nxv8f32:
5027 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5028 ; CHECK-NEXT: vfmv.v.f v12, fa0
5029 ; CHECK-NEXT: vmfle.vf v16, v12, fa0
5030 ; CHECK-NEXT: vmfle.vv v12, v8, v8
5031 ; CHECK-NEXT: vmand.mm v0, v12, v16
5033 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5034 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5035 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
5036 ret <vscale x 8 x i1> %1
5039 define <vscale x 8 x i1> @fcmps_ord_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
5040 ; CHECK-LABEL: fcmps_ord_fv_nxv8f32:
5042 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5043 ; CHECK-NEXT: vfmv.v.f v12, fa0
5044 ; CHECK-NEXT: vmfle.vf v16, v12, fa0
5045 ; CHECK-NEXT: vmfle.vv v12, v8, v8
5046 ; CHECK-NEXT: vmand.mm v0, v16, v12
5048 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5049 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5050 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
5051 ret <vscale x 8 x i1> %1
5054 define <vscale x 8 x i1> @fcmps_ueq_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
5055 ; CHECK-LABEL: fcmps_ueq_vv_nxv8f32:
5057 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5058 ; CHECK-NEXT: vmflt.vv v16, v8, v12
5059 ; CHECK-NEXT: vmflt.vv v17, v12, v8
5060 ; CHECK-NEXT: vmnor.mm v0, v17, v16
5062 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
5063 ret <vscale x 8 x i1> %1
5066 define <vscale x 8 x i1> @fcmps_ueq_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
5067 ; CHECK-LABEL: fcmps_ueq_vf_nxv8f32:
5069 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5070 ; CHECK-NEXT: vmflt.vf v12, v8, fa0
5071 ; CHECK-NEXT: vmfgt.vf v13, v8, fa0
5072 ; CHECK-NEXT: vmnor.mm v0, v13, v12
5074 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5075 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5076 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
5077 ret <vscale x 8 x i1> %1
5080 define <vscale x 8 x i1> @fcmps_ueq_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
5081 ; CHECK-LABEL: fcmps_ueq_fv_nxv8f32:
5083 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5084 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0
5085 ; CHECK-NEXT: vmflt.vf v13, v8, fa0
5086 ; CHECK-NEXT: vmnor.mm v0, v13, v12
5088 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5089 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5090 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
5091 ret <vscale x 8 x i1> %1
5094 define <vscale x 8 x i1> @fcmps_ugt_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
5095 ; CHECK-LABEL: fcmps_ugt_vv_nxv8f32:
5097 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5098 ; CHECK-NEXT: vmfle.vv v16, v8, v12
5099 ; CHECK-NEXT: vmnot.m v0, v16
5101 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
5102 ret <vscale x 8 x i1> %1
5105 define <vscale x 8 x i1> @fcmps_ugt_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
5106 ; CHECK-LABEL: fcmps_ugt_vf_nxv8f32:
5108 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5109 ; CHECK-NEXT: vmfle.vf v12, v8, fa0
5110 ; CHECK-NEXT: vmnot.m v0, v12
5112 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5113 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5114 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
5115 ret <vscale x 8 x i1> %1
5118 define <vscale x 8 x i1> @fcmps_ugt_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
5119 ; CHECK-LABEL: fcmps_ugt_fv_nxv8f32:
5121 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5122 ; CHECK-NEXT: vmfge.vf v12, v8, fa0
5123 ; CHECK-NEXT: vmnot.m v0, v12
5125 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5126 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5127 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
5128 ret <vscale x 8 x i1> %1
5131 define <vscale x 8 x i1> @fcmps_uge_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
5132 ; CHECK-LABEL: fcmps_uge_vv_nxv8f32:
5134 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5135 ; CHECK-NEXT: vmflt.vv v16, v8, v12
5136 ; CHECK-NEXT: vmnot.m v0, v16
5138 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
5139 ret <vscale x 8 x i1> %1
5142 define <vscale x 8 x i1> @fcmps_uge_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
5143 ; CHECK-LABEL: fcmps_uge_vf_nxv8f32:
5145 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5146 ; CHECK-NEXT: vmflt.vf v12, v8, fa0
5147 ; CHECK-NEXT: vmnot.m v0, v12
5149 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5150 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5151 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
5152 ret <vscale x 8 x i1> %1
5155 define <vscale x 8 x i1> @fcmps_uge_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
5156 ; CHECK-LABEL: fcmps_uge_fv_nxv8f32:
5158 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5159 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0
5160 ; CHECK-NEXT: vmnot.m v0, v12
5162 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5163 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5164 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
5165 ret <vscale x 8 x i1> %1
5168 define <vscale x 8 x i1> @fcmps_ult_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
5169 ; CHECK-LABEL: fcmps_ult_vv_nxv8f32:
5171 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5172 ; CHECK-NEXT: vmfle.vv v16, v12, v8
5173 ; CHECK-NEXT: vmnot.m v0, v16
5175 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
5176 ret <vscale x 8 x i1> %1
5179 define <vscale x 8 x i1> @fcmps_ult_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
5180 ; CHECK-LABEL: fcmps_ult_vf_nxv8f32:
5182 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5183 ; CHECK-NEXT: vmfge.vf v12, v8, fa0
5184 ; CHECK-NEXT: vmnot.m v0, v12
5186 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5187 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5188 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
5189 ret <vscale x 8 x i1> %1
5192 define <vscale x 8 x i1> @fcmps_ult_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
5193 ; CHECK-LABEL: fcmps_ult_fv_nxv8f32:
5195 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5196 ; CHECK-NEXT: vmfle.vf v12, v8, fa0
5197 ; CHECK-NEXT: vmnot.m v0, v12
5199 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5200 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5201 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
5202 ret <vscale x 8 x i1> %1
5205 define <vscale x 8 x i1> @fcmps_ule_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
5206 ; CHECK-LABEL: fcmps_ule_vv_nxv8f32:
5208 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5209 ; CHECK-NEXT: vmflt.vv v16, v12, v8
5210 ; CHECK-NEXT: vmnot.m v0, v16
5212 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
5213 ret <vscale x 8 x i1> %1
5216 define <vscale x 8 x i1> @fcmps_ule_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
5217 ; CHECK-LABEL: fcmps_ule_vf_nxv8f32:
5219 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5220 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0
5221 ; CHECK-NEXT: vmnot.m v0, v12
5223 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5224 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5225 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
5226 ret <vscale x 8 x i1> %1
5229 define <vscale x 8 x i1> @fcmps_ule_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
5230 ; CHECK-LABEL: fcmps_ule_fv_nxv8f32:
5232 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5233 ; CHECK-NEXT: vmflt.vf v12, v8, fa0
5234 ; CHECK-NEXT: vmnot.m v0, v12
5236 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5237 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5238 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
5239 ret <vscale x 8 x i1> %1
5242 define <vscale x 8 x i1> @fcmps_une_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
5243 ; CHECK-LABEL: fcmps_une_vv_nxv8f32:
5245 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5246 ; CHECK-NEXT: vmfle.vv v16, v12, v8
5247 ; CHECK-NEXT: vmfle.vv v17, v8, v12
5248 ; CHECK-NEXT: vmnand.mm v0, v17, v16
5250 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
5251 ret <vscale x 8 x i1> %1
5254 define <vscale x 8 x i1> @fcmps_une_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
5255 ; CHECK-LABEL: fcmps_une_vf_nxv8f32:
5257 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5258 ; CHECK-NEXT: vmfge.vf v12, v8, fa0
5259 ; CHECK-NEXT: vmfle.vf v13, v8, fa0
5260 ; CHECK-NEXT: vmnand.mm v0, v13, v12
5262 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5263 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5264 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
5265 ret <vscale x 8 x i1> %1
5268 define <vscale x 8 x i1> @fcmps_une_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
5269 ; CHECK-LABEL: fcmps_une_fv_nxv8f32:
5271 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5272 ; CHECK-NEXT: vmfle.vf v12, v8, fa0
5273 ; CHECK-NEXT: vmfge.vf v13, v8, fa0
5274 ; CHECK-NEXT: vmnand.mm v0, v13, v12
5276 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5277 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5278 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
5279 ret <vscale x 8 x i1> %1
5282 define <vscale x 8 x i1> @fcmps_uno_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
5283 ; CHECK-LABEL: fcmps_uno_vv_nxv8f32:
5285 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5286 ; CHECK-NEXT: vmfle.vv v16, v12, v12
5287 ; CHECK-NEXT: vmfle.vv v12, v8, v8
5288 ; CHECK-NEXT: vmnot.m v8, v12
5289 ; CHECK-NEXT: vmorn.mm v0, v8, v16
5291 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
5292 ret <vscale x 8 x i1> %1
5295 define <vscale x 8 x i1> @fcmps_uno_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
5296 ; CHECK-LABEL: fcmps_uno_vf_nxv8f32:
5298 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5299 ; CHECK-NEXT: vfmv.v.f v12, fa0
5300 ; CHECK-NEXT: vmfle.vf v16, v12, fa0
5301 ; CHECK-NEXT: vmfle.vv v12, v8, v8
5302 ; CHECK-NEXT: vmnot.m v8, v12
5303 ; CHECK-NEXT: vmorn.mm v0, v8, v16
5305 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5306 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5307 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
5308 ret <vscale x 8 x i1> %1
5311 define <vscale x 8 x i1> @fcmps_uno_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
5312 ; CHECK-LABEL: fcmps_uno_fv_nxv8f32:
5314 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5315 ; CHECK-NEXT: vfmv.v.f v12, fa0
5316 ; CHECK-NEXT: vmfle.vf v16, v12, fa0
5317 ; CHECK-NEXT: vmnot.m v12, v16
5318 ; CHECK-NEXT: vmfle.vv v13, v8, v8
5319 ; CHECK-NEXT: vmorn.mm v0, v12, v13
5321 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5322 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5323 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
5324 ret <vscale x 8 x i1> %1
5327 declare <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float>, <vscale x 16 x float>, metadata, metadata)
5328 define <vscale x 16 x i1> @fcmps_oeq_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
5329 ; CHECK-LABEL: fcmps_oeq_vv_nxv16f32:
5331 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5332 ; CHECK-NEXT: vmfle.vv v24, v16, v8
5333 ; CHECK-NEXT: vmfle.vv v25, v8, v16
5334 ; CHECK-NEXT: vmand.mm v0, v25, v24
5336 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
5337 ret <vscale x 16 x i1> %1
5340 define <vscale x 16 x i1> @fcmps_oeq_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5341 ; CHECK-LABEL: fcmps_oeq_vf_nxv16f32:
5343 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5344 ; CHECK-NEXT: vmfge.vf v16, v8, fa0
5345 ; CHECK-NEXT: vmfle.vf v17, v8, fa0
5346 ; CHECK-NEXT: vmand.mm v0, v17, v16
5348 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5349 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5350 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
5351 ret <vscale x 16 x i1> %1
5354 define <vscale x 16 x i1> @fcmps_oeq_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5355 ; CHECK-LABEL: fcmps_oeq_fv_nxv16f32:
5357 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5358 ; CHECK-NEXT: vmfle.vf v16, v8, fa0
5359 ; CHECK-NEXT: vmfge.vf v17, v8, fa0
5360 ; CHECK-NEXT: vmand.mm v0, v17, v16
5362 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5363 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5364 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
5365 ret <vscale x 16 x i1> %1
5368 define <vscale x 16 x i1> @fcmps_ogt_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
5369 ; CHECK-LABEL: fcmps_ogt_vv_nxv16f32:
5371 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5372 ; CHECK-NEXT: vmflt.vv v0, v16, v8
5374 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
5375 ret <vscale x 16 x i1> %1
5378 define <vscale x 16 x i1> @fcmps_ogt_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5379 ; CHECK-LABEL: fcmps_ogt_vf_nxv16f32:
5381 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5382 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
5384 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5385 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5386 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
5387 ret <vscale x 16 x i1> %1
5390 define <vscale x 16 x i1> @fcmps_ogt_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5391 ; CHECK-LABEL: fcmps_ogt_fv_nxv16f32:
5393 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5394 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
5396 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5397 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5398 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
5399 ret <vscale x 16 x i1> %1
5402 define <vscale x 16 x i1> @fcmps_oge_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
5403 ; CHECK-LABEL: fcmps_oge_vv_nxv16f32:
5405 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5406 ; CHECK-NEXT: vmfle.vv v0, v16, v8
5408 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
5409 ret <vscale x 16 x i1> %1
5412 define <vscale x 16 x i1> @fcmps_oge_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5413 ; CHECK-LABEL: fcmps_oge_vf_nxv16f32:
5415 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5416 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
5418 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5419 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5420 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
5421 ret <vscale x 16 x i1> %1
5424 define <vscale x 16 x i1> @fcmps_oge_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5425 ; CHECK-LABEL: fcmps_oge_fv_nxv16f32:
5427 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5428 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
5430 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5431 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5432 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
5433 ret <vscale x 16 x i1> %1
5436 define <vscale x 16 x i1> @fcmps_olt_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
5437 ; CHECK-LABEL: fcmps_olt_vv_nxv16f32:
5439 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5440 ; CHECK-NEXT: vmflt.vv v0, v8, v16
5442 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
5443 ret <vscale x 16 x i1> %1
5446 define <vscale x 16 x i1> @fcmps_olt_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5447 ; CHECK-LABEL: fcmps_olt_vf_nxv16f32:
5449 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5450 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
5452 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5453 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5454 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
5455 ret <vscale x 16 x i1> %1
5458 define <vscale x 16 x i1> @fcmps_olt_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5459 ; CHECK-LABEL: fcmps_olt_fv_nxv16f32:
5461 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5462 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
5464 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5465 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5466 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
5467 ret <vscale x 16 x i1> %1
5470 define <vscale x 16 x i1> @fcmps_ole_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
5471 ; CHECK-LABEL: fcmps_ole_vv_nxv16f32:
5473 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5474 ; CHECK-NEXT: vmfle.vv v0, v8, v16
5476 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
5477 ret <vscale x 16 x i1> %1
5480 define <vscale x 16 x i1> @fcmps_ole_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5481 ; CHECK-LABEL: fcmps_ole_vf_nxv16f32:
5483 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5484 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
5486 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5487 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5488 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
5489 ret <vscale x 16 x i1> %1
5492 define <vscale x 16 x i1> @fcmps_ole_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5493 ; CHECK-LABEL: fcmps_ole_fv_nxv16f32:
5495 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5496 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
5498 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5499 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5500 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
5501 ret <vscale x 16 x i1> %1
5504 define <vscale x 16 x i1> @fcmps_one_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
5505 ; CHECK-LABEL: fcmps_one_vv_nxv16f32:
5507 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5508 ; CHECK-NEXT: vmflt.vv v24, v8, v16
5509 ; CHECK-NEXT: vmflt.vv v25, v16, v8
5510 ; CHECK-NEXT: vmor.mm v0, v25, v24
5512 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
5513 ret <vscale x 16 x i1> %1
5516 define <vscale x 16 x i1> @fcmps_one_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5517 ; CHECK-LABEL: fcmps_one_vf_nxv16f32:
5519 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5520 ; CHECK-NEXT: vmflt.vf v16, v8, fa0
5521 ; CHECK-NEXT: vmfgt.vf v17, v8, fa0
5522 ; CHECK-NEXT: vmor.mm v0, v17, v16
5524 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5525 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5526 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
5527 ret <vscale x 16 x i1> %1
5530 define <vscale x 16 x i1> @fcmps_one_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5531 ; CHECK-LABEL: fcmps_one_fv_nxv16f32:
5533 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5534 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0
5535 ; CHECK-NEXT: vmflt.vf v17, v8, fa0
5536 ; CHECK-NEXT: vmor.mm v0, v17, v16
5538 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5539 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5540 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
5541 ret <vscale x 16 x i1> %1
5544 define <vscale x 16 x i1> @fcmps_ord_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
5545 ; CHECK-LABEL: fcmps_ord_vv_nxv16f32:
5547 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5548 ; CHECK-NEXT: vmfle.vv v24, v16, v16
5549 ; CHECK-NEXT: vmfle.vv v16, v8, v8
5550 ; CHECK-NEXT: vmand.mm v0, v16, v24
5552 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
5553 ret <vscale x 16 x i1> %1
5556 define <vscale x 16 x i1> @fcmps_ord_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5557 ; CHECK-LABEL: fcmps_ord_vf_nxv16f32:
5559 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5560 ; CHECK-NEXT: vfmv.v.f v16, fa0
5561 ; CHECK-NEXT: vmfle.vf v24, v16, fa0
5562 ; CHECK-NEXT: vmfle.vv v16, v8, v8
5563 ; CHECK-NEXT: vmand.mm v0, v16, v24
5565 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5566 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5567 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
5568 ret <vscale x 16 x i1> %1
5571 define <vscale x 16 x i1> @fcmps_ord_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5572 ; CHECK-LABEL: fcmps_ord_fv_nxv16f32:
5574 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5575 ; CHECK-NEXT: vfmv.v.f v16, fa0
5576 ; CHECK-NEXT: vmfle.vf v24, v16, fa0
5577 ; CHECK-NEXT: vmfle.vv v16, v8, v8
5578 ; CHECK-NEXT: vmand.mm v0, v24, v16
5580 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5581 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5582 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
5583 ret <vscale x 16 x i1> %1
5586 define <vscale x 16 x i1> @fcmps_ueq_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
5587 ; CHECK-LABEL: fcmps_ueq_vv_nxv16f32:
5589 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5590 ; CHECK-NEXT: vmflt.vv v24, v8, v16
5591 ; CHECK-NEXT: vmflt.vv v25, v16, v8
5592 ; CHECK-NEXT: vmnor.mm v0, v25, v24
5594 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
5595 ret <vscale x 16 x i1> %1
5598 define <vscale x 16 x i1> @fcmps_ueq_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5599 ; CHECK-LABEL: fcmps_ueq_vf_nxv16f32:
5601 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5602 ; CHECK-NEXT: vmflt.vf v16, v8, fa0
5603 ; CHECK-NEXT: vmfgt.vf v17, v8, fa0
5604 ; CHECK-NEXT: vmnor.mm v0, v17, v16
5606 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5607 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5608 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
5609 ret <vscale x 16 x i1> %1
5612 define <vscale x 16 x i1> @fcmps_ueq_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5613 ; CHECK-LABEL: fcmps_ueq_fv_nxv16f32:
5615 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5616 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0
5617 ; CHECK-NEXT: vmflt.vf v17, v8, fa0
5618 ; CHECK-NEXT: vmnor.mm v0, v17, v16
5620 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5621 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5622 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
5623 ret <vscale x 16 x i1> %1
5626 define <vscale x 16 x i1> @fcmps_ugt_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
5627 ; CHECK-LABEL: fcmps_ugt_vv_nxv16f32:
5629 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5630 ; CHECK-NEXT: vmfle.vv v24, v8, v16
5631 ; CHECK-NEXT: vmnot.m v0, v24
5633 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
5634 ret <vscale x 16 x i1> %1
5637 define <vscale x 16 x i1> @fcmps_ugt_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5638 ; CHECK-LABEL: fcmps_ugt_vf_nxv16f32:
5640 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5641 ; CHECK-NEXT: vmfle.vf v16, v8, fa0
5642 ; CHECK-NEXT: vmnot.m v0, v16
5644 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5645 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5646 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
5647 ret <vscale x 16 x i1> %1
5650 define <vscale x 16 x i1> @fcmps_ugt_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5651 ; CHECK-LABEL: fcmps_ugt_fv_nxv16f32:
5653 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5654 ; CHECK-NEXT: vmfge.vf v16, v8, fa0
5655 ; CHECK-NEXT: vmnot.m v0, v16
5657 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5658 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5659 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
5660 ret <vscale x 16 x i1> %1
5663 define <vscale x 16 x i1> @fcmps_uge_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
5664 ; CHECK-LABEL: fcmps_uge_vv_nxv16f32:
5666 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5667 ; CHECK-NEXT: vmflt.vv v24, v8, v16
5668 ; CHECK-NEXT: vmnot.m v0, v24
5670 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
5671 ret <vscale x 16 x i1> %1
5674 define <vscale x 16 x i1> @fcmps_uge_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5675 ; CHECK-LABEL: fcmps_uge_vf_nxv16f32:
5677 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5678 ; CHECK-NEXT: vmflt.vf v16, v8, fa0
5679 ; CHECK-NEXT: vmnot.m v0, v16
5681 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5682 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5683 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
5684 ret <vscale x 16 x i1> %1
5687 define <vscale x 16 x i1> @fcmps_uge_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5688 ; CHECK-LABEL: fcmps_uge_fv_nxv16f32:
5690 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5691 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0
5692 ; CHECK-NEXT: vmnot.m v0, v16
5694 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5695 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5696 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
5697 ret <vscale x 16 x i1> %1
5700 define <vscale x 16 x i1> @fcmps_ult_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
5701 ; CHECK-LABEL: fcmps_ult_vv_nxv16f32:
5703 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5704 ; CHECK-NEXT: vmfle.vv v24, v16, v8
5705 ; CHECK-NEXT: vmnot.m v0, v24
5707 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
5708 ret <vscale x 16 x i1> %1
5711 define <vscale x 16 x i1> @fcmps_ult_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5712 ; CHECK-LABEL: fcmps_ult_vf_nxv16f32:
5714 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5715 ; CHECK-NEXT: vmfge.vf v16, v8, fa0
5716 ; CHECK-NEXT: vmnot.m v0, v16
5718 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5719 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5720 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
5721 ret <vscale x 16 x i1> %1
5724 define <vscale x 16 x i1> @fcmps_ult_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5725 ; CHECK-LABEL: fcmps_ult_fv_nxv16f32:
5727 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5728 ; CHECK-NEXT: vmfle.vf v16, v8, fa0
5729 ; CHECK-NEXT: vmnot.m v0, v16
5731 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5732 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5733 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
5734 ret <vscale x 16 x i1> %1
5737 define <vscale x 16 x i1> @fcmps_ule_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
5738 ; CHECK-LABEL: fcmps_ule_vv_nxv16f32:
5740 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5741 ; CHECK-NEXT: vmflt.vv v24, v16, v8
5742 ; CHECK-NEXT: vmnot.m v0, v24
5744 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
5745 ret <vscale x 16 x i1> %1
5748 define <vscale x 16 x i1> @fcmps_ule_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5749 ; CHECK-LABEL: fcmps_ule_vf_nxv16f32:
5751 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5752 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0
5753 ; CHECK-NEXT: vmnot.m v0, v16
5755 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5756 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5757 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
5758 ret <vscale x 16 x i1> %1
5761 define <vscale x 16 x i1> @fcmps_ule_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5762 ; CHECK-LABEL: fcmps_ule_fv_nxv16f32:
5764 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5765 ; CHECK-NEXT: vmflt.vf v16, v8, fa0
5766 ; CHECK-NEXT: vmnot.m v0, v16
5768 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5769 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5770 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
5771 ret <vscale x 16 x i1> %1
5774 define <vscale x 16 x i1> @fcmps_une_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
5775 ; CHECK-LABEL: fcmps_une_vv_nxv16f32:
5777 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5778 ; CHECK-NEXT: vmfle.vv v24, v16, v8
5779 ; CHECK-NEXT: vmfle.vv v25, v8, v16
5780 ; CHECK-NEXT: vmnand.mm v0, v25, v24
5782 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
5783 ret <vscale x 16 x i1> %1
5786 define <vscale x 16 x i1> @fcmps_une_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5787 ; CHECK-LABEL: fcmps_une_vf_nxv16f32:
5789 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5790 ; CHECK-NEXT: vmfge.vf v16, v8, fa0
5791 ; CHECK-NEXT: vmfle.vf v17, v8, fa0
5792 ; CHECK-NEXT: vmnand.mm v0, v17, v16
5794 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5795 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5796 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
5797 ret <vscale x 16 x i1> %1
5800 define <vscale x 16 x i1> @fcmps_une_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5801 ; CHECK-LABEL: fcmps_une_fv_nxv16f32:
5803 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5804 ; CHECK-NEXT: vmfle.vf v16, v8, fa0
5805 ; CHECK-NEXT: vmfge.vf v17, v8, fa0
5806 ; CHECK-NEXT: vmnand.mm v0, v17, v16
5808 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5809 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5810 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
5811 ret <vscale x 16 x i1> %1
5814 define <vscale x 16 x i1> @fcmps_uno_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
5815 ; CHECK-LABEL: fcmps_uno_vv_nxv16f32:
5817 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5818 ; CHECK-NEXT: vmfle.vv v24, v16, v16
5819 ; CHECK-NEXT: vmfle.vv v16, v8, v8
5820 ; CHECK-NEXT: vmnot.m v8, v16
5821 ; CHECK-NEXT: vmorn.mm v0, v8, v24
5823 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
5824 ret <vscale x 16 x i1> %1
5827 define <vscale x 16 x i1> @fcmps_uno_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5828 ; CHECK-LABEL: fcmps_uno_vf_nxv16f32:
5830 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5831 ; CHECK-NEXT: vfmv.v.f v16, fa0
5832 ; CHECK-NEXT: vmfle.vf v24, v16, fa0
5833 ; CHECK-NEXT: vmfle.vv v16, v8, v8
5834 ; CHECK-NEXT: vmnot.m v8, v16
5835 ; CHECK-NEXT: vmorn.mm v0, v8, v24
5837 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5838 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5839 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
5840 ret <vscale x 16 x i1> %1
5843 define <vscale x 16 x i1> @fcmps_uno_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
5844 ; CHECK-LABEL: fcmps_uno_fv_nxv16f32:
5846 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
5847 ; CHECK-NEXT: vfmv.v.f v16, fa0
5848 ; CHECK-NEXT: vmfle.vf v24, v16, fa0
5849 ; CHECK-NEXT: vmnot.m v16, v24
5850 ; CHECK-NEXT: vmfle.vv v17, v8, v8
5851 ; CHECK-NEXT: vmorn.mm v0, v16, v17
5853 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
5854 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
5855 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
5856 ret <vscale x 16 x i1> %1
5859 declare <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double>, <vscale x 1 x double>, metadata, metadata)
5860 define <vscale x 1 x i1> @fcmps_oeq_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
5861 ; CHECK-LABEL: fcmps_oeq_vv_nxv1f64:
5863 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
5864 ; CHECK-NEXT: vmfle.vv v10, v9, v8
5865 ; CHECK-NEXT: vmfle.vv v8, v8, v9
5866 ; CHECK-NEXT: vmand.mm v0, v8, v10
5868 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
5869 ret <vscale x 1 x i1> %1
5872 define <vscale x 1 x i1> @fcmps_oeq_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
5873 ; CHECK-LABEL: fcmps_oeq_vf_nxv1f64:
5875 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
5876 ; CHECK-NEXT: vmfge.vf v9, v8, fa0
5877 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
5878 ; CHECK-NEXT: vmand.mm v0, v8, v9
5880 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5881 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5882 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
5883 ret <vscale x 1 x i1> %1
5886 define <vscale x 1 x i1> @fcmps_oeq_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
5887 ; CHECK-LABEL: fcmps_oeq_fv_nxv1f64:
5889 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
5890 ; CHECK-NEXT: vmfle.vf v9, v8, fa0
5891 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
5892 ; CHECK-NEXT: vmand.mm v0, v8, v9
5894 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5895 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5896 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
5897 ret <vscale x 1 x i1> %1
5900 define <vscale x 1 x i1> @fcmps_ogt_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
5901 ; CHECK-LABEL: fcmps_ogt_vv_nxv1f64:
5903 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
5904 ; CHECK-NEXT: vmflt.vv v0, v9, v8
5906 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
5907 ret <vscale x 1 x i1> %1
5910 define <vscale x 1 x i1> @fcmps_ogt_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
5911 ; CHECK-LABEL: fcmps_ogt_vf_nxv1f64:
5913 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
5914 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
5916 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5917 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5918 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
5919 ret <vscale x 1 x i1> %1
5922 define <vscale x 1 x i1> @fcmps_ogt_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
5923 ; CHECK-LABEL: fcmps_ogt_fv_nxv1f64:
5925 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
5926 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
5928 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5929 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5930 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
5931 ret <vscale x 1 x i1> %1
5934 define <vscale x 1 x i1> @fcmps_oge_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
5935 ; CHECK-LABEL: fcmps_oge_vv_nxv1f64:
5937 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
5938 ; CHECK-NEXT: vmfle.vv v0, v9, v8
5940 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
5941 ret <vscale x 1 x i1> %1
5944 define <vscale x 1 x i1> @fcmps_oge_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
5945 ; CHECK-LABEL: fcmps_oge_vf_nxv1f64:
5947 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
5948 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
5950 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5951 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5952 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
5953 ret <vscale x 1 x i1> %1
5956 define <vscale x 1 x i1> @fcmps_oge_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
5957 ; CHECK-LABEL: fcmps_oge_fv_nxv1f64:
5959 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
5960 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
5962 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5963 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5964 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
5965 ret <vscale x 1 x i1> %1
5968 define <vscale x 1 x i1> @fcmps_olt_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
5969 ; CHECK-LABEL: fcmps_olt_vv_nxv1f64:
5971 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
5972 ; CHECK-NEXT: vmflt.vv v0, v8, v9
5974 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
5975 ret <vscale x 1 x i1> %1
5978 define <vscale x 1 x i1> @fcmps_olt_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
5979 ; CHECK-LABEL: fcmps_olt_vf_nxv1f64:
5981 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
5982 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
5984 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5985 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5986 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
5987 ret <vscale x 1 x i1> %1
5990 define <vscale x 1 x i1> @fcmps_olt_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
5991 ; CHECK-LABEL: fcmps_olt_fv_nxv1f64:
5993 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
5994 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
5996 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
5997 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
5998 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
5999 ret <vscale x 1 x i1> %1
6002 define <vscale x 1 x i1> @fcmps_ole_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
6003 ; CHECK-LABEL: fcmps_ole_vv_nxv1f64:
6005 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6006 ; CHECK-NEXT: vmfle.vv v0, v8, v9
6008 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
6009 ret <vscale x 1 x i1> %1
6012 define <vscale x 1 x i1> @fcmps_ole_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
6013 ; CHECK-LABEL: fcmps_ole_vf_nxv1f64:
6015 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6016 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
6018 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
6019 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
6020 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
6021 ret <vscale x 1 x i1> %1
6024 define <vscale x 1 x i1> @fcmps_ole_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
6025 ; CHECK-LABEL: fcmps_ole_fv_nxv1f64:
6027 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6028 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
6030 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
6031 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
6032 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
6033 ret <vscale x 1 x i1> %1
6036 define <vscale x 1 x i1> @fcmps_one_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
6037 ; CHECK-LABEL: fcmps_one_vv_nxv1f64:
6039 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6040 ; CHECK-NEXT: vmflt.vv v10, v8, v9
6041 ; CHECK-NEXT: vmflt.vv v8, v9, v8
6042 ; CHECK-NEXT: vmor.mm v0, v8, v10
6044 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
6045 ret <vscale x 1 x i1> %1
6048 define <vscale x 1 x i1> @fcmps_one_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
6049 ; CHECK-LABEL: fcmps_one_vf_nxv1f64:
6051 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6052 ; CHECK-NEXT: vmflt.vf v9, v8, fa0
6053 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
6054 ; CHECK-NEXT: vmor.mm v0, v8, v9
6056 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
6057 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
6058 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
6059 ret <vscale x 1 x i1> %1
6062 define <vscale x 1 x i1> @fcmps_one_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
6063 ; CHECK-LABEL: fcmps_one_fv_nxv1f64:
6065 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6066 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0
6067 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
6068 ; CHECK-NEXT: vmor.mm v0, v8, v9
6070 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
6071 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
6072 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
6073 ret <vscale x 1 x i1> %1
6076 define <vscale x 1 x i1> @fcmps_ord_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
6077 ; CHECK-LABEL: fcmps_ord_vv_nxv1f64:
6079 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6080 ; CHECK-NEXT: vmfle.vv v9, v9, v9
6081 ; CHECK-NEXT: vmfle.vv v8, v8, v8
6082 ; CHECK-NEXT: vmand.mm v0, v8, v9
6084 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
6085 ret <vscale x 1 x i1> %1
6088 define <vscale x 1 x i1> @fcmps_ord_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
6089 ; CHECK-LABEL: fcmps_ord_vf_nxv1f64:
6091 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6092 ; CHECK-NEXT: vfmv.v.f v9, fa0
6093 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
6094 ; CHECK-NEXT: vmfle.vv v8, v8, v8
6095 ; CHECK-NEXT: vmand.mm v0, v8, v9
6097 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
6098 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
6099 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
6100 ret <vscale x 1 x i1> %1
6103 define <vscale x 1 x i1> @fcmps_ord_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
6104 ; CHECK-LABEL: fcmps_ord_fv_nxv1f64:
6106 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6107 ; CHECK-NEXT: vfmv.v.f v9, fa0
6108 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
6109 ; CHECK-NEXT: vmfle.vv v8, v8, v8
6110 ; CHECK-NEXT: vmand.mm v0, v9, v8
6112 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
6113 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
6114 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
6115 ret <vscale x 1 x i1> %1
6118 define <vscale x 1 x i1> @fcmps_ueq_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
6119 ; CHECK-LABEL: fcmps_ueq_vv_nxv1f64:
6121 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6122 ; CHECK-NEXT: vmflt.vv v10, v8, v9
6123 ; CHECK-NEXT: vmflt.vv v8, v9, v8
6124 ; CHECK-NEXT: vmnor.mm v0, v8, v10
6126 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
6127 ret <vscale x 1 x i1> %1
6130 define <vscale x 1 x i1> @fcmps_ueq_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
6131 ; CHECK-LABEL: fcmps_ueq_vf_nxv1f64:
6133 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6134 ; CHECK-NEXT: vmflt.vf v9, v8, fa0
6135 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
6136 ; CHECK-NEXT: vmnor.mm v0, v8, v9
6138 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
6139 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
6140 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
6141 ret <vscale x 1 x i1> %1
6144 define <vscale x 1 x i1> @fcmps_ueq_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
6145 ; CHECK-LABEL: fcmps_ueq_fv_nxv1f64:
6147 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6148 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0
6149 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
6150 ; CHECK-NEXT: vmnor.mm v0, v8, v9
6152 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
6153 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
6154 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
6155 ret <vscale x 1 x i1> %1
6158 define <vscale x 1 x i1> @fcmps_ugt_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
6159 ; CHECK-LABEL: fcmps_ugt_vv_nxv1f64:
6161 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6162 ; CHECK-NEXT: vmfle.vv v8, v8, v9
6163 ; CHECK-NEXT: vmnot.m v0, v8
6165 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
6166 ret <vscale x 1 x i1> %1
6169 define <vscale x 1 x i1> @fcmps_ugt_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
6170 ; CHECK-LABEL: fcmps_ugt_vf_nxv1f64:
6172 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6173 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
6174 ; CHECK-NEXT: vmnot.m v0, v8
6176 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
6177 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
6178 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
6179 ret <vscale x 1 x i1> %1
6182 define <vscale x 1 x i1> @fcmps_ugt_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
6183 ; CHECK-LABEL: fcmps_ugt_fv_nxv1f64:
6185 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6186 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
6187 ; CHECK-NEXT: vmnot.m v0, v8
6189 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
6190 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
6191 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
6192 ret <vscale x 1 x i1> %1
6195 define <vscale x 1 x i1> @fcmps_uge_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
6196 ; CHECK-LABEL: fcmps_uge_vv_nxv1f64:
6198 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6199 ; CHECK-NEXT: vmflt.vv v8, v8, v9
6200 ; CHECK-NEXT: vmnot.m v0, v8
6202 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
6203 ret <vscale x 1 x i1> %1
6206 define <vscale x 1 x i1> @fcmps_uge_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
6207 ; CHECK-LABEL: fcmps_uge_vf_nxv1f64:
6209 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6210 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
6211 ; CHECK-NEXT: vmnot.m v0, v8
6213 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
6214 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
6215 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
6216 ret <vscale x 1 x i1> %1
6219 define <vscale x 1 x i1> @fcmps_uge_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
6220 ; CHECK-LABEL: fcmps_uge_fv_nxv1f64:
6222 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6223 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
6224 ; CHECK-NEXT: vmnot.m v0, v8
6226 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
6227 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
6228 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
6229 ret <vscale x 1 x i1> %1
6232 define <vscale x 1 x i1> @fcmps_ult_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
6233 ; CHECK-LABEL: fcmps_ult_vv_nxv1f64:
6235 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6236 ; CHECK-NEXT: vmfle.vv v8, v9, v8
6237 ; CHECK-NEXT: vmnot.m v0, v8
6239 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
6240 ret <vscale x 1 x i1> %1
6243 define <vscale x 1 x i1> @fcmps_ult_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
6244 ; CHECK-LABEL: fcmps_ult_vf_nxv1f64:
6246 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6247 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
6248 ; CHECK-NEXT: vmnot.m v0, v8
6250 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
6251 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
6252 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
6253 ret <vscale x 1 x i1> %1
6256 define <vscale x 1 x i1> @fcmps_ult_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
6257 ; CHECK-LABEL: fcmps_ult_fv_nxv1f64:
6259 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6260 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
6261 ; CHECK-NEXT: vmnot.m v0, v8
6263 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
6264 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
6265 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
6266 ret <vscale x 1 x i1> %1
6269 define <vscale x 1 x i1> @fcmps_ule_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
6270 ; CHECK-LABEL: fcmps_ule_vv_nxv1f64:
6272 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6273 ; CHECK-NEXT: vmflt.vv v8, v9, v8
6274 ; CHECK-NEXT: vmnot.m v0, v8
6276 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
6277 ret <vscale x 1 x i1> %1
6280 define <vscale x 1 x i1> @fcmps_ule_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
6281 ; CHECK-LABEL: fcmps_ule_vf_nxv1f64:
6283 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6284 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0
6285 ; CHECK-NEXT: vmnot.m v0, v8
6287 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
6288 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
6289 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
6290 ret <vscale x 1 x i1> %1
6293 define <vscale x 1 x i1> @fcmps_ule_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
6294 ; CHECK-LABEL: fcmps_ule_fv_nxv1f64:
6296 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6297 ; CHECK-NEXT: vmflt.vf v8, v8, fa0
6298 ; CHECK-NEXT: vmnot.m v0, v8
6300 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
6301 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
6302 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
6303 ret <vscale x 1 x i1> %1
6306 define <vscale x 1 x i1> @fcmps_une_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
6307 ; CHECK-LABEL: fcmps_une_vv_nxv1f64:
6309 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6310 ; CHECK-NEXT: vmfle.vv v10, v9, v8
6311 ; CHECK-NEXT: vmfle.vv v8, v8, v9
6312 ; CHECK-NEXT: vmnand.mm v0, v8, v10
6314 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
6315 ret <vscale x 1 x i1> %1
6318 define <vscale x 1 x i1> @fcmps_une_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
6319 ; CHECK-LABEL: fcmps_une_vf_nxv1f64:
6321 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6322 ; CHECK-NEXT: vmfge.vf v9, v8, fa0
6323 ; CHECK-NEXT: vmfle.vf v8, v8, fa0
6324 ; CHECK-NEXT: vmnand.mm v0, v8, v9
6326 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
6327 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
6328 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
6329 ret <vscale x 1 x i1> %1
6332 define <vscale x 1 x i1> @fcmps_une_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
6333 ; CHECK-LABEL: fcmps_une_fv_nxv1f64:
6335 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6336 ; CHECK-NEXT: vmfle.vf v9, v8, fa0
6337 ; CHECK-NEXT: vmfge.vf v8, v8, fa0
6338 ; CHECK-NEXT: vmnand.mm v0, v8, v9
6340 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
6341 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
6342 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
6343 ret <vscale x 1 x i1> %1
6346 define <vscale x 1 x i1> @fcmps_uno_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
6347 ; CHECK-LABEL: fcmps_uno_vv_nxv1f64:
6349 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6350 ; CHECK-NEXT: vmfle.vv v9, v9, v9
6351 ; CHECK-NEXT: vmfle.vv v8, v8, v8
6352 ; CHECK-NEXT: vmnot.m v8, v8
6353 ; CHECK-NEXT: vmorn.mm v0, v8, v9
6355 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
6356 ret <vscale x 1 x i1> %1
6359 define <vscale x 1 x i1> @fcmps_uno_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
6360 ; CHECK-LABEL: fcmps_uno_vf_nxv1f64:
6362 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6363 ; CHECK-NEXT: vfmv.v.f v9, fa0
6364 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
6365 ; CHECK-NEXT: vmfle.vv v8, v8, v8
6366 ; CHECK-NEXT: vmnot.m v8, v8
6367 ; CHECK-NEXT: vmorn.mm v0, v8, v9
6369 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
6370 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
6371 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
6372 ret <vscale x 1 x i1> %1
6375 define <vscale x 1 x i1> @fcmps_uno_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
6376 ; CHECK-LABEL: fcmps_uno_fv_nxv1f64:
6378 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
6379 ; CHECK-NEXT: vfmv.v.f v9, fa0
6380 ; CHECK-NEXT: vmfle.vf v9, v9, fa0
6381 ; CHECK-NEXT: vmnot.m v9, v9
6382 ; CHECK-NEXT: vmfle.vv v8, v8, v8
6383 ; CHECK-NEXT: vmorn.mm v0, v9, v8
6385 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
6386 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
6387 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
6388 ret <vscale x 1 x i1> %1
6391 declare <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double>, metadata, metadata)
6392 define <vscale x 2 x i1> @fcmps_oeq_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
6393 ; CHECK-LABEL: fcmps_oeq_vv_nxv2f64:
6395 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6396 ; CHECK-NEXT: vmfle.vv v12, v10, v8
6397 ; CHECK-NEXT: vmfle.vv v13, v8, v10
6398 ; CHECK-NEXT: vmand.mm v0, v13, v12
6400 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
6401 ret <vscale x 2 x i1> %1
6404 define <vscale x 2 x i1> @fcmps_oeq_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6405 ; CHECK-LABEL: fcmps_oeq_vf_nxv2f64:
6407 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6408 ; CHECK-NEXT: vmfge.vf v10, v8, fa0
6409 ; CHECK-NEXT: vmfle.vf v11, v8, fa0
6410 ; CHECK-NEXT: vmand.mm v0, v11, v10
6412 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6413 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6414 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
6415 ret <vscale x 2 x i1> %1
6418 define <vscale x 2 x i1> @fcmps_oeq_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6419 ; CHECK-LABEL: fcmps_oeq_fv_nxv2f64:
6421 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6422 ; CHECK-NEXT: vmfle.vf v10, v8, fa0
6423 ; CHECK-NEXT: vmfge.vf v11, v8, fa0
6424 ; CHECK-NEXT: vmand.mm v0, v11, v10
6426 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6427 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6428 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
6429 ret <vscale x 2 x i1> %1
6432 define <vscale x 2 x i1> @fcmps_ogt_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
6433 ; CHECK-LABEL: fcmps_ogt_vv_nxv2f64:
6435 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6436 ; CHECK-NEXT: vmflt.vv v0, v10, v8
6438 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
6439 ret <vscale x 2 x i1> %1
6442 define <vscale x 2 x i1> @fcmps_ogt_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6443 ; CHECK-LABEL: fcmps_ogt_vf_nxv2f64:
6445 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6446 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
6448 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6449 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6450 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
6451 ret <vscale x 2 x i1> %1
6454 define <vscale x 2 x i1> @fcmps_ogt_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6455 ; CHECK-LABEL: fcmps_ogt_fv_nxv2f64:
6457 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6458 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
6460 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6461 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6462 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
6463 ret <vscale x 2 x i1> %1
6466 define <vscale x 2 x i1> @fcmps_oge_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
6467 ; CHECK-LABEL: fcmps_oge_vv_nxv2f64:
6469 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6470 ; CHECK-NEXT: vmfle.vv v0, v10, v8
6472 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
6473 ret <vscale x 2 x i1> %1
6476 define <vscale x 2 x i1> @fcmps_oge_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6477 ; CHECK-LABEL: fcmps_oge_vf_nxv2f64:
6479 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6480 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
6482 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6483 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6484 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
6485 ret <vscale x 2 x i1> %1
6488 define <vscale x 2 x i1> @fcmps_oge_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6489 ; CHECK-LABEL: fcmps_oge_fv_nxv2f64:
6491 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6492 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
6494 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6495 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6496 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
6497 ret <vscale x 2 x i1> %1
6500 define <vscale x 2 x i1> @fcmps_olt_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
6501 ; CHECK-LABEL: fcmps_olt_vv_nxv2f64:
6503 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6504 ; CHECK-NEXT: vmflt.vv v0, v8, v10
6506 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
6507 ret <vscale x 2 x i1> %1
6510 define <vscale x 2 x i1> @fcmps_olt_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6511 ; CHECK-LABEL: fcmps_olt_vf_nxv2f64:
6513 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6514 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
6516 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6517 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6518 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
6519 ret <vscale x 2 x i1> %1
6522 define <vscale x 2 x i1> @fcmps_olt_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6523 ; CHECK-LABEL: fcmps_olt_fv_nxv2f64:
6525 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6526 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
6528 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6529 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6530 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
6531 ret <vscale x 2 x i1> %1
6534 define <vscale x 2 x i1> @fcmps_ole_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
6535 ; CHECK-LABEL: fcmps_ole_vv_nxv2f64:
6537 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6538 ; CHECK-NEXT: vmfle.vv v0, v8, v10
6540 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
6541 ret <vscale x 2 x i1> %1
6544 define <vscale x 2 x i1> @fcmps_ole_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6545 ; CHECK-LABEL: fcmps_ole_vf_nxv2f64:
6547 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6548 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
6550 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6551 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6552 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
6553 ret <vscale x 2 x i1> %1
6556 define <vscale x 2 x i1> @fcmps_ole_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6557 ; CHECK-LABEL: fcmps_ole_fv_nxv2f64:
6559 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6560 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
6562 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6563 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6564 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
6565 ret <vscale x 2 x i1> %1
6568 define <vscale x 2 x i1> @fcmps_one_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
6569 ; CHECK-LABEL: fcmps_one_vv_nxv2f64:
6571 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6572 ; CHECK-NEXT: vmflt.vv v12, v8, v10
6573 ; CHECK-NEXT: vmflt.vv v13, v10, v8
6574 ; CHECK-NEXT: vmor.mm v0, v13, v12
6576 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
6577 ret <vscale x 2 x i1> %1
6580 define <vscale x 2 x i1> @fcmps_one_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6581 ; CHECK-LABEL: fcmps_one_vf_nxv2f64:
6583 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6584 ; CHECK-NEXT: vmflt.vf v10, v8, fa0
6585 ; CHECK-NEXT: vmfgt.vf v11, v8, fa0
6586 ; CHECK-NEXT: vmor.mm v0, v11, v10
6588 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6589 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6590 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
6591 ret <vscale x 2 x i1> %1
6594 define <vscale x 2 x i1> @fcmps_one_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6595 ; CHECK-LABEL: fcmps_one_fv_nxv2f64:
6597 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6598 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0
6599 ; CHECK-NEXT: vmflt.vf v11, v8, fa0
6600 ; CHECK-NEXT: vmor.mm v0, v11, v10
6602 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6603 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6604 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
6605 ret <vscale x 2 x i1> %1
6608 define <vscale x 2 x i1> @fcmps_ord_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
6609 ; CHECK-LABEL: fcmps_ord_vv_nxv2f64:
6611 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6612 ; CHECK-NEXT: vmfle.vv v12, v10, v10
6613 ; CHECK-NEXT: vmfle.vv v10, v8, v8
6614 ; CHECK-NEXT: vmand.mm v0, v10, v12
6616 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
6617 ret <vscale x 2 x i1> %1
6620 define <vscale x 2 x i1> @fcmps_ord_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6621 ; CHECK-LABEL: fcmps_ord_vf_nxv2f64:
6623 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6624 ; CHECK-NEXT: vfmv.v.f v10, fa0
6625 ; CHECK-NEXT: vmfle.vf v12, v10, fa0
6626 ; CHECK-NEXT: vmfle.vv v10, v8, v8
6627 ; CHECK-NEXT: vmand.mm v0, v10, v12
6629 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6630 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6631 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
6632 ret <vscale x 2 x i1> %1
6635 define <vscale x 2 x i1> @fcmps_ord_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6636 ; CHECK-LABEL: fcmps_ord_fv_nxv2f64:
6638 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6639 ; CHECK-NEXT: vfmv.v.f v10, fa0
6640 ; CHECK-NEXT: vmfle.vf v12, v10, fa0
6641 ; CHECK-NEXT: vmfle.vv v10, v8, v8
6642 ; CHECK-NEXT: vmand.mm v0, v12, v10
6644 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6645 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6646 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
6647 ret <vscale x 2 x i1> %1
6650 define <vscale x 2 x i1> @fcmps_ueq_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
6651 ; CHECK-LABEL: fcmps_ueq_vv_nxv2f64:
6653 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6654 ; CHECK-NEXT: vmflt.vv v12, v8, v10
6655 ; CHECK-NEXT: vmflt.vv v13, v10, v8
6656 ; CHECK-NEXT: vmnor.mm v0, v13, v12
6658 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
6659 ret <vscale x 2 x i1> %1
6662 define <vscale x 2 x i1> @fcmps_ueq_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6663 ; CHECK-LABEL: fcmps_ueq_vf_nxv2f64:
6665 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6666 ; CHECK-NEXT: vmflt.vf v10, v8, fa0
6667 ; CHECK-NEXT: vmfgt.vf v11, v8, fa0
6668 ; CHECK-NEXT: vmnor.mm v0, v11, v10
6670 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6671 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6672 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
6673 ret <vscale x 2 x i1> %1
6676 define <vscale x 2 x i1> @fcmps_ueq_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6677 ; CHECK-LABEL: fcmps_ueq_fv_nxv2f64:
6679 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6680 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0
6681 ; CHECK-NEXT: vmflt.vf v11, v8, fa0
6682 ; CHECK-NEXT: vmnor.mm v0, v11, v10
6684 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6685 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6686 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
6687 ret <vscale x 2 x i1> %1
6690 define <vscale x 2 x i1> @fcmps_ugt_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
6691 ; CHECK-LABEL: fcmps_ugt_vv_nxv2f64:
6693 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6694 ; CHECK-NEXT: vmfle.vv v12, v8, v10
6695 ; CHECK-NEXT: vmnot.m v0, v12
6697 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
6698 ret <vscale x 2 x i1> %1
6701 define <vscale x 2 x i1> @fcmps_ugt_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6702 ; CHECK-LABEL: fcmps_ugt_vf_nxv2f64:
6704 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6705 ; CHECK-NEXT: vmfle.vf v10, v8, fa0
6706 ; CHECK-NEXT: vmnot.m v0, v10
6708 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6709 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6710 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
6711 ret <vscale x 2 x i1> %1
6714 define <vscale x 2 x i1> @fcmps_ugt_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6715 ; CHECK-LABEL: fcmps_ugt_fv_nxv2f64:
6717 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6718 ; CHECK-NEXT: vmfge.vf v10, v8, fa0
6719 ; CHECK-NEXT: vmnot.m v0, v10
6721 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6722 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6723 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
6724 ret <vscale x 2 x i1> %1
6727 define <vscale x 2 x i1> @fcmps_uge_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
6728 ; CHECK-LABEL: fcmps_uge_vv_nxv2f64:
6730 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6731 ; CHECK-NEXT: vmflt.vv v12, v8, v10
6732 ; CHECK-NEXT: vmnot.m v0, v12
6734 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
6735 ret <vscale x 2 x i1> %1
6738 define <vscale x 2 x i1> @fcmps_uge_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6739 ; CHECK-LABEL: fcmps_uge_vf_nxv2f64:
6741 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6742 ; CHECK-NEXT: vmflt.vf v10, v8, fa0
6743 ; CHECK-NEXT: vmnot.m v0, v10
6745 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6746 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6747 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
6748 ret <vscale x 2 x i1> %1
6751 define <vscale x 2 x i1> @fcmps_uge_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6752 ; CHECK-LABEL: fcmps_uge_fv_nxv2f64:
6754 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6755 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0
6756 ; CHECK-NEXT: vmnot.m v0, v10
6758 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6759 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6760 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
6761 ret <vscale x 2 x i1> %1
6764 define <vscale x 2 x i1> @fcmps_ult_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
6765 ; CHECK-LABEL: fcmps_ult_vv_nxv2f64:
6767 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6768 ; CHECK-NEXT: vmfle.vv v12, v10, v8
6769 ; CHECK-NEXT: vmnot.m v0, v12
6771 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
6772 ret <vscale x 2 x i1> %1
6775 define <vscale x 2 x i1> @fcmps_ult_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6776 ; CHECK-LABEL: fcmps_ult_vf_nxv2f64:
6778 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6779 ; CHECK-NEXT: vmfge.vf v10, v8, fa0
6780 ; CHECK-NEXT: vmnot.m v0, v10
6782 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6783 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6784 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
6785 ret <vscale x 2 x i1> %1
6788 define <vscale x 2 x i1> @fcmps_ult_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6789 ; CHECK-LABEL: fcmps_ult_fv_nxv2f64:
6791 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6792 ; CHECK-NEXT: vmfle.vf v10, v8, fa0
6793 ; CHECK-NEXT: vmnot.m v0, v10
6795 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6796 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6797 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
6798 ret <vscale x 2 x i1> %1
6801 define <vscale x 2 x i1> @fcmps_ule_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
6802 ; CHECK-LABEL: fcmps_ule_vv_nxv2f64:
6804 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6805 ; CHECK-NEXT: vmflt.vv v12, v10, v8
6806 ; CHECK-NEXT: vmnot.m v0, v12
6808 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
6809 ret <vscale x 2 x i1> %1
6812 define <vscale x 2 x i1> @fcmps_ule_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6813 ; CHECK-LABEL: fcmps_ule_vf_nxv2f64:
6815 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6816 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0
6817 ; CHECK-NEXT: vmnot.m v0, v10
6819 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6820 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6821 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
6822 ret <vscale x 2 x i1> %1
6825 define <vscale x 2 x i1> @fcmps_ule_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6826 ; CHECK-LABEL: fcmps_ule_fv_nxv2f64:
6828 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6829 ; CHECK-NEXT: vmflt.vf v10, v8, fa0
6830 ; CHECK-NEXT: vmnot.m v0, v10
6832 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6833 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6834 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
6835 ret <vscale x 2 x i1> %1
6838 define <vscale x 2 x i1> @fcmps_une_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
6839 ; CHECK-LABEL: fcmps_une_vv_nxv2f64:
6841 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6842 ; CHECK-NEXT: vmfle.vv v12, v10, v8
6843 ; CHECK-NEXT: vmfle.vv v13, v8, v10
6844 ; CHECK-NEXT: vmnand.mm v0, v13, v12
6846 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
6847 ret <vscale x 2 x i1> %1
6850 define <vscale x 2 x i1> @fcmps_une_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6851 ; CHECK-LABEL: fcmps_une_vf_nxv2f64:
6853 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6854 ; CHECK-NEXT: vmfge.vf v10, v8, fa0
6855 ; CHECK-NEXT: vmfle.vf v11, v8, fa0
6856 ; CHECK-NEXT: vmnand.mm v0, v11, v10
6858 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6859 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6860 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
6861 ret <vscale x 2 x i1> %1
6864 define <vscale x 2 x i1> @fcmps_une_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6865 ; CHECK-LABEL: fcmps_une_fv_nxv2f64:
6867 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6868 ; CHECK-NEXT: vmfle.vf v10, v8, fa0
6869 ; CHECK-NEXT: vmfge.vf v11, v8, fa0
6870 ; CHECK-NEXT: vmnand.mm v0, v11, v10
6872 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6873 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6874 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
6875 ret <vscale x 2 x i1> %1
6878 define <vscale x 2 x i1> @fcmps_uno_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
6879 ; CHECK-LABEL: fcmps_uno_vv_nxv2f64:
6881 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6882 ; CHECK-NEXT: vmfle.vv v12, v10, v10
6883 ; CHECK-NEXT: vmfle.vv v10, v8, v8
6884 ; CHECK-NEXT: vmnot.m v8, v10
6885 ; CHECK-NEXT: vmorn.mm v0, v8, v12
6887 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
6888 ret <vscale x 2 x i1> %1
6891 define <vscale x 2 x i1> @fcmps_uno_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6892 ; CHECK-LABEL: fcmps_uno_vf_nxv2f64:
6894 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6895 ; CHECK-NEXT: vfmv.v.f v10, fa0
6896 ; CHECK-NEXT: vmfle.vf v12, v10, fa0
6897 ; CHECK-NEXT: vmfle.vv v10, v8, v8
6898 ; CHECK-NEXT: vmnot.m v8, v10
6899 ; CHECK-NEXT: vmorn.mm v0, v8, v12
6901 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6902 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6903 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
6904 ret <vscale x 2 x i1> %1
6907 define <vscale x 2 x i1> @fcmps_uno_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
6908 ; CHECK-LABEL: fcmps_uno_fv_nxv2f64:
6910 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
6911 ; CHECK-NEXT: vfmv.v.f v10, fa0
6912 ; CHECK-NEXT: vmfle.vf v12, v10, fa0
6913 ; CHECK-NEXT: vmnot.m v10, v12
6914 ; CHECK-NEXT: vmfle.vv v11, v8, v8
6915 ; CHECK-NEXT: vmorn.mm v0, v10, v11
6917 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
6918 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
6919 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
6920 ret <vscale x 2 x i1> %1
6923 declare <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double>, <vscale x 4 x double>, metadata, metadata)
6924 define <vscale x 4 x i1> @fcmps_oeq_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
6925 ; CHECK-LABEL: fcmps_oeq_vv_nxv4f64:
6927 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
6928 ; CHECK-NEXT: vmfle.vv v16, v12, v8
6929 ; CHECK-NEXT: vmfle.vv v17, v8, v12
6930 ; CHECK-NEXT: vmand.mm v0, v17, v16
6932 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
6933 ret <vscale x 4 x i1> %1
6936 define <vscale x 4 x i1> @fcmps_oeq_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
6937 ; CHECK-LABEL: fcmps_oeq_vf_nxv4f64:
6939 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
6940 ; CHECK-NEXT: vmfge.vf v12, v8, fa0
6941 ; CHECK-NEXT: vmfle.vf v13, v8, fa0
6942 ; CHECK-NEXT: vmand.mm v0, v13, v12
6944 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6945 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6946 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
6947 ret <vscale x 4 x i1> %1
6950 define <vscale x 4 x i1> @fcmps_oeq_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
6951 ; CHECK-LABEL: fcmps_oeq_fv_nxv4f64:
6953 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
6954 ; CHECK-NEXT: vmfle.vf v12, v8, fa0
6955 ; CHECK-NEXT: vmfge.vf v13, v8, fa0
6956 ; CHECK-NEXT: vmand.mm v0, v13, v12
6958 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6959 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6960 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
6961 ret <vscale x 4 x i1> %1
6964 define <vscale x 4 x i1> @fcmps_ogt_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
6965 ; CHECK-LABEL: fcmps_ogt_vv_nxv4f64:
6967 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
6968 ; CHECK-NEXT: vmflt.vv v0, v12, v8
6970 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
6971 ret <vscale x 4 x i1> %1
6974 define <vscale x 4 x i1> @fcmps_ogt_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
6975 ; CHECK-LABEL: fcmps_ogt_vf_nxv4f64:
6977 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
6978 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
6980 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6981 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6982 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
6983 ret <vscale x 4 x i1> %1
6986 define <vscale x 4 x i1> @fcmps_ogt_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
6987 ; CHECK-LABEL: fcmps_ogt_fv_nxv4f64:
6989 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
6990 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
6992 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
6993 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
6994 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
6995 ret <vscale x 4 x i1> %1
6998 define <vscale x 4 x i1> @fcmps_oge_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
6999 ; CHECK-LABEL: fcmps_oge_vv_nxv4f64:
7001 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7002 ; CHECK-NEXT: vmfle.vv v0, v12, v8
7004 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
7005 ret <vscale x 4 x i1> %1
7008 define <vscale x 4 x i1> @fcmps_oge_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7009 ; CHECK-LABEL: fcmps_oge_vf_nxv4f64:
7011 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7012 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
7014 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7015 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7016 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
7017 ret <vscale x 4 x i1> %1
7020 define <vscale x 4 x i1> @fcmps_oge_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7021 ; CHECK-LABEL: fcmps_oge_fv_nxv4f64:
7023 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7024 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
7026 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7027 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7028 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
7029 ret <vscale x 4 x i1> %1
7032 define <vscale x 4 x i1> @fcmps_olt_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
7033 ; CHECK-LABEL: fcmps_olt_vv_nxv4f64:
7035 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7036 ; CHECK-NEXT: vmflt.vv v0, v8, v12
7038 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
7039 ret <vscale x 4 x i1> %1
7042 define <vscale x 4 x i1> @fcmps_olt_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7043 ; CHECK-LABEL: fcmps_olt_vf_nxv4f64:
7045 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7046 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
7048 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7049 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7050 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
7051 ret <vscale x 4 x i1> %1
7054 define <vscale x 4 x i1> @fcmps_olt_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7055 ; CHECK-LABEL: fcmps_olt_fv_nxv4f64:
7057 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7058 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
7060 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7061 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7062 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
7063 ret <vscale x 4 x i1> %1
7066 define <vscale x 4 x i1> @fcmps_ole_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
7067 ; CHECK-LABEL: fcmps_ole_vv_nxv4f64:
7069 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7070 ; CHECK-NEXT: vmfle.vv v0, v8, v12
7072 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
7073 ret <vscale x 4 x i1> %1
7076 define <vscale x 4 x i1> @fcmps_ole_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7077 ; CHECK-LABEL: fcmps_ole_vf_nxv4f64:
7079 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7080 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
7082 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7083 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7084 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
7085 ret <vscale x 4 x i1> %1
7088 define <vscale x 4 x i1> @fcmps_ole_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7089 ; CHECK-LABEL: fcmps_ole_fv_nxv4f64:
7091 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7092 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
7094 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7095 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7096 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
7097 ret <vscale x 4 x i1> %1
7100 define <vscale x 4 x i1> @fcmps_one_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
7101 ; CHECK-LABEL: fcmps_one_vv_nxv4f64:
7103 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7104 ; CHECK-NEXT: vmflt.vv v16, v8, v12
7105 ; CHECK-NEXT: vmflt.vv v17, v12, v8
7106 ; CHECK-NEXT: vmor.mm v0, v17, v16
7108 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
7109 ret <vscale x 4 x i1> %1
7112 define <vscale x 4 x i1> @fcmps_one_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7113 ; CHECK-LABEL: fcmps_one_vf_nxv4f64:
7115 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7116 ; CHECK-NEXT: vmflt.vf v12, v8, fa0
7117 ; CHECK-NEXT: vmfgt.vf v13, v8, fa0
7118 ; CHECK-NEXT: vmor.mm v0, v13, v12
7120 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7121 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7122 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
7123 ret <vscale x 4 x i1> %1
7126 define <vscale x 4 x i1> @fcmps_one_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7127 ; CHECK-LABEL: fcmps_one_fv_nxv4f64:
7129 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7130 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0
7131 ; CHECK-NEXT: vmflt.vf v13, v8, fa0
7132 ; CHECK-NEXT: vmor.mm v0, v13, v12
7134 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7135 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7136 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
7137 ret <vscale x 4 x i1> %1
7140 define <vscale x 4 x i1> @fcmps_ord_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
7141 ; CHECK-LABEL: fcmps_ord_vv_nxv4f64:
7143 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7144 ; CHECK-NEXT: vmfle.vv v16, v12, v12
7145 ; CHECK-NEXT: vmfle.vv v12, v8, v8
7146 ; CHECK-NEXT: vmand.mm v0, v12, v16
7148 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
7149 ret <vscale x 4 x i1> %1
7152 define <vscale x 4 x i1> @fcmps_ord_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7153 ; CHECK-LABEL: fcmps_ord_vf_nxv4f64:
7155 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7156 ; CHECK-NEXT: vfmv.v.f v12, fa0
7157 ; CHECK-NEXT: vmfle.vf v16, v12, fa0
7158 ; CHECK-NEXT: vmfle.vv v12, v8, v8
7159 ; CHECK-NEXT: vmand.mm v0, v12, v16
7161 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7162 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7163 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
7164 ret <vscale x 4 x i1> %1
7167 define <vscale x 4 x i1> @fcmps_ord_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7168 ; CHECK-LABEL: fcmps_ord_fv_nxv4f64:
7170 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7171 ; CHECK-NEXT: vfmv.v.f v12, fa0
7172 ; CHECK-NEXT: vmfle.vf v16, v12, fa0
7173 ; CHECK-NEXT: vmfle.vv v12, v8, v8
7174 ; CHECK-NEXT: vmand.mm v0, v16, v12
7176 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7177 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7178 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
7179 ret <vscale x 4 x i1> %1
7182 define <vscale x 4 x i1> @fcmps_ueq_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
7183 ; CHECK-LABEL: fcmps_ueq_vv_nxv4f64:
7185 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7186 ; CHECK-NEXT: vmflt.vv v16, v8, v12
7187 ; CHECK-NEXT: vmflt.vv v17, v12, v8
7188 ; CHECK-NEXT: vmnor.mm v0, v17, v16
7190 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
7191 ret <vscale x 4 x i1> %1
7194 define <vscale x 4 x i1> @fcmps_ueq_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7195 ; CHECK-LABEL: fcmps_ueq_vf_nxv4f64:
7197 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7198 ; CHECK-NEXT: vmflt.vf v12, v8, fa0
7199 ; CHECK-NEXT: vmfgt.vf v13, v8, fa0
7200 ; CHECK-NEXT: vmnor.mm v0, v13, v12
7202 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7203 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7204 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
7205 ret <vscale x 4 x i1> %1
7208 define <vscale x 4 x i1> @fcmps_ueq_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7209 ; CHECK-LABEL: fcmps_ueq_fv_nxv4f64:
7211 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7212 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0
7213 ; CHECK-NEXT: vmflt.vf v13, v8, fa0
7214 ; CHECK-NEXT: vmnor.mm v0, v13, v12
7216 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7217 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7218 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
7219 ret <vscale x 4 x i1> %1
7222 define <vscale x 4 x i1> @fcmps_ugt_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
7223 ; CHECK-LABEL: fcmps_ugt_vv_nxv4f64:
7225 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7226 ; CHECK-NEXT: vmfle.vv v16, v8, v12
7227 ; CHECK-NEXT: vmnot.m v0, v16
7229 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
7230 ret <vscale x 4 x i1> %1
7233 define <vscale x 4 x i1> @fcmps_ugt_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7234 ; CHECK-LABEL: fcmps_ugt_vf_nxv4f64:
7236 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7237 ; CHECK-NEXT: vmfle.vf v12, v8, fa0
7238 ; CHECK-NEXT: vmnot.m v0, v12
7240 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7241 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7242 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
7243 ret <vscale x 4 x i1> %1
7246 define <vscale x 4 x i1> @fcmps_ugt_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7247 ; CHECK-LABEL: fcmps_ugt_fv_nxv4f64:
7249 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7250 ; CHECK-NEXT: vmfge.vf v12, v8, fa0
7251 ; CHECK-NEXT: vmnot.m v0, v12
7253 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7254 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7255 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
7256 ret <vscale x 4 x i1> %1
7259 define <vscale x 4 x i1> @fcmps_uge_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
7260 ; CHECK-LABEL: fcmps_uge_vv_nxv4f64:
7262 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7263 ; CHECK-NEXT: vmflt.vv v16, v8, v12
7264 ; CHECK-NEXT: vmnot.m v0, v16
7266 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
7267 ret <vscale x 4 x i1> %1
7270 define <vscale x 4 x i1> @fcmps_uge_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7271 ; CHECK-LABEL: fcmps_uge_vf_nxv4f64:
7273 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7274 ; CHECK-NEXT: vmflt.vf v12, v8, fa0
7275 ; CHECK-NEXT: vmnot.m v0, v12
7277 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7278 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7279 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
7280 ret <vscale x 4 x i1> %1
7283 define <vscale x 4 x i1> @fcmps_uge_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7284 ; CHECK-LABEL: fcmps_uge_fv_nxv4f64:
7286 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7287 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0
7288 ; CHECK-NEXT: vmnot.m v0, v12
7290 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7291 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7292 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
7293 ret <vscale x 4 x i1> %1
7296 define <vscale x 4 x i1> @fcmps_ult_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
7297 ; CHECK-LABEL: fcmps_ult_vv_nxv4f64:
7299 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7300 ; CHECK-NEXT: vmfle.vv v16, v12, v8
7301 ; CHECK-NEXT: vmnot.m v0, v16
7303 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
7304 ret <vscale x 4 x i1> %1
7307 define <vscale x 4 x i1> @fcmps_ult_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7308 ; CHECK-LABEL: fcmps_ult_vf_nxv4f64:
7310 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7311 ; CHECK-NEXT: vmfge.vf v12, v8, fa0
7312 ; CHECK-NEXT: vmnot.m v0, v12
7314 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7315 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7316 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
7317 ret <vscale x 4 x i1> %1
7320 define <vscale x 4 x i1> @fcmps_ult_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7321 ; CHECK-LABEL: fcmps_ult_fv_nxv4f64:
7323 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7324 ; CHECK-NEXT: vmfle.vf v12, v8, fa0
7325 ; CHECK-NEXT: vmnot.m v0, v12
7327 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7328 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7329 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
7330 ret <vscale x 4 x i1> %1
7333 define <vscale x 4 x i1> @fcmps_ule_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
7334 ; CHECK-LABEL: fcmps_ule_vv_nxv4f64:
7336 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7337 ; CHECK-NEXT: vmflt.vv v16, v12, v8
7338 ; CHECK-NEXT: vmnot.m v0, v16
7340 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
7341 ret <vscale x 4 x i1> %1
7344 define <vscale x 4 x i1> @fcmps_ule_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7345 ; CHECK-LABEL: fcmps_ule_vf_nxv4f64:
7347 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7348 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0
7349 ; CHECK-NEXT: vmnot.m v0, v12
7351 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7352 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7353 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
7354 ret <vscale x 4 x i1> %1
7357 define <vscale x 4 x i1> @fcmps_ule_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7358 ; CHECK-LABEL: fcmps_ule_fv_nxv4f64:
7360 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7361 ; CHECK-NEXT: vmflt.vf v12, v8, fa0
7362 ; CHECK-NEXT: vmnot.m v0, v12
7364 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7365 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7366 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
7367 ret <vscale x 4 x i1> %1
7370 define <vscale x 4 x i1> @fcmps_une_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
7371 ; CHECK-LABEL: fcmps_une_vv_nxv4f64:
7373 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7374 ; CHECK-NEXT: vmfle.vv v16, v12, v8
7375 ; CHECK-NEXT: vmfle.vv v17, v8, v12
7376 ; CHECK-NEXT: vmnand.mm v0, v17, v16
7378 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
7379 ret <vscale x 4 x i1> %1
7382 define <vscale x 4 x i1> @fcmps_une_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7383 ; CHECK-LABEL: fcmps_une_vf_nxv4f64:
7385 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7386 ; CHECK-NEXT: vmfge.vf v12, v8, fa0
7387 ; CHECK-NEXT: vmfle.vf v13, v8, fa0
7388 ; CHECK-NEXT: vmnand.mm v0, v13, v12
7390 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7391 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7392 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
7393 ret <vscale x 4 x i1> %1
7396 define <vscale x 4 x i1> @fcmps_une_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7397 ; CHECK-LABEL: fcmps_une_fv_nxv4f64:
7399 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7400 ; CHECK-NEXT: vmfle.vf v12, v8, fa0
7401 ; CHECK-NEXT: vmfge.vf v13, v8, fa0
7402 ; CHECK-NEXT: vmnand.mm v0, v13, v12
7404 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7405 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7406 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
7407 ret <vscale x 4 x i1> %1
7410 define <vscale x 4 x i1> @fcmps_uno_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
7411 ; CHECK-LABEL: fcmps_uno_vv_nxv4f64:
7413 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7414 ; CHECK-NEXT: vmfle.vv v16, v12, v12
7415 ; CHECK-NEXT: vmfle.vv v12, v8, v8
7416 ; CHECK-NEXT: vmnot.m v8, v12
7417 ; CHECK-NEXT: vmorn.mm v0, v8, v16
7419 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
7420 ret <vscale x 4 x i1> %1
7423 define <vscale x 4 x i1> @fcmps_uno_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7424 ; CHECK-LABEL: fcmps_uno_vf_nxv4f64:
7426 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7427 ; CHECK-NEXT: vfmv.v.f v12, fa0
7428 ; CHECK-NEXT: vmfle.vf v16, v12, fa0
7429 ; CHECK-NEXT: vmfle.vv v12, v8, v8
7430 ; CHECK-NEXT: vmnot.m v8, v12
7431 ; CHECK-NEXT: vmorn.mm v0, v8, v16
7433 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7434 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7435 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
7436 ret <vscale x 4 x i1> %1
7439 define <vscale x 4 x i1> @fcmps_uno_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
7440 ; CHECK-LABEL: fcmps_uno_fv_nxv4f64:
7442 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
7443 ; CHECK-NEXT: vfmv.v.f v12, fa0
7444 ; CHECK-NEXT: vmfle.vf v16, v12, fa0
7445 ; CHECK-NEXT: vmnot.m v12, v16
7446 ; CHECK-NEXT: vmfle.vv v13, v8, v8
7447 ; CHECK-NEXT: vmorn.mm v0, v12, v13
7449 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
7450 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
7451 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
7452 ret <vscale x 4 x i1> %1
7455 declare <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double>, <vscale x 8 x double>, metadata, metadata)
7456 define <vscale x 8 x i1> @fcmps_oeq_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
7457 ; CHECK-LABEL: fcmps_oeq_vv_nxv8f64:
7459 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7460 ; CHECK-NEXT: vmfle.vv v24, v16, v8
7461 ; CHECK-NEXT: vmfle.vv v25, v8, v16
7462 ; CHECK-NEXT: vmand.mm v0, v25, v24
7464 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
7465 ret <vscale x 8 x i1> %1
7468 define <vscale x 8 x i1> @fcmps_oeq_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7469 ; CHECK-LABEL: fcmps_oeq_vf_nxv8f64:
7471 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7472 ; CHECK-NEXT: vmfge.vf v16, v8, fa0
7473 ; CHECK-NEXT: vmfle.vf v17, v8, fa0
7474 ; CHECK-NEXT: vmand.mm v0, v17, v16
7476 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7477 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7478 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
7479 ret <vscale x 8 x i1> %1
7482 define <vscale x 8 x i1> @fcmps_oeq_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7483 ; CHECK-LABEL: fcmps_oeq_fv_nxv8f64:
7485 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7486 ; CHECK-NEXT: vmfle.vf v16, v8, fa0
7487 ; CHECK-NEXT: vmfge.vf v17, v8, fa0
7488 ; CHECK-NEXT: vmand.mm v0, v17, v16
7490 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7491 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7492 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
7493 ret <vscale x 8 x i1> %1
7496 define <vscale x 8 x i1> @fcmps_ogt_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
7497 ; CHECK-LABEL: fcmps_ogt_vv_nxv8f64:
7499 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7500 ; CHECK-NEXT: vmflt.vv v0, v16, v8
7502 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
7503 ret <vscale x 8 x i1> %1
7506 define <vscale x 8 x i1> @fcmps_ogt_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7507 ; CHECK-LABEL: fcmps_ogt_vf_nxv8f64:
7509 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7510 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
7512 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7513 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7514 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
7515 ret <vscale x 8 x i1> %1
7518 define <vscale x 8 x i1> @fcmps_ogt_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7519 ; CHECK-LABEL: fcmps_ogt_fv_nxv8f64:
7521 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7522 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
7524 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7525 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7526 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
7527 ret <vscale x 8 x i1> %1
7530 define <vscale x 8 x i1> @fcmps_oge_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
7531 ; CHECK-LABEL: fcmps_oge_vv_nxv8f64:
7533 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7534 ; CHECK-NEXT: vmfle.vv v0, v16, v8
7536 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
7537 ret <vscale x 8 x i1> %1
7540 define <vscale x 8 x i1> @fcmps_oge_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7541 ; CHECK-LABEL: fcmps_oge_vf_nxv8f64:
7543 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7544 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
7546 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7547 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7548 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
7549 ret <vscale x 8 x i1> %1
7552 define <vscale x 8 x i1> @fcmps_oge_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7553 ; CHECK-LABEL: fcmps_oge_fv_nxv8f64:
7555 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7556 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
7558 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7559 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7560 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
7561 ret <vscale x 8 x i1> %1
7564 define <vscale x 8 x i1> @fcmps_olt_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
7565 ; CHECK-LABEL: fcmps_olt_vv_nxv8f64:
7567 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7568 ; CHECK-NEXT: vmflt.vv v0, v8, v16
7570 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
7571 ret <vscale x 8 x i1> %1
7574 define <vscale x 8 x i1> @fcmps_olt_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7575 ; CHECK-LABEL: fcmps_olt_vf_nxv8f64:
7577 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7578 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
7580 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7581 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7582 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
7583 ret <vscale x 8 x i1> %1
7586 define <vscale x 8 x i1> @fcmps_olt_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7587 ; CHECK-LABEL: fcmps_olt_fv_nxv8f64:
7589 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7590 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
7592 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7593 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7594 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
7595 ret <vscale x 8 x i1> %1
7598 define <vscale x 8 x i1> @fcmps_ole_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
7599 ; CHECK-LABEL: fcmps_ole_vv_nxv8f64:
7601 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7602 ; CHECK-NEXT: vmfle.vv v0, v8, v16
7604 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
7605 ret <vscale x 8 x i1> %1
7608 define <vscale x 8 x i1> @fcmps_ole_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7609 ; CHECK-LABEL: fcmps_ole_vf_nxv8f64:
7611 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7612 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
7614 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7615 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7616 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
7617 ret <vscale x 8 x i1> %1
7620 define <vscale x 8 x i1> @fcmps_ole_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7621 ; CHECK-LABEL: fcmps_ole_fv_nxv8f64:
7623 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7624 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
7626 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7627 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7628 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
7629 ret <vscale x 8 x i1> %1
7632 define <vscale x 8 x i1> @fcmps_one_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
7633 ; CHECK-LABEL: fcmps_one_vv_nxv8f64:
7635 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7636 ; CHECK-NEXT: vmflt.vv v24, v8, v16
7637 ; CHECK-NEXT: vmflt.vv v25, v16, v8
7638 ; CHECK-NEXT: vmor.mm v0, v25, v24
7640 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
7641 ret <vscale x 8 x i1> %1
7644 define <vscale x 8 x i1> @fcmps_one_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7645 ; CHECK-LABEL: fcmps_one_vf_nxv8f64:
7647 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7648 ; CHECK-NEXT: vmflt.vf v16, v8, fa0
7649 ; CHECK-NEXT: vmfgt.vf v17, v8, fa0
7650 ; CHECK-NEXT: vmor.mm v0, v17, v16
7652 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7653 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7654 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
7655 ret <vscale x 8 x i1> %1
7658 define <vscale x 8 x i1> @fcmps_one_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7659 ; CHECK-LABEL: fcmps_one_fv_nxv8f64:
7661 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7662 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0
7663 ; CHECK-NEXT: vmflt.vf v17, v8, fa0
7664 ; CHECK-NEXT: vmor.mm v0, v17, v16
7666 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7667 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7668 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
7669 ret <vscale x 8 x i1> %1
7672 define <vscale x 8 x i1> @fcmps_ord_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
7673 ; CHECK-LABEL: fcmps_ord_vv_nxv8f64:
7675 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7676 ; CHECK-NEXT: vmfle.vv v24, v16, v16
7677 ; CHECK-NEXT: vmfle.vv v16, v8, v8
7678 ; CHECK-NEXT: vmand.mm v0, v16, v24
7680 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
7681 ret <vscale x 8 x i1> %1
7684 define <vscale x 8 x i1> @fcmps_ord_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7685 ; CHECK-LABEL: fcmps_ord_vf_nxv8f64:
7687 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7688 ; CHECK-NEXT: vfmv.v.f v16, fa0
7689 ; CHECK-NEXT: vmfle.vf v24, v16, fa0
7690 ; CHECK-NEXT: vmfle.vv v16, v8, v8
7691 ; CHECK-NEXT: vmand.mm v0, v16, v24
7693 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7694 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7695 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
7696 ret <vscale x 8 x i1> %1
7699 define <vscale x 8 x i1> @fcmps_ord_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7700 ; CHECK-LABEL: fcmps_ord_fv_nxv8f64:
7702 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7703 ; CHECK-NEXT: vfmv.v.f v16, fa0
7704 ; CHECK-NEXT: vmfle.vf v24, v16, fa0
7705 ; CHECK-NEXT: vmfle.vv v16, v8, v8
7706 ; CHECK-NEXT: vmand.mm v0, v24, v16
7708 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7709 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7710 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
7711 ret <vscale x 8 x i1> %1
7714 define <vscale x 8 x i1> @fcmps_ueq_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
7715 ; CHECK-LABEL: fcmps_ueq_vv_nxv8f64:
7717 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7718 ; CHECK-NEXT: vmflt.vv v24, v8, v16
7719 ; CHECK-NEXT: vmflt.vv v25, v16, v8
7720 ; CHECK-NEXT: vmnor.mm v0, v25, v24
7722 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
7723 ret <vscale x 8 x i1> %1
7726 define <vscale x 8 x i1> @fcmps_ueq_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7727 ; CHECK-LABEL: fcmps_ueq_vf_nxv8f64:
7729 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7730 ; CHECK-NEXT: vmflt.vf v16, v8, fa0
7731 ; CHECK-NEXT: vmfgt.vf v17, v8, fa0
7732 ; CHECK-NEXT: vmnor.mm v0, v17, v16
7734 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7735 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7736 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
7737 ret <vscale x 8 x i1> %1
7740 define <vscale x 8 x i1> @fcmps_ueq_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7741 ; CHECK-LABEL: fcmps_ueq_fv_nxv8f64:
7743 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7744 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0
7745 ; CHECK-NEXT: vmflt.vf v17, v8, fa0
7746 ; CHECK-NEXT: vmnor.mm v0, v17, v16
7748 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7749 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7750 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
7751 ret <vscale x 8 x i1> %1
7754 define <vscale x 8 x i1> @fcmps_ugt_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
7755 ; CHECK-LABEL: fcmps_ugt_vv_nxv8f64:
7757 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7758 ; CHECK-NEXT: vmfle.vv v24, v8, v16
7759 ; CHECK-NEXT: vmnot.m v0, v24
7761 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
7762 ret <vscale x 8 x i1> %1
7765 define <vscale x 8 x i1> @fcmps_ugt_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7766 ; CHECK-LABEL: fcmps_ugt_vf_nxv8f64:
7768 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7769 ; CHECK-NEXT: vmfle.vf v16, v8, fa0
7770 ; CHECK-NEXT: vmnot.m v0, v16
7772 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7773 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7774 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
7775 ret <vscale x 8 x i1> %1
7778 define <vscale x 8 x i1> @fcmps_ugt_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7779 ; CHECK-LABEL: fcmps_ugt_fv_nxv8f64:
7781 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7782 ; CHECK-NEXT: vmfge.vf v16, v8, fa0
7783 ; CHECK-NEXT: vmnot.m v0, v16
7785 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7786 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7787 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
7788 ret <vscale x 8 x i1> %1
7791 define <vscale x 8 x i1> @fcmps_uge_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
7792 ; CHECK-LABEL: fcmps_uge_vv_nxv8f64:
7794 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7795 ; CHECK-NEXT: vmflt.vv v24, v8, v16
7796 ; CHECK-NEXT: vmnot.m v0, v24
7798 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
7799 ret <vscale x 8 x i1> %1
7802 define <vscale x 8 x i1> @fcmps_uge_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7803 ; CHECK-LABEL: fcmps_uge_vf_nxv8f64:
7805 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7806 ; CHECK-NEXT: vmflt.vf v16, v8, fa0
7807 ; CHECK-NEXT: vmnot.m v0, v16
7809 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7810 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7811 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
7812 ret <vscale x 8 x i1> %1
7815 define <vscale x 8 x i1> @fcmps_uge_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7816 ; CHECK-LABEL: fcmps_uge_fv_nxv8f64:
7818 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7819 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0
7820 ; CHECK-NEXT: vmnot.m v0, v16
7822 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7823 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7824 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
7825 ret <vscale x 8 x i1> %1
7828 define <vscale x 8 x i1> @fcmps_ult_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
7829 ; CHECK-LABEL: fcmps_ult_vv_nxv8f64:
7831 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7832 ; CHECK-NEXT: vmfle.vv v24, v16, v8
7833 ; CHECK-NEXT: vmnot.m v0, v24
7835 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
7836 ret <vscale x 8 x i1> %1
7839 define <vscale x 8 x i1> @fcmps_ult_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7840 ; CHECK-LABEL: fcmps_ult_vf_nxv8f64:
7842 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7843 ; CHECK-NEXT: vmfge.vf v16, v8, fa0
7844 ; CHECK-NEXT: vmnot.m v0, v16
7846 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7847 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7848 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
7849 ret <vscale x 8 x i1> %1
7852 define <vscale x 8 x i1> @fcmps_ult_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7853 ; CHECK-LABEL: fcmps_ult_fv_nxv8f64:
7855 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7856 ; CHECK-NEXT: vmfle.vf v16, v8, fa0
7857 ; CHECK-NEXT: vmnot.m v0, v16
7859 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7860 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7861 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
7862 ret <vscale x 8 x i1> %1
7865 define <vscale x 8 x i1> @fcmps_ule_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
7866 ; CHECK-LABEL: fcmps_ule_vv_nxv8f64:
7868 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7869 ; CHECK-NEXT: vmflt.vv v24, v16, v8
7870 ; CHECK-NEXT: vmnot.m v0, v24
7872 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
7873 ret <vscale x 8 x i1> %1
7876 define <vscale x 8 x i1> @fcmps_ule_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7877 ; CHECK-LABEL: fcmps_ule_vf_nxv8f64:
7879 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7880 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0
7881 ; CHECK-NEXT: vmnot.m v0, v16
7883 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7884 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7885 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
7886 ret <vscale x 8 x i1> %1
7889 define <vscale x 8 x i1> @fcmps_ule_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7890 ; CHECK-LABEL: fcmps_ule_fv_nxv8f64:
7892 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7893 ; CHECK-NEXT: vmflt.vf v16, v8, fa0
7894 ; CHECK-NEXT: vmnot.m v0, v16
7896 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7897 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7898 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
7899 ret <vscale x 8 x i1> %1
7902 define <vscale x 8 x i1> @fcmps_une_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
7903 ; CHECK-LABEL: fcmps_une_vv_nxv8f64:
7905 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7906 ; CHECK-NEXT: vmfle.vv v24, v16, v8
7907 ; CHECK-NEXT: vmfle.vv v25, v8, v16
7908 ; CHECK-NEXT: vmnand.mm v0, v25, v24
7910 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
7911 ret <vscale x 8 x i1> %1
7914 define <vscale x 8 x i1> @fcmps_une_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7915 ; CHECK-LABEL: fcmps_une_vf_nxv8f64:
7917 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7918 ; CHECK-NEXT: vmfge.vf v16, v8, fa0
7919 ; CHECK-NEXT: vmfle.vf v17, v8, fa0
7920 ; CHECK-NEXT: vmnand.mm v0, v17, v16
7922 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7923 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7924 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
7925 ret <vscale x 8 x i1> %1
7928 define <vscale x 8 x i1> @fcmps_une_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7929 ; CHECK-LABEL: fcmps_une_fv_nxv8f64:
7931 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7932 ; CHECK-NEXT: vmfle.vf v16, v8, fa0
7933 ; CHECK-NEXT: vmfge.vf v17, v8, fa0
7934 ; CHECK-NEXT: vmnand.mm v0, v17, v16
7936 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7937 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7938 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
7939 ret <vscale x 8 x i1> %1
7942 define <vscale x 8 x i1> @fcmps_uno_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
7943 ; CHECK-LABEL: fcmps_uno_vv_nxv8f64:
7945 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7946 ; CHECK-NEXT: vmfle.vv v24, v16, v16
7947 ; CHECK-NEXT: vmfle.vv v16, v8, v8
7948 ; CHECK-NEXT: vmnot.m v8, v16
7949 ; CHECK-NEXT: vmorn.mm v0, v8, v24
7951 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
7952 ret <vscale x 8 x i1> %1
7955 define <vscale x 8 x i1> @fcmps_uno_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7956 ; CHECK-LABEL: fcmps_uno_vf_nxv8f64:
7958 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7959 ; CHECK-NEXT: vfmv.v.f v16, fa0
7960 ; CHECK-NEXT: vmfle.vf v24, v16, fa0
7961 ; CHECK-NEXT: vmfle.vv v16, v8, v8
7962 ; CHECK-NEXT: vmnot.m v8, v16
7963 ; CHECK-NEXT: vmorn.mm v0, v8, v24
7965 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7966 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7967 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
7968 ret <vscale x 8 x i1> %1
7971 define <vscale x 8 x i1> @fcmps_uno_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
7972 ; CHECK-LABEL: fcmps_uno_fv_nxv8f64:
7974 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
7975 ; CHECK-NEXT: vfmv.v.f v16, fa0
7976 ; CHECK-NEXT: vmfle.vf v24, v16, fa0
7977 ; CHECK-NEXT: vmnot.m v16, v24
7978 ; CHECK-NEXT: vmfle.vv v17, v8, v8
7979 ; CHECK-NEXT: vmorn.mm v0, v16, v17
7981 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
7982 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
7983 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
7984 ret <vscale x 8 x i1> %1