9780 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+d,+zvfh,+v -target-abi=ilp32d \3; RUN: -verify-machineinstrs < %s | FileCheck %s4; RUN: llc -mtriple=riscv64 -mattr=+d,+zvfh,+v -target-abi=lp64d \5; RUN: -verify-machineinstrs < %s | FileCheck %s6 7define <1 x i1> @fcmp_oeq_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {8; CHECK-LABEL: fcmp_oeq_vv_v1f16:9; CHECK: # %bb.0:10; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma11; CHECK-NEXT: vmfeq.vv v0, v8, v912; CHECK-NEXT: ret13 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp14 ret <1 x i1> %115}16 17define <1 x i1> @fcmp_oeq_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {18; CHECK-LABEL: fcmp_oeq_vf_v1f16:19; CHECK: # %bb.0:20; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma21; CHECK-NEXT: vmfeq.vf v0, v8, fa022; CHECK-NEXT: ret23 %head = insertelement <1 x half> poison, half %b, i32 024 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer25 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp26 ret <1 x i1> %127}28 29define <1 x i1> @fcmp_oeq_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {30; CHECK-LABEL: fcmp_oeq_fv_v1f16:31; CHECK: # %bb.0:32; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma33; CHECK-NEXT: vmfeq.vf v0, v8, fa034; CHECK-NEXT: ret35 %head = insertelement <1 x half> poison, half %b, i32 036 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer37 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp38 ret <1 x i1> %139}40 41define <1 x i1> @fcmp_ogt_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {42; CHECK-LABEL: fcmp_ogt_vv_v1f16:43; CHECK: # %bb.0:44; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu45; CHECK-NEXT: vmfeq.vv v10, v8, v846; CHECK-NEXT: vmfeq.vv v11, v9, v947; CHECK-NEXT: vmand.mm v0, v11, v1048; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t49; CHECK-NEXT: ret50 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp51 ret <1 x i1> %152}53 54define <1 x i1> @fcmp_ogt_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {55; CHECK-LABEL: fcmp_ogt_vf_v1f16:56; CHECK: # %bb.0:57; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu58; CHECK-NEXT: vfmv.s.f v9, fa059; CHECK-NEXT: vmfeq.vv v10, v8, v860; CHECK-NEXT: vmfeq.vf v9, v9, fa061; CHECK-NEXT: vmand.mm v0, v9, v1062; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t63; CHECK-NEXT: ret64 %head = insertelement <1 x half> poison, half %b, i32 065 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer66 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp67 ret <1 x i1> %168}69 70define <1 x i1> @fcmp_ogt_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {71; CHECK-LABEL: fcmp_ogt_fv_v1f16:72; CHECK: # %bb.0:73; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu74; CHECK-NEXT: vfmv.s.f v9, fa075; CHECK-NEXT: vmfeq.vv v10, v8, v876; CHECK-NEXT: vmfeq.vf v9, v9, fa077; CHECK-NEXT: vmand.mm v0, v10, v978; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t79; CHECK-NEXT: ret80 %head = insertelement <1 x half> poison, half %b, i32 081 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer82 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp83 ret <1 x i1> %184}85 86define <1 x i1> @fcmp_oge_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {87; CHECK-LABEL: fcmp_oge_vv_v1f16:88; CHECK: # %bb.0:89; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu90; CHECK-NEXT: vmfeq.vv v10, v8, v891; CHECK-NEXT: vmfeq.vv v11, v9, v992; CHECK-NEXT: vmand.mm v0, v11, v1093; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t94; CHECK-NEXT: ret95 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp96 ret <1 x i1> %197}98 99define <1 x i1> @fcmp_oge_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {100; CHECK-LABEL: fcmp_oge_vf_v1f16:101; CHECK: # %bb.0:102; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu103; CHECK-NEXT: vfmv.s.f v9, fa0104; CHECK-NEXT: vmfeq.vv v10, v8, v8105; CHECK-NEXT: vmfeq.vf v9, v9, fa0106; CHECK-NEXT: vmand.mm v0, v9, v10107; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t108; CHECK-NEXT: ret109 %head = insertelement <1 x half> poison, half %b, i32 0110 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer111 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp112 ret <1 x i1> %1113}114 115define <1 x i1> @fcmp_oge_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {116; CHECK-LABEL: fcmp_oge_fv_v1f16:117; CHECK: # %bb.0:118; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu119; CHECK-NEXT: vfmv.s.f v9, fa0120; CHECK-NEXT: vmfeq.vv v10, v8, v8121; CHECK-NEXT: vmfeq.vf v9, v9, fa0122; CHECK-NEXT: vmand.mm v0, v10, v9123; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t124; CHECK-NEXT: ret125 %head = insertelement <1 x half> poison, half %b, i32 0126 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer127 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp128 ret <1 x i1> %1129}130 131define <1 x i1> @fcmp_olt_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {132; CHECK-LABEL: fcmp_olt_vv_v1f16:133; CHECK: # %bb.0:134; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu135; CHECK-NEXT: vmfeq.vv v10, v9, v9136; CHECK-NEXT: vmfeq.vv v11, v8, v8137; CHECK-NEXT: vmand.mm v0, v11, v10138; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t139; CHECK-NEXT: ret140 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp141 ret <1 x i1> %1142}143 144define <1 x i1> @fcmp_olt_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {145; CHECK-LABEL: fcmp_olt_vf_v1f16:146; CHECK: # %bb.0:147; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu148; CHECK-NEXT: vfmv.s.f v9, fa0149; CHECK-NEXT: vmfeq.vv v10, v8, v8150; CHECK-NEXT: vmfeq.vf v9, v9, fa0151; CHECK-NEXT: vmand.mm v0, v10, v9152; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t153; CHECK-NEXT: ret154 %head = insertelement <1 x half> poison, half %b, i32 0155 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer156 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp157 ret <1 x i1> %1158}159 160define <1 x i1> @fcmp_olt_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {161; CHECK-LABEL: fcmp_olt_fv_v1f16:162; CHECK: # %bb.0:163; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu164; CHECK-NEXT: vfmv.s.f v9, fa0165; CHECK-NEXT: vmfeq.vv v10, v8, v8166; CHECK-NEXT: vmfeq.vf v9, v9, fa0167; CHECK-NEXT: vmand.mm v0, v9, v10168; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t169; CHECK-NEXT: ret170 %head = insertelement <1 x half> poison, half %b, i32 0171 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer172 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp173 ret <1 x i1> %1174}175 176define <1 x i1> @fcmp_ole_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {177; CHECK-LABEL: fcmp_ole_vv_v1f16:178; CHECK: # %bb.0:179; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu180; CHECK-NEXT: vmfeq.vv v10, v9, v9181; CHECK-NEXT: vmfeq.vv v11, v8, v8182; CHECK-NEXT: vmand.mm v0, v11, v10183; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t184; CHECK-NEXT: ret185 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp186 ret <1 x i1> %1187}188 189define <1 x i1> @fcmp_ole_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {190; CHECK-LABEL: fcmp_ole_vf_v1f16:191; CHECK: # %bb.0:192; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu193; CHECK-NEXT: vfmv.s.f v9, fa0194; CHECK-NEXT: vmfeq.vv v10, v8, v8195; CHECK-NEXT: vmfeq.vf v9, v9, fa0196; CHECK-NEXT: vmand.mm v0, v10, v9197; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t198; CHECK-NEXT: ret199 %head = insertelement <1 x half> poison, half %b, i32 0200 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer201 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp202 ret <1 x i1> %1203}204 205define <1 x i1> @fcmp_ole_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {206; CHECK-LABEL: fcmp_ole_fv_v1f16:207; CHECK: # %bb.0:208; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu209; CHECK-NEXT: vfmv.s.f v9, fa0210; CHECK-NEXT: vmfeq.vv v10, v8, v8211; CHECK-NEXT: vmfeq.vf v9, v9, fa0212; CHECK-NEXT: vmand.mm v0, v9, v10213; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t214; CHECK-NEXT: ret215 %head = insertelement <1 x half> poison, half %b, i32 0216 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer217 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp218 ret <1 x i1> %1219}220 221define <1 x i1> @fcmp_one_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {222; CHECK-LABEL: fcmp_one_vv_v1f16:223; CHECK: # %bb.0:224; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu225; CHECK-NEXT: vmfeq.vv v10, v9, v9226; CHECK-NEXT: vmfeq.vv v11, v8, v8227; CHECK-NEXT: vmand.mm v0, v11, v10228; CHECK-NEXT: vmv1r.v v10, v0229; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t230; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t231; CHECK-NEXT: vmor.mm v0, v0, v10232; CHECK-NEXT: ret233 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp234 ret <1 x i1> %1235}236 237define <1 x i1> @fcmp_one_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {238; CHECK-LABEL: fcmp_one_vf_v1f16:239; CHECK: # %bb.0:240; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu241; CHECK-NEXT: vfmv.s.f v9, fa0242; CHECK-NEXT: vmfeq.vv v10, v8, v8243; CHECK-NEXT: vmfeq.vf v9, v9, fa0244; CHECK-NEXT: vmand.mm v0, v10, v9245; CHECK-NEXT: vmv1r.v v9, v0246; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t247; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t248; CHECK-NEXT: vmor.mm v0, v0, v9249; CHECK-NEXT: ret250 %head = insertelement <1 x half> poison, half %b, i32 0251 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer252 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp253 ret <1 x i1> %1254}255 256define <1 x i1> @fcmp_one_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {257; CHECK-LABEL: fcmp_one_fv_v1f16:258; CHECK: # %bb.0:259; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu260; CHECK-NEXT: vfmv.s.f v9, fa0261; CHECK-NEXT: vmfeq.vv v10, v8, v8262; CHECK-NEXT: vmfeq.vf v9, v9, fa0263; CHECK-NEXT: vmand.mm v0, v9, v10264; CHECK-NEXT: vmv1r.v v9, v0265; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t266; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t267; CHECK-NEXT: vmor.mm v0, v0, v9268; CHECK-NEXT: ret269 %head = insertelement <1 x half> poison, half %b, i32 0270 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer271 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp272 ret <1 x i1> %1273}274 275define <1 x i1> @fcmp_ord_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {276; CHECK-LABEL: fcmp_ord_vv_v1f16:277; CHECK: # %bb.0:278; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma279; CHECK-NEXT: vmfeq.vv v9, v9, v9280; CHECK-NEXT: vmfeq.vv v8, v8, v8281; CHECK-NEXT: vmand.mm v0, v8, v9282; CHECK-NEXT: ret283 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp284 ret <1 x i1> %1285}286 287define <1 x i1> @fcmp_ord_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {288; CHECK-LABEL: fcmp_ord_vf_v1f16:289; CHECK: # %bb.0:290; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma291; CHECK-NEXT: vfmv.s.f v9, fa0292; CHECK-NEXT: vmfeq.vf v9, v9, fa0293; CHECK-NEXT: vmfeq.vv v8, v8, v8294; CHECK-NEXT: vmand.mm v0, v8, v9295; CHECK-NEXT: ret296 %head = insertelement <1 x half> poison, half %b, i32 0297 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer298 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp299 ret <1 x i1> %1300}301 302define <1 x i1> @fcmp_ord_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {303; CHECK-LABEL: fcmp_ord_fv_v1f16:304; CHECK: # %bb.0:305; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma306; CHECK-NEXT: vfmv.s.f v9, fa0307; CHECK-NEXT: vmfeq.vf v9, v9, fa0308; CHECK-NEXT: vmfeq.vv v8, v8, v8309; CHECK-NEXT: vmand.mm v0, v9, v8310; CHECK-NEXT: ret311 %head = insertelement <1 x half> poison, half %b, i32 0312 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer313 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp314 ret <1 x i1> %1315}316 317define <1 x i1> @fcmp_ueq_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {318; CHECK-LABEL: fcmp_ueq_vv_v1f16:319; CHECK: # %bb.0:320; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu321; CHECK-NEXT: vmfeq.vv v10, v9, v9322; CHECK-NEXT: vmfeq.vv v11, v8, v8323; CHECK-NEXT: vmand.mm v0, v11, v10324; CHECK-NEXT: vmv1r.v v10, v0325; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t326; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t327; CHECK-NEXT: vmnor.mm v0, v0, v10328; CHECK-NEXT: ret329 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp330 ret <1 x i1> %1331}332 333define <1 x i1> @fcmp_ueq_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {334; CHECK-LABEL: fcmp_ueq_vf_v1f16:335; CHECK: # %bb.0:336; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu337; CHECK-NEXT: vfmv.s.f v9, fa0338; CHECK-NEXT: vmfeq.vv v10, v8, v8339; CHECK-NEXT: vmfeq.vf v9, v9, fa0340; CHECK-NEXT: vmand.mm v0, v10, v9341; CHECK-NEXT: vmv1r.v v9, v0342; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t343; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t344; CHECK-NEXT: vmnor.mm v0, v0, v9345; CHECK-NEXT: ret346 %head = insertelement <1 x half> poison, half %b, i32 0347 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer348 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp349 ret <1 x i1> %1350}351 352define <1 x i1> @fcmp_ueq_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {353; CHECK-LABEL: fcmp_ueq_fv_v1f16:354; CHECK: # %bb.0:355; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu356; CHECK-NEXT: vfmv.s.f v9, fa0357; CHECK-NEXT: vmfeq.vv v10, v8, v8358; CHECK-NEXT: vmfeq.vf v9, v9, fa0359; CHECK-NEXT: vmand.mm v0, v9, v10360; CHECK-NEXT: vmv1r.v v9, v0361; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t362; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t363; CHECK-NEXT: vmnor.mm v0, v0, v9364; CHECK-NEXT: ret365 %head = insertelement <1 x half> poison, half %b, i32 0366 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer367 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp368 ret <1 x i1> %1369}370 371define <1 x i1> @fcmp_ugt_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {372; CHECK-LABEL: fcmp_ugt_vv_v1f16:373; CHECK: # %bb.0:374; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu375; CHECK-NEXT: vmfeq.vv v10, v9, v9376; CHECK-NEXT: vmfeq.vv v11, v8, v8377; CHECK-NEXT: vmand.mm v0, v11, v10378; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t379; CHECK-NEXT: vmnot.m v0, v0380; CHECK-NEXT: ret381 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp382 ret <1 x i1> %1383}384 385define <1 x i1> @fcmp_ugt_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {386; CHECK-LABEL: fcmp_ugt_vf_v1f16:387; CHECK: # %bb.0:388; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu389; CHECK-NEXT: vfmv.s.f v9, fa0390; CHECK-NEXT: vmfeq.vv v10, v8, v8391; CHECK-NEXT: vmfeq.vf v9, v9, fa0392; CHECK-NEXT: vmand.mm v0, v10, v9393; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t394; CHECK-NEXT: vmnot.m v0, v0395; CHECK-NEXT: ret396 %head = insertelement <1 x half> poison, half %b, i32 0397 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer398 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp399 ret <1 x i1> %1400}401 402define <1 x i1> @fcmp_ugt_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {403; CHECK-LABEL: fcmp_ugt_fv_v1f16:404; CHECK: # %bb.0:405; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu406; CHECK-NEXT: vfmv.s.f v9, fa0407; CHECK-NEXT: vmfeq.vv v10, v8, v8408; CHECK-NEXT: vmfeq.vf v9, v9, fa0409; CHECK-NEXT: vmand.mm v0, v9, v10410; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t411; CHECK-NEXT: vmnot.m v0, v0412; CHECK-NEXT: ret413 %head = insertelement <1 x half> poison, half %b, i32 0414 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer415 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp416 ret <1 x i1> %1417}418 419define <1 x i1> @fcmp_uge_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {420; CHECK-LABEL: fcmp_uge_vv_v1f16:421; CHECK: # %bb.0:422; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu423; CHECK-NEXT: vmfeq.vv v10, v9, v9424; CHECK-NEXT: vmfeq.vv v11, v8, v8425; CHECK-NEXT: vmand.mm v0, v11, v10426; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t427; CHECK-NEXT: vmnot.m v0, v0428; CHECK-NEXT: ret429 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp430 ret <1 x i1> %1431}432 433define <1 x i1> @fcmp_uge_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {434; CHECK-LABEL: fcmp_uge_vf_v1f16:435; CHECK: # %bb.0:436; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu437; CHECK-NEXT: vfmv.s.f v9, fa0438; CHECK-NEXT: vmfeq.vv v10, v8, v8439; CHECK-NEXT: vmfeq.vf v9, v9, fa0440; CHECK-NEXT: vmand.mm v0, v10, v9441; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t442; CHECK-NEXT: vmnot.m v0, v0443; CHECK-NEXT: ret444 %head = insertelement <1 x half> poison, half %b, i32 0445 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer446 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp447 ret <1 x i1> %1448}449 450define <1 x i1> @fcmp_uge_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {451; CHECK-LABEL: fcmp_uge_fv_v1f16:452; CHECK: # %bb.0:453; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu454; CHECK-NEXT: vfmv.s.f v9, fa0455; CHECK-NEXT: vmfeq.vv v10, v8, v8456; CHECK-NEXT: vmfeq.vf v9, v9, fa0457; CHECK-NEXT: vmand.mm v0, v9, v10458; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t459; CHECK-NEXT: vmnot.m v0, v0460; CHECK-NEXT: ret461 %head = insertelement <1 x half> poison, half %b, i32 0462 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer463 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp464 ret <1 x i1> %1465}466 467define <1 x i1> @fcmp_ult_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {468; CHECK-LABEL: fcmp_ult_vv_v1f16:469; CHECK: # %bb.0:470; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu471; CHECK-NEXT: vmfeq.vv v10, v8, v8472; CHECK-NEXT: vmfeq.vv v11, v9, v9473; CHECK-NEXT: vmand.mm v0, v11, v10474; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t475; CHECK-NEXT: vmnot.m v0, v0476; CHECK-NEXT: ret477 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp478 ret <1 x i1> %1479}480 481define <1 x i1> @fcmp_ult_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {482; CHECK-LABEL: fcmp_ult_vf_v1f16:483; CHECK: # %bb.0:484; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu485; CHECK-NEXT: vfmv.s.f v9, fa0486; CHECK-NEXT: vmfeq.vv v10, v8, v8487; CHECK-NEXT: vmfeq.vf v9, v9, fa0488; CHECK-NEXT: vmand.mm v0, v9, v10489; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t490; CHECK-NEXT: vmnot.m v0, v0491; CHECK-NEXT: ret492 %head = insertelement <1 x half> poison, half %b, i32 0493 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer494 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp495 ret <1 x i1> %1496}497 498define <1 x i1> @fcmp_ult_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {499; CHECK-LABEL: fcmp_ult_fv_v1f16:500; CHECK: # %bb.0:501; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu502; CHECK-NEXT: vfmv.s.f v9, fa0503; CHECK-NEXT: vmfeq.vv v10, v8, v8504; CHECK-NEXT: vmfeq.vf v9, v9, fa0505; CHECK-NEXT: vmand.mm v0, v10, v9506; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t507; CHECK-NEXT: vmnot.m v0, v0508; CHECK-NEXT: ret509 %head = insertelement <1 x half> poison, half %b, i32 0510 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer511 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp512 ret <1 x i1> %1513}514 515define <1 x i1> @fcmp_ule_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {516; CHECK-LABEL: fcmp_ule_vv_v1f16:517; CHECK: # %bb.0:518; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu519; CHECK-NEXT: vmfeq.vv v10, v8, v8520; CHECK-NEXT: vmfeq.vv v11, v9, v9521; CHECK-NEXT: vmand.mm v0, v11, v10522; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t523; CHECK-NEXT: vmnot.m v0, v0524; CHECK-NEXT: ret525 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp526 ret <1 x i1> %1527}528 529define <1 x i1> @fcmp_ule_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {530; CHECK-LABEL: fcmp_ule_vf_v1f16:531; CHECK: # %bb.0:532; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu533; CHECK-NEXT: vfmv.s.f v9, fa0534; CHECK-NEXT: vmfeq.vv v10, v8, v8535; CHECK-NEXT: vmfeq.vf v9, v9, fa0536; CHECK-NEXT: vmand.mm v0, v9, v10537; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t538; CHECK-NEXT: vmnot.m v0, v0539; CHECK-NEXT: ret540 %head = insertelement <1 x half> poison, half %b, i32 0541 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer542 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp543 ret <1 x i1> %1544}545 546define <1 x i1> @fcmp_ule_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {547; CHECK-LABEL: fcmp_ule_fv_v1f16:548; CHECK: # %bb.0:549; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu550; CHECK-NEXT: vfmv.s.f v9, fa0551; CHECK-NEXT: vmfeq.vv v10, v8, v8552; CHECK-NEXT: vmfeq.vf v9, v9, fa0553; CHECK-NEXT: vmand.mm v0, v10, v9554; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t555; CHECK-NEXT: vmnot.m v0, v0556; CHECK-NEXT: ret557 %head = insertelement <1 x half> poison, half %b, i32 0558 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer559 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp560 ret <1 x i1> %1561}562 563define <1 x i1> @fcmp_une_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {564; CHECK-LABEL: fcmp_une_vv_v1f16:565; CHECK: # %bb.0:566; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma567; CHECK-NEXT: vmfne.vv v0, v8, v9568; CHECK-NEXT: ret569 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp570 ret <1 x i1> %1571}572 573define <1 x i1> @fcmp_une_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {574; CHECK-LABEL: fcmp_une_vf_v1f16:575; CHECK: # %bb.0:576; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma577; CHECK-NEXT: vmfne.vf v0, v8, fa0578; CHECK-NEXT: ret579 %head = insertelement <1 x half> poison, half %b, i32 0580 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer581 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp582 ret <1 x i1> %1583}584 585define <1 x i1> @fcmp_une_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {586; CHECK-LABEL: fcmp_une_fv_v1f16:587; CHECK: # %bb.0:588; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma589; CHECK-NEXT: vmfne.vf v0, v8, fa0590; CHECK-NEXT: ret591 %head = insertelement <1 x half> poison, half %b, i32 0592 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer593 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp594 ret <1 x i1> %1595}596 597define <1 x i1> @fcmp_uno_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {598; CHECK-LABEL: fcmp_uno_vv_v1f16:599; CHECK: # %bb.0:600; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma601; CHECK-NEXT: vmfne.vv v9, v9, v9602; CHECK-NEXT: vmfne.vv v8, v8, v8603; CHECK-NEXT: vmor.mm v0, v8, v9604; CHECK-NEXT: ret605 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp606 ret <1 x i1> %1607}608 609define <1 x i1> @fcmp_uno_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {610; CHECK-LABEL: fcmp_uno_vf_v1f16:611; CHECK: # %bb.0:612; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma613; CHECK-NEXT: vfmv.s.f v9, fa0614; CHECK-NEXT: vmfne.vf v9, v9, fa0615; CHECK-NEXT: vmfne.vv v8, v8, v8616; CHECK-NEXT: vmor.mm v0, v8, v9617; CHECK-NEXT: ret618 %head = insertelement <1 x half> poison, half %b, i32 0619 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer620 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp621 ret <1 x i1> %1622}623 624define <1 x i1> @fcmp_uno_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {625; CHECK-LABEL: fcmp_uno_fv_v1f16:626; CHECK: # %bb.0:627; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma628; CHECK-NEXT: vfmv.s.f v9, fa0629; CHECK-NEXT: vmfne.vf v9, v9, fa0630; CHECK-NEXT: vmfne.vv v8, v8, v8631; CHECK-NEXT: vmor.mm v0, v9, v8632; CHECK-NEXT: ret633 %head = insertelement <1 x half> poison, half %b, i32 0634 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer635 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp636 ret <1 x i1> %1637}638 639define <2 x i1> @fcmp_oeq_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {640; CHECK-LABEL: fcmp_oeq_vv_v2f16:641; CHECK: # %bb.0:642; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma643; CHECK-NEXT: vmfeq.vv v0, v8, v9644; CHECK-NEXT: ret645 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp646 ret <2 x i1> %1647}648 649define <2 x i1> @fcmp_oeq_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {650; CHECK-LABEL: fcmp_oeq_vf_v2f16:651; CHECK: # %bb.0:652; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma653; CHECK-NEXT: vmfeq.vf v0, v8, fa0654; CHECK-NEXT: ret655 %head = insertelement <2 x half> poison, half %b, i32 0656 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer657 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp658 ret <2 x i1> %1659}660 661define <2 x i1> @fcmp_oeq_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {662; CHECK-LABEL: fcmp_oeq_fv_v2f16:663; CHECK: # %bb.0:664; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma665; CHECK-NEXT: vmfeq.vf v0, v8, fa0666; CHECK-NEXT: ret667 %head = insertelement <2 x half> poison, half %b, i32 0668 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer669 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp670 ret <2 x i1> %1671}672 673define <2 x i1> @fcmp_ogt_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {674; CHECK-LABEL: fcmp_ogt_vv_v2f16:675; CHECK: # %bb.0:676; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu677; CHECK-NEXT: vmfeq.vv v10, v8, v8678; CHECK-NEXT: vmfeq.vv v11, v9, v9679; CHECK-NEXT: vmand.mm v0, v11, v10680; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t681; CHECK-NEXT: ret682 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp683 ret <2 x i1> %1684}685 686define <2 x i1> @fcmp_ogt_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {687; CHECK-LABEL: fcmp_ogt_vf_v2f16:688; CHECK: # %bb.0:689; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu690; CHECK-NEXT: vfmv.v.f v9, fa0691; CHECK-NEXT: vmfeq.vv v10, v8, v8692; CHECK-NEXT: vmfeq.vf v9, v9, fa0693; CHECK-NEXT: vmand.mm v0, v9, v10694; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t695; CHECK-NEXT: ret696 %head = insertelement <2 x half> poison, half %b, i32 0697 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer698 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp699 ret <2 x i1> %1700}701 702define <2 x i1> @fcmp_ogt_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {703; CHECK-LABEL: fcmp_ogt_fv_v2f16:704; CHECK: # %bb.0:705; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu706; CHECK-NEXT: vfmv.v.f v9, fa0707; CHECK-NEXT: vmfeq.vv v10, v8, v8708; CHECK-NEXT: vmfeq.vf v9, v9, fa0709; CHECK-NEXT: vmand.mm v0, v10, v9710; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t711; CHECK-NEXT: ret712 %head = insertelement <2 x half> poison, half %b, i32 0713 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer714 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp715 ret <2 x i1> %1716}717 718define <2 x i1> @fcmp_oge_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {719; CHECK-LABEL: fcmp_oge_vv_v2f16:720; CHECK: # %bb.0:721; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu722; CHECK-NEXT: vmfeq.vv v10, v8, v8723; CHECK-NEXT: vmfeq.vv v11, v9, v9724; CHECK-NEXT: vmand.mm v0, v11, v10725; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t726; CHECK-NEXT: ret727 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp728 ret <2 x i1> %1729}730 731define <2 x i1> @fcmp_oge_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {732; CHECK-LABEL: fcmp_oge_vf_v2f16:733; CHECK: # %bb.0:734; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu735; CHECK-NEXT: vfmv.v.f v9, fa0736; CHECK-NEXT: vmfeq.vv v10, v8, v8737; CHECK-NEXT: vmfeq.vf v9, v9, fa0738; CHECK-NEXT: vmand.mm v0, v9, v10739; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t740; CHECK-NEXT: ret741 %head = insertelement <2 x half> poison, half %b, i32 0742 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer743 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp744 ret <2 x i1> %1745}746 747define <2 x i1> @fcmp_oge_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {748; CHECK-LABEL: fcmp_oge_fv_v2f16:749; CHECK: # %bb.0:750; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu751; CHECK-NEXT: vfmv.v.f v9, fa0752; CHECK-NEXT: vmfeq.vv v10, v8, v8753; CHECK-NEXT: vmfeq.vf v9, v9, fa0754; CHECK-NEXT: vmand.mm v0, v10, v9755; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t756; CHECK-NEXT: ret757 %head = insertelement <2 x half> poison, half %b, i32 0758 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer759 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp760 ret <2 x i1> %1761}762 763define <2 x i1> @fcmp_olt_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {764; CHECK-LABEL: fcmp_olt_vv_v2f16:765; CHECK: # %bb.0:766; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu767; CHECK-NEXT: vmfeq.vv v10, v9, v9768; CHECK-NEXT: vmfeq.vv v11, v8, v8769; CHECK-NEXT: vmand.mm v0, v11, v10770; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t771; CHECK-NEXT: ret772 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp773 ret <2 x i1> %1774}775 776define <2 x i1> @fcmp_olt_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {777; CHECK-LABEL: fcmp_olt_vf_v2f16:778; CHECK: # %bb.0:779; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu780; CHECK-NEXT: vfmv.v.f v9, fa0781; CHECK-NEXT: vmfeq.vv v10, v8, v8782; CHECK-NEXT: vmfeq.vf v9, v9, fa0783; CHECK-NEXT: vmand.mm v0, v10, v9784; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t785; CHECK-NEXT: ret786 %head = insertelement <2 x half> poison, half %b, i32 0787 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer788 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp789 ret <2 x i1> %1790}791 792define <2 x i1> @fcmp_olt_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {793; CHECK-LABEL: fcmp_olt_fv_v2f16:794; CHECK: # %bb.0:795; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu796; CHECK-NEXT: vfmv.v.f v9, fa0797; CHECK-NEXT: vmfeq.vv v10, v8, v8798; CHECK-NEXT: vmfeq.vf v9, v9, fa0799; CHECK-NEXT: vmand.mm v0, v9, v10800; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t801; CHECK-NEXT: ret802 %head = insertelement <2 x half> poison, half %b, i32 0803 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer804 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp805 ret <2 x i1> %1806}807 808define <2 x i1> @fcmp_ole_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {809; CHECK-LABEL: fcmp_ole_vv_v2f16:810; CHECK: # %bb.0:811; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu812; CHECK-NEXT: vmfeq.vv v10, v9, v9813; CHECK-NEXT: vmfeq.vv v11, v8, v8814; CHECK-NEXT: vmand.mm v0, v11, v10815; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t816; CHECK-NEXT: ret817 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp818 ret <2 x i1> %1819}820 821define <2 x i1> @fcmp_ole_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {822; CHECK-LABEL: fcmp_ole_vf_v2f16:823; CHECK: # %bb.0:824; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu825; CHECK-NEXT: vfmv.v.f v9, fa0826; CHECK-NEXT: vmfeq.vv v10, v8, v8827; CHECK-NEXT: vmfeq.vf v9, v9, fa0828; CHECK-NEXT: vmand.mm v0, v10, v9829; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t830; CHECK-NEXT: ret831 %head = insertelement <2 x half> poison, half %b, i32 0832 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer833 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp834 ret <2 x i1> %1835}836 837define <2 x i1> @fcmp_ole_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {838; CHECK-LABEL: fcmp_ole_fv_v2f16:839; CHECK: # %bb.0:840; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu841; CHECK-NEXT: vfmv.v.f v9, fa0842; CHECK-NEXT: vmfeq.vv v10, v8, v8843; CHECK-NEXT: vmfeq.vf v9, v9, fa0844; CHECK-NEXT: vmand.mm v0, v9, v10845; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t846; CHECK-NEXT: ret847 %head = insertelement <2 x half> poison, half %b, i32 0848 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer849 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp850 ret <2 x i1> %1851}852 853define <2 x i1> @fcmp_one_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {854; CHECK-LABEL: fcmp_one_vv_v2f16:855; CHECK: # %bb.0:856; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu857; CHECK-NEXT: vmfeq.vv v10, v9, v9858; CHECK-NEXT: vmfeq.vv v11, v8, v8859; CHECK-NEXT: vmand.mm v0, v11, v10860; CHECK-NEXT: vmv1r.v v10, v0861; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t862; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t863; CHECK-NEXT: vmor.mm v0, v0, v10864; CHECK-NEXT: ret865 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp866 ret <2 x i1> %1867}868 869define <2 x i1> @fcmp_one_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {870; CHECK-LABEL: fcmp_one_vf_v2f16:871; CHECK: # %bb.0:872; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu873; CHECK-NEXT: vfmv.v.f v9, fa0874; CHECK-NEXT: vmfeq.vv v10, v8, v8875; CHECK-NEXT: vmfeq.vf v9, v9, fa0876; CHECK-NEXT: vmand.mm v0, v10, v9877; CHECK-NEXT: vmv1r.v v9, v0878; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t879; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t880; CHECK-NEXT: vmor.mm v0, v0, v9881; CHECK-NEXT: ret882 %head = insertelement <2 x half> poison, half %b, i32 0883 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer884 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp885 ret <2 x i1> %1886}887 888define <2 x i1> @fcmp_one_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {889; CHECK-LABEL: fcmp_one_fv_v2f16:890; CHECK: # %bb.0:891; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu892; CHECK-NEXT: vfmv.v.f v9, fa0893; CHECK-NEXT: vmfeq.vv v10, v8, v8894; CHECK-NEXT: vmfeq.vf v9, v9, fa0895; CHECK-NEXT: vmand.mm v0, v9, v10896; CHECK-NEXT: vmv1r.v v9, v0897; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t898; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t899; CHECK-NEXT: vmor.mm v0, v0, v9900; CHECK-NEXT: ret901 %head = insertelement <2 x half> poison, half %b, i32 0902 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer903 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp904 ret <2 x i1> %1905}906 907define <2 x i1> @fcmp_ord_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {908; CHECK-LABEL: fcmp_ord_vv_v2f16:909; CHECK: # %bb.0:910; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma911; CHECK-NEXT: vmfeq.vv v9, v9, v9912; CHECK-NEXT: vmfeq.vv v8, v8, v8913; CHECK-NEXT: vmand.mm v0, v8, v9914; CHECK-NEXT: ret915 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp916 ret <2 x i1> %1917}918 919define <2 x i1> @fcmp_ord_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {920; CHECK-LABEL: fcmp_ord_vf_v2f16:921; CHECK: # %bb.0:922; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma923; CHECK-NEXT: vfmv.v.f v9, fa0924; CHECK-NEXT: vmfeq.vf v9, v9, fa0925; CHECK-NEXT: vmfeq.vv v8, v8, v8926; CHECK-NEXT: vmand.mm v0, v8, v9927; CHECK-NEXT: ret928 %head = insertelement <2 x half> poison, half %b, i32 0929 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer930 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp931 ret <2 x i1> %1932}933 934define <2 x i1> @fcmp_ord_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {935; CHECK-LABEL: fcmp_ord_fv_v2f16:936; CHECK: # %bb.0:937; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma938; CHECK-NEXT: vfmv.v.f v9, fa0939; CHECK-NEXT: vmfeq.vf v9, v9, fa0940; CHECK-NEXT: vmfeq.vv v8, v8, v8941; CHECK-NEXT: vmand.mm v0, v9, v8942; CHECK-NEXT: ret943 %head = insertelement <2 x half> poison, half %b, i32 0944 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer945 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp946 ret <2 x i1> %1947}948 949define <2 x i1> @fcmp_ueq_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {950; CHECK-LABEL: fcmp_ueq_vv_v2f16:951; CHECK: # %bb.0:952; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu953; CHECK-NEXT: vmfeq.vv v10, v9, v9954; CHECK-NEXT: vmfeq.vv v11, v8, v8955; CHECK-NEXT: vmand.mm v0, v11, v10956; CHECK-NEXT: vmv1r.v v10, v0957; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t958; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t959; CHECK-NEXT: vmnor.mm v0, v0, v10960; CHECK-NEXT: ret961 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp962 ret <2 x i1> %1963}964 965define <2 x i1> @fcmp_ueq_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {966; CHECK-LABEL: fcmp_ueq_vf_v2f16:967; CHECK: # %bb.0:968; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu969; CHECK-NEXT: vfmv.v.f v9, fa0970; CHECK-NEXT: vmfeq.vv v10, v8, v8971; CHECK-NEXT: vmfeq.vf v9, v9, fa0972; CHECK-NEXT: vmand.mm v0, v10, v9973; CHECK-NEXT: vmv1r.v v9, v0974; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t975; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t976; CHECK-NEXT: vmnor.mm v0, v0, v9977; CHECK-NEXT: ret978 %head = insertelement <2 x half> poison, half %b, i32 0979 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer980 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp981 ret <2 x i1> %1982}983 984define <2 x i1> @fcmp_ueq_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {985; CHECK-LABEL: fcmp_ueq_fv_v2f16:986; CHECK: # %bb.0:987; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu988; CHECK-NEXT: vfmv.v.f v9, fa0989; CHECK-NEXT: vmfeq.vv v10, v8, v8990; CHECK-NEXT: vmfeq.vf v9, v9, fa0991; CHECK-NEXT: vmand.mm v0, v9, v10992; CHECK-NEXT: vmv1r.v v9, v0993; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t994; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t995; CHECK-NEXT: vmnor.mm v0, v0, v9996; CHECK-NEXT: ret997 %head = insertelement <2 x half> poison, half %b, i32 0998 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer999 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp1000 ret <2 x i1> %11001}1002 1003define <2 x i1> @fcmp_ugt_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {1004; CHECK-LABEL: fcmp_ugt_vv_v2f16:1005; CHECK: # %bb.0:1006; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu1007; CHECK-NEXT: vmfeq.vv v10, v9, v91008; CHECK-NEXT: vmfeq.vv v11, v8, v81009; CHECK-NEXT: vmand.mm v0, v11, v101010; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t1011; CHECK-NEXT: vmnot.m v0, v01012; CHECK-NEXT: ret1013 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp1014 ret <2 x i1> %11015}1016 1017define <2 x i1> @fcmp_ugt_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {1018; CHECK-LABEL: fcmp_ugt_vf_v2f16:1019; CHECK: # %bb.0:1020; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu1021; CHECK-NEXT: vfmv.v.f v9, fa01022; CHECK-NEXT: vmfeq.vv v10, v8, v81023; CHECK-NEXT: vmfeq.vf v9, v9, fa01024; CHECK-NEXT: vmand.mm v0, v10, v91025; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t1026; CHECK-NEXT: vmnot.m v0, v01027; CHECK-NEXT: ret1028 %head = insertelement <2 x half> poison, half %b, i32 01029 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer1030 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp1031 ret <2 x i1> %11032}1033 1034define <2 x i1> @fcmp_ugt_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {1035; CHECK-LABEL: fcmp_ugt_fv_v2f16:1036; CHECK: # %bb.0:1037; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu1038; CHECK-NEXT: vfmv.v.f v9, fa01039; CHECK-NEXT: vmfeq.vv v10, v8, v81040; CHECK-NEXT: vmfeq.vf v9, v9, fa01041; CHECK-NEXT: vmand.mm v0, v9, v101042; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t1043; CHECK-NEXT: vmnot.m v0, v01044; CHECK-NEXT: ret1045 %head = insertelement <2 x half> poison, half %b, i32 01046 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer1047 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp1048 ret <2 x i1> %11049}1050 1051define <2 x i1> @fcmp_uge_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {1052; CHECK-LABEL: fcmp_uge_vv_v2f16:1053; CHECK: # %bb.0:1054; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu1055; CHECK-NEXT: vmfeq.vv v10, v9, v91056; CHECK-NEXT: vmfeq.vv v11, v8, v81057; CHECK-NEXT: vmand.mm v0, v11, v101058; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t1059; CHECK-NEXT: vmnot.m v0, v01060; CHECK-NEXT: ret1061 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp1062 ret <2 x i1> %11063}1064 1065define <2 x i1> @fcmp_uge_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {1066; CHECK-LABEL: fcmp_uge_vf_v2f16:1067; CHECK: # %bb.0:1068; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu1069; CHECK-NEXT: vfmv.v.f v9, fa01070; CHECK-NEXT: vmfeq.vv v10, v8, v81071; CHECK-NEXT: vmfeq.vf v9, v9, fa01072; CHECK-NEXT: vmand.mm v0, v10, v91073; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t1074; CHECK-NEXT: vmnot.m v0, v01075; CHECK-NEXT: ret1076 %head = insertelement <2 x half> poison, half %b, i32 01077 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer1078 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp1079 ret <2 x i1> %11080}1081 1082define <2 x i1> @fcmp_uge_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {1083; CHECK-LABEL: fcmp_uge_fv_v2f16:1084; CHECK: # %bb.0:1085; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu1086; CHECK-NEXT: vfmv.v.f v9, fa01087; CHECK-NEXT: vmfeq.vv v10, v8, v81088; CHECK-NEXT: vmfeq.vf v9, v9, fa01089; CHECK-NEXT: vmand.mm v0, v9, v101090; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t1091; CHECK-NEXT: vmnot.m v0, v01092; CHECK-NEXT: ret1093 %head = insertelement <2 x half> poison, half %b, i32 01094 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer1095 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp1096 ret <2 x i1> %11097}1098 1099define <2 x i1> @fcmp_ult_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {1100; CHECK-LABEL: fcmp_ult_vv_v2f16:1101; CHECK: # %bb.0:1102; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu1103; CHECK-NEXT: vmfeq.vv v10, v8, v81104; CHECK-NEXT: vmfeq.vv v11, v9, v91105; CHECK-NEXT: vmand.mm v0, v11, v101106; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t1107; CHECK-NEXT: vmnot.m v0, v01108; CHECK-NEXT: ret1109 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp1110 ret <2 x i1> %11111}1112 1113define <2 x i1> @fcmp_ult_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {1114; CHECK-LABEL: fcmp_ult_vf_v2f16:1115; CHECK: # %bb.0:1116; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu1117; CHECK-NEXT: vfmv.v.f v9, fa01118; CHECK-NEXT: vmfeq.vv v10, v8, v81119; CHECK-NEXT: vmfeq.vf v9, v9, fa01120; CHECK-NEXT: vmand.mm v0, v9, v101121; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t1122; CHECK-NEXT: vmnot.m v0, v01123; CHECK-NEXT: ret1124 %head = insertelement <2 x half> poison, half %b, i32 01125 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer1126 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp1127 ret <2 x i1> %11128}1129 1130define <2 x i1> @fcmp_ult_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {1131; CHECK-LABEL: fcmp_ult_fv_v2f16:1132; CHECK: # %bb.0:1133; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu1134; CHECK-NEXT: vfmv.v.f v9, fa01135; CHECK-NEXT: vmfeq.vv v10, v8, v81136; CHECK-NEXT: vmfeq.vf v9, v9, fa01137; CHECK-NEXT: vmand.mm v0, v10, v91138; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t1139; CHECK-NEXT: vmnot.m v0, v01140; CHECK-NEXT: ret1141 %head = insertelement <2 x half> poison, half %b, i32 01142 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer1143 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp1144 ret <2 x i1> %11145}1146 1147define <2 x i1> @fcmp_ule_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {1148; CHECK-LABEL: fcmp_ule_vv_v2f16:1149; CHECK: # %bb.0:1150; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu1151; CHECK-NEXT: vmfeq.vv v10, v8, v81152; CHECK-NEXT: vmfeq.vv v11, v9, v91153; CHECK-NEXT: vmand.mm v0, v11, v101154; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t1155; CHECK-NEXT: vmnot.m v0, v01156; CHECK-NEXT: ret1157 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp1158 ret <2 x i1> %11159}1160 1161define <2 x i1> @fcmp_ule_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {1162; CHECK-LABEL: fcmp_ule_vf_v2f16:1163; CHECK: # %bb.0:1164; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu1165; CHECK-NEXT: vfmv.v.f v9, fa01166; CHECK-NEXT: vmfeq.vv v10, v8, v81167; CHECK-NEXT: vmfeq.vf v9, v9, fa01168; CHECK-NEXT: vmand.mm v0, v9, v101169; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t1170; CHECK-NEXT: vmnot.m v0, v01171; CHECK-NEXT: ret1172 %head = insertelement <2 x half> poison, half %b, i32 01173 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer1174 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp1175 ret <2 x i1> %11176}1177 1178define <2 x i1> @fcmp_ule_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {1179; CHECK-LABEL: fcmp_ule_fv_v2f16:1180; CHECK: # %bb.0:1181; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu1182; CHECK-NEXT: vfmv.v.f v9, fa01183; CHECK-NEXT: vmfeq.vv v10, v8, v81184; CHECK-NEXT: vmfeq.vf v9, v9, fa01185; CHECK-NEXT: vmand.mm v0, v10, v91186; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t1187; CHECK-NEXT: vmnot.m v0, v01188; CHECK-NEXT: ret1189 %head = insertelement <2 x half> poison, half %b, i32 01190 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer1191 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp1192 ret <2 x i1> %11193}1194 1195define <2 x i1> @fcmp_une_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {1196; CHECK-LABEL: fcmp_une_vv_v2f16:1197; CHECK: # %bb.0:1198; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma1199; CHECK-NEXT: vmfne.vv v0, v8, v91200; CHECK-NEXT: ret1201 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp1202 ret <2 x i1> %11203}1204 1205define <2 x i1> @fcmp_une_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {1206; CHECK-LABEL: fcmp_une_vf_v2f16:1207; CHECK: # %bb.0:1208; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma1209; CHECK-NEXT: vmfne.vf v0, v8, fa01210; CHECK-NEXT: ret1211 %head = insertelement <2 x half> poison, half %b, i32 01212 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer1213 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp1214 ret <2 x i1> %11215}1216 1217define <2 x i1> @fcmp_une_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {1218; CHECK-LABEL: fcmp_une_fv_v2f16:1219; CHECK: # %bb.0:1220; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma1221; CHECK-NEXT: vmfne.vf v0, v8, fa01222; CHECK-NEXT: ret1223 %head = insertelement <2 x half> poison, half %b, i32 01224 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer1225 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp1226 ret <2 x i1> %11227}1228 1229define <2 x i1> @fcmp_uno_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {1230; CHECK-LABEL: fcmp_uno_vv_v2f16:1231; CHECK: # %bb.0:1232; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma1233; CHECK-NEXT: vmfne.vv v9, v9, v91234; CHECK-NEXT: vmfne.vv v8, v8, v81235; CHECK-NEXT: vmor.mm v0, v8, v91236; CHECK-NEXT: ret1237 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp1238 ret <2 x i1> %11239}1240 1241define <2 x i1> @fcmp_uno_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {1242; CHECK-LABEL: fcmp_uno_vf_v2f16:1243; CHECK: # %bb.0:1244; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma1245; CHECK-NEXT: vfmv.v.f v9, fa01246; CHECK-NEXT: vmfne.vf v9, v9, fa01247; CHECK-NEXT: vmfne.vv v8, v8, v81248; CHECK-NEXT: vmor.mm v0, v8, v91249; CHECK-NEXT: ret1250 %head = insertelement <2 x half> poison, half %b, i32 01251 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer1252 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp1253 ret <2 x i1> %11254}1255 1256define <2 x i1> @fcmp_uno_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {1257; CHECK-LABEL: fcmp_uno_fv_v2f16:1258; CHECK: # %bb.0:1259; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma1260; CHECK-NEXT: vfmv.v.f v9, fa01261; CHECK-NEXT: vmfne.vf v9, v9, fa01262; CHECK-NEXT: vmfne.vv v8, v8, v81263; CHECK-NEXT: vmor.mm v0, v9, v81264; CHECK-NEXT: ret1265 %head = insertelement <2 x half> poison, half %b, i32 01266 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer1267 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp1268 ret <2 x i1> %11269}1270 1271define <4 x i1> @fcmp_oeq_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1272; CHECK-LABEL: fcmp_oeq_vv_v4f16:1273; CHECK: # %bb.0:1274; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1275; CHECK-NEXT: vmfeq.vv v0, v8, v91276; CHECK-NEXT: ret1277 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp1278 ret <4 x i1> %11279}1280 1281define <4 x i1> @fcmp_oeq_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1282; CHECK-LABEL: fcmp_oeq_vf_v4f16:1283; CHECK: # %bb.0:1284; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1285; CHECK-NEXT: vmfeq.vf v0, v8, fa01286; CHECK-NEXT: ret1287 %head = insertelement <4 x half> poison, half %b, i32 01288 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1289 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp1290 ret <4 x i1> %11291}1292 1293define <4 x i1> @fcmp_oeq_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1294; CHECK-LABEL: fcmp_oeq_fv_v4f16:1295; CHECK: # %bb.0:1296; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1297; CHECK-NEXT: vmfeq.vf v0, v8, fa01298; CHECK-NEXT: ret1299 %head = insertelement <4 x half> poison, half %b, i32 01300 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1301 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp1302 ret <4 x i1> %11303}1304 1305define <4 x i1> @fcmp_ogt_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1306; CHECK-LABEL: fcmp_ogt_vv_v4f16:1307; CHECK: # %bb.0:1308; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1309; CHECK-NEXT: vmfeq.vv v10, v8, v81310; CHECK-NEXT: vmfeq.vv v11, v9, v91311; CHECK-NEXT: vmand.mm v0, v11, v101312; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t1313; CHECK-NEXT: ret1314 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp1315 ret <4 x i1> %11316}1317 1318define <4 x i1> @fcmp_ogt_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1319; CHECK-LABEL: fcmp_ogt_vf_v4f16:1320; CHECK: # %bb.0:1321; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1322; CHECK-NEXT: vfmv.v.f v9, fa01323; CHECK-NEXT: vmfeq.vv v10, v8, v81324; CHECK-NEXT: vmfeq.vf v9, v9, fa01325; CHECK-NEXT: vmand.mm v0, v9, v101326; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t1327; CHECK-NEXT: ret1328 %head = insertelement <4 x half> poison, half %b, i32 01329 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1330 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp1331 ret <4 x i1> %11332}1333 1334define <4 x i1> @fcmp_ogt_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1335; CHECK-LABEL: fcmp_ogt_fv_v4f16:1336; CHECK: # %bb.0:1337; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1338; CHECK-NEXT: vfmv.v.f v9, fa01339; CHECK-NEXT: vmfeq.vv v10, v8, v81340; CHECK-NEXT: vmfeq.vf v9, v9, fa01341; CHECK-NEXT: vmand.mm v0, v10, v91342; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t1343; CHECK-NEXT: ret1344 %head = insertelement <4 x half> poison, half %b, i32 01345 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1346 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp1347 ret <4 x i1> %11348}1349 1350define <4 x i1> @fcmp_oge_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1351; CHECK-LABEL: fcmp_oge_vv_v4f16:1352; CHECK: # %bb.0:1353; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1354; CHECK-NEXT: vmfeq.vv v10, v8, v81355; CHECK-NEXT: vmfeq.vv v11, v9, v91356; CHECK-NEXT: vmand.mm v0, v11, v101357; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t1358; CHECK-NEXT: ret1359 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp1360 ret <4 x i1> %11361}1362 1363define <4 x i1> @fcmp_oge_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1364; CHECK-LABEL: fcmp_oge_vf_v4f16:1365; CHECK: # %bb.0:1366; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1367; CHECK-NEXT: vfmv.v.f v9, fa01368; CHECK-NEXT: vmfeq.vv v10, v8, v81369; CHECK-NEXT: vmfeq.vf v9, v9, fa01370; CHECK-NEXT: vmand.mm v0, v9, v101371; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t1372; CHECK-NEXT: ret1373 %head = insertelement <4 x half> poison, half %b, i32 01374 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1375 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp1376 ret <4 x i1> %11377}1378 1379define <4 x i1> @fcmp_oge_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1380; CHECK-LABEL: fcmp_oge_fv_v4f16:1381; CHECK: # %bb.0:1382; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1383; CHECK-NEXT: vfmv.v.f v9, fa01384; CHECK-NEXT: vmfeq.vv v10, v8, v81385; CHECK-NEXT: vmfeq.vf v9, v9, fa01386; CHECK-NEXT: vmand.mm v0, v10, v91387; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t1388; CHECK-NEXT: ret1389 %head = insertelement <4 x half> poison, half %b, i32 01390 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1391 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp1392 ret <4 x i1> %11393}1394 1395define <4 x i1> @fcmp_olt_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1396; CHECK-LABEL: fcmp_olt_vv_v4f16:1397; CHECK: # %bb.0:1398; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1399; CHECK-NEXT: vmfeq.vv v10, v9, v91400; CHECK-NEXT: vmfeq.vv v11, v8, v81401; CHECK-NEXT: vmand.mm v0, v11, v101402; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t1403; CHECK-NEXT: ret1404 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp1405 ret <4 x i1> %11406}1407 1408define <4 x i1> @fcmp_olt_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1409; CHECK-LABEL: fcmp_olt_vf_v4f16:1410; CHECK: # %bb.0:1411; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1412; CHECK-NEXT: vfmv.v.f v9, fa01413; CHECK-NEXT: vmfeq.vv v10, v8, v81414; CHECK-NEXT: vmfeq.vf v9, v9, fa01415; CHECK-NEXT: vmand.mm v0, v10, v91416; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t1417; CHECK-NEXT: ret1418 %head = insertelement <4 x half> poison, half %b, i32 01419 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1420 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp1421 ret <4 x i1> %11422}1423 1424define <4 x i1> @fcmp_olt_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1425; CHECK-LABEL: fcmp_olt_fv_v4f16:1426; CHECK: # %bb.0:1427; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1428; CHECK-NEXT: vfmv.v.f v9, fa01429; CHECK-NEXT: vmfeq.vv v10, v8, v81430; CHECK-NEXT: vmfeq.vf v9, v9, fa01431; CHECK-NEXT: vmand.mm v0, v9, v101432; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t1433; CHECK-NEXT: ret1434 %head = insertelement <4 x half> poison, half %b, i32 01435 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1436 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp1437 ret <4 x i1> %11438}1439 1440define <4 x i1> @fcmp_ole_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1441; CHECK-LABEL: fcmp_ole_vv_v4f16:1442; CHECK: # %bb.0:1443; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1444; CHECK-NEXT: vmfeq.vv v10, v9, v91445; CHECK-NEXT: vmfeq.vv v11, v8, v81446; CHECK-NEXT: vmand.mm v0, v11, v101447; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t1448; CHECK-NEXT: ret1449 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp1450 ret <4 x i1> %11451}1452 1453define <4 x i1> @fcmp_ole_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1454; CHECK-LABEL: fcmp_ole_vf_v4f16:1455; CHECK: # %bb.0:1456; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1457; CHECK-NEXT: vfmv.v.f v9, fa01458; CHECK-NEXT: vmfeq.vv v10, v8, v81459; CHECK-NEXT: vmfeq.vf v9, v9, fa01460; CHECK-NEXT: vmand.mm v0, v10, v91461; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t1462; CHECK-NEXT: ret1463 %head = insertelement <4 x half> poison, half %b, i32 01464 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1465 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp1466 ret <4 x i1> %11467}1468 1469define <4 x i1> @fcmp_ole_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1470; CHECK-LABEL: fcmp_ole_fv_v4f16:1471; CHECK: # %bb.0:1472; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1473; CHECK-NEXT: vfmv.v.f v9, fa01474; CHECK-NEXT: vmfeq.vv v10, v8, v81475; CHECK-NEXT: vmfeq.vf v9, v9, fa01476; CHECK-NEXT: vmand.mm v0, v9, v101477; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t1478; CHECK-NEXT: ret1479 %head = insertelement <4 x half> poison, half %b, i32 01480 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1481 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp1482 ret <4 x i1> %11483}1484 1485define <4 x i1> @fcmp_one_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1486; CHECK-LABEL: fcmp_one_vv_v4f16:1487; CHECK: # %bb.0:1488; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1489; CHECK-NEXT: vmfeq.vv v10, v9, v91490; CHECK-NEXT: vmfeq.vv v11, v8, v81491; CHECK-NEXT: vmand.mm v0, v11, v101492; CHECK-NEXT: vmv1r.v v10, v01493; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t1494; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t1495; CHECK-NEXT: vmor.mm v0, v0, v101496; CHECK-NEXT: ret1497 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp1498 ret <4 x i1> %11499}1500 1501define <4 x i1> @fcmp_one_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1502; CHECK-LABEL: fcmp_one_vf_v4f16:1503; CHECK: # %bb.0:1504; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1505; CHECK-NEXT: vfmv.v.f v9, fa01506; CHECK-NEXT: vmfeq.vv v10, v8, v81507; CHECK-NEXT: vmfeq.vf v9, v9, fa01508; CHECK-NEXT: vmand.mm v0, v10, v91509; CHECK-NEXT: vmv1r.v v9, v01510; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t1511; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t1512; CHECK-NEXT: vmor.mm v0, v0, v91513; CHECK-NEXT: ret1514 %head = insertelement <4 x half> poison, half %b, i32 01515 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1516 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp1517 ret <4 x i1> %11518}1519 1520define <4 x i1> @fcmp_one_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1521; CHECK-LABEL: fcmp_one_fv_v4f16:1522; CHECK: # %bb.0:1523; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1524; CHECK-NEXT: vfmv.v.f v9, fa01525; CHECK-NEXT: vmfeq.vv v10, v8, v81526; CHECK-NEXT: vmfeq.vf v9, v9, fa01527; CHECK-NEXT: vmand.mm v0, v9, v101528; CHECK-NEXT: vmv1r.v v9, v01529; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t1530; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t1531; CHECK-NEXT: vmor.mm v0, v0, v91532; CHECK-NEXT: ret1533 %head = insertelement <4 x half> poison, half %b, i32 01534 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1535 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp1536 ret <4 x i1> %11537}1538 1539define <4 x i1> @fcmp_ord_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1540; CHECK-LABEL: fcmp_ord_vv_v4f16:1541; CHECK: # %bb.0:1542; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1543; CHECK-NEXT: vmfeq.vv v9, v9, v91544; CHECK-NEXT: vmfeq.vv v8, v8, v81545; CHECK-NEXT: vmand.mm v0, v8, v91546; CHECK-NEXT: ret1547 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp1548 ret <4 x i1> %11549}1550 1551define <4 x i1> @fcmp_ord_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1552; CHECK-LABEL: fcmp_ord_vf_v4f16:1553; CHECK: # %bb.0:1554; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1555; CHECK-NEXT: vfmv.v.f v9, fa01556; CHECK-NEXT: vmfeq.vf v9, v9, fa01557; CHECK-NEXT: vmfeq.vv v8, v8, v81558; CHECK-NEXT: vmand.mm v0, v8, v91559; CHECK-NEXT: ret1560 %head = insertelement <4 x half> poison, half %b, i32 01561 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1562 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp1563 ret <4 x i1> %11564}1565 1566define <4 x i1> @fcmp_ord_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1567; CHECK-LABEL: fcmp_ord_fv_v4f16:1568; CHECK: # %bb.0:1569; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1570; CHECK-NEXT: vfmv.v.f v9, fa01571; CHECK-NEXT: vmfeq.vf v9, v9, fa01572; CHECK-NEXT: vmfeq.vv v8, v8, v81573; CHECK-NEXT: vmand.mm v0, v9, v81574; CHECK-NEXT: ret1575 %head = insertelement <4 x half> poison, half %b, i32 01576 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1577 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp1578 ret <4 x i1> %11579}1580 1581define <4 x i1> @fcmp_ueq_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1582; CHECK-LABEL: fcmp_ueq_vv_v4f16:1583; CHECK: # %bb.0:1584; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1585; CHECK-NEXT: vmfeq.vv v10, v9, v91586; CHECK-NEXT: vmfeq.vv v11, v8, v81587; CHECK-NEXT: vmand.mm v0, v11, v101588; CHECK-NEXT: vmv1r.v v10, v01589; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t1590; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t1591; CHECK-NEXT: vmnor.mm v0, v0, v101592; CHECK-NEXT: ret1593 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp1594 ret <4 x i1> %11595}1596 1597define <4 x i1> @fcmp_ueq_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1598; CHECK-LABEL: fcmp_ueq_vf_v4f16:1599; CHECK: # %bb.0:1600; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1601; CHECK-NEXT: vfmv.v.f v9, fa01602; CHECK-NEXT: vmfeq.vv v10, v8, v81603; CHECK-NEXT: vmfeq.vf v9, v9, fa01604; CHECK-NEXT: vmand.mm v0, v10, v91605; CHECK-NEXT: vmv1r.v v9, v01606; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t1607; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t1608; CHECK-NEXT: vmnor.mm v0, v0, v91609; CHECK-NEXT: ret1610 %head = insertelement <4 x half> poison, half %b, i32 01611 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1612 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp1613 ret <4 x i1> %11614}1615 1616define <4 x i1> @fcmp_ueq_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1617; CHECK-LABEL: fcmp_ueq_fv_v4f16:1618; CHECK: # %bb.0:1619; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1620; CHECK-NEXT: vfmv.v.f v9, fa01621; CHECK-NEXT: vmfeq.vv v10, v8, v81622; CHECK-NEXT: vmfeq.vf v9, v9, fa01623; CHECK-NEXT: vmand.mm v0, v9, v101624; CHECK-NEXT: vmv1r.v v9, v01625; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t1626; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t1627; CHECK-NEXT: vmnor.mm v0, v0, v91628; CHECK-NEXT: ret1629 %head = insertelement <4 x half> poison, half %b, i32 01630 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1631 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp1632 ret <4 x i1> %11633}1634 1635define <4 x i1> @fcmp_ugt_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1636; CHECK-LABEL: fcmp_ugt_vv_v4f16:1637; CHECK: # %bb.0:1638; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1639; CHECK-NEXT: vmfeq.vv v10, v9, v91640; CHECK-NEXT: vmfeq.vv v11, v8, v81641; CHECK-NEXT: vmand.mm v0, v11, v101642; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t1643; CHECK-NEXT: vmnot.m v0, v01644; CHECK-NEXT: ret1645 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp1646 ret <4 x i1> %11647}1648 1649define <4 x i1> @fcmp_ugt_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1650; CHECK-LABEL: fcmp_ugt_vf_v4f16:1651; CHECK: # %bb.0:1652; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1653; CHECK-NEXT: vfmv.v.f v9, fa01654; CHECK-NEXT: vmfeq.vv v10, v8, v81655; CHECK-NEXT: vmfeq.vf v9, v9, fa01656; CHECK-NEXT: vmand.mm v0, v10, v91657; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t1658; CHECK-NEXT: vmnot.m v0, v01659; CHECK-NEXT: ret1660 %head = insertelement <4 x half> poison, half %b, i32 01661 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1662 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp1663 ret <4 x i1> %11664}1665 1666define <4 x i1> @fcmp_ugt_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1667; CHECK-LABEL: fcmp_ugt_fv_v4f16:1668; CHECK: # %bb.0:1669; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1670; CHECK-NEXT: vfmv.v.f v9, fa01671; CHECK-NEXT: vmfeq.vv v10, v8, v81672; CHECK-NEXT: vmfeq.vf v9, v9, fa01673; CHECK-NEXT: vmand.mm v0, v9, v101674; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t1675; CHECK-NEXT: vmnot.m v0, v01676; CHECK-NEXT: ret1677 %head = insertelement <4 x half> poison, half %b, i32 01678 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1679 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp1680 ret <4 x i1> %11681}1682 1683define <4 x i1> @fcmp_uge_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1684; CHECK-LABEL: fcmp_uge_vv_v4f16:1685; CHECK: # %bb.0:1686; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1687; CHECK-NEXT: vmfeq.vv v10, v9, v91688; CHECK-NEXT: vmfeq.vv v11, v8, v81689; CHECK-NEXT: vmand.mm v0, v11, v101690; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t1691; CHECK-NEXT: vmnot.m v0, v01692; CHECK-NEXT: ret1693 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp1694 ret <4 x i1> %11695}1696 1697define <4 x i1> @fcmp_uge_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1698; CHECK-LABEL: fcmp_uge_vf_v4f16:1699; CHECK: # %bb.0:1700; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1701; CHECK-NEXT: vfmv.v.f v9, fa01702; CHECK-NEXT: vmfeq.vv v10, v8, v81703; CHECK-NEXT: vmfeq.vf v9, v9, fa01704; CHECK-NEXT: vmand.mm v0, v10, v91705; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t1706; CHECK-NEXT: vmnot.m v0, v01707; CHECK-NEXT: ret1708 %head = insertelement <4 x half> poison, half %b, i32 01709 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1710 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp1711 ret <4 x i1> %11712}1713 1714define <4 x i1> @fcmp_uge_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1715; CHECK-LABEL: fcmp_uge_fv_v4f16:1716; CHECK: # %bb.0:1717; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1718; CHECK-NEXT: vfmv.v.f v9, fa01719; CHECK-NEXT: vmfeq.vv v10, v8, v81720; CHECK-NEXT: vmfeq.vf v9, v9, fa01721; CHECK-NEXT: vmand.mm v0, v9, v101722; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t1723; CHECK-NEXT: vmnot.m v0, v01724; CHECK-NEXT: ret1725 %head = insertelement <4 x half> poison, half %b, i32 01726 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1727 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp1728 ret <4 x i1> %11729}1730 1731define <4 x i1> @fcmp_ult_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1732; CHECK-LABEL: fcmp_ult_vv_v4f16:1733; CHECK: # %bb.0:1734; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1735; CHECK-NEXT: vmfeq.vv v10, v8, v81736; CHECK-NEXT: vmfeq.vv v11, v9, v91737; CHECK-NEXT: vmand.mm v0, v11, v101738; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t1739; CHECK-NEXT: vmnot.m v0, v01740; CHECK-NEXT: ret1741 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp1742 ret <4 x i1> %11743}1744 1745define <4 x i1> @fcmp_ult_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1746; CHECK-LABEL: fcmp_ult_vf_v4f16:1747; CHECK: # %bb.0:1748; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1749; CHECK-NEXT: vfmv.v.f v9, fa01750; CHECK-NEXT: vmfeq.vv v10, v8, v81751; CHECK-NEXT: vmfeq.vf v9, v9, fa01752; CHECK-NEXT: vmand.mm v0, v9, v101753; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t1754; CHECK-NEXT: vmnot.m v0, v01755; CHECK-NEXT: ret1756 %head = insertelement <4 x half> poison, half %b, i32 01757 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1758 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp1759 ret <4 x i1> %11760}1761 1762define <4 x i1> @fcmp_ult_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1763; CHECK-LABEL: fcmp_ult_fv_v4f16:1764; CHECK: # %bb.0:1765; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1766; CHECK-NEXT: vfmv.v.f v9, fa01767; CHECK-NEXT: vmfeq.vv v10, v8, v81768; CHECK-NEXT: vmfeq.vf v9, v9, fa01769; CHECK-NEXT: vmand.mm v0, v10, v91770; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t1771; CHECK-NEXT: vmnot.m v0, v01772; CHECK-NEXT: ret1773 %head = insertelement <4 x half> poison, half %b, i32 01774 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1775 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp1776 ret <4 x i1> %11777}1778 1779define <4 x i1> @fcmp_ule_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1780; CHECK-LABEL: fcmp_ule_vv_v4f16:1781; CHECK: # %bb.0:1782; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1783; CHECK-NEXT: vmfeq.vv v10, v8, v81784; CHECK-NEXT: vmfeq.vv v11, v9, v91785; CHECK-NEXT: vmand.mm v0, v11, v101786; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t1787; CHECK-NEXT: vmnot.m v0, v01788; CHECK-NEXT: ret1789 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp1790 ret <4 x i1> %11791}1792 1793define <4 x i1> @fcmp_ule_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1794; CHECK-LABEL: fcmp_ule_vf_v4f16:1795; CHECK: # %bb.0:1796; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1797; CHECK-NEXT: vfmv.v.f v9, fa01798; CHECK-NEXT: vmfeq.vv v10, v8, v81799; CHECK-NEXT: vmfeq.vf v9, v9, fa01800; CHECK-NEXT: vmand.mm v0, v9, v101801; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t1802; CHECK-NEXT: vmnot.m v0, v01803; CHECK-NEXT: ret1804 %head = insertelement <4 x half> poison, half %b, i32 01805 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1806 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp1807 ret <4 x i1> %11808}1809 1810define <4 x i1> @fcmp_ule_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1811; CHECK-LABEL: fcmp_ule_fv_v4f16:1812; CHECK: # %bb.0:1813; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu1814; CHECK-NEXT: vfmv.v.f v9, fa01815; CHECK-NEXT: vmfeq.vv v10, v8, v81816; CHECK-NEXT: vmfeq.vf v9, v9, fa01817; CHECK-NEXT: vmand.mm v0, v10, v91818; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t1819; CHECK-NEXT: vmnot.m v0, v01820; CHECK-NEXT: ret1821 %head = insertelement <4 x half> poison, half %b, i32 01822 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1823 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp1824 ret <4 x i1> %11825}1826 1827define <4 x i1> @fcmp_une_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1828; CHECK-LABEL: fcmp_une_vv_v4f16:1829; CHECK: # %bb.0:1830; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1831; CHECK-NEXT: vmfne.vv v0, v8, v91832; CHECK-NEXT: ret1833 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp1834 ret <4 x i1> %11835}1836 1837define <4 x i1> @fcmp_une_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1838; CHECK-LABEL: fcmp_une_vf_v4f16:1839; CHECK: # %bb.0:1840; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1841; CHECK-NEXT: vmfne.vf v0, v8, fa01842; CHECK-NEXT: ret1843 %head = insertelement <4 x half> poison, half %b, i32 01844 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1845 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp1846 ret <4 x i1> %11847}1848 1849define <4 x i1> @fcmp_une_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1850; CHECK-LABEL: fcmp_une_fv_v4f16:1851; CHECK: # %bb.0:1852; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1853; CHECK-NEXT: vmfne.vf v0, v8, fa01854; CHECK-NEXT: ret1855 %head = insertelement <4 x half> poison, half %b, i32 01856 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1857 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp1858 ret <4 x i1> %11859}1860 1861define <4 x i1> @fcmp_uno_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1862; CHECK-LABEL: fcmp_uno_vv_v4f16:1863; CHECK: # %bb.0:1864; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1865; CHECK-NEXT: vmfne.vv v9, v9, v91866; CHECK-NEXT: vmfne.vv v8, v8, v81867; CHECK-NEXT: vmor.mm v0, v8, v91868; CHECK-NEXT: ret1869 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp1870 ret <4 x i1> %11871}1872 1873define <4 x i1> @fcmp_uno_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1874; CHECK-LABEL: fcmp_uno_vf_v4f16:1875; CHECK: # %bb.0:1876; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1877; CHECK-NEXT: vfmv.v.f v9, fa01878; CHECK-NEXT: vmfne.vf v9, v9, fa01879; CHECK-NEXT: vmfne.vv v8, v8, v81880; CHECK-NEXT: vmor.mm v0, v8, v91881; CHECK-NEXT: ret1882 %head = insertelement <4 x half> poison, half %b, i32 01883 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1884 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp1885 ret <4 x i1> %11886}1887 1888define <4 x i1> @fcmp_uno_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1889; CHECK-LABEL: fcmp_uno_fv_v4f16:1890; CHECK: # %bb.0:1891; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1892; CHECK-NEXT: vfmv.v.f v9, fa01893; CHECK-NEXT: vmfne.vf v9, v9, fa01894; CHECK-NEXT: vmfne.vv v8, v8, v81895; CHECK-NEXT: vmor.mm v0, v9, v81896; CHECK-NEXT: ret1897 %head = insertelement <4 x half> poison, half %b, i32 01898 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1899 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp1900 ret <4 x i1> %11901}1902 1903define <8 x i1> @fcmp_oeq_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {1904; CHECK-LABEL: fcmp_oeq_vv_v8f16:1905; CHECK: # %bb.0:1906; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1907; CHECK-NEXT: vmfeq.vv v0, v8, v91908; CHECK-NEXT: ret1909 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp1910 ret <8 x i1> %11911}1912 1913define <8 x i1> @fcmp_oeq_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {1914; CHECK-LABEL: fcmp_oeq_vf_v8f16:1915; CHECK: # %bb.0:1916; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1917; CHECK-NEXT: vmfeq.vf v0, v8, fa01918; CHECK-NEXT: ret1919 %head = insertelement <8 x half> poison, half %b, i32 01920 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1921 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp1922 ret <8 x i1> %11923}1924 1925define <8 x i1> @fcmp_oeq_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {1926; CHECK-LABEL: fcmp_oeq_fv_v8f16:1927; CHECK: # %bb.0:1928; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1929; CHECK-NEXT: vmfeq.vf v0, v8, fa01930; CHECK-NEXT: ret1931 %head = insertelement <8 x half> poison, half %b, i32 01932 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1933 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp1934 ret <8 x i1> %11935}1936 1937define <8 x i1> @fcmp_ogt_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {1938; CHECK-LABEL: fcmp_ogt_vv_v8f16:1939; CHECK: # %bb.0:1940; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu1941; CHECK-NEXT: vmfeq.vv v10, v8, v81942; CHECK-NEXT: vmfeq.vv v11, v9, v91943; CHECK-NEXT: vmand.mm v0, v11, v101944; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t1945; CHECK-NEXT: ret1946 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp1947 ret <8 x i1> %11948}1949 1950define <8 x i1> @fcmp_ogt_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {1951; CHECK-LABEL: fcmp_ogt_vf_v8f16:1952; CHECK: # %bb.0:1953; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu1954; CHECK-NEXT: vfmv.v.f v9, fa01955; CHECK-NEXT: vmfeq.vv v10, v8, v81956; CHECK-NEXT: vmfeq.vf v9, v9, fa01957; CHECK-NEXT: vmand.mm v0, v9, v101958; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t1959; CHECK-NEXT: ret1960 %head = insertelement <8 x half> poison, half %b, i32 01961 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1962 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp1963 ret <8 x i1> %11964}1965 1966define <8 x i1> @fcmp_ogt_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {1967; CHECK-LABEL: fcmp_ogt_fv_v8f16:1968; CHECK: # %bb.0:1969; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu1970; CHECK-NEXT: vfmv.v.f v9, fa01971; CHECK-NEXT: vmfeq.vv v10, v8, v81972; CHECK-NEXT: vmfeq.vf v9, v9, fa01973; CHECK-NEXT: vmand.mm v0, v10, v91974; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t1975; CHECK-NEXT: ret1976 %head = insertelement <8 x half> poison, half %b, i32 01977 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1978 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp1979 ret <8 x i1> %11980}1981 1982define <8 x i1> @fcmp_oge_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {1983; CHECK-LABEL: fcmp_oge_vv_v8f16:1984; CHECK: # %bb.0:1985; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu1986; CHECK-NEXT: vmfeq.vv v10, v8, v81987; CHECK-NEXT: vmfeq.vv v11, v9, v91988; CHECK-NEXT: vmand.mm v0, v11, v101989; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t1990; CHECK-NEXT: ret1991 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp1992 ret <8 x i1> %11993}1994 1995define <8 x i1> @fcmp_oge_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {1996; CHECK-LABEL: fcmp_oge_vf_v8f16:1997; CHECK: # %bb.0:1998; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu1999; CHECK-NEXT: vfmv.v.f v9, fa02000; CHECK-NEXT: vmfeq.vv v10, v8, v82001; CHECK-NEXT: vmfeq.vf v9, v9, fa02002; CHECK-NEXT: vmand.mm v0, v9, v102003; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t2004; CHECK-NEXT: ret2005 %head = insertelement <8 x half> poison, half %b, i32 02006 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2007 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp2008 ret <8 x i1> %12009}2010 2011define <8 x i1> @fcmp_oge_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {2012; CHECK-LABEL: fcmp_oge_fv_v8f16:2013; CHECK: # %bb.0:2014; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2015; CHECK-NEXT: vfmv.v.f v9, fa02016; CHECK-NEXT: vmfeq.vv v10, v8, v82017; CHECK-NEXT: vmfeq.vf v9, v9, fa02018; CHECK-NEXT: vmand.mm v0, v10, v92019; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t2020; CHECK-NEXT: ret2021 %head = insertelement <8 x half> poison, half %b, i32 02022 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2023 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp2024 ret <8 x i1> %12025}2026 2027define <8 x i1> @fcmp_olt_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {2028; CHECK-LABEL: fcmp_olt_vv_v8f16:2029; CHECK: # %bb.0:2030; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2031; CHECK-NEXT: vmfeq.vv v10, v9, v92032; CHECK-NEXT: vmfeq.vv v11, v8, v82033; CHECK-NEXT: vmand.mm v0, v11, v102034; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t2035; CHECK-NEXT: ret2036 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp2037 ret <8 x i1> %12038}2039 2040define <8 x i1> @fcmp_olt_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {2041; CHECK-LABEL: fcmp_olt_vf_v8f16:2042; CHECK: # %bb.0:2043; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2044; CHECK-NEXT: vfmv.v.f v9, fa02045; CHECK-NEXT: vmfeq.vv v10, v8, v82046; CHECK-NEXT: vmfeq.vf v9, v9, fa02047; CHECK-NEXT: vmand.mm v0, v10, v92048; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t2049; CHECK-NEXT: ret2050 %head = insertelement <8 x half> poison, half %b, i32 02051 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2052 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp2053 ret <8 x i1> %12054}2055 2056define <8 x i1> @fcmp_olt_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {2057; CHECK-LABEL: fcmp_olt_fv_v8f16:2058; CHECK: # %bb.0:2059; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2060; CHECK-NEXT: vfmv.v.f v9, fa02061; CHECK-NEXT: vmfeq.vv v10, v8, v82062; CHECK-NEXT: vmfeq.vf v9, v9, fa02063; CHECK-NEXT: vmand.mm v0, v9, v102064; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t2065; CHECK-NEXT: ret2066 %head = insertelement <8 x half> poison, half %b, i32 02067 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2068 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp2069 ret <8 x i1> %12070}2071 2072define <8 x i1> @fcmp_ole_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {2073; CHECK-LABEL: fcmp_ole_vv_v8f16:2074; CHECK: # %bb.0:2075; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2076; CHECK-NEXT: vmfeq.vv v10, v9, v92077; CHECK-NEXT: vmfeq.vv v11, v8, v82078; CHECK-NEXT: vmand.mm v0, v11, v102079; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t2080; CHECK-NEXT: ret2081 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp2082 ret <8 x i1> %12083}2084 2085define <8 x i1> @fcmp_ole_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {2086; CHECK-LABEL: fcmp_ole_vf_v8f16:2087; CHECK: # %bb.0:2088; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2089; CHECK-NEXT: vfmv.v.f v9, fa02090; CHECK-NEXT: vmfeq.vv v10, v8, v82091; CHECK-NEXT: vmfeq.vf v9, v9, fa02092; CHECK-NEXT: vmand.mm v0, v10, v92093; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t2094; CHECK-NEXT: ret2095 %head = insertelement <8 x half> poison, half %b, i32 02096 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2097 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp2098 ret <8 x i1> %12099}2100 2101define <8 x i1> @fcmp_ole_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {2102; CHECK-LABEL: fcmp_ole_fv_v8f16:2103; CHECK: # %bb.0:2104; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2105; CHECK-NEXT: vfmv.v.f v9, fa02106; CHECK-NEXT: vmfeq.vv v10, v8, v82107; CHECK-NEXT: vmfeq.vf v9, v9, fa02108; CHECK-NEXT: vmand.mm v0, v9, v102109; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t2110; CHECK-NEXT: ret2111 %head = insertelement <8 x half> poison, half %b, i32 02112 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2113 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp2114 ret <8 x i1> %12115}2116 2117define <8 x i1> @fcmp_one_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {2118; CHECK-LABEL: fcmp_one_vv_v8f16:2119; CHECK: # %bb.0:2120; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2121; CHECK-NEXT: vmfeq.vv v10, v9, v92122; CHECK-NEXT: vmfeq.vv v11, v8, v82123; CHECK-NEXT: vmand.mm v0, v11, v102124; CHECK-NEXT: vmv.v.v v10, v02125; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t2126; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t2127; CHECK-NEXT: vmor.mm v0, v0, v102128; CHECK-NEXT: ret2129 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp2130 ret <8 x i1> %12131}2132 2133define <8 x i1> @fcmp_one_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {2134; CHECK-LABEL: fcmp_one_vf_v8f16:2135; CHECK: # %bb.0:2136; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2137; CHECK-NEXT: vfmv.v.f v9, fa02138; CHECK-NEXT: vmfeq.vv v10, v8, v82139; CHECK-NEXT: vmfeq.vf v9, v9, fa02140; CHECK-NEXT: vmand.mm v0, v10, v92141; CHECK-NEXT: vmv.v.v v9, v02142; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t2143; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t2144; CHECK-NEXT: vmor.mm v0, v0, v92145; CHECK-NEXT: ret2146 %head = insertelement <8 x half> poison, half %b, i32 02147 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2148 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp2149 ret <8 x i1> %12150}2151 2152define <8 x i1> @fcmp_one_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {2153; CHECK-LABEL: fcmp_one_fv_v8f16:2154; CHECK: # %bb.0:2155; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2156; CHECK-NEXT: vfmv.v.f v9, fa02157; CHECK-NEXT: vmfeq.vv v10, v8, v82158; CHECK-NEXT: vmfeq.vf v9, v9, fa02159; CHECK-NEXT: vmand.mm v0, v9, v102160; CHECK-NEXT: vmv.v.v v9, v02161; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t2162; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t2163; CHECK-NEXT: vmor.mm v0, v0, v92164; CHECK-NEXT: ret2165 %head = insertelement <8 x half> poison, half %b, i32 02166 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2167 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp2168 ret <8 x i1> %12169}2170 2171define <8 x i1> @fcmp_ord_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {2172; CHECK-LABEL: fcmp_ord_vv_v8f16:2173; CHECK: # %bb.0:2174; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma2175; CHECK-NEXT: vmfeq.vv v9, v9, v92176; CHECK-NEXT: vmfeq.vv v8, v8, v82177; CHECK-NEXT: vmand.mm v0, v8, v92178; CHECK-NEXT: ret2179 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp2180 ret <8 x i1> %12181}2182 2183define <8 x i1> @fcmp_ord_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {2184; CHECK-LABEL: fcmp_ord_vf_v8f16:2185; CHECK: # %bb.0:2186; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma2187; CHECK-NEXT: vfmv.v.f v9, fa02188; CHECK-NEXT: vmfeq.vf v9, v9, fa02189; CHECK-NEXT: vmfeq.vv v8, v8, v82190; CHECK-NEXT: vmand.mm v0, v8, v92191; CHECK-NEXT: ret2192 %head = insertelement <8 x half> poison, half %b, i32 02193 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2194 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp2195 ret <8 x i1> %12196}2197 2198define <8 x i1> @fcmp_ord_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {2199; CHECK-LABEL: fcmp_ord_fv_v8f16:2200; CHECK: # %bb.0:2201; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma2202; CHECK-NEXT: vfmv.v.f v9, fa02203; CHECK-NEXT: vmfeq.vf v9, v9, fa02204; CHECK-NEXT: vmfeq.vv v8, v8, v82205; CHECK-NEXT: vmand.mm v0, v9, v82206; CHECK-NEXT: ret2207 %head = insertelement <8 x half> poison, half %b, i32 02208 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2209 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp2210 ret <8 x i1> %12211}2212 2213define <8 x i1> @fcmp_ueq_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {2214; CHECK-LABEL: fcmp_ueq_vv_v8f16:2215; CHECK: # %bb.0:2216; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2217; CHECK-NEXT: vmfeq.vv v10, v9, v92218; CHECK-NEXT: vmfeq.vv v11, v8, v82219; CHECK-NEXT: vmand.mm v0, v11, v102220; CHECK-NEXT: vmv.v.v v10, v02221; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t2222; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t2223; CHECK-NEXT: vmnor.mm v0, v0, v102224; CHECK-NEXT: ret2225 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp2226 ret <8 x i1> %12227}2228 2229define <8 x i1> @fcmp_ueq_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {2230; CHECK-LABEL: fcmp_ueq_vf_v8f16:2231; CHECK: # %bb.0:2232; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2233; CHECK-NEXT: vfmv.v.f v9, fa02234; CHECK-NEXT: vmfeq.vv v10, v8, v82235; CHECK-NEXT: vmfeq.vf v9, v9, fa02236; CHECK-NEXT: vmand.mm v0, v10, v92237; CHECK-NEXT: vmv.v.v v9, v02238; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t2239; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t2240; CHECK-NEXT: vmnor.mm v0, v0, v92241; CHECK-NEXT: ret2242 %head = insertelement <8 x half> poison, half %b, i32 02243 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2244 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp2245 ret <8 x i1> %12246}2247 2248define <8 x i1> @fcmp_ueq_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {2249; CHECK-LABEL: fcmp_ueq_fv_v8f16:2250; CHECK: # %bb.0:2251; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2252; CHECK-NEXT: vfmv.v.f v9, fa02253; CHECK-NEXT: vmfeq.vv v10, v8, v82254; CHECK-NEXT: vmfeq.vf v9, v9, fa02255; CHECK-NEXT: vmand.mm v0, v9, v102256; CHECK-NEXT: vmv.v.v v9, v02257; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t2258; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t2259; CHECK-NEXT: vmnor.mm v0, v0, v92260; CHECK-NEXT: ret2261 %head = insertelement <8 x half> poison, half %b, i32 02262 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2263 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp2264 ret <8 x i1> %12265}2266 2267define <8 x i1> @fcmp_ugt_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {2268; CHECK-LABEL: fcmp_ugt_vv_v8f16:2269; CHECK: # %bb.0:2270; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2271; CHECK-NEXT: vmfeq.vv v10, v9, v92272; CHECK-NEXT: vmfeq.vv v11, v8, v82273; CHECK-NEXT: vmand.mm v0, v11, v102274; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t2275; CHECK-NEXT: vmnot.m v0, v02276; CHECK-NEXT: ret2277 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp2278 ret <8 x i1> %12279}2280 2281define <8 x i1> @fcmp_ugt_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {2282; CHECK-LABEL: fcmp_ugt_vf_v8f16:2283; CHECK: # %bb.0:2284; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2285; CHECK-NEXT: vfmv.v.f v9, fa02286; CHECK-NEXT: vmfeq.vv v10, v8, v82287; CHECK-NEXT: vmfeq.vf v9, v9, fa02288; CHECK-NEXT: vmand.mm v0, v10, v92289; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t2290; CHECK-NEXT: vmnot.m v0, v02291; CHECK-NEXT: ret2292 %head = insertelement <8 x half> poison, half %b, i32 02293 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2294 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp2295 ret <8 x i1> %12296}2297 2298define <8 x i1> @fcmp_ugt_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {2299; CHECK-LABEL: fcmp_ugt_fv_v8f16:2300; CHECK: # %bb.0:2301; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2302; CHECK-NEXT: vfmv.v.f v9, fa02303; CHECK-NEXT: vmfeq.vv v10, v8, v82304; CHECK-NEXT: vmfeq.vf v9, v9, fa02305; CHECK-NEXT: vmand.mm v0, v9, v102306; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t2307; CHECK-NEXT: vmnot.m v0, v02308; CHECK-NEXT: ret2309 %head = insertelement <8 x half> poison, half %b, i32 02310 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2311 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp2312 ret <8 x i1> %12313}2314 2315define <8 x i1> @fcmp_uge_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {2316; CHECK-LABEL: fcmp_uge_vv_v8f16:2317; CHECK: # %bb.0:2318; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2319; CHECK-NEXT: vmfeq.vv v10, v9, v92320; CHECK-NEXT: vmfeq.vv v11, v8, v82321; CHECK-NEXT: vmand.mm v0, v11, v102322; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t2323; CHECK-NEXT: vmnot.m v0, v02324; CHECK-NEXT: ret2325 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp2326 ret <8 x i1> %12327}2328 2329define <8 x i1> @fcmp_uge_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {2330; CHECK-LABEL: fcmp_uge_vf_v8f16:2331; CHECK: # %bb.0:2332; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2333; CHECK-NEXT: vfmv.v.f v9, fa02334; CHECK-NEXT: vmfeq.vv v10, v8, v82335; CHECK-NEXT: vmfeq.vf v9, v9, fa02336; CHECK-NEXT: vmand.mm v0, v10, v92337; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t2338; CHECK-NEXT: vmnot.m v0, v02339; CHECK-NEXT: ret2340 %head = insertelement <8 x half> poison, half %b, i32 02341 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2342 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp2343 ret <8 x i1> %12344}2345 2346define <8 x i1> @fcmp_uge_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {2347; CHECK-LABEL: fcmp_uge_fv_v8f16:2348; CHECK: # %bb.0:2349; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2350; CHECK-NEXT: vfmv.v.f v9, fa02351; CHECK-NEXT: vmfeq.vv v10, v8, v82352; CHECK-NEXT: vmfeq.vf v9, v9, fa02353; CHECK-NEXT: vmand.mm v0, v9, v102354; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t2355; CHECK-NEXT: vmnot.m v0, v02356; CHECK-NEXT: ret2357 %head = insertelement <8 x half> poison, half %b, i32 02358 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2359 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp2360 ret <8 x i1> %12361}2362 2363define <8 x i1> @fcmp_ult_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {2364; CHECK-LABEL: fcmp_ult_vv_v8f16:2365; CHECK: # %bb.0:2366; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2367; CHECK-NEXT: vmfeq.vv v10, v8, v82368; CHECK-NEXT: vmfeq.vv v11, v9, v92369; CHECK-NEXT: vmand.mm v0, v11, v102370; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t2371; CHECK-NEXT: vmnot.m v0, v02372; CHECK-NEXT: ret2373 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp2374 ret <8 x i1> %12375}2376 2377define <8 x i1> @fcmp_ult_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {2378; CHECK-LABEL: fcmp_ult_vf_v8f16:2379; CHECK: # %bb.0:2380; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2381; CHECK-NEXT: vfmv.v.f v9, fa02382; CHECK-NEXT: vmfeq.vv v10, v8, v82383; CHECK-NEXT: vmfeq.vf v9, v9, fa02384; CHECK-NEXT: vmand.mm v0, v9, v102385; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t2386; CHECK-NEXT: vmnot.m v0, v02387; CHECK-NEXT: ret2388 %head = insertelement <8 x half> poison, half %b, i32 02389 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2390 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp2391 ret <8 x i1> %12392}2393 2394define <8 x i1> @fcmp_ult_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {2395; CHECK-LABEL: fcmp_ult_fv_v8f16:2396; CHECK: # %bb.0:2397; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2398; CHECK-NEXT: vfmv.v.f v9, fa02399; CHECK-NEXT: vmfeq.vv v10, v8, v82400; CHECK-NEXT: vmfeq.vf v9, v9, fa02401; CHECK-NEXT: vmand.mm v0, v10, v92402; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t2403; CHECK-NEXT: vmnot.m v0, v02404; CHECK-NEXT: ret2405 %head = insertelement <8 x half> poison, half %b, i32 02406 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2407 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp2408 ret <8 x i1> %12409}2410 2411define <8 x i1> @fcmp_ule_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {2412; CHECK-LABEL: fcmp_ule_vv_v8f16:2413; CHECK: # %bb.0:2414; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2415; CHECK-NEXT: vmfeq.vv v10, v8, v82416; CHECK-NEXT: vmfeq.vv v11, v9, v92417; CHECK-NEXT: vmand.mm v0, v11, v102418; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t2419; CHECK-NEXT: vmnot.m v0, v02420; CHECK-NEXT: ret2421 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp2422 ret <8 x i1> %12423}2424 2425define <8 x i1> @fcmp_ule_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {2426; CHECK-LABEL: fcmp_ule_vf_v8f16:2427; CHECK: # %bb.0:2428; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2429; CHECK-NEXT: vfmv.v.f v9, fa02430; CHECK-NEXT: vmfeq.vv v10, v8, v82431; CHECK-NEXT: vmfeq.vf v9, v9, fa02432; CHECK-NEXT: vmand.mm v0, v9, v102433; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t2434; CHECK-NEXT: vmnot.m v0, v02435; CHECK-NEXT: ret2436 %head = insertelement <8 x half> poison, half %b, i32 02437 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2438 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp2439 ret <8 x i1> %12440}2441 2442define <8 x i1> @fcmp_ule_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {2443; CHECK-LABEL: fcmp_ule_fv_v8f16:2444; CHECK: # %bb.0:2445; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu2446; CHECK-NEXT: vfmv.v.f v9, fa02447; CHECK-NEXT: vmfeq.vv v10, v8, v82448; CHECK-NEXT: vmfeq.vf v9, v9, fa02449; CHECK-NEXT: vmand.mm v0, v10, v92450; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t2451; CHECK-NEXT: vmnot.m v0, v02452; CHECK-NEXT: ret2453 %head = insertelement <8 x half> poison, half %b, i32 02454 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2455 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp2456 ret <8 x i1> %12457}2458 2459define <8 x i1> @fcmp_une_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {2460; CHECK-LABEL: fcmp_une_vv_v8f16:2461; CHECK: # %bb.0:2462; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma2463; CHECK-NEXT: vmfne.vv v0, v8, v92464; CHECK-NEXT: ret2465 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp2466 ret <8 x i1> %12467}2468 2469define <8 x i1> @fcmp_une_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {2470; CHECK-LABEL: fcmp_une_vf_v8f16:2471; CHECK: # %bb.0:2472; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma2473; CHECK-NEXT: vmfne.vf v0, v8, fa02474; CHECK-NEXT: ret2475 %head = insertelement <8 x half> poison, half %b, i32 02476 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2477 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp2478 ret <8 x i1> %12479}2480 2481define <8 x i1> @fcmp_une_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {2482; CHECK-LABEL: fcmp_une_fv_v8f16:2483; CHECK: # %bb.0:2484; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma2485; CHECK-NEXT: vmfne.vf v0, v8, fa02486; CHECK-NEXT: ret2487 %head = insertelement <8 x half> poison, half %b, i32 02488 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2489 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp2490 ret <8 x i1> %12491}2492 2493define <8 x i1> @fcmp_uno_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {2494; CHECK-LABEL: fcmp_uno_vv_v8f16:2495; CHECK: # %bb.0:2496; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma2497; CHECK-NEXT: vmfne.vv v9, v9, v92498; CHECK-NEXT: vmfne.vv v8, v8, v82499; CHECK-NEXT: vmor.mm v0, v8, v92500; CHECK-NEXT: ret2501 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp2502 ret <8 x i1> %12503}2504 2505define <8 x i1> @fcmp_uno_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {2506; CHECK-LABEL: fcmp_uno_vf_v8f16:2507; CHECK: # %bb.0:2508; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma2509; CHECK-NEXT: vfmv.v.f v9, fa02510; CHECK-NEXT: vmfne.vf v9, v9, fa02511; CHECK-NEXT: vmfne.vv v8, v8, v82512; CHECK-NEXT: vmor.mm v0, v8, v92513; CHECK-NEXT: ret2514 %head = insertelement <8 x half> poison, half %b, i32 02515 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2516 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp2517 ret <8 x i1> %12518}2519 2520define <8 x i1> @fcmp_uno_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {2521; CHECK-LABEL: fcmp_uno_fv_v8f16:2522; CHECK: # %bb.0:2523; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma2524; CHECK-NEXT: vfmv.v.f v9, fa02525; CHECK-NEXT: vmfne.vf v9, v9, fa02526; CHECK-NEXT: vmfne.vv v8, v8, v82527; CHECK-NEXT: vmor.mm v0, v9, v82528; CHECK-NEXT: ret2529 %head = insertelement <8 x half> poison, half %b, i32 02530 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2531 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp2532 ret <8 x i1> %12533}2534 2535define <16 x i1> @fcmp_oeq_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2536; CHECK-LABEL: fcmp_oeq_vv_v16f16:2537; CHECK: # %bb.0:2538; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2539; CHECK-NEXT: vmfeq.vv v0, v8, v102540; CHECK-NEXT: ret2541 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp2542 ret <16 x i1> %12543}2544 2545define <16 x i1> @fcmp_oeq_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2546; CHECK-LABEL: fcmp_oeq_vf_v16f16:2547; CHECK: # %bb.0:2548; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2549; CHECK-NEXT: vmfeq.vf v0, v8, fa02550; CHECK-NEXT: ret2551 %head = insertelement <16 x half> poison, half %b, i32 02552 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2553 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp2554 ret <16 x i1> %12555}2556 2557define <16 x i1> @fcmp_oeq_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2558; CHECK-LABEL: fcmp_oeq_fv_v16f16:2559; CHECK: # %bb.0:2560; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2561; CHECK-NEXT: vmfeq.vf v0, v8, fa02562; CHECK-NEXT: ret2563 %head = insertelement <16 x half> poison, half %b, i32 02564 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2565 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp2566 ret <16 x i1> %12567}2568 2569define <16 x i1> @fcmp_ogt_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2570; CHECK-LABEL: fcmp_ogt_vv_v16f16:2571; CHECK: # %bb.0:2572; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2573; CHECK-NEXT: vmfeq.vv v12, v8, v82574; CHECK-NEXT: vmfeq.vv v13, v10, v102575; CHECK-NEXT: vmand.mm v12, v13, v122576; CHECK-NEXT: vmv1r.v v0, v122577; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t2578; CHECK-NEXT: vmv1r.v v0, v122579; CHECK-NEXT: ret2580 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp2581 ret <16 x i1> %12582}2583 2584define <16 x i1> @fcmp_ogt_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2585; CHECK-LABEL: fcmp_ogt_vf_v16f16:2586; CHECK: # %bb.0:2587; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2588; CHECK-NEXT: vfmv.v.f v10, fa02589; CHECK-NEXT: vmfeq.vf v12, v10, fa02590; CHECK-NEXT: vmfeq.vv v10, v8, v82591; CHECK-NEXT: vmand.mm v10, v12, v102592; CHECK-NEXT: vmv1r.v v0, v102593; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t2594; CHECK-NEXT: vmv1r.v v0, v102595; CHECK-NEXT: ret2596 %head = insertelement <16 x half> poison, half %b, i32 02597 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2598 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp2599 ret <16 x i1> %12600}2601 2602define <16 x i1> @fcmp_ogt_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2603; CHECK-LABEL: fcmp_ogt_fv_v16f16:2604; CHECK: # %bb.0:2605; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2606; CHECK-NEXT: vfmv.v.f v10, fa02607; CHECK-NEXT: vmfeq.vf v12, v10, fa02608; CHECK-NEXT: vmfeq.vv v10, v8, v82609; CHECK-NEXT: vmand.mm v10, v10, v122610; CHECK-NEXT: vmv1r.v v0, v102611; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t2612; CHECK-NEXT: vmv1r.v v0, v102613; CHECK-NEXT: ret2614 %head = insertelement <16 x half> poison, half %b, i32 02615 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2616 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp2617 ret <16 x i1> %12618}2619 2620define <16 x i1> @fcmp_oge_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2621; CHECK-LABEL: fcmp_oge_vv_v16f16:2622; CHECK: # %bb.0:2623; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2624; CHECK-NEXT: vmfeq.vv v12, v8, v82625; CHECK-NEXT: vmfeq.vv v13, v10, v102626; CHECK-NEXT: vmand.mm v12, v13, v122627; CHECK-NEXT: vmv1r.v v0, v122628; CHECK-NEXT: vmfle.vv v12, v10, v8, v0.t2629; CHECK-NEXT: vmv1r.v v0, v122630; CHECK-NEXT: ret2631 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp2632 ret <16 x i1> %12633}2634 2635define <16 x i1> @fcmp_oge_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2636; CHECK-LABEL: fcmp_oge_vf_v16f16:2637; CHECK: # %bb.0:2638; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2639; CHECK-NEXT: vfmv.v.f v10, fa02640; CHECK-NEXT: vmfeq.vf v12, v10, fa02641; CHECK-NEXT: vmfeq.vv v10, v8, v82642; CHECK-NEXT: vmand.mm v10, v12, v102643; CHECK-NEXT: vmv1r.v v0, v102644; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t2645; CHECK-NEXT: vmv1r.v v0, v102646; CHECK-NEXT: ret2647 %head = insertelement <16 x half> poison, half %b, i32 02648 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2649 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp2650 ret <16 x i1> %12651}2652 2653define <16 x i1> @fcmp_oge_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2654; CHECK-LABEL: fcmp_oge_fv_v16f16:2655; CHECK: # %bb.0:2656; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2657; CHECK-NEXT: vfmv.v.f v10, fa02658; CHECK-NEXT: vmfeq.vf v12, v10, fa02659; CHECK-NEXT: vmfeq.vv v10, v8, v82660; CHECK-NEXT: vmand.mm v10, v10, v122661; CHECK-NEXT: vmv1r.v v0, v102662; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t2663; CHECK-NEXT: vmv1r.v v0, v102664; CHECK-NEXT: ret2665 %head = insertelement <16 x half> poison, half %b, i32 02666 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2667 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp2668 ret <16 x i1> %12669}2670 2671define <16 x i1> @fcmp_olt_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2672; CHECK-LABEL: fcmp_olt_vv_v16f16:2673; CHECK: # %bb.0:2674; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2675; CHECK-NEXT: vmfeq.vv v12, v10, v102676; CHECK-NEXT: vmfeq.vv v13, v8, v82677; CHECK-NEXT: vmand.mm v12, v13, v122678; CHECK-NEXT: vmv1r.v v0, v122679; CHECK-NEXT: vmflt.vv v12, v8, v10, v0.t2680; CHECK-NEXT: vmv1r.v v0, v122681; CHECK-NEXT: ret2682 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp2683 ret <16 x i1> %12684}2685 2686define <16 x i1> @fcmp_olt_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2687; CHECK-LABEL: fcmp_olt_vf_v16f16:2688; CHECK: # %bb.0:2689; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2690; CHECK-NEXT: vfmv.v.f v10, fa02691; CHECK-NEXT: vmfeq.vf v12, v10, fa02692; CHECK-NEXT: vmfeq.vv v10, v8, v82693; CHECK-NEXT: vmand.mm v10, v10, v122694; CHECK-NEXT: vmv1r.v v0, v102695; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t2696; CHECK-NEXT: vmv1r.v v0, v102697; CHECK-NEXT: ret2698 %head = insertelement <16 x half> poison, half %b, i32 02699 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2700 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp2701 ret <16 x i1> %12702}2703 2704define <16 x i1> @fcmp_olt_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2705; CHECK-LABEL: fcmp_olt_fv_v16f16:2706; CHECK: # %bb.0:2707; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2708; CHECK-NEXT: vfmv.v.f v10, fa02709; CHECK-NEXT: vmfeq.vf v12, v10, fa02710; CHECK-NEXT: vmfeq.vv v10, v8, v82711; CHECK-NEXT: vmand.mm v10, v12, v102712; CHECK-NEXT: vmv1r.v v0, v102713; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t2714; CHECK-NEXT: vmv1r.v v0, v102715; CHECK-NEXT: ret2716 %head = insertelement <16 x half> poison, half %b, i32 02717 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2718 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp2719 ret <16 x i1> %12720}2721 2722define <16 x i1> @fcmp_ole_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2723; CHECK-LABEL: fcmp_ole_vv_v16f16:2724; CHECK: # %bb.0:2725; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2726; CHECK-NEXT: vmfeq.vv v12, v10, v102727; CHECK-NEXT: vmfeq.vv v13, v8, v82728; CHECK-NEXT: vmand.mm v12, v13, v122729; CHECK-NEXT: vmv1r.v v0, v122730; CHECK-NEXT: vmfle.vv v12, v8, v10, v0.t2731; CHECK-NEXT: vmv1r.v v0, v122732; CHECK-NEXT: ret2733 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp2734 ret <16 x i1> %12735}2736 2737define <16 x i1> @fcmp_ole_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2738; CHECK-LABEL: fcmp_ole_vf_v16f16:2739; CHECK: # %bb.0:2740; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2741; CHECK-NEXT: vfmv.v.f v10, fa02742; CHECK-NEXT: vmfeq.vf v12, v10, fa02743; CHECK-NEXT: vmfeq.vv v10, v8, v82744; CHECK-NEXT: vmand.mm v10, v10, v122745; CHECK-NEXT: vmv1r.v v0, v102746; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t2747; CHECK-NEXT: vmv1r.v v0, v102748; CHECK-NEXT: ret2749 %head = insertelement <16 x half> poison, half %b, i32 02750 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2751 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp2752 ret <16 x i1> %12753}2754 2755define <16 x i1> @fcmp_ole_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2756; CHECK-LABEL: fcmp_ole_fv_v16f16:2757; CHECK: # %bb.0:2758; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2759; CHECK-NEXT: vfmv.v.f v10, fa02760; CHECK-NEXT: vmfeq.vf v12, v10, fa02761; CHECK-NEXT: vmfeq.vv v10, v8, v82762; CHECK-NEXT: vmand.mm v10, v12, v102763; CHECK-NEXT: vmv1r.v v0, v102764; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t2765; CHECK-NEXT: vmv1r.v v0, v102766; CHECK-NEXT: ret2767 %head = insertelement <16 x half> poison, half %b, i32 02768 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2769 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp2770 ret <16 x i1> %12771}2772 2773define <16 x i1> @fcmp_one_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2774; CHECK-LABEL: fcmp_one_vv_v16f16:2775; CHECK: # %bb.0:2776; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2777; CHECK-NEXT: vmfeq.vv v12, v10, v102778; CHECK-NEXT: vmfeq.vv v13, v8, v82779; CHECK-NEXT: vmand.mm v12, v13, v122780; CHECK-NEXT: vmv1r.v v13, v122781; CHECK-NEXT: vmv1r.v v0, v122782; CHECK-NEXT: vmflt.vv v13, v8, v10, v0.t2783; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t2784; CHECK-NEXT: vmor.mm v0, v12, v132785; CHECK-NEXT: ret2786 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp2787 ret <16 x i1> %12788}2789 2790define <16 x i1> @fcmp_one_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2791; CHECK-LABEL: fcmp_one_vf_v16f16:2792; CHECK: # %bb.0:2793; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2794; CHECK-NEXT: vfmv.v.f v10, fa02795; CHECK-NEXT: vmfeq.vv v12, v8, v82796; CHECK-NEXT: vmfeq.vf v13, v10, fa02797; CHECK-NEXT: vmand.mm v10, v12, v132798; CHECK-NEXT: vmv1r.v v11, v102799; CHECK-NEXT: vmv1r.v v0, v102800; CHECK-NEXT: vmflt.vf v11, v8, fa0, v0.t2801; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t2802; CHECK-NEXT: vmor.mm v0, v10, v112803; CHECK-NEXT: ret2804 %head = insertelement <16 x half> poison, half %b, i32 02805 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2806 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp2807 ret <16 x i1> %12808}2809 2810define <16 x i1> @fcmp_one_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2811; CHECK-LABEL: fcmp_one_fv_v16f16:2812; CHECK: # %bb.0:2813; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2814; CHECK-NEXT: vfmv.v.f v10, fa02815; CHECK-NEXT: vmfeq.vv v12, v8, v82816; CHECK-NEXT: vmfeq.vf v13, v10, fa02817; CHECK-NEXT: vmand.mm v10, v13, v122818; CHECK-NEXT: vmv1r.v v11, v102819; CHECK-NEXT: vmv1r.v v0, v102820; CHECK-NEXT: vmfgt.vf v11, v8, fa0, v0.t2821; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t2822; CHECK-NEXT: vmor.mm v0, v10, v112823; CHECK-NEXT: ret2824 %head = insertelement <16 x half> poison, half %b, i32 02825 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2826 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp2827 ret <16 x i1> %12828}2829 2830define <16 x i1> @fcmp_ord_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2831; CHECK-LABEL: fcmp_ord_vv_v16f16:2832; CHECK: # %bb.0:2833; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2834; CHECK-NEXT: vmfeq.vv v12, v10, v102835; CHECK-NEXT: vmfeq.vv v10, v8, v82836; CHECK-NEXT: vmand.mm v0, v10, v122837; CHECK-NEXT: ret2838 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp2839 ret <16 x i1> %12840}2841 2842define <16 x i1> @fcmp_ord_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2843; CHECK-LABEL: fcmp_ord_vf_v16f16:2844; CHECK: # %bb.0:2845; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2846; CHECK-NEXT: vfmv.v.f v10, fa02847; CHECK-NEXT: vmfeq.vf v12, v10, fa02848; CHECK-NEXT: vmfeq.vv v10, v8, v82849; CHECK-NEXT: vmand.mm v0, v10, v122850; CHECK-NEXT: ret2851 %head = insertelement <16 x half> poison, half %b, i32 02852 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2853 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp2854 ret <16 x i1> %12855}2856 2857define <16 x i1> @fcmp_ord_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2858; CHECK-LABEL: fcmp_ord_fv_v16f16:2859; CHECK: # %bb.0:2860; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2861; CHECK-NEXT: vfmv.v.f v10, fa02862; CHECK-NEXT: vmfeq.vf v12, v10, fa02863; CHECK-NEXT: vmfeq.vv v10, v8, v82864; CHECK-NEXT: vmand.mm v0, v12, v102865; CHECK-NEXT: ret2866 %head = insertelement <16 x half> poison, half %b, i32 02867 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2868 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp2869 ret <16 x i1> %12870}2871 2872define <16 x i1> @fcmp_ueq_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2873; CHECK-LABEL: fcmp_ueq_vv_v16f16:2874; CHECK: # %bb.0:2875; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2876; CHECK-NEXT: vmfeq.vv v12, v10, v102877; CHECK-NEXT: vmfeq.vv v13, v8, v82878; CHECK-NEXT: vmand.mm v12, v13, v122879; CHECK-NEXT: vmv1r.v v13, v122880; CHECK-NEXT: vmv1r.v v0, v122881; CHECK-NEXT: vmflt.vv v13, v8, v10, v0.t2882; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t2883; CHECK-NEXT: vmnor.mm v0, v12, v132884; CHECK-NEXT: ret2885 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp2886 ret <16 x i1> %12887}2888 2889define <16 x i1> @fcmp_ueq_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2890; CHECK-LABEL: fcmp_ueq_vf_v16f16:2891; CHECK: # %bb.0:2892; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2893; CHECK-NEXT: vfmv.v.f v10, fa02894; CHECK-NEXT: vmfeq.vv v12, v8, v82895; CHECK-NEXT: vmfeq.vf v13, v10, fa02896; CHECK-NEXT: vmand.mm v10, v12, v132897; CHECK-NEXT: vmv1r.v v11, v102898; CHECK-NEXT: vmv1r.v v0, v102899; CHECK-NEXT: vmflt.vf v11, v8, fa0, v0.t2900; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t2901; CHECK-NEXT: vmnor.mm v0, v10, v112902; CHECK-NEXT: ret2903 %head = insertelement <16 x half> poison, half %b, i32 02904 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2905 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp2906 ret <16 x i1> %12907}2908 2909define <16 x i1> @fcmp_ueq_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2910; CHECK-LABEL: fcmp_ueq_fv_v16f16:2911; CHECK: # %bb.0:2912; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2913; CHECK-NEXT: vfmv.v.f v10, fa02914; CHECK-NEXT: vmfeq.vv v12, v8, v82915; CHECK-NEXT: vmfeq.vf v13, v10, fa02916; CHECK-NEXT: vmand.mm v10, v13, v122917; CHECK-NEXT: vmv1r.v v11, v102918; CHECK-NEXT: vmv1r.v v0, v102919; CHECK-NEXT: vmfgt.vf v11, v8, fa0, v0.t2920; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t2921; CHECK-NEXT: vmnor.mm v0, v10, v112922; CHECK-NEXT: ret2923 %head = insertelement <16 x half> poison, half %b, i32 02924 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2925 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp2926 ret <16 x i1> %12927}2928 2929define <16 x i1> @fcmp_ugt_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2930; CHECK-LABEL: fcmp_ugt_vv_v16f16:2931; CHECK: # %bb.0:2932; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2933; CHECK-NEXT: vmfeq.vv v12, v10, v102934; CHECK-NEXT: vmfeq.vv v13, v8, v82935; CHECK-NEXT: vmand.mm v12, v13, v122936; CHECK-NEXT: vmv1r.v v0, v122937; CHECK-NEXT: vmfle.vv v12, v8, v10, v0.t2938; CHECK-NEXT: vmnot.m v0, v122939; CHECK-NEXT: ret2940 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp2941 ret <16 x i1> %12942}2943 2944define <16 x i1> @fcmp_ugt_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2945; CHECK-LABEL: fcmp_ugt_vf_v16f16:2946; CHECK: # %bb.0:2947; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2948; CHECK-NEXT: vfmv.v.f v10, fa02949; CHECK-NEXT: vmfeq.vf v12, v10, fa02950; CHECK-NEXT: vmfeq.vv v10, v8, v82951; CHECK-NEXT: vmand.mm v10, v10, v122952; CHECK-NEXT: vmv1r.v v0, v102953; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t2954; CHECK-NEXT: vmnot.m v0, v102955; CHECK-NEXT: ret2956 %head = insertelement <16 x half> poison, half %b, i32 02957 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2958 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp2959 ret <16 x i1> %12960}2961 2962define <16 x i1> @fcmp_ugt_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2963; CHECK-LABEL: fcmp_ugt_fv_v16f16:2964; CHECK: # %bb.0:2965; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2966; CHECK-NEXT: vfmv.v.f v10, fa02967; CHECK-NEXT: vmfeq.vf v12, v10, fa02968; CHECK-NEXT: vmfeq.vv v10, v8, v82969; CHECK-NEXT: vmand.mm v10, v12, v102970; CHECK-NEXT: vmv1r.v v0, v102971; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t2972; CHECK-NEXT: vmnot.m v0, v102973; CHECK-NEXT: ret2974 %head = insertelement <16 x half> poison, half %b, i32 02975 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2976 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp2977 ret <16 x i1> %12978}2979 2980define <16 x i1> @fcmp_uge_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2981; CHECK-LABEL: fcmp_uge_vv_v16f16:2982; CHECK: # %bb.0:2983; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2984; CHECK-NEXT: vmfeq.vv v12, v10, v102985; CHECK-NEXT: vmfeq.vv v13, v8, v82986; CHECK-NEXT: vmand.mm v12, v13, v122987; CHECK-NEXT: vmv1r.v v0, v122988; CHECK-NEXT: vmflt.vv v12, v8, v10, v0.t2989; CHECK-NEXT: vmnot.m v0, v122990; CHECK-NEXT: ret2991 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp2992 ret <16 x i1> %12993}2994 2995define <16 x i1> @fcmp_uge_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2996; CHECK-LABEL: fcmp_uge_vf_v16f16:2997; CHECK: # %bb.0:2998; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu2999; CHECK-NEXT: vfmv.v.f v10, fa03000; CHECK-NEXT: vmfeq.vf v12, v10, fa03001; CHECK-NEXT: vmfeq.vv v10, v8, v83002; CHECK-NEXT: vmand.mm v10, v10, v123003; CHECK-NEXT: vmv1r.v v0, v103004; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t3005; CHECK-NEXT: vmnot.m v0, v103006; CHECK-NEXT: ret3007 %head = insertelement <16 x half> poison, half %b, i32 03008 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer3009 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp3010 ret <16 x i1> %13011}3012 3013define <16 x i1> @fcmp_uge_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {3014; CHECK-LABEL: fcmp_uge_fv_v16f16:3015; CHECK: # %bb.0:3016; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu3017; CHECK-NEXT: vfmv.v.f v10, fa03018; CHECK-NEXT: vmfeq.vf v12, v10, fa03019; CHECK-NEXT: vmfeq.vv v10, v8, v83020; CHECK-NEXT: vmand.mm v10, v12, v103021; CHECK-NEXT: vmv1r.v v0, v103022; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t3023; CHECK-NEXT: vmnot.m v0, v103024; CHECK-NEXT: ret3025 %head = insertelement <16 x half> poison, half %b, i32 03026 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer3027 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp3028 ret <16 x i1> %13029}3030 3031define <16 x i1> @fcmp_ult_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {3032; CHECK-LABEL: fcmp_ult_vv_v16f16:3033; CHECK: # %bb.0:3034; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu3035; CHECK-NEXT: vmfeq.vv v12, v8, v83036; CHECK-NEXT: vmfeq.vv v13, v10, v103037; CHECK-NEXT: vmand.mm v12, v13, v123038; CHECK-NEXT: vmv1r.v v0, v123039; CHECK-NEXT: vmfle.vv v12, v10, v8, v0.t3040; CHECK-NEXT: vmnot.m v0, v123041; CHECK-NEXT: ret3042 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp3043 ret <16 x i1> %13044}3045 3046define <16 x i1> @fcmp_ult_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {3047; CHECK-LABEL: fcmp_ult_vf_v16f16:3048; CHECK: # %bb.0:3049; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu3050; CHECK-NEXT: vfmv.v.f v10, fa03051; CHECK-NEXT: vmfeq.vf v12, v10, fa03052; CHECK-NEXT: vmfeq.vv v10, v8, v83053; CHECK-NEXT: vmand.mm v10, v12, v103054; CHECK-NEXT: vmv1r.v v0, v103055; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t3056; CHECK-NEXT: vmnot.m v0, v103057; CHECK-NEXT: ret3058 %head = insertelement <16 x half> poison, half %b, i32 03059 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer3060 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp3061 ret <16 x i1> %13062}3063 3064define <16 x i1> @fcmp_ult_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {3065; CHECK-LABEL: fcmp_ult_fv_v16f16:3066; CHECK: # %bb.0:3067; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu3068; CHECK-NEXT: vfmv.v.f v10, fa03069; CHECK-NEXT: vmfeq.vf v12, v10, fa03070; CHECK-NEXT: vmfeq.vv v10, v8, v83071; CHECK-NEXT: vmand.mm v10, v10, v123072; CHECK-NEXT: vmv1r.v v0, v103073; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t3074; CHECK-NEXT: vmnot.m v0, v103075; CHECK-NEXT: ret3076 %head = insertelement <16 x half> poison, half %b, i32 03077 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer3078 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp3079 ret <16 x i1> %13080}3081 3082define <16 x i1> @fcmp_ule_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {3083; CHECK-LABEL: fcmp_ule_vv_v16f16:3084; CHECK: # %bb.0:3085; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu3086; CHECK-NEXT: vmfeq.vv v12, v8, v83087; CHECK-NEXT: vmfeq.vv v13, v10, v103088; CHECK-NEXT: vmand.mm v12, v13, v123089; CHECK-NEXT: vmv1r.v v0, v123090; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t3091; CHECK-NEXT: vmnot.m v0, v123092; CHECK-NEXT: ret3093 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp3094 ret <16 x i1> %13095}3096 3097define <16 x i1> @fcmp_ule_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {3098; CHECK-LABEL: fcmp_ule_vf_v16f16:3099; CHECK: # %bb.0:3100; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu3101; CHECK-NEXT: vfmv.v.f v10, fa03102; CHECK-NEXT: vmfeq.vf v12, v10, fa03103; CHECK-NEXT: vmfeq.vv v10, v8, v83104; CHECK-NEXT: vmand.mm v10, v12, v103105; CHECK-NEXT: vmv1r.v v0, v103106; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t3107; CHECK-NEXT: vmnot.m v0, v103108; CHECK-NEXT: ret3109 %head = insertelement <16 x half> poison, half %b, i32 03110 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer3111 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp3112 ret <16 x i1> %13113}3114 3115define <16 x i1> @fcmp_ule_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {3116; CHECK-LABEL: fcmp_ule_fv_v16f16:3117; CHECK: # %bb.0:3118; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu3119; CHECK-NEXT: vfmv.v.f v10, fa03120; CHECK-NEXT: vmfeq.vf v12, v10, fa03121; CHECK-NEXT: vmfeq.vv v10, v8, v83122; CHECK-NEXT: vmand.mm v10, v10, v123123; CHECK-NEXT: vmv1r.v v0, v103124; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t3125; CHECK-NEXT: vmnot.m v0, v103126; CHECK-NEXT: ret3127 %head = insertelement <16 x half> poison, half %b, i32 03128 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer3129 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp3130 ret <16 x i1> %13131}3132 3133define <16 x i1> @fcmp_une_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {3134; CHECK-LABEL: fcmp_une_vv_v16f16:3135; CHECK: # %bb.0:3136; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma3137; CHECK-NEXT: vmfne.vv v0, v8, v103138; CHECK-NEXT: ret3139 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp3140 ret <16 x i1> %13141}3142 3143define <16 x i1> @fcmp_une_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {3144; CHECK-LABEL: fcmp_une_vf_v16f16:3145; CHECK: # %bb.0:3146; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma3147; CHECK-NEXT: vmfne.vf v0, v8, fa03148; CHECK-NEXT: ret3149 %head = insertelement <16 x half> poison, half %b, i32 03150 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer3151 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp3152 ret <16 x i1> %13153}3154 3155define <16 x i1> @fcmp_une_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {3156; CHECK-LABEL: fcmp_une_fv_v16f16:3157; CHECK: # %bb.0:3158; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma3159; CHECK-NEXT: vmfne.vf v0, v8, fa03160; CHECK-NEXT: ret3161 %head = insertelement <16 x half> poison, half %b, i32 03162 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer3163 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp3164 ret <16 x i1> %13165}3166 3167define <16 x i1> @fcmp_uno_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {3168; CHECK-LABEL: fcmp_uno_vv_v16f16:3169; CHECK: # %bb.0:3170; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma3171; CHECK-NEXT: vmfne.vv v12, v10, v103172; CHECK-NEXT: vmfne.vv v10, v8, v83173; CHECK-NEXT: vmor.mm v0, v10, v123174; CHECK-NEXT: ret3175 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp3176 ret <16 x i1> %13177}3178 3179define <16 x i1> @fcmp_uno_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {3180; CHECK-LABEL: fcmp_uno_vf_v16f16:3181; CHECK: # %bb.0:3182; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma3183; CHECK-NEXT: vfmv.v.f v10, fa03184; CHECK-NEXT: vmfne.vf v12, v10, fa03185; CHECK-NEXT: vmfne.vv v10, v8, v83186; CHECK-NEXT: vmor.mm v0, v10, v123187; CHECK-NEXT: ret3188 %head = insertelement <16 x half> poison, half %b, i32 03189 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer3190 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp3191 ret <16 x i1> %13192}3193 3194define <16 x i1> @fcmp_uno_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {3195; CHECK-LABEL: fcmp_uno_fv_v16f16:3196; CHECK: # %bb.0:3197; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma3198; CHECK-NEXT: vfmv.v.f v10, fa03199; CHECK-NEXT: vmfne.vf v12, v10, fa03200; CHECK-NEXT: vmfne.vv v10, v8, v83201; CHECK-NEXT: vmor.mm v0, v12, v103202; CHECK-NEXT: ret3203 %head = insertelement <16 x half> poison, half %b, i32 03204 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer3205 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp3206 ret <16 x i1> %13207}3208 3209define <32 x i1> @fcmp_oeq_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {3210; CHECK-LABEL: fcmp_oeq_vv_v32f16:3211; CHECK: # %bb.0:3212; CHECK-NEXT: li a0, 323213; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3214; CHECK-NEXT: vmfeq.vv v0, v8, v123215; CHECK-NEXT: ret3216 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp3217 ret <32 x i1> %13218}3219 3220define <32 x i1> @fcmp_oeq_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {3221; CHECK-LABEL: fcmp_oeq_vf_v32f16:3222; CHECK: # %bb.0:3223; CHECK-NEXT: li a0, 323224; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3225; CHECK-NEXT: vmfeq.vf v0, v8, fa03226; CHECK-NEXT: ret3227 %head = insertelement <32 x half> poison, half %b, i32 03228 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3229 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp3230 ret <32 x i1> %13231}3232 3233define <32 x i1> @fcmp_oeq_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {3234; CHECK-LABEL: fcmp_oeq_fv_v32f16:3235; CHECK: # %bb.0:3236; CHECK-NEXT: li a0, 323237; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3238; CHECK-NEXT: vmfeq.vf v0, v8, fa03239; CHECK-NEXT: ret3240 %head = insertelement <32 x half> poison, half %b, i32 03241 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3242 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp3243 ret <32 x i1> %13244}3245 3246define <32 x i1> @fcmp_ogt_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {3247; CHECK-LABEL: fcmp_ogt_vv_v32f16:3248; CHECK: # %bb.0:3249; CHECK-NEXT: li a0, 323250; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3251; CHECK-NEXT: vmfeq.vv v16, v8, v83252; CHECK-NEXT: vmfeq.vv v17, v12, v123253; CHECK-NEXT: vmand.mm v16, v17, v163254; CHECK-NEXT: vmv1r.v v0, v163255; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t3256; CHECK-NEXT: vmv1r.v v0, v163257; CHECK-NEXT: ret3258 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp3259 ret <32 x i1> %13260}3261 3262define <32 x i1> @fcmp_ogt_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {3263; CHECK-LABEL: fcmp_ogt_vf_v32f16:3264; CHECK: # %bb.0:3265; CHECK-NEXT: li a0, 323266; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3267; CHECK-NEXT: vfmv.v.f v12, fa03268; CHECK-NEXT: vmfeq.vf v16, v12, fa03269; CHECK-NEXT: vmfeq.vv v12, v8, v83270; CHECK-NEXT: vmand.mm v12, v16, v123271; CHECK-NEXT: vmv1r.v v0, v123272; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t3273; CHECK-NEXT: vmv1r.v v0, v123274; CHECK-NEXT: ret3275 %head = insertelement <32 x half> poison, half %b, i32 03276 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3277 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp3278 ret <32 x i1> %13279}3280 3281define <32 x i1> @fcmp_ogt_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {3282; CHECK-LABEL: fcmp_ogt_fv_v32f16:3283; CHECK: # %bb.0:3284; CHECK-NEXT: li a0, 323285; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3286; CHECK-NEXT: vfmv.v.f v12, fa03287; CHECK-NEXT: vmfeq.vf v16, v12, fa03288; CHECK-NEXT: vmfeq.vv v12, v8, v83289; CHECK-NEXT: vmand.mm v12, v12, v163290; CHECK-NEXT: vmv1r.v v0, v123291; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t3292; CHECK-NEXT: vmv1r.v v0, v123293; CHECK-NEXT: ret3294 %head = insertelement <32 x half> poison, half %b, i32 03295 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3296 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp3297 ret <32 x i1> %13298}3299 3300define <32 x i1> @fcmp_oge_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {3301; CHECK-LABEL: fcmp_oge_vv_v32f16:3302; CHECK: # %bb.0:3303; CHECK-NEXT: li a0, 323304; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3305; CHECK-NEXT: vmfeq.vv v16, v8, v83306; CHECK-NEXT: vmfeq.vv v17, v12, v123307; CHECK-NEXT: vmand.mm v16, v17, v163308; CHECK-NEXT: vmv1r.v v0, v163309; CHECK-NEXT: vmfle.vv v16, v12, v8, v0.t3310; CHECK-NEXT: vmv1r.v v0, v163311; CHECK-NEXT: ret3312 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp3313 ret <32 x i1> %13314}3315 3316define <32 x i1> @fcmp_oge_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {3317; CHECK-LABEL: fcmp_oge_vf_v32f16:3318; CHECK: # %bb.0:3319; CHECK-NEXT: li a0, 323320; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3321; CHECK-NEXT: vfmv.v.f v12, fa03322; CHECK-NEXT: vmfeq.vf v16, v12, fa03323; CHECK-NEXT: vmfeq.vv v12, v8, v83324; CHECK-NEXT: vmand.mm v12, v16, v123325; CHECK-NEXT: vmv1r.v v0, v123326; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t3327; CHECK-NEXT: vmv1r.v v0, v123328; CHECK-NEXT: ret3329 %head = insertelement <32 x half> poison, half %b, i32 03330 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3331 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp3332 ret <32 x i1> %13333}3334 3335define <32 x i1> @fcmp_oge_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {3336; CHECK-LABEL: fcmp_oge_fv_v32f16:3337; CHECK: # %bb.0:3338; CHECK-NEXT: li a0, 323339; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3340; CHECK-NEXT: vfmv.v.f v12, fa03341; CHECK-NEXT: vmfeq.vf v16, v12, fa03342; CHECK-NEXT: vmfeq.vv v12, v8, v83343; CHECK-NEXT: vmand.mm v12, v12, v163344; CHECK-NEXT: vmv1r.v v0, v123345; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t3346; CHECK-NEXT: vmv1r.v v0, v123347; CHECK-NEXT: ret3348 %head = insertelement <32 x half> poison, half %b, i32 03349 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3350 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp3351 ret <32 x i1> %13352}3353 3354define <32 x i1> @fcmp_olt_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {3355; CHECK-LABEL: fcmp_olt_vv_v32f16:3356; CHECK: # %bb.0:3357; CHECK-NEXT: li a0, 323358; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3359; CHECK-NEXT: vmfeq.vv v16, v12, v123360; CHECK-NEXT: vmfeq.vv v17, v8, v83361; CHECK-NEXT: vmand.mm v16, v17, v163362; CHECK-NEXT: vmv1r.v v0, v163363; CHECK-NEXT: vmflt.vv v16, v8, v12, v0.t3364; CHECK-NEXT: vmv1r.v v0, v163365; CHECK-NEXT: ret3366 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp3367 ret <32 x i1> %13368}3369 3370define <32 x i1> @fcmp_olt_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {3371; CHECK-LABEL: fcmp_olt_vf_v32f16:3372; CHECK: # %bb.0:3373; CHECK-NEXT: li a0, 323374; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3375; CHECK-NEXT: vfmv.v.f v12, fa03376; CHECK-NEXT: vmfeq.vf v16, v12, fa03377; CHECK-NEXT: vmfeq.vv v12, v8, v83378; CHECK-NEXT: vmand.mm v12, v12, v163379; CHECK-NEXT: vmv1r.v v0, v123380; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t3381; CHECK-NEXT: vmv1r.v v0, v123382; CHECK-NEXT: ret3383 %head = insertelement <32 x half> poison, half %b, i32 03384 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3385 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp3386 ret <32 x i1> %13387}3388 3389define <32 x i1> @fcmp_olt_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {3390; CHECK-LABEL: fcmp_olt_fv_v32f16:3391; CHECK: # %bb.0:3392; CHECK-NEXT: li a0, 323393; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3394; CHECK-NEXT: vfmv.v.f v12, fa03395; CHECK-NEXT: vmfeq.vf v16, v12, fa03396; CHECK-NEXT: vmfeq.vv v12, v8, v83397; CHECK-NEXT: vmand.mm v12, v16, v123398; CHECK-NEXT: vmv1r.v v0, v123399; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t3400; CHECK-NEXT: vmv1r.v v0, v123401; CHECK-NEXT: ret3402 %head = insertelement <32 x half> poison, half %b, i32 03403 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3404 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp3405 ret <32 x i1> %13406}3407 3408define <32 x i1> @fcmp_ole_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {3409; CHECK-LABEL: fcmp_ole_vv_v32f16:3410; CHECK: # %bb.0:3411; CHECK-NEXT: li a0, 323412; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3413; CHECK-NEXT: vmfeq.vv v16, v12, v123414; CHECK-NEXT: vmfeq.vv v17, v8, v83415; CHECK-NEXT: vmand.mm v16, v17, v163416; CHECK-NEXT: vmv1r.v v0, v163417; CHECK-NEXT: vmfle.vv v16, v8, v12, v0.t3418; CHECK-NEXT: vmv1r.v v0, v163419; CHECK-NEXT: ret3420 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp3421 ret <32 x i1> %13422}3423 3424define <32 x i1> @fcmp_ole_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {3425; CHECK-LABEL: fcmp_ole_vf_v32f16:3426; CHECK: # %bb.0:3427; CHECK-NEXT: li a0, 323428; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3429; CHECK-NEXT: vfmv.v.f v12, fa03430; CHECK-NEXT: vmfeq.vf v16, v12, fa03431; CHECK-NEXT: vmfeq.vv v12, v8, v83432; CHECK-NEXT: vmand.mm v12, v12, v163433; CHECK-NEXT: vmv1r.v v0, v123434; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t3435; CHECK-NEXT: vmv1r.v v0, v123436; CHECK-NEXT: ret3437 %head = insertelement <32 x half> poison, half %b, i32 03438 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3439 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp3440 ret <32 x i1> %13441}3442 3443define <32 x i1> @fcmp_ole_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {3444; CHECK-LABEL: fcmp_ole_fv_v32f16:3445; CHECK: # %bb.0:3446; CHECK-NEXT: li a0, 323447; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3448; CHECK-NEXT: vfmv.v.f v12, fa03449; CHECK-NEXT: vmfeq.vf v16, v12, fa03450; CHECK-NEXT: vmfeq.vv v12, v8, v83451; CHECK-NEXT: vmand.mm v12, v16, v123452; CHECK-NEXT: vmv1r.v v0, v123453; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t3454; CHECK-NEXT: vmv1r.v v0, v123455; CHECK-NEXT: ret3456 %head = insertelement <32 x half> poison, half %b, i32 03457 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3458 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp3459 ret <32 x i1> %13460}3461 3462define <32 x i1> @fcmp_one_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {3463; CHECK-LABEL: fcmp_one_vv_v32f16:3464; CHECK: # %bb.0:3465; CHECK-NEXT: li a0, 323466; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3467; CHECK-NEXT: vmfeq.vv v16, v12, v123468; CHECK-NEXT: vmfeq.vv v17, v8, v83469; CHECK-NEXT: vmand.mm v16, v17, v163470; CHECK-NEXT: vmv1r.v v17, v163471; CHECK-NEXT: vmv1r.v v0, v163472; CHECK-NEXT: vmflt.vv v17, v8, v12, v0.t3473; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t3474; CHECK-NEXT: vmor.mm v0, v16, v173475; CHECK-NEXT: ret3476 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp3477 ret <32 x i1> %13478}3479 3480define <32 x i1> @fcmp_one_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {3481; CHECK-LABEL: fcmp_one_vf_v32f16:3482; CHECK: # %bb.0:3483; CHECK-NEXT: li a0, 323484; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3485; CHECK-NEXT: vfmv.v.f v12, fa03486; CHECK-NEXT: vmfeq.vf v16, v12, fa03487; CHECK-NEXT: vmfeq.vv v12, v8, v83488; CHECK-NEXT: vmand.mm v12, v12, v163489; CHECK-NEXT: vmv1r.v v13, v123490; CHECK-NEXT: vmv1r.v v0, v123491; CHECK-NEXT: vmflt.vf v13, v8, fa0, v0.t3492; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t3493; CHECK-NEXT: vmor.mm v0, v12, v133494; CHECK-NEXT: ret3495 %head = insertelement <32 x half> poison, half %b, i32 03496 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3497 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp3498 ret <32 x i1> %13499}3500 3501define <32 x i1> @fcmp_one_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {3502; CHECK-LABEL: fcmp_one_fv_v32f16:3503; CHECK: # %bb.0:3504; CHECK-NEXT: li a0, 323505; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3506; CHECK-NEXT: vfmv.v.f v12, fa03507; CHECK-NEXT: vmfeq.vf v16, v12, fa03508; CHECK-NEXT: vmfeq.vv v12, v8, v83509; CHECK-NEXT: vmand.mm v12, v16, v123510; CHECK-NEXT: vmv1r.v v13, v123511; CHECK-NEXT: vmv1r.v v0, v123512; CHECK-NEXT: vmfgt.vf v13, v8, fa0, v0.t3513; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t3514; CHECK-NEXT: vmor.mm v0, v12, v133515; CHECK-NEXT: ret3516 %head = insertelement <32 x half> poison, half %b, i32 03517 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3518 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp3519 ret <32 x i1> %13520}3521 3522define <32 x i1> @fcmp_ord_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {3523; CHECK-LABEL: fcmp_ord_vv_v32f16:3524; CHECK: # %bb.0:3525; CHECK-NEXT: li a0, 323526; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3527; CHECK-NEXT: vmfeq.vv v16, v12, v123528; CHECK-NEXT: vmfeq.vv v12, v8, v83529; CHECK-NEXT: vmand.mm v0, v12, v163530; CHECK-NEXT: ret3531 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp3532 ret <32 x i1> %13533}3534 3535define <32 x i1> @fcmp_ord_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {3536; CHECK-LABEL: fcmp_ord_vf_v32f16:3537; CHECK: # %bb.0:3538; CHECK-NEXT: li a0, 323539; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3540; CHECK-NEXT: vfmv.v.f v12, fa03541; CHECK-NEXT: vmfeq.vf v16, v12, fa03542; CHECK-NEXT: vmfeq.vv v12, v8, v83543; CHECK-NEXT: vmand.mm v0, v12, v163544; CHECK-NEXT: ret3545 %head = insertelement <32 x half> poison, half %b, i32 03546 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3547 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp3548 ret <32 x i1> %13549}3550 3551define <32 x i1> @fcmp_ord_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {3552; CHECK-LABEL: fcmp_ord_fv_v32f16:3553; CHECK: # %bb.0:3554; CHECK-NEXT: li a0, 323555; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3556; CHECK-NEXT: vfmv.v.f v12, fa03557; CHECK-NEXT: vmfeq.vf v16, v12, fa03558; CHECK-NEXT: vmfeq.vv v12, v8, v83559; CHECK-NEXT: vmand.mm v0, v16, v123560; CHECK-NEXT: ret3561 %head = insertelement <32 x half> poison, half %b, i32 03562 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3563 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp3564 ret <32 x i1> %13565}3566 3567define <32 x i1> @fcmp_ueq_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {3568; CHECK-LABEL: fcmp_ueq_vv_v32f16:3569; CHECK: # %bb.0:3570; CHECK-NEXT: li a0, 323571; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3572; CHECK-NEXT: vmfeq.vv v16, v12, v123573; CHECK-NEXT: vmfeq.vv v17, v8, v83574; CHECK-NEXT: vmand.mm v16, v17, v163575; CHECK-NEXT: vmv1r.v v17, v163576; CHECK-NEXT: vmv1r.v v0, v163577; CHECK-NEXT: vmflt.vv v17, v8, v12, v0.t3578; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t3579; CHECK-NEXT: vmnor.mm v0, v16, v173580; CHECK-NEXT: ret3581 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp3582 ret <32 x i1> %13583}3584 3585define <32 x i1> @fcmp_ueq_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {3586; CHECK-LABEL: fcmp_ueq_vf_v32f16:3587; CHECK: # %bb.0:3588; CHECK-NEXT: li a0, 323589; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3590; CHECK-NEXT: vfmv.v.f v12, fa03591; CHECK-NEXT: vmfeq.vf v16, v12, fa03592; CHECK-NEXT: vmfeq.vv v12, v8, v83593; CHECK-NEXT: vmand.mm v12, v12, v163594; CHECK-NEXT: vmv1r.v v13, v123595; CHECK-NEXT: vmv1r.v v0, v123596; CHECK-NEXT: vmflt.vf v13, v8, fa0, v0.t3597; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t3598; CHECK-NEXT: vmnor.mm v0, v12, v133599; CHECK-NEXT: ret3600 %head = insertelement <32 x half> poison, half %b, i32 03601 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3602 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp3603 ret <32 x i1> %13604}3605 3606define <32 x i1> @fcmp_ueq_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {3607; CHECK-LABEL: fcmp_ueq_fv_v32f16:3608; CHECK: # %bb.0:3609; CHECK-NEXT: li a0, 323610; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3611; CHECK-NEXT: vfmv.v.f v12, fa03612; CHECK-NEXT: vmfeq.vf v16, v12, fa03613; CHECK-NEXT: vmfeq.vv v12, v8, v83614; CHECK-NEXT: vmand.mm v12, v16, v123615; CHECK-NEXT: vmv1r.v v13, v123616; CHECK-NEXT: vmv1r.v v0, v123617; CHECK-NEXT: vmfgt.vf v13, v8, fa0, v0.t3618; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t3619; CHECK-NEXT: vmnor.mm v0, v12, v133620; CHECK-NEXT: ret3621 %head = insertelement <32 x half> poison, half %b, i32 03622 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3623 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp3624 ret <32 x i1> %13625}3626 3627define <32 x i1> @fcmp_ugt_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {3628; CHECK-LABEL: fcmp_ugt_vv_v32f16:3629; CHECK: # %bb.0:3630; CHECK-NEXT: li a0, 323631; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3632; CHECK-NEXT: vmfeq.vv v16, v12, v123633; CHECK-NEXT: vmfeq.vv v17, v8, v83634; CHECK-NEXT: vmand.mm v16, v17, v163635; CHECK-NEXT: vmv1r.v v0, v163636; CHECK-NEXT: vmfle.vv v16, v8, v12, v0.t3637; CHECK-NEXT: vmnot.m v0, v163638; CHECK-NEXT: ret3639 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp3640 ret <32 x i1> %13641}3642 3643define <32 x i1> @fcmp_ugt_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {3644; CHECK-LABEL: fcmp_ugt_vf_v32f16:3645; CHECK: # %bb.0:3646; CHECK-NEXT: li a0, 323647; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3648; CHECK-NEXT: vfmv.v.f v12, fa03649; CHECK-NEXT: vmfeq.vf v16, v12, fa03650; CHECK-NEXT: vmfeq.vv v12, v8, v83651; CHECK-NEXT: vmand.mm v12, v12, v163652; CHECK-NEXT: vmv1r.v v0, v123653; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t3654; CHECK-NEXT: vmnot.m v0, v123655; CHECK-NEXT: ret3656 %head = insertelement <32 x half> poison, half %b, i32 03657 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3658 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp3659 ret <32 x i1> %13660}3661 3662define <32 x i1> @fcmp_ugt_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {3663; CHECK-LABEL: fcmp_ugt_fv_v32f16:3664; CHECK: # %bb.0:3665; CHECK-NEXT: li a0, 323666; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3667; CHECK-NEXT: vfmv.v.f v12, fa03668; CHECK-NEXT: vmfeq.vf v16, v12, fa03669; CHECK-NEXT: vmfeq.vv v12, v8, v83670; CHECK-NEXT: vmand.mm v12, v16, v123671; CHECK-NEXT: vmv1r.v v0, v123672; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t3673; CHECK-NEXT: vmnot.m v0, v123674; CHECK-NEXT: ret3675 %head = insertelement <32 x half> poison, half %b, i32 03676 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3677 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp3678 ret <32 x i1> %13679}3680 3681define <32 x i1> @fcmp_uge_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {3682; CHECK-LABEL: fcmp_uge_vv_v32f16:3683; CHECK: # %bb.0:3684; CHECK-NEXT: li a0, 323685; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3686; CHECK-NEXT: vmfeq.vv v16, v12, v123687; CHECK-NEXT: vmfeq.vv v17, v8, v83688; CHECK-NEXT: vmand.mm v16, v17, v163689; CHECK-NEXT: vmv1r.v v0, v163690; CHECK-NEXT: vmflt.vv v16, v8, v12, v0.t3691; CHECK-NEXT: vmnot.m v0, v163692; CHECK-NEXT: ret3693 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp3694 ret <32 x i1> %13695}3696 3697define <32 x i1> @fcmp_uge_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {3698; CHECK-LABEL: fcmp_uge_vf_v32f16:3699; CHECK: # %bb.0:3700; CHECK-NEXT: li a0, 323701; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3702; CHECK-NEXT: vfmv.v.f v12, fa03703; CHECK-NEXT: vmfeq.vf v16, v12, fa03704; CHECK-NEXT: vmfeq.vv v12, v8, v83705; CHECK-NEXT: vmand.mm v12, v12, v163706; CHECK-NEXT: vmv1r.v v0, v123707; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t3708; CHECK-NEXT: vmnot.m v0, v123709; CHECK-NEXT: ret3710 %head = insertelement <32 x half> poison, half %b, i32 03711 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3712 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp3713 ret <32 x i1> %13714}3715 3716define <32 x i1> @fcmp_uge_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {3717; CHECK-LABEL: fcmp_uge_fv_v32f16:3718; CHECK: # %bb.0:3719; CHECK-NEXT: li a0, 323720; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3721; CHECK-NEXT: vfmv.v.f v12, fa03722; CHECK-NEXT: vmfeq.vf v16, v12, fa03723; CHECK-NEXT: vmfeq.vv v12, v8, v83724; CHECK-NEXT: vmand.mm v12, v16, v123725; CHECK-NEXT: vmv1r.v v0, v123726; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t3727; CHECK-NEXT: vmnot.m v0, v123728; CHECK-NEXT: ret3729 %head = insertelement <32 x half> poison, half %b, i32 03730 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3731 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp3732 ret <32 x i1> %13733}3734 3735define <32 x i1> @fcmp_ult_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {3736; CHECK-LABEL: fcmp_ult_vv_v32f16:3737; CHECK: # %bb.0:3738; CHECK-NEXT: li a0, 323739; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3740; CHECK-NEXT: vmfeq.vv v16, v8, v83741; CHECK-NEXT: vmfeq.vv v17, v12, v123742; CHECK-NEXT: vmand.mm v16, v17, v163743; CHECK-NEXT: vmv1r.v v0, v163744; CHECK-NEXT: vmfle.vv v16, v12, v8, v0.t3745; CHECK-NEXT: vmnot.m v0, v163746; CHECK-NEXT: ret3747 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp3748 ret <32 x i1> %13749}3750 3751define <32 x i1> @fcmp_ult_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {3752; CHECK-LABEL: fcmp_ult_vf_v32f16:3753; CHECK: # %bb.0:3754; CHECK-NEXT: li a0, 323755; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3756; CHECK-NEXT: vfmv.v.f v12, fa03757; CHECK-NEXT: vmfeq.vf v16, v12, fa03758; CHECK-NEXT: vmfeq.vv v12, v8, v83759; CHECK-NEXT: vmand.mm v12, v16, v123760; CHECK-NEXT: vmv1r.v v0, v123761; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t3762; CHECK-NEXT: vmnot.m v0, v123763; CHECK-NEXT: ret3764 %head = insertelement <32 x half> poison, half %b, i32 03765 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3766 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp3767 ret <32 x i1> %13768}3769 3770define <32 x i1> @fcmp_ult_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {3771; CHECK-LABEL: fcmp_ult_fv_v32f16:3772; CHECK: # %bb.0:3773; CHECK-NEXT: li a0, 323774; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3775; CHECK-NEXT: vfmv.v.f v12, fa03776; CHECK-NEXT: vmfeq.vf v16, v12, fa03777; CHECK-NEXT: vmfeq.vv v12, v8, v83778; CHECK-NEXT: vmand.mm v12, v12, v163779; CHECK-NEXT: vmv1r.v v0, v123780; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t3781; CHECK-NEXT: vmnot.m v0, v123782; CHECK-NEXT: ret3783 %head = insertelement <32 x half> poison, half %b, i32 03784 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3785 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp3786 ret <32 x i1> %13787}3788 3789define <32 x i1> @fcmp_ule_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {3790; CHECK-LABEL: fcmp_ule_vv_v32f16:3791; CHECK: # %bb.0:3792; CHECK-NEXT: li a0, 323793; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3794; CHECK-NEXT: vmfeq.vv v16, v8, v83795; CHECK-NEXT: vmfeq.vv v17, v12, v123796; CHECK-NEXT: vmand.mm v16, v17, v163797; CHECK-NEXT: vmv1r.v v0, v163798; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t3799; CHECK-NEXT: vmnot.m v0, v163800; CHECK-NEXT: ret3801 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp3802 ret <32 x i1> %13803}3804 3805define <32 x i1> @fcmp_ule_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {3806; CHECK-LABEL: fcmp_ule_vf_v32f16:3807; CHECK: # %bb.0:3808; CHECK-NEXT: li a0, 323809; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3810; CHECK-NEXT: vfmv.v.f v12, fa03811; CHECK-NEXT: vmfeq.vf v16, v12, fa03812; CHECK-NEXT: vmfeq.vv v12, v8, v83813; CHECK-NEXT: vmand.mm v12, v16, v123814; CHECK-NEXT: vmv1r.v v0, v123815; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t3816; CHECK-NEXT: vmnot.m v0, v123817; CHECK-NEXT: ret3818 %head = insertelement <32 x half> poison, half %b, i32 03819 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3820 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp3821 ret <32 x i1> %13822}3823 3824define <32 x i1> @fcmp_ule_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {3825; CHECK-LABEL: fcmp_ule_fv_v32f16:3826; CHECK: # %bb.0:3827; CHECK-NEXT: li a0, 323828; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3829; CHECK-NEXT: vfmv.v.f v12, fa03830; CHECK-NEXT: vmfeq.vf v16, v12, fa03831; CHECK-NEXT: vmfeq.vv v12, v8, v83832; CHECK-NEXT: vmand.mm v12, v12, v163833; CHECK-NEXT: vmv1r.v v0, v123834; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t3835; CHECK-NEXT: vmnot.m v0, v123836; CHECK-NEXT: ret3837 %head = insertelement <32 x half> poison, half %b, i32 03838 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3839 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp3840 ret <32 x i1> %13841}3842 3843define <32 x i1> @fcmp_une_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {3844; CHECK-LABEL: fcmp_une_vv_v32f16:3845; CHECK: # %bb.0:3846; CHECK-NEXT: li a0, 323847; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3848; CHECK-NEXT: vmfne.vv v0, v8, v123849; CHECK-NEXT: ret3850 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp3851 ret <32 x i1> %13852}3853 3854define <32 x i1> @fcmp_une_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {3855; CHECK-LABEL: fcmp_une_vf_v32f16:3856; CHECK: # %bb.0:3857; CHECK-NEXT: li a0, 323858; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3859; CHECK-NEXT: vmfne.vf v0, v8, fa03860; CHECK-NEXT: ret3861 %head = insertelement <32 x half> poison, half %b, i32 03862 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3863 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp3864 ret <32 x i1> %13865}3866 3867define <32 x i1> @fcmp_une_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {3868; CHECK-LABEL: fcmp_une_fv_v32f16:3869; CHECK: # %bb.0:3870; CHECK-NEXT: li a0, 323871; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3872; CHECK-NEXT: vmfne.vf v0, v8, fa03873; CHECK-NEXT: ret3874 %head = insertelement <32 x half> poison, half %b, i32 03875 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3876 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp3877 ret <32 x i1> %13878}3879 3880define <32 x i1> @fcmp_uno_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {3881; CHECK-LABEL: fcmp_uno_vv_v32f16:3882; CHECK: # %bb.0:3883; CHECK-NEXT: li a0, 323884; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3885; CHECK-NEXT: vmfne.vv v16, v12, v123886; CHECK-NEXT: vmfne.vv v12, v8, v83887; CHECK-NEXT: vmor.mm v0, v12, v163888; CHECK-NEXT: ret3889 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp3890 ret <32 x i1> %13891}3892 3893define <32 x i1> @fcmp_uno_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {3894; CHECK-LABEL: fcmp_uno_vf_v32f16:3895; CHECK: # %bb.0:3896; CHECK-NEXT: li a0, 323897; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3898; CHECK-NEXT: vfmv.v.f v12, fa03899; CHECK-NEXT: vmfne.vf v16, v12, fa03900; CHECK-NEXT: vmfne.vv v12, v8, v83901; CHECK-NEXT: vmor.mm v0, v12, v163902; CHECK-NEXT: ret3903 %head = insertelement <32 x half> poison, half %b, i32 03904 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3905 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp3906 ret <32 x i1> %13907}3908 3909define <32 x i1> @fcmp_uno_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {3910; CHECK-LABEL: fcmp_uno_fv_v32f16:3911; CHECK: # %bb.0:3912; CHECK-NEXT: li a0, 323913; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3914; CHECK-NEXT: vfmv.v.f v12, fa03915; CHECK-NEXT: vmfne.vf v16, v12, fa03916; CHECK-NEXT: vmfne.vv v12, v8, v83917; CHECK-NEXT: vmor.mm v0, v16, v123918; CHECK-NEXT: ret3919 %head = insertelement <32 x half> poison, half %b, i32 03920 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3921 %1 = call <32 x i1> @llvm.experimental.constrained.fcmp.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp3922 ret <32 x i1> %13923}3924 3925define <1 x i1> @fcmp_oeq_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {3926; CHECK-LABEL: fcmp_oeq_vv_v1f32:3927; CHECK: # %bb.0:3928; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3929; CHECK-NEXT: vmfeq.vv v0, v8, v93930; CHECK-NEXT: ret3931 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp3932 ret <1 x i1> %13933}3934 3935define <1 x i1> @fcmp_oeq_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {3936; CHECK-LABEL: fcmp_oeq_vf_v1f32:3937; CHECK: # %bb.0:3938; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3939; CHECK-NEXT: vmfeq.vf v0, v8, fa03940; CHECK-NEXT: ret3941 %head = insertelement <1 x float> poison, float %b, i32 03942 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3943 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp3944 ret <1 x i1> %13945}3946 3947define <1 x i1> @fcmp_oeq_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {3948; CHECK-LABEL: fcmp_oeq_fv_v1f32:3949; CHECK: # %bb.0:3950; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3951; CHECK-NEXT: vmfeq.vf v0, v8, fa03952; CHECK-NEXT: ret3953 %head = insertelement <1 x float> poison, float %b, i32 03954 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3955 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp3956 ret <1 x i1> %13957}3958 3959define <1 x i1> @fcmp_ogt_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {3960; CHECK-LABEL: fcmp_ogt_vv_v1f32:3961; CHECK: # %bb.0:3962; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu3963; CHECK-NEXT: vmfeq.vv v10, v8, v83964; CHECK-NEXT: vmfeq.vv v11, v9, v93965; CHECK-NEXT: vmand.mm v0, v11, v103966; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t3967; CHECK-NEXT: ret3968 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp3969 ret <1 x i1> %13970}3971 3972define <1 x i1> @fcmp_ogt_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {3973; CHECK-LABEL: fcmp_ogt_vf_v1f32:3974; CHECK: # %bb.0:3975; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu3976; CHECK-NEXT: vfmv.s.f v9, fa03977; CHECK-NEXT: vmfeq.vv v10, v8, v83978; CHECK-NEXT: vmfeq.vf v9, v9, fa03979; CHECK-NEXT: vmand.mm v0, v9, v103980; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t3981; CHECK-NEXT: ret3982 %head = insertelement <1 x float> poison, float %b, i32 03983 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3984 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp3985 ret <1 x i1> %13986}3987 3988define <1 x i1> @fcmp_ogt_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {3989; CHECK-LABEL: fcmp_ogt_fv_v1f32:3990; CHECK: # %bb.0:3991; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu3992; CHECK-NEXT: vfmv.s.f v9, fa03993; CHECK-NEXT: vmfeq.vv v10, v8, v83994; CHECK-NEXT: vmfeq.vf v9, v9, fa03995; CHECK-NEXT: vmand.mm v0, v10, v93996; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t3997; CHECK-NEXT: ret3998 %head = insertelement <1 x float> poison, float %b, i32 03999 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4000 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp4001 ret <1 x i1> %14002}4003 4004define <1 x i1> @fcmp_oge_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {4005; CHECK-LABEL: fcmp_oge_vv_v1f32:4006; CHECK: # %bb.0:4007; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4008; CHECK-NEXT: vmfeq.vv v10, v8, v84009; CHECK-NEXT: vmfeq.vv v11, v9, v94010; CHECK-NEXT: vmand.mm v0, v11, v104011; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t4012; CHECK-NEXT: ret4013 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp4014 ret <1 x i1> %14015}4016 4017define <1 x i1> @fcmp_oge_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {4018; CHECK-LABEL: fcmp_oge_vf_v1f32:4019; CHECK: # %bb.0:4020; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4021; CHECK-NEXT: vfmv.s.f v9, fa04022; CHECK-NEXT: vmfeq.vv v10, v8, v84023; CHECK-NEXT: vmfeq.vf v9, v9, fa04024; CHECK-NEXT: vmand.mm v0, v9, v104025; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t4026; CHECK-NEXT: ret4027 %head = insertelement <1 x float> poison, float %b, i32 04028 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4029 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp4030 ret <1 x i1> %14031}4032 4033define <1 x i1> @fcmp_oge_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {4034; CHECK-LABEL: fcmp_oge_fv_v1f32:4035; CHECK: # %bb.0:4036; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4037; CHECK-NEXT: vfmv.s.f v9, fa04038; CHECK-NEXT: vmfeq.vv v10, v8, v84039; CHECK-NEXT: vmfeq.vf v9, v9, fa04040; CHECK-NEXT: vmand.mm v0, v10, v94041; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t4042; CHECK-NEXT: ret4043 %head = insertelement <1 x float> poison, float %b, i32 04044 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4045 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp4046 ret <1 x i1> %14047}4048 4049define <1 x i1> @fcmp_olt_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {4050; CHECK-LABEL: fcmp_olt_vv_v1f32:4051; CHECK: # %bb.0:4052; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4053; CHECK-NEXT: vmfeq.vv v10, v9, v94054; CHECK-NEXT: vmfeq.vv v11, v8, v84055; CHECK-NEXT: vmand.mm v0, v11, v104056; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t4057; CHECK-NEXT: ret4058 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp4059 ret <1 x i1> %14060}4061 4062define <1 x i1> @fcmp_olt_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {4063; CHECK-LABEL: fcmp_olt_vf_v1f32:4064; CHECK: # %bb.0:4065; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4066; CHECK-NEXT: vfmv.s.f v9, fa04067; CHECK-NEXT: vmfeq.vv v10, v8, v84068; CHECK-NEXT: vmfeq.vf v9, v9, fa04069; CHECK-NEXT: vmand.mm v0, v10, v94070; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t4071; CHECK-NEXT: ret4072 %head = insertelement <1 x float> poison, float %b, i32 04073 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4074 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp4075 ret <1 x i1> %14076}4077 4078define <1 x i1> @fcmp_olt_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {4079; CHECK-LABEL: fcmp_olt_fv_v1f32:4080; CHECK: # %bb.0:4081; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4082; CHECK-NEXT: vfmv.s.f v9, fa04083; CHECK-NEXT: vmfeq.vv v10, v8, v84084; CHECK-NEXT: vmfeq.vf v9, v9, fa04085; CHECK-NEXT: vmand.mm v0, v9, v104086; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t4087; CHECK-NEXT: ret4088 %head = insertelement <1 x float> poison, float %b, i32 04089 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4090 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp4091 ret <1 x i1> %14092}4093 4094define <1 x i1> @fcmp_ole_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {4095; CHECK-LABEL: fcmp_ole_vv_v1f32:4096; CHECK: # %bb.0:4097; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4098; CHECK-NEXT: vmfeq.vv v10, v9, v94099; CHECK-NEXT: vmfeq.vv v11, v8, v84100; CHECK-NEXT: vmand.mm v0, v11, v104101; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t4102; CHECK-NEXT: ret4103 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp4104 ret <1 x i1> %14105}4106 4107define <1 x i1> @fcmp_ole_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {4108; CHECK-LABEL: fcmp_ole_vf_v1f32:4109; CHECK: # %bb.0:4110; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4111; CHECK-NEXT: vfmv.s.f v9, fa04112; CHECK-NEXT: vmfeq.vv v10, v8, v84113; CHECK-NEXT: vmfeq.vf v9, v9, fa04114; CHECK-NEXT: vmand.mm v0, v10, v94115; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t4116; CHECK-NEXT: ret4117 %head = insertelement <1 x float> poison, float %b, i32 04118 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4119 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp4120 ret <1 x i1> %14121}4122 4123define <1 x i1> @fcmp_ole_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {4124; CHECK-LABEL: fcmp_ole_fv_v1f32:4125; CHECK: # %bb.0:4126; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4127; CHECK-NEXT: vfmv.s.f v9, fa04128; CHECK-NEXT: vmfeq.vv v10, v8, v84129; CHECK-NEXT: vmfeq.vf v9, v9, fa04130; CHECK-NEXT: vmand.mm v0, v9, v104131; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t4132; CHECK-NEXT: ret4133 %head = insertelement <1 x float> poison, float %b, i32 04134 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4135 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp4136 ret <1 x i1> %14137}4138 4139define <1 x i1> @fcmp_one_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {4140; CHECK-LABEL: fcmp_one_vv_v1f32:4141; CHECK: # %bb.0:4142; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4143; CHECK-NEXT: vmfeq.vv v10, v9, v94144; CHECK-NEXT: vmfeq.vv v11, v8, v84145; CHECK-NEXT: vmand.mm v0, v11, v104146; CHECK-NEXT: vmv1r.v v10, v04147; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t4148; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t4149; CHECK-NEXT: vmor.mm v0, v0, v104150; CHECK-NEXT: ret4151 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp4152 ret <1 x i1> %14153}4154 4155define <1 x i1> @fcmp_one_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {4156; CHECK-LABEL: fcmp_one_vf_v1f32:4157; CHECK: # %bb.0:4158; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4159; CHECK-NEXT: vfmv.s.f v9, fa04160; CHECK-NEXT: vmfeq.vv v10, v8, v84161; CHECK-NEXT: vmfeq.vf v9, v9, fa04162; CHECK-NEXT: vmand.mm v0, v10, v94163; CHECK-NEXT: vmv1r.v v9, v04164; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t4165; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t4166; CHECK-NEXT: vmor.mm v0, v0, v94167; CHECK-NEXT: ret4168 %head = insertelement <1 x float> poison, float %b, i32 04169 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4170 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp4171 ret <1 x i1> %14172}4173 4174define <1 x i1> @fcmp_one_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {4175; CHECK-LABEL: fcmp_one_fv_v1f32:4176; CHECK: # %bb.0:4177; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4178; CHECK-NEXT: vfmv.s.f v9, fa04179; CHECK-NEXT: vmfeq.vv v10, v8, v84180; CHECK-NEXT: vmfeq.vf v9, v9, fa04181; CHECK-NEXT: vmand.mm v0, v9, v104182; CHECK-NEXT: vmv1r.v v9, v04183; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t4184; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t4185; CHECK-NEXT: vmor.mm v0, v0, v94186; CHECK-NEXT: ret4187 %head = insertelement <1 x float> poison, float %b, i32 04188 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4189 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp4190 ret <1 x i1> %14191}4192 4193define <1 x i1> @fcmp_ord_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {4194; CHECK-LABEL: fcmp_ord_vv_v1f32:4195; CHECK: # %bb.0:4196; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma4197; CHECK-NEXT: vmfeq.vv v9, v9, v94198; CHECK-NEXT: vmfeq.vv v8, v8, v84199; CHECK-NEXT: vmand.mm v0, v8, v94200; CHECK-NEXT: ret4201 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp4202 ret <1 x i1> %14203}4204 4205define <1 x i1> @fcmp_ord_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {4206; CHECK-LABEL: fcmp_ord_vf_v1f32:4207; CHECK: # %bb.0:4208; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma4209; CHECK-NEXT: vfmv.s.f v9, fa04210; CHECK-NEXT: vmfeq.vf v9, v9, fa04211; CHECK-NEXT: vmfeq.vv v8, v8, v84212; CHECK-NEXT: vmand.mm v0, v8, v94213; CHECK-NEXT: ret4214 %head = insertelement <1 x float> poison, float %b, i32 04215 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4216 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp4217 ret <1 x i1> %14218}4219 4220define <1 x i1> @fcmp_ord_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {4221; CHECK-LABEL: fcmp_ord_fv_v1f32:4222; CHECK: # %bb.0:4223; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma4224; CHECK-NEXT: vfmv.s.f v9, fa04225; CHECK-NEXT: vmfeq.vf v9, v9, fa04226; CHECK-NEXT: vmfeq.vv v8, v8, v84227; CHECK-NEXT: vmand.mm v0, v9, v84228; CHECK-NEXT: ret4229 %head = insertelement <1 x float> poison, float %b, i32 04230 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4231 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp4232 ret <1 x i1> %14233}4234 4235define <1 x i1> @fcmp_ueq_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {4236; CHECK-LABEL: fcmp_ueq_vv_v1f32:4237; CHECK: # %bb.0:4238; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4239; CHECK-NEXT: vmfeq.vv v10, v9, v94240; CHECK-NEXT: vmfeq.vv v11, v8, v84241; CHECK-NEXT: vmand.mm v0, v11, v104242; CHECK-NEXT: vmv1r.v v10, v04243; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t4244; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t4245; CHECK-NEXT: vmnor.mm v0, v0, v104246; CHECK-NEXT: ret4247 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp4248 ret <1 x i1> %14249}4250 4251define <1 x i1> @fcmp_ueq_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {4252; CHECK-LABEL: fcmp_ueq_vf_v1f32:4253; CHECK: # %bb.0:4254; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4255; CHECK-NEXT: vfmv.s.f v9, fa04256; CHECK-NEXT: vmfeq.vv v10, v8, v84257; CHECK-NEXT: vmfeq.vf v9, v9, fa04258; CHECK-NEXT: vmand.mm v0, v10, v94259; CHECK-NEXT: vmv1r.v v9, v04260; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t4261; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t4262; CHECK-NEXT: vmnor.mm v0, v0, v94263; CHECK-NEXT: ret4264 %head = insertelement <1 x float> poison, float %b, i32 04265 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4266 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp4267 ret <1 x i1> %14268}4269 4270define <1 x i1> @fcmp_ueq_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {4271; CHECK-LABEL: fcmp_ueq_fv_v1f32:4272; CHECK: # %bb.0:4273; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4274; CHECK-NEXT: vfmv.s.f v9, fa04275; CHECK-NEXT: vmfeq.vv v10, v8, v84276; CHECK-NEXT: vmfeq.vf v9, v9, fa04277; CHECK-NEXT: vmand.mm v0, v9, v104278; CHECK-NEXT: vmv1r.v v9, v04279; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t4280; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t4281; CHECK-NEXT: vmnor.mm v0, v0, v94282; CHECK-NEXT: ret4283 %head = insertelement <1 x float> poison, float %b, i32 04284 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4285 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp4286 ret <1 x i1> %14287}4288 4289define <1 x i1> @fcmp_ugt_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {4290; CHECK-LABEL: fcmp_ugt_vv_v1f32:4291; CHECK: # %bb.0:4292; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4293; CHECK-NEXT: vmfeq.vv v10, v9, v94294; CHECK-NEXT: vmfeq.vv v11, v8, v84295; CHECK-NEXT: vmand.mm v0, v11, v104296; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t4297; CHECK-NEXT: vmnot.m v0, v04298; CHECK-NEXT: ret4299 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp4300 ret <1 x i1> %14301}4302 4303define <1 x i1> @fcmp_ugt_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {4304; CHECK-LABEL: fcmp_ugt_vf_v1f32:4305; CHECK: # %bb.0:4306; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4307; CHECK-NEXT: vfmv.s.f v9, fa04308; CHECK-NEXT: vmfeq.vv v10, v8, v84309; CHECK-NEXT: vmfeq.vf v9, v9, fa04310; CHECK-NEXT: vmand.mm v0, v10, v94311; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t4312; CHECK-NEXT: vmnot.m v0, v04313; CHECK-NEXT: ret4314 %head = insertelement <1 x float> poison, float %b, i32 04315 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4316 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp4317 ret <1 x i1> %14318}4319 4320define <1 x i1> @fcmp_ugt_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {4321; CHECK-LABEL: fcmp_ugt_fv_v1f32:4322; CHECK: # %bb.0:4323; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4324; CHECK-NEXT: vfmv.s.f v9, fa04325; CHECK-NEXT: vmfeq.vv v10, v8, v84326; CHECK-NEXT: vmfeq.vf v9, v9, fa04327; CHECK-NEXT: vmand.mm v0, v9, v104328; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t4329; CHECK-NEXT: vmnot.m v0, v04330; CHECK-NEXT: ret4331 %head = insertelement <1 x float> poison, float %b, i32 04332 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4333 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp4334 ret <1 x i1> %14335}4336 4337define <1 x i1> @fcmp_uge_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {4338; CHECK-LABEL: fcmp_uge_vv_v1f32:4339; CHECK: # %bb.0:4340; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4341; CHECK-NEXT: vmfeq.vv v10, v9, v94342; CHECK-NEXT: vmfeq.vv v11, v8, v84343; CHECK-NEXT: vmand.mm v0, v11, v104344; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t4345; CHECK-NEXT: vmnot.m v0, v04346; CHECK-NEXT: ret4347 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp4348 ret <1 x i1> %14349}4350 4351define <1 x i1> @fcmp_uge_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {4352; CHECK-LABEL: fcmp_uge_vf_v1f32:4353; CHECK: # %bb.0:4354; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4355; CHECK-NEXT: vfmv.s.f v9, fa04356; CHECK-NEXT: vmfeq.vv v10, v8, v84357; CHECK-NEXT: vmfeq.vf v9, v9, fa04358; CHECK-NEXT: vmand.mm v0, v10, v94359; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t4360; CHECK-NEXT: vmnot.m v0, v04361; CHECK-NEXT: ret4362 %head = insertelement <1 x float> poison, float %b, i32 04363 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4364 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp4365 ret <1 x i1> %14366}4367 4368define <1 x i1> @fcmp_uge_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {4369; CHECK-LABEL: fcmp_uge_fv_v1f32:4370; CHECK: # %bb.0:4371; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4372; CHECK-NEXT: vfmv.s.f v9, fa04373; CHECK-NEXT: vmfeq.vv v10, v8, v84374; CHECK-NEXT: vmfeq.vf v9, v9, fa04375; CHECK-NEXT: vmand.mm v0, v9, v104376; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t4377; CHECK-NEXT: vmnot.m v0, v04378; CHECK-NEXT: ret4379 %head = insertelement <1 x float> poison, float %b, i32 04380 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4381 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp4382 ret <1 x i1> %14383}4384 4385define <1 x i1> @fcmp_ult_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {4386; CHECK-LABEL: fcmp_ult_vv_v1f32:4387; CHECK: # %bb.0:4388; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4389; CHECK-NEXT: vmfeq.vv v10, v8, v84390; CHECK-NEXT: vmfeq.vv v11, v9, v94391; CHECK-NEXT: vmand.mm v0, v11, v104392; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t4393; CHECK-NEXT: vmnot.m v0, v04394; CHECK-NEXT: ret4395 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp4396 ret <1 x i1> %14397}4398 4399define <1 x i1> @fcmp_ult_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {4400; CHECK-LABEL: fcmp_ult_vf_v1f32:4401; CHECK: # %bb.0:4402; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4403; CHECK-NEXT: vfmv.s.f v9, fa04404; CHECK-NEXT: vmfeq.vv v10, v8, v84405; CHECK-NEXT: vmfeq.vf v9, v9, fa04406; CHECK-NEXT: vmand.mm v0, v9, v104407; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t4408; CHECK-NEXT: vmnot.m v0, v04409; CHECK-NEXT: ret4410 %head = insertelement <1 x float> poison, float %b, i32 04411 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4412 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp4413 ret <1 x i1> %14414}4415 4416define <1 x i1> @fcmp_ult_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {4417; CHECK-LABEL: fcmp_ult_fv_v1f32:4418; CHECK: # %bb.0:4419; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4420; CHECK-NEXT: vfmv.s.f v9, fa04421; CHECK-NEXT: vmfeq.vv v10, v8, v84422; CHECK-NEXT: vmfeq.vf v9, v9, fa04423; CHECK-NEXT: vmand.mm v0, v10, v94424; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t4425; CHECK-NEXT: vmnot.m v0, v04426; CHECK-NEXT: ret4427 %head = insertelement <1 x float> poison, float %b, i32 04428 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4429 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp4430 ret <1 x i1> %14431}4432 4433define <1 x i1> @fcmp_ule_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {4434; CHECK-LABEL: fcmp_ule_vv_v1f32:4435; CHECK: # %bb.0:4436; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4437; CHECK-NEXT: vmfeq.vv v10, v8, v84438; CHECK-NEXT: vmfeq.vv v11, v9, v94439; CHECK-NEXT: vmand.mm v0, v11, v104440; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t4441; CHECK-NEXT: vmnot.m v0, v04442; CHECK-NEXT: ret4443 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp4444 ret <1 x i1> %14445}4446 4447define <1 x i1> @fcmp_ule_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {4448; CHECK-LABEL: fcmp_ule_vf_v1f32:4449; CHECK: # %bb.0:4450; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4451; CHECK-NEXT: vfmv.s.f v9, fa04452; CHECK-NEXT: vmfeq.vv v10, v8, v84453; CHECK-NEXT: vmfeq.vf v9, v9, fa04454; CHECK-NEXT: vmand.mm v0, v9, v104455; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t4456; CHECK-NEXT: vmnot.m v0, v04457; CHECK-NEXT: ret4458 %head = insertelement <1 x float> poison, float %b, i32 04459 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4460 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp4461 ret <1 x i1> %14462}4463 4464define <1 x i1> @fcmp_ule_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {4465; CHECK-LABEL: fcmp_ule_fv_v1f32:4466; CHECK: # %bb.0:4467; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, mu4468; CHECK-NEXT: vfmv.s.f v9, fa04469; CHECK-NEXT: vmfeq.vv v10, v8, v84470; CHECK-NEXT: vmfeq.vf v9, v9, fa04471; CHECK-NEXT: vmand.mm v0, v10, v94472; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t4473; CHECK-NEXT: vmnot.m v0, v04474; CHECK-NEXT: ret4475 %head = insertelement <1 x float> poison, float %b, i32 04476 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4477 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp4478 ret <1 x i1> %14479}4480 4481define <1 x i1> @fcmp_une_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {4482; CHECK-LABEL: fcmp_une_vv_v1f32:4483; CHECK: # %bb.0:4484; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma4485; CHECK-NEXT: vmfne.vv v0, v8, v94486; CHECK-NEXT: ret4487 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp4488 ret <1 x i1> %14489}4490 4491define <1 x i1> @fcmp_une_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {4492; CHECK-LABEL: fcmp_une_vf_v1f32:4493; CHECK: # %bb.0:4494; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma4495; CHECK-NEXT: vmfne.vf v0, v8, fa04496; CHECK-NEXT: ret4497 %head = insertelement <1 x float> poison, float %b, i32 04498 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4499 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp4500 ret <1 x i1> %14501}4502 4503define <1 x i1> @fcmp_une_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {4504; CHECK-LABEL: fcmp_une_fv_v1f32:4505; CHECK: # %bb.0:4506; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma4507; CHECK-NEXT: vmfne.vf v0, v8, fa04508; CHECK-NEXT: ret4509 %head = insertelement <1 x float> poison, float %b, i32 04510 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4511 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp4512 ret <1 x i1> %14513}4514 4515define <1 x i1> @fcmp_uno_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {4516; CHECK-LABEL: fcmp_uno_vv_v1f32:4517; CHECK: # %bb.0:4518; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma4519; CHECK-NEXT: vmfne.vv v9, v9, v94520; CHECK-NEXT: vmfne.vv v8, v8, v84521; CHECK-NEXT: vmor.mm v0, v8, v94522; CHECK-NEXT: ret4523 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp4524 ret <1 x i1> %14525}4526 4527define <1 x i1> @fcmp_uno_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {4528; CHECK-LABEL: fcmp_uno_vf_v1f32:4529; CHECK: # %bb.0:4530; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma4531; CHECK-NEXT: vfmv.s.f v9, fa04532; CHECK-NEXT: vmfne.vf v9, v9, fa04533; CHECK-NEXT: vmfne.vv v8, v8, v84534; CHECK-NEXT: vmor.mm v0, v8, v94535; CHECK-NEXT: ret4536 %head = insertelement <1 x float> poison, float %b, i32 04537 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4538 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp4539 ret <1 x i1> %14540}4541 4542define <1 x i1> @fcmp_uno_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {4543; CHECK-LABEL: fcmp_uno_fv_v1f32:4544; CHECK: # %bb.0:4545; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma4546; CHECK-NEXT: vfmv.s.f v9, fa04547; CHECK-NEXT: vmfne.vf v9, v9, fa04548; CHECK-NEXT: vmfne.vv v8, v8, v84549; CHECK-NEXT: vmor.mm v0, v9, v84550; CHECK-NEXT: ret4551 %head = insertelement <1 x float> poison, float %b, i32 04552 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer4553 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp4554 ret <1 x i1> %14555}4556 4557define <2 x i1> @fcmp_oeq_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {4558; CHECK-LABEL: fcmp_oeq_vv_v2f32:4559; CHECK: # %bb.0:4560; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4561; CHECK-NEXT: vmfeq.vv v0, v8, v94562; CHECK-NEXT: ret4563 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp4564 ret <2 x i1> %14565}4566 4567define <2 x i1> @fcmp_oeq_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {4568; CHECK-LABEL: fcmp_oeq_vf_v2f32:4569; CHECK: # %bb.0:4570; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4571; CHECK-NEXT: vmfeq.vf v0, v8, fa04572; CHECK-NEXT: ret4573 %head = insertelement <2 x float> poison, float %b, i32 04574 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4575 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp4576 ret <2 x i1> %14577}4578 4579define <2 x i1> @fcmp_oeq_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {4580; CHECK-LABEL: fcmp_oeq_fv_v2f32:4581; CHECK: # %bb.0:4582; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4583; CHECK-NEXT: vmfeq.vf v0, v8, fa04584; CHECK-NEXT: ret4585 %head = insertelement <2 x float> poison, float %b, i32 04586 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4587 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp4588 ret <2 x i1> %14589}4590 4591define <2 x i1> @fcmp_ogt_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {4592; CHECK-LABEL: fcmp_ogt_vv_v2f32:4593; CHECK: # %bb.0:4594; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4595; CHECK-NEXT: vmfeq.vv v10, v8, v84596; CHECK-NEXT: vmfeq.vv v11, v9, v94597; CHECK-NEXT: vmand.mm v0, v11, v104598; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t4599; CHECK-NEXT: ret4600 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp4601 ret <2 x i1> %14602}4603 4604define <2 x i1> @fcmp_ogt_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {4605; CHECK-LABEL: fcmp_ogt_vf_v2f32:4606; CHECK: # %bb.0:4607; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4608; CHECK-NEXT: vfmv.v.f v9, fa04609; CHECK-NEXT: vmfeq.vv v10, v8, v84610; CHECK-NEXT: vmfeq.vf v9, v9, fa04611; CHECK-NEXT: vmand.mm v0, v9, v104612; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t4613; CHECK-NEXT: ret4614 %head = insertelement <2 x float> poison, float %b, i32 04615 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4616 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp4617 ret <2 x i1> %14618}4619 4620define <2 x i1> @fcmp_ogt_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {4621; CHECK-LABEL: fcmp_ogt_fv_v2f32:4622; CHECK: # %bb.0:4623; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4624; CHECK-NEXT: vfmv.v.f v9, fa04625; CHECK-NEXT: vmfeq.vv v10, v8, v84626; CHECK-NEXT: vmfeq.vf v9, v9, fa04627; CHECK-NEXT: vmand.mm v0, v10, v94628; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t4629; CHECK-NEXT: ret4630 %head = insertelement <2 x float> poison, float %b, i32 04631 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4632 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp4633 ret <2 x i1> %14634}4635 4636define <2 x i1> @fcmp_oge_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {4637; CHECK-LABEL: fcmp_oge_vv_v2f32:4638; CHECK: # %bb.0:4639; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4640; CHECK-NEXT: vmfeq.vv v10, v8, v84641; CHECK-NEXT: vmfeq.vv v11, v9, v94642; CHECK-NEXT: vmand.mm v0, v11, v104643; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t4644; CHECK-NEXT: ret4645 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp4646 ret <2 x i1> %14647}4648 4649define <2 x i1> @fcmp_oge_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {4650; CHECK-LABEL: fcmp_oge_vf_v2f32:4651; CHECK: # %bb.0:4652; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4653; CHECK-NEXT: vfmv.v.f v9, fa04654; CHECK-NEXT: vmfeq.vv v10, v8, v84655; CHECK-NEXT: vmfeq.vf v9, v9, fa04656; CHECK-NEXT: vmand.mm v0, v9, v104657; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t4658; CHECK-NEXT: ret4659 %head = insertelement <2 x float> poison, float %b, i32 04660 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4661 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp4662 ret <2 x i1> %14663}4664 4665define <2 x i1> @fcmp_oge_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {4666; CHECK-LABEL: fcmp_oge_fv_v2f32:4667; CHECK: # %bb.0:4668; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4669; CHECK-NEXT: vfmv.v.f v9, fa04670; CHECK-NEXT: vmfeq.vv v10, v8, v84671; CHECK-NEXT: vmfeq.vf v9, v9, fa04672; CHECK-NEXT: vmand.mm v0, v10, v94673; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t4674; CHECK-NEXT: ret4675 %head = insertelement <2 x float> poison, float %b, i32 04676 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4677 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp4678 ret <2 x i1> %14679}4680 4681define <2 x i1> @fcmp_olt_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {4682; CHECK-LABEL: fcmp_olt_vv_v2f32:4683; CHECK: # %bb.0:4684; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4685; CHECK-NEXT: vmfeq.vv v10, v9, v94686; CHECK-NEXT: vmfeq.vv v11, v8, v84687; CHECK-NEXT: vmand.mm v0, v11, v104688; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t4689; CHECK-NEXT: ret4690 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp4691 ret <2 x i1> %14692}4693 4694define <2 x i1> @fcmp_olt_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {4695; CHECK-LABEL: fcmp_olt_vf_v2f32:4696; CHECK: # %bb.0:4697; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4698; CHECK-NEXT: vfmv.v.f v9, fa04699; CHECK-NEXT: vmfeq.vv v10, v8, v84700; CHECK-NEXT: vmfeq.vf v9, v9, fa04701; CHECK-NEXT: vmand.mm v0, v10, v94702; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t4703; CHECK-NEXT: ret4704 %head = insertelement <2 x float> poison, float %b, i32 04705 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4706 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp4707 ret <2 x i1> %14708}4709 4710define <2 x i1> @fcmp_olt_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {4711; CHECK-LABEL: fcmp_olt_fv_v2f32:4712; CHECK: # %bb.0:4713; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4714; CHECK-NEXT: vfmv.v.f v9, fa04715; CHECK-NEXT: vmfeq.vv v10, v8, v84716; CHECK-NEXT: vmfeq.vf v9, v9, fa04717; CHECK-NEXT: vmand.mm v0, v9, v104718; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t4719; CHECK-NEXT: ret4720 %head = insertelement <2 x float> poison, float %b, i32 04721 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4722 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp4723 ret <2 x i1> %14724}4725 4726define <2 x i1> @fcmp_ole_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {4727; CHECK-LABEL: fcmp_ole_vv_v2f32:4728; CHECK: # %bb.0:4729; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4730; CHECK-NEXT: vmfeq.vv v10, v9, v94731; CHECK-NEXT: vmfeq.vv v11, v8, v84732; CHECK-NEXT: vmand.mm v0, v11, v104733; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t4734; CHECK-NEXT: ret4735 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp4736 ret <2 x i1> %14737}4738 4739define <2 x i1> @fcmp_ole_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {4740; CHECK-LABEL: fcmp_ole_vf_v2f32:4741; CHECK: # %bb.0:4742; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4743; CHECK-NEXT: vfmv.v.f v9, fa04744; CHECK-NEXT: vmfeq.vv v10, v8, v84745; CHECK-NEXT: vmfeq.vf v9, v9, fa04746; CHECK-NEXT: vmand.mm v0, v10, v94747; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t4748; CHECK-NEXT: ret4749 %head = insertelement <2 x float> poison, float %b, i32 04750 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4751 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp4752 ret <2 x i1> %14753}4754 4755define <2 x i1> @fcmp_ole_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {4756; CHECK-LABEL: fcmp_ole_fv_v2f32:4757; CHECK: # %bb.0:4758; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4759; CHECK-NEXT: vfmv.v.f v9, fa04760; CHECK-NEXT: vmfeq.vv v10, v8, v84761; CHECK-NEXT: vmfeq.vf v9, v9, fa04762; CHECK-NEXT: vmand.mm v0, v9, v104763; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t4764; CHECK-NEXT: ret4765 %head = insertelement <2 x float> poison, float %b, i32 04766 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4767 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp4768 ret <2 x i1> %14769}4770 4771define <2 x i1> @fcmp_one_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {4772; CHECK-LABEL: fcmp_one_vv_v2f32:4773; CHECK: # %bb.0:4774; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4775; CHECK-NEXT: vmfeq.vv v10, v9, v94776; CHECK-NEXT: vmfeq.vv v11, v8, v84777; CHECK-NEXT: vmand.mm v0, v11, v104778; CHECK-NEXT: vmv1r.v v10, v04779; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t4780; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t4781; CHECK-NEXT: vmor.mm v0, v0, v104782; CHECK-NEXT: ret4783 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp4784 ret <2 x i1> %14785}4786 4787define <2 x i1> @fcmp_one_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {4788; CHECK-LABEL: fcmp_one_vf_v2f32:4789; CHECK: # %bb.0:4790; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4791; CHECK-NEXT: vfmv.v.f v9, fa04792; CHECK-NEXT: vmfeq.vv v10, v8, v84793; CHECK-NEXT: vmfeq.vf v9, v9, fa04794; CHECK-NEXT: vmand.mm v0, v10, v94795; CHECK-NEXT: vmv1r.v v9, v04796; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t4797; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t4798; CHECK-NEXT: vmor.mm v0, v0, v94799; CHECK-NEXT: ret4800 %head = insertelement <2 x float> poison, float %b, i32 04801 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4802 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp4803 ret <2 x i1> %14804}4805 4806define <2 x i1> @fcmp_one_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {4807; CHECK-LABEL: fcmp_one_fv_v2f32:4808; CHECK: # %bb.0:4809; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4810; CHECK-NEXT: vfmv.v.f v9, fa04811; CHECK-NEXT: vmfeq.vv v10, v8, v84812; CHECK-NEXT: vmfeq.vf v9, v9, fa04813; CHECK-NEXT: vmand.mm v0, v9, v104814; CHECK-NEXT: vmv1r.v v9, v04815; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t4816; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t4817; CHECK-NEXT: vmor.mm v0, v0, v94818; CHECK-NEXT: ret4819 %head = insertelement <2 x float> poison, float %b, i32 04820 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4821 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp4822 ret <2 x i1> %14823}4824 4825define <2 x i1> @fcmp_ord_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {4826; CHECK-LABEL: fcmp_ord_vv_v2f32:4827; CHECK: # %bb.0:4828; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4829; CHECK-NEXT: vmfeq.vv v9, v9, v94830; CHECK-NEXT: vmfeq.vv v8, v8, v84831; CHECK-NEXT: vmand.mm v0, v8, v94832; CHECK-NEXT: ret4833 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp4834 ret <2 x i1> %14835}4836 4837define <2 x i1> @fcmp_ord_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {4838; CHECK-LABEL: fcmp_ord_vf_v2f32:4839; CHECK: # %bb.0:4840; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4841; CHECK-NEXT: vfmv.v.f v9, fa04842; CHECK-NEXT: vmfeq.vf v9, v9, fa04843; CHECK-NEXT: vmfeq.vv v8, v8, v84844; CHECK-NEXT: vmand.mm v0, v8, v94845; CHECK-NEXT: ret4846 %head = insertelement <2 x float> poison, float %b, i32 04847 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4848 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp4849 ret <2 x i1> %14850}4851 4852define <2 x i1> @fcmp_ord_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {4853; CHECK-LABEL: fcmp_ord_fv_v2f32:4854; CHECK: # %bb.0:4855; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4856; CHECK-NEXT: vfmv.v.f v9, fa04857; CHECK-NEXT: vmfeq.vf v9, v9, fa04858; CHECK-NEXT: vmfeq.vv v8, v8, v84859; CHECK-NEXT: vmand.mm v0, v9, v84860; CHECK-NEXT: ret4861 %head = insertelement <2 x float> poison, float %b, i32 04862 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4863 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp4864 ret <2 x i1> %14865}4866 4867define <2 x i1> @fcmp_ueq_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {4868; CHECK-LABEL: fcmp_ueq_vv_v2f32:4869; CHECK: # %bb.0:4870; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4871; CHECK-NEXT: vmfeq.vv v10, v9, v94872; CHECK-NEXT: vmfeq.vv v11, v8, v84873; CHECK-NEXT: vmand.mm v0, v11, v104874; CHECK-NEXT: vmv1r.v v10, v04875; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t4876; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t4877; CHECK-NEXT: vmnor.mm v0, v0, v104878; CHECK-NEXT: ret4879 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp4880 ret <2 x i1> %14881}4882 4883define <2 x i1> @fcmp_ueq_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {4884; CHECK-LABEL: fcmp_ueq_vf_v2f32:4885; CHECK: # %bb.0:4886; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4887; CHECK-NEXT: vfmv.v.f v9, fa04888; CHECK-NEXT: vmfeq.vv v10, v8, v84889; CHECK-NEXT: vmfeq.vf v9, v9, fa04890; CHECK-NEXT: vmand.mm v0, v10, v94891; CHECK-NEXT: vmv1r.v v9, v04892; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t4893; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t4894; CHECK-NEXT: vmnor.mm v0, v0, v94895; CHECK-NEXT: ret4896 %head = insertelement <2 x float> poison, float %b, i32 04897 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4898 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp4899 ret <2 x i1> %14900}4901 4902define <2 x i1> @fcmp_ueq_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {4903; CHECK-LABEL: fcmp_ueq_fv_v2f32:4904; CHECK: # %bb.0:4905; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4906; CHECK-NEXT: vfmv.v.f v9, fa04907; CHECK-NEXT: vmfeq.vv v10, v8, v84908; CHECK-NEXT: vmfeq.vf v9, v9, fa04909; CHECK-NEXT: vmand.mm v0, v9, v104910; CHECK-NEXT: vmv1r.v v9, v04911; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t4912; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t4913; CHECK-NEXT: vmnor.mm v0, v0, v94914; CHECK-NEXT: ret4915 %head = insertelement <2 x float> poison, float %b, i32 04916 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4917 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp4918 ret <2 x i1> %14919}4920 4921define <2 x i1> @fcmp_ugt_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {4922; CHECK-LABEL: fcmp_ugt_vv_v2f32:4923; CHECK: # %bb.0:4924; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4925; CHECK-NEXT: vmfeq.vv v10, v9, v94926; CHECK-NEXT: vmfeq.vv v11, v8, v84927; CHECK-NEXT: vmand.mm v0, v11, v104928; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t4929; CHECK-NEXT: vmnot.m v0, v04930; CHECK-NEXT: ret4931 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp4932 ret <2 x i1> %14933}4934 4935define <2 x i1> @fcmp_ugt_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {4936; CHECK-LABEL: fcmp_ugt_vf_v2f32:4937; CHECK: # %bb.0:4938; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4939; CHECK-NEXT: vfmv.v.f v9, fa04940; CHECK-NEXT: vmfeq.vv v10, v8, v84941; CHECK-NEXT: vmfeq.vf v9, v9, fa04942; CHECK-NEXT: vmand.mm v0, v10, v94943; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t4944; CHECK-NEXT: vmnot.m v0, v04945; CHECK-NEXT: ret4946 %head = insertelement <2 x float> poison, float %b, i32 04947 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4948 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp4949 ret <2 x i1> %14950}4951 4952define <2 x i1> @fcmp_ugt_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {4953; CHECK-LABEL: fcmp_ugt_fv_v2f32:4954; CHECK: # %bb.0:4955; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4956; CHECK-NEXT: vfmv.v.f v9, fa04957; CHECK-NEXT: vmfeq.vv v10, v8, v84958; CHECK-NEXT: vmfeq.vf v9, v9, fa04959; CHECK-NEXT: vmand.mm v0, v9, v104960; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t4961; CHECK-NEXT: vmnot.m v0, v04962; CHECK-NEXT: ret4963 %head = insertelement <2 x float> poison, float %b, i32 04964 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4965 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp4966 ret <2 x i1> %14967}4968 4969define <2 x i1> @fcmp_uge_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {4970; CHECK-LABEL: fcmp_uge_vv_v2f32:4971; CHECK: # %bb.0:4972; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4973; CHECK-NEXT: vmfeq.vv v10, v9, v94974; CHECK-NEXT: vmfeq.vv v11, v8, v84975; CHECK-NEXT: vmand.mm v0, v11, v104976; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t4977; CHECK-NEXT: vmnot.m v0, v04978; CHECK-NEXT: ret4979 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp4980 ret <2 x i1> %14981}4982 4983define <2 x i1> @fcmp_uge_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {4984; CHECK-LABEL: fcmp_uge_vf_v2f32:4985; CHECK: # %bb.0:4986; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu4987; CHECK-NEXT: vfmv.v.f v9, fa04988; CHECK-NEXT: vmfeq.vv v10, v8, v84989; CHECK-NEXT: vmfeq.vf v9, v9, fa04990; CHECK-NEXT: vmand.mm v0, v10, v94991; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t4992; CHECK-NEXT: vmnot.m v0, v04993; CHECK-NEXT: ret4994 %head = insertelement <2 x float> poison, float %b, i32 04995 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4996 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp4997 ret <2 x i1> %14998}4999 5000define <2 x i1> @fcmp_uge_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {5001; CHECK-LABEL: fcmp_uge_fv_v2f32:5002; CHECK: # %bb.0:5003; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu5004; CHECK-NEXT: vfmv.v.f v9, fa05005; CHECK-NEXT: vmfeq.vv v10, v8, v85006; CHECK-NEXT: vmfeq.vf v9, v9, fa05007; CHECK-NEXT: vmand.mm v0, v9, v105008; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t5009; CHECK-NEXT: vmnot.m v0, v05010; CHECK-NEXT: ret5011 %head = insertelement <2 x float> poison, float %b, i32 05012 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer5013 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp5014 ret <2 x i1> %15015}5016 5017define <2 x i1> @fcmp_ult_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {5018; CHECK-LABEL: fcmp_ult_vv_v2f32:5019; CHECK: # %bb.0:5020; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu5021; CHECK-NEXT: vmfeq.vv v10, v8, v85022; CHECK-NEXT: vmfeq.vv v11, v9, v95023; CHECK-NEXT: vmand.mm v0, v11, v105024; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t5025; CHECK-NEXT: vmnot.m v0, v05026; CHECK-NEXT: ret5027 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp5028 ret <2 x i1> %15029}5030 5031define <2 x i1> @fcmp_ult_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {5032; CHECK-LABEL: fcmp_ult_vf_v2f32:5033; CHECK: # %bb.0:5034; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu5035; CHECK-NEXT: vfmv.v.f v9, fa05036; CHECK-NEXT: vmfeq.vv v10, v8, v85037; CHECK-NEXT: vmfeq.vf v9, v9, fa05038; CHECK-NEXT: vmand.mm v0, v9, v105039; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t5040; CHECK-NEXT: vmnot.m v0, v05041; CHECK-NEXT: ret5042 %head = insertelement <2 x float> poison, float %b, i32 05043 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer5044 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp5045 ret <2 x i1> %15046}5047 5048define <2 x i1> @fcmp_ult_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {5049; CHECK-LABEL: fcmp_ult_fv_v2f32:5050; CHECK: # %bb.0:5051; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu5052; CHECK-NEXT: vfmv.v.f v9, fa05053; CHECK-NEXT: vmfeq.vv v10, v8, v85054; CHECK-NEXT: vmfeq.vf v9, v9, fa05055; CHECK-NEXT: vmand.mm v0, v10, v95056; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t5057; CHECK-NEXT: vmnot.m v0, v05058; CHECK-NEXT: ret5059 %head = insertelement <2 x float> poison, float %b, i32 05060 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer5061 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp5062 ret <2 x i1> %15063}5064 5065define <2 x i1> @fcmp_ule_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {5066; CHECK-LABEL: fcmp_ule_vv_v2f32:5067; CHECK: # %bb.0:5068; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu5069; CHECK-NEXT: vmfeq.vv v10, v8, v85070; CHECK-NEXT: vmfeq.vv v11, v9, v95071; CHECK-NEXT: vmand.mm v0, v11, v105072; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t5073; CHECK-NEXT: vmnot.m v0, v05074; CHECK-NEXT: ret5075 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp5076 ret <2 x i1> %15077}5078 5079define <2 x i1> @fcmp_ule_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {5080; CHECK-LABEL: fcmp_ule_vf_v2f32:5081; CHECK: # %bb.0:5082; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu5083; CHECK-NEXT: vfmv.v.f v9, fa05084; CHECK-NEXT: vmfeq.vv v10, v8, v85085; CHECK-NEXT: vmfeq.vf v9, v9, fa05086; CHECK-NEXT: vmand.mm v0, v9, v105087; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t5088; CHECK-NEXT: vmnot.m v0, v05089; CHECK-NEXT: ret5090 %head = insertelement <2 x float> poison, float %b, i32 05091 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer5092 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp5093 ret <2 x i1> %15094}5095 5096define <2 x i1> @fcmp_ule_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {5097; CHECK-LABEL: fcmp_ule_fv_v2f32:5098; CHECK: # %bb.0:5099; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu5100; CHECK-NEXT: vfmv.v.f v9, fa05101; CHECK-NEXT: vmfeq.vv v10, v8, v85102; CHECK-NEXT: vmfeq.vf v9, v9, fa05103; CHECK-NEXT: vmand.mm v0, v10, v95104; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t5105; CHECK-NEXT: vmnot.m v0, v05106; CHECK-NEXT: ret5107 %head = insertelement <2 x float> poison, float %b, i32 05108 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer5109 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp5110 ret <2 x i1> %15111}5112 5113define <2 x i1> @fcmp_une_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {5114; CHECK-LABEL: fcmp_une_vv_v2f32:5115; CHECK: # %bb.0:5116; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma5117; CHECK-NEXT: vmfne.vv v0, v8, v95118; CHECK-NEXT: ret5119 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp5120 ret <2 x i1> %15121}5122 5123define <2 x i1> @fcmp_une_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {5124; CHECK-LABEL: fcmp_une_vf_v2f32:5125; CHECK: # %bb.0:5126; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma5127; CHECK-NEXT: vmfne.vf v0, v8, fa05128; CHECK-NEXT: ret5129 %head = insertelement <2 x float> poison, float %b, i32 05130 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer5131 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp5132 ret <2 x i1> %15133}5134 5135define <2 x i1> @fcmp_une_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {5136; CHECK-LABEL: fcmp_une_fv_v2f32:5137; CHECK: # %bb.0:5138; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma5139; CHECK-NEXT: vmfne.vf v0, v8, fa05140; CHECK-NEXT: ret5141 %head = insertelement <2 x float> poison, float %b, i32 05142 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer5143 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp5144 ret <2 x i1> %15145}5146 5147define <2 x i1> @fcmp_uno_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {5148; CHECK-LABEL: fcmp_uno_vv_v2f32:5149; CHECK: # %bb.0:5150; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma5151; CHECK-NEXT: vmfne.vv v9, v9, v95152; CHECK-NEXT: vmfne.vv v8, v8, v85153; CHECK-NEXT: vmor.mm v0, v8, v95154; CHECK-NEXT: ret5155 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp5156 ret <2 x i1> %15157}5158 5159define <2 x i1> @fcmp_uno_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {5160; CHECK-LABEL: fcmp_uno_vf_v2f32:5161; CHECK: # %bb.0:5162; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma5163; CHECK-NEXT: vfmv.v.f v9, fa05164; CHECK-NEXT: vmfne.vf v9, v9, fa05165; CHECK-NEXT: vmfne.vv v8, v8, v85166; CHECK-NEXT: vmor.mm v0, v8, v95167; CHECK-NEXT: ret5168 %head = insertelement <2 x float> poison, float %b, i32 05169 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer5170 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp5171 ret <2 x i1> %15172}5173 5174define <2 x i1> @fcmp_uno_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {5175; CHECK-LABEL: fcmp_uno_fv_v2f32:5176; CHECK: # %bb.0:5177; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma5178; CHECK-NEXT: vfmv.v.f v9, fa05179; CHECK-NEXT: vmfne.vf v9, v9, fa05180; CHECK-NEXT: vmfne.vv v8, v8, v85181; CHECK-NEXT: vmor.mm v0, v9, v85182; CHECK-NEXT: ret5183 %head = insertelement <2 x float> poison, float %b, i32 05184 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer5185 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp5186 ret <2 x i1> %15187}5188 5189define <4 x i1> @fcmp_oeq_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {5190; CHECK-LABEL: fcmp_oeq_vv_v4f32:5191; CHECK: # %bb.0:5192; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma5193; CHECK-NEXT: vmfeq.vv v0, v8, v95194; CHECK-NEXT: ret5195 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp5196 ret <4 x i1> %15197}5198 5199define <4 x i1> @fcmp_oeq_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {5200; CHECK-LABEL: fcmp_oeq_vf_v4f32:5201; CHECK: # %bb.0:5202; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma5203; CHECK-NEXT: vmfeq.vf v0, v8, fa05204; CHECK-NEXT: ret5205 %head = insertelement <4 x float> poison, float %b, i32 05206 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5207 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp5208 ret <4 x i1> %15209}5210 5211define <4 x i1> @fcmp_oeq_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {5212; CHECK-LABEL: fcmp_oeq_fv_v4f32:5213; CHECK: # %bb.0:5214; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma5215; CHECK-NEXT: vmfeq.vf v0, v8, fa05216; CHECK-NEXT: ret5217 %head = insertelement <4 x float> poison, float %b, i32 05218 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5219 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp5220 ret <4 x i1> %15221}5222 5223define <4 x i1> @fcmp_ogt_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {5224; CHECK-LABEL: fcmp_ogt_vv_v4f32:5225; CHECK: # %bb.0:5226; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5227; CHECK-NEXT: vmfeq.vv v10, v8, v85228; CHECK-NEXT: vmfeq.vv v11, v9, v95229; CHECK-NEXT: vmand.mm v0, v11, v105230; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t5231; CHECK-NEXT: ret5232 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp5233 ret <4 x i1> %15234}5235 5236define <4 x i1> @fcmp_ogt_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {5237; CHECK-LABEL: fcmp_ogt_vf_v4f32:5238; CHECK: # %bb.0:5239; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5240; CHECK-NEXT: vfmv.v.f v9, fa05241; CHECK-NEXT: vmfeq.vv v10, v8, v85242; CHECK-NEXT: vmfeq.vf v9, v9, fa05243; CHECK-NEXT: vmand.mm v0, v9, v105244; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t5245; CHECK-NEXT: ret5246 %head = insertelement <4 x float> poison, float %b, i32 05247 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5248 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp5249 ret <4 x i1> %15250}5251 5252define <4 x i1> @fcmp_ogt_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {5253; CHECK-LABEL: fcmp_ogt_fv_v4f32:5254; CHECK: # %bb.0:5255; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5256; CHECK-NEXT: vfmv.v.f v9, fa05257; CHECK-NEXT: vmfeq.vv v10, v8, v85258; CHECK-NEXT: vmfeq.vf v9, v9, fa05259; CHECK-NEXT: vmand.mm v0, v10, v95260; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t5261; CHECK-NEXT: ret5262 %head = insertelement <4 x float> poison, float %b, i32 05263 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5264 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp5265 ret <4 x i1> %15266}5267 5268define <4 x i1> @fcmp_oge_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {5269; CHECK-LABEL: fcmp_oge_vv_v4f32:5270; CHECK: # %bb.0:5271; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5272; CHECK-NEXT: vmfeq.vv v10, v8, v85273; CHECK-NEXT: vmfeq.vv v11, v9, v95274; CHECK-NEXT: vmand.mm v0, v11, v105275; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t5276; CHECK-NEXT: ret5277 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp5278 ret <4 x i1> %15279}5280 5281define <4 x i1> @fcmp_oge_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {5282; CHECK-LABEL: fcmp_oge_vf_v4f32:5283; CHECK: # %bb.0:5284; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5285; CHECK-NEXT: vfmv.v.f v9, fa05286; CHECK-NEXT: vmfeq.vv v10, v8, v85287; CHECK-NEXT: vmfeq.vf v9, v9, fa05288; CHECK-NEXT: vmand.mm v0, v9, v105289; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t5290; CHECK-NEXT: ret5291 %head = insertelement <4 x float> poison, float %b, i32 05292 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5293 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp5294 ret <4 x i1> %15295}5296 5297define <4 x i1> @fcmp_oge_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {5298; CHECK-LABEL: fcmp_oge_fv_v4f32:5299; CHECK: # %bb.0:5300; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5301; CHECK-NEXT: vfmv.v.f v9, fa05302; CHECK-NEXT: vmfeq.vv v10, v8, v85303; CHECK-NEXT: vmfeq.vf v9, v9, fa05304; CHECK-NEXT: vmand.mm v0, v10, v95305; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t5306; CHECK-NEXT: ret5307 %head = insertelement <4 x float> poison, float %b, i32 05308 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5309 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp5310 ret <4 x i1> %15311}5312 5313define <4 x i1> @fcmp_olt_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {5314; CHECK-LABEL: fcmp_olt_vv_v4f32:5315; CHECK: # %bb.0:5316; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5317; CHECK-NEXT: vmfeq.vv v10, v9, v95318; CHECK-NEXT: vmfeq.vv v11, v8, v85319; CHECK-NEXT: vmand.mm v0, v11, v105320; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t5321; CHECK-NEXT: ret5322 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp5323 ret <4 x i1> %15324}5325 5326define <4 x i1> @fcmp_olt_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {5327; CHECK-LABEL: fcmp_olt_vf_v4f32:5328; CHECK: # %bb.0:5329; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5330; CHECK-NEXT: vfmv.v.f v9, fa05331; CHECK-NEXT: vmfeq.vv v10, v8, v85332; CHECK-NEXT: vmfeq.vf v9, v9, fa05333; CHECK-NEXT: vmand.mm v0, v10, v95334; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t5335; CHECK-NEXT: ret5336 %head = insertelement <4 x float> poison, float %b, i32 05337 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5338 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp5339 ret <4 x i1> %15340}5341 5342define <4 x i1> @fcmp_olt_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {5343; CHECK-LABEL: fcmp_olt_fv_v4f32:5344; CHECK: # %bb.0:5345; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5346; CHECK-NEXT: vfmv.v.f v9, fa05347; CHECK-NEXT: vmfeq.vv v10, v8, v85348; CHECK-NEXT: vmfeq.vf v9, v9, fa05349; CHECK-NEXT: vmand.mm v0, v9, v105350; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t5351; CHECK-NEXT: ret5352 %head = insertelement <4 x float> poison, float %b, i32 05353 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5354 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp5355 ret <4 x i1> %15356}5357 5358define <4 x i1> @fcmp_ole_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {5359; CHECK-LABEL: fcmp_ole_vv_v4f32:5360; CHECK: # %bb.0:5361; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5362; CHECK-NEXT: vmfeq.vv v10, v9, v95363; CHECK-NEXT: vmfeq.vv v11, v8, v85364; CHECK-NEXT: vmand.mm v0, v11, v105365; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t5366; CHECK-NEXT: ret5367 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp5368 ret <4 x i1> %15369}5370 5371define <4 x i1> @fcmp_ole_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {5372; CHECK-LABEL: fcmp_ole_vf_v4f32:5373; CHECK: # %bb.0:5374; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5375; CHECK-NEXT: vfmv.v.f v9, fa05376; CHECK-NEXT: vmfeq.vv v10, v8, v85377; CHECK-NEXT: vmfeq.vf v9, v9, fa05378; CHECK-NEXT: vmand.mm v0, v10, v95379; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t5380; CHECK-NEXT: ret5381 %head = insertelement <4 x float> poison, float %b, i32 05382 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5383 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp5384 ret <4 x i1> %15385}5386 5387define <4 x i1> @fcmp_ole_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {5388; CHECK-LABEL: fcmp_ole_fv_v4f32:5389; CHECK: # %bb.0:5390; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5391; CHECK-NEXT: vfmv.v.f v9, fa05392; CHECK-NEXT: vmfeq.vv v10, v8, v85393; CHECK-NEXT: vmfeq.vf v9, v9, fa05394; CHECK-NEXT: vmand.mm v0, v9, v105395; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t5396; CHECK-NEXT: ret5397 %head = insertelement <4 x float> poison, float %b, i32 05398 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5399 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp5400 ret <4 x i1> %15401}5402 5403define <4 x i1> @fcmp_one_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {5404; CHECK-LABEL: fcmp_one_vv_v4f32:5405; CHECK: # %bb.0:5406; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5407; CHECK-NEXT: vmfeq.vv v10, v9, v95408; CHECK-NEXT: vmfeq.vv v11, v8, v85409; CHECK-NEXT: vmand.mm v0, v11, v105410; CHECK-NEXT: vmv.v.v v10, v05411; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t5412; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t5413; CHECK-NEXT: vmor.mm v0, v0, v105414; CHECK-NEXT: ret5415 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp5416 ret <4 x i1> %15417}5418 5419define <4 x i1> @fcmp_one_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {5420; CHECK-LABEL: fcmp_one_vf_v4f32:5421; CHECK: # %bb.0:5422; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5423; CHECK-NEXT: vfmv.v.f v9, fa05424; CHECK-NEXT: vmfeq.vv v10, v8, v85425; CHECK-NEXT: vmfeq.vf v9, v9, fa05426; CHECK-NEXT: vmand.mm v0, v10, v95427; CHECK-NEXT: vmv.v.v v9, v05428; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t5429; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t5430; CHECK-NEXT: vmor.mm v0, v0, v95431; CHECK-NEXT: ret5432 %head = insertelement <4 x float> poison, float %b, i32 05433 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5434 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp5435 ret <4 x i1> %15436}5437 5438define <4 x i1> @fcmp_one_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {5439; CHECK-LABEL: fcmp_one_fv_v4f32:5440; CHECK: # %bb.0:5441; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5442; CHECK-NEXT: vfmv.v.f v9, fa05443; CHECK-NEXT: vmfeq.vv v10, v8, v85444; CHECK-NEXT: vmfeq.vf v9, v9, fa05445; CHECK-NEXT: vmand.mm v0, v9, v105446; CHECK-NEXT: vmv.v.v v9, v05447; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t5448; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t5449; CHECK-NEXT: vmor.mm v0, v0, v95450; CHECK-NEXT: ret5451 %head = insertelement <4 x float> poison, float %b, i32 05452 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5453 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp5454 ret <4 x i1> %15455}5456 5457define <4 x i1> @fcmp_ord_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {5458; CHECK-LABEL: fcmp_ord_vv_v4f32:5459; CHECK: # %bb.0:5460; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma5461; CHECK-NEXT: vmfeq.vv v9, v9, v95462; CHECK-NEXT: vmfeq.vv v8, v8, v85463; CHECK-NEXT: vmand.mm v0, v8, v95464; CHECK-NEXT: ret5465 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp5466 ret <4 x i1> %15467}5468 5469define <4 x i1> @fcmp_ord_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {5470; CHECK-LABEL: fcmp_ord_vf_v4f32:5471; CHECK: # %bb.0:5472; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma5473; CHECK-NEXT: vfmv.v.f v9, fa05474; CHECK-NEXT: vmfeq.vf v9, v9, fa05475; CHECK-NEXT: vmfeq.vv v8, v8, v85476; CHECK-NEXT: vmand.mm v0, v8, v95477; CHECK-NEXT: ret5478 %head = insertelement <4 x float> poison, float %b, i32 05479 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5480 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp5481 ret <4 x i1> %15482}5483 5484define <4 x i1> @fcmp_ord_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {5485; CHECK-LABEL: fcmp_ord_fv_v4f32:5486; CHECK: # %bb.0:5487; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma5488; CHECK-NEXT: vfmv.v.f v9, fa05489; CHECK-NEXT: vmfeq.vf v9, v9, fa05490; CHECK-NEXT: vmfeq.vv v8, v8, v85491; CHECK-NEXT: vmand.mm v0, v9, v85492; CHECK-NEXT: ret5493 %head = insertelement <4 x float> poison, float %b, i32 05494 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5495 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp5496 ret <4 x i1> %15497}5498 5499define <4 x i1> @fcmp_ueq_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {5500; CHECK-LABEL: fcmp_ueq_vv_v4f32:5501; CHECK: # %bb.0:5502; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5503; CHECK-NEXT: vmfeq.vv v10, v9, v95504; CHECK-NEXT: vmfeq.vv v11, v8, v85505; CHECK-NEXT: vmand.mm v0, v11, v105506; CHECK-NEXT: vmv.v.v v10, v05507; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t5508; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t5509; CHECK-NEXT: vmnor.mm v0, v0, v105510; CHECK-NEXT: ret5511 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp5512 ret <4 x i1> %15513}5514 5515define <4 x i1> @fcmp_ueq_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {5516; CHECK-LABEL: fcmp_ueq_vf_v4f32:5517; CHECK: # %bb.0:5518; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5519; CHECK-NEXT: vfmv.v.f v9, fa05520; CHECK-NEXT: vmfeq.vv v10, v8, v85521; CHECK-NEXT: vmfeq.vf v9, v9, fa05522; CHECK-NEXT: vmand.mm v0, v10, v95523; CHECK-NEXT: vmv.v.v v9, v05524; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t5525; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t5526; CHECK-NEXT: vmnor.mm v0, v0, v95527; CHECK-NEXT: ret5528 %head = insertelement <4 x float> poison, float %b, i32 05529 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5530 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp5531 ret <4 x i1> %15532}5533 5534define <4 x i1> @fcmp_ueq_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {5535; CHECK-LABEL: fcmp_ueq_fv_v4f32:5536; CHECK: # %bb.0:5537; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5538; CHECK-NEXT: vfmv.v.f v9, fa05539; CHECK-NEXT: vmfeq.vv v10, v8, v85540; CHECK-NEXT: vmfeq.vf v9, v9, fa05541; CHECK-NEXT: vmand.mm v0, v9, v105542; CHECK-NEXT: vmv.v.v v9, v05543; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t5544; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t5545; CHECK-NEXT: vmnor.mm v0, v0, v95546; CHECK-NEXT: ret5547 %head = insertelement <4 x float> poison, float %b, i32 05548 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5549 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp5550 ret <4 x i1> %15551}5552 5553define <4 x i1> @fcmp_ugt_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {5554; CHECK-LABEL: fcmp_ugt_vv_v4f32:5555; CHECK: # %bb.0:5556; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5557; CHECK-NEXT: vmfeq.vv v10, v9, v95558; CHECK-NEXT: vmfeq.vv v11, v8, v85559; CHECK-NEXT: vmand.mm v0, v11, v105560; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t5561; CHECK-NEXT: vmnot.m v0, v05562; CHECK-NEXT: ret5563 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp5564 ret <4 x i1> %15565}5566 5567define <4 x i1> @fcmp_ugt_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {5568; CHECK-LABEL: fcmp_ugt_vf_v4f32:5569; CHECK: # %bb.0:5570; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5571; CHECK-NEXT: vfmv.v.f v9, fa05572; CHECK-NEXT: vmfeq.vv v10, v8, v85573; CHECK-NEXT: vmfeq.vf v9, v9, fa05574; CHECK-NEXT: vmand.mm v0, v10, v95575; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t5576; CHECK-NEXT: vmnot.m v0, v05577; CHECK-NEXT: ret5578 %head = insertelement <4 x float> poison, float %b, i32 05579 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5580 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp5581 ret <4 x i1> %15582}5583 5584define <4 x i1> @fcmp_ugt_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {5585; CHECK-LABEL: fcmp_ugt_fv_v4f32:5586; CHECK: # %bb.0:5587; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5588; CHECK-NEXT: vfmv.v.f v9, fa05589; CHECK-NEXT: vmfeq.vv v10, v8, v85590; CHECK-NEXT: vmfeq.vf v9, v9, fa05591; CHECK-NEXT: vmand.mm v0, v9, v105592; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t5593; CHECK-NEXT: vmnot.m v0, v05594; CHECK-NEXT: ret5595 %head = insertelement <4 x float> poison, float %b, i32 05596 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5597 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp5598 ret <4 x i1> %15599}5600 5601define <4 x i1> @fcmp_uge_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {5602; CHECK-LABEL: fcmp_uge_vv_v4f32:5603; CHECK: # %bb.0:5604; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5605; CHECK-NEXT: vmfeq.vv v10, v9, v95606; CHECK-NEXT: vmfeq.vv v11, v8, v85607; CHECK-NEXT: vmand.mm v0, v11, v105608; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t5609; CHECK-NEXT: vmnot.m v0, v05610; CHECK-NEXT: ret5611 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp5612 ret <4 x i1> %15613}5614 5615define <4 x i1> @fcmp_uge_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {5616; CHECK-LABEL: fcmp_uge_vf_v4f32:5617; CHECK: # %bb.0:5618; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5619; CHECK-NEXT: vfmv.v.f v9, fa05620; CHECK-NEXT: vmfeq.vv v10, v8, v85621; CHECK-NEXT: vmfeq.vf v9, v9, fa05622; CHECK-NEXT: vmand.mm v0, v10, v95623; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t5624; CHECK-NEXT: vmnot.m v0, v05625; CHECK-NEXT: ret5626 %head = insertelement <4 x float> poison, float %b, i32 05627 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5628 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp5629 ret <4 x i1> %15630}5631 5632define <4 x i1> @fcmp_uge_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {5633; CHECK-LABEL: fcmp_uge_fv_v4f32:5634; CHECK: # %bb.0:5635; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5636; CHECK-NEXT: vfmv.v.f v9, fa05637; CHECK-NEXT: vmfeq.vv v10, v8, v85638; CHECK-NEXT: vmfeq.vf v9, v9, fa05639; CHECK-NEXT: vmand.mm v0, v9, v105640; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t5641; CHECK-NEXT: vmnot.m v0, v05642; CHECK-NEXT: ret5643 %head = insertelement <4 x float> poison, float %b, i32 05644 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5645 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp5646 ret <4 x i1> %15647}5648 5649define <4 x i1> @fcmp_ult_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {5650; CHECK-LABEL: fcmp_ult_vv_v4f32:5651; CHECK: # %bb.0:5652; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5653; CHECK-NEXT: vmfeq.vv v10, v8, v85654; CHECK-NEXT: vmfeq.vv v11, v9, v95655; CHECK-NEXT: vmand.mm v0, v11, v105656; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t5657; CHECK-NEXT: vmnot.m v0, v05658; CHECK-NEXT: ret5659 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp5660 ret <4 x i1> %15661}5662 5663define <4 x i1> @fcmp_ult_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {5664; CHECK-LABEL: fcmp_ult_vf_v4f32:5665; CHECK: # %bb.0:5666; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5667; CHECK-NEXT: vfmv.v.f v9, fa05668; CHECK-NEXT: vmfeq.vv v10, v8, v85669; CHECK-NEXT: vmfeq.vf v9, v9, fa05670; CHECK-NEXT: vmand.mm v0, v9, v105671; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t5672; CHECK-NEXT: vmnot.m v0, v05673; CHECK-NEXT: ret5674 %head = insertelement <4 x float> poison, float %b, i32 05675 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5676 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp5677 ret <4 x i1> %15678}5679 5680define <4 x i1> @fcmp_ult_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {5681; CHECK-LABEL: fcmp_ult_fv_v4f32:5682; CHECK: # %bb.0:5683; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5684; CHECK-NEXT: vfmv.v.f v9, fa05685; CHECK-NEXT: vmfeq.vv v10, v8, v85686; CHECK-NEXT: vmfeq.vf v9, v9, fa05687; CHECK-NEXT: vmand.mm v0, v10, v95688; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t5689; CHECK-NEXT: vmnot.m v0, v05690; CHECK-NEXT: ret5691 %head = insertelement <4 x float> poison, float %b, i32 05692 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5693 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp5694 ret <4 x i1> %15695}5696 5697define <4 x i1> @fcmp_ule_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {5698; CHECK-LABEL: fcmp_ule_vv_v4f32:5699; CHECK: # %bb.0:5700; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5701; CHECK-NEXT: vmfeq.vv v10, v8, v85702; CHECK-NEXT: vmfeq.vv v11, v9, v95703; CHECK-NEXT: vmand.mm v0, v11, v105704; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t5705; CHECK-NEXT: vmnot.m v0, v05706; CHECK-NEXT: ret5707 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp5708 ret <4 x i1> %15709}5710 5711define <4 x i1> @fcmp_ule_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {5712; CHECK-LABEL: fcmp_ule_vf_v4f32:5713; CHECK: # %bb.0:5714; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5715; CHECK-NEXT: vfmv.v.f v9, fa05716; CHECK-NEXT: vmfeq.vv v10, v8, v85717; CHECK-NEXT: vmfeq.vf v9, v9, fa05718; CHECK-NEXT: vmand.mm v0, v9, v105719; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t5720; CHECK-NEXT: vmnot.m v0, v05721; CHECK-NEXT: ret5722 %head = insertelement <4 x float> poison, float %b, i32 05723 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5724 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp5725 ret <4 x i1> %15726}5727 5728define <4 x i1> @fcmp_ule_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {5729; CHECK-LABEL: fcmp_ule_fv_v4f32:5730; CHECK: # %bb.0:5731; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu5732; CHECK-NEXT: vfmv.v.f v9, fa05733; CHECK-NEXT: vmfeq.vv v10, v8, v85734; CHECK-NEXT: vmfeq.vf v9, v9, fa05735; CHECK-NEXT: vmand.mm v0, v10, v95736; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t5737; CHECK-NEXT: vmnot.m v0, v05738; CHECK-NEXT: ret5739 %head = insertelement <4 x float> poison, float %b, i32 05740 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5741 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp5742 ret <4 x i1> %15743}5744 5745define <4 x i1> @fcmp_une_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {5746; CHECK-LABEL: fcmp_une_vv_v4f32:5747; CHECK: # %bb.0:5748; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma5749; CHECK-NEXT: vmfne.vv v0, v8, v95750; CHECK-NEXT: ret5751 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp5752 ret <4 x i1> %15753}5754 5755define <4 x i1> @fcmp_une_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {5756; CHECK-LABEL: fcmp_une_vf_v4f32:5757; CHECK: # %bb.0:5758; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma5759; CHECK-NEXT: vmfne.vf v0, v8, fa05760; CHECK-NEXT: ret5761 %head = insertelement <4 x float> poison, float %b, i32 05762 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5763 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp5764 ret <4 x i1> %15765}5766 5767define <4 x i1> @fcmp_une_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {5768; CHECK-LABEL: fcmp_une_fv_v4f32:5769; CHECK: # %bb.0:5770; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma5771; CHECK-NEXT: vmfne.vf v0, v8, fa05772; CHECK-NEXT: ret5773 %head = insertelement <4 x float> poison, float %b, i32 05774 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5775 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp5776 ret <4 x i1> %15777}5778 5779define <4 x i1> @fcmp_uno_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {5780; CHECK-LABEL: fcmp_uno_vv_v4f32:5781; CHECK: # %bb.0:5782; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma5783; CHECK-NEXT: vmfne.vv v9, v9, v95784; CHECK-NEXT: vmfne.vv v8, v8, v85785; CHECK-NEXT: vmor.mm v0, v8, v95786; CHECK-NEXT: ret5787 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp5788 ret <4 x i1> %15789}5790 5791define <4 x i1> @fcmp_uno_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {5792; CHECK-LABEL: fcmp_uno_vf_v4f32:5793; CHECK: # %bb.0:5794; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma5795; CHECK-NEXT: vfmv.v.f v9, fa05796; CHECK-NEXT: vmfne.vf v9, v9, fa05797; CHECK-NEXT: vmfne.vv v8, v8, v85798; CHECK-NEXT: vmor.mm v0, v8, v95799; CHECK-NEXT: ret5800 %head = insertelement <4 x float> poison, float %b, i32 05801 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5802 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp5803 ret <4 x i1> %15804}5805 5806define <4 x i1> @fcmp_uno_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {5807; CHECK-LABEL: fcmp_uno_fv_v4f32:5808; CHECK: # %bb.0:5809; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma5810; CHECK-NEXT: vfmv.v.f v9, fa05811; CHECK-NEXT: vmfne.vf v9, v9, fa05812; CHECK-NEXT: vmfne.vv v8, v8, v85813; CHECK-NEXT: vmor.mm v0, v9, v85814; CHECK-NEXT: ret5815 %head = insertelement <4 x float> poison, float %b, i32 05816 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer5817 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp5818 ret <4 x i1> %15819}5820 5821define <8 x i1> @fcmp_oeq_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {5822; CHECK-LABEL: fcmp_oeq_vv_v8f32:5823; CHECK: # %bb.0:5824; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5825; CHECK-NEXT: vmfeq.vv v0, v8, v105826; CHECK-NEXT: ret5827 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp5828 ret <8 x i1> %15829}5830 5831define <8 x i1> @fcmp_oeq_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {5832; CHECK-LABEL: fcmp_oeq_vf_v8f32:5833; CHECK: # %bb.0:5834; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5835; CHECK-NEXT: vmfeq.vf v0, v8, fa05836; CHECK-NEXT: ret5837 %head = insertelement <8 x float> poison, float %b, i32 05838 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5839 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp5840 ret <8 x i1> %15841}5842 5843define <8 x i1> @fcmp_oeq_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {5844; CHECK-LABEL: fcmp_oeq_fv_v8f32:5845; CHECK: # %bb.0:5846; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5847; CHECK-NEXT: vmfeq.vf v0, v8, fa05848; CHECK-NEXT: ret5849 %head = insertelement <8 x float> poison, float %b, i32 05850 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5851 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp5852 ret <8 x i1> %15853}5854 5855define <8 x i1> @fcmp_ogt_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {5856; CHECK-LABEL: fcmp_ogt_vv_v8f32:5857; CHECK: # %bb.0:5858; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu5859; CHECK-NEXT: vmfeq.vv v12, v8, v85860; CHECK-NEXT: vmfeq.vv v13, v10, v105861; CHECK-NEXT: vmand.mm v12, v13, v125862; CHECK-NEXT: vmv1r.v v0, v125863; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t5864; CHECK-NEXT: vmv1r.v v0, v125865; CHECK-NEXT: ret5866 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp5867 ret <8 x i1> %15868}5869 5870define <8 x i1> @fcmp_ogt_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {5871; CHECK-LABEL: fcmp_ogt_vf_v8f32:5872; CHECK: # %bb.0:5873; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu5874; CHECK-NEXT: vfmv.v.f v10, fa05875; CHECK-NEXT: vmfeq.vf v12, v10, fa05876; CHECK-NEXT: vmfeq.vv v10, v8, v85877; CHECK-NEXT: vmand.mm v10, v12, v105878; CHECK-NEXT: vmv1r.v v0, v105879; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t5880; CHECK-NEXT: vmv1r.v v0, v105881; CHECK-NEXT: ret5882 %head = insertelement <8 x float> poison, float %b, i32 05883 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5884 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp5885 ret <8 x i1> %15886}5887 5888define <8 x i1> @fcmp_ogt_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {5889; CHECK-LABEL: fcmp_ogt_fv_v8f32:5890; CHECK: # %bb.0:5891; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu5892; CHECK-NEXT: vfmv.v.f v10, fa05893; CHECK-NEXT: vmfeq.vf v12, v10, fa05894; CHECK-NEXT: vmfeq.vv v10, v8, v85895; CHECK-NEXT: vmand.mm v10, v10, v125896; CHECK-NEXT: vmv1r.v v0, v105897; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t5898; CHECK-NEXT: vmv1r.v v0, v105899; CHECK-NEXT: ret5900 %head = insertelement <8 x float> poison, float %b, i32 05901 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5902 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp5903 ret <8 x i1> %15904}5905 5906define <8 x i1> @fcmp_oge_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {5907; CHECK-LABEL: fcmp_oge_vv_v8f32:5908; CHECK: # %bb.0:5909; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu5910; CHECK-NEXT: vmfeq.vv v12, v8, v85911; CHECK-NEXT: vmfeq.vv v13, v10, v105912; CHECK-NEXT: vmand.mm v12, v13, v125913; CHECK-NEXT: vmv1r.v v0, v125914; CHECK-NEXT: vmfle.vv v12, v10, v8, v0.t5915; CHECK-NEXT: vmv1r.v v0, v125916; CHECK-NEXT: ret5917 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp5918 ret <8 x i1> %15919}5920 5921define <8 x i1> @fcmp_oge_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {5922; CHECK-LABEL: fcmp_oge_vf_v8f32:5923; CHECK: # %bb.0:5924; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu5925; CHECK-NEXT: vfmv.v.f v10, fa05926; CHECK-NEXT: vmfeq.vf v12, v10, fa05927; CHECK-NEXT: vmfeq.vv v10, v8, v85928; CHECK-NEXT: vmand.mm v10, v12, v105929; CHECK-NEXT: vmv1r.v v0, v105930; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t5931; CHECK-NEXT: vmv1r.v v0, v105932; CHECK-NEXT: ret5933 %head = insertelement <8 x float> poison, float %b, i32 05934 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5935 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp5936 ret <8 x i1> %15937}5938 5939define <8 x i1> @fcmp_oge_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {5940; CHECK-LABEL: fcmp_oge_fv_v8f32:5941; CHECK: # %bb.0:5942; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu5943; CHECK-NEXT: vfmv.v.f v10, fa05944; CHECK-NEXT: vmfeq.vf v12, v10, fa05945; CHECK-NEXT: vmfeq.vv v10, v8, v85946; CHECK-NEXT: vmand.mm v10, v10, v125947; CHECK-NEXT: vmv1r.v v0, v105948; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t5949; CHECK-NEXT: vmv1r.v v0, v105950; CHECK-NEXT: ret5951 %head = insertelement <8 x float> poison, float %b, i32 05952 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5953 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp5954 ret <8 x i1> %15955}5956 5957define <8 x i1> @fcmp_olt_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {5958; CHECK-LABEL: fcmp_olt_vv_v8f32:5959; CHECK: # %bb.0:5960; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu5961; CHECK-NEXT: vmfeq.vv v12, v10, v105962; CHECK-NEXT: vmfeq.vv v13, v8, v85963; CHECK-NEXT: vmand.mm v12, v13, v125964; CHECK-NEXT: vmv1r.v v0, v125965; CHECK-NEXT: vmflt.vv v12, v8, v10, v0.t5966; CHECK-NEXT: vmv1r.v v0, v125967; CHECK-NEXT: ret5968 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp5969 ret <8 x i1> %15970}5971 5972define <8 x i1> @fcmp_olt_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {5973; CHECK-LABEL: fcmp_olt_vf_v8f32:5974; CHECK: # %bb.0:5975; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu5976; CHECK-NEXT: vfmv.v.f v10, fa05977; CHECK-NEXT: vmfeq.vf v12, v10, fa05978; CHECK-NEXT: vmfeq.vv v10, v8, v85979; CHECK-NEXT: vmand.mm v10, v10, v125980; CHECK-NEXT: vmv1r.v v0, v105981; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t5982; CHECK-NEXT: vmv1r.v v0, v105983; CHECK-NEXT: ret5984 %head = insertelement <8 x float> poison, float %b, i32 05985 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5986 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp5987 ret <8 x i1> %15988}5989 5990define <8 x i1> @fcmp_olt_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {5991; CHECK-LABEL: fcmp_olt_fv_v8f32:5992; CHECK: # %bb.0:5993; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu5994; CHECK-NEXT: vfmv.v.f v10, fa05995; CHECK-NEXT: vmfeq.vf v12, v10, fa05996; CHECK-NEXT: vmfeq.vv v10, v8, v85997; CHECK-NEXT: vmand.mm v10, v12, v105998; CHECK-NEXT: vmv1r.v v0, v105999; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t6000; CHECK-NEXT: vmv1r.v v0, v106001; CHECK-NEXT: ret6002 %head = insertelement <8 x float> poison, float %b, i32 06003 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer6004 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp6005 ret <8 x i1> %16006}6007 6008define <8 x i1> @fcmp_ole_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {6009; CHECK-LABEL: fcmp_ole_vv_v8f32:6010; CHECK: # %bb.0:6011; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu6012; CHECK-NEXT: vmfeq.vv v12, v10, v106013; CHECK-NEXT: vmfeq.vv v13, v8, v86014; CHECK-NEXT: vmand.mm v12, v13, v126015; CHECK-NEXT: vmv1r.v v0, v126016; CHECK-NEXT: vmfle.vv v12, v8, v10, v0.t6017; CHECK-NEXT: vmv1r.v v0, v126018; CHECK-NEXT: ret6019 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp6020 ret <8 x i1> %16021}6022 6023define <8 x i1> @fcmp_ole_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {6024; CHECK-LABEL: fcmp_ole_vf_v8f32:6025; CHECK: # %bb.0:6026; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu6027; CHECK-NEXT: vfmv.v.f v10, fa06028; CHECK-NEXT: vmfeq.vf v12, v10, fa06029; CHECK-NEXT: vmfeq.vv v10, v8, v86030; CHECK-NEXT: vmand.mm v10, v10, v126031; CHECK-NEXT: vmv1r.v v0, v106032; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t6033; CHECK-NEXT: vmv1r.v v0, v106034; CHECK-NEXT: ret6035 %head = insertelement <8 x float> poison, float %b, i32 06036 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer6037 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp6038 ret <8 x i1> %16039}6040 6041define <8 x i1> @fcmp_ole_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {6042; CHECK-LABEL: fcmp_ole_fv_v8f32:6043; CHECK: # %bb.0:6044; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu6045; CHECK-NEXT: vfmv.v.f v10, fa06046; CHECK-NEXT: vmfeq.vf v12, v10, fa06047; CHECK-NEXT: vmfeq.vv v10, v8, v86048; CHECK-NEXT: vmand.mm v10, v12, v106049; CHECK-NEXT: vmv1r.v v0, v106050; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t6051; CHECK-NEXT: vmv1r.v v0, v106052; CHECK-NEXT: ret6053 %head = insertelement <8 x float> poison, float %b, i32 06054 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer6055 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp6056 ret <8 x i1> %16057}6058 6059define <8 x i1> @fcmp_one_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {6060; CHECK-LABEL: fcmp_one_vv_v8f32:6061; CHECK: # %bb.0:6062; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu6063; CHECK-NEXT: vmfeq.vv v12, v10, v106064; CHECK-NEXT: vmfeq.vv v13, v8, v86065; CHECK-NEXT: vmand.mm v12, v13, v126066; CHECK-NEXT: vmv1r.v v13, v126067; CHECK-NEXT: vmv1r.v v0, v126068; CHECK-NEXT: vmflt.vv v13, v8, v10, v0.t6069; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t6070; CHECK-NEXT: vmor.mm v0, v12, v136071; CHECK-NEXT: ret6072 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp6073 ret <8 x i1> %16074}6075 6076define <8 x i1> @fcmp_one_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {6077; CHECK-LABEL: fcmp_one_vf_v8f32:6078; CHECK: # %bb.0:6079; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu6080; CHECK-NEXT: vfmv.v.f v10, fa06081; CHECK-NEXT: vmfeq.vv v12, v8, v86082; CHECK-NEXT: vmfeq.vf v13, v10, fa06083; CHECK-NEXT: vmand.mm v10, v12, v136084; CHECK-NEXT: vmv1r.v v11, v106085; CHECK-NEXT: vmv1r.v v0, v106086; CHECK-NEXT: vmflt.vf v11, v8, fa0, v0.t6087; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t6088; CHECK-NEXT: vmor.mm v0, v10, v116089; CHECK-NEXT: ret6090 %head = insertelement <8 x float> poison, float %b, i32 06091 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer6092 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp6093 ret <8 x i1> %16094}6095 6096define <8 x i1> @fcmp_one_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {6097; CHECK-LABEL: fcmp_one_fv_v8f32:6098; CHECK: # %bb.0:6099; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu6100; CHECK-NEXT: vfmv.v.f v10, fa06101; CHECK-NEXT: vmfeq.vv v12, v8, v86102; CHECK-NEXT: vmfeq.vf v13, v10, fa06103; CHECK-NEXT: vmand.mm v10, v13, v126104; CHECK-NEXT: vmv1r.v v11, v106105; CHECK-NEXT: vmv1r.v v0, v106106; CHECK-NEXT: vmfgt.vf v11, v8, fa0, v0.t6107; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t6108; CHECK-NEXT: vmor.mm v0, v10, v116109; CHECK-NEXT: ret6110 %head = insertelement <8 x float> poison, float %b, i32 06111 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer6112 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp6113 ret <8 x i1> %16114}6115 6116define <8 x i1> @fcmp_ord_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {6117; CHECK-LABEL: fcmp_ord_vv_v8f32:6118; CHECK: # %bb.0:6119; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma6120; CHECK-NEXT: vmfeq.vv v12, v10, v106121; CHECK-NEXT: vmfeq.vv v10, v8, v86122; CHECK-NEXT: vmand.mm v0, v10, v126123; CHECK-NEXT: ret6124 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp6125 ret <8 x i1> %16126}6127 6128define <8 x i1> @fcmp_ord_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {6129; CHECK-LABEL: fcmp_ord_vf_v8f32:6130; CHECK: # %bb.0:6131; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma6132; CHECK-NEXT: vfmv.v.f v10, fa06133; CHECK-NEXT: vmfeq.vf v12, v10, fa06134; CHECK-NEXT: vmfeq.vv v10, v8, v86135; CHECK-NEXT: vmand.mm v0, v10, v126136; CHECK-NEXT: ret6137 %head = insertelement <8 x float> poison, float %b, i32 06138 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer6139 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp6140 ret <8 x i1> %16141}6142 6143define <8 x i1> @fcmp_ord_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {6144; CHECK-LABEL: fcmp_ord_fv_v8f32:6145; CHECK: # %bb.0:6146; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma6147; CHECK-NEXT: vfmv.v.f v10, fa06148; CHECK-NEXT: vmfeq.vf v12, v10, fa06149; CHECK-NEXT: vmfeq.vv v10, v8, v86150; CHECK-NEXT: vmand.mm v0, v12, v106151; CHECK-NEXT: ret6152 %head = insertelement <8 x float> poison, float %b, i32 06153 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer6154 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp6155 ret <8 x i1> %16156}6157 6158define <8 x i1> @fcmp_ueq_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {6159; CHECK-LABEL: fcmp_ueq_vv_v8f32:6160; CHECK: # %bb.0:6161; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu6162; CHECK-NEXT: vmfeq.vv v12, v10, v106163; CHECK-NEXT: vmfeq.vv v13, v8, v86164; CHECK-NEXT: vmand.mm v12, v13, v126165; CHECK-NEXT: vmv1r.v v13, v126166; CHECK-NEXT: vmv1r.v v0, v126167; CHECK-NEXT: vmflt.vv v13, v8, v10, v0.t6168; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t6169; CHECK-NEXT: vmnor.mm v0, v12, v136170; CHECK-NEXT: ret6171 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp6172 ret <8 x i1> %16173}6174 6175define <8 x i1> @fcmp_ueq_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {6176; CHECK-LABEL: fcmp_ueq_vf_v8f32:6177; CHECK: # %bb.0:6178; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu6179; CHECK-NEXT: vfmv.v.f v10, fa06180; CHECK-NEXT: vmfeq.vv v12, v8, v86181; CHECK-NEXT: vmfeq.vf v13, v10, fa06182; CHECK-NEXT: vmand.mm v10, v12, v136183; CHECK-NEXT: vmv1r.v v11, v106184; CHECK-NEXT: vmv1r.v v0, v106185; CHECK-NEXT: vmflt.vf v11, v8, fa0, v0.t6186; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t6187; CHECK-NEXT: vmnor.mm v0, v10, v116188; CHECK-NEXT: ret6189 %head = insertelement <8 x float> poison, float %b, i32 06190 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer6191 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp6192 ret <8 x i1> %16193}6194 6195define <8 x i1> @fcmp_ueq_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {6196; CHECK-LABEL: fcmp_ueq_fv_v8f32:6197; CHECK: # %bb.0:6198; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu6199; CHECK-NEXT: vfmv.v.f v10, fa06200; CHECK-NEXT: vmfeq.vv v12, v8, v86201; CHECK-NEXT: vmfeq.vf v13, v10, fa06202; CHECK-NEXT: vmand.mm v10, v13, v126203; CHECK-NEXT: vmv1r.v v11, v106204; CHECK-NEXT: vmv1r.v v0, v106205; CHECK-NEXT: vmfgt.vf v11, v8, fa0, v0.t6206; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t6207; CHECK-NEXT: vmnor.mm v0, v10, v116208; CHECK-NEXT: ret6209 %head = insertelement <8 x float> poison, float %b, i32 06210 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer6211 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp6212 ret <8 x i1> %16213}6214 6215define <8 x i1> @fcmp_ugt_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {6216; CHECK-LABEL: fcmp_ugt_vv_v8f32:6217; CHECK: # %bb.0:6218; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu6219; CHECK-NEXT: vmfeq.vv v12, v10, v106220; CHECK-NEXT: vmfeq.vv v13, v8, v86221; CHECK-NEXT: vmand.mm v12, v13, v126222; CHECK-NEXT: vmv1r.v v0, v126223; CHECK-NEXT: vmfle.vv v12, v8, v10, v0.t6224; CHECK-NEXT: vmnot.m v0, v126225; CHECK-NEXT: ret6226 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp6227 ret <8 x i1> %16228}6229 6230define <8 x i1> @fcmp_ugt_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {6231; CHECK-LABEL: fcmp_ugt_vf_v8f32:6232; CHECK: # %bb.0:6233; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu6234; CHECK-NEXT: vfmv.v.f v10, fa06235; CHECK-NEXT: vmfeq.vf v12, v10, fa06236; CHECK-NEXT: vmfeq.vv v10, v8, v86237; CHECK-NEXT: vmand.mm v10, v10, v126238; CHECK-NEXT: vmv1r.v v0, v106239; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t6240; CHECK-NEXT: vmnot.m v0, v106241; CHECK-NEXT: ret6242 %head = insertelement <8 x float> poison, float %b, i32 06243 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer6244 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp6245 ret <8 x i1> %16246}6247 6248define <8 x i1> @fcmp_ugt_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {6249; CHECK-LABEL: fcmp_ugt_fv_v8f32:6250; CHECK: # %bb.0:6251; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu6252; CHECK-NEXT: vfmv.v.f v10, fa06253; CHECK-NEXT: vmfeq.vf v12, v10, fa06254; CHECK-NEXT: vmfeq.vv v10, v8, v86255; CHECK-NEXT: vmand.mm v10, v12, v106256; CHECK-NEXT: vmv1r.v v0, v106257; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t6258; CHECK-NEXT: vmnot.m v0, v106259; CHECK-NEXT: ret6260 %head = insertelement <8 x float> poison, float %b, i32 06261 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer6262 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp6263 ret <8 x i1> %16264}6265 6266define <8 x i1> @fcmp_uge_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {6267; CHECK-LABEL: fcmp_uge_vv_v8f32:6268; CHECK: # %bb.0:6269; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu6270; CHECK-NEXT: vmfeq.vv v12, v10, v106271; CHECK-NEXT: vmfeq.vv v13, v8, v86272; CHECK-NEXT: vmand.mm v12, v13, v126273; CHECK-NEXT: vmv1r.v v0, v126274; CHECK-NEXT: vmflt.vv v12, v8, v10, v0.t6275; CHECK-NEXT: vmnot.m v0, v126276; CHECK-NEXT: ret6277 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp6278 ret <8 x i1> %16279}6280 6281define <8 x i1> @fcmp_uge_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {6282; CHECK-LABEL: fcmp_uge_vf_v8f32:6283; CHECK: # %bb.0:6284; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu6285; CHECK-NEXT: vfmv.v.f v10, fa06286; CHECK-NEXT: vmfeq.vf v12, v10, fa06287; CHECK-NEXT: vmfeq.vv v10, v8, v86288; CHECK-NEXT: vmand.mm v10, v10, v126289; CHECK-NEXT: vmv1r.v v0, v106290; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t6291; CHECK-NEXT: vmnot.m v0, v106292; CHECK-NEXT: ret6293 %head = insertelement <8 x float> poison, float %b, i32 06294 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer6295 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp6296 ret <8 x i1> %16297}6298 6299define <8 x i1> @fcmp_uge_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {6300; CHECK-LABEL: fcmp_uge_fv_v8f32:6301; CHECK: # %bb.0:6302; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu6303; CHECK-NEXT: vfmv.v.f v10, fa06304; CHECK-NEXT: vmfeq.vf v12, v10, fa06305; CHECK-NEXT: vmfeq.vv v10, v8, v86306; CHECK-NEXT: vmand.mm v10, v12, v106307; CHECK-NEXT: vmv1r.v v0, v106308; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t6309; CHECK-NEXT: vmnot.m v0, v106310; CHECK-NEXT: ret6311 %head = insertelement <8 x float> poison, float %b, i32 06312 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer6313 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp6314 ret <8 x i1> %16315}6316 6317define <8 x i1> @fcmp_ult_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {6318; CHECK-LABEL: fcmp_ult_vv_v8f32:6319; CHECK: # %bb.0:6320; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu6321; CHECK-NEXT: vmfeq.vv v12, v8, v86322; CHECK-NEXT: vmfeq.vv v13, v10, v106323; CHECK-NEXT: vmand.mm v12, v13, v126324; CHECK-NEXT: vmv1r.v v0, v126325; CHECK-NEXT: vmfle.vv v12, v10, v8, v0.t6326; CHECK-NEXT: vmnot.m v0, v126327; CHECK-NEXT: ret6328 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp6329 ret <8 x i1> %16330}6331 6332define <8 x i1> @fcmp_ult_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {6333; CHECK-LABEL: fcmp_ult_vf_v8f32:6334; CHECK: # %bb.0:6335; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu6336; CHECK-NEXT: vfmv.v.f v10, fa06337; CHECK-NEXT: vmfeq.vf v12, v10, fa06338; CHECK-NEXT: vmfeq.vv v10, v8, v86339; CHECK-NEXT: vmand.mm v10, v12, v106340; CHECK-NEXT: vmv1r.v v0, v106341; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t6342; CHECK-NEXT: vmnot.m v0, v106343; CHECK-NEXT: ret6344 %head = insertelement <8 x float> poison, float %b, i32 06345 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer6346 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp6347 ret <8 x i1> %16348}6349 6350define <8 x i1> @fcmp_ult_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {6351; CHECK-LABEL: fcmp_ult_fv_v8f32:6352; CHECK: # %bb.0:6353; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu6354; CHECK-NEXT: vfmv.v.f v10, fa06355; CHECK-NEXT: vmfeq.vf v12, v10, fa06356; CHECK-NEXT: vmfeq.vv v10, v8, v86357; CHECK-NEXT: vmand.mm v10, v10, v126358; CHECK-NEXT: vmv1r.v v0, v106359; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t6360; CHECK-NEXT: vmnot.m v0, v106361; CHECK-NEXT: ret6362 %head = insertelement <8 x float> poison, float %b, i32 06363 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer6364 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp6365 ret <8 x i1> %16366}6367 6368define <8 x i1> @fcmp_ule_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {6369; CHECK-LABEL: fcmp_ule_vv_v8f32:6370; CHECK: # %bb.0:6371; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu6372; CHECK-NEXT: vmfeq.vv v12, v8, v86373; CHECK-NEXT: vmfeq.vv v13, v10, v106374; CHECK-NEXT: vmand.mm v12, v13, v126375; CHECK-NEXT: vmv1r.v v0, v126376; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t6377; CHECK-NEXT: vmnot.m v0, v126378; CHECK-NEXT: ret6379 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp6380 ret <8 x i1> %16381}6382 6383define <8 x i1> @fcmp_ule_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {6384; CHECK-LABEL: fcmp_ule_vf_v8f32:6385; CHECK: # %bb.0:6386; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu6387; CHECK-NEXT: vfmv.v.f v10, fa06388; CHECK-NEXT: vmfeq.vf v12, v10, fa06389; CHECK-NEXT: vmfeq.vv v10, v8, v86390; CHECK-NEXT: vmand.mm v10, v12, v106391; CHECK-NEXT: vmv1r.v v0, v106392; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t6393; CHECK-NEXT: vmnot.m v0, v106394; CHECK-NEXT: ret6395 %head = insertelement <8 x float> poison, float %b, i32 06396 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer6397 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp6398 ret <8 x i1> %16399}6400 6401define <8 x i1> @fcmp_ule_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {6402; CHECK-LABEL: fcmp_ule_fv_v8f32:6403; CHECK: # %bb.0:6404; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu6405; CHECK-NEXT: vfmv.v.f v10, fa06406; CHECK-NEXT: vmfeq.vf v12, v10, fa06407; CHECK-NEXT: vmfeq.vv v10, v8, v86408; CHECK-NEXT: vmand.mm v10, v10, v126409; CHECK-NEXT: vmv1r.v v0, v106410; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t6411; CHECK-NEXT: vmnot.m v0, v106412; CHECK-NEXT: ret6413 %head = insertelement <8 x float> poison, float %b, i32 06414 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer6415 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp6416 ret <8 x i1> %16417}6418 6419define <8 x i1> @fcmp_une_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {6420; CHECK-LABEL: fcmp_une_vv_v8f32:6421; CHECK: # %bb.0:6422; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma6423; CHECK-NEXT: vmfne.vv v0, v8, v106424; CHECK-NEXT: ret6425 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp6426 ret <8 x i1> %16427}6428 6429define <8 x i1> @fcmp_une_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {6430; CHECK-LABEL: fcmp_une_vf_v8f32:6431; CHECK: # %bb.0:6432; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma6433; CHECK-NEXT: vmfne.vf v0, v8, fa06434; CHECK-NEXT: ret6435 %head = insertelement <8 x float> poison, float %b, i32 06436 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer6437 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp6438 ret <8 x i1> %16439}6440 6441define <8 x i1> @fcmp_une_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {6442; CHECK-LABEL: fcmp_une_fv_v8f32:6443; CHECK: # %bb.0:6444; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma6445; CHECK-NEXT: vmfne.vf v0, v8, fa06446; CHECK-NEXT: ret6447 %head = insertelement <8 x float> poison, float %b, i32 06448 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer6449 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp6450 ret <8 x i1> %16451}6452 6453define <8 x i1> @fcmp_uno_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {6454; CHECK-LABEL: fcmp_uno_vv_v8f32:6455; CHECK: # %bb.0:6456; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma6457; CHECK-NEXT: vmfne.vv v12, v10, v106458; CHECK-NEXT: vmfne.vv v10, v8, v86459; CHECK-NEXT: vmor.mm v0, v10, v126460; CHECK-NEXT: ret6461 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp6462 ret <8 x i1> %16463}6464 6465define <8 x i1> @fcmp_uno_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {6466; CHECK-LABEL: fcmp_uno_vf_v8f32:6467; CHECK: # %bb.0:6468; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma6469; CHECK-NEXT: vfmv.v.f v10, fa06470; CHECK-NEXT: vmfne.vf v12, v10, fa06471; CHECK-NEXT: vmfne.vv v10, v8, v86472; CHECK-NEXT: vmor.mm v0, v10, v126473; CHECK-NEXT: ret6474 %head = insertelement <8 x float> poison, float %b, i32 06475 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer6476 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp6477 ret <8 x i1> %16478}6479 6480define <8 x i1> @fcmp_uno_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {6481; CHECK-LABEL: fcmp_uno_fv_v8f32:6482; CHECK: # %bb.0:6483; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma6484; CHECK-NEXT: vfmv.v.f v10, fa06485; CHECK-NEXT: vmfne.vf v12, v10, fa06486; CHECK-NEXT: vmfne.vv v10, v8, v86487; CHECK-NEXT: vmor.mm v0, v12, v106488; CHECK-NEXT: ret6489 %head = insertelement <8 x float> poison, float %b, i32 06490 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer6491 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp6492 ret <8 x i1> %16493}6494 6495define <16 x i1> @fcmp_oeq_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {6496; CHECK-LABEL: fcmp_oeq_vv_v16f32:6497; CHECK: # %bb.0:6498; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma6499; CHECK-NEXT: vmfeq.vv v0, v8, v126500; CHECK-NEXT: ret6501 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp6502 ret <16 x i1> %16503}6504 6505define <16 x i1> @fcmp_oeq_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {6506; CHECK-LABEL: fcmp_oeq_vf_v16f32:6507; CHECK: # %bb.0:6508; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma6509; CHECK-NEXT: vmfeq.vf v0, v8, fa06510; CHECK-NEXT: ret6511 %head = insertelement <16 x float> poison, float %b, i32 06512 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer6513 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp6514 ret <16 x i1> %16515}6516 6517define <16 x i1> @fcmp_oeq_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {6518; CHECK-LABEL: fcmp_oeq_fv_v16f32:6519; CHECK: # %bb.0:6520; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma6521; CHECK-NEXT: vmfeq.vf v0, v8, fa06522; CHECK-NEXT: ret6523 %head = insertelement <16 x float> poison, float %b, i32 06524 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer6525 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp6526 ret <16 x i1> %16527}6528 6529define <16 x i1> @fcmp_ogt_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {6530; CHECK-LABEL: fcmp_ogt_vv_v16f32:6531; CHECK: # %bb.0:6532; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6533; CHECK-NEXT: vmfeq.vv v16, v8, v86534; CHECK-NEXT: vmfeq.vv v17, v12, v126535; CHECK-NEXT: vmand.mm v16, v17, v166536; CHECK-NEXT: vmv1r.v v0, v166537; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t6538; CHECK-NEXT: vmv1r.v v0, v166539; CHECK-NEXT: ret6540 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp6541 ret <16 x i1> %16542}6543 6544define <16 x i1> @fcmp_ogt_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {6545; CHECK-LABEL: fcmp_ogt_vf_v16f32:6546; CHECK: # %bb.0:6547; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6548; CHECK-NEXT: vfmv.v.f v12, fa06549; CHECK-NEXT: vmfeq.vf v16, v12, fa06550; CHECK-NEXT: vmfeq.vv v12, v8, v86551; CHECK-NEXT: vmand.mm v12, v16, v126552; CHECK-NEXT: vmv1r.v v0, v126553; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t6554; CHECK-NEXT: vmv1r.v v0, v126555; CHECK-NEXT: ret6556 %head = insertelement <16 x float> poison, float %b, i32 06557 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer6558 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp6559 ret <16 x i1> %16560}6561 6562define <16 x i1> @fcmp_ogt_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {6563; CHECK-LABEL: fcmp_ogt_fv_v16f32:6564; CHECK: # %bb.0:6565; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6566; CHECK-NEXT: vfmv.v.f v12, fa06567; CHECK-NEXT: vmfeq.vf v16, v12, fa06568; CHECK-NEXT: vmfeq.vv v12, v8, v86569; CHECK-NEXT: vmand.mm v12, v12, v166570; CHECK-NEXT: vmv1r.v v0, v126571; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t6572; CHECK-NEXT: vmv1r.v v0, v126573; CHECK-NEXT: ret6574 %head = insertelement <16 x float> poison, float %b, i32 06575 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer6576 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp6577 ret <16 x i1> %16578}6579 6580define <16 x i1> @fcmp_oge_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {6581; CHECK-LABEL: fcmp_oge_vv_v16f32:6582; CHECK: # %bb.0:6583; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6584; CHECK-NEXT: vmfeq.vv v16, v8, v86585; CHECK-NEXT: vmfeq.vv v17, v12, v126586; CHECK-NEXT: vmand.mm v16, v17, v166587; CHECK-NEXT: vmv1r.v v0, v166588; CHECK-NEXT: vmfle.vv v16, v12, v8, v0.t6589; CHECK-NEXT: vmv1r.v v0, v166590; CHECK-NEXT: ret6591 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp6592 ret <16 x i1> %16593}6594 6595define <16 x i1> @fcmp_oge_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {6596; CHECK-LABEL: fcmp_oge_vf_v16f32:6597; CHECK: # %bb.0:6598; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6599; CHECK-NEXT: vfmv.v.f v12, fa06600; CHECK-NEXT: vmfeq.vf v16, v12, fa06601; CHECK-NEXT: vmfeq.vv v12, v8, v86602; CHECK-NEXT: vmand.mm v12, v16, v126603; CHECK-NEXT: vmv1r.v v0, v126604; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t6605; CHECK-NEXT: vmv1r.v v0, v126606; CHECK-NEXT: ret6607 %head = insertelement <16 x float> poison, float %b, i32 06608 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer6609 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp6610 ret <16 x i1> %16611}6612 6613define <16 x i1> @fcmp_oge_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {6614; CHECK-LABEL: fcmp_oge_fv_v16f32:6615; CHECK: # %bb.0:6616; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6617; CHECK-NEXT: vfmv.v.f v12, fa06618; CHECK-NEXT: vmfeq.vf v16, v12, fa06619; CHECK-NEXT: vmfeq.vv v12, v8, v86620; CHECK-NEXT: vmand.mm v12, v12, v166621; CHECK-NEXT: vmv1r.v v0, v126622; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t6623; CHECK-NEXT: vmv1r.v v0, v126624; CHECK-NEXT: ret6625 %head = insertelement <16 x float> poison, float %b, i32 06626 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer6627 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp6628 ret <16 x i1> %16629}6630 6631define <16 x i1> @fcmp_olt_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {6632; CHECK-LABEL: fcmp_olt_vv_v16f32:6633; CHECK: # %bb.0:6634; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6635; CHECK-NEXT: vmfeq.vv v16, v12, v126636; CHECK-NEXT: vmfeq.vv v17, v8, v86637; CHECK-NEXT: vmand.mm v16, v17, v166638; CHECK-NEXT: vmv1r.v v0, v166639; CHECK-NEXT: vmflt.vv v16, v8, v12, v0.t6640; CHECK-NEXT: vmv1r.v v0, v166641; CHECK-NEXT: ret6642 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp6643 ret <16 x i1> %16644}6645 6646define <16 x i1> @fcmp_olt_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {6647; CHECK-LABEL: fcmp_olt_vf_v16f32:6648; CHECK: # %bb.0:6649; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6650; CHECK-NEXT: vfmv.v.f v12, fa06651; CHECK-NEXT: vmfeq.vf v16, v12, fa06652; CHECK-NEXT: vmfeq.vv v12, v8, v86653; CHECK-NEXT: vmand.mm v12, v12, v166654; CHECK-NEXT: vmv1r.v v0, v126655; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t6656; CHECK-NEXT: vmv1r.v v0, v126657; CHECK-NEXT: ret6658 %head = insertelement <16 x float> poison, float %b, i32 06659 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer6660 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp6661 ret <16 x i1> %16662}6663 6664define <16 x i1> @fcmp_olt_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {6665; CHECK-LABEL: fcmp_olt_fv_v16f32:6666; CHECK: # %bb.0:6667; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6668; CHECK-NEXT: vfmv.v.f v12, fa06669; CHECK-NEXT: vmfeq.vf v16, v12, fa06670; CHECK-NEXT: vmfeq.vv v12, v8, v86671; CHECK-NEXT: vmand.mm v12, v16, v126672; CHECK-NEXT: vmv1r.v v0, v126673; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t6674; CHECK-NEXT: vmv1r.v v0, v126675; CHECK-NEXT: ret6676 %head = insertelement <16 x float> poison, float %b, i32 06677 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer6678 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp6679 ret <16 x i1> %16680}6681 6682define <16 x i1> @fcmp_ole_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {6683; CHECK-LABEL: fcmp_ole_vv_v16f32:6684; CHECK: # %bb.0:6685; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6686; CHECK-NEXT: vmfeq.vv v16, v12, v126687; CHECK-NEXT: vmfeq.vv v17, v8, v86688; CHECK-NEXT: vmand.mm v16, v17, v166689; CHECK-NEXT: vmv1r.v v0, v166690; CHECK-NEXT: vmfle.vv v16, v8, v12, v0.t6691; CHECK-NEXT: vmv1r.v v0, v166692; CHECK-NEXT: ret6693 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp6694 ret <16 x i1> %16695}6696 6697define <16 x i1> @fcmp_ole_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {6698; CHECK-LABEL: fcmp_ole_vf_v16f32:6699; CHECK: # %bb.0:6700; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6701; CHECK-NEXT: vfmv.v.f v12, fa06702; CHECK-NEXT: vmfeq.vf v16, v12, fa06703; CHECK-NEXT: vmfeq.vv v12, v8, v86704; CHECK-NEXT: vmand.mm v12, v12, v166705; CHECK-NEXT: vmv1r.v v0, v126706; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t6707; CHECK-NEXT: vmv1r.v v0, v126708; CHECK-NEXT: ret6709 %head = insertelement <16 x float> poison, float %b, i32 06710 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer6711 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp6712 ret <16 x i1> %16713}6714 6715define <16 x i1> @fcmp_ole_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {6716; CHECK-LABEL: fcmp_ole_fv_v16f32:6717; CHECK: # %bb.0:6718; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6719; CHECK-NEXT: vfmv.v.f v12, fa06720; CHECK-NEXT: vmfeq.vf v16, v12, fa06721; CHECK-NEXT: vmfeq.vv v12, v8, v86722; CHECK-NEXT: vmand.mm v12, v16, v126723; CHECK-NEXT: vmv1r.v v0, v126724; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t6725; CHECK-NEXT: vmv1r.v v0, v126726; CHECK-NEXT: ret6727 %head = insertelement <16 x float> poison, float %b, i32 06728 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer6729 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp6730 ret <16 x i1> %16731}6732 6733define <16 x i1> @fcmp_one_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {6734; CHECK-LABEL: fcmp_one_vv_v16f32:6735; CHECK: # %bb.0:6736; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6737; CHECK-NEXT: vmfeq.vv v16, v12, v126738; CHECK-NEXT: vmfeq.vv v17, v8, v86739; CHECK-NEXT: vmand.mm v16, v17, v166740; CHECK-NEXT: vmv1r.v v17, v166741; CHECK-NEXT: vmv1r.v v0, v166742; CHECK-NEXT: vmflt.vv v17, v8, v12, v0.t6743; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t6744; CHECK-NEXT: vmor.mm v0, v16, v176745; CHECK-NEXT: ret6746 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp6747 ret <16 x i1> %16748}6749 6750define <16 x i1> @fcmp_one_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {6751; CHECK-LABEL: fcmp_one_vf_v16f32:6752; CHECK: # %bb.0:6753; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6754; CHECK-NEXT: vfmv.v.f v12, fa06755; CHECK-NEXT: vmfeq.vf v16, v12, fa06756; CHECK-NEXT: vmfeq.vv v12, v8, v86757; CHECK-NEXT: vmand.mm v12, v12, v166758; CHECK-NEXT: vmv1r.v v13, v126759; CHECK-NEXT: vmv1r.v v0, v126760; CHECK-NEXT: vmflt.vf v13, v8, fa0, v0.t6761; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t6762; CHECK-NEXT: vmor.mm v0, v12, v136763; CHECK-NEXT: ret6764 %head = insertelement <16 x float> poison, float %b, i32 06765 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer6766 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp6767 ret <16 x i1> %16768}6769 6770define <16 x i1> @fcmp_one_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {6771; CHECK-LABEL: fcmp_one_fv_v16f32:6772; CHECK: # %bb.0:6773; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6774; CHECK-NEXT: vfmv.v.f v12, fa06775; CHECK-NEXT: vmfeq.vf v16, v12, fa06776; CHECK-NEXT: vmfeq.vv v12, v8, v86777; CHECK-NEXT: vmand.mm v12, v16, v126778; CHECK-NEXT: vmv1r.v v13, v126779; CHECK-NEXT: vmv1r.v v0, v126780; CHECK-NEXT: vmfgt.vf v13, v8, fa0, v0.t6781; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t6782; CHECK-NEXT: vmor.mm v0, v12, v136783; CHECK-NEXT: ret6784 %head = insertelement <16 x float> poison, float %b, i32 06785 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer6786 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp6787 ret <16 x i1> %16788}6789 6790define <16 x i1> @fcmp_ord_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {6791; CHECK-LABEL: fcmp_ord_vv_v16f32:6792; CHECK: # %bb.0:6793; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma6794; CHECK-NEXT: vmfeq.vv v16, v12, v126795; CHECK-NEXT: vmfeq.vv v12, v8, v86796; CHECK-NEXT: vmand.mm v0, v12, v166797; CHECK-NEXT: ret6798 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp6799 ret <16 x i1> %16800}6801 6802define <16 x i1> @fcmp_ord_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {6803; CHECK-LABEL: fcmp_ord_vf_v16f32:6804; CHECK: # %bb.0:6805; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma6806; CHECK-NEXT: vfmv.v.f v12, fa06807; CHECK-NEXT: vmfeq.vf v16, v12, fa06808; CHECK-NEXT: vmfeq.vv v12, v8, v86809; CHECK-NEXT: vmand.mm v0, v12, v166810; CHECK-NEXT: ret6811 %head = insertelement <16 x float> poison, float %b, i32 06812 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer6813 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp6814 ret <16 x i1> %16815}6816 6817define <16 x i1> @fcmp_ord_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {6818; CHECK-LABEL: fcmp_ord_fv_v16f32:6819; CHECK: # %bb.0:6820; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma6821; CHECK-NEXT: vfmv.v.f v12, fa06822; CHECK-NEXT: vmfeq.vf v16, v12, fa06823; CHECK-NEXT: vmfeq.vv v12, v8, v86824; CHECK-NEXT: vmand.mm v0, v16, v126825; CHECK-NEXT: ret6826 %head = insertelement <16 x float> poison, float %b, i32 06827 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer6828 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp6829 ret <16 x i1> %16830}6831 6832define <16 x i1> @fcmp_ueq_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {6833; CHECK-LABEL: fcmp_ueq_vv_v16f32:6834; CHECK: # %bb.0:6835; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6836; CHECK-NEXT: vmfeq.vv v16, v12, v126837; CHECK-NEXT: vmfeq.vv v17, v8, v86838; CHECK-NEXT: vmand.mm v16, v17, v166839; CHECK-NEXT: vmv1r.v v17, v166840; CHECK-NEXT: vmv1r.v v0, v166841; CHECK-NEXT: vmflt.vv v17, v8, v12, v0.t6842; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t6843; CHECK-NEXT: vmnor.mm v0, v16, v176844; CHECK-NEXT: ret6845 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp6846 ret <16 x i1> %16847}6848 6849define <16 x i1> @fcmp_ueq_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {6850; CHECK-LABEL: fcmp_ueq_vf_v16f32:6851; CHECK: # %bb.0:6852; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6853; CHECK-NEXT: vfmv.v.f v12, fa06854; CHECK-NEXT: vmfeq.vf v16, v12, fa06855; CHECK-NEXT: vmfeq.vv v12, v8, v86856; CHECK-NEXT: vmand.mm v12, v12, v166857; CHECK-NEXT: vmv1r.v v13, v126858; CHECK-NEXT: vmv1r.v v0, v126859; CHECK-NEXT: vmflt.vf v13, v8, fa0, v0.t6860; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t6861; CHECK-NEXT: vmnor.mm v0, v12, v136862; CHECK-NEXT: ret6863 %head = insertelement <16 x float> poison, float %b, i32 06864 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer6865 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp6866 ret <16 x i1> %16867}6868 6869define <16 x i1> @fcmp_ueq_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {6870; CHECK-LABEL: fcmp_ueq_fv_v16f32:6871; CHECK: # %bb.0:6872; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6873; CHECK-NEXT: vfmv.v.f v12, fa06874; CHECK-NEXT: vmfeq.vf v16, v12, fa06875; CHECK-NEXT: vmfeq.vv v12, v8, v86876; CHECK-NEXT: vmand.mm v12, v16, v126877; CHECK-NEXT: vmv1r.v v13, v126878; CHECK-NEXT: vmv1r.v v0, v126879; CHECK-NEXT: vmfgt.vf v13, v8, fa0, v0.t6880; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t6881; CHECK-NEXT: vmnor.mm v0, v12, v136882; CHECK-NEXT: ret6883 %head = insertelement <16 x float> poison, float %b, i32 06884 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer6885 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp6886 ret <16 x i1> %16887}6888 6889define <16 x i1> @fcmp_ugt_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {6890; CHECK-LABEL: fcmp_ugt_vv_v16f32:6891; CHECK: # %bb.0:6892; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6893; CHECK-NEXT: vmfeq.vv v16, v12, v126894; CHECK-NEXT: vmfeq.vv v17, v8, v86895; CHECK-NEXT: vmand.mm v16, v17, v166896; CHECK-NEXT: vmv1r.v v0, v166897; CHECK-NEXT: vmfle.vv v16, v8, v12, v0.t6898; CHECK-NEXT: vmnot.m v0, v166899; CHECK-NEXT: ret6900 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp6901 ret <16 x i1> %16902}6903 6904define <16 x i1> @fcmp_ugt_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {6905; CHECK-LABEL: fcmp_ugt_vf_v16f32:6906; CHECK: # %bb.0:6907; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6908; CHECK-NEXT: vfmv.v.f v12, fa06909; CHECK-NEXT: vmfeq.vf v16, v12, fa06910; CHECK-NEXT: vmfeq.vv v12, v8, v86911; CHECK-NEXT: vmand.mm v12, v12, v166912; CHECK-NEXT: vmv1r.v v0, v126913; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t6914; CHECK-NEXT: vmnot.m v0, v126915; CHECK-NEXT: ret6916 %head = insertelement <16 x float> poison, float %b, i32 06917 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer6918 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp6919 ret <16 x i1> %16920}6921 6922define <16 x i1> @fcmp_ugt_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {6923; CHECK-LABEL: fcmp_ugt_fv_v16f32:6924; CHECK: # %bb.0:6925; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6926; CHECK-NEXT: vfmv.v.f v12, fa06927; CHECK-NEXT: vmfeq.vf v16, v12, fa06928; CHECK-NEXT: vmfeq.vv v12, v8, v86929; CHECK-NEXT: vmand.mm v12, v16, v126930; CHECK-NEXT: vmv1r.v v0, v126931; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t6932; CHECK-NEXT: vmnot.m v0, v126933; CHECK-NEXT: ret6934 %head = insertelement <16 x float> poison, float %b, i32 06935 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer6936 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp6937 ret <16 x i1> %16938}6939 6940define <16 x i1> @fcmp_uge_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {6941; CHECK-LABEL: fcmp_uge_vv_v16f32:6942; CHECK: # %bb.0:6943; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6944; CHECK-NEXT: vmfeq.vv v16, v12, v126945; CHECK-NEXT: vmfeq.vv v17, v8, v86946; CHECK-NEXT: vmand.mm v16, v17, v166947; CHECK-NEXT: vmv1r.v v0, v166948; CHECK-NEXT: vmflt.vv v16, v8, v12, v0.t6949; CHECK-NEXT: vmnot.m v0, v166950; CHECK-NEXT: ret6951 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp6952 ret <16 x i1> %16953}6954 6955define <16 x i1> @fcmp_uge_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {6956; CHECK-LABEL: fcmp_uge_vf_v16f32:6957; CHECK: # %bb.0:6958; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6959; CHECK-NEXT: vfmv.v.f v12, fa06960; CHECK-NEXT: vmfeq.vf v16, v12, fa06961; CHECK-NEXT: vmfeq.vv v12, v8, v86962; CHECK-NEXT: vmand.mm v12, v12, v166963; CHECK-NEXT: vmv1r.v v0, v126964; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t6965; CHECK-NEXT: vmnot.m v0, v126966; CHECK-NEXT: ret6967 %head = insertelement <16 x float> poison, float %b, i32 06968 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer6969 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp6970 ret <16 x i1> %16971}6972 6973define <16 x i1> @fcmp_uge_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {6974; CHECK-LABEL: fcmp_uge_fv_v16f32:6975; CHECK: # %bb.0:6976; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6977; CHECK-NEXT: vfmv.v.f v12, fa06978; CHECK-NEXT: vmfeq.vf v16, v12, fa06979; CHECK-NEXT: vmfeq.vv v12, v8, v86980; CHECK-NEXT: vmand.mm v12, v16, v126981; CHECK-NEXT: vmv1r.v v0, v126982; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t6983; CHECK-NEXT: vmnot.m v0, v126984; CHECK-NEXT: ret6985 %head = insertelement <16 x float> poison, float %b, i32 06986 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer6987 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp6988 ret <16 x i1> %16989}6990 6991define <16 x i1> @fcmp_ult_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {6992; CHECK-LABEL: fcmp_ult_vv_v16f32:6993; CHECK: # %bb.0:6994; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu6995; CHECK-NEXT: vmfeq.vv v16, v8, v86996; CHECK-NEXT: vmfeq.vv v17, v12, v126997; CHECK-NEXT: vmand.mm v16, v17, v166998; CHECK-NEXT: vmv1r.v v0, v166999; CHECK-NEXT: vmfle.vv v16, v12, v8, v0.t7000; CHECK-NEXT: vmnot.m v0, v167001; CHECK-NEXT: ret7002 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp7003 ret <16 x i1> %17004}7005 7006define <16 x i1> @fcmp_ult_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {7007; CHECK-LABEL: fcmp_ult_vf_v16f32:7008; CHECK: # %bb.0:7009; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu7010; CHECK-NEXT: vfmv.v.f v12, fa07011; CHECK-NEXT: vmfeq.vf v16, v12, fa07012; CHECK-NEXT: vmfeq.vv v12, v8, v87013; CHECK-NEXT: vmand.mm v12, v16, v127014; CHECK-NEXT: vmv1r.v v0, v127015; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t7016; CHECK-NEXT: vmnot.m v0, v127017; CHECK-NEXT: ret7018 %head = insertelement <16 x float> poison, float %b, i32 07019 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer7020 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp7021 ret <16 x i1> %17022}7023 7024define <16 x i1> @fcmp_ult_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {7025; CHECK-LABEL: fcmp_ult_fv_v16f32:7026; CHECK: # %bb.0:7027; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu7028; CHECK-NEXT: vfmv.v.f v12, fa07029; CHECK-NEXT: vmfeq.vf v16, v12, fa07030; CHECK-NEXT: vmfeq.vv v12, v8, v87031; CHECK-NEXT: vmand.mm v12, v12, v167032; CHECK-NEXT: vmv1r.v v0, v127033; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t7034; CHECK-NEXT: vmnot.m v0, v127035; CHECK-NEXT: ret7036 %head = insertelement <16 x float> poison, float %b, i32 07037 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer7038 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp7039 ret <16 x i1> %17040}7041 7042define <16 x i1> @fcmp_ule_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {7043; CHECK-LABEL: fcmp_ule_vv_v16f32:7044; CHECK: # %bb.0:7045; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu7046; CHECK-NEXT: vmfeq.vv v16, v8, v87047; CHECK-NEXT: vmfeq.vv v17, v12, v127048; CHECK-NEXT: vmand.mm v16, v17, v167049; CHECK-NEXT: vmv1r.v v0, v167050; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t7051; CHECK-NEXT: vmnot.m v0, v167052; CHECK-NEXT: ret7053 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp7054 ret <16 x i1> %17055}7056 7057define <16 x i1> @fcmp_ule_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {7058; CHECK-LABEL: fcmp_ule_vf_v16f32:7059; CHECK: # %bb.0:7060; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu7061; CHECK-NEXT: vfmv.v.f v12, fa07062; CHECK-NEXT: vmfeq.vf v16, v12, fa07063; CHECK-NEXT: vmfeq.vv v12, v8, v87064; CHECK-NEXT: vmand.mm v12, v16, v127065; CHECK-NEXT: vmv1r.v v0, v127066; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t7067; CHECK-NEXT: vmnot.m v0, v127068; CHECK-NEXT: ret7069 %head = insertelement <16 x float> poison, float %b, i32 07070 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer7071 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp7072 ret <16 x i1> %17073}7074 7075define <16 x i1> @fcmp_ule_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {7076; CHECK-LABEL: fcmp_ule_fv_v16f32:7077; CHECK: # %bb.0:7078; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu7079; CHECK-NEXT: vfmv.v.f v12, fa07080; CHECK-NEXT: vmfeq.vf v16, v12, fa07081; CHECK-NEXT: vmfeq.vv v12, v8, v87082; CHECK-NEXT: vmand.mm v12, v12, v167083; CHECK-NEXT: vmv1r.v v0, v127084; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t7085; CHECK-NEXT: vmnot.m v0, v127086; CHECK-NEXT: ret7087 %head = insertelement <16 x float> poison, float %b, i32 07088 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer7089 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp7090 ret <16 x i1> %17091}7092 7093define <16 x i1> @fcmp_une_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {7094; CHECK-LABEL: fcmp_une_vv_v16f32:7095; CHECK: # %bb.0:7096; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma7097; CHECK-NEXT: vmfne.vv v0, v8, v127098; CHECK-NEXT: ret7099 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp7100 ret <16 x i1> %17101}7102 7103define <16 x i1> @fcmp_une_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {7104; CHECK-LABEL: fcmp_une_vf_v16f32:7105; CHECK: # %bb.0:7106; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma7107; CHECK-NEXT: vmfne.vf v0, v8, fa07108; CHECK-NEXT: ret7109 %head = insertelement <16 x float> poison, float %b, i32 07110 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer7111 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp7112 ret <16 x i1> %17113}7114 7115define <16 x i1> @fcmp_une_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {7116; CHECK-LABEL: fcmp_une_fv_v16f32:7117; CHECK: # %bb.0:7118; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma7119; CHECK-NEXT: vmfne.vf v0, v8, fa07120; CHECK-NEXT: ret7121 %head = insertelement <16 x float> poison, float %b, i32 07122 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer7123 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp7124 ret <16 x i1> %17125}7126 7127define <16 x i1> @fcmp_uno_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {7128; CHECK-LABEL: fcmp_uno_vv_v16f32:7129; CHECK: # %bb.0:7130; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma7131; CHECK-NEXT: vmfne.vv v16, v12, v127132; CHECK-NEXT: vmfne.vv v12, v8, v87133; CHECK-NEXT: vmor.mm v0, v12, v167134; CHECK-NEXT: ret7135 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp7136 ret <16 x i1> %17137}7138 7139define <16 x i1> @fcmp_uno_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {7140; CHECK-LABEL: fcmp_uno_vf_v16f32:7141; CHECK: # %bb.0:7142; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma7143; CHECK-NEXT: vfmv.v.f v12, fa07144; CHECK-NEXT: vmfne.vf v16, v12, fa07145; CHECK-NEXT: vmfne.vv v12, v8, v87146; CHECK-NEXT: vmor.mm v0, v12, v167147; CHECK-NEXT: ret7148 %head = insertelement <16 x float> poison, float %b, i32 07149 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer7150 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp7151 ret <16 x i1> %17152}7153 7154define <16 x i1> @fcmp_uno_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {7155; CHECK-LABEL: fcmp_uno_fv_v16f32:7156; CHECK: # %bb.0:7157; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma7158; CHECK-NEXT: vfmv.v.f v12, fa07159; CHECK-NEXT: vmfne.vf v16, v12, fa07160; CHECK-NEXT: vmfne.vv v12, v8, v87161; CHECK-NEXT: vmor.mm v0, v16, v127162; CHECK-NEXT: ret7163 %head = insertelement <16 x float> poison, float %b, i32 07164 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer7165 %1 = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp7166 ret <16 x i1> %17167}7168 7169define <1 x i1> @fcmp_oeq_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {7170; CHECK-LABEL: fcmp_oeq_vv_v1f64:7171; CHECK: # %bb.0:7172; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma7173; CHECK-NEXT: vmfeq.vv v0, v8, v97174; CHECK-NEXT: ret7175 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp7176 ret <1 x i1> %17177}7178 7179define <1 x i1> @fcmp_oeq_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {7180; CHECK-LABEL: fcmp_oeq_vf_v1f64:7181; CHECK: # %bb.0:7182; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma7183; CHECK-NEXT: vmfeq.vf v0, v8, fa07184; CHECK-NEXT: ret7185 %head = insertelement <1 x double> poison, double %b, i32 07186 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7187 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp7188 ret <1 x i1> %17189}7190 7191define <1 x i1> @fcmp_oeq_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {7192; CHECK-LABEL: fcmp_oeq_fv_v1f64:7193; CHECK: # %bb.0:7194; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma7195; CHECK-NEXT: vmfeq.vf v0, v8, fa07196; CHECK-NEXT: ret7197 %head = insertelement <1 x double> poison, double %b, i32 07198 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7199 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp7200 ret <1 x i1> %17201}7202 7203define <1 x i1> @fcmp_ogt_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {7204; CHECK-LABEL: fcmp_ogt_vv_v1f64:7205; CHECK: # %bb.0:7206; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7207; CHECK-NEXT: vmfeq.vv v10, v8, v87208; CHECK-NEXT: vmfeq.vv v11, v9, v97209; CHECK-NEXT: vmand.mm v0, v11, v107210; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t7211; CHECK-NEXT: ret7212 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp7213 ret <1 x i1> %17214}7215 7216define <1 x i1> @fcmp_ogt_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {7217; CHECK-LABEL: fcmp_ogt_vf_v1f64:7218; CHECK: # %bb.0:7219; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7220; CHECK-NEXT: vfmv.s.f v9, fa07221; CHECK-NEXT: vmfeq.vv v10, v8, v87222; CHECK-NEXT: vmfeq.vf v9, v9, fa07223; CHECK-NEXT: vmand.mm v0, v9, v107224; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t7225; CHECK-NEXT: ret7226 %head = insertelement <1 x double> poison, double %b, i32 07227 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7228 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp7229 ret <1 x i1> %17230}7231 7232define <1 x i1> @fcmp_ogt_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {7233; CHECK-LABEL: fcmp_ogt_fv_v1f64:7234; CHECK: # %bb.0:7235; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7236; CHECK-NEXT: vfmv.s.f v9, fa07237; CHECK-NEXT: vmfeq.vv v10, v8, v87238; CHECK-NEXT: vmfeq.vf v9, v9, fa07239; CHECK-NEXT: vmand.mm v0, v10, v97240; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t7241; CHECK-NEXT: ret7242 %head = insertelement <1 x double> poison, double %b, i32 07243 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7244 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp7245 ret <1 x i1> %17246}7247 7248define <1 x i1> @fcmp_oge_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {7249; CHECK-LABEL: fcmp_oge_vv_v1f64:7250; CHECK: # %bb.0:7251; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7252; CHECK-NEXT: vmfeq.vv v10, v8, v87253; CHECK-NEXT: vmfeq.vv v11, v9, v97254; CHECK-NEXT: vmand.mm v0, v11, v107255; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t7256; CHECK-NEXT: ret7257 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp7258 ret <1 x i1> %17259}7260 7261define <1 x i1> @fcmp_oge_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {7262; CHECK-LABEL: fcmp_oge_vf_v1f64:7263; CHECK: # %bb.0:7264; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7265; CHECK-NEXT: vfmv.s.f v9, fa07266; CHECK-NEXT: vmfeq.vv v10, v8, v87267; CHECK-NEXT: vmfeq.vf v9, v9, fa07268; CHECK-NEXT: vmand.mm v0, v9, v107269; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t7270; CHECK-NEXT: ret7271 %head = insertelement <1 x double> poison, double %b, i32 07272 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7273 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp7274 ret <1 x i1> %17275}7276 7277define <1 x i1> @fcmp_oge_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {7278; CHECK-LABEL: fcmp_oge_fv_v1f64:7279; CHECK: # %bb.0:7280; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7281; CHECK-NEXT: vfmv.s.f v9, fa07282; CHECK-NEXT: vmfeq.vv v10, v8, v87283; CHECK-NEXT: vmfeq.vf v9, v9, fa07284; CHECK-NEXT: vmand.mm v0, v10, v97285; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t7286; CHECK-NEXT: ret7287 %head = insertelement <1 x double> poison, double %b, i32 07288 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7289 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp7290 ret <1 x i1> %17291}7292 7293define <1 x i1> @fcmp_olt_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {7294; CHECK-LABEL: fcmp_olt_vv_v1f64:7295; CHECK: # %bb.0:7296; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7297; CHECK-NEXT: vmfeq.vv v10, v9, v97298; CHECK-NEXT: vmfeq.vv v11, v8, v87299; CHECK-NEXT: vmand.mm v0, v11, v107300; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t7301; CHECK-NEXT: ret7302 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp7303 ret <1 x i1> %17304}7305 7306define <1 x i1> @fcmp_olt_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {7307; CHECK-LABEL: fcmp_olt_vf_v1f64:7308; CHECK: # %bb.0:7309; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7310; CHECK-NEXT: vfmv.s.f v9, fa07311; CHECK-NEXT: vmfeq.vv v10, v8, v87312; CHECK-NEXT: vmfeq.vf v9, v9, fa07313; CHECK-NEXT: vmand.mm v0, v10, v97314; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t7315; CHECK-NEXT: ret7316 %head = insertelement <1 x double> poison, double %b, i32 07317 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7318 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp7319 ret <1 x i1> %17320}7321 7322define <1 x i1> @fcmp_olt_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {7323; CHECK-LABEL: fcmp_olt_fv_v1f64:7324; CHECK: # %bb.0:7325; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7326; CHECK-NEXT: vfmv.s.f v9, fa07327; CHECK-NEXT: vmfeq.vv v10, v8, v87328; CHECK-NEXT: vmfeq.vf v9, v9, fa07329; CHECK-NEXT: vmand.mm v0, v9, v107330; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t7331; CHECK-NEXT: ret7332 %head = insertelement <1 x double> poison, double %b, i32 07333 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7334 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp7335 ret <1 x i1> %17336}7337 7338define <1 x i1> @fcmp_ole_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {7339; CHECK-LABEL: fcmp_ole_vv_v1f64:7340; CHECK: # %bb.0:7341; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7342; CHECK-NEXT: vmfeq.vv v10, v9, v97343; CHECK-NEXT: vmfeq.vv v11, v8, v87344; CHECK-NEXT: vmand.mm v0, v11, v107345; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t7346; CHECK-NEXT: ret7347 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp7348 ret <1 x i1> %17349}7350 7351define <1 x i1> @fcmp_ole_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {7352; CHECK-LABEL: fcmp_ole_vf_v1f64:7353; CHECK: # %bb.0:7354; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7355; CHECK-NEXT: vfmv.s.f v9, fa07356; CHECK-NEXT: vmfeq.vv v10, v8, v87357; CHECK-NEXT: vmfeq.vf v9, v9, fa07358; CHECK-NEXT: vmand.mm v0, v10, v97359; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t7360; CHECK-NEXT: ret7361 %head = insertelement <1 x double> poison, double %b, i32 07362 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7363 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp7364 ret <1 x i1> %17365}7366 7367define <1 x i1> @fcmp_ole_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {7368; CHECK-LABEL: fcmp_ole_fv_v1f64:7369; CHECK: # %bb.0:7370; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7371; CHECK-NEXT: vfmv.s.f v9, fa07372; CHECK-NEXT: vmfeq.vv v10, v8, v87373; CHECK-NEXT: vmfeq.vf v9, v9, fa07374; CHECK-NEXT: vmand.mm v0, v9, v107375; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t7376; CHECK-NEXT: ret7377 %head = insertelement <1 x double> poison, double %b, i32 07378 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7379 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp7380 ret <1 x i1> %17381}7382 7383define <1 x i1> @fcmp_one_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {7384; CHECK-LABEL: fcmp_one_vv_v1f64:7385; CHECK: # %bb.0:7386; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7387; CHECK-NEXT: vmfeq.vv v10, v9, v97388; CHECK-NEXT: vmfeq.vv v11, v8, v87389; CHECK-NEXT: vmand.mm v0, v11, v107390; CHECK-NEXT: vmv.v.v v10, v07391; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t7392; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t7393; CHECK-NEXT: vmor.mm v0, v0, v107394; CHECK-NEXT: ret7395 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp7396 ret <1 x i1> %17397}7398 7399define <1 x i1> @fcmp_one_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {7400; CHECK-LABEL: fcmp_one_vf_v1f64:7401; CHECK: # %bb.0:7402; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7403; CHECK-NEXT: vfmv.s.f v9, fa07404; CHECK-NEXT: vmfeq.vv v10, v8, v87405; CHECK-NEXT: vmfeq.vf v9, v9, fa07406; CHECK-NEXT: vmand.mm v0, v10, v97407; CHECK-NEXT: vmv.v.v v9, v07408; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t7409; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t7410; CHECK-NEXT: vmor.mm v0, v0, v97411; CHECK-NEXT: ret7412 %head = insertelement <1 x double> poison, double %b, i32 07413 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7414 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp7415 ret <1 x i1> %17416}7417 7418define <1 x i1> @fcmp_one_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {7419; CHECK-LABEL: fcmp_one_fv_v1f64:7420; CHECK: # %bb.0:7421; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7422; CHECK-NEXT: vfmv.s.f v9, fa07423; CHECK-NEXT: vmfeq.vv v10, v8, v87424; CHECK-NEXT: vmfeq.vf v9, v9, fa07425; CHECK-NEXT: vmand.mm v0, v9, v107426; CHECK-NEXT: vmv.v.v v9, v07427; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t7428; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t7429; CHECK-NEXT: vmor.mm v0, v0, v97430; CHECK-NEXT: ret7431 %head = insertelement <1 x double> poison, double %b, i32 07432 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7433 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp7434 ret <1 x i1> %17435}7436 7437define <1 x i1> @fcmp_ord_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {7438; CHECK-LABEL: fcmp_ord_vv_v1f64:7439; CHECK: # %bb.0:7440; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma7441; CHECK-NEXT: vmfeq.vv v9, v9, v97442; CHECK-NEXT: vmfeq.vv v8, v8, v87443; CHECK-NEXT: vmand.mm v0, v8, v97444; CHECK-NEXT: ret7445 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp7446 ret <1 x i1> %17447}7448 7449define <1 x i1> @fcmp_ord_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {7450; CHECK-LABEL: fcmp_ord_vf_v1f64:7451; CHECK: # %bb.0:7452; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma7453; CHECK-NEXT: vfmv.s.f v9, fa07454; CHECK-NEXT: vmfeq.vf v9, v9, fa07455; CHECK-NEXT: vmfeq.vv v8, v8, v87456; CHECK-NEXT: vmand.mm v0, v8, v97457; CHECK-NEXT: ret7458 %head = insertelement <1 x double> poison, double %b, i32 07459 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7460 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp7461 ret <1 x i1> %17462}7463 7464define <1 x i1> @fcmp_ord_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {7465; CHECK-LABEL: fcmp_ord_fv_v1f64:7466; CHECK: # %bb.0:7467; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma7468; CHECK-NEXT: vfmv.s.f v9, fa07469; CHECK-NEXT: vmfeq.vf v9, v9, fa07470; CHECK-NEXT: vmfeq.vv v8, v8, v87471; CHECK-NEXT: vmand.mm v0, v9, v87472; CHECK-NEXT: ret7473 %head = insertelement <1 x double> poison, double %b, i32 07474 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7475 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp7476 ret <1 x i1> %17477}7478 7479define <1 x i1> @fcmp_ueq_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {7480; CHECK-LABEL: fcmp_ueq_vv_v1f64:7481; CHECK: # %bb.0:7482; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7483; CHECK-NEXT: vmfeq.vv v10, v9, v97484; CHECK-NEXT: vmfeq.vv v11, v8, v87485; CHECK-NEXT: vmand.mm v0, v11, v107486; CHECK-NEXT: vmv.v.v v10, v07487; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t7488; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t7489; CHECK-NEXT: vmnor.mm v0, v0, v107490; CHECK-NEXT: ret7491 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp7492 ret <1 x i1> %17493}7494 7495define <1 x i1> @fcmp_ueq_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {7496; CHECK-LABEL: fcmp_ueq_vf_v1f64:7497; CHECK: # %bb.0:7498; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7499; CHECK-NEXT: vfmv.s.f v9, fa07500; CHECK-NEXT: vmfeq.vv v10, v8, v87501; CHECK-NEXT: vmfeq.vf v9, v9, fa07502; CHECK-NEXT: vmand.mm v0, v10, v97503; CHECK-NEXT: vmv.v.v v9, v07504; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t7505; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t7506; CHECK-NEXT: vmnor.mm v0, v0, v97507; CHECK-NEXT: ret7508 %head = insertelement <1 x double> poison, double %b, i32 07509 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7510 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp7511 ret <1 x i1> %17512}7513 7514define <1 x i1> @fcmp_ueq_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {7515; CHECK-LABEL: fcmp_ueq_fv_v1f64:7516; CHECK: # %bb.0:7517; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7518; CHECK-NEXT: vfmv.s.f v9, fa07519; CHECK-NEXT: vmfeq.vv v10, v8, v87520; CHECK-NEXT: vmfeq.vf v9, v9, fa07521; CHECK-NEXT: vmand.mm v0, v9, v107522; CHECK-NEXT: vmv.v.v v9, v07523; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t7524; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t7525; CHECK-NEXT: vmnor.mm v0, v0, v97526; CHECK-NEXT: ret7527 %head = insertelement <1 x double> poison, double %b, i32 07528 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7529 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp7530 ret <1 x i1> %17531}7532 7533define <1 x i1> @fcmp_ugt_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {7534; CHECK-LABEL: fcmp_ugt_vv_v1f64:7535; CHECK: # %bb.0:7536; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7537; CHECK-NEXT: vmfeq.vv v10, v9, v97538; CHECK-NEXT: vmfeq.vv v11, v8, v87539; CHECK-NEXT: vmand.mm v0, v11, v107540; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t7541; CHECK-NEXT: vmnot.m v0, v07542; CHECK-NEXT: ret7543 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp7544 ret <1 x i1> %17545}7546 7547define <1 x i1> @fcmp_ugt_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {7548; CHECK-LABEL: fcmp_ugt_vf_v1f64:7549; CHECK: # %bb.0:7550; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7551; CHECK-NEXT: vfmv.s.f v9, fa07552; CHECK-NEXT: vmfeq.vv v10, v8, v87553; CHECK-NEXT: vmfeq.vf v9, v9, fa07554; CHECK-NEXT: vmand.mm v0, v10, v97555; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t7556; CHECK-NEXT: vmnot.m v0, v07557; CHECK-NEXT: ret7558 %head = insertelement <1 x double> poison, double %b, i32 07559 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7560 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp7561 ret <1 x i1> %17562}7563 7564define <1 x i1> @fcmp_ugt_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {7565; CHECK-LABEL: fcmp_ugt_fv_v1f64:7566; CHECK: # %bb.0:7567; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7568; CHECK-NEXT: vfmv.s.f v9, fa07569; CHECK-NEXT: vmfeq.vv v10, v8, v87570; CHECK-NEXT: vmfeq.vf v9, v9, fa07571; CHECK-NEXT: vmand.mm v0, v9, v107572; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t7573; CHECK-NEXT: vmnot.m v0, v07574; CHECK-NEXT: ret7575 %head = insertelement <1 x double> poison, double %b, i32 07576 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7577 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp7578 ret <1 x i1> %17579}7580 7581define <1 x i1> @fcmp_uge_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {7582; CHECK-LABEL: fcmp_uge_vv_v1f64:7583; CHECK: # %bb.0:7584; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7585; CHECK-NEXT: vmfeq.vv v10, v9, v97586; CHECK-NEXT: vmfeq.vv v11, v8, v87587; CHECK-NEXT: vmand.mm v0, v11, v107588; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t7589; CHECK-NEXT: vmnot.m v0, v07590; CHECK-NEXT: ret7591 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp7592 ret <1 x i1> %17593}7594 7595define <1 x i1> @fcmp_uge_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {7596; CHECK-LABEL: fcmp_uge_vf_v1f64:7597; CHECK: # %bb.0:7598; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7599; CHECK-NEXT: vfmv.s.f v9, fa07600; CHECK-NEXT: vmfeq.vv v10, v8, v87601; CHECK-NEXT: vmfeq.vf v9, v9, fa07602; CHECK-NEXT: vmand.mm v0, v10, v97603; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t7604; CHECK-NEXT: vmnot.m v0, v07605; CHECK-NEXT: ret7606 %head = insertelement <1 x double> poison, double %b, i32 07607 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7608 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp7609 ret <1 x i1> %17610}7611 7612define <1 x i1> @fcmp_uge_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {7613; CHECK-LABEL: fcmp_uge_fv_v1f64:7614; CHECK: # %bb.0:7615; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7616; CHECK-NEXT: vfmv.s.f v9, fa07617; CHECK-NEXT: vmfeq.vv v10, v8, v87618; CHECK-NEXT: vmfeq.vf v9, v9, fa07619; CHECK-NEXT: vmand.mm v0, v9, v107620; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t7621; CHECK-NEXT: vmnot.m v0, v07622; CHECK-NEXT: ret7623 %head = insertelement <1 x double> poison, double %b, i32 07624 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7625 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp7626 ret <1 x i1> %17627}7628 7629define <1 x i1> @fcmp_ult_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {7630; CHECK-LABEL: fcmp_ult_vv_v1f64:7631; CHECK: # %bb.0:7632; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7633; CHECK-NEXT: vmfeq.vv v10, v8, v87634; CHECK-NEXT: vmfeq.vv v11, v9, v97635; CHECK-NEXT: vmand.mm v0, v11, v107636; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t7637; CHECK-NEXT: vmnot.m v0, v07638; CHECK-NEXT: ret7639 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp7640 ret <1 x i1> %17641}7642 7643define <1 x i1> @fcmp_ult_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {7644; CHECK-LABEL: fcmp_ult_vf_v1f64:7645; CHECK: # %bb.0:7646; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7647; CHECK-NEXT: vfmv.s.f v9, fa07648; CHECK-NEXT: vmfeq.vv v10, v8, v87649; CHECK-NEXT: vmfeq.vf v9, v9, fa07650; CHECK-NEXT: vmand.mm v0, v9, v107651; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t7652; CHECK-NEXT: vmnot.m v0, v07653; CHECK-NEXT: ret7654 %head = insertelement <1 x double> poison, double %b, i32 07655 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7656 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp7657 ret <1 x i1> %17658}7659 7660define <1 x i1> @fcmp_ult_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {7661; CHECK-LABEL: fcmp_ult_fv_v1f64:7662; CHECK: # %bb.0:7663; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7664; CHECK-NEXT: vfmv.s.f v9, fa07665; CHECK-NEXT: vmfeq.vv v10, v8, v87666; CHECK-NEXT: vmfeq.vf v9, v9, fa07667; CHECK-NEXT: vmand.mm v0, v10, v97668; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t7669; CHECK-NEXT: vmnot.m v0, v07670; CHECK-NEXT: ret7671 %head = insertelement <1 x double> poison, double %b, i32 07672 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7673 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp7674 ret <1 x i1> %17675}7676 7677define <1 x i1> @fcmp_ule_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {7678; CHECK-LABEL: fcmp_ule_vv_v1f64:7679; CHECK: # %bb.0:7680; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7681; CHECK-NEXT: vmfeq.vv v10, v8, v87682; CHECK-NEXT: vmfeq.vv v11, v9, v97683; CHECK-NEXT: vmand.mm v0, v11, v107684; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t7685; CHECK-NEXT: vmnot.m v0, v07686; CHECK-NEXT: ret7687 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp7688 ret <1 x i1> %17689}7690 7691define <1 x i1> @fcmp_ule_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {7692; CHECK-LABEL: fcmp_ule_vf_v1f64:7693; CHECK: # %bb.0:7694; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7695; CHECK-NEXT: vfmv.s.f v9, fa07696; CHECK-NEXT: vmfeq.vv v10, v8, v87697; CHECK-NEXT: vmfeq.vf v9, v9, fa07698; CHECK-NEXT: vmand.mm v0, v9, v107699; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t7700; CHECK-NEXT: vmnot.m v0, v07701; CHECK-NEXT: ret7702 %head = insertelement <1 x double> poison, double %b, i32 07703 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7704 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp7705 ret <1 x i1> %17706}7707 7708define <1 x i1> @fcmp_ule_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {7709; CHECK-LABEL: fcmp_ule_fv_v1f64:7710; CHECK: # %bb.0:7711; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, mu7712; CHECK-NEXT: vfmv.s.f v9, fa07713; CHECK-NEXT: vmfeq.vv v10, v8, v87714; CHECK-NEXT: vmfeq.vf v9, v9, fa07715; CHECK-NEXT: vmand.mm v0, v10, v97716; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t7717; CHECK-NEXT: vmnot.m v0, v07718; CHECK-NEXT: ret7719 %head = insertelement <1 x double> poison, double %b, i32 07720 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7721 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp7722 ret <1 x i1> %17723}7724 7725define <1 x i1> @fcmp_une_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {7726; CHECK-LABEL: fcmp_une_vv_v1f64:7727; CHECK: # %bb.0:7728; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma7729; CHECK-NEXT: vmfne.vv v0, v8, v97730; CHECK-NEXT: ret7731 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp7732 ret <1 x i1> %17733}7734 7735define <1 x i1> @fcmp_une_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {7736; CHECK-LABEL: fcmp_une_vf_v1f64:7737; CHECK: # %bb.0:7738; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma7739; CHECK-NEXT: vmfne.vf v0, v8, fa07740; CHECK-NEXT: ret7741 %head = insertelement <1 x double> poison, double %b, i32 07742 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7743 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp7744 ret <1 x i1> %17745}7746 7747define <1 x i1> @fcmp_une_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {7748; CHECK-LABEL: fcmp_une_fv_v1f64:7749; CHECK: # %bb.0:7750; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma7751; CHECK-NEXT: vmfne.vf v0, v8, fa07752; CHECK-NEXT: ret7753 %head = insertelement <1 x double> poison, double %b, i32 07754 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7755 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp7756 ret <1 x i1> %17757}7758 7759define <1 x i1> @fcmp_uno_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {7760; CHECK-LABEL: fcmp_uno_vv_v1f64:7761; CHECK: # %bb.0:7762; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma7763; CHECK-NEXT: vmfne.vv v9, v9, v97764; CHECK-NEXT: vmfne.vv v8, v8, v87765; CHECK-NEXT: vmor.mm v0, v8, v97766; CHECK-NEXT: ret7767 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp7768 ret <1 x i1> %17769}7770 7771define <1 x i1> @fcmp_uno_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {7772; CHECK-LABEL: fcmp_uno_vf_v1f64:7773; CHECK: # %bb.0:7774; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma7775; CHECK-NEXT: vfmv.s.f v9, fa07776; CHECK-NEXT: vmfne.vf v9, v9, fa07777; CHECK-NEXT: vmfne.vv v8, v8, v87778; CHECK-NEXT: vmor.mm v0, v8, v97779; CHECK-NEXT: ret7780 %head = insertelement <1 x double> poison, double %b, i32 07781 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7782 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp7783 ret <1 x i1> %17784}7785 7786define <1 x i1> @fcmp_uno_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {7787; CHECK-LABEL: fcmp_uno_fv_v1f64:7788; CHECK: # %bb.0:7789; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma7790; CHECK-NEXT: vfmv.s.f v9, fa07791; CHECK-NEXT: vmfne.vf v9, v9, fa07792; CHECK-NEXT: vmfne.vv v8, v8, v87793; CHECK-NEXT: vmor.mm v0, v9, v87794; CHECK-NEXT: ret7795 %head = insertelement <1 x double> poison, double %b, i32 07796 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer7797 %1 = call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp7798 ret <1 x i1> %17799}7800 7801define <2 x i1> @fcmp_oeq_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {7802; CHECK-LABEL: fcmp_oeq_vv_v2f64:7803; CHECK: # %bb.0:7804; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma7805; CHECK-NEXT: vmfeq.vv v0, v8, v97806; CHECK-NEXT: ret7807 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp7808 ret <2 x i1> %17809}7810 7811define <2 x i1> @fcmp_oeq_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {7812; CHECK-LABEL: fcmp_oeq_vf_v2f64:7813; CHECK: # %bb.0:7814; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma7815; CHECK-NEXT: vmfeq.vf v0, v8, fa07816; CHECK-NEXT: ret7817 %head = insertelement <2 x double> poison, double %b, i32 07818 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer7819 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp7820 ret <2 x i1> %17821}7822 7823define <2 x i1> @fcmp_oeq_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {7824; CHECK-LABEL: fcmp_oeq_fv_v2f64:7825; CHECK: # %bb.0:7826; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma7827; CHECK-NEXT: vmfeq.vf v0, v8, fa07828; CHECK-NEXT: ret7829 %head = insertelement <2 x double> poison, double %b, i32 07830 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer7831 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp7832 ret <2 x i1> %17833}7834 7835define <2 x i1> @fcmp_ogt_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {7836; CHECK-LABEL: fcmp_ogt_vv_v2f64:7837; CHECK: # %bb.0:7838; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu7839; CHECK-NEXT: vmfeq.vv v10, v8, v87840; CHECK-NEXT: vmfeq.vv v11, v9, v97841; CHECK-NEXT: vmand.mm v0, v11, v107842; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t7843; CHECK-NEXT: ret7844 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp7845 ret <2 x i1> %17846}7847 7848define <2 x i1> @fcmp_ogt_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {7849; CHECK-LABEL: fcmp_ogt_vf_v2f64:7850; CHECK: # %bb.0:7851; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu7852; CHECK-NEXT: vfmv.v.f v9, fa07853; CHECK-NEXT: vmfeq.vv v10, v8, v87854; CHECK-NEXT: vmfeq.vf v9, v9, fa07855; CHECK-NEXT: vmand.mm v0, v9, v107856; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t7857; CHECK-NEXT: ret7858 %head = insertelement <2 x double> poison, double %b, i32 07859 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer7860 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp7861 ret <2 x i1> %17862}7863 7864define <2 x i1> @fcmp_ogt_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {7865; CHECK-LABEL: fcmp_ogt_fv_v2f64:7866; CHECK: # %bb.0:7867; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu7868; CHECK-NEXT: vfmv.v.f v9, fa07869; CHECK-NEXT: vmfeq.vv v10, v8, v87870; CHECK-NEXT: vmfeq.vf v9, v9, fa07871; CHECK-NEXT: vmand.mm v0, v10, v97872; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t7873; CHECK-NEXT: ret7874 %head = insertelement <2 x double> poison, double %b, i32 07875 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer7876 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp7877 ret <2 x i1> %17878}7879 7880define <2 x i1> @fcmp_oge_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {7881; CHECK-LABEL: fcmp_oge_vv_v2f64:7882; CHECK: # %bb.0:7883; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu7884; CHECK-NEXT: vmfeq.vv v10, v8, v87885; CHECK-NEXT: vmfeq.vv v11, v9, v97886; CHECK-NEXT: vmand.mm v0, v11, v107887; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t7888; CHECK-NEXT: ret7889 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp7890 ret <2 x i1> %17891}7892 7893define <2 x i1> @fcmp_oge_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {7894; CHECK-LABEL: fcmp_oge_vf_v2f64:7895; CHECK: # %bb.0:7896; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu7897; CHECK-NEXT: vfmv.v.f v9, fa07898; CHECK-NEXT: vmfeq.vv v10, v8, v87899; CHECK-NEXT: vmfeq.vf v9, v9, fa07900; CHECK-NEXT: vmand.mm v0, v9, v107901; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t7902; CHECK-NEXT: ret7903 %head = insertelement <2 x double> poison, double %b, i32 07904 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer7905 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp7906 ret <2 x i1> %17907}7908 7909define <2 x i1> @fcmp_oge_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {7910; CHECK-LABEL: fcmp_oge_fv_v2f64:7911; CHECK: # %bb.0:7912; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu7913; CHECK-NEXT: vfmv.v.f v9, fa07914; CHECK-NEXT: vmfeq.vv v10, v8, v87915; CHECK-NEXT: vmfeq.vf v9, v9, fa07916; CHECK-NEXT: vmand.mm v0, v10, v97917; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t7918; CHECK-NEXT: ret7919 %head = insertelement <2 x double> poison, double %b, i32 07920 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer7921 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp7922 ret <2 x i1> %17923}7924 7925define <2 x i1> @fcmp_olt_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {7926; CHECK-LABEL: fcmp_olt_vv_v2f64:7927; CHECK: # %bb.0:7928; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu7929; CHECK-NEXT: vmfeq.vv v10, v9, v97930; CHECK-NEXT: vmfeq.vv v11, v8, v87931; CHECK-NEXT: vmand.mm v0, v11, v107932; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t7933; CHECK-NEXT: ret7934 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp7935 ret <2 x i1> %17936}7937 7938define <2 x i1> @fcmp_olt_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {7939; CHECK-LABEL: fcmp_olt_vf_v2f64:7940; CHECK: # %bb.0:7941; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu7942; CHECK-NEXT: vfmv.v.f v9, fa07943; CHECK-NEXT: vmfeq.vv v10, v8, v87944; CHECK-NEXT: vmfeq.vf v9, v9, fa07945; CHECK-NEXT: vmand.mm v0, v10, v97946; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t7947; CHECK-NEXT: ret7948 %head = insertelement <2 x double> poison, double %b, i32 07949 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer7950 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp7951 ret <2 x i1> %17952}7953 7954define <2 x i1> @fcmp_olt_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {7955; CHECK-LABEL: fcmp_olt_fv_v2f64:7956; CHECK: # %bb.0:7957; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu7958; CHECK-NEXT: vfmv.v.f v9, fa07959; CHECK-NEXT: vmfeq.vv v10, v8, v87960; CHECK-NEXT: vmfeq.vf v9, v9, fa07961; CHECK-NEXT: vmand.mm v0, v9, v107962; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t7963; CHECK-NEXT: ret7964 %head = insertelement <2 x double> poison, double %b, i32 07965 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer7966 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp7967 ret <2 x i1> %17968}7969 7970define <2 x i1> @fcmp_ole_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {7971; CHECK-LABEL: fcmp_ole_vv_v2f64:7972; CHECK: # %bb.0:7973; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu7974; CHECK-NEXT: vmfeq.vv v10, v9, v97975; CHECK-NEXT: vmfeq.vv v11, v8, v87976; CHECK-NEXT: vmand.mm v0, v11, v107977; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t7978; CHECK-NEXT: ret7979 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp7980 ret <2 x i1> %17981}7982 7983define <2 x i1> @fcmp_ole_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {7984; CHECK-LABEL: fcmp_ole_vf_v2f64:7985; CHECK: # %bb.0:7986; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu7987; CHECK-NEXT: vfmv.v.f v9, fa07988; CHECK-NEXT: vmfeq.vv v10, v8, v87989; CHECK-NEXT: vmfeq.vf v9, v9, fa07990; CHECK-NEXT: vmand.mm v0, v10, v97991; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t7992; CHECK-NEXT: ret7993 %head = insertelement <2 x double> poison, double %b, i32 07994 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer7995 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp7996 ret <2 x i1> %17997}7998 7999define <2 x i1> @fcmp_ole_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {8000; CHECK-LABEL: fcmp_ole_fv_v2f64:8001; CHECK: # %bb.0:8002; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu8003; CHECK-NEXT: vfmv.v.f v9, fa08004; CHECK-NEXT: vmfeq.vv v10, v8, v88005; CHECK-NEXT: vmfeq.vf v9, v9, fa08006; CHECK-NEXT: vmand.mm v0, v9, v108007; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t8008; CHECK-NEXT: ret8009 %head = insertelement <2 x double> poison, double %b, i32 08010 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer8011 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp8012 ret <2 x i1> %18013}8014 8015define <2 x i1> @fcmp_one_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {8016; CHECK-LABEL: fcmp_one_vv_v2f64:8017; CHECK: # %bb.0:8018; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu8019; CHECK-NEXT: vmfeq.vv v10, v9, v98020; CHECK-NEXT: vmfeq.vv v11, v8, v88021; CHECK-NEXT: vmand.mm v0, v11, v108022; CHECK-NEXT: vmv.v.v v10, v08023; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t8024; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t8025; CHECK-NEXT: vmor.mm v0, v0, v108026; CHECK-NEXT: ret8027 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp8028 ret <2 x i1> %18029}8030 8031define <2 x i1> @fcmp_one_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {8032; CHECK-LABEL: fcmp_one_vf_v2f64:8033; CHECK: # %bb.0:8034; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu8035; CHECK-NEXT: vfmv.v.f v9, fa08036; CHECK-NEXT: vmfeq.vv v10, v8, v88037; CHECK-NEXT: vmfeq.vf v9, v9, fa08038; CHECK-NEXT: vmand.mm v0, v10, v98039; CHECK-NEXT: vmv.v.v v9, v08040; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t8041; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t8042; CHECK-NEXT: vmor.mm v0, v0, v98043; CHECK-NEXT: ret8044 %head = insertelement <2 x double> poison, double %b, i32 08045 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer8046 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp8047 ret <2 x i1> %18048}8049 8050define <2 x i1> @fcmp_one_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {8051; CHECK-LABEL: fcmp_one_fv_v2f64:8052; CHECK: # %bb.0:8053; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu8054; CHECK-NEXT: vfmv.v.f v9, fa08055; CHECK-NEXT: vmfeq.vv v10, v8, v88056; CHECK-NEXT: vmfeq.vf v9, v9, fa08057; CHECK-NEXT: vmand.mm v0, v9, v108058; CHECK-NEXT: vmv.v.v v9, v08059; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t8060; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t8061; CHECK-NEXT: vmor.mm v0, v0, v98062; CHECK-NEXT: ret8063 %head = insertelement <2 x double> poison, double %b, i32 08064 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer8065 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp8066 ret <2 x i1> %18067}8068 8069define <2 x i1> @fcmp_ord_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {8070; CHECK-LABEL: fcmp_ord_vv_v2f64:8071; CHECK: # %bb.0:8072; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma8073; CHECK-NEXT: vmfeq.vv v9, v9, v98074; CHECK-NEXT: vmfeq.vv v8, v8, v88075; CHECK-NEXT: vmand.mm v0, v8, v98076; CHECK-NEXT: ret8077 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp8078 ret <2 x i1> %18079}8080 8081define <2 x i1> @fcmp_ord_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {8082; CHECK-LABEL: fcmp_ord_vf_v2f64:8083; CHECK: # %bb.0:8084; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma8085; CHECK-NEXT: vfmv.v.f v9, fa08086; CHECK-NEXT: vmfeq.vf v9, v9, fa08087; CHECK-NEXT: vmfeq.vv v8, v8, v88088; CHECK-NEXT: vmand.mm v0, v8, v98089; CHECK-NEXT: ret8090 %head = insertelement <2 x double> poison, double %b, i32 08091 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer8092 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp8093 ret <2 x i1> %18094}8095 8096define <2 x i1> @fcmp_ord_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {8097; CHECK-LABEL: fcmp_ord_fv_v2f64:8098; CHECK: # %bb.0:8099; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma8100; CHECK-NEXT: vfmv.v.f v9, fa08101; CHECK-NEXT: vmfeq.vf v9, v9, fa08102; CHECK-NEXT: vmfeq.vv v8, v8, v88103; CHECK-NEXT: vmand.mm v0, v9, v88104; CHECK-NEXT: ret8105 %head = insertelement <2 x double> poison, double %b, i32 08106 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer8107 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp8108 ret <2 x i1> %18109}8110 8111define <2 x i1> @fcmp_ueq_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {8112; CHECK-LABEL: fcmp_ueq_vv_v2f64:8113; CHECK: # %bb.0:8114; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu8115; CHECK-NEXT: vmfeq.vv v10, v9, v98116; CHECK-NEXT: vmfeq.vv v11, v8, v88117; CHECK-NEXT: vmand.mm v0, v11, v108118; CHECK-NEXT: vmv.v.v v10, v08119; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t8120; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t8121; CHECK-NEXT: vmnor.mm v0, v0, v108122; CHECK-NEXT: ret8123 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp8124 ret <2 x i1> %18125}8126 8127define <2 x i1> @fcmp_ueq_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {8128; CHECK-LABEL: fcmp_ueq_vf_v2f64:8129; CHECK: # %bb.0:8130; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu8131; CHECK-NEXT: vfmv.v.f v9, fa08132; CHECK-NEXT: vmfeq.vv v10, v8, v88133; CHECK-NEXT: vmfeq.vf v9, v9, fa08134; CHECK-NEXT: vmand.mm v0, v10, v98135; CHECK-NEXT: vmv.v.v v9, v08136; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t8137; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t8138; CHECK-NEXT: vmnor.mm v0, v0, v98139; CHECK-NEXT: ret8140 %head = insertelement <2 x double> poison, double %b, i32 08141 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer8142 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp8143 ret <2 x i1> %18144}8145 8146define <2 x i1> @fcmp_ueq_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {8147; CHECK-LABEL: fcmp_ueq_fv_v2f64:8148; CHECK: # %bb.0:8149; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu8150; CHECK-NEXT: vfmv.v.f v9, fa08151; CHECK-NEXT: vmfeq.vv v10, v8, v88152; CHECK-NEXT: vmfeq.vf v9, v9, fa08153; CHECK-NEXT: vmand.mm v0, v9, v108154; CHECK-NEXT: vmv.v.v v9, v08155; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t8156; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t8157; CHECK-NEXT: vmnor.mm v0, v0, v98158; CHECK-NEXT: ret8159 %head = insertelement <2 x double> poison, double %b, i32 08160 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer8161 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp8162 ret <2 x i1> %18163}8164 8165define <2 x i1> @fcmp_ugt_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {8166; CHECK-LABEL: fcmp_ugt_vv_v2f64:8167; CHECK: # %bb.0:8168; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu8169; CHECK-NEXT: vmfeq.vv v10, v9, v98170; CHECK-NEXT: vmfeq.vv v11, v8, v88171; CHECK-NEXT: vmand.mm v0, v11, v108172; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t8173; CHECK-NEXT: vmnot.m v0, v08174; CHECK-NEXT: ret8175 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp8176 ret <2 x i1> %18177}8178 8179define <2 x i1> @fcmp_ugt_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {8180; CHECK-LABEL: fcmp_ugt_vf_v2f64:8181; CHECK: # %bb.0:8182; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu8183; CHECK-NEXT: vfmv.v.f v9, fa08184; CHECK-NEXT: vmfeq.vv v10, v8, v88185; CHECK-NEXT: vmfeq.vf v9, v9, fa08186; CHECK-NEXT: vmand.mm v0, v10, v98187; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t8188; CHECK-NEXT: vmnot.m v0, v08189; CHECK-NEXT: ret8190 %head = insertelement <2 x double> poison, double %b, i32 08191 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer8192 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp8193 ret <2 x i1> %18194}8195 8196define <2 x i1> @fcmp_ugt_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {8197; CHECK-LABEL: fcmp_ugt_fv_v2f64:8198; CHECK: # %bb.0:8199; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu8200; CHECK-NEXT: vfmv.v.f v9, fa08201; CHECK-NEXT: vmfeq.vv v10, v8, v88202; CHECK-NEXT: vmfeq.vf v9, v9, fa08203; CHECK-NEXT: vmand.mm v0, v9, v108204; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t8205; CHECK-NEXT: vmnot.m v0, v08206; CHECK-NEXT: ret8207 %head = insertelement <2 x double> poison, double %b, i32 08208 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer8209 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp8210 ret <2 x i1> %18211}8212 8213define <2 x i1> @fcmp_uge_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {8214; CHECK-LABEL: fcmp_uge_vv_v2f64:8215; CHECK: # %bb.0:8216; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu8217; CHECK-NEXT: vmfeq.vv v10, v9, v98218; CHECK-NEXT: vmfeq.vv v11, v8, v88219; CHECK-NEXT: vmand.mm v0, v11, v108220; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t8221; CHECK-NEXT: vmnot.m v0, v08222; CHECK-NEXT: ret8223 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp8224 ret <2 x i1> %18225}8226 8227define <2 x i1> @fcmp_uge_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {8228; CHECK-LABEL: fcmp_uge_vf_v2f64:8229; CHECK: # %bb.0:8230; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu8231; CHECK-NEXT: vfmv.v.f v9, fa08232; CHECK-NEXT: vmfeq.vv v10, v8, v88233; CHECK-NEXT: vmfeq.vf v9, v9, fa08234; CHECK-NEXT: vmand.mm v0, v10, v98235; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t8236; CHECK-NEXT: vmnot.m v0, v08237; CHECK-NEXT: ret8238 %head = insertelement <2 x double> poison, double %b, i32 08239 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer8240 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp8241 ret <2 x i1> %18242}8243 8244define <2 x i1> @fcmp_uge_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {8245; CHECK-LABEL: fcmp_uge_fv_v2f64:8246; CHECK: # %bb.0:8247; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu8248; CHECK-NEXT: vfmv.v.f v9, fa08249; CHECK-NEXT: vmfeq.vv v10, v8, v88250; CHECK-NEXT: vmfeq.vf v9, v9, fa08251; CHECK-NEXT: vmand.mm v0, v9, v108252; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t8253; CHECK-NEXT: vmnot.m v0, v08254; CHECK-NEXT: ret8255 %head = insertelement <2 x double> poison, double %b, i32 08256 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer8257 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp8258 ret <2 x i1> %18259}8260 8261define <2 x i1> @fcmp_ult_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {8262; CHECK-LABEL: fcmp_ult_vv_v2f64:8263; CHECK: # %bb.0:8264; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu8265; CHECK-NEXT: vmfeq.vv v10, v8, v88266; CHECK-NEXT: vmfeq.vv v11, v9, v98267; CHECK-NEXT: vmand.mm v0, v11, v108268; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t8269; CHECK-NEXT: vmnot.m v0, v08270; CHECK-NEXT: ret8271 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp8272 ret <2 x i1> %18273}8274 8275define <2 x i1> @fcmp_ult_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {8276; CHECK-LABEL: fcmp_ult_vf_v2f64:8277; CHECK: # %bb.0:8278; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu8279; CHECK-NEXT: vfmv.v.f v9, fa08280; CHECK-NEXT: vmfeq.vv v10, v8, v88281; CHECK-NEXT: vmfeq.vf v9, v9, fa08282; CHECK-NEXT: vmand.mm v0, v9, v108283; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t8284; CHECK-NEXT: vmnot.m v0, v08285; CHECK-NEXT: ret8286 %head = insertelement <2 x double> poison, double %b, i32 08287 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer8288 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp8289 ret <2 x i1> %18290}8291 8292define <2 x i1> @fcmp_ult_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {8293; CHECK-LABEL: fcmp_ult_fv_v2f64:8294; CHECK: # %bb.0:8295; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu8296; CHECK-NEXT: vfmv.v.f v9, fa08297; CHECK-NEXT: vmfeq.vv v10, v8, v88298; CHECK-NEXT: vmfeq.vf v9, v9, fa08299; CHECK-NEXT: vmand.mm v0, v10, v98300; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t8301; CHECK-NEXT: vmnot.m v0, v08302; CHECK-NEXT: ret8303 %head = insertelement <2 x double> poison, double %b, i32 08304 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer8305 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp8306 ret <2 x i1> %18307}8308 8309define <2 x i1> @fcmp_ule_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {8310; CHECK-LABEL: fcmp_ule_vv_v2f64:8311; CHECK: # %bb.0:8312; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu8313; CHECK-NEXT: vmfeq.vv v10, v8, v88314; CHECK-NEXT: vmfeq.vv v11, v9, v98315; CHECK-NEXT: vmand.mm v0, v11, v108316; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t8317; CHECK-NEXT: vmnot.m v0, v08318; CHECK-NEXT: ret8319 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp8320 ret <2 x i1> %18321}8322 8323define <2 x i1> @fcmp_ule_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {8324; CHECK-LABEL: fcmp_ule_vf_v2f64:8325; CHECK: # %bb.0:8326; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu8327; CHECK-NEXT: vfmv.v.f v9, fa08328; CHECK-NEXT: vmfeq.vv v10, v8, v88329; CHECK-NEXT: vmfeq.vf v9, v9, fa08330; CHECK-NEXT: vmand.mm v0, v9, v108331; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t8332; CHECK-NEXT: vmnot.m v0, v08333; CHECK-NEXT: ret8334 %head = insertelement <2 x double> poison, double %b, i32 08335 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer8336 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp8337 ret <2 x i1> %18338}8339 8340define <2 x i1> @fcmp_ule_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {8341; CHECK-LABEL: fcmp_ule_fv_v2f64:8342; CHECK: # %bb.0:8343; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu8344; CHECK-NEXT: vfmv.v.f v9, fa08345; CHECK-NEXT: vmfeq.vv v10, v8, v88346; CHECK-NEXT: vmfeq.vf v9, v9, fa08347; CHECK-NEXT: vmand.mm v0, v10, v98348; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t8349; CHECK-NEXT: vmnot.m v0, v08350; CHECK-NEXT: ret8351 %head = insertelement <2 x double> poison, double %b, i32 08352 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer8353 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp8354 ret <2 x i1> %18355}8356 8357define <2 x i1> @fcmp_une_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {8358; CHECK-LABEL: fcmp_une_vv_v2f64:8359; CHECK: # %bb.0:8360; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma8361; CHECK-NEXT: vmfne.vv v0, v8, v98362; CHECK-NEXT: ret8363 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp8364 ret <2 x i1> %18365}8366 8367define <2 x i1> @fcmp_une_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {8368; CHECK-LABEL: fcmp_une_vf_v2f64:8369; CHECK: # %bb.0:8370; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma8371; CHECK-NEXT: vmfne.vf v0, v8, fa08372; CHECK-NEXT: ret8373 %head = insertelement <2 x double> poison, double %b, i32 08374 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer8375 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp8376 ret <2 x i1> %18377}8378 8379define <2 x i1> @fcmp_une_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {8380; CHECK-LABEL: fcmp_une_fv_v2f64:8381; CHECK: # %bb.0:8382; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma8383; CHECK-NEXT: vmfne.vf v0, v8, fa08384; CHECK-NEXT: ret8385 %head = insertelement <2 x double> poison, double %b, i32 08386 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer8387 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp8388 ret <2 x i1> %18389}8390 8391define <2 x i1> @fcmp_uno_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {8392; CHECK-LABEL: fcmp_uno_vv_v2f64:8393; CHECK: # %bb.0:8394; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma8395; CHECK-NEXT: vmfne.vv v9, v9, v98396; CHECK-NEXT: vmfne.vv v8, v8, v88397; CHECK-NEXT: vmor.mm v0, v8, v98398; CHECK-NEXT: ret8399 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp8400 ret <2 x i1> %18401}8402 8403define <2 x i1> @fcmp_uno_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {8404; CHECK-LABEL: fcmp_uno_vf_v2f64:8405; CHECK: # %bb.0:8406; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma8407; CHECK-NEXT: vfmv.v.f v9, fa08408; CHECK-NEXT: vmfne.vf v9, v9, fa08409; CHECK-NEXT: vmfne.vv v8, v8, v88410; CHECK-NEXT: vmor.mm v0, v8, v98411; CHECK-NEXT: ret8412 %head = insertelement <2 x double> poison, double %b, i32 08413 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer8414 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp8415 ret <2 x i1> %18416}8417 8418define <2 x i1> @fcmp_uno_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {8419; CHECK-LABEL: fcmp_uno_fv_v2f64:8420; CHECK: # %bb.0:8421; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma8422; CHECK-NEXT: vfmv.v.f v9, fa08423; CHECK-NEXT: vmfne.vf v9, v9, fa08424; CHECK-NEXT: vmfne.vv v8, v8, v88425; CHECK-NEXT: vmor.mm v0, v9, v88426; CHECK-NEXT: ret8427 %head = insertelement <2 x double> poison, double %b, i32 08428 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer8429 %1 = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp8430 ret <2 x i1> %18431}8432 8433define <4 x i1> @fcmp_oeq_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {8434; CHECK-LABEL: fcmp_oeq_vv_v4f64:8435; CHECK: # %bb.0:8436; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma8437; CHECK-NEXT: vmfeq.vv v0, v8, v108438; CHECK-NEXT: ret8439 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp8440 ret <4 x i1> %18441}8442 8443define <4 x i1> @fcmp_oeq_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {8444; CHECK-LABEL: fcmp_oeq_vf_v4f64:8445; CHECK: # %bb.0:8446; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma8447; CHECK-NEXT: vmfeq.vf v0, v8, fa08448; CHECK-NEXT: ret8449 %head = insertelement <4 x double> poison, double %b, i32 08450 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer8451 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp8452 ret <4 x i1> %18453}8454 8455define <4 x i1> @fcmp_oeq_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {8456; CHECK-LABEL: fcmp_oeq_fv_v4f64:8457; CHECK: # %bb.0:8458; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma8459; CHECK-NEXT: vmfeq.vf v0, v8, fa08460; CHECK-NEXT: ret8461 %head = insertelement <4 x double> poison, double %b, i32 08462 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer8463 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp8464 ret <4 x i1> %18465}8466 8467define <4 x i1> @fcmp_ogt_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {8468; CHECK-LABEL: fcmp_ogt_vv_v4f64:8469; CHECK: # %bb.0:8470; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8471; CHECK-NEXT: vmfeq.vv v12, v8, v88472; CHECK-NEXT: vmfeq.vv v13, v10, v108473; CHECK-NEXT: vmand.mm v12, v13, v128474; CHECK-NEXT: vmv1r.v v0, v128475; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t8476; CHECK-NEXT: vmv1r.v v0, v128477; CHECK-NEXT: ret8478 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp8479 ret <4 x i1> %18480}8481 8482define <4 x i1> @fcmp_ogt_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {8483; CHECK-LABEL: fcmp_ogt_vf_v4f64:8484; CHECK: # %bb.0:8485; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8486; CHECK-NEXT: vfmv.v.f v10, fa08487; CHECK-NEXT: vmfeq.vf v12, v10, fa08488; CHECK-NEXT: vmfeq.vv v10, v8, v88489; CHECK-NEXT: vmand.mm v10, v12, v108490; CHECK-NEXT: vmv1r.v v0, v108491; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t8492; CHECK-NEXT: vmv1r.v v0, v108493; CHECK-NEXT: ret8494 %head = insertelement <4 x double> poison, double %b, i32 08495 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer8496 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp8497 ret <4 x i1> %18498}8499 8500define <4 x i1> @fcmp_ogt_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {8501; CHECK-LABEL: fcmp_ogt_fv_v4f64:8502; CHECK: # %bb.0:8503; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8504; CHECK-NEXT: vfmv.v.f v10, fa08505; CHECK-NEXT: vmfeq.vf v12, v10, fa08506; CHECK-NEXT: vmfeq.vv v10, v8, v88507; CHECK-NEXT: vmand.mm v10, v10, v128508; CHECK-NEXT: vmv1r.v v0, v108509; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t8510; CHECK-NEXT: vmv1r.v v0, v108511; CHECK-NEXT: ret8512 %head = insertelement <4 x double> poison, double %b, i32 08513 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer8514 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp8515 ret <4 x i1> %18516}8517 8518define <4 x i1> @fcmp_oge_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {8519; CHECK-LABEL: fcmp_oge_vv_v4f64:8520; CHECK: # %bb.0:8521; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8522; CHECK-NEXT: vmfeq.vv v12, v8, v88523; CHECK-NEXT: vmfeq.vv v13, v10, v108524; CHECK-NEXT: vmand.mm v12, v13, v128525; CHECK-NEXT: vmv1r.v v0, v128526; CHECK-NEXT: vmfle.vv v12, v10, v8, v0.t8527; CHECK-NEXT: vmv1r.v v0, v128528; CHECK-NEXT: ret8529 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp8530 ret <4 x i1> %18531}8532 8533define <4 x i1> @fcmp_oge_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {8534; CHECK-LABEL: fcmp_oge_vf_v4f64:8535; CHECK: # %bb.0:8536; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8537; CHECK-NEXT: vfmv.v.f v10, fa08538; CHECK-NEXT: vmfeq.vf v12, v10, fa08539; CHECK-NEXT: vmfeq.vv v10, v8, v88540; CHECK-NEXT: vmand.mm v10, v12, v108541; CHECK-NEXT: vmv1r.v v0, v108542; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t8543; CHECK-NEXT: vmv1r.v v0, v108544; CHECK-NEXT: ret8545 %head = insertelement <4 x double> poison, double %b, i32 08546 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer8547 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp8548 ret <4 x i1> %18549}8550 8551define <4 x i1> @fcmp_oge_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {8552; CHECK-LABEL: fcmp_oge_fv_v4f64:8553; CHECK: # %bb.0:8554; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8555; CHECK-NEXT: vfmv.v.f v10, fa08556; CHECK-NEXT: vmfeq.vf v12, v10, fa08557; CHECK-NEXT: vmfeq.vv v10, v8, v88558; CHECK-NEXT: vmand.mm v10, v10, v128559; CHECK-NEXT: vmv1r.v v0, v108560; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t8561; CHECK-NEXT: vmv1r.v v0, v108562; CHECK-NEXT: ret8563 %head = insertelement <4 x double> poison, double %b, i32 08564 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer8565 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp8566 ret <4 x i1> %18567}8568 8569define <4 x i1> @fcmp_olt_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {8570; CHECK-LABEL: fcmp_olt_vv_v4f64:8571; CHECK: # %bb.0:8572; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8573; CHECK-NEXT: vmfeq.vv v12, v10, v108574; CHECK-NEXT: vmfeq.vv v13, v8, v88575; CHECK-NEXT: vmand.mm v12, v13, v128576; CHECK-NEXT: vmv1r.v v0, v128577; CHECK-NEXT: vmflt.vv v12, v8, v10, v0.t8578; CHECK-NEXT: vmv1r.v v0, v128579; CHECK-NEXT: ret8580 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp8581 ret <4 x i1> %18582}8583 8584define <4 x i1> @fcmp_olt_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {8585; CHECK-LABEL: fcmp_olt_vf_v4f64:8586; CHECK: # %bb.0:8587; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8588; CHECK-NEXT: vfmv.v.f v10, fa08589; CHECK-NEXT: vmfeq.vf v12, v10, fa08590; CHECK-NEXT: vmfeq.vv v10, v8, v88591; CHECK-NEXT: vmand.mm v10, v10, v128592; CHECK-NEXT: vmv1r.v v0, v108593; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t8594; CHECK-NEXT: vmv1r.v v0, v108595; CHECK-NEXT: ret8596 %head = insertelement <4 x double> poison, double %b, i32 08597 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer8598 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp8599 ret <4 x i1> %18600}8601 8602define <4 x i1> @fcmp_olt_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {8603; CHECK-LABEL: fcmp_olt_fv_v4f64:8604; CHECK: # %bb.0:8605; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8606; CHECK-NEXT: vfmv.v.f v10, fa08607; CHECK-NEXT: vmfeq.vf v12, v10, fa08608; CHECK-NEXT: vmfeq.vv v10, v8, v88609; CHECK-NEXT: vmand.mm v10, v12, v108610; CHECK-NEXT: vmv1r.v v0, v108611; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t8612; CHECK-NEXT: vmv1r.v v0, v108613; CHECK-NEXT: ret8614 %head = insertelement <4 x double> poison, double %b, i32 08615 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer8616 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp8617 ret <4 x i1> %18618}8619 8620define <4 x i1> @fcmp_ole_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {8621; CHECK-LABEL: fcmp_ole_vv_v4f64:8622; CHECK: # %bb.0:8623; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8624; CHECK-NEXT: vmfeq.vv v12, v10, v108625; CHECK-NEXT: vmfeq.vv v13, v8, v88626; CHECK-NEXT: vmand.mm v12, v13, v128627; CHECK-NEXT: vmv1r.v v0, v128628; CHECK-NEXT: vmfle.vv v12, v8, v10, v0.t8629; CHECK-NEXT: vmv1r.v v0, v128630; CHECK-NEXT: ret8631 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp8632 ret <4 x i1> %18633}8634 8635define <4 x i1> @fcmp_ole_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {8636; CHECK-LABEL: fcmp_ole_vf_v4f64:8637; CHECK: # %bb.0:8638; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8639; CHECK-NEXT: vfmv.v.f v10, fa08640; CHECK-NEXT: vmfeq.vf v12, v10, fa08641; CHECK-NEXT: vmfeq.vv v10, v8, v88642; CHECK-NEXT: vmand.mm v10, v10, v128643; CHECK-NEXT: vmv1r.v v0, v108644; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t8645; CHECK-NEXT: vmv1r.v v0, v108646; CHECK-NEXT: ret8647 %head = insertelement <4 x double> poison, double %b, i32 08648 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer8649 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp8650 ret <4 x i1> %18651}8652 8653define <4 x i1> @fcmp_ole_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {8654; CHECK-LABEL: fcmp_ole_fv_v4f64:8655; CHECK: # %bb.0:8656; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8657; CHECK-NEXT: vfmv.v.f v10, fa08658; CHECK-NEXT: vmfeq.vf v12, v10, fa08659; CHECK-NEXT: vmfeq.vv v10, v8, v88660; CHECK-NEXT: vmand.mm v10, v12, v108661; CHECK-NEXT: vmv1r.v v0, v108662; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t8663; CHECK-NEXT: vmv1r.v v0, v108664; CHECK-NEXT: ret8665 %head = insertelement <4 x double> poison, double %b, i32 08666 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer8667 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp8668 ret <4 x i1> %18669}8670 8671define <4 x i1> @fcmp_one_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {8672; CHECK-LABEL: fcmp_one_vv_v4f64:8673; CHECK: # %bb.0:8674; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8675; CHECK-NEXT: vmfeq.vv v12, v10, v108676; CHECK-NEXT: vmfeq.vv v13, v8, v88677; CHECK-NEXT: vmand.mm v12, v13, v128678; CHECK-NEXT: vmv1r.v v13, v128679; CHECK-NEXT: vmv1r.v v0, v128680; CHECK-NEXT: vmflt.vv v13, v8, v10, v0.t8681; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t8682; CHECK-NEXT: vmor.mm v0, v12, v138683; CHECK-NEXT: ret8684 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp8685 ret <4 x i1> %18686}8687 8688define <4 x i1> @fcmp_one_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {8689; CHECK-LABEL: fcmp_one_vf_v4f64:8690; CHECK: # %bb.0:8691; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8692; CHECK-NEXT: vfmv.v.f v10, fa08693; CHECK-NEXT: vmfeq.vv v12, v8, v88694; CHECK-NEXT: vmfeq.vf v13, v10, fa08695; CHECK-NEXT: vmand.mm v10, v12, v138696; CHECK-NEXT: vmv1r.v v11, v108697; CHECK-NEXT: vmv1r.v v0, v108698; CHECK-NEXT: vmflt.vf v11, v8, fa0, v0.t8699; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t8700; CHECK-NEXT: vmor.mm v0, v10, v118701; CHECK-NEXT: ret8702 %head = insertelement <4 x double> poison, double %b, i32 08703 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer8704 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp8705 ret <4 x i1> %18706}8707 8708define <4 x i1> @fcmp_one_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {8709; CHECK-LABEL: fcmp_one_fv_v4f64:8710; CHECK: # %bb.0:8711; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8712; CHECK-NEXT: vfmv.v.f v10, fa08713; CHECK-NEXT: vmfeq.vv v12, v8, v88714; CHECK-NEXT: vmfeq.vf v13, v10, fa08715; CHECK-NEXT: vmand.mm v10, v13, v128716; CHECK-NEXT: vmv1r.v v11, v108717; CHECK-NEXT: vmv1r.v v0, v108718; CHECK-NEXT: vmfgt.vf v11, v8, fa0, v0.t8719; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t8720; CHECK-NEXT: vmor.mm v0, v10, v118721; CHECK-NEXT: ret8722 %head = insertelement <4 x double> poison, double %b, i32 08723 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer8724 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp8725 ret <4 x i1> %18726}8727 8728define <4 x i1> @fcmp_ord_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {8729; CHECK-LABEL: fcmp_ord_vv_v4f64:8730; CHECK: # %bb.0:8731; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma8732; CHECK-NEXT: vmfeq.vv v12, v10, v108733; CHECK-NEXT: vmfeq.vv v10, v8, v88734; CHECK-NEXT: vmand.mm v0, v10, v128735; CHECK-NEXT: ret8736 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp8737 ret <4 x i1> %18738}8739 8740define <4 x i1> @fcmp_ord_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {8741; CHECK-LABEL: fcmp_ord_vf_v4f64:8742; CHECK: # %bb.0:8743; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma8744; CHECK-NEXT: vfmv.v.f v10, fa08745; CHECK-NEXT: vmfeq.vf v12, v10, fa08746; CHECK-NEXT: vmfeq.vv v10, v8, v88747; CHECK-NEXT: vmand.mm v0, v10, v128748; CHECK-NEXT: ret8749 %head = insertelement <4 x double> poison, double %b, i32 08750 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer8751 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp8752 ret <4 x i1> %18753}8754 8755define <4 x i1> @fcmp_ord_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {8756; CHECK-LABEL: fcmp_ord_fv_v4f64:8757; CHECK: # %bb.0:8758; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma8759; CHECK-NEXT: vfmv.v.f v10, fa08760; CHECK-NEXT: vmfeq.vf v12, v10, fa08761; CHECK-NEXT: vmfeq.vv v10, v8, v88762; CHECK-NEXT: vmand.mm v0, v12, v108763; CHECK-NEXT: ret8764 %head = insertelement <4 x double> poison, double %b, i32 08765 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer8766 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp8767 ret <4 x i1> %18768}8769 8770define <4 x i1> @fcmp_ueq_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {8771; CHECK-LABEL: fcmp_ueq_vv_v4f64:8772; CHECK: # %bb.0:8773; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8774; CHECK-NEXT: vmfeq.vv v12, v10, v108775; CHECK-NEXT: vmfeq.vv v13, v8, v88776; CHECK-NEXT: vmand.mm v12, v13, v128777; CHECK-NEXT: vmv1r.v v13, v128778; CHECK-NEXT: vmv1r.v v0, v128779; CHECK-NEXT: vmflt.vv v13, v8, v10, v0.t8780; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t8781; CHECK-NEXT: vmnor.mm v0, v12, v138782; CHECK-NEXT: ret8783 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp8784 ret <4 x i1> %18785}8786 8787define <4 x i1> @fcmp_ueq_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {8788; CHECK-LABEL: fcmp_ueq_vf_v4f64:8789; CHECK: # %bb.0:8790; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8791; CHECK-NEXT: vfmv.v.f v10, fa08792; CHECK-NEXT: vmfeq.vv v12, v8, v88793; CHECK-NEXT: vmfeq.vf v13, v10, fa08794; CHECK-NEXT: vmand.mm v10, v12, v138795; CHECK-NEXT: vmv1r.v v11, v108796; CHECK-NEXT: vmv1r.v v0, v108797; CHECK-NEXT: vmflt.vf v11, v8, fa0, v0.t8798; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t8799; CHECK-NEXT: vmnor.mm v0, v10, v118800; CHECK-NEXT: ret8801 %head = insertelement <4 x double> poison, double %b, i32 08802 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer8803 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp8804 ret <4 x i1> %18805}8806 8807define <4 x i1> @fcmp_ueq_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {8808; CHECK-LABEL: fcmp_ueq_fv_v4f64:8809; CHECK: # %bb.0:8810; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8811; CHECK-NEXT: vfmv.v.f v10, fa08812; CHECK-NEXT: vmfeq.vv v12, v8, v88813; CHECK-NEXT: vmfeq.vf v13, v10, fa08814; CHECK-NEXT: vmand.mm v10, v13, v128815; CHECK-NEXT: vmv1r.v v11, v108816; CHECK-NEXT: vmv1r.v v0, v108817; CHECK-NEXT: vmfgt.vf v11, v8, fa0, v0.t8818; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t8819; CHECK-NEXT: vmnor.mm v0, v10, v118820; CHECK-NEXT: ret8821 %head = insertelement <4 x double> poison, double %b, i32 08822 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer8823 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp8824 ret <4 x i1> %18825}8826 8827define <4 x i1> @fcmp_ugt_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {8828; CHECK-LABEL: fcmp_ugt_vv_v4f64:8829; CHECK: # %bb.0:8830; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8831; CHECK-NEXT: vmfeq.vv v12, v10, v108832; CHECK-NEXT: vmfeq.vv v13, v8, v88833; CHECK-NEXT: vmand.mm v12, v13, v128834; CHECK-NEXT: vmv1r.v v0, v128835; CHECK-NEXT: vmfle.vv v12, v8, v10, v0.t8836; CHECK-NEXT: vmnot.m v0, v128837; CHECK-NEXT: ret8838 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp8839 ret <4 x i1> %18840}8841 8842define <4 x i1> @fcmp_ugt_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {8843; CHECK-LABEL: fcmp_ugt_vf_v4f64:8844; CHECK: # %bb.0:8845; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8846; CHECK-NEXT: vfmv.v.f v10, fa08847; CHECK-NEXT: vmfeq.vf v12, v10, fa08848; CHECK-NEXT: vmfeq.vv v10, v8, v88849; CHECK-NEXT: vmand.mm v10, v10, v128850; CHECK-NEXT: vmv1r.v v0, v108851; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t8852; CHECK-NEXT: vmnot.m v0, v108853; CHECK-NEXT: ret8854 %head = insertelement <4 x double> poison, double %b, i32 08855 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer8856 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp8857 ret <4 x i1> %18858}8859 8860define <4 x i1> @fcmp_ugt_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {8861; CHECK-LABEL: fcmp_ugt_fv_v4f64:8862; CHECK: # %bb.0:8863; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8864; CHECK-NEXT: vfmv.v.f v10, fa08865; CHECK-NEXT: vmfeq.vf v12, v10, fa08866; CHECK-NEXT: vmfeq.vv v10, v8, v88867; CHECK-NEXT: vmand.mm v10, v12, v108868; CHECK-NEXT: vmv1r.v v0, v108869; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t8870; CHECK-NEXT: vmnot.m v0, v108871; CHECK-NEXT: ret8872 %head = insertelement <4 x double> poison, double %b, i32 08873 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer8874 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp8875 ret <4 x i1> %18876}8877 8878define <4 x i1> @fcmp_uge_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {8879; CHECK-LABEL: fcmp_uge_vv_v4f64:8880; CHECK: # %bb.0:8881; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8882; CHECK-NEXT: vmfeq.vv v12, v10, v108883; CHECK-NEXT: vmfeq.vv v13, v8, v88884; CHECK-NEXT: vmand.mm v12, v13, v128885; CHECK-NEXT: vmv1r.v v0, v128886; CHECK-NEXT: vmflt.vv v12, v8, v10, v0.t8887; CHECK-NEXT: vmnot.m v0, v128888; CHECK-NEXT: ret8889 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp8890 ret <4 x i1> %18891}8892 8893define <4 x i1> @fcmp_uge_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {8894; CHECK-LABEL: fcmp_uge_vf_v4f64:8895; CHECK: # %bb.0:8896; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8897; CHECK-NEXT: vfmv.v.f v10, fa08898; CHECK-NEXT: vmfeq.vf v12, v10, fa08899; CHECK-NEXT: vmfeq.vv v10, v8, v88900; CHECK-NEXT: vmand.mm v10, v10, v128901; CHECK-NEXT: vmv1r.v v0, v108902; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t8903; CHECK-NEXT: vmnot.m v0, v108904; CHECK-NEXT: ret8905 %head = insertelement <4 x double> poison, double %b, i32 08906 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer8907 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp8908 ret <4 x i1> %18909}8910 8911define <4 x i1> @fcmp_uge_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {8912; CHECK-LABEL: fcmp_uge_fv_v4f64:8913; CHECK: # %bb.0:8914; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8915; CHECK-NEXT: vfmv.v.f v10, fa08916; CHECK-NEXT: vmfeq.vf v12, v10, fa08917; CHECK-NEXT: vmfeq.vv v10, v8, v88918; CHECK-NEXT: vmand.mm v10, v12, v108919; CHECK-NEXT: vmv1r.v v0, v108920; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t8921; CHECK-NEXT: vmnot.m v0, v108922; CHECK-NEXT: ret8923 %head = insertelement <4 x double> poison, double %b, i32 08924 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer8925 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp8926 ret <4 x i1> %18927}8928 8929define <4 x i1> @fcmp_ult_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {8930; CHECK-LABEL: fcmp_ult_vv_v4f64:8931; CHECK: # %bb.0:8932; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8933; CHECK-NEXT: vmfeq.vv v12, v8, v88934; CHECK-NEXT: vmfeq.vv v13, v10, v108935; CHECK-NEXT: vmand.mm v12, v13, v128936; CHECK-NEXT: vmv1r.v v0, v128937; CHECK-NEXT: vmfle.vv v12, v10, v8, v0.t8938; CHECK-NEXT: vmnot.m v0, v128939; CHECK-NEXT: ret8940 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp8941 ret <4 x i1> %18942}8943 8944define <4 x i1> @fcmp_ult_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {8945; CHECK-LABEL: fcmp_ult_vf_v4f64:8946; CHECK: # %bb.0:8947; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8948; CHECK-NEXT: vfmv.v.f v10, fa08949; CHECK-NEXT: vmfeq.vf v12, v10, fa08950; CHECK-NEXT: vmfeq.vv v10, v8, v88951; CHECK-NEXT: vmand.mm v10, v12, v108952; CHECK-NEXT: vmv1r.v v0, v108953; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t8954; CHECK-NEXT: vmnot.m v0, v108955; CHECK-NEXT: ret8956 %head = insertelement <4 x double> poison, double %b, i32 08957 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer8958 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp8959 ret <4 x i1> %18960}8961 8962define <4 x i1> @fcmp_ult_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {8963; CHECK-LABEL: fcmp_ult_fv_v4f64:8964; CHECK: # %bb.0:8965; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8966; CHECK-NEXT: vfmv.v.f v10, fa08967; CHECK-NEXT: vmfeq.vf v12, v10, fa08968; CHECK-NEXT: vmfeq.vv v10, v8, v88969; CHECK-NEXT: vmand.mm v10, v10, v128970; CHECK-NEXT: vmv1r.v v0, v108971; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t8972; CHECK-NEXT: vmnot.m v0, v108973; CHECK-NEXT: ret8974 %head = insertelement <4 x double> poison, double %b, i32 08975 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer8976 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp8977 ret <4 x i1> %18978}8979 8980define <4 x i1> @fcmp_ule_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {8981; CHECK-LABEL: fcmp_ule_vv_v4f64:8982; CHECK: # %bb.0:8983; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8984; CHECK-NEXT: vmfeq.vv v12, v8, v88985; CHECK-NEXT: vmfeq.vv v13, v10, v108986; CHECK-NEXT: vmand.mm v12, v13, v128987; CHECK-NEXT: vmv1r.v v0, v128988; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t8989; CHECK-NEXT: vmnot.m v0, v128990; CHECK-NEXT: ret8991 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp8992 ret <4 x i1> %18993}8994 8995define <4 x i1> @fcmp_ule_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {8996; CHECK-LABEL: fcmp_ule_vf_v4f64:8997; CHECK: # %bb.0:8998; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu8999; CHECK-NEXT: vfmv.v.f v10, fa09000; CHECK-NEXT: vmfeq.vf v12, v10, fa09001; CHECK-NEXT: vmfeq.vv v10, v8, v89002; CHECK-NEXT: vmand.mm v10, v12, v109003; CHECK-NEXT: vmv1r.v v0, v109004; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t9005; CHECK-NEXT: vmnot.m v0, v109006; CHECK-NEXT: ret9007 %head = insertelement <4 x double> poison, double %b, i32 09008 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer9009 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp9010 ret <4 x i1> %19011}9012 9013define <4 x i1> @fcmp_ule_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {9014; CHECK-LABEL: fcmp_ule_fv_v4f64:9015; CHECK: # %bb.0:9016; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu9017; CHECK-NEXT: vfmv.v.f v10, fa09018; CHECK-NEXT: vmfeq.vf v12, v10, fa09019; CHECK-NEXT: vmfeq.vv v10, v8, v89020; CHECK-NEXT: vmand.mm v10, v10, v129021; CHECK-NEXT: vmv1r.v v0, v109022; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t9023; CHECK-NEXT: vmnot.m v0, v109024; CHECK-NEXT: ret9025 %head = insertelement <4 x double> poison, double %b, i32 09026 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer9027 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp9028 ret <4 x i1> %19029}9030 9031define <4 x i1> @fcmp_une_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {9032; CHECK-LABEL: fcmp_une_vv_v4f64:9033; CHECK: # %bb.0:9034; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma9035; CHECK-NEXT: vmfne.vv v0, v8, v109036; CHECK-NEXT: ret9037 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp9038 ret <4 x i1> %19039}9040 9041define <4 x i1> @fcmp_une_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {9042; CHECK-LABEL: fcmp_une_vf_v4f64:9043; CHECK: # %bb.0:9044; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma9045; CHECK-NEXT: vmfne.vf v0, v8, fa09046; CHECK-NEXT: ret9047 %head = insertelement <4 x double> poison, double %b, i32 09048 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer9049 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp9050 ret <4 x i1> %19051}9052 9053define <4 x i1> @fcmp_une_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {9054; CHECK-LABEL: fcmp_une_fv_v4f64:9055; CHECK: # %bb.0:9056; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma9057; CHECK-NEXT: vmfne.vf v0, v8, fa09058; CHECK-NEXT: ret9059 %head = insertelement <4 x double> poison, double %b, i32 09060 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer9061 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp9062 ret <4 x i1> %19063}9064 9065define <4 x i1> @fcmp_uno_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {9066; CHECK-LABEL: fcmp_uno_vv_v4f64:9067; CHECK: # %bb.0:9068; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma9069; CHECK-NEXT: vmfne.vv v12, v10, v109070; CHECK-NEXT: vmfne.vv v10, v8, v89071; CHECK-NEXT: vmor.mm v0, v10, v129072; CHECK-NEXT: ret9073 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp9074 ret <4 x i1> %19075}9076 9077define <4 x i1> @fcmp_uno_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {9078; CHECK-LABEL: fcmp_uno_vf_v4f64:9079; CHECK: # %bb.0:9080; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma9081; CHECK-NEXT: vfmv.v.f v10, fa09082; CHECK-NEXT: vmfne.vf v12, v10, fa09083; CHECK-NEXT: vmfne.vv v10, v8, v89084; CHECK-NEXT: vmor.mm v0, v10, v129085; CHECK-NEXT: ret9086 %head = insertelement <4 x double> poison, double %b, i32 09087 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer9088 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp9089 ret <4 x i1> %19090}9091 9092define <4 x i1> @fcmp_uno_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {9093; CHECK-LABEL: fcmp_uno_fv_v4f64:9094; CHECK: # %bb.0:9095; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma9096; CHECK-NEXT: vfmv.v.f v10, fa09097; CHECK-NEXT: vmfne.vf v12, v10, fa09098; CHECK-NEXT: vmfne.vv v10, v8, v89099; CHECK-NEXT: vmor.mm v0, v12, v109100; CHECK-NEXT: ret9101 %head = insertelement <4 x double> poison, double %b, i32 09102 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer9103 %1 = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp9104 ret <4 x i1> %19105}9106 9107define <8 x i1> @fcmp_oeq_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {9108; CHECK-LABEL: fcmp_oeq_vv_v8f64:9109; CHECK: # %bb.0:9110; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma9111; CHECK-NEXT: vmfeq.vv v0, v8, v129112; CHECK-NEXT: ret9113 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp9114 ret <8 x i1> %19115}9116 9117define <8 x i1> @fcmp_oeq_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {9118; CHECK-LABEL: fcmp_oeq_vf_v8f64:9119; CHECK: # %bb.0:9120; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma9121; CHECK-NEXT: vmfeq.vf v0, v8, fa09122; CHECK-NEXT: ret9123 %head = insertelement <8 x double> poison, double %b, i32 09124 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9125 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp9126 ret <8 x i1> %19127}9128 9129define <8 x i1> @fcmp_oeq_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {9130; CHECK-LABEL: fcmp_oeq_fv_v8f64:9131; CHECK: # %bb.0:9132; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma9133; CHECK-NEXT: vmfeq.vf v0, v8, fa09134; CHECK-NEXT: ret9135 %head = insertelement <8 x double> poison, double %b, i32 09136 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9137 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp9138 ret <8 x i1> %19139}9140 9141define <8 x i1> @fcmp_ogt_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {9142; CHECK-LABEL: fcmp_ogt_vv_v8f64:9143; CHECK: # %bb.0:9144; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9145; CHECK-NEXT: vmfeq.vv v16, v8, v89146; CHECK-NEXT: vmfeq.vv v17, v12, v129147; CHECK-NEXT: vmand.mm v16, v17, v169148; CHECK-NEXT: vmv1r.v v0, v169149; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t9150; CHECK-NEXT: vmv1r.v v0, v169151; CHECK-NEXT: ret9152 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp9153 ret <8 x i1> %19154}9155 9156define <8 x i1> @fcmp_ogt_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {9157; CHECK-LABEL: fcmp_ogt_vf_v8f64:9158; CHECK: # %bb.0:9159; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9160; CHECK-NEXT: vfmv.v.f v12, fa09161; CHECK-NEXT: vmfeq.vf v16, v12, fa09162; CHECK-NEXT: vmfeq.vv v12, v8, v89163; CHECK-NEXT: vmand.mm v12, v16, v129164; CHECK-NEXT: vmv1r.v v0, v129165; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t9166; CHECK-NEXT: vmv1r.v v0, v129167; CHECK-NEXT: ret9168 %head = insertelement <8 x double> poison, double %b, i32 09169 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9170 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp9171 ret <8 x i1> %19172}9173 9174define <8 x i1> @fcmp_ogt_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {9175; CHECK-LABEL: fcmp_ogt_fv_v8f64:9176; CHECK: # %bb.0:9177; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9178; CHECK-NEXT: vfmv.v.f v12, fa09179; CHECK-NEXT: vmfeq.vf v16, v12, fa09180; CHECK-NEXT: vmfeq.vv v12, v8, v89181; CHECK-NEXT: vmand.mm v12, v12, v169182; CHECK-NEXT: vmv1r.v v0, v129183; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t9184; CHECK-NEXT: vmv1r.v v0, v129185; CHECK-NEXT: ret9186 %head = insertelement <8 x double> poison, double %b, i32 09187 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9188 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp9189 ret <8 x i1> %19190}9191 9192define <8 x i1> @fcmp_oge_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {9193; CHECK-LABEL: fcmp_oge_vv_v8f64:9194; CHECK: # %bb.0:9195; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9196; CHECK-NEXT: vmfeq.vv v16, v8, v89197; CHECK-NEXT: vmfeq.vv v17, v12, v129198; CHECK-NEXT: vmand.mm v16, v17, v169199; CHECK-NEXT: vmv1r.v v0, v169200; CHECK-NEXT: vmfle.vv v16, v12, v8, v0.t9201; CHECK-NEXT: vmv1r.v v0, v169202; CHECK-NEXT: ret9203 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp9204 ret <8 x i1> %19205}9206 9207define <8 x i1> @fcmp_oge_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {9208; CHECK-LABEL: fcmp_oge_vf_v8f64:9209; CHECK: # %bb.0:9210; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9211; CHECK-NEXT: vfmv.v.f v12, fa09212; CHECK-NEXT: vmfeq.vf v16, v12, fa09213; CHECK-NEXT: vmfeq.vv v12, v8, v89214; CHECK-NEXT: vmand.mm v12, v16, v129215; CHECK-NEXT: vmv1r.v v0, v129216; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t9217; CHECK-NEXT: vmv1r.v v0, v129218; CHECK-NEXT: ret9219 %head = insertelement <8 x double> poison, double %b, i32 09220 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9221 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp9222 ret <8 x i1> %19223}9224 9225define <8 x i1> @fcmp_oge_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {9226; CHECK-LABEL: fcmp_oge_fv_v8f64:9227; CHECK: # %bb.0:9228; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9229; CHECK-NEXT: vfmv.v.f v12, fa09230; CHECK-NEXT: vmfeq.vf v16, v12, fa09231; CHECK-NEXT: vmfeq.vv v12, v8, v89232; CHECK-NEXT: vmand.mm v12, v12, v169233; CHECK-NEXT: vmv1r.v v0, v129234; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t9235; CHECK-NEXT: vmv1r.v v0, v129236; CHECK-NEXT: ret9237 %head = insertelement <8 x double> poison, double %b, i32 09238 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9239 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp9240 ret <8 x i1> %19241}9242 9243define <8 x i1> @fcmp_olt_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {9244; CHECK-LABEL: fcmp_olt_vv_v8f64:9245; CHECK: # %bb.0:9246; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9247; CHECK-NEXT: vmfeq.vv v16, v12, v129248; CHECK-NEXT: vmfeq.vv v17, v8, v89249; CHECK-NEXT: vmand.mm v16, v17, v169250; CHECK-NEXT: vmv1r.v v0, v169251; CHECK-NEXT: vmflt.vv v16, v8, v12, v0.t9252; CHECK-NEXT: vmv1r.v v0, v169253; CHECK-NEXT: ret9254 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp9255 ret <8 x i1> %19256}9257 9258define <8 x i1> @fcmp_olt_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {9259; CHECK-LABEL: fcmp_olt_vf_v8f64:9260; CHECK: # %bb.0:9261; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9262; CHECK-NEXT: vfmv.v.f v12, fa09263; CHECK-NEXT: vmfeq.vf v16, v12, fa09264; CHECK-NEXT: vmfeq.vv v12, v8, v89265; CHECK-NEXT: vmand.mm v12, v12, v169266; CHECK-NEXT: vmv1r.v v0, v129267; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t9268; CHECK-NEXT: vmv1r.v v0, v129269; CHECK-NEXT: ret9270 %head = insertelement <8 x double> poison, double %b, i32 09271 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9272 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp9273 ret <8 x i1> %19274}9275 9276define <8 x i1> @fcmp_olt_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {9277; CHECK-LABEL: fcmp_olt_fv_v8f64:9278; CHECK: # %bb.0:9279; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9280; CHECK-NEXT: vfmv.v.f v12, fa09281; CHECK-NEXT: vmfeq.vf v16, v12, fa09282; CHECK-NEXT: vmfeq.vv v12, v8, v89283; CHECK-NEXT: vmand.mm v12, v16, v129284; CHECK-NEXT: vmv1r.v v0, v129285; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t9286; CHECK-NEXT: vmv1r.v v0, v129287; CHECK-NEXT: ret9288 %head = insertelement <8 x double> poison, double %b, i32 09289 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9290 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp9291 ret <8 x i1> %19292}9293 9294define <8 x i1> @fcmp_ole_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {9295; CHECK-LABEL: fcmp_ole_vv_v8f64:9296; CHECK: # %bb.0:9297; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9298; CHECK-NEXT: vmfeq.vv v16, v12, v129299; CHECK-NEXT: vmfeq.vv v17, v8, v89300; CHECK-NEXT: vmand.mm v16, v17, v169301; CHECK-NEXT: vmv1r.v v0, v169302; CHECK-NEXT: vmfle.vv v16, v8, v12, v0.t9303; CHECK-NEXT: vmv1r.v v0, v169304; CHECK-NEXT: ret9305 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp9306 ret <8 x i1> %19307}9308 9309define <8 x i1> @fcmp_ole_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {9310; CHECK-LABEL: fcmp_ole_vf_v8f64:9311; CHECK: # %bb.0:9312; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9313; CHECK-NEXT: vfmv.v.f v12, fa09314; CHECK-NEXT: vmfeq.vf v16, v12, fa09315; CHECK-NEXT: vmfeq.vv v12, v8, v89316; CHECK-NEXT: vmand.mm v12, v12, v169317; CHECK-NEXT: vmv1r.v v0, v129318; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t9319; CHECK-NEXT: vmv1r.v v0, v129320; CHECK-NEXT: ret9321 %head = insertelement <8 x double> poison, double %b, i32 09322 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9323 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp9324 ret <8 x i1> %19325}9326 9327define <8 x i1> @fcmp_ole_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {9328; CHECK-LABEL: fcmp_ole_fv_v8f64:9329; CHECK: # %bb.0:9330; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9331; CHECK-NEXT: vfmv.v.f v12, fa09332; CHECK-NEXT: vmfeq.vf v16, v12, fa09333; CHECK-NEXT: vmfeq.vv v12, v8, v89334; CHECK-NEXT: vmand.mm v12, v16, v129335; CHECK-NEXT: vmv1r.v v0, v129336; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t9337; CHECK-NEXT: vmv1r.v v0, v129338; CHECK-NEXT: ret9339 %head = insertelement <8 x double> poison, double %b, i32 09340 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9341 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp9342 ret <8 x i1> %19343}9344 9345define <8 x i1> @fcmp_one_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {9346; CHECK-LABEL: fcmp_one_vv_v8f64:9347; CHECK: # %bb.0:9348; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9349; CHECK-NEXT: vmfeq.vv v16, v12, v129350; CHECK-NEXT: vmfeq.vv v17, v8, v89351; CHECK-NEXT: vmand.mm v16, v17, v169352; CHECK-NEXT: vmv1r.v v17, v169353; CHECK-NEXT: vmv1r.v v0, v169354; CHECK-NEXT: vmflt.vv v17, v8, v12, v0.t9355; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t9356; CHECK-NEXT: vmor.mm v0, v16, v179357; CHECK-NEXT: ret9358 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp9359 ret <8 x i1> %19360}9361 9362define <8 x i1> @fcmp_one_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {9363; CHECK-LABEL: fcmp_one_vf_v8f64:9364; CHECK: # %bb.0:9365; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9366; CHECK-NEXT: vfmv.v.f v12, fa09367; CHECK-NEXT: vmfeq.vf v16, v12, fa09368; CHECK-NEXT: vmfeq.vv v12, v8, v89369; CHECK-NEXT: vmand.mm v12, v12, v169370; CHECK-NEXT: vmv1r.v v13, v129371; CHECK-NEXT: vmv1r.v v0, v129372; CHECK-NEXT: vmflt.vf v13, v8, fa0, v0.t9373; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t9374; CHECK-NEXT: vmor.mm v0, v12, v139375; CHECK-NEXT: ret9376 %head = insertelement <8 x double> poison, double %b, i32 09377 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9378 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp9379 ret <8 x i1> %19380}9381 9382define <8 x i1> @fcmp_one_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {9383; CHECK-LABEL: fcmp_one_fv_v8f64:9384; CHECK: # %bb.0:9385; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9386; CHECK-NEXT: vfmv.v.f v12, fa09387; CHECK-NEXT: vmfeq.vf v16, v12, fa09388; CHECK-NEXT: vmfeq.vv v12, v8, v89389; CHECK-NEXT: vmand.mm v12, v16, v129390; CHECK-NEXT: vmv1r.v v13, v129391; CHECK-NEXT: vmv1r.v v0, v129392; CHECK-NEXT: vmfgt.vf v13, v8, fa0, v0.t9393; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t9394; CHECK-NEXT: vmor.mm v0, v12, v139395; CHECK-NEXT: ret9396 %head = insertelement <8 x double> poison, double %b, i32 09397 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9398 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp9399 ret <8 x i1> %19400}9401 9402define <8 x i1> @fcmp_ord_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {9403; CHECK-LABEL: fcmp_ord_vv_v8f64:9404; CHECK: # %bb.0:9405; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma9406; CHECK-NEXT: vmfeq.vv v16, v12, v129407; CHECK-NEXT: vmfeq.vv v12, v8, v89408; CHECK-NEXT: vmand.mm v0, v12, v169409; CHECK-NEXT: ret9410 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp9411 ret <8 x i1> %19412}9413 9414define <8 x i1> @fcmp_ord_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {9415; CHECK-LABEL: fcmp_ord_vf_v8f64:9416; CHECK: # %bb.0:9417; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma9418; CHECK-NEXT: vfmv.v.f v12, fa09419; CHECK-NEXT: vmfeq.vf v16, v12, fa09420; CHECK-NEXT: vmfeq.vv v12, v8, v89421; CHECK-NEXT: vmand.mm v0, v12, v169422; CHECK-NEXT: ret9423 %head = insertelement <8 x double> poison, double %b, i32 09424 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9425 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp9426 ret <8 x i1> %19427}9428 9429define <8 x i1> @fcmp_ord_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {9430; CHECK-LABEL: fcmp_ord_fv_v8f64:9431; CHECK: # %bb.0:9432; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma9433; CHECK-NEXT: vfmv.v.f v12, fa09434; CHECK-NEXT: vmfeq.vf v16, v12, fa09435; CHECK-NEXT: vmfeq.vv v12, v8, v89436; CHECK-NEXT: vmand.mm v0, v16, v129437; CHECK-NEXT: ret9438 %head = insertelement <8 x double> poison, double %b, i32 09439 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9440 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp9441 ret <8 x i1> %19442}9443 9444define <8 x i1> @fcmp_ueq_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {9445; CHECK-LABEL: fcmp_ueq_vv_v8f64:9446; CHECK: # %bb.0:9447; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9448; CHECK-NEXT: vmfeq.vv v16, v12, v129449; CHECK-NEXT: vmfeq.vv v17, v8, v89450; CHECK-NEXT: vmand.mm v16, v17, v169451; CHECK-NEXT: vmv1r.v v17, v169452; CHECK-NEXT: vmv1r.v v0, v169453; CHECK-NEXT: vmflt.vv v17, v8, v12, v0.t9454; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t9455; CHECK-NEXT: vmnor.mm v0, v16, v179456; CHECK-NEXT: ret9457 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp9458 ret <8 x i1> %19459}9460 9461define <8 x i1> @fcmp_ueq_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {9462; CHECK-LABEL: fcmp_ueq_vf_v8f64:9463; CHECK: # %bb.0:9464; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9465; CHECK-NEXT: vfmv.v.f v12, fa09466; CHECK-NEXT: vmfeq.vf v16, v12, fa09467; CHECK-NEXT: vmfeq.vv v12, v8, v89468; CHECK-NEXT: vmand.mm v12, v12, v169469; CHECK-NEXT: vmv1r.v v13, v129470; CHECK-NEXT: vmv1r.v v0, v129471; CHECK-NEXT: vmflt.vf v13, v8, fa0, v0.t9472; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t9473; CHECK-NEXT: vmnor.mm v0, v12, v139474; CHECK-NEXT: ret9475 %head = insertelement <8 x double> poison, double %b, i32 09476 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9477 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp9478 ret <8 x i1> %19479}9480 9481define <8 x i1> @fcmp_ueq_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {9482; CHECK-LABEL: fcmp_ueq_fv_v8f64:9483; CHECK: # %bb.0:9484; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9485; CHECK-NEXT: vfmv.v.f v12, fa09486; CHECK-NEXT: vmfeq.vf v16, v12, fa09487; CHECK-NEXT: vmfeq.vv v12, v8, v89488; CHECK-NEXT: vmand.mm v12, v16, v129489; CHECK-NEXT: vmv1r.v v13, v129490; CHECK-NEXT: vmv1r.v v0, v129491; CHECK-NEXT: vmfgt.vf v13, v8, fa0, v0.t9492; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t9493; CHECK-NEXT: vmnor.mm v0, v12, v139494; CHECK-NEXT: ret9495 %head = insertelement <8 x double> poison, double %b, i32 09496 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9497 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp9498 ret <8 x i1> %19499}9500 9501define <8 x i1> @fcmp_ugt_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {9502; CHECK-LABEL: fcmp_ugt_vv_v8f64:9503; CHECK: # %bb.0:9504; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9505; CHECK-NEXT: vmfeq.vv v16, v12, v129506; CHECK-NEXT: vmfeq.vv v17, v8, v89507; CHECK-NEXT: vmand.mm v16, v17, v169508; CHECK-NEXT: vmv1r.v v0, v169509; CHECK-NEXT: vmfle.vv v16, v8, v12, v0.t9510; CHECK-NEXT: vmnot.m v0, v169511; CHECK-NEXT: ret9512 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp9513 ret <8 x i1> %19514}9515 9516define <8 x i1> @fcmp_ugt_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {9517; CHECK-LABEL: fcmp_ugt_vf_v8f64:9518; CHECK: # %bb.0:9519; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9520; CHECK-NEXT: vfmv.v.f v12, fa09521; CHECK-NEXT: vmfeq.vf v16, v12, fa09522; CHECK-NEXT: vmfeq.vv v12, v8, v89523; CHECK-NEXT: vmand.mm v12, v12, v169524; CHECK-NEXT: vmv1r.v v0, v129525; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t9526; CHECK-NEXT: vmnot.m v0, v129527; CHECK-NEXT: ret9528 %head = insertelement <8 x double> poison, double %b, i32 09529 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9530 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp9531 ret <8 x i1> %19532}9533 9534define <8 x i1> @fcmp_ugt_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {9535; CHECK-LABEL: fcmp_ugt_fv_v8f64:9536; CHECK: # %bb.0:9537; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9538; CHECK-NEXT: vfmv.v.f v12, fa09539; CHECK-NEXT: vmfeq.vf v16, v12, fa09540; CHECK-NEXT: vmfeq.vv v12, v8, v89541; CHECK-NEXT: vmand.mm v12, v16, v129542; CHECK-NEXT: vmv1r.v v0, v129543; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t9544; CHECK-NEXT: vmnot.m v0, v129545; CHECK-NEXT: ret9546 %head = insertelement <8 x double> poison, double %b, i32 09547 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9548 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp9549 ret <8 x i1> %19550}9551 9552define <8 x i1> @fcmp_uge_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {9553; CHECK-LABEL: fcmp_uge_vv_v8f64:9554; CHECK: # %bb.0:9555; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9556; CHECK-NEXT: vmfeq.vv v16, v12, v129557; CHECK-NEXT: vmfeq.vv v17, v8, v89558; CHECK-NEXT: vmand.mm v16, v17, v169559; CHECK-NEXT: vmv1r.v v0, v169560; CHECK-NEXT: vmflt.vv v16, v8, v12, v0.t9561; CHECK-NEXT: vmnot.m v0, v169562; CHECK-NEXT: ret9563 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp9564 ret <8 x i1> %19565}9566 9567define <8 x i1> @fcmp_uge_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {9568; CHECK-LABEL: fcmp_uge_vf_v8f64:9569; CHECK: # %bb.0:9570; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9571; CHECK-NEXT: vfmv.v.f v12, fa09572; CHECK-NEXT: vmfeq.vf v16, v12, fa09573; CHECK-NEXT: vmfeq.vv v12, v8, v89574; CHECK-NEXT: vmand.mm v12, v12, v169575; CHECK-NEXT: vmv1r.v v0, v129576; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t9577; CHECK-NEXT: vmnot.m v0, v129578; CHECK-NEXT: ret9579 %head = insertelement <8 x double> poison, double %b, i32 09580 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9581 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp9582 ret <8 x i1> %19583}9584 9585define <8 x i1> @fcmp_uge_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {9586; CHECK-LABEL: fcmp_uge_fv_v8f64:9587; CHECK: # %bb.0:9588; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9589; CHECK-NEXT: vfmv.v.f v12, fa09590; CHECK-NEXT: vmfeq.vf v16, v12, fa09591; CHECK-NEXT: vmfeq.vv v12, v8, v89592; CHECK-NEXT: vmand.mm v12, v16, v129593; CHECK-NEXT: vmv1r.v v0, v129594; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t9595; CHECK-NEXT: vmnot.m v0, v129596; CHECK-NEXT: ret9597 %head = insertelement <8 x double> poison, double %b, i32 09598 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9599 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp9600 ret <8 x i1> %19601}9602 9603define <8 x i1> @fcmp_ult_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {9604; CHECK-LABEL: fcmp_ult_vv_v8f64:9605; CHECK: # %bb.0:9606; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9607; CHECK-NEXT: vmfeq.vv v16, v8, v89608; CHECK-NEXT: vmfeq.vv v17, v12, v129609; CHECK-NEXT: vmand.mm v16, v17, v169610; CHECK-NEXT: vmv1r.v v0, v169611; CHECK-NEXT: vmfle.vv v16, v12, v8, v0.t9612; CHECK-NEXT: vmnot.m v0, v169613; CHECK-NEXT: ret9614 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp9615 ret <8 x i1> %19616}9617 9618define <8 x i1> @fcmp_ult_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {9619; CHECK-LABEL: fcmp_ult_vf_v8f64:9620; CHECK: # %bb.0:9621; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9622; CHECK-NEXT: vfmv.v.f v12, fa09623; CHECK-NEXT: vmfeq.vf v16, v12, fa09624; CHECK-NEXT: vmfeq.vv v12, v8, v89625; CHECK-NEXT: vmand.mm v12, v16, v129626; CHECK-NEXT: vmv1r.v v0, v129627; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t9628; CHECK-NEXT: vmnot.m v0, v129629; CHECK-NEXT: ret9630 %head = insertelement <8 x double> poison, double %b, i32 09631 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9632 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp9633 ret <8 x i1> %19634}9635 9636define <8 x i1> @fcmp_ult_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {9637; CHECK-LABEL: fcmp_ult_fv_v8f64:9638; CHECK: # %bb.0:9639; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9640; CHECK-NEXT: vfmv.v.f v12, fa09641; CHECK-NEXT: vmfeq.vf v16, v12, fa09642; CHECK-NEXT: vmfeq.vv v12, v8, v89643; CHECK-NEXT: vmand.mm v12, v12, v169644; CHECK-NEXT: vmv1r.v v0, v129645; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t9646; CHECK-NEXT: vmnot.m v0, v129647; CHECK-NEXT: ret9648 %head = insertelement <8 x double> poison, double %b, i32 09649 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9650 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp9651 ret <8 x i1> %19652}9653 9654define <8 x i1> @fcmp_ule_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {9655; CHECK-LABEL: fcmp_ule_vv_v8f64:9656; CHECK: # %bb.0:9657; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9658; CHECK-NEXT: vmfeq.vv v16, v8, v89659; CHECK-NEXT: vmfeq.vv v17, v12, v129660; CHECK-NEXT: vmand.mm v16, v17, v169661; CHECK-NEXT: vmv1r.v v0, v169662; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t9663; CHECK-NEXT: vmnot.m v0, v169664; CHECK-NEXT: ret9665 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp9666 ret <8 x i1> %19667}9668 9669define <8 x i1> @fcmp_ule_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {9670; CHECK-LABEL: fcmp_ule_vf_v8f64:9671; CHECK: # %bb.0:9672; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9673; CHECK-NEXT: vfmv.v.f v12, fa09674; CHECK-NEXT: vmfeq.vf v16, v12, fa09675; CHECK-NEXT: vmfeq.vv v12, v8, v89676; CHECK-NEXT: vmand.mm v12, v16, v129677; CHECK-NEXT: vmv1r.v v0, v129678; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t9679; CHECK-NEXT: vmnot.m v0, v129680; CHECK-NEXT: ret9681 %head = insertelement <8 x double> poison, double %b, i32 09682 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9683 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp9684 ret <8 x i1> %19685}9686 9687define <8 x i1> @fcmp_ule_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {9688; CHECK-LABEL: fcmp_ule_fv_v8f64:9689; CHECK: # %bb.0:9690; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu9691; CHECK-NEXT: vfmv.v.f v12, fa09692; CHECK-NEXT: vmfeq.vf v16, v12, fa09693; CHECK-NEXT: vmfeq.vv v12, v8, v89694; CHECK-NEXT: vmand.mm v12, v12, v169695; CHECK-NEXT: vmv1r.v v0, v129696; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t9697; CHECK-NEXT: vmnot.m v0, v129698; CHECK-NEXT: ret9699 %head = insertelement <8 x double> poison, double %b, i32 09700 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9701 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp9702 ret <8 x i1> %19703}9704 9705define <8 x i1> @fcmp_une_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {9706; CHECK-LABEL: fcmp_une_vv_v8f64:9707; CHECK: # %bb.0:9708; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma9709; CHECK-NEXT: vmfne.vv v0, v8, v129710; CHECK-NEXT: ret9711 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp9712 ret <8 x i1> %19713}9714 9715define <8 x i1> @fcmp_une_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {9716; CHECK-LABEL: fcmp_une_vf_v8f64:9717; CHECK: # %bb.0:9718; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma9719; CHECK-NEXT: vmfne.vf v0, v8, fa09720; CHECK-NEXT: ret9721 %head = insertelement <8 x double> poison, double %b, i32 09722 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9723 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp9724 ret <8 x i1> %19725}9726 9727define <8 x i1> @fcmp_une_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {9728; CHECK-LABEL: fcmp_une_fv_v8f64:9729; CHECK: # %bb.0:9730; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma9731; CHECK-NEXT: vmfne.vf v0, v8, fa09732; CHECK-NEXT: ret9733 %head = insertelement <8 x double> poison, double %b, i32 09734 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9735 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp9736 ret <8 x i1> %19737}9738 9739define <8 x i1> @fcmp_uno_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {9740; CHECK-LABEL: fcmp_uno_vv_v8f64:9741; CHECK: # %bb.0:9742; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma9743; CHECK-NEXT: vmfne.vv v16, v12, v129744; CHECK-NEXT: vmfne.vv v12, v8, v89745; CHECK-NEXT: vmor.mm v0, v12, v169746; CHECK-NEXT: ret9747 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp9748 ret <8 x i1> %19749}9750 9751define <8 x i1> @fcmp_uno_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {9752; CHECK-LABEL: fcmp_uno_vf_v8f64:9753; CHECK: # %bb.0:9754; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma9755; CHECK-NEXT: vfmv.v.f v12, fa09756; CHECK-NEXT: vmfne.vf v16, v12, fa09757; CHECK-NEXT: vmfne.vv v12, v8, v89758; CHECK-NEXT: vmor.mm v0, v12, v169759; CHECK-NEXT: ret9760 %head = insertelement <8 x double> poison, double %b, i32 09761 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9762 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp9763 ret <8 x i1> %19764}9765 9766define <8 x i1> @fcmp_uno_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {9767; CHECK-LABEL: fcmp_uno_fv_v8f64:9768; CHECK: # %bb.0:9769; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma9770; CHECK-NEXT: vfmv.v.f v12, fa09771; CHECK-NEXT: vmfne.vf v16, v12, fa09772; CHECK-NEXT: vmfne.vv v12, v8, v89773; CHECK-NEXT: vmor.mm v0, v16, v129774; CHECK-NEXT: ret9775 %head = insertelement <8 x double> poison, double %b, i32 09776 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer9777 %1 = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp9778 ret <8 x i1> %19779}9780