Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vfcmps-constrained-sdnode.ll
blob9a10359228e55da0588f6c05029a672e420ae791
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:
10 ; CHECK:       # %bb.0:
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
15 ; CHECK-NEXT:    ret
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:
22 ; CHECK:       # %bb.0:
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
27 ; CHECK-NEXT:    ret
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:
36 ; CHECK:       # %bb.0:
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
41 ; CHECK-NEXT:    ret
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:
50 ; CHECK:       # %bb.0:
51 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma
52 ; CHECK-NEXT:    vmflt.vv v0, v9, v8
53 ; CHECK-NEXT:    ret
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:
60 ; CHECK:       # %bb.0:
61 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma
62 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
63 ; CHECK-NEXT:    ret
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:
72 ; CHECK:       # %bb.0:
73 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma
74 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
75 ; CHECK-NEXT:    ret
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:
84 ; CHECK:       # %bb.0:
85 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma
86 ; CHECK-NEXT:    vmfle.vv v0, v9, v8
87 ; CHECK-NEXT:    ret
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:
94 ; CHECK:       # %bb.0:
95 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma
96 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
97 ; CHECK-NEXT:    ret
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:
106 ; CHECK:       # %bb.0:
107 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma
108 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
109 ; CHECK-NEXT:    ret
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:
118 ; CHECK:       # %bb.0:
119 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma
120 ; CHECK-NEXT:    vmflt.vv v0, v8, v9
121 ; CHECK-NEXT:    ret
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:
128 ; CHECK:       # %bb.0:
129 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma
130 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
131 ; CHECK-NEXT:    ret
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:
140 ; CHECK:       # %bb.0:
141 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma
142 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
143 ; CHECK-NEXT:    ret
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:
152 ; CHECK:       # %bb.0:
153 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma
154 ; CHECK-NEXT:    vmfle.vv v0, v8, v9
155 ; CHECK-NEXT:    ret
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:
162 ; CHECK:       # %bb.0:
163 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma
164 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
165 ; CHECK-NEXT:    ret
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:
174 ; CHECK:       # %bb.0:
175 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma
176 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
177 ; CHECK-NEXT:    ret
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:
186 ; CHECK:       # %bb.0:
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
191 ; CHECK-NEXT:    ret
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:
198 ; CHECK:       # %bb.0:
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
203 ; CHECK-NEXT:    ret
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:
212 ; CHECK:       # %bb.0:
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
217 ; CHECK-NEXT:    ret
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:
226 ; CHECK:       # %bb.0:
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
231 ; CHECK-NEXT:    ret
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:
238 ; CHECK:       # %bb.0:
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
244 ; CHECK-NEXT:    ret
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:
253 ; CHECK:       # %bb.0:
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
259 ; CHECK-NEXT:    ret
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:
268 ; CHECK:       # %bb.0:
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
273 ; CHECK-NEXT:    ret
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:
280 ; CHECK:       # %bb.0:
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
285 ; CHECK-NEXT:    ret
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:
294 ; CHECK:       # %bb.0:
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
299 ; CHECK-NEXT:    ret
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:
308 ; CHECK:       # %bb.0:
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
312 ; CHECK-NEXT:    ret
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:
319 ; CHECK:       # %bb.0:
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
323 ; CHECK-NEXT:    ret
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:
332 ; CHECK:       # %bb.0:
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
336 ; CHECK-NEXT:    ret
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:
345 ; CHECK:       # %bb.0:
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
349 ; CHECK-NEXT:    ret
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:
356 ; CHECK:       # %bb.0:
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
360 ; CHECK-NEXT:    ret
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:
369 ; CHECK:       # %bb.0:
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
373 ; CHECK-NEXT:    ret
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:
382 ; CHECK:       # %bb.0:
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
386 ; CHECK-NEXT:    ret
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:
393 ; CHECK:       # %bb.0:
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
397 ; CHECK-NEXT:    ret
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:
406 ; CHECK:       # %bb.0:
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
410 ; CHECK-NEXT:    ret
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:
419 ; CHECK:       # %bb.0:
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
423 ; CHECK-NEXT:    ret
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:
430 ; CHECK:       # %bb.0:
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
434 ; CHECK-NEXT:    ret
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:
443 ; CHECK:       # %bb.0:
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
447 ; CHECK-NEXT:    ret
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:
456 ; CHECK:       # %bb.0:
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
461 ; CHECK-NEXT:    ret
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:
468 ; CHECK:       # %bb.0:
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
473 ; CHECK-NEXT:    ret
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:
482 ; CHECK:       # %bb.0:
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
487 ; CHECK-NEXT:    ret
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:
496 ; CHECK:       # %bb.0:
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
502 ; CHECK-NEXT:    ret
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:
509 ; CHECK:       # %bb.0:
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
516 ; CHECK-NEXT:    ret
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:
525 ; CHECK:       # %bb.0:
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
532 ; CHECK-NEXT:    ret
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:
542 ; CHECK:       # %bb.0:
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
547 ; CHECK-NEXT:    ret
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:
554 ; CHECK:       # %bb.0:
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
559 ; CHECK-NEXT:    ret
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:
568 ; CHECK:       # %bb.0:
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
573 ; CHECK-NEXT:    ret
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:
582 ; CHECK:       # %bb.0:
583 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma
584 ; CHECK-NEXT:    vmflt.vv v0, v9, v8
585 ; CHECK-NEXT:    ret
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:
592 ; CHECK:       # %bb.0:
593 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma
594 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
595 ; CHECK-NEXT:    ret
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:
604 ; CHECK:       # %bb.0:
605 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma
606 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
607 ; CHECK-NEXT:    ret
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:
616 ; CHECK:       # %bb.0:
617 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma
618 ; CHECK-NEXT:    vmfle.vv v0, v9, v8
619 ; CHECK-NEXT:    ret
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:
626 ; CHECK:       # %bb.0:
627 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma
628 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
629 ; CHECK-NEXT:    ret
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:
638 ; CHECK:       # %bb.0:
639 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma
640 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
641 ; CHECK-NEXT:    ret
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:
650 ; CHECK:       # %bb.0:
651 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma
652 ; CHECK-NEXT:    vmflt.vv v0, v8, v9
653 ; CHECK-NEXT:    ret
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:
660 ; CHECK:       # %bb.0:
661 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma
662 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
663 ; CHECK-NEXT:    ret
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:
672 ; CHECK:       # %bb.0:
673 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma
674 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
675 ; CHECK-NEXT:    ret
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:
684 ; CHECK:       # %bb.0:
685 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma
686 ; CHECK-NEXT:    vmfle.vv v0, v8, v9
687 ; CHECK-NEXT:    ret
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:
694 ; CHECK:       # %bb.0:
695 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma
696 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
697 ; CHECK-NEXT:    ret
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:
706 ; CHECK:       # %bb.0:
707 ; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma
708 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
709 ; CHECK-NEXT:    ret
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:
718 ; CHECK:       # %bb.0:
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
723 ; CHECK-NEXT:    ret
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:
730 ; CHECK:       # %bb.0:
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
735 ; CHECK-NEXT:    ret
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:
744 ; CHECK:       # %bb.0:
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
749 ; CHECK-NEXT:    ret
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:
758 ; CHECK:       # %bb.0:
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
763 ; CHECK-NEXT:    ret
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:
770 ; CHECK:       # %bb.0:
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
776 ; CHECK-NEXT:    ret
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:
785 ; CHECK:       # %bb.0:
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
791 ; CHECK-NEXT:    ret
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:
800 ; CHECK:       # %bb.0:
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
805 ; CHECK-NEXT:    ret
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:
812 ; CHECK:       # %bb.0:
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
817 ; CHECK-NEXT:    ret
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:
826 ; CHECK:       # %bb.0:
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
831 ; CHECK-NEXT:    ret
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:
840 ; CHECK:       # %bb.0:
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
844 ; CHECK-NEXT:    ret
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:
851 ; CHECK:       # %bb.0:
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
855 ; CHECK-NEXT:    ret
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:
864 ; CHECK:       # %bb.0:
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
868 ; CHECK-NEXT:    ret
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:
877 ; CHECK:       # %bb.0:
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
881 ; CHECK-NEXT:    ret
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:
888 ; CHECK:       # %bb.0:
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
892 ; CHECK-NEXT:    ret
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:
901 ; CHECK:       # %bb.0:
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
905 ; CHECK-NEXT:    ret
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:
914 ; CHECK:       # %bb.0:
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
918 ; CHECK-NEXT:    ret
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:
925 ; CHECK:       # %bb.0:
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
929 ; CHECK-NEXT:    ret
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:
938 ; CHECK:       # %bb.0:
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
942 ; CHECK-NEXT:    ret
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:
951 ; CHECK:       # %bb.0:
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
955 ; CHECK-NEXT:    ret
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:
962 ; CHECK:       # %bb.0:
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
966 ; CHECK-NEXT:    ret
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:
975 ; CHECK:       # %bb.0:
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
979 ; CHECK-NEXT:    ret
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:
988 ; CHECK:       # %bb.0:
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
993 ; CHECK-NEXT:    ret
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:
1000 ; CHECK:       # %bb.0:
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
1005 ; CHECK-NEXT:    ret
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:
1014 ; CHECK:       # %bb.0:
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
1019 ; CHECK-NEXT:    ret
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:
1028 ; CHECK:       # %bb.0:
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
1034 ; CHECK-NEXT:    ret
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:
1041 ; CHECK:       # %bb.0:
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
1048 ; CHECK-NEXT:    ret
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:
1057 ; CHECK:       # %bb.0:
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
1064 ; CHECK-NEXT:    ret
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:
1074 ; CHECK:       # %bb.0:
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
1079 ; CHECK-NEXT:    ret
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:
1086 ; CHECK:       # %bb.0:
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
1091 ; CHECK-NEXT:    ret
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:
1100 ; CHECK:       # %bb.0:
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
1105 ; CHECK-NEXT:    ret
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:
1114 ; CHECK:       # %bb.0:
1115 ; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma
1116 ; CHECK-NEXT:    vmflt.vv v0, v9, v8
1117 ; CHECK-NEXT:    ret
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:
1124 ; CHECK:       # %bb.0:
1125 ; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma
1126 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
1127 ; CHECK-NEXT:    ret
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:
1136 ; CHECK:       # %bb.0:
1137 ; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma
1138 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
1139 ; CHECK-NEXT:    ret
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:
1148 ; CHECK:       # %bb.0:
1149 ; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma
1150 ; CHECK-NEXT:    vmfle.vv v0, v9, v8
1151 ; CHECK-NEXT:    ret
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:
1158 ; CHECK:       # %bb.0:
1159 ; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma
1160 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
1161 ; CHECK-NEXT:    ret
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:
1170 ; CHECK:       # %bb.0:
1171 ; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma
1172 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
1173 ; CHECK-NEXT:    ret
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:
1182 ; CHECK:       # %bb.0:
1183 ; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma
1184 ; CHECK-NEXT:    vmflt.vv v0, v8, v9
1185 ; CHECK-NEXT:    ret
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:
1192 ; CHECK:       # %bb.0:
1193 ; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma
1194 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
1195 ; CHECK-NEXT:    ret
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:
1204 ; CHECK:       # %bb.0:
1205 ; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma
1206 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
1207 ; CHECK-NEXT:    ret
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:
1216 ; CHECK:       # %bb.0:
1217 ; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma
1218 ; CHECK-NEXT:    vmfle.vv v0, v8, v9
1219 ; CHECK-NEXT:    ret
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:
1226 ; CHECK:       # %bb.0:
1227 ; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma
1228 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
1229 ; CHECK-NEXT:    ret
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:
1238 ; CHECK:       # %bb.0:
1239 ; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma
1240 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
1241 ; CHECK-NEXT:    ret
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:
1250 ; CHECK:       # %bb.0:
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
1255 ; CHECK-NEXT:    ret
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:
1262 ; CHECK:       # %bb.0:
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
1267 ; CHECK-NEXT:    ret
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:
1276 ; CHECK:       # %bb.0:
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
1281 ; CHECK-NEXT:    ret
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:
1290 ; CHECK:       # %bb.0:
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
1295 ; CHECK-NEXT:    ret
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:
1302 ; CHECK:       # %bb.0:
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
1308 ; CHECK-NEXT:    ret
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:
1317 ; CHECK:       # %bb.0:
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
1323 ; CHECK-NEXT:    ret
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:
1332 ; CHECK:       # %bb.0:
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
1337 ; CHECK-NEXT:    ret
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:
1344 ; CHECK:       # %bb.0:
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
1349 ; CHECK-NEXT:    ret
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:
1358 ; CHECK:       # %bb.0:
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
1363 ; CHECK-NEXT:    ret
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:
1372 ; CHECK:       # %bb.0:
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
1376 ; CHECK-NEXT:    ret
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:
1383 ; CHECK:       # %bb.0:
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
1387 ; CHECK-NEXT:    ret
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:
1396 ; CHECK:       # %bb.0:
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
1400 ; CHECK-NEXT:    ret
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:
1409 ; CHECK:       # %bb.0:
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
1413 ; CHECK-NEXT:    ret
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:
1420 ; CHECK:       # %bb.0:
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
1424 ; CHECK-NEXT:    ret
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:
1433 ; CHECK:       # %bb.0:
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
1437 ; CHECK-NEXT:    ret
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:
1446 ; CHECK:       # %bb.0:
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
1450 ; CHECK-NEXT:    ret
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:
1457 ; CHECK:       # %bb.0:
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
1461 ; CHECK-NEXT:    ret
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:
1470 ; CHECK:       # %bb.0:
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
1474 ; CHECK-NEXT:    ret
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:
1483 ; CHECK:       # %bb.0:
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
1487 ; CHECK-NEXT:    ret
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:
1494 ; CHECK:       # %bb.0:
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
1498 ; CHECK-NEXT:    ret
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:
1507 ; CHECK:       # %bb.0:
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
1511 ; CHECK-NEXT:    ret
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:
1520 ; CHECK:       # %bb.0:
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
1525 ; CHECK-NEXT:    ret
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:
1532 ; CHECK:       # %bb.0:
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
1537 ; CHECK-NEXT:    ret
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:
1546 ; CHECK:       # %bb.0:
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
1551 ; CHECK-NEXT:    ret
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:
1560 ; CHECK:       # %bb.0:
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
1566 ; CHECK-NEXT:    ret
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:
1573 ; CHECK:       # %bb.0:
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
1580 ; CHECK-NEXT:    ret
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:
1589 ; CHECK:       # %bb.0:
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
1596 ; CHECK-NEXT:    ret
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:
1606 ; CHECK:       # %bb.0:
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
1611 ; CHECK-NEXT:    ret
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:
1618 ; CHECK:       # %bb.0:
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
1623 ; CHECK-NEXT:    ret
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:
1632 ; CHECK:       # %bb.0:
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
1637 ; CHECK-NEXT:    ret
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:
1646 ; CHECK:       # %bb.0:
1647 ; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma
1648 ; CHECK-NEXT:    vmflt.vv v0, v10, v8
1649 ; CHECK-NEXT:    ret
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:
1656 ; CHECK:       # %bb.0:
1657 ; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma
1658 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
1659 ; CHECK-NEXT:    ret
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:
1668 ; CHECK:       # %bb.0:
1669 ; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma
1670 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
1671 ; CHECK-NEXT:    ret
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:
1680 ; CHECK:       # %bb.0:
1681 ; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma
1682 ; CHECK-NEXT:    vmfle.vv v0, v10, v8
1683 ; CHECK-NEXT:    ret
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:
1690 ; CHECK:       # %bb.0:
1691 ; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma
1692 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
1693 ; CHECK-NEXT:    ret
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:
1702 ; CHECK:       # %bb.0:
1703 ; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma
1704 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
1705 ; CHECK-NEXT:    ret
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:
1714 ; CHECK:       # %bb.0:
1715 ; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma
1716 ; CHECK-NEXT:    vmflt.vv v0, v8, v10
1717 ; CHECK-NEXT:    ret
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:
1724 ; CHECK:       # %bb.0:
1725 ; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma
1726 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
1727 ; CHECK-NEXT:    ret
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:
1736 ; CHECK:       # %bb.0:
1737 ; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma
1738 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
1739 ; CHECK-NEXT:    ret
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:
1748 ; CHECK:       # %bb.0:
1749 ; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma
1750 ; CHECK-NEXT:    vmfle.vv v0, v8, v10
1751 ; CHECK-NEXT:    ret
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:
1758 ; CHECK:       # %bb.0:
1759 ; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma
1760 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
1761 ; CHECK-NEXT:    ret
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:
1770 ; CHECK:       # %bb.0:
1771 ; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma
1772 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
1773 ; CHECK-NEXT:    ret
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:
1782 ; CHECK:       # %bb.0:
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
1787 ; CHECK-NEXT:    ret
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:
1794 ; CHECK:       # %bb.0:
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
1799 ; CHECK-NEXT:    ret
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:
1808 ; CHECK:       # %bb.0:
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
1813 ; CHECK-NEXT:    ret
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:
1822 ; CHECK:       # %bb.0:
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
1827 ; CHECK-NEXT:    ret
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:
1834 ; CHECK:       # %bb.0:
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
1840 ; CHECK-NEXT:    ret
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:
1849 ; CHECK:       # %bb.0:
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
1855 ; CHECK-NEXT:    ret
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:
1864 ; CHECK:       # %bb.0:
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
1869 ; CHECK-NEXT:    ret
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:
1876 ; CHECK:       # %bb.0:
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
1881 ; CHECK-NEXT:    ret
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:
1890 ; CHECK:       # %bb.0:
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
1895 ; CHECK-NEXT:    ret
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:
1904 ; CHECK:       # %bb.0:
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
1908 ; CHECK-NEXT:    ret
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:
1915 ; CHECK:       # %bb.0:
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
1919 ; CHECK-NEXT:    ret
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:
1928 ; CHECK:       # %bb.0:
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
1932 ; CHECK-NEXT:    ret
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:
1941 ; CHECK:       # %bb.0:
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
1945 ; CHECK-NEXT:    ret
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:
1952 ; CHECK:       # %bb.0:
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
1956 ; CHECK-NEXT:    ret
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:
1965 ; CHECK:       # %bb.0:
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
1969 ; CHECK-NEXT:    ret
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:
1978 ; CHECK:       # %bb.0:
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
1982 ; CHECK-NEXT:    ret
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:
1989 ; CHECK:       # %bb.0:
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
1993 ; CHECK-NEXT:    ret
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:
2002 ; CHECK:       # %bb.0:
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
2006 ; CHECK-NEXT:    ret
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:
2015 ; CHECK:       # %bb.0:
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
2019 ; CHECK-NEXT:    ret
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:
2026 ; CHECK:       # %bb.0:
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
2030 ; CHECK-NEXT:    ret
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:
2039 ; CHECK:       # %bb.0:
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
2043 ; CHECK-NEXT:    ret
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:
2052 ; CHECK:       # %bb.0:
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
2057 ; CHECK-NEXT:    ret
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:
2064 ; CHECK:       # %bb.0:
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
2069 ; CHECK-NEXT:    ret
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:
2078 ; CHECK:       # %bb.0:
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
2083 ; CHECK-NEXT:    ret
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:
2092 ; CHECK:       # %bb.0:
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
2098 ; CHECK-NEXT:    ret
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:
2105 ; CHECK:       # %bb.0:
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
2112 ; CHECK-NEXT:    ret
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:
2121 ; CHECK:       # %bb.0:
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
2128 ; CHECK-NEXT:    ret
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:
2138 ; CHECK:       # %bb.0:
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
2143 ; CHECK-NEXT:    ret
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:
2150 ; CHECK:       # %bb.0:
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
2155 ; CHECK-NEXT:    ret
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:
2164 ; CHECK:       # %bb.0:
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
2169 ; CHECK-NEXT:    ret
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:
2178 ; CHECK:       # %bb.0:
2179 ; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma
2180 ; CHECK-NEXT:    vmflt.vv v0, v12, v8
2181 ; CHECK-NEXT:    ret
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:
2188 ; CHECK:       # %bb.0:
2189 ; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma
2190 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
2191 ; CHECK-NEXT:    ret
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:
2200 ; CHECK:       # %bb.0:
2201 ; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma
2202 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
2203 ; CHECK-NEXT:    ret
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:
2212 ; CHECK:       # %bb.0:
2213 ; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma
2214 ; CHECK-NEXT:    vmfle.vv v0, v12, v8
2215 ; CHECK-NEXT:    ret
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:
2222 ; CHECK:       # %bb.0:
2223 ; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma
2224 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
2225 ; CHECK-NEXT:    ret
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:
2234 ; CHECK:       # %bb.0:
2235 ; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma
2236 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
2237 ; CHECK-NEXT:    ret
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:
2246 ; CHECK:       # %bb.0:
2247 ; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma
2248 ; CHECK-NEXT:    vmflt.vv v0, v8, v12
2249 ; CHECK-NEXT:    ret
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:
2256 ; CHECK:       # %bb.0:
2257 ; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma
2258 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
2259 ; CHECK-NEXT:    ret
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:
2268 ; CHECK:       # %bb.0:
2269 ; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma
2270 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
2271 ; CHECK-NEXT:    ret
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:
2280 ; CHECK:       # %bb.0:
2281 ; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma
2282 ; CHECK-NEXT:    vmfle.vv v0, v8, v12
2283 ; CHECK-NEXT:    ret
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:
2290 ; CHECK:       # %bb.0:
2291 ; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma
2292 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
2293 ; CHECK-NEXT:    ret
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:
2302 ; CHECK:       # %bb.0:
2303 ; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma
2304 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
2305 ; CHECK-NEXT:    ret
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:
2314 ; CHECK:       # %bb.0:
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
2319 ; CHECK-NEXT:    ret
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:
2326 ; CHECK:       # %bb.0:
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
2331 ; CHECK-NEXT:    ret
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:
2340 ; CHECK:       # %bb.0:
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
2345 ; CHECK-NEXT:    ret
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:
2354 ; CHECK:       # %bb.0:
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
2359 ; CHECK-NEXT:    ret
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:
2366 ; CHECK:       # %bb.0:
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
2372 ; CHECK-NEXT:    ret
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:
2381 ; CHECK:       # %bb.0:
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
2387 ; CHECK-NEXT:    ret
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:
2396 ; CHECK:       # %bb.0:
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
2401 ; CHECK-NEXT:    ret
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:
2408 ; CHECK:       # %bb.0:
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
2413 ; CHECK-NEXT:    ret
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:
2422 ; CHECK:       # %bb.0:
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
2427 ; CHECK-NEXT:    ret
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:
2436 ; CHECK:       # %bb.0:
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
2440 ; CHECK-NEXT:    ret
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:
2447 ; CHECK:       # %bb.0:
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
2451 ; CHECK-NEXT:    ret
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:
2460 ; CHECK:       # %bb.0:
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
2464 ; CHECK-NEXT:    ret
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:
2473 ; CHECK:       # %bb.0:
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
2477 ; CHECK-NEXT:    ret
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:
2484 ; CHECK:       # %bb.0:
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
2488 ; CHECK-NEXT:    ret
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:
2497 ; CHECK:       # %bb.0:
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
2501 ; CHECK-NEXT:    ret
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:
2510 ; CHECK:       # %bb.0:
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
2514 ; CHECK-NEXT:    ret
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:
2521 ; CHECK:       # %bb.0:
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
2525 ; CHECK-NEXT:    ret
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:
2534 ; CHECK:       # %bb.0:
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
2538 ; CHECK-NEXT:    ret
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:
2547 ; CHECK:       # %bb.0:
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
2551 ; CHECK-NEXT:    ret
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:
2558 ; CHECK:       # %bb.0:
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
2562 ; CHECK-NEXT:    ret
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:
2571 ; CHECK:       # %bb.0:
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
2575 ; CHECK-NEXT:    ret
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:
2584 ; CHECK:       # %bb.0:
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
2589 ; CHECK-NEXT:    ret
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:
2596 ; CHECK:       # %bb.0:
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
2601 ; CHECK-NEXT:    ret
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:
2610 ; CHECK:       # %bb.0:
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
2615 ; CHECK-NEXT:    ret
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:
2624 ; CHECK:       # %bb.0:
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
2630 ; CHECK-NEXT:    ret
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:
2637 ; CHECK:       # %bb.0:
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
2644 ; CHECK-NEXT:    ret
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:
2653 ; CHECK:       # %bb.0:
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
2660 ; CHECK-NEXT:    ret
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:
2670 ; CHECK:       # %bb.0:
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
2675 ; CHECK-NEXT:    ret
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:
2682 ; CHECK:       # %bb.0:
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
2687 ; CHECK-NEXT:    ret
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:
2696 ; CHECK:       # %bb.0:
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
2701 ; CHECK-NEXT:    ret
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:
2710 ; CHECK:       # %bb.0:
2711 ; CHECK-NEXT:    vsetvli a0, zero, e16, m8, ta, ma
2712 ; CHECK-NEXT:    vmflt.vv v0, v16, v8
2713 ; CHECK-NEXT:    ret
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:
2720 ; CHECK:       # %bb.0:
2721 ; CHECK-NEXT:    vsetvli a0, zero, e16, m8, ta, ma
2722 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
2723 ; CHECK-NEXT:    ret
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:
2732 ; CHECK:       # %bb.0:
2733 ; CHECK-NEXT:    vsetvli a0, zero, e16, m8, ta, ma
2734 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
2735 ; CHECK-NEXT:    ret
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:
2744 ; CHECK:       # %bb.0:
2745 ; CHECK-NEXT:    vsetvli a0, zero, e16, m8, ta, ma
2746 ; CHECK-NEXT:    vmfle.vv v0, v16, v8
2747 ; CHECK-NEXT:    ret
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:
2754 ; CHECK:       # %bb.0:
2755 ; CHECK-NEXT:    vsetvli a0, zero, e16, m8, ta, ma
2756 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
2757 ; CHECK-NEXT:    ret
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:
2766 ; CHECK:       # %bb.0:
2767 ; CHECK-NEXT:    vsetvli a0, zero, e16, m8, ta, ma
2768 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
2769 ; CHECK-NEXT:    ret
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:
2778 ; CHECK:       # %bb.0:
2779 ; CHECK-NEXT:    vsetvli a0, zero, e16, m8, ta, ma
2780 ; CHECK-NEXT:    vmflt.vv v0, v8, v16
2781 ; CHECK-NEXT:    ret
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:
2788 ; CHECK:       # %bb.0:
2789 ; CHECK-NEXT:    vsetvli a0, zero, e16, m8, ta, ma
2790 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
2791 ; CHECK-NEXT:    ret
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:
2800 ; CHECK:       # %bb.0:
2801 ; CHECK-NEXT:    vsetvli a0, zero, e16, m8, ta, ma
2802 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
2803 ; CHECK-NEXT:    ret
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:
2812 ; CHECK:       # %bb.0:
2813 ; CHECK-NEXT:    vsetvli a0, zero, e16, m8, ta, ma
2814 ; CHECK-NEXT:    vmfle.vv v0, v8, v16
2815 ; CHECK-NEXT:    ret
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:
2822 ; CHECK:       # %bb.0:
2823 ; CHECK-NEXT:    vsetvli a0, zero, e16, m8, ta, ma
2824 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
2825 ; CHECK-NEXT:    ret
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:
2834 ; CHECK:       # %bb.0:
2835 ; CHECK-NEXT:    vsetvli a0, zero, e16, m8, ta, ma
2836 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
2837 ; CHECK-NEXT:    ret
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:
2846 ; CHECK:       # %bb.0:
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
2851 ; CHECK-NEXT:    ret
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:
2858 ; CHECK:       # %bb.0:
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
2863 ; CHECK-NEXT:    ret
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:
2872 ; CHECK:       # %bb.0:
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
2877 ; CHECK-NEXT:    ret
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:
2886 ; CHECK:       # %bb.0:
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
2891 ; CHECK-NEXT:    ret
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:
2898 ; CHECK:       # %bb.0:
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
2904 ; CHECK-NEXT:    ret
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:
2913 ; CHECK:       # %bb.0:
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
2919 ; CHECK-NEXT:    ret
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:
2928 ; CHECK:       # %bb.0:
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
2933 ; CHECK-NEXT:    ret
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:
2940 ; CHECK:       # %bb.0:
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
2945 ; CHECK-NEXT:    ret
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:
2954 ; CHECK:       # %bb.0:
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
2959 ; CHECK-NEXT:    ret
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:
2968 ; CHECK:       # %bb.0:
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
2972 ; CHECK-NEXT:    ret
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:
2979 ; CHECK:       # %bb.0:
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
2983 ; CHECK-NEXT:    ret
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:
2992 ; CHECK:       # %bb.0:
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
2996 ; CHECK-NEXT:    ret
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:
3005 ; CHECK:       # %bb.0:
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
3009 ; CHECK-NEXT:    ret
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:
3016 ; CHECK:       # %bb.0:
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
3020 ; CHECK-NEXT:    ret
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:
3029 ; CHECK:       # %bb.0:
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
3033 ; CHECK-NEXT:    ret
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:
3042 ; CHECK:       # %bb.0:
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
3046 ; CHECK-NEXT:    ret
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:
3053 ; CHECK:       # %bb.0:
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
3057 ; CHECK-NEXT:    ret
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:
3066 ; CHECK:       # %bb.0:
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
3070 ; CHECK-NEXT:    ret
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:
3079 ; CHECK:       # %bb.0:
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
3083 ; CHECK-NEXT:    ret
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:
3090 ; CHECK:       # %bb.0:
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
3094 ; CHECK-NEXT:    ret
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:
3103 ; CHECK:       # %bb.0:
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
3107 ; CHECK-NEXT:    ret
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:
3116 ; CHECK:       # %bb.0:
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
3121 ; CHECK-NEXT:    ret
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:
3128 ; CHECK:       # %bb.0:
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
3133 ; CHECK-NEXT:    ret
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:
3142 ; CHECK:       # %bb.0:
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
3147 ; CHECK-NEXT:    ret
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:
3156 ; CHECK:       # %bb.0:
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
3162 ; CHECK-NEXT:    ret
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:
3169 ; CHECK:       # %bb.0:
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
3176 ; CHECK-NEXT:    ret
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:
3185 ; CHECK:       # %bb.0:
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
3192 ; CHECK-NEXT:    ret
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:
3202 ; CHECK:       # %bb.0:
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
3207 ; CHECK-NEXT:    ret
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:
3214 ; CHECK:       # %bb.0:
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
3219 ; CHECK-NEXT:    ret
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:
3228 ; CHECK:       # %bb.0:
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
3233 ; CHECK-NEXT:    ret
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:
3242 ; CHECK:       # %bb.0:
3243 ; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
3244 ; CHECK-NEXT:    vmflt.vv v0, v9, v8
3245 ; CHECK-NEXT:    ret
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:
3252 ; CHECK:       # %bb.0:
3253 ; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
3254 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
3255 ; CHECK-NEXT:    ret
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:
3264 ; CHECK:       # %bb.0:
3265 ; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
3266 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
3267 ; CHECK-NEXT:    ret
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:
3276 ; CHECK:       # %bb.0:
3277 ; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
3278 ; CHECK-NEXT:    vmfle.vv v0, v9, v8
3279 ; CHECK-NEXT:    ret
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:
3286 ; CHECK:       # %bb.0:
3287 ; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
3288 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
3289 ; CHECK-NEXT:    ret
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:
3298 ; CHECK:       # %bb.0:
3299 ; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
3300 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
3301 ; CHECK-NEXT:    ret
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:
3310 ; CHECK:       # %bb.0:
3311 ; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
3312 ; CHECK-NEXT:    vmflt.vv v0, v8, v9
3313 ; CHECK-NEXT:    ret
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:
3320 ; CHECK:       # %bb.0:
3321 ; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
3322 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
3323 ; CHECK-NEXT:    ret
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:
3332 ; CHECK:       # %bb.0:
3333 ; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
3334 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
3335 ; CHECK-NEXT:    ret
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:
3344 ; CHECK:       # %bb.0:
3345 ; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
3346 ; CHECK-NEXT:    vmfle.vv v0, v8, v9
3347 ; CHECK-NEXT:    ret
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:
3354 ; CHECK:       # %bb.0:
3355 ; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
3356 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
3357 ; CHECK-NEXT:    ret
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:
3366 ; CHECK:       # %bb.0:
3367 ; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
3368 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
3369 ; CHECK-NEXT:    ret
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:
3378 ; CHECK:       # %bb.0:
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
3383 ; CHECK-NEXT:    ret
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:
3390 ; CHECK:       # %bb.0:
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
3395 ; CHECK-NEXT:    ret
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:
3404 ; CHECK:       # %bb.0:
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
3409 ; CHECK-NEXT:    ret
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:
3418 ; CHECK:       # %bb.0:
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
3423 ; CHECK-NEXT:    ret
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:
3430 ; CHECK:       # %bb.0:
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
3436 ; CHECK-NEXT:    ret
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:
3445 ; CHECK:       # %bb.0:
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
3451 ; CHECK-NEXT:    ret
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:
3460 ; CHECK:       # %bb.0:
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
3465 ; CHECK-NEXT:    ret
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:
3472 ; CHECK:       # %bb.0:
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
3477 ; CHECK-NEXT:    ret
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:
3486 ; CHECK:       # %bb.0:
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
3491 ; CHECK-NEXT:    ret
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:
3500 ; CHECK:       # %bb.0:
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
3504 ; CHECK-NEXT:    ret
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:
3511 ; CHECK:       # %bb.0:
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
3515 ; CHECK-NEXT:    ret
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:
3524 ; CHECK:       # %bb.0:
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
3528 ; CHECK-NEXT:    ret
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:
3537 ; CHECK:       # %bb.0:
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
3541 ; CHECK-NEXT:    ret
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:
3548 ; CHECK:       # %bb.0:
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
3552 ; CHECK-NEXT:    ret
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:
3561 ; CHECK:       # %bb.0:
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
3565 ; CHECK-NEXT:    ret
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:
3574 ; CHECK:       # %bb.0:
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
3578 ; CHECK-NEXT:    ret
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:
3585 ; CHECK:       # %bb.0:
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
3589 ; CHECK-NEXT:    ret
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:
3598 ; CHECK:       # %bb.0:
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
3602 ; CHECK-NEXT:    ret
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:
3611 ; CHECK:       # %bb.0:
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
3615 ; CHECK-NEXT:    ret
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:
3622 ; CHECK:       # %bb.0:
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
3626 ; CHECK-NEXT:    ret
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:
3635 ; CHECK:       # %bb.0:
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
3639 ; CHECK-NEXT:    ret
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:
3648 ; CHECK:       # %bb.0:
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
3653 ; CHECK-NEXT:    ret
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:
3660 ; CHECK:       # %bb.0:
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
3665 ; CHECK-NEXT:    ret
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:
3674 ; CHECK:       # %bb.0:
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
3679 ; CHECK-NEXT:    ret
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:
3688 ; CHECK:       # %bb.0:
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
3694 ; CHECK-NEXT:    ret
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:
3701 ; CHECK:       # %bb.0:
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
3708 ; CHECK-NEXT:    ret
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:
3717 ; CHECK:       # %bb.0:
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
3724 ; CHECK-NEXT:    ret
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:
3734 ; CHECK:       # %bb.0:
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
3739 ; CHECK-NEXT:    ret
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:
3746 ; CHECK:       # %bb.0:
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
3751 ; CHECK-NEXT:    ret
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:
3760 ; CHECK:       # %bb.0:
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
3765 ; CHECK-NEXT:    ret
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:
3774 ; CHECK:       # %bb.0:
3775 ; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma
3776 ; CHECK-NEXT:    vmflt.vv v0, v9, v8
3777 ; CHECK-NEXT:    ret
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:
3784 ; CHECK:       # %bb.0:
3785 ; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma
3786 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
3787 ; CHECK-NEXT:    ret
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:
3796 ; CHECK:       # %bb.0:
3797 ; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma
3798 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
3799 ; CHECK-NEXT:    ret
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:
3808 ; CHECK:       # %bb.0:
3809 ; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma
3810 ; CHECK-NEXT:    vmfle.vv v0, v9, v8
3811 ; CHECK-NEXT:    ret
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:
3818 ; CHECK:       # %bb.0:
3819 ; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma
3820 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
3821 ; CHECK-NEXT:    ret
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:
3830 ; CHECK:       # %bb.0:
3831 ; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma
3832 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
3833 ; CHECK-NEXT:    ret
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:
3842 ; CHECK:       # %bb.0:
3843 ; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma
3844 ; CHECK-NEXT:    vmflt.vv v0, v8, v9
3845 ; CHECK-NEXT:    ret
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:
3852 ; CHECK:       # %bb.0:
3853 ; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma
3854 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
3855 ; CHECK-NEXT:    ret
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:
3864 ; CHECK:       # %bb.0:
3865 ; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma
3866 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
3867 ; CHECK-NEXT:    ret
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:
3876 ; CHECK:       # %bb.0:
3877 ; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma
3878 ; CHECK-NEXT:    vmfle.vv v0, v8, v9
3879 ; CHECK-NEXT:    ret
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:
3886 ; CHECK:       # %bb.0:
3887 ; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma
3888 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
3889 ; CHECK-NEXT:    ret
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:
3898 ; CHECK:       # %bb.0:
3899 ; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma
3900 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
3901 ; CHECK-NEXT:    ret
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:
3910 ; CHECK:       # %bb.0:
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
3915 ; CHECK-NEXT:    ret
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:
3922 ; CHECK:       # %bb.0:
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
3927 ; CHECK-NEXT:    ret
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:
3936 ; CHECK:       # %bb.0:
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
3941 ; CHECK-NEXT:    ret
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:
3950 ; CHECK:       # %bb.0:
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
3955 ; CHECK-NEXT:    ret
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:
3962 ; CHECK:       # %bb.0:
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
3968 ; CHECK-NEXT:    ret
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:
3977 ; CHECK:       # %bb.0:
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
3983 ; CHECK-NEXT:    ret
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:
3992 ; CHECK:       # %bb.0:
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
3997 ; CHECK-NEXT:    ret
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:
4004 ; CHECK:       # %bb.0:
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
4009 ; CHECK-NEXT:    ret
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:
4018 ; CHECK:       # %bb.0:
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
4023 ; CHECK-NEXT:    ret
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:
4032 ; CHECK:       # %bb.0:
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
4036 ; CHECK-NEXT:    ret
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:
4043 ; CHECK:       # %bb.0:
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
4047 ; CHECK-NEXT:    ret
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:
4056 ; CHECK:       # %bb.0:
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
4060 ; CHECK-NEXT:    ret
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:
4069 ; CHECK:       # %bb.0:
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
4073 ; CHECK-NEXT:    ret
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:
4080 ; CHECK:       # %bb.0:
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
4084 ; CHECK-NEXT:    ret
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:
4093 ; CHECK:       # %bb.0:
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
4097 ; CHECK-NEXT:    ret
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:
4106 ; CHECK:       # %bb.0:
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
4110 ; CHECK-NEXT:    ret
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:
4117 ; CHECK:       # %bb.0:
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
4121 ; CHECK-NEXT:    ret
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:
4130 ; CHECK:       # %bb.0:
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
4134 ; CHECK-NEXT:    ret
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:
4143 ; CHECK:       # %bb.0:
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
4147 ; CHECK-NEXT:    ret
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:
4154 ; CHECK:       # %bb.0:
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
4158 ; CHECK-NEXT:    ret
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:
4167 ; CHECK:       # %bb.0:
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
4171 ; CHECK-NEXT:    ret
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:
4180 ; CHECK:       # %bb.0:
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
4185 ; CHECK-NEXT:    ret
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:
4192 ; CHECK:       # %bb.0:
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
4197 ; CHECK-NEXT:    ret
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:
4206 ; CHECK:       # %bb.0:
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
4211 ; CHECK-NEXT:    ret
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:
4220 ; CHECK:       # %bb.0:
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
4226 ; CHECK-NEXT:    ret
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:
4233 ; CHECK:       # %bb.0:
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
4240 ; CHECK-NEXT:    ret
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:
4249 ; CHECK:       # %bb.0:
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
4256 ; CHECK-NEXT:    ret
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:
4266 ; CHECK:       # %bb.0:
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
4271 ; CHECK-NEXT:    ret
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:
4278 ; CHECK:       # %bb.0:
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
4283 ; CHECK-NEXT:    ret
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:
4292 ; CHECK:       # %bb.0:
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
4297 ; CHECK-NEXT:    ret
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:
4306 ; CHECK:       # %bb.0:
4307 ; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma
4308 ; CHECK-NEXT:    vmflt.vv v0, v10, v8
4309 ; CHECK-NEXT:    ret
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:
4316 ; CHECK:       # %bb.0:
4317 ; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma
4318 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
4319 ; CHECK-NEXT:    ret
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:
4328 ; CHECK:       # %bb.0:
4329 ; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma
4330 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
4331 ; CHECK-NEXT:    ret
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:
4340 ; CHECK:       # %bb.0:
4341 ; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma
4342 ; CHECK-NEXT:    vmfle.vv v0, v10, v8
4343 ; CHECK-NEXT:    ret
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:
4350 ; CHECK:       # %bb.0:
4351 ; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma
4352 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
4353 ; CHECK-NEXT:    ret
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:
4362 ; CHECK:       # %bb.0:
4363 ; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma
4364 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
4365 ; CHECK-NEXT:    ret
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:
4374 ; CHECK:       # %bb.0:
4375 ; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma
4376 ; CHECK-NEXT:    vmflt.vv v0, v8, v10
4377 ; CHECK-NEXT:    ret
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:
4384 ; CHECK:       # %bb.0:
4385 ; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma
4386 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
4387 ; CHECK-NEXT:    ret
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:
4396 ; CHECK:       # %bb.0:
4397 ; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma
4398 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
4399 ; CHECK-NEXT:    ret
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:
4408 ; CHECK:       # %bb.0:
4409 ; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma
4410 ; CHECK-NEXT:    vmfle.vv v0, v8, v10
4411 ; CHECK-NEXT:    ret
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:
4418 ; CHECK:       # %bb.0:
4419 ; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma
4420 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
4421 ; CHECK-NEXT:    ret
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:
4430 ; CHECK:       # %bb.0:
4431 ; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma
4432 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
4433 ; CHECK-NEXT:    ret
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:
4442 ; CHECK:       # %bb.0:
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
4447 ; CHECK-NEXT:    ret
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:
4454 ; CHECK:       # %bb.0:
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
4459 ; CHECK-NEXT:    ret
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:
4468 ; CHECK:       # %bb.0:
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
4473 ; CHECK-NEXT:    ret
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:
4482 ; CHECK:       # %bb.0:
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
4487 ; CHECK-NEXT:    ret
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:
4494 ; CHECK:       # %bb.0:
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
4500 ; CHECK-NEXT:    ret
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:
4509 ; CHECK:       # %bb.0:
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
4515 ; CHECK-NEXT:    ret
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:
4524 ; CHECK:       # %bb.0:
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
4529 ; CHECK-NEXT:    ret
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:
4536 ; CHECK:       # %bb.0:
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
4541 ; CHECK-NEXT:    ret
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:
4550 ; CHECK:       # %bb.0:
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
4555 ; CHECK-NEXT:    ret
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:
4564 ; CHECK:       # %bb.0:
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
4568 ; CHECK-NEXT:    ret
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:
4575 ; CHECK:       # %bb.0:
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
4579 ; CHECK-NEXT:    ret
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:
4588 ; CHECK:       # %bb.0:
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
4592 ; CHECK-NEXT:    ret
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:
4601 ; CHECK:       # %bb.0:
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
4605 ; CHECK-NEXT:    ret
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:
4612 ; CHECK:       # %bb.0:
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
4616 ; CHECK-NEXT:    ret
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:
4625 ; CHECK:       # %bb.0:
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
4629 ; CHECK-NEXT:    ret
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:
4638 ; CHECK:       # %bb.0:
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
4642 ; CHECK-NEXT:    ret
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:
4649 ; CHECK:       # %bb.0:
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
4653 ; CHECK-NEXT:    ret
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:
4662 ; CHECK:       # %bb.0:
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
4666 ; CHECK-NEXT:    ret
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:
4675 ; CHECK:       # %bb.0:
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
4679 ; CHECK-NEXT:    ret
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:
4686 ; CHECK:       # %bb.0:
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
4690 ; CHECK-NEXT:    ret
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:
4699 ; CHECK:       # %bb.0:
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
4703 ; CHECK-NEXT:    ret
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:
4712 ; CHECK:       # %bb.0:
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
4717 ; CHECK-NEXT:    ret
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:
4724 ; CHECK:       # %bb.0:
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
4729 ; CHECK-NEXT:    ret
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:
4738 ; CHECK:       # %bb.0:
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
4743 ; CHECK-NEXT:    ret
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:
4752 ; CHECK:       # %bb.0:
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
4758 ; CHECK-NEXT:    ret
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:
4765 ; CHECK:       # %bb.0:
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
4772 ; CHECK-NEXT:    ret
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:
4781 ; CHECK:       # %bb.0:
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
4788 ; CHECK-NEXT:    ret
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:
4798 ; CHECK:       # %bb.0:
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
4803 ; CHECK-NEXT:    ret
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:
4810 ; CHECK:       # %bb.0:
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
4815 ; CHECK-NEXT:    ret
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:
4824 ; CHECK:       # %bb.0:
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
4829 ; CHECK-NEXT:    ret
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:
4838 ; CHECK:       # %bb.0:
4839 ; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma
4840 ; CHECK-NEXT:    vmflt.vv v0, v12, v8
4841 ; CHECK-NEXT:    ret
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:
4848 ; CHECK:       # %bb.0:
4849 ; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma
4850 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
4851 ; CHECK-NEXT:    ret
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:
4860 ; CHECK:       # %bb.0:
4861 ; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma
4862 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
4863 ; CHECK-NEXT:    ret
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:
4872 ; CHECK:       # %bb.0:
4873 ; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma
4874 ; CHECK-NEXT:    vmfle.vv v0, v12, v8
4875 ; CHECK-NEXT:    ret
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:
4882 ; CHECK:       # %bb.0:
4883 ; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma
4884 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
4885 ; CHECK-NEXT:    ret
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:
4894 ; CHECK:       # %bb.0:
4895 ; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma
4896 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
4897 ; CHECK-NEXT:    ret
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:
4906 ; CHECK:       # %bb.0:
4907 ; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma
4908 ; CHECK-NEXT:    vmflt.vv v0, v8, v12
4909 ; CHECK-NEXT:    ret
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:
4916 ; CHECK:       # %bb.0:
4917 ; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma
4918 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
4919 ; CHECK-NEXT:    ret
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:
4928 ; CHECK:       # %bb.0:
4929 ; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma
4930 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
4931 ; CHECK-NEXT:    ret
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:
4940 ; CHECK:       # %bb.0:
4941 ; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma
4942 ; CHECK-NEXT:    vmfle.vv v0, v8, v12
4943 ; CHECK-NEXT:    ret
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:
4950 ; CHECK:       # %bb.0:
4951 ; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma
4952 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
4953 ; CHECK-NEXT:    ret
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:
4962 ; CHECK:       # %bb.0:
4963 ; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma
4964 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
4965 ; CHECK-NEXT:    ret
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:
4974 ; CHECK:       # %bb.0:
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
4979 ; CHECK-NEXT:    ret
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:
4986 ; CHECK:       # %bb.0:
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
4991 ; CHECK-NEXT:    ret
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:
5000 ; CHECK:       # %bb.0:
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
5005 ; CHECK-NEXT:    ret
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:
5014 ; CHECK:       # %bb.0:
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
5019 ; CHECK-NEXT:    ret
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:
5026 ; CHECK:       # %bb.0:
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
5032 ; CHECK-NEXT:    ret
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:
5041 ; CHECK:       # %bb.0:
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
5047 ; CHECK-NEXT:    ret
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:
5056 ; CHECK:       # %bb.0:
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
5061 ; CHECK-NEXT:    ret
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:
5068 ; CHECK:       # %bb.0:
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
5073 ; CHECK-NEXT:    ret
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:
5082 ; CHECK:       # %bb.0:
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
5087 ; CHECK-NEXT:    ret
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:
5096 ; CHECK:       # %bb.0:
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
5100 ; CHECK-NEXT:    ret
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:
5107 ; CHECK:       # %bb.0:
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
5111 ; CHECK-NEXT:    ret
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:
5120 ; CHECK:       # %bb.0:
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
5124 ; CHECK-NEXT:    ret
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:
5133 ; CHECK:       # %bb.0:
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
5137 ; CHECK-NEXT:    ret
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:
5144 ; CHECK:       # %bb.0:
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
5148 ; CHECK-NEXT:    ret
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:
5157 ; CHECK:       # %bb.0:
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
5161 ; CHECK-NEXT:    ret
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:
5170 ; CHECK:       # %bb.0:
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
5174 ; CHECK-NEXT:    ret
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:
5181 ; CHECK:       # %bb.0:
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
5185 ; CHECK-NEXT:    ret
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:
5194 ; CHECK:       # %bb.0:
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
5198 ; CHECK-NEXT:    ret
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:
5207 ; CHECK:       # %bb.0:
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
5211 ; CHECK-NEXT:    ret
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:
5218 ; CHECK:       # %bb.0:
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
5222 ; CHECK-NEXT:    ret
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:
5231 ; CHECK:       # %bb.0:
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
5235 ; CHECK-NEXT:    ret
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:
5244 ; CHECK:       # %bb.0:
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
5249 ; CHECK-NEXT:    ret
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:
5256 ; CHECK:       # %bb.0:
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
5261 ; CHECK-NEXT:    ret
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:
5270 ; CHECK:       # %bb.0:
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
5275 ; CHECK-NEXT:    ret
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:
5284 ; CHECK:       # %bb.0:
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
5290 ; CHECK-NEXT:    ret
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:
5297 ; CHECK:       # %bb.0:
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
5304 ; CHECK-NEXT:    ret
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:
5313 ; CHECK:       # %bb.0:
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
5320 ; CHECK-NEXT:    ret
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:
5330 ; CHECK:       # %bb.0:
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
5335 ; CHECK-NEXT:    ret
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:
5342 ; CHECK:       # %bb.0:
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
5347 ; CHECK-NEXT:    ret
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:
5356 ; CHECK:       # %bb.0:
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
5361 ; CHECK-NEXT:    ret
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:
5370 ; CHECK:       # %bb.0:
5371 ; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma
5372 ; CHECK-NEXT:    vmflt.vv v0, v16, v8
5373 ; CHECK-NEXT:    ret
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:
5380 ; CHECK:       # %bb.0:
5381 ; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma
5382 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
5383 ; CHECK-NEXT:    ret
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:
5392 ; CHECK:       # %bb.0:
5393 ; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma
5394 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
5395 ; CHECK-NEXT:    ret
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:
5404 ; CHECK:       # %bb.0:
5405 ; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma
5406 ; CHECK-NEXT:    vmfle.vv v0, v16, v8
5407 ; CHECK-NEXT:    ret
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:
5414 ; CHECK:       # %bb.0:
5415 ; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma
5416 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
5417 ; CHECK-NEXT:    ret
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:
5426 ; CHECK:       # %bb.0:
5427 ; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma
5428 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
5429 ; CHECK-NEXT:    ret
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:
5438 ; CHECK:       # %bb.0:
5439 ; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma
5440 ; CHECK-NEXT:    vmflt.vv v0, v8, v16
5441 ; CHECK-NEXT:    ret
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:
5448 ; CHECK:       # %bb.0:
5449 ; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma
5450 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
5451 ; CHECK-NEXT:    ret
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:
5460 ; CHECK:       # %bb.0:
5461 ; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma
5462 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
5463 ; CHECK-NEXT:    ret
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:
5472 ; CHECK:       # %bb.0:
5473 ; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma
5474 ; CHECK-NEXT:    vmfle.vv v0, v8, v16
5475 ; CHECK-NEXT:    ret
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:
5482 ; CHECK:       # %bb.0:
5483 ; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma
5484 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
5485 ; CHECK-NEXT:    ret
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:
5494 ; CHECK:       # %bb.0:
5495 ; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma
5496 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
5497 ; CHECK-NEXT:    ret
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:
5506 ; CHECK:       # %bb.0:
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
5511 ; CHECK-NEXT:    ret
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:
5518 ; CHECK:       # %bb.0:
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
5523 ; CHECK-NEXT:    ret
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:
5532 ; CHECK:       # %bb.0:
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
5537 ; CHECK-NEXT:    ret
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:
5546 ; CHECK:       # %bb.0:
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
5551 ; CHECK-NEXT:    ret
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:
5558 ; CHECK:       # %bb.0:
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
5564 ; CHECK-NEXT:    ret
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:
5573 ; CHECK:       # %bb.0:
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
5579 ; CHECK-NEXT:    ret
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:
5588 ; CHECK:       # %bb.0:
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
5593 ; CHECK-NEXT:    ret
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:
5600 ; CHECK:       # %bb.0:
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
5605 ; CHECK-NEXT:    ret
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:
5614 ; CHECK:       # %bb.0:
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
5619 ; CHECK-NEXT:    ret
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:
5628 ; CHECK:       # %bb.0:
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
5632 ; CHECK-NEXT:    ret
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:
5639 ; CHECK:       # %bb.0:
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
5643 ; CHECK-NEXT:    ret
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:
5652 ; CHECK:       # %bb.0:
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
5656 ; CHECK-NEXT:    ret
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:
5665 ; CHECK:       # %bb.0:
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
5669 ; CHECK-NEXT:    ret
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:
5676 ; CHECK:       # %bb.0:
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
5680 ; CHECK-NEXT:    ret
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:
5689 ; CHECK:       # %bb.0:
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
5693 ; CHECK-NEXT:    ret
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:
5702 ; CHECK:       # %bb.0:
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
5706 ; CHECK-NEXT:    ret
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:
5713 ; CHECK:       # %bb.0:
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
5717 ; CHECK-NEXT:    ret
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:
5726 ; CHECK:       # %bb.0:
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
5730 ; CHECK-NEXT:    ret
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:
5739 ; CHECK:       # %bb.0:
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
5743 ; CHECK-NEXT:    ret
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:
5750 ; CHECK:       # %bb.0:
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
5754 ; CHECK-NEXT:    ret
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:
5763 ; CHECK:       # %bb.0:
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
5767 ; CHECK-NEXT:    ret
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:
5776 ; CHECK:       # %bb.0:
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
5781 ; CHECK-NEXT:    ret
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:
5788 ; CHECK:       # %bb.0:
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
5793 ; CHECK-NEXT:    ret
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:
5802 ; CHECK:       # %bb.0:
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
5807 ; CHECK-NEXT:    ret
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:
5816 ; CHECK:       # %bb.0:
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
5822 ; CHECK-NEXT:    ret
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:
5829 ; CHECK:       # %bb.0:
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
5836 ; CHECK-NEXT:    ret
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:
5845 ; CHECK:       # %bb.0:
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
5852 ; CHECK-NEXT:    ret
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:
5862 ; CHECK:       # %bb.0:
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
5867 ; CHECK-NEXT:    ret
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:
5874 ; CHECK:       # %bb.0:
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
5879 ; CHECK-NEXT:    ret
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:
5888 ; CHECK:       # %bb.0:
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
5893 ; CHECK-NEXT:    ret
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:
5902 ; CHECK:       # %bb.0:
5903 ; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma
5904 ; CHECK-NEXT:    vmflt.vv v0, v9, v8
5905 ; CHECK-NEXT:    ret
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:
5912 ; CHECK:       # %bb.0:
5913 ; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma
5914 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
5915 ; CHECK-NEXT:    ret
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:
5924 ; CHECK:       # %bb.0:
5925 ; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma
5926 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
5927 ; CHECK-NEXT:    ret
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:
5936 ; CHECK:       # %bb.0:
5937 ; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma
5938 ; CHECK-NEXT:    vmfle.vv v0, v9, v8
5939 ; CHECK-NEXT:    ret
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:
5946 ; CHECK:       # %bb.0:
5947 ; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma
5948 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
5949 ; CHECK-NEXT:    ret
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:
5958 ; CHECK:       # %bb.0:
5959 ; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma
5960 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
5961 ; CHECK-NEXT:    ret
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:
5970 ; CHECK:       # %bb.0:
5971 ; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma
5972 ; CHECK-NEXT:    vmflt.vv v0, v8, v9
5973 ; CHECK-NEXT:    ret
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:
5980 ; CHECK:       # %bb.0:
5981 ; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma
5982 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
5983 ; CHECK-NEXT:    ret
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:
5992 ; CHECK:       # %bb.0:
5993 ; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma
5994 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
5995 ; CHECK-NEXT:    ret
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:
6004 ; CHECK:       # %bb.0:
6005 ; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma
6006 ; CHECK-NEXT:    vmfle.vv v0, v8, v9
6007 ; CHECK-NEXT:    ret
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:
6014 ; CHECK:       # %bb.0:
6015 ; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma
6016 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
6017 ; CHECK-NEXT:    ret
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:
6026 ; CHECK:       # %bb.0:
6027 ; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma
6028 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
6029 ; CHECK-NEXT:    ret
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:
6038 ; CHECK:       # %bb.0:
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
6043 ; CHECK-NEXT:    ret
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:
6050 ; CHECK:       # %bb.0:
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
6055 ; CHECK-NEXT:    ret
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:
6064 ; CHECK:       # %bb.0:
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
6069 ; CHECK-NEXT:    ret
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:
6078 ; CHECK:       # %bb.0:
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
6083 ; CHECK-NEXT:    ret
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:
6090 ; CHECK:       # %bb.0:
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
6096 ; CHECK-NEXT:    ret
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:
6105 ; CHECK:       # %bb.0:
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
6111 ; CHECK-NEXT:    ret
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:
6120 ; CHECK:       # %bb.0:
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
6125 ; CHECK-NEXT:    ret
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:
6132 ; CHECK:       # %bb.0:
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
6137 ; CHECK-NEXT:    ret
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:
6146 ; CHECK:       # %bb.0:
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
6151 ; CHECK-NEXT:    ret
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:
6160 ; CHECK:       # %bb.0:
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
6164 ; CHECK-NEXT:    ret
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:
6171 ; CHECK:       # %bb.0:
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
6175 ; CHECK-NEXT:    ret
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:
6184 ; CHECK:       # %bb.0:
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
6188 ; CHECK-NEXT:    ret
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:
6197 ; CHECK:       # %bb.0:
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
6201 ; CHECK-NEXT:    ret
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:
6208 ; CHECK:       # %bb.0:
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
6212 ; CHECK-NEXT:    ret
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:
6221 ; CHECK:       # %bb.0:
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
6225 ; CHECK-NEXT:    ret
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:
6234 ; CHECK:       # %bb.0:
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
6238 ; CHECK-NEXT:    ret
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:
6245 ; CHECK:       # %bb.0:
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
6249 ; CHECK-NEXT:    ret
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:
6258 ; CHECK:       # %bb.0:
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
6262 ; CHECK-NEXT:    ret
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:
6271 ; CHECK:       # %bb.0:
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
6275 ; CHECK-NEXT:    ret
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:
6282 ; CHECK:       # %bb.0:
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
6286 ; CHECK-NEXT:    ret
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:
6295 ; CHECK:       # %bb.0:
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
6299 ; CHECK-NEXT:    ret
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:
6308 ; CHECK:       # %bb.0:
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
6313 ; CHECK-NEXT:    ret
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:
6320 ; CHECK:       # %bb.0:
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
6325 ; CHECK-NEXT:    ret
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:
6334 ; CHECK:       # %bb.0:
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
6339 ; CHECK-NEXT:    ret
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:
6348 ; CHECK:       # %bb.0:
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
6354 ; CHECK-NEXT:    ret
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:
6361 ; CHECK:       # %bb.0:
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
6368 ; CHECK-NEXT:    ret
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:
6377 ; CHECK:       # %bb.0:
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
6384 ; CHECK-NEXT:    ret
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:
6394 ; CHECK:       # %bb.0:
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
6399 ; CHECK-NEXT:    ret
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:
6406 ; CHECK:       # %bb.0:
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
6411 ; CHECK-NEXT:    ret
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:
6420 ; CHECK:       # %bb.0:
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
6425 ; CHECK-NEXT:    ret
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:
6434 ; CHECK:       # %bb.0:
6435 ; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma
6436 ; CHECK-NEXT:    vmflt.vv v0, v10, v8
6437 ; CHECK-NEXT:    ret
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:
6444 ; CHECK:       # %bb.0:
6445 ; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma
6446 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
6447 ; CHECK-NEXT:    ret
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:
6456 ; CHECK:       # %bb.0:
6457 ; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma
6458 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
6459 ; CHECK-NEXT:    ret
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:
6468 ; CHECK:       # %bb.0:
6469 ; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma
6470 ; CHECK-NEXT:    vmfle.vv v0, v10, v8
6471 ; CHECK-NEXT:    ret
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:
6478 ; CHECK:       # %bb.0:
6479 ; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma
6480 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
6481 ; CHECK-NEXT:    ret
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:
6490 ; CHECK:       # %bb.0:
6491 ; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma
6492 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
6493 ; CHECK-NEXT:    ret
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:
6502 ; CHECK:       # %bb.0:
6503 ; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma
6504 ; CHECK-NEXT:    vmflt.vv v0, v8, v10
6505 ; CHECK-NEXT:    ret
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:
6512 ; CHECK:       # %bb.0:
6513 ; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma
6514 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
6515 ; CHECK-NEXT:    ret
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:
6524 ; CHECK:       # %bb.0:
6525 ; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma
6526 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
6527 ; CHECK-NEXT:    ret
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:
6536 ; CHECK:       # %bb.0:
6537 ; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma
6538 ; CHECK-NEXT:    vmfle.vv v0, v8, v10
6539 ; CHECK-NEXT:    ret
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:
6546 ; CHECK:       # %bb.0:
6547 ; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma
6548 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
6549 ; CHECK-NEXT:    ret
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:
6558 ; CHECK:       # %bb.0:
6559 ; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma
6560 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
6561 ; CHECK-NEXT:    ret
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:
6570 ; CHECK:       # %bb.0:
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
6575 ; CHECK-NEXT:    ret
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:
6582 ; CHECK:       # %bb.0:
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
6587 ; CHECK-NEXT:    ret
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:
6596 ; CHECK:       # %bb.0:
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
6601 ; CHECK-NEXT:    ret
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:
6610 ; CHECK:       # %bb.0:
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
6615 ; CHECK-NEXT:    ret
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:
6622 ; CHECK:       # %bb.0:
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
6628 ; CHECK-NEXT:    ret
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:
6637 ; CHECK:       # %bb.0:
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
6643 ; CHECK-NEXT:    ret
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:
6652 ; CHECK:       # %bb.0:
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
6657 ; CHECK-NEXT:    ret
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:
6664 ; CHECK:       # %bb.0:
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
6669 ; CHECK-NEXT:    ret
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:
6678 ; CHECK:       # %bb.0:
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
6683 ; CHECK-NEXT:    ret
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:
6692 ; CHECK:       # %bb.0:
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
6696 ; CHECK-NEXT:    ret
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:
6703 ; CHECK:       # %bb.0:
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
6707 ; CHECK-NEXT:    ret
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:
6716 ; CHECK:       # %bb.0:
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
6720 ; CHECK-NEXT:    ret
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:
6729 ; CHECK:       # %bb.0:
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
6733 ; CHECK-NEXT:    ret
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:
6740 ; CHECK:       # %bb.0:
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
6744 ; CHECK-NEXT:    ret
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:
6753 ; CHECK:       # %bb.0:
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
6757 ; CHECK-NEXT:    ret
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:
6766 ; CHECK:       # %bb.0:
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
6770 ; CHECK-NEXT:    ret
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:
6777 ; CHECK:       # %bb.0:
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
6781 ; CHECK-NEXT:    ret
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:
6790 ; CHECK:       # %bb.0:
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
6794 ; CHECK-NEXT:    ret
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:
6803 ; CHECK:       # %bb.0:
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
6807 ; CHECK-NEXT:    ret
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:
6814 ; CHECK:       # %bb.0:
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
6818 ; CHECK-NEXT:    ret
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:
6827 ; CHECK:       # %bb.0:
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
6831 ; CHECK-NEXT:    ret
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:
6840 ; CHECK:       # %bb.0:
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
6845 ; CHECK-NEXT:    ret
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:
6852 ; CHECK:       # %bb.0:
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
6857 ; CHECK-NEXT:    ret
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:
6866 ; CHECK:       # %bb.0:
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
6871 ; CHECK-NEXT:    ret
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:
6880 ; CHECK:       # %bb.0:
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
6886 ; CHECK-NEXT:    ret
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:
6893 ; CHECK:       # %bb.0:
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
6900 ; CHECK-NEXT:    ret
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:
6909 ; CHECK:       # %bb.0:
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
6916 ; CHECK-NEXT:    ret
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:
6926 ; CHECK:       # %bb.0:
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
6931 ; CHECK-NEXT:    ret
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:
6938 ; CHECK:       # %bb.0:
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
6943 ; CHECK-NEXT:    ret
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:
6952 ; CHECK:       # %bb.0:
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
6957 ; CHECK-NEXT:    ret
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:
6966 ; CHECK:       # %bb.0:
6967 ; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma
6968 ; CHECK-NEXT:    vmflt.vv v0, v12, v8
6969 ; CHECK-NEXT:    ret
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:
6976 ; CHECK:       # %bb.0:
6977 ; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma
6978 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
6979 ; CHECK-NEXT:    ret
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:
6988 ; CHECK:       # %bb.0:
6989 ; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma
6990 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
6991 ; CHECK-NEXT:    ret
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:
7000 ; CHECK:       # %bb.0:
7001 ; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma
7002 ; CHECK-NEXT:    vmfle.vv v0, v12, v8
7003 ; CHECK-NEXT:    ret
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:
7010 ; CHECK:       # %bb.0:
7011 ; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma
7012 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
7013 ; CHECK-NEXT:    ret
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:
7022 ; CHECK:       # %bb.0:
7023 ; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma
7024 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
7025 ; CHECK-NEXT:    ret
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:
7034 ; CHECK:       # %bb.0:
7035 ; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma
7036 ; CHECK-NEXT:    vmflt.vv v0, v8, v12
7037 ; CHECK-NEXT:    ret
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:
7044 ; CHECK:       # %bb.0:
7045 ; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma
7046 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
7047 ; CHECK-NEXT:    ret
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:
7056 ; CHECK:       # %bb.0:
7057 ; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma
7058 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
7059 ; CHECK-NEXT:    ret
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:
7068 ; CHECK:       # %bb.0:
7069 ; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma
7070 ; CHECK-NEXT:    vmfle.vv v0, v8, v12
7071 ; CHECK-NEXT:    ret
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:
7078 ; CHECK:       # %bb.0:
7079 ; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma
7080 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
7081 ; CHECK-NEXT:    ret
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:
7090 ; CHECK:       # %bb.0:
7091 ; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma
7092 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
7093 ; CHECK-NEXT:    ret
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:
7102 ; CHECK:       # %bb.0:
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
7107 ; CHECK-NEXT:    ret
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:
7114 ; CHECK:       # %bb.0:
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
7119 ; CHECK-NEXT:    ret
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:
7128 ; CHECK:       # %bb.0:
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
7133 ; CHECK-NEXT:    ret
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:
7142 ; CHECK:       # %bb.0:
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
7147 ; CHECK-NEXT:    ret
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:
7154 ; CHECK:       # %bb.0:
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
7160 ; CHECK-NEXT:    ret
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:
7169 ; CHECK:       # %bb.0:
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
7175 ; CHECK-NEXT:    ret
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:
7184 ; CHECK:       # %bb.0:
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
7189 ; CHECK-NEXT:    ret
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:
7196 ; CHECK:       # %bb.0:
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
7201 ; CHECK-NEXT:    ret
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:
7210 ; CHECK:       # %bb.0:
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
7215 ; CHECK-NEXT:    ret
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:
7224 ; CHECK:       # %bb.0:
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
7228 ; CHECK-NEXT:    ret
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:
7235 ; CHECK:       # %bb.0:
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
7239 ; CHECK-NEXT:    ret
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:
7248 ; CHECK:       # %bb.0:
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
7252 ; CHECK-NEXT:    ret
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:
7261 ; CHECK:       # %bb.0:
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
7265 ; CHECK-NEXT:    ret
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:
7272 ; CHECK:       # %bb.0:
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
7276 ; CHECK-NEXT:    ret
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:
7285 ; CHECK:       # %bb.0:
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
7289 ; CHECK-NEXT:    ret
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:
7298 ; CHECK:       # %bb.0:
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
7302 ; CHECK-NEXT:    ret
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:
7309 ; CHECK:       # %bb.0:
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
7313 ; CHECK-NEXT:    ret
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:
7322 ; CHECK:       # %bb.0:
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
7326 ; CHECK-NEXT:    ret
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:
7335 ; CHECK:       # %bb.0:
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
7339 ; CHECK-NEXT:    ret
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:
7346 ; CHECK:       # %bb.0:
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
7350 ; CHECK-NEXT:    ret
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:
7359 ; CHECK:       # %bb.0:
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
7363 ; CHECK-NEXT:    ret
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:
7372 ; CHECK:       # %bb.0:
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
7377 ; CHECK-NEXT:    ret
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:
7384 ; CHECK:       # %bb.0:
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
7389 ; CHECK-NEXT:    ret
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:
7398 ; CHECK:       # %bb.0:
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
7403 ; CHECK-NEXT:    ret
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:
7412 ; CHECK:       # %bb.0:
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
7418 ; CHECK-NEXT:    ret
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:
7425 ; CHECK:       # %bb.0:
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
7432 ; CHECK-NEXT:    ret
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:
7441 ; CHECK:       # %bb.0:
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
7448 ; CHECK-NEXT:    ret
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:
7458 ; CHECK:       # %bb.0:
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
7463 ; CHECK-NEXT:    ret
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:
7470 ; CHECK:       # %bb.0:
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
7475 ; CHECK-NEXT:    ret
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:
7484 ; CHECK:       # %bb.0:
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
7489 ; CHECK-NEXT:    ret
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:
7498 ; CHECK:       # %bb.0:
7499 ; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma
7500 ; CHECK-NEXT:    vmflt.vv v0, v16, v8
7501 ; CHECK-NEXT:    ret
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:
7508 ; CHECK:       # %bb.0:
7509 ; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma
7510 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
7511 ; CHECK-NEXT:    ret
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:
7520 ; CHECK:       # %bb.0:
7521 ; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma
7522 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
7523 ; CHECK-NEXT:    ret
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:
7532 ; CHECK:       # %bb.0:
7533 ; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma
7534 ; CHECK-NEXT:    vmfle.vv v0, v16, v8
7535 ; CHECK-NEXT:    ret
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:
7542 ; CHECK:       # %bb.0:
7543 ; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma
7544 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
7545 ; CHECK-NEXT:    ret
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:
7554 ; CHECK:       # %bb.0:
7555 ; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma
7556 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
7557 ; CHECK-NEXT:    ret
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:
7566 ; CHECK:       # %bb.0:
7567 ; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma
7568 ; CHECK-NEXT:    vmflt.vv v0, v8, v16
7569 ; CHECK-NEXT:    ret
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:
7576 ; CHECK:       # %bb.0:
7577 ; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma
7578 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0
7579 ; CHECK-NEXT:    ret
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:
7588 ; CHECK:       # %bb.0:
7589 ; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma
7590 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
7591 ; CHECK-NEXT:    ret
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:
7600 ; CHECK:       # %bb.0:
7601 ; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma
7602 ; CHECK-NEXT:    vmfle.vv v0, v8, v16
7603 ; CHECK-NEXT:    ret
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:
7610 ; CHECK:       # %bb.0:
7611 ; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma
7612 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0
7613 ; CHECK-NEXT:    ret
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:
7622 ; CHECK:       # %bb.0:
7623 ; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma
7624 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0
7625 ; CHECK-NEXT:    ret
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:
7634 ; CHECK:       # %bb.0:
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
7639 ; CHECK-NEXT:    ret
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:
7646 ; CHECK:       # %bb.0:
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
7651 ; CHECK-NEXT:    ret
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:
7660 ; CHECK:       # %bb.0:
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
7665 ; CHECK-NEXT:    ret
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:
7674 ; CHECK:       # %bb.0:
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
7679 ; CHECK-NEXT:    ret
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:
7686 ; CHECK:       # %bb.0:
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
7692 ; CHECK-NEXT:    ret
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:
7701 ; CHECK:       # %bb.0:
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
7707 ; CHECK-NEXT:    ret
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:
7716 ; CHECK:       # %bb.0:
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
7721 ; CHECK-NEXT:    ret
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:
7728 ; CHECK:       # %bb.0:
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
7733 ; CHECK-NEXT:    ret
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:
7742 ; CHECK:       # %bb.0:
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
7747 ; CHECK-NEXT:    ret
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:
7756 ; CHECK:       # %bb.0:
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
7760 ; CHECK-NEXT:    ret
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:
7767 ; CHECK:       # %bb.0:
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
7771 ; CHECK-NEXT:    ret
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:
7780 ; CHECK:       # %bb.0:
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
7784 ; CHECK-NEXT:    ret
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:
7793 ; CHECK:       # %bb.0:
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
7797 ; CHECK-NEXT:    ret
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:
7804 ; CHECK:       # %bb.0:
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
7808 ; CHECK-NEXT:    ret
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:
7817 ; CHECK:       # %bb.0:
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
7821 ; CHECK-NEXT:    ret
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:
7830 ; CHECK:       # %bb.0:
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
7834 ; CHECK-NEXT:    ret
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:
7841 ; CHECK:       # %bb.0:
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
7845 ; CHECK-NEXT:    ret
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:
7854 ; CHECK:       # %bb.0:
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
7858 ; CHECK-NEXT:    ret
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:
7867 ; CHECK:       # %bb.0:
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
7871 ; CHECK-NEXT:    ret
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:
7878 ; CHECK:       # %bb.0:
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
7882 ; CHECK-NEXT:    ret
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:
7891 ; CHECK:       # %bb.0:
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
7895 ; CHECK-NEXT:    ret
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:
7904 ; CHECK:       # %bb.0:
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
7909 ; CHECK-NEXT:    ret
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:
7916 ; CHECK:       # %bb.0:
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
7921 ; CHECK-NEXT:    ret
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:
7930 ; CHECK:       # %bb.0:
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
7935 ; CHECK-NEXT:    ret
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:
7944 ; CHECK:       # %bb.0:
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
7950 ; CHECK-NEXT:    ret
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:
7957 ; CHECK:       # %bb.0:
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
7964 ; CHECK-NEXT:    ret
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:
7973 ; CHECK:       # %bb.0:
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
7980 ; CHECK-NEXT:    ret
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