xref: /llvm-project/llvm/test/CodeGen/RISCV/rvv/vfcmps-constrained-sdnode.ll (revision 9122c5235ec85ce0c0ad337e862b006e7b349d84)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -mtriple=riscv32 -mattr=+d,+zvfh,+v -target-abi=ilp32d \
3; RUN:     -verify-machineinstrs < %s | FileCheck %s
4; RUN: llc -mtriple=riscv64 -mattr=+d,+zvfh,+v -target-abi=lp64d \
5; RUN:     -verify-machineinstrs < %s | FileCheck %s
6
7declare <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half>, <vscale x 1 x half>, metadata, metadata)
8define <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
18}
19
20define <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
32}
33
34define <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
46}
47
48define <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
56}
57
58define <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
68}
69
70define <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
80}
81
82define <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
90}
91
92define <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
102}
103
104define <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
114}
115
116define <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
124}
125
126define <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
136}
137
138define <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
148}
149
150define <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
158}
159
160define <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
170}
171
172define <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
182}
183
184define <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
194}
195
196define <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
208}
209
210define <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
222}
223
224define <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
234}
235
236define <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
249}
250
251define <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
264}
265
266define <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
276}
277
278define <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
290}
291
292define <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
304}
305
306define <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
315}
316
317define <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
328}
329
330define <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
341}
342
343define <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
352}
353
354define <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
365}
366
367define <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
378}
379
380define <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
389}
390
391define <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
402}
403
404define <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
415}
416
417define <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
426}
427
428define <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
439}
440
441define <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
452}
453
454define <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
464}
465
466define <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
478}
479
480define <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
492}
493
494define <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
505}
506
507define <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.vv v8, v8, v8
513; CHECK-NEXT:    vmfle.vf v9, v9, fa0
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
521}
522
523define <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
537}
538
539declare <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half>, <vscale x 2 x half>, metadata, metadata)
540define <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
550}
551
552define <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
564}
565
566define <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
578}
579
580define <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
588}
589
590define <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
600}
601
602define <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
612}
613
614define <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
622}
623
624define <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
634}
635
636define <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
646}
647
648define <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
656}
657
658define <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
668}
669
670define <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
680}
681
682define <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
690}
691
692define <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
702}
703
704define <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
714}
715
716define <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
726}
727
728define <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
740}
741
742define <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
754}
755
756define <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
766}
767
768define <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
781}
782
783define <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
796}
797
798define <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
808}
809
810define <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
822}
823
824define <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
836}
837
838define <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
847}
848
849define <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
860}
861
862define <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
873}
874
875define <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
884}
885
886define <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
897}
898
899define <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
910}
911
912define <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
921}
922
923define <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
934}
935
936define <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
947}
948
949define <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
958}
959
960define <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
971}
972
973define <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
984}
985
986define <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
996}
997
998define <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
1010}
1011
1012define <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
1024}
1025
1026define <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
1037}
1038
1039define <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.vv v8, v8, v8
1045; CHECK-NEXT:    vmfle.vf v9, v9, fa0
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
1053}
1054
1055define <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
1069}
1070
1071declare <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half>, <vscale x 4 x half>, metadata, metadata)
1072define <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
1082}
1083
1084define <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
1096}
1097
1098define <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
1110}
1111
1112define <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
1120}
1121
1122define <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
1132}
1133
1134define <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
1144}
1145
1146define <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
1154}
1155
1156define <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
1166}
1167
1168define <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
1178}
1179
1180define <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
1188}
1189
1190define <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
1200}
1201
1202define <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
1212}
1213
1214define <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
1222}
1223
1224define <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
1234}
1235
1236define <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
1246}
1247
1248define <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
1258}
1259
1260define <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
1272}
1273
1274define <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
1286}
1287
1288define <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
1298}
1299
1300define <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
1313}
1314
1315define <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
1328}
1329
1330define <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
1340}
1341
1342define <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
1354}
1355
1356define <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
1368}
1369
1370define <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
1379}
1380
1381define <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
1392}
1393
1394define <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
1405}
1406
1407define <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
1416}
1417
1418define <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
1429}
1430
1431define <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
1442}
1443
1444define <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
1453}
1454
1455define <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
1466}
1467
1468define <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
1479}
1480
1481define <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
1490}
1491
1492define <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
1503}
1504
1505define <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
1516}
1517
1518define <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
1528}
1529
1530define <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
1542}
1543
1544define <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
1556}
1557
1558define <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
1569}
1570
1571define <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.vv v8, v8, v8
1577; CHECK-NEXT:    vmfle.vf v9, v9, fa0
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
1585}
1586
1587define <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
1601}
1602
1603declare <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>, metadata, metadata)
1604define <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
1614}
1615
1616define <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
1628}
1629
1630define <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
1642}
1643
1644define <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
1652}
1653
1654define <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
1664}
1665
1666define <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
1676}
1677
1678define <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
1686}
1687
1688define <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
1698}
1699
1700define <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
1710}
1711
1712define <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
1720}
1721
1722define <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
1732}
1733
1734define <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
1744}
1745
1746define <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
1754}
1755
1756define <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
1766}
1767
1768define <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
1778}
1779
1780define <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
1790}
1791
1792define <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
1804}
1805
1806define <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
1818}
1819
1820define <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
1830}
1831
1832define <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
1845}
1846
1847define <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
1860}
1861
1862define <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
1872}
1873
1874define <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
1886}
1887
1888define <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
1900}
1901
1902define <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
1911}
1912
1913define <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
1924}
1925
1926define <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
1937}
1938
1939define <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
1948}
1949
1950define <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
1961}
1962
1963define <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
1974}
1975
1976define <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
1985}
1986
1987define <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
1998}
1999
2000define <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
2011}
2012
2013define <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
2022}
2023
2024define <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
2035}
2036
2037define <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
2048}
2049
2050define <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
2060}
2061
2062define <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
2074}
2075
2076define <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
2088}
2089
2090define <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
2101}
2102
2103define <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.vv v12, v8, v8
2109; CHECK-NEXT:    vmfle.vf v8, v10, fa0
2110; CHECK-NEXT:    vmnot.m v9, v12
2111; CHECK-NEXT:    vmorn.mm v0, v9, v8
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
2117}
2118
2119define <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
2133}
2134
2135declare <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half>, <vscale x 16 x half>, metadata, metadata)
2136define <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
2146}
2147
2148define <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
2160}
2161
2162define <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
2174}
2175
2176define <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
2184}
2185
2186define <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
2196}
2197
2198define <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
2208}
2209
2210define <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
2218}
2219
2220define <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
2230}
2231
2232define <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
2242}
2243
2244define <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
2252}
2253
2254define <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
2264}
2265
2266define <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
2276}
2277
2278define <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
2286}
2287
2288define <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
2298}
2299
2300define <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
2310}
2311
2312define <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
2322}
2323
2324define <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
2336}
2337
2338define <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
2350}
2351
2352define <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
2362}
2363
2364define <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
2377}
2378
2379define <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
2392}
2393
2394define <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
2404}
2405
2406define <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
2418}
2419
2420define <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
2432}
2433
2434define <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
2443}
2444
2445define <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
2456}
2457
2458define <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
2469}
2470
2471define <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
2480}
2481
2482define <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
2493}
2494
2495define <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
2506}
2507
2508define <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
2517}
2518
2519define <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
2530}
2531
2532define <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
2543}
2544
2545define <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
2554}
2555
2556define <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
2567}
2568
2569define <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
2580}
2581
2582define <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
2592}
2593
2594define <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
2606}
2607
2608define <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
2620}
2621
2622define <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
2633}
2634
2635define <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.vv v16, v8, v8
2641; CHECK-NEXT:    vmfle.vf v8, v12, fa0
2642; CHECK-NEXT:    vmnot.m v9, v16
2643; CHECK-NEXT:    vmorn.mm v0, v9, v8
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
2649}
2650
2651define <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
2665}
2666
2667declare <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half>, <vscale x 32 x half>, metadata, metadata)
2668define <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
2678}
2679
2680define <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
2692}
2693
2694define <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
2706}
2707
2708define <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
2716}
2717
2718define <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
2728}
2729
2730define <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
2740}
2741
2742define <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
2750}
2751
2752define <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
2762}
2763
2764define <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
2774}
2775
2776define <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
2784}
2785
2786define <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
2796}
2797
2798define <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
2808}
2809
2810define <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
2818}
2819
2820define <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
2830}
2831
2832define <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
2842}
2843
2844define <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
2854}
2855
2856define <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
2868}
2869
2870define <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
2882}
2883
2884define <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
2894}
2895
2896define <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
2909}
2910
2911define <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
2924}
2925
2926define <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
2936}
2937
2938define <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
2950}
2951
2952define <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
2964}
2965
2966define <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
2975}
2976
2977define <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
2988}
2989
2990define <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
3001}
3002
3003define <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
3012}
3013
3014define <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
3025}
3026
3027define <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
3038}
3039
3040define <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
3049}
3050
3051define <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
3062}
3063
3064define <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
3075}
3076
3077define <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
3086}
3087
3088define <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
3099}
3100
3101define <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
3112}
3113
3114define <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
3124}
3125
3126define <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
3138}
3139
3140define <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
3152}
3153
3154define <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
3165}
3166
3167define <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.vv v24, v8, v8
3173; CHECK-NEXT:    vmfle.vf v8, v16, fa0
3174; CHECK-NEXT:    vmnot.m v9, v24
3175; CHECK-NEXT:    vmorn.mm v0, v9, v8
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
3181}
3182
3183define <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
3197}
3198
3199declare <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float>, <vscale x 1 x float>, metadata, metadata)
3200define <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
3210}
3211
3212define <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
3224}
3225
3226define <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
3238}
3239
3240define <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
3248}
3249
3250define <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
3260}
3261
3262define <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
3272}
3273
3274define <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
3282}
3283
3284define <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
3294}
3295
3296define <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
3306}
3307
3308define <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
3316}
3317
3318define <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
3328}
3329
3330define <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
3340}
3341
3342define <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
3350}
3351
3352define <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
3362}
3363
3364define <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
3374}
3375
3376define <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
3386}
3387
3388define <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
3400}
3401
3402define <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
3414}
3415
3416define <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
3426}
3427
3428define <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
3441}
3442
3443define <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
3456}
3457
3458define <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
3468}
3469
3470define <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
3482}
3483
3484define <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
3496}
3497
3498define <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
3507}
3508
3509define <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
3520}
3521
3522define <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
3533}
3534
3535define <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
3544}
3545
3546define <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
3557}
3558
3559define <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
3570}
3571
3572define <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
3581}
3582
3583define <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
3594}
3595
3596define <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
3607}
3608
3609define <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
3618}
3619
3620define <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
3631}
3632
3633define <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
3644}
3645
3646define <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
3656}
3657
3658define <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
3670}
3671
3672define <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
3684}
3685
3686define <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
3697}
3698
3699define <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.vv v8, v8, v8
3705; CHECK-NEXT:    vmfle.vf v9, v9, fa0
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
3713}
3714
3715define <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
3729}
3730
3731declare <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float>, <vscale x 2 x float>, metadata, metadata)
3732define <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
3742}
3743
3744define <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
3756}
3757
3758define <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
3770}
3771
3772define <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
3780}
3781
3782define <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
3792}
3793
3794define <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
3804}
3805
3806define <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
3814}
3815
3816define <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
3826}
3827
3828define <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
3838}
3839
3840define <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
3848}
3849
3850define <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
3860}
3861
3862define <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
3872}
3873
3874define <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
3882}
3883
3884define <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
3894}
3895
3896define <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
3906}
3907
3908define <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
3918}
3919
3920define <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
3932}
3933
3934define <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
3946}
3947
3948define <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
3958}
3959
3960define <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
3973}
3974
3975define <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
3988}
3989
3990define <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
4000}
4001
4002define <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
4014}
4015
4016define <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
4028}
4029
4030define <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
4039}
4040
4041define <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
4052}
4053
4054define <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
4065}
4066
4067define <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
4076}
4077
4078define <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
4089}
4090
4091define <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
4102}
4103
4104define <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
4113}
4114
4115define <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
4126}
4127
4128define <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
4139}
4140
4141define <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
4150}
4151
4152define <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
4163}
4164
4165define <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
4176}
4177
4178define <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
4188}
4189
4190define <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
4202}
4203
4204define <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
4216}
4217
4218define <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
4229}
4230
4231define <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.vv v8, v8, v8
4237; CHECK-NEXT:    vmfle.vf v9, v9, fa0
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
4245}
4246
4247define <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
4261}
4262
4263declare <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>, metadata, metadata)
4264define <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
4274}
4275
4276define <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
4288}
4289
4290define <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
4302}
4303
4304define <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
4312}
4313
4314define <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
4324}
4325
4326define <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
4336}
4337
4338define <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
4346}
4347
4348define <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
4358}
4359
4360define <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
4370}
4371
4372define <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
4380}
4381
4382define <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
4392}
4393
4394define <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
4404}
4405
4406define <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
4414}
4415
4416define <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
4426}
4427
4428define <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
4438}
4439
4440define <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
4450}
4451
4452define <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
4464}
4465
4466define <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
4478}
4479
4480define <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
4490}
4491
4492define <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
4505}
4506
4507define <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
4520}
4521
4522define <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
4532}
4533
4534define <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
4546}
4547
4548define <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
4560}
4561
4562define <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
4571}
4572
4573define <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
4584}
4585
4586define <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
4597}
4598
4599define <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
4608}
4609
4610define <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
4621}
4622
4623define <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
4634}
4635
4636define <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
4645}
4646
4647define <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
4658}
4659
4660define <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
4671}
4672
4673define <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
4682}
4683
4684define <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
4695}
4696
4697define <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
4708}
4709
4710define <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
4720}
4721
4722define <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
4734}
4735
4736define <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
4748}
4749
4750define <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
4761}
4762
4763define <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.vv v12, v8, v8
4769; CHECK-NEXT:    vmfle.vf v8, v10, fa0
4770; CHECK-NEXT:    vmnot.m v9, v12
4771; CHECK-NEXT:    vmorn.mm v0, v9, v8
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
4777}
4778
4779define <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
4793}
4794
4795declare <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float>, <vscale x 8 x float>, metadata, metadata)
4796define <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
4806}
4807
4808define <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
4820}
4821
4822define <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
4834}
4835
4836define <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
4844}
4845
4846define <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
4856}
4857
4858define <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
4868}
4869
4870define <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
4878}
4879
4880define <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
4890}
4891
4892define <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
4902}
4903
4904define <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
4912}
4913
4914define <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
4924}
4925
4926define <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
4936}
4937
4938define <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
4946}
4947
4948define <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
4958}
4959
4960define <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
4970}
4971
4972define <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
4982}
4983
4984define <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
4996}
4997
4998define <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
5010}
5011
5012define <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
5022}
5023
5024define <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
5037}
5038
5039define <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
5052}
5053
5054define <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
5064}
5065
5066define <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
5078}
5079
5080define <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
5092}
5093
5094define <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
5103}
5104
5105define <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
5116}
5117
5118define <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
5129}
5130
5131define <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
5140}
5141
5142define <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
5153}
5154
5155define <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
5166}
5167
5168define <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
5177}
5178
5179define <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
5190}
5191
5192define <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
5203}
5204
5205define <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
5214}
5215
5216define <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
5227}
5228
5229define <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
5240}
5241
5242define <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
5252}
5253
5254define <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
5266}
5267
5268define <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
5280}
5281
5282define <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
5293}
5294
5295define <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.vv v16, v8, v8
5301; CHECK-NEXT:    vmfle.vf v8, v12, fa0
5302; CHECK-NEXT:    vmnot.m v9, v16
5303; CHECK-NEXT:    vmorn.mm v0, v9, v8
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
5309}
5310
5311define <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
5325}
5326
5327declare <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float>, <vscale x 16 x float>, metadata, metadata)
5328define <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
5338}
5339
5340define <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
5352}
5353
5354define <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
5366}
5367
5368define <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
5376}
5377
5378define <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
5388}
5389
5390define <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
5400}
5401
5402define <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
5410}
5411
5412define <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
5422}
5423
5424define <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
5434}
5435
5436define <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
5444}
5445
5446define <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
5456}
5457
5458define <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
5468}
5469
5470define <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
5478}
5479
5480define <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
5490}
5491
5492define <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
5502}
5503
5504define <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
5514}
5515
5516define <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
5528}
5529
5530define <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
5542}
5543
5544define <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
5554}
5555
5556define <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
5569}
5570
5571define <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
5584}
5585
5586define <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
5596}
5597
5598define <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
5610}
5611
5612define <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
5624}
5625
5626define <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
5635}
5636
5637define <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
5648}
5649
5650define <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
5661}
5662
5663define <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
5672}
5673
5674define <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
5685}
5686
5687define <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
5698}
5699
5700define <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
5709}
5710
5711define <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
5722}
5723
5724define <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
5735}
5736
5737define <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
5746}
5747
5748define <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
5759}
5760
5761define <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
5772}
5773
5774define <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
5784}
5785
5786define <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
5798}
5799
5800define <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
5812}
5813
5814define <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
5825}
5826
5827define <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.vv v24, v8, v8
5833; CHECK-NEXT:    vmfle.vf v8, v16, fa0
5834; CHECK-NEXT:    vmnot.m v9, v24
5835; CHECK-NEXT:    vmorn.mm v0, v9, v8
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
5841}
5842
5843define <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
5857}
5858
5859declare <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double>, <vscale x 1 x double>, metadata, metadata)
5860define <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
5870}
5871
5872define <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
5884}
5885
5886define <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
5898}
5899
5900define <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
5908}
5909
5910define <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
5920}
5921
5922define <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
5932}
5933
5934define <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
5942}
5943
5944define <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
5954}
5955
5956define <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
5966}
5967
5968define <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
5976}
5977
5978define <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
5988}
5989
5990define <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
6000}
6001
6002define <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
6010}
6011
6012define <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
6022}
6023
6024define <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
6034}
6035
6036define <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
6046}
6047
6048define <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
6060}
6061
6062define <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
6074}
6075
6076define <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
6086}
6087
6088define <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
6101}
6102
6103define <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
6116}
6117
6118define <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
6128}
6129
6130define <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
6142}
6143
6144define <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
6156}
6157
6158define <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
6167}
6168
6169define <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
6180}
6181
6182define <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
6193}
6194
6195define <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
6204}
6205
6206define <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
6217}
6218
6219define <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
6230}
6231
6232define <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
6241}
6242
6243define <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
6254}
6255
6256define <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
6267}
6268
6269define <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
6278}
6279
6280define <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
6291}
6292
6293define <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
6304}
6305
6306define <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
6316}
6317
6318define <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
6330}
6331
6332define <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
6344}
6345
6346define <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
6357}
6358
6359define <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.vv v8, v8, v8
6365; CHECK-NEXT:    vmfle.vf v9, v9, fa0
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
6373}
6374
6375define <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
6389}
6390
6391declare <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double>, metadata, metadata)
6392define <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
6402}
6403
6404define <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
6416}
6417
6418define <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
6430}
6431
6432define <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
6440}
6441
6442define <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
6452}
6453
6454define <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
6464}
6465
6466define <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
6474}
6475
6476define <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
6486}
6487
6488define <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
6498}
6499
6500define <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
6508}
6509
6510define <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
6520}
6521
6522define <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
6532}
6533
6534define <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
6542}
6543
6544define <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
6554}
6555
6556define <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
6566}
6567
6568define <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
6578}
6579
6580define <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
6592}
6593
6594define <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
6606}
6607
6608define <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
6618}
6619
6620define <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
6633}
6634
6635define <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
6648}
6649
6650define <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
6660}
6661
6662define <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
6674}
6675
6676define <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
6688}
6689
6690define <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
6699}
6700
6701define <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
6712}
6713
6714define <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
6725}
6726
6727define <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
6736}
6737
6738define <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
6749}
6750
6751define <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
6762}
6763
6764define <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
6773}
6774
6775define <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
6786}
6787
6788define <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
6799}
6800
6801define <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
6810}
6811
6812define <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
6823}
6824
6825define <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
6836}
6837
6838define <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
6848}
6849
6850define <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
6862}
6863
6864define <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
6876}
6877
6878define <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
6889}
6890
6891define <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.vv v12, v8, v8
6897; CHECK-NEXT:    vmfle.vf v8, v10, fa0
6898; CHECK-NEXT:    vmnot.m v9, v12
6899; CHECK-NEXT:    vmorn.mm v0, v9, v8
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
6905}
6906
6907define <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
6921}
6922
6923declare <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double>, <vscale x 4 x double>, metadata, metadata)
6924define <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
6934}
6935
6936define <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
6948}
6949
6950define <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
6962}
6963
6964define <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
6972}
6973
6974define <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
6984}
6985
6986define <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
6996}
6997
6998define <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
7006}
7007
7008define <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
7018}
7019
7020define <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
7030}
7031
7032define <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
7040}
7041
7042define <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
7052}
7053
7054define <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
7064}
7065
7066define <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
7074}
7075
7076define <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
7086}
7087
7088define <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
7098}
7099
7100define <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
7110}
7111
7112define <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
7124}
7125
7126define <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
7138}
7139
7140define <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
7150}
7151
7152define <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
7165}
7166
7167define <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
7180}
7181
7182define <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
7192}
7193
7194define <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
7206}
7207
7208define <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
7220}
7221
7222define <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
7231}
7232
7233define <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
7244}
7245
7246define <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
7257}
7258
7259define <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
7268}
7269
7270define <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
7281}
7282
7283define <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
7294}
7295
7296define <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
7305}
7306
7307define <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
7318}
7319
7320define <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
7331}
7332
7333define <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
7342}
7343
7344define <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
7355}
7356
7357define <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
7368}
7369
7370define <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
7380}
7381
7382define <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
7394}
7395
7396define <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
7408}
7409
7410define <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
7421}
7422
7423define <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.vv v16, v8, v8
7429; CHECK-NEXT:    vmfle.vf v8, v12, fa0
7430; CHECK-NEXT:    vmnot.m v9, v16
7431; CHECK-NEXT:    vmorn.mm v0, v9, v8
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
7437}
7438
7439define <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
7453}
7454
7455declare <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double>, <vscale x 8 x double>, metadata, metadata)
7456define <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
7466}
7467
7468define <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
7480}
7481
7482define <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
7494}
7495
7496define <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
7504}
7505
7506define <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
7516}
7517
7518define <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
7528}
7529
7530define <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
7538}
7539
7540define <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
7550}
7551
7552define <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
7562}
7563
7564define <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
7572}
7573
7574define <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
7584}
7585
7586define <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
7596}
7597
7598define <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
7606}
7607
7608define <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
7618}
7619
7620define <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
7630}
7631
7632define <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
7642}
7643
7644define <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
7656}
7657
7658define <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
7670}
7671
7672define <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
7682}
7683
7684define <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
7697}
7698
7699define <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
7712}
7713
7714define <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
7724}
7725
7726define <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
7738}
7739
7740define <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
7752}
7753
7754define <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
7763}
7764
7765define <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
7776}
7777
7778define <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
7789}
7790
7791define <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
7800}
7801
7802define <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
7813}
7814
7815define <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
7826}
7827
7828define <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
7837}
7838
7839define <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
7850}
7851
7852define <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
7863}
7864
7865define <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
7874}
7875
7876define <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
7887}
7888
7889define <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
7900}
7901
7902define <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
7912}
7913
7914define <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
7926}
7927
7928define <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
7940}
7941
7942define <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
7953}
7954
7955define <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.vv v24, v8, v8
7961; CHECK-NEXT:    vmfle.vf v8, v16, fa0
7962; CHECK-NEXT:    vmnot.m v9, v24
7963; CHECK-NEXT:    vmorn.mm v0, v9, v8
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
7969}
7970
7971define <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
7985}
7986