Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / fixed-vectors-vfcmps-constrained-sdnode.ll
blob83037baf3fabcfd7f1e7c51f6c1761e5e3ff9af5
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zvfh,+v -target-abi=ilp32d \
3 ; RUN:     -verify-machineinstrs < %s | FileCheck %s
4 ; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+zvfh,+v -target-abi=lp64d \
5 ; RUN:     -verify-machineinstrs < %s | FileCheck %s
7 declare <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half>, <1 x half>, metadata, metadata)
8 define <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
20 define <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
34 define <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
48 define <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
58 define <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
70 define <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
82 define <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
92 define <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
104 define <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
116 define <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
126 define <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
138 define <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
150 define <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
160 define <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
172 define <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
184 define <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
196 define <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
210 define <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
224 define <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
236 define <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
251 define <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
266 define <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
278 define <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
292 define <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
306 define <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
317 define <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
330 define <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
343 define <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
354 define <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
367 define <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
380 define <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
391 define <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
404 define <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
417 define <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
428 define <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
441 define <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
454 define <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
466 define <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
480 define <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
494 define <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
507 define <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.vf v9, v9, fa0
513 ; CHECK-NEXT:    vmfle.vv v8, v8, v8
514 ; CHECK-NEXT:    vmnot.m v8, v8
515 ; CHECK-NEXT:    vmorn.mm v0, v8, v9
516 ; CHECK-NEXT:    ret
517   %head = insertelement <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
523 define <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
539 declare <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half>, <2 x half>, metadata, metadata)
540 define <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
552 define <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
566 define <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
580 define <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
590 define <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
602 define <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
614 define <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
624 define <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
636 define <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
648 define <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
658 define <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
670 define <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
682 define <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
692 define <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
704 define <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
716 define <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
728 define <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
742 define <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
756 define <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
768 define <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
783 define <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
798 define <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
810 define <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
824 define <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
838 define <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
849 define <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
862 define <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
875 define <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
886 define <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
899 define <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
912 define <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
923 define <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
936 define <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
949 define <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
960 define <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
973 define <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
986 define <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
998 define <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
1012 define <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
1026 define <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
1039 define <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.vf v9, v9, fa0
1045 ; CHECK-NEXT:    vmfle.vv v8, v8, v8
1046 ; CHECK-NEXT:    vmnot.m v8, v8
1047 ; CHECK-NEXT:    vmorn.mm v0, v8, v9
1048 ; CHECK-NEXT:    ret
1049   %head = insertelement <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
1055 define <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
1071 declare <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half>, <4 x half>, metadata, metadata)
1072 define <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
1084 define <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
1098 define <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
1112 define <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
1122 define <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
1134 define <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
1146 define <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
1156 define <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
1168 define <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
1180 define <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
1190 define <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
1202 define <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
1214 define <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
1224 define <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
1236 define <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
1248 define <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
1260 define <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
1274 define <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
1288 define <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
1300 define <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
1315 define <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
1330 define <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
1342 define <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
1356 define <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
1370 define <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
1381 define <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
1394 define <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
1407 define <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
1418 define <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
1431 define <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
1444 define <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
1455 define <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
1468 define <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
1481 define <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
1492 define <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
1505 define <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
1518 define <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
1530 define <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
1544 define <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
1558 define <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
1571 define <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.vf v9, v9, fa0
1577 ; CHECK-NEXT:    vmfle.vv v8, v8, v8
1578 ; CHECK-NEXT:    vmnot.m v8, v8
1579 ; CHECK-NEXT:    vmorn.mm v0, v8, v9
1580 ; CHECK-NEXT:    ret
1581   %head = insertelement <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
1587 define <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
1603 declare <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half>, <8 x half>, metadata, metadata)
1604 define <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
1616 define <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
1630 define <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
1644 define <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
1654 define <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
1666 define <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
1678 define <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
1688 define <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
1700 define <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
1712 define <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
1722 define <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
1734 define <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
1746 define <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
1756 define <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
1768 define <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
1780 define <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
1792 define <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
1806 define <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
1820 define <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
1832 define <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
1847 define <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
1862 define <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
1874 define <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
1888 define <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
1902 define <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
1913 define <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
1926 define <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
1939 define <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
1950 define <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
1963 define <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
1976 define <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
1987 define <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
2000 define <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
2013 define <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
2024 define <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
2037 define <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
2050 define <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
2062 define <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
2076 define <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
2090 define <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
2103 define <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.vf v9, v9, fa0
2109 ; CHECK-NEXT:    vmfle.vv v8, v8, v8
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
2119 define <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
2135 declare <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half>, <16 x half>, metadata, metadata)
2136 define <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
2148 define <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
2162 define <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
2176 define <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
2186 define <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
2198 define <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
2210 define <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
2220 define <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
2232 define <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
2244 define <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
2254 define <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
2266 define <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
2278 define <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
2288 define <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
2300 define <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
2312 define <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
2324 define <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
2338 define <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
2352 define <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
2364 define <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
2379 define <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
2394 define <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
2406 define <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
2420 define <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
2434 define <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
2445 define <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
2458 define <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
2471 define <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
2482 define <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
2495 define <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
2508 define <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
2519 define <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
2532 define <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
2545 define <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
2556 define <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
2569 define <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
2582 define <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
2594 define <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
2608 define <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
2622 define <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
2635 define <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.vf v12, v10, fa0
2641 ; CHECK-NEXT:    vmfle.vv v10, v8, v8
2642 ; CHECK-NEXT:    vmnot.m v8, v10
2643 ; CHECK-NEXT:    vmorn.mm v0, v8, v12
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
2651 define <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
2667 declare <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half>, <32 x half>, metadata, metadata)
2668 define <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
2681 define <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
2696 define <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
2711 define <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
2722 define <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
2735 define <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
2748 define <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
2759 define <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
2772 define <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
2785 define <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
2796 define <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
2809 define <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
2822 define <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
2833 define <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
2846 define <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
2859 define <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
2872 define <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
2887 define <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
2902 define <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
2915 define <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
2931 define <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
2947 define <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
2960 define <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
2975 define <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
2990 define <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
3002 define <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
3016 define <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
3030 define <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
3042 define <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
3056 define <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
3070 define <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
3082 define <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
3096 define <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
3110 define <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
3122 define <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
3136 define <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
3150 define <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
3163 define <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
3178 define <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
3193 define <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
3207 define <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.vf v16, v12, fa0
3214 ; CHECK-NEXT:    vmfle.vv v12, v8, v8
3215 ; CHECK-NEXT:    vmnot.m v8, v12
3216 ; CHECK-NEXT:    vmorn.mm v0, v8, v16
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
3224 define <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
3241 declare <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float>, <1 x float>, metadata, metadata)
3242 define <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
3254 define <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
3268 define <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
3282 define <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
3292 define <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
3304 define <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
3316 define <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
3326 define <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
3338 define <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
3350 define <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
3360 define <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
3372 define <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
3384 define <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
3394 define <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
3406 define <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
3418 define <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
3430 define <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
3444 define <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
3458 define <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
3470 define <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
3485 define <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
3500 define <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
3512 define <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
3526 define <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
3540 define <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
3551 define <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
3564 define <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
3577 define <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
3588 define <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
3601 define <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
3614 define <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
3625 define <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
3638 define <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
3651 define <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
3662 define <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
3675 define <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
3688 define <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
3700 define <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
3714 define <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
3728 define <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
3741 define <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.vf v9, v9, fa0
3747 ; CHECK-NEXT:    vmfle.vv v8, v8, v8
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
3757 define <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
3773 declare <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float>, <2 x float>, metadata, metadata)
3774 define <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
3786 define <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
3800 define <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
3814 define <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
3824 define <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
3836 define <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
3848 define <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
3858 define <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
3870 define <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
3882 define <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
3892 define <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
3904 define <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
3916 define <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
3926 define <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
3938 define <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
3950 define <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
3962 define <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
3976 define <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
3990 define <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
4002 define <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
4017 define <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
4032 define <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
4044 define <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
4058 define <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
4072 define <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
4083 define <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
4096 define <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
4109 define <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
4120 define <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
4133 define <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
4146 define <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
4157 define <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
4170 define <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
4183 define <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
4194 define <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
4207 define <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
4220 define <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
4232 define <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
4246 define <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
4260 define <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
4273 define <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.vf v9, v9, fa0
4279 ; CHECK-NEXT:    vmfle.vv v8, v8, v8
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
4289 define <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
4305 declare <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float>, <4 x float>, metadata, metadata)
4306 define <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
4318 define <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
4332 define <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
4346 define <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
4356 define <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
4368 define <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
4380 define <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
4390 define <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
4402 define <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
4414 define <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
4424 define <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
4436 define <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
4448 define <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
4458 define <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
4470 define <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
4482 define <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
4494 define <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
4508 define <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
4522 define <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
4534 define <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
4549 define <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
4564 define <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
4576 define <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
4590 define <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
4604 define <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
4615 define <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
4628 define <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
4641 define <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
4652 define <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
4665 define <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
4678 define <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
4689 define <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
4702 define <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
4715 define <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
4726 define <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
4739 define <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
4752 define <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
4764 define <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
4778 define <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
4792 define <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
4805 define <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.vf v9, v9, fa0
4811 ; CHECK-NEXT:    vmfle.vv v8, v8, v8
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
4821 define <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
4837 declare <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float>, <8 x float>, metadata, metadata)
4838 define <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
4850 define <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
4864 define <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
4878 define <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
4888 define <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
4900 define <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
4912 define <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
4922 define <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
4934 define <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
4946 define <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
4956 define <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
4968 define <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
4980 define <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
4990 define <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
5002 define <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
5014 define <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
5026 define <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
5040 define <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
5054 define <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
5066 define <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
5081 define <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
5096 define <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
5108 define <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
5122 define <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
5136 define <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
5147 define <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
5160 define <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
5173 define <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
5184 define <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
5197 define <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
5210 define <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
5221 define <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
5234 define <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
5247 define <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
5258 define <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
5271 define <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
5284 define <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
5296 define <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
5310 define <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
5324 define <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
5337 define <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.vf v12, v10, fa0
5343 ; CHECK-NEXT:    vmfle.vv v10, v8, v8
5344 ; CHECK-NEXT:    vmnot.m v8, v10
5345 ; CHECK-NEXT:    vmorn.mm v0, v8, v12
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
5353 define <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
5369 declare <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float>, <16 x float>, metadata, metadata)
5370 define <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
5382 define <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
5396 define <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
5410 define <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
5420 define <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
5432 define <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
5444 define <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
5454 define <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
5466 define <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
5478 define <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
5488 define <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
5500 define <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
5512 define <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
5522 define <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
5534 define <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
5546 define <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
5558 define <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
5572 define <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
5586 define <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
5598 define <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
5613 define <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
5628 define <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
5640 define <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
5654 define <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
5668 define <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
5679 define <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
5692 define <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
5705 define <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
5716 define <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
5729 define <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
5742 define <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
5753 define <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
5766 define <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
5779 define <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
5790 define <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
5803 define <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
5816 define <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
5828 define <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
5842 define <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
5856 define <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
5869 define <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.vf v16, v12, fa0
5875 ; CHECK-NEXT:    vmfle.vv v12, v8, v8
5876 ; CHECK-NEXT:    vmnot.m v8, v12
5877 ; CHECK-NEXT:    vmorn.mm v0, v8, v16
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
5885 define <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
5901 declare <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double>, <1 x double>, metadata, metadata)
5902 define <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
5914 define <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
5928 define <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
5942 define <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
5952 define <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
5964 define <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
5976 define <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
5986 define <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
5998 define <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
6010 define <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
6020 define <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
6032 define <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
6044 define <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
6054 define <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
6066 define <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
6078 define <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
6090 define <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
6104 define <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
6118 define <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
6130 define <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
6145 define <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
6160 define <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
6172 define <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
6186 define <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
6200 define <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
6211 define <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
6224 define <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
6237 define <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
6248 define <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
6261 define <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
6274 define <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
6285 define <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
6298 define <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
6311 define <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
6322 define <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
6335 define <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
6348 define <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
6360 define <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
6374 define <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
6388 define <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
6401 define <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.vf v9, v9, fa0
6407 ; CHECK-NEXT:    vmfle.vv v8, v8, v8
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
6417 define <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
6433 declare <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double>, <2 x double>, metadata, metadata)
6434 define <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
6446 define <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
6460 define <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
6474 define <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
6484 define <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
6496 define <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
6508 define <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
6518 define <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
6530 define <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
6542 define <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
6552 define <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
6564 define <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
6576 define <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
6586 define <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
6598 define <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
6610 define <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
6622 define <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
6636 define <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
6650 define <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
6662 define <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
6677 define <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
6692 define <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
6704 define <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
6718 define <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
6732 define <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
6743 define <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
6756 define <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
6769 define <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
6780 define <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
6793 define <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
6806 define <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
6817 define <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
6830 define <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
6843 define <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
6854 define <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
6867 define <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
6880 define <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
6892 define <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
6906 define <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
6920 define <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
6933 define <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.vf v9, v9, fa0
6939 ; CHECK-NEXT:    vmfle.vv v8, v8, v8
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
6949 define <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
6965 declare <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double>, <4 x double>, metadata, metadata)
6966 define <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
6978 define <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
6992 define <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
7006 define <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
7016 define <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
7028 define <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
7040 define <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
7050 define <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
7062 define <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
7074 define <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
7084 define <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
7096 define <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
7108 define <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
7118 define <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
7130 define <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
7142 define <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
7154 define <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
7168 define <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
7182 define <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
7194 define <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
7209 define <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
7224 define <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
7236 define <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
7250 define <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
7264 define <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
7275 define <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
7288 define <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
7301 define <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
7312 define <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
7325 define <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
7338 define <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
7349 define <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
7362 define <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
7375 define <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
7386 define <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
7399 define <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
7412 define <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
7424 define <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
7438 define <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
7452 define <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
7465 define <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.vf v12, v10, fa0
7471 ; CHECK-NEXT:    vmfle.vv v10, v8, v8
7472 ; CHECK-NEXT:    vmnot.m v8, v10
7473 ; CHECK-NEXT:    vmorn.mm v0, v8, v12
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
7481 define <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
7497 declare <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double>, <8 x double>, metadata, metadata)
7498 define <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
7510 define <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
7524 define <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
7538 define <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
7548 define <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
7560 define <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
7572 define <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
7582 define <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
7594 define <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
7606 define <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
7616 define <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
7628 define <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
7640 define <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
7650 define <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
7662 define <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
7674 define <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
7686 define <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
7700 define <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
7714 define <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
7726 define <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
7741 define <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
7756 define <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
7768 define <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
7782 define <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
7796 define <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
7807 define <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
7820 define <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
7833 define <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
7844 define <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
7857 define <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
7870 define <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
7881 define <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
7894 define <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
7907 define <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
7918 define <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
7931 define <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
7944 define <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
7956 define <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
7970 define <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
7984 define <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
7997 define <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.vf v16, v12, fa0
8003 ; CHECK-NEXT:    vmfle.vv v12, v8, v8
8004 ; CHECK-NEXT:    vmnot.m v8, v12
8005 ; CHECK-NEXT:    vmorn.mm v0, v8, v16
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
8013 define <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