xref: /llvm-project/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-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 <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half>, <1 x half>, metadata, metadata)
8define <1 x i1> @fcmps_oeq_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {
9; CHECK-LABEL: fcmps_oeq_vv_v1f16:
10; CHECK:       # %bb.0:
11; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
17  ret <1 x i1> %1
18}
19
20define <1 x i1> @fcmps_oeq_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
21; CHECK-LABEL: fcmps_oeq_vf_v1f16:
22; CHECK:       # %bb.0:
23; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 0
29  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
30  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
31  ret <1 x i1> %1
32}
33
34define <1 x i1> @fcmps_oeq_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
35; CHECK-LABEL: fcmps_oeq_fv_v1f16:
36; CHECK:       # %bb.0:
37; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 0
43  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
44  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
45  ret <1 x i1> %1
46}
47
48define <1 x i1> @fcmps_ogt_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {
49; CHECK-LABEL: fcmps_ogt_vv_v1f16:
50; CHECK:       # %bb.0:
51; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
52; CHECK-NEXT:    vmflt.vv v0, v9, v8
53; CHECK-NEXT:    ret
54  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
55  ret <1 x i1> %1
56}
57
58define <1 x i1> @fcmps_ogt_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
59; CHECK-LABEL: fcmps_ogt_vf_v1f16:
60; CHECK:       # %bb.0:
61; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
62; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
63; CHECK-NEXT:    ret
64  %head = insertelement <1 x half> poison, half %b, i32 0
65  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
66  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
67  ret <1 x i1> %1
68}
69
70define <1 x i1> @fcmps_ogt_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
71; CHECK-LABEL: fcmps_ogt_fv_v1f16:
72; CHECK:       # %bb.0:
73; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
74; CHECK-NEXT:    vmflt.vf v0, v8, fa0
75; CHECK-NEXT:    ret
76  %head = insertelement <1 x half> poison, half %b, i32 0
77  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
78  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
79  ret <1 x i1> %1
80}
81
82define <1 x i1> @fcmps_oge_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {
83; CHECK-LABEL: fcmps_oge_vv_v1f16:
84; CHECK:       # %bb.0:
85; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
86; CHECK-NEXT:    vmfle.vv v0, v9, v8
87; CHECK-NEXT:    ret
88  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
89  ret <1 x i1> %1
90}
91
92define <1 x i1> @fcmps_oge_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
93; CHECK-LABEL: fcmps_oge_vf_v1f16:
94; CHECK:       # %bb.0:
95; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
96; CHECK-NEXT:    vmfge.vf v0, v8, fa0
97; CHECK-NEXT:    ret
98  %head = insertelement <1 x half> poison, half %b, i32 0
99  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
100  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
101  ret <1 x i1> %1
102}
103
104define <1 x i1> @fcmps_oge_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
105; CHECK-LABEL: fcmps_oge_fv_v1f16:
106; CHECK:       # %bb.0:
107; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
108; CHECK-NEXT:    vmfle.vf v0, v8, fa0
109; CHECK-NEXT:    ret
110  %head = insertelement <1 x half> poison, half %b, i32 0
111  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
112  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
113  ret <1 x i1> %1
114}
115
116define <1 x i1> @fcmps_olt_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {
117; CHECK-LABEL: fcmps_olt_vv_v1f16:
118; CHECK:       # %bb.0:
119; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
120; CHECK-NEXT:    vmflt.vv v0, v8, v9
121; CHECK-NEXT:    ret
122  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
123  ret <1 x i1> %1
124}
125
126define <1 x i1> @fcmps_olt_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
127; CHECK-LABEL: fcmps_olt_vf_v1f16:
128; CHECK:       # %bb.0:
129; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
130; CHECK-NEXT:    vmflt.vf v0, v8, fa0
131; CHECK-NEXT:    ret
132  %head = insertelement <1 x half> poison, half %b, i32 0
133  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
134  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
135  ret <1 x i1> %1
136}
137
138define <1 x i1> @fcmps_olt_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
139; CHECK-LABEL: fcmps_olt_fv_v1f16:
140; CHECK:       # %bb.0:
141; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
142; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
143; CHECK-NEXT:    ret
144  %head = insertelement <1 x half> poison, half %b, i32 0
145  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
146  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
147  ret <1 x i1> %1
148}
149
150define <1 x i1> @fcmps_ole_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {
151; CHECK-LABEL: fcmps_ole_vv_v1f16:
152; CHECK:       # %bb.0:
153; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
154; CHECK-NEXT:    vmfle.vv v0, v8, v9
155; CHECK-NEXT:    ret
156  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
157  ret <1 x i1> %1
158}
159
160define <1 x i1> @fcmps_ole_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
161; CHECK-LABEL: fcmps_ole_vf_v1f16:
162; CHECK:       # %bb.0:
163; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
164; CHECK-NEXT:    vmfle.vf v0, v8, fa0
165; CHECK-NEXT:    ret
166  %head = insertelement <1 x half> poison, half %b, i32 0
167  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
168  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
169  ret <1 x i1> %1
170}
171
172define <1 x i1> @fcmps_ole_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
173; CHECK-LABEL: fcmps_ole_fv_v1f16:
174; CHECK:       # %bb.0:
175; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
176; CHECK-NEXT:    vmfge.vf v0, v8, fa0
177; CHECK-NEXT:    ret
178  %head = insertelement <1 x half> poison, half %b, i32 0
179  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
180  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
181  ret <1 x i1> %1
182}
183
184define <1 x i1> @fcmps_one_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {
185; CHECK-LABEL: fcmps_one_vv_v1f16:
186; CHECK:       # %bb.0:
187; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
193  ret <1 x i1> %1
194}
195
196define <1 x i1> @fcmps_one_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
197; CHECK-LABEL: fcmps_one_vf_v1f16:
198; CHECK:       # %bb.0:
199; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 0
205  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
206  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
207  ret <1 x i1> %1
208}
209
210define <1 x i1> @fcmps_one_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
211; CHECK-LABEL: fcmps_one_fv_v1f16:
212; CHECK:       # %bb.0:
213; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 0
219  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
220  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
221  ret <1 x i1> %1
222}
223
224define <1 x i1> @fcmps_ord_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {
225; CHECK-LABEL: fcmps_ord_vv_v1f16:
226; CHECK:       # %bb.0:
227; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
233  ret <1 x i1> %1
234}
235
236define <1 x i1> @fcmps_ord_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
237; CHECK-LABEL: fcmps_ord_vf_v1f16:
238; CHECK:       # %bb.0:
239; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
240; CHECK-NEXT:    vfmv.s.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 <1 x half> poison, half %b, i32 0
246  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
247  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
248  ret <1 x i1> %1
249}
250
251define <1 x i1> @fcmps_ord_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
252; CHECK-LABEL: fcmps_ord_fv_v1f16:
253; CHECK:       # %bb.0:
254; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
255; CHECK-NEXT:    vfmv.s.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 <1 x half> poison, half %b, i32 0
261  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
262  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
263  ret <1 x i1> %1
264}
265
266define <1 x i1> @fcmps_ueq_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {
267; CHECK-LABEL: fcmps_ueq_vv_v1f16:
268; CHECK:       # %bb.0:
269; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
275  ret <1 x i1> %1
276}
277
278define <1 x i1> @fcmps_ueq_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
279; CHECK-LABEL: fcmps_ueq_vf_v1f16:
280; CHECK:       # %bb.0:
281; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 0
287  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
288  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
289  ret <1 x i1> %1
290}
291
292define <1 x i1> @fcmps_ueq_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
293; CHECK-LABEL: fcmps_ueq_fv_v1f16:
294; CHECK:       # %bb.0:
295; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 0
301  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
302  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
303  ret <1 x i1> %1
304}
305
306define <1 x i1> @fcmps_ugt_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {
307; CHECK-LABEL: fcmps_ugt_vv_v1f16:
308; CHECK:       # %bb.0:
309; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
314  ret <1 x i1> %1
315}
316
317define <1 x i1> @fcmps_ugt_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
318; CHECK-LABEL: fcmps_ugt_vf_v1f16:
319; CHECK:       # %bb.0:
320; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 0
325  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
326  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
327  ret <1 x i1> %1
328}
329
330define <1 x i1> @fcmps_ugt_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
331; CHECK-LABEL: fcmps_ugt_fv_v1f16:
332; CHECK:       # %bb.0:
333; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 0
338  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
339  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
340  ret <1 x i1> %1
341}
342
343define <1 x i1> @fcmps_uge_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {
344; CHECK-LABEL: fcmps_uge_vv_v1f16:
345; CHECK:       # %bb.0:
346; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
351  ret <1 x i1> %1
352}
353
354define <1 x i1> @fcmps_uge_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
355; CHECK-LABEL: fcmps_uge_vf_v1f16:
356; CHECK:       # %bb.0:
357; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 0
362  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
363  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
364  ret <1 x i1> %1
365}
366
367define <1 x i1> @fcmps_uge_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
368; CHECK-LABEL: fcmps_uge_fv_v1f16:
369; CHECK:       # %bb.0:
370; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 0
375  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
376  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
377  ret <1 x i1> %1
378}
379
380define <1 x i1> @fcmps_ult_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {
381; CHECK-LABEL: fcmps_ult_vv_v1f16:
382; CHECK:       # %bb.0:
383; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
388  ret <1 x i1> %1
389}
390
391define <1 x i1> @fcmps_ult_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
392; CHECK-LABEL: fcmps_ult_vf_v1f16:
393; CHECK:       # %bb.0:
394; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 0
399  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
400  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
401  ret <1 x i1> %1
402}
403
404define <1 x i1> @fcmps_ult_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
405; CHECK-LABEL: fcmps_ult_fv_v1f16:
406; CHECK:       # %bb.0:
407; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 0
412  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
413  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
414  ret <1 x i1> %1
415}
416
417define <1 x i1> @fcmps_ule_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {
418; CHECK-LABEL: fcmps_ule_vv_v1f16:
419; CHECK:       # %bb.0:
420; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
425  ret <1 x i1> %1
426}
427
428define <1 x i1> @fcmps_ule_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
429; CHECK-LABEL: fcmps_ule_vf_v1f16:
430; CHECK:       # %bb.0:
431; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 0
436  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
437  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
438  ret <1 x i1> %1
439}
440
441define <1 x i1> @fcmps_ule_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
442; CHECK-LABEL: fcmps_ule_fv_v1f16:
443; CHECK:       # %bb.0:
444; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 0
449  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
450  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
451  ret <1 x i1> %1
452}
453
454define <1 x i1> @fcmps_une_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {
455; CHECK-LABEL: fcmps_une_vv_v1f16:
456; CHECK:       # %bb.0:
457; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
463  ret <1 x i1> %1
464}
465
466define <1 x i1> @fcmps_une_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
467; CHECK-LABEL: fcmps_une_vf_v1f16:
468; CHECK:       # %bb.0:
469; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 0
475  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
476  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
477  ret <1 x i1> %1
478}
479
480define <1 x i1> @fcmps_une_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
481; CHECK-LABEL: fcmps_une_fv_v1f16:
482; CHECK:       # %bb.0:
483; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 0
489  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
490  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
491  ret <1 x i1> %1
492}
493
494define <1 x i1> @fcmps_uno_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {
495; CHECK-LABEL: fcmps_uno_vv_v1f16:
496; CHECK:       # %bb.0:
497; CHECK-NEXT:    vsetivli zero, 1, 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 <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
504  ret <1 x i1> %1
505}
506
507define <1 x i1> @fcmps_uno_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
508; CHECK-LABEL: fcmps_uno_vf_v1f16:
509; CHECK:       # %bb.0:
510; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
511; CHECK-NEXT:    vfmv.s.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 <1 x half> poison, half %b, i32 0
518  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
519  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
520  ret <1 x i1> %1
521}
522
523define <1 x i1> @fcmps_uno_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
524; CHECK-LABEL: fcmps_uno_fv_v1f16:
525; CHECK:       # %bb.0:
526; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
527; CHECK-NEXT:    vfmv.s.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 <1 x half> poison, half %b, i32 0
534  %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer
535  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
536  ret <1 x i1> %1
537}
538
539declare <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half>, <2 x half>, metadata, metadata)
540define <2 x i1> @fcmps_oeq_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {
541; CHECK-LABEL: fcmps_oeq_vv_v2f16:
542; CHECK:       # %bb.0:
543; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, 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 <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
549  ret <2 x i1> %1
550}
551
552define <2 x i1> @fcmps_oeq_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
553; CHECK-LABEL: fcmps_oeq_vf_v2f16:
554; CHECK:       # %bb.0:
555; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 0
561  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
562  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
563  ret <2 x i1> %1
564}
565
566define <2 x i1> @fcmps_oeq_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
567; CHECK-LABEL: fcmps_oeq_fv_v2f16:
568; CHECK:       # %bb.0:
569; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 0
575  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
576  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
577  ret <2 x i1> %1
578}
579
580define <2 x i1> @fcmps_ogt_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {
581; CHECK-LABEL: fcmps_ogt_vv_v2f16:
582; CHECK:       # %bb.0:
583; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
584; CHECK-NEXT:    vmflt.vv v0, v9, v8
585; CHECK-NEXT:    ret
586  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
587  ret <2 x i1> %1
588}
589
590define <2 x i1> @fcmps_ogt_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
591; CHECK-LABEL: fcmps_ogt_vf_v2f16:
592; CHECK:       # %bb.0:
593; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
594; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
595; CHECK-NEXT:    ret
596  %head = insertelement <2 x half> poison, half %b, i32 0
597  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
598  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
599  ret <2 x i1> %1
600}
601
602define <2 x i1> @fcmps_ogt_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
603; CHECK-LABEL: fcmps_ogt_fv_v2f16:
604; CHECK:       # %bb.0:
605; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
606; CHECK-NEXT:    vmflt.vf v0, v8, fa0
607; CHECK-NEXT:    ret
608  %head = insertelement <2 x half> poison, half %b, i32 0
609  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
610  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
611  ret <2 x i1> %1
612}
613
614define <2 x i1> @fcmps_oge_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {
615; CHECK-LABEL: fcmps_oge_vv_v2f16:
616; CHECK:       # %bb.0:
617; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
618; CHECK-NEXT:    vmfle.vv v0, v9, v8
619; CHECK-NEXT:    ret
620  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
621  ret <2 x i1> %1
622}
623
624define <2 x i1> @fcmps_oge_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
625; CHECK-LABEL: fcmps_oge_vf_v2f16:
626; CHECK:       # %bb.0:
627; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
628; CHECK-NEXT:    vmfge.vf v0, v8, fa0
629; CHECK-NEXT:    ret
630  %head = insertelement <2 x half> poison, half %b, i32 0
631  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
632  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
633  ret <2 x i1> %1
634}
635
636define <2 x i1> @fcmps_oge_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
637; CHECK-LABEL: fcmps_oge_fv_v2f16:
638; CHECK:       # %bb.0:
639; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
640; CHECK-NEXT:    vmfle.vf v0, v8, fa0
641; CHECK-NEXT:    ret
642  %head = insertelement <2 x half> poison, half %b, i32 0
643  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
644  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
645  ret <2 x i1> %1
646}
647
648define <2 x i1> @fcmps_olt_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {
649; CHECK-LABEL: fcmps_olt_vv_v2f16:
650; CHECK:       # %bb.0:
651; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
652; CHECK-NEXT:    vmflt.vv v0, v8, v9
653; CHECK-NEXT:    ret
654  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
655  ret <2 x i1> %1
656}
657
658define <2 x i1> @fcmps_olt_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
659; CHECK-LABEL: fcmps_olt_vf_v2f16:
660; CHECK:       # %bb.0:
661; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
662; CHECK-NEXT:    vmflt.vf v0, v8, fa0
663; CHECK-NEXT:    ret
664  %head = insertelement <2 x half> poison, half %b, i32 0
665  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
666  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
667  ret <2 x i1> %1
668}
669
670define <2 x i1> @fcmps_olt_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
671; CHECK-LABEL: fcmps_olt_fv_v2f16:
672; CHECK:       # %bb.0:
673; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
674; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
675; CHECK-NEXT:    ret
676  %head = insertelement <2 x half> poison, half %b, i32 0
677  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
678  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
679  ret <2 x i1> %1
680}
681
682define <2 x i1> @fcmps_ole_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {
683; CHECK-LABEL: fcmps_ole_vv_v2f16:
684; CHECK:       # %bb.0:
685; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
686; CHECK-NEXT:    vmfle.vv v0, v8, v9
687; CHECK-NEXT:    ret
688  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
689  ret <2 x i1> %1
690}
691
692define <2 x i1> @fcmps_ole_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
693; CHECK-LABEL: fcmps_ole_vf_v2f16:
694; CHECK:       # %bb.0:
695; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
696; CHECK-NEXT:    vmfle.vf v0, v8, fa0
697; CHECK-NEXT:    ret
698  %head = insertelement <2 x half> poison, half %b, i32 0
699  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
700  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
701  ret <2 x i1> %1
702}
703
704define <2 x i1> @fcmps_ole_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
705; CHECK-LABEL: fcmps_ole_fv_v2f16:
706; CHECK:       # %bb.0:
707; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
708; CHECK-NEXT:    vmfge.vf v0, v8, fa0
709; CHECK-NEXT:    ret
710  %head = insertelement <2 x half> poison, half %b, i32 0
711  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
712  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
713  ret <2 x i1> %1
714}
715
716define <2 x i1> @fcmps_one_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {
717; CHECK-LABEL: fcmps_one_vv_v2f16:
718; CHECK:       # %bb.0:
719; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, 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 <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
725  ret <2 x i1> %1
726}
727
728define <2 x i1> @fcmps_one_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
729; CHECK-LABEL: fcmps_one_vf_v2f16:
730; CHECK:       # %bb.0:
731; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 0
737  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
738  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
739  ret <2 x i1> %1
740}
741
742define <2 x i1> @fcmps_one_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
743; CHECK-LABEL: fcmps_one_fv_v2f16:
744; CHECK:       # %bb.0:
745; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 0
751  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
752  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
753  ret <2 x i1> %1
754}
755
756define <2 x i1> @fcmps_ord_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {
757; CHECK-LABEL: fcmps_ord_vv_v2f16:
758; CHECK:       # %bb.0:
759; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, 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 <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
765  ret <2 x i1> %1
766}
767
768define <2 x i1> @fcmps_ord_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
769; CHECK-LABEL: fcmps_ord_vf_v2f16:
770; CHECK:       # %bb.0:
771; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 0
778  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
779  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
780  ret <2 x i1> %1
781}
782
783define <2 x i1> @fcmps_ord_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
784; CHECK-LABEL: fcmps_ord_fv_v2f16:
785; CHECK:       # %bb.0:
786; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 0
793  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
794  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
795  ret <2 x i1> %1
796}
797
798define <2 x i1> @fcmps_ueq_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {
799; CHECK-LABEL: fcmps_ueq_vv_v2f16:
800; CHECK:       # %bb.0:
801; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, 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 <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
807  ret <2 x i1> %1
808}
809
810define <2 x i1> @fcmps_ueq_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
811; CHECK-LABEL: fcmps_ueq_vf_v2f16:
812; CHECK:       # %bb.0:
813; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 0
819  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
820  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
821  ret <2 x i1> %1
822}
823
824define <2 x i1> @fcmps_ueq_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
825; CHECK-LABEL: fcmps_ueq_fv_v2f16:
826; CHECK:       # %bb.0:
827; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 0
833  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
834  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
835  ret <2 x i1> %1
836}
837
838define <2 x i1> @fcmps_ugt_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {
839; CHECK-LABEL: fcmps_ugt_vv_v2f16:
840; CHECK:       # %bb.0:
841; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
842; CHECK-NEXT:    vmfle.vv v8, v8, v9
843; CHECK-NEXT:    vmnot.m v0, v8
844; CHECK-NEXT:    ret
845  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
846  ret <2 x i1> %1
847}
848
849define <2 x i1> @fcmps_ugt_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
850; CHECK-LABEL: fcmps_ugt_vf_v2f16:
851; CHECK:       # %bb.0:
852; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
853; CHECK-NEXT:    vmfle.vf v8, v8, fa0
854; CHECK-NEXT:    vmnot.m v0, v8
855; CHECK-NEXT:    ret
856  %head = insertelement <2 x half> poison, half %b, i32 0
857  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
858  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
859  ret <2 x i1> %1
860}
861
862define <2 x i1> @fcmps_ugt_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
863; CHECK-LABEL: fcmps_ugt_fv_v2f16:
864; CHECK:       # %bb.0:
865; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
866; CHECK-NEXT:    vmfge.vf v8, v8, fa0
867; CHECK-NEXT:    vmnot.m v0, v8
868; CHECK-NEXT:    ret
869  %head = insertelement <2 x half> poison, half %b, i32 0
870  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
871  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
872  ret <2 x i1> %1
873}
874
875define <2 x i1> @fcmps_uge_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {
876; CHECK-LABEL: fcmps_uge_vv_v2f16:
877; CHECK:       # %bb.0:
878; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
879; CHECK-NEXT:    vmflt.vv v8, v8, v9
880; CHECK-NEXT:    vmnot.m v0, v8
881; CHECK-NEXT:    ret
882  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
883  ret <2 x i1> %1
884}
885
886define <2 x i1> @fcmps_uge_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
887; CHECK-LABEL: fcmps_uge_vf_v2f16:
888; CHECK:       # %bb.0:
889; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
890; CHECK-NEXT:    vmflt.vf v8, v8, fa0
891; CHECK-NEXT:    vmnot.m v0, v8
892; CHECK-NEXT:    ret
893  %head = insertelement <2 x half> poison, half %b, i32 0
894  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
895  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
896  ret <2 x i1> %1
897}
898
899define <2 x i1> @fcmps_uge_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
900; CHECK-LABEL: fcmps_uge_fv_v2f16:
901; CHECK:       # %bb.0:
902; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
903; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
904; CHECK-NEXT:    vmnot.m v0, v8
905; CHECK-NEXT:    ret
906  %head = insertelement <2 x half> poison, half %b, i32 0
907  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
908  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
909  ret <2 x i1> %1
910}
911
912define <2 x i1> @fcmps_ult_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {
913; CHECK-LABEL: fcmps_ult_vv_v2f16:
914; CHECK:       # %bb.0:
915; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
916; CHECK-NEXT:    vmfle.vv v8, v9, v8
917; CHECK-NEXT:    vmnot.m v0, v8
918; CHECK-NEXT:    ret
919  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
920  ret <2 x i1> %1
921}
922
923define <2 x i1> @fcmps_ult_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
924; CHECK-LABEL: fcmps_ult_vf_v2f16:
925; CHECK:       # %bb.0:
926; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
927; CHECK-NEXT:    vmfge.vf v8, v8, fa0
928; CHECK-NEXT:    vmnot.m v0, v8
929; CHECK-NEXT:    ret
930  %head = insertelement <2 x half> poison, half %b, i32 0
931  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
932  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
933  ret <2 x i1> %1
934}
935
936define <2 x i1> @fcmps_ult_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
937; CHECK-LABEL: fcmps_ult_fv_v2f16:
938; CHECK:       # %bb.0:
939; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
940; CHECK-NEXT:    vmfle.vf v8, v8, fa0
941; CHECK-NEXT:    vmnot.m v0, v8
942; CHECK-NEXT:    ret
943  %head = insertelement <2 x half> poison, half %b, i32 0
944  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
945  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
946  ret <2 x i1> %1
947}
948
949define <2 x i1> @fcmps_ule_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {
950; CHECK-LABEL: fcmps_ule_vv_v2f16:
951; CHECK:       # %bb.0:
952; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
953; CHECK-NEXT:    vmflt.vv v8, v9, v8
954; CHECK-NEXT:    vmnot.m v0, v8
955; CHECK-NEXT:    ret
956  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
957  ret <2 x i1> %1
958}
959
960define <2 x i1> @fcmps_ule_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
961; CHECK-LABEL: fcmps_ule_vf_v2f16:
962; CHECK:       # %bb.0:
963; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
964; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
965; CHECK-NEXT:    vmnot.m v0, v8
966; CHECK-NEXT:    ret
967  %head = insertelement <2 x half> poison, half %b, i32 0
968  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
969  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
970  ret <2 x i1> %1
971}
972
973define <2 x i1> @fcmps_ule_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
974; CHECK-LABEL: fcmps_ule_fv_v2f16:
975; CHECK:       # %bb.0:
976; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
977; CHECK-NEXT:    vmflt.vf v8, v8, fa0
978; CHECK-NEXT:    vmnot.m v0, v8
979; CHECK-NEXT:    ret
980  %head = insertelement <2 x half> poison, half %b, i32 0
981  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
982  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
983  ret <2 x i1> %1
984}
985
986define <2 x i1> @fcmps_une_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {
987; CHECK-LABEL: fcmps_une_vv_v2f16:
988; CHECK:       # %bb.0:
989; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, 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 <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
995  ret <2 x i1> %1
996}
997
998define <2 x i1> @fcmps_une_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
999; CHECK-LABEL: fcmps_une_vf_v2f16:
1000; CHECK:       # %bb.0:
1001; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 0
1007  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
1008  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
1009  ret <2 x i1> %1
1010}
1011
1012define <2 x i1> @fcmps_une_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
1013; CHECK-LABEL: fcmps_une_fv_v2f16:
1014; CHECK:       # %bb.0:
1015; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 0
1021  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
1022  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
1023  ret <2 x i1> %1
1024}
1025
1026define <2 x i1> @fcmps_uno_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {
1027; CHECK-LABEL: fcmps_uno_vv_v2f16:
1028; CHECK:       # %bb.0:
1029; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, 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 <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
1036  ret <2 x i1> %1
1037}
1038
1039define <2 x i1> @fcmps_uno_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
1040; CHECK-LABEL: fcmps_uno_vf_v2f16:
1041; CHECK:       # %bb.0:
1042; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 0
1050  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
1051  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
1052  ret <2 x i1> %1
1053}
1054
1055define <2 x i1> @fcmps_uno_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
1056; CHECK-LABEL: fcmps_uno_fv_v2f16:
1057; CHECK:       # %bb.0:
1058; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 0
1066  %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer
1067  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
1068  ret <2 x i1> %1
1069}
1070
1071declare <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half>, <4 x half>, metadata, metadata)
1072define <4 x i1> @fcmps_oeq_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {
1073; CHECK-LABEL: fcmps_oeq_vv_v4f16:
1074; CHECK:       # %bb.0:
1075; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, 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 <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
1081  ret <4 x i1> %1
1082}
1083
1084define <4 x i1> @fcmps_oeq_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1085; CHECK-LABEL: fcmps_oeq_vf_v4f16:
1086; CHECK:       # %bb.0:
1087; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 0
1093  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1094  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
1095  ret <4 x i1> %1
1096}
1097
1098define <4 x i1> @fcmps_oeq_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1099; CHECK-LABEL: fcmps_oeq_fv_v4f16:
1100; CHECK:       # %bb.0:
1101; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 0
1107  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1108  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
1109  ret <4 x i1> %1
1110}
1111
1112define <4 x i1> @fcmps_ogt_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {
1113; CHECK-LABEL: fcmps_ogt_vv_v4f16:
1114; CHECK:       # %bb.0:
1115; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1116; CHECK-NEXT:    vmflt.vv v0, v9, v8
1117; CHECK-NEXT:    ret
1118  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
1119  ret <4 x i1> %1
1120}
1121
1122define <4 x i1> @fcmps_ogt_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1123; CHECK-LABEL: fcmps_ogt_vf_v4f16:
1124; CHECK:       # %bb.0:
1125; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1126; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
1127; CHECK-NEXT:    ret
1128  %head = insertelement <4 x half> poison, half %b, i32 0
1129  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1130  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
1131  ret <4 x i1> %1
1132}
1133
1134define <4 x i1> @fcmps_ogt_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1135; CHECK-LABEL: fcmps_ogt_fv_v4f16:
1136; CHECK:       # %bb.0:
1137; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1138; CHECK-NEXT:    vmflt.vf v0, v8, fa0
1139; CHECK-NEXT:    ret
1140  %head = insertelement <4 x half> poison, half %b, i32 0
1141  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1142  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
1143  ret <4 x i1> %1
1144}
1145
1146define <4 x i1> @fcmps_oge_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {
1147; CHECK-LABEL: fcmps_oge_vv_v4f16:
1148; CHECK:       # %bb.0:
1149; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1150; CHECK-NEXT:    vmfle.vv v0, v9, v8
1151; CHECK-NEXT:    ret
1152  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
1153  ret <4 x i1> %1
1154}
1155
1156define <4 x i1> @fcmps_oge_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1157; CHECK-LABEL: fcmps_oge_vf_v4f16:
1158; CHECK:       # %bb.0:
1159; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1160; CHECK-NEXT:    vmfge.vf v0, v8, fa0
1161; CHECK-NEXT:    ret
1162  %head = insertelement <4 x half> poison, half %b, i32 0
1163  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1164  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
1165  ret <4 x i1> %1
1166}
1167
1168define <4 x i1> @fcmps_oge_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1169; CHECK-LABEL: fcmps_oge_fv_v4f16:
1170; CHECK:       # %bb.0:
1171; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1172; CHECK-NEXT:    vmfle.vf v0, v8, fa0
1173; CHECK-NEXT:    ret
1174  %head = insertelement <4 x half> poison, half %b, i32 0
1175  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1176  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
1177  ret <4 x i1> %1
1178}
1179
1180define <4 x i1> @fcmps_olt_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {
1181; CHECK-LABEL: fcmps_olt_vv_v4f16:
1182; CHECK:       # %bb.0:
1183; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1184; CHECK-NEXT:    vmflt.vv v0, v8, v9
1185; CHECK-NEXT:    ret
1186  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
1187  ret <4 x i1> %1
1188}
1189
1190define <4 x i1> @fcmps_olt_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1191; CHECK-LABEL: fcmps_olt_vf_v4f16:
1192; CHECK:       # %bb.0:
1193; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1194; CHECK-NEXT:    vmflt.vf v0, v8, fa0
1195; CHECK-NEXT:    ret
1196  %head = insertelement <4 x half> poison, half %b, i32 0
1197  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1198  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
1199  ret <4 x i1> %1
1200}
1201
1202define <4 x i1> @fcmps_olt_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1203; CHECK-LABEL: fcmps_olt_fv_v4f16:
1204; CHECK:       # %bb.0:
1205; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1206; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
1207; CHECK-NEXT:    ret
1208  %head = insertelement <4 x half> poison, half %b, i32 0
1209  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1210  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
1211  ret <4 x i1> %1
1212}
1213
1214define <4 x i1> @fcmps_ole_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {
1215; CHECK-LABEL: fcmps_ole_vv_v4f16:
1216; CHECK:       # %bb.0:
1217; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1218; CHECK-NEXT:    vmfle.vv v0, v8, v9
1219; CHECK-NEXT:    ret
1220  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
1221  ret <4 x i1> %1
1222}
1223
1224define <4 x i1> @fcmps_ole_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1225; CHECK-LABEL: fcmps_ole_vf_v4f16:
1226; CHECK:       # %bb.0:
1227; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1228; CHECK-NEXT:    vmfle.vf v0, v8, fa0
1229; CHECK-NEXT:    ret
1230  %head = insertelement <4 x half> poison, half %b, i32 0
1231  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1232  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
1233  ret <4 x i1> %1
1234}
1235
1236define <4 x i1> @fcmps_ole_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1237; CHECK-LABEL: fcmps_ole_fv_v4f16:
1238; CHECK:       # %bb.0:
1239; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1240; CHECK-NEXT:    vmfge.vf v0, v8, fa0
1241; CHECK-NEXT:    ret
1242  %head = insertelement <4 x half> poison, half %b, i32 0
1243  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1244  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
1245  ret <4 x i1> %1
1246}
1247
1248define <4 x i1> @fcmps_one_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {
1249; CHECK-LABEL: fcmps_one_vv_v4f16:
1250; CHECK:       # %bb.0:
1251; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, 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 <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
1257  ret <4 x i1> %1
1258}
1259
1260define <4 x i1> @fcmps_one_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1261; CHECK-LABEL: fcmps_one_vf_v4f16:
1262; CHECK:       # %bb.0:
1263; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 0
1269  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1270  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
1271  ret <4 x i1> %1
1272}
1273
1274define <4 x i1> @fcmps_one_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1275; CHECK-LABEL: fcmps_one_fv_v4f16:
1276; CHECK:       # %bb.0:
1277; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 0
1283  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1284  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
1285  ret <4 x i1> %1
1286}
1287
1288define <4 x i1> @fcmps_ord_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {
1289; CHECK-LABEL: fcmps_ord_vv_v4f16:
1290; CHECK:       # %bb.0:
1291; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, 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 <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
1297  ret <4 x i1> %1
1298}
1299
1300define <4 x i1> @fcmps_ord_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1301; CHECK-LABEL: fcmps_ord_vf_v4f16:
1302; CHECK:       # %bb.0:
1303; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 0
1310  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1311  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
1312  ret <4 x i1> %1
1313}
1314
1315define <4 x i1> @fcmps_ord_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1316; CHECK-LABEL: fcmps_ord_fv_v4f16:
1317; CHECK:       # %bb.0:
1318; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 0
1325  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1326  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
1327  ret <4 x i1> %1
1328}
1329
1330define <4 x i1> @fcmps_ueq_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {
1331; CHECK-LABEL: fcmps_ueq_vv_v4f16:
1332; CHECK:       # %bb.0:
1333; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, 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 <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
1339  ret <4 x i1> %1
1340}
1341
1342define <4 x i1> @fcmps_ueq_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1343; CHECK-LABEL: fcmps_ueq_vf_v4f16:
1344; CHECK:       # %bb.0:
1345; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 0
1351  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1352  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
1353  ret <4 x i1> %1
1354}
1355
1356define <4 x i1> @fcmps_ueq_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1357; CHECK-LABEL: fcmps_ueq_fv_v4f16:
1358; CHECK:       # %bb.0:
1359; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 0
1365  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1366  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
1367  ret <4 x i1> %1
1368}
1369
1370define <4 x i1> @fcmps_ugt_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {
1371; CHECK-LABEL: fcmps_ugt_vv_v4f16:
1372; CHECK:       # %bb.0:
1373; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1374; CHECK-NEXT:    vmfle.vv v8, v8, v9
1375; CHECK-NEXT:    vmnot.m v0, v8
1376; CHECK-NEXT:    ret
1377  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
1378  ret <4 x i1> %1
1379}
1380
1381define <4 x i1> @fcmps_ugt_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1382; CHECK-LABEL: fcmps_ugt_vf_v4f16:
1383; CHECK:       # %bb.0:
1384; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1385; CHECK-NEXT:    vmfle.vf v8, v8, fa0
1386; CHECK-NEXT:    vmnot.m v0, v8
1387; CHECK-NEXT:    ret
1388  %head = insertelement <4 x half> poison, half %b, i32 0
1389  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1390  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
1391  ret <4 x i1> %1
1392}
1393
1394define <4 x i1> @fcmps_ugt_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1395; CHECK-LABEL: fcmps_ugt_fv_v4f16:
1396; CHECK:       # %bb.0:
1397; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1398; CHECK-NEXT:    vmfge.vf v8, v8, fa0
1399; CHECK-NEXT:    vmnot.m v0, v8
1400; CHECK-NEXT:    ret
1401  %head = insertelement <4 x half> poison, half %b, i32 0
1402  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1403  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
1404  ret <4 x i1> %1
1405}
1406
1407define <4 x i1> @fcmps_uge_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {
1408; CHECK-LABEL: fcmps_uge_vv_v4f16:
1409; CHECK:       # %bb.0:
1410; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1411; CHECK-NEXT:    vmflt.vv v8, v8, v9
1412; CHECK-NEXT:    vmnot.m v0, v8
1413; CHECK-NEXT:    ret
1414  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
1415  ret <4 x i1> %1
1416}
1417
1418define <4 x i1> @fcmps_uge_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1419; CHECK-LABEL: fcmps_uge_vf_v4f16:
1420; CHECK:       # %bb.0:
1421; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1422; CHECK-NEXT:    vmflt.vf v8, v8, fa0
1423; CHECK-NEXT:    vmnot.m v0, v8
1424; CHECK-NEXT:    ret
1425  %head = insertelement <4 x half> poison, half %b, i32 0
1426  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1427  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
1428  ret <4 x i1> %1
1429}
1430
1431define <4 x i1> @fcmps_uge_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1432; CHECK-LABEL: fcmps_uge_fv_v4f16:
1433; CHECK:       # %bb.0:
1434; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1435; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
1436; CHECK-NEXT:    vmnot.m v0, v8
1437; CHECK-NEXT:    ret
1438  %head = insertelement <4 x half> poison, half %b, i32 0
1439  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1440  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
1441  ret <4 x i1> %1
1442}
1443
1444define <4 x i1> @fcmps_ult_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {
1445; CHECK-LABEL: fcmps_ult_vv_v4f16:
1446; CHECK:       # %bb.0:
1447; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1448; CHECK-NEXT:    vmfle.vv v8, v9, v8
1449; CHECK-NEXT:    vmnot.m v0, v8
1450; CHECK-NEXT:    ret
1451  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
1452  ret <4 x i1> %1
1453}
1454
1455define <4 x i1> @fcmps_ult_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1456; CHECK-LABEL: fcmps_ult_vf_v4f16:
1457; CHECK:       # %bb.0:
1458; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1459; CHECK-NEXT:    vmfge.vf v8, v8, fa0
1460; CHECK-NEXT:    vmnot.m v0, v8
1461; CHECK-NEXT:    ret
1462  %head = insertelement <4 x half> poison, half %b, i32 0
1463  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1464  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
1465  ret <4 x i1> %1
1466}
1467
1468define <4 x i1> @fcmps_ult_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1469; CHECK-LABEL: fcmps_ult_fv_v4f16:
1470; CHECK:       # %bb.0:
1471; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1472; CHECK-NEXT:    vmfle.vf v8, v8, fa0
1473; CHECK-NEXT:    vmnot.m v0, v8
1474; CHECK-NEXT:    ret
1475  %head = insertelement <4 x half> poison, half %b, i32 0
1476  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1477  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
1478  ret <4 x i1> %1
1479}
1480
1481define <4 x i1> @fcmps_ule_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {
1482; CHECK-LABEL: fcmps_ule_vv_v4f16:
1483; CHECK:       # %bb.0:
1484; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1485; CHECK-NEXT:    vmflt.vv v8, v9, v8
1486; CHECK-NEXT:    vmnot.m v0, v8
1487; CHECK-NEXT:    ret
1488  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
1489  ret <4 x i1> %1
1490}
1491
1492define <4 x i1> @fcmps_ule_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1493; CHECK-LABEL: fcmps_ule_vf_v4f16:
1494; CHECK:       # %bb.0:
1495; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1496; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
1497; CHECK-NEXT:    vmnot.m v0, v8
1498; CHECK-NEXT:    ret
1499  %head = insertelement <4 x half> poison, half %b, i32 0
1500  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1501  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
1502  ret <4 x i1> %1
1503}
1504
1505define <4 x i1> @fcmps_ule_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1506; CHECK-LABEL: fcmps_ule_fv_v4f16:
1507; CHECK:       # %bb.0:
1508; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
1509; CHECK-NEXT:    vmflt.vf v8, v8, fa0
1510; CHECK-NEXT:    vmnot.m v0, v8
1511; CHECK-NEXT:    ret
1512  %head = insertelement <4 x half> poison, half %b, i32 0
1513  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1514  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
1515  ret <4 x i1> %1
1516}
1517
1518define <4 x i1> @fcmps_une_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {
1519; CHECK-LABEL: fcmps_une_vv_v4f16:
1520; CHECK:       # %bb.0:
1521; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, 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 <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
1527  ret <4 x i1> %1
1528}
1529
1530define <4 x i1> @fcmps_une_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1531; CHECK-LABEL: fcmps_une_vf_v4f16:
1532; CHECK:       # %bb.0:
1533; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 0
1539  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1540  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
1541  ret <4 x i1> %1
1542}
1543
1544define <4 x i1> @fcmps_une_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1545; CHECK-LABEL: fcmps_une_fv_v4f16:
1546; CHECK:       # %bb.0:
1547; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 0
1553  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1554  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
1555  ret <4 x i1> %1
1556}
1557
1558define <4 x i1> @fcmps_uno_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {
1559; CHECK-LABEL: fcmps_uno_vv_v4f16:
1560; CHECK:       # %bb.0:
1561; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, 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 <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
1568  ret <4 x i1> %1
1569}
1570
1571define <4 x i1> @fcmps_uno_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1572; CHECK-LABEL: fcmps_uno_vf_v4f16:
1573; CHECK:       # %bb.0:
1574; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 0
1582  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1583  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
1584  ret <4 x i1> %1
1585}
1586
1587define <4 x i1> @fcmps_uno_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1588; CHECK-LABEL: fcmps_uno_fv_v4f16:
1589; CHECK:       # %bb.0:
1590; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 0
1598  %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer
1599  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
1600  ret <4 x i1> %1
1601}
1602
1603declare <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half>, <8 x half>, metadata, metadata)
1604define <8 x i1> @fcmps_oeq_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {
1605; CHECK-LABEL: fcmps_oeq_vv_v8f16:
1606; CHECK:       # %bb.0:
1607; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1608; CHECK-NEXT:    vmfle.vv v10, v9, v8
1609; CHECK-NEXT:    vmfle.vv v8, v8, v9
1610; CHECK-NEXT:    vmand.mm v0, v8, v10
1611; CHECK-NEXT:    ret
1612  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
1613  ret <8 x i1> %1
1614}
1615
1616define <8 x i1> @fcmps_oeq_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1617; CHECK-LABEL: fcmps_oeq_vf_v8f16:
1618; CHECK:       # %bb.0:
1619; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1620; CHECK-NEXT:    vmfge.vf v9, v8, fa0
1621; CHECK-NEXT:    vmfle.vf v8, v8, fa0
1622; CHECK-NEXT:    vmand.mm v0, v8, v9
1623; CHECK-NEXT:    ret
1624  %head = insertelement <8 x half> poison, half %b, i32 0
1625  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
1626  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
1627  ret <8 x i1> %1
1628}
1629
1630define <8 x i1> @fcmps_oeq_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1631; CHECK-LABEL: fcmps_oeq_fv_v8f16:
1632; CHECK:       # %bb.0:
1633; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1634; CHECK-NEXT:    vmfle.vf v9, v8, fa0
1635; CHECK-NEXT:    vmfge.vf v8, v8, fa0
1636; CHECK-NEXT:    vmand.mm v0, v8, v9
1637; CHECK-NEXT:    ret
1638  %head = insertelement <8 x half> poison, half %b, i32 0
1639  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
1640  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
1641  ret <8 x i1> %1
1642}
1643
1644define <8 x i1> @fcmps_ogt_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {
1645; CHECK-LABEL: fcmps_ogt_vv_v8f16:
1646; CHECK:       # %bb.0:
1647; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1648; CHECK-NEXT:    vmflt.vv v0, v9, v8
1649; CHECK-NEXT:    ret
1650  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
1651  ret <8 x i1> %1
1652}
1653
1654define <8 x i1> @fcmps_ogt_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1655; CHECK-LABEL: fcmps_ogt_vf_v8f16:
1656; CHECK:       # %bb.0:
1657; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1658; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
1659; CHECK-NEXT:    ret
1660  %head = insertelement <8 x half> poison, half %b, i32 0
1661  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
1662  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
1663  ret <8 x i1> %1
1664}
1665
1666define <8 x i1> @fcmps_ogt_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1667; CHECK-LABEL: fcmps_ogt_fv_v8f16:
1668; CHECK:       # %bb.0:
1669; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1670; CHECK-NEXT:    vmflt.vf v0, v8, fa0
1671; CHECK-NEXT:    ret
1672  %head = insertelement <8 x half> poison, half %b, i32 0
1673  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
1674  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
1675  ret <8 x i1> %1
1676}
1677
1678define <8 x i1> @fcmps_oge_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {
1679; CHECK-LABEL: fcmps_oge_vv_v8f16:
1680; CHECK:       # %bb.0:
1681; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1682; CHECK-NEXT:    vmfle.vv v0, v9, v8
1683; CHECK-NEXT:    ret
1684  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
1685  ret <8 x i1> %1
1686}
1687
1688define <8 x i1> @fcmps_oge_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1689; CHECK-LABEL: fcmps_oge_vf_v8f16:
1690; CHECK:       # %bb.0:
1691; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1692; CHECK-NEXT:    vmfge.vf v0, v8, fa0
1693; CHECK-NEXT:    ret
1694  %head = insertelement <8 x half> poison, half %b, i32 0
1695  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
1696  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
1697  ret <8 x i1> %1
1698}
1699
1700define <8 x i1> @fcmps_oge_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1701; CHECK-LABEL: fcmps_oge_fv_v8f16:
1702; CHECK:       # %bb.0:
1703; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1704; CHECK-NEXT:    vmfle.vf v0, v8, fa0
1705; CHECK-NEXT:    ret
1706  %head = insertelement <8 x half> poison, half %b, i32 0
1707  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
1708  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
1709  ret <8 x i1> %1
1710}
1711
1712define <8 x i1> @fcmps_olt_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {
1713; CHECK-LABEL: fcmps_olt_vv_v8f16:
1714; CHECK:       # %bb.0:
1715; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1716; CHECK-NEXT:    vmflt.vv v0, v8, v9
1717; CHECK-NEXT:    ret
1718  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
1719  ret <8 x i1> %1
1720}
1721
1722define <8 x i1> @fcmps_olt_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1723; CHECK-LABEL: fcmps_olt_vf_v8f16:
1724; CHECK:       # %bb.0:
1725; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1726; CHECK-NEXT:    vmflt.vf v0, v8, fa0
1727; CHECK-NEXT:    ret
1728  %head = insertelement <8 x half> poison, half %b, i32 0
1729  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
1730  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
1731  ret <8 x i1> %1
1732}
1733
1734define <8 x i1> @fcmps_olt_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1735; CHECK-LABEL: fcmps_olt_fv_v8f16:
1736; CHECK:       # %bb.0:
1737; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1738; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
1739; CHECK-NEXT:    ret
1740  %head = insertelement <8 x half> poison, half %b, i32 0
1741  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
1742  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
1743  ret <8 x i1> %1
1744}
1745
1746define <8 x i1> @fcmps_ole_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {
1747; CHECK-LABEL: fcmps_ole_vv_v8f16:
1748; CHECK:       # %bb.0:
1749; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1750; CHECK-NEXT:    vmfle.vv v0, v8, v9
1751; CHECK-NEXT:    ret
1752  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
1753  ret <8 x i1> %1
1754}
1755
1756define <8 x i1> @fcmps_ole_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1757; CHECK-LABEL: fcmps_ole_vf_v8f16:
1758; CHECK:       # %bb.0:
1759; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1760; CHECK-NEXT:    vmfle.vf v0, v8, fa0
1761; CHECK-NEXT:    ret
1762  %head = insertelement <8 x half> poison, half %b, i32 0
1763  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
1764  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
1765  ret <8 x i1> %1
1766}
1767
1768define <8 x i1> @fcmps_ole_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1769; CHECK-LABEL: fcmps_ole_fv_v8f16:
1770; CHECK:       # %bb.0:
1771; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1772; CHECK-NEXT:    vmfge.vf v0, v8, fa0
1773; CHECK-NEXT:    ret
1774  %head = insertelement <8 x half> poison, half %b, i32 0
1775  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
1776  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
1777  ret <8 x i1> %1
1778}
1779
1780define <8 x i1> @fcmps_one_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {
1781; CHECK-LABEL: fcmps_one_vv_v8f16:
1782; CHECK:       # %bb.0:
1783; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1784; CHECK-NEXT:    vmflt.vv v10, v8, v9
1785; CHECK-NEXT:    vmflt.vv v8, v9, v8
1786; CHECK-NEXT:    vmor.mm v0, v8, v10
1787; CHECK-NEXT:    ret
1788  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
1789  ret <8 x i1> %1
1790}
1791
1792define <8 x i1> @fcmps_one_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1793; CHECK-LABEL: fcmps_one_vf_v8f16:
1794; CHECK:       # %bb.0:
1795; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1796; CHECK-NEXT:    vmflt.vf v9, v8, fa0
1797; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
1798; CHECK-NEXT:    vmor.mm v0, v8, v9
1799; CHECK-NEXT:    ret
1800  %head = insertelement <8 x half> poison, half %b, i32 0
1801  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
1802  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
1803  ret <8 x i1> %1
1804}
1805
1806define <8 x i1> @fcmps_one_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1807; CHECK-LABEL: fcmps_one_fv_v8f16:
1808; CHECK:       # %bb.0:
1809; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1810; CHECK-NEXT:    vmfgt.vf v9, v8, fa0
1811; CHECK-NEXT:    vmflt.vf v8, v8, fa0
1812; CHECK-NEXT:    vmor.mm v0, v8, v9
1813; CHECK-NEXT:    ret
1814  %head = insertelement <8 x half> poison, half %b, i32 0
1815  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
1816  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
1817  ret <8 x i1> %1
1818}
1819
1820define <8 x i1> @fcmps_ord_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {
1821; CHECK-LABEL: fcmps_ord_vv_v8f16:
1822; CHECK:       # %bb.0:
1823; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1824; CHECK-NEXT:    vmfle.vv v9, v9, v9
1825; CHECK-NEXT:    vmfle.vv v8, v8, v8
1826; CHECK-NEXT:    vmand.mm v0, v8, v9
1827; CHECK-NEXT:    ret
1828  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
1829  ret <8 x i1> %1
1830}
1831
1832define <8 x i1> @fcmps_ord_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1833; CHECK-LABEL: fcmps_ord_vf_v8f16:
1834; CHECK:       # %bb.0:
1835; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1836; CHECK-NEXT:    vfmv.v.f v9, fa0
1837; CHECK-NEXT:    vmfle.vf v9, v9, fa0
1838; CHECK-NEXT:    vmfle.vv v8, v8, v8
1839; CHECK-NEXT:    vmand.mm v0, v8, v9
1840; CHECK-NEXT:    ret
1841  %head = insertelement <8 x half> poison, half %b, i32 0
1842  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
1843  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
1844  ret <8 x i1> %1
1845}
1846
1847define <8 x i1> @fcmps_ord_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1848; CHECK-LABEL: fcmps_ord_fv_v8f16:
1849; CHECK:       # %bb.0:
1850; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1851; CHECK-NEXT:    vfmv.v.f v9, fa0
1852; CHECK-NEXT:    vmfle.vf v9, v9, fa0
1853; CHECK-NEXT:    vmfle.vv v8, v8, v8
1854; CHECK-NEXT:    vmand.mm v0, v9, v8
1855; CHECK-NEXT:    ret
1856  %head = insertelement <8 x half> poison, half %b, i32 0
1857  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
1858  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
1859  ret <8 x i1> %1
1860}
1861
1862define <8 x i1> @fcmps_ueq_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {
1863; CHECK-LABEL: fcmps_ueq_vv_v8f16:
1864; CHECK:       # %bb.0:
1865; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1866; CHECK-NEXT:    vmflt.vv v10, v8, v9
1867; CHECK-NEXT:    vmflt.vv v8, v9, v8
1868; CHECK-NEXT:    vmnor.mm v0, v8, v10
1869; CHECK-NEXT:    ret
1870  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
1871  ret <8 x i1> %1
1872}
1873
1874define <8 x i1> @fcmps_ueq_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1875; CHECK-LABEL: fcmps_ueq_vf_v8f16:
1876; CHECK:       # %bb.0:
1877; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1878; CHECK-NEXT:    vmflt.vf v9, v8, fa0
1879; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
1880; CHECK-NEXT:    vmnor.mm v0, v8, v9
1881; CHECK-NEXT:    ret
1882  %head = insertelement <8 x half> poison, half %b, i32 0
1883  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
1884  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
1885  ret <8 x i1> %1
1886}
1887
1888define <8 x i1> @fcmps_ueq_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1889; CHECK-LABEL: fcmps_ueq_fv_v8f16:
1890; CHECK:       # %bb.0:
1891; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1892; CHECK-NEXT:    vmfgt.vf v9, v8, fa0
1893; CHECK-NEXT:    vmflt.vf v8, v8, fa0
1894; CHECK-NEXT:    vmnor.mm v0, v8, v9
1895; CHECK-NEXT:    ret
1896  %head = insertelement <8 x half> poison, half %b, i32 0
1897  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
1898  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
1899  ret <8 x i1> %1
1900}
1901
1902define <8 x i1> @fcmps_ugt_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {
1903; CHECK-LABEL: fcmps_ugt_vv_v8f16:
1904; CHECK:       # %bb.0:
1905; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1906; CHECK-NEXT:    vmfle.vv v8, v8, v9
1907; CHECK-NEXT:    vmnot.m v0, v8
1908; CHECK-NEXT:    ret
1909  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
1910  ret <8 x i1> %1
1911}
1912
1913define <8 x i1> @fcmps_ugt_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1914; CHECK-LABEL: fcmps_ugt_vf_v8f16:
1915; CHECK:       # %bb.0:
1916; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1917; CHECK-NEXT:    vmfle.vf v8, v8, fa0
1918; CHECK-NEXT:    vmnot.m v0, v8
1919; CHECK-NEXT:    ret
1920  %head = insertelement <8 x half> poison, half %b, i32 0
1921  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
1922  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
1923  ret <8 x i1> %1
1924}
1925
1926define <8 x i1> @fcmps_ugt_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1927; CHECK-LABEL: fcmps_ugt_fv_v8f16:
1928; CHECK:       # %bb.0:
1929; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1930; CHECK-NEXT:    vmfge.vf v8, v8, fa0
1931; CHECK-NEXT:    vmnot.m v0, v8
1932; CHECK-NEXT:    ret
1933  %head = insertelement <8 x half> poison, half %b, i32 0
1934  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
1935  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
1936  ret <8 x i1> %1
1937}
1938
1939define <8 x i1> @fcmps_uge_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {
1940; CHECK-LABEL: fcmps_uge_vv_v8f16:
1941; CHECK:       # %bb.0:
1942; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1943; CHECK-NEXT:    vmflt.vv v8, v8, v9
1944; CHECK-NEXT:    vmnot.m v0, v8
1945; CHECK-NEXT:    ret
1946  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
1947  ret <8 x i1> %1
1948}
1949
1950define <8 x i1> @fcmps_uge_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1951; CHECK-LABEL: fcmps_uge_vf_v8f16:
1952; CHECK:       # %bb.0:
1953; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1954; CHECK-NEXT:    vmflt.vf v8, v8, fa0
1955; CHECK-NEXT:    vmnot.m v0, v8
1956; CHECK-NEXT:    ret
1957  %head = insertelement <8 x half> poison, half %b, i32 0
1958  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
1959  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
1960  ret <8 x i1> %1
1961}
1962
1963define <8 x i1> @fcmps_uge_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1964; CHECK-LABEL: fcmps_uge_fv_v8f16:
1965; CHECK:       # %bb.0:
1966; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1967; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
1968; CHECK-NEXT:    vmnot.m v0, v8
1969; CHECK-NEXT:    ret
1970  %head = insertelement <8 x half> poison, half %b, i32 0
1971  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
1972  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
1973  ret <8 x i1> %1
1974}
1975
1976define <8 x i1> @fcmps_ult_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {
1977; CHECK-LABEL: fcmps_ult_vv_v8f16:
1978; CHECK:       # %bb.0:
1979; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1980; CHECK-NEXT:    vmfle.vv v8, v9, v8
1981; CHECK-NEXT:    vmnot.m v0, v8
1982; CHECK-NEXT:    ret
1983  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
1984  ret <8 x i1> %1
1985}
1986
1987define <8 x i1> @fcmps_ult_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1988; CHECK-LABEL: fcmps_ult_vf_v8f16:
1989; CHECK:       # %bb.0:
1990; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
1991; CHECK-NEXT:    vmfge.vf v8, v8, fa0
1992; CHECK-NEXT:    vmnot.m v0, v8
1993; CHECK-NEXT:    ret
1994  %head = insertelement <8 x half> poison, half %b, i32 0
1995  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
1996  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
1997  ret <8 x i1> %1
1998}
1999
2000define <8 x i1> @fcmps_ult_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
2001; CHECK-LABEL: fcmps_ult_fv_v8f16:
2002; CHECK:       # %bb.0:
2003; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
2004; CHECK-NEXT:    vmfle.vf v8, v8, fa0
2005; CHECK-NEXT:    vmnot.m v0, v8
2006; CHECK-NEXT:    ret
2007  %head = insertelement <8 x half> poison, half %b, i32 0
2008  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
2009  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
2010  ret <8 x i1> %1
2011}
2012
2013define <8 x i1> @fcmps_ule_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {
2014; CHECK-LABEL: fcmps_ule_vv_v8f16:
2015; CHECK:       # %bb.0:
2016; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
2017; CHECK-NEXT:    vmflt.vv v8, v9, v8
2018; CHECK-NEXT:    vmnot.m v0, v8
2019; CHECK-NEXT:    ret
2020  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
2021  ret <8 x i1> %1
2022}
2023
2024define <8 x i1> @fcmps_ule_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
2025; CHECK-LABEL: fcmps_ule_vf_v8f16:
2026; CHECK:       # %bb.0:
2027; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
2028; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
2029; CHECK-NEXT:    vmnot.m v0, v8
2030; CHECK-NEXT:    ret
2031  %head = insertelement <8 x half> poison, half %b, i32 0
2032  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
2033  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
2034  ret <8 x i1> %1
2035}
2036
2037define <8 x i1> @fcmps_ule_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
2038; CHECK-LABEL: fcmps_ule_fv_v8f16:
2039; CHECK:       # %bb.0:
2040; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
2041; CHECK-NEXT:    vmflt.vf v8, v8, fa0
2042; CHECK-NEXT:    vmnot.m v0, v8
2043; CHECK-NEXT:    ret
2044  %head = insertelement <8 x half> poison, half %b, i32 0
2045  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
2046  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
2047  ret <8 x i1> %1
2048}
2049
2050define <8 x i1> @fcmps_une_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {
2051; CHECK-LABEL: fcmps_une_vv_v8f16:
2052; CHECK:       # %bb.0:
2053; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
2054; CHECK-NEXT:    vmfle.vv v10, v9, v8
2055; CHECK-NEXT:    vmfle.vv v8, v8, v9
2056; CHECK-NEXT:    vmnand.mm v0, v8, v10
2057; CHECK-NEXT:    ret
2058  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
2059  ret <8 x i1> %1
2060}
2061
2062define <8 x i1> @fcmps_une_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
2063; CHECK-LABEL: fcmps_une_vf_v8f16:
2064; CHECK:       # %bb.0:
2065; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
2066; CHECK-NEXT:    vmfge.vf v9, v8, fa0
2067; CHECK-NEXT:    vmfle.vf v8, v8, fa0
2068; CHECK-NEXT:    vmnand.mm v0, v8, v9
2069; CHECK-NEXT:    ret
2070  %head = insertelement <8 x half> poison, half %b, i32 0
2071  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
2072  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
2073  ret <8 x i1> %1
2074}
2075
2076define <8 x i1> @fcmps_une_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
2077; CHECK-LABEL: fcmps_une_fv_v8f16:
2078; CHECK:       # %bb.0:
2079; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
2080; CHECK-NEXT:    vmfle.vf v9, v8, fa0
2081; CHECK-NEXT:    vmfge.vf v8, v8, fa0
2082; CHECK-NEXT:    vmnand.mm v0, v8, v9
2083; CHECK-NEXT:    ret
2084  %head = insertelement <8 x half> poison, half %b, i32 0
2085  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
2086  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
2087  ret <8 x i1> %1
2088}
2089
2090define <8 x i1> @fcmps_uno_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {
2091; CHECK-LABEL: fcmps_uno_vv_v8f16:
2092; CHECK:       # %bb.0:
2093; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
2094; CHECK-NEXT:    vmfle.vv v9, v9, v9
2095; CHECK-NEXT:    vmfle.vv v8, v8, v8
2096; CHECK-NEXT:    vmnot.m v8, v8
2097; CHECK-NEXT:    vmorn.mm v0, v8, v9
2098; CHECK-NEXT:    ret
2099  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
2100  ret <8 x i1> %1
2101}
2102
2103define <8 x i1> @fcmps_uno_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
2104; CHECK-LABEL: fcmps_uno_vf_v8f16:
2105; CHECK:       # %bb.0:
2106; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
2107; CHECK-NEXT:    vfmv.v.f v9, fa0
2108; CHECK-NEXT:    vmfle.vv v8, v8, v8
2109; CHECK-NEXT:    vmfle.vf v9, v9, fa0
2110; CHECK-NEXT:    vmnot.m v8, v8
2111; CHECK-NEXT:    vmorn.mm v0, v8, v9
2112; CHECK-NEXT:    ret
2113  %head = insertelement <8 x half> poison, half %b, i32 0
2114  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
2115  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
2116  ret <8 x i1> %1
2117}
2118
2119define <8 x i1> @fcmps_uno_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
2120; CHECK-LABEL: fcmps_uno_fv_v8f16:
2121; CHECK:       # %bb.0:
2122; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
2123; CHECK-NEXT:    vfmv.v.f v9, fa0
2124; CHECK-NEXT:    vmfle.vf v9, v9, fa0
2125; CHECK-NEXT:    vmnot.m v9, v9
2126; CHECK-NEXT:    vmfle.vv v8, v8, v8
2127; CHECK-NEXT:    vmorn.mm v0, v9, v8
2128; CHECK-NEXT:    ret
2129  %head = insertelement <8 x half> poison, half %b, i32 0
2130  %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer
2131  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
2132  ret <8 x i1> %1
2133}
2134
2135declare <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half>, <16 x half>, metadata, metadata)
2136define <16 x i1> @fcmps_oeq_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {
2137; CHECK-LABEL: fcmps_oeq_vv_v16f16:
2138; CHECK:       # %bb.0:
2139; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2140; CHECK-NEXT:    vmfle.vv v12, v10, v8
2141; CHECK-NEXT:    vmfle.vv v13, v8, v10
2142; CHECK-NEXT:    vmand.mm v0, v13, v12
2143; CHECK-NEXT:    ret
2144  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
2145  ret <16 x i1> %1
2146}
2147
2148define <16 x i1> @fcmps_oeq_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2149; CHECK-LABEL: fcmps_oeq_vf_v16f16:
2150; CHECK:       # %bb.0:
2151; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2152; CHECK-NEXT:    vmfge.vf v10, v8, fa0
2153; CHECK-NEXT:    vmfle.vf v11, v8, fa0
2154; CHECK-NEXT:    vmand.mm v0, v11, v10
2155; CHECK-NEXT:    ret
2156  %head = insertelement <16 x half> poison, half %b, i32 0
2157  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2158  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
2159  ret <16 x i1> %1
2160}
2161
2162define <16 x i1> @fcmps_oeq_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2163; CHECK-LABEL: fcmps_oeq_fv_v16f16:
2164; CHECK:       # %bb.0:
2165; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2166; CHECK-NEXT:    vmfle.vf v10, v8, fa0
2167; CHECK-NEXT:    vmfge.vf v11, v8, fa0
2168; CHECK-NEXT:    vmand.mm v0, v11, v10
2169; CHECK-NEXT:    ret
2170  %head = insertelement <16 x half> poison, half %b, i32 0
2171  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2172  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
2173  ret <16 x i1> %1
2174}
2175
2176define <16 x i1> @fcmps_ogt_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {
2177; CHECK-LABEL: fcmps_ogt_vv_v16f16:
2178; CHECK:       # %bb.0:
2179; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2180; CHECK-NEXT:    vmflt.vv v0, v10, v8
2181; CHECK-NEXT:    ret
2182  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
2183  ret <16 x i1> %1
2184}
2185
2186define <16 x i1> @fcmps_ogt_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2187; CHECK-LABEL: fcmps_ogt_vf_v16f16:
2188; CHECK:       # %bb.0:
2189; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2190; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
2191; CHECK-NEXT:    ret
2192  %head = insertelement <16 x half> poison, half %b, i32 0
2193  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2194  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
2195  ret <16 x i1> %1
2196}
2197
2198define <16 x i1> @fcmps_ogt_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2199; CHECK-LABEL: fcmps_ogt_fv_v16f16:
2200; CHECK:       # %bb.0:
2201; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2202; CHECK-NEXT:    vmflt.vf v0, v8, fa0
2203; CHECK-NEXT:    ret
2204  %head = insertelement <16 x half> poison, half %b, i32 0
2205  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2206  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
2207  ret <16 x i1> %1
2208}
2209
2210define <16 x i1> @fcmps_oge_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {
2211; CHECK-LABEL: fcmps_oge_vv_v16f16:
2212; CHECK:       # %bb.0:
2213; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2214; CHECK-NEXT:    vmfle.vv v0, v10, v8
2215; CHECK-NEXT:    ret
2216  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
2217  ret <16 x i1> %1
2218}
2219
2220define <16 x i1> @fcmps_oge_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2221; CHECK-LABEL: fcmps_oge_vf_v16f16:
2222; CHECK:       # %bb.0:
2223; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2224; CHECK-NEXT:    vmfge.vf v0, v8, fa0
2225; CHECK-NEXT:    ret
2226  %head = insertelement <16 x half> poison, half %b, i32 0
2227  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2228  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
2229  ret <16 x i1> %1
2230}
2231
2232define <16 x i1> @fcmps_oge_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2233; CHECK-LABEL: fcmps_oge_fv_v16f16:
2234; CHECK:       # %bb.0:
2235; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2236; CHECK-NEXT:    vmfle.vf v0, v8, fa0
2237; CHECK-NEXT:    ret
2238  %head = insertelement <16 x half> poison, half %b, i32 0
2239  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2240  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
2241  ret <16 x i1> %1
2242}
2243
2244define <16 x i1> @fcmps_olt_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {
2245; CHECK-LABEL: fcmps_olt_vv_v16f16:
2246; CHECK:       # %bb.0:
2247; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2248; CHECK-NEXT:    vmflt.vv v0, v8, v10
2249; CHECK-NEXT:    ret
2250  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
2251  ret <16 x i1> %1
2252}
2253
2254define <16 x i1> @fcmps_olt_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2255; CHECK-LABEL: fcmps_olt_vf_v16f16:
2256; CHECK:       # %bb.0:
2257; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2258; CHECK-NEXT:    vmflt.vf v0, v8, fa0
2259; CHECK-NEXT:    ret
2260  %head = insertelement <16 x half> poison, half %b, i32 0
2261  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2262  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
2263  ret <16 x i1> %1
2264}
2265
2266define <16 x i1> @fcmps_olt_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2267; CHECK-LABEL: fcmps_olt_fv_v16f16:
2268; CHECK:       # %bb.0:
2269; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2270; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
2271; CHECK-NEXT:    ret
2272  %head = insertelement <16 x half> poison, half %b, i32 0
2273  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2274  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
2275  ret <16 x i1> %1
2276}
2277
2278define <16 x i1> @fcmps_ole_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {
2279; CHECK-LABEL: fcmps_ole_vv_v16f16:
2280; CHECK:       # %bb.0:
2281; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2282; CHECK-NEXT:    vmfle.vv v0, v8, v10
2283; CHECK-NEXT:    ret
2284  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
2285  ret <16 x i1> %1
2286}
2287
2288define <16 x i1> @fcmps_ole_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2289; CHECK-LABEL: fcmps_ole_vf_v16f16:
2290; CHECK:       # %bb.0:
2291; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2292; CHECK-NEXT:    vmfle.vf v0, v8, fa0
2293; CHECK-NEXT:    ret
2294  %head = insertelement <16 x half> poison, half %b, i32 0
2295  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2296  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
2297  ret <16 x i1> %1
2298}
2299
2300define <16 x i1> @fcmps_ole_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2301; CHECK-LABEL: fcmps_ole_fv_v16f16:
2302; CHECK:       # %bb.0:
2303; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2304; CHECK-NEXT:    vmfge.vf v0, v8, fa0
2305; CHECK-NEXT:    ret
2306  %head = insertelement <16 x half> poison, half %b, i32 0
2307  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2308  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
2309  ret <16 x i1> %1
2310}
2311
2312define <16 x i1> @fcmps_one_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {
2313; CHECK-LABEL: fcmps_one_vv_v16f16:
2314; CHECK:       # %bb.0:
2315; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2316; CHECK-NEXT:    vmflt.vv v12, v8, v10
2317; CHECK-NEXT:    vmflt.vv v13, v10, v8
2318; CHECK-NEXT:    vmor.mm v0, v13, v12
2319; CHECK-NEXT:    ret
2320  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
2321  ret <16 x i1> %1
2322}
2323
2324define <16 x i1> @fcmps_one_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2325; CHECK-LABEL: fcmps_one_vf_v16f16:
2326; CHECK:       # %bb.0:
2327; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2328; CHECK-NEXT:    vmflt.vf v10, v8, fa0
2329; CHECK-NEXT:    vmfgt.vf v11, v8, fa0
2330; CHECK-NEXT:    vmor.mm v0, v11, v10
2331; CHECK-NEXT:    ret
2332  %head = insertelement <16 x half> poison, half %b, i32 0
2333  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2334  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
2335  ret <16 x i1> %1
2336}
2337
2338define <16 x i1> @fcmps_one_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2339; CHECK-LABEL: fcmps_one_fv_v16f16:
2340; CHECK:       # %bb.0:
2341; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2342; CHECK-NEXT:    vmfgt.vf v10, v8, fa0
2343; CHECK-NEXT:    vmflt.vf v11, v8, fa0
2344; CHECK-NEXT:    vmor.mm v0, v11, v10
2345; CHECK-NEXT:    ret
2346  %head = insertelement <16 x half> poison, half %b, i32 0
2347  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2348  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
2349  ret <16 x i1> %1
2350}
2351
2352define <16 x i1> @fcmps_ord_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {
2353; CHECK-LABEL: fcmps_ord_vv_v16f16:
2354; CHECK:       # %bb.0:
2355; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2356; CHECK-NEXT:    vmfle.vv v12, v10, v10
2357; CHECK-NEXT:    vmfle.vv v10, v8, v8
2358; CHECK-NEXT:    vmand.mm v0, v10, v12
2359; CHECK-NEXT:    ret
2360  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
2361  ret <16 x i1> %1
2362}
2363
2364define <16 x i1> @fcmps_ord_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2365; CHECK-LABEL: fcmps_ord_vf_v16f16:
2366; CHECK:       # %bb.0:
2367; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2368; CHECK-NEXT:    vfmv.v.f v10, fa0
2369; CHECK-NEXT:    vmfle.vf v12, v10, fa0
2370; CHECK-NEXT:    vmfle.vv v10, v8, v8
2371; CHECK-NEXT:    vmand.mm v0, v10, v12
2372; CHECK-NEXT:    ret
2373  %head = insertelement <16 x half> poison, half %b, i32 0
2374  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2375  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
2376  ret <16 x i1> %1
2377}
2378
2379define <16 x i1> @fcmps_ord_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2380; CHECK-LABEL: fcmps_ord_fv_v16f16:
2381; CHECK:       # %bb.0:
2382; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2383; CHECK-NEXT:    vfmv.v.f v10, fa0
2384; CHECK-NEXT:    vmfle.vf v12, v10, fa0
2385; CHECK-NEXT:    vmfle.vv v10, v8, v8
2386; CHECK-NEXT:    vmand.mm v0, v12, v10
2387; CHECK-NEXT:    ret
2388  %head = insertelement <16 x half> poison, half %b, i32 0
2389  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2390  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
2391  ret <16 x i1> %1
2392}
2393
2394define <16 x i1> @fcmps_ueq_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {
2395; CHECK-LABEL: fcmps_ueq_vv_v16f16:
2396; CHECK:       # %bb.0:
2397; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2398; CHECK-NEXT:    vmflt.vv v12, v8, v10
2399; CHECK-NEXT:    vmflt.vv v13, v10, v8
2400; CHECK-NEXT:    vmnor.mm v0, v13, v12
2401; CHECK-NEXT:    ret
2402  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
2403  ret <16 x i1> %1
2404}
2405
2406define <16 x i1> @fcmps_ueq_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2407; CHECK-LABEL: fcmps_ueq_vf_v16f16:
2408; CHECK:       # %bb.0:
2409; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2410; CHECK-NEXT:    vmflt.vf v10, v8, fa0
2411; CHECK-NEXT:    vmfgt.vf v11, v8, fa0
2412; CHECK-NEXT:    vmnor.mm v0, v11, v10
2413; CHECK-NEXT:    ret
2414  %head = insertelement <16 x half> poison, half %b, i32 0
2415  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2416  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
2417  ret <16 x i1> %1
2418}
2419
2420define <16 x i1> @fcmps_ueq_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2421; CHECK-LABEL: fcmps_ueq_fv_v16f16:
2422; CHECK:       # %bb.0:
2423; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2424; CHECK-NEXT:    vmfgt.vf v10, v8, fa0
2425; CHECK-NEXT:    vmflt.vf v11, v8, fa0
2426; CHECK-NEXT:    vmnor.mm v0, v11, v10
2427; CHECK-NEXT:    ret
2428  %head = insertelement <16 x half> poison, half %b, i32 0
2429  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2430  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
2431  ret <16 x i1> %1
2432}
2433
2434define <16 x i1> @fcmps_ugt_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {
2435; CHECK-LABEL: fcmps_ugt_vv_v16f16:
2436; CHECK:       # %bb.0:
2437; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2438; CHECK-NEXT:    vmfle.vv v12, v8, v10
2439; CHECK-NEXT:    vmnot.m v0, v12
2440; CHECK-NEXT:    ret
2441  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
2442  ret <16 x i1> %1
2443}
2444
2445define <16 x i1> @fcmps_ugt_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2446; CHECK-LABEL: fcmps_ugt_vf_v16f16:
2447; CHECK:       # %bb.0:
2448; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2449; CHECK-NEXT:    vmfle.vf v10, v8, fa0
2450; CHECK-NEXT:    vmnot.m v0, v10
2451; CHECK-NEXT:    ret
2452  %head = insertelement <16 x half> poison, half %b, i32 0
2453  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2454  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
2455  ret <16 x i1> %1
2456}
2457
2458define <16 x i1> @fcmps_ugt_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2459; CHECK-LABEL: fcmps_ugt_fv_v16f16:
2460; CHECK:       # %bb.0:
2461; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2462; CHECK-NEXT:    vmfge.vf v10, v8, fa0
2463; CHECK-NEXT:    vmnot.m v0, v10
2464; CHECK-NEXT:    ret
2465  %head = insertelement <16 x half> poison, half %b, i32 0
2466  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2467  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
2468  ret <16 x i1> %1
2469}
2470
2471define <16 x i1> @fcmps_uge_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {
2472; CHECK-LABEL: fcmps_uge_vv_v16f16:
2473; CHECK:       # %bb.0:
2474; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2475; CHECK-NEXT:    vmflt.vv v12, v8, v10
2476; CHECK-NEXT:    vmnot.m v0, v12
2477; CHECK-NEXT:    ret
2478  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
2479  ret <16 x i1> %1
2480}
2481
2482define <16 x i1> @fcmps_uge_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2483; CHECK-LABEL: fcmps_uge_vf_v16f16:
2484; CHECK:       # %bb.0:
2485; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2486; CHECK-NEXT:    vmflt.vf v10, v8, fa0
2487; CHECK-NEXT:    vmnot.m v0, v10
2488; CHECK-NEXT:    ret
2489  %head = insertelement <16 x half> poison, half %b, i32 0
2490  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2491  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
2492  ret <16 x i1> %1
2493}
2494
2495define <16 x i1> @fcmps_uge_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2496; CHECK-LABEL: fcmps_uge_fv_v16f16:
2497; CHECK:       # %bb.0:
2498; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2499; CHECK-NEXT:    vmfgt.vf v10, v8, fa0
2500; CHECK-NEXT:    vmnot.m v0, v10
2501; CHECK-NEXT:    ret
2502  %head = insertelement <16 x half> poison, half %b, i32 0
2503  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2504  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
2505  ret <16 x i1> %1
2506}
2507
2508define <16 x i1> @fcmps_ult_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {
2509; CHECK-LABEL: fcmps_ult_vv_v16f16:
2510; CHECK:       # %bb.0:
2511; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2512; CHECK-NEXT:    vmfle.vv v12, v10, v8
2513; CHECK-NEXT:    vmnot.m v0, v12
2514; CHECK-NEXT:    ret
2515  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
2516  ret <16 x i1> %1
2517}
2518
2519define <16 x i1> @fcmps_ult_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2520; CHECK-LABEL: fcmps_ult_vf_v16f16:
2521; CHECK:       # %bb.0:
2522; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2523; CHECK-NEXT:    vmfge.vf v10, v8, fa0
2524; CHECK-NEXT:    vmnot.m v0, v10
2525; CHECK-NEXT:    ret
2526  %head = insertelement <16 x half> poison, half %b, i32 0
2527  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2528  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
2529  ret <16 x i1> %1
2530}
2531
2532define <16 x i1> @fcmps_ult_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2533; CHECK-LABEL: fcmps_ult_fv_v16f16:
2534; CHECK:       # %bb.0:
2535; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2536; CHECK-NEXT:    vmfle.vf v10, v8, fa0
2537; CHECK-NEXT:    vmnot.m v0, v10
2538; CHECK-NEXT:    ret
2539  %head = insertelement <16 x half> poison, half %b, i32 0
2540  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2541  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
2542  ret <16 x i1> %1
2543}
2544
2545define <16 x i1> @fcmps_ule_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {
2546; CHECK-LABEL: fcmps_ule_vv_v16f16:
2547; CHECK:       # %bb.0:
2548; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2549; CHECK-NEXT:    vmflt.vv v12, v10, v8
2550; CHECK-NEXT:    vmnot.m v0, v12
2551; CHECK-NEXT:    ret
2552  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
2553  ret <16 x i1> %1
2554}
2555
2556define <16 x i1> @fcmps_ule_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2557; CHECK-LABEL: fcmps_ule_vf_v16f16:
2558; CHECK:       # %bb.0:
2559; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2560; CHECK-NEXT:    vmfgt.vf v10, v8, fa0
2561; CHECK-NEXT:    vmnot.m v0, v10
2562; CHECK-NEXT:    ret
2563  %head = insertelement <16 x half> poison, half %b, i32 0
2564  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2565  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
2566  ret <16 x i1> %1
2567}
2568
2569define <16 x i1> @fcmps_ule_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2570; CHECK-LABEL: fcmps_ule_fv_v16f16:
2571; CHECK:       # %bb.0:
2572; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2573; CHECK-NEXT:    vmflt.vf v10, v8, fa0
2574; CHECK-NEXT:    vmnot.m v0, v10
2575; CHECK-NEXT:    ret
2576  %head = insertelement <16 x half> poison, half %b, i32 0
2577  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2578  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
2579  ret <16 x i1> %1
2580}
2581
2582define <16 x i1> @fcmps_une_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {
2583; CHECK-LABEL: fcmps_une_vv_v16f16:
2584; CHECK:       # %bb.0:
2585; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2586; CHECK-NEXT:    vmfle.vv v12, v10, v8
2587; CHECK-NEXT:    vmfle.vv v13, v8, v10
2588; CHECK-NEXT:    vmnand.mm v0, v13, v12
2589; CHECK-NEXT:    ret
2590  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
2591  ret <16 x i1> %1
2592}
2593
2594define <16 x i1> @fcmps_une_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2595; CHECK-LABEL: fcmps_une_vf_v16f16:
2596; CHECK:       # %bb.0:
2597; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2598; CHECK-NEXT:    vmfge.vf v10, v8, fa0
2599; CHECK-NEXT:    vmfle.vf v11, v8, fa0
2600; CHECK-NEXT:    vmnand.mm v0, v11, v10
2601; CHECK-NEXT:    ret
2602  %head = insertelement <16 x half> poison, half %b, i32 0
2603  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2604  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
2605  ret <16 x i1> %1
2606}
2607
2608define <16 x i1> @fcmps_une_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2609; CHECK-LABEL: fcmps_une_fv_v16f16:
2610; CHECK:       # %bb.0:
2611; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2612; CHECK-NEXT:    vmfle.vf v10, v8, fa0
2613; CHECK-NEXT:    vmfge.vf v11, v8, fa0
2614; CHECK-NEXT:    vmnand.mm v0, v11, v10
2615; CHECK-NEXT:    ret
2616  %head = insertelement <16 x half> poison, half %b, i32 0
2617  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2618  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
2619  ret <16 x i1> %1
2620}
2621
2622define <16 x i1> @fcmps_uno_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {
2623; CHECK-LABEL: fcmps_uno_vv_v16f16:
2624; CHECK:       # %bb.0:
2625; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2626; CHECK-NEXT:    vmfle.vv v12, v10, v10
2627; CHECK-NEXT:    vmfle.vv v10, v8, v8
2628; CHECK-NEXT:    vmnot.m v8, v10
2629; CHECK-NEXT:    vmorn.mm v0, v8, v12
2630; CHECK-NEXT:    ret
2631  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
2632  ret <16 x i1> %1
2633}
2634
2635define <16 x i1> @fcmps_uno_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2636; CHECK-LABEL: fcmps_uno_vf_v16f16:
2637; CHECK:       # %bb.0:
2638; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2639; CHECK-NEXT:    vfmv.v.f v10, fa0
2640; CHECK-NEXT:    vmfle.vv v12, v8, v8
2641; CHECK-NEXT:    vmfle.vf v8, v10, fa0
2642; CHECK-NEXT:    vmnot.m v9, v12
2643; CHECK-NEXT:    vmorn.mm v0, v9, v8
2644; CHECK-NEXT:    ret
2645  %head = insertelement <16 x half> poison, half %b, i32 0
2646  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2647  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
2648  ret <16 x i1> %1
2649}
2650
2651define <16 x i1> @fcmps_uno_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2652; CHECK-LABEL: fcmps_uno_fv_v16f16:
2653; CHECK:       # %bb.0:
2654; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma
2655; CHECK-NEXT:    vfmv.v.f v10, fa0
2656; CHECK-NEXT:    vmfle.vf v12, v10, fa0
2657; CHECK-NEXT:    vmnot.m v10, v12
2658; CHECK-NEXT:    vmfle.vv v11, v8, v8
2659; CHECK-NEXT:    vmorn.mm v0, v10, v11
2660; CHECK-NEXT:    ret
2661  %head = insertelement <16 x half> poison, half %b, i32 0
2662  %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer
2663  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
2664  ret <16 x i1> %1
2665}
2666
2667declare <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half>, <32 x half>, metadata, metadata)
2668define <32 x i1> @fcmps_oeq_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {
2669; CHECK-LABEL: fcmps_oeq_vv_v32f16:
2670; CHECK:       # %bb.0:
2671; CHECK-NEXT:    li a0, 32
2672; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2673; CHECK-NEXT:    vmfle.vv v16, v12, v8
2674; CHECK-NEXT:    vmfle.vv v17, v8, v12
2675; CHECK-NEXT:    vmand.mm v0, v17, v16
2676; CHECK-NEXT:    ret
2677  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
2678  ret <32 x i1> %1
2679}
2680
2681define <32 x i1> @fcmps_oeq_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2682; CHECK-LABEL: fcmps_oeq_vf_v32f16:
2683; CHECK:       # %bb.0:
2684; CHECK-NEXT:    li a0, 32
2685; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2686; CHECK-NEXT:    vmfge.vf v12, v8, fa0
2687; CHECK-NEXT:    vmfle.vf v13, v8, fa0
2688; CHECK-NEXT:    vmand.mm v0, v13, v12
2689; CHECK-NEXT:    ret
2690  %head = insertelement <32 x half> poison, half %b, i32 0
2691  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
2692  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
2693  ret <32 x i1> %1
2694}
2695
2696define <32 x i1> @fcmps_oeq_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2697; CHECK-LABEL: fcmps_oeq_fv_v32f16:
2698; CHECK:       # %bb.0:
2699; CHECK-NEXT:    li a0, 32
2700; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2701; CHECK-NEXT:    vmfle.vf v12, v8, fa0
2702; CHECK-NEXT:    vmfge.vf v13, v8, fa0
2703; CHECK-NEXT:    vmand.mm v0, v13, v12
2704; CHECK-NEXT:    ret
2705  %head = insertelement <32 x half> poison, half %b, i32 0
2706  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
2707  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
2708  ret <32 x i1> %1
2709}
2710
2711define <32 x i1> @fcmps_ogt_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {
2712; CHECK-LABEL: fcmps_ogt_vv_v32f16:
2713; CHECK:       # %bb.0:
2714; CHECK-NEXT:    li a0, 32
2715; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2716; CHECK-NEXT:    vmflt.vv v0, v12, v8
2717; CHECK-NEXT:    ret
2718  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
2719  ret <32 x i1> %1
2720}
2721
2722define <32 x i1> @fcmps_ogt_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2723; CHECK-LABEL: fcmps_ogt_vf_v32f16:
2724; CHECK:       # %bb.0:
2725; CHECK-NEXT:    li a0, 32
2726; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2727; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
2728; CHECK-NEXT:    ret
2729  %head = insertelement <32 x half> poison, half %b, i32 0
2730  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
2731  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
2732  ret <32 x i1> %1
2733}
2734
2735define <32 x i1> @fcmps_ogt_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2736; CHECK-LABEL: fcmps_ogt_fv_v32f16:
2737; CHECK:       # %bb.0:
2738; CHECK-NEXT:    li a0, 32
2739; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2740; CHECK-NEXT:    vmflt.vf v0, v8, fa0
2741; CHECK-NEXT:    ret
2742  %head = insertelement <32 x half> poison, half %b, i32 0
2743  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
2744  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
2745  ret <32 x i1> %1
2746}
2747
2748define <32 x i1> @fcmps_oge_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {
2749; CHECK-LABEL: fcmps_oge_vv_v32f16:
2750; CHECK:       # %bb.0:
2751; CHECK-NEXT:    li a0, 32
2752; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2753; CHECK-NEXT:    vmfle.vv v0, v12, v8
2754; CHECK-NEXT:    ret
2755  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
2756  ret <32 x i1> %1
2757}
2758
2759define <32 x i1> @fcmps_oge_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2760; CHECK-LABEL: fcmps_oge_vf_v32f16:
2761; CHECK:       # %bb.0:
2762; CHECK-NEXT:    li a0, 32
2763; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2764; CHECK-NEXT:    vmfge.vf v0, v8, fa0
2765; CHECK-NEXT:    ret
2766  %head = insertelement <32 x half> poison, half %b, i32 0
2767  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
2768  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
2769  ret <32 x i1> %1
2770}
2771
2772define <32 x i1> @fcmps_oge_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2773; CHECK-LABEL: fcmps_oge_fv_v32f16:
2774; CHECK:       # %bb.0:
2775; CHECK-NEXT:    li a0, 32
2776; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2777; CHECK-NEXT:    vmfle.vf v0, v8, fa0
2778; CHECK-NEXT:    ret
2779  %head = insertelement <32 x half> poison, half %b, i32 0
2780  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
2781  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
2782  ret <32 x i1> %1
2783}
2784
2785define <32 x i1> @fcmps_olt_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {
2786; CHECK-LABEL: fcmps_olt_vv_v32f16:
2787; CHECK:       # %bb.0:
2788; CHECK-NEXT:    li a0, 32
2789; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2790; CHECK-NEXT:    vmflt.vv v0, v8, v12
2791; CHECK-NEXT:    ret
2792  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
2793  ret <32 x i1> %1
2794}
2795
2796define <32 x i1> @fcmps_olt_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2797; CHECK-LABEL: fcmps_olt_vf_v32f16:
2798; CHECK:       # %bb.0:
2799; CHECK-NEXT:    li a0, 32
2800; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2801; CHECK-NEXT:    vmflt.vf v0, v8, fa0
2802; CHECK-NEXT:    ret
2803  %head = insertelement <32 x half> poison, half %b, i32 0
2804  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
2805  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
2806  ret <32 x i1> %1
2807}
2808
2809define <32 x i1> @fcmps_olt_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2810; CHECK-LABEL: fcmps_olt_fv_v32f16:
2811; CHECK:       # %bb.0:
2812; CHECK-NEXT:    li a0, 32
2813; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2814; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
2815; CHECK-NEXT:    ret
2816  %head = insertelement <32 x half> poison, half %b, i32 0
2817  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
2818  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
2819  ret <32 x i1> %1
2820}
2821
2822define <32 x i1> @fcmps_ole_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {
2823; CHECK-LABEL: fcmps_ole_vv_v32f16:
2824; CHECK:       # %bb.0:
2825; CHECK-NEXT:    li a0, 32
2826; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2827; CHECK-NEXT:    vmfle.vv v0, v8, v12
2828; CHECK-NEXT:    ret
2829  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
2830  ret <32 x i1> %1
2831}
2832
2833define <32 x i1> @fcmps_ole_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2834; CHECK-LABEL: fcmps_ole_vf_v32f16:
2835; CHECK:       # %bb.0:
2836; CHECK-NEXT:    li a0, 32
2837; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2838; CHECK-NEXT:    vmfle.vf v0, v8, fa0
2839; CHECK-NEXT:    ret
2840  %head = insertelement <32 x half> poison, half %b, i32 0
2841  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
2842  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
2843  ret <32 x i1> %1
2844}
2845
2846define <32 x i1> @fcmps_ole_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2847; CHECK-LABEL: fcmps_ole_fv_v32f16:
2848; CHECK:       # %bb.0:
2849; CHECK-NEXT:    li a0, 32
2850; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2851; CHECK-NEXT:    vmfge.vf v0, v8, fa0
2852; CHECK-NEXT:    ret
2853  %head = insertelement <32 x half> poison, half %b, i32 0
2854  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
2855  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
2856  ret <32 x i1> %1
2857}
2858
2859define <32 x i1> @fcmps_one_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {
2860; CHECK-LABEL: fcmps_one_vv_v32f16:
2861; CHECK:       # %bb.0:
2862; CHECK-NEXT:    li a0, 32
2863; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2864; CHECK-NEXT:    vmflt.vv v16, v8, v12
2865; CHECK-NEXT:    vmflt.vv v17, v12, v8
2866; CHECK-NEXT:    vmor.mm v0, v17, v16
2867; CHECK-NEXT:    ret
2868  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
2869  ret <32 x i1> %1
2870}
2871
2872define <32 x i1> @fcmps_one_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2873; CHECK-LABEL: fcmps_one_vf_v32f16:
2874; CHECK:       # %bb.0:
2875; CHECK-NEXT:    li a0, 32
2876; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2877; CHECK-NEXT:    vmflt.vf v12, v8, fa0
2878; CHECK-NEXT:    vmfgt.vf v13, v8, fa0
2879; CHECK-NEXT:    vmor.mm v0, v13, v12
2880; CHECK-NEXT:    ret
2881  %head = insertelement <32 x half> poison, half %b, i32 0
2882  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
2883  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
2884  ret <32 x i1> %1
2885}
2886
2887define <32 x i1> @fcmps_one_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2888; CHECK-LABEL: fcmps_one_fv_v32f16:
2889; CHECK:       # %bb.0:
2890; CHECK-NEXT:    li a0, 32
2891; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2892; CHECK-NEXT:    vmfgt.vf v12, v8, fa0
2893; CHECK-NEXT:    vmflt.vf v13, v8, fa0
2894; CHECK-NEXT:    vmor.mm v0, v13, v12
2895; CHECK-NEXT:    ret
2896  %head = insertelement <32 x half> poison, half %b, i32 0
2897  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
2898  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
2899  ret <32 x i1> %1
2900}
2901
2902define <32 x i1> @fcmps_ord_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {
2903; CHECK-LABEL: fcmps_ord_vv_v32f16:
2904; CHECK:       # %bb.0:
2905; CHECK-NEXT:    li a0, 32
2906; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2907; CHECK-NEXT:    vmfle.vv v16, v12, v12
2908; CHECK-NEXT:    vmfle.vv v12, v8, v8
2909; CHECK-NEXT:    vmand.mm v0, v12, v16
2910; CHECK-NEXT:    ret
2911  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
2912  ret <32 x i1> %1
2913}
2914
2915define <32 x i1> @fcmps_ord_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2916; CHECK-LABEL: fcmps_ord_vf_v32f16:
2917; CHECK:       # %bb.0:
2918; CHECK-NEXT:    li a0, 32
2919; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2920; CHECK-NEXT:    vfmv.v.f v12, fa0
2921; CHECK-NEXT:    vmfle.vf v16, v12, fa0
2922; CHECK-NEXT:    vmfle.vv v12, v8, v8
2923; CHECK-NEXT:    vmand.mm v0, v12, v16
2924; CHECK-NEXT:    ret
2925  %head = insertelement <32 x half> poison, half %b, i32 0
2926  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
2927  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
2928  ret <32 x i1> %1
2929}
2930
2931define <32 x i1> @fcmps_ord_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2932; CHECK-LABEL: fcmps_ord_fv_v32f16:
2933; CHECK:       # %bb.0:
2934; CHECK-NEXT:    li a0, 32
2935; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2936; CHECK-NEXT:    vfmv.v.f v12, fa0
2937; CHECK-NEXT:    vmfle.vf v16, v12, fa0
2938; CHECK-NEXT:    vmfle.vv v12, v8, v8
2939; CHECK-NEXT:    vmand.mm v0, v16, v12
2940; CHECK-NEXT:    ret
2941  %head = insertelement <32 x half> poison, half %b, i32 0
2942  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
2943  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
2944  ret <32 x i1> %1
2945}
2946
2947define <32 x i1> @fcmps_ueq_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {
2948; CHECK-LABEL: fcmps_ueq_vv_v32f16:
2949; CHECK:       # %bb.0:
2950; CHECK-NEXT:    li a0, 32
2951; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2952; CHECK-NEXT:    vmflt.vv v16, v8, v12
2953; CHECK-NEXT:    vmflt.vv v17, v12, v8
2954; CHECK-NEXT:    vmnor.mm v0, v17, v16
2955; CHECK-NEXT:    ret
2956  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
2957  ret <32 x i1> %1
2958}
2959
2960define <32 x i1> @fcmps_ueq_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2961; CHECK-LABEL: fcmps_ueq_vf_v32f16:
2962; CHECK:       # %bb.0:
2963; CHECK-NEXT:    li a0, 32
2964; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2965; CHECK-NEXT:    vmflt.vf v12, v8, fa0
2966; CHECK-NEXT:    vmfgt.vf v13, v8, fa0
2967; CHECK-NEXT:    vmnor.mm v0, v13, v12
2968; CHECK-NEXT:    ret
2969  %head = insertelement <32 x half> poison, half %b, i32 0
2970  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
2971  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
2972  ret <32 x i1> %1
2973}
2974
2975define <32 x i1> @fcmps_ueq_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2976; CHECK-LABEL: fcmps_ueq_fv_v32f16:
2977; CHECK:       # %bb.0:
2978; CHECK-NEXT:    li a0, 32
2979; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2980; CHECK-NEXT:    vmfgt.vf v12, v8, fa0
2981; CHECK-NEXT:    vmflt.vf v13, v8, fa0
2982; CHECK-NEXT:    vmnor.mm v0, v13, v12
2983; CHECK-NEXT:    ret
2984  %head = insertelement <32 x half> poison, half %b, i32 0
2985  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
2986  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
2987  ret <32 x i1> %1
2988}
2989
2990define <32 x i1> @fcmps_ugt_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {
2991; CHECK-LABEL: fcmps_ugt_vv_v32f16:
2992; CHECK:       # %bb.0:
2993; CHECK-NEXT:    li a0, 32
2994; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2995; CHECK-NEXT:    vmfle.vv v16, v8, v12
2996; CHECK-NEXT:    vmnot.m v0, v16
2997; CHECK-NEXT:    ret
2998  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
2999  ret <32 x i1> %1
3000}
3001
3002define <32 x i1> @fcmps_ugt_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3003; CHECK-LABEL: fcmps_ugt_vf_v32f16:
3004; CHECK:       # %bb.0:
3005; CHECK-NEXT:    li a0, 32
3006; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
3007; CHECK-NEXT:    vmfle.vf v12, v8, fa0
3008; CHECK-NEXT:    vmnot.m v0, v12
3009; CHECK-NEXT:    ret
3010  %head = insertelement <32 x half> poison, half %b, i32 0
3011  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
3012  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
3013  ret <32 x i1> %1
3014}
3015
3016define <32 x i1> @fcmps_ugt_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3017; CHECK-LABEL: fcmps_ugt_fv_v32f16:
3018; CHECK:       # %bb.0:
3019; CHECK-NEXT:    li a0, 32
3020; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
3021; CHECK-NEXT:    vmfge.vf v12, v8, fa0
3022; CHECK-NEXT:    vmnot.m v0, v12
3023; CHECK-NEXT:    ret
3024  %head = insertelement <32 x half> poison, half %b, i32 0
3025  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
3026  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
3027  ret <32 x i1> %1
3028}
3029
3030define <32 x i1> @fcmps_uge_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {
3031; CHECK-LABEL: fcmps_uge_vv_v32f16:
3032; CHECK:       # %bb.0:
3033; CHECK-NEXT:    li a0, 32
3034; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
3035; CHECK-NEXT:    vmflt.vv v16, v8, v12
3036; CHECK-NEXT:    vmnot.m v0, v16
3037; CHECK-NEXT:    ret
3038  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
3039  ret <32 x i1> %1
3040}
3041
3042define <32 x i1> @fcmps_uge_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3043; CHECK-LABEL: fcmps_uge_vf_v32f16:
3044; CHECK:       # %bb.0:
3045; CHECK-NEXT:    li a0, 32
3046; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
3047; CHECK-NEXT:    vmflt.vf v12, v8, fa0
3048; CHECK-NEXT:    vmnot.m v0, v12
3049; CHECK-NEXT:    ret
3050  %head = insertelement <32 x half> poison, half %b, i32 0
3051  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
3052  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
3053  ret <32 x i1> %1
3054}
3055
3056define <32 x i1> @fcmps_uge_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3057; CHECK-LABEL: fcmps_uge_fv_v32f16:
3058; CHECK:       # %bb.0:
3059; CHECK-NEXT:    li a0, 32
3060; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
3061; CHECK-NEXT:    vmfgt.vf v12, v8, fa0
3062; CHECK-NEXT:    vmnot.m v0, v12
3063; CHECK-NEXT:    ret
3064  %head = insertelement <32 x half> poison, half %b, i32 0
3065  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
3066  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
3067  ret <32 x i1> %1
3068}
3069
3070define <32 x i1> @fcmps_ult_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {
3071; CHECK-LABEL: fcmps_ult_vv_v32f16:
3072; CHECK:       # %bb.0:
3073; CHECK-NEXT:    li a0, 32
3074; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
3075; CHECK-NEXT:    vmfle.vv v16, v12, v8
3076; CHECK-NEXT:    vmnot.m v0, v16
3077; CHECK-NEXT:    ret
3078  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
3079  ret <32 x i1> %1
3080}
3081
3082define <32 x i1> @fcmps_ult_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3083; CHECK-LABEL: fcmps_ult_vf_v32f16:
3084; CHECK:       # %bb.0:
3085; CHECK-NEXT:    li a0, 32
3086; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
3087; CHECK-NEXT:    vmfge.vf v12, v8, fa0
3088; CHECK-NEXT:    vmnot.m v0, v12
3089; CHECK-NEXT:    ret
3090  %head = insertelement <32 x half> poison, half %b, i32 0
3091  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
3092  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
3093  ret <32 x i1> %1
3094}
3095
3096define <32 x i1> @fcmps_ult_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3097; CHECK-LABEL: fcmps_ult_fv_v32f16:
3098; CHECK:       # %bb.0:
3099; CHECK-NEXT:    li a0, 32
3100; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
3101; CHECK-NEXT:    vmfle.vf v12, v8, fa0
3102; CHECK-NEXT:    vmnot.m v0, v12
3103; CHECK-NEXT:    ret
3104  %head = insertelement <32 x half> poison, half %b, i32 0
3105  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
3106  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
3107  ret <32 x i1> %1
3108}
3109
3110define <32 x i1> @fcmps_ule_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {
3111; CHECK-LABEL: fcmps_ule_vv_v32f16:
3112; CHECK:       # %bb.0:
3113; CHECK-NEXT:    li a0, 32
3114; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
3115; CHECK-NEXT:    vmflt.vv v16, v12, v8
3116; CHECK-NEXT:    vmnot.m v0, v16
3117; CHECK-NEXT:    ret
3118  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
3119  ret <32 x i1> %1
3120}
3121
3122define <32 x i1> @fcmps_ule_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3123; CHECK-LABEL: fcmps_ule_vf_v32f16:
3124; CHECK:       # %bb.0:
3125; CHECK-NEXT:    li a0, 32
3126; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
3127; CHECK-NEXT:    vmfgt.vf v12, v8, fa0
3128; CHECK-NEXT:    vmnot.m v0, v12
3129; CHECK-NEXT:    ret
3130  %head = insertelement <32 x half> poison, half %b, i32 0
3131  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
3132  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
3133  ret <32 x i1> %1
3134}
3135
3136define <32 x i1> @fcmps_ule_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3137; CHECK-LABEL: fcmps_ule_fv_v32f16:
3138; CHECK:       # %bb.0:
3139; CHECK-NEXT:    li a0, 32
3140; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
3141; CHECK-NEXT:    vmflt.vf v12, v8, fa0
3142; CHECK-NEXT:    vmnot.m v0, v12
3143; CHECK-NEXT:    ret
3144  %head = insertelement <32 x half> poison, half %b, i32 0
3145  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
3146  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
3147  ret <32 x i1> %1
3148}
3149
3150define <32 x i1> @fcmps_une_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {
3151; CHECK-LABEL: fcmps_une_vv_v32f16:
3152; CHECK:       # %bb.0:
3153; CHECK-NEXT:    li a0, 32
3154; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
3155; CHECK-NEXT:    vmfle.vv v16, v12, v8
3156; CHECK-NEXT:    vmfle.vv v17, v8, v12
3157; CHECK-NEXT:    vmnand.mm v0, v17, v16
3158; CHECK-NEXT:    ret
3159  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
3160  ret <32 x i1> %1
3161}
3162
3163define <32 x i1> @fcmps_une_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3164; CHECK-LABEL: fcmps_une_vf_v32f16:
3165; CHECK:       # %bb.0:
3166; CHECK-NEXT:    li a0, 32
3167; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
3168; CHECK-NEXT:    vmfge.vf v12, v8, fa0
3169; CHECK-NEXT:    vmfle.vf v13, v8, fa0
3170; CHECK-NEXT:    vmnand.mm v0, v13, v12
3171; CHECK-NEXT:    ret
3172  %head = insertelement <32 x half> poison, half %b, i32 0
3173  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
3174  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
3175  ret <32 x i1> %1
3176}
3177
3178define <32 x i1> @fcmps_une_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3179; CHECK-LABEL: fcmps_une_fv_v32f16:
3180; CHECK:       # %bb.0:
3181; CHECK-NEXT:    li a0, 32
3182; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
3183; CHECK-NEXT:    vmfle.vf v12, v8, fa0
3184; CHECK-NEXT:    vmfge.vf v13, v8, fa0
3185; CHECK-NEXT:    vmnand.mm v0, v13, v12
3186; CHECK-NEXT:    ret
3187  %head = insertelement <32 x half> poison, half %b, i32 0
3188  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
3189  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
3190  ret <32 x i1> %1
3191}
3192
3193define <32 x i1> @fcmps_uno_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {
3194; CHECK-LABEL: fcmps_uno_vv_v32f16:
3195; CHECK:       # %bb.0:
3196; CHECK-NEXT:    li a0, 32
3197; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
3198; CHECK-NEXT:    vmfle.vv v16, v12, v12
3199; CHECK-NEXT:    vmfle.vv v12, v8, v8
3200; CHECK-NEXT:    vmnot.m v8, v12
3201; CHECK-NEXT:    vmorn.mm v0, v8, v16
3202; CHECK-NEXT:    ret
3203  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
3204  ret <32 x i1> %1
3205}
3206
3207define <32 x i1> @fcmps_uno_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3208; CHECK-LABEL: fcmps_uno_vf_v32f16:
3209; CHECK:       # %bb.0:
3210; CHECK-NEXT:    li a0, 32
3211; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
3212; CHECK-NEXT:    vfmv.v.f v12, fa0
3213; CHECK-NEXT:    vmfle.vv v16, v8, v8
3214; CHECK-NEXT:    vmfle.vf v8, v12, fa0
3215; CHECK-NEXT:    vmnot.m v9, v16
3216; CHECK-NEXT:    vmorn.mm v0, v9, v8
3217; CHECK-NEXT:    ret
3218  %head = insertelement <32 x half> poison, half %b, i32 0
3219  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
3220  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
3221  ret <32 x i1> %1
3222}
3223
3224define <32 x i1> @fcmps_uno_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3225; CHECK-LABEL: fcmps_uno_fv_v32f16:
3226; CHECK:       # %bb.0:
3227; CHECK-NEXT:    li a0, 32
3228; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
3229; CHECK-NEXT:    vfmv.v.f v12, fa0
3230; CHECK-NEXT:    vmfle.vv v16, v8, v8
3231; CHECK-NEXT:    vmfle.vf v8, v12, fa0
3232; CHECK-NEXT:    vmnot.m v8, v8
3233; CHECK-NEXT:    vmorn.mm v0, v8, v16
3234; CHECK-NEXT:    ret
3235  %head = insertelement <32 x half> poison, half %b, i32 0
3236  %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer
3237  %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
3238  ret <32 x i1> %1
3239}
3240
3241declare <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float>, <1 x float>, metadata, metadata)
3242define <1 x i1> @fcmps_oeq_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {
3243; CHECK-LABEL: fcmps_oeq_vv_v1f32:
3244; CHECK:       # %bb.0:
3245; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3246; CHECK-NEXT:    vmfle.vv v10, v9, v8
3247; CHECK-NEXT:    vmfle.vv v8, v8, v9
3248; CHECK-NEXT:    vmand.mm v0, v8, v10
3249; CHECK-NEXT:    ret
3250  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
3251  ret <1 x i1> %1
3252}
3253
3254define <1 x i1> @fcmps_oeq_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3255; CHECK-LABEL: fcmps_oeq_vf_v1f32:
3256; CHECK:       # %bb.0:
3257; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3258; CHECK-NEXT:    vmfge.vf v9, v8, fa0
3259; CHECK-NEXT:    vmfle.vf v8, v8, fa0
3260; CHECK-NEXT:    vmand.mm v0, v8, v9
3261; CHECK-NEXT:    ret
3262  %head = insertelement <1 x float> poison, float %b, i32 0
3263  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3264  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
3265  ret <1 x i1> %1
3266}
3267
3268define <1 x i1> @fcmps_oeq_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3269; CHECK-LABEL: fcmps_oeq_fv_v1f32:
3270; CHECK:       # %bb.0:
3271; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3272; CHECK-NEXT:    vmfle.vf v9, v8, fa0
3273; CHECK-NEXT:    vmfge.vf v8, v8, fa0
3274; CHECK-NEXT:    vmand.mm v0, v8, v9
3275; CHECK-NEXT:    ret
3276  %head = insertelement <1 x float> poison, float %b, i32 0
3277  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3278  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
3279  ret <1 x i1> %1
3280}
3281
3282define <1 x i1> @fcmps_ogt_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {
3283; CHECK-LABEL: fcmps_ogt_vv_v1f32:
3284; CHECK:       # %bb.0:
3285; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3286; CHECK-NEXT:    vmflt.vv v0, v9, v8
3287; CHECK-NEXT:    ret
3288  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
3289  ret <1 x i1> %1
3290}
3291
3292define <1 x i1> @fcmps_ogt_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3293; CHECK-LABEL: fcmps_ogt_vf_v1f32:
3294; CHECK:       # %bb.0:
3295; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3296; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
3297; CHECK-NEXT:    ret
3298  %head = insertelement <1 x float> poison, float %b, i32 0
3299  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3300  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
3301  ret <1 x i1> %1
3302}
3303
3304define <1 x i1> @fcmps_ogt_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3305; CHECK-LABEL: fcmps_ogt_fv_v1f32:
3306; CHECK:       # %bb.0:
3307; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3308; CHECK-NEXT:    vmflt.vf v0, v8, fa0
3309; CHECK-NEXT:    ret
3310  %head = insertelement <1 x float> poison, float %b, i32 0
3311  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3312  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
3313  ret <1 x i1> %1
3314}
3315
3316define <1 x i1> @fcmps_oge_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {
3317; CHECK-LABEL: fcmps_oge_vv_v1f32:
3318; CHECK:       # %bb.0:
3319; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3320; CHECK-NEXT:    vmfle.vv v0, v9, v8
3321; CHECK-NEXT:    ret
3322  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
3323  ret <1 x i1> %1
3324}
3325
3326define <1 x i1> @fcmps_oge_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3327; CHECK-LABEL: fcmps_oge_vf_v1f32:
3328; CHECK:       # %bb.0:
3329; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3330; CHECK-NEXT:    vmfge.vf v0, v8, fa0
3331; CHECK-NEXT:    ret
3332  %head = insertelement <1 x float> poison, float %b, i32 0
3333  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3334  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
3335  ret <1 x i1> %1
3336}
3337
3338define <1 x i1> @fcmps_oge_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3339; CHECK-LABEL: fcmps_oge_fv_v1f32:
3340; CHECK:       # %bb.0:
3341; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3342; CHECK-NEXT:    vmfle.vf v0, v8, fa0
3343; CHECK-NEXT:    ret
3344  %head = insertelement <1 x float> poison, float %b, i32 0
3345  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3346  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
3347  ret <1 x i1> %1
3348}
3349
3350define <1 x i1> @fcmps_olt_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {
3351; CHECK-LABEL: fcmps_olt_vv_v1f32:
3352; CHECK:       # %bb.0:
3353; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3354; CHECK-NEXT:    vmflt.vv v0, v8, v9
3355; CHECK-NEXT:    ret
3356  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
3357  ret <1 x i1> %1
3358}
3359
3360define <1 x i1> @fcmps_olt_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3361; CHECK-LABEL: fcmps_olt_vf_v1f32:
3362; CHECK:       # %bb.0:
3363; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3364; CHECK-NEXT:    vmflt.vf v0, v8, fa0
3365; CHECK-NEXT:    ret
3366  %head = insertelement <1 x float> poison, float %b, i32 0
3367  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3368  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
3369  ret <1 x i1> %1
3370}
3371
3372define <1 x i1> @fcmps_olt_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3373; CHECK-LABEL: fcmps_olt_fv_v1f32:
3374; CHECK:       # %bb.0:
3375; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3376; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
3377; CHECK-NEXT:    ret
3378  %head = insertelement <1 x float> poison, float %b, i32 0
3379  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3380  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
3381  ret <1 x i1> %1
3382}
3383
3384define <1 x i1> @fcmps_ole_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {
3385; CHECK-LABEL: fcmps_ole_vv_v1f32:
3386; CHECK:       # %bb.0:
3387; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3388; CHECK-NEXT:    vmfle.vv v0, v8, v9
3389; CHECK-NEXT:    ret
3390  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
3391  ret <1 x i1> %1
3392}
3393
3394define <1 x i1> @fcmps_ole_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3395; CHECK-LABEL: fcmps_ole_vf_v1f32:
3396; CHECK:       # %bb.0:
3397; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3398; CHECK-NEXT:    vmfle.vf v0, v8, fa0
3399; CHECK-NEXT:    ret
3400  %head = insertelement <1 x float> poison, float %b, i32 0
3401  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3402  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
3403  ret <1 x i1> %1
3404}
3405
3406define <1 x i1> @fcmps_ole_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3407; CHECK-LABEL: fcmps_ole_fv_v1f32:
3408; CHECK:       # %bb.0:
3409; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3410; CHECK-NEXT:    vmfge.vf v0, v8, fa0
3411; CHECK-NEXT:    ret
3412  %head = insertelement <1 x float> poison, float %b, i32 0
3413  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3414  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
3415  ret <1 x i1> %1
3416}
3417
3418define <1 x i1> @fcmps_one_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {
3419; CHECK-LABEL: fcmps_one_vv_v1f32:
3420; CHECK:       # %bb.0:
3421; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3422; CHECK-NEXT:    vmflt.vv v10, v8, v9
3423; CHECK-NEXT:    vmflt.vv v8, v9, v8
3424; CHECK-NEXT:    vmor.mm v0, v8, v10
3425; CHECK-NEXT:    ret
3426  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
3427  ret <1 x i1> %1
3428}
3429
3430define <1 x i1> @fcmps_one_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3431; CHECK-LABEL: fcmps_one_vf_v1f32:
3432; CHECK:       # %bb.0:
3433; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3434; CHECK-NEXT:    vmflt.vf v9, v8, fa0
3435; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
3436; CHECK-NEXT:    vmor.mm v0, v8, v9
3437; CHECK-NEXT:    ret
3438  %head = insertelement <1 x float> poison, float %b, i32 0
3439  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3440  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
3441  ret <1 x i1> %1
3442}
3443
3444define <1 x i1> @fcmps_one_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3445; CHECK-LABEL: fcmps_one_fv_v1f32:
3446; CHECK:       # %bb.0:
3447; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3448; CHECK-NEXT:    vmfgt.vf v9, v8, fa0
3449; CHECK-NEXT:    vmflt.vf v8, v8, fa0
3450; CHECK-NEXT:    vmor.mm v0, v8, v9
3451; CHECK-NEXT:    ret
3452  %head = insertelement <1 x float> poison, float %b, i32 0
3453  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3454  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
3455  ret <1 x i1> %1
3456}
3457
3458define <1 x i1> @fcmps_ord_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {
3459; CHECK-LABEL: fcmps_ord_vv_v1f32:
3460; CHECK:       # %bb.0:
3461; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3462; CHECK-NEXT:    vmfle.vv v9, v9, v9
3463; CHECK-NEXT:    vmfle.vv v8, v8, v8
3464; CHECK-NEXT:    vmand.mm v0, v8, v9
3465; CHECK-NEXT:    ret
3466  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
3467  ret <1 x i1> %1
3468}
3469
3470define <1 x i1> @fcmps_ord_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3471; CHECK-LABEL: fcmps_ord_vf_v1f32:
3472; CHECK:       # %bb.0:
3473; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3474; CHECK-NEXT:    vfmv.s.f v9, fa0
3475; CHECK-NEXT:    vmfle.vf v9, v9, fa0
3476; CHECK-NEXT:    vmfle.vv v8, v8, v8
3477; CHECK-NEXT:    vmand.mm v0, v8, v9
3478; CHECK-NEXT:    ret
3479  %head = insertelement <1 x float> poison, float %b, i32 0
3480  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3481  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
3482  ret <1 x i1> %1
3483}
3484
3485define <1 x i1> @fcmps_ord_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3486; CHECK-LABEL: fcmps_ord_fv_v1f32:
3487; CHECK:       # %bb.0:
3488; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3489; CHECK-NEXT:    vfmv.s.f v9, fa0
3490; CHECK-NEXT:    vmfle.vf v9, v9, fa0
3491; CHECK-NEXT:    vmfle.vv v8, v8, v8
3492; CHECK-NEXT:    vmand.mm v0, v9, v8
3493; CHECK-NEXT:    ret
3494  %head = insertelement <1 x float> poison, float %b, i32 0
3495  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3496  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
3497  ret <1 x i1> %1
3498}
3499
3500define <1 x i1> @fcmps_ueq_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {
3501; CHECK-LABEL: fcmps_ueq_vv_v1f32:
3502; CHECK:       # %bb.0:
3503; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3504; CHECK-NEXT:    vmflt.vv v10, v8, v9
3505; CHECK-NEXT:    vmflt.vv v8, v9, v8
3506; CHECK-NEXT:    vmnor.mm v0, v8, v10
3507; CHECK-NEXT:    ret
3508  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
3509  ret <1 x i1> %1
3510}
3511
3512define <1 x i1> @fcmps_ueq_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3513; CHECK-LABEL: fcmps_ueq_vf_v1f32:
3514; CHECK:       # %bb.0:
3515; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3516; CHECK-NEXT:    vmflt.vf v9, v8, fa0
3517; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
3518; CHECK-NEXT:    vmnor.mm v0, v8, v9
3519; CHECK-NEXT:    ret
3520  %head = insertelement <1 x float> poison, float %b, i32 0
3521  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3522  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
3523  ret <1 x i1> %1
3524}
3525
3526define <1 x i1> @fcmps_ueq_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3527; CHECK-LABEL: fcmps_ueq_fv_v1f32:
3528; CHECK:       # %bb.0:
3529; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3530; CHECK-NEXT:    vmfgt.vf v9, v8, fa0
3531; CHECK-NEXT:    vmflt.vf v8, v8, fa0
3532; CHECK-NEXT:    vmnor.mm v0, v8, v9
3533; CHECK-NEXT:    ret
3534  %head = insertelement <1 x float> poison, float %b, i32 0
3535  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3536  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
3537  ret <1 x i1> %1
3538}
3539
3540define <1 x i1> @fcmps_ugt_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {
3541; CHECK-LABEL: fcmps_ugt_vv_v1f32:
3542; CHECK:       # %bb.0:
3543; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3544; CHECK-NEXT:    vmfle.vv v8, v8, v9
3545; CHECK-NEXT:    vmnot.m v0, v8
3546; CHECK-NEXT:    ret
3547  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
3548  ret <1 x i1> %1
3549}
3550
3551define <1 x i1> @fcmps_ugt_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3552; CHECK-LABEL: fcmps_ugt_vf_v1f32:
3553; CHECK:       # %bb.0:
3554; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3555; CHECK-NEXT:    vmfle.vf v8, v8, fa0
3556; CHECK-NEXT:    vmnot.m v0, v8
3557; CHECK-NEXT:    ret
3558  %head = insertelement <1 x float> poison, float %b, i32 0
3559  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3560  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
3561  ret <1 x i1> %1
3562}
3563
3564define <1 x i1> @fcmps_ugt_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3565; CHECK-LABEL: fcmps_ugt_fv_v1f32:
3566; CHECK:       # %bb.0:
3567; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3568; CHECK-NEXT:    vmfge.vf v8, v8, fa0
3569; CHECK-NEXT:    vmnot.m v0, v8
3570; CHECK-NEXT:    ret
3571  %head = insertelement <1 x float> poison, float %b, i32 0
3572  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3573  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
3574  ret <1 x i1> %1
3575}
3576
3577define <1 x i1> @fcmps_uge_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {
3578; CHECK-LABEL: fcmps_uge_vv_v1f32:
3579; CHECK:       # %bb.0:
3580; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3581; CHECK-NEXT:    vmflt.vv v8, v8, v9
3582; CHECK-NEXT:    vmnot.m v0, v8
3583; CHECK-NEXT:    ret
3584  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
3585  ret <1 x i1> %1
3586}
3587
3588define <1 x i1> @fcmps_uge_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3589; CHECK-LABEL: fcmps_uge_vf_v1f32:
3590; CHECK:       # %bb.0:
3591; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3592; CHECK-NEXT:    vmflt.vf v8, v8, fa0
3593; CHECK-NEXT:    vmnot.m v0, v8
3594; CHECK-NEXT:    ret
3595  %head = insertelement <1 x float> poison, float %b, i32 0
3596  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3597  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
3598  ret <1 x i1> %1
3599}
3600
3601define <1 x i1> @fcmps_uge_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3602; CHECK-LABEL: fcmps_uge_fv_v1f32:
3603; CHECK:       # %bb.0:
3604; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3605; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
3606; CHECK-NEXT:    vmnot.m v0, v8
3607; CHECK-NEXT:    ret
3608  %head = insertelement <1 x float> poison, float %b, i32 0
3609  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3610  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
3611  ret <1 x i1> %1
3612}
3613
3614define <1 x i1> @fcmps_ult_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {
3615; CHECK-LABEL: fcmps_ult_vv_v1f32:
3616; CHECK:       # %bb.0:
3617; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3618; CHECK-NEXT:    vmfle.vv v8, v9, v8
3619; CHECK-NEXT:    vmnot.m v0, v8
3620; CHECK-NEXT:    ret
3621  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
3622  ret <1 x i1> %1
3623}
3624
3625define <1 x i1> @fcmps_ult_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3626; CHECK-LABEL: fcmps_ult_vf_v1f32:
3627; CHECK:       # %bb.0:
3628; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3629; CHECK-NEXT:    vmfge.vf v8, v8, fa0
3630; CHECK-NEXT:    vmnot.m v0, v8
3631; CHECK-NEXT:    ret
3632  %head = insertelement <1 x float> poison, float %b, i32 0
3633  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3634  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
3635  ret <1 x i1> %1
3636}
3637
3638define <1 x i1> @fcmps_ult_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3639; CHECK-LABEL: fcmps_ult_fv_v1f32:
3640; CHECK:       # %bb.0:
3641; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3642; CHECK-NEXT:    vmfle.vf v8, v8, fa0
3643; CHECK-NEXT:    vmnot.m v0, v8
3644; CHECK-NEXT:    ret
3645  %head = insertelement <1 x float> poison, float %b, i32 0
3646  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3647  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
3648  ret <1 x i1> %1
3649}
3650
3651define <1 x i1> @fcmps_ule_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {
3652; CHECK-LABEL: fcmps_ule_vv_v1f32:
3653; CHECK:       # %bb.0:
3654; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3655; CHECK-NEXT:    vmflt.vv v8, v9, v8
3656; CHECK-NEXT:    vmnot.m v0, v8
3657; CHECK-NEXT:    ret
3658  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
3659  ret <1 x i1> %1
3660}
3661
3662define <1 x i1> @fcmps_ule_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3663; CHECK-LABEL: fcmps_ule_vf_v1f32:
3664; CHECK:       # %bb.0:
3665; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3666; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
3667; CHECK-NEXT:    vmnot.m v0, v8
3668; CHECK-NEXT:    ret
3669  %head = insertelement <1 x float> poison, float %b, i32 0
3670  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3671  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
3672  ret <1 x i1> %1
3673}
3674
3675define <1 x i1> @fcmps_ule_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3676; CHECK-LABEL: fcmps_ule_fv_v1f32:
3677; CHECK:       # %bb.0:
3678; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3679; CHECK-NEXT:    vmflt.vf v8, v8, fa0
3680; CHECK-NEXT:    vmnot.m v0, v8
3681; CHECK-NEXT:    ret
3682  %head = insertelement <1 x float> poison, float %b, i32 0
3683  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3684  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
3685  ret <1 x i1> %1
3686}
3687
3688define <1 x i1> @fcmps_une_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {
3689; CHECK-LABEL: fcmps_une_vv_v1f32:
3690; CHECK:       # %bb.0:
3691; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3692; CHECK-NEXT:    vmfle.vv v10, v9, v8
3693; CHECK-NEXT:    vmfle.vv v8, v8, v9
3694; CHECK-NEXT:    vmnand.mm v0, v8, v10
3695; CHECK-NEXT:    ret
3696  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
3697  ret <1 x i1> %1
3698}
3699
3700define <1 x i1> @fcmps_une_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3701; CHECK-LABEL: fcmps_une_vf_v1f32:
3702; CHECK:       # %bb.0:
3703; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3704; CHECK-NEXT:    vmfge.vf v9, v8, fa0
3705; CHECK-NEXT:    vmfle.vf v8, v8, fa0
3706; CHECK-NEXT:    vmnand.mm v0, v8, v9
3707; CHECK-NEXT:    ret
3708  %head = insertelement <1 x float> poison, float %b, i32 0
3709  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3710  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
3711  ret <1 x i1> %1
3712}
3713
3714define <1 x i1> @fcmps_une_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3715; CHECK-LABEL: fcmps_une_fv_v1f32:
3716; CHECK:       # %bb.0:
3717; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3718; CHECK-NEXT:    vmfle.vf v9, v8, fa0
3719; CHECK-NEXT:    vmfge.vf v8, v8, fa0
3720; CHECK-NEXT:    vmnand.mm v0, v8, v9
3721; CHECK-NEXT:    ret
3722  %head = insertelement <1 x float> poison, float %b, i32 0
3723  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3724  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
3725  ret <1 x i1> %1
3726}
3727
3728define <1 x i1> @fcmps_uno_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {
3729; CHECK-LABEL: fcmps_uno_vv_v1f32:
3730; CHECK:       # %bb.0:
3731; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3732; CHECK-NEXT:    vmfle.vv v9, v9, v9
3733; CHECK-NEXT:    vmfle.vv v8, v8, v8
3734; CHECK-NEXT:    vmnot.m v8, v8
3735; CHECK-NEXT:    vmorn.mm v0, v8, v9
3736; CHECK-NEXT:    ret
3737  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
3738  ret <1 x i1> %1
3739}
3740
3741define <1 x i1> @fcmps_uno_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3742; CHECK-LABEL: fcmps_uno_vf_v1f32:
3743; CHECK:       # %bb.0:
3744; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3745; CHECK-NEXT:    vfmv.s.f v9, fa0
3746; CHECK-NEXT:    vmfle.vv v8, v8, v8
3747; CHECK-NEXT:    vmfle.vf v9, v9, fa0
3748; CHECK-NEXT:    vmnot.m v8, v8
3749; CHECK-NEXT:    vmorn.mm v0, v8, v9
3750; CHECK-NEXT:    ret
3751  %head = insertelement <1 x float> poison, float %b, i32 0
3752  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3753  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
3754  ret <1 x i1> %1
3755}
3756
3757define <1 x i1> @fcmps_uno_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3758; CHECK-LABEL: fcmps_uno_fv_v1f32:
3759; CHECK:       # %bb.0:
3760; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
3761; CHECK-NEXT:    vfmv.s.f v9, fa0
3762; CHECK-NEXT:    vmfle.vf v9, v9, fa0
3763; CHECK-NEXT:    vmnot.m v9, v9
3764; CHECK-NEXT:    vmfle.vv v8, v8, v8
3765; CHECK-NEXT:    vmorn.mm v0, v9, v8
3766; CHECK-NEXT:    ret
3767  %head = insertelement <1 x float> poison, float %b, i32 0
3768  %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer
3769  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
3770  ret <1 x i1> %1
3771}
3772
3773declare <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float>, <2 x float>, metadata, metadata)
3774define <2 x i1> @fcmps_oeq_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {
3775; CHECK-LABEL: fcmps_oeq_vv_v2f32:
3776; CHECK:       # %bb.0:
3777; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
3778; CHECK-NEXT:    vmfle.vv v10, v9, v8
3779; CHECK-NEXT:    vmfle.vv v8, v8, v9
3780; CHECK-NEXT:    vmand.mm v0, v8, v10
3781; CHECK-NEXT:    ret
3782  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
3783  ret <2 x i1> %1
3784}
3785
3786define <2 x i1> @fcmps_oeq_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3787; CHECK-LABEL: fcmps_oeq_vf_v2f32:
3788; CHECK:       # %bb.0:
3789; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
3790; CHECK-NEXT:    vmfge.vf v9, v8, fa0
3791; CHECK-NEXT:    vmfle.vf v8, v8, fa0
3792; CHECK-NEXT:    vmand.mm v0, v8, v9
3793; CHECK-NEXT:    ret
3794  %head = insertelement <2 x float> poison, float %b, i32 0
3795  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
3796  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
3797  ret <2 x i1> %1
3798}
3799
3800define <2 x i1> @fcmps_oeq_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3801; CHECK-LABEL: fcmps_oeq_fv_v2f32:
3802; CHECK:       # %bb.0:
3803; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
3804; CHECK-NEXT:    vmfle.vf v9, v8, fa0
3805; CHECK-NEXT:    vmfge.vf v8, v8, fa0
3806; CHECK-NEXT:    vmand.mm v0, v8, v9
3807; CHECK-NEXT:    ret
3808  %head = insertelement <2 x float> poison, float %b, i32 0
3809  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
3810  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
3811  ret <2 x i1> %1
3812}
3813
3814define <2 x i1> @fcmps_ogt_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {
3815; CHECK-LABEL: fcmps_ogt_vv_v2f32:
3816; CHECK:       # %bb.0:
3817; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
3818; CHECK-NEXT:    vmflt.vv v0, v9, v8
3819; CHECK-NEXT:    ret
3820  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
3821  ret <2 x i1> %1
3822}
3823
3824define <2 x i1> @fcmps_ogt_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3825; CHECK-LABEL: fcmps_ogt_vf_v2f32:
3826; CHECK:       # %bb.0:
3827; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
3828; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
3829; CHECK-NEXT:    ret
3830  %head = insertelement <2 x float> poison, float %b, i32 0
3831  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
3832  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
3833  ret <2 x i1> %1
3834}
3835
3836define <2 x i1> @fcmps_ogt_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3837; CHECK-LABEL: fcmps_ogt_fv_v2f32:
3838; CHECK:       # %bb.0:
3839; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
3840; CHECK-NEXT:    vmflt.vf v0, v8, fa0
3841; CHECK-NEXT:    ret
3842  %head = insertelement <2 x float> poison, float %b, i32 0
3843  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
3844  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
3845  ret <2 x i1> %1
3846}
3847
3848define <2 x i1> @fcmps_oge_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {
3849; CHECK-LABEL: fcmps_oge_vv_v2f32:
3850; CHECK:       # %bb.0:
3851; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
3852; CHECK-NEXT:    vmfle.vv v0, v9, v8
3853; CHECK-NEXT:    ret
3854  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
3855  ret <2 x i1> %1
3856}
3857
3858define <2 x i1> @fcmps_oge_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3859; CHECK-LABEL: fcmps_oge_vf_v2f32:
3860; CHECK:       # %bb.0:
3861; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
3862; CHECK-NEXT:    vmfge.vf v0, v8, fa0
3863; CHECK-NEXT:    ret
3864  %head = insertelement <2 x float> poison, float %b, i32 0
3865  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
3866  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
3867  ret <2 x i1> %1
3868}
3869
3870define <2 x i1> @fcmps_oge_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3871; CHECK-LABEL: fcmps_oge_fv_v2f32:
3872; CHECK:       # %bb.0:
3873; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
3874; CHECK-NEXT:    vmfle.vf v0, v8, fa0
3875; CHECK-NEXT:    ret
3876  %head = insertelement <2 x float> poison, float %b, i32 0
3877  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
3878  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
3879  ret <2 x i1> %1
3880}
3881
3882define <2 x i1> @fcmps_olt_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {
3883; CHECK-LABEL: fcmps_olt_vv_v2f32:
3884; CHECK:       # %bb.0:
3885; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
3886; CHECK-NEXT:    vmflt.vv v0, v8, v9
3887; CHECK-NEXT:    ret
3888  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
3889  ret <2 x i1> %1
3890}
3891
3892define <2 x i1> @fcmps_olt_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3893; CHECK-LABEL: fcmps_olt_vf_v2f32:
3894; CHECK:       # %bb.0:
3895; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
3896; CHECK-NEXT:    vmflt.vf v0, v8, fa0
3897; CHECK-NEXT:    ret
3898  %head = insertelement <2 x float> poison, float %b, i32 0
3899  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
3900  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
3901  ret <2 x i1> %1
3902}
3903
3904define <2 x i1> @fcmps_olt_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3905; CHECK-LABEL: fcmps_olt_fv_v2f32:
3906; CHECK:       # %bb.0:
3907; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
3908; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
3909; CHECK-NEXT:    ret
3910  %head = insertelement <2 x float> poison, float %b, i32 0
3911  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
3912  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
3913  ret <2 x i1> %1
3914}
3915
3916define <2 x i1> @fcmps_ole_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {
3917; CHECK-LABEL: fcmps_ole_vv_v2f32:
3918; CHECK:       # %bb.0:
3919; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
3920; CHECK-NEXT:    vmfle.vv v0, v8, v9
3921; CHECK-NEXT:    ret
3922  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
3923  ret <2 x i1> %1
3924}
3925
3926define <2 x i1> @fcmps_ole_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3927; CHECK-LABEL: fcmps_ole_vf_v2f32:
3928; CHECK:       # %bb.0:
3929; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
3930; CHECK-NEXT:    vmfle.vf v0, v8, fa0
3931; CHECK-NEXT:    ret
3932  %head = insertelement <2 x float> poison, float %b, i32 0
3933  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
3934  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
3935  ret <2 x i1> %1
3936}
3937
3938define <2 x i1> @fcmps_ole_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3939; CHECK-LABEL: fcmps_ole_fv_v2f32:
3940; CHECK:       # %bb.0:
3941; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
3942; CHECK-NEXT:    vmfge.vf v0, v8, fa0
3943; CHECK-NEXT:    ret
3944  %head = insertelement <2 x float> poison, float %b, i32 0
3945  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
3946  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
3947  ret <2 x i1> %1
3948}
3949
3950define <2 x i1> @fcmps_one_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {
3951; CHECK-LABEL: fcmps_one_vv_v2f32:
3952; CHECK:       # %bb.0:
3953; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
3954; CHECK-NEXT:    vmflt.vv v10, v8, v9
3955; CHECK-NEXT:    vmflt.vv v8, v9, v8
3956; CHECK-NEXT:    vmor.mm v0, v8, v10
3957; CHECK-NEXT:    ret
3958  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
3959  ret <2 x i1> %1
3960}
3961
3962define <2 x i1> @fcmps_one_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3963; CHECK-LABEL: fcmps_one_vf_v2f32:
3964; CHECK:       # %bb.0:
3965; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
3966; CHECK-NEXT:    vmflt.vf v9, v8, fa0
3967; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
3968; CHECK-NEXT:    vmor.mm v0, v8, v9
3969; CHECK-NEXT:    ret
3970  %head = insertelement <2 x float> poison, float %b, i32 0
3971  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
3972  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
3973  ret <2 x i1> %1
3974}
3975
3976define <2 x i1> @fcmps_one_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3977; CHECK-LABEL: fcmps_one_fv_v2f32:
3978; CHECK:       # %bb.0:
3979; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
3980; CHECK-NEXT:    vmfgt.vf v9, v8, fa0
3981; CHECK-NEXT:    vmflt.vf v8, v8, fa0
3982; CHECK-NEXT:    vmor.mm v0, v8, v9
3983; CHECK-NEXT:    ret
3984  %head = insertelement <2 x float> poison, float %b, i32 0
3985  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
3986  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
3987  ret <2 x i1> %1
3988}
3989
3990define <2 x i1> @fcmps_ord_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {
3991; CHECK-LABEL: fcmps_ord_vv_v2f32:
3992; CHECK:       # %bb.0:
3993; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
3994; CHECK-NEXT:    vmfle.vv v9, v9, v9
3995; CHECK-NEXT:    vmfle.vv v8, v8, v8
3996; CHECK-NEXT:    vmand.mm v0, v8, v9
3997; CHECK-NEXT:    ret
3998  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
3999  ret <2 x i1> %1
4000}
4001
4002define <2 x i1> @fcmps_ord_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4003; CHECK-LABEL: fcmps_ord_vf_v2f32:
4004; CHECK:       # %bb.0:
4005; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4006; CHECK-NEXT:    vfmv.v.f v9, fa0
4007; CHECK-NEXT:    vmfle.vf v9, v9, fa0
4008; CHECK-NEXT:    vmfle.vv v8, v8, v8
4009; CHECK-NEXT:    vmand.mm v0, v8, v9
4010; CHECK-NEXT:    ret
4011  %head = insertelement <2 x float> poison, float %b, i32 0
4012  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
4013  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
4014  ret <2 x i1> %1
4015}
4016
4017define <2 x i1> @fcmps_ord_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4018; CHECK-LABEL: fcmps_ord_fv_v2f32:
4019; CHECK:       # %bb.0:
4020; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4021; CHECK-NEXT:    vfmv.v.f v9, fa0
4022; CHECK-NEXT:    vmfle.vf v9, v9, fa0
4023; CHECK-NEXT:    vmfle.vv v8, v8, v8
4024; CHECK-NEXT:    vmand.mm v0, v9, v8
4025; CHECK-NEXT:    ret
4026  %head = insertelement <2 x float> poison, float %b, i32 0
4027  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
4028  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
4029  ret <2 x i1> %1
4030}
4031
4032define <2 x i1> @fcmps_ueq_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {
4033; CHECK-LABEL: fcmps_ueq_vv_v2f32:
4034; CHECK:       # %bb.0:
4035; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4036; CHECK-NEXT:    vmflt.vv v10, v8, v9
4037; CHECK-NEXT:    vmflt.vv v8, v9, v8
4038; CHECK-NEXT:    vmnor.mm v0, v8, v10
4039; CHECK-NEXT:    ret
4040  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
4041  ret <2 x i1> %1
4042}
4043
4044define <2 x i1> @fcmps_ueq_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4045; CHECK-LABEL: fcmps_ueq_vf_v2f32:
4046; CHECK:       # %bb.0:
4047; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4048; CHECK-NEXT:    vmflt.vf v9, v8, fa0
4049; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
4050; CHECK-NEXT:    vmnor.mm v0, v8, v9
4051; CHECK-NEXT:    ret
4052  %head = insertelement <2 x float> poison, float %b, i32 0
4053  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
4054  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
4055  ret <2 x i1> %1
4056}
4057
4058define <2 x i1> @fcmps_ueq_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4059; CHECK-LABEL: fcmps_ueq_fv_v2f32:
4060; CHECK:       # %bb.0:
4061; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4062; CHECK-NEXT:    vmfgt.vf v9, v8, fa0
4063; CHECK-NEXT:    vmflt.vf v8, v8, fa0
4064; CHECK-NEXT:    vmnor.mm v0, v8, v9
4065; CHECK-NEXT:    ret
4066  %head = insertelement <2 x float> poison, float %b, i32 0
4067  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
4068  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
4069  ret <2 x i1> %1
4070}
4071
4072define <2 x i1> @fcmps_ugt_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {
4073; CHECK-LABEL: fcmps_ugt_vv_v2f32:
4074; CHECK:       # %bb.0:
4075; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4076; CHECK-NEXT:    vmfle.vv v8, v8, v9
4077; CHECK-NEXT:    vmnot.m v0, v8
4078; CHECK-NEXT:    ret
4079  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
4080  ret <2 x i1> %1
4081}
4082
4083define <2 x i1> @fcmps_ugt_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4084; CHECK-LABEL: fcmps_ugt_vf_v2f32:
4085; CHECK:       # %bb.0:
4086; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4087; CHECK-NEXT:    vmfle.vf v8, v8, fa0
4088; CHECK-NEXT:    vmnot.m v0, v8
4089; CHECK-NEXT:    ret
4090  %head = insertelement <2 x float> poison, float %b, i32 0
4091  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
4092  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
4093  ret <2 x i1> %1
4094}
4095
4096define <2 x i1> @fcmps_ugt_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4097; CHECK-LABEL: fcmps_ugt_fv_v2f32:
4098; CHECK:       # %bb.0:
4099; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4100; CHECK-NEXT:    vmfge.vf v8, v8, fa0
4101; CHECK-NEXT:    vmnot.m v0, v8
4102; CHECK-NEXT:    ret
4103  %head = insertelement <2 x float> poison, float %b, i32 0
4104  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
4105  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
4106  ret <2 x i1> %1
4107}
4108
4109define <2 x i1> @fcmps_uge_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {
4110; CHECK-LABEL: fcmps_uge_vv_v2f32:
4111; CHECK:       # %bb.0:
4112; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4113; CHECK-NEXT:    vmflt.vv v8, v8, v9
4114; CHECK-NEXT:    vmnot.m v0, v8
4115; CHECK-NEXT:    ret
4116  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
4117  ret <2 x i1> %1
4118}
4119
4120define <2 x i1> @fcmps_uge_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4121; CHECK-LABEL: fcmps_uge_vf_v2f32:
4122; CHECK:       # %bb.0:
4123; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4124; CHECK-NEXT:    vmflt.vf v8, v8, fa0
4125; CHECK-NEXT:    vmnot.m v0, v8
4126; CHECK-NEXT:    ret
4127  %head = insertelement <2 x float> poison, float %b, i32 0
4128  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
4129  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
4130  ret <2 x i1> %1
4131}
4132
4133define <2 x i1> @fcmps_uge_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4134; CHECK-LABEL: fcmps_uge_fv_v2f32:
4135; CHECK:       # %bb.0:
4136; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4137; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
4138; CHECK-NEXT:    vmnot.m v0, v8
4139; CHECK-NEXT:    ret
4140  %head = insertelement <2 x float> poison, float %b, i32 0
4141  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
4142  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
4143  ret <2 x i1> %1
4144}
4145
4146define <2 x i1> @fcmps_ult_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {
4147; CHECK-LABEL: fcmps_ult_vv_v2f32:
4148; CHECK:       # %bb.0:
4149; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4150; CHECK-NEXT:    vmfle.vv v8, v9, v8
4151; CHECK-NEXT:    vmnot.m v0, v8
4152; CHECK-NEXT:    ret
4153  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
4154  ret <2 x i1> %1
4155}
4156
4157define <2 x i1> @fcmps_ult_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4158; CHECK-LABEL: fcmps_ult_vf_v2f32:
4159; CHECK:       # %bb.0:
4160; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4161; CHECK-NEXT:    vmfge.vf v8, v8, fa0
4162; CHECK-NEXT:    vmnot.m v0, v8
4163; CHECK-NEXT:    ret
4164  %head = insertelement <2 x float> poison, float %b, i32 0
4165  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
4166  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
4167  ret <2 x i1> %1
4168}
4169
4170define <2 x i1> @fcmps_ult_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4171; CHECK-LABEL: fcmps_ult_fv_v2f32:
4172; CHECK:       # %bb.0:
4173; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4174; CHECK-NEXT:    vmfle.vf v8, v8, fa0
4175; CHECK-NEXT:    vmnot.m v0, v8
4176; CHECK-NEXT:    ret
4177  %head = insertelement <2 x float> poison, float %b, i32 0
4178  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
4179  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
4180  ret <2 x i1> %1
4181}
4182
4183define <2 x i1> @fcmps_ule_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {
4184; CHECK-LABEL: fcmps_ule_vv_v2f32:
4185; CHECK:       # %bb.0:
4186; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4187; CHECK-NEXT:    vmflt.vv v8, v9, v8
4188; CHECK-NEXT:    vmnot.m v0, v8
4189; CHECK-NEXT:    ret
4190  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
4191  ret <2 x i1> %1
4192}
4193
4194define <2 x i1> @fcmps_ule_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4195; CHECK-LABEL: fcmps_ule_vf_v2f32:
4196; CHECK:       # %bb.0:
4197; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4198; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
4199; CHECK-NEXT:    vmnot.m v0, v8
4200; CHECK-NEXT:    ret
4201  %head = insertelement <2 x float> poison, float %b, i32 0
4202  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
4203  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
4204  ret <2 x i1> %1
4205}
4206
4207define <2 x i1> @fcmps_ule_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4208; CHECK-LABEL: fcmps_ule_fv_v2f32:
4209; CHECK:       # %bb.0:
4210; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4211; CHECK-NEXT:    vmflt.vf v8, v8, fa0
4212; CHECK-NEXT:    vmnot.m v0, v8
4213; CHECK-NEXT:    ret
4214  %head = insertelement <2 x float> poison, float %b, i32 0
4215  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
4216  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
4217  ret <2 x i1> %1
4218}
4219
4220define <2 x i1> @fcmps_une_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {
4221; CHECK-LABEL: fcmps_une_vv_v2f32:
4222; CHECK:       # %bb.0:
4223; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4224; CHECK-NEXT:    vmfle.vv v10, v9, v8
4225; CHECK-NEXT:    vmfle.vv v8, v8, v9
4226; CHECK-NEXT:    vmnand.mm v0, v8, v10
4227; CHECK-NEXT:    ret
4228  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
4229  ret <2 x i1> %1
4230}
4231
4232define <2 x i1> @fcmps_une_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4233; CHECK-LABEL: fcmps_une_vf_v2f32:
4234; CHECK:       # %bb.0:
4235; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4236; CHECK-NEXT:    vmfge.vf v9, v8, fa0
4237; CHECK-NEXT:    vmfle.vf v8, v8, fa0
4238; CHECK-NEXT:    vmnand.mm v0, v8, v9
4239; CHECK-NEXT:    ret
4240  %head = insertelement <2 x float> poison, float %b, i32 0
4241  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
4242  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
4243  ret <2 x i1> %1
4244}
4245
4246define <2 x i1> @fcmps_une_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4247; CHECK-LABEL: fcmps_une_fv_v2f32:
4248; CHECK:       # %bb.0:
4249; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4250; CHECK-NEXT:    vmfle.vf v9, v8, fa0
4251; CHECK-NEXT:    vmfge.vf v8, v8, fa0
4252; CHECK-NEXT:    vmnand.mm v0, v8, v9
4253; CHECK-NEXT:    ret
4254  %head = insertelement <2 x float> poison, float %b, i32 0
4255  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
4256  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
4257  ret <2 x i1> %1
4258}
4259
4260define <2 x i1> @fcmps_uno_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {
4261; CHECK-LABEL: fcmps_uno_vv_v2f32:
4262; CHECK:       # %bb.0:
4263; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4264; CHECK-NEXT:    vmfle.vv v9, v9, v9
4265; CHECK-NEXT:    vmfle.vv v8, v8, v8
4266; CHECK-NEXT:    vmnot.m v8, v8
4267; CHECK-NEXT:    vmorn.mm v0, v8, v9
4268; CHECK-NEXT:    ret
4269  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
4270  ret <2 x i1> %1
4271}
4272
4273define <2 x i1> @fcmps_uno_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4274; CHECK-LABEL: fcmps_uno_vf_v2f32:
4275; CHECK:       # %bb.0:
4276; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4277; CHECK-NEXT:    vfmv.v.f v9, fa0
4278; CHECK-NEXT:    vmfle.vv v8, v8, v8
4279; CHECK-NEXT:    vmfle.vf v9, v9, fa0
4280; CHECK-NEXT:    vmnot.m v8, v8
4281; CHECK-NEXT:    vmorn.mm v0, v8, v9
4282; CHECK-NEXT:    ret
4283  %head = insertelement <2 x float> poison, float %b, i32 0
4284  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
4285  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
4286  ret <2 x i1> %1
4287}
4288
4289define <2 x i1> @fcmps_uno_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4290; CHECK-LABEL: fcmps_uno_fv_v2f32:
4291; CHECK:       # %bb.0:
4292; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
4293; CHECK-NEXT:    vfmv.v.f v9, fa0
4294; CHECK-NEXT:    vmfle.vf v9, v9, fa0
4295; CHECK-NEXT:    vmnot.m v9, v9
4296; CHECK-NEXT:    vmfle.vv v8, v8, v8
4297; CHECK-NEXT:    vmorn.mm v0, v9, v8
4298; CHECK-NEXT:    ret
4299  %head = insertelement <2 x float> poison, float %b, i32 0
4300  %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer
4301  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
4302  ret <2 x i1> %1
4303}
4304
4305declare <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float>, <4 x float>, metadata, metadata)
4306define <4 x i1> @fcmps_oeq_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {
4307; CHECK-LABEL: fcmps_oeq_vv_v4f32:
4308; CHECK:       # %bb.0:
4309; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4310; CHECK-NEXT:    vmfle.vv v10, v9, v8
4311; CHECK-NEXT:    vmfle.vv v8, v8, v9
4312; CHECK-NEXT:    vmand.mm v0, v8, v10
4313; CHECK-NEXT:    ret
4314  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
4315  ret <4 x i1> %1
4316}
4317
4318define <4 x i1> @fcmps_oeq_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4319; CHECK-LABEL: fcmps_oeq_vf_v4f32:
4320; CHECK:       # %bb.0:
4321; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4322; CHECK-NEXT:    vmfge.vf v9, v8, fa0
4323; CHECK-NEXT:    vmfle.vf v8, v8, fa0
4324; CHECK-NEXT:    vmand.mm v0, v8, v9
4325; CHECK-NEXT:    ret
4326  %head = insertelement <4 x float> poison, float %b, i32 0
4327  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4328  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
4329  ret <4 x i1> %1
4330}
4331
4332define <4 x i1> @fcmps_oeq_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4333; CHECK-LABEL: fcmps_oeq_fv_v4f32:
4334; CHECK:       # %bb.0:
4335; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4336; CHECK-NEXT:    vmfle.vf v9, v8, fa0
4337; CHECK-NEXT:    vmfge.vf v8, v8, fa0
4338; CHECK-NEXT:    vmand.mm v0, v8, v9
4339; CHECK-NEXT:    ret
4340  %head = insertelement <4 x float> poison, float %b, i32 0
4341  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4342  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
4343  ret <4 x i1> %1
4344}
4345
4346define <4 x i1> @fcmps_ogt_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {
4347; CHECK-LABEL: fcmps_ogt_vv_v4f32:
4348; CHECK:       # %bb.0:
4349; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4350; CHECK-NEXT:    vmflt.vv v0, v9, v8
4351; CHECK-NEXT:    ret
4352  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
4353  ret <4 x i1> %1
4354}
4355
4356define <4 x i1> @fcmps_ogt_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4357; CHECK-LABEL: fcmps_ogt_vf_v4f32:
4358; CHECK:       # %bb.0:
4359; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4360; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
4361; CHECK-NEXT:    ret
4362  %head = insertelement <4 x float> poison, float %b, i32 0
4363  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4364  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
4365  ret <4 x i1> %1
4366}
4367
4368define <4 x i1> @fcmps_ogt_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4369; CHECK-LABEL: fcmps_ogt_fv_v4f32:
4370; CHECK:       # %bb.0:
4371; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4372; CHECK-NEXT:    vmflt.vf v0, v8, fa0
4373; CHECK-NEXT:    ret
4374  %head = insertelement <4 x float> poison, float %b, i32 0
4375  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4376  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
4377  ret <4 x i1> %1
4378}
4379
4380define <4 x i1> @fcmps_oge_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {
4381; CHECK-LABEL: fcmps_oge_vv_v4f32:
4382; CHECK:       # %bb.0:
4383; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4384; CHECK-NEXT:    vmfle.vv v0, v9, v8
4385; CHECK-NEXT:    ret
4386  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
4387  ret <4 x i1> %1
4388}
4389
4390define <4 x i1> @fcmps_oge_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4391; CHECK-LABEL: fcmps_oge_vf_v4f32:
4392; CHECK:       # %bb.0:
4393; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4394; CHECK-NEXT:    vmfge.vf v0, v8, fa0
4395; CHECK-NEXT:    ret
4396  %head = insertelement <4 x float> poison, float %b, i32 0
4397  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4398  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
4399  ret <4 x i1> %1
4400}
4401
4402define <4 x i1> @fcmps_oge_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4403; CHECK-LABEL: fcmps_oge_fv_v4f32:
4404; CHECK:       # %bb.0:
4405; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4406; CHECK-NEXT:    vmfle.vf v0, v8, fa0
4407; CHECK-NEXT:    ret
4408  %head = insertelement <4 x float> poison, float %b, i32 0
4409  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4410  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
4411  ret <4 x i1> %1
4412}
4413
4414define <4 x i1> @fcmps_olt_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {
4415; CHECK-LABEL: fcmps_olt_vv_v4f32:
4416; CHECK:       # %bb.0:
4417; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4418; CHECK-NEXT:    vmflt.vv v0, v8, v9
4419; CHECK-NEXT:    ret
4420  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
4421  ret <4 x i1> %1
4422}
4423
4424define <4 x i1> @fcmps_olt_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4425; CHECK-LABEL: fcmps_olt_vf_v4f32:
4426; CHECK:       # %bb.0:
4427; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4428; CHECK-NEXT:    vmflt.vf v0, v8, fa0
4429; CHECK-NEXT:    ret
4430  %head = insertelement <4 x float> poison, float %b, i32 0
4431  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4432  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
4433  ret <4 x i1> %1
4434}
4435
4436define <4 x i1> @fcmps_olt_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4437; CHECK-LABEL: fcmps_olt_fv_v4f32:
4438; CHECK:       # %bb.0:
4439; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4440; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
4441; CHECK-NEXT:    ret
4442  %head = insertelement <4 x float> poison, float %b, i32 0
4443  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4444  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
4445  ret <4 x i1> %1
4446}
4447
4448define <4 x i1> @fcmps_ole_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {
4449; CHECK-LABEL: fcmps_ole_vv_v4f32:
4450; CHECK:       # %bb.0:
4451; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4452; CHECK-NEXT:    vmfle.vv v0, v8, v9
4453; CHECK-NEXT:    ret
4454  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
4455  ret <4 x i1> %1
4456}
4457
4458define <4 x i1> @fcmps_ole_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4459; CHECK-LABEL: fcmps_ole_vf_v4f32:
4460; CHECK:       # %bb.0:
4461; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4462; CHECK-NEXT:    vmfle.vf v0, v8, fa0
4463; CHECK-NEXT:    ret
4464  %head = insertelement <4 x float> poison, float %b, i32 0
4465  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4466  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
4467  ret <4 x i1> %1
4468}
4469
4470define <4 x i1> @fcmps_ole_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4471; CHECK-LABEL: fcmps_ole_fv_v4f32:
4472; CHECK:       # %bb.0:
4473; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4474; CHECK-NEXT:    vmfge.vf v0, v8, fa0
4475; CHECK-NEXT:    ret
4476  %head = insertelement <4 x float> poison, float %b, i32 0
4477  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4478  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
4479  ret <4 x i1> %1
4480}
4481
4482define <4 x i1> @fcmps_one_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {
4483; CHECK-LABEL: fcmps_one_vv_v4f32:
4484; CHECK:       # %bb.0:
4485; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4486; CHECK-NEXT:    vmflt.vv v10, v8, v9
4487; CHECK-NEXT:    vmflt.vv v8, v9, v8
4488; CHECK-NEXT:    vmor.mm v0, v8, v10
4489; CHECK-NEXT:    ret
4490  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
4491  ret <4 x i1> %1
4492}
4493
4494define <4 x i1> @fcmps_one_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4495; CHECK-LABEL: fcmps_one_vf_v4f32:
4496; CHECK:       # %bb.0:
4497; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4498; CHECK-NEXT:    vmflt.vf v9, v8, fa0
4499; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
4500; CHECK-NEXT:    vmor.mm v0, v8, v9
4501; CHECK-NEXT:    ret
4502  %head = insertelement <4 x float> poison, float %b, i32 0
4503  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4504  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
4505  ret <4 x i1> %1
4506}
4507
4508define <4 x i1> @fcmps_one_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4509; CHECK-LABEL: fcmps_one_fv_v4f32:
4510; CHECK:       # %bb.0:
4511; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4512; CHECK-NEXT:    vmfgt.vf v9, v8, fa0
4513; CHECK-NEXT:    vmflt.vf v8, v8, fa0
4514; CHECK-NEXT:    vmor.mm v0, v8, v9
4515; CHECK-NEXT:    ret
4516  %head = insertelement <4 x float> poison, float %b, i32 0
4517  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4518  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
4519  ret <4 x i1> %1
4520}
4521
4522define <4 x i1> @fcmps_ord_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {
4523; CHECK-LABEL: fcmps_ord_vv_v4f32:
4524; CHECK:       # %bb.0:
4525; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4526; CHECK-NEXT:    vmfle.vv v9, v9, v9
4527; CHECK-NEXT:    vmfle.vv v8, v8, v8
4528; CHECK-NEXT:    vmand.mm v0, v8, v9
4529; CHECK-NEXT:    ret
4530  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
4531  ret <4 x i1> %1
4532}
4533
4534define <4 x i1> @fcmps_ord_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4535; CHECK-LABEL: fcmps_ord_vf_v4f32:
4536; CHECK:       # %bb.0:
4537; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4538; CHECK-NEXT:    vfmv.v.f v9, fa0
4539; CHECK-NEXT:    vmfle.vf v9, v9, fa0
4540; CHECK-NEXT:    vmfle.vv v8, v8, v8
4541; CHECK-NEXT:    vmand.mm v0, v8, v9
4542; CHECK-NEXT:    ret
4543  %head = insertelement <4 x float> poison, float %b, i32 0
4544  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4545  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
4546  ret <4 x i1> %1
4547}
4548
4549define <4 x i1> @fcmps_ord_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4550; CHECK-LABEL: fcmps_ord_fv_v4f32:
4551; CHECK:       # %bb.0:
4552; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4553; CHECK-NEXT:    vfmv.v.f v9, fa0
4554; CHECK-NEXT:    vmfle.vf v9, v9, fa0
4555; CHECK-NEXT:    vmfle.vv v8, v8, v8
4556; CHECK-NEXT:    vmand.mm v0, v9, v8
4557; CHECK-NEXT:    ret
4558  %head = insertelement <4 x float> poison, float %b, i32 0
4559  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4560  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
4561  ret <4 x i1> %1
4562}
4563
4564define <4 x i1> @fcmps_ueq_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {
4565; CHECK-LABEL: fcmps_ueq_vv_v4f32:
4566; CHECK:       # %bb.0:
4567; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4568; CHECK-NEXT:    vmflt.vv v10, v8, v9
4569; CHECK-NEXT:    vmflt.vv v8, v9, v8
4570; CHECK-NEXT:    vmnor.mm v0, v8, v10
4571; CHECK-NEXT:    ret
4572  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
4573  ret <4 x i1> %1
4574}
4575
4576define <4 x i1> @fcmps_ueq_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4577; CHECK-LABEL: fcmps_ueq_vf_v4f32:
4578; CHECK:       # %bb.0:
4579; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4580; CHECK-NEXT:    vmflt.vf v9, v8, fa0
4581; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
4582; CHECK-NEXT:    vmnor.mm v0, v8, v9
4583; CHECK-NEXT:    ret
4584  %head = insertelement <4 x float> poison, float %b, i32 0
4585  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4586  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
4587  ret <4 x i1> %1
4588}
4589
4590define <4 x i1> @fcmps_ueq_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4591; CHECK-LABEL: fcmps_ueq_fv_v4f32:
4592; CHECK:       # %bb.0:
4593; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4594; CHECK-NEXT:    vmfgt.vf v9, v8, fa0
4595; CHECK-NEXT:    vmflt.vf v8, v8, fa0
4596; CHECK-NEXT:    vmnor.mm v0, v8, v9
4597; CHECK-NEXT:    ret
4598  %head = insertelement <4 x float> poison, float %b, i32 0
4599  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4600  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
4601  ret <4 x i1> %1
4602}
4603
4604define <4 x i1> @fcmps_ugt_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {
4605; CHECK-LABEL: fcmps_ugt_vv_v4f32:
4606; CHECK:       # %bb.0:
4607; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4608; CHECK-NEXT:    vmfle.vv v8, v8, v9
4609; CHECK-NEXT:    vmnot.m v0, v8
4610; CHECK-NEXT:    ret
4611  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
4612  ret <4 x i1> %1
4613}
4614
4615define <4 x i1> @fcmps_ugt_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4616; CHECK-LABEL: fcmps_ugt_vf_v4f32:
4617; CHECK:       # %bb.0:
4618; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4619; CHECK-NEXT:    vmfle.vf v8, v8, fa0
4620; CHECK-NEXT:    vmnot.m v0, v8
4621; CHECK-NEXT:    ret
4622  %head = insertelement <4 x float> poison, float %b, i32 0
4623  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4624  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
4625  ret <4 x i1> %1
4626}
4627
4628define <4 x i1> @fcmps_ugt_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4629; CHECK-LABEL: fcmps_ugt_fv_v4f32:
4630; CHECK:       # %bb.0:
4631; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4632; CHECK-NEXT:    vmfge.vf v8, v8, fa0
4633; CHECK-NEXT:    vmnot.m v0, v8
4634; CHECK-NEXT:    ret
4635  %head = insertelement <4 x float> poison, float %b, i32 0
4636  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4637  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
4638  ret <4 x i1> %1
4639}
4640
4641define <4 x i1> @fcmps_uge_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {
4642; CHECK-LABEL: fcmps_uge_vv_v4f32:
4643; CHECK:       # %bb.0:
4644; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4645; CHECK-NEXT:    vmflt.vv v8, v8, v9
4646; CHECK-NEXT:    vmnot.m v0, v8
4647; CHECK-NEXT:    ret
4648  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
4649  ret <4 x i1> %1
4650}
4651
4652define <4 x i1> @fcmps_uge_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4653; CHECK-LABEL: fcmps_uge_vf_v4f32:
4654; CHECK:       # %bb.0:
4655; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4656; CHECK-NEXT:    vmflt.vf v8, v8, fa0
4657; CHECK-NEXT:    vmnot.m v0, v8
4658; CHECK-NEXT:    ret
4659  %head = insertelement <4 x float> poison, float %b, i32 0
4660  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4661  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
4662  ret <4 x i1> %1
4663}
4664
4665define <4 x i1> @fcmps_uge_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4666; CHECK-LABEL: fcmps_uge_fv_v4f32:
4667; CHECK:       # %bb.0:
4668; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4669; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
4670; CHECK-NEXT:    vmnot.m v0, v8
4671; CHECK-NEXT:    ret
4672  %head = insertelement <4 x float> poison, float %b, i32 0
4673  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4674  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
4675  ret <4 x i1> %1
4676}
4677
4678define <4 x i1> @fcmps_ult_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {
4679; CHECK-LABEL: fcmps_ult_vv_v4f32:
4680; CHECK:       # %bb.0:
4681; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4682; CHECK-NEXT:    vmfle.vv v8, v9, v8
4683; CHECK-NEXT:    vmnot.m v0, v8
4684; CHECK-NEXT:    ret
4685  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
4686  ret <4 x i1> %1
4687}
4688
4689define <4 x i1> @fcmps_ult_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4690; CHECK-LABEL: fcmps_ult_vf_v4f32:
4691; CHECK:       # %bb.0:
4692; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4693; CHECK-NEXT:    vmfge.vf v8, v8, fa0
4694; CHECK-NEXT:    vmnot.m v0, v8
4695; CHECK-NEXT:    ret
4696  %head = insertelement <4 x float> poison, float %b, i32 0
4697  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4698  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
4699  ret <4 x i1> %1
4700}
4701
4702define <4 x i1> @fcmps_ult_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4703; CHECK-LABEL: fcmps_ult_fv_v4f32:
4704; CHECK:       # %bb.0:
4705; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4706; CHECK-NEXT:    vmfle.vf v8, v8, fa0
4707; CHECK-NEXT:    vmnot.m v0, v8
4708; CHECK-NEXT:    ret
4709  %head = insertelement <4 x float> poison, float %b, i32 0
4710  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4711  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
4712  ret <4 x i1> %1
4713}
4714
4715define <4 x i1> @fcmps_ule_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {
4716; CHECK-LABEL: fcmps_ule_vv_v4f32:
4717; CHECK:       # %bb.0:
4718; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4719; CHECK-NEXT:    vmflt.vv v8, v9, v8
4720; CHECK-NEXT:    vmnot.m v0, v8
4721; CHECK-NEXT:    ret
4722  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
4723  ret <4 x i1> %1
4724}
4725
4726define <4 x i1> @fcmps_ule_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4727; CHECK-LABEL: fcmps_ule_vf_v4f32:
4728; CHECK:       # %bb.0:
4729; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4730; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
4731; CHECK-NEXT:    vmnot.m v0, v8
4732; CHECK-NEXT:    ret
4733  %head = insertelement <4 x float> poison, float %b, i32 0
4734  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4735  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
4736  ret <4 x i1> %1
4737}
4738
4739define <4 x i1> @fcmps_ule_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4740; CHECK-LABEL: fcmps_ule_fv_v4f32:
4741; CHECK:       # %bb.0:
4742; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4743; CHECK-NEXT:    vmflt.vf v8, v8, fa0
4744; CHECK-NEXT:    vmnot.m v0, v8
4745; CHECK-NEXT:    ret
4746  %head = insertelement <4 x float> poison, float %b, i32 0
4747  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4748  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
4749  ret <4 x i1> %1
4750}
4751
4752define <4 x i1> @fcmps_une_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {
4753; CHECK-LABEL: fcmps_une_vv_v4f32:
4754; CHECK:       # %bb.0:
4755; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4756; CHECK-NEXT:    vmfle.vv v10, v9, v8
4757; CHECK-NEXT:    vmfle.vv v8, v8, v9
4758; CHECK-NEXT:    vmnand.mm v0, v8, v10
4759; CHECK-NEXT:    ret
4760  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
4761  ret <4 x i1> %1
4762}
4763
4764define <4 x i1> @fcmps_une_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4765; CHECK-LABEL: fcmps_une_vf_v4f32:
4766; CHECK:       # %bb.0:
4767; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4768; CHECK-NEXT:    vmfge.vf v9, v8, fa0
4769; CHECK-NEXT:    vmfle.vf v8, v8, fa0
4770; CHECK-NEXT:    vmnand.mm v0, v8, v9
4771; CHECK-NEXT:    ret
4772  %head = insertelement <4 x float> poison, float %b, i32 0
4773  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4774  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
4775  ret <4 x i1> %1
4776}
4777
4778define <4 x i1> @fcmps_une_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4779; CHECK-LABEL: fcmps_une_fv_v4f32:
4780; CHECK:       # %bb.0:
4781; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4782; CHECK-NEXT:    vmfle.vf v9, v8, fa0
4783; CHECK-NEXT:    vmfge.vf v8, v8, fa0
4784; CHECK-NEXT:    vmnand.mm v0, v8, v9
4785; CHECK-NEXT:    ret
4786  %head = insertelement <4 x float> poison, float %b, i32 0
4787  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4788  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
4789  ret <4 x i1> %1
4790}
4791
4792define <4 x i1> @fcmps_uno_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {
4793; CHECK-LABEL: fcmps_uno_vv_v4f32:
4794; CHECK:       # %bb.0:
4795; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4796; CHECK-NEXT:    vmfle.vv v9, v9, v9
4797; CHECK-NEXT:    vmfle.vv v8, v8, v8
4798; CHECK-NEXT:    vmnot.m v8, v8
4799; CHECK-NEXT:    vmorn.mm v0, v8, v9
4800; CHECK-NEXT:    ret
4801  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
4802  ret <4 x i1> %1
4803}
4804
4805define <4 x i1> @fcmps_uno_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4806; CHECK-LABEL: fcmps_uno_vf_v4f32:
4807; CHECK:       # %bb.0:
4808; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4809; CHECK-NEXT:    vfmv.v.f v9, fa0
4810; CHECK-NEXT:    vmfle.vv v8, v8, v8
4811; CHECK-NEXT:    vmfle.vf v9, v9, fa0
4812; CHECK-NEXT:    vmnot.m v8, v8
4813; CHECK-NEXT:    vmorn.mm v0, v8, v9
4814; CHECK-NEXT:    ret
4815  %head = insertelement <4 x float> poison, float %b, i32 0
4816  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4817  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
4818  ret <4 x i1> %1
4819}
4820
4821define <4 x i1> @fcmps_uno_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4822; CHECK-LABEL: fcmps_uno_fv_v4f32:
4823; CHECK:       # %bb.0:
4824; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
4825; CHECK-NEXT:    vfmv.v.f v9, fa0
4826; CHECK-NEXT:    vmfle.vf v9, v9, fa0
4827; CHECK-NEXT:    vmnot.m v9, v9
4828; CHECK-NEXT:    vmfle.vv v8, v8, v8
4829; CHECK-NEXT:    vmorn.mm v0, v9, v8
4830; CHECK-NEXT:    ret
4831  %head = insertelement <4 x float> poison, float %b, i32 0
4832  %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer
4833  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
4834  ret <4 x i1> %1
4835}
4836
4837declare <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float>, <8 x float>, metadata, metadata)
4838define <8 x i1> @fcmps_oeq_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {
4839; CHECK-LABEL: fcmps_oeq_vv_v8f32:
4840; CHECK:       # %bb.0:
4841; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
4842; CHECK-NEXT:    vmfle.vv v12, v10, v8
4843; CHECK-NEXT:    vmfle.vv v13, v8, v10
4844; CHECK-NEXT:    vmand.mm v0, v13, v12
4845; CHECK-NEXT:    ret
4846  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
4847  ret <8 x i1> %1
4848}
4849
4850define <8 x i1> @fcmps_oeq_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
4851; CHECK-LABEL: fcmps_oeq_vf_v8f32:
4852; CHECK:       # %bb.0:
4853; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
4854; CHECK-NEXT:    vmfge.vf v10, v8, fa0
4855; CHECK-NEXT:    vmfle.vf v11, v8, fa0
4856; CHECK-NEXT:    vmand.mm v0, v11, v10
4857; CHECK-NEXT:    ret
4858  %head = insertelement <8 x float> poison, float %b, i32 0
4859  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
4860  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
4861  ret <8 x i1> %1
4862}
4863
4864define <8 x i1> @fcmps_oeq_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
4865; CHECK-LABEL: fcmps_oeq_fv_v8f32:
4866; CHECK:       # %bb.0:
4867; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
4868; CHECK-NEXT:    vmfle.vf v10, v8, fa0
4869; CHECK-NEXT:    vmfge.vf v11, v8, fa0
4870; CHECK-NEXT:    vmand.mm v0, v11, v10
4871; CHECK-NEXT:    ret
4872  %head = insertelement <8 x float> poison, float %b, i32 0
4873  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
4874  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
4875  ret <8 x i1> %1
4876}
4877
4878define <8 x i1> @fcmps_ogt_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {
4879; CHECK-LABEL: fcmps_ogt_vv_v8f32:
4880; CHECK:       # %bb.0:
4881; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
4882; CHECK-NEXT:    vmflt.vv v0, v10, v8
4883; CHECK-NEXT:    ret
4884  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
4885  ret <8 x i1> %1
4886}
4887
4888define <8 x i1> @fcmps_ogt_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
4889; CHECK-LABEL: fcmps_ogt_vf_v8f32:
4890; CHECK:       # %bb.0:
4891; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
4892; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
4893; CHECK-NEXT:    ret
4894  %head = insertelement <8 x float> poison, float %b, i32 0
4895  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
4896  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
4897  ret <8 x i1> %1
4898}
4899
4900define <8 x i1> @fcmps_ogt_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
4901; CHECK-LABEL: fcmps_ogt_fv_v8f32:
4902; CHECK:       # %bb.0:
4903; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
4904; CHECK-NEXT:    vmflt.vf v0, v8, fa0
4905; CHECK-NEXT:    ret
4906  %head = insertelement <8 x float> poison, float %b, i32 0
4907  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
4908  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
4909  ret <8 x i1> %1
4910}
4911
4912define <8 x i1> @fcmps_oge_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {
4913; CHECK-LABEL: fcmps_oge_vv_v8f32:
4914; CHECK:       # %bb.0:
4915; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
4916; CHECK-NEXT:    vmfle.vv v0, v10, v8
4917; CHECK-NEXT:    ret
4918  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
4919  ret <8 x i1> %1
4920}
4921
4922define <8 x i1> @fcmps_oge_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
4923; CHECK-LABEL: fcmps_oge_vf_v8f32:
4924; CHECK:       # %bb.0:
4925; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
4926; CHECK-NEXT:    vmfge.vf v0, v8, fa0
4927; CHECK-NEXT:    ret
4928  %head = insertelement <8 x float> poison, float %b, i32 0
4929  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
4930  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
4931  ret <8 x i1> %1
4932}
4933
4934define <8 x i1> @fcmps_oge_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
4935; CHECK-LABEL: fcmps_oge_fv_v8f32:
4936; CHECK:       # %bb.0:
4937; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
4938; CHECK-NEXT:    vmfle.vf v0, v8, fa0
4939; CHECK-NEXT:    ret
4940  %head = insertelement <8 x float> poison, float %b, i32 0
4941  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
4942  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
4943  ret <8 x i1> %1
4944}
4945
4946define <8 x i1> @fcmps_olt_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {
4947; CHECK-LABEL: fcmps_olt_vv_v8f32:
4948; CHECK:       # %bb.0:
4949; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
4950; CHECK-NEXT:    vmflt.vv v0, v8, v10
4951; CHECK-NEXT:    ret
4952  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
4953  ret <8 x i1> %1
4954}
4955
4956define <8 x i1> @fcmps_olt_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
4957; CHECK-LABEL: fcmps_olt_vf_v8f32:
4958; CHECK:       # %bb.0:
4959; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
4960; CHECK-NEXT:    vmflt.vf v0, v8, fa0
4961; CHECK-NEXT:    ret
4962  %head = insertelement <8 x float> poison, float %b, i32 0
4963  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
4964  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
4965  ret <8 x i1> %1
4966}
4967
4968define <8 x i1> @fcmps_olt_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
4969; CHECK-LABEL: fcmps_olt_fv_v8f32:
4970; CHECK:       # %bb.0:
4971; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
4972; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
4973; CHECK-NEXT:    ret
4974  %head = insertelement <8 x float> poison, float %b, i32 0
4975  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
4976  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
4977  ret <8 x i1> %1
4978}
4979
4980define <8 x i1> @fcmps_ole_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {
4981; CHECK-LABEL: fcmps_ole_vv_v8f32:
4982; CHECK:       # %bb.0:
4983; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
4984; CHECK-NEXT:    vmfle.vv v0, v8, v10
4985; CHECK-NEXT:    ret
4986  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
4987  ret <8 x i1> %1
4988}
4989
4990define <8 x i1> @fcmps_ole_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
4991; CHECK-LABEL: fcmps_ole_vf_v8f32:
4992; CHECK:       # %bb.0:
4993; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
4994; CHECK-NEXT:    vmfle.vf v0, v8, fa0
4995; CHECK-NEXT:    ret
4996  %head = insertelement <8 x float> poison, float %b, i32 0
4997  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
4998  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
4999  ret <8 x i1> %1
5000}
5001
5002define <8 x i1> @fcmps_ole_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5003; CHECK-LABEL: fcmps_ole_fv_v8f32:
5004; CHECK:       # %bb.0:
5005; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5006; CHECK-NEXT:    vmfge.vf v0, v8, fa0
5007; CHECK-NEXT:    ret
5008  %head = insertelement <8 x float> poison, float %b, i32 0
5009  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
5010  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
5011  ret <8 x i1> %1
5012}
5013
5014define <8 x i1> @fcmps_one_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {
5015; CHECK-LABEL: fcmps_one_vv_v8f32:
5016; CHECK:       # %bb.0:
5017; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5018; CHECK-NEXT:    vmflt.vv v12, v8, v10
5019; CHECK-NEXT:    vmflt.vv v13, v10, v8
5020; CHECK-NEXT:    vmor.mm v0, v13, v12
5021; CHECK-NEXT:    ret
5022  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
5023  ret <8 x i1> %1
5024}
5025
5026define <8 x i1> @fcmps_one_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5027; CHECK-LABEL: fcmps_one_vf_v8f32:
5028; CHECK:       # %bb.0:
5029; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5030; CHECK-NEXT:    vmflt.vf v10, v8, fa0
5031; CHECK-NEXT:    vmfgt.vf v11, v8, fa0
5032; CHECK-NEXT:    vmor.mm v0, v11, v10
5033; CHECK-NEXT:    ret
5034  %head = insertelement <8 x float> poison, float %b, i32 0
5035  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
5036  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
5037  ret <8 x i1> %1
5038}
5039
5040define <8 x i1> @fcmps_one_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5041; CHECK-LABEL: fcmps_one_fv_v8f32:
5042; CHECK:       # %bb.0:
5043; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5044; CHECK-NEXT:    vmfgt.vf v10, v8, fa0
5045; CHECK-NEXT:    vmflt.vf v11, v8, fa0
5046; CHECK-NEXT:    vmor.mm v0, v11, v10
5047; CHECK-NEXT:    ret
5048  %head = insertelement <8 x float> poison, float %b, i32 0
5049  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
5050  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
5051  ret <8 x i1> %1
5052}
5053
5054define <8 x i1> @fcmps_ord_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {
5055; CHECK-LABEL: fcmps_ord_vv_v8f32:
5056; CHECK:       # %bb.0:
5057; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5058; CHECK-NEXT:    vmfle.vv v12, v10, v10
5059; CHECK-NEXT:    vmfle.vv v10, v8, v8
5060; CHECK-NEXT:    vmand.mm v0, v10, v12
5061; CHECK-NEXT:    ret
5062  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
5063  ret <8 x i1> %1
5064}
5065
5066define <8 x i1> @fcmps_ord_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5067; CHECK-LABEL: fcmps_ord_vf_v8f32:
5068; CHECK:       # %bb.0:
5069; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5070; CHECK-NEXT:    vfmv.v.f v10, fa0
5071; CHECK-NEXT:    vmfle.vf v12, v10, fa0
5072; CHECK-NEXT:    vmfle.vv v10, v8, v8
5073; CHECK-NEXT:    vmand.mm v0, v10, v12
5074; CHECK-NEXT:    ret
5075  %head = insertelement <8 x float> poison, float %b, i32 0
5076  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
5077  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
5078  ret <8 x i1> %1
5079}
5080
5081define <8 x i1> @fcmps_ord_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5082; CHECK-LABEL: fcmps_ord_fv_v8f32:
5083; CHECK:       # %bb.0:
5084; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5085; CHECK-NEXT:    vfmv.v.f v10, fa0
5086; CHECK-NEXT:    vmfle.vf v12, v10, fa0
5087; CHECK-NEXT:    vmfle.vv v10, v8, v8
5088; CHECK-NEXT:    vmand.mm v0, v12, v10
5089; CHECK-NEXT:    ret
5090  %head = insertelement <8 x float> poison, float %b, i32 0
5091  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
5092  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
5093  ret <8 x i1> %1
5094}
5095
5096define <8 x i1> @fcmps_ueq_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {
5097; CHECK-LABEL: fcmps_ueq_vv_v8f32:
5098; CHECK:       # %bb.0:
5099; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5100; CHECK-NEXT:    vmflt.vv v12, v8, v10
5101; CHECK-NEXT:    vmflt.vv v13, v10, v8
5102; CHECK-NEXT:    vmnor.mm v0, v13, v12
5103; CHECK-NEXT:    ret
5104  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
5105  ret <8 x i1> %1
5106}
5107
5108define <8 x i1> @fcmps_ueq_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5109; CHECK-LABEL: fcmps_ueq_vf_v8f32:
5110; CHECK:       # %bb.0:
5111; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5112; CHECK-NEXT:    vmflt.vf v10, v8, fa0
5113; CHECK-NEXT:    vmfgt.vf v11, v8, fa0
5114; CHECK-NEXT:    vmnor.mm v0, v11, v10
5115; CHECK-NEXT:    ret
5116  %head = insertelement <8 x float> poison, float %b, i32 0
5117  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
5118  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
5119  ret <8 x i1> %1
5120}
5121
5122define <8 x i1> @fcmps_ueq_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5123; CHECK-LABEL: fcmps_ueq_fv_v8f32:
5124; CHECK:       # %bb.0:
5125; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5126; CHECK-NEXT:    vmfgt.vf v10, v8, fa0
5127; CHECK-NEXT:    vmflt.vf v11, v8, fa0
5128; CHECK-NEXT:    vmnor.mm v0, v11, v10
5129; CHECK-NEXT:    ret
5130  %head = insertelement <8 x float> poison, float %b, i32 0
5131  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
5132  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
5133  ret <8 x i1> %1
5134}
5135
5136define <8 x i1> @fcmps_ugt_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {
5137; CHECK-LABEL: fcmps_ugt_vv_v8f32:
5138; CHECK:       # %bb.0:
5139; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5140; CHECK-NEXT:    vmfle.vv v12, v8, v10
5141; CHECK-NEXT:    vmnot.m v0, v12
5142; CHECK-NEXT:    ret
5143  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
5144  ret <8 x i1> %1
5145}
5146
5147define <8 x i1> @fcmps_ugt_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5148; CHECK-LABEL: fcmps_ugt_vf_v8f32:
5149; CHECK:       # %bb.0:
5150; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5151; CHECK-NEXT:    vmfle.vf v10, v8, fa0
5152; CHECK-NEXT:    vmnot.m v0, v10
5153; CHECK-NEXT:    ret
5154  %head = insertelement <8 x float> poison, float %b, i32 0
5155  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
5156  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
5157  ret <8 x i1> %1
5158}
5159
5160define <8 x i1> @fcmps_ugt_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5161; CHECK-LABEL: fcmps_ugt_fv_v8f32:
5162; CHECK:       # %bb.0:
5163; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5164; CHECK-NEXT:    vmfge.vf v10, v8, fa0
5165; CHECK-NEXT:    vmnot.m v0, v10
5166; CHECK-NEXT:    ret
5167  %head = insertelement <8 x float> poison, float %b, i32 0
5168  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
5169  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
5170  ret <8 x i1> %1
5171}
5172
5173define <8 x i1> @fcmps_uge_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {
5174; CHECK-LABEL: fcmps_uge_vv_v8f32:
5175; CHECK:       # %bb.0:
5176; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5177; CHECK-NEXT:    vmflt.vv v12, v8, v10
5178; CHECK-NEXT:    vmnot.m v0, v12
5179; CHECK-NEXT:    ret
5180  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
5181  ret <8 x i1> %1
5182}
5183
5184define <8 x i1> @fcmps_uge_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5185; CHECK-LABEL: fcmps_uge_vf_v8f32:
5186; CHECK:       # %bb.0:
5187; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5188; CHECK-NEXT:    vmflt.vf v10, v8, fa0
5189; CHECK-NEXT:    vmnot.m v0, v10
5190; CHECK-NEXT:    ret
5191  %head = insertelement <8 x float> poison, float %b, i32 0
5192  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
5193  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
5194  ret <8 x i1> %1
5195}
5196
5197define <8 x i1> @fcmps_uge_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5198; CHECK-LABEL: fcmps_uge_fv_v8f32:
5199; CHECK:       # %bb.0:
5200; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5201; CHECK-NEXT:    vmfgt.vf v10, v8, fa0
5202; CHECK-NEXT:    vmnot.m v0, v10
5203; CHECK-NEXT:    ret
5204  %head = insertelement <8 x float> poison, float %b, i32 0
5205  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
5206  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
5207  ret <8 x i1> %1
5208}
5209
5210define <8 x i1> @fcmps_ult_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {
5211; CHECK-LABEL: fcmps_ult_vv_v8f32:
5212; CHECK:       # %bb.0:
5213; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5214; CHECK-NEXT:    vmfle.vv v12, v10, v8
5215; CHECK-NEXT:    vmnot.m v0, v12
5216; CHECK-NEXT:    ret
5217  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
5218  ret <8 x i1> %1
5219}
5220
5221define <8 x i1> @fcmps_ult_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5222; CHECK-LABEL: fcmps_ult_vf_v8f32:
5223; CHECK:       # %bb.0:
5224; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5225; CHECK-NEXT:    vmfge.vf v10, v8, fa0
5226; CHECK-NEXT:    vmnot.m v0, v10
5227; CHECK-NEXT:    ret
5228  %head = insertelement <8 x float> poison, float %b, i32 0
5229  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
5230  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
5231  ret <8 x i1> %1
5232}
5233
5234define <8 x i1> @fcmps_ult_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5235; CHECK-LABEL: fcmps_ult_fv_v8f32:
5236; CHECK:       # %bb.0:
5237; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5238; CHECK-NEXT:    vmfle.vf v10, v8, fa0
5239; CHECK-NEXT:    vmnot.m v0, v10
5240; CHECK-NEXT:    ret
5241  %head = insertelement <8 x float> poison, float %b, i32 0
5242  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
5243  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
5244  ret <8 x i1> %1
5245}
5246
5247define <8 x i1> @fcmps_ule_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {
5248; CHECK-LABEL: fcmps_ule_vv_v8f32:
5249; CHECK:       # %bb.0:
5250; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5251; CHECK-NEXT:    vmflt.vv v12, v10, v8
5252; CHECK-NEXT:    vmnot.m v0, v12
5253; CHECK-NEXT:    ret
5254  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
5255  ret <8 x i1> %1
5256}
5257
5258define <8 x i1> @fcmps_ule_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5259; CHECK-LABEL: fcmps_ule_vf_v8f32:
5260; CHECK:       # %bb.0:
5261; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5262; CHECK-NEXT:    vmfgt.vf v10, v8, fa0
5263; CHECK-NEXT:    vmnot.m v0, v10
5264; CHECK-NEXT:    ret
5265  %head = insertelement <8 x float> poison, float %b, i32 0
5266  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
5267  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
5268  ret <8 x i1> %1
5269}
5270
5271define <8 x i1> @fcmps_ule_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5272; CHECK-LABEL: fcmps_ule_fv_v8f32:
5273; CHECK:       # %bb.0:
5274; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5275; CHECK-NEXT:    vmflt.vf v10, v8, fa0
5276; CHECK-NEXT:    vmnot.m v0, v10
5277; CHECK-NEXT:    ret
5278  %head = insertelement <8 x float> poison, float %b, i32 0
5279  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
5280  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
5281  ret <8 x i1> %1
5282}
5283
5284define <8 x i1> @fcmps_une_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {
5285; CHECK-LABEL: fcmps_une_vv_v8f32:
5286; CHECK:       # %bb.0:
5287; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5288; CHECK-NEXT:    vmfle.vv v12, v10, v8
5289; CHECK-NEXT:    vmfle.vv v13, v8, v10
5290; CHECK-NEXT:    vmnand.mm v0, v13, v12
5291; CHECK-NEXT:    ret
5292  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
5293  ret <8 x i1> %1
5294}
5295
5296define <8 x i1> @fcmps_une_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5297; CHECK-LABEL: fcmps_une_vf_v8f32:
5298; CHECK:       # %bb.0:
5299; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5300; CHECK-NEXT:    vmfge.vf v10, v8, fa0
5301; CHECK-NEXT:    vmfle.vf v11, v8, fa0
5302; CHECK-NEXT:    vmnand.mm v0, v11, v10
5303; CHECK-NEXT:    ret
5304  %head = insertelement <8 x float> poison, float %b, i32 0
5305  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
5306  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
5307  ret <8 x i1> %1
5308}
5309
5310define <8 x i1> @fcmps_une_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5311; CHECK-LABEL: fcmps_une_fv_v8f32:
5312; CHECK:       # %bb.0:
5313; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5314; CHECK-NEXT:    vmfle.vf v10, v8, fa0
5315; CHECK-NEXT:    vmfge.vf v11, v8, fa0
5316; CHECK-NEXT:    vmnand.mm v0, v11, v10
5317; CHECK-NEXT:    ret
5318  %head = insertelement <8 x float> poison, float %b, i32 0
5319  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
5320  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
5321  ret <8 x i1> %1
5322}
5323
5324define <8 x i1> @fcmps_uno_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {
5325; CHECK-LABEL: fcmps_uno_vv_v8f32:
5326; CHECK:       # %bb.0:
5327; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5328; CHECK-NEXT:    vmfle.vv v12, v10, v10
5329; CHECK-NEXT:    vmfle.vv v10, v8, v8
5330; CHECK-NEXT:    vmnot.m v8, v10
5331; CHECK-NEXT:    vmorn.mm v0, v8, v12
5332; CHECK-NEXT:    ret
5333  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
5334  ret <8 x i1> %1
5335}
5336
5337define <8 x i1> @fcmps_uno_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5338; CHECK-LABEL: fcmps_uno_vf_v8f32:
5339; CHECK:       # %bb.0:
5340; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5341; CHECK-NEXT:    vfmv.v.f v10, fa0
5342; CHECK-NEXT:    vmfle.vv v12, v8, v8
5343; CHECK-NEXT:    vmfle.vf v8, v10, fa0
5344; CHECK-NEXT:    vmnot.m v9, v12
5345; CHECK-NEXT:    vmorn.mm v0, v9, v8
5346; CHECK-NEXT:    ret
5347  %head = insertelement <8 x float> poison, float %b, i32 0
5348  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
5349  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
5350  ret <8 x i1> %1
5351}
5352
5353define <8 x i1> @fcmps_uno_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5354; CHECK-LABEL: fcmps_uno_fv_v8f32:
5355; CHECK:       # %bb.0:
5356; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
5357; CHECK-NEXT:    vfmv.v.f v10, fa0
5358; CHECK-NEXT:    vmfle.vf v12, v10, fa0
5359; CHECK-NEXT:    vmnot.m v10, v12
5360; CHECK-NEXT:    vmfle.vv v11, v8, v8
5361; CHECK-NEXT:    vmorn.mm v0, v10, v11
5362; CHECK-NEXT:    ret
5363  %head = insertelement <8 x float> poison, float %b, i32 0
5364  %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer
5365  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
5366  ret <8 x i1> %1
5367}
5368
5369declare <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float>, <16 x float>, metadata, metadata)
5370define <16 x i1> @fcmps_oeq_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {
5371; CHECK-LABEL: fcmps_oeq_vv_v16f32:
5372; CHECK:       # %bb.0:
5373; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5374; CHECK-NEXT:    vmfle.vv v16, v12, v8
5375; CHECK-NEXT:    vmfle.vv v17, v8, v12
5376; CHECK-NEXT:    vmand.mm v0, v17, v16
5377; CHECK-NEXT:    ret
5378  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
5379  ret <16 x i1> %1
5380}
5381
5382define <16 x i1> @fcmps_oeq_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5383; CHECK-LABEL: fcmps_oeq_vf_v16f32:
5384; CHECK:       # %bb.0:
5385; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5386; CHECK-NEXT:    vmfge.vf v12, v8, fa0
5387; CHECK-NEXT:    vmfle.vf v13, v8, fa0
5388; CHECK-NEXT:    vmand.mm v0, v13, v12
5389; CHECK-NEXT:    ret
5390  %head = insertelement <16 x float> poison, float %b, i32 0
5391  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5392  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
5393  ret <16 x i1> %1
5394}
5395
5396define <16 x i1> @fcmps_oeq_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5397; CHECK-LABEL: fcmps_oeq_fv_v16f32:
5398; CHECK:       # %bb.0:
5399; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5400; CHECK-NEXT:    vmfle.vf v12, v8, fa0
5401; CHECK-NEXT:    vmfge.vf v13, v8, fa0
5402; CHECK-NEXT:    vmand.mm v0, v13, v12
5403; CHECK-NEXT:    ret
5404  %head = insertelement <16 x float> poison, float %b, i32 0
5405  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5406  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
5407  ret <16 x i1> %1
5408}
5409
5410define <16 x i1> @fcmps_ogt_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {
5411; CHECK-LABEL: fcmps_ogt_vv_v16f32:
5412; CHECK:       # %bb.0:
5413; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5414; CHECK-NEXT:    vmflt.vv v0, v12, v8
5415; CHECK-NEXT:    ret
5416  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
5417  ret <16 x i1> %1
5418}
5419
5420define <16 x i1> @fcmps_ogt_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5421; CHECK-LABEL: fcmps_ogt_vf_v16f32:
5422; CHECK:       # %bb.0:
5423; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5424; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
5425; CHECK-NEXT:    ret
5426  %head = insertelement <16 x float> poison, float %b, i32 0
5427  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5428  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
5429  ret <16 x i1> %1
5430}
5431
5432define <16 x i1> @fcmps_ogt_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5433; CHECK-LABEL: fcmps_ogt_fv_v16f32:
5434; CHECK:       # %bb.0:
5435; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5436; CHECK-NEXT:    vmflt.vf v0, v8, fa0
5437; CHECK-NEXT:    ret
5438  %head = insertelement <16 x float> poison, float %b, i32 0
5439  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5440  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
5441  ret <16 x i1> %1
5442}
5443
5444define <16 x i1> @fcmps_oge_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {
5445; CHECK-LABEL: fcmps_oge_vv_v16f32:
5446; CHECK:       # %bb.0:
5447; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5448; CHECK-NEXT:    vmfle.vv v0, v12, v8
5449; CHECK-NEXT:    ret
5450  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
5451  ret <16 x i1> %1
5452}
5453
5454define <16 x i1> @fcmps_oge_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5455; CHECK-LABEL: fcmps_oge_vf_v16f32:
5456; CHECK:       # %bb.0:
5457; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5458; CHECK-NEXT:    vmfge.vf v0, v8, fa0
5459; CHECK-NEXT:    ret
5460  %head = insertelement <16 x float> poison, float %b, i32 0
5461  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5462  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
5463  ret <16 x i1> %1
5464}
5465
5466define <16 x i1> @fcmps_oge_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5467; CHECK-LABEL: fcmps_oge_fv_v16f32:
5468; CHECK:       # %bb.0:
5469; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5470; CHECK-NEXT:    vmfle.vf v0, v8, fa0
5471; CHECK-NEXT:    ret
5472  %head = insertelement <16 x float> poison, float %b, i32 0
5473  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5474  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
5475  ret <16 x i1> %1
5476}
5477
5478define <16 x i1> @fcmps_olt_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {
5479; CHECK-LABEL: fcmps_olt_vv_v16f32:
5480; CHECK:       # %bb.0:
5481; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5482; CHECK-NEXT:    vmflt.vv v0, v8, v12
5483; CHECK-NEXT:    ret
5484  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
5485  ret <16 x i1> %1
5486}
5487
5488define <16 x i1> @fcmps_olt_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5489; CHECK-LABEL: fcmps_olt_vf_v16f32:
5490; CHECK:       # %bb.0:
5491; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5492; CHECK-NEXT:    vmflt.vf v0, v8, fa0
5493; CHECK-NEXT:    ret
5494  %head = insertelement <16 x float> poison, float %b, i32 0
5495  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5496  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
5497  ret <16 x i1> %1
5498}
5499
5500define <16 x i1> @fcmps_olt_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5501; CHECK-LABEL: fcmps_olt_fv_v16f32:
5502; CHECK:       # %bb.0:
5503; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5504; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
5505; CHECK-NEXT:    ret
5506  %head = insertelement <16 x float> poison, float %b, i32 0
5507  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5508  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
5509  ret <16 x i1> %1
5510}
5511
5512define <16 x i1> @fcmps_ole_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {
5513; CHECK-LABEL: fcmps_ole_vv_v16f32:
5514; CHECK:       # %bb.0:
5515; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5516; CHECK-NEXT:    vmfle.vv v0, v8, v12
5517; CHECK-NEXT:    ret
5518  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
5519  ret <16 x i1> %1
5520}
5521
5522define <16 x i1> @fcmps_ole_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5523; CHECK-LABEL: fcmps_ole_vf_v16f32:
5524; CHECK:       # %bb.0:
5525; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5526; CHECK-NEXT:    vmfle.vf v0, v8, fa0
5527; CHECK-NEXT:    ret
5528  %head = insertelement <16 x float> poison, float %b, i32 0
5529  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5530  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
5531  ret <16 x i1> %1
5532}
5533
5534define <16 x i1> @fcmps_ole_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5535; CHECK-LABEL: fcmps_ole_fv_v16f32:
5536; CHECK:       # %bb.0:
5537; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5538; CHECK-NEXT:    vmfge.vf v0, v8, fa0
5539; CHECK-NEXT:    ret
5540  %head = insertelement <16 x float> poison, float %b, i32 0
5541  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5542  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
5543  ret <16 x i1> %1
5544}
5545
5546define <16 x i1> @fcmps_one_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {
5547; CHECK-LABEL: fcmps_one_vv_v16f32:
5548; CHECK:       # %bb.0:
5549; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5550; CHECK-NEXT:    vmflt.vv v16, v8, v12
5551; CHECK-NEXT:    vmflt.vv v17, v12, v8
5552; CHECK-NEXT:    vmor.mm v0, v17, v16
5553; CHECK-NEXT:    ret
5554  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
5555  ret <16 x i1> %1
5556}
5557
5558define <16 x i1> @fcmps_one_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5559; CHECK-LABEL: fcmps_one_vf_v16f32:
5560; CHECK:       # %bb.0:
5561; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5562; CHECK-NEXT:    vmflt.vf v12, v8, fa0
5563; CHECK-NEXT:    vmfgt.vf v13, v8, fa0
5564; CHECK-NEXT:    vmor.mm v0, v13, v12
5565; CHECK-NEXT:    ret
5566  %head = insertelement <16 x float> poison, float %b, i32 0
5567  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5568  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
5569  ret <16 x i1> %1
5570}
5571
5572define <16 x i1> @fcmps_one_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5573; CHECK-LABEL: fcmps_one_fv_v16f32:
5574; CHECK:       # %bb.0:
5575; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5576; CHECK-NEXT:    vmfgt.vf v12, v8, fa0
5577; CHECK-NEXT:    vmflt.vf v13, v8, fa0
5578; CHECK-NEXT:    vmor.mm v0, v13, v12
5579; CHECK-NEXT:    ret
5580  %head = insertelement <16 x float> poison, float %b, i32 0
5581  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5582  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
5583  ret <16 x i1> %1
5584}
5585
5586define <16 x i1> @fcmps_ord_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {
5587; CHECK-LABEL: fcmps_ord_vv_v16f32:
5588; CHECK:       # %bb.0:
5589; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5590; CHECK-NEXT:    vmfle.vv v16, v12, v12
5591; CHECK-NEXT:    vmfle.vv v12, v8, v8
5592; CHECK-NEXT:    vmand.mm v0, v12, v16
5593; CHECK-NEXT:    ret
5594  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
5595  ret <16 x i1> %1
5596}
5597
5598define <16 x i1> @fcmps_ord_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5599; CHECK-LABEL: fcmps_ord_vf_v16f32:
5600; CHECK:       # %bb.0:
5601; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5602; CHECK-NEXT:    vfmv.v.f v12, fa0
5603; CHECK-NEXT:    vmfle.vf v16, v12, fa0
5604; CHECK-NEXT:    vmfle.vv v12, v8, v8
5605; CHECK-NEXT:    vmand.mm v0, v12, v16
5606; CHECK-NEXT:    ret
5607  %head = insertelement <16 x float> poison, float %b, i32 0
5608  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5609  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
5610  ret <16 x i1> %1
5611}
5612
5613define <16 x i1> @fcmps_ord_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5614; CHECK-LABEL: fcmps_ord_fv_v16f32:
5615; CHECK:       # %bb.0:
5616; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5617; CHECK-NEXT:    vfmv.v.f v12, fa0
5618; CHECK-NEXT:    vmfle.vf v16, v12, fa0
5619; CHECK-NEXT:    vmfle.vv v12, v8, v8
5620; CHECK-NEXT:    vmand.mm v0, v16, v12
5621; CHECK-NEXT:    ret
5622  %head = insertelement <16 x float> poison, float %b, i32 0
5623  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5624  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
5625  ret <16 x i1> %1
5626}
5627
5628define <16 x i1> @fcmps_ueq_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {
5629; CHECK-LABEL: fcmps_ueq_vv_v16f32:
5630; CHECK:       # %bb.0:
5631; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5632; CHECK-NEXT:    vmflt.vv v16, v8, v12
5633; CHECK-NEXT:    vmflt.vv v17, v12, v8
5634; CHECK-NEXT:    vmnor.mm v0, v17, v16
5635; CHECK-NEXT:    ret
5636  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
5637  ret <16 x i1> %1
5638}
5639
5640define <16 x i1> @fcmps_ueq_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5641; CHECK-LABEL: fcmps_ueq_vf_v16f32:
5642; CHECK:       # %bb.0:
5643; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5644; CHECK-NEXT:    vmflt.vf v12, v8, fa0
5645; CHECK-NEXT:    vmfgt.vf v13, v8, fa0
5646; CHECK-NEXT:    vmnor.mm v0, v13, v12
5647; CHECK-NEXT:    ret
5648  %head = insertelement <16 x float> poison, float %b, i32 0
5649  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5650  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
5651  ret <16 x i1> %1
5652}
5653
5654define <16 x i1> @fcmps_ueq_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5655; CHECK-LABEL: fcmps_ueq_fv_v16f32:
5656; CHECK:       # %bb.0:
5657; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5658; CHECK-NEXT:    vmfgt.vf v12, v8, fa0
5659; CHECK-NEXT:    vmflt.vf v13, v8, fa0
5660; CHECK-NEXT:    vmnor.mm v0, v13, v12
5661; CHECK-NEXT:    ret
5662  %head = insertelement <16 x float> poison, float %b, i32 0
5663  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5664  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
5665  ret <16 x i1> %1
5666}
5667
5668define <16 x i1> @fcmps_ugt_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {
5669; CHECK-LABEL: fcmps_ugt_vv_v16f32:
5670; CHECK:       # %bb.0:
5671; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5672; CHECK-NEXT:    vmfle.vv v16, v8, v12
5673; CHECK-NEXT:    vmnot.m v0, v16
5674; CHECK-NEXT:    ret
5675  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
5676  ret <16 x i1> %1
5677}
5678
5679define <16 x i1> @fcmps_ugt_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5680; CHECK-LABEL: fcmps_ugt_vf_v16f32:
5681; CHECK:       # %bb.0:
5682; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5683; CHECK-NEXT:    vmfle.vf v12, v8, fa0
5684; CHECK-NEXT:    vmnot.m v0, v12
5685; CHECK-NEXT:    ret
5686  %head = insertelement <16 x float> poison, float %b, i32 0
5687  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5688  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
5689  ret <16 x i1> %1
5690}
5691
5692define <16 x i1> @fcmps_ugt_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5693; CHECK-LABEL: fcmps_ugt_fv_v16f32:
5694; CHECK:       # %bb.0:
5695; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5696; CHECK-NEXT:    vmfge.vf v12, v8, fa0
5697; CHECK-NEXT:    vmnot.m v0, v12
5698; CHECK-NEXT:    ret
5699  %head = insertelement <16 x float> poison, float %b, i32 0
5700  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5701  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
5702  ret <16 x i1> %1
5703}
5704
5705define <16 x i1> @fcmps_uge_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {
5706; CHECK-LABEL: fcmps_uge_vv_v16f32:
5707; CHECK:       # %bb.0:
5708; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5709; CHECK-NEXT:    vmflt.vv v16, v8, v12
5710; CHECK-NEXT:    vmnot.m v0, v16
5711; CHECK-NEXT:    ret
5712  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
5713  ret <16 x i1> %1
5714}
5715
5716define <16 x i1> @fcmps_uge_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5717; CHECK-LABEL: fcmps_uge_vf_v16f32:
5718; CHECK:       # %bb.0:
5719; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5720; CHECK-NEXT:    vmflt.vf v12, v8, fa0
5721; CHECK-NEXT:    vmnot.m v0, v12
5722; CHECK-NEXT:    ret
5723  %head = insertelement <16 x float> poison, float %b, i32 0
5724  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5725  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
5726  ret <16 x i1> %1
5727}
5728
5729define <16 x i1> @fcmps_uge_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5730; CHECK-LABEL: fcmps_uge_fv_v16f32:
5731; CHECK:       # %bb.0:
5732; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5733; CHECK-NEXT:    vmfgt.vf v12, v8, fa0
5734; CHECK-NEXT:    vmnot.m v0, v12
5735; CHECK-NEXT:    ret
5736  %head = insertelement <16 x float> poison, float %b, i32 0
5737  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5738  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
5739  ret <16 x i1> %1
5740}
5741
5742define <16 x i1> @fcmps_ult_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {
5743; CHECK-LABEL: fcmps_ult_vv_v16f32:
5744; CHECK:       # %bb.0:
5745; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5746; CHECK-NEXT:    vmfle.vv v16, v12, v8
5747; CHECK-NEXT:    vmnot.m v0, v16
5748; CHECK-NEXT:    ret
5749  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
5750  ret <16 x i1> %1
5751}
5752
5753define <16 x i1> @fcmps_ult_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5754; CHECK-LABEL: fcmps_ult_vf_v16f32:
5755; CHECK:       # %bb.0:
5756; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5757; CHECK-NEXT:    vmfge.vf v12, v8, fa0
5758; CHECK-NEXT:    vmnot.m v0, v12
5759; CHECK-NEXT:    ret
5760  %head = insertelement <16 x float> poison, float %b, i32 0
5761  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5762  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
5763  ret <16 x i1> %1
5764}
5765
5766define <16 x i1> @fcmps_ult_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5767; CHECK-LABEL: fcmps_ult_fv_v16f32:
5768; CHECK:       # %bb.0:
5769; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5770; CHECK-NEXT:    vmfle.vf v12, v8, fa0
5771; CHECK-NEXT:    vmnot.m v0, v12
5772; CHECK-NEXT:    ret
5773  %head = insertelement <16 x float> poison, float %b, i32 0
5774  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5775  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
5776  ret <16 x i1> %1
5777}
5778
5779define <16 x i1> @fcmps_ule_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {
5780; CHECK-LABEL: fcmps_ule_vv_v16f32:
5781; CHECK:       # %bb.0:
5782; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5783; CHECK-NEXT:    vmflt.vv v16, v12, v8
5784; CHECK-NEXT:    vmnot.m v0, v16
5785; CHECK-NEXT:    ret
5786  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
5787  ret <16 x i1> %1
5788}
5789
5790define <16 x i1> @fcmps_ule_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5791; CHECK-LABEL: fcmps_ule_vf_v16f32:
5792; CHECK:       # %bb.0:
5793; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5794; CHECK-NEXT:    vmfgt.vf v12, v8, fa0
5795; CHECK-NEXT:    vmnot.m v0, v12
5796; CHECK-NEXT:    ret
5797  %head = insertelement <16 x float> poison, float %b, i32 0
5798  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5799  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
5800  ret <16 x i1> %1
5801}
5802
5803define <16 x i1> @fcmps_ule_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5804; CHECK-LABEL: fcmps_ule_fv_v16f32:
5805; CHECK:       # %bb.0:
5806; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5807; CHECK-NEXT:    vmflt.vf v12, v8, fa0
5808; CHECK-NEXT:    vmnot.m v0, v12
5809; CHECK-NEXT:    ret
5810  %head = insertelement <16 x float> poison, float %b, i32 0
5811  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5812  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
5813  ret <16 x i1> %1
5814}
5815
5816define <16 x i1> @fcmps_une_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {
5817; CHECK-LABEL: fcmps_une_vv_v16f32:
5818; CHECK:       # %bb.0:
5819; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5820; CHECK-NEXT:    vmfle.vv v16, v12, v8
5821; CHECK-NEXT:    vmfle.vv v17, v8, v12
5822; CHECK-NEXT:    vmnand.mm v0, v17, v16
5823; CHECK-NEXT:    ret
5824  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
5825  ret <16 x i1> %1
5826}
5827
5828define <16 x i1> @fcmps_une_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5829; CHECK-LABEL: fcmps_une_vf_v16f32:
5830; CHECK:       # %bb.0:
5831; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5832; CHECK-NEXT:    vmfge.vf v12, v8, fa0
5833; CHECK-NEXT:    vmfle.vf v13, v8, fa0
5834; CHECK-NEXT:    vmnand.mm v0, v13, v12
5835; CHECK-NEXT:    ret
5836  %head = insertelement <16 x float> poison, float %b, i32 0
5837  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5838  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
5839  ret <16 x i1> %1
5840}
5841
5842define <16 x i1> @fcmps_une_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5843; CHECK-LABEL: fcmps_une_fv_v16f32:
5844; CHECK:       # %bb.0:
5845; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5846; CHECK-NEXT:    vmfle.vf v12, v8, fa0
5847; CHECK-NEXT:    vmfge.vf v13, v8, fa0
5848; CHECK-NEXT:    vmnand.mm v0, v13, v12
5849; CHECK-NEXT:    ret
5850  %head = insertelement <16 x float> poison, float %b, i32 0
5851  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5852  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
5853  ret <16 x i1> %1
5854}
5855
5856define <16 x i1> @fcmps_uno_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {
5857; CHECK-LABEL: fcmps_uno_vv_v16f32:
5858; CHECK:       # %bb.0:
5859; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5860; CHECK-NEXT:    vmfle.vv v16, v12, v12
5861; CHECK-NEXT:    vmfle.vv v12, v8, v8
5862; CHECK-NEXT:    vmnot.m v8, v12
5863; CHECK-NEXT:    vmorn.mm v0, v8, v16
5864; CHECK-NEXT:    ret
5865  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
5866  ret <16 x i1> %1
5867}
5868
5869define <16 x i1> @fcmps_uno_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5870; CHECK-LABEL: fcmps_uno_vf_v16f32:
5871; CHECK:       # %bb.0:
5872; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5873; CHECK-NEXT:    vfmv.v.f v12, fa0
5874; CHECK-NEXT:    vmfle.vv v16, v8, v8
5875; CHECK-NEXT:    vmfle.vf v8, v12, fa0
5876; CHECK-NEXT:    vmnot.m v9, v16
5877; CHECK-NEXT:    vmorn.mm v0, v9, v8
5878; CHECK-NEXT:    ret
5879  %head = insertelement <16 x float> poison, float %b, i32 0
5880  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5881  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
5882  ret <16 x i1> %1
5883}
5884
5885define <16 x i1> @fcmps_uno_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5886; CHECK-LABEL: fcmps_uno_fv_v16f32:
5887; CHECK:       # %bb.0:
5888; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
5889; CHECK-NEXT:    vfmv.v.f v12, fa0
5890; CHECK-NEXT:    vmfle.vf v16, v12, fa0
5891; CHECK-NEXT:    vmnot.m v12, v16
5892; CHECK-NEXT:    vmfle.vv v13, v8, v8
5893; CHECK-NEXT:    vmorn.mm v0, v12, v13
5894; CHECK-NEXT:    ret
5895  %head = insertelement <16 x float> poison, float %b, i32 0
5896  %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer
5897  %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
5898  ret <16 x i1> %1
5899}
5900
5901declare <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double>, <1 x double>, metadata, metadata)
5902define <1 x i1> @fcmps_oeq_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {
5903; CHECK-LABEL: fcmps_oeq_vv_v1f64:
5904; CHECK:       # %bb.0:
5905; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
5906; CHECK-NEXT:    vmfle.vv v10, v9, v8
5907; CHECK-NEXT:    vmfle.vv v8, v8, v9
5908; CHECK-NEXT:    vmand.mm v0, v8, v10
5909; CHECK-NEXT:    ret
5910  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
5911  ret <1 x i1> %1
5912}
5913
5914define <1 x i1> @fcmps_oeq_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
5915; CHECK-LABEL: fcmps_oeq_vf_v1f64:
5916; CHECK:       # %bb.0:
5917; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
5918; CHECK-NEXT:    vmfge.vf v9, v8, fa0
5919; CHECK-NEXT:    vmfle.vf v8, v8, fa0
5920; CHECK-NEXT:    vmand.mm v0, v8, v9
5921; CHECK-NEXT:    ret
5922  %head = insertelement <1 x double> poison, double %b, i32 0
5923  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
5924  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
5925  ret <1 x i1> %1
5926}
5927
5928define <1 x i1> @fcmps_oeq_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
5929; CHECK-LABEL: fcmps_oeq_fv_v1f64:
5930; CHECK:       # %bb.0:
5931; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
5932; CHECK-NEXT:    vmfle.vf v9, v8, fa0
5933; CHECK-NEXT:    vmfge.vf v8, v8, fa0
5934; CHECK-NEXT:    vmand.mm v0, v8, v9
5935; CHECK-NEXT:    ret
5936  %head = insertelement <1 x double> poison, double %b, i32 0
5937  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
5938  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
5939  ret <1 x i1> %1
5940}
5941
5942define <1 x i1> @fcmps_ogt_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {
5943; CHECK-LABEL: fcmps_ogt_vv_v1f64:
5944; CHECK:       # %bb.0:
5945; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
5946; CHECK-NEXT:    vmflt.vv v0, v9, v8
5947; CHECK-NEXT:    ret
5948  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
5949  ret <1 x i1> %1
5950}
5951
5952define <1 x i1> @fcmps_ogt_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
5953; CHECK-LABEL: fcmps_ogt_vf_v1f64:
5954; CHECK:       # %bb.0:
5955; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
5956; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
5957; CHECK-NEXT:    ret
5958  %head = insertelement <1 x double> poison, double %b, i32 0
5959  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
5960  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
5961  ret <1 x i1> %1
5962}
5963
5964define <1 x i1> @fcmps_ogt_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
5965; CHECK-LABEL: fcmps_ogt_fv_v1f64:
5966; CHECK:       # %bb.0:
5967; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
5968; CHECK-NEXT:    vmflt.vf v0, v8, fa0
5969; CHECK-NEXT:    ret
5970  %head = insertelement <1 x double> poison, double %b, i32 0
5971  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
5972  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
5973  ret <1 x i1> %1
5974}
5975
5976define <1 x i1> @fcmps_oge_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {
5977; CHECK-LABEL: fcmps_oge_vv_v1f64:
5978; CHECK:       # %bb.0:
5979; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
5980; CHECK-NEXT:    vmfle.vv v0, v9, v8
5981; CHECK-NEXT:    ret
5982  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
5983  ret <1 x i1> %1
5984}
5985
5986define <1 x i1> @fcmps_oge_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
5987; CHECK-LABEL: fcmps_oge_vf_v1f64:
5988; CHECK:       # %bb.0:
5989; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
5990; CHECK-NEXT:    vmfge.vf v0, v8, fa0
5991; CHECK-NEXT:    ret
5992  %head = insertelement <1 x double> poison, double %b, i32 0
5993  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
5994  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
5995  ret <1 x i1> %1
5996}
5997
5998define <1 x i1> @fcmps_oge_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
5999; CHECK-LABEL: fcmps_oge_fv_v1f64:
6000; CHECK:       # %bb.0:
6001; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6002; CHECK-NEXT:    vmfle.vf v0, v8, fa0
6003; CHECK-NEXT:    ret
6004  %head = insertelement <1 x double> poison, double %b, i32 0
6005  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6006  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
6007  ret <1 x i1> %1
6008}
6009
6010define <1 x i1> @fcmps_olt_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {
6011; CHECK-LABEL: fcmps_olt_vv_v1f64:
6012; CHECK:       # %bb.0:
6013; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6014; CHECK-NEXT:    vmflt.vv v0, v8, v9
6015; CHECK-NEXT:    ret
6016  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
6017  ret <1 x i1> %1
6018}
6019
6020define <1 x i1> @fcmps_olt_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6021; CHECK-LABEL: fcmps_olt_vf_v1f64:
6022; CHECK:       # %bb.0:
6023; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6024; CHECK-NEXT:    vmflt.vf v0, v8, fa0
6025; CHECK-NEXT:    ret
6026  %head = insertelement <1 x double> poison, double %b, i32 0
6027  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6028  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
6029  ret <1 x i1> %1
6030}
6031
6032define <1 x i1> @fcmps_olt_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6033; CHECK-LABEL: fcmps_olt_fv_v1f64:
6034; CHECK:       # %bb.0:
6035; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6036; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
6037; CHECK-NEXT:    ret
6038  %head = insertelement <1 x double> poison, double %b, i32 0
6039  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6040  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
6041  ret <1 x i1> %1
6042}
6043
6044define <1 x i1> @fcmps_ole_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {
6045; CHECK-LABEL: fcmps_ole_vv_v1f64:
6046; CHECK:       # %bb.0:
6047; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6048; CHECK-NEXT:    vmfle.vv v0, v8, v9
6049; CHECK-NEXT:    ret
6050  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
6051  ret <1 x i1> %1
6052}
6053
6054define <1 x i1> @fcmps_ole_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6055; CHECK-LABEL: fcmps_ole_vf_v1f64:
6056; CHECK:       # %bb.0:
6057; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6058; CHECK-NEXT:    vmfle.vf v0, v8, fa0
6059; CHECK-NEXT:    ret
6060  %head = insertelement <1 x double> poison, double %b, i32 0
6061  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6062  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
6063  ret <1 x i1> %1
6064}
6065
6066define <1 x i1> @fcmps_ole_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6067; CHECK-LABEL: fcmps_ole_fv_v1f64:
6068; CHECK:       # %bb.0:
6069; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6070; CHECK-NEXT:    vmfge.vf v0, v8, fa0
6071; CHECK-NEXT:    ret
6072  %head = insertelement <1 x double> poison, double %b, i32 0
6073  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6074  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
6075  ret <1 x i1> %1
6076}
6077
6078define <1 x i1> @fcmps_one_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {
6079; CHECK-LABEL: fcmps_one_vv_v1f64:
6080; CHECK:       # %bb.0:
6081; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6082; CHECK-NEXT:    vmflt.vv v10, v8, v9
6083; CHECK-NEXT:    vmflt.vv v8, v9, v8
6084; CHECK-NEXT:    vmor.mm v0, v8, v10
6085; CHECK-NEXT:    ret
6086  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
6087  ret <1 x i1> %1
6088}
6089
6090define <1 x i1> @fcmps_one_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6091; CHECK-LABEL: fcmps_one_vf_v1f64:
6092; CHECK:       # %bb.0:
6093; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6094; CHECK-NEXT:    vmflt.vf v9, v8, fa0
6095; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
6096; CHECK-NEXT:    vmor.mm v0, v8, v9
6097; CHECK-NEXT:    ret
6098  %head = insertelement <1 x double> poison, double %b, i32 0
6099  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6100  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
6101  ret <1 x i1> %1
6102}
6103
6104define <1 x i1> @fcmps_one_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6105; CHECK-LABEL: fcmps_one_fv_v1f64:
6106; CHECK:       # %bb.0:
6107; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6108; CHECK-NEXT:    vmfgt.vf v9, v8, fa0
6109; CHECK-NEXT:    vmflt.vf v8, v8, fa0
6110; CHECK-NEXT:    vmor.mm v0, v8, v9
6111; CHECK-NEXT:    ret
6112  %head = insertelement <1 x double> poison, double %b, i32 0
6113  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6114  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
6115  ret <1 x i1> %1
6116}
6117
6118define <1 x i1> @fcmps_ord_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {
6119; CHECK-LABEL: fcmps_ord_vv_v1f64:
6120; CHECK:       # %bb.0:
6121; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6122; CHECK-NEXT:    vmfle.vv v9, v9, v9
6123; CHECK-NEXT:    vmfle.vv v8, v8, v8
6124; CHECK-NEXT:    vmand.mm v0, v8, v9
6125; CHECK-NEXT:    ret
6126  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
6127  ret <1 x i1> %1
6128}
6129
6130define <1 x i1> @fcmps_ord_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6131; CHECK-LABEL: fcmps_ord_vf_v1f64:
6132; CHECK:       # %bb.0:
6133; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6134; CHECK-NEXT:    vfmv.s.f v9, fa0
6135; CHECK-NEXT:    vmfle.vf v9, v9, fa0
6136; CHECK-NEXT:    vmfle.vv v8, v8, v8
6137; CHECK-NEXT:    vmand.mm v0, v8, v9
6138; CHECK-NEXT:    ret
6139  %head = insertelement <1 x double> poison, double %b, i32 0
6140  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6141  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
6142  ret <1 x i1> %1
6143}
6144
6145define <1 x i1> @fcmps_ord_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6146; CHECK-LABEL: fcmps_ord_fv_v1f64:
6147; CHECK:       # %bb.0:
6148; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6149; CHECK-NEXT:    vfmv.s.f v9, fa0
6150; CHECK-NEXT:    vmfle.vf v9, v9, fa0
6151; CHECK-NEXT:    vmfle.vv v8, v8, v8
6152; CHECK-NEXT:    vmand.mm v0, v9, v8
6153; CHECK-NEXT:    ret
6154  %head = insertelement <1 x double> poison, double %b, i32 0
6155  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6156  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
6157  ret <1 x i1> %1
6158}
6159
6160define <1 x i1> @fcmps_ueq_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {
6161; CHECK-LABEL: fcmps_ueq_vv_v1f64:
6162; CHECK:       # %bb.0:
6163; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6164; CHECK-NEXT:    vmflt.vv v10, v8, v9
6165; CHECK-NEXT:    vmflt.vv v8, v9, v8
6166; CHECK-NEXT:    vmnor.mm v0, v8, v10
6167; CHECK-NEXT:    ret
6168  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
6169  ret <1 x i1> %1
6170}
6171
6172define <1 x i1> @fcmps_ueq_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6173; CHECK-LABEL: fcmps_ueq_vf_v1f64:
6174; CHECK:       # %bb.0:
6175; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6176; CHECK-NEXT:    vmflt.vf v9, v8, fa0
6177; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
6178; CHECK-NEXT:    vmnor.mm v0, v8, v9
6179; CHECK-NEXT:    ret
6180  %head = insertelement <1 x double> poison, double %b, i32 0
6181  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6182  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
6183  ret <1 x i1> %1
6184}
6185
6186define <1 x i1> @fcmps_ueq_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6187; CHECK-LABEL: fcmps_ueq_fv_v1f64:
6188; CHECK:       # %bb.0:
6189; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6190; CHECK-NEXT:    vmfgt.vf v9, v8, fa0
6191; CHECK-NEXT:    vmflt.vf v8, v8, fa0
6192; CHECK-NEXT:    vmnor.mm v0, v8, v9
6193; CHECK-NEXT:    ret
6194  %head = insertelement <1 x double> poison, double %b, i32 0
6195  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6196  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
6197  ret <1 x i1> %1
6198}
6199
6200define <1 x i1> @fcmps_ugt_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {
6201; CHECK-LABEL: fcmps_ugt_vv_v1f64:
6202; CHECK:       # %bb.0:
6203; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6204; CHECK-NEXT:    vmfle.vv v8, v8, v9
6205; CHECK-NEXT:    vmnot.m v0, v8
6206; CHECK-NEXT:    ret
6207  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
6208  ret <1 x i1> %1
6209}
6210
6211define <1 x i1> @fcmps_ugt_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6212; CHECK-LABEL: fcmps_ugt_vf_v1f64:
6213; CHECK:       # %bb.0:
6214; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6215; CHECK-NEXT:    vmfle.vf v8, v8, fa0
6216; CHECK-NEXT:    vmnot.m v0, v8
6217; CHECK-NEXT:    ret
6218  %head = insertelement <1 x double> poison, double %b, i32 0
6219  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6220  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
6221  ret <1 x i1> %1
6222}
6223
6224define <1 x i1> @fcmps_ugt_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6225; CHECK-LABEL: fcmps_ugt_fv_v1f64:
6226; CHECK:       # %bb.0:
6227; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6228; CHECK-NEXT:    vmfge.vf v8, v8, fa0
6229; CHECK-NEXT:    vmnot.m v0, v8
6230; CHECK-NEXT:    ret
6231  %head = insertelement <1 x double> poison, double %b, i32 0
6232  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6233  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
6234  ret <1 x i1> %1
6235}
6236
6237define <1 x i1> @fcmps_uge_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {
6238; CHECK-LABEL: fcmps_uge_vv_v1f64:
6239; CHECK:       # %bb.0:
6240; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6241; CHECK-NEXT:    vmflt.vv v8, v8, v9
6242; CHECK-NEXT:    vmnot.m v0, v8
6243; CHECK-NEXT:    ret
6244  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
6245  ret <1 x i1> %1
6246}
6247
6248define <1 x i1> @fcmps_uge_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6249; CHECK-LABEL: fcmps_uge_vf_v1f64:
6250; CHECK:       # %bb.0:
6251; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6252; CHECK-NEXT:    vmflt.vf v8, v8, fa0
6253; CHECK-NEXT:    vmnot.m v0, v8
6254; CHECK-NEXT:    ret
6255  %head = insertelement <1 x double> poison, double %b, i32 0
6256  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6257  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
6258  ret <1 x i1> %1
6259}
6260
6261define <1 x i1> @fcmps_uge_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6262; CHECK-LABEL: fcmps_uge_fv_v1f64:
6263; CHECK:       # %bb.0:
6264; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6265; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
6266; CHECK-NEXT:    vmnot.m v0, v8
6267; CHECK-NEXT:    ret
6268  %head = insertelement <1 x double> poison, double %b, i32 0
6269  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6270  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
6271  ret <1 x i1> %1
6272}
6273
6274define <1 x i1> @fcmps_ult_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {
6275; CHECK-LABEL: fcmps_ult_vv_v1f64:
6276; CHECK:       # %bb.0:
6277; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6278; CHECK-NEXT:    vmfle.vv v8, v9, v8
6279; CHECK-NEXT:    vmnot.m v0, v8
6280; CHECK-NEXT:    ret
6281  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
6282  ret <1 x i1> %1
6283}
6284
6285define <1 x i1> @fcmps_ult_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6286; CHECK-LABEL: fcmps_ult_vf_v1f64:
6287; CHECK:       # %bb.0:
6288; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6289; CHECK-NEXT:    vmfge.vf v8, v8, fa0
6290; CHECK-NEXT:    vmnot.m v0, v8
6291; CHECK-NEXT:    ret
6292  %head = insertelement <1 x double> poison, double %b, i32 0
6293  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6294  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
6295  ret <1 x i1> %1
6296}
6297
6298define <1 x i1> @fcmps_ult_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6299; CHECK-LABEL: fcmps_ult_fv_v1f64:
6300; CHECK:       # %bb.0:
6301; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6302; CHECK-NEXT:    vmfle.vf v8, v8, fa0
6303; CHECK-NEXT:    vmnot.m v0, v8
6304; CHECK-NEXT:    ret
6305  %head = insertelement <1 x double> poison, double %b, i32 0
6306  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6307  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
6308  ret <1 x i1> %1
6309}
6310
6311define <1 x i1> @fcmps_ule_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {
6312; CHECK-LABEL: fcmps_ule_vv_v1f64:
6313; CHECK:       # %bb.0:
6314; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6315; CHECK-NEXT:    vmflt.vv v8, v9, v8
6316; CHECK-NEXT:    vmnot.m v0, v8
6317; CHECK-NEXT:    ret
6318  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
6319  ret <1 x i1> %1
6320}
6321
6322define <1 x i1> @fcmps_ule_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6323; CHECK-LABEL: fcmps_ule_vf_v1f64:
6324; CHECK:       # %bb.0:
6325; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6326; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
6327; CHECK-NEXT:    vmnot.m v0, v8
6328; CHECK-NEXT:    ret
6329  %head = insertelement <1 x double> poison, double %b, i32 0
6330  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6331  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
6332  ret <1 x i1> %1
6333}
6334
6335define <1 x i1> @fcmps_ule_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6336; CHECK-LABEL: fcmps_ule_fv_v1f64:
6337; CHECK:       # %bb.0:
6338; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6339; CHECK-NEXT:    vmflt.vf v8, v8, fa0
6340; CHECK-NEXT:    vmnot.m v0, v8
6341; CHECK-NEXT:    ret
6342  %head = insertelement <1 x double> poison, double %b, i32 0
6343  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6344  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
6345  ret <1 x i1> %1
6346}
6347
6348define <1 x i1> @fcmps_une_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {
6349; CHECK-LABEL: fcmps_une_vv_v1f64:
6350; CHECK:       # %bb.0:
6351; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6352; CHECK-NEXT:    vmfle.vv v10, v9, v8
6353; CHECK-NEXT:    vmfle.vv v8, v8, v9
6354; CHECK-NEXT:    vmnand.mm v0, v8, v10
6355; CHECK-NEXT:    ret
6356  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
6357  ret <1 x i1> %1
6358}
6359
6360define <1 x i1> @fcmps_une_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6361; CHECK-LABEL: fcmps_une_vf_v1f64:
6362; CHECK:       # %bb.0:
6363; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6364; CHECK-NEXT:    vmfge.vf v9, v8, fa0
6365; CHECK-NEXT:    vmfle.vf v8, v8, fa0
6366; CHECK-NEXT:    vmnand.mm v0, v8, v9
6367; CHECK-NEXT:    ret
6368  %head = insertelement <1 x double> poison, double %b, i32 0
6369  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6370  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
6371  ret <1 x i1> %1
6372}
6373
6374define <1 x i1> @fcmps_une_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6375; CHECK-LABEL: fcmps_une_fv_v1f64:
6376; CHECK:       # %bb.0:
6377; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6378; CHECK-NEXT:    vmfle.vf v9, v8, fa0
6379; CHECK-NEXT:    vmfge.vf v8, v8, fa0
6380; CHECK-NEXT:    vmnand.mm v0, v8, v9
6381; CHECK-NEXT:    ret
6382  %head = insertelement <1 x double> poison, double %b, i32 0
6383  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6384  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
6385  ret <1 x i1> %1
6386}
6387
6388define <1 x i1> @fcmps_uno_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {
6389; CHECK-LABEL: fcmps_uno_vv_v1f64:
6390; CHECK:       # %bb.0:
6391; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6392; CHECK-NEXT:    vmfle.vv v9, v9, v9
6393; CHECK-NEXT:    vmfle.vv v8, v8, v8
6394; CHECK-NEXT:    vmnot.m v8, v8
6395; CHECK-NEXT:    vmorn.mm v0, v8, v9
6396; CHECK-NEXT:    ret
6397  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
6398  ret <1 x i1> %1
6399}
6400
6401define <1 x i1> @fcmps_uno_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6402; CHECK-LABEL: fcmps_uno_vf_v1f64:
6403; CHECK:       # %bb.0:
6404; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6405; CHECK-NEXT:    vfmv.s.f v9, fa0
6406; CHECK-NEXT:    vmfle.vv v8, v8, v8
6407; CHECK-NEXT:    vmfle.vf v9, v9, fa0
6408; CHECK-NEXT:    vmnot.m v8, v8
6409; CHECK-NEXT:    vmorn.mm v0, v8, v9
6410; CHECK-NEXT:    ret
6411  %head = insertelement <1 x double> poison, double %b, i32 0
6412  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6413  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
6414  ret <1 x i1> %1
6415}
6416
6417define <1 x i1> @fcmps_uno_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6418; CHECK-LABEL: fcmps_uno_fv_v1f64:
6419; CHECK:       # %bb.0:
6420; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
6421; CHECK-NEXT:    vfmv.s.f v9, fa0
6422; CHECK-NEXT:    vmfle.vf v9, v9, fa0
6423; CHECK-NEXT:    vmnot.m v9, v9
6424; CHECK-NEXT:    vmfle.vv v8, v8, v8
6425; CHECK-NEXT:    vmorn.mm v0, v9, v8
6426; CHECK-NEXT:    ret
6427  %head = insertelement <1 x double> poison, double %b, i32 0
6428  %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer
6429  %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
6430  ret <1 x i1> %1
6431}
6432
6433declare <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double>, <2 x double>, metadata, metadata)
6434define <2 x i1> @fcmps_oeq_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {
6435; CHECK-LABEL: fcmps_oeq_vv_v2f64:
6436; CHECK:       # %bb.0:
6437; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6438; CHECK-NEXT:    vmfle.vv v10, v9, v8
6439; CHECK-NEXT:    vmfle.vv v8, v8, v9
6440; CHECK-NEXT:    vmand.mm v0, v8, v10
6441; CHECK-NEXT:    ret
6442  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
6443  ret <2 x i1> %1
6444}
6445
6446define <2 x i1> @fcmps_oeq_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6447; CHECK-LABEL: fcmps_oeq_vf_v2f64:
6448; CHECK:       # %bb.0:
6449; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6450; CHECK-NEXT:    vmfge.vf v9, v8, fa0
6451; CHECK-NEXT:    vmfle.vf v8, v8, fa0
6452; CHECK-NEXT:    vmand.mm v0, v8, v9
6453; CHECK-NEXT:    ret
6454  %head = insertelement <2 x double> poison, double %b, i32 0
6455  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6456  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
6457  ret <2 x i1> %1
6458}
6459
6460define <2 x i1> @fcmps_oeq_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6461; CHECK-LABEL: fcmps_oeq_fv_v2f64:
6462; CHECK:       # %bb.0:
6463; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6464; CHECK-NEXT:    vmfle.vf v9, v8, fa0
6465; CHECK-NEXT:    vmfge.vf v8, v8, fa0
6466; CHECK-NEXT:    vmand.mm v0, v8, v9
6467; CHECK-NEXT:    ret
6468  %head = insertelement <2 x double> poison, double %b, i32 0
6469  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6470  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
6471  ret <2 x i1> %1
6472}
6473
6474define <2 x i1> @fcmps_ogt_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {
6475; CHECK-LABEL: fcmps_ogt_vv_v2f64:
6476; CHECK:       # %bb.0:
6477; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6478; CHECK-NEXT:    vmflt.vv v0, v9, v8
6479; CHECK-NEXT:    ret
6480  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
6481  ret <2 x i1> %1
6482}
6483
6484define <2 x i1> @fcmps_ogt_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6485; CHECK-LABEL: fcmps_ogt_vf_v2f64:
6486; CHECK:       # %bb.0:
6487; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6488; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
6489; CHECK-NEXT:    ret
6490  %head = insertelement <2 x double> poison, double %b, i32 0
6491  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6492  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
6493  ret <2 x i1> %1
6494}
6495
6496define <2 x i1> @fcmps_ogt_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6497; CHECK-LABEL: fcmps_ogt_fv_v2f64:
6498; CHECK:       # %bb.0:
6499; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6500; CHECK-NEXT:    vmflt.vf v0, v8, fa0
6501; CHECK-NEXT:    ret
6502  %head = insertelement <2 x double> poison, double %b, i32 0
6503  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6504  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
6505  ret <2 x i1> %1
6506}
6507
6508define <2 x i1> @fcmps_oge_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {
6509; CHECK-LABEL: fcmps_oge_vv_v2f64:
6510; CHECK:       # %bb.0:
6511; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6512; CHECK-NEXT:    vmfle.vv v0, v9, v8
6513; CHECK-NEXT:    ret
6514  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
6515  ret <2 x i1> %1
6516}
6517
6518define <2 x i1> @fcmps_oge_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6519; CHECK-LABEL: fcmps_oge_vf_v2f64:
6520; CHECK:       # %bb.0:
6521; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6522; CHECK-NEXT:    vmfge.vf v0, v8, fa0
6523; CHECK-NEXT:    ret
6524  %head = insertelement <2 x double> poison, double %b, i32 0
6525  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6526  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
6527  ret <2 x i1> %1
6528}
6529
6530define <2 x i1> @fcmps_oge_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6531; CHECK-LABEL: fcmps_oge_fv_v2f64:
6532; CHECK:       # %bb.0:
6533; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6534; CHECK-NEXT:    vmfle.vf v0, v8, fa0
6535; CHECK-NEXT:    ret
6536  %head = insertelement <2 x double> poison, double %b, i32 0
6537  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6538  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
6539  ret <2 x i1> %1
6540}
6541
6542define <2 x i1> @fcmps_olt_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {
6543; CHECK-LABEL: fcmps_olt_vv_v2f64:
6544; CHECK:       # %bb.0:
6545; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6546; CHECK-NEXT:    vmflt.vv v0, v8, v9
6547; CHECK-NEXT:    ret
6548  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
6549  ret <2 x i1> %1
6550}
6551
6552define <2 x i1> @fcmps_olt_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6553; CHECK-LABEL: fcmps_olt_vf_v2f64:
6554; CHECK:       # %bb.0:
6555; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6556; CHECK-NEXT:    vmflt.vf v0, v8, fa0
6557; CHECK-NEXT:    ret
6558  %head = insertelement <2 x double> poison, double %b, i32 0
6559  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6560  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
6561  ret <2 x i1> %1
6562}
6563
6564define <2 x i1> @fcmps_olt_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6565; CHECK-LABEL: fcmps_olt_fv_v2f64:
6566; CHECK:       # %bb.0:
6567; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6568; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
6569; CHECK-NEXT:    ret
6570  %head = insertelement <2 x double> poison, double %b, i32 0
6571  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6572  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
6573  ret <2 x i1> %1
6574}
6575
6576define <2 x i1> @fcmps_ole_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {
6577; CHECK-LABEL: fcmps_ole_vv_v2f64:
6578; CHECK:       # %bb.0:
6579; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6580; CHECK-NEXT:    vmfle.vv v0, v8, v9
6581; CHECK-NEXT:    ret
6582  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
6583  ret <2 x i1> %1
6584}
6585
6586define <2 x i1> @fcmps_ole_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6587; CHECK-LABEL: fcmps_ole_vf_v2f64:
6588; CHECK:       # %bb.0:
6589; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6590; CHECK-NEXT:    vmfle.vf v0, v8, fa0
6591; CHECK-NEXT:    ret
6592  %head = insertelement <2 x double> poison, double %b, i32 0
6593  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6594  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
6595  ret <2 x i1> %1
6596}
6597
6598define <2 x i1> @fcmps_ole_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6599; CHECK-LABEL: fcmps_ole_fv_v2f64:
6600; CHECK:       # %bb.0:
6601; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6602; CHECK-NEXT:    vmfge.vf v0, v8, fa0
6603; CHECK-NEXT:    ret
6604  %head = insertelement <2 x double> poison, double %b, i32 0
6605  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6606  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
6607  ret <2 x i1> %1
6608}
6609
6610define <2 x i1> @fcmps_one_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {
6611; CHECK-LABEL: fcmps_one_vv_v2f64:
6612; CHECK:       # %bb.0:
6613; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6614; CHECK-NEXT:    vmflt.vv v10, v8, v9
6615; CHECK-NEXT:    vmflt.vv v8, v9, v8
6616; CHECK-NEXT:    vmor.mm v0, v8, v10
6617; CHECK-NEXT:    ret
6618  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
6619  ret <2 x i1> %1
6620}
6621
6622define <2 x i1> @fcmps_one_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6623; CHECK-LABEL: fcmps_one_vf_v2f64:
6624; CHECK:       # %bb.0:
6625; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6626; CHECK-NEXT:    vmflt.vf v9, v8, fa0
6627; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
6628; CHECK-NEXT:    vmor.mm v0, v8, v9
6629; CHECK-NEXT:    ret
6630  %head = insertelement <2 x double> poison, double %b, i32 0
6631  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6632  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
6633  ret <2 x i1> %1
6634}
6635
6636define <2 x i1> @fcmps_one_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6637; CHECK-LABEL: fcmps_one_fv_v2f64:
6638; CHECK:       # %bb.0:
6639; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6640; CHECK-NEXT:    vmfgt.vf v9, v8, fa0
6641; CHECK-NEXT:    vmflt.vf v8, v8, fa0
6642; CHECK-NEXT:    vmor.mm v0, v8, v9
6643; CHECK-NEXT:    ret
6644  %head = insertelement <2 x double> poison, double %b, i32 0
6645  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6646  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
6647  ret <2 x i1> %1
6648}
6649
6650define <2 x i1> @fcmps_ord_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {
6651; CHECK-LABEL: fcmps_ord_vv_v2f64:
6652; CHECK:       # %bb.0:
6653; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6654; CHECK-NEXT:    vmfle.vv v9, v9, v9
6655; CHECK-NEXT:    vmfle.vv v8, v8, v8
6656; CHECK-NEXT:    vmand.mm v0, v8, v9
6657; CHECK-NEXT:    ret
6658  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
6659  ret <2 x i1> %1
6660}
6661
6662define <2 x i1> @fcmps_ord_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6663; CHECK-LABEL: fcmps_ord_vf_v2f64:
6664; CHECK:       # %bb.0:
6665; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6666; CHECK-NEXT:    vfmv.v.f v9, fa0
6667; CHECK-NEXT:    vmfle.vf v9, v9, fa0
6668; CHECK-NEXT:    vmfle.vv v8, v8, v8
6669; CHECK-NEXT:    vmand.mm v0, v8, v9
6670; CHECK-NEXT:    ret
6671  %head = insertelement <2 x double> poison, double %b, i32 0
6672  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6673  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
6674  ret <2 x i1> %1
6675}
6676
6677define <2 x i1> @fcmps_ord_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6678; CHECK-LABEL: fcmps_ord_fv_v2f64:
6679; CHECK:       # %bb.0:
6680; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6681; CHECK-NEXT:    vfmv.v.f v9, fa0
6682; CHECK-NEXT:    vmfle.vf v9, v9, fa0
6683; CHECK-NEXT:    vmfle.vv v8, v8, v8
6684; CHECK-NEXT:    vmand.mm v0, v9, v8
6685; CHECK-NEXT:    ret
6686  %head = insertelement <2 x double> poison, double %b, i32 0
6687  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6688  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
6689  ret <2 x i1> %1
6690}
6691
6692define <2 x i1> @fcmps_ueq_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {
6693; CHECK-LABEL: fcmps_ueq_vv_v2f64:
6694; CHECK:       # %bb.0:
6695; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6696; CHECK-NEXT:    vmflt.vv v10, v8, v9
6697; CHECK-NEXT:    vmflt.vv v8, v9, v8
6698; CHECK-NEXT:    vmnor.mm v0, v8, v10
6699; CHECK-NEXT:    ret
6700  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
6701  ret <2 x i1> %1
6702}
6703
6704define <2 x i1> @fcmps_ueq_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6705; CHECK-LABEL: fcmps_ueq_vf_v2f64:
6706; CHECK:       # %bb.0:
6707; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6708; CHECK-NEXT:    vmflt.vf v9, v8, fa0
6709; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
6710; CHECK-NEXT:    vmnor.mm v0, v8, v9
6711; CHECK-NEXT:    ret
6712  %head = insertelement <2 x double> poison, double %b, i32 0
6713  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6714  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
6715  ret <2 x i1> %1
6716}
6717
6718define <2 x i1> @fcmps_ueq_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6719; CHECK-LABEL: fcmps_ueq_fv_v2f64:
6720; CHECK:       # %bb.0:
6721; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6722; CHECK-NEXT:    vmfgt.vf v9, v8, fa0
6723; CHECK-NEXT:    vmflt.vf v8, v8, fa0
6724; CHECK-NEXT:    vmnor.mm v0, v8, v9
6725; CHECK-NEXT:    ret
6726  %head = insertelement <2 x double> poison, double %b, i32 0
6727  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6728  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
6729  ret <2 x i1> %1
6730}
6731
6732define <2 x i1> @fcmps_ugt_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {
6733; CHECK-LABEL: fcmps_ugt_vv_v2f64:
6734; CHECK:       # %bb.0:
6735; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6736; CHECK-NEXT:    vmfle.vv v8, v8, v9
6737; CHECK-NEXT:    vmnot.m v0, v8
6738; CHECK-NEXT:    ret
6739  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
6740  ret <2 x i1> %1
6741}
6742
6743define <2 x i1> @fcmps_ugt_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6744; CHECK-LABEL: fcmps_ugt_vf_v2f64:
6745; CHECK:       # %bb.0:
6746; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6747; CHECK-NEXT:    vmfle.vf v8, v8, fa0
6748; CHECK-NEXT:    vmnot.m v0, v8
6749; CHECK-NEXT:    ret
6750  %head = insertelement <2 x double> poison, double %b, i32 0
6751  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6752  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
6753  ret <2 x i1> %1
6754}
6755
6756define <2 x i1> @fcmps_ugt_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6757; CHECK-LABEL: fcmps_ugt_fv_v2f64:
6758; CHECK:       # %bb.0:
6759; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6760; CHECK-NEXT:    vmfge.vf v8, v8, fa0
6761; CHECK-NEXT:    vmnot.m v0, v8
6762; CHECK-NEXT:    ret
6763  %head = insertelement <2 x double> poison, double %b, i32 0
6764  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6765  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
6766  ret <2 x i1> %1
6767}
6768
6769define <2 x i1> @fcmps_uge_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {
6770; CHECK-LABEL: fcmps_uge_vv_v2f64:
6771; CHECK:       # %bb.0:
6772; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6773; CHECK-NEXT:    vmflt.vv v8, v8, v9
6774; CHECK-NEXT:    vmnot.m v0, v8
6775; CHECK-NEXT:    ret
6776  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
6777  ret <2 x i1> %1
6778}
6779
6780define <2 x i1> @fcmps_uge_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6781; CHECK-LABEL: fcmps_uge_vf_v2f64:
6782; CHECK:       # %bb.0:
6783; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6784; CHECK-NEXT:    vmflt.vf v8, v8, fa0
6785; CHECK-NEXT:    vmnot.m v0, v8
6786; CHECK-NEXT:    ret
6787  %head = insertelement <2 x double> poison, double %b, i32 0
6788  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6789  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
6790  ret <2 x i1> %1
6791}
6792
6793define <2 x i1> @fcmps_uge_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6794; CHECK-LABEL: fcmps_uge_fv_v2f64:
6795; CHECK:       # %bb.0:
6796; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6797; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
6798; CHECK-NEXT:    vmnot.m v0, v8
6799; CHECK-NEXT:    ret
6800  %head = insertelement <2 x double> poison, double %b, i32 0
6801  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6802  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
6803  ret <2 x i1> %1
6804}
6805
6806define <2 x i1> @fcmps_ult_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {
6807; CHECK-LABEL: fcmps_ult_vv_v2f64:
6808; CHECK:       # %bb.0:
6809; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6810; CHECK-NEXT:    vmfle.vv v8, v9, v8
6811; CHECK-NEXT:    vmnot.m v0, v8
6812; CHECK-NEXT:    ret
6813  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
6814  ret <2 x i1> %1
6815}
6816
6817define <2 x i1> @fcmps_ult_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6818; CHECK-LABEL: fcmps_ult_vf_v2f64:
6819; CHECK:       # %bb.0:
6820; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6821; CHECK-NEXT:    vmfge.vf v8, v8, fa0
6822; CHECK-NEXT:    vmnot.m v0, v8
6823; CHECK-NEXT:    ret
6824  %head = insertelement <2 x double> poison, double %b, i32 0
6825  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6826  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
6827  ret <2 x i1> %1
6828}
6829
6830define <2 x i1> @fcmps_ult_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6831; CHECK-LABEL: fcmps_ult_fv_v2f64:
6832; CHECK:       # %bb.0:
6833; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6834; CHECK-NEXT:    vmfle.vf v8, v8, fa0
6835; CHECK-NEXT:    vmnot.m v0, v8
6836; CHECK-NEXT:    ret
6837  %head = insertelement <2 x double> poison, double %b, i32 0
6838  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6839  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
6840  ret <2 x i1> %1
6841}
6842
6843define <2 x i1> @fcmps_ule_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {
6844; CHECK-LABEL: fcmps_ule_vv_v2f64:
6845; CHECK:       # %bb.0:
6846; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6847; CHECK-NEXT:    vmflt.vv v8, v9, v8
6848; CHECK-NEXT:    vmnot.m v0, v8
6849; CHECK-NEXT:    ret
6850  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
6851  ret <2 x i1> %1
6852}
6853
6854define <2 x i1> @fcmps_ule_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6855; CHECK-LABEL: fcmps_ule_vf_v2f64:
6856; CHECK:       # %bb.0:
6857; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6858; CHECK-NEXT:    vmfgt.vf v8, v8, fa0
6859; CHECK-NEXT:    vmnot.m v0, v8
6860; CHECK-NEXT:    ret
6861  %head = insertelement <2 x double> poison, double %b, i32 0
6862  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6863  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
6864  ret <2 x i1> %1
6865}
6866
6867define <2 x i1> @fcmps_ule_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6868; CHECK-LABEL: fcmps_ule_fv_v2f64:
6869; CHECK:       # %bb.0:
6870; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6871; CHECK-NEXT:    vmflt.vf v8, v8, fa0
6872; CHECK-NEXT:    vmnot.m v0, v8
6873; CHECK-NEXT:    ret
6874  %head = insertelement <2 x double> poison, double %b, i32 0
6875  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6876  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
6877  ret <2 x i1> %1
6878}
6879
6880define <2 x i1> @fcmps_une_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {
6881; CHECK-LABEL: fcmps_une_vv_v2f64:
6882; CHECK:       # %bb.0:
6883; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6884; CHECK-NEXT:    vmfle.vv v10, v9, v8
6885; CHECK-NEXT:    vmfle.vv v8, v8, v9
6886; CHECK-NEXT:    vmnand.mm v0, v8, v10
6887; CHECK-NEXT:    ret
6888  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
6889  ret <2 x i1> %1
6890}
6891
6892define <2 x i1> @fcmps_une_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6893; CHECK-LABEL: fcmps_une_vf_v2f64:
6894; CHECK:       # %bb.0:
6895; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6896; CHECK-NEXT:    vmfge.vf v9, v8, fa0
6897; CHECK-NEXT:    vmfle.vf v8, v8, fa0
6898; CHECK-NEXT:    vmnand.mm v0, v8, v9
6899; CHECK-NEXT:    ret
6900  %head = insertelement <2 x double> poison, double %b, i32 0
6901  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6902  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
6903  ret <2 x i1> %1
6904}
6905
6906define <2 x i1> @fcmps_une_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6907; CHECK-LABEL: fcmps_une_fv_v2f64:
6908; CHECK:       # %bb.0:
6909; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6910; CHECK-NEXT:    vmfle.vf v9, v8, fa0
6911; CHECK-NEXT:    vmfge.vf v8, v8, fa0
6912; CHECK-NEXT:    vmnand.mm v0, v8, v9
6913; CHECK-NEXT:    ret
6914  %head = insertelement <2 x double> poison, double %b, i32 0
6915  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6916  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
6917  ret <2 x i1> %1
6918}
6919
6920define <2 x i1> @fcmps_uno_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {
6921; CHECK-LABEL: fcmps_uno_vv_v2f64:
6922; CHECK:       # %bb.0:
6923; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6924; CHECK-NEXT:    vmfle.vv v9, v9, v9
6925; CHECK-NEXT:    vmfle.vv v8, v8, v8
6926; CHECK-NEXT:    vmnot.m v8, v8
6927; CHECK-NEXT:    vmorn.mm v0, v8, v9
6928; CHECK-NEXT:    ret
6929  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
6930  ret <2 x i1> %1
6931}
6932
6933define <2 x i1> @fcmps_uno_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6934; CHECK-LABEL: fcmps_uno_vf_v2f64:
6935; CHECK:       # %bb.0:
6936; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6937; CHECK-NEXT:    vfmv.v.f v9, fa0
6938; CHECK-NEXT:    vmfle.vv v8, v8, v8
6939; CHECK-NEXT:    vmfle.vf v9, v9, fa0
6940; CHECK-NEXT:    vmnot.m v8, v8
6941; CHECK-NEXT:    vmorn.mm v0, v8, v9
6942; CHECK-NEXT:    ret
6943  %head = insertelement <2 x double> poison, double %b, i32 0
6944  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6945  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
6946  ret <2 x i1> %1
6947}
6948
6949define <2 x i1> @fcmps_uno_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6950; CHECK-LABEL: fcmps_uno_fv_v2f64:
6951; CHECK:       # %bb.0:
6952; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
6953; CHECK-NEXT:    vfmv.v.f v9, fa0
6954; CHECK-NEXT:    vmfle.vf v9, v9, fa0
6955; CHECK-NEXT:    vmnot.m v9, v9
6956; CHECK-NEXT:    vmfle.vv v8, v8, v8
6957; CHECK-NEXT:    vmorn.mm v0, v9, v8
6958; CHECK-NEXT:    ret
6959  %head = insertelement <2 x double> poison, double %b, i32 0
6960  %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer
6961  %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
6962  ret <2 x i1> %1
6963}
6964
6965declare <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double>, <4 x double>, metadata, metadata)
6966define <4 x i1> @fcmps_oeq_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {
6967; CHECK-LABEL: fcmps_oeq_vv_v4f64:
6968; CHECK:       # %bb.0:
6969; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
6970; CHECK-NEXT:    vmfle.vv v12, v10, v8
6971; CHECK-NEXT:    vmfle.vv v13, v8, v10
6972; CHECK-NEXT:    vmand.mm v0, v13, v12
6973; CHECK-NEXT:    ret
6974  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
6975  ret <4 x i1> %1
6976}
6977
6978define <4 x i1> @fcmps_oeq_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
6979; CHECK-LABEL: fcmps_oeq_vf_v4f64:
6980; CHECK:       # %bb.0:
6981; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
6982; CHECK-NEXT:    vmfge.vf v10, v8, fa0
6983; CHECK-NEXT:    vmfle.vf v11, v8, fa0
6984; CHECK-NEXT:    vmand.mm v0, v11, v10
6985; CHECK-NEXT:    ret
6986  %head = insertelement <4 x double> poison, double %b, i32 0
6987  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
6988  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
6989  ret <4 x i1> %1
6990}
6991
6992define <4 x i1> @fcmps_oeq_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
6993; CHECK-LABEL: fcmps_oeq_fv_v4f64:
6994; CHECK:       # %bb.0:
6995; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
6996; CHECK-NEXT:    vmfle.vf v10, v8, fa0
6997; CHECK-NEXT:    vmfge.vf v11, v8, fa0
6998; CHECK-NEXT:    vmand.mm v0, v11, v10
6999; CHECK-NEXT:    ret
7000  %head = insertelement <4 x double> poison, double %b, i32 0
7001  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7002  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
7003  ret <4 x i1> %1
7004}
7005
7006define <4 x i1> @fcmps_ogt_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {
7007; CHECK-LABEL: fcmps_ogt_vv_v4f64:
7008; CHECK:       # %bb.0:
7009; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7010; CHECK-NEXT:    vmflt.vv v0, v10, v8
7011; CHECK-NEXT:    ret
7012  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
7013  ret <4 x i1> %1
7014}
7015
7016define <4 x i1> @fcmps_ogt_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7017; CHECK-LABEL: fcmps_ogt_vf_v4f64:
7018; CHECK:       # %bb.0:
7019; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7020; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
7021; CHECK-NEXT:    ret
7022  %head = insertelement <4 x double> poison, double %b, i32 0
7023  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7024  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
7025  ret <4 x i1> %1
7026}
7027
7028define <4 x i1> @fcmps_ogt_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7029; CHECK-LABEL: fcmps_ogt_fv_v4f64:
7030; CHECK:       # %bb.0:
7031; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7032; CHECK-NEXT:    vmflt.vf v0, v8, fa0
7033; CHECK-NEXT:    ret
7034  %head = insertelement <4 x double> poison, double %b, i32 0
7035  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7036  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
7037  ret <4 x i1> %1
7038}
7039
7040define <4 x i1> @fcmps_oge_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {
7041; CHECK-LABEL: fcmps_oge_vv_v4f64:
7042; CHECK:       # %bb.0:
7043; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7044; CHECK-NEXT:    vmfle.vv v0, v10, v8
7045; CHECK-NEXT:    ret
7046  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
7047  ret <4 x i1> %1
7048}
7049
7050define <4 x i1> @fcmps_oge_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7051; CHECK-LABEL: fcmps_oge_vf_v4f64:
7052; CHECK:       # %bb.0:
7053; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7054; CHECK-NEXT:    vmfge.vf v0, v8, fa0
7055; CHECK-NEXT:    ret
7056  %head = insertelement <4 x double> poison, double %b, i32 0
7057  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7058  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
7059  ret <4 x i1> %1
7060}
7061
7062define <4 x i1> @fcmps_oge_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7063; CHECK-LABEL: fcmps_oge_fv_v4f64:
7064; CHECK:       # %bb.0:
7065; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7066; CHECK-NEXT:    vmfle.vf v0, v8, fa0
7067; CHECK-NEXT:    ret
7068  %head = insertelement <4 x double> poison, double %b, i32 0
7069  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7070  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
7071  ret <4 x i1> %1
7072}
7073
7074define <4 x i1> @fcmps_olt_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {
7075; CHECK-LABEL: fcmps_olt_vv_v4f64:
7076; CHECK:       # %bb.0:
7077; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7078; CHECK-NEXT:    vmflt.vv v0, v8, v10
7079; CHECK-NEXT:    ret
7080  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
7081  ret <4 x i1> %1
7082}
7083
7084define <4 x i1> @fcmps_olt_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7085; CHECK-LABEL: fcmps_olt_vf_v4f64:
7086; CHECK:       # %bb.0:
7087; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7088; CHECK-NEXT:    vmflt.vf v0, v8, fa0
7089; CHECK-NEXT:    ret
7090  %head = insertelement <4 x double> poison, double %b, i32 0
7091  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7092  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
7093  ret <4 x i1> %1
7094}
7095
7096define <4 x i1> @fcmps_olt_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7097; CHECK-LABEL: fcmps_olt_fv_v4f64:
7098; CHECK:       # %bb.0:
7099; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7100; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
7101; CHECK-NEXT:    ret
7102  %head = insertelement <4 x double> poison, double %b, i32 0
7103  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7104  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
7105  ret <4 x i1> %1
7106}
7107
7108define <4 x i1> @fcmps_ole_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {
7109; CHECK-LABEL: fcmps_ole_vv_v4f64:
7110; CHECK:       # %bb.0:
7111; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7112; CHECK-NEXT:    vmfle.vv v0, v8, v10
7113; CHECK-NEXT:    ret
7114  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
7115  ret <4 x i1> %1
7116}
7117
7118define <4 x i1> @fcmps_ole_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7119; CHECK-LABEL: fcmps_ole_vf_v4f64:
7120; CHECK:       # %bb.0:
7121; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7122; CHECK-NEXT:    vmfle.vf v0, v8, fa0
7123; CHECK-NEXT:    ret
7124  %head = insertelement <4 x double> poison, double %b, i32 0
7125  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7126  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
7127  ret <4 x i1> %1
7128}
7129
7130define <4 x i1> @fcmps_ole_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7131; CHECK-LABEL: fcmps_ole_fv_v4f64:
7132; CHECK:       # %bb.0:
7133; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7134; CHECK-NEXT:    vmfge.vf v0, v8, fa0
7135; CHECK-NEXT:    ret
7136  %head = insertelement <4 x double> poison, double %b, i32 0
7137  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7138  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
7139  ret <4 x i1> %1
7140}
7141
7142define <4 x i1> @fcmps_one_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {
7143; CHECK-LABEL: fcmps_one_vv_v4f64:
7144; CHECK:       # %bb.0:
7145; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7146; CHECK-NEXT:    vmflt.vv v12, v8, v10
7147; CHECK-NEXT:    vmflt.vv v13, v10, v8
7148; CHECK-NEXT:    vmor.mm v0, v13, v12
7149; CHECK-NEXT:    ret
7150  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
7151  ret <4 x i1> %1
7152}
7153
7154define <4 x i1> @fcmps_one_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7155; CHECK-LABEL: fcmps_one_vf_v4f64:
7156; CHECK:       # %bb.0:
7157; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7158; CHECK-NEXT:    vmflt.vf v10, v8, fa0
7159; CHECK-NEXT:    vmfgt.vf v11, v8, fa0
7160; CHECK-NEXT:    vmor.mm v0, v11, v10
7161; CHECK-NEXT:    ret
7162  %head = insertelement <4 x double> poison, double %b, i32 0
7163  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7164  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
7165  ret <4 x i1> %1
7166}
7167
7168define <4 x i1> @fcmps_one_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7169; CHECK-LABEL: fcmps_one_fv_v4f64:
7170; CHECK:       # %bb.0:
7171; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7172; CHECK-NEXT:    vmfgt.vf v10, v8, fa0
7173; CHECK-NEXT:    vmflt.vf v11, v8, fa0
7174; CHECK-NEXT:    vmor.mm v0, v11, v10
7175; CHECK-NEXT:    ret
7176  %head = insertelement <4 x double> poison, double %b, i32 0
7177  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7178  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
7179  ret <4 x i1> %1
7180}
7181
7182define <4 x i1> @fcmps_ord_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {
7183; CHECK-LABEL: fcmps_ord_vv_v4f64:
7184; CHECK:       # %bb.0:
7185; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7186; CHECK-NEXT:    vmfle.vv v12, v10, v10
7187; CHECK-NEXT:    vmfle.vv v10, v8, v8
7188; CHECK-NEXT:    vmand.mm v0, v10, v12
7189; CHECK-NEXT:    ret
7190  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
7191  ret <4 x i1> %1
7192}
7193
7194define <4 x i1> @fcmps_ord_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7195; CHECK-LABEL: fcmps_ord_vf_v4f64:
7196; CHECK:       # %bb.0:
7197; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7198; CHECK-NEXT:    vfmv.v.f v10, fa0
7199; CHECK-NEXT:    vmfle.vf v12, v10, fa0
7200; CHECK-NEXT:    vmfle.vv v10, v8, v8
7201; CHECK-NEXT:    vmand.mm v0, v10, v12
7202; CHECK-NEXT:    ret
7203  %head = insertelement <4 x double> poison, double %b, i32 0
7204  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7205  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
7206  ret <4 x i1> %1
7207}
7208
7209define <4 x i1> @fcmps_ord_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7210; CHECK-LABEL: fcmps_ord_fv_v4f64:
7211; CHECK:       # %bb.0:
7212; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7213; CHECK-NEXT:    vfmv.v.f v10, fa0
7214; CHECK-NEXT:    vmfle.vf v12, v10, fa0
7215; CHECK-NEXT:    vmfle.vv v10, v8, v8
7216; CHECK-NEXT:    vmand.mm v0, v12, v10
7217; CHECK-NEXT:    ret
7218  %head = insertelement <4 x double> poison, double %b, i32 0
7219  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7220  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
7221  ret <4 x i1> %1
7222}
7223
7224define <4 x i1> @fcmps_ueq_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {
7225; CHECK-LABEL: fcmps_ueq_vv_v4f64:
7226; CHECK:       # %bb.0:
7227; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7228; CHECK-NEXT:    vmflt.vv v12, v8, v10
7229; CHECK-NEXT:    vmflt.vv v13, v10, v8
7230; CHECK-NEXT:    vmnor.mm v0, v13, v12
7231; CHECK-NEXT:    ret
7232  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
7233  ret <4 x i1> %1
7234}
7235
7236define <4 x i1> @fcmps_ueq_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7237; CHECK-LABEL: fcmps_ueq_vf_v4f64:
7238; CHECK:       # %bb.0:
7239; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7240; CHECK-NEXT:    vmflt.vf v10, v8, fa0
7241; CHECK-NEXT:    vmfgt.vf v11, v8, fa0
7242; CHECK-NEXT:    vmnor.mm v0, v11, v10
7243; CHECK-NEXT:    ret
7244  %head = insertelement <4 x double> poison, double %b, i32 0
7245  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7246  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
7247  ret <4 x i1> %1
7248}
7249
7250define <4 x i1> @fcmps_ueq_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7251; CHECK-LABEL: fcmps_ueq_fv_v4f64:
7252; CHECK:       # %bb.0:
7253; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7254; CHECK-NEXT:    vmfgt.vf v10, v8, fa0
7255; CHECK-NEXT:    vmflt.vf v11, v8, fa0
7256; CHECK-NEXT:    vmnor.mm v0, v11, v10
7257; CHECK-NEXT:    ret
7258  %head = insertelement <4 x double> poison, double %b, i32 0
7259  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7260  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
7261  ret <4 x i1> %1
7262}
7263
7264define <4 x i1> @fcmps_ugt_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {
7265; CHECK-LABEL: fcmps_ugt_vv_v4f64:
7266; CHECK:       # %bb.0:
7267; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7268; CHECK-NEXT:    vmfle.vv v12, v8, v10
7269; CHECK-NEXT:    vmnot.m v0, v12
7270; CHECK-NEXT:    ret
7271  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
7272  ret <4 x i1> %1
7273}
7274
7275define <4 x i1> @fcmps_ugt_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7276; CHECK-LABEL: fcmps_ugt_vf_v4f64:
7277; CHECK:       # %bb.0:
7278; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7279; CHECK-NEXT:    vmfle.vf v10, v8, fa0
7280; CHECK-NEXT:    vmnot.m v0, v10
7281; CHECK-NEXT:    ret
7282  %head = insertelement <4 x double> poison, double %b, i32 0
7283  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7284  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
7285  ret <4 x i1> %1
7286}
7287
7288define <4 x i1> @fcmps_ugt_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7289; CHECK-LABEL: fcmps_ugt_fv_v4f64:
7290; CHECK:       # %bb.0:
7291; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7292; CHECK-NEXT:    vmfge.vf v10, v8, fa0
7293; CHECK-NEXT:    vmnot.m v0, v10
7294; CHECK-NEXT:    ret
7295  %head = insertelement <4 x double> poison, double %b, i32 0
7296  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7297  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
7298  ret <4 x i1> %1
7299}
7300
7301define <4 x i1> @fcmps_uge_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {
7302; CHECK-LABEL: fcmps_uge_vv_v4f64:
7303; CHECK:       # %bb.0:
7304; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7305; CHECK-NEXT:    vmflt.vv v12, v8, v10
7306; CHECK-NEXT:    vmnot.m v0, v12
7307; CHECK-NEXT:    ret
7308  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
7309  ret <4 x i1> %1
7310}
7311
7312define <4 x i1> @fcmps_uge_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7313; CHECK-LABEL: fcmps_uge_vf_v4f64:
7314; CHECK:       # %bb.0:
7315; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7316; CHECK-NEXT:    vmflt.vf v10, v8, fa0
7317; CHECK-NEXT:    vmnot.m v0, v10
7318; CHECK-NEXT:    ret
7319  %head = insertelement <4 x double> poison, double %b, i32 0
7320  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7321  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
7322  ret <4 x i1> %1
7323}
7324
7325define <4 x i1> @fcmps_uge_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7326; CHECK-LABEL: fcmps_uge_fv_v4f64:
7327; CHECK:       # %bb.0:
7328; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7329; CHECK-NEXT:    vmfgt.vf v10, v8, fa0
7330; CHECK-NEXT:    vmnot.m v0, v10
7331; CHECK-NEXT:    ret
7332  %head = insertelement <4 x double> poison, double %b, i32 0
7333  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7334  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
7335  ret <4 x i1> %1
7336}
7337
7338define <4 x i1> @fcmps_ult_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {
7339; CHECK-LABEL: fcmps_ult_vv_v4f64:
7340; CHECK:       # %bb.0:
7341; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7342; CHECK-NEXT:    vmfle.vv v12, v10, v8
7343; CHECK-NEXT:    vmnot.m v0, v12
7344; CHECK-NEXT:    ret
7345  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
7346  ret <4 x i1> %1
7347}
7348
7349define <4 x i1> @fcmps_ult_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7350; CHECK-LABEL: fcmps_ult_vf_v4f64:
7351; CHECK:       # %bb.0:
7352; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7353; CHECK-NEXT:    vmfge.vf v10, v8, fa0
7354; CHECK-NEXT:    vmnot.m v0, v10
7355; CHECK-NEXT:    ret
7356  %head = insertelement <4 x double> poison, double %b, i32 0
7357  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7358  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
7359  ret <4 x i1> %1
7360}
7361
7362define <4 x i1> @fcmps_ult_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7363; CHECK-LABEL: fcmps_ult_fv_v4f64:
7364; CHECK:       # %bb.0:
7365; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7366; CHECK-NEXT:    vmfle.vf v10, v8, fa0
7367; CHECK-NEXT:    vmnot.m v0, v10
7368; CHECK-NEXT:    ret
7369  %head = insertelement <4 x double> poison, double %b, i32 0
7370  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7371  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
7372  ret <4 x i1> %1
7373}
7374
7375define <4 x i1> @fcmps_ule_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {
7376; CHECK-LABEL: fcmps_ule_vv_v4f64:
7377; CHECK:       # %bb.0:
7378; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7379; CHECK-NEXT:    vmflt.vv v12, v10, v8
7380; CHECK-NEXT:    vmnot.m v0, v12
7381; CHECK-NEXT:    ret
7382  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
7383  ret <4 x i1> %1
7384}
7385
7386define <4 x i1> @fcmps_ule_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7387; CHECK-LABEL: fcmps_ule_vf_v4f64:
7388; CHECK:       # %bb.0:
7389; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7390; CHECK-NEXT:    vmfgt.vf v10, v8, fa0
7391; CHECK-NEXT:    vmnot.m v0, v10
7392; CHECK-NEXT:    ret
7393  %head = insertelement <4 x double> poison, double %b, i32 0
7394  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7395  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
7396  ret <4 x i1> %1
7397}
7398
7399define <4 x i1> @fcmps_ule_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7400; CHECK-LABEL: fcmps_ule_fv_v4f64:
7401; CHECK:       # %bb.0:
7402; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7403; CHECK-NEXT:    vmflt.vf v10, v8, fa0
7404; CHECK-NEXT:    vmnot.m v0, v10
7405; CHECK-NEXT:    ret
7406  %head = insertelement <4 x double> poison, double %b, i32 0
7407  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7408  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
7409  ret <4 x i1> %1
7410}
7411
7412define <4 x i1> @fcmps_une_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {
7413; CHECK-LABEL: fcmps_une_vv_v4f64:
7414; CHECK:       # %bb.0:
7415; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7416; CHECK-NEXT:    vmfle.vv v12, v10, v8
7417; CHECK-NEXT:    vmfle.vv v13, v8, v10
7418; CHECK-NEXT:    vmnand.mm v0, v13, v12
7419; CHECK-NEXT:    ret
7420  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
7421  ret <4 x i1> %1
7422}
7423
7424define <4 x i1> @fcmps_une_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7425; CHECK-LABEL: fcmps_une_vf_v4f64:
7426; CHECK:       # %bb.0:
7427; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7428; CHECK-NEXT:    vmfge.vf v10, v8, fa0
7429; CHECK-NEXT:    vmfle.vf v11, v8, fa0
7430; CHECK-NEXT:    vmnand.mm v0, v11, v10
7431; CHECK-NEXT:    ret
7432  %head = insertelement <4 x double> poison, double %b, i32 0
7433  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7434  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
7435  ret <4 x i1> %1
7436}
7437
7438define <4 x i1> @fcmps_une_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7439; CHECK-LABEL: fcmps_une_fv_v4f64:
7440; CHECK:       # %bb.0:
7441; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7442; CHECK-NEXT:    vmfle.vf v10, v8, fa0
7443; CHECK-NEXT:    vmfge.vf v11, v8, fa0
7444; CHECK-NEXT:    vmnand.mm v0, v11, v10
7445; CHECK-NEXT:    ret
7446  %head = insertelement <4 x double> poison, double %b, i32 0
7447  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7448  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
7449  ret <4 x i1> %1
7450}
7451
7452define <4 x i1> @fcmps_uno_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {
7453; CHECK-LABEL: fcmps_uno_vv_v4f64:
7454; CHECK:       # %bb.0:
7455; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7456; CHECK-NEXT:    vmfle.vv v12, v10, v10
7457; CHECK-NEXT:    vmfle.vv v10, v8, v8
7458; CHECK-NEXT:    vmnot.m v8, v10
7459; CHECK-NEXT:    vmorn.mm v0, v8, v12
7460; CHECK-NEXT:    ret
7461  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
7462  ret <4 x i1> %1
7463}
7464
7465define <4 x i1> @fcmps_uno_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7466; CHECK-LABEL: fcmps_uno_vf_v4f64:
7467; CHECK:       # %bb.0:
7468; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7469; CHECK-NEXT:    vfmv.v.f v10, fa0
7470; CHECK-NEXT:    vmfle.vv v12, v8, v8
7471; CHECK-NEXT:    vmfle.vf v8, v10, fa0
7472; CHECK-NEXT:    vmnot.m v9, v12
7473; CHECK-NEXT:    vmorn.mm v0, v9, v8
7474; CHECK-NEXT:    ret
7475  %head = insertelement <4 x double> poison, double %b, i32 0
7476  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7477  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
7478  ret <4 x i1> %1
7479}
7480
7481define <4 x i1> @fcmps_uno_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7482; CHECK-LABEL: fcmps_uno_fv_v4f64:
7483; CHECK:       # %bb.0:
7484; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
7485; CHECK-NEXT:    vfmv.v.f v10, fa0
7486; CHECK-NEXT:    vmfle.vf v12, v10, fa0
7487; CHECK-NEXT:    vmnot.m v10, v12
7488; CHECK-NEXT:    vmfle.vv v11, v8, v8
7489; CHECK-NEXT:    vmorn.mm v0, v10, v11
7490; CHECK-NEXT:    ret
7491  %head = insertelement <4 x double> poison, double %b, i32 0
7492  %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer
7493  %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
7494  ret <4 x i1> %1
7495}
7496
7497declare <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double>, <8 x double>, metadata, metadata)
7498define <8 x i1> @fcmps_oeq_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {
7499; CHECK-LABEL: fcmps_oeq_vv_v8f64:
7500; CHECK:       # %bb.0:
7501; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7502; CHECK-NEXT:    vmfle.vv v16, v12, v8
7503; CHECK-NEXT:    vmfle.vv v17, v8, v12
7504; CHECK-NEXT:    vmand.mm v0, v17, v16
7505; CHECK-NEXT:    ret
7506  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
7507  ret <8 x i1> %1
7508}
7509
7510define <8 x i1> @fcmps_oeq_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7511; CHECK-LABEL: fcmps_oeq_vf_v8f64:
7512; CHECK:       # %bb.0:
7513; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7514; CHECK-NEXT:    vmfge.vf v12, v8, fa0
7515; CHECK-NEXT:    vmfle.vf v13, v8, fa0
7516; CHECK-NEXT:    vmand.mm v0, v13, v12
7517; CHECK-NEXT:    ret
7518  %head = insertelement <8 x double> poison, double %b, i32 0
7519  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7520  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
7521  ret <8 x i1> %1
7522}
7523
7524define <8 x i1> @fcmps_oeq_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7525; CHECK-LABEL: fcmps_oeq_fv_v8f64:
7526; CHECK:       # %bb.0:
7527; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7528; CHECK-NEXT:    vmfle.vf v12, v8, fa0
7529; CHECK-NEXT:    vmfge.vf v13, v8, fa0
7530; CHECK-NEXT:    vmand.mm v0, v13, v12
7531; CHECK-NEXT:    ret
7532  %head = insertelement <8 x double> poison, double %b, i32 0
7533  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7534  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
7535  ret <8 x i1> %1
7536}
7537
7538define <8 x i1> @fcmps_ogt_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {
7539; CHECK-LABEL: fcmps_ogt_vv_v8f64:
7540; CHECK:       # %bb.0:
7541; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7542; CHECK-NEXT:    vmflt.vv v0, v12, v8
7543; CHECK-NEXT:    ret
7544  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
7545  ret <8 x i1> %1
7546}
7547
7548define <8 x i1> @fcmps_ogt_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7549; CHECK-LABEL: fcmps_ogt_vf_v8f64:
7550; CHECK:       # %bb.0:
7551; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7552; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
7553; CHECK-NEXT:    ret
7554  %head = insertelement <8 x double> poison, double %b, i32 0
7555  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7556  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
7557  ret <8 x i1> %1
7558}
7559
7560define <8 x i1> @fcmps_ogt_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7561; CHECK-LABEL: fcmps_ogt_fv_v8f64:
7562; CHECK:       # %bb.0:
7563; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7564; CHECK-NEXT:    vmflt.vf v0, v8, fa0
7565; CHECK-NEXT:    ret
7566  %head = insertelement <8 x double> poison, double %b, i32 0
7567  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7568  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
7569  ret <8 x i1> %1
7570}
7571
7572define <8 x i1> @fcmps_oge_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {
7573; CHECK-LABEL: fcmps_oge_vv_v8f64:
7574; CHECK:       # %bb.0:
7575; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7576; CHECK-NEXT:    vmfle.vv v0, v12, v8
7577; CHECK-NEXT:    ret
7578  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
7579  ret <8 x i1> %1
7580}
7581
7582define <8 x i1> @fcmps_oge_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7583; CHECK-LABEL: fcmps_oge_vf_v8f64:
7584; CHECK:       # %bb.0:
7585; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7586; CHECK-NEXT:    vmfge.vf v0, v8, fa0
7587; CHECK-NEXT:    ret
7588  %head = insertelement <8 x double> poison, double %b, i32 0
7589  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7590  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
7591  ret <8 x i1> %1
7592}
7593
7594define <8 x i1> @fcmps_oge_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7595; CHECK-LABEL: fcmps_oge_fv_v8f64:
7596; CHECK:       # %bb.0:
7597; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7598; CHECK-NEXT:    vmfle.vf v0, v8, fa0
7599; CHECK-NEXT:    ret
7600  %head = insertelement <8 x double> poison, double %b, i32 0
7601  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7602  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
7603  ret <8 x i1> %1
7604}
7605
7606define <8 x i1> @fcmps_olt_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {
7607; CHECK-LABEL: fcmps_olt_vv_v8f64:
7608; CHECK:       # %bb.0:
7609; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7610; CHECK-NEXT:    vmflt.vv v0, v8, v12
7611; CHECK-NEXT:    ret
7612  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
7613  ret <8 x i1> %1
7614}
7615
7616define <8 x i1> @fcmps_olt_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7617; CHECK-LABEL: fcmps_olt_vf_v8f64:
7618; CHECK:       # %bb.0:
7619; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7620; CHECK-NEXT:    vmflt.vf v0, v8, fa0
7621; CHECK-NEXT:    ret
7622  %head = insertelement <8 x double> poison, double %b, i32 0
7623  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7624  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
7625  ret <8 x i1> %1
7626}
7627
7628define <8 x i1> @fcmps_olt_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7629; CHECK-LABEL: fcmps_olt_fv_v8f64:
7630; CHECK:       # %bb.0:
7631; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7632; CHECK-NEXT:    vmfgt.vf v0, v8, fa0
7633; CHECK-NEXT:    ret
7634  %head = insertelement <8 x double> poison, double %b, i32 0
7635  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7636  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
7637  ret <8 x i1> %1
7638}
7639
7640define <8 x i1> @fcmps_ole_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {
7641; CHECK-LABEL: fcmps_ole_vv_v8f64:
7642; CHECK:       # %bb.0:
7643; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7644; CHECK-NEXT:    vmfle.vv v0, v8, v12
7645; CHECK-NEXT:    ret
7646  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
7647  ret <8 x i1> %1
7648}
7649
7650define <8 x i1> @fcmps_ole_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7651; CHECK-LABEL: fcmps_ole_vf_v8f64:
7652; CHECK:       # %bb.0:
7653; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7654; CHECK-NEXT:    vmfle.vf v0, v8, fa0
7655; CHECK-NEXT:    ret
7656  %head = insertelement <8 x double> poison, double %b, i32 0
7657  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7658  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
7659  ret <8 x i1> %1
7660}
7661
7662define <8 x i1> @fcmps_ole_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7663; CHECK-LABEL: fcmps_ole_fv_v8f64:
7664; CHECK:       # %bb.0:
7665; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7666; CHECK-NEXT:    vmfge.vf v0, v8, fa0
7667; CHECK-NEXT:    ret
7668  %head = insertelement <8 x double> poison, double %b, i32 0
7669  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7670  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
7671  ret <8 x i1> %1
7672}
7673
7674define <8 x i1> @fcmps_one_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {
7675; CHECK-LABEL: fcmps_one_vv_v8f64:
7676; CHECK:       # %bb.0:
7677; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7678; CHECK-NEXT:    vmflt.vv v16, v8, v12
7679; CHECK-NEXT:    vmflt.vv v17, v12, v8
7680; CHECK-NEXT:    vmor.mm v0, v17, v16
7681; CHECK-NEXT:    ret
7682  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
7683  ret <8 x i1> %1
7684}
7685
7686define <8 x i1> @fcmps_one_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7687; CHECK-LABEL: fcmps_one_vf_v8f64:
7688; CHECK:       # %bb.0:
7689; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7690; CHECK-NEXT:    vmflt.vf v12, v8, fa0
7691; CHECK-NEXT:    vmfgt.vf v13, v8, fa0
7692; CHECK-NEXT:    vmor.mm v0, v13, v12
7693; CHECK-NEXT:    ret
7694  %head = insertelement <8 x double> poison, double %b, i32 0
7695  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7696  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
7697  ret <8 x i1> %1
7698}
7699
7700define <8 x i1> @fcmps_one_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7701; CHECK-LABEL: fcmps_one_fv_v8f64:
7702; CHECK:       # %bb.0:
7703; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7704; CHECK-NEXT:    vmfgt.vf v12, v8, fa0
7705; CHECK-NEXT:    vmflt.vf v13, v8, fa0
7706; CHECK-NEXT:    vmor.mm v0, v13, v12
7707; CHECK-NEXT:    ret
7708  %head = insertelement <8 x double> poison, double %b, i32 0
7709  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7710  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
7711  ret <8 x i1> %1
7712}
7713
7714define <8 x i1> @fcmps_ord_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {
7715; CHECK-LABEL: fcmps_ord_vv_v8f64:
7716; CHECK:       # %bb.0:
7717; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7718; CHECK-NEXT:    vmfle.vv v16, v12, v12
7719; CHECK-NEXT:    vmfle.vv v12, v8, v8
7720; CHECK-NEXT:    vmand.mm v0, v12, v16
7721; CHECK-NEXT:    ret
7722  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
7723  ret <8 x i1> %1
7724}
7725
7726define <8 x i1> @fcmps_ord_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7727; CHECK-LABEL: fcmps_ord_vf_v8f64:
7728; CHECK:       # %bb.0:
7729; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7730; CHECK-NEXT:    vfmv.v.f v12, fa0
7731; CHECK-NEXT:    vmfle.vf v16, v12, fa0
7732; CHECK-NEXT:    vmfle.vv v12, v8, v8
7733; CHECK-NEXT:    vmand.mm v0, v12, v16
7734; CHECK-NEXT:    ret
7735  %head = insertelement <8 x double> poison, double %b, i32 0
7736  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7737  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
7738  ret <8 x i1> %1
7739}
7740
7741define <8 x i1> @fcmps_ord_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7742; CHECK-LABEL: fcmps_ord_fv_v8f64:
7743; CHECK:       # %bb.0:
7744; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7745; CHECK-NEXT:    vfmv.v.f v12, fa0
7746; CHECK-NEXT:    vmfle.vf v16, v12, fa0
7747; CHECK-NEXT:    vmfle.vv v12, v8, v8
7748; CHECK-NEXT:    vmand.mm v0, v16, v12
7749; CHECK-NEXT:    ret
7750  %head = insertelement <8 x double> poison, double %b, i32 0
7751  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7752  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
7753  ret <8 x i1> %1
7754}
7755
7756define <8 x i1> @fcmps_ueq_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {
7757; CHECK-LABEL: fcmps_ueq_vv_v8f64:
7758; CHECK:       # %bb.0:
7759; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7760; CHECK-NEXT:    vmflt.vv v16, v8, v12
7761; CHECK-NEXT:    vmflt.vv v17, v12, v8
7762; CHECK-NEXT:    vmnor.mm v0, v17, v16
7763; CHECK-NEXT:    ret
7764  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
7765  ret <8 x i1> %1
7766}
7767
7768define <8 x i1> @fcmps_ueq_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7769; CHECK-LABEL: fcmps_ueq_vf_v8f64:
7770; CHECK:       # %bb.0:
7771; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7772; CHECK-NEXT:    vmflt.vf v12, v8, fa0
7773; CHECK-NEXT:    vmfgt.vf v13, v8, fa0
7774; CHECK-NEXT:    vmnor.mm v0, v13, v12
7775; CHECK-NEXT:    ret
7776  %head = insertelement <8 x double> poison, double %b, i32 0
7777  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7778  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
7779  ret <8 x i1> %1
7780}
7781
7782define <8 x i1> @fcmps_ueq_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7783; CHECK-LABEL: fcmps_ueq_fv_v8f64:
7784; CHECK:       # %bb.0:
7785; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7786; CHECK-NEXT:    vmfgt.vf v12, v8, fa0
7787; CHECK-NEXT:    vmflt.vf v13, v8, fa0
7788; CHECK-NEXT:    vmnor.mm v0, v13, v12
7789; CHECK-NEXT:    ret
7790  %head = insertelement <8 x double> poison, double %b, i32 0
7791  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7792  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
7793  ret <8 x i1> %1
7794}
7795
7796define <8 x i1> @fcmps_ugt_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {
7797; CHECK-LABEL: fcmps_ugt_vv_v8f64:
7798; CHECK:       # %bb.0:
7799; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7800; CHECK-NEXT:    vmfle.vv v16, v8, v12
7801; CHECK-NEXT:    vmnot.m v0, v16
7802; CHECK-NEXT:    ret
7803  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
7804  ret <8 x i1> %1
7805}
7806
7807define <8 x i1> @fcmps_ugt_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7808; CHECK-LABEL: fcmps_ugt_vf_v8f64:
7809; CHECK:       # %bb.0:
7810; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7811; CHECK-NEXT:    vmfle.vf v12, v8, fa0
7812; CHECK-NEXT:    vmnot.m v0, v12
7813; CHECK-NEXT:    ret
7814  %head = insertelement <8 x double> poison, double %b, i32 0
7815  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7816  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
7817  ret <8 x i1> %1
7818}
7819
7820define <8 x i1> @fcmps_ugt_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7821; CHECK-LABEL: fcmps_ugt_fv_v8f64:
7822; CHECK:       # %bb.0:
7823; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7824; CHECK-NEXT:    vmfge.vf v12, v8, fa0
7825; CHECK-NEXT:    vmnot.m v0, v12
7826; CHECK-NEXT:    ret
7827  %head = insertelement <8 x double> poison, double %b, i32 0
7828  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7829  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
7830  ret <8 x i1> %1
7831}
7832
7833define <8 x i1> @fcmps_uge_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {
7834; CHECK-LABEL: fcmps_uge_vv_v8f64:
7835; CHECK:       # %bb.0:
7836; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7837; CHECK-NEXT:    vmflt.vv v16, v8, v12
7838; CHECK-NEXT:    vmnot.m v0, v16
7839; CHECK-NEXT:    ret
7840  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
7841  ret <8 x i1> %1
7842}
7843
7844define <8 x i1> @fcmps_uge_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7845; CHECK-LABEL: fcmps_uge_vf_v8f64:
7846; CHECK:       # %bb.0:
7847; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7848; CHECK-NEXT:    vmflt.vf v12, v8, fa0
7849; CHECK-NEXT:    vmnot.m v0, v12
7850; CHECK-NEXT:    ret
7851  %head = insertelement <8 x double> poison, double %b, i32 0
7852  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7853  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
7854  ret <8 x i1> %1
7855}
7856
7857define <8 x i1> @fcmps_uge_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7858; CHECK-LABEL: fcmps_uge_fv_v8f64:
7859; CHECK:       # %bb.0:
7860; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7861; CHECK-NEXT:    vmfgt.vf v12, v8, fa0
7862; CHECK-NEXT:    vmnot.m v0, v12
7863; CHECK-NEXT:    ret
7864  %head = insertelement <8 x double> poison, double %b, i32 0
7865  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7866  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
7867  ret <8 x i1> %1
7868}
7869
7870define <8 x i1> @fcmps_ult_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {
7871; CHECK-LABEL: fcmps_ult_vv_v8f64:
7872; CHECK:       # %bb.0:
7873; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7874; CHECK-NEXT:    vmfle.vv v16, v12, v8
7875; CHECK-NEXT:    vmnot.m v0, v16
7876; CHECK-NEXT:    ret
7877  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
7878  ret <8 x i1> %1
7879}
7880
7881define <8 x i1> @fcmps_ult_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7882; CHECK-LABEL: fcmps_ult_vf_v8f64:
7883; CHECK:       # %bb.0:
7884; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7885; CHECK-NEXT:    vmfge.vf v12, v8, fa0
7886; CHECK-NEXT:    vmnot.m v0, v12
7887; CHECK-NEXT:    ret
7888  %head = insertelement <8 x double> poison, double %b, i32 0
7889  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7890  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
7891  ret <8 x i1> %1
7892}
7893
7894define <8 x i1> @fcmps_ult_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7895; CHECK-LABEL: fcmps_ult_fv_v8f64:
7896; CHECK:       # %bb.0:
7897; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7898; CHECK-NEXT:    vmfle.vf v12, v8, fa0
7899; CHECK-NEXT:    vmnot.m v0, v12
7900; CHECK-NEXT:    ret
7901  %head = insertelement <8 x double> poison, double %b, i32 0
7902  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7903  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
7904  ret <8 x i1> %1
7905}
7906
7907define <8 x i1> @fcmps_ule_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {
7908; CHECK-LABEL: fcmps_ule_vv_v8f64:
7909; CHECK:       # %bb.0:
7910; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7911; CHECK-NEXT:    vmflt.vv v16, v12, v8
7912; CHECK-NEXT:    vmnot.m v0, v16
7913; CHECK-NEXT:    ret
7914  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
7915  ret <8 x i1> %1
7916}
7917
7918define <8 x i1> @fcmps_ule_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7919; CHECK-LABEL: fcmps_ule_vf_v8f64:
7920; CHECK:       # %bb.0:
7921; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7922; CHECK-NEXT:    vmfgt.vf v12, v8, fa0
7923; CHECK-NEXT:    vmnot.m v0, v12
7924; CHECK-NEXT:    ret
7925  %head = insertelement <8 x double> poison, double %b, i32 0
7926  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7927  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
7928  ret <8 x i1> %1
7929}
7930
7931define <8 x i1> @fcmps_ule_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7932; CHECK-LABEL: fcmps_ule_fv_v8f64:
7933; CHECK:       # %bb.0:
7934; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7935; CHECK-NEXT:    vmflt.vf v12, v8, fa0
7936; CHECK-NEXT:    vmnot.m v0, v12
7937; CHECK-NEXT:    ret
7938  %head = insertelement <8 x double> poison, double %b, i32 0
7939  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7940  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
7941  ret <8 x i1> %1
7942}
7943
7944define <8 x i1> @fcmps_une_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {
7945; CHECK-LABEL: fcmps_une_vv_v8f64:
7946; CHECK:       # %bb.0:
7947; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7948; CHECK-NEXT:    vmfle.vv v16, v12, v8
7949; CHECK-NEXT:    vmfle.vv v17, v8, v12
7950; CHECK-NEXT:    vmnand.mm v0, v17, v16
7951; CHECK-NEXT:    ret
7952  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
7953  ret <8 x i1> %1
7954}
7955
7956define <8 x i1> @fcmps_une_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7957; CHECK-LABEL: fcmps_une_vf_v8f64:
7958; CHECK:       # %bb.0:
7959; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7960; CHECK-NEXT:    vmfge.vf v12, v8, fa0
7961; CHECK-NEXT:    vmfle.vf v13, v8, fa0
7962; CHECK-NEXT:    vmnand.mm v0, v13, v12
7963; CHECK-NEXT:    ret
7964  %head = insertelement <8 x double> poison, double %b, i32 0
7965  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7966  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
7967  ret <8 x i1> %1
7968}
7969
7970define <8 x i1> @fcmps_une_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7971; CHECK-LABEL: fcmps_une_fv_v8f64:
7972; CHECK:       # %bb.0:
7973; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7974; CHECK-NEXT:    vmfle.vf v12, v8, fa0
7975; CHECK-NEXT:    vmfge.vf v13, v8, fa0
7976; CHECK-NEXT:    vmnand.mm v0, v13, v12
7977; CHECK-NEXT:    ret
7978  %head = insertelement <8 x double> poison, double %b, i32 0
7979  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
7980  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
7981  ret <8 x i1> %1
7982}
7983
7984define <8 x i1> @fcmps_uno_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {
7985; CHECK-LABEL: fcmps_uno_vv_v8f64:
7986; CHECK:       # %bb.0:
7987; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
7988; CHECK-NEXT:    vmfle.vv v16, v12, v12
7989; CHECK-NEXT:    vmfle.vv v12, v8, v8
7990; CHECK-NEXT:    vmnot.m v8, v12
7991; CHECK-NEXT:    vmorn.mm v0, v8, v16
7992; CHECK-NEXT:    ret
7993  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
7994  ret <8 x i1> %1
7995}
7996
7997define <8 x i1> @fcmps_uno_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7998; CHECK-LABEL: fcmps_uno_vf_v8f64:
7999; CHECK:       # %bb.0:
8000; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
8001; CHECK-NEXT:    vfmv.v.f v12, fa0
8002; CHECK-NEXT:    vmfle.vv v16, v8, v8
8003; CHECK-NEXT:    vmfle.vf v8, v12, fa0
8004; CHECK-NEXT:    vmnot.m v9, v16
8005; CHECK-NEXT:    vmorn.mm v0, v9, v8
8006; CHECK-NEXT:    ret
8007  %head = insertelement <8 x double> poison, double %b, i32 0
8008  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
8009  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
8010  ret <8 x i1> %1
8011}
8012
8013define <8 x i1> @fcmps_uno_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
8014; CHECK-LABEL: fcmps_uno_fv_v8f64:
8015; CHECK:       # %bb.0:
8016; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
8017; CHECK-NEXT:    vfmv.v.f v12, fa0
8018; CHECK-NEXT:    vmfle.vf v16, v12, fa0
8019; CHECK-NEXT:    vmnot.m v12, v16
8020; CHECK-NEXT:    vmfle.vv v13, v8, v8
8021; CHECK-NEXT:    vmorn.mm v0, v12, v13
8022; CHECK-NEXT:    ret
8023  %head = insertelement <8 x double> poison, double %b, i32 0
8024  %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer
8025  %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
8026  ret <8 x i1> %1
8027}
8028