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:
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
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
20 define <1 x i1> @fcmps_oeq_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
21 ; CHECK-LABEL: fcmps_oeq_vf_v1f16:
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
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
34 define <1 x i1> @fcmps_oeq_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
35 ; CHECK-LABEL: fcmps_oeq_fv_v1f16:
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
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
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:
51 ; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma
52 ; CHECK-NEXT: vmflt.vv v0, v9, v8
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
58 define <1 x i1> @fcmps_ogt_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
59 ; CHECK-LABEL: fcmps_ogt_vf_v1f16:
61 ; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma
62 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
70 define <1 x i1> @fcmps_ogt_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
71 ; CHECK-LABEL: fcmps_ogt_fv_v1f16:
73 ; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma
74 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
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:
85 ; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma
86 ; CHECK-NEXT: vmfle.vv v0, v9, v8
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
92 define <1 x i1> @fcmps_oge_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
93 ; CHECK-LABEL: fcmps_oge_vf_v1f16:
95 ; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma
96 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
104 define <1 x i1> @fcmps_oge_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
105 ; CHECK-LABEL: fcmps_oge_fv_v1f16:
107 ; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma
108 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
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:
119 ; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma
120 ; CHECK-NEXT: vmflt.vv v0, v8, v9
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
126 define <1 x i1> @fcmps_olt_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
127 ; CHECK-LABEL: fcmps_olt_vf_v1f16:
129 ; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma
130 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
138 define <1 x i1> @fcmps_olt_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
139 ; CHECK-LABEL: fcmps_olt_fv_v1f16:
141 ; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma
142 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
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:
153 ; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma
154 ; CHECK-NEXT: vmfle.vv v0, v8, v9
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
160 define <1 x i1> @fcmps_ole_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
161 ; CHECK-LABEL: fcmps_ole_vf_v1f16:
163 ; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma
164 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
172 define <1 x i1> @fcmps_ole_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
173 ; CHECK-LABEL: fcmps_ole_fv_v1f16:
175 ; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma
176 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
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:
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
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
196 define <1 x i1> @fcmps_one_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
197 ; CHECK-LABEL: fcmps_one_vf_v1f16:
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
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
210 define <1 x i1> @fcmps_one_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
211 ; CHECK-LABEL: fcmps_one_fv_v1f16:
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
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
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:
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
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
236 define <1 x i1> @fcmps_ord_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
237 ; CHECK-LABEL: fcmps_ord_vf_v1f16:
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
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
251 define <1 x i1> @fcmps_ord_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
252 ; CHECK-LABEL: fcmps_ord_fv_v1f16:
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
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
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:
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
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
278 define <1 x i1> @fcmps_ueq_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
279 ; CHECK-LABEL: fcmps_ueq_vf_v1f16:
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
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
292 define <1 x i1> @fcmps_ueq_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
293 ; CHECK-LABEL: fcmps_ueq_fv_v1f16:
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
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
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:
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
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
317 define <1 x i1> @fcmps_ugt_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
318 ; CHECK-LABEL: fcmps_ugt_vf_v1f16:
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
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
330 define <1 x i1> @fcmps_ugt_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
331 ; CHECK-LABEL: fcmps_ugt_fv_v1f16:
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
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
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:
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
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
354 define <1 x i1> @fcmps_uge_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
355 ; CHECK-LABEL: fcmps_uge_vf_v1f16:
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
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
367 define <1 x i1> @fcmps_uge_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
368 ; CHECK-LABEL: fcmps_uge_fv_v1f16:
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
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
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:
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
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
391 define <1 x i1> @fcmps_ult_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
392 ; CHECK-LABEL: fcmps_ult_vf_v1f16:
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
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
404 define <1 x i1> @fcmps_ult_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
405 ; CHECK-LABEL: fcmps_ult_fv_v1f16:
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
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
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:
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
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
428 define <1 x i1> @fcmps_ule_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
429 ; CHECK-LABEL: fcmps_ule_vf_v1f16:
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
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
441 define <1 x i1> @fcmps_ule_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
442 ; CHECK-LABEL: fcmps_ule_fv_v1f16:
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
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
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:
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
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
466 define <1 x i1> @fcmps_une_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
467 ; CHECK-LABEL: fcmps_une_vf_v1f16:
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
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
480 define <1 x i1> @fcmps_une_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
481 ; CHECK-LABEL: fcmps_une_fv_v1f16:
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
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
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:
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
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
507 define <1 x i1> @fcmps_uno_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {
508 ; CHECK-LABEL: fcmps_uno_vf_v1f16:
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
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
523 define <1 x i1> @fcmps_uno_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {
524 ; CHECK-LABEL: fcmps_uno_fv_v1f16:
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
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
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:
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
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
552 define <2 x i1> @fcmps_oeq_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
553 ; CHECK-LABEL: fcmps_oeq_vf_v2f16:
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
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
566 define <2 x i1> @fcmps_oeq_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
567 ; CHECK-LABEL: fcmps_oeq_fv_v2f16:
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
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
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:
583 ; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma
584 ; CHECK-NEXT: vmflt.vv v0, v9, v8
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
590 define <2 x i1> @fcmps_ogt_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
591 ; CHECK-LABEL: fcmps_ogt_vf_v2f16:
593 ; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma
594 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
602 define <2 x i1> @fcmps_ogt_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
603 ; CHECK-LABEL: fcmps_ogt_fv_v2f16:
605 ; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma
606 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
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:
617 ; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma
618 ; CHECK-NEXT: vmfle.vv v0, v9, v8
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
624 define <2 x i1> @fcmps_oge_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
625 ; CHECK-LABEL: fcmps_oge_vf_v2f16:
627 ; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma
628 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
636 define <2 x i1> @fcmps_oge_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
637 ; CHECK-LABEL: fcmps_oge_fv_v2f16:
639 ; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma
640 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
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:
651 ; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma
652 ; CHECK-NEXT: vmflt.vv v0, v8, v9
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
658 define <2 x i1> @fcmps_olt_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
659 ; CHECK-LABEL: fcmps_olt_vf_v2f16:
661 ; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma
662 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
670 define <2 x i1> @fcmps_olt_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
671 ; CHECK-LABEL: fcmps_olt_fv_v2f16:
673 ; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma
674 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
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:
685 ; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma
686 ; CHECK-NEXT: vmfle.vv v0, v8, v9
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
692 define <2 x i1> @fcmps_ole_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
693 ; CHECK-LABEL: fcmps_ole_vf_v2f16:
695 ; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma
696 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
704 define <2 x i1> @fcmps_ole_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
705 ; CHECK-LABEL: fcmps_ole_fv_v2f16:
707 ; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma
708 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
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:
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
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
728 define <2 x i1> @fcmps_one_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
729 ; CHECK-LABEL: fcmps_one_vf_v2f16:
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
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
742 define <2 x i1> @fcmps_one_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
743 ; CHECK-LABEL: fcmps_one_fv_v2f16:
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
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
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:
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
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
768 define <2 x i1> @fcmps_ord_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
769 ; CHECK-LABEL: fcmps_ord_vf_v2f16:
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
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
783 define <2 x i1> @fcmps_ord_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
784 ; CHECK-LABEL: fcmps_ord_fv_v2f16:
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
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
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:
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
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
810 define <2 x i1> @fcmps_ueq_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
811 ; CHECK-LABEL: fcmps_ueq_vf_v2f16:
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
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
824 define <2 x i1> @fcmps_ueq_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
825 ; CHECK-LABEL: fcmps_ueq_fv_v2f16:
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
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
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:
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
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
849 define <2 x i1> @fcmps_ugt_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
850 ; CHECK-LABEL: fcmps_ugt_vf_v2f16:
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
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
862 define <2 x i1> @fcmps_ugt_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
863 ; CHECK-LABEL: fcmps_ugt_fv_v2f16:
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
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
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:
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
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
886 define <2 x i1> @fcmps_uge_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
887 ; CHECK-LABEL: fcmps_uge_vf_v2f16:
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
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
899 define <2 x i1> @fcmps_uge_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
900 ; CHECK-LABEL: fcmps_uge_fv_v2f16:
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
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
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:
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
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
923 define <2 x i1> @fcmps_ult_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
924 ; CHECK-LABEL: fcmps_ult_vf_v2f16:
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
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
936 define <2 x i1> @fcmps_ult_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
937 ; CHECK-LABEL: fcmps_ult_fv_v2f16:
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
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
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:
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
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
960 define <2 x i1> @fcmps_ule_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
961 ; CHECK-LABEL: fcmps_ule_vf_v2f16:
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
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
973 define <2 x i1> @fcmps_ule_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
974 ; CHECK-LABEL: fcmps_ule_fv_v2f16:
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
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
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:
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
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
998 define <2 x i1> @fcmps_une_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
999 ; CHECK-LABEL: fcmps_une_vf_v2f16:
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
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
1012 define <2 x i1> @fcmps_une_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
1013 ; CHECK-LABEL: fcmps_une_fv_v2f16:
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
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
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:
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
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
1039 define <2 x i1> @fcmps_uno_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {
1040 ; CHECK-LABEL: fcmps_uno_vf_v2f16:
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
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
1055 define <2 x i1> @fcmps_uno_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {
1056 ; CHECK-LABEL: fcmps_uno_fv_v2f16:
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
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
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:
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
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
1084 define <4 x i1> @fcmps_oeq_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1085 ; CHECK-LABEL: fcmps_oeq_vf_v4f16:
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
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
1098 define <4 x i1> @fcmps_oeq_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1099 ; CHECK-LABEL: fcmps_oeq_fv_v4f16:
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
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
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:
1115 ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
1116 ; CHECK-NEXT: vmflt.vv v0, v9, v8
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
1122 define <4 x i1> @fcmps_ogt_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1123 ; CHECK-LABEL: fcmps_ogt_vf_v4f16:
1125 ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
1126 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
1134 define <4 x i1> @fcmps_ogt_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1135 ; CHECK-LABEL: fcmps_ogt_fv_v4f16:
1137 ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
1138 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
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:
1149 ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
1150 ; CHECK-NEXT: vmfle.vv v0, v9, v8
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
1156 define <4 x i1> @fcmps_oge_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1157 ; CHECK-LABEL: fcmps_oge_vf_v4f16:
1159 ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
1160 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
1168 define <4 x i1> @fcmps_oge_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1169 ; CHECK-LABEL: fcmps_oge_fv_v4f16:
1171 ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
1172 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
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:
1183 ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
1184 ; CHECK-NEXT: vmflt.vv v0, v8, v9
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
1190 define <4 x i1> @fcmps_olt_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1191 ; CHECK-LABEL: fcmps_olt_vf_v4f16:
1193 ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
1194 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
1202 define <4 x i1> @fcmps_olt_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1203 ; CHECK-LABEL: fcmps_olt_fv_v4f16:
1205 ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
1206 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
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:
1217 ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
1218 ; CHECK-NEXT: vmfle.vv v0, v8, v9
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
1224 define <4 x i1> @fcmps_ole_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1225 ; CHECK-LABEL: fcmps_ole_vf_v4f16:
1227 ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
1228 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
1236 define <4 x i1> @fcmps_ole_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1237 ; CHECK-LABEL: fcmps_ole_fv_v4f16:
1239 ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
1240 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
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:
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
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
1260 define <4 x i1> @fcmps_one_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1261 ; CHECK-LABEL: fcmps_one_vf_v4f16:
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
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
1274 define <4 x i1> @fcmps_one_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1275 ; CHECK-LABEL: fcmps_one_fv_v4f16:
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
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
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:
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
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
1300 define <4 x i1> @fcmps_ord_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1301 ; CHECK-LABEL: fcmps_ord_vf_v4f16:
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
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
1315 define <4 x i1> @fcmps_ord_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1316 ; CHECK-LABEL: fcmps_ord_fv_v4f16:
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
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
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:
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
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
1342 define <4 x i1> @fcmps_ueq_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1343 ; CHECK-LABEL: fcmps_ueq_vf_v4f16:
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
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
1356 define <4 x i1> @fcmps_ueq_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1357 ; CHECK-LABEL: fcmps_ueq_fv_v4f16:
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
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
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:
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
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
1381 define <4 x i1> @fcmps_ugt_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1382 ; CHECK-LABEL: fcmps_ugt_vf_v4f16:
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
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
1394 define <4 x i1> @fcmps_ugt_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1395 ; CHECK-LABEL: fcmps_ugt_fv_v4f16:
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
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
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:
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
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
1418 define <4 x i1> @fcmps_uge_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1419 ; CHECK-LABEL: fcmps_uge_vf_v4f16:
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
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
1431 define <4 x i1> @fcmps_uge_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1432 ; CHECK-LABEL: fcmps_uge_fv_v4f16:
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
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
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:
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
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
1455 define <4 x i1> @fcmps_ult_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1456 ; CHECK-LABEL: fcmps_ult_vf_v4f16:
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
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
1468 define <4 x i1> @fcmps_ult_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1469 ; CHECK-LABEL: fcmps_ult_fv_v4f16:
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
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
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:
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
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
1492 define <4 x i1> @fcmps_ule_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1493 ; CHECK-LABEL: fcmps_ule_vf_v4f16:
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
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
1505 define <4 x i1> @fcmps_ule_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1506 ; CHECK-LABEL: fcmps_ule_fv_v4f16:
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
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
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:
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
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
1530 define <4 x i1> @fcmps_une_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1531 ; CHECK-LABEL: fcmps_une_vf_v4f16:
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
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
1544 define <4 x i1> @fcmps_une_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1545 ; CHECK-LABEL: fcmps_une_fv_v4f16:
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
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
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:
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
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
1571 define <4 x i1> @fcmps_uno_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1572 ; CHECK-LABEL: fcmps_uno_vf_v4f16:
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
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
1587 define <4 x i1> @fcmps_uno_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {
1588 ; CHECK-LABEL: fcmps_uno_fv_v4f16:
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
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
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:
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
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
1616 define <8 x i1> @fcmps_oeq_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1617 ; CHECK-LABEL: fcmps_oeq_vf_v8f16:
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
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
1630 define <8 x i1> @fcmps_oeq_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1631 ; CHECK-LABEL: fcmps_oeq_fv_v8f16:
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
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
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:
1647 ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
1648 ; CHECK-NEXT: vmflt.vv v0, v9, v8
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
1654 define <8 x i1> @fcmps_ogt_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1655 ; CHECK-LABEL: fcmps_ogt_vf_v8f16:
1657 ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
1658 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
1666 define <8 x i1> @fcmps_ogt_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1667 ; CHECK-LABEL: fcmps_ogt_fv_v8f16:
1669 ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
1670 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
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:
1681 ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
1682 ; CHECK-NEXT: vmfle.vv v0, v9, v8
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
1688 define <8 x i1> @fcmps_oge_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1689 ; CHECK-LABEL: fcmps_oge_vf_v8f16:
1691 ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
1692 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
1700 define <8 x i1> @fcmps_oge_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1701 ; CHECK-LABEL: fcmps_oge_fv_v8f16:
1703 ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
1704 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
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:
1715 ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
1716 ; CHECK-NEXT: vmflt.vv v0, v8, v9
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
1722 define <8 x i1> @fcmps_olt_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1723 ; CHECK-LABEL: fcmps_olt_vf_v8f16:
1725 ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
1726 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
1734 define <8 x i1> @fcmps_olt_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1735 ; CHECK-LABEL: fcmps_olt_fv_v8f16:
1737 ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
1738 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
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:
1749 ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
1750 ; CHECK-NEXT: vmfle.vv v0, v8, v9
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
1756 define <8 x i1> @fcmps_ole_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1757 ; CHECK-LABEL: fcmps_ole_vf_v8f16:
1759 ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
1760 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
1768 define <8 x i1> @fcmps_ole_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1769 ; CHECK-LABEL: fcmps_ole_fv_v8f16:
1771 ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
1772 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
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:
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
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
1792 define <8 x i1> @fcmps_one_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1793 ; CHECK-LABEL: fcmps_one_vf_v8f16:
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
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
1806 define <8 x i1> @fcmps_one_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1807 ; CHECK-LABEL: fcmps_one_fv_v8f16:
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
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
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:
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
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
1832 define <8 x i1> @fcmps_ord_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1833 ; CHECK-LABEL: fcmps_ord_vf_v8f16:
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
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
1847 define <8 x i1> @fcmps_ord_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1848 ; CHECK-LABEL: fcmps_ord_fv_v8f16:
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
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
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:
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
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
1874 define <8 x i1> @fcmps_ueq_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1875 ; CHECK-LABEL: fcmps_ueq_vf_v8f16:
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
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
1888 define <8 x i1> @fcmps_ueq_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1889 ; CHECK-LABEL: fcmps_ueq_fv_v8f16:
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
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
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:
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
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
1913 define <8 x i1> @fcmps_ugt_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1914 ; CHECK-LABEL: fcmps_ugt_vf_v8f16:
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
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
1926 define <8 x i1> @fcmps_ugt_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1927 ; CHECK-LABEL: fcmps_ugt_fv_v8f16:
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
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
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:
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
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
1950 define <8 x i1> @fcmps_uge_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1951 ; CHECK-LABEL: fcmps_uge_vf_v8f16:
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
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
1963 define <8 x i1> @fcmps_uge_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1964 ; CHECK-LABEL: fcmps_uge_fv_v8f16:
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
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
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:
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
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
1987 define <8 x i1> @fcmps_ult_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
1988 ; CHECK-LABEL: fcmps_ult_vf_v8f16:
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
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
2000 define <8 x i1> @fcmps_ult_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
2001 ; CHECK-LABEL: fcmps_ult_fv_v8f16:
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
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
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:
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
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
2024 define <8 x i1> @fcmps_ule_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
2025 ; CHECK-LABEL: fcmps_ule_vf_v8f16:
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
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
2037 define <8 x i1> @fcmps_ule_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
2038 ; CHECK-LABEL: fcmps_ule_fv_v8f16:
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
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
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:
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
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
2062 define <8 x i1> @fcmps_une_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
2063 ; CHECK-LABEL: fcmps_une_vf_v8f16:
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
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
2076 define <8 x i1> @fcmps_une_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
2077 ; CHECK-LABEL: fcmps_une_fv_v8f16:
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
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
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:
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
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
2103 define <8 x i1> @fcmps_uno_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {
2104 ; CHECK-LABEL: fcmps_uno_vf_v8f16:
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
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
2119 define <8 x i1> @fcmps_uno_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {
2120 ; CHECK-LABEL: fcmps_uno_fv_v8f16:
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
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
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:
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
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
2148 define <16 x i1> @fcmps_oeq_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2149 ; CHECK-LABEL: fcmps_oeq_vf_v16f16:
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
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
2162 define <16 x i1> @fcmps_oeq_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2163 ; CHECK-LABEL: fcmps_oeq_fv_v16f16:
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
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
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:
2179 ; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma
2180 ; CHECK-NEXT: vmflt.vv v0, v10, v8
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
2186 define <16 x i1> @fcmps_ogt_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2187 ; CHECK-LABEL: fcmps_ogt_vf_v16f16:
2189 ; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma
2190 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
2198 define <16 x i1> @fcmps_ogt_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2199 ; CHECK-LABEL: fcmps_ogt_fv_v16f16:
2201 ; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma
2202 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
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:
2213 ; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma
2214 ; CHECK-NEXT: vmfle.vv v0, v10, v8
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
2220 define <16 x i1> @fcmps_oge_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2221 ; CHECK-LABEL: fcmps_oge_vf_v16f16:
2223 ; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma
2224 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
2232 define <16 x i1> @fcmps_oge_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2233 ; CHECK-LABEL: fcmps_oge_fv_v16f16:
2235 ; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma
2236 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
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:
2247 ; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma
2248 ; CHECK-NEXT: vmflt.vv v0, v8, v10
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
2254 define <16 x i1> @fcmps_olt_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2255 ; CHECK-LABEL: fcmps_olt_vf_v16f16:
2257 ; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma
2258 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
2266 define <16 x i1> @fcmps_olt_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2267 ; CHECK-LABEL: fcmps_olt_fv_v16f16:
2269 ; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma
2270 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
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:
2281 ; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma
2282 ; CHECK-NEXT: vmfle.vv v0, v8, v10
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
2288 define <16 x i1> @fcmps_ole_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2289 ; CHECK-LABEL: fcmps_ole_vf_v16f16:
2291 ; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma
2292 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
2300 define <16 x i1> @fcmps_ole_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2301 ; CHECK-LABEL: fcmps_ole_fv_v16f16:
2303 ; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma
2304 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
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:
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
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
2324 define <16 x i1> @fcmps_one_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2325 ; CHECK-LABEL: fcmps_one_vf_v16f16:
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
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
2338 define <16 x i1> @fcmps_one_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2339 ; CHECK-LABEL: fcmps_one_fv_v16f16:
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
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
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:
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
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
2364 define <16 x i1> @fcmps_ord_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2365 ; CHECK-LABEL: fcmps_ord_vf_v16f16:
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
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
2379 define <16 x i1> @fcmps_ord_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2380 ; CHECK-LABEL: fcmps_ord_fv_v16f16:
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
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
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:
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
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
2406 define <16 x i1> @fcmps_ueq_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2407 ; CHECK-LABEL: fcmps_ueq_vf_v16f16:
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
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
2420 define <16 x i1> @fcmps_ueq_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2421 ; CHECK-LABEL: fcmps_ueq_fv_v16f16:
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
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
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:
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
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
2445 define <16 x i1> @fcmps_ugt_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2446 ; CHECK-LABEL: fcmps_ugt_vf_v16f16:
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
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
2458 define <16 x i1> @fcmps_ugt_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2459 ; CHECK-LABEL: fcmps_ugt_fv_v16f16:
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
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
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:
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
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
2482 define <16 x i1> @fcmps_uge_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2483 ; CHECK-LABEL: fcmps_uge_vf_v16f16:
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
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
2495 define <16 x i1> @fcmps_uge_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2496 ; CHECK-LABEL: fcmps_uge_fv_v16f16:
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
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
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:
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
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
2519 define <16 x i1> @fcmps_ult_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2520 ; CHECK-LABEL: fcmps_ult_vf_v16f16:
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
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
2532 define <16 x i1> @fcmps_ult_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2533 ; CHECK-LABEL: fcmps_ult_fv_v16f16:
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
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
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:
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
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
2556 define <16 x i1> @fcmps_ule_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2557 ; CHECK-LABEL: fcmps_ule_vf_v16f16:
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
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
2569 define <16 x i1> @fcmps_ule_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2570 ; CHECK-LABEL: fcmps_ule_fv_v16f16:
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
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
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:
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
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
2594 define <16 x i1> @fcmps_une_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2595 ; CHECK-LABEL: fcmps_une_vf_v16f16:
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
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
2608 define <16 x i1> @fcmps_une_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2609 ; CHECK-LABEL: fcmps_une_fv_v16f16:
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
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
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:
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
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
2635 define <16 x i1> @fcmps_uno_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2636 ; CHECK-LABEL: fcmps_uno_vf_v16f16:
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
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
2651 define <16 x i1> @fcmps_uno_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {
2652 ; CHECK-LABEL: fcmps_uno_fv_v16f16:
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
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
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:
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
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
2681 define <32 x i1> @fcmps_oeq_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2682 ; CHECK-LABEL: fcmps_oeq_vf_v32f16:
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
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
2696 define <32 x i1> @fcmps_oeq_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2697 ; CHECK-LABEL: fcmps_oeq_fv_v32f16:
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
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
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:
2714 ; CHECK-NEXT: li a0, 32
2715 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2716 ; CHECK-NEXT: vmflt.vv v0, v12, v8
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
2722 define <32 x i1> @fcmps_ogt_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2723 ; CHECK-LABEL: fcmps_ogt_vf_v32f16:
2725 ; CHECK-NEXT: li a0, 32
2726 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2727 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
2735 define <32 x i1> @fcmps_ogt_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2736 ; CHECK-LABEL: fcmps_ogt_fv_v32f16:
2738 ; CHECK-NEXT: li a0, 32
2739 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2740 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
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:
2751 ; CHECK-NEXT: li a0, 32
2752 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2753 ; CHECK-NEXT: vmfle.vv v0, v12, v8
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
2759 define <32 x i1> @fcmps_oge_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2760 ; CHECK-LABEL: fcmps_oge_vf_v32f16:
2762 ; CHECK-NEXT: li a0, 32
2763 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2764 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
2772 define <32 x i1> @fcmps_oge_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2773 ; CHECK-LABEL: fcmps_oge_fv_v32f16:
2775 ; CHECK-NEXT: li a0, 32
2776 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2777 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
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:
2788 ; CHECK-NEXT: li a0, 32
2789 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2790 ; CHECK-NEXT: vmflt.vv v0, v8, v12
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
2796 define <32 x i1> @fcmps_olt_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2797 ; CHECK-LABEL: fcmps_olt_vf_v32f16:
2799 ; CHECK-NEXT: li a0, 32
2800 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2801 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
2809 define <32 x i1> @fcmps_olt_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2810 ; CHECK-LABEL: fcmps_olt_fv_v32f16:
2812 ; CHECK-NEXT: li a0, 32
2813 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2814 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
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:
2825 ; CHECK-NEXT: li a0, 32
2826 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2827 ; CHECK-NEXT: vmfle.vv v0, v8, v12
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
2833 define <32 x i1> @fcmps_ole_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2834 ; CHECK-LABEL: fcmps_ole_vf_v32f16:
2836 ; CHECK-NEXT: li a0, 32
2837 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2838 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
2846 define <32 x i1> @fcmps_ole_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2847 ; CHECK-LABEL: fcmps_ole_fv_v32f16:
2849 ; CHECK-NEXT: li a0, 32
2850 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
2851 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
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:
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
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
2872 define <32 x i1> @fcmps_one_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2873 ; CHECK-LABEL: fcmps_one_vf_v32f16:
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
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
2887 define <32 x i1> @fcmps_one_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2888 ; CHECK-LABEL: fcmps_one_fv_v32f16:
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
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
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:
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
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
2915 define <32 x i1> @fcmps_ord_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2916 ; CHECK-LABEL: fcmps_ord_vf_v32f16:
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
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
2931 define <32 x i1> @fcmps_ord_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2932 ; CHECK-LABEL: fcmps_ord_fv_v32f16:
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
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
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:
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
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
2960 define <32 x i1> @fcmps_ueq_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2961 ; CHECK-LABEL: fcmps_ueq_vf_v32f16:
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
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
2975 define <32 x i1> @fcmps_ueq_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
2976 ; CHECK-LABEL: fcmps_ueq_fv_v32f16:
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
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
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:
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
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
3002 define <32 x i1> @fcmps_ugt_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3003 ; CHECK-LABEL: fcmps_ugt_vf_v32f16:
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
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
3016 define <32 x i1> @fcmps_ugt_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3017 ; CHECK-LABEL: fcmps_ugt_fv_v32f16:
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
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
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:
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
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
3042 define <32 x i1> @fcmps_uge_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3043 ; CHECK-LABEL: fcmps_uge_vf_v32f16:
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
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
3056 define <32 x i1> @fcmps_uge_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3057 ; CHECK-LABEL: fcmps_uge_fv_v32f16:
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
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
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:
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
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
3082 define <32 x i1> @fcmps_ult_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3083 ; CHECK-LABEL: fcmps_ult_vf_v32f16:
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
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
3096 define <32 x i1> @fcmps_ult_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3097 ; CHECK-LABEL: fcmps_ult_fv_v32f16:
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
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
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:
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
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
3122 define <32 x i1> @fcmps_ule_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3123 ; CHECK-LABEL: fcmps_ule_vf_v32f16:
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
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
3136 define <32 x i1> @fcmps_ule_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3137 ; CHECK-LABEL: fcmps_ule_fv_v32f16:
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
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
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:
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
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
3163 define <32 x i1> @fcmps_une_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3164 ; CHECK-LABEL: fcmps_une_vf_v32f16:
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
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
3178 define <32 x i1> @fcmps_une_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3179 ; CHECK-LABEL: fcmps_une_fv_v32f16:
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
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
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:
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
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
3207 define <32 x i1> @fcmps_uno_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3208 ; CHECK-LABEL: fcmps_uno_vf_v32f16:
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
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
3224 define <32 x i1> @fcmps_uno_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {
3225 ; CHECK-LABEL: fcmps_uno_fv_v32f16:
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
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
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:
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
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
3254 define <1 x i1> @fcmps_oeq_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3255 ; CHECK-LABEL: fcmps_oeq_vf_v1f32:
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
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
3268 define <1 x i1> @fcmps_oeq_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3269 ; CHECK-LABEL: fcmps_oeq_fv_v1f32:
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
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
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:
3285 ; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
3286 ; CHECK-NEXT: vmflt.vv v0, v9, v8
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
3292 define <1 x i1> @fcmps_ogt_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3293 ; CHECK-LABEL: fcmps_ogt_vf_v1f32:
3295 ; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
3296 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
3304 define <1 x i1> @fcmps_ogt_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3305 ; CHECK-LABEL: fcmps_ogt_fv_v1f32:
3307 ; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
3308 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
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:
3319 ; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
3320 ; CHECK-NEXT: vmfle.vv v0, v9, v8
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
3326 define <1 x i1> @fcmps_oge_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3327 ; CHECK-LABEL: fcmps_oge_vf_v1f32:
3329 ; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
3330 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
3338 define <1 x i1> @fcmps_oge_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3339 ; CHECK-LABEL: fcmps_oge_fv_v1f32:
3341 ; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
3342 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
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:
3353 ; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
3354 ; CHECK-NEXT: vmflt.vv v0, v8, v9
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
3360 define <1 x i1> @fcmps_olt_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3361 ; CHECK-LABEL: fcmps_olt_vf_v1f32:
3363 ; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
3364 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
3372 define <1 x i1> @fcmps_olt_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3373 ; CHECK-LABEL: fcmps_olt_fv_v1f32:
3375 ; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
3376 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
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:
3387 ; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
3388 ; CHECK-NEXT: vmfle.vv v0, v8, v9
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
3394 define <1 x i1> @fcmps_ole_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3395 ; CHECK-LABEL: fcmps_ole_vf_v1f32:
3397 ; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
3398 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
3406 define <1 x i1> @fcmps_ole_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3407 ; CHECK-LABEL: fcmps_ole_fv_v1f32:
3409 ; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
3410 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
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:
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
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
3430 define <1 x i1> @fcmps_one_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3431 ; CHECK-LABEL: fcmps_one_vf_v1f32:
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
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
3444 define <1 x i1> @fcmps_one_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3445 ; CHECK-LABEL: fcmps_one_fv_v1f32:
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
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
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:
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
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
3470 define <1 x i1> @fcmps_ord_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3471 ; CHECK-LABEL: fcmps_ord_vf_v1f32:
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
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
3485 define <1 x i1> @fcmps_ord_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3486 ; CHECK-LABEL: fcmps_ord_fv_v1f32:
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
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
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:
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
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
3512 define <1 x i1> @fcmps_ueq_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3513 ; CHECK-LABEL: fcmps_ueq_vf_v1f32:
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
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
3526 define <1 x i1> @fcmps_ueq_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3527 ; CHECK-LABEL: fcmps_ueq_fv_v1f32:
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
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
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:
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
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
3551 define <1 x i1> @fcmps_ugt_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3552 ; CHECK-LABEL: fcmps_ugt_vf_v1f32:
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
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
3564 define <1 x i1> @fcmps_ugt_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3565 ; CHECK-LABEL: fcmps_ugt_fv_v1f32:
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
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
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:
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
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
3588 define <1 x i1> @fcmps_uge_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3589 ; CHECK-LABEL: fcmps_uge_vf_v1f32:
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
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
3601 define <1 x i1> @fcmps_uge_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3602 ; CHECK-LABEL: fcmps_uge_fv_v1f32:
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
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
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:
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
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
3625 define <1 x i1> @fcmps_ult_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3626 ; CHECK-LABEL: fcmps_ult_vf_v1f32:
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
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
3638 define <1 x i1> @fcmps_ult_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3639 ; CHECK-LABEL: fcmps_ult_fv_v1f32:
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
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
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:
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
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
3662 define <1 x i1> @fcmps_ule_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3663 ; CHECK-LABEL: fcmps_ule_vf_v1f32:
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
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
3675 define <1 x i1> @fcmps_ule_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3676 ; CHECK-LABEL: fcmps_ule_fv_v1f32:
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
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
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:
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
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
3700 define <1 x i1> @fcmps_une_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3701 ; CHECK-LABEL: fcmps_une_vf_v1f32:
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
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
3714 define <1 x i1> @fcmps_une_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3715 ; CHECK-LABEL: fcmps_une_fv_v1f32:
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
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
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:
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
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
3741 define <1 x i1> @fcmps_uno_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3742 ; CHECK-LABEL: fcmps_uno_vf_v1f32:
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
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
3757 define <1 x i1> @fcmps_uno_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {
3758 ; CHECK-LABEL: fcmps_uno_fv_v1f32:
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
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
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:
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
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
3786 define <2 x i1> @fcmps_oeq_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3787 ; CHECK-LABEL: fcmps_oeq_vf_v2f32:
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
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
3800 define <2 x i1> @fcmps_oeq_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3801 ; CHECK-LABEL: fcmps_oeq_fv_v2f32:
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
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
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:
3817 ; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
3818 ; CHECK-NEXT: vmflt.vv v0, v9, v8
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
3824 define <2 x i1> @fcmps_ogt_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3825 ; CHECK-LABEL: fcmps_ogt_vf_v2f32:
3827 ; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
3828 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
3836 define <2 x i1> @fcmps_ogt_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3837 ; CHECK-LABEL: fcmps_ogt_fv_v2f32:
3839 ; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
3840 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
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:
3851 ; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
3852 ; CHECK-NEXT: vmfle.vv v0, v9, v8
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
3858 define <2 x i1> @fcmps_oge_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3859 ; CHECK-LABEL: fcmps_oge_vf_v2f32:
3861 ; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
3862 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
3870 define <2 x i1> @fcmps_oge_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3871 ; CHECK-LABEL: fcmps_oge_fv_v2f32:
3873 ; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
3874 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
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:
3885 ; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
3886 ; CHECK-NEXT: vmflt.vv v0, v8, v9
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
3892 define <2 x i1> @fcmps_olt_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3893 ; CHECK-LABEL: fcmps_olt_vf_v2f32:
3895 ; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
3896 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
3904 define <2 x i1> @fcmps_olt_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3905 ; CHECK-LABEL: fcmps_olt_fv_v2f32:
3907 ; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
3908 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
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:
3919 ; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
3920 ; CHECK-NEXT: vmfle.vv v0, v8, v9
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
3926 define <2 x i1> @fcmps_ole_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3927 ; CHECK-LABEL: fcmps_ole_vf_v2f32:
3929 ; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
3930 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
3938 define <2 x i1> @fcmps_ole_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3939 ; CHECK-LABEL: fcmps_ole_fv_v2f32:
3941 ; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
3942 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
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:
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
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
3962 define <2 x i1> @fcmps_one_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3963 ; CHECK-LABEL: fcmps_one_vf_v2f32:
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
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
3976 define <2 x i1> @fcmps_one_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
3977 ; CHECK-LABEL: fcmps_one_fv_v2f32:
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
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
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:
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
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
4002 define <2 x i1> @fcmps_ord_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4003 ; CHECK-LABEL: fcmps_ord_vf_v2f32:
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
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
4017 define <2 x i1> @fcmps_ord_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4018 ; CHECK-LABEL: fcmps_ord_fv_v2f32:
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
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
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:
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
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
4044 define <2 x i1> @fcmps_ueq_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4045 ; CHECK-LABEL: fcmps_ueq_vf_v2f32:
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
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
4058 define <2 x i1> @fcmps_ueq_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4059 ; CHECK-LABEL: fcmps_ueq_fv_v2f32:
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
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
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:
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
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
4083 define <2 x i1> @fcmps_ugt_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4084 ; CHECK-LABEL: fcmps_ugt_vf_v2f32:
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
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
4096 define <2 x i1> @fcmps_ugt_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4097 ; CHECK-LABEL: fcmps_ugt_fv_v2f32:
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
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
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:
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
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
4120 define <2 x i1> @fcmps_uge_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4121 ; CHECK-LABEL: fcmps_uge_vf_v2f32:
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
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
4133 define <2 x i1> @fcmps_uge_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4134 ; CHECK-LABEL: fcmps_uge_fv_v2f32:
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
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
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:
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
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
4157 define <2 x i1> @fcmps_ult_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4158 ; CHECK-LABEL: fcmps_ult_vf_v2f32:
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
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
4170 define <2 x i1> @fcmps_ult_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4171 ; CHECK-LABEL: fcmps_ult_fv_v2f32:
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
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
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:
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
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
4194 define <2 x i1> @fcmps_ule_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4195 ; CHECK-LABEL: fcmps_ule_vf_v2f32:
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
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
4207 define <2 x i1> @fcmps_ule_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4208 ; CHECK-LABEL: fcmps_ule_fv_v2f32:
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
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
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:
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
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
4232 define <2 x i1> @fcmps_une_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4233 ; CHECK-LABEL: fcmps_une_vf_v2f32:
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
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
4246 define <2 x i1> @fcmps_une_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4247 ; CHECK-LABEL: fcmps_une_fv_v2f32:
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
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
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:
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
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
4273 define <2 x i1> @fcmps_uno_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4274 ; CHECK-LABEL: fcmps_uno_vf_v2f32:
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
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
4289 define <2 x i1> @fcmps_uno_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {
4290 ; CHECK-LABEL: fcmps_uno_fv_v2f32:
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
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
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:
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
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
4318 define <4 x i1> @fcmps_oeq_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4319 ; CHECK-LABEL: fcmps_oeq_vf_v4f32:
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
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
4332 define <4 x i1> @fcmps_oeq_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4333 ; CHECK-LABEL: fcmps_oeq_fv_v4f32:
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
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
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:
4349 ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
4350 ; CHECK-NEXT: vmflt.vv v0, v9, v8
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
4356 define <4 x i1> @fcmps_ogt_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4357 ; CHECK-LABEL: fcmps_ogt_vf_v4f32:
4359 ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
4360 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
4368 define <4 x i1> @fcmps_ogt_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4369 ; CHECK-LABEL: fcmps_ogt_fv_v4f32:
4371 ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
4372 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
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:
4383 ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
4384 ; CHECK-NEXT: vmfle.vv v0, v9, v8
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
4390 define <4 x i1> @fcmps_oge_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4391 ; CHECK-LABEL: fcmps_oge_vf_v4f32:
4393 ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
4394 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
4402 define <4 x i1> @fcmps_oge_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4403 ; CHECK-LABEL: fcmps_oge_fv_v4f32:
4405 ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
4406 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
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:
4417 ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
4418 ; CHECK-NEXT: vmflt.vv v0, v8, v9
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
4424 define <4 x i1> @fcmps_olt_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4425 ; CHECK-LABEL: fcmps_olt_vf_v4f32:
4427 ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
4428 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
4436 define <4 x i1> @fcmps_olt_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4437 ; CHECK-LABEL: fcmps_olt_fv_v4f32:
4439 ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
4440 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
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:
4451 ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
4452 ; CHECK-NEXT: vmfle.vv v0, v8, v9
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
4458 define <4 x i1> @fcmps_ole_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4459 ; CHECK-LABEL: fcmps_ole_vf_v4f32:
4461 ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
4462 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
4470 define <4 x i1> @fcmps_ole_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4471 ; CHECK-LABEL: fcmps_ole_fv_v4f32:
4473 ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
4474 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
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:
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
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
4494 define <4 x i1> @fcmps_one_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4495 ; CHECK-LABEL: fcmps_one_vf_v4f32:
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
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
4508 define <4 x i1> @fcmps_one_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4509 ; CHECK-LABEL: fcmps_one_fv_v4f32:
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
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
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:
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
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
4534 define <4 x i1> @fcmps_ord_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4535 ; CHECK-LABEL: fcmps_ord_vf_v4f32:
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
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
4549 define <4 x i1> @fcmps_ord_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4550 ; CHECK-LABEL: fcmps_ord_fv_v4f32:
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
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
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:
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
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
4576 define <4 x i1> @fcmps_ueq_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4577 ; CHECK-LABEL: fcmps_ueq_vf_v4f32:
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
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
4590 define <4 x i1> @fcmps_ueq_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4591 ; CHECK-LABEL: fcmps_ueq_fv_v4f32:
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
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
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:
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
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
4615 define <4 x i1> @fcmps_ugt_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4616 ; CHECK-LABEL: fcmps_ugt_vf_v4f32:
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
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
4628 define <4 x i1> @fcmps_ugt_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4629 ; CHECK-LABEL: fcmps_ugt_fv_v4f32:
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
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
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:
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
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
4652 define <4 x i1> @fcmps_uge_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4653 ; CHECK-LABEL: fcmps_uge_vf_v4f32:
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
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
4665 define <4 x i1> @fcmps_uge_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4666 ; CHECK-LABEL: fcmps_uge_fv_v4f32:
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
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
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:
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
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
4689 define <4 x i1> @fcmps_ult_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4690 ; CHECK-LABEL: fcmps_ult_vf_v4f32:
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
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
4702 define <4 x i1> @fcmps_ult_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4703 ; CHECK-LABEL: fcmps_ult_fv_v4f32:
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
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
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:
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
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
4726 define <4 x i1> @fcmps_ule_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4727 ; CHECK-LABEL: fcmps_ule_vf_v4f32:
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
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
4739 define <4 x i1> @fcmps_ule_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4740 ; CHECK-LABEL: fcmps_ule_fv_v4f32:
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
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
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:
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
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
4764 define <4 x i1> @fcmps_une_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4765 ; CHECK-LABEL: fcmps_une_vf_v4f32:
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
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
4778 define <4 x i1> @fcmps_une_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4779 ; CHECK-LABEL: fcmps_une_fv_v4f32:
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
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
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:
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
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
4805 define <4 x i1> @fcmps_uno_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4806 ; CHECK-LABEL: fcmps_uno_vf_v4f32:
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
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
4821 define <4 x i1> @fcmps_uno_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {
4822 ; CHECK-LABEL: fcmps_uno_fv_v4f32:
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
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
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:
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
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
4850 define <8 x i1> @fcmps_oeq_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
4851 ; CHECK-LABEL: fcmps_oeq_vf_v8f32:
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
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
4864 define <8 x i1> @fcmps_oeq_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
4865 ; CHECK-LABEL: fcmps_oeq_fv_v8f32:
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
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
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:
4881 ; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma
4882 ; CHECK-NEXT: vmflt.vv v0, v10, v8
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
4888 define <8 x i1> @fcmps_ogt_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
4889 ; CHECK-LABEL: fcmps_ogt_vf_v8f32:
4891 ; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma
4892 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
4900 define <8 x i1> @fcmps_ogt_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
4901 ; CHECK-LABEL: fcmps_ogt_fv_v8f32:
4903 ; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma
4904 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
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:
4915 ; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma
4916 ; CHECK-NEXT: vmfle.vv v0, v10, v8
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
4922 define <8 x i1> @fcmps_oge_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
4923 ; CHECK-LABEL: fcmps_oge_vf_v8f32:
4925 ; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma
4926 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
4934 define <8 x i1> @fcmps_oge_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
4935 ; CHECK-LABEL: fcmps_oge_fv_v8f32:
4937 ; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma
4938 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
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:
4949 ; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma
4950 ; CHECK-NEXT: vmflt.vv v0, v8, v10
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
4956 define <8 x i1> @fcmps_olt_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
4957 ; CHECK-LABEL: fcmps_olt_vf_v8f32:
4959 ; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma
4960 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
4968 define <8 x i1> @fcmps_olt_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
4969 ; CHECK-LABEL: fcmps_olt_fv_v8f32:
4971 ; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma
4972 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
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:
4983 ; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma
4984 ; CHECK-NEXT: vmfle.vv v0, v8, v10
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
4990 define <8 x i1> @fcmps_ole_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
4991 ; CHECK-LABEL: fcmps_ole_vf_v8f32:
4993 ; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma
4994 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
5002 define <8 x i1> @fcmps_ole_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5003 ; CHECK-LABEL: fcmps_ole_fv_v8f32:
5005 ; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma
5006 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
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:
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
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
5026 define <8 x i1> @fcmps_one_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5027 ; CHECK-LABEL: fcmps_one_vf_v8f32:
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
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
5040 define <8 x i1> @fcmps_one_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5041 ; CHECK-LABEL: fcmps_one_fv_v8f32:
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
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
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:
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
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
5066 define <8 x i1> @fcmps_ord_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5067 ; CHECK-LABEL: fcmps_ord_vf_v8f32:
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
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
5081 define <8 x i1> @fcmps_ord_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5082 ; CHECK-LABEL: fcmps_ord_fv_v8f32:
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
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
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:
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
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
5108 define <8 x i1> @fcmps_ueq_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5109 ; CHECK-LABEL: fcmps_ueq_vf_v8f32:
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
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
5122 define <8 x i1> @fcmps_ueq_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5123 ; CHECK-LABEL: fcmps_ueq_fv_v8f32:
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
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
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:
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
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
5147 define <8 x i1> @fcmps_ugt_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5148 ; CHECK-LABEL: fcmps_ugt_vf_v8f32:
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
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
5160 define <8 x i1> @fcmps_ugt_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5161 ; CHECK-LABEL: fcmps_ugt_fv_v8f32:
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
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
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:
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
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
5184 define <8 x i1> @fcmps_uge_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5185 ; CHECK-LABEL: fcmps_uge_vf_v8f32:
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
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
5197 define <8 x i1> @fcmps_uge_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5198 ; CHECK-LABEL: fcmps_uge_fv_v8f32:
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
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
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:
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
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
5221 define <8 x i1> @fcmps_ult_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5222 ; CHECK-LABEL: fcmps_ult_vf_v8f32:
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
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
5234 define <8 x i1> @fcmps_ult_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5235 ; CHECK-LABEL: fcmps_ult_fv_v8f32:
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
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
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:
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
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
5258 define <8 x i1> @fcmps_ule_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5259 ; CHECK-LABEL: fcmps_ule_vf_v8f32:
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
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
5271 define <8 x i1> @fcmps_ule_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5272 ; CHECK-LABEL: fcmps_ule_fv_v8f32:
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
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
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:
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
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
5296 define <8 x i1> @fcmps_une_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5297 ; CHECK-LABEL: fcmps_une_vf_v8f32:
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
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
5310 define <8 x i1> @fcmps_une_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5311 ; CHECK-LABEL: fcmps_une_fv_v8f32:
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
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
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:
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
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
5337 define <8 x i1> @fcmps_uno_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5338 ; CHECK-LABEL: fcmps_uno_vf_v8f32:
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
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
5353 define <8 x i1> @fcmps_uno_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {
5354 ; CHECK-LABEL: fcmps_uno_fv_v8f32:
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
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
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:
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
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
5382 define <16 x i1> @fcmps_oeq_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5383 ; CHECK-LABEL: fcmps_oeq_vf_v16f32:
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
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
5396 define <16 x i1> @fcmps_oeq_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5397 ; CHECK-LABEL: fcmps_oeq_fv_v16f32:
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
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
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:
5413 ; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma
5414 ; CHECK-NEXT: vmflt.vv v0, v12, v8
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
5420 define <16 x i1> @fcmps_ogt_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5421 ; CHECK-LABEL: fcmps_ogt_vf_v16f32:
5423 ; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma
5424 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
5432 define <16 x i1> @fcmps_ogt_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5433 ; CHECK-LABEL: fcmps_ogt_fv_v16f32:
5435 ; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma
5436 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
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:
5447 ; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma
5448 ; CHECK-NEXT: vmfle.vv v0, v12, v8
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
5454 define <16 x i1> @fcmps_oge_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5455 ; CHECK-LABEL: fcmps_oge_vf_v16f32:
5457 ; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma
5458 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
5466 define <16 x i1> @fcmps_oge_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5467 ; CHECK-LABEL: fcmps_oge_fv_v16f32:
5469 ; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma
5470 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
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:
5481 ; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma
5482 ; CHECK-NEXT: vmflt.vv v0, v8, v12
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
5488 define <16 x i1> @fcmps_olt_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5489 ; CHECK-LABEL: fcmps_olt_vf_v16f32:
5491 ; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma
5492 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
5500 define <16 x i1> @fcmps_olt_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5501 ; CHECK-LABEL: fcmps_olt_fv_v16f32:
5503 ; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma
5504 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
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:
5515 ; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma
5516 ; CHECK-NEXT: vmfle.vv v0, v8, v12
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
5522 define <16 x i1> @fcmps_ole_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5523 ; CHECK-LABEL: fcmps_ole_vf_v16f32:
5525 ; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma
5526 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
5534 define <16 x i1> @fcmps_ole_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5535 ; CHECK-LABEL: fcmps_ole_fv_v16f32:
5537 ; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma
5538 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
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:
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
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
5558 define <16 x i1> @fcmps_one_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5559 ; CHECK-LABEL: fcmps_one_vf_v16f32:
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
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
5572 define <16 x i1> @fcmps_one_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5573 ; CHECK-LABEL: fcmps_one_fv_v16f32:
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
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
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:
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
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
5598 define <16 x i1> @fcmps_ord_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5599 ; CHECK-LABEL: fcmps_ord_vf_v16f32:
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
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
5613 define <16 x i1> @fcmps_ord_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5614 ; CHECK-LABEL: fcmps_ord_fv_v16f32:
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
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
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:
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
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
5640 define <16 x i1> @fcmps_ueq_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5641 ; CHECK-LABEL: fcmps_ueq_vf_v16f32:
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
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
5654 define <16 x i1> @fcmps_ueq_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5655 ; CHECK-LABEL: fcmps_ueq_fv_v16f32:
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
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
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:
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
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
5679 define <16 x i1> @fcmps_ugt_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5680 ; CHECK-LABEL: fcmps_ugt_vf_v16f32:
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
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
5692 define <16 x i1> @fcmps_ugt_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5693 ; CHECK-LABEL: fcmps_ugt_fv_v16f32:
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
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
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:
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
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
5716 define <16 x i1> @fcmps_uge_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5717 ; CHECK-LABEL: fcmps_uge_vf_v16f32:
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
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
5729 define <16 x i1> @fcmps_uge_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5730 ; CHECK-LABEL: fcmps_uge_fv_v16f32:
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
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
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:
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
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
5753 define <16 x i1> @fcmps_ult_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5754 ; CHECK-LABEL: fcmps_ult_vf_v16f32:
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
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
5766 define <16 x i1> @fcmps_ult_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5767 ; CHECK-LABEL: fcmps_ult_fv_v16f32:
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
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
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:
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
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
5790 define <16 x i1> @fcmps_ule_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5791 ; CHECK-LABEL: fcmps_ule_vf_v16f32:
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
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
5803 define <16 x i1> @fcmps_ule_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5804 ; CHECK-LABEL: fcmps_ule_fv_v16f32:
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
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
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:
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
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
5828 define <16 x i1> @fcmps_une_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5829 ; CHECK-LABEL: fcmps_une_vf_v16f32:
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
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
5842 define <16 x i1> @fcmps_une_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5843 ; CHECK-LABEL: fcmps_une_fv_v16f32:
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
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
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:
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
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
5869 define <16 x i1> @fcmps_uno_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5870 ; CHECK-LABEL: fcmps_uno_vf_v16f32:
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
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
5885 define <16 x i1> @fcmps_uno_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {
5886 ; CHECK-LABEL: fcmps_uno_fv_v16f32:
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
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
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:
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
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
5914 define <1 x i1> @fcmps_oeq_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
5915 ; CHECK-LABEL: fcmps_oeq_vf_v1f64:
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
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
5928 define <1 x i1> @fcmps_oeq_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
5929 ; CHECK-LABEL: fcmps_oeq_fv_v1f64:
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
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
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:
5945 ; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma
5946 ; CHECK-NEXT: vmflt.vv v0, v9, v8
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
5952 define <1 x i1> @fcmps_ogt_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
5953 ; CHECK-LABEL: fcmps_ogt_vf_v1f64:
5955 ; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma
5956 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
5964 define <1 x i1> @fcmps_ogt_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
5965 ; CHECK-LABEL: fcmps_ogt_fv_v1f64:
5967 ; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma
5968 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
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:
5979 ; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma
5980 ; CHECK-NEXT: vmfle.vv v0, v9, v8
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
5986 define <1 x i1> @fcmps_oge_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
5987 ; CHECK-LABEL: fcmps_oge_vf_v1f64:
5989 ; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma
5990 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
5998 define <1 x i1> @fcmps_oge_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
5999 ; CHECK-LABEL: fcmps_oge_fv_v1f64:
6001 ; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma
6002 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
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:
6013 ; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma
6014 ; CHECK-NEXT: vmflt.vv v0, v8, v9
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
6020 define <1 x i1> @fcmps_olt_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6021 ; CHECK-LABEL: fcmps_olt_vf_v1f64:
6023 ; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma
6024 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
6032 define <1 x i1> @fcmps_olt_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6033 ; CHECK-LABEL: fcmps_olt_fv_v1f64:
6035 ; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma
6036 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
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:
6047 ; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma
6048 ; CHECK-NEXT: vmfle.vv v0, v8, v9
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
6054 define <1 x i1> @fcmps_ole_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6055 ; CHECK-LABEL: fcmps_ole_vf_v1f64:
6057 ; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma
6058 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
6066 define <1 x i1> @fcmps_ole_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6067 ; CHECK-LABEL: fcmps_ole_fv_v1f64:
6069 ; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma
6070 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
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:
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
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
6090 define <1 x i1> @fcmps_one_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6091 ; CHECK-LABEL: fcmps_one_vf_v1f64:
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
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
6104 define <1 x i1> @fcmps_one_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6105 ; CHECK-LABEL: fcmps_one_fv_v1f64:
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
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
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:
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
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
6130 define <1 x i1> @fcmps_ord_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6131 ; CHECK-LABEL: fcmps_ord_vf_v1f64:
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
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
6145 define <1 x i1> @fcmps_ord_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6146 ; CHECK-LABEL: fcmps_ord_fv_v1f64:
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
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
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:
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
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
6172 define <1 x i1> @fcmps_ueq_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6173 ; CHECK-LABEL: fcmps_ueq_vf_v1f64:
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
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
6186 define <1 x i1> @fcmps_ueq_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6187 ; CHECK-LABEL: fcmps_ueq_fv_v1f64:
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
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
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:
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
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
6211 define <1 x i1> @fcmps_ugt_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6212 ; CHECK-LABEL: fcmps_ugt_vf_v1f64:
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
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
6224 define <1 x i1> @fcmps_ugt_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6225 ; CHECK-LABEL: fcmps_ugt_fv_v1f64:
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
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
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:
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
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
6248 define <1 x i1> @fcmps_uge_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6249 ; CHECK-LABEL: fcmps_uge_vf_v1f64:
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
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
6261 define <1 x i1> @fcmps_uge_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6262 ; CHECK-LABEL: fcmps_uge_fv_v1f64:
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
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
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:
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
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
6285 define <1 x i1> @fcmps_ult_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6286 ; CHECK-LABEL: fcmps_ult_vf_v1f64:
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
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
6298 define <1 x i1> @fcmps_ult_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6299 ; CHECK-LABEL: fcmps_ult_fv_v1f64:
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
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
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:
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
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
6322 define <1 x i1> @fcmps_ule_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6323 ; CHECK-LABEL: fcmps_ule_vf_v1f64:
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
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
6335 define <1 x i1> @fcmps_ule_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6336 ; CHECK-LABEL: fcmps_ule_fv_v1f64:
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
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
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:
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
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
6360 define <1 x i1> @fcmps_une_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6361 ; CHECK-LABEL: fcmps_une_vf_v1f64:
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
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
6374 define <1 x i1> @fcmps_une_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6375 ; CHECK-LABEL: fcmps_une_fv_v1f64:
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
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
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:
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
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
6401 define <1 x i1> @fcmps_uno_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6402 ; CHECK-LABEL: fcmps_uno_vf_v1f64:
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
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
6417 define <1 x i1> @fcmps_uno_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {
6418 ; CHECK-LABEL: fcmps_uno_fv_v1f64:
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
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
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:
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
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
6446 define <2 x i1> @fcmps_oeq_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6447 ; CHECK-LABEL: fcmps_oeq_vf_v2f64:
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
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
6460 define <2 x i1> @fcmps_oeq_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6461 ; CHECK-LABEL: fcmps_oeq_fv_v2f64:
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
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
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:
6477 ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
6478 ; CHECK-NEXT: vmflt.vv v0, v9, v8
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
6484 define <2 x i1> @fcmps_ogt_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6485 ; CHECK-LABEL: fcmps_ogt_vf_v2f64:
6487 ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
6488 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
6496 define <2 x i1> @fcmps_ogt_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6497 ; CHECK-LABEL: fcmps_ogt_fv_v2f64:
6499 ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
6500 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
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:
6511 ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
6512 ; CHECK-NEXT: vmfle.vv v0, v9, v8
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
6518 define <2 x i1> @fcmps_oge_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6519 ; CHECK-LABEL: fcmps_oge_vf_v2f64:
6521 ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
6522 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
6530 define <2 x i1> @fcmps_oge_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6531 ; CHECK-LABEL: fcmps_oge_fv_v2f64:
6533 ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
6534 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
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:
6545 ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
6546 ; CHECK-NEXT: vmflt.vv v0, v8, v9
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
6552 define <2 x i1> @fcmps_olt_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6553 ; CHECK-LABEL: fcmps_olt_vf_v2f64:
6555 ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
6556 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
6564 define <2 x i1> @fcmps_olt_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6565 ; CHECK-LABEL: fcmps_olt_fv_v2f64:
6567 ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
6568 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
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:
6579 ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
6580 ; CHECK-NEXT: vmfle.vv v0, v8, v9
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
6586 define <2 x i1> @fcmps_ole_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6587 ; CHECK-LABEL: fcmps_ole_vf_v2f64:
6589 ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
6590 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
6598 define <2 x i1> @fcmps_ole_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6599 ; CHECK-LABEL: fcmps_ole_fv_v2f64:
6601 ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
6602 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
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:
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
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
6622 define <2 x i1> @fcmps_one_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6623 ; CHECK-LABEL: fcmps_one_vf_v2f64:
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
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
6636 define <2 x i1> @fcmps_one_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6637 ; CHECK-LABEL: fcmps_one_fv_v2f64:
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
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
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:
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
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
6662 define <2 x i1> @fcmps_ord_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6663 ; CHECK-LABEL: fcmps_ord_vf_v2f64:
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
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
6677 define <2 x i1> @fcmps_ord_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6678 ; CHECK-LABEL: fcmps_ord_fv_v2f64:
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
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
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:
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
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
6704 define <2 x i1> @fcmps_ueq_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6705 ; CHECK-LABEL: fcmps_ueq_vf_v2f64:
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
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
6718 define <2 x i1> @fcmps_ueq_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6719 ; CHECK-LABEL: fcmps_ueq_fv_v2f64:
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
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
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:
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
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
6743 define <2 x i1> @fcmps_ugt_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6744 ; CHECK-LABEL: fcmps_ugt_vf_v2f64:
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
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
6756 define <2 x i1> @fcmps_ugt_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6757 ; CHECK-LABEL: fcmps_ugt_fv_v2f64:
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
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
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:
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
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
6780 define <2 x i1> @fcmps_uge_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6781 ; CHECK-LABEL: fcmps_uge_vf_v2f64:
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
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
6793 define <2 x i1> @fcmps_uge_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6794 ; CHECK-LABEL: fcmps_uge_fv_v2f64:
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
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
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:
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
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
6817 define <2 x i1> @fcmps_ult_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6818 ; CHECK-LABEL: fcmps_ult_vf_v2f64:
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
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
6830 define <2 x i1> @fcmps_ult_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6831 ; CHECK-LABEL: fcmps_ult_fv_v2f64:
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
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
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:
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
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
6854 define <2 x i1> @fcmps_ule_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6855 ; CHECK-LABEL: fcmps_ule_vf_v2f64:
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
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
6867 define <2 x i1> @fcmps_ule_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6868 ; CHECK-LABEL: fcmps_ule_fv_v2f64:
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
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
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:
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
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
6892 define <2 x i1> @fcmps_une_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6893 ; CHECK-LABEL: fcmps_une_vf_v2f64:
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
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
6906 define <2 x i1> @fcmps_une_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6907 ; CHECK-LABEL: fcmps_une_fv_v2f64:
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
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
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:
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
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
6933 define <2 x i1> @fcmps_uno_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6934 ; CHECK-LABEL: fcmps_uno_vf_v2f64:
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
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
6949 define <2 x i1> @fcmps_uno_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {
6950 ; CHECK-LABEL: fcmps_uno_fv_v2f64:
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
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
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:
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
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
6978 define <4 x i1> @fcmps_oeq_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
6979 ; CHECK-LABEL: fcmps_oeq_vf_v4f64:
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
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
6992 define <4 x i1> @fcmps_oeq_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
6993 ; CHECK-LABEL: fcmps_oeq_fv_v4f64:
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
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
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:
7009 ; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma
7010 ; CHECK-NEXT: vmflt.vv v0, v10, v8
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
7016 define <4 x i1> @fcmps_ogt_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7017 ; CHECK-LABEL: fcmps_ogt_vf_v4f64:
7019 ; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma
7020 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
7028 define <4 x i1> @fcmps_ogt_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7029 ; CHECK-LABEL: fcmps_ogt_fv_v4f64:
7031 ; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma
7032 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
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:
7043 ; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma
7044 ; CHECK-NEXT: vmfle.vv v0, v10, v8
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
7050 define <4 x i1> @fcmps_oge_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7051 ; CHECK-LABEL: fcmps_oge_vf_v4f64:
7053 ; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma
7054 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
7062 define <4 x i1> @fcmps_oge_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7063 ; CHECK-LABEL: fcmps_oge_fv_v4f64:
7065 ; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma
7066 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
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:
7077 ; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma
7078 ; CHECK-NEXT: vmflt.vv v0, v8, v10
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
7084 define <4 x i1> @fcmps_olt_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7085 ; CHECK-LABEL: fcmps_olt_vf_v4f64:
7087 ; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma
7088 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
7096 define <4 x i1> @fcmps_olt_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7097 ; CHECK-LABEL: fcmps_olt_fv_v4f64:
7099 ; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma
7100 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
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:
7111 ; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma
7112 ; CHECK-NEXT: vmfle.vv v0, v8, v10
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
7118 define <4 x i1> @fcmps_ole_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7119 ; CHECK-LABEL: fcmps_ole_vf_v4f64:
7121 ; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma
7122 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
7130 define <4 x i1> @fcmps_ole_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7131 ; CHECK-LABEL: fcmps_ole_fv_v4f64:
7133 ; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma
7134 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
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:
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
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
7154 define <4 x i1> @fcmps_one_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7155 ; CHECK-LABEL: fcmps_one_vf_v4f64:
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
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
7168 define <4 x i1> @fcmps_one_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7169 ; CHECK-LABEL: fcmps_one_fv_v4f64:
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
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
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:
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
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
7194 define <4 x i1> @fcmps_ord_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7195 ; CHECK-LABEL: fcmps_ord_vf_v4f64:
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
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
7209 define <4 x i1> @fcmps_ord_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7210 ; CHECK-LABEL: fcmps_ord_fv_v4f64:
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
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
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:
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
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
7236 define <4 x i1> @fcmps_ueq_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7237 ; CHECK-LABEL: fcmps_ueq_vf_v4f64:
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
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
7250 define <4 x i1> @fcmps_ueq_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7251 ; CHECK-LABEL: fcmps_ueq_fv_v4f64:
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
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
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:
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
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
7275 define <4 x i1> @fcmps_ugt_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7276 ; CHECK-LABEL: fcmps_ugt_vf_v4f64:
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
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
7288 define <4 x i1> @fcmps_ugt_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7289 ; CHECK-LABEL: fcmps_ugt_fv_v4f64:
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
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
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:
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
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
7312 define <4 x i1> @fcmps_uge_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7313 ; CHECK-LABEL: fcmps_uge_vf_v4f64:
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
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
7325 define <4 x i1> @fcmps_uge_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7326 ; CHECK-LABEL: fcmps_uge_fv_v4f64:
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
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
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:
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
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
7349 define <4 x i1> @fcmps_ult_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7350 ; CHECK-LABEL: fcmps_ult_vf_v4f64:
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
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
7362 define <4 x i1> @fcmps_ult_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7363 ; CHECK-LABEL: fcmps_ult_fv_v4f64:
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
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
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:
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
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
7386 define <4 x i1> @fcmps_ule_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7387 ; CHECK-LABEL: fcmps_ule_vf_v4f64:
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
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
7399 define <4 x i1> @fcmps_ule_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7400 ; CHECK-LABEL: fcmps_ule_fv_v4f64:
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
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
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:
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
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
7424 define <4 x i1> @fcmps_une_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7425 ; CHECK-LABEL: fcmps_une_vf_v4f64:
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
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
7438 define <4 x i1> @fcmps_une_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7439 ; CHECK-LABEL: fcmps_une_fv_v4f64:
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
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
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:
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
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
7465 define <4 x i1> @fcmps_uno_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7466 ; CHECK-LABEL: fcmps_uno_vf_v4f64:
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
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
7481 define <4 x i1> @fcmps_uno_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {
7482 ; CHECK-LABEL: fcmps_uno_fv_v4f64:
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
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
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:
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
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
7510 define <8 x i1> @fcmps_oeq_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7511 ; CHECK-LABEL: fcmps_oeq_vf_v8f64:
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
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
7524 define <8 x i1> @fcmps_oeq_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7525 ; CHECK-LABEL: fcmps_oeq_fv_v8f64:
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
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
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:
7541 ; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma
7542 ; CHECK-NEXT: vmflt.vv v0, v12, v8
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
7548 define <8 x i1> @fcmps_ogt_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7549 ; CHECK-LABEL: fcmps_ogt_vf_v8f64:
7551 ; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma
7552 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
7560 define <8 x i1> @fcmps_ogt_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7561 ; CHECK-LABEL: fcmps_ogt_fv_v8f64:
7563 ; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma
7564 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
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:
7575 ; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma
7576 ; CHECK-NEXT: vmfle.vv v0, v12, v8
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
7582 define <8 x i1> @fcmps_oge_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7583 ; CHECK-LABEL: fcmps_oge_vf_v8f64:
7585 ; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma
7586 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
7594 define <8 x i1> @fcmps_oge_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7595 ; CHECK-LABEL: fcmps_oge_fv_v8f64:
7597 ; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma
7598 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
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:
7609 ; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma
7610 ; CHECK-NEXT: vmflt.vv v0, v8, v12
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
7616 define <8 x i1> @fcmps_olt_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7617 ; CHECK-LABEL: fcmps_olt_vf_v8f64:
7619 ; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma
7620 ; CHECK-NEXT: vmflt.vf v0, v8, fa0
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
7628 define <8 x i1> @fcmps_olt_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7629 ; CHECK-LABEL: fcmps_olt_fv_v8f64:
7631 ; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma
7632 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0
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
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:
7643 ; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma
7644 ; CHECK-NEXT: vmfle.vv v0, v8, v12
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
7650 define <8 x i1> @fcmps_ole_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7651 ; CHECK-LABEL: fcmps_ole_vf_v8f64:
7653 ; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma
7654 ; CHECK-NEXT: vmfle.vf v0, v8, fa0
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
7662 define <8 x i1> @fcmps_ole_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7663 ; CHECK-LABEL: fcmps_ole_fv_v8f64:
7665 ; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma
7666 ; CHECK-NEXT: vmfge.vf v0, v8, fa0
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
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:
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
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
7686 define <8 x i1> @fcmps_one_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7687 ; CHECK-LABEL: fcmps_one_vf_v8f64:
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
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
7700 define <8 x i1> @fcmps_one_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7701 ; CHECK-LABEL: fcmps_one_fv_v8f64:
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
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
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:
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
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
7726 define <8 x i1> @fcmps_ord_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7727 ; CHECK-LABEL: fcmps_ord_vf_v8f64:
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
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
7741 define <8 x i1> @fcmps_ord_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7742 ; CHECK-LABEL: fcmps_ord_fv_v8f64:
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
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
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:
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
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
7768 define <8 x i1> @fcmps_ueq_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7769 ; CHECK-LABEL: fcmps_ueq_vf_v8f64:
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
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
7782 define <8 x i1> @fcmps_ueq_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7783 ; CHECK-LABEL: fcmps_ueq_fv_v8f64:
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
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
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:
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
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
7807 define <8 x i1> @fcmps_ugt_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7808 ; CHECK-LABEL: fcmps_ugt_vf_v8f64:
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
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
7820 define <8 x i1> @fcmps_ugt_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7821 ; CHECK-LABEL: fcmps_ugt_fv_v8f64:
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
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
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:
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
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
7844 define <8 x i1> @fcmps_uge_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7845 ; CHECK-LABEL: fcmps_uge_vf_v8f64:
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
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
7857 define <8 x i1> @fcmps_uge_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7858 ; CHECK-LABEL: fcmps_uge_fv_v8f64:
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
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
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:
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
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
7881 define <8 x i1> @fcmps_ult_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7882 ; CHECK-LABEL: fcmps_ult_vf_v8f64:
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
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
7894 define <8 x i1> @fcmps_ult_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7895 ; CHECK-LABEL: fcmps_ult_fv_v8f64:
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
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
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:
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
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
7918 define <8 x i1> @fcmps_ule_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7919 ; CHECK-LABEL: fcmps_ule_vf_v8f64:
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
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
7931 define <8 x i1> @fcmps_ule_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7932 ; CHECK-LABEL: fcmps_ule_fv_v8f64:
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
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
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:
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
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
7956 define <8 x i1> @fcmps_une_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7957 ; CHECK-LABEL: fcmps_une_vf_v8f64:
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
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
7970 define <8 x i1> @fcmps_une_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7971 ; CHECK-LABEL: fcmps_une_fv_v8f64:
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
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
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:
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
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
7997 define <8 x i1> @fcmps_uno_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {
7998 ; CHECK-LABEL: fcmps_uno_vf_v8f64:
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
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
8013 define <8 x i1> @fcmps_uno_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {
8014 ; CHECK-LABEL: fcmps_uno_fv_v8f64:
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
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