9864 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 <vscale x 1 x i1> @fcmp_oeq_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {8; CHECK-LABEL: fcmp_oeq_vv_nxv1f16:9; CHECK: # %bb.0:10; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma11; CHECK-NEXT: vmfeq.vv v0, v8, v912; CHECK-NEXT: ret13 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp14 ret <vscale x 1 x i1> %115}16 17define <vscale x 1 x i1> @fcmp_oeq_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {18; CHECK-LABEL: fcmp_oeq_vf_nxv1f16:19; CHECK: # %bb.0:20; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma21; CHECK-NEXT: vmfeq.vf v0, v8, fa022; CHECK-NEXT: ret23 %head = insertelement <vscale x 1 x half> poison, half %b, i32 024 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer25 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp26 ret <vscale x 1 x i1> %127}28 29define <vscale x 1 x i1> @fcmp_oeq_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {30; CHECK-LABEL: fcmp_oeq_fv_nxv1f16:31; CHECK: # %bb.0:32; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma33; CHECK-NEXT: vmfeq.vf v0, v8, fa034; CHECK-NEXT: ret35 %head = insertelement <vscale x 1 x half> poison, half %b, i32 036 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer37 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp38 ret <vscale x 1 x i1> %139}40 41define <vscale x 1 x i1> @fcmp_ogt_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {42; CHECK-LABEL: fcmp_ogt_vv_nxv1f16:43; CHECK: # %bb.0:44; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp51 ret <vscale x 1 x i1> %152}53 54define <vscale x 1 x i1> @fcmp_ogt_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {55; CHECK-LABEL: fcmp_ogt_vf_nxv1f16:56; CHECK: # %bb.0:57; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu58; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 065 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer66 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp67 ret <vscale x 1 x i1> %168}69 70define <vscale x 1 x i1> @fcmp_ogt_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {71; CHECK-LABEL: fcmp_ogt_fv_nxv1f16:72; CHECK: # %bb.0:73; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu74; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 081 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer82 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp83 ret <vscale x 1 x i1> %184}85 86define <vscale x 1 x i1> @fcmp_oge_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {87; CHECK-LABEL: fcmp_oge_vv_nxv1f16:88; CHECK: # %bb.0:89; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp96 ret <vscale x 1 x i1> %197}98 99define <vscale x 1 x i1> @fcmp_oge_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {100; CHECK-LABEL: fcmp_oge_vf_nxv1f16:101; CHECK: # %bb.0:102; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu103; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 0110 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer111 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp112 ret <vscale x 1 x i1> %1113}114 115define <vscale x 1 x i1> @fcmp_oge_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {116; CHECK-LABEL: fcmp_oge_fv_nxv1f16:117; CHECK: # %bb.0:118; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu119; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 0126 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer127 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp128 ret <vscale x 1 x i1> %1129}130 131define <vscale x 1 x i1> @fcmp_olt_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {132; CHECK-LABEL: fcmp_olt_vv_nxv1f16:133; CHECK: # %bb.0:134; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp141 ret <vscale x 1 x i1> %1142}143 144define <vscale x 1 x i1> @fcmp_olt_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {145; CHECK-LABEL: fcmp_olt_vf_nxv1f16:146; CHECK: # %bb.0:147; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu148; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 0155 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer156 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp157 ret <vscale x 1 x i1> %1158}159 160define <vscale x 1 x i1> @fcmp_olt_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {161; CHECK-LABEL: fcmp_olt_fv_nxv1f16:162; CHECK: # %bb.0:163; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu164; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 0171 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer172 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp173 ret <vscale x 1 x i1> %1174}175 176define <vscale x 1 x i1> @fcmp_ole_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {177; CHECK-LABEL: fcmp_ole_vv_nxv1f16:178; CHECK: # %bb.0:179; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp186 ret <vscale x 1 x i1> %1187}188 189define <vscale x 1 x i1> @fcmp_ole_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {190; CHECK-LABEL: fcmp_ole_vf_nxv1f16:191; CHECK: # %bb.0:192; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu193; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 0200 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer201 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp202 ret <vscale x 1 x i1> %1203}204 205define <vscale x 1 x i1> @fcmp_ole_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {206; CHECK-LABEL: fcmp_ole_fv_nxv1f16:207; CHECK: # %bb.0:208; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu209; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 0216 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer217 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp218 ret <vscale x 1 x i1> %1219}220 221define <vscale x 1 x i1> @fcmp_one_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {222; CHECK-LABEL: fcmp_one_vv_nxv1f16:223; CHECK: # %bb.0:224; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp234 ret <vscale x 1 x i1> %1235}236 237define <vscale x 1 x i1> @fcmp_one_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {238; CHECK-LABEL: fcmp_one_vf_nxv1f16:239; CHECK: # %bb.0:240; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu241; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 0251 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer252 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp253 ret <vscale x 1 x i1> %1254}255 256define <vscale x 1 x i1> @fcmp_one_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {257; CHECK-LABEL: fcmp_one_fv_nxv1f16:258; CHECK: # %bb.0:259; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu260; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 0270 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer271 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp272 ret <vscale x 1 x i1> %1273}274 275define <vscale x 1 x i1> @fcmp_ord_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {276; CHECK-LABEL: fcmp_ord_vv_nxv1f16:277; CHECK: # %bb.0:278; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp284 ret <vscale x 1 x i1> %1285}286 287define <vscale x 1 x i1> @fcmp_ord_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {288; CHECK-LABEL: fcmp_ord_vf_nxv1f16:289; CHECK: # %bb.0:290; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma291; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 0297 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer298 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp299 ret <vscale x 1 x i1> %1300}301 302define <vscale x 1 x i1> @fcmp_ord_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {303; CHECK-LABEL: fcmp_ord_fv_nxv1f16:304; CHECK: # %bb.0:305; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma306; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 0312 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer313 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp314 ret <vscale x 1 x i1> %1315}316 317define <vscale x 1 x i1> @fcmp_ueq_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {318; CHECK-LABEL: fcmp_ueq_vv_nxv1f16:319; CHECK: # %bb.0:320; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp330 ret <vscale x 1 x i1> %1331}332 333define <vscale x 1 x i1> @fcmp_ueq_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {334; CHECK-LABEL: fcmp_ueq_vf_nxv1f16:335; CHECK: # %bb.0:336; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu337; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 0347 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer348 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp349 ret <vscale x 1 x i1> %1350}351 352define <vscale x 1 x i1> @fcmp_ueq_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {353; CHECK-LABEL: fcmp_ueq_fv_nxv1f16:354; CHECK: # %bb.0:355; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu356; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 0366 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer367 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp368 ret <vscale x 1 x i1> %1369}370 371define <vscale x 1 x i1> @fcmp_ugt_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {372; CHECK-LABEL: fcmp_ugt_vv_nxv1f16:373; CHECK: # %bb.0:374; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp382 ret <vscale x 1 x i1> %1383}384 385define <vscale x 1 x i1> @fcmp_ugt_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {386; CHECK-LABEL: fcmp_ugt_vf_nxv1f16:387; CHECK: # %bb.0:388; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu389; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 0397 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer398 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp399 ret <vscale x 1 x i1> %1400}401 402define <vscale x 1 x i1> @fcmp_ugt_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {403; CHECK-LABEL: fcmp_ugt_fv_nxv1f16:404; CHECK: # %bb.0:405; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu406; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 0414 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer415 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp416 ret <vscale x 1 x i1> %1417}418 419define <vscale x 1 x i1> @fcmp_uge_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {420; CHECK-LABEL: fcmp_uge_vv_nxv1f16:421; CHECK: # %bb.0:422; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp430 ret <vscale x 1 x i1> %1431}432 433define <vscale x 1 x i1> @fcmp_uge_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {434; CHECK-LABEL: fcmp_uge_vf_nxv1f16:435; CHECK: # %bb.0:436; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu437; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 0445 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer446 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp447 ret <vscale x 1 x i1> %1448}449 450define <vscale x 1 x i1> @fcmp_uge_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {451; CHECK-LABEL: fcmp_uge_fv_nxv1f16:452; CHECK: # %bb.0:453; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu454; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 0462 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer463 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp464 ret <vscale x 1 x i1> %1465}466 467define <vscale x 1 x i1> @fcmp_ult_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {468; CHECK-LABEL: fcmp_ult_vv_nxv1f16:469; CHECK: # %bb.0:470; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp478 ret <vscale x 1 x i1> %1479}480 481define <vscale x 1 x i1> @fcmp_ult_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {482; CHECK-LABEL: fcmp_ult_vf_nxv1f16:483; CHECK: # %bb.0:484; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu485; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 0493 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer494 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp495 ret <vscale x 1 x i1> %1496}497 498define <vscale x 1 x i1> @fcmp_ult_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {499; CHECK-LABEL: fcmp_ult_fv_nxv1f16:500; CHECK: # %bb.0:501; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu502; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 0510 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer511 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp512 ret <vscale x 1 x i1> %1513}514 515define <vscale x 1 x i1> @fcmp_ule_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {516; CHECK-LABEL: fcmp_ule_vv_nxv1f16:517; CHECK: # %bb.0:518; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp526 ret <vscale x 1 x i1> %1527}528 529define <vscale x 1 x i1> @fcmp_ule_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {530; CHECK-LABEL: fcmp_ule_vf_nxv1f16:531; CHECK: # %bb.0:532; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu533; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 0541 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer542 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp543 ret <vscale x 1 x i1> %1544}545 546define <vscale x 1 x i1> @fcmp_ule_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {547; CHECK-LABEL: fcmp_ule_fv_nxv1f16:548; CHECK: # %bb.0:549; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu550; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 0558 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer559 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp560 ret <vscale x 1 x i1> %1561}562 563define <vscale x 1 x i1> @fcmp_une_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {564; CHECK-LABEL: fcmp_une_vv_nxv1f16:565; CHECK: # %bb.0:566; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma567; CHECK-NEXT: vmfne.vv v0, v8, v9568; CHECK-NEXT: ret569 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp570 ret <vscale x 1 x i1> %1571}572 573define <vscale x 1 x i1> @fcmp_une_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {574; CHECK-LABEL: fcmp_une_vf_nxv1f16:575; CHECK: # %bb.0:576; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma577; CHECK-NEXT: vmfne.vf v0, v8, fa0578; CHECK-NEXT: ret579 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0580 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer581 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp582 ret <vscale x 1 x i1> %1583}584 585define <vscale x 1 x i1> @fcmp_une_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {586; CHECK-LABEL: fcmp_une_fv_nxv1f16:587; CHECK: # %bb.0:588; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma589; CHECK-NEXT: vmfne.vf v0, v8, fa0590; CHECK-NEXT: ret591 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0592 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer593 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp594 ret <vscale x 1 x i1> %1595}596 597define <vscale x 1 x i1> @fcmp_uno_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {598; CHECK-LABEL: fcmp_uno_vv_nxv1f16:599; CHECK: # %bb.0:600; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp606 ret <vscale x 1 x i1> %1607}608 609define <vscale x 1 x i1> @fcmp_uno_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {610; CHECK-LABEL: fcmp_uno_vf_nxv1f16:611; CHECK: # %bb.0:612; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma613; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 0619 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer620 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp621 ret <vscale x 1 x i1> %1622}623 624define <vscale x 1 x i1> @fcmp_uno_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {625; CHECK-LABEL: fcmp_uno_fv_nxv1f16:626; CHECK: # %bb.0:627; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma628; CHECK-NEXT: vfmv.v.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 <vscale x 1 x half> poison, half %b, i32 0634 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer635 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp636 ret <vscale x 1 x i1> %1637}638 639define <vscale x 2 x i1> @fcmp_oeq_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {640; CHECK-LABEL: fcmp_oeq_vv_nxv2f16:641; CHECK: # %bb.0:642; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma643; CHECK-NEXT: vmfeq.vv v0, v8, v9644; CHECK-NEXT: ret645 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp646 ret <vscale x 2 x i1> %1647}648 649define <vscale x 2 x i1> @fcmp_oeq_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {650; CHECK-LABEL: fcmp_oeq_vf_nxv2f16:651; CHECK: # %bb.0:652; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma653; CHECK-NEXT: vmfeq.vf v0, v8, fa0654; CHECK-NEXT: ret655 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0656 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer657 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp658 ret <vscale x 2 x i1> %1659}660 661define <vscale x 2 x i1> @fcmp_oeq_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {662; CHECK-LABEL: fcmp_oeq_fv_nxv2f16:663; CHECK: # %bb.0:664; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma665; CHECK-NEXT: vmfeq.vf v0, v8, fa0666; CHECK-NEXT: ret667 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0668 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer669 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp670 ret <vscale x 2 x i1> %1671}672 673define <vscale x 2 x i1> @fcmp_ogt_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {674; CHECK-LABEL: fcmp_ogt_vv_nxv2f16:675; CHECK: # %bb.0:676; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp683 ret <vscale x 2 x i1> %1684}685 686define <vscale x 2 x i1> @fcmp_ogt_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {687; CHECK-LABEL: fcmp_ogt_vf_nxv2f16:688; CHECK: # %bb.0:689; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 0697 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer698 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp699 ret <vscale x 2 x i1> %1700}701 702define <vscale x 2 x i1> @fcmp_ogt_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {703; CHECK-LABEL: fcmp_ogt_fv_nxv2f16:704; CHECK: # %bb.0:705; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 0713 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer714 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp715 ret <vscale x 2 x i1> %1716}717 718define <vscale x 2 x i1> @fcmp_oge_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {719; CHECK-LABEL: fcmp_oge_vv_nxv2f16:720; CHECK: # %bb.0:721; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp728 ret <vscale x 2 x i1> %1729}730 731define <vscale x 2 x i1> @fcmp_oge_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {732; CHECK-LABEL: fcmp_oge_vf_nxv2f16:733; CHECK: # %bb.0:734; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 0742 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer743 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp744 ret <vscale x 2 x i1> %1745}746 747define <vscale x 2 x i1> @fcmp_oge_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {748; CHECK-LABEL: fcmp_oge_fv_nxv2f16:749; CHECK: # %bb.0:750; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 0758 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer759 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp760 ret <vscale x 2 x i1> %1761}762 763define <vscale x 2 x i1> @fcmp_olt_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {764; CHECK-LABEL: fcmp_olt_vv_nxv2f16:765; CHECK: # %bb.0:766; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp773 ret <vscale x 2 x i1> %1774}775 776define <vscale x 2 x i1> @fcmp_olt_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {777; CHECK-LABEL: fcmp_olt_vf_nxv2f16:778; CHECK: # %bb.0:779; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 0787 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer788 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp789 ret <vscale x 2 x i1> %1790}791 792define <vscale x 2 x i1> @fcmp_olt_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {793; CHECK-LABEL: fcmp_olt_fv_nxv2f16:794; CHECK: # %bb.0:795; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 0803 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer804 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp805 ret <vscale x 2 x i1> %1806}807 808define <vscale x 2 x i1> @fcmp_ole_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {809; CHECK-LABEL: fcmp_ole_vv_nxv2f16:810; CHECK: # %bb.0:811; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp818 ret <vscale x 2 x i1> %1819}820 821define <vscale x 2 x i1> @fcmp_ole_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {822; CHECK-LABEL: fcmp_ole_vf_nxv2f16:823; CHECK: # %bb.0:824; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 0832 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer833 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp834 ret <vscale x 2 x i1> %1835}836 837define <vscale x 2 x i1> @fcmp_ole_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {838; CHECK-LABEL: fcmp_ole_fv_nxv2f16:839; CHECK: # %bb.0:840; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 0848 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer849 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp850 ret <vscale x 2 x i1> %1851}852 853define <vscale x 2 x i1> @fcmp_one_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {854; CHECK-LABEL: fcmp_one_vv_nxv2f16:855; CHECK: # %bb.0:856; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp866 ret <vscale x 2 x i1> %1867}868 869define <vscale x 2 x i1> @fcmp_one_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {870; CHECK-LABEL: fcmp_one_vf_nxv2f16:871; CHECK: # %bb.0:872; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 0883 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer884 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp885 ret <vscale x 2 x i1> %1886}887 888define <vscale x 2 x i1> @fcmp_one_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {889; CHECK-LABEL: fcmp_one_fv_nxv2f16:890; CHECK: # %bb.0:891; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 0902 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer903 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp904 ret <vscale x 2 x i1> %1905}906 907define <vscale x 2 x i1> @fcmp_ord_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {908; CHECK-LABEL: fcmp_ord_vv_nxv2f16:909; CHECK: # %bb.0:910; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp916 ret <vscale x 2 x i1> %1917}918 919define <vscale x 2 x i1> @fcmp_ord_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {920; CHECK-LABEL: fcmp_ord_vf_nxv2f16:921; CHECK: # %bb.0:922; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 0929 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer930 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp931 ret <vscale x 2 x i1> %1932}933 934define <vscale x 2 x i1> @fcmp_ord_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {935; CHECK-LABEL: fcmp_ord_fv_nxv2f16:936; CHECK: # %bb.0:937; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 0944 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer945 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp946 ret <vscale x 2 x i1> %1947}948 949define <vscale x 2 x i1> @fcmp_ueq_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {950; CHECK-LABEL: fcmp_ueq_vv_nxv2f16:951; CHECK: # %bb.0:952; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp962 ret <vscale x 2 x i1> %1963}964 965define <vscale x 2 x i1> @fcmp_ueq_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {966; CHECK-LABEL: fcmp_ueq_vf_nxv2f16:967; CHECK: # %bb.0:968; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 0979 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer980 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp981 ret <vscale x 2 x i1> %1982}983 984define <vscale x 2 x i1> @fcmp_ueq_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {985; CHECK-LABEL: fcmp_ueq_fv_nxv2f16:986; CHECK: # %bb.0:987; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 0998 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer999 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp1000 ret <vscale x 2 x i1> %11001}1002 1003define <vscale x 2 x i1> @fcmp_ugt_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {1004; CHECK-LABEL: fcmp_ugt_vv_nxv2f16:1005; CHECK: # %bb.0:1006; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp1014 ret <vscale x 2 x i1> %11015}1016 1017define <vscale x 2 x i1> @fcmp_ugt_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {1018; CHECK-LABEL: fcmp_ugt_vf_nxv2f16:1019; CHECK: # %bb.0:1020; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 01029 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1030 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp1031 ret <vscale x 2 x i1> %11032}1033 1034define <vscale x 2 x i1> @fcmp_ugt_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {1035; CHECK-LABEL: fcmp_ugt_fv_nxv2f16:1036; CHECK: # %bb.0:1037; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 01046 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1047 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp1048 ret <vscale x 2 x i1> %11049}1050 1051define <vscale x 2 x i1> @fcmp_uge_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {1052; CHECK-LABEL: fcmp_uge_vv_nxv2f16:1053; CHECK: # %bb.0:1054; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp1062 ret <vscale x 2 x i1> %11063}1064 1065define <vscale x 2 x i1> @fcmp_uge_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {1066; CHECK-LABEL: fcmp_uge_vf_nxv2f16:1067; CHECK: # %bb.0:1068; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 01077 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1078 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp1079 ret <vscale x 2 x i1> %11080}1081 1082define <vscale x 2 x i1> @fcmp_uge_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {1083; CHECK-LABEL: fcmp_uge_fv_nxv2f16:1084; CHECK: # %bb.0:1085; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 01094 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1095 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp1096 ret <vscale x 2 x i1> %11097}1098 1099define <vscale x 2 x i1> @fcmp_ult_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {1100; CHECK-LABEL: fcmp_ult_vv_nxv2f16:1101; CHECK: # %bb.0:1102; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp1110 ret <vscale x 2 x i1> %11111}1112 1113define <vscale x 2 x i1> @fcmp_ult_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {1114; CHECK-LABEL: fcmp_ult_vf_nxv2f16:1115; CHECK: # %bb.0:1116; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 01125 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1126 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp1127 ret <vscale x 2 x i1> %11128}1129 1130define <vscale x 2 x i1> @fcmp_ult_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {1131; CHECK-LABEL: fcmp_ult_fv_nxv2f16:1132; CHECK: # %bb.0:1133; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 01142 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1143 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp1144 ret <vscale x 2 x i1> %11145}1146 1147define <vscale x 2 x i1> @fcmp_ule_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {1148; CHECK-LABEL: fcmp_ule_vv_nxv2f16:1149; CHECK: # %bb.0:1150; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp1158 ret <vscale x 2 x i1> %11159}1160 1161define <vscale x 2 x i1> @fcmp_ule_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {1162; CHECK-LABEL: fcmp_ule_vf_nxv2f16:1163; CHECK: # %bb.0:1164; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 01173 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1174 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp1175 ret <vscale x 2 x i1> %11176}1177 1178define <vscale x 2 x i1> @fcmp_ule_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {1179; CHECK-LABEL: fcmp_ule_fv_nxv2f16:1180; CHECK: # %bb.0:1181; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 01190 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1191 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp1192 ret <vscale x 2 x i1> %11193}1194 1195define <vscale x 2 x i1> @fcmp_une_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {1196; CHECK-LABEL: fcmp_une_vv_nxv2f16:1197; CHECK: # %bb.0:1198; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma1199; CHECK-NEXT: vmfne.vv v0, v8, v91200; CHECK-NEXT: ret1201 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp1202 ret <vscale x 2 x i1> %11203}1204 1205define <vscale x 2 x i1> @fcmp_une_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {1206; CHECK-LABEL: fcmp_une_vf_nxv2f16:1207; CHECK: # %bb.0:1208; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma1209; CHECK-NEXT: vmfne.vf v0, v8, fa01210; CHECK-NEXT: ret1211 %head = insertelement <vscale x 2 x half> poison, half %b, i32 01212 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1213 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp1214 ret <vscale x 2 x i1> %11215}1216 1217define <vscale x 2 x i1> @fcmp_une_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {1218; CHECK-LABEL: fcmp_une_fv_nxv2f16:1219; CHECK: # %bb.0:1220; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma1221; CHECK-NEXT: vmfne.vf v0, v8, fa01222; CHECK-NEXT: ret1223 %head = insertelement <vscale x 2 x half> poison, half %b, i32 01224 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1225 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp1226 ret <vscale x 2 x i1> %11227}1228 1229define <vscale x 2 x i1> @fcmp_uno_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {1230; CHECK-LABEL: fcmp_uno_vv_nxv2f16:1231; CHECK: # %bb.0:1232; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp1238 ret <vscale x 2 x i1> %11239}1240 1241define <vscale x 2 x i1> @fcmp_uno_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {1242; CHECK-LABEL: fcmp_uno_vf_nxv2f16:1243; CHECK: # %bb.0:1244; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 01251 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1252 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp1253 ret <vscale x 2 x i1> %11254}1255 1256define <vscale x 2 x i1> @fcmp_uno_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {1257; CHECK-LABEL: fcmp_uno_fv_nxv2f16:1258; CHECK: # %bb.0:1259; CHECK-NEXT: vsetvli a0, zero, e16, mf2, 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 <vscale x 2 x half> poison, half %b, i32 01266 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1267 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp1268 ret <vscale x 2 x i1> %11269}1270 1271define <vscale x 4 x i1> @fcmp_oeq_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1272; CHECK-LABEL: fcmp_oeq_vv_nxv4f16:1273; CHECK: # %bb.0:1274; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1275; CHECK-NEXT: vmfeq.vv v0, v8, v91276; CHECK-NEXT: ret1277 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp1278 ret <vscale x 4 x i1> %11279}1280 1281define <vscale x 4 x i1> @fcmp_oeq_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1282; CHECK-LABEL: fcmp_oeq_vf_nxv4f16:1283; CHECK: # %bb.0:1284; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1285; CHECK-NEXT: vmfeq.vf v0, v8, fa01286; CHECK-NEXT: ret1287 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01288 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1289 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp1290 ret <vscale x 4 x i1> %11291}1292 1293define <vscale x 4 x i1> @fcmp_oeq_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1294; CHECK-LABEL: fcmp_oeq_fv_nxv4f16:1295; CHECK: # %bb.0:1296; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1297; CHECK-NEXT: vmfeq.vf v0, v8, fa01298; CHECK-NEXT: ret1299 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01300 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1301 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp1302 ret <vscale x 4 x i1> %11303}1304 1305define <vscale x 4 x i1> @fcmp_ogt_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1306; CHECK-LABEL: fcmp_ogt_vv_nxv4f16:1307; CHECK: # %bb.0:1308; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp1315 ret <vscale x 4 x i1> %11316}1317 1318define <vscale x 4 x i1> @fcmp_ogt_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1319; CHECK-LABEL: fcmp_ogt_vf_nxv4f16:1320; CHECK: # %bb.0:1321; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x half> poison, half %b, i32 01329 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1330 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp1331 ret <vscale x 4 x i1> %11332}1333 1334define <vscale x 4 x i1> @fcmp_ogt_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1335; CHECK-LABEL: fcmp_ogt_fv_nxv4f16:1336; CHECK: # %bb.0:1337; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x half> poison, half %b, i32 01345 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1346 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp1347 ret <vscale x 4 x i1> %11348}1349 1350define <vscale x 4 x i1> @fcmp_oge_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1351; CHECK-LABEL: fcmp_oge_vv_nxv4f16:1352; CHECK: # %bb.0:1353; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp1360 ret <vscale x 4 x i1> %11361}1362 1363define <vscale x 4 x i1> @fcmp_oge_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1364; CHECK-LABEL: fcmp_oge_vf_nxv4f16:1365; CHECK: # %bb.0:1366; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x half> poison, half %b, i32 01374 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1375 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp1376 ret <vscale x 4 x i1> %11377}1378 1379define <vscale x 4 x i1> @fcmp_oge_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1380; CHECK-LABEL: fcmp_oge_fv_nxv4f16:1381; CHECK: # %bb.0:1382; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x half> poison, half %b, i32 01390 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1391 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp1392 ret <vscale x 4 x i1> %11393}1394 1395define <vscale x 4 x i1> @fcmp_olt_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1396; CHECK-LABEL: fcmp_olt_vv_nxv4f16:1397; CHECK: # %bb.0:1398; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp1405 ret <vscale x 4 x i1> %11406}1407 1408define <vscale x 4 x i1> @fcmp_olt_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1409; CHECK-LABEL: fcmp_olt_vf_nxv4f16:1410; CHECK: # %bb.0:1411; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x half> poison, half %b, i32 01419 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1420 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp1421 ret <vscale x 4 x i1> %11422}1423 1424define <vscale x 4 x i1> @fcmp_olt_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1425; CHECK-LABEL: fcmp_olt_fv_nxv4f16:1426; CHECK: # %bb.0:1427; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x half> poison, half %b, i32 01435 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1436 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp1437 ret <vscale x 4 x i1> %11438}1439 1440define <vscale x 4 x i1> @fcmp_ole_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1441; CHECK-LABEL: fcmp_ole_vv_nxv4f16:1442; CHECK: # %bb.0:1443; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp1450 ret <vscale x 4 x i1> %11451}1452 1453define <vscale x 4 x i1> @fcmp_ole_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1454; CHECK-LABEL: fcmp_ole_vf_nxv4f16:1455; CHECK: # %bb.0:1456; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x half> poison, half %b, i32 01464 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1465 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp1466 ret <vscale x 4 x i1> %11467}1468 1469define <vscale x 4 x i1> @fcmp_ole_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1470; CHECK-LABEL: fcmp_ole_fv_nxv4f16:1471; CHECK: # %bb.0:1472; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x half> poison, half %b, i32 01480 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1481 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp1482 ret <vscale x 4 x i1> %11483}1484 1485define <vscale x 4 x i1> @fcmp_one_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1486; CHECK-LABEL: fcmp_one_vv_nxv4f16:1487; CHECK: # %bb.0:1488; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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: vmv.v.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 <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp1498 ret <vscale x 4 x i1> %11499}1500 1501define <vscale x 4 x i1> @fcmp_one_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1502; CHECK-LABEL: fcmp_one_vf_nxv4f16:1503; CHECK: # %bb.0:1504; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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: vmv.v.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 <vscale x 4 x half> poison, half %b, i32 01515 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1516 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp1517 ret <vscale x 4 x i1> %11518}1519 1520define <vscale x 4 x i1> @fcmp_one_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1521; CHECK-LABEL: fcmp_one_fv_nxv4f16:1522; CHECK: # %bb.0:1523; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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: vmv.v.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 <vscale x 4 x half> poison, half %b, i32 01534 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1535 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp1536 ret <vscale x 4 x i1> %11537}1538 1539define <vscale x 4 x i1> @fcmp_ord_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1540; CHECK-LABEL: fcmp_ord_vv_nxv4f16:1541; CHECK: # %bb.0:1542; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp1548 ret <vscale x 4 x i1> %11549}1550 1551define <vscale x 4 x i1> @fcmp_ord_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1552; CHECK-LABEL: fcmp_ord_vf_nxv4f16:1553; CHECK: # %bb.0:1554; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x half> poison, half %b, i32 01561 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1562 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp1563 ret <vscale x 4 x i1> %11564}1565 1566define <vscale x 4 x i1> @fcmp_ord_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1567; CHECK-LABEL: fcmp_ord_fv_nxv4f16:1568; CHECK: # %bb.0:1569; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x half> poison, half %b, i32 01576 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1577 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp1578 ret <vscale x 4 x i1> %11579}1580 1581define <vscale x 4 x i1> @fcmp_ueq_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1582; CHECK-LABEL: fcmp_ueq_vv_nxv4f16:1583; CHECK: # %bb.0:1584; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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: vmv.v.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 <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp1594 ret <vscale x 4 x i1> %11595}1596 1597define <vscale x 4 x i1> @fcmp_ueq_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1598; CHECK-LABEL: fcmp_ueq_vf_nxv4f16:1599; CHECK: # %bb.0:1600; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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: vmv.v.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 <vscale x 4 x half> poison, half %b, i32 01611 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1612 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp1613 ret <vscale x 4 x i1> %11614}1615 1616define <vscale x 4 x i1> @fcmp_ueq_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1617; CHECK-LABEL: fcmp_ueq_fv_nxv4f16:1618; CHECK: # %bb.0:1619; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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: vmv.v.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 <vscale x 4 x half> poison, half %b, i32 01630 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1631 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp1632 ret <vscale x 4 x i1> %11633}1634 1635define <vscale x 4 x i1> @fcmp_ugt_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1636; CHECK-LABEL: fcmp_ugt_vv_nxv4f16:1637; CHECK: # %bb.0:1638; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp1646 ret <vscale x 4 x i1> %11647}1648 1649define <vscale x 4 x i1> @fcmp_ugt_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1650; CHECK-LABEL: fcmp_ugt_vf_nxv4f16:1651; CHECK: # %bb.0:1652; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x half> poison, half %b, i32 01661 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1662 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp1663 ret <vscale x 4 x i1> %11664}1665 1666define <vscale x 4 x i1> @fcmp_ugt_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1667; CHECK-LABEL: fcmp_ugt_fv_nxv4f16:1668; CHECK: # %bb.0:1669; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x half> poison, half %b, i32 01678 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1679 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp1680 ret <vscale x 4 x i1> %11681}1682 1683define <vscale x 4 x i1> @fcmp_uge_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1684; CHECK-LABEL: fcmp_uge_vv_nxv4f16:1685; CHECK: # %bb.0:1686; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp1694 ret <vscale x 4 x i1> %11695}1696 1697define <vscale x 4 x i1> @fcmp_uge_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1698; CHECK-LABEL: fcmp_uge_vf_nxv4f16:1699; CHECK: # %bb.0:1700; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x half> poison, half %b, i32 01709 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1710 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp1711 ret <vscale x 4 x i1> %11712}1713 1714define <vscale x 4 x i1> @fcmp_uge_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1715; CHECK-LABEL: fcmp_uge_fv_nxv4f16:1716; CHECK: # %bb.0:1717; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x half> poison, half %b, i32 01726 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1727 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp1728 ret <vscale x 4 x i1> %11729}1730 1731define <vscale x 4 x i1> @fcmp_ult_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1732; CHECK-LABEL: fcmp_ult_vv_nxv4f16:1733; CHECK: # %bb.0:1734; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp1742 ret <vscale x 4 x i1> %11743}1744 1745define <vscale x 4 x i1> @fcmp_ult_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1746; CHECK-LABEL: fcmp_ult_vf_nxv4f16:1747; CHECK: # %bb.0:1748; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x half> poison, half %b, i32 01757 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1758 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp1759 ret <vscale x 4 x i1> %11760}1761 1762define <vscale x 4 x i1> @fcmp_ult_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1763; CHECK-LABEL: fcmp_ult_fv_nxv4f16:1764; CHECK: # %bb.0:1765; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x half> poison, half %b, i32 01774 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1775 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp1776 ret <vscale x 4 x i1> %11777}1778 1779define <vscale x 4 x i1> @fcmp_ule_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1780; CHECK-LABEL: fcmp_ule_vv_nxv4f16:1781; CHECK: # %bb.0:1782; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp1790 ret <vscale x 4 x i1> %11791}1792 1793define <vscale x 4 x i1> @fcmp_ule_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1794; CHECK-LABEL: fcmp_ule_vf_nxv4f16:1795; CHECK: # %bb.0:1796; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x half> poison, half %b, i32 01805 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1806 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp1807 ret <vscale x 4 x i1> %11808}1809 1810define <vscale x 4 x i1> @fcmp_ule_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1811; CHECK-LABEL: fcmp_ule_fv_nxv4f16:1812; CHECK: # %bb.0:1813; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x half> poison, half %b, i32 01822 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1823 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp1824 ret <vscale x 4 x i1> %11825}1826 1827define <vscale x 4 x i1> @fcmp_une_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1828; CHECK-LABEL: fcmp_une_vv_nxv4f16:1829; CHECK: # %bb.0:1830; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1831; CHECK-NEXT: vmfne.vv v0, v8, v91832; CHECK-NEXT: ret1833 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp1834 ret <vscale x 4 x i1> %11835}1836 1837define <vscale x 4 x i1> @fcmp_une_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1838; CHECK-LABEL: fcmp_une_vf_nxv4f16:1839; CHECK: # %bb.0:1840; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1841; CHECK-NEXT: vmfne.vf v0, v8, fa01842; CHECK-NEXT: ret1843 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01844 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1845 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp1846 ret <vscale x 4 x i1> %11847}1848 1849define <vscale x 4 x i1> @fcmp_une_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1850; CHECK-LABEL: fcmp_une_fv_nxv4f16:1851; CHECK: # %bb.0:1852; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1853; CHECK-NEXT: vmfne.vf v0, v8, fa01854; CHECK-NEXT: ret1855 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01856 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1857 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp1858 ret <vscale x 4 x i1> %11859}1860 1861define <vscale x 4 x i1> @fcmp_uno_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1862; CHECK-LABEL: fcmp_uno_vv_nxv4f16:1863; CHECK: # %bb.0:1864; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp1870 ret <vscale x 4 x i1> %11871}1872 1873define <vscale x 4 x i1> @fcmp_uno_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1874; CHECK-LABEL: fcmp_uno_vf_nxv4f16:1875; CHECK: # %bb.0:1876; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x half> poison, half %b, i32 01883 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1884 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp1885 ret <vscale x 4 x i1> %11886}1887 1888define <vscale x 4 x i1> @fcmp_uno_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1889; CHECK-LABEL: fcmp_uno_fv_nxv4f16:1890; CHECK: # %bb.0:1891; CHECK-NEXT: vsetvli a0, zero, e16, m1, 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 <vscale x 4 x half> poison, half %b, i32 01898 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1899 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp1900 ret <vscale x 4 x i1> %11901}1902 1903define <vscale x 8 x i1> @fcmp_oeq_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {1904; CHECK-LABEL: fcmp_oeq_vv_nxv8f16:1905; CHECK: # %bb.0:1906; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1907; CHECK-NEXT: vmfeq.vv v0, v8, v101908; CHECK-NEXT: ret1909 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp1910 ret <vscale x 8 x i1> %11911}1912 1913define <vscale x 8 x i1> @fcmp_oeq_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1914; CHECK-LABEL: fcmp_oeq_vf_nxv8f16:1915; CHECK: # %bb.0:1916; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1917; CHECK-NEXT: vmfeq.vf v0, v8, fa01918; CHECK-NEXT: ret1919 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01920 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1921 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp1922 ret <vscale x 8 x i1> %11923}1924 1925define <vscale x 8 x i1> @fcmp_oeq_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1926; CHECK-LABEL: fcmp_oeq_fv_nxv8f16:1927; CHECK: # %bb.0:1928; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1929; CHECK-NEXT: vmfeq.vf v0, v8, fa01930; CHECK-NEXT: ret1931 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01932 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1933 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp1934 ret <vscale x 8 x i1> %11935}1936 1937define <vscale x 8 x i1> @fcmp_ogt_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {1938; CHECK-LABEL: fcmp_ogt_vv_nxv8f16:1939; CHECK: # %bb.0:1940; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu1941; CHECK-NEXT: vmfeq.vv v12, v8, v81942; CHECK-NEXT: vmfeq.vv v13, v10, v101943; CHECK-NEXT: vmand.mm v12, v13, v121944; CHECK-NEXT: vmv1r.v v0, v121945; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t1946; CHECK-NEXT: vmv1r.v v0, v121947; CHECK-NEXT: ret1948 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp1949 ret <vscale x 8 x i1> %11950}1951 1952define <vscale x 8 x i1> @fcmp_ogt_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1953; CHECK-LABEL: fcmp_ogt_vf_nxv8f16:1954; CHECK: # %bb.0:1955; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu1956; CHECK-NEXT: vfmv.v.f v10, fa01957; CHECK-NEXT: vmfeq.vf v12, v10, fa01958; CHECK-NEXT: vmfeq.vv v10, v8, v81959; CHECK-NEXT: vmand.mm v10, v12, v101960; CHECK-NEXT: vmv1r.v v0, v101961; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t1962; CHECK-NEXT: vmv1r.v v0, v101963; CHECK-NEXT: ret1964 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01965 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1966 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp1967 ret <vscale x 8 x i1> %11968}1969 1970define <vscale x 8 x i1> @fcmp_ogt_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1971; CHECK-LABEL: fcmp_ogt_fv_nxv8f16:1972; CHECK: # %bb.0:1973; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu1974; CHECK-NEXT: vfmv.v.f v10, fa01975; CHECK-NEXT: vmfeq.vf v12, v10, fa01976; CHECK-NEXT: vmfeq.vv v10, v8, v81977; CHECK-NEXT: vmand.mm v10, v10, v121978; CHECK-NEXT: vmv1r.v v0, v101979; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t1980; CHECK-NEXT: vmv1r.v v0, v101981; CHECK-NEXT: ret1982 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01983 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1984 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp1985 ret <vscale x 8 x i1> %11986}1987 1988define <vscale x 8 x i1> @fcmp_oge_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {1989; CHECK-LABEL: fcmp_oge_vv_nxv8f16:1990; CHECK: # %bb.0:1991; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu1992; CHECK-NEXT: vmfeq.vv v12, v8, v81993; CHECK-NEXT: vmfeq.vv v13, v10, v101994; CHECK-NEXT: vmand.mm v12, v13, v121995; CHECK-NEXT: vmv1r.v v0, v121996; CHECK-NEXT: vmfle.vv v12, v10, v8, v0.t1997; CHECK-NEXT: vmv1r.v v0, v121998; CHECK-NEXT: ret1999 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp2000 ret <vscale x 8 x i1> %12001}2002 2003define <vscale x 8 x i1> @fcmp_oge_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2004; CHECK-LABEL: fcmp_oge_vf_nxv8f16:2005; CHECK: # %bb.0:2006; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2007; CHECK-NEXT: vfmv.v.f v10, fa02008; CHECK-NEXT: vmfeq.vf v12, v10, fa02009; CHECK-NEXT: vmfeq.vv v10, v8, v82010; CHECK-NEXT: vmand.mm v10, v12, v102011; CHECK-NEXT: vmv1r.v v0, v102012; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t2013; CHECK-NEXT: vmv1r.v v0, v102014; CHECK-NEXT: ret2015 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02016 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2017 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp2018 ret <vscale x 8 x i1> %12019}2020 2021define <vscale x 8 x i1> @fcmp_oge_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2022; CHECK-LABEL: fcmp_oge_fv_nxv8f16:2023; CHECK: # %bb.0:2024; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2025; CHECK-NEXT: vfmv.v.f v10, fa02026; CHECK-NEXT: vmfeq.vf v12, v10, fa02027; CHECK-NEXT: vmfeq.vv v10, v8, v82028; CHECK-NEXT: vmand.mm v10, v10, v122029; CHECK-NEXT: vmv1r.v v0, v102030; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t2031; CHECK-NEXT: vmv1r.v v0, v102032; CHECK-NEXT: ret2033 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02034 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2035 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp2036 ret <vscale x 8 x i1> %12037}2038 2039define <vscale x 8 x i1> @fcmp_olt_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {2040; CHECK-LABEL: fcmp_olt_vv_nxv8f16:2041; CHECK: # %bb.0:2042; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2043; CHECK-NEXT: vmfeq.vv v12, v10, v102044; CHECK-NEXT: vmfeq.vv v13, v8, v82045; CHECK-NEXT: vmand.mm v12, v13, v122046; CHECK-NEXT: vmv1r.v v0, v122047; CHECK-NEXT: vmflt.vv v12, v8, v10, v0.t2048; CHECK-NEXT: vmv1r.v v0, v122049; CHECK-NEXT: ret2050 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp2051 ret <vscale x 8 x i1> %12052}2053 2054define <vscale x 8 x i1> @fcmp_olt_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2055; CHECK-LABEL: fcmp_olt_vf_nxv8f16:2056; CHECK: # %bb.0:2057; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2058; CHECK-NEXT: vfmv.v.f v10, fa02059; CHECK-NEXT: vmfeq.vf v12, v10, fa02060; CHECK-NEXT: vmfeq.vv v10, v8, v82061; CHECK-NEXT: vmand.mm v10, v10, v122062; CHECK-NEXT: vmv1r.v v0, v102063; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t2064; CHECK-NEXT: vmv1r.v v0, v102065; CHECK-NEXT: ret2066 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02067 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2068 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp2069 ret <vscale x 8 x i1> %12070}2071 2072define <vscale x 8 x i1> @fcmp_olt_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2073; CHECK-LABEL: fcmp_olt_fv_nxv8f16:2074; CHECK: # %bb.0:2075; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2076; CHECK-NEXT: vfmv.v.f v10, fa02077; CHECK-NEXT: vmfeq.vf v12, v10, fa02078; CHECK-NEXT: vmfeq.vv v10, v8, v82079; CHECK-NEXT: vmand.mm v10, v12, v102080; CHECK-NEXT: vmv1r.v v0, v102081; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t2082; CHECK-NEXT: vmv1r.v v0, v102083; CHECK-NEXT: ret2084 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02085 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2086 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp2087 ret <vscale x 8 x i1> %12088}2089 2090define <vscale x 8 x i1> @fcmp_ole_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {2091; CHECK-LABEL: fcmp_ole_vv_nxv8f16:2092; CHECK: # %bb.0:2093; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2094; CHECK-NEXT: vmfeq.vv v12, v10, v102095; CHECK-NEXT: vmfeq.vv v13, v8, v82096; CHECK-NEXT: vmand.mm v12, v13, v122097; CHECK-NEXT: vmv1r.v v0, v122098; CHECK-NEXT: vmfle.vv v12, v8, v10, v0.t2099; CHECK-NEXT: vmv1r.v v0, v122100; CHECK-NEXT: ret2101 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp2102 ret <vscale x 8 x i1> %12103}2104 2105define <vscale x 8 x i1> @fcmp_ole_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2106; CHECK-LABEL: fcmp_ole_vf_nxv8f16:2107; CHECK: # %bb.0:2108; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2109; CHECK-NEXT: vfmv.v.f v10, fa02110; CHECK-NEXT: vmfeq.vf v12, v10, fa02111; CHECK-NEXT: vmfeq.vv v10, v8, v82112; CHECK-NEXT: vmand.mm v10, v10, v122113; CHECK-NEXT: vmv1r.v v0, v102114; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t2115; CHECK-NEXT: vmv1r.v v0, v102116; CHECK-NEXT: ret2117 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02118 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2119 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp2120 ret <vscale x 8 x i1> %12121}2122 2123define <vscale x 8 x i1> @fcmp_ole_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2124; CHECK-LABEL: fcmp_ole_fv_nxv8f16:2125; CHECK: # %bb.0:2126; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2127; CHECK-NEXT: vfmv.v.f v10, fa02128; CHECK-NEXT: vmfeq.vf v12, v10, fa02129; CHECK-NEXT: vmfeq.vv v10, v8, v82130; CHECK-NEXT: vmand.mm v10, v12, v102131; CHECK-NEXT: vmv1r.v v0, v102132; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t2133; CHECK-NEXT: vmv1r.v v0, v102134; CHECK-NEXT: ret2135 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02136 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2137 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp2138 ret <vscale x 8 x i1> %12139}2140 2141define <vscale x 8 x i1> @fcmp_one_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {2142; CHECK-LABEL: fcmp_one_vv_nxv8f16:2143; CHECK: # %bb.0:2144; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2145; CHECK-NEXT: vmfeq.vv v12, v10, v102146; CHECK-NEXT: vmfeq.vv v13, v8, v82147; CHECK-NEXT: vmand.mm v12, v13, v122148; CHECK-NEXT: vmv1r.v v13, v122149; CHECK-NEXT: vmv1r.v v0, v122150; CHECK-NEXT: vmflt.vv v13, v8, v10, v0.t2151; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t2152; CHECK-NEXT: vmor.mm v0, v12, v132153; CHECK-NEXT: ret2154 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp2155 ret <vscale x 8 x i1> %12156}2157 2158define <vscale x 8 x i1> @fcmp_one_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2159; CHECK-LABEL: fcmp_one_vf_nxv8f16:2160; CHECK: # %bb.0:2161; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2162; CHECK-NEXT: vfmv.v.f v10, fa02163; CHECK-NEXT: vmfeq.vv v12, v8, v82164; CHECK-NEXT: vmfeq.vf v13, v10, fa02165; CHECK-NEXT: vmand.mm v10, v12, v132166; CHECK-NEXT: vmv1r.v v11, v102167; CHECK-NEXT: vmv1r.v v0, v102168; CHECK-NEXT: vmflt.vf v11, v8, fa0, v0.t2169; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t2170; CHECK-NEXT: vmor.mm v0, v10, v112171; CHECK-NEXT: ret2172 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02173 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2174 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp2175 ret <vscale x 8 x i1> %12176}2177 2178define <vscale x 8 x i1> @fcmp_one_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2179; CHECK-LABEL: fcmp_one_fv_nxv8f16:2180; CHECK: # %bb.0:2181; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2182; CHECK-NEXT: vfmv.v.f v10, fa02183; CHECK-NEXT: vmfeq.vv v12, v8, v82184; CHECK-NEXT: vmfeq.vf v13, v10, fa02185; CHECK-NEXT: vmand.mm v10, v13, v122186; CHECK-NEXT: vmv1r.v v11, v102187; CHECK-NEXT: vmv1r.v v0, v102188; CHECK-NEXT: vmfgt.vf v11, v8, fa0, v0.t2189; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t2190; CHECK-NEXT: vmor.mm v0, v10, v112191; CHECK-NEXT: ret2192 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02193 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2194 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp2195 ret <vscale x 8 x i1> %12196}2197 2198define <vscale x 8 x i1> @fcmp_ord_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {2199; CHECK-LABEL: fcmp_ord_vv_nxv8f16:2200; CHECK: # %bb.0:2201; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma2202; CHECK-NEXT: vmfeq.vv v12, v10, v102203; CHECK-NEXT: vmfeq.vv v10, v8, v82204; CHECK-NEXT: vmand.mm v0, v10, v122205; CHECK-NEXT: ret2206 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp2207 ret <vscale x 8 x i1> %12208}2209 2210define <vscale x 8 x i1> @fcmp_ord_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2211; CHECK-LABEL: fcmp_ord_vf_nxv8f16:2212; CHECK: # %bb.0:2213; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma2214; CHECK-NEXT: vfmv.v.f v10, fa02215; CHECK-NEXT: vmfeq.vf v12, v10, fa02216; CHECK-NEXT: vmfeq.vv v10, v8, v82217; CHECK-NEXT: vmand.mm v0, v10, v122218; CHECK-NEXT: ret2219 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02220 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2221 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp2222 ret <vscale x 8 x i1> %12223}2224 2225define <vscale x 8 x i1> @fcmp_ord_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2226; CHECK-LABEL: fcmp_ord_fv_nxv8f16:2227; CHECK: # %bb.0:2228; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma2229; CHECK-NEXT: vfmv.v.f v10, fa02230; CHECK-NEXT: vmfeq.vf v12, v10, fa02231; CHECK-NEXT: vmfeq.vv v10, v8, v82232; CHECK-NEXT: vmand.mm v0, v12, v102233; CHECK-NEXT: ret2234 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02235 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2236 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp2237 ret <vscale x 8 x i1> %12238}2239 2240define <vscale x 8 x i1> @fcmp_ueq_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {2241; CHECK-LABEL: fcmp_ueq_vv_nxv8f16:2242; CHECK: # %bb.0:2243; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2244; CHECK-NEXT: vmfeq.vv v12, v10, v102245; CHECK-NEXT: vmfeq.vv v13, v8, v82246; CHECK-NEXT: vmand.mm v12, v13, v122247; CHECK-NEXT: vmv1r.v v13, v122248; CHECK-NEXT: vmv1r.v v0, v122249; CHECK-NEXT: vmflt.vv v13, v8, v10, v0.t2250; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t2251; CHECK-NEXT: vmnor.mm v0, v12, v132252; CHECK-NEXT: ret2253 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp2254 ret <vscale x 8 x i1> %12255}2256 2257define <vscale x 8 x i1> @fcmp_ueq_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2258; CHECK-LABEL: fcmp_ueq_vf_nxv8f16:2259; CHECK: # %bb.0:2260; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2261; CHECK-NEXT: vfmv.v.f v10, fa02262; CHECK-NEXT: vmfeq.vv v12, v8, v82263; CHECK-NEXT: vmfeq.vf v13, v10, fa02264; CHECK-NEXT: vmand.mm v10, v12, v132265; CHECK-NEXT: vmv1r.v v11, v102266; CHECK-NEXT: vmv1r.v v0, v102267; CHECK-NEXT: vmflt.vf v11, v8, fa0, v0.t2268; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t2269; CHECK-NEXT: vmnor.mm v0, v10, v112270; CHECK-NEXT: ret2271 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02272 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2273 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp2274 ret <vscale x 8 x i1> %12275}2276 2277define <vscale x 8 x i1> @fcmp_ueq_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2278; CHECK-LABEL: fcmp_ueq_fv_nxv8f16:2279; CHECK: # %bb.0:2280; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2281; CHECK-NEXT: vfmv.v.f v10, fa02282; CHECK-NEXT: vmfeq.vv v12, v8, v82283; CHECK-NEXT: vmfeq.vf v13, v10, fa02284; CHECK-NEXT: vmand.mm v10, v13, v122285; CHECK-NEXT: vmv1r.v v11, v102286; CHECK-NEXT: vmv1r.v v0, v102287; CHECK-NEXT: vmfgt.vf v11, v8, fa0, v0.t2288; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t2289; CHECK-NEXT: vmnor.mm v0, v10, v112290; CHECK-NEXT: ret2291 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02292 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2293 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp2294 ret <vscale x 8 x i1> %12295}2296 2297define <vscale x 8 x i1> @fcmp_ugt_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {2298; CHECK-LABEL: fcmp_ugt_vv_nxv8f16:2299; CHECK: # %bb.0:2300; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2301; CHECK-NEXT: vmfeq.vv v12, v10, v102302; CHECK-NEXT: vmfeq.vv v13, v8, v82303; CHECK-NEXT: vmand.mm v12, v13, v122304; CHECK-NEXT: vmv1r.v v0, v122305; CHECK-NEXT: vmfle.vv v12, v8, v10, v0.t2306; CHECK-NEXT: vmnot.m v0, v122307; CHECK-NEXT: ret2308 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp2309 ret <vscale x 8 x i1> %12310}2311 2312define <vscale x 8 x i1> @fcmp_ugt_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2313; CHECK-LABEL: fcmp_ugt_vf_nxv8f16:2314; CHECK: # %bb.0:2315; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2316; CHECK-NEXT: vfmv.v.f v10, fa02317; CHECK-NEXT: vmfeq.vf v12, v10, fa02318; CHECK-NEXT: vmfeq.vv v10, v8, v82319; CHECK-NEXT: vmand.mm v10, v10, v122320; CHECK-NEXT: vmv1r.v v0, v102321; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t2322; CHECK-NEXT: vmnot.m v0, v102323; CHECK-NEXT: ret2324 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02325 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2326 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp2327 ret <vscale x 8 x i1> %12328}2329 2330define <vscale x 8 x i1> @fcmp_ugt_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2331; CHECK-LABEL: fcmp_ugt_fv_nxv8f16:2332; CHECK: # %bb.0:2333; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2334; CHECK-NEXT: vfmv.v.f v10, fa02335; CHECK-NEXT: vmfeq.vf v12, v10, fa02336; CHECK-NEXT: vmfeq.vv v10, v8, v82337; CHECK-NEXT: vmand.mm v10, v12, v102338; CHECK-NEXT: vmv1r.v v0, v102339; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t2340; CHECK-NEXT: vmnot.m v0, v102341; CHECK-NEXT: ret2342 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02343 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2344 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp2345 ret <vscale x 8 x i1> %12346}2347 2348define <vscale x 8 x i1> @fcmp_uge_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {2349; CHECK-LABEL: fcmp_uge_vv_nxv8f16:2350; CHECK: # %bb.0:2351; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2352; CHECK-NEXT: vmfeq.vv v12, v10, v102353; CHECK-NEXT: vmfeq.vv v13, v8, v82354; CHECK-NEXT: vmand.mm v12, v13, v122355; CHECK-NEXT: vmv1r.v v0, v122356; CHECK-NEXT: vmflt.vv v12, v8, v10, v0.t2357; CHECK-NEXT: vmnot.m v0, v122358; CHECK-NEXT: ret2359 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp2360 ret <vscale x 8 x i1> %12361}2362 2363define <vscale x 8 x i1> @fcmp_uge_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2364; CHECK-LABEL: fcmp_uge_vf_nxv8f16:2365; CHECK: # %bb.0:2366; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2367; CHECK-NEXT: vfmv.v.f v10, fa02368; CHECK-NEXT: vmfeq.vf v12, v10, fa02369; CHECK-NEXT: vmfeq.vv v10, v8, v82370; CHECK-NEXT: vmand.mm v10, v10, v122371; CHECK-NEXT: vmv1r.v v0, v102372; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t2373; CHECK-NEXT: vmnot.m v0, v102374; CHECK-NEXT: ret2375 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02376 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2377 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp2378 ret <vscale x 8 x i1> %12379}2380 2381define <vscale x 8 x i1> @fcmp_uge_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2382; CHECK-LABEL: fcmp_uge_fv_nxv8f16:2383; CHECK: # %bb.0:2384; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2385; CHECK-NEXT: vfmv.v.f v10, fa02386; CHECK-NEXT: vmfeq.vf v12, v10, fa02387; CHECK-NEXT: vmfeq.vv v10, v8, v82388; CHECK-NEXT: vmand.mm v10, v12, v102389; CHECK-NEXT: vmv1r.v v0, v102390; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t2391; CHECK-NEXT: vmnot.m v0, v102392; CHECK-NEXT: ret2393 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02394 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2395 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp2396 ret <vscale x 8 x i1> %12397}2398 2399define <vscale x 8 x i1> @fcmp_ult_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {2400; CHECK-LABEL: fcmp_ult_vv_nxv8f16:2401; CHECK: # %bb.0:2402; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2403; CHECK-NEXT: vmfeq.vv v12, v8, v82404; CHECK-NEXT: vmfeq.vv v13, v10, v102405; CHECK-NEXT: vmand.mm v12, v13, v122406; CHECK-NEXT: vmv1r.v v0, v122407; CHECK-NEXT: vmfle.vv v12, v10, v8, v0.t2408; CHECK-NEXT: vmnot.m v0, v122409; CHECK-NEXT: ret2410 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp2411 ret <vscale x 8 x i1> %12412}2413 2414define <vscale x 8 x i1> @fcmp_ult_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2415; CHECK-LABEL: fcmp_ult_vf_nxv8f16:2416; CHECK: # %bb.0:2417; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2418; CHECK-NEXT: vfmv.v.f v10, fa02419; CHECK-NEXT: vmfeq.vf v12, v10, fa02420; CHECK-NEXT: vmfeq.vv v10, v8, v82421; CHECK-NEXT: vmand.mm v10, v12, v102422; CHECK-NEXT: vmv1r.v v0, v102423; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t2424; CHECK-NEXT: vmnot.m v0, v102425; CHECK-NEXT: ret2426 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02427 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2428 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp2429 ret <vscale x 8 x i1> %12430}2431 2432define <vscale x 8 x i1> @fcmp_ult_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2433; CHECK-LABEL: fcmp_ult_fv_nxv8f16:2434; CHECK: # %bb.0:2435; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2436; CHECK-NEXT: vfmv.v.f v10, fa02437; CHECK-NEXT: vmfeq.vf v12, v10, fa02438; CHECK-NEXT: vmfeq.vv v10, v8, v82439; CHECK-NEXT: vmand.mm v10, v10, v122440; CHECK-NEXT: vmv1r.v v0, v102441; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t2442; CHECK-NEXT: vmnot.m v0, v102443; CHECK-NEXT: ret2444 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02445 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2446 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp2447 ret <vscale x 8 x i1> %12448}2449 2450define <vscale x 8 x i1> @fcmp_ule_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {2451; CHECK-LABEL: fcmp_ule_vv_nxv8f16:2452; CHECK: # %bb.0:2453; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2454; CHECK-NEXT: vmfeq.vv v12, v8, v82455; CHECK-NEXT: vmfeq.vv v13, v10, v102456; CHECK-NEXT: vmand.mm v12, v13, v122457; CHECK-NEXT: vmv1r.v v0, v122458; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t2459; CHECK-NEXT: vmnot.m v0, v122460; CHECK-NEXT: ret2461 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp2462 ret <vscale x 8 x i1> %12463}2464 2465define <vscale x 8 x i1> @fcmp_ule_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2466; CHECK-LABEL: fcmp_ule_vf_nxv8f16:2467; CHECK: # %bb.0:2468; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2469; CHECK-NEXT: vfmv.v.f v10, fa02470; CHECK-NEXT: vmfeq.vf v12, v10, fa02471; CHECK-NEXT: vmfeq.vv v10, v8, v82472; CHECK-NEXT: vmand.mm v10, v12, v102473; CHECK-NEXT: vmv1r.v v0, v102474; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t2475; CHECK-NEXT: vmnot.m v0, v102476; CHECK-NEXT: ret2477 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02478 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2479 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp2480 ret <vscale x 8 x i1> %12481}2482 2483define <vscale x 8 x i1> @fcmp_ule_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2484; CHECK-LABEL: fcmp_ule_fv_nxv8f16:2485; CHECK: # %bb.0:2486; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu2487; CHECK-NEXT: vfmv.v.f v10, fa02488; CHECK-NEXT: vmfeq.vf v12, v10, fa02489; CHECK-NEXT: vmfeq.vv v10, v8, v82490; CHECK-NEXT: vmand.mm v10, v10, v122491; CHECK-NEXT: vmv1r.v v0, v102492; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t2493; CHECK-NEXT: vmnot.m v0, v102494; CHECK-NEXT: ret2495 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02496 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2497 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp2498 ret <vscale x 8 x i1> %12499}2500 2501define <vscale x 8 x i1> @fcmp_une_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {2502; CHECK-LABEL: fcmp_une_vv_nxv8f16:2503; CHECK: # %bb.0:2504; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma2505; CHECK-NEXT: vmfne.vv v0, v8, v102506; CHECK-NEXT: ret2507 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp2508 ret <vscale x 8 x i1> %12509}2510 2511define <vscale x 8 x i1> @fcmp_une_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2512; CHECK-LABEL: fcmp_une_vf_nxv8f16:2513; CHECK: # %bb.0:2514; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma2515; CHECK-NEXT: vmfne.vf v0, v8, fa02516; CHECK-NEXT: ret2517 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02518 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2519 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp2520 ret <vscale x 8 x i1> %12521}2522 2523define <vscale x 8 x i1> @fcmp_une_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2524; CHECK-LABEL: fcmp_une_fv_nxv8f16:2525; CHECK: # %bb.0:2526; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma2527; CHECK-NEXT: vmfne.vf v0, v8, fa02528; CHECK-NEXT: ret2529 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02530 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2531 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp2532 ret <vscale x 8 x i1> %12533}2534 2535define <vscale x 8 x i1> @fcmp_uno_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {2536; CHECK-LABEL: fcmp_uno_vv_nxv8f16:2537; CHECK: # %bb.0:2538; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma2539; CHECK-NEXT: vmfne.vv v12, v10, v102540; CHECK-NEXT: vmfne.vv v10, v8, v82541; CHECK-NEXT: vmor.mm v0, v10, v122542; CHECK-NEXT: ret2543 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp2544 ret <vscale x 8 x i1> %12545}2546 2547define <vscale x 8 x i1> @fcmp_uno_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2548; CHECK-LABEL: fcmp_uno_vf_nxv8f16:2549; CHECK: # %bb.0:2550; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma2551; CHECK-NEXT: vfmv.v.f v10, fa02552; CHECK-NEXT: vmfne.vf v12, v10, fa02553; CHECK-NEXT: vmfne.vv v10, v8, v82554; CHECK-NEXT: vmor.mm v0, v10, v122555; CHECK-NEXT: ret2556 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02557 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2558 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp2559 ret <vscale x 8 x i1> %12560}2561 2562define <vscale x 8 x i1> @fcmp_uno_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2563; CHECK-LABEL: fcmp_uno_fv_nxv8f16:2564; CHECK: # %bb.0:2565; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma2566; CHECK-NEXT: vfmv.v.f v10, fa02567; CHECK-NEXT: vmfne.vf v12, v10, fa02568; CHECK-NEXT: vmfne.vv v10, v8, v82569; CHECK-NEXT: vmor.mm v0, v12, v102570; CHECK-NEXT: ret2571 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02572 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2573 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp2574 ret <vscale x 8 x i1> %12575}2576 2577define <vscale x 16 x i1> @fcmp_oeq_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2578; CHECK-LABEL: fcmp_oeq_vv_nxv16f16:2579; CHECK: # %bb.0:2580; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2581; CHECK-NEXT: vmfeq.vv v0, v8, v122582; CHECK-NEXT: ret2583 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp2584 ret <vscale x 16 x i1> %12585}2586 2587define <vscale x 16 x i1> @fcmp_oeq_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2588; CHECK-LABEL: fcmp_oeq_vf_nxv16f16:2589; CHECK: # %bb.0:2590; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2591; CHECK-NEXT: vmfeq.vf v0, v8, fa02592; CHECK-NEXT: ret2593 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02594 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2595 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp2596 ret <vscale x 16 x i1> %12597}2598 2599define <vscale x 16 x i1> @fcmp_oeq_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2600; CHECK-LABEL: fcmp_oeq_fv_nxv16f16:2601; CHECK: # %bb.0:2602; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2603; CHECK-NEXT: vmfeq.vf v0, v8, fa02604; CHECK-NEXT: ret2605 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02606 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2607 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp2608 ret <vscale x 16 x i1> %12609}2610 2611define <vscale x 16 x i1> @fcmp_ogt_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2612; CHECK-LABEL: fcmp_ogt_vv_nxv16f16:2613; CHECK: # %bb.0:2614; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu2615; CHECK-NEXT: vmfeq.vv v16, v8, v82616; CHECK-NEXT: vmfeq.vv v17, v12, v122617; CHECK-NEXT: vmand.mm v16, v17, v162618; CHECK-NEXT: vmv1r.v v0, v162619; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t2620; CHECK-NEXT: vmv1r.v v0, v162621; CHECK-NEXT: ret2622 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp2623 ret <vscale x 16 x i1> %12624}2625 2626define <vscale x 16 x i1> @fcmp_ogt_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2627; CHECK-LABEL: fcmp_ogt_vf_nxv16f16:2628; CHECK: # %bb.0:2629; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu2630; CHECK-NEXT: vfmv.v.f v12, fa02631; CHECK-NEXT: vmfeq.vf v16, v12, fa02632; CHECK-NEXT: vmfeq.vv v12, v8, v82633; CHECK-NEXT: vmand.mm v12, v16, v122634; CHECK-NEXT: vmv1r.v v0, v122635; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t2636; CHECK-NEXT: vmv1r.v v0, v122637; CHECK-NEXT: ret2638 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02639 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2640 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp2641 ret <vscale x 16 x i1> %12642}2643 2644define <vscale x 16 x i1> @fcmp_ogt_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2645; CHECK-LABEL: fcmp_ogt_fv_nxv16f16:2646; CHECK: # %bb.0:2647; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu2648; CHECK-NEXT: vfmv.v.f v12, fa02649; CHECK-NEXT: vmfeq.vf v16, v12, fa02650; CHECK-NEXT: vmfeq.vv v12, v8, v82651; CHECK-NEXT: vmand.mm v12, v12, v162652; CHECK-NEXT: vmv1r.v v0, v122653; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t2654; CHECK-NEXT: vmv1r.v v0, v122655; CHECK-NEXT: ret2656 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02657 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2658 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp2659 ret <vscale x 16 x i1> %12660}2661 2662define <vscale x 16 x i1> @fcmp_oge_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2663; CHECK-LABEL: fcmp_oge_vv_nxv16f16:2664; CHECK: # %bb.0:2665; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu2666; CHECK-NEXT: vmfeq.vv v16, v8, v82667; CHECK-NEXT: vmfeq.vv v17, v12, v122668; CHECK-NEXT: vmand.mm v16, v17, v162669; CHECK-NEXT: vmv1r.v v0, v162670; CHECK-NEXT: vmfle.vv v16, v12, v8, v0.t2671; CHECK-NEXT: vmv1r.v v0, v162672; CHECK-NEXT: ret2673 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp2674 ret <vscale x 16 x i1> %12675}2676 2677define <vscale x 16 x i1> @fcmp_oge_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2678; CHECK-LABEL: fcmp_oge_vf_nxv16f16:2679; CHECK: # %bb.0:2680; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu2681; CHECK-NEXT: vfmv.v.f v12, fa02682; CHECK-NEXT: vmfeq.vf v16, v12, fa02683; CHECK-NEXT: vmfeq.vv v12, v8, v82684; CHECK-NEXT: vmand.mm v12, v16, v122685; CHECK-NEXT: vmv1r.v v0, v122686; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t2687; CHECK-NEXT: vmv1r.v v0, v122688; CHECK-NEXT: ret2689 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02690 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2691 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp2692 ret <vscale x 16 x i1> %12693}2694 2695define <vscale x 16 x i1> @fcmp_oge_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2696; CHECK-LABEL: fcmp_oge_fv_nxv16f16:2697; CHECK: # %bb.0:2698; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu2699; CHECK-NEXT: vfmv.v.f v12, fa02700; CHECK-NEXT: vmfeq.vf v16, v12, fa02701; CHECK-NEXT: vmfeq.vv v12, v8, v82702; CHECK-NEXT: vmand.mm v12, v12, v162703; CHECK-NEXT: vmv1r.v v0, v122704; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t2705; CHECK-NEXT: vmv1r.v v0, v122706; CHECK-NEXT: ret2707 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02708 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2709 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp2710 ret <vscale x 16 x i1> %12711}2712 2713define <vscale x 16 x i1> @fcmp_olt_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2714; CHECK-LABEL: fcmp_olt_vv_nxv16f16:2715; CHECK: # %bb.0:2716; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu2717; CHECK-NEXT: vmfeq.vv v16, v12, v122718; CHECK-NEXT: vmfeq.vv v17, v8, v82719; CHECK-NEXT: vmand.mm v16, v17, v162720; CHECK-NEXT: vmv1r.v v0, v162721; CHECK-NEXT: vmflt.vv v16, v8, v12, v0.t2722; CHECK-NEXT: vmv1r.v v0, v162723; CHECK-NEXT: ret2724 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp2725 ret <vscale x 16 x i1> %12726}2727 2728define <vscale x 16 x i1> @fcmp_olt_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2729; CHECK-LABEL: fcmp_olt_vf_nxv16f16:2730; CHECK: # %bb.0:2731; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu2732; CHECK-NEXT: vfmv.v.f v12, fa02733; CHECK-NEXT: vmfeq.vf v16, v12, fa02734; CHECK-NEXT: vmfeq.vv v12, v8, v82735; CHECK-NEXT: vmand.mm v12, v12, v162736; CHECK-NEXT: vmv1r.v v0, v122737; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t2738; CHECK-NEXT: vmv1r.v v0, v122739; CHECK-NEXT: ret2740 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02741 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2742 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp2743 ret <vscale x 16 x i1> %12744}2745 2746define <vscale x 16 x i1> @fcmp_olt_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2747; CHECK-LABEL: fcmp_olt_fv_nxv16f16:2748; CHECK: # %bb.0:2749; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu2750; CHECK-NEXT: vfmv.v.f v12, fa02751; CHECK-NEXT: vmfeq.vf v16, v12, fa02752; CHECK-NEXT: vmfeq.vv v12, v8, v82753; CHECK-NEXT: vmand.mm v12, v16, v122754; CHECK-NEXT: vmv1r.v v0, v122755; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t2756; CHECK-NEXT: vmv1r.v v0, v122757; CHECK-NEXT: ret2758 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02759 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2760 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp2761 ret <vscale x 16 x i1> %12762}2763 2764define <vscale x 16 x i1> @fcmp_ole_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2765; CHECK-LABEL: fcmp_ole_vv_nxv16f16:2766; CHECK: # %bb.0:2767; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu2768; CHECK-NEXT: vmfeq.vv v16, v12, v122769; CHECK-NEXT: vmfeq.vv v17, v8, v82770; CHECK-NEXT: vmand.mm v16, v17, v162771; CHECK-NEXT: vmv1r.v v0, v162772; CHECK-NEXT: vmfle.vv v16, v8, v12, v0.t2773; CHECK-NEXT: vmv1r.v v0, v162774; CHECK-NEXT: ret2775 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp2776 ret <vscale x 16 x i1> %12777}2778 2779define <vscale x 16 x i1> @fcmp_ole_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2780; CHECK-LABEL: fcmp_ole_vf_nxv16f16:2781; CHECK: # %bb.0:2782; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu2783; CHECK-NEXT: vfmv.v.f v12, fa02784; CHECK-NEXT: vmfeq.vf v16, v12, fa02785; CHECK-NEXT: vmfeq.vv v12, v8, v82786; CHECK-NEXT: vmand.mm v12, v12, v162787; CHECK-NEXT: vmv1r.v v0, v122788; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t2789; CHECK-NEXT: vmv1r.v v0, v122790; CHECK-NEXT: ret2791 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02792 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2793 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp2794 ret <vscale x 16 x i1> %12795}2796 2797define <vscale x 16 x i1> @fcmp_ole_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2798; CHECK-LABEL: fcmp_ole_fv_nxv16f16:2799; CHECK: # %bb.0:2800; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu2801; CHECK-NEXT: vfmv.v.f v12, fa02802; CHECK-NEXT: vmfeq.vf v16, v12, fa02803; CHECK-NEXT: vmfeq.vv v12, v8, v82804; CHECK-NEXT: vmand.mm v12, v16, v122805; CHECK-NEXT: vmv1r.v v0, v122806; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t2807; CHECK-NEXT: vmv1r.v v0, v122808; CHECK-NEXT: ret2809 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02810 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2811 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp2812 ret <vscale x 16 x i1> %12813}2814 2815define <vscale x 16 x i1> @fcmp_one_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2816; CHECK-LABEL: fcmp_one_vv_nxv16f16:2817; CHECK: # %bb.0:2818; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu2819; CHECK-NEXT: vmfeq.vv v16, v12, v122820; CHECK-NEXT: vmfeq.vv v17, v8, v82821; CHECK-NEXT: vmand.mm v16, v17, v162822; CHECK-NEXT: vmv1r.v v17, v162823; CHECK-NEXT: vmv1r.v v0, v162824; CHECK-NEXT: vmflt.vv v17, v8, v12, v0.t2825; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t2826; CHECK-NEXT: vmor.mm v0, v16, v172827; CHECK-NEXT: ret2828 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp2829 ret <vscale x 16 x i1> %12830}2831 2832define <vscale x 16 x i1> @fcmp_one_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2833; CHECK-LABEL: fcmp_one_vf_nxv16f16:2834; CHECK: # %bb.0:2835; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu2836; CHECK-NEXT: vfmv.v.f v12, fa02837; CHECK-NEXT: vmfeq.vf v16, v12, fa02838; CHECK-NEXT: vmfeq.vv v12, v8, v82839; CHECK-NEXT: vmand.mm v12, v12, v162840; CHECK-NEXT: vmv1r.v v13, v122841; CHECK-NEXT: vmv1r.v v0, v122842; CHECK-NEXT: vmflt.vf v13, v8, fa0, v0.t2843; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t2844; CHECK-NEXT: vmor.mm v0, v12, v132845; CHECK-NEXT: ret2846 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02847 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2848 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp2849 ret <vscale x 16 x i1> %12850}2851 2852define <vscale x 16 x i1> @fcmp_one_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2853; CHECK-LABEL: fcmp_one_fv_nxv16f16:2854; CHECK: # %bb.0:2855; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu2856; CHECK-NEXT: vfmv.v.f v12, fa02857; CHECK-NEXT: vmfeq.vf v16, v12, fa02858; CHECK-NEXT: vmfeq.vv v12, v8, v82859; CHECK-NEXT: vmand.mm v12, v16, v122860; CHECK-NEXT: vmv1r.v v13, v122861; CHECK-NEXT: vmv1r.v v0, v122862; CHECK-NEXT: vmfgt.vf v13, v8, fa0, v0.t2863; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t2864; CHECK-NEXT: vmor.mm v0, v12, v132865; CHECK-NEXT: ret2866 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02867 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2868 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp2869 ret <vscale x 16 x i1> %12870}2871 2872define <vscale x 16 x i1> @fcmp_ord_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2873; CHECK-LABEL: fcmp_ord_vv_nxv16f16:2874; CHECK: # %bb.0:2875; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2876; CHECK-NEXT: vmfeq.vv v16, v12, v122877; CHECK-NEXT: vmfeq.vv v12, v8, v82878; CHECK-NEXT: vmand.mm v0, v12, v162879; CHECK-NEXT: ret2880 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp2881 ret <vscale x 16 x i1> %12882}2883 2884define <vscale x 16 x i1> @fcmp_ord_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2885; CHECK-LABEL: fcmp_ord_vf_nxv16f16:2886; CHECK: # %bb.0:2887; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2888; CHECK-NEXT: vfmv.v.f v12, fa02889; CHECK-NEXT: vmfeq.vf v16, v12, fa02890; CHECK-NEXT: vmfeq.vv v12, v8, v82891; CHECK-NEXT: vmand.mm v0, v12, v162892; CHECK-NEXT: ret2893 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02894 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2895 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp2896 ret <vscale x 16 x i1> %12897}2898 2899define <vscale x 16 x i1> @fcmp_ord_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2900; CHECK-LABEL: fcmp_ord_fv_nxv16f16:2901; CHECK: # %bb.0:2902; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2903; CHECK-NEXT: vfmv.v.f v12, fa02904; CHECK-NEXT: vmfeq.vf v16, v12, fa02905; CHECK-NEXT: vmfeq.vv v12, v8, v82906; CHECK-NEXT: vmand.mm v0, v16, v122907; CHECK-NEXT: ret2908 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02909 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2910 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp2911 ret <vscale x 16 x i1> %12912}2913 2914define <vscale x 16 x i1> @fcmp_ueq_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2915; CHECK-LABEL: fcmp_ueq_vv_nxv16f16:2916; CHECK: # %bb.0:2917; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu2918; CHECK-NEXT: vmfeq.vv v16, v12, v122919; CHECK-NEXT: vmfeq.vv v17, v8, v82920; CHECK-NEXT: vmand.mm v16, v17, v162921; CHECK-NEXT: vmv1r.v v17, v162922; CHECK-NEXT: vmv1r.v v0, v162923; CHECK-NEXT: vmflt.vv v17, v8, v12, v0.t2924; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t2925; CHECK-NEXT: vmnor.mm v0, v16, v172926; CHECK-NEXT: ret2927 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp2928 ret <vscale x 16 x i1> %12929}2930 2931define <vscale x 16 x i1> @fcmp_ueq_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2932; CHECK-LABEL: fcmp_ueq_vf_nxv16f16:2933; CHECK: # %bb.0:2934; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu2935; CHECK-NEXT: vfmv.v.f v12, fa02936; CHECK-NEXT: vmfeq.vf v16, v12, fa02937; CHECK-NEXT: vmfeq.vv v12, v8, v82938; CHECK-NEXT: vmand.mm v12, v12, v162939; CHECK-NEXT: vmv1r.v v13, v122940; CHECK-NEXT: vmv1r.v v0, v122941; CHECK-NEXT: vmflt.vf v13, v8, fa0, v0.t2942; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t2943; CHECK-NEXT: vmnor.mm v0, v12, v132944; CHECK-NEXT: ret2945 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02946 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2947 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp2948 ret <vscale x 16 x i1> %12949}2950 2951define <vscale x 16 x i1> @fcmp_ueq_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2952; CHECK-LABEL: fcmp_ueq_fv_nxv16f16:2953; CHECK: # %bb.0:2954; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu2955; CHECK-NEXT: vfmv.v.f v12, fa02956; CHECK-NEXT: vmfeq.vf v16, v12, fa02957; CHECK-NEXT: vmfeq.vv v12, v8, v82958; CHECK-NEXT: vmand.mm v12, v16, v122959; CHECK-NEXT: vmv1r.v v13, v122960; CHECK-NEXT: vmv1r.v v0, v122961; CHECK-NEXT: vmfgt.vf v13, v8, fa0, v0.t2962; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t2963; CHECK-NEXT: vmnor.mm v0, v12, v132964; CHECK-NEXT: ret2965 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02966 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2967 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp2968 ret <vscale x 16 x i1> %12969}2970 2971define <vscale x 16 x i1> @fcmp_ugt_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2972; CHECK-LABEL: fcmp_ugt_vv_nxv16f16:2973; CHECK: # %bb.0:2974; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu2975; CHECK-NEXT: vmfeq.vv v16, v12, v122976; CHECK-NEXT: vmfeq.vv v17, v8, v82977; CHECK-NEXT: vmand.mm v16, v17, v162978; CHECK-NEXT: vmv1r.v v0, v162979; CHECK-NEXT: vmfle.vv v16, v8, v12, v0.t2980; CHECK-NEXT: vmnot.m v0, v162981; CHECK-NEXT: ret2982 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp2983 ret <vscale x 16 x i1> %12984}2985 2986define <vscale x 16 x i1> @fcmp_ugt_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2987; CHECK-LABEL: fcmp_ugt_vf_nxv16f16:2988; CHECK: # %bb.0:2989; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu2990; CHECK-NEXT: vfmv.v.f v12, fa02991; CHECK-NEXT: vmfeq.vf v16, v12, fa02992; CHECK-NEXT: vmfeq.vv v12, v8, v82993; CHECK-NEXT: vmand.mm v12, v12, v162994; CHECK-NEXT: vmv1r.v v0, v122995; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t2996; CHECK-NEXT: vmnot.m v0, v122997; CHECK-NEXT: ret2998 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02999 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3000 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp3001 ret <vscale x 16 x i1> %13002}3003 3004define <vscale x 16 x i1> @fcmp_ugt_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {3005; CHECK-LABEL: fcmp_ugt_fv_nxv16f16:3006; CHECK: # %bb.0:3007; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu3008; CHECK-NEXT: vfmv.v.f v12, fa03009; CHECK-NEXT: vmfeq.vf v16, v12, fa03010; CHECK-NEXT: vmfeq.vv v12, v8, v83011; CHECK-NEXT: vmand.mm v12, v16, v123012; CHECK-NEXT: vmv1r.v v0, v123013; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t3014; CHECK-NEXT: vmnot.m v0, v123015; CHECK-NEXT: ret3016 %head = insertelement <vscale x 16 x half> poison, half %b, i32 03017 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3018 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp3019 ret <vscale x 16 x i1> %13020}3021 3022define <vscale x 16 x i1> @fcmp_uge_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {3023; CHECK-LABEL: fcmp_uge_vv_nxv16f16:3024; CHECK: # %bb.0:3025; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu3026; CHECK-NEXT: vmfeq.vv v16, v12, v123027; CHECK-NEXT: vmfeq.vv v17, v8, v83028; CHECK-NEXT: vmand.mm v16, v17, v163029; CHECK-NEXT: vmv1r.v v0, v163030; CHECK-NEXT: vmflt.vv v16, v8, v12, v0.t3031; CHECK-NEXT: vmnot.m v0, v163032; CHECK-NEXT: ret3033 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp3034 ret <vscale x 16 x i1> %13035}3036 3037define <vscale x 16 x i1> @fcmp_uge_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {3038; CHECK-LABEL: fcmp_uge_vf_nxv16f16:3039; CHECK: # %bb.0:3040; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu3041; CHECK-NEXT: vfmv.v.f v12, fa03042; CHECK-NEXT: vmfeq.vf v16, v12, fa03043; CHECK-NEXT: vmfeq.vv v12, v8, v83044; CHECK-NEXT: vmand.mm v12, v12, v163045; CHECK-NEXT: vmv1r.v v0, v123046; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t3047; CHECK-NEXT: vmnot.m v0, v123048; CHECK-NEXT: ret3049 %head = insertelement <vscale x 16 x half> poison, half %b, i32 03050 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3051 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp3052 ret <vscale x 16 x i1> %13053}3054 3055define <vscale x 16 x i1> @fcmp_uge_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {3056; CHECK-LABEL: fcmp_uge_fv_nxv16f16:3057; CHECK: # %bb.0:3058; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu3059; CHECK-NEXT: vfmv.v.f v12, fa03060; CHECK-NEXT: vmfeq.vf v16, v12, fa03061; CHECK-NEXT: vmfeq.vv v12, v8, v83062; CHECK-NEXT: vmand.mm v12, v16, v123063; CHECK-NEXT: vmv1r.v v0, v123064; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t3065; CHECK-NEXT: vmnot.m v0, v123066; CHECK-NEXT: ret3067 %head = insertelement <vscale x 16 x half> poison, half %b, i32 03068 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3069 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp3070 ret <vscale x 16 x i1> %13071}3072 3073define <vscale x 16 x i1> @fcmp_ult_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {3074; CHECK-LABEL: fcmp_ult_vv_nxv16f16:3075; CHECK: # %bb.0:3076; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu3077; CHECK-NEXT: vmfeq.vv v16, v8, v83078; CHECK-NEXT: vmfeq.vv v17, v12, v123079; CHECK-NEXT: vmand.mm v16, v17, v163080; CHECK-NEXT: vmv1r.v v0, v163081; CHECK-NEXT: vmfle.vv v16, v12, v8, v0.t3082; CHECK-NEXT: vmnot.m v0, v163083; CHECK-NEXT: ret3084 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp3085 ret <vscale x 16 x i1> %13086}3087 3088define <vscale x 16 x i1> @fcmp_ult_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {3089; CHECK-LABEL: fcmp_ult_vf_nxv16f16:3090; CHECK: # %bb.0:3091; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu3092; CHECK-NEXT: vfmv.v.f v12, fa03093; CHECK-NEXT: vmfeq.vf v16, v12, fa03094; CHECK-NEXT: vmfeq.vv v12, v8, v83095; CHECK-NEXT: vmand.mm v12, v16, v123096; CHECK-NEXT: vmv1r.v v0, v123097; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t3098; CHECK-NEXT: vmnot.m v0, v123099; CHECK-NEXT: ret3100 %head = insertelement <vscale x 16 x half> poison, half %b, i32 03101 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3102 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp3103 ret <vscale x 16 x i1> %13104}3105 3106define <vscale x 16 x i1> @fcmp_ult_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {3107; CHECK-LABEL: fcmp_ult_fv_nxv16f16:3108; CHECK: # %bb.0:3109; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu3110; CHECK-NEXT: vfmv.v.f v12, fa03111; CHECK-NEXT: vmfeq.vf v16, v12, fa03112; CHECK-NEXT: vmfeq.vv v12, v8, v83113; CHECK-NEXT: vmand.mm v12, v12, v163114; CHECK-NEXT: vmv1r.v v0, v123115; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t3116; CHECK-NEXT: vmnot.m v0, v123117; CHECK-NEXT: ret3118 %head = insertelement <vscale x 16 x half> poison, half %b, i32 03119 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3120 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp3121 ret <vscale x 16 x i1> %13122}3123 3124define <vscale x 16 x i1> @fcmp_ule_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {3125; CHECK-LABEL: fcmp_ule_vv_nxv16f16:3126; CHECK: # %bb.0:3127; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu3128; CHECK-NEXT: vmfeq.vv v16, v8, v83129; CHECK-NEXT: vmfeq.vv v17, v12, v123130; CHECK-NEXT: vmand.mm v16, v17, v163131; CHECK-NEXT: vmv1r.v v0, v163132; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t3133; CHECK-NEXT: vmnot.m v0, v163134; CHECK-NEXT: ret3135 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp3136 ret <vscale x 16 x i1> %13137}3138 3139define <vscale x 16 x i1> @fcmp_ule_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {3140; CHECK-LABEL: fcmp_ule_vf_nxv16f16:3141; CHECK: # %bb.0:3142; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu3143; CHECK-NEXT: vfmv.v.f v12, fa03144; CHECK-NEXT: vmfeq.vf v16, v12, fa03145; CHECK-NEXT: vmfeq.vv v12, v8, v83146; CHECK-NEXT: vmand.mm v12, v16, v123147; CHECK-NEXT: vmv1r.v v0, v123148; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t3149; CHECK-NEXT: vmnot.m v0, v123150; CHECK-NEXT: ret3151 %head = insertelement <vscale x 16 x half> poison, half %b, i32 03152 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3153 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp3154 ret <vscale x 16 x i1> %13155}3156 3157define <vscale x 16 x i1> @fcmp_ule_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {3158; CHECK-LABEL: fcmp_ule_fv_nxv16f16:3159; CHECK: # %bb.0:3160; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu3161; CHECK-NEXT: vfmv.v.f v12, fa03162; CHECK-NEXT: vmfeq.vf v16, v12, fa03163; CHECK-NEXT: vmfeq.vv v12, v8, v83164; CHECK-NEXT: vmand.mm v12, v12, v163165; CHECK-NEXT: vmv1r.v v0, v123166; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t3167; CHECK-NEXT: vmnot.m v0, v123168; CHECK-NEXT: ret3169 %head = insertelement <vscale x 16 x half> poison, half %b, i32 03170 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3171 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp3172 ret <vscale x 16 x i1> %13173}3174 3175define <vscale x 16 x i1> @fcmp_une_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {3176; CHECK-LABEL: fcmp_une_vv_nxv16f16:3177; CHECK: # %bb.0:3178; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma3179; CHECK-NEXT: vmfne.vv v0, v8, v123180; CHECK-NEXT: ret3181 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp3182 ret <vscale x 16 x i1> %13183}3184 3185define <vscale x 16 x i1> @fcmp_une_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {3186; CHECK-LABEL: fcmp_une_vf_nxv16f16:3187; CHECK: # %bb.0:3188; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma3189; CHECK-NEXT: vmfne.vf v0, v8, fa03190; CHECK-NEXT: ret3191 %head = insertelement <vscale x 16 x half> poison, half %b, i32 03192 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3193 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp3194 ret <vscale x 16 x i1> %13195}3196 3197define <vscale x 16 x i1> @fcmp_une_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {3198; CHECK-LABEL: fcmp_une_fv_nxv16f16:3199; CHECK: # %bb.0:3200; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma3201; CHECK-NEXT: vmfne.vf v0, v8, fa03202; CHECK-NEXT: ret3203 %head = insertelement <vscale x 16 x half> poison, half %b, i32 03204 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3205 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp3206 ret <vscale x 16 x i1> %13207}3208 3209define <vscale x 16 x i1> @fcmp_uno_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {3210; CHECK-LABEL: fcmp_uno_vv_nxv16f16:3211; CHECK: # %bb.0:3212; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma3213; CHECK-NEXT: vmfne.vv v16, v12, v123214; CHECK-NEXT: vmfne.vv v12, v8, v83215; CHECK-NEXT: vmor.mm v0, v12, v163216; CHECK-NEXT: ret3217 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp3218 ret <vscale x 16 x i1> %13219}3220 3221define <vscale x 16 x i1> @fcmp_uno_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {3222; CHECK-LABEL: fcmp_uno_vf_nxv16f16:3223; CHECK: # %bb.0:3224; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma3225; CHECK-NEXT: vfmv.v.f v12, fa03226; CHECK-NEXT: vmfne.vf v16, v12, fa03227; CHECK-NEXT: vmfne.vv v12, v8, v83228; CHECK-NEXT: vmor.mm v0, v12, v163229; CHECK-NEXT: ret3230 %head = insertelement <vscale x 16 x half> poison, half %b, i32 03231 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3232 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp3233 ret <vscale x 16 x i1> %13234}3235 3236define <vscale x 16 x i1> @fcmp_uno_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {3237; CHECK-LABEL: fcmp_uno_fv_nxv16f16:3238; CHECK: # %bb.0:3239; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma3240; CHECK-NEXT: vfmv.v.f v12, fa03241; CHECK-NEXT: vmfne.vf v16, v12, fa03242; CHECK-NEXT: vmfne.vv v12, v8, v83243; CHECK-NEXT: vmor.mm v0, v16, v123244; CHECK-NEXT: ret3245 %head = insertelement <vscale x 16 x half> poison, half %b, i32 03246 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer3247 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp3248 ret <vscale x 16 x i1> %13249}3250 3251define <vscale x 32 x i1> @fcmp_oeq_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {3252; CHECK-LABEL: fcmp_oeq_vv_nxv32f16:3253; CHECK: # %bb.0:3254; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3255; CHECK-NEXT: vmfeq.vv v0, v8, v163256; CHECK-NEXT: ret3257 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp3258 ret <vscale x 32 x i1> %13259}3260 3261define <vscale x 32 x i1> @fcmp_oeq_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3262; CHECK-LABEL: fcmp_oeq_vf_nxv32f16:3263; CHECK: # %bb.0:3264; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3265; CHECK-NEXT: vmfeq.vf v0, v8, fa03266; CHECK-NEXT: ret3267 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03268 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3269 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp3270 ret <vscale x 32 x i1> %13271}3272 3273define <vscale x 32 x i1> @fcmp_oeq_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3274; CHECK-LABEL: fcmp_oeq_fv_nxv32f16:3275; CHECK: # %bb.0:3276; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3277; CHECK-NEXT: vmfeq.vf v0, v8, fa03278; CHECK-NEXT: ret3279 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03280 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3281 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp3282 ret <vscale x 32 x i1> %13283}3284 3285define <vscale x 32 x i1> @fcmp_ogt_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {3286; CHECK-LABEL: fcmp_ogt_vv_nxv32f16:3287; CHECK: # %bb.0:3288; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3289; CHECK-NEXT: vmfeq.vv v24, v8, v83290; CHECK-NEXT: vmfeq.vv v25, v16, v163291; CHECK-NEXT: vmand.mm v24, v25, v243292; CHECK-NEXT: vmv1r.v v0, v243293; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t3294; CHECK-NEXT: vmv1r.v v0, v243295; CHECK-NEXT: ret3296 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp3297 ret <vscale x 32 x i1> %13298}3299 3300define <vscale x 32 x i1> @fcmp_ogt_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3301; CHECK-LABEL: fcmp_ogt_vf_nxv32f16:3302; CHECK: # %bb.0:3303; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3304; CHECK-NEXT: vfmv.v.f v16, fa03305; CHECK-NEXT: vmfeq.vf v24, v16, fa03306; CHECK-NEXT: vmfeq.vv v16, v8, v83307; CHECK-NEXT: vmand.mm v16, v24, v163308; CHECK-NEXT: vmv1r.v v0, v163309; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t3310; CHECK-NEXT: vmv1r.v v0, v163311; CHECK-NEXT: ret3312 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03313 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3314 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp3315 ret <vscale x 32 x i1> %13316}3317 3318define <vscale x 32 x i1> @fcmp_ogt_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3319; CHECK-LABEL: fcmp_ogt_fv_nxv32f16:3320; CHECK: # %bb.0:3321; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3322; CHECK-NEXT: vfmv.v.f v16, fa03323; CHECK-NEXT: vmfeq.vf v24, v16, fa03324; CHECK-NEXT: vmfeq.vv v16, v8, v83325; CHECK-NEXT: vmand.mm v16, v16, v243326; CHECK-NEXT: vmv1r.v v0, v163327; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t3328; CHECK-NEXT: vmv1r.v v0, v163329; CHECK-NEXT: ret3330 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03331 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3332 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp3333 ret <vscale x 32 x i1> %13334}3335 3336define <vscale x 32 x i1> @fcmp_oge_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {3337; CHECK-LABEL: fcmp_oge_vv_nxv32f16:3338; CHECK: # %bb.0:3339; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3340; CHECK-NEXT: vmfeq.vv v24, v8, v83341; CHECK-NEXT: vmfeq.vv v25, v16, v163342; CHECK-NEXT: vmand.mm v24, v25, v243343; CHECK-NEXT: vmv1r.v v0, v243344; CHECK-NEXT: vmfle.vv v24, v16, v8, v0.t3345; CHECK-NEXT: vmv1r.v v0, v243346; CHECK-NEXT: ret3347 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp3348 ret <vscale x 32 x i1> %13349}3350 3351define <vscale x 32 x i1> @fcmp_oge_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3352; CHECK-LABEL: fcmp_oge_vf_nxv32f16:3353; CHECK: # %bb.0:3354; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3355; CHECK-NEXT: vfmv.v.f v16, fa03356; CHECK-NEXT: vmfeq.vf v24, v16, fa03357; CHECK-NEXT: vmfeq.vv v16, v8, v83358; CHECK-NEXT: vmand.mm v16, v24, v163359; CHECK-NEXT: vmv1r.v v0, v163360; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t3361; CHECK-NEXT: vmv1r.v v0, v163362; CHECK-NEXT: ret3363 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03364 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3365 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp3366 ret <vscale x 32 x i1> %13367}3368 3369define <vscale x 32 x i1> @fcmp_oge_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3370; CHECK-LABEL: fcmp_oge_fv_nxv32f16:3371; CHECK: # %bb.0:3372; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3373; CHECK-NEXT: vfmv.v.f v16, fa03374; CHECK-NEXT: vmfeq.vf v24, v16, fa03375; CHECK-NEXT: vmfeq.vv v16, v8, v83376; CHECK-NEXT: vmand.mm v16, v16, v243377; CHECK-NEXT: vmv1r.v v0, v163378; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t3379; CHECK-NEXT: vmv1r.v v0, v163380; CHECK-NEXT: ret3381 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03382 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3383 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp3384 ret <vscale x 32 x i1> %13385}3386 3387define <vscale x 32 x i1> @fcmp_olt_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {3388; CHECK-LABEL: fcmp_olt_vv_nxv32f16:3389; CHECK: # %bb.0:3390; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3391; CHECK-NEXT: vmfeq.vv v24, v16, v163392; CHECK-NEXT: vmfeq.vv v25, v8, v83393; CHECK-NEXT: vmand.mm v24, v25, v243394; CHECK-NEXT: vmv1r.v v0, v243395; CHECK-NEXT: vmflt.vv v24, v8, v16, v0.t3396; CHECK-NEXT: vmv1r.v v0, v243397; CHECK-NEXT: ret3398 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp3399 ret <vscale x 32 x i1> %13400}3401 3402define <vscale x 32 x i1> @fcmp_olt_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3403; CHECK-LABEL: fcmp_olt_vf_nxv32f16:3404; CHECK: # %bb.0:3405; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3406; CHECK-NEXT: vfmv.v.f v16, fa03407; CHECK-NEXT: vmfeq.vf v24, v16, fa03408; CHECK-NEXT: vmfeq.vv v16, v8, v83409; CHECK-NEXT: vmand.mm v16, v16, v243410; CHECK-NEXT: vmv1r.v v0, v163411; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t3412; CHECK-NEXT: vmv1r.v v0, v163413; CHECK-NEXT: ret3414 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03415 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3416 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp3417 ret <vscale x 32 x i1> %13418}3419 3420define <vscale x 32 x i1> @fcmp_olt_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3421; CHECK-LABEL: fcmp_olt_fv_nxv32f16:3422; CHECK: # %bb.0:3423; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3424; CHECK-NEXT: vfmv.v.f v16, fa03425; CHECK-NEXT: vmfeq.vf v24, v16, fa03426; CHECK-NEXT: vmfeq.vv v16, v8, v83427; CHECK-NEXT: vmand.mm v16, v24, v163428; CHECK-NEXT: vmv1r.v v0, v163429; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t3430; CHECK-NEXT: vmv1r.v v0, v163431; CHECK-NEXT: ret3432 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03433 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3434 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp3435 ret <vscale x 32 x i1> %13436}3437 3438define <vscale x 32 x i1> @fcmp_ole_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {3439; CHECK-LABEL: fcmp_ole_vv_nxv32f16:3440; CHECK: # %bb.0:3441; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3442; CHECK-NEXT: vmfeq.vv v24, v16, v163443; CHECK-NEXT: vmfeq.vv v25, v8, v83444; CHECK-NEXT: vmand.mm v24, v25, v243445; CHECK-NEXT: vmv1r.v v0, v243446; CHECK-NEXT: vmfle.vv v24, v8, v16, v0.t3447; CHECK-NEXT: vmv1r.v v0, v243448; CHECK-NEXT: ret3449 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp3450 ret <vscale x 32 x i1> %13451}3452 3453define <vscale x 32 x i1> @fcmp_ole_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3454; CHECK-LABEL: fcmp_ole_vf_nxv32f16:3455; CHECK: # %bb.0:3456; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3457; CHECK-NEXT: vfmv.v.f v16, fa03458; CHECK-NEXT: vmfeq.vf v24, v16, fa03459; CHECK-NEXT: vmfeq.vv v16, v8, v83460; CHECK-NEXT: vmand.mm v16, v16, v243461; CHECK-NEXT: vmv1r.v v0, v163462; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t3463; CHECK-NEXT: vmv1r.v v0, v163464; CHECK-NEXT: ret3465 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03466 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3467 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp3468 ret <vscale x 32 x i1> %13469}3470 3471define <vscale x 32 x i1> @fcmp_ole_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3472; CHECK-LABEL: fcmp_ole_fv_nxv32f16:3473; CHECK: # %bb.0:3474; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3475; CHECK-NEXT: vfmv.v.f v16, fa03476; CHECK-NEXT: vmfeq.vf v24, v16, fa03477; CHECK-NEXT: vmfeq.vv v16, v8, v83478; CHECK-NEXT: vmand.mm v16, v24, v163479; CHECK-NEXT: vmv1r.v v0, v163480; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t3481; CHECK-NEXT: vmv1r.v v0, v163482; CHECK-NEXT: ret3483 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03484 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3485 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp3486 ret <vscale x 32 x i1> %13487}3488 3489define <vscale x 32 x i1> @fcmp_one_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {3490; CHECK-LABEL: fcmp_one_vv_nxv32f16:3491; CHECK: # %bb.0:3492; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3493; CHECK-NEXT: vmfeq.vv v24, v16, v163494; CHECK-NEXT: vmfeq.vv v25, v8, v83495; CHECK-NEXT: vmand.mm v24, v25, v243496; CHECK-NEXT: vmv1r.v v25, v243497; CHECK-NEXT: vmv1r.v v0, v243498; CHECK-NEXT: vmflt.vv v25, v8, v16, v0.t3499; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t3500; CHECK-NEXT: vmor.mm v0, v24, v253501; CHECK-NEXT: ret3502 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp3503 ret <vscale x 32 x i1> %13504}3505 3506define <vscale x 32 x i1> @fcmp_one_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3507; CHECK-LABEL: fcmp_one_vf_nxv32f16:3508; CHECK: # %bb.0:3509; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3510; CHECK-NEXT: vfmv.v.f v16, fa03511; CHECK-NEXT: vmfeq.vf v24, v16, fa03512; CHECK-NEXT: vmfeq.vv v16, v8, v83513; CHECK-NEXT: vmand.mm v16, v16, v243514; CHECK-NEXT: vmv1r.v v17, v163515; CHECK-NEXT: vmv1r.v v0, v163516; CHECK-NEXT: vmflt.vf v17, v8, fa0, v0.t3517; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t3518; CHECK-NEXT: vmor.mm v0, v16, v173519; CHECK-NEXT: ret3520 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03521 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3522 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp3523 ret <vscale x 32 x i1> %13524}3525 3526define <vscale x 32 x i1> @fcmp_one_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3527; CHECK-LABEL: fcmp_one_fv_nxv32f16:3528; CHECK: # %bb.0:3529; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3530; CHECK-NEXT: vfmv.v.f v16, fa03531; CHECK-NEXT: vmfeq.vf v24, v16, fa03532; CHECK-NEXT: vmfeq.vv v16, v8, v83533; CHECK-NEXT: vmand.mm v16, v24, v163534; CHECK-NEXT: vmv1r.v v17, v163535; CHECK-NEXT: vmv1r.v v0, v163536; CHECK-NEXT: vmfgt.vf v17, v8, fa0, v0.t3537; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t3538; CHECK-NEXT: vmor.mm v0, v16, v173539; CHECK-NEXT: ret3540 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03541 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3542 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp3543 ret <vscale x 32 x i1> %13544}3545 3546define <vscale x 32 x i1> @fcmp_ord_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {3547; CHECK-LABEL: fcmp_ord_vv_nxv32f16:3548; CHECK: # %bb.0:3549; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3550; CHECK-NEXT: vmfeq.vv v24, v16, v163551; CHECK-NEXT: vmfeq.vv v16, v8, v83552; CHECK-NEXT: vmand.mm v0, v16, v243553; CHECK-NEXT: ret3554 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp3555 ret <vscale x 32 x i1> %13556}3557 3558define <vscale x 32 x i1> @fcmp_ord_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3559; CHECK-LABEL: fcmp_ord_vf_nxv32f16:3560; CHECK: # %bb.0:3561; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3562; CHECK-NEXT: vfmv.v.f v16, fa03563; CHECK-NEXT: vmfeq.vf v24, v16, fa03564; CHECK-NEXT: vmfeq.vv v16, v8, v83565; CHECK-NEXT: vmand.mm v0, v16, v243566; CHECK-NEXT: ret3567 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03568 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3569 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp3570 ret <vscale x 32 x i1> %13571}3572 3573define <vscale x 32 x i1> @fcmp_ord_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3574; CHECK-LABEL: fcmp_ord_fv_nxv32f16:3575; CHECK: # %bb.0:3576; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3577; CHECK-NEXT: vfmv.v.f v16, fa03578; CHECK-NEXT: vmfeq.vf v24, v16, fa03579; CHECK-NEXT: vmfeq.vv v16, v8, v83580; CHECK-NEXT: vmand.mm v0, v24, v163581; CHECK-NEXT: ret3582 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03583 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3584 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp3585 ret <vscale x 32 x i1> %13586}3587 3588define <vscale x 32 x i1> @fcmp_ueq_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {3589; CHECK-LABEL: fcmp_ueq_vv_nxv32f16:3590; CHECK: # %bb.0:3591; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3592; CHECK-NEXT: vmfeq.vv v24, v16, v163593; CHECK-NEXT: vmfeq.vv v25, v8, v83594; CHECK-NEXT: vmand.mm v24, v25, v243595; CHECK-NEXT: vmv1r.v v25, v243596; CHECK-NEXT: vmv1r.v v0, v243597; CHECK-NEXT: vmflt.vv v25, v8, v16, v0.t3598; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t3599; CHECK-NEXT: vmnor.mm v0, v24, v253600; CHECK-NEXT: ret3601 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp3602 ret <vscale x 32 x i1> %13603}3604 3605define <vscale x 32 x i1> @fcmp_ueq_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3606; CHECK-LABEL: fcmp_ueq_vf_nxv32f16:3607; CHECK: # %bb.0:3608; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3609; CHECK-NEXT: vfmv.v.f v16, fa03610; CHECK-NEXT: vmfeq.vf v24, v16, fa03611; CHECK-NEXT: vmfeq.vv v16, v8, v83612; CHECK-NEXT: vmand.mm v16, v16, v243613; CHECK-NEXT: vmv1r.v v17, v163614; CHECK-NEXT: vmv1r.v v0, v163615; CHECK-NEXT: vmflt.vf v17, v8, fa0, v0.t3616; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t3617; CHECK-NEXT: vmnor.mm v0, v16, v173618; CHECK-NEXT: ret3619 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03620 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3621 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp3622 ret <vscale x 32 x i1> %13623}3624 3625define <vscale x 32 x i1> @fcmp_ueq_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3626; CHECK-LABEL: fcmp_ueq_fv_nxv32f16:3627; CHECK: # %bb.0:3628; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3629; CHECK-NEXT: vfmv.v.f v16, fa03630; CHECK-NEXT: vmfeq.vf v24, v16, fa03631; CHECK-NEXT: vmfeq.vv v16, v8, v83632; CHECK-NEXT: vmand.mm v16, v24, v163633; CHECK-NEXT: vmv1r.v v17, v163634; CHECK-NEXT: vmv1r.v v0, v163635; CHECK-NEXT: vmfgt.vf v17, v8, fa0, v0.t3636; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t3637; CHECK-NEXT: vmnor.mm v0, v16, v173638; CHECK-NEXT: ret3639 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03640 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3641 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp3642 ret <vscale x 32 x i1> %13643}3644 3645define <vscale x 32 x i1> @fcmp_ugt_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {3646; CHECK-LABEL: fcmp_ugt_vv_nxv32f16:3647; CHECK: # %bb.0:3648; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3649; CHECK-NEXT: vmfeq.vv v24, v16, v163650; CHECK-NEXT: vmfeq.vv v25, v8, v83651; CHECK-NEXT: vmand.mm v24, v25, v243652; CHECK-NEXT: vmv1r.v v0, v243653; CHECK-NEXT: vmfle.vv v24, v8, v16, v0.t3654; CHECK-NEXT: vmnot.m v0, v243655; CHECK-NEXT: ret3656 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp3657 ret <vscale x 32 x i1> %13658}3659 3660define <vscale x 32 x i1> @fcmp_ugt_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3661; CHECK-LABEL: fcmp_ugt_vf_nxv32f16:3662; CHECK: # %bb.0:3663; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3664; CHECK-NEXT: vfmv.v.f v16, fa03665; CHECK-NEXT: vmfeq.vf v24, v16, fa03666; CHECK-NEXT: vmfeq.vv v16, v8, v83667; CHECK-NEXT: vmand.mm v16, v16, v243668; CHECK-NEXT: vmv1r.v v0, v163669; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t3670; CHECK-NEXT: vmnot.m v0, v163671; CHECK-NEXT: ret3672 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03673 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3674 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp3675 ret <vscale x 32 x i1> %13676}3677 3678define <vscale x 32 x i1> @fcmp_ugt_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3679; CHECK-LABEL: fcmp_ugt_fv_nxv32f16:3680; CHECK: # %bb.0:3681; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3682; CHECK-NEXT: vfmv.v.f v16, fa03683; CHECK-NEXT: vmfeq.vf v24, v16, fa03684; CHECK-NEXT: vmfeq.vv v16, v8, v83685; CHECK-NEXT: vmand.mm v16, v24, v163686; CHECK-NEXT: vmv1r.v v0, v163687; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t3688; CHECK-NEXT: vmnot.m v0, v163689; CHECK-NEXT: ret3690 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03691 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3692 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp3693 ret <vscale x 32 x i1> %13694}3695 3696define <vscale x 32 x i1> @fcmp_uge_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {3697; CHECK-LABEL: fcmp_uge_vv_nxv32f16:3698; CHECK: # %bb.0:3699; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3700; CHECK-NEXT: vmfeq.vv v24, v16, v163701; CHECK-NEXT: vmfeq.vv v25, v8, v83702; CHECK-NEXT: vmand.mm v24, v25, v243703; CHECK-NEXT: vmv1r.v v0, v243704; CHECK-NEXT: vmflt.vv v24, v8, v16, v0.t3705; CHECK-NEXT: vmnot.m v0, v243706; CHECK-NEXT: ret3707 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp3708 ret <vscale x 32 x i1> %13709}3710 3711define <vscale x 32 x i1> @fcmp_uge_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3712; CHECK-LABEL: fcmp_uge_vf_nxv32f16:3713; CHECK: # %bb.0:3714; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3715; CHECK-NEXT: vfmv.v.f v16, fa03716; CHECK-NEXT: vmfeq.vf v24, v16, fa03717; CHECK-NEXT: vmfeq.vv v16, v8, v83718; CHECK-NEXT: vmand.mm v16, v16, v243719; CHECK-NEXT: vmv1r.v v0, v163720; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t3721; CHECK-NEXT: vmnot.m v0, v163722; CHECK-NEXT: ret3723 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03724 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3725 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp3726 ret <vscale x 32 x i1> %13727}3728 3729define <vscale x 32 x i1> @fcmp_uge_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3730; CHECK-LABEL: fcmp_uge_fv_nxv32f16:3731; CHECK: # %bb.0:3732; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3733; CHECK-NEXT: vfmv.v.f v16, fa03734; CHECK-NEXT: vmfeq.vf v24, v16, fa03735; CHECK-NEXT: vmfeq.vv v16, v8, v83736; CHECK-NEXT: vmand.mm v16, v24, v163737; CHECK-NEXT: vmv1r.v v0, v163738; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t3739; CHECK-NEXT: vmnot.m v0, v163740; CHECK-NEXT: ret3741 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03742 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3743 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp3744 ret <vscale x 32 x i1> %13745}3746 3747define <vscale x 32 x i1> @fcmp_ult_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {3748; CHECK-LABEL: fcmp_ult_vv_nxv32f16:3749; CHECK: # %bb.0:3750; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3751; CHECK-NEXT: vmfeq.vv v24, v8, v83752; CHECK-NEXT: vmfeq.vv v25, v16, v163753; CHECK-NEXT: vmand.mm v24, v25, v243754; CHECK-NEXT: vmv1r.v v0, v243755; CHECK-NEXT: vmfle.vv v24, v16, v8, v0.t3756; CHECK-NEXT: vmnot.m v0, v243757; CHECK-NEXT: ret3758 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp3759 ret <vscale x 32 x i1> %13760}3761 3762define <vscale x 32 x i1> @fcmp_ult_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3763; CHECK-LABEL: fcmp_ult_vf_nxv32f16:3764; CHECK: # %bb.0:3765; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3766; CHECK-NEXT: vfmv.v.f v16, fa03767; CHECK-NEXT: vmfeq.vf v24, v16, fa03768; CHECK-NEXT: vmfeq.vv v16, v8, v83769; CHECK-NEXT: vmand.mm v16, v24, v163770; CHECK-NEXT: vmv1r.v v0, v163771; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t3772; CHECK-NEXT: vmnot.m v0, v163773; CHECK-NEXT: ret3774 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03775 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3776 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp3777 ret <vscale x 32 x i1> %13778}3779 3780define <vscale x 32 x i1> @fcmp_ult_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3781; CHECK-LABEL: fcmp_ult_fv_nxv32f16:3782; CHECK: # %bb.0:3783; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3784; CHECK-NEXT: vfmv.v.f v16, fa03785; CHECK-NEXT: vmfeq.vf v24, v16, fa03786; CHECK-NEXT: vmfeq.vv v16, v8, v83787; CHECK-NEXT: vmand.mm v16, v16, v243788; CHECK-NEXT: vmv1r.v v0, v163789; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t3790; CHECK-NEXT: vmnot.m v0, v163791; CHECK-NEXT: ret3792 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03793 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3794 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp3795 ret <vscale x 32 x i1> %13796}3797 3798define <vscale x 32 x i1> @fcmp_ule_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {3799; CHECK-LABEL: fcmp_ule_vv_nxv32f16:3800; CHECK: # %bb.0:3801; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3802; CHECK-NEXT: vmfeq.vv v24, v8, v83803; CHECK-NEXT: vmfeq.vv v25, v16, v163804; CHECK-NEXT: vmand.mm v24, v25, v243805; CHECK-NEXT: vmv1r.v v0, v243806; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t3807; CHECK-NEXT: vmnot.m v0, v243808; CHECK-NEXT: ret3809 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp3810 ret <vscale x 32 x i1> %13811}3812 3813define <vscale x 32 x i1> @fcmp_ule_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3814; CHECK-LABEL: fcmp_ule_vf_nxv32f16:3815; CHECK: # %bb.0:3816; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3817; CHECK-NEXT: vfmv.v.f v16, fa03818; CHECK-NEXT: vmfeq.vf v24, v16, fa03819; CHECK-NEXT: vmfeq.vv v16, v8, v83820; CHECK-NEXT: vmand.mm v16, v24, v163821; CHECK-NEXT: vmv1r.v v0, v163822; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t3823; CHECK-NEXT: vmnot.m v0, v163824; CHECK-NEXT: ret3825 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03826 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3827 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp3828 ret <vscale x 32 x i1> %13829}3830 3831define <vscale x 32 x i1> @fcmp_ule_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3832; CHECK-LABEL: fcmp_ule_fv_nxv32f16:3833; CHECK: # %bb.0:3834; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu3835; CHECK-NEXT: vfmv.v.f v16, fa03836; CHECK-NEXT: vmfeq.vf v24, v16, fa03837; CHECK-NEXT: vmfeq.vv v16, v8, v83838; CHECK-NEXT: vmand.mm v16, v16, v243839; CHECK-NEXT: vmv1r.v v0, v163840; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t3841; CHECK-NEXT: vmnot.m v0, v163842; CHECK-NEXT: ret3843 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03844 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3845 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp3846 ret <vscale x 32 x i1> %13847}3848 3849define <vscale x 32 x i1> @fcmp_une_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {3850; CHECK-LABEL: fcmp_une_vv_nxv32f16:3851; CHECK: # %bb.0:3852; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3853; CHECK-NEXT: vmfne.vv v0, v8, v163854; CHECK-NEXT: ret3855 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp3856 ret <vscale x 32 x i1> %13857}3858 3859define <vscale x 32 x i1> @fcmp_une_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3860; CHECK-LABEL: fcmp_une_vf_nxv32f16:3861; CHECK: # %bb.0:3862; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3863; CHECK-NEXT: vmfne.vf v0, v8, fa03864; CHECK-NEXT: ret3865 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03866 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3867 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp3868 ret <vscale x 32 x i1> %13869}3870 3871define <vscale x 32 x i1> @fcmp_une_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3872; CHECK-LABEL: fcmp_une_fv_nxv32f16:3873; CHECK: # %bb.0:3874; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3875; CHECK-NEXT: vmfne.vf v0, v8, fa03876; CHECK-NEXT: ret3877 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03878 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3879 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp3880 ret <vscale x 32 x i1> %13881}3882 3883define <vscale x 32 x i1> @fcmp_uno_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {3884; CHECK-LABEL: fcmp_uno_vv_nxv32f16:3885; CHECK: # %bb.0:3886; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3887; CHECK-NEXT: vmfne.vv v24, v16, v163888; CHECK-NEXT: vmfne.vv v16, v8, v83889; CHECK-NEXT: vmor.mm v0, v16, v243890; CHECK-NEXT: ret3891 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp3892 ret <vscale x 32 x i1> %13893}3894 3895define <vscale x 32 x i1> @fcmp_uno_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3896; CHECK-LABEL: fcmp_uno_vf_nxv32f16:3897; CHECK: # %bb.0:3898; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3899; CHECK-NEXT: vfmv.v.f v16, fa03900; CHECK-NEXT: vmfne.vf v24, v16, fa03901; CHECK-NEXT: vmfne.vv v16, v8, v83902; CHECK-NEXT: vmor.mm v0, v16, v243903; CHECK-NEXT: ret3904 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03905 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3906 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp3907 ret <vscale x 32 x i1> %13908}3909 3910define <vscale x 32 x i1> @fcmp_uno_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3911; CHECK-LABEL: fcmp_uno_fv_nxv32f16:3912; CHECK: # %bb.0:3913; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3914; CHECK-NEXT: vfmv.v.f v16, fa03915; CHECK-NEXT: vmfne.vf v24, v16, fa03916; CHECK-NEXT: vmfne.vv v16, v8, v83917; CHECK-NEXT: vmor.mm v0, v24, v163918; CHECK-NEXT: ret3919 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03920 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3921 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp3922 ret <vscale x 32 x i1> %13923}3924 3925define <vscale x 1 x i1> @fcmp_oeq_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {3926; CHECK-LABEL: fcmp_oeq_vv_nxv1f32:3927; CHECK: # %bb.0:3928; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3929; CHECK-NEXT: vmfeq.vv v0, v8, v93930; CHECK-NEXT: ret3931 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp3932 ret <vscale x 1 x i1> %13933}3934 3935define <vscale x 1 x i1> @fcmp_oeq_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3936; CHECK-LABEL: fcmp_oeq_vf_nxv1f32:3937; CHECK: # %bb.0:3938; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3939; CHECK-NEXT: vmfeq.vf v0, v8, fa03940; CHECK-NEXT: ret3941 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03942 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3943 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp3944 ret <vscale x 1 x i1> %13945}3946 3947define <vscale x 1 x i1> @fcmp_oeq_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3948; CHECK-LABEL: fcmp_oeq_fv_nxv1f32:3949; CHECK: # %bb.0:3950; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3951; CHECK-NEXT: vmfeq.vf v0, v8, fa03952; CHECK-NEXT: ret3953 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03954 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3955 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp3956 ret <vscale x 1 x i1> %13957}3958 3959define <vscale x 1 x i1> @fcmp_ogt_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {3960; CHECK-LABEL: fcmp_ogt_vv_nxv1f32:3961; CHECK: # %bb.0:3962; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp3969 ret <vscale x 1 x i1> %13970}3971 3972define <vscale x 1 x i1> @fcmp_ogt_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3973; CHECK-LABEL: fcmp_ogt_vf_nxv1f32:3974; CHECK: # %bb.0:3975; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu3976; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 03983 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3984 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp3985 ret <vscale x 1 x i1> %13986}3987 3988define <vscale x 1 x i1> @fcmp_ogt_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3989; CHECK-LABEL: fcmp_ogt_fv_nxv1f32:3990; CHECK: # %bb.0:3991; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu3992; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 03999 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4000 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp4001 ret <vscale x 1 x i1> %14002}4003 4004define <vscale x 1 x i1> @fcmp_oge_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {4005; CHECK-LABEL: fcmp_oge_vv_nxv1f32:4006; CHECK: # %bb.0:4007; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp4014 ret <vscale x 1 x i1> %14015}4016 4017define <vscale x 1 x i1> @fcmp_oge_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4018; CHECK-LABEL: fcmp_oge_vf_nxv1f32:4019; CHECK: # %bb.0:4020; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu4021; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 04028 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4029 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp4030 ret <vscale x 1 x i1> %14031}4032 4033define <vscale x 1 x i1> @fcmp_oge_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4034; CHECK-LABEL: fcmp_oge_fv_nxv1f32:4035; CHECK: # %bb.0:4036; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu4037; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 04044 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4045 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp4046 ret <vscale x 1 x i1> %14047}4048 4049define <vscale x 1 x i1> @fcmp_olt_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {4050; CHECK-LABEL: fcmp_olt_vv_nxv1f32:4051; CHECK: # %bb.0:4052; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp4059 ret <vscale x 1 x i1> %14060}4061 4062define <vscale x 1 x i1> @fcmp_olt_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4063; CHECK-LABEL: fcmp_olt_vf_nxv1f32:4064; CHECK: # %bb.0:4065; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu4066; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 04073 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4074 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp4075 ret <vscale x 1 x i1> %14076}4077 4078define <vscale x 1 x i1> @fcmp_olt_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4079; CHECK-LABEL: fcmp_olt_fv_nxv1f32:4080; CHECK: # %bb.0:4081; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu4082; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 04089 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4090 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp4091 ret <vscale x 1 x i1> %14092}4093 4094define <vscale x 1 x i1> @fcmp_ole_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {4095; CHECK-LABEL: fcmp_ole_vv_nxv1f32:4096; CHECK: # %bb.0:4097; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp4104 ret <vscale x 1 x i1> %14105}4106 4107define <vscale x 1 x i1> @fcmp_ole_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4108; CHECK-LABEL: fcmp_ole_vf_nxv1f32:4109; CHECK: # %bb.0:4110; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu4111; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 04118 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4119 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp4120 ret <vscale x 1 x i1> %14121}4122 4123define <vscale x 1 x i1> @fcmp_ole_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4124; CHECK-LABEL: fcmp_ole_fv_nxv1f32:4125; CHECK: # %bb.0:4126; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu4127; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 04134 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4135 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp4136 ret <vscale x 1 x i1> %14137}4138 4139define <vscale x 1 x i1> @fcmp_one_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {4140; CHECK-LABEL: fcmp_one_vv_nxv1f32:4141; CHECK: # %bb.0:4142; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp4152 ret <vscale x 1 x i1> %14153}4154 4155define <vscale x 1 x i1> @fcmp_one_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4156; CHECK-LABEL: fcmp_one_vf_nxv1f32:4157; CHECK: # %bb.0:4158; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu4159; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 04169 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4170 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp4171 ret <vscale x 1 x i1> %14172}4173 4174define <vscale x 1 x i1> @fcmp_one_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4175; CHECK-LABEL: fcmp_one_fv_nxv1f32:4176; CHECK: # %bb.0:4177; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu4178; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 04188 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4189 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp4190 ret <vscale x 1 x i1> %14191}4192 4193define <vscale x 1 x i1> @fcmp_ord_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {4194; CHECK-LABEL: fcmp_ord_vv_nxv1f32:4195; CHECK: # %bb.0:4196; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp4202 ret <vscale x 1 x i1> %14203}4204 4205define <vscale x 1 x i1> @fcmp_ord_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4206; CHECK-LABEL: fcmp_ord_vf_nxv1f32:4207; CHECK: # %bb.0:4208; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma4209; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 04215 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4216 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp4217 ret <vscale x 1 x i1> %14218}4219 4220define <vscale x 1 x i1> @fcmp_ord_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4221; CHECK-LABEL: fcmp_ord_fv_nxv1f32:4222; CHECK: # %bb.0:4223; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma4224; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 04230 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4231 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp4232 ret <vscale x 1 x i1> %14233}4234 4235define <vscale x 1 x i1> @fcmp_ueq_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {4236; CHECK-LABEL: fcmp_ueq_vv_nxv1f32:4237; CHECK: # %bb.0:4238; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp4248 ret <vscale x 1 x i1> %14249}4250 4251define <vscale x 1 x i1> @fcmp_ueq_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4252; CHECK-LABEL: fcmp_ueq_vf_nxv1f32:4253; CHECK: # %bb.0:4254; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu4255; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 04265 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4266 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp4267 ret <vscale x 1 x i1> %14268}4269 4270define <vscale x 1 x i1> @fcmp_ueq_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4271; CHECK-LABEL: fcmp_ueq_fv_nxv1f32:4272; CHECK: # %bb.0:4273; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu4274; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 04284 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4285 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp4286 ret <vscale x 1 x i1> %14287}4288 4289define <vscale x 1 x i1> @fcmp_ugt_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {4290; CHECK-LABEL: fcmp_ugt_vv_nxv1f32:4291; CHECK: # %bb.0:4292; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp4300 ret <vscale x 1 x i1> %14301}4302 4303define <vscale x 1 x i1> @fcmp_ugt_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4304; CHECK-LABEL: fcmp_ugt_vf_nxv1f32:4305; CHECK: # %bb.0:4306; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu4307; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 04315 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4316 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp4317 ret <vscale x 1 x i1> %14318}4319 4320define <vscale x 1 x i1> @fcmp_ugt_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4321; CHECK-LABEL: fcmp_ugt_fv_nxv1f32:4322; CHECK: # %bb.0:4323; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu4324; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 04332 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4333 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp4334 ret <vscale x 1 x i1> %14335}4336 4337define <vscale x 1 x i1> @fcmp_uge_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {4338; CHECK-LABEL: fcmp_uge_vv_nxv1f32:4339; CHECK: # %bb.0:4340; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp4348 ret <vscale x 1 x i1> %14349}4350 4351define <vscale x 1 x i1> @fcmp_uge_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4352; CHECK-LABEL: fcmp_uge_vf_nxv1f32:4353; CHECK: # %bb.0:4354; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu4355; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 04363 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4364 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp4365 ret <vscale x 1 x i1> %14366}4367 4368define <vscale x 1 x i1> @fcmp_uge_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4369; CHECK-LABEL: fcmp_uge_fv_nxv1f32:4370; CHECK: # %bb.0:4371; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu4372; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 04380 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4381 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp4382 ret <vscale x 1 x i1> %14383}4384 4385define <vscale x 1 x i1> @fcmp_ult_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {4386; CHECK-LABEL: fcmp_ult_vv_nxv1f32:4387; CHECK: # %bb.0:4388; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp4396 ret <vscale x 1 x i1> %14397}4398 4399define <vscale x 1 x i1> @fcmp_ult_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4400; CHECK-LABEL: fcmp_ult_vf_nxv1f32:4401; CHECK: # %bb.0:4402; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu4403; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 04411 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4412 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp4413 ret <vscale x 1 x i1> %14414}4415 4416define <vscale x 1 x i1> @fcmp_ult_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4417; CHECK-LABEL: fcmp_ult_fv_nxv1f32:4418; CHECK: # %bb.0:4419; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu4420; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 04428 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4429 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp4430 ret <vscale x 1 x i1> %14431}4432 4433define <vscale x 1 x i1> @fcmp_ule_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {4434; CHECK-LABEL: fcmp_ule_vv_nxv1f32:4435; CHECK: # %bb.0:4436; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp4444 ret <vscale x 1 x i1> %14445}4446 4447define <vscale x 1 x i1> @fcmp_ule_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4448; CHECK-LABEL: fcmp_ule_vf_nxv1f32:4449; CHECK: # %bb.0:4450; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu4451; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 04459 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4460 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp4461 ret <vscale x 1 x i1> %14462}4463 4464define <vscale x 1 x i1> @fcmp_ule_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4465; CHECK-LABEL: fcmp_ule_fv_nxv1f32:4466; CHECK: # %bb.0:4467; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu4468; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 04476 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4477 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp4478 ret <vscale x 1 x i1> %14479}4480 4481define <vscale x 1 x i1> @fcmp_une_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {4482; CHECK-LABEL: fcmp_une_vv_nxv1f32:4483; CHECK: # %bb.0:4484; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma4485; CHECK-NEXT: vmfne.vv v0, v8, v94486; CHECK-NEXT: ret4487 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp4488 ret <vscale x 1 x i1> %14489}4490 4491define <vscale x 1 x i1> @fcmp_une_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4492; CHECK-LABEL: fcmp_une_vf_nxv1f32:4493; CHECK: # %bb.0:4494; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma4495; CHECK-NEXT: vmfne.vf v0, v8, fa04496; CHECK-NEXT: ret4497 %head = insertelement <vscale x 1 x float> poison, float %b, i32 04498 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4499 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp4500 ret <vscale x 1 x i1> %14501}4502 4503define <vscale x 1 x i1> @fcmp_une_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4504; CHECK-LABEL: fcmp_une_fv_nxv1f32:4505; CHECK: # %bb.0:4506; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma4507; CHECK-NEXT: vmfne.vf v0, v8, fa04508; CHECK-NEXT: ret4509 %head = insertelement <vscale x 1 x float> poison, float %b, i32 04510 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4511 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp4512 ret <vscale x 1 x i1> %14513}4514 4515define <vscale x 1 x i1> @fcmp_uno_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {4516; CHECK-LABEL: fcmp_uno_vv_nxv1f32:4517; CHECK: # %bb.0:4518; CHECK-NEXT: vsetvli a0, zero, 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 <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp4524 ret <vscale x 1 x i1> %14525}4526 4527define <vscale x 1 x i1> @fcmp_uno_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4528; CHECK-LABEL: fcmp_uno_vf_nxv1f32:4529; CHECK: # %bb.0:4530; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma4531; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 04537 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4538 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp4539 ret <vscale x 1 x i1> %14540}4541 4542define <vscale x 1 x i1> @fcmp_uno_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {4543; CHECK-LABEL: fcmp_uno_fv_nxv1f32:4544; CHECK: # %bb.0:4545; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma4546; CHECK-NEXT: vfmv.v.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 <vscale x 1 x float> poison, float %b, i32 04552 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer4553 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp4554 ret <vscale x 1 x i1> %14555}4556 4557define <vscale x 2 x i1> @fcmp_oeq_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {4558; CHECK-LABEL: fcmp_oeq_vv_nxv2f32:4559; CHECK: # %bb.0:4560; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma4561; CHECK-NEXT: vmfeq.vv v0, v8, v94562; CHECK-NEXT: ret4563 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp4564 ret <vscale x 2 x i1> %14565}4566 4567define <vscale x 2 x i1> @fcmp_oeq_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4568; CHECK-LABEL: fcmp_oeq_vf_nxv2f32:4569; CHECK: # %bb.0:4570; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma4571; CHECK-NEXT: vmfeq.vf v0, v8, fa04572; CHECK-NEXT: ret4573 %head = insertelement <vscale x 2 x float> poison, float %b, i32 04574 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4575 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp4576 ret <vscale x 2 x i1> %14577}4578 4579define <vscale x 2 x i1> @fcmp_oeq_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4580; CHECK-LABEL: fcmp_oeq_fv_nxv2f32:4581; CHECK: # %bb.0:4582; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma4583; CHECK-NEXT: vmfeq.vf v0, v8, fa04584; CHECK-NEXT: ret4585 %head = insertelement <vscale x 2 x float> poison, float %b, i32 04586 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4587 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp4588 ret <vscale x 2 x i1> %14589}4590 4591define <vscale x 2 x i1> @fcmp_ogt_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {4592; CHECK-LABEL: fcmp_ogt_vv_nxv2f32:4593; CHECK: # %bb.0:4594; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp4601 ret <vscale x 2 x i1> %14602}4603 4604define <vscale x 2 x i1> @fcmp_ogt_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4605; CHECK-LABEL: fcmp_ogt_vf_nxv2f32:4606; CHECK: # %bb.0:4607; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x float> poison, float %b, i32 04615 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4616 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp4617 ret <vscale x 2 x i1> %14618}4619 4620define <vscale x 2 x i1> @fcmp_ogt_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4621; CHECK-LABEL: fcmp_ogt_fv_nxv2f32:4622; CHECK: # %bb.0:4623; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x float> poison, float %b, i32 04631 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4632 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp4633 ret <vscale x 2 x i1> %14634}4635 4636define <vscale x 2 x i1> @fcmp_oge_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {4637; CHECK-LABEL: fcmp_oge_vv_nxv2f32:4638; CHECK: # %bb.0:4639; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp4646 ret <vscale x 2 x i1> %14647}4648 4649define <vscale x 2 x i1> @fcmp_oge_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4650; CHECK-LABEL: fcmp_oge_vf_nxv2f32:4651; CHECK: # %bb.0:4652; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x float> poison, float %b, i32 04660 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4661 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp4662 ret <vscale x 2 x i1> %14663}4664 4665define <vscale x 2 x i1> @fcmp_oge_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4666; CHECK-LABEL: fcmp_oge_fv_nxv2f32:4667; CHECK: # %bb.0:4668; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x float> poison, float %b, i32 04676 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4677 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp4678 ret <vscale x 2 x i1> %14679}4680 4681define <vscale x 2 x i1> @fcmp_olt_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {4682; CHECK-LABEL: fcmp_olt_vv_nxv2f32:4683; CHECK: # %bb.0:4684; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp4691 ret <vscale x 2 x i1> %14692}4693 4694define <vscale x 2 x i1> @fcmp_olt_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4695; CHECK-LABEL: fcmp_olt_vf_nxv2f32:4696; CHECK: # %bb.0:4697; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x float> poison, float %b, i32 04705 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4706 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp4707 ret <vscale x 2 x i1> %14708}4709 4710define <vscale x 2 x i1> @fcmp_olt_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4711; CHECK-LABEL: fcmp_olt_fv_nxv2f32:4712; CHECK: # %bb.0:4713; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x float> poison, float %b, i32 04721 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4722 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp4723 ret <vscale x 2 x i1> %14724}4725 4726define <vscale x 2 x i1> @fcmp_ole_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {4727; CHECK-LABEL: fcmp_ole_vv_nxv2f32:4728; CHECK: # %bb.0:4729; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp4736 ret <vscale x 2 x i1> %14737}4738 4739define <vscale x 2 x i1> @fcmp_ole_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4740; CHECK-LABEL: fcmp_ole_vf_nxv2f32:4741; CHECK: # %bb.0:4742; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x float> poison, float %b, i32 04750 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4751 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp4752 ret <vscale x 2 x i1> %14753}4754 4755define <vscale x 2 x i1> @fcmp_ole_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4756; CHECK-LABEL: fcmp_ole_fv_nxv2f32:4757; CHECK: # %bb.0:4758; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x float> poison, float %b, i32 04766 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4767 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp4768 ret <vscale x 2 x i1> %14769}4770 4771define <vscale x 2 x i1> @fcmp_one_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {4772; CHECK-LABEL: fcmp_one_vv_nxv2f32:4773; CHECK: # %bb.0:4774; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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: vmv.v.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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp4784 ret <vscale x 2 x i1> %14785}4786 4787define <vscale x 2 x i1> @fcmp_one_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4788; CHECK-LABEL: fcmp_one_vf_nxv2f32:4789; CHECK: # %bb.0:4790; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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: vmv.v.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 <vscale x 2 x float> poison, float %b, i32 04801 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4802 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp4803 ret <vscale x 2 x i1> %14804}4805 4806define <vscale x 2 x i1> @fcmp_one_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4807; CHECK-LABEL: fcmp_one_fv_nxv2f32:4808; CHECK: # %bb.0:4809; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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: vmv.v.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 <vscale x 2 x float> poison, float %b, i32 04820 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4821 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp4822 ret <vscale x 2 x i1> %14823}4824 4825define <vscale x 2 x i1> @fcmp_ord_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {4826; CHECK-LABEL: fcmp_ord_vv_nxv2f32:4827; CHECK: # %bb.0:4828; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp4834 ret <vscale x 2 x i1> %14835}4836 4837define <vscale x 2 x i1> @fcmp_ord_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4838; CHECK-LABEL: fcmp_ord_vf_nxv2f32:4839; CHECK: # %bb.0:4840; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x float> poison, float %b, i32 04847 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4848 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp4849 ret <vscale x 2 x i1> %14850}4851 4852define <vscale x 2 x i1> @fcmp_ord_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4853; CHECK-LABEL: fcmp_ord_fv_nxv2f32:4854; CHECK: # %bb.0:4855; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x float> poison, float %b, i32 04862 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4863 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp4864 ret <vscale x 2 x i1> %14865}4866 4867define <vscale x 2 x i1> @fcmp_ueq_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {4868; CHECK-LABEL: fcmp_ueq_vv_nxv2f32:4869; CHECK: # %bb.0:4870; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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: vmv.v.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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp4880 ret <vscale x 2 x i1> %14881}4882 4883define <vscale x 2 x i1> @fcmp_ueq_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4884; CHECK-LABEL: fcmp_ueq_vf_nxv2f32:4885; CHECK: # %bb.0:4886; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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: vmv.v.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 <vscale x 2 x float> poison, float %b, i32 04897 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4898 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp4899 ret <vscale x 2 x i1> %14900}4901 4902define <vscale x 2 x i1> @fcmp_ueq_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4903; CHECK-LABEL: fcmp_ueq_fv_nxv2f32:4904; CHECK: # %bb.0:4905; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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: vmv.v.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 <vscale x 2 x float> poison, float %b, i32 04916 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4917 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp4918 ret <vscale x 2 x i1> %14919}4920 4921define <vscale x 2 x i1> @fcmp_ugt_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {4922; CHECK-LABEL: fcmp_ugt_vv_nxv2f32:4923; CHECK: # %bb.0:4924; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp4932 ret <vscale x 2 x i1> %14933}4934 4935define <vscale x 2 x i1> @fcmp_ugt_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4936; CHECK-LABEL: fcmp_ugt_vf_nxv2f32:4937; CHECK: # %bb.0:4938; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x float> poison, float %b, i32 04947 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4948 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp4949 ret <vscale x 2 x i1> %14950}4951 4952define <vscale x 2 x i1> @fcmp_ugt_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4953; CHECK-LABEL: fcmp_ugt_fv_nxv2f32:4954; CHECK: # %bb.0:4955; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x float> poison, float %b, i32 04964 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4965 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp4966 ret <vscale x 2 x i1> %14967}4968 4969define <vscale x 2 x i1> @fcmp_uge_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {4970; CHECK-LABEL: fcmp_uge_vv_nxv2f32:4971; CHECK: # %bb.0:4972; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp4980 ret <vscale x 2 x i1> %14981}4982 4983define <vscale x 2 x i1> @fcmp_uge_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4984; CHECK-LABEL: fcmp_uge_vf_nxv2f32:4985; CHECK: # %bb.0:4986; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x float> poison, float %b, i32 04995 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4996 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp4997 ret <vscale x 2 x i1> %14998}4999 5000define <vscale x 2 x i1> @fcmp_uge_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {5001; CHECK-LABEL: fcmp_uge_fv_nxv2f32:5002; CHECK: # %bb.0:5003; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x float> poison, float %b, i32 05012 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer5013 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp5014 ret <vscale x 2 x i1> %15015}5016 5017define <vscale x 2 x i1> @fcmp_ult_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {5018; CHECK-LABEL: fcmp_ult_vv_nxv2f32:5019; CHECK: # %bb.0:5020; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp5028 ret <vscale x 2 x i1> %15029}5030 5031define <vscale x 2 x i1> @fcmp_ult_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {5032; CHECK-LABEL: fcmp_ult_vf_nxv2f32:5033; CHECK: # %bb.0:5034; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x float> poison, float %b, i32 05043 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer5044 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp5045 ret <vscale x 2 x i1> %15046}5047 5048define <vscale x 2 x i1> @fcmp_ult_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {5049; CHECK-LABEL: fcmp_ult_fv_nxv2f32:5050; CHECK: # %bb.0:5051; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x float> poison, float %b, i32 05060 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer5061 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp5062 ret <vscale x 2 x i1> %15063}5064 5065define <vscale x 2 x i1> @fcmp_ule_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {5066; CHECK-LABEL: fcmp_ule_vv_nxv2f32:5067; CHECK: # %bb.0:5068; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp5076 ret <vscale x 2 x i1> %15077}5078 5079define <vscale x 2 x i1> @fcmp_ule_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {5080; CHECK-LABEL: fcmp_ule_vf_nxv2f32:5081; CHECK: # %bb.0:5082; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x float> poison, float %b, i32 05091 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer5092 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp5093 ret <vscale x 2 x i1> %15094}5095 5096define <vscale x 2 x i1> @fcmp_ule_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {5097; CHECK-LABEL: fcmp_ule_fv_nxv2f32:5098; CHECK: # %bb.0:5099; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x float> poison, float %b, i32 05108 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer5109 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp5110 ret <vscale x 2 x i1> %15111}5112 5113define <vscale x 2 x i1> @fcmp_une_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {5114; CHECK-LABEL: fcmp_une_vv_nxv2f32:5115; CHECK: # %bb.0:5116; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma5117; CHECK-NEXT: vmfne.vv v0, v8, v95118; CHECK-NEXT: ret5119 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp5120 ret <vscale x 2 x i1> %15121}5122 5123define <vscale x 2 x i1> @fcmp_une_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {5124; CHECK-LABEL: fcmp_une_vf_nxv2f32:5125; CHECK: # %bb.0:5126; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma5127; CHECK-NEXT: vmfne.vf v0, v8, fa05128; CHECK-NEXT: ret5129 %head = insertelement <vscale x 2 x float> poison, float %b, i32 05130 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer5131 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp5132 ret <vscale x 2 x i1> %15133}5134 5135define <vscale x 2 x i1> @fcmp_une_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {5136; CHECK-LABEL: fcmp_une_fv_nxv2f32:5137; CHECK: # %bb.0:5138; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma5139; CHECK-NEXT: vmfne.vf v0, v8, fa05140; CHECK-NEXT: ret5141 %head = insertelement <vscale x 2 x float> poison, float %b, i32 05142 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer5143 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp5144 ret <vscale x 2 x i1> %15145}5146 5147define <vscale x 2 x i1> @fcmp_uno_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {5148; CHECK-LABEL: fcmp_uno_vv_nxv2f32:5149; CHECK: # %bb.0:5150; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp5156 ret <vscale x 2 x i1> %15157}5158 5159define <vscale x 2 x i1> @fcmp_uno_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {5160; CHECK-LABEL: fcmp_uno_vf_nxv2f32:5161; CHECK: # %bb.0:5162; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x float> poison, float %b, i32 05169 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer5170 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp5171 ret <vscale x 2 x i1> %15172}5173 5174define <vscale x 2 x i1> @fcmp_uno_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {5175; CHECK-LABEL: fcmp_uno_fv_nxv2f32:5176; CHECK: # %bb.0:5177; CHECK-NEXT: vsetvli a0, zero, e32, m1, 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 <vscale x 2 x float> poison, float %b, i32 05184 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer5185 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp5186 ret <vscale x 2 x i1> %15187}5188 5189define <vscale x 4 x i1> @fcmp_oeq_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {5190; CHECK-LABEL: fcmp_oeq_vv_nxv4f32:5191; CHECK: # %bb.0:5192; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma5193; CHECK-NEXT: vmfeq.vv v0, v8, v105194; CHECK-NEXT: ret5195 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp5196 ret <vscale x 4 x i1> %15197}5198 5199define <vscale x 4 x i1> @fcmp_oeq_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5200; CHECK-LABEL: fcmp_oeq_vf_nxv4f32:5201; CHECK: # %bb.0:5202; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma5203; CHECK-NEXT: vmfeq.vf v0, v8, fa05204; CHECK-NEXT: ret5205 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05206 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5207 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp5208 ret <vscale x 4 x i1> %15209}5210 5211define <vscale x 4 x i1> @fcmp_oeq_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5212; CHECK-LABEL: fcmp_oeq_fv_nxv4f32:5213; CHECK: # %bb.0:5214; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma5215; CHECK-NEXT: vmfeq.vf v0, v8, fa05216; CHECK-NEXT: ret5217 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05218 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5219 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp5220 ret <vscale x 4 x i1> %15221}5222 5223define <vscale x 4 x i1> @fcmp_ogt_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {5224; CHECK-LABEL: fcmp_ogt_vv_nxv4f32:5225; CHECK: # %bb.0:5226; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5227; CHECK-NEXT: vmfeq.vv v12, v8, v85228; CHECK-NEXT: vmfeq.vv v13, v10, v105229; CHECK-NEXT: vmand.mm v12, v13, v125230; CHECK-NEXT: vmv1r.v v0, v125231; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t5232; CHECK-NEXT: vmv1r.v v0, v125233; CHECK-NEXT: ret5234 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp5235 ret <vscale x 4 x i1> %15236}5237 5238define <vscale x 4 x i1> @fcmp_ogt_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5239; CHECK-LABEL: fcmp_ogt_vf_nxv4f32:5240; CHECK: # %bb.0:5241; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5242; CHECK-NEXT: vfmv.v.f v10, fa05243; CHECK-NEXT: vmfeq.vf v12, v10, fa05244; CHECK-NEXT: vmfeq.vv v10, v8, v85245; CHECK-NEXT: vmand.mm v10, v12, v105246; CHECK-NEXT: vmv1r.v v0, v105247; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t5248; CHECK-NEXT: vmv1r.v v0, v105249; CHECK-NEXT: ret5250 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05251 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5252 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp5253 ret <vscale x 4 x i1> %15254}5255 5256define <vscale x 4 x i1> @fcmp_ogt_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5257; CHECK-LABEL: fcmp_ogt_fv_nxv4f32:5258; CHECK: # %bb.0:5259; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5260; CHECK-NEXT: vfmv.v.f v10, fa05261; CHECK-NEXT: vmfeq.vf v12, v10, fa05262; CHECK-NEXT: vmfeq.vv v10, v8, v85263; CHECK-NEXT: vmand.mm v10, v10, v125264; CHECK-NEXT: vmv1r.v v0, v105265; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t5266; CHECK-NEXT: vmv1r.v v0, v105267; CHECK-NEXT: ret5268 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05269 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5270 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp5271 ret <vscale x 4 x i1> %15272}5273 5274define <vscale x 4 x i1> @fcmp_oge_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {5275; CHECK-LABEL: fcmp_oge_vv_nxv4f32:5276; CHECK: # %bb.0:5277; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5278; CHECK-NEXT: vmfeq.vv v12, v8, v85279; CHECK-NEXT: vmfeq.vv v13, v10, v105280; CHECK-NEXT: vmand.mm v12, v13, v125281; CHECK-NEXT: vmv1r.v v0, v125282; CHECK-NEXT: vmfle.vv v12, v10, v8, v0.t5283; CHECK-NEXT: vmv1r.v v0, v125284; CHECK-NEXT: ret5285 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp5286 ret <vscale x 4 x i1> %15287}5288 5289define <vscale x 4 x i1> @fcmp_oge_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5290; CHECK-LABEL: fcmp_oge_vf_nxv4f32:5291; CHECK: # %bb.0:5292; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5293; CHECK-NEXT: vfmv.v.f v10, fa05294; CHECK-NEXT: vmfeq.vf v12, v10, fa05295; CHECK-NEXT: vmfeq.vv v10, v8, v85296; CHECK-NEXT: vmand.mm v10, v12, v105297; CHECK-NEXT: vmv1r.v v0, v105298; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t5299; CHECK-NEXT: vmv1r.v v0, v105300; CHECK-NEXT: ret5301 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05302 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5303 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp5304 ret <vscale x 4 x i1> %15305}5306 5307define <vscale x 4 x i1> @fcmp_oge_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5308; CHECK-LABEL: fcmp_oge_fv_nxv4f32:5309; CHECK: # %bb.0:5310; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5311; CHECK-NEXT: vfmv.v.f v10, fa05312; CHECK-NEXT: vmfeq.vf v12, v10, fa05313; CHECK-NEXT: vmfeq.vv v10, v8, v85314; CHECK-NEXT: vmand.mm v10, v10, v125315; CHECK-NEXT: vmv1r.v v0, v105316; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t5317; CHECK-NEXT: vmv1r.v v0, v105318; CHECK-NEXT: ret5319 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05320 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5321 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp5322 ret <vscale x 4 x i1> %15323}5324 5325define <vscale x 4 x i1> @fcmp_olt_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {5326; CHECK-LABEL: fcmp_olt_vv_nxv4f32:5327; CHECK: # %bb.0:5328; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5329; CHECK-NEXT: vmfeq.vv v12, v10, v105330; CHECK-NEXT: vmfeq.vv v13, v8, v85331; CHECK-NEXT: vmand.mm v12, v13, v125332; CHECK-NEXT: vmv1r.v v0, v125333; CHECK-NEXT: vmflt.vv v12, v8, v10, v0.t5334; CHECK-NEXT: vmv1r.v v0, v125335; CHECK-NEXT: ret5336 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp5337 ret <vscale x 4 x i1> %15338}5339 5340define <vscale x 4 x i1> @fcmp_olt_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5341; CHECK-LABEL: fcmp_olt_vf_nxv4f32:5342; CHECK: # %bb.0:5343; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5344; CHECK-NEXT: vfmv.v.f v10, fa05345; CHECK-NEXT: vmfeq.vf v12, v10, fa05346; CHECK-NEXT: vmfeq.vv v10, v8, v85347; CHECK-NEXT: vmand.mm v10, v10, v125348; CHECK-NEXT: vmv1r.v v0, v105349; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t5350; CHECK-NEXT: vmv1r.v v0, v105351; CHECK-NEXT: ret5352 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05353 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5354 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp5355 ret <vscale x 4 x i1> %15356}5357 5358define <vscale x 4 x i1> @fcmp_olt_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5359; CHECK-LABEL: fcmp_olt_fv_nxv4f32:5360; CHECK: # %bb.0:5361; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5362; CHECK-NEXT: vfmv.v.f v10, fa05363; CHECK-NEXT: vmfeq.vf v12, v10, fa05364; CHECK-NEXT: vmfeq.vv v10, v8, v85365; CHECK-NEXT: vmand.mm v10, v12, v105366; CHECK-NEXT: vmv1r.v v0, v105367; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t5368; CHECK-NEXT: vmv1r.v v0, v105369; CHECK-NEXT: ret5370 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05371 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5372 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp5373 ret <vscale x 4 x i1> %15374}5375 5376define <vscale x 4 x i1> @fcmp_ole_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {5377; CHECK-LABEL: fcmp_ole_vv_nxv4f32:5378; CHECK: # %bb.0:5379; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5380; CHECK-NEXT: vmfeq.vv v12, v10, v105381; CHECK-NEXT: vmfeq.vv v13, v8, v85382; CHECK-NEXT: vmand.mm v12, v13, v125383; CHECK-NEXT: vmv1r.v v0, v125384; CHECK-NEXT: vmfle.vv v12, v8, v10, v0.t5385; CHECK-NEXT: vmv1r.v v0, v125386; CHECK-NEXT: ret5387 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp5388 ret <vscale x 4 x i1> %15389}5390 5391define <vscale x 4 x i1> @fcmp_ole_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5392; CHECK-LABEL: fcmp_ole_vf_nxv4f32:5393; CHECK: # %bb.0:5394; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5395; CHECK-NEXT: vfmv.v.f v10, fa05396; CHECK-NEXT: vmfeq.vf v12, v10, fa05397; CHECK-NEXT: vmfeq.vv v10, v8, v85398; CHECK-NEXT: vmand.mm v10, v10, v125399; CHECK-NEXT: vmv1r.v v0, v105400; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t5401; CHECK-NEXT: vmv1r.v v0, v105402; CHECK-NEXT: ret5403 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05404 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5405 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp5406 ret <vscale x 4 x i1> %15407}5408 5409define <vscale x 4 x i1> @fcmp_ole_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5410; CHECK-LABEL: fcmp_ole_fv_nxv4f32:5411; CHECK: # %bb.0:5412; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5413; CHECK-NEXT: vfmv.v.f v10, fa05414; CHECK-NEXT: vmfeq.vf v12, v10, fa05415; CHECK-NEXT: vmfeq.vv v10, v8, v85416; CHECK-NEXT: vmand.mm v10, v12, v105417; CHECK-NEXT: vmv1r.v v0, v105418; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t5419; CHECK-NEXT: vmv1r.v v0, v105420; CHECK-NEXT: ret5421 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05422 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5423 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp5424 ret <vscale x 4 x i1> %15425}5426 5427define <vscale x 4 x i1> @fcmp_one_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {5428; CHECK-LABEL: fcmp_one_vv_nxv4f32:5429; CHECK: # %bb.0:5430; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5431; CHECK-NEXT: vmfeq.vv v12, v10, v105432; CHECK-NEXT: vmfeq.vv v13, v8, v85433; CHECK-NEXT: vmand.mm v12, v13, v125434; CHECK-NEXT: vmv1r.v v13, v125435; CHECK-NEXT: vmv1r.v v0, v125436; CHECK-NEXT: vmflt.vv v13, v8, v10, v0.t5437; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t5438; CHECK-NEXT: vmor.mm v0, v12, v135439; CHECK-NEXT: ret5440 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp5441 ret <vscale x 4 x i1> %15442}5443 5444define <vscale x 4 x i1> @fcmp_one_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5445; CHECK-LABEL: fcmp_one_vf_nxv4f32:5446; CHECK: # %bb.0:5447; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5448; CHECK-NEXT: vfmv.v.f v10, fa05449; CHECK-NEXT: vmfeq.vv v12, v8, v85450; CHECK-NEXT: vmfeq.vf v13, v10, fa05451; CHECK-NEXT: vmand.mm v10, v12, v135452; CHECK-NEXT: vmv1r.v v11, v105453; CHECK-NEXT: vmv1r.v v0, v105454; CHECK-NEXT: vmflt.vf v11, v8, fa0, v0.t5455; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t5456; CHECK-NEXT: vmor.mm v0, v10, v115457; CHECK-NEXT: ret5458 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05459 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5460 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp5461 ret <vscale x 4 x i1> %15462}5463 5464define <vscale x 4 x i1> @fcmp_one_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5465; CHECK-LABEL: fcmp_one_fv_nxv4f32:5466; CHECK: # %bb.0:5467; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5468; CHECK-NEXT: vfmv.v.f v10, fa05469; CHECK-NEXT: vmfeq.vv v12, v8, v85470; CHECK-NEXT: vmfeq.vf v13, v10, fa05471; CHECK-NEXT: vmand.mm v10, v13, v125472; CHECK-NEXT: vmv1r.v v11, v105473; CHECK-NEXT: vmv1r.v v0, v105474; CHECK-NEXT: vmfgt.vf v11, v8, fa0, v0.t5475; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t5476; CHECK-NEXT: vmor.mm v0, v10, v115477; CHECK-NEXT: ret5478 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05479 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5480 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp5481 ret <vscale x 4 x i1> %15482}5483 5484define <vscale x 4 x i1> @fcmp_ord_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {5485; CHECK-LABEL: fcmp_ord_vv_nxv4f32:5486; CHECK: # %bb.0:5487; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma5488; CHECK-NEXT: vmfeq.vv v12, v10, v105489; CHECK-NEXT: vmfeq.vv v10, v8, v85490; CHECK-NEXT: vmand.mm v0, v10, v125491; CHECK-NEXT: ret5492 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp5493 ret <vscale x 4 x i1> %15494}5495 5496define <vscale x 4 x i1> @fcmp_ord_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5497; CHECK-LABEL: fcmp_ord_vf_nxv4f32:5498; CHECK: # %bb.0:5499; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma5500; CHECK-NEXT: vfmv.v.f v10, fa05501; CHECK-NEXT: vmfeq.vf v12, v10, fa05502; CHECK-NEXT: vmfeq.vv v10, v8, v85503; CHECK-NEXT: vmand.mm v0, v10, v125504; CHECK-NEXT: ret5505 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05506 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5507 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp5508 ret <vscale x 4 x i1> %15509}5510 5511define <vscale x 4 x i1> @fcmp_ord_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5512; CHECK-LABEL: fcmp_ord_fv_nxv4f32:5513; CHECK: # %bb.0:5514; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma5515; CHECK-NEXT: vfmv.v.f v10, fa05516; CHECK-NEXT: vmfeq.vf v12, v10, fa05517; CHECK-NEXT: vmfeq.vv v10, v8, v85518; CHECK-NEXT: vmand.mm v0, v12, v105519; CHECK-NEXT: ret5520 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05521 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5522 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp5523 ret <vscale x 4 x i1> %15524}5525 5526define <vscale x 4 x i1> @fcmp_ueq_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {5527; CHECK-LABEL: fcmp_ueq_vv_nxv4f32:5528; CHECK: # %bb.0:5529; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5530; CHECK-NEXT: vmfeq.vv v12, v10, v105531; CHECK-NEXT: vmfeq.vv v13, v8, v85532; CHECK-NEXT: vmand.mm v12, v13, v125533; CHECK-NEXT: vmv1r.v v13, v125534; CHECK-NEXT: vmv1r.v v0, v125535; CHECK-NEXT: vmflt.vv v13, v8, v10, v0.t5536; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t5537; CHECK-NEXT: vmnor.mm v0, v12, v135538; CHECK-NEXT: ret5539 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp5540 ret <vscale x 4 x i1> %15541}5542 5543define <vscale x 4 x i1> @fcmp_ueq_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5544; CHECK-LABEL: fcmp_ueq_vf_nxv4f32:5545; CHECK: # %bb.0:5546; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5547; CHECK-NEXT: vfmv.v.f v10, fa05548; CHECK-NEXT: vmfeq.vv v12, v8, v85549; CHECK-NEXT: vmfeq.vf v13, v10, fa05550; CHECK-NEXT: vmand.mm v10, v12, v135551; CHECK-NEXT: vmv1r.v v11, v105552; CHECK-NEXT: vmv1r.v v0, v105553; CHECK-NEXT: vmflt.vf v11, v8, fa0, v0.t5554; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t5555; CHECK-NEXT: vmnor.mm v0, v10, v115556; CHECK-NEXT: ret5557 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05558 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5559 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp5560 ret <vscale x 4 x i1> %15561}5562 5563define <vscale x 4 x i1> @fcmp_ueq_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5564; CHECK-LABEL: fcmp_ueq_fv_nxv4f32:5565; CHECK: # %bb.0:5566; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5567; CHECK-NEXT: vfmv.v.f v10, fa05568; CHECK-NEXT: vmfeq.vv v12, v8, v85569; CHECK-NEXT: vmfeq.vf v13, v10, fa05570; CHECK-NEXT: vmand.mm v10, v13, v125571; CHECK-NEXT: vmv1r.v v11, v105572; CHECK-NEXT: vmv1r.v v0, v105573; CHECK-NEXT: vmfgt.vf v11, v8, fa0, v0.t5574; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t5575; CHECK-NEXT: vmnor.mm v0, v10, v115576; CHECK-NEXT: ret5577 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05578 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5579 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp5580 ret <vscale x 4 x i1> %15581}5582 5583define <vscale x 4 x i1> @fcmp_ugt_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {5584; CHECK-LABEL: fcmp_ugt_vv_nxv4f32:5585; CHECK: # %bb.0:5586; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5587; CHECK-NEXT: vmfeq.vv v12, v10, v105588; CHECK-NEXT: vmfeq.vv v13, v8, v85589; CHECK-NEXT: vmand.mm v12, v13, v125590; CHECK-NEXT: vmv1r.v v0, v125591; CHECK-NEXT: vmfle.vv v12, v8, v10, v0.t5592; CHECK-NEXT: vmnot.m v0, v125593; CHECK-NEXT: ret5594 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp5595 ret <vscale x 4 x i1> %15596}5597 5598define <vscale x 4 x i1> @fcmp_ugt_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5599; CHECK-LABEL: fcmp_ugt_vf_nxv4f32:5600; CHECK: # %bb.0:5601; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5602; CHECK-NEXT: vfmv.v.f v10, fa05603; CHECK-NEXT: vmfeq.vf v12, v10, fa05604; CHECK-NEXT: vmfeq.vv v10, v8, v85605; CHECK-NEXT: vmand.mm v10, v10, v125606; CHECK-NEXT: vmv1r.v v0, v105607; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t5608; CHECK-NEXT: vmnot.m v0, v105609; CHECK-NEXT: ret5610 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05611 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5612 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp5613 ret <vscale x 4 x i1> %15614}5615 5616define <vscale x 4 x i1> @fcmp_ugt_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5617; CHECK-LABEL: fcmp_ugt_fv_nxv4f32:5618; CHECK: # %bb.0:5619; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5620; CHECK-NEXT: vfmv.v.f v10, fa05621; CHECK-NEXT: vmfeq.vf v12, v10, fa05622; CHECK-NEXT: vmfeq.vv v10, v8, v85623; CHECK-NEXT: vmand.mm v10, v12, v105624; CHECK-NEXT: vmv1r.v v0, v105625; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t5626; CHECK-NEXT: vmnot.m v0, v105627; CHECK-NEXT: ret5628 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05629 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5630 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp5631 ret <vscale x 4 x i1> %15632}5633 5634define <vscale x 4 x i1> @fcmp_uge_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {5635; CHECK-LABEL: fcmp_uge_vv_nxv4f32:5636; CHECK: # %bb.0:5637; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5638; CHECK-NEXT: vmfeq.vv v12, v10, v105639; CHECK-NEXT: vmfeq.vv v13, v8, v85640; CHECK-NEXT: vmand.mm v12, v13, v125641; CHECK-NEXT: vmv1r.v v0, v125642; CHECK-NEXT: vmflt.vv v12, v8, v10, v0.t5643; CHECK-NEXT: vmnot.m v0, v125644; CHECK-NEXT: ret5645 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp5646 ret <vscale x 4 x i1> %15647}5648 5649define <vscale x 4 x i1> @fcmp_uge_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5650; CHECK-LABEL: fcmp_uge_vf_nxv4f32:5651; CHECK: # %bb.0:5652; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5653; CHECK-NEXT: vfmv.v.f v10, fa05654; CHECK-NEXT: vmfeq.vf v12, v10, fa05655; CHECK-NEXT: vmfeq.vv v10, v8, v85656; CHECK-NEXT: vmand.mm v10, v10, v125657; CHECK-NEXT: vmv1r.v v0, v105658; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t5659; CHECK-NEXT: vmnot.m v0, v105660; CHECK-NEXT: ret5661 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05662 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5663 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp5664 ret <vscale x 4 x i1> %15665}5666 5667define <vscale x 4 x i1> @fcmp_uge_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5668; CHECK-LABEL: fcmp_uge_fv_nxv4f32:5669; CHECK: # %bb.0:5670; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5671; CHECK-NEXT: vfmv.v.f v10, fa05672; CHECK-NEXT: vmfeq.vf v12, v10, fa05673; CHECK-NEXT: vmfeq.vv v10, v8, v85674; CHECK-NEXT: vmand.mm v10, v12, v105675; CHECK-NEXT: vmv1r.v v0, v105676; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t5677; CHECK-NEXT: vmnot.m v0, v105678; CHECK-NEXT: ret5679 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05680 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5681 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp5682 ret <vscale x 4 x i1> %15683}5684 5685define <vscale x 4 x i1> @fcmp_ult_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {5686; CHECK-LABEL: fcmp_ult_vv_nxv4f32:5687; CHECK: # %bb.0:5688; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5689; CHECK-NEXT: vmfeq.vv v12, v8, v85690; CHECK-NEXT: vmfeq.vv v13, v10, v105691; CHECK-NEXT: vmand.mm v12, v13, v125692; CHECK-NEXT: vmv1r.v v0, v125693; CHECK-NEXT: vmfle.vv v12, v10, v8, v0.t5694; CHECK-NEXT: vmnot.m v0, v125695; CHECK-NEXT: ret5696 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp5697 ret <vscale x 4 x i1> %15698}5699 5700define <vscale x 4 x i1> @fcmp_ult_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5701; CHECK-LABEL: fcmp_ult_vf_nxv4f32:5702; CHECK: # %bb.0:5703; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5704; CHECK-NEXT: vfmv.v.f v10, fa05705; CHECK-NEXT: vmfeq.vf v12, v10, fa05706; CHECK-NEXT: vmfeq.vv v10, v8, v85707; CHECK-NEXT: vmand.mm v10, v12, v105708; CHECK-NEXT: vmv1r.v v0, v105709; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t5710; CHECK-NEXT: vmnot.m v0, v105711; CHECK-NEXT: ret5712 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05713 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5714 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp5715 ret <vscale x 4 x i1> %15716}5717 5718define <vscale x 4 x i1> @fcmp_ult_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5719; CHECK-LABEL: fcmp_ult_fv_nxv4f32:5720; CHECK: # %bb.0:5721; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5722; CHECK-NEXT: vfmv.v.f v10, fa05723; CHECK-NEXT: vmfeq.vf v12, v10, fa05724; CHECK-NEXT: vmfeq.vv v10, v8, v85725; CHECK-NEXT: vmand.mm v10, v10, v125726; CHECK-NEXT: vmv1r.v v0, v105727; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t5728; CHECK-NEXT: vmnot.m v0, v105729; CHECK-NEXT: ret5730 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05731 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5732 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp5733 ret <vscale x 4 x i1> %15734}5735 5736define <vscale x 4 x i1> @fcmp_ule_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {5737; CHECK-LABEL: fcmp_ule_vv_nxv4f32:5738; CHECK: # %bb.0:5739; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5740; CHECK-NEXT: vmfeq.vv v12, v8, v85741; CHECK-NEXT: vmfeq.vv v13, v10, v105742; CHECK-NEXT: vmand.mm v12, v13, v125743; CHECK-NEXT: vmv1r.v v0, v125744; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t5745; CHECK-NEXT: vmnot.m v0, v125746; CHECK-NEXT: ret5747 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp5748 ret <vscale x 4 x i1> %15749}5750 5751define <vscale x 4 x i1> @fcmp_ule_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5752; CHECK-LABEL: fcmp_ule_vf_nxv4f32:5753; CHECK: # %bb.0:5754; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5755; CHECK-NEXT: vfmv.v.f v10, fa05756; CHECK-NEXT: vmfeq.vf v12, v10, fa05757; CHECK-NEXT: vmfeq.vv v10, v8, v85758; CHECK-NEXT: vmand.mm v10, v12, v105759; CHECK-NEXT: vmv1r.v v0, v105760; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t5761; CHECK-NEXT: vmnot.m v0, v105762; CHECK-NEXT: ret5763 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05764 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5765 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp5766 ret <vscale x 4 x i1> %15767}5768 5769define <vscale x 4 x i1> @fcmp_ule_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5770; CHECK-LABEL: fcmp_ule_fv_nxv4f32:5771; CHECK: # %bb.0:5772; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu5773; CHECK-NEXT: vfmv.v.f v10, fa05774; CHECK-NEXT: vmfeq.vf v12, v10, fa05775; CHECK-NEXT: vmfeq.vv v10, v8, v85776; CHECK-NEXT: vmand.mm v10, v10, v125777; CHECK-NEXT: vmv1r.v v0, v105778; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t5779; CHECK-NEXT: vmnot.m v0, v105780; CHECK-NEXT: ret5781 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05782 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5783 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp5784 ret <vscale x 4 x i1> %15785}5786 5787define <vscale x 4 x i1> @fcmp_une_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {5788; CHECK-LABEL: fcmp_une_vv_nxv4f32:5789; CHECK: # %bb.0:5790; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma5791; CHECK-NEXT: vmfne.vv v0, v8, v105792; CHECK-NEXT: ret5793 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp5794 ret <vscale x 4 x i1> %15795}5796 5797define <vscale x 4 x i1> @fcmp_une_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5798; CHECK-LABEL: fcmp_une_vf_nxv4f32:5799; CHECK: # %bb.0:5800; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma5801; CHECK-NEXT: vmfne.vf v0, v8, fa05802; CHECK-NEXT: ret5803 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05804 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5805 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp5806 ret <vscale x 4 x i1> %15807}5808 5809define <vscale x 4 x i1> @fcmp_une_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5810; CHECK-LABEL: fcmp_une_fv_nxv4f32:5811; CHECK: # %bb.0:5812; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma5813; CHECK-NEXT: vmfne.vf v0, v8, fa05814; CHECK-NEXT: ret5815 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05816 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5817 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp5818 ret <vscale x 4 x i1> %15819}5820 5821define <vscale x 4 x i1> @fcmp_uno_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {5822; CHECK-LABEL: fcmp_uno_vv_nxv4f32:5823; CHECK: # %bb.0:5824; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma5825; CHECK-NEXT: vmfne.vv v12, v10, v105826; CHECK-NEXT: vmfne.vv v10, v8, v85827; CHECK-NEXT: vmor.mm v0, v10, v125828; CHECK-NEXT: ret5829 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp5830 ret <vscale x 4 x i1> %15831}5832 5833define <vscale x 4 x i1> @fcmp_uno_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5834; CHECK-LABEL: fcmp_uno_vf_nxv4f32:5835; CHECK: # %bb.0:5836; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma5837; CHECK-NEXT: vfmv.v.f v10, fa05838; CHECK-NEXT: vmfne.vf v12, v10, fa05839; CHECK-NEXT: vmfne.vv v10, v8, v85840; CHECK-NEXT: vmor.mm v0, v10, v125841; CHECK-NEXT: ret5842 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05843 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5844 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp5845 ret <vscale x 4 x i1> %15846}5847 5848define <vscale x 4 x i1> @fcmp_uno_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {5849; CHECK-LABEL: fcmp_uno_fv_nxv4f32:5850; CHECK: # %bb.0:5851; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma5852; CHECK-NEXT: vfmv.v.f v10, fa05853; CHECK-NEXT: vmfne.vf v12, v10, fa05854; CHECK-NEXT: vmfne.vv v10, v8, v85855; CHECK-NEXT: vmor.mm v0, v12, v105856; CHECK-NEXT: ret5857 %head = insertelement <vscale x 4 x float> poison, float %b, i32 05858 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer5859 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp5860 ret <vscale x 4 x i1> %15861}5862 5863define <vscale x 8 x i1> @fcmp_oeq_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {5864; CHECK-LABEL: fcmp_oeq_vv_nxv8f32:5865; CHECK: # %bb.0:5866; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5867; CHECK-NEXT: vmfeq.vv v0, v8, v125868; CHECK-NEXT: ret5869 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp5870 ret <vscale x 8 x i1> %15871}5872 5873define <vscale x 8 x i1> @fcmp_oeq_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {5874; CHECK-LABEL: fcmp_oeq_vf_nxv8f32:5875; CHECK: # %bb.0:5876; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5877; CHECK-NEXT: vmfeq.vf v0, v8, fa05878; CHECK-NEXT: ret5879 %head = insertelement <vscale x 8 x float> poison, float %b, i32 05880 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5881 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp5882 ret <vscale x 8 x i1> %15883}5884 5885define <vscale x 8 x i1> @fcmp_oeq_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {5886; CHECK-LABEL: fcmp_oeq_fv_nxv8f32:5887; CHECK: # %bb.0:5888; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5889; CHECK-NEXT: vmfeq.vf v0, v8, fa05890; CHECK-NEXT: ret5891 %head = insertelement <vscale x 8 x float> poison, float %b, i32 05892 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5893 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp5894 ret <vscale x 8 x i1> %15895}5896 5897define <vscale x 8 x i1> @fcmp_ogt_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {5898; CHECK-LABEL: fcmp_ogt_vv_nxv8f32:5899; CHECK: # %bb.0:5900; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu5901; CHECK-NEXT: vmfeq.vv v16, v8, v85902; CHECK-NEXT: vmfeq.vv v17, v12, v125903; CHECK-NEXT: vmand.mm v16, v17, v165904; CHECK-NEXT: vmv1r.v v0, v165905; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t5906; CHECK-NEXT: vmv1r.v v0, v165907; CHECK-NEXT: ret5908 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp5909 ret <vscale x 8 x i1> %15910}5911 5912define <vscale x 8 x i1> @fcmp_ogt_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {5913; CHECK-LABEL: fcmp_ogt_vf_nxv8f32:5914; CHECK: # %bb.0:5915; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu5916; CHECK-NEXT: vfmv.v.f v12, fa05917; CHECK-NEXT: vmfeq.vf v16, v12, fa05918; CHECK-NEXT: vmfeq.vv v12, v8, v85919; CHECK-NEXT: vmand.mm v12, v16, v125920; CHECK-NEXT: vmv1r.v v0, v125921; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t5922; CHECK-NEXT: vmv1r.v v0, v125923; CHECK-NEXT: ret5924 %head = insertelement <vscale x 8 x float> poison, float %b, i32 05925 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5926 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp5927 ret <vscale x 8 x i1> %15928}5929 5930define <vscale x 8 x i1> @fcmp_ogt_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {5931; CHECK-LABEL: fcmp_ogt_fv_nxv8f32:5932; CHECK: # %bb.0:5933; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu5934; CHECK-NEXT: vfmv.v.f v12, fa05935; CHECK-NEXT: vmfeq.vf v16, v12, fa05936; CHECK-NEXT: vmfeq.vv v12, v8, v85937; CHECK-NEXT: vmand.mm v12, v12, v165938; CHECK-NEXT: vmv1r.v v0, v125939; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t5940; CHECK-NEXT: vmv1r.v v0, v125941; CHECK-NEXT: ret5942 %head = insertelement <vscale x 8 x float> poison, float %b, i32 05943 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5944 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp5945 ret <vscale x 8 x i1> %15946}5947 5948define <vscale x 8 x i1> @fcmp_oge_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {5949; CHECK-LABEL: fcmp_oge_vv_nxv8f32:5950; CHECK: # %bb.0:5951; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu5952; CHECK-NEXT: vmfeq.vv v16, v8, v85953; CHECK-NEXT: vmfeq.vv v17, v12, v125954; CHECK-NEXT: vmand.mm v16, v17, v165955; CHECK-NEXT: vmv1r.v v0, v165956; CHECK-NEXT: vmfle.vv v16, v12, v8, v0.t5957; CHECK-NEXT: vmv1r.v v0, v165958; CHECK-NEXT: ret5959 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp5960 ret <vscale x 8 x i1> %15961}5962 5963define <vscale x 8 x i1> @fcmp_oge_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {5964; CHECK-LABEL: fcmp_oge_vf_nxv8f32:5965; CHECK: # %bb.0:5966; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu5967; CHECK-NEXT: vfmv.v.f v12, fa05968; CHECK-NEXT: vmfeq.vf v16, v12, fa05969; CHECK-NEXT: vmfeq.vv v12, v8, v85970; CHECK-NEXT: vmand.mm v12, v16, v125971; CHECK-NEXT: vmv1r.v v0, v125972; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t5973; CHECK-NEXT: vmv1r.v v0, v125974; CHECK-NEXT: ret5975 %head = insertelement <vscale x 8 x float> poison, float %b, i32 05976 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5977 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp5978 ret <vscale x 8 x i1> %15979}5980 5981define <vscale x 8 x i1> @fcmp_oge_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {5982; CHECK-LABEL: fcmp_oge_fv_nxv8f32:5983; CHECK: # %bb.0:5984; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu5985; CHECK-NEXT: vfmv.v.f v12, fa05986; CHECK-NEXT: vmfeq.vf v16, v12, fa05987; CHECK-NEXT: vmfeq.vv v12, v8, v85988; CHECK-NEXT: vmand.mm v12, v12, v165989; CHECK-NEXT: vmv1r.v v0, v125990; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t5991; CHECK-NEXT: vmv1r.v v0, v125992; CHECK-NEXT: ret5993 %head = insertelement <vscale x 8 x float> poison, float %b, i32 05994 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5995 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp5996 ret <vscale x 8 x i1> %15997}5998 5999define <vscale x 8 x i1> @fcmp_olt_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {6000; CHECK-LABEL: fcmp_olt_vv_nxv8f32:6001; CHECK: # %bb.0:6002; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6003; CHECK-NEXT: vmfeq.vv v16, v12, v126004; CHECK-NEXT: vmfeq.vv v17, v8, v86005; CHECK-NEXT: vmand.mm v16, v17, v166006; CHECK-NEXT: vmv1r.v v0, v166007; CHECK-NEXT: vmflt.vv v16, v8, v12, v0.t6008; CHECK-NEXT: vmv1r.v v0, v166009; CHECK-NEXT: ret6010 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp6011 ret <vscale x 8 x i1> %16012}6013 6014define <vscale x 8 x i1> @fcmp_olt_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {6015; CHECK-LABEL: fcmp_olt_vf_nxv8f32:6016; CHECK: # %bb.0:6017; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6018; CHECK-NEXT: vfmv.v.f v12, fa06019; CHECK-NEXT: vmfeq.vf v16, v12, fa06020; CHECK-NEXT: vmfeq.vv v12, v8, v86021; CHECK-NEXT: vmand.mm v12, v12, v166022; CHECK-NEXT: vmv1r.v v0, v126023; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t6024; CHECK-NEXT: vmv1r.v v0, v126025; CHECK-NEXT: ret6026 %head = insertelement <vscale x 8 x float> poison, float %b, i32 06027 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer6028 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp6029 ret <vscale x 8 x i1> %16030}6031 6032define <vscale x 8 x i1> @fcmp_olt_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {6033; CHECK-LABEL: fcmp_olt_fv_nxv8f32:6034; CHECK: # %bb.0:6035; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6036; CHECK-NEXT: vfmv.v.f v12, fa06037; CHECK-NEXT: vmfeq.vf v16, v12, fa06038; CHECK-NEXT: vmfeq.vv v12, v8, v86039; CHECK-NEXT: vmand.mm v12, v16, v126040; CHECK-NEXT: vmv1r.v v0, v126041; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t6042; CHECK-NEXT: vmv1r.v v0, v126043; CHECK-NEXT: ret6044 %head = insertelement <vscale x 8 x float> poison, float %b, i32 06045 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer6046 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp6047 ret <vscale x 8 x i1> %16048}6049 6050define <vscale x 8 x i1> @fcmp_ole_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {6051; CHECK-LABEL: fcmp_ole_vv_nxv8f32:6052; CHECK: # %bb.0:6053; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6054; CHECK-NEXT: vmfeq.vv v16, v12, v126055; CHECK-NEXT: vmfeq.vv v17, v8, v86056; CHECK-NEXT: vmand.mm v16, v17, v166057; CHECK-NEXT: vmv1r.v v0, v166058; CHECK-NEXT: vmfle.vv v16, v8, v12, v0.t6059; CHECK-NEXT: vmv1r.v v0, v166060; CHECK-NEXT: ret6061 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp6062 ret <vscale x 8 x i1> %16063}6064 6065define <vscale x 8 x i1> @fcmp_ole_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {6066; CHECK-LABEL: fcmp_ole_vf_nxv8f32:6067; CHECK: # %bb.0:6068; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6069; CHECK-NEXT: vfmv.v.f v12, fa06070; CHECK-NEXT: vmfeq.vf v16, v12, fa06071; CHECK-NEXT: vmfeq.vv v12, v8, v86072; CHECK-NEXT: vmand.mm v12, v12, v166073; CHECK-NEXT: vmv1r.v v0, v126074; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t6075; CHECK-NEXT: vmv1r.v v0, v126076; CHECK-NEXT: ret6077 %head = insertelement <vscale x 8 x float> poison, float %b, i32 06078 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer6079 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp6080 ret <vscale x 8 x i1> %16081}6082 6083define <vscale x 8 x i1> @fcmp_ole_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {6084; CHECK-LABEL: fcmp_ole_fv_nxv8f32:6085; CHECK: # %bb.0:6086; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6087; CHECK-NEXT: vfmv.v.f v12, fa06088; CHECK-NEXT: vmfeq.vf v16, v12, fa06089; CHECK-NEXT: vmfeq.vv v12, v8, v86090; CHECK-NEXT: vmand.mm v12, v16, v126091; CHECK-NEXT: vmv1r.v v0, v126092; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t6093; CHECK-NEXT: vmv1r.v v0, v126094; CHECK-NEXT: ret6095 %head = insertelement <vscale x 8 x float> poison, float %b, i32 06096 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer6097 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp6098 ret <vscale x 8 x i1> %16099}6100 6101define <vscale x 8 x i1> @fcmp_one_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {6102; CHECK-LABEL: fcmp_one_vv_nxv8f32:6103; CHECK: # %bb.0:6104; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6105; CHECK-NEXT: vmfeq.vv v16, v12, v126106; CHECK-NEXT: vmfeq.vv v17, v8, v86107; CHECK-NEXT: vmand.mm v16, v17, v166108; CHECK-NEXT: vmv1r.v v17, v166109; CHECK-NEXT: vmv1r.v v0, v166110; CHECK-NEXT: vmflt.vv v17, v8, v12, v0.t6111; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t6112; CHECK-NEXT: vmor.mm v0, v16, v176113; CHECK-NEXT: ret6114 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp6115 ret <vscale x 8 x i1> %16116}6117 6118define <vscale x 8 x i1> @fcmp_one_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {6119; CHECK-LABEL: fcmp_one_vf_nxv8f32:6120; CHECK: # %bb.0:6121; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6122; CHECK-NEXT: vfmv.v.f v12, fa06123; CHECK-NEXT: vmfeq.vf v16, v12, fa06124; CHECK-NEXT: vmfeq.vv v12, v8, v86125; CHECK-NEXT: vmand.mm v12, v12, v166126; CHECK-NEXT: vmv1r.v v13, v126127; CHECK-NEXT: vmv1r.v v0, v126128; CHECK-NEXT: vmflt.vf v13, v8, fa0, v0.t6129; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t6130; CHECK-NEXT: vmor.mm v0, v12, v136131; CHECK-NEXT: ret6132 %head = insertelement <vscale x 8 x float> poison, float %b, i32 06133 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer6134 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp6135 ret <vscale x 8 x i1> %16136}6137 6138define <vscale x 8 x i1> @fcmp_one_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {6139; CHECK-LABEL: fcmp_one_fv_nxv8f32:6140; CHECK: # %bb.0:6141; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6142; CHECK-NEXT: vfmv.v.f v12, fa06143; CHECK-NEXT: vmfeq.vf v16, v12, fa06144; CHECK-NEXT: vmfeq.vv v12, v8, v86145; CHECK-NEXT: vmand.mm v12, v16, v126146; CHECK-NEXT: vmv1r.v v13, v126147; CHECK-NEXT: vmv1r.v v0, v126148; CHECK-NEXT: vmfgt.vf v13, v8, fa0, v0.t6149; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t6150; CHECK-NEXT: vmor.mm v0, v12, v136151; CHECK-NEXT: ret6152 %head = insertelement <vscale x 8 x float> poison, float %b, i32 06153 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer6154 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp6155 ret <vscale x 8 x i1> %16156}6157 6158define <vscale x 8 x i1> @fcmp_ord_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {6159; CHECK-LABEL: fcmp_ord_vv_nxv8f32:6160; CHECK: # %bb.0:6161; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma6162; CHECK-NEXT: vmfeq.vv v16, v12, v126163; CHECK-NEXT: vmfeq.vv v12, v8, v86164; CHECK-NEXT: vmand.mm v0, v12, v166165; CHECK-NEXT: ret6166 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp6167 ret <vscale x 8 x i1> %16168}6169 6170define <vscale x 8 x i1> @fcmp_ord_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {6171; CHECK-LABEL: fcmp_ord_vf_nxv8f32:6172; CHECK: # %bb.0:6173; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma6174; CHECK-NEXT: vfmv.v.f v12, fa06175; CHECK-NEXT: vmfeq.vf v16, v12, fa06176; CHECK-NEXT: vmfeq.vv v12, v8, v86177; CHECK-NEXT: vmand.mm v0, v12, v166178; CHECK-NEXT: ret6179 %head = insertelement <vscale x 8 x float> poison, float %b, i32 06180 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer6181 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp6182 ret <vscale x 8 x i1> %16183}6184 6185define <vscale x 8 x i1> @fcmp_ord_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {6186; CHECK-LABEL: fcmp_ord_fv_nxv8f32:6187; CHECK: # %bb.0:6188; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma6189; CHECK-NEXT: vfmv.v.f v12, fa06190; CHECK-NEXT: vmfeq.vf v16, v12, fa06191; CHECK-NEXT: vmfeq.vv v12, v8, v86192; CHECK-NEXT: vmand.mm v0, v16, v126193; CHECK-NEXT: ret6194 %head = insertelement <vscale x 8 x float> poison, float %b, i32 06195 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer6196 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp6197 ret <vscale x 8 x i1> %16198}6199 6200define <vscale x 8 x i1> @fcmp_ueq_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {6201; CHECK-LABEL: fcmp_ueq_vv_nxv8f32:6202; CHECK: # %bb.0:6203; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6204; CHECK-NEXT: vmfeq.vv v16, v12, v126205; CHECK-NEXT: vmfeq.vv v17, v8, v86206; CHECK-NEXT: vmand.mm v16, v17, v166207; CHECK-NEXT: vmv1r.v v17, v166208; CHECK-NEXT: vmv1r.v v0, v166209; CHECK-NEXT: vmflt.vv v17, v8, v12, v0.t6210; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t6211; CHECK-NEXT: vmnor.mm v0, v16, v176212; CHECK-NEXT: ret6213 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp6214 ret <vscale x 8 x i1> %16215}6216 6217define <vscale x 8 x i1> @fcmp_ueq_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {6218; CHECK-LABEL: fcmp_ueq_vf_nxv8f32:6219; CHECK: # %bb.0:6220; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6221; CHECK-NEXT: vfmv.v.f v12, fa06222; CHECK-NEXT: vmfeq.vf v16, v12, fa06223; CHECK-NEXT: vmfeq.vv v12, v8, v86224; CHECK-NEXT: vmand.mm v12, v12, v166225; CHECK-NEXT: vmv1r.v v13, v126226; CHECK-NEXT: vmv1r.v v0, v126227; CHECK-NEXT: vmflt.vf v13, v8, fa0, v0.t6228; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t6229; CHECK-NEXT: vmnor.mm v0, v12, v136230; CHECK-NEXT: ret6231 %head = insertelement <vscale x 8 x float> poison, float %b, i32 06232 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer6233 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp6234 ret <vscale x 8 x i1> %16235}6236 6237define <vscale x 8 x i1> @fcmp_ueq_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {6238; CHECK-LABEL: fcmp_ueq_fv_nxv8f32:6239; CHECK: # %bb.0:6240; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6241; CHECK-NEXT: vfmv.v.f v12, fa06242; CHECK-NEXT: vmfeq.vf v16, v12, fa06243; CHECK-NEXT: vmfeq.vv v12, v8, v86244; CHECK-NEXT: vmand.mm v12, v16, v126245; CHECK-NEXT: vmv1r.v v13, v126246; CHECK-NEXT: vmv1r.v v0, v126247; CHECK-NEXT: vmfgt.vf v13, v8, fa0, v0.t6248; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t6249; CHECK-NEXT: vmnor.mm v0, v12, v136250; CHECK-NEXT: ret6251 %head = insertelement <vscale x 8 x float> poison, float %b, i32 06252 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer6253 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp6254 ret <vscale x 8 x i1> %16255}6256 6257define <vscale x 8 x i1> @fcmp_ugt_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {6258; CHECK-LABEL: fcmp_ugt_vv_nxv8f32:6259; CHECK: # %bb.0:6260; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6261; CHECK-NEXT: vmfeq.vv v16, v12, v126262; CHECK-NEXT: vmfeq.vv v17, v8, v86263; CHECK-NEXT: vmand.mm v16, v17, v166264; CHECK-NEXT: vmv1r.v v0, v166265; CHECK-NEXT: vmfle.vv v16, v8, v12, v0.t6266; CHECK-NEXT: vmnot.m v0, v166267; CHECK-NEXT: ret6268 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp6269 ret <vscale x 8 x i1> %16270}6271 6272define <vscale x 8 x i1> @fcmp_ugt_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {6273; CHECK-LABEL: fcmp_ugt_vf_nxv8f32:6274; CHECK: # %bb.0:6275; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6276; CHECK-NEXT: vfmv.v.f v12, fa06277; CHECK-NEXT: vmfeq.vf v16, v12, fa06278; CHECK-NEXT: vmfeq.vv v12, v8, v86279; CHECK-NEXT: vmand.mm v12, v12, v166280; CHECK-NEXT: vmv1r.v v0, v126281; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t6282; CHECK-NEXT: vmnot.m v0, v126283; CHECK-NEXT: ret6284 %head = insertelement <vscale x 8 x float> poison, float %b, i32 06285 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer6286 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp6287 ret <vscale x 8 x i1> %16288}6289 6290define <vscale x 8 x i1> @fcmp_ugt_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {6291; CHECK-LABEL: fcmp_ugt_fv_nxv8f32:6292; CHECK: # %bb.0:6293; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6294; CHECK-NEXT: vfmv.v.f v12, fa06295; CHECK-NEXT: vmfeq.vf v16, v12, fa06296; CHECK-NEXT: vmfeq.vv v12, v8, v86297; CHECK-NEXT: vmand.mm v12, v16, v126298; CHECK-NEXT: vmv1r.v v0, v126299; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t6300; CHECK-NEXT: vmnot.m v0, v126301; CHECK-NEXT: ret6302 %head = insertelement <vscale x 8 x float> poison, float %b, i32 06303 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer6304 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp6305 ret <vscale x 8 x i1> %16306}6307 6308define <vscale x 8 x i1> @fcmp_uge_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {6309; CHECK-LABEL: fcmp_uge_vv_nxv8f32:6310; CHECK: # %bb.0:6311; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6312; CHECK-NEXT: vmfeq.vv v16, v12, v126313; CHECK-NEXT: vmfeq.vv v17, v8, v86314; CHECK-NEXT: vmand.mm v16, v17, v166315; CHECK-NEXT: vmv1r.v v0, v166316; CHECK-NEXT: vmflt.vv v16, v8, v12, v0.t6317; CHECK-NEXT: vmnot.m v0, v166318; CHECK-NEXT: ret6319 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp6320 ret <vscale x 8 x i1> %16321}6322 6323define <vscale x 8 x i1> @fcmp_uge_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {6324; CHECK-LABEL: fcmp_uge_vf_nxv8f32:6325; CHECK: # %bb.0:6326; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6327; CHECK-NEXT: vfmv.v.f v12, fa06328; CHECK-NEXT: vmfeq.vf v16, v12, fa06329; CHECK-NEXT: vmfeq.vv v12, v8, v86330; CHECK-NEXT: vmand.mm v12, v12, v166331; CHECK-NEXT: vmv1r.v v0, v126332; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t6333; CHECK-NEXT: vmnot.m v0, v126334; CHECK-NEXT: ret6335 %head = insertelement <vscale x 8 x float> poison, float %b, i32 06336 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer6337 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp6338 ret <vscale x 8 x i1> %16339}6340 6341define <vscale x 8 x i1> @fcmp_uge_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {6342; CHECK-LABEL: fcmp_uge_fv_nxv8f32:6343; CHECK: # %bb.0:6344; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6345; CHECK-NEXT: vfmv.v.f v12, fa06346; CHECK-NEXT: vmfeq.vf v16, v12, fa06347; CHECK-NEXT: vmfeq.vv v12, v8, v86348; CHECK-NEXT: vmand.mm v12, v16, v126349; CHECK-NEXT: vmv1r.v v0, v126350; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t6351; CHECK-NEXT: vmnot.m v0, v126352; CHECK-NEXT: ret6353 %head = insertelement <vscale x 8 x float> poison, float %b, i32 06354 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer6355 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp6356 ret <vscale x 8 x i1> %16357}6358 6359define <vscale x 8 x i1> @fcmp_ult_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {6360; CHECK-LABEL: fcmp_ult_vv_nxv8f32:6361; CHECK: # %bb.0:6362; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6363; CHECK-NEXT: vmfeq.vv v16, v8, v86364; CHECK-NEXT: vmfeq.vv v17, v12, v126365; CHECK-NEXT: vmand.mm v16, v17, v166366; CHECK-NEXT: vmv1r.v v0, v166367; CHECK-NEXT: vmfle.vv v16, v12, v8, v0.t6368; CHECK-NEXT: vmnot.m v0, v166369; CHECK-NEXT: ret6370 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp6371 ret <vscale x 8 x i1> %16372}6373 6374define <vscale x 8 x i1> @fcmp_ult_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {6375; CHECK-LABEL: fcmp_ult_vf_nxv8f32:6376; CHECK: # %bb.0:6377; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6378; CHECK-NEXT: vfmv.v.f v12, fa06379; CHECK-NEXT: vmfeq.vf v16, v12, fa06380; CHECK-NEXT: vmfeq.vv v12, v8, v86381; CHECK-NEXT: vmand.mm v12, v16, v126382; CHECK-NEXT: vmv1r.v v0, v126383; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t6384; CHECK-NEXT: vmnot.m v0, v126385; CHECK-NEXT: ret6386 %head = insertelement <vscale x 8 x float> poison, float %b, i32 06387 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer6388 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp6389 ret <vscale x 8 x i1> %16390}6391 6392define <vscale x 8 x i1> @fcmp_ult_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {6393; CHECK-LABEL: fcmp_ult_fv_nxv8f32:6394; CHECK: # %bb.0:6395; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6396; CHECK-NEXT: vfmv.v.f v12, fa06397; CHECK-NEXT: vmfeq.vf v16, v12, fa06398; CHECK-NEXT: vmfeq.vv v12, v8, v86399; CHECK-NEXT: vmand.mm v12, v12, v166400; CHECK-NEXT: vmv1r.v v0, v126401; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t6402; CHECK-NEXT: vmnot.m v0, v126403; CHECK-NEXT: ret6404 %head = insertelement <vscale x 8 x float> poison, float %b, i32 06405 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer6406 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp6407 ret <vscale x 8 x i1> %16408}6409 6410define <vscale x 8 x i1> @fcmp_ule_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {6411; CHECK-LABEL: fcmp_ule_vv_nxv8f32:6412; CHECK: # %bb.0:6413; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6414; CHECK-NEXT: vmfeq.vv v16, v8, v86415; CHECK-NEXT: vmfeq.vv v17, v12, v126416; CHECK-NEXT: vmand.mm v16, v17, v166417; CHECK-NEXT: vmv1r.v v0, v166418; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t6419; CHECK-NEXT: vmnot.m v0, v166420; CHECK-NEXT: ret6421 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp6422 ret <vscale x 8 x i1> %16423}6424 6425define <vscale x 8 x i1> @fcmp_ule_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {6426; CHECK-LABEL: fcmp_ule_vf_nxv8f32:6427; CHECK: # %bb.0:6428; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6429; CHECK-NEXT: vfmv.v.f v12, fa06430; CHECK-NEXT: vmfeq.vf v16, v12, fa06431; CHECK-NEXT: vmfeq.vv v12, v8, v86432; CHECK-NEXT: vmand.mm v12, v16, v126433; CHECK-NEXT: vmv1r.v v0, v126434; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t6435; CHECK-NEXT: vmnot.m v0, v126436; CHECK-NEXT: ret6437 %head = insertelement <vscale x 8 x float> poison, float %b, i32 06438 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer6439 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp6440 ret <vscale x 8 x i1> %16441}6442 6443define <vscale x 8 x i1> @fcmp_ule_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {6444; CHECK-LABEL: fcmp_ule_fv_nxv8f32:6445; CHECK: # %bb.0:6446; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu6447; CHECK-NEXT: vfmv.v.f v12, fa06448; CHECK-NEXT: vmfeq.vf v16, v12, fa06449; CHECK-NEXT: vmfeq.vv v12, v8, v86450; CHECK-NEXT: vmand.mm v12, v12, v166451; CHECK-NEXT: vmv1r.v v0, v126452; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t6453; CHECK-NEXT: vmnot.m v0, v126454; CHECK-NEXT: ret6455 %head = insertelement <vscale x 8 x float> poison, float %b, i32 06456 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer6457 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp6458 ret <vscale x 8 x i1> %16459}6460 6461define <vscale x 8 x i1> @fcmp_une_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {6462; CHECK-LABEL: fcmp_une_vv_nxv8f32:6463; CHECK: # %bb.0:6464; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma6465; CHECK-NEXT: vmfne.vv v0, v8, v126466; CHECK-NEXT: ret6467 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp6468 ret <vscale x 8 x i1> %16469}6470 6471define <vscale x 8 x i1> @fcmp_une_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {6472; CHECK-LABEL: fcmp_une_vf_nxv8f32:6473; CHECK: # %bb.0:6474; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma6475; CHECK-NEXT: vmfne.vf v0, v8, fa06476; CHECK-NEXT: ret6477 %head = insertelement <vscale x 8 x float> poison, float %b, i32 06478 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer6479 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp6480 ret <vscale x 8 x i1> %16481}6482 6483define <vscale x 8 x i1> @fcmp_une_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {6484; CHECK-LABEL: fcmp_une_fv_nxv8f32:6485; CHECK: # %bb.0:6486; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma6487; CHECK-NEXT: vmfne.vf v0, v8, fa06488; CHECK-NEXT: ret6489 %head = insertelement <vscale x 8 x float> poison, float %b, i32 06490 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer6491 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp6492 ret <vscale x 8 x i1> %16493}6494 6495define <vscale x 8 x i1> @fcmp_uno_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {6496; CHECK-LABEL: fcmp_uno_vv_nxv8f32:6497; CHECK: # %bb.0:6498; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma6499; CHECK-NEXT: vmfne.vv v16, v12, v126500; CHECK-NEXT: vmfne.vv v12, v8, v86501; CHECK-NEXT: vmor.mm v0, v12, v166502; CHECK-NEXT: ret6503 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp6504 ret <vscale x 8 x i1> %16505}6506 6507define <vscale x 8 x i1> @fcmp_uno_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {6508; CHECK-LABEL: fcmp_uno_vf_nxv8f32:6509; CHECK: # %bb.0:6510; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma6511; CHECK-NEXT: vfmv.v.f v12, fa06512; CHECK-NEXT: vmfne.vf v16, v12, fa06513; CHECK-NEXT: vmfne.vv v12, v8, v86514; CHECK-NEXT: vmor.mm v0, v12, v166515; CHECK-NEXT: ret6516 %head = insertelement <vscale x 8 x float> poison, float %b, i32 06517 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer6518 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp6519 ret <vscale x 8 x i1> %16520}6521 6522define <vscale x 8 x i1> @fcmp_uno_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {6523; CHECK-LABEL: fcmp_uno_fv_nxv8f32:6524; CHECK: # %bb.0:6525; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma6526; CHECK-NEXT: vfmv.v.f v12, fa06527; CHECK-NEXT: vmfne.vf v16, v12, fa06528; CHECK-NEXT: vmfne.vv v12, v8, v86529; CHECK-NEXT: vmor.mm v0, v16, v126530; CHECK-NEXT: ret6531 %head = insertelement <vscale x 8 x float> poison, float %b, i32 06532 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer6533 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp6534 ret <vscale x 8 x i1> %16535}6536 6537define <vscale x 16 x i1> @fcmp_oeq_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {6538; CHECK-LABEL: fcmp_oeq_vv_nxv16f32:6539; CHECK: # %bb.0:6540; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma6541; CHECK-NEXT: vmfeq.vv v0, v8, v166542; CHECK-NEXT: ret6543 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp6544 ret <vscale x 16 x i1> %16545}6546 6547define <vscale x 16 x i1> @fcmp_oeq_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {6548; CHECK-LABEL: fcmp_oeq_vf_nxv16f32:6549; CHECK: # %bb.0:6550; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma6551; CHECK-NEXT: vmfeq.vf v0, v8, fa06552; CHECK-NEXT: ret6553 %head = insertelement <vscale x 16 x float> poison, float %b, i32 06554 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer6555 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp6556 ret <vscale x 16 x i1> %16557}6558 6559define <vscale x 16 x i1> @fcmp_oeq_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {6560; CHECK-LABEL: fcmp_oeq_fv_nxv16f32:6561; CHECK: # %bb.0:6562; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma6563; CHECK-NEXT: vmfeq.vf v0, v8, fa06564; CHECK-NEXT: ret6565 %head = insertelement <vscale x 16 x float> poison, float %b, i32 06566 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer6567 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp6568 ret <vscale x 16 x i1> %16569}6570 6571define <vscale x 16 x i1> @fcmp_ogt_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {6572; CHECK-LABEL: fcmp_ogt_vv_nxv16f32:6573; CHECK: # %bb.0:6574; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu6575; CHECK-NEXT: vmfeq.vv v24, v8, v86576; CHECK-NEXT: vmfeq.vv v25, v16, v166577; CHECK-NEXT: vmand.mm v24, v25, v246578; CHECK-NEXT: vmv1r.v v0, v246579; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t6580; CHECK-NEXT: vmv1r.v v0, v246581; CHECK-NEXT: ret6582 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp6583 ret <vscale x 16 x i1> %16584}6585 6586define <vscale x 16 x i1> @fcmp_ogt_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {6587; CHECK-LABEL: fcmp_ogt_vf_nxv16f32:6588; CHECK: # %bb.0:6589; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu6590; CHECK-NEXT: vfmv.v.f v16, fa06591; CHECK-NEXT: vmfeq.vf v24, v16, fa06592; CHECK-NEXT: vmfeq.vv v16, v8, v86593; CHECK-NEXT: vmand.mm v16, v24, v166594; CHECK-NEXT: vmv1r.v v0, v166595; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t6596; CHECK-NEXT: vmv1r.v v0, v166597; CHECK-NEXT: ret6598 %head = insertelement <vscale x 16 x float> poison, float %b, i32 06599 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer6600 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp6601 ret <vscale x 16 x i1> %16602}6603 6604define <vscale x 16 x i1> @fcmp_ogt_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {6605; CHECK-LABEL: fcmp_ogt_fv_nxv16f32:6606; CHECK: # %bb.0:6607; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu6608; CHECK-NEXT: vfmv.v.f v16, fa06609; CHECK-NEXT: vmfeq.vf v24, v16, fa06610; CHECK-NEXT: vmfeq.vv v16, v8, v86611; CHECK-NEXT: vmand.mm v16, v16, v246612; CHECK-NEXT: vmv1r.v v0, v166613; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t6614; CHECK-NEXT: vmv1r.v v0, v166615; CHECK-NEXT: ret6616 %head = insertelement <vscale x 16 x float> poison, float %b, i32 06617 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer6618 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp6619 ret <vscale x 16 x i1> %16620}6621 6622define <vscale x 16 x i1> @fcmp_oge_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {6623; CHECK-LABEL: fcmp_oge_vv_nxv16f32:6624; CHECK: # %bb.0:6625; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu6626; CHECK-NEXT: vmfeq.vv v24, v8, v86627; CHECK-NEXT: vmfeq.vv v25, v16, v166628; CHECK-NEXT: vmand.mm v24, v25, v246629; CHECK-NEXT: vmv1r.v v0, v246630; CHECK-NEXT: vmfle.vv v24, v16, v8, v0.t6631; CHECK-NEXT: vmv1r.v v0, v246632; CHECK-NEXT: ret6633 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp6634 ret <vscale x 16 x i1> %16635}6636 6637define <vscale x 16 x i1> @fcmp_oge_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {6638; CHECK-LABEL: fcmp_oge_vf_nxv16f32:6639; CHECK: # %bb.0:6640; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu6641; CHECK-NEXT: vfmv.v.f v16, fa06642; CHECK-NEXT: vmfeq.vf v24, v16, fa06643; CHECK-NEXT: vmfeq.vv v16, v8, v86644; CHECK-NEXT: vmand.mm v16, v24, v166645; CHECK-NEXT: vmv1r.v v0, v166646; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t6647; CHECK-NEXT: vmv1r.v v0, v166648; CHECK-NEXT: ret6649 %head = insertelement <vscale x 16 x float> poison, float %b, i32 06650 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer6651 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp6652 ret <vscale x 16 x i1> %16653}6654 6655define <vscale x 16 x i1> @fcmp_oge_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {6656; CHECK-LABEL: fcmp_oge_fv_nxv16f32:6657; CHECK: # %bb.0:6658; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu6659; CHECK-NEXT: vfmv.v.f v16, fa06660; CHECK-NEXT: vmfeq.vf v24, v16, fa06661; CHECK-NEXT: vmfeq.vv v16, v8, v86662; CHECK-NEXT: vmand.mm v16, v16, v246663; CHECK-NEXT: vmv1r.v v0, v166664; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t6665; CHECK-NEXT: vmv1r.v v0, v166666; CHECK-NEXT: ret6667 %head = insertelement <vscale x 16 x float> poison, float %b, i32 06668 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer6669 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp6670 ret <vscale x 16 x i1> %16671}6672 6673define <vscale x 16 x i1> @fcmp_olt_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {6674; CHECK-LABEL: fcmp_olt_vv_nxv16f32:6675; CHECK: # %bb.0:6676; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu6677; CHECK-NEXT: vmfeq.vv v24, v16, v166678; CHECK-NEXT: vmfeq.vv v25, v8, v86679; CHECK-NEXT: vmand.mm v24, v25, v246680; CHECK-NEXT: vmv1r.v v0, v246681; CHECK-NEXT: vmflt.vv v24, v8, v16, v0.t6682; CHECK-NEXT: vmv1r.v v0, v246683; CHECK-NEXT: ret6684 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp6685 ret <vscale x 16 x i1> %16686}6687 6688define <vscale x 16 x i1> @fcmp_olt_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {6689; CHECK-LABEL: fcmp_olt_vf_nxv16f32:6690; CHECK: # %bb.0:6691; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu6692; CHECK-NEXT: vfmv.v.f v16, fa06693; CHECK-NEXT: vmfeq.vf v24, v16, fa06694; CHECK-NEXT: vmfeq.vv v16, v8, v86695; CHECK-NEXT: vmand.mm v16, v16, v246696; CHECK-NEXT: vmv1r.v v0, v166697; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t6698; CHECK-NEXT: vmv1r.v v0, v166699; CHECK-NEXT: ret6700 %head = insertelement <vscale x 16 x float> poison, float %b, i32 06701 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer6702 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp6703 ret <vscale x 16 x i1> %16704}6705 6706define <vscale x 16 x i1> @fcmp_olt_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {6707; CHECK-LABEL: fcmp_olt_fv_nxv16f32:6708; CHECK: # %bb.0:6709; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu6710; CHECK-NEXT: vfmv.v.f v16, fa06711; CHECK-NEXT: vmfeq.vf v24, v16, fa06712; CHECK-NEXT: vmfeq.vv v16, v8, v86713; CHECK-NEXT: vmand.mm v16, v24, v166714; CHECK-NEXT: vmv1r.v v0, v166715; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t6716; CHECK-NEXT: vmv1r.v v0, v166717; CHECK-NEXT: ret6718 %head = insertelement <vscale x 16 x float> poison, float %b, i32 06719 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer6720 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp6721 ret <vscale x 16 x i1> %16722}6723 6724define <vscale x 16 x i1> @fcmp_ole_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {6725; CHECK-LABEL: fcmp_ole_vv_nxv16f32:6726; CHECK: # %bb.0:6727; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu6728; CHECK-NEXT: vmfeq.vv v24, v16, v166729; CHECK-NEXT: vmfeq.vv v25, v8, v86730; CHECK-NEXT: vmand.mm v24, v25, v246731; CHECK-NEXT: vmv1r.v v0, v246732; CHECK-NEXT: vmfle.vv v24, v8, v16, v0.t6733; CHECK-NEXT: vmv1r.v v0, v246734; CHECK-NEXT: ret6735 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp6736 ret <vscale x 16 x i1> %16737}6738 6739define <vscale x 16 x i1> @fcmp_ole_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {6740; CHECK-LABEL: fcmp_ole_vf_nxv16f32:6741; CHECK: # %bb.0:6742; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu6743; CHECK-NEXT: vfmv.v.f v16, fa06744; CHECK-NEXT: vmfeq.vf v24, v16, fa06745; CHECK-NEXT: vmfeq.vv v16, v8, v86746; CHECK-NEXT: vmand.mm v16, v16, v246747; CHECK-NEXT: vmv1r.v v0, v166748; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t6749; CHECK-NEXT: vmv1r.v v0, v166750; CHECK-NEXT: ret6751 %head = insertelement <vscale x 16 x float> poison, float %b, i32 06752 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer6753 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp6754 ret <vscale x 16 x i1> %16755}6756 6757define <vscale x 16 x i1> @fcmp_ole_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {6758; CHECK-LABEL: fcmp_ole_fv_nxv16f32:6759; CHECK: # %bb.0:6760; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu6761; CHECK-NEXT: vfmv.v.f v16, fa06762; CHECK-NEXT: vmfeq.vf v24, v16, fa06763; CHECK-NEXT: vmfeq.vv v16, v8, v86764; CHECK-NEXT: vmand.mm v16, v24, v166765; CHECK-NEXT: vmv1r.v v0, v166766; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t6767; CHECK-NEXT: vmv1r.v v0, v166768; CHECK-NEXT: ret6769 %head = insertelement <vscale x 16 x float> poison, float %b, i32 06770 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer6771 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp6772 ret <vscale x 16 x i1> %16773}6774 6775define <vscale x 16 x i1> @fcmp_one_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {6776; CHECK-LABEL: fcmp_one_vv_nxv16f32:6777; CHECK: # %bb.0:6778; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu6779; CHECK-NEXT: vmfeq.vv v24, v16, v166780; CHECK-NEXT: vmfeq.vv v25, v8, v86781; CHECK-NEXT: vmand.mm v24, v25, v246782; CHECK-NEXT: vmv1r.v v25, v246783; CHECK-NEXT: vmv1r.v v0, v246784; CHECK-NEXT: vmflt.vv v25, v8, v16, v0.t6785; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t6786; CHECK-NEXT: vmor.mm v0, v24, v256787; CHECK-NEXT: ret6788 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp6789 ret <vscale x 16 x i1> %16790}6791 6792define <vscale x 16 x i1> @fcmp_one_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {6793; CHECK-LABEL: fcmp_one_vf_nxv16f32:6794; CHECK: # %bb.0:6795; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu6796; CHECK-NEXT: vfmv.v.f v16, fa06797; CHECK-NEXT: vmfeq.vf v24, v16, fa06798; CHECK-NEXT: vmfeq.vv v16, v8, v86799; CHECK-NEXT: vmand.mm v16, v16, v246800; CHECK-NEXT: vmv1r.v v17, v166801; CHECK-NEXT: vmv1r.v v0, v166802; CHECK-NEXT: vmflt.vf v17, v8, fa0, v0.t6803; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t6804; CHECK-NEXT: vmor.mm v0, v16, v176805; CHECK-NEXT: ret6806 %head = insertelement <vscale x 16 x float> poison, float %b, i32 06807 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer6808 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp6809 ret <vscale x 16 x i1> %16810}6811 6812define <vscale x 16 x i1> @fcmp_one_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {6813; CHECK-LABEL: fcmp_one_fv_nxv16f32:6814; CHECK: # %bb.0:6815; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu6816; CHECK-NEXT: vfmv.v.f v16, fa06817; CHECK-NEXT: vmfeq.vf v24, v16, fa06818; CHECK-NEXT: vmfeq.vv v16, v8, v86819; CHECK-NEXT: vmand.mm v16, v24, v166820; CHECK-NEXT: vmv1r.v v17, v166821; CHECK-NEXT: vmv1r.v v0, v166822; CHECK-NEXT: vmfgt.vf v17, v8, fa0, v0.t6823; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t6824; CHECK-NEXT: vmor.mm v0, v16, v176825; CHECK-NEXT: ret6826 %head = insertelement <vscale x 16 x float> poison, float %b, i32 06827 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer6828 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp6829 ret <vscale x 16 x i1> %16830}6831 6832define <vscale x 16 x i1> @fcmp_ord_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {6833; CHECK-LABEL: fcmp_ord_vv_nxv16f32:6834; CHECK: # %bb.0:6835; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma6836; CHECK-NEXT: vmfeq.vv v24, v16, v166837; CHECK-NEXT: vmfeq.vv v16, v8, v86838; CHECK-NEXT: vmand.mm v0, v16, v246839; CHECK-NEXT: ret6840 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp6841 ret <vscale x 16 x i1> %16842}6843 6844define <vscale x 16 x i1> @fcmp_ord_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {6845; CHECK-LABEL: fcmp_ord_vf_nxv16f32:6846; CHECK: # %bb.0:6847; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma6848; CHECK-NEXT: vfmv.v.f v16, fa06849; CHECK-NEXT: vmfeq.vf v24, v16, fa06850; CHECK-NEXT: vmfeq.vv v16, v8, v86851; CHECK-NEXT: vmand.mm v0, v16, v246852; CHECK-NEXT: ret6853 %head = insertelement <vscale x 16 x float> poison, float %b, i32 06854 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer6855 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp6856 ret <vscale x 16 x i1> %16857}6858 6859define <vscale x 16 x i1> @fcmp_ord_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {6860; CHECK-LABEL: fcmp_ord_fv_nxv16f32:6861; CHECK: # %bb.0:6862; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma6863; CHECK-NEXT: vfmv.v.f v16, fa06864; CHECK-NEXT: vmfeq.vf v24, v16, fa06865; CHECK-NEXT: vmfeq.vv v16, v8, v86866; CHECK-NEXT: vmand.mm v0, v24, v166867; CHECK-NEXT: ret6868 %head = insertelement <vscale x 16 x float> poison, float %b, i32 06869 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer6870 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp6871 ret <vscale x 16 x i1> %16872}6873 6874define <vscale x 16 x i1> @fcmp_ueq_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {6875; CHECK-LABEL: fcmp_ueq_vv_nxv16f32:6876; CHECK: # %bb.0:6877; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu6878; CHECK-NEXT: vmfeq.vv v24, v16, v166879; CHECK-NEXT: vmfeq.vv v25, v8, v86880; CHECK-NEXT: vmand.mm v24, v25, v246881; CHECK-NEXT: vmv1r.v v25, v246882; CHECK-NEXT: vmv1r.v v0, v246883; CHECK-NEXT: vmflt.vv v25, v8, v16, v0.t6884; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t6885; CHECK-NEXT: vmnor.mm v0, v24, v256886; CHECK-NEXT: ret6887 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp6888 ret <vscale x 16 x i1> %16889}6890 6891define <vscale x 16 x i1> @fcmp_ueq_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {6892; CHECK-LABEL: fcmp_ueq_vf_nxv16f32:6893; CHECK: # %bb.0:6894; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu6895; CHECK-NEXT: vfmv.v.f v16, fa06896; CHECK-NEXT: vmfeq.vf v24, v16, fa06897; CHECK-NEXT: vmfeq.vv v16, v8, v86898; CHECK-NEXT: vmand.mm v16, v16, v246899; CHECK-NEXT: vmv1r.v v17, v166900; CHECK-NEXT: vmv1r.v v0, v166901; CHECK-NEXT: vmflt.vf v17, v8, fa0, v0.t6902; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t6903; CHECK-NEXT: vmnor.mm v0, v16, v176904; CHECK-NEXT: ret6905 %head = insertelement <vscale x 16 x float> poison, float %b, i32 06906 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer6907 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp6908 ret <vscale x 16 x i1> %16909}6910 6911define <vscale x 16 x i1> @fcmp_ueq_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {6912; CHECK-LABEL: fcmp_ueq_fv_nxv16f32:6913; CHECK: # %bb.0:6914; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu6915; CHECK-NEXT: vfmv.v.f v16, fa06916; CHECK-NEXT: vmfeq.vf v24, v16, fa06917; CHECK-NEXT: vmfeq.vv v16, v8, v86918; CHECK-NEXT: vmand.mm v16, v24, v166919; CHECK-NEXT: vmv1r.v v17, v166920; CHECK-NEXT: vmv1r.v v0, v166921; CHECK-NEXT: vmfgt.vf v17, v8, fa0, v0.t6922; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t6923; CHECK-NEXT: vmnor.mm v0, v16, v176924; CHECK-NEXT: ret6925 %head = insertelement <vscale x 16 x float> poison, float %b, i32 06926 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer6927 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp6928 ret <vscale x 16 x i1> %16929}6930 6931define <vscale x 16 x i1> @fcmp_ugt_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {6932; CHECK-LABEL: fcmp_ugt_vv_nxv16f32:6933; CHECK: # %bb.0:6934; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu6935; CHECK-NEXT: vmfeq.vv v24, v16, v166936; CHECK-NEXT: vmfeq.vv v25, v8, v86937; CHECK-NEXT: vmand.mm v24, v25, v246938; CHECK-NEXT: vmv1r.v v0, v246939; CHECK-NEXT: vmfle.vv v24, v8, v16, v0.t6940; CHECK-NEXT: vmnot.m v0, v246941; CHECK-NEXT: ret6942 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp6943 ret <vscale x 16 x i1> %16944}6945 6946define <vscale x 16 x i1> @fcmp_ugt_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {6947; CHECK-LABEL: fcmp_ugt_vf_nxv16f32:6948; CHECK: # %bb.0:6949; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu6950; CHECK-NEXT: vfmv.v.f v16, fa06951; CHECK-NEXT: vmfeq.vf v24, v16, fa06952; CHECK-NEXT: vmfeq.vv v16, v8, v86953; CHECK-NEXT: vmand.mm v16, v16, v246954; CHECK-NEXT: vmv1r.v v0, v166955; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t6956; CHECK-NEXT: vmnot.m v0, v166957; CHECK-NEXT: ret6958 %head = insertelement <vscale x 16 x float> poison, float %b, i32 06959 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer6960 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp6961 ret <vscale x 16 x i1> %16962}6963 6964define <vscale x 16 x i1> @fcmp_ugt_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {6965; CHECK-LABEL: fcmp_ugt_fv_nxv16f32:6966; CHECK: # %bb.0:6967; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu6968; CHECK-NEXT: vfmv.v.f v16, fa06969; CHECK-NEXT: vmfeq.vf v24, v16, fa06970; CHECK-NEXT: vmfeq.vv v16, v8, v86971; CHECK-NEXT: vmand.mm v16, v24, v166972; CHECK-NEXT: vmv1r.v v0, v166973; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t6974; CHECK-NEXT: vmnot.m v0, v166975; CHECK-NEXT: ret6976 %head = insertelement <vscale x 16 x float> poison, float %b, i32 06977 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer6978 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp6979 ret <vscale x 16 x i1> %16980}6981 6982define <vscale x 16 x i1> @fcmp_uge_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {6983; CHECK-LABEL: fcmp_uge_vv_nxv16f32:6984; CHECK: # %bb.0:6985; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu6986; CHECK-NEXT: vmfeq.vv v24, v16, v166987; CHECK-NEXT: vmfeq.vv v25, v8, v86988; CHECK-NEXT: vmand.mm v24, v25, v246989; CHECK-NEXT: vmv1r.v v0, v246990; CHECK-NEXT: vmflt.vv v24, v8, v16, v0.t6991; CHECK-NEXT: vmnot.m v0, v246992; CHECK-NEXT: ret6993 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp6994 ret <vscale x 16 x i1> %16995}6996 6997define <vscale x 16 x i1> @fcmp_uge_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {6998; CHECK-LABEL: fcmp_uge_vf_nxv16f32:6999; CHECK: # %bb.0:7000; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu7001; CHECK-NEXT: vfmv.v.f v16, fa07002; CHECK-NEXT: vmfeq.vf v24, v16, fa07003; CHECK-NEXT: vmfeq.vv v16, v8, v87004; CHECK-NEXT: vmand.mm v16, v16, v247005; CHECK-NEXT: vmv1r.v v0, v167006; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t7007; CHECK-NEXT: vmnot.m v0, v167008; CHECK-NEXT: ret7009 %head = insertelement <vscale x 16 x float> poison, float %b, i32 07010 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer7011 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp7012 ret <vscale x 16 x i1> %17013}7014 7015define <vscale x 16 x i1> @fcmp_uge_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {7016; CHECK-LABEL: fcmp_uge_fv_nxv16f32:7017; CHECK: # %bb.0:7018; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu7019; CHECK-NEXT: vfmv.v.f v16, fa07020; CHECK-NEXT: vmfeq.vf v24, v16, fa07021; CHECK-NEXT: vmfeq.vv v16, v8, v87022; CHECK-NEXT: vmand.mm v16, v24, v167023; CHECK-NEXT: vmv1r.v v0, v167024; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t7025; CHECK-NEXT: vmnot.m v0, v167026; CHECK-NEXT: ret7027 %head = insertelement <vscale x 16 x float> poison, float %b, i32 07028 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer7029 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp7030 ret <vscale x 16 x i1> %17031}7032 7033define <vscale x 16 x i1> @fcmp_ult_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {7034; CHECK-LABEL: fcmp_ult_vv_nxv16f32:7035; CHECK: # %bb.0:7036; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu7037; CHECK-NEXT: vmfeq.vv v24, v8, v87038; CHECK-NEXT: vmfeq.vv v25, v16, v167039; CHECK-NEXT: vmand.mm v24, v25, v247040; CHECK-NEXT: vmv1r.v v0, v247041; CHECK-NEXT: vmfle.vv v24, v16, v8, v0.t7042; CHECK-NEXT: vmnot.m v0, v247043; CHECK-NEXT: ret7044 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp7045 ret <vscale x 16 x i1> %17046}7047 7048define <vscale x 16 x i1> @fcmp_ult_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {7049; CHECK-LABEL: fcmp_ult_vf_nxv16f32:7050; CHECK: # %bb.0:7051; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu7052; CHECK-NEXT: vfmv.v.f v16, fa07053; CHECK-NEXT: vmfeq.vf v24, v16, fa07054; CHECK-NEXT: vmfeq.vv v16, v8, v87055; CHECK-NEXT: vmand.mm v16, v24, v167056; CHECK-NEXT: vmv1r.v v0, v167057; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t7058; CHECK-NEXT: vmnot.m v0, v167059; CHECK-NEXT: ret7060 %head = insertelement <vscale x 16 x float> poison, float %b, i32 07061 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer7062 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp7063 ret <vscale x 16 x i1> %17064}7065 7066define <vscale x 16 x i1> @fcmp_ult_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {7067; CHECK-LABEL: fcmp_ult_fv_nxv16f32:7068; CHECK: # %bb.0:7069; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu7070; CHECK-NEXT: vfmv.v.f v16, fa07071; CHECK-NEXT: vmfeq.vf v24, v16, fa07072; CHECK-NEXT: vmfeq.vv v16, v8, v87073; CHECK-NEXT: vmand.mm v16, v16, v247074; CHECK-NEXT: vmv1r.v v0, v167075; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t7076; CHECK-NEXT: vmnot.m v0, v167077; CHECK-NEXT: ret7078 %head = insertelement <vscale x 16 x float> poison, float %b, i32 07079 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer7080 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp7081 ret <vscale x 16 x i1> %17082}7083 7084define <vscale x 16 x i1> @fcmp_ule_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {7085; CHECK-LABEL: fcmp_ule_vv_nxv16f32:7086; CHECK: # %bb.0:7087; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu7088; CHECK-NEXT: vmfeq.vv v24, v8, v87089; CHECK-NEXT: vmfeq.vv v25, v16, v167090; CHECK-NEXT: vmand.mm v24, v25, v247091; CHECK-NEXT: vmv1r.v v0, v247092; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t7093; CHECK-NEXT: vmnot.m v0, v247094; CHECK-NEXT: ret7095 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp7096 ret <vscale x 16 x i1> %17097}7098 7099define <vscale x 16 x i1> @fcmp_ule_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {7100; CHECK-LABEL: fcmp_ule_vf_nxv16f32:7101; CHECK: # %bb.0:7102; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu7103; CHECK-NEXT: vfmv.v.f v16, fa07104; CHECK-NEXT: vmfeq.vf v24, v16, fa07105; CHECK-NEXT: vmfeq.vv v16, v8, v87106; CHECK-NEXT: vmand.mm v16, v24, v167107; CHECK-NEXT: vmv1r.v v0, v167108; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t7109; CHECK-NEXT: vmnot.m v0, v167110; CHECK-NEXT: ret7111 %head = insertelement <vscale x 16 x float> poison, float %b, i32 07112 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer7113 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp7114 ret <vscale x 16 x i1> %17115}7116 7117define <vscale x 16 x i1> @fcmp_ule_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {7118; CHECK-LABEL: fcmp_ule_fv_nxv16f32:7119; CHECK: # %bb.0:7120; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu7121; CHECK-NEXT: vfmv.v.f v16, fa07122; CHECK-NEXT: vmfeq.vf v24, v16, fa07123; CHECK-NEXT: vmfeq.vv v16, v8, v87124; CHECK-NEXT: vmand.mm v16, v16, v247125; CHECK-NEXT: vmv1r.v v0, v167126; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t7127; CHECK-NEXT: vmnot.m v0, v167128; CHECK-NEXT: ret7129 %head = insertelement <vscale x 16 x float> poison, float %b, i32 07130 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer7131 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp7132 ret <vscale x 16 x i1> %17133}7134 7135define <vscale x 16 x i1> @fcmp_une_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {7136; CHECK-LABEL: fcmp_une_vv_nxv16f32:7137; CHECK: # %bb.0:7138; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma7139; CHECK-NEXT: vmfne.vv v0, v8, v167140; CHECK-NEXT: ret7141 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp7142 ret <vscale x 16 x i1> %17143}7144 7145define <vscale x 16 x i1> @fcmp_une_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {7146; CHECK-LABEL: fcmp_une_vf_nxv16f32:7147; CHECK: # %bb.0:7148; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma7149; CHECK-NEXT: vmfne.vf v0, v8, fa07150; CHECK-NEXT: ret7151 %head = insertelement <vscale x 16 x float> poison, float %b, i32 07152 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer7153 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp7154 ret <vscale x 16 x i1> %17155}7156 7157define <vscale x 16 x i1> @fcmp_une_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {7158; CHECK-LABEL: fcmp_une_fv_nxv16f32:7159; CHECK: # %bb.0:7160; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma7161; CHECK-NEXT: vmfne.vf v0, v8, fa07162; CHECK-NEXT: ret7163 %head = insertelement <vscale x 16 x float> poison, float %b, i32 07164 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer7165 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp7166 ret <vscale x 16 x i1> %17167}7168 7169define <vscale x 16 x i1> @fcmp_uno_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {7170; CHECK-LABEL: fcmp_uno_vv_nxv16f32:7171; CHECK: # %bb.0:7172; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma7173; CHECK-NEXT: vmfne.vv v24, v16, v167174; CHECK-NEXT: vmfne.vv v16, v8, v87175; CHECK-NEXT: vmor.mm v0, v16, v247176; CHECK-NEXT: ret7177 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp7178 ret <vscale x 16 x i1> %17179}7180 7181define <vscale x 16 x i1> @fcmp_uno_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {7182; CHECK-LABEL: fcmp_uno_vf_nxv16f32:7183; CHECK: # %bb.0:7184; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma7185; CHECK-NEXT: vfmv.v.f v16, fa07186; CHECK-NEXT: vmfne.vf v24, v16, fa07187; CHECK-NEXT: vmfne.vv v16, v8, v87188; CHECK-NEXT: vmor.mm v0, v16, v247189; CHECK-NEXT: ret7190 %head = insertelement <vscale x 16 x float> poison, float %b, i32 07191 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer7192 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp7193 ret <vscale x 16 x i1> %17194}7195 7196define <vscale x 16 x i1> @fcmp_uno_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {7197; CHECK-LABEL: fcmp_uno_fv_nxv16f32:7198; CHECK: # %bb.0:7199; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma7200; CHECK-NEXT: vfmv.v.f v16, fa07201; CHECK-NEXT: vmfne.vf v24, v16, fa07202; CHECK-NEXT: vmfne.vv v16, v8, v87203; CHECK-NEXT: vmor.mm v0, v24, v167204; CHECK-NEXT: ret7205 %head = insertelement <vscale x 16 x float> poison, float %b, i32 07206 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer7207 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp7208 ret <vscale x 16 x i1> %17209}7210 7211define <vscale x 1 x i1> @fcmp_oeq_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {7212; CHECK-LABEL: fcmp_oeq_vv_nxv1f64:7213; CHECK: # %bb.0:7214; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma7215; CHECK-NEXT: vmfeq.vv v0, v8, v97216; CHECK-NEXT: ret7217 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp7218 ret <vscale x 1 x i1> %17219}7220 7221define <vscale x 1 x i1> @fcmp_oeq_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7222; CHECK-LABEL: fcmp_oeq_vf_nxv1f64:7223; CHECK: # %bb.0:7224; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma7225; CHECK-NEXT: vmfeq.vf v0, v8, fa07226; CHECK-NEXT: ret7227 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07228 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7229 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp7230 ret <vscale x 1 x i1> %17231}7232 7233define <vscale x 1 x i1> @fcmp_oeq_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7234; CHECK-LABEL: fcmp_oeq_fv_nxv1f64:7235; CHECK: # %bb.0:7236; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma7237; CHECK-NEXT: vmfeq.vf v0, v8, fa07238; CHECK-NEXT: ret7239 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07240 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7241 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp7242 ret <vscale x 1 x i1> %17243}7244 7245define <vscale x 1 x i1> @fcmp_ogt_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {7246; CHECK-LABEL: fcmp_ogt_vv_nxv1f64:7247; CHECK: # %bb.0:7248; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7249; CHECK-NEXT: vmfeq.vv v10, v8, v87250; CHECK-NEXT: vmfeq.vv v11, v9, v97251; CHECK-NEXT: vmand.mm v0, v11, v107252; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t7253; CHECK-NEXT: ret7254 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp7255 ret <vscale x 1 x i1> %17256}7257 7258define <vscale x 1 x i1> @fcmp_ogt_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7259; CHECK-LABEL: fcmp_ogt_vf_nxv1f64:7260; CHECK: # %bb.0:7261; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7262; CHECK-NEXT: vfmv.v.f v9, fa07263; CHECK-NEXT: vmfeq.vv v10, v8, v87264; CHECK-NEXT: vmfeq.vf v9, v9, fa07265; CHECK-NEXT: vmand.mm v0, v9, v107266; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t7267; CHECK-NEXT: ret7268 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07269 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7270 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp7271 ret <vscale x 1 x i1> %17272}7273 7274define <vscale x 1 x i1> @fcmp_ogt_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7275; CHECK-LABEL: fcmp_ogt_fv_nxv1f64:7276; CHECK: # %bb.0:7277; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7278; CHECK-NEXT: vfmv.v.f v9, fa07279; CHECK-NEXT: vmfeq.vv v10, v8, v87280; CHECK-NEXT: vmfeq.vf v9, v9, fa07281; CHECK-NEXT: vmand.mm v0, v10, v97282; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t7283; CHECK-NEXT: ret7284 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07285 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7286 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp7287 ret <vscale x 1 x i1> %17288}7289 7290define <vscale x 1 x i1> @fcmp_oge_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {7291; CHECK-LABEL: fcmp_oge_vv_nxv1f64:7292; CHECK: # %bb.0:7293; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7294; CHECK-NEXT: vmfeq.vv v10, v8, v87295; CHECK-NEXT: vmfeq.vv v11, v9, v97296; CHECK-NEXT: vmand.mm v0, v11, v107297; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t7298; CHECK-NEXT: ret7299 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp7300 ret <vscale x 1 x i1> %17301}7302 7303define <vscale x 1 x i1> @fcmp_oge_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7304; CHECK-LABEL: fcmp_oge_vf_nxv1f64:7305; CHECK: # %bb.0:7306; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7307; CHECK-NEXT: vfmv.v.f v9, fa07308; CHECK-NEXT: vmfeq.vv v10, v8, v87309; CHECK-NEXT: vmfeq.vf v9, v9, fa07310; CHECK-NEXT: vmand.mm v0, v9, v107311; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t7312; CHECK-NEXT: ret7313 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07314 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7315 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp7316 ret <vscale x 1 x i1> %17317}7318 7319define <vscale x 1 x i1> @fcmp_oge_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7320; CHECK-LABEL: fcmp_oge_fv_nxv1f64:7321; CHECK: # %bb.0:7322; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7323; CHECK-NEXT: vfmv.v.f v9, fa07324; CHECK-NEXT: vmfeq.vv v10, v8, v87325; CHECK-NEXT: vmfeq.vf v9, v9, fa07326; CHECK-NEXT: vmand.mm v0, v10, v97327; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t7328; CHECK-NEXT: ret7329 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07330 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7331 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp7332 ret <vscale x 1 x i1> %17333}7334 7335define <vscale x 1 x i1> @fcmp_olt_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {7336; CHECK-LABEL: fcmp_olt_vv_nxv1f64:7337; CHECK: # %bb.0:7338; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7339; CHECK-NEXT: vmfeq.vv v10, v9, v97340; CHECK-NEXT: vmfeq.vv v11, v8, v87341; CHECK-NEXT: vmand.mm v0, v11, v107342; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t7343; CHECK-NEXT: ret7344 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp7345 ret <vscale x 1 x i1> %17346}7347 7348define <vscale x 1 x i1> @fcmp_olt_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7349; CHECK-LABEL: fcmp_olt_vf_nxv1f64:7350; CHECK: # %bb.0:7351; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7352; CHECK-NEXT: vfmv.v.f v9, fa07353; CHECK-NEXT: vmfeq.vv v10, v8, v87354; CHECK-NEXT: vmfeq.vf v9, v9, fa07355; CHECK-NEXT: vmand.mm v0, v10, v97356; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t7357; CHECK-NEXT: ret7358 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07359 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7360 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp7361 ret <vscale x 1 x i1> %17362}7363 7364define <vscale x 1 x i1> @fcmp_olt_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7365; CHECK-LABEL: fcmp_olt_fv_nxv1f64:7366; CHECK: # %bb.0:7367; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7368; CHECK-NEXT: vfmv.v.f v9, fa07369; CHECK-NEXT: vmfeq.vv v10, v8, v87370; CHECK-NEXT: vmfeq.vf v9, v9, fa07371; CHECK-NEXT: vmand.mm v0, v9, v107372; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t7373; CHECK-NEXT: ret7374 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07375 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7376 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp7377 ret <vscale x 1 x i1> %17378}7379 7380define <vscale x 1 x i1> @fcmp_ole_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {7381; CHECK-LABEL: fcmp_ole_vv_nxv1f64:7382; CHECK: # %bb.0:7383; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7384; CHECK-NEXT: vmfeq.vv v10, v9, v97385; CHECK-NEXT: vmfeq.vv v11, v8, v87386; CHECK-NEXT: vmand.mm v0, v11, v107387; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t7388; CHECK-NEXT: ret7389 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp7390 ret <vscale x 1 x i1> %17391}7392 7393define <vscale x 1 x i1> @fcmp_ole_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7394; CHECK-LABEL: fcmp_ole_vf_nxv1f64:7395; CHECK: # %bb.0:7396; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7397; CHECK-NEXT: vfmv.v.f v9, fa07398; CHECK-NEXT: vmfeq.vv v10, v8, v87399; CHECK-NEXT: vmfeq.vf v9, v9, fa07400; CHECK-NEXT: vmand.mm v0, v10, v97401; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t7402; CHECK-NEXT: ret7403 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07404 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7405 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp7406 ret <vscale x 1 x i1> %17407}7408 7409define <vscale x 1 x i1> @fcmp_ole_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7410; CHECK-LABEL: fcmp_ole_fv_nxv1f64:7411; CHECK: # %bb.0:7412; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7413; CHECK-NEXT: vfmv.v.f v9, fa07414; CHECK-NEXT: vmfeq.vv v10, v8, v87415; CHECK-NEXT: vmfeq.vf v9, v9, fa07416; CHECK-NEXT: vmand.mm v0, v9, v107417; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t7418; CHECK-NEXT: ret7419 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07420 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7421 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp7422 ret <vscale x 1 x i1> %17423}7424 7425define <vscale x 1 x i1> @fcmp_one_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {7426; CHECK-LABEL: fcmp_one_vv_nxv1f64:7427; CHECK: # %bb.0:7428; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7429; CHECK-NEXT: vmfeq.vv v10, v9, v97430; CHECK-NEXT: vmfeq.vv v11, v8, v87431; CHECK-NEXT: vmand.mm v0, v11, v107432; CHECK-NEXT: vmv.v.v v10, v07433; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t7434; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t7435; CHECK-NEXT: vmor.mm v0, v0, v107436; CHECK-NEXT: ret7437 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp7438 ret <vscale x 1 x i1> %17439}7440 7441define <vscale x 1 x i1> @fcmp_one_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7442; CHECK-LABEL: fcmp_one_vf_nxv1f64:7443; CHECK: # %bb.0:7444; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7445; CHECK-NEXT: vfmv.v.f v9, fa07446; CHECK-NEXT: vmfeq.vv v10, v8, v87447; CHECK-NEXT: vmfeq.vf v9, v9, fa07448; CHECK-NEXT: vmand.mm v0, v10, v97449; CHECK-NEXT: vmv.v.v v9, v07450; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t7451; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t7452; CHECK-NEXT: vmor.mm v0, v0, v97453; CHECK-NEXT: ret7454 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07455 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7456 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp7457 ret <vscale x 1 x i1> %17458}7459 7460define <vscale x 1 x i1> @fcmp_one_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7461; CHECK-LABEL: fcmp_one_fv_nxv1f64:7462; CHECK: # %bb.0:7463; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7464; CHECK-NEXT: vfmv.v.f v9, fa07465; CHECK-NEXT: vmfeq.vv v10, v8, v87466; CHECK-NEXT: vmfeq.vf v9, v9, fa07467; CHECK-NEXT: vmand.mm v0, v9, v107468; CHECK-NEXT: vmv.v.v v9, v07469; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t7470; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t7471; CHECK-NEXT: vmor.mm v0, v0, v97472; CHECK-NEXT: ret7473 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07474 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7475 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp7476 ret <vscale x 1 x i1> %17477}7478 7479define <vscale x 1 x i1> @fcmp_ord_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {7480; CHECK-LABEL: fcmp_ord_vv_nxv1f64:7481; CHECK: # %bb.0:7482; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma7483; CHECK-NEXT: vmfeq.vv v9, v9, v97484; CHECK-NEXT: vmfeq.vv v8, v8, v87485; CHECK-NEXT: vmand.mm v0, v8, v97486; CHECK-NEXT: ret7487 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp7488 ret <vscale x 1 x i1> %17489}7490 7491define <vscale x 1 x i1> @fcmp_ord_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7492; CHECK-LABEL: fcmp_ord_vf_nxv1f64:7493; CHECK: # %bb.0:7494; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma7495; CHECK-NEXT: vfmv.v.f v9, fa07496; CHECK-NEXT: vmfeq.vf v9, v9, fa07497; CHECK-NEXT: vmfeq.vv v8, v8, v87498; CHECK-NEXT: vmand.mm v0, v8, v97499; CHECK-NEXT: ret7500 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07501 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7502 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp7503 ret <vscale x 1 x i1> %17504}7505 7506define <vscale x 1 x i1> @fcmp_ord_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7507; CHECK-LABEL: fcmp_ord_fv_nxv1f64:7508; CHECK: # %bb.0:7509; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma7510; CHECK-NEXT: vfmv.v.f v9, fa07511; CHECK-NEXT: vmfeq.vf v9, v9, fa07512; CHECK-NEXT: vmfeq.vv v8, v8, v87513; CHECK-NEXT: vmand.mm v0, v9, v87514; CHECK-NEXT: ret7515 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07516 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7517 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp7518 ret <vscale x 1 x i1> %17519}7520 7521define <vscale x 1 x i1> @fcmp_ueq_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {7522; CHECK-LABEL: fcmp_ueq_vv_nxv1f64:7523; CHECK: # %bb.0:7524; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7525; CHECK-NEXT: vmfeq.vv v10, v9, v97526; CHECK-NEXT: vmfeq.vv v11, v8, v87527; CHECK-NEXT: vmand.mm v0, v11, v107528; CHECK-NEXT: vmv.v.v v10, v07529; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t7530; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t7531; CHECK-NEXT: vmnor.mm v0, v0, v107532; CHECK-NEXT: ret7533 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp7534 ret <vscale x 1 x i1> %17535}7536 7537define <vscale x 1 x i1> @fcmp_ueq_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7538; CHECK-LABEL: fcmp_ueq_vf_nxv1f64:7539; CHECK: # %bb.0:7540; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7541; CHECK-NEXT: vfmv.v.f v9, fa07542; CHECK-NEXT: vmfeq.vv v10, v8, v87543; CHECK-NEXT: vmfeq.vf v9, v9, fa07544; CHECK-NEXT: vmand.mm v0, v10, v97545; CHECK-NEXT: vmv.v.v v9, v07546; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t7547; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t7548; CHECK-NEXT: vmnor.mm v0, v0, v97549; CHECK-NEXT: ret7550 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07551 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7552 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp7553 ret <vscale x 1 x i1> %17554}7555 7556define <vscale x 1 x i1> @fcmp_ueq_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7557; CHECK-LABEL: fcmp_ueq_fv_nxv1f64:7558; CHECK: # %bb.0:7559; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7560; CHECK-NEXT: vfmv.v.f v9, fa07561; CHECK-NEXT: vmfeq.vv v10, v8, v87562; CHECK-NEXT: vmfeq.vf v9, v9, fa07563; CHECK-NEXT: vmand.mm v0, v9, v107564; CHECK-NEXT: vmv.v.v v9, v07565; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t7566; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t7567; CHECK-NEXT: vmnor.mm v0, v0, v97568; CHECK-NEXT: ret7569 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07570 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7571 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp7572 ret <vscale x 1 x i1> %17573}7574 7575define <vscale x 1 x i1> @fcmp_ugt_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {7576; CHECK-LABEL: fcmp_ugt_vv_nxv1f64:7577; CHECK: # %bb.0:7578; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7579; CHECK-NEXT: vmfeq.vv v10, v9, v97580; CHECK-NEXT: vmfeq.vv v11, v8, v87581; CHECK-NEXT: vmand.mm v0, v11, v107582; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t7583; CHECK-NEXT: vmnot.m v0, v07584; CHECK-NEXT: ret7585 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp7586 ret <vscale x 1 x i1> %17587}7588 7589define <vscale x 1 x i1> @fcmp_ugt_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7590; CHECK-LABEL: fcmp_ugt_vf_nxv1f64:7591; CHECK: # %bb.0:7592; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7593; CHECK-NEXT: vfmv.v.f v9, fa07594; CHECK-NEXT: vmfeq.vv v10, v8, v87595; CHECK-NEXT: vmfeq.vf v9, v9, fa07596; CHECK-NEXT: vmand.mm v0, v10, v97597; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t7598; CHECK-NEXT: vmnot.m v0, v07599; CHECK-NEXT: ret7600 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07601 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7602 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp7603 ret <vscale x 1 x i1> %17604}7605 7606define <vscale x 1 x i1> @fcmp_ugt_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7607; CHECK-LABEL: fcmp_ugt_fv_nxv1f64:7608; CHECK: # %bb.0:7609; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7610; CHECK-NEXT: vfmv.v.f v9, fa07611; CHECK-NEXT: vmfeq.vv v10, v8, v87612; CHECK-NEXT: vmfeq.vf v9, v9, fa07613; CHECK-NEXT: vmand.mm v0, v9, v107614; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t7615; CHECK-NEXT: vmnot.m v0, v07616; CHECK-NEXT: ret7617 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07618 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7619 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp7620 ret <vscale x 1 x i1> %17621}7622 7623define <vscale x 1 x i1> @fcmp_uge_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {7624; CHECK-LABEL: fcmp_uge_vv_nxv1f64:7625; CHECK: # %bb.0:7626; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7627; CHECK-NEXT: vmfeq.vv v10, v9, v97628; CHECK-NEXT: vmfeq.vv v11, v8, v87629; CHECK-NEXT: vmand.mm v0, v11, v107630; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t7631; CHECK-NEXT: vmnot.m v0, v07632; CHECK-NEXT: ret7633 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp7634 ret <vscale x 1 x i1> %17635}7636 7637define <vscale x 1 x i1> @fcmp_uge_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7638; CHECK-LABEL: fcmp_uge_vf_nxv1f64:7639; CHECK: # %bb.0:7640; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7641; CHECK-NEXT: vfmv.v.f v9, fa07642; CHECK-NEXT: vmfeq.vv v10, v8, v87643; CHECK-NEXT: vmfeq.vf v9, v9, fa07644; CHECK-NEXT: vmand.mm v0, v10, v97645; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t7646; CHECK-NEXT: vmnot.m v0, v07647; CHECK-NEXT: ret7648 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07649 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7650 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp7651 ret <vscale x 1 x i1> %17652}7653 7654define <vscale x 1 x i1> @fcmp_uge_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7655; CHECK-LABEL: fcmp_uge_fv_nxv1f64:7656; CHECK: # %bb.0:7657; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7658; CHECK-NEXT: vfmv.v.f v9, fa07659; CHECK-NEXT: vmfeq.vv v10, v8, v87660; CHECK-NEXT: vmfeq.vf v9, v9, fa07661; CHECK-NEXT: vmand.mm v0, v9, v107662; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t7663; CHECK-NEXT: vmnot.m v0, v07664; CHECK-NEXT: ret7665 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07666 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7667 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp7668 ret <vscale x 1 x i1> %17669}7670 7671define <vscale x 1 x i1> @fcmp_ult_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {7672; CHECK-LABEL: fcmp_ult_vv_nxv1f64:7673; CHECK: # %bb.0:7674; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7675; CHECK-NEXT: vmfeq.vv v10, v8, v87676; CHECK-NEXT: vmfeq.vv v11, v9, v97677; CHECK-NEXT: vmand.mm v0, v11, v107678; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t7679; CHECK-NEXT: vmnot.m v0, v07680; CHECK-NEXT: ret7681 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp7682 ret <vscale x 1 x i1> %17683}7684 7685define <vscale x 1 x i1> @fcmp_ult_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7686; CHECK-LABEL: fcmp_ult_vf_nxv1f64:7687; CHECK: # %bb.0:7688; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7689; CHECK-NEXT: vfmv.v.f v9, fa07690; CHECK-NEXT: vmfeq.vv v10, v8, v87691; CHECK-NEXT: vmfeq.vf v9, v9, fa07692; CHECK-NEXT: vmand.mm v0, v9, v107693; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t7694; CHECK-NEXT: vmnot.m v0, v07695; CHECK-NEXT: ret7696 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07697 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7698 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp7699 ret <vscale x 1 x i1> %17700}7701 7702define <vscale x 1 x i1> @fcmp_ult_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7703; CHECK-LABEL: fcmp_ult_fv_nxv1f64:7704; CHECK: # %bb.0:7705; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7706; CHECK-NEXT: vfmv.v.f v9, fa07707; CHECK-NEXT: vmfeq.vv v10, v8, v87708; CHECK-NEXT: vmfeq.vf v9, v9, fa07709; CHECK-NEXT: vmand.mm v0, v10, v97710; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t7711; CHECK-NEXT: vmnot.m v0, v07712; CHECK-NEXT: ret7713 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07714 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7715 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp7716 ret <vscale x 1 x i1> %17717}7718 7719define <vscale x 1 x i1> @fcmp_ule_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {7720; CHECK-LABEL: fcmp_ule_vv_nxv1f64:7721; CHECK: # %bb.0:7722; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7723; CHECK-NEXT: vmfeq.vv v10, v8, v87724; CHECK-NEXT: vmfeq.vv v11, v9, v97725; CHECK-NEXT: vmand.mm v0, v11, v107726; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t7727; CHECK-NEXT: vmnot.m v0, v07728; CHECK-NEXT: ret7729 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp7730 ret <vscale x 1 x i1> %17731}7732 7733define <vscale x 1 x i1> @fcmp_ule_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7734; CHECK-LABEL: fcmp_ule_vf_nxv1f64:7735; CHECK: # %bb.0:7736; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7737; CHECK-NEXT: vfmv.v.f v9, fa07738; CHECK-NEXT: vmfeq.vv v10, v8, v87739; CHECK-NEXT: vmfeq.vf v9, v9, fa07740; CHECK-NEXT: vmand.mm v0, v9, v107741; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t7742; CHECK-NEXT: vmnot.m v0, v07743; CHECK-NEXT: ret7744 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07745 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7746 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp7747 ret <vscale x 1 x i1> %17748}7749 7750define <vscale x 1 x i1> @fcmp_ule_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7751; CHECK-LABEL: fcmp_ule_fv_nxv1f64:7752; CHECK: # %bb.0:7753; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu7754; CHECK-NEXT: vfmv.v.f v9, fa07755; CHECK-NEXT: vmfeq.vv v10, v8, v87756; CHECK-NEXT: vmfeq.vf v9, v9, fa07757; CHECK-NEXT: vmand.mm v0, v10, v97758; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t7759; CHECK-NEXT: vmnot.m v0, v07760; CHECK-NEXT: ret7761 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07762 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7763 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp7764 ret <vscale x 1 x i1> %17765}7766 7767define <vscale x 1 x i1> @fcmp_une_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {7768; CHECK-LABEL: fcmp_une_vv_nxv1f64:7769; CHECK: # %bb.0:7770; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma7771; CHECK-NEXT: vmfne.vv v0, v8, v97772; CHECK-NEXT: ret7773 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp7774 ret <vscale x 1 x i1> %17775}7776 7777define <vscale x 1 x i1> @fcmp_une_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7778; CHECK-LABEL: fcmp_une_vf_nxv1f64:7779; CHECK: # %bb.0:7780; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma7781; CHECK-NEXT: vmfne.vf v0, v8, fa07782; CHECK-NEXT: ret7783 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07784 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7785 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp7786 ret <vscale x 1 x i1> %17787}7788 7789define <vscale x 1 x i1> @fcmp_une_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7790; CHECK-LABEL: fcmp_une_fv_nxv1f64:7791; CHECK: # %bb.0:7792; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma7793; CHECK-NEXT: vmfne.vf v0, v8, fa07794; CHECK-NEXT: ret7795 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07796 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7797 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp7798 ret <vscale x 1 x i1> %17799}7800 7801define <vscale x 1 x i1> @fcmp_uno_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {7802; CHECK-LABEL: fcmp_uno_vv_nxv1f64:7803; CHECK: # %bb.0:7804; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma7805; CHECK-NEXT: vmfne.vv v9, v9, v97806; CHECK-NEXT: vmfne.vv v8, v8, v87807; CHECK-NEXT: vmor.mm v0, v8, v97808; CHECK-NEXT: ret7809 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp7810 ret <vscale x 1 x i1> %17811}7812 7813define <vscale x 1 x i1> @fcmp_uno_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7814; CHECK-LABEL: fcmp_uno_vf_nxv1f64:7815; CHECK: # %bb.0:7816; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma7817; CHECK-NEXT: vfmv.v.f v9, fa07818; CHECK-NEXT: vmfne.vf v9, v9, fa07819; CHECK-NEXT: vmfne.vv v8, v8, v87820; CHECK-NEXT: vmor.mm v0, v8, v97821; CHECK-NEXT: ret7822 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07823 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7824 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp7825 ret <vscale x 1 x i1> %17826}7827 7828define <vscale x 1 x i1> @fcmp_uno_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {7829; CHECK-LABEL: fcmp_uno_fv_nxv1f64:7830; CHECK: # %bb.0:7831; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma7832; CHECK-NEXT: vfmv.v.f v9, fa07833; CHECK-NEXT: vmfne.vf v9, v9, fa07834; CHECK-NEXT: vmfne.vv v8, v8, v87835; CHECK-NEXT: vmor.mm v0, v9, v87836; CHECK-NEXT: ret7837 %head = insertelement <vscale x 1 x double> poison, double %b, i32 07838 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer7839 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp7840 ret <vscale x 1 x i1> %17841}7842 7843define <vscale x 2 x i1> @fcmp_oeq_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {7844; CHECK-LABEL: fcmp_oeq_vv_nxv2f64:7845; CHECK: # %bb.0:7846; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma7847; CHECK-NEXT: vmfeq.vv v0, v8, v107848; CHECK-NEXT: ret7849 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp7850 ret <vscale x 2 x i1> %17851}7852 7853define <vscale x 2 x i1> @fcmp_oeq_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {7854; CHECK-LABEL: fcmp_oeq_vf_nxv2f64:7855; CHECK: # %bb.0:7856; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma7857; CHECK-NEXT: vmfeq.vf v0, v8, fa07858; CHECK-NEXT: ret7859 %head = insertelement <vscale x 2 x double> poison, double %b, i32 07860 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer7861 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp7862 ret <vscale x 2 x i1> %17863}7864 7865define <vscale x 2 x i1> @fcmp_oeq_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {7866; CHECK-LABEL: fcmp_oeq_fv_nxv2f64:7867; CHECK: # %bb.0:7868; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma7869; CHECK-NEXT: vmfeq.vf v0, v8, fa07870; CHECK-NEXT: ret7871 %head = insertelement <vscale x 2 x double> poison, double %b, i32 07872 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer7873 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp7874 ret <vscale x 2 x i1> %17875}7876 7877define <vscale x 2 x i1> @fcmp_ogt_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {7878; CHECK-LABEL: fcmp_ogt_vv_nxv2f64:7879; CHECK: # %bb.0:7880; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu7881; CHECK-NEXT: vmfeq.vv v12, v8, v87882; CHECK-NEXT: vmfeq.vv v13, v10, v107883; CHECK-NEXT: vmand.mm v12, v13, v127884; CHECK-NEXT: vmv1r.v v0, v127885; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t7886; CHECK-NEXT: vmv1r.v v0, v127887; CHECK-NEXT: ret7888 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp7889 ret <vscale x 2 x i1> %17890}7891 7892define <vscale x 2 x i1> @fcmp_ogt_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {7893; CHECK-LABEL: fcmp_ogt_vf_nxv2f64:7894; CHECK: # %bb.0:7895; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu7896; CHECK-NEXT: vfmv.v.f v10, fa07897; CHECK-NEXT: vmfeq.vf v12, v10, fa07898; CHECK-NEXT: vmfeq.vv v10, v8, v87899; CHECK-NEXT: vmand.mm v10, v12, v107900; CHECK-NEXT: vmv1r.v v0, v107901; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t7902; CHECK-NEXT: vmv1r.v v0, v107903; CHECK-NEXT: ret7904 %head = insertelement <vscale x 2 x double> poison, double %b, i32 07905 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer7906 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp7907 ret <vscale x 2 x i1> %17908}7909 7910define <vscale x 2 x i1> @fcmp_ogt_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {7911; CHECK-LABEL: fcmp_ogt_fv_nxv2f64:7912; CHECK: # %bb.0:7913; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu7914; CHECK-NEXT: vfmv.v.f v10, fa07915; CHECK-NEXT: vmfeq.vf v12, v10, fa07916; CHECK-NEXT: vmfeq.vv v10, v8, v87917; CHECK-NEXT: vmand.mm v10, v10, v127918; CHECK-NEXT: vmv1r.v v0, v107919; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t7920; CHECK-NEXT: vmv1r.v v0, v107921; CHECK-NEXT: ret7922 %head = insertelement <vscale x 2 x double> poison, double %b, i32 07923 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer7924 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp7925 ret <vscale x 2 x i1> %17926}7927 7928define <vscale x 2 x i1> @fcmp_oge_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {7929; CHECK-LABEL: fcmp_oge_vv_nxv2f64:7930; CHECK: # %bb.0:7931; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu7932; CHECK-NEXT: vmfeq.vv v12, v8, v87933; CHECK-NEXT: vmfeq.vv v13, v10, v107934; CHECK-NEXT: vmand.mm v12, v13, v127935; CHECK-NEXT: vmv1r.v v0, v127936; CHECK-NEXT: vmfle.vv v12, v10, v8, v0.t7937; CHECK-NEXT: vmv1r.v v0, v127938; CHECK-NEXT: ret7939 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp7940 ret <vscale x 2 x i1> %17941}7942 7943define <vscale x 2 x i1> @fcmp_oge_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {7944; CHECK-LABEL: fcmp_oge_vf_nxv2f64:7945; CHECK: # %bb.0:7946; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu7947; CHECK-NEXT: vfmv.v.f v10, fa07948; CHECK-NEXT: vmfeq.vf v12, v10, fa07949; CHECK-NEXT: vmfeq.vv v10, v8, v87950; CHECK-NEXT: vmand.mm v10, v12, v107951; CHECK-NEXT: vmv1r.v v0, v107952; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t7953; CHECK-NEXT: vmv1r.v v0, v107954; CHECK-NEXT: ret7955 %head = insertelement <vscale x 2 x double> poison, double %b, i32 07956 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer7957 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp7958 ret <vscale x 2 x i1> %17959}7960 7961define <vscale x 2 x i1> @fcmp_oge_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {7962; CHECK-LABEL: fcmp_oge_fv_nxv2f64:7963; CHECK: # %bb.0:7964; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu7965; CHECK-NEXT: vfmv.v.f v10, fa07966; CHECK-NEXT: vmfeq.vf v12, v10, fa07967; CHECK-NEXT: vmfeq.vv v10, v8, v87968; CHECK-NEXT: vmand.mm v10, v10, v127969; CHECK-NEXT: vmv1r.v v0, v107970; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t7971; CHECK-NEXT: vmv1r.v v0, v107972; CHECK-NEXT: ret7973 %head = insertelement <vscale x 2 x double> poison, double %b, i32 07974 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer7975 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp7976 ret <vscale x 2 x i1> %17977}7978 7979define <vscale x 2 x i1> @fcmp_olt_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {7980; CHECK-LABEL: fcmp_olt_vv_nxv2f64:7981; CHECK: # %bb.0:7982; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu7983; CHECK-NEXT: vmfeq.vv v12, v10, v107984; CHECK-NEXT: vmfeq.vv v13, v8, v87985; CHECK-NEXT: vmand.mm v12, v13, v127986; CHECK-NEXT: vmv1r.v v0, v127987; CHECK-NEXT: vmflt.vv v12, v8, v10, v0.t7988; CHECK-NEXT: vmv1r.v v0, v127989; CHECK-NEXT: ret7990 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp7991 ret <vscale x 2 x i1> %17992}7993 7994define <vscale x 2 x i1> @fcmp_olt_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {7995; CHECK-LABEL: fcmp_olt_vf_nxv2f64:7996; CHECK: # %bb.0:7997; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu7998; CHECK-NEXT: vfmv.v.f v10, fa07999; CHECK-NEXT: vmfeq.vf v12, v10, fa08000; CHECK-NEXT: vmfeq.vv v10, v8, v88001; CHECK-NEXT: vmand.mm v10, v10, v128002; CHECK-NEXT: vmv1r.v v0, v108003; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t8004; CHECK-NEXT: vmv1r.v v0, v108005; CHECK-NEXT: ret8006 %head = insertelement <vscale x 2 x double> poison, double %b, i32 08007 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer8008 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp8009 ret <vscale x 2 x i1> %18010}8011 8012define <vscale x 2 x i1> @fcmp_olt_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {8013; CHECK-LABEL: fcmp_olt_fv_nxv2f64:8014; CHECK: # %bb.0:8015; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu8016; CHECK-NEXT: vfmv.v.f v10, fa08017; CHECK-NEXT: vmfeq.vf v12, v10, fa08018; CHECK-NEXT: vmfeq.vv v10, v8, v88019; CHECK-NEXT: vmand.mm v10, v12, v108020; CHECK-NEXT: vmv1r.v v0, v108021; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t8022; CHECK-NEXT: vmv1r.v v0, v108023; CHECK-NEXT: ret8024 %head = insertelement <vscale x 2 x double> poison, double %b, i32 08025 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer8026 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp8027 ret <vscale x 2 x i1> %18028}8029 8030define <vscale x 2 x i1> @fcmp_ole_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {8031; CHECK-LABEL: fcmp_ole_vv_nxv2f64:8032; CHECK: # %bb.0:8033; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu8034; CHECK-NEXT: vmfeq.vv v12, v10, v108035; CHECK-NEXT: vmfeq.vv v13, v8, v88036; CHECK-NEXT: vmand.mm v12, v13, v128037; CHECK-NEXT: vmv1r.v v0, v128038; CHECK-NEXT: vmfle.vv v12, v8, v10, v0.t8039; CHECK-NEXT: vmv1r.v v0, v128040; CHECK-NEXT: ret8041 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp8042 ret <vscale x 2 x i1> %18043}8044 8045define <vscale x 2 x i1> @fcmp_ole_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {8046; CHECK-LABEL: fcmp_ole_vf_nxv2f64:8047; CHECK: # %bb.0:8048; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu8049; CHECK-NEXT: vfmv.v.f v10, fa08050; CHECK-NEXT: vmfeq.vf v12, v10, fa08051; CHECK-NEXT: vmfeq.vv v10, v8, v88052; CHECK-NEXT: vmand.mm v10, v10, v128053; CHECK-NEXT: vmv1r.v v0, v108054; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t8055; CHECK-NEXT: vmv1r.v v0, v108056; CHECK-NEXT: ret8057 %head = insertelement <vscale x 2 x double> poison, double %b, i32 08058 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer8059 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp8060 ret <vscale x 2 x i1> %18061}8062 8063define <vscale x 2 x i1> @fcmp_ole_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {8064; CHECK-LABEL: fcmp_ole_fv_nxv2f64:8065; CHECK: # %bb.0:8066; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu8067; CHECK-NEXT: vfmv.v.f v10, fa08068; CHECK-NEXT: vmfeq.vf v12, v10, fa08069; CHECK-NEXT: vmfeq.vv v10, v8, v88070; CHECK-NEXT: vmand.mm v10, v12, v108071; CHECK-NEXT: vmv1r.v v0, v108072; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t8073; CHECK-NEXT: vmv1r.v v0, v108074; CHECK-NEXT: ret8075 %head = insertelement <vscale x 2 x double> poison, double %b, i32 08076 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer8077 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp8078 ret <vscale x 2 x i1> %18079}8080 8081define <vscale x 2 x i1> @fcmp_one_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {8082; CHECK-LABEL: fcmp_one_vv_nxv2f64:8083; CHECK: # %bb.0:8084; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu8085; CHECK-NEXT: vmfeq.vv v12, v10, v108086; CHECK-NEXT: vmfeq.vv v13, v8, v88087; CHECK-NEXT: vmand.mm v12, v13, v128088; CHECK-NEXT: vmv1r.v v13, v128089; CHECK-NEXT: vmv1r.v v0, v128090; CHECK-NEXT: vmflt.vv v13, v8, v10, v0.t8091; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t8092; CHECK-NEXT: vmor.mm v0, v12, v138093; CHECK-NEXT: ret8094 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp8095 ret <vscale x 2 x i1> %18096}8097 8098define <vscale x 2 x i1> @fcmp_one_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {8099; CHECK-LABEL: fcmp_one_vf_nxv2f64:8100; CHECK: # %bb.0:8101; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu8102; CHECK-NEXT: vfmv.v.f v10, fa08103; CHECK-NEXT: vmfeq.vv v12, v8, v88104; CHECK-NEXT: vmfeq.vf v13, v10, fa08105; CHECK-NEXT: vmand.mm v10, v12, v138106; CHECK-NEXT: vmv1r.v v11, v108107; CHECK-NEXT: vmv1r.v v0, v108108; CHECK-NEXT: vmflt.vf v11, v8, fa0, v0.t8109; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t8110; CHECK-NEXT: vmor.mm v0, v10, v118111; CHECK-NEXT: ret8112 %head = insertelement <vscale x 2 x double> poison, double %b, i32 08113 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer8114 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp8115 ret <vscale x 2 x i1> %18116}8117 8118define <vscale x 2 x i1> @fcmp_one_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {8119; CHECK-LABEL: fcmp_one_fv_nxv2f64:8120; CHECK: # %bb.0:8121; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu8122; CHECK-NEXT: vfmv.v.f v10, fa08123; CHECK-NEXT: vmfeq.vv v12, v8, v88124; CHECK-NEXT: vmfeq.vf v13, v10, fa08125; CHECK-NEXT: vmand.mm v10, v13, v128126; CHECK-NEXT: vmv1r.v v11, v108127; CHECK-NEXT: vmv1r.v v0, v108128; CHECK-NEXT: vmfgt.vf v11, v8, fa0, v0.t8129; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t8130; CHECK-NEXT: vmor.mm v0, v10, v118131; CHECK-NEXT: ret8132 %head = insertelement <vscale x 2 x double> poison, double %b, i32 08133 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer8134 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp8135 ret <vscale x 2 x i1> %18136}8137 8138define <vscale x 2 x i1> @fcmp_ord_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {8139; CHECK-LABEL: fcmp_ord_vv_nxv2f64:8140; CHECK: # %bb.0:8141; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma8142; CHECK-NEXT: vmfeq.vv v12, v10, v108143; CHECK-NEXT: vmfeq.vv v10, v8, v88144; CHECK-NEXT: vmand.mm v0, v10, v128145; CHECK-NEXT: ret8146 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp8147 ret <vscale x 2 x i1> %18148}8149 8150define <vscale x 2 x i1> @fcmp_ord_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {8151; CHECK-LABEL: fcmp_ord_vf_nxv2f64:8152; CHECK: # %bb.0:8153; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma8154; CHECK-NEXT: vfmv.v.f v10, fa08155; CHECK-NEXT: vmfeq.vf v12, v10, fa08156; CHECK-NEXT: vmfeq.vv v10, v8, v88157; CHECK-NEXT: vmand.mm v0, v10, v128158; CHECK-NEXT: ret8159 %head = insertelement <vscale x 2 x double> poison, double %b, i32 08160 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer8161 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp8162 ret <vscale x 2 x i1> %18163}8164 8165define <vscale x 2 x i1> @fcmp_ord_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {8166; CHECK-LABEL: fcmp_ord_fv_nxv2f64:8167; CHECK: # %bb.0:8168; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma8169; CHECK-NEXT: vfmv.v.f v10, fa08170; CHECK-NEXT: vmfeq.vf v12, v10, fa08171; CHECK-NEXT: vmfeq.vv v10, v8, v88172; CHECK-NEXT: vmand.mm v0, v12, v108173; CHECK-NEXT: ret8174 %head = insertelement <vscale x 2 x double> poison, double %b, i32 08175 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer8176 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp8177 ret <vscale x 2 x i1> %18178}8179 8180define <vscale x 2 x i1> @fcmp_ueq_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {8181; CHECK-LABEL: fcmp_ueq_vv_nxv2f64:8182; CHECK: # %bb.0:8183; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu8184; CHECK-NEXT: vmfeq.vv v12, v10, v108185; CHECK-NEXT: vmfeq.vv v13, v8, v88186; CHECK-NEXT: vmand.mm v12, v13, v128187; CHECK-NEXT: vmv1r.v v13, v128188; CHECK-NEXT: vmv1r.v v0, v128189; CHECK-NEXT: vmflt.vv v13, v8, v10, v0.t8190; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t8191; CHECK-NEXT: vmnor.mm v0, v12, v138192; CHECK-NEXT: ret8193 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp8194 ret <vscale x 2 x i1> %18195}8196 8197define <vscale x 2 x i1> @fcmp_ueq_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {8198; CHECK-LABEL: fcmp_ueq_vf_nxv2f64:8199; CHECK: # %bb.0:8200; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu8201; CHECK-NEXT: vfmv.v.f v10, fa08202; CHECK-NEXT: vmfeq.vv v12, v8, v88203; CHECK-NEXT: vmfeq.vf v13, v10, fa08204; CHECK-NEXT: vmand.mm v10, v12, v138205; CHECK-NEXT: vmv1r.v v11, v108206; CHECK-NEXT: vmv1r.v v0, v108207; CHECK-NEXT: vmflt.vf v11, v8, fa0, v0.t8208; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t8209; CHECK-NEXT: vmnor.mm v0, v10, v118210; CHECK-NEXT: ret8211 %head = insertelement <vscale x 2 x double> poison, double %b, i32 08212 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer8213 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp8214 ret <vscale x 2 x i1> %18215}8216 8217define <vscale x 2 x i1> @fcmp_ueq_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {8218; CHECK-LABEL: fcmp_ueq_fv_nxv2f64:8219; CHECK: # %bb.0:8220; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu8221; CHECK-NEXT: vfmv.v.f v10, fa08222; CHECK-NEXT: vmfeq.vv v12, v8, v88223; CHECK-NEXT: vmfeq.vf v13, v10, fa08224; CHECK-NEXT: vmand.mm v10, v13, v128225; CHECK-NEXT: vmv1r.v v11, v108226; CHECK-NEXT: vmv1r.v v0, v108227; CHECK-NEXT: vmfgt.vf v11, v8, fa0, v0.t8228; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t8229; CHECK-NEXT: vmnor.mm v0, v10, v118230; CHECK-NEXT: ret8231 %head = insertelement <vscale x 2 x double> poison, double %b, i32 08232 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer8233 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp8234 ret <vscale x 2 x i1> %18235}8236 8237define <vscale x 2 x i1> @fcmp_ugt_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {8238; CHECK-LABEL: fcmp_ugt_vv_nxv2f64:8239; CHECK: # %bb.0:8240; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu8241; CHECK-NEXT: vmfeq.vv v12, v10, v108242; CHECK-NEXT: vmfeq.vv v13, v8, v88243; CHECK-NEXT: vmand.mm v12, v13, v128244; CHECK-NEXT: vmv1r.v v0, v128245; CHECK-NEXT: vmfle.vv v12, v8, v10, v0.t8246; CHECK-NEXT: vmnot.m v0, v128247; CHECK-NEXT: ret8248 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp8249 ret <vscale x 2 x i1> %18250}8251 8252define <vscale x 2 x i1> @fcmp_ugt_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {8253; CHECK-LABEL: fcmp_ugt_vf_nxv2f64:8254; CHECK: # %bb.0:8255; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu8256; CHECK-NEXT: vfmv.v.f v10, fa08257; CHECK-NEXT: vmfeq.vf v12, v10, fa08258; CHECK-NEXT: vmfeq.vv v10, v8, v88259; CHECK-NEXT: vmand.mm v10, v10, v128260; CHECK-NEXT: vmv1r.v v0, v108261; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t8262; CHECK-NEXT: vmnot.m v0, v108263; CHECK-NEXT: ret8264 %head = insertelement <vscale x 2 x double> poison, double %b, i32 08265 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer8266 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp8267 ret <vscale x 2 x i1> %18268}8269 8270define <vscale x 2 x i1> @fcmp_ugt_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {8271; CHECK-LABEL: fcmp_ugt_fv_nxv2f64:8272; CHECK: # %bb.0:8273; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu8274; CHECK-NEXT: vfmv.v.f v10, fa08275; CHECK-NEXT: vmfeq.vf v12, v10, fa08276; CHECK-NEXT: vmfeq.vv v10, v8, v88277; CHECK-NEXT: vmand.mm v10, v12, v108278; CHECK-NEXT: vmv1r.v v0, v108279; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t8280; CHECK-NEXT: vmnot.m v0, v108281; CHECK-NEXT: ret8282 %head = insertelement <vscale x 2 x double> poison, double %b, i32 08283 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer8284 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp8285 ret <vscale x 2 x i1> %18286}8287 8288define <vscale x 2 x i1> @fcmp_uge_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {8289; CHECK-LABEL: fcmp_uge_vv_nxv2f64:8290; CHECK: # %bb.0:8291; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu8292; CHECK-NEXT: vmfeq.vv v12, v10, v108293; CHECK-NEXT: vmfeq.vv v13, v8, v88294; CHECK-NEXT: vmand.mm v12, v13, v128295; CHECK-NEXT: vmv1r.v v0, v128296; CHECK-NEXT: vmflt.vv v12, v8, v10, v0.t8297; CHECK-NEXT: vmnot.m v0, v128298; CHECK-NEXT: ret8299 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp8300 ret <vscale x 2 x i1> %18301}8302 8303define <vscale x 2 x i1> @fcmp_uge_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {8304; CHECK-LABEL: fcmp_uge_vf_nxv2f64:8305; CHECK: # %bb.0:8306; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu8307; CHECK-NEXT: vfmv.v.f v10, fa08308; CHECK-NEXT: vmfeq.vf v12, v10, fa08309; CHECK-NEXT: vmfeq.vv v10, v8, v88310; CHECK-NEXT: vmand.mm v10, v10, v128311; CHECK-NEXT: vmv1r.v v0, v108312; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t8313; CHECK-NEXT: vmnot.m v0, v108314; CHECK-NEXT: ret8315 %head = insertelement <vscale x 2 x double> poison, double %b, i32 08316 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer8317 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp8318 ret <vscale x 2 x i1> %18319}8320 8321define <vscale x 2 x i1> @fcmp_uge_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {8322; CHECK-LABEL: fcmp_uge_fv_nxv2f64:8323; CHECK: # %bb.0:8324; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu8325; CHECK-NEXT: vfmv.v.f v10, fa08326; CHECK-NEXT: vmfeq.vf v12, v10, fa08327; CHECK-NEXT: vmfeq.vv v10, v8, v88328; CHECK-NEXT: vmand.mm v10, v12, v108329; CHECK-NEXT: vmv1r.v v0, v108330; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t8331; CHECK-NEXT: vmnot.m v0, v108332; CHECK-NEXT: ret8333 %head = insertelement <vscale x 2 x double> poison, double %b, i32 08334 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer8335 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp8336 ret <vscale x 2 x i1> %18337}8338 8339define <vscale x 2 x i1> @fcmp_ult_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {8340; CHECK-LABEL: fcmp_ult_vv_nxv2f64:8341; CHECK: # %bb.0:8342; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu8343; CHECK-NEXT: vmfeq.vv v12, v8, v88344; CHECK-NEXT: vmfeq.vv v13, v10, v108345; CHECK-NEXT: vmand.mm v12, v13, v128346; CHECK-NEXT: vmv1r.v v0, v128347; CHECK-NEXT: vmfle.vv v12, v10, v8, v0.t8348; CHECK-NEXT: vmnot.m v0, v128349; CHECK-NEXT: ret8350 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp8351 ret <vscale x 2 x i1> %18352}8353 8354define <vscale x 2 x i1> @fcmp_ult_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {8355; CHECK-LABEL: fcmp_ult_vf_nxv2f64:8356; CHECK: # %bb.0:8357; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu8358; CHECK-NEXT: vfmv.v.f v10, fa08359; CHECK-NEXT: vmfeq.vf v12, v10, fa08360; CHECK-NEXT: vmfeq.vv v10, v8, v88361; CHECK-NEXT: vmand.mm v10, v12, v108362; CHECK-NEXT: vmv1r.v v0, v108363; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t8364; CHECK-NEXT: vmnot.m v0, v108365; CHECK-NEXT: ret8366 %head = insertelement <vscale x 2 x double> poison, double %b, i32 08367 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer8368 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp8369 ret <vscale x 2 x i1> %18370}8371 8372define <vscale x 2 x i1> @fcmp_ult_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {8373; CHECK-LABEL: fcmp_ult_fv_nxv2f64:8374; CHECK: # %bb.0:8375; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu8376; CHECK-NEXT: vfmv.v.f v10, fa08377; CHECK-NEXT: vmfeq.vf v12, v10, fa08378; CHECK-NEXT: vmfeq.vv v10, v8, v88379; CHECK-NEXT: vmand.mm v10, v10, v128380; CHECK-NEXT: vmv1r.v v0, v108381; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t8382; CHECK-NEXT: vmnot.m v0, v108383; CHECK-NEXT: ret8384 %head = insertelement <vscale x 2 x double> poison, double %b, i32 08385 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer8386 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp8387 ret <vscale x 2 x i1> %18388}8389 8390define <vscale x 2 x i1> @fcmp_ule_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {8391; CHECK-LABEL: fcmp_ule_vv_nxv2f64:8392; CHECK: # %bb.0:8393; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu8394; CHECK-NEXT: vmfeq.vv v12, v8, v88395; CHECK-NEXT: vmfeq.vv v13, v10, v108396; CHECK-NEXT: vmand.mm v12, v13, v128397; CHECK-NEXT: vmv1r.v v0, v128398; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t8399; CHECK-NEXT: vmnot.m v0, v128400; CHECK-NEXT: ret8401 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp8402 ret <vscale x 2 x i1> %18403}8404 8405define <vscale x 2 x i1> @fcmp_ule_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {8406; CHECK-LABEL: fcmp_ule_vf_nxv2f64:8407; CHECK: # %bb.0:8408; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu8409; CHECK-NEXT: vfmv.v.f v10, fa08410; CHECK-NEXT: vmfeq.vf v12, v10, fa08411; CHECK-NEXT: vmfeq.vv v10, v8, v88412; CHECK-NEXT: vmand.mm v10, v12, v108413; CHECK-NEXT: vmv1r.v v0, v108414; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t8415; CHECK-NEXT: vmnot.m v0, v108416; CHECK-NEXT: ret8417 %head = insertelement <vscale x 2 x double> poison, double %b, i32 08418 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer8419 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp8420 ret <vscale x 2 x i1> %18421}8422 8423define <vscale x 2 x i1> @fcmp_ule_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {8424; CHECK-LABEL: fcmp_ule_fv_nxv2f64:8425; CHECK: # %bb.0:8426; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu8427; CHECK-NEXT: vfmv.v.f v10, fa08428; CHECK-NEXT: vmfeq.vf v12, v10, fa08429; CHECK-NEXT: vmfeq.vv v10, v8, v88430; CHECK-NEXT: vmand.mm v10, v10, v128431; CHECK-NEXT: vmv1r.v v0, v108432; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t8433; CHECK-NEXT: vmnot.m v0, v108434; CHECK-NEXT: ret8435 %head = insertelement <vscale x 2 x double> poison, double %b, i32 08436 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer8437 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp8438 ret <vscale x 2 x i1> %18439}8440 8441define <vscale x 2 x i1> @fcmp_une_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {8442; CHECK-LABEL: fcmp_une_vv_nxv2f64:8443; CHECK: # %bb.0:8444; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma8445; CHECK-NEXT: vmfne.vv v0, v8, v108446; CHECK-NEXT: ret8447 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp8448 ret <vscale x 2 x i1> %18449}8450 8451define <vscale x 2 x i1> @fcmp_une_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {8452; CHECK-LABEL: fcmp_une_vf_nxv2f64:8453; CHECK: # %bb.0:8454; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma8455; CHECK-NEXT: vmfne.vf v0, v8, fa08456; CHECK-NEXT: ret8457 %head = insertelement <vscale x 2 x double> poison, double %b, i32 08458 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer8459 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp8460 ret <vscale x 2 x i1> %18461}8462 8463define <vscale x 2 x i1> @fcmp_une_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {8464; CHECK-LABEL: fcmp_une_fv_nxv2f64:8465; CHECK: # %bb.0:8466; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma8467; CHECK-NEXT: vmfne.vf v0, v8, fa08468; CHECK-NEXT: ret8469 %head = insertelement <vscale x 2 x double> poison, double %b, i32 08470 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer8471 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp8472 ret <vscale x 2 x i1> %18473}8474 8475define <vscale x 2 x i1> @fcmp_uno_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {8476; CHECK-LABEL: fcmp_uno_vv_nxv2f64:8477; CHECK: # %bb.0:8478; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma8479; CHECK-NEXT: vmfne.vv v12, v10, v108480; CHECK-NEXT: vmfne.vv v10, v8, v88481; CHECK-NEXT: vmor.mm v0, v10, v128482; CHECK-NEXT: ret8483 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp8484 ret <vscale x 2 x i1> %18485}8486 8487define <vscale x 2 x i1> @fcmp_uno_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {8488; CHECK-LABEL: fcmp_uno_vf_nxv2f64:8489; CHECK: # %bb.0:8490; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma8491; CHECK-NEXT: vfmv.v.f v10, fa08492; CHECK-NEXT: vmfne.vf v12, v10, fa08493; CHECK-NEXT: vmfne.vv v10, v8, v88494; CHECK-NEXT: vmor.mm v0, v10, v128495; CHECK-NEXT: ret8496 %head = insertelement <vscale x 2 x double> poison, double %b, i32 08497 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer8498 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp8499 ret <vscale x 2 x i1> %18500}8501 8502define <vscale x 2 x i1> @fcmp_uno_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {8503; CHECK-LABEL: fcmp_uno_fv_nxv2f64:8504; CHECK: # %bb.0:8505; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma8506; CHECK-NEXT: vfmv.v.f v10, fa08507; CHECK-NEXT: vmfne.vf v12, v10, fa08508; CHECK-NEXT: vmfne.vv v10, v8, v88509; CHECK-NEXT: vmor.mm v0, v12, v108510; CHECK-NEXT: ret8511 %head = insertelement <vscale x 2 x double> poison, double %b, i32 08512 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer8513 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp8514 ret <vscale x 2 x i1> %18515}8516 8517define <vscale x 4 x i1> @fcmp_oeq_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {8518; CHECK-LABEL: fcmp_oeq_vv_nxv4f64:8519; CHECK: # %bb.0:8520; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma8521; CHECK-NEXT: vmfeq.vv v0, v8, v128522; CHECK-NEXT: ret8523 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp8524 ret <vscale x 4 x i1> %18525}8526 8527define <vscale x 4 x i1> @fcmp_oeq_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {8528; CHECK-LABEL: fcmp_oeq_vf_nxv4f64:8529; CHECK: # %bb.0:8530; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma8531; CHECK-NEXT: vmfeq.vf v0, v8, fa08532; CHECK-NEXT: ret8533 %head = insertelement <vscale x 4 x double> poison, double %b, i32 08534 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer8535 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp8536 ret <vscale x 4 x i1> %18537}8538 8539define <vscale x 4 x i1> @fcmp_oeq_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {8540; CHECK-LABEL: fcmp_oeq_fv_nxv4f64:8541; CHECK: # %bb.0:8542; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma8543; CHECK-NEXT: vmfeq.vf v0, v8, fa08544; CHECK-NEXT: ret8545 %head = insertelement <vscale x 4 x double> poison, double %b, i32 08546 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer8547 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp8548 ret <vscale x 4 x i1> %18549}8550 8551define <vscale x 4 x i1> @fcmp_ogt_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {8552; CHECK-LABEL: fcmp_ogt_vv_nxv4f64:8553; CHECK: # %bb.0:8554; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8555; CHECK-NEXT: vmfeq.vv v16, v8, v88556; CHECK-NEXT: vmfeq.vv v17, v12, v128557; CHECK-NEXT: vmand.mm v16, v17, v168558; CHECK-NEXT: vmv1r.v v0, v168559; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t8560; CHECK-NEXT: vmv1r.v v0, v168561; CHECK-NEXT: ret8562 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp8563 ret <vscale x 4 x i1> %18564}8565 8566define <vscale x 4 x i1> @fcmp_ogt_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {8567; CHECK-LABEL: fcmp_ogt_vf_nxv4f64:8568; CHECK: # %bb.0:8569; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8570; CHECK-NEXT: vfmv.v.f v12, fa08571; CHECK-NEXT: vmfeq.vf v16, v12, fa08572; CHECK-NEXT: vmfeq.vv v12, v8, v88573; CHECK-NEXT: vmand.mm v12, v16, v128574; CHECK-NEXT: vmv1r.v v0, v128575; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t8576; CHECK-NEXT: vmv1r.v v0, v128577; CHECK-NEXT: ret8578 %head = insertelement <vscale x 4 x double> poison, double %b, i32 08579 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer8580 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp8581 ret <vscale x 4 x i1> %18582}8583 8584define <vscale x 4 x i1> @fcmp_ogt_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {8585; CHECK-LABEL: fcmp_ogt_fv_nxv4f64:8586; CHECK: # %bb.0:8587; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8588; CHECK-NEXT: vfmv.v.f v12, fa08589; CHECK-NEXT: vmfeq.vf v16, v12, fa08590; CHECK-NEXT: vmfeq.vv v12, v8, v88591; CHECK-NEXT: vmand.mm v12, v12, v168592; CHECK-NEXT: vmv1r.v v0, v128593; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t8594; CHECK-NEXT: vmv1r.v v0, v128595; CHECK-NEXT: ret8596 %head = insertelement <vscale x 4 x double> poison, double %b, i32 08597 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer8598 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp8599 ret <vscale x 4 x i1> %18600}8601 8602define <vscale x 4 x i1> @fcmp_oge_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {8603; CHECK-LABEL: fcmp_oge_vv_nxv4f64:8604; CHECK: # %bb.0:8605; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8606; CHECK-NEXT: vmfeq.vv v16, v8, v88607; CHECK-NEXT: vmfeq.vv v17, v12, v128608; CHECK-NEXT: vmand.mm v16, v17, v168609; CHECK-NEXT: vmv1r.v v0, v168610; CHECK-NEXT: vmfle.vv v16, v12, v8, v0.t8611; CHECK-NEXT: vmv1r.v v0, v168612; CHECK-NEXT: ret8613 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp8614 ret <vscale x 4 x i1> %18615}8616 8617define <vscale x 4 x i1> @fcmp_oge_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {8618; CHECK-LABEL: fcmp_oge_vf_nxv4f64:8619; CHECK: # %bb.0:8620; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8621; CHECK-NEXT: vfmv.v.f v12, fa08622; CHECK-NEXT: vmfeq.vf v16, v12, fa08623; CHECK-NEXT: vmfeq.vv v12, v8, v88624; CHECK-NEXT: vmand.mm v12, v16, v128625; CHECK-NEXT: vmv1r.v v0, v128626; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t8627; CHECK-NEXT: vmv1r.v v0, v128628; CHECK-NEXT: ret8629 %head = insertelement <vscale x 4 x double> poison, double %b, i32 08630 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer8631 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp8632 ret <vscale x 4 x i1> %18633}8634 8635define <vscale x 4 x i1> @fcmp_oge_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {8636; CHECK-LABEL: fcmp_oge_fv_nxv4f64:8637; CHECK: # %bb.0:8638; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8639; CHECK-NEXT: vfmv.v.f v12, fa08640; CHECK-NEXT: vmfeq.vf v16, v12, fa08641; CHECK-NEXT: vmfeq.vv v12, v8, v88642; CHECK-NEXT: vmand.mm v12, v12, v168643; CHECK-NEXT: vmv1r.v v0, v128644; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t8645; CHECK-NEXT: vmv1r.v v0, v128646; CHECK-NEXT: ret8647 %head = insertelement <vscale x 4 x double> poison, double %b, i32 08648 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer8649 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp8650 ret <vscale x 4 x i1> %18651}8652 8653define <vscale x 4 x i1> @fcmp_olt_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {8654; CHECK-LABEL: fcmp_olt_vv_nxv4f64:8655; CHECK: # %bb.0:8656; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8657; CHECK-NEXT: vmfeq.vv v16, v12, v128658; CHECK-NEXT: vmfeq.vv v17, v8, v88659; CHECK-NEXT: vmand.mm v16, v17, v168660; CHECK-NEXT: vmv1r.v v0, v168661; CHECK-NEXT: vmflt.vv v16, v8, v12, v0.t8662; CHECK-NEXT: vmv1r.v v0, v168663; CHECK-NEXT: ret8664 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp8665 ret <vscale x 4 x i1> %18666}8667 8668define <vscale x 4 x i1> @fcmp_olt_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {8669; CHECK-LABEL: fcmp_olt_vf_nxv4f64:8670; CHECK: # %bb.0:8671; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8672; CHECK-NEXT: vfmv.v.f v12, fa08673; CHECK-NEXT: vmfeq.vf v16, v12, fa08674; CHECK-NEXT: vmfeq.vv v12, v8, v88675; CHECK-NEXT: vmand.mm v12, v12, v168676; CHECK-NEXT: vmv1r.v v0, v128677; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t8678; CHECK-NEXT: vmv1r.v v0, v128679; CHECK-NEXT: ret8680 %head = insertelement <vscale x 4 x double> poison, double %b, i32 08681 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer8682 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp8683 ret <vscale x 4 x i1> %18684}8685 8686define <vscale x 4 x i1> @fcmp_olt_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {8687; CHECK-LABEL: fcmp_olt_fv_nxv4f64:8688; CHECK: # %bb.0:8689; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8690; CHECK-NEXT: vfmv.v.f v12, fa08691; CHECK-NEXT: vmfeq.vf v16, v12, fa08692; CHECK-NEXT: vmfeq.vv v12, v8, v88693; CHECK-NEXT: vmand.mm v12, v16, v128694; CHECK-NEXT: vmv1r.v v0, v128695; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t8696; CHECK-NEXT: vmv1r.v v0, v128697; CHECK-NEXT: ret8698 %head = insertelement <vscale x 4 x double> poison, double %b, i32 08699 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer8700 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp8701 ret <vscale x 4 x i1> %18702}8703 8704define <vscale x 4 x i1> @fcmp_ole_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {8705; CHECK-LABEL: fcmp_ole_vv_nxv4f64:8706; CHECK: # %bb.0:8707; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8708; CHECK-NEXT: vmfeq.vv v16, v12, v128709; CHECK-NEXT: vmfeq.vv v17, v8, v88710; CHECK-NEXT: vmand.mm v16, v17, v168711; CHECK-NEXT: vmv1r.v v0, v168712; CHECK-NEXT: vmfle.vv v16, v8, v12, v0.t8713; CHECK-NEXT: vmv1r.v v0, v168714; CHECK-NEXT: ret8715 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp8716 ret <vscale x 4 x i1> %18717}8718 8719define <vscale x 4 x i1> @fcmp_ole_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {8720; CHECK-LABEL: fcmp_ole_vf_nxv4f64:8721; CHECK: # %bb.0:8722; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8723; CHECK-NEXT: vfmv.v.f v12, fa08724; CHECK-NEXT: vmfeq.vf v16, v12, fa08725; CHECK-NEXT: vmfeq.vv v12, v8, v88726; CHECK-NEXT: vmand.mm v12, v12, v168727; CHECK-NEXT: vmv1r.v v0, v128728; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t8729; CHECK-NEXT: vmv1r.v v0, v128730; CHECK-NEXT: ret8731 %head = insertelement <vscale x 4 x double> poison, double %b, i32 08732 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer8733 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp8734 ret <vscale x 4 x i1> %18735}8736 8737define <vscale x 4 x i1> @fcmp_ole_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {8738; CHECK-LABEL: fcmp_ole_fv_nxv4f64:8739; CHECK: # %bb.0:8740; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8741; CHECK-NEXT: vfmv.v.f v12, fa08742; CHECK-NEXT: vmfeq.vf v16, v12, fa08743; CHECK-NEXT: vmfeq.vv v12, v8, v88744; CHECK-NEXT: vmand.mm v12, v16, v128745; CHECK-NEXT: vmv1r.v v0, v128746; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t8747; CHECK-NEXT: vmv1r.v v0, v128748; CHECK-NEXT: ret8749 %head = insertelement <vscale x 4 x double> poison, double %b, i32 08750 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer8751 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp8752 ret <vscale x 4 x i1> %18753}8754 8755define <vscale x 4 x i1> @fcmp_one_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {8756; CHECK-LABEL: fcmp_one_vv_nxv4f64:8757; CHECK: # %bb.0:8758; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8759; CHECK-NEXT: vmfeq.vv v16, v12, v128760; CHECK-NEXT: vmfeq.vv v17, v8, v88761; CHECK-NEXT: vmand.mm v16, v17, v168762; CHECK-NEXT: vmv1r.v v17, v168763; CHECK-NEXT: vmv1r.v v0, v168764; CHECK-NEXT: vmflt.vv v17, v8, v12, v0.t8765; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t8766; CHECK-NEXT: vmor.mm v0, v16, v178767; CHECK-NEXT: ret8768 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp8769 ret <vscale x 4 x i1> %18770}8771 8772define <vscale x 4 x i1> @fcmp_one_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {8773; CHECK-LABEL: fcmp_one_vf_nxv4f64:8774; CHECK: # %bb.0:8775; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8776; CHECK-NEXT: vfmv.v.f v12, fa08777; CHECK-NEXT: vmfeq.vf v16, v12, fa08778; CHECK-NEXT: vmfeq.vv v12, v8, v88779; CHECK-NEXT: vmand.mm v12, v12, v168780; CHECK-NEXT: vmv1r.v v13, v128781; CHECK-NEXT: vmv1r.v v0, v128782; CHECK-NEXT: vmflt.vf v13, v8, fa0, v0.t8783; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t8784; CHECK-NEXT: vmor.mm v0, v12, v138785; CHECK-NEXT: ret8786 %head = insertelement <vscale x 4 x double> poison, double %b, i32 08787 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer8788 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp8789 ret <vscale x 4 x i1> %18790}8791 8792define <vscale x 4 x i1> @fcmp_one_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {8793; CHECK-LABEL: fcmp_one_fv_nxv4f64:8794; CHECK: # %bb.0:8795; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8796; CHECK-NEXT: vfmv.v.f v12, fa08797; CHECK-NEXT: vmfeq.vf v16, v12, fa08798; CHECK-NEXT: vmfeq.vv v12, v8, v88799; CHECK-NEXT: vmand.mm v12, v16, v128800; CHECK-NEXT: vmv1r.v v13, v128801; CHECK-NEXT: vmv1r.v v0, v128802; CHECK-NEXT: vmfgt.vf v13, v8, fa0, v0.t8803; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t8804; CHECK-NEXT: vmor.mm v0, v12, v138805; CHECK-NEXT: ret8806 %head = insertelement <vscale x 4 x double> poison, double %b, i32 08807 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer8808 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp8809 ret <vscale x 4 x i1> %18810}8811 8812define <vscale x 4 x i1> @fcmp_ord_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {8813; CHECK-LABEL: fcmp_ord_vv_nxv4f64:8814; CHECK: # %bb.0:8815; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma8816; CHECK-NEXT: vmfeq.vv v16, v12, v128817; CHECK-NEXT: vmfeq.vv v12, v8, v88818; CHECK-NEXT: vmand.mm v0, v12, v168819; CHECK-NEXT: ret8820 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp8821 ret <vscale x 4 x i1> %18822}8823 8824define <vscale x 4 x i1> @fcmp_ord_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {8825; CHECK-LABEL: fcmp_ord_vf_nxv4f64:8826; CHECK: # %bb.0:8827; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma8828; CHECK-NEXT: vfmv.v.f v12, fa08829; CHECK-NEXT: vmfeq.vf v16, v12, fa08830; CHECK-NEXT: vmfeq.vv v12, v8, v88831; CHECK-NEXT: vmand.mm v0, v12, v168832; CHECK-NEXT: ret8833 %head = insertelement <vscale x 4 x double> poison, double %b, i32 08834 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer8835 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp8836 ret <vscale x 4 x i1> %18837}8838 8839define <vscale x 4 x i1> @fcmp_ord_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {8840; CHECK-LABEL: fcmp_ord_fv_nxv4f64:8841; CHECK: # %bb.0:8842; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma8843; CHECK-NEXT: vfmv.v.f v12, fa08844; CHECK-NEXT: vmfeq.vf v16, v12, fa08845; CHECK-NEXT: vmfeq.vv v12, v8, v88846; CHECK-NEXT: vmand.mm v0, v16, v128847; CHECK-NEXT: ret8848 %head = insertelement <vscale x 4 x double> poison, double %b, i32 08849 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer8850 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp8851 ret <vscale x 4 x i1> %18852}8853 8854define <vscale x 4 x i1> @fcmp_ueq_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {8855; CHECK-LABEL: fcmp_ueq_vv_nxv4f64:8856; CHECK: # %bb.0:8857; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8858; CHECK-NEXT: vmfeq.vv v16, v12, v128859; CHECK-NEXT: vmfeq.vv v17, v8, v88860; CHECK-NEXT: vmand.mm v16, v17, v168861; CHECK-NEXT: vmv1r.v v17, v168862; CHECK-NEXT: vmv1r.v v0, v168863; CHECK-NEXT: vmflt.vv v17, v8, v12, v0.t8864; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t8865; CHECK-NEXT: vmnor.mm v0, v16, v178866; CHECK-NEXT: ret8867 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp8868 ret <vscale x 4 x i1> %18869}8870 8871define <vscale x 4 x i1> @fcmp_ueq_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {8872; CHECK-LABEL: fcmp_ueq_vf_nxv4f64:8873; CHECK: # %bb.0:8874; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8875; CHECK-NEXT: vfmv.v.f v12, fa08876; CHECK-NEXT: vmfeq.vf v16, v12, fa08877; CHECK-NEXT: vmfeq.vv v12, v8, v88878; CHECK-NEXT: vmand.mm v12, v12, v168879; CHECK-NEXT: vmv1r.v v13, v128880; CHECK-NEXT: vmv1r.v v0, v128881; CHECK-NEXT: vmflt.vf v13, v8, fa0, v0.t8882; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t8883; CHECK-NEXT: vmnor.mm v0, v12, v138884; CHECK-NEXT: ret8885 %head = insertelement <vscale x 4 x double> poison, double %b, i32 08886 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer8887 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp8888 ret <vscale x 4 x i1> %18889}8890 8891define <vscale x 4 x i1> @fcmp_ueq_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {8892; CHECK-LABEL: fcmp_ueq_fv_nxv4f64:8893; CHECK: # %bb.0:8894; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8895; CHECK-NEXT: vfmv.v.f v12, fa08896; CHECK-NEXT: vmfeq.vf v16, v12, fa08897; CHECK-NEXT: vmfeq.vv v12, v8, v88898; CHECK-NEXT: vmand.mm v12, v16, v128899; CHECK-NEXT: vmv1r.v v13, v128900; CHECK-NEXT: vmv1r.v v0, v128901; CHECK-NEXT: vmfgt.vf v13, v8, fa0, v0.t8902; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t8903; CHECK-NEXT: vmnor.mm v0, v12, v138904; CHECK-NEXT: ret8905 %head = insertelement <vscale x 4 x double> poison, double %b, i32 08906 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer8907 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp8908 ret <vscale x 4 x i1> %18909}8910 8911define <vscale x 4 x i1> @fcmp_ugt_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {8912; CHECK-LABEL: fcmp_ugt_vv_nxv4f64:8913; CHECK: # %bb.0:8914; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8915; CHECK-NEXT: vmfeq.vv v16, v12, v128916; CHECK-NEXT: vmfeq.vv v17, v8, v88917; CHECK-NEXT: vmand.mm v16, v17, v168918; CHECK-NEXT: vmv1r.v v0, v168919; CHECK-NEXT: vmfle.vv v16, v8, v12, v0.t8920; CHECK-NEXT: vmnot.m v0, v168921; CHECK-NEXT: ret8922 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp8923 ret <vscale x 4 x i1> %18924}8925 8926define <vscale x 4 x i1> @fcmp_ugt_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {8927; CHECK-LABEL: fcmp_ugt_vf_nxv4f64:8928; CHECK: # %bb.0:8929; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8930; CHECK-NEXT: vfmv.v.f v12, fa08931; CHECK-NEXT: vmfeq.vf v16, v12, fa08932; CHECK-NEXT: vmfeq.vv v12, v8, v88933; CHECK-NEXT: vmand.mm v12, v12, v168934; CHECK-NEXT: vmv1r.v v0, v128935; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t8936; CHECK-NEXT: vmnot.m v0, v128937; CHECK-NEXT: ret8938 %head = insertelement <vscale x 4 x double> poison, double %b, i32 08939 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer8940 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp8941 ret <vscale x 4 x i1> %18942}8943 8944define <vscale x 4 x i1> @fcmp_ugt_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {8945; CHECK-LABEL: fcmp_ugt_fv_nxv4f64:8946; CHECK: # %bb.0:8947; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8948; CHECK-NEXT: vfmv.v.f v12, fa08949; CHECK-NEXT: vmfeq.vf v16, v12, fa08950; CHECK-NEXT: vmfeq.vv v12, v8, v88951; CHECK-NEXT: vmand.mm v12, v16, v128952; CHECK-NEXT: vmv1r.v v0, v128953; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t8954; CHECK-NEXT: vmnot.m v0, v128955; CHECK-NEXT: ret8956 %head = insertelement <vscale x 4 x double> poison, double %b, i32 08957 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer8958 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp8959 ret <vscale x 4 x i1> %18960}8961 8962define <vscale x 4 x i1> @fcmp_uge_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {8963; CHECK-LABEL: fcmp_uge_vv_nxv4f64:8964; CHECK: # %bb.0:8965; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8966; CHECK-NEXT: vmfeq.vv v16, v12, v128967; CHECK-NEXT: vmfeq.vv v17, v8, v88968; CHECK-NEXT: vmand.mm v16, v17, v168969; CHECK-NEXT: vmv1r.v v0, v168970; CHECK-NEXT: vmflt.vv v16, v8, v12, v0.t8971; CHECK-NEXT: vmnot.m v0, v168972; CHECK-NEXT: ret8973 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp8974 ret <vscale x 4 x i1> %18975}8976 8977define <vscale x 4 x i1> @fcmp_uge_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {8978; CHECK-LABEL: fcmp_uge_vf_nxv4f64:8979; CHECK: # %bb.0:8980; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8981; CHECK-NEXT: vfmv.v.f v12, fa08982; CHECK-NEXT: vmfeq.vf v16, v12, fa08983; CHECK-NEXT: vmfeq.vv v12, v8, v88984; CHECK-NEXT: vmand.mm v12, v12, v168985; CHECK-NEXT: vmv1r.v v0, v128986; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t8987; CHECK-NEXT: vmnot.m v0, v128988; CHECK-NEXT: ret8989 %head = insertelement <vscale x 4 x double> poison, double %b, i32 08990 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer8991 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp8992 ret <vscale x 4 x i1> %18993}8994 8995define <vscale x 4 x i1> @fcmp_uge_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {8996; CHECK-LABEL: fcmp_uge_fv_nxv4f64:8997; CHECK: # %bb.0:8998; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu8999; CHECK-NEXT: vfmv.v.f v12, fa09000; CHECK-NEXT: vmfeq.vf v16, v12, fa09001; CHECK-NEXT: vmfeq.vv v12, v8, v89002; CHECK-NEXT: vmand.mm v12, v16, v129003; CHECK-NEXT: vmv1r.v v0, v129004; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t9005; CHECK-NEXT: vmnot.m v0, v129006; CHECK-NEXT: ret9007 %head = insertelement <vscale x 4 x double> poison, double %b, i32 09008 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer9009 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp9010 ret <vscale x 4 x i1> %19011}9012 9013define <vscale x 4 x i1> @fcmp_ult_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {9014; CHECK-LABEL: fcmp_ult_vv_nxv4f64:9015; CHECK: # %bb.0:9016; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu9017; CHECK-NEXT: vmfeq.vv v16, v8, v89018; CHECK-NEXT: vmfeq.vv v17, v12, v129019; CHECK-NEXT: vmand.mm v16, v17, v169020; CHECK-NEXT: vmv1r.v v0, v169021; CHECK-NEXT: vmfle.vv v16, v12, v8, v0.t9022; CHECK-NEXT: vmnot.m v0, v169023; CHECK-NEXT: ret9024 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp9025 ret <vscale x 4 x i1> %19026}9027 9028define <vscale x 4 x i1> @fcmp_ult_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {9029; CHECK-LABEL: fcmp_ult_vf_nxv4f64:9030; CHECK: # %bb.0:9031; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu9032; CHECK-NEXT: vfmv.v.f v12, fa09033; CHECK-NEXT: vmfeq.vf v16, v12, fa09034; CHECK-NEXT: vmfeq.vv v12, v8, v89035; CHECK-NEXT: vmand.mm v12, v16, v129036; CHECK-NEXT: vmv1r.v v0, v129037; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t9038; CHECK-NEXT: vmnot.m v0, v129039; CHECK-NEXT: ret9040 %head = insertelement <vscale x 4 x double> poison, double %b, i32 09041 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer9042 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp9043 ret <vscale x 4 x i1> %19044}9045 9046define <vscale x 4 x i1> @fcmp_ult_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {9047; CHECK-LABEL: fcmp_ult_fv_nxv4f64:9048; CHECK: # %bb.0:9049; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu9050; CHECK-NEXT: vfmv.v.f v12, fa09051; CHECK-NEXT: vmfeq.vf v16, v12, fa09052; CHECK-NEXT: vmfeq.vv v12, v8, v89053; CHECK-NEXT: vmand.mm v12, v12, v169054; CHECK-NEXT: vmv1r.v v0, v129055; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t9056; CHECK-NEXT: vmnot.m v0, v129057; CHECK-NEXT: ret9058 %head = insertelement <vscale x 4 x double> poison, double %b, i32 09059 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer9060 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp9061 ret <vscale x 4 x i1> %19062}9063 9064define <vscale x 4 x i1> @fcmp_ule_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {9065; CHECK-LABEL: fcmp_ule_vv_nxv4f64:9066; CHECK: # %bb.0:9067; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu9068; CHECK-NEXT: vmfeq.vv v16, v8, v89069; CHECK-NEXT: vmfeq.vv v17, v12, v129070; CHECK-NEXT: vmand.mm v16, v17, v169071; CHECK-NEXT: vmv1r.v v0, v169072; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t9073; CHECK-NEXT: vmnot.m v0, v169074; CHECK-NEXT: ret9075 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp9076 ret <vscale x 4 x i1> %19077}9078 9079define <vscale x 4 x i1> @fcmp_ule_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {9080; CHECK-LABEL: fcmp_ule_vf_nxv4f64:9081; CHECK: # %bb.0:9082; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu9083; CHECK-NEXT: vfmv.v.f v12, fa09084; CHECK-NEXT: vmfeq.vf v16, v12, fa09085; CHECK-NEXT: vmfeq.vv v12, v8, v89086; CHECK-NEXT: vmand.mm v12, v16, v129087; CHECK-NEXT: vmv1r.v v0, v129088; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t9089; CHECK-NEXT: vmnot.m v0, v129090; CHECK-NEXT: ret9091 %head = insertelement <vscale x 4 x double> poison, double %b, i32 09092 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer9093 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp9094 ret <vscale x 4 x i1> %19095}9096 9097define <vscale x 4 x i1> @fcmp_ule_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {9098; CHECK-LABEL: fcmp_ule_fv_nxv4f64:9099; CHECK: # %bb.0:9100; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu9101; CHECK-NEXT: vfmv.v.f v12, fa09102; CHECK-NEXT: vmfeq.vf v16, v12, fa09103; CHECK-NEXT: vmfeq.vv v12, v8, v89104; CHECK-NEXT: vmand.mm v12, v12, v169105; CHECK-NEXT: vmv1r.v v0, v129106; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t9107; CHECK-NEXT: vmnot.m v0, v129108; CHECK-NEXT: ret9109 %head = insertelement <vscale x 4 x double> poison, double %b, i32 09110 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer9111 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp9112 ret <vscale x 4 x i1> %19113}9114 9115define <vscale x 4 x i1> @fcmp_une_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {9116; CHECK-LABEL: fcmp_une_vv_nxv4f64:9117; CHECK: # %bb.0:9118; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma9119; CHECK-NEXT: vmfne.vv v0, v8, v129120; CHECK-NEXT: ret9121 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp9122 ret <vscale x 4 x i1> %19123}9124 9125define <vscale x 4 x i1> @fcmp_une_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {9126; CHECK-LABEL: fcmp_une_vf_nxv4f64:9127; CHECK: # %bb.0:9128; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma9129; CHECK-NEXT: vmfne.vf v0, v8, fa09130; CHECK-NEXT: ret9131 %head = insertelement <vscale x 4 x double> poison, double %b, i32 09132 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer9133 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp9134 ret <vscale x 4 x i1> %19135}9136 9137define <vscale x 4 x i1> @fcmp_une_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {9138; CHECK-LABEL: fcmp_une_fv_nxv4f64:9139; CHECK: # %bb.0:9140; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma9141; CHECK-NEXT: vmfne.vf v0, v8, fa09142; CHECK-NEXT: ret9143 %head = insertelement <vscale x 4 x double> poison, double %b, i32 09144 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer9145 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp9146 ret <vscale x 4 x i1> %19147}9148 9149define <vscale x 4 x i1> @fcmp_uno_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {9150; CHECK-LABEL: fcmp_uno_vv_nxv4f64:9151; CHECK: # %bb.0:9152; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma9153; CHECK-NEXT: vmfne.vv v16, v12, v129154; CHECK-NEXT: vmfne.vv v12, v8, v89155; CHECK-NEXT: vmor.mm v0, v12, v169156; CHECK-NEXT: ret9157 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp9158 ret <vscale x 4 x i1> %19159}9160 9161define <vscale x 4 x i1> @fcmp_uno_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {9162; CHECK-LABEL: fcmp_uno_vf_nxv4f64:9163; CHECK: # %bb.0:9164; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma9165; CHECK-NEXT: vfmv.v.f v12, fa09166; CHECK-NEXT: vmfne.vf v16, v12, fa09167; CHECK-NEXT: vmfne.vv v12, v8, v89168; CHECK-NEXT: vmor.mm v0, v12, v169169; CHECK-NEXT: ret9170 %head = insertelement <vscale x 4 x double> poison, double %b, i32 09171 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer9172 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp9173 ret <vscale x 4 x i1> %19174}9175 9176define <vscale x 4 x i1> @fcmp_uno_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {9177; CHECK-LABEL: fcmp_uno_fv_nxv4f64:9178; CHECK: # %bb.0:9179; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma9180; CHECK-NEXT: vfmv.v.f v12, fa09181; CHECK-NEXT: vmfne.vf v16, v12, fa09182; CHECK-NEXT: vmfne.vv v12, v8, v89183; CHECK-NEXT: vmor.mm v0, v16, v129184; CHECK-NEXT: ret9185 %head = insertelement <vscale x 4 x double> poison, double %b, i32 09186 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer9187 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp9188 ret <vscale x 4 x i1> %19189}9190 9191define <vscale x 8 x i1> @fcmp_oeq_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {9192; CHECK-LABEL: fcmp_oeq_vv_nxv8f64:9193; CHECK: # %bb.0:9194; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma9195; CHECK-NEXT: vmfeq.vv v0, v8, v169196; CHECK-NEXT: ret9197 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp9198 ret <vscale x 8 x i1> %19199}9200 9201define <vscale x 8 x i1> @fcmp_oeq_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9202; CHECK-LABEL: fcmp_oeq_vf_nxv8f64:9203; CHECK: # %bb.0:9204; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma9205; CHECK-NEXT: vmfeq.vf v0, v8, fa09206; CHECK-NEXT: ret9207 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09208 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9209 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp9210 ret <vscale x 8 x i1> %19211}9212 9213define <vscale x 8 x i1> @fcmp_oeq_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9214; CHECK-LABEL: fcmp_oeq_fv_nxv8f64:9215; CHECK: # %bb.0:9216; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma9217; CHECK-NEXT: vmfeq.vf v0, v8, fa09218; CHECK-NEXT: ret9219 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09220 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9221 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp9222 ret <vscale x 8 x i1> %19223}9224 9225define <vscale x 8 x i1> @fcmp_ogt_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {9226; CHECK-LABEL: fcmp_ogt_vv_nxv8f64:9227; CHECK: # %bb.0:9228; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9229; CHECK-NEXT: vmfeq.vv v24, v8, v89230; CHECK-NEXT: vmfeq.vv v25, v16, v169231; CHECK-NEXT: vmand.mm v24, v25, v249232; CHECK-NEXT: vmv1r.v v0, v249233; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t9234; CHECK-NEXT: vmv1r.v v0, v249235; CHECK-NEXT: ret9236 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp9237 ret <vscale x 8 x i1> %19238}9239 9240define <vscale x 8 x i1> @fcmp_ogt_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9241; CHECK-LABEL: fcmp_ogt_vf_nxv8f64:9242; CHECK: # %bb.0:9243; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9244; CHECK-NEXT: vfmv.v.f v16, fa09245; CHECK-NEXT: vmfeq.vf v24, v16, fa09246; CHECK-NEXT: vmfeq.vv v16, v8, v89247; CHECK-NEXT: vmand.mm v16, v24, v169248; CHECK-NEXT: vmv1r.v v0, v169249; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t9250; CHECK-NEXT: vmv1r.v v0, v169251; CHECK-NEXT: ret9252 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09253 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9254 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp9255 ret <vscale x 8 x i1> %19256}9257 9258define <vscale x 8 x i1> @fcmp_ogt_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9259; CHECK-LABEL: fcmp_ogt_fv_nxv8f64:9260; CHECK: # %bb.0:9261; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9262; CHECK-NEXT: vfmv.v.f v16, fa09263; CHECK-NEXT: vmfeq.vf v24, v16, fa09264; CHECK-NEXT: vmfeq.vv v16, v8, v89265; CHECK-NEXT: vmand.mm v16, v16, v249266; CHECK-NEXT: vmv1r.v v0, v169267; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t9268; CHECK-NEXT: vmv1r.v v0, v169269; CHECK-NEXT: ret9270 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09271 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9272 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp9273 ret <vscale x 8 x i1> %19274}9275 9276define <vscale x 8 x i1> @fcmp_oge_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {9277; CHECK-LABEL: fcmp_oge_vv_nxv8f64:9278; CHECK: # %bb.0:9279; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9280; CHECK-NEXT: vmfeq.vv v24, v8, v89281; CHECK-NEXT: vmfeq.vv v25, v16, v169282; CHECK-NEXT: vmand.mm v24, v25, v249283; CHECK-NEXT: vmv1r.v v0, v249284; CHECK-NEXT: vmfle.vv v24, v16, v8, v0.t9285; CHECK-NEXT: vmv1r.v v0, v249286; CHECK-NEXT: ret9287 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp9288 ret <vscale x 8 x i1> %19289}9290 9291define <vscale x 8 x i1> @fcmp_oge_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9292; CHECK-LABEL: fcmp_oge_vf_nxv8f64:9293; CHECK: # %bb.0:9294; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9295; CHECK-NEXT: vfmv.v.f v16, fa09296; CHECK-NEXT: vmfeq.vf v24, v16, fa09297; CHECK-NEXT: vmfeq.vv v16, v8, v89298; CHECK-NEXT: vmand.mm v16, v24, v169299; CHECK-NEXT: vmv1r.v v0, v169300; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t9301; CHECK-NEXT: vmv1r.v v0, v169302; CHECK-NEXT: ret9303 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09304 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9305 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp9306 ret <vscale x 8 x i1> %19307}9308 9309define <vscale x 8 x i1> @fcmp_oge_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9310; CHECK-LABEL: fcmp_oge_fv_nxv8f64:9311; CHECK: # %bb.0:9312; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9313; CHECK-NEXT: vfmv.v.f v16, fa09314; CHECK-NEXT: vmfeq.vf v24, v16, fa09315; CHECK-NEXT: vmfeq.vv v16, v8, v89316; CHECK-NEXT: vmand.mm v16, v16, v249317; CHECK-NEXT: vmv1r.v v0, v169318; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t9319; CHECK-NEXT: vmv1r.v v0, v169320; CHECK-NEXT: ret9321 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09322 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9323 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp9324 ret <vscale x 8 x i1> %19325}9326 9327define <vscale x 8 x i1> @fcmp_olt_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {9328; CHECK-LABEL: fcmp_olt_vv_nxv8f64:9329; CHECK: # %bb.0:9330; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9331; CHECK-NEXT: vmfeq.vv v24, v16, v169332; CHECK-NEXT: vmfeq.vv v25, v8, v89333; CHECK-NEXT: vmand.mm v24, v25, v249334; CHECK-NEXT: vmv1r.v v0, v249335; CHECK-NEXT: vmflt.vv v24, v8, v16, v0.t9336; CHECK-NEXT: vmv1r.v v0, v249337; CHECK-NEXT: ret9338 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp9339 ret <vscale x 8 x i1> %19340}9341 9342define <vscale x 8 x i1> @fcmp_olt_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9343; CHECK-LABEL: fcmp_olt_vf_nxv8f64:9344; CHECK: # %bb.0:9345; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9346; CHECK-NEXT: vfmv.v.f v16, fa09347; CHECK-NEXT: vmfeq.vf v24, v16, fa09348; CHECK-NEXT: vmfeq.vv v16, v8, v89349; CHECK-NEXT: vmand.mm v16, v16, v249350; CHECK-NEXT: vmv1r.v v0, v169351; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t9352; CHECK-NEXT: vmv1r.v v0, v169353; CHECK-NEXT: ret9354 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09355 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9356 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp9357 ret <vscale x 8 x i1> %19358}9359 9360define <vscale x 8 x i1> @fcmp_olt_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9361; CHECK-LABEL: fcmp_olt_fv_nxv8f64:9362; CHECK: # %bb.0:9363; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9364; CHECK-NEXT: vfmv.v.f v16, fa09365; CHECK-NEXT: vmfeq.vf v24, v16, fa09366; CHECK-NEXT: vmfeq.vv v16, v8, v89367; CHECK-NEXT: vmand.mm v16, v24, v169368; CHECK-NEXT: vmv1r.v v0, v169369; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t9370; CHECK-NEXT: vmv1r.v v0, v169371; CHECK-NEXT: ret9372 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09373 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9374 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp9375 ret <vscale x 8 x i1> %19376}9377 9378define <vscale x 8 x i1> @fcmp_ole_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {9379; CHECK-LABEL: fcmp_ole_vv_nxv8f64:9380; CHECK: # %bb.0:9381; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9382; CHECK-NEXT: vmfeq.vv v24, v16, v169383; CHECK-NEXT: vmfeq.vv v25, v8, v89384; CHECK-NEXT: vmand.mm v24, v25, v249385; CHECK-NEXT: vmv1r.v v0, v249386; CHECK-NEXT: vmfle.vv v24, v8, v16, v0.t9387; CHECK-NEXT: vmv1r.v v0, v249388; CHECK-NEXT: ret9389 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp9390 ret <vscale x 8 x i1> %19391}9392 9393define <vscale x 8 x i1> @fcmp_ole_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9394; CHECK-LABEL: fcmp_ole_vf_nxv8f64:9395; CHECK: # %bb.0:9396; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9397; CHECK-NEXT: vfmv.v.f v16, fa09398; CHECK-NEXT: vmfeq.vf v24, v16, fa09399; CHECK-NEXT: vmfeq.vv v16, v8, v89400; CHECK-NEXT: vmand.mm v16, v16, v249401; CHECK-NEXT: vmv1r.v v0, v169402; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t9403; CHECK-NEXT: vmv1r.v v0, v169404; CHECK-NEXT: ret9405 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09406 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9407 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp9408 ret <vscale x 8 x i1> %19409}9410 9411define <vscale x 8 x i1> @fcmp_ole_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9412; CHECK-LABEL: fcmp_ole_fv_nxv8f64:9413; CHECK: # %bb.0:9414; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9415; CHECK-NEXT: vfmv.v.f v16, fa09416; CHECK-NEXT: vmfeq.vf v24, v16, fa09417; CHECK-NEXT: vmfeq.vv v16, v8, v89418; CHECK-NEXT: vmand.mm v16, v24, v169419; CHECK-NEXT: vmv1r.v v0, v169420; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t9421; CHECK-NEXT: vmv1r.v v0, v169422; CHECK-NEXT: ret9423 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09424 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9425 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp9426 ret <vscale x 8 x i1> %19427}9428 9429define <vscale x 8 x i1> @fcmp_one_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {9430; CHECK-LABEL: fcmp_one_vv_nxv8f64:9431; CHECK: # %bb.0:9432; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9433; CHECK-NEXT: vmfeq.vv v24, v16, v169434; CHECK-NEXT: vmfeq.vv v25, v8, v89435; CHECK-NEXT: vmand.mm v24, v25, v249436; CHECK-NEXT: vmv1r.v v25, v249437; CHECK-NEXT: vmv1r.v v0, v249438; CHECK-NEXT: vmflt.vv v25, v8, v16, v0.t9439; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t9440; CHECK-NEXT: vmor.mm v0, v24, v259441; CHECK-NEXT: ret9442 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp9443 ret <vscale x 8 x i1> %19444}9445 9446define <vscale x 8 x i1> @fcmp_one_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9447; CHECK-LABEL: fcmp_one_vf_nxv8f64:9448; CHECK: # %bb.0:9449; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9450; CHECK-NEXT: vfmv.v.f v16, fa09451; CHECK-NEXT: vmfeq.vf v24, v16, fa09452; CHECK-NEXT: vmfeq.vv v16, v8, v89453; CHECK-NEXT: vmand.mm v16, v16, v249454; CHECK-NEXT: vmv1r.v v17, v169455; CHECK-NEXT: vmv1r.v v0, v169456; CHECK-NEXT: vmflt.vf v17, v8, fa0, v0.t9457; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t9458; CHECK-NEXT: vmor.mm v0, v16, v179459; CHECK-NEXT: ret9460 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09461 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9462 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp9463 ret <vscale x 8 x i1> %19464}9465 9466define <vscale x 8 x i1> @fcmp_one_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9467; CHECK-LABEL: fcmp_one_fv_nxv8f64:9468; CHECK: # %bb.0:9469; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9470; CHECK-NEXT: vfmv.v.f v16, fa09471; CHECK-NEXT: vmfeq.vf v24, v16, fa09472; CHECK-NEXT: vmfeq.vv v16, v8, v89473; CHECK-NEXT: vmand.mm v16, v24, v169474; CHECK-NEXT: vmv1r.v v17, v169475; CHECK-NEXT: vmv1r.v v0, v169476; CHECK-NEXT: vmfgt.vf v17, v8, fa0, v0.t9477; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t9478; CHECK-NEXT: vmor.mm v0, v16, v179479; CHECK-NEXT: ret9480 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09481 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9482 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp9483 ret <vscale x 8 x i1> %19484}9485 9486define <vscale x 8 x i1> @fcmp_ord_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {9487; CHECK-LABEL: fcmp_ord_vv_nxv8f64:9488; CHECK: # %bb.0:9489; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma9490; CHECK-NEXT: vmfeq.vv v24, v16, v169491; CHECK-NEXT: vmfeq.vv v16, v8, v89492; CHECK-NEXT: vmand.mm v0, v16, v249493; CHECK-NEXT: ret9494 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp9495 ret <vscale x 8 x i1> %19496}9497 9498define <vscale x 8 x i1> @fcmp_ord_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9499; CHECK-LABEL: fcmp_ord_vf_nxv8f64:9500; CHECK: # %bb.0:9501; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma9502; CHECK-NEXT: vfmv.v.f v16, fa09503; CHECK-NEXT: vmfeq.vf v24, v16, fa09504; CHECK-NEXT: vmfeq.vv v16, v8, v89505; CHECK-NEXT: vmand.mm v0, v16, v249506; CHECK-NEXT: ret9507 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09508 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9509 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp9510 ret <vscale x 8 x i1> %19511}9512 9513define <vscale x 8 x i1> @fcmp_ord_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9514; CHECK-LABEL: fcmp_ord_fv_nxv8f64:9515; CHECK: # %bb.0:9516; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma9517; CHECK-NEXT: vfmv.v.f v16, fa09518; CHECK-NEXT: vmfeq.vf v24, v16, fa09519; CHECK-NEXT: vmfeq.vv v16, v8, v89520; CHECK-NEXT: vmand.mm v0, v24, v169521; CHECK-NEXT: ret9522 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09523 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9524 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp9525 ret <vscale x 8 x i1> %19526}9527 9528define <vscale x 8 x i1> @fcmp_ueq_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {9529; CHECK-LABEL: fcmp_ueq_vv_nxv8f64:9530; CHECK: # %bb.0:9531; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9532; CHECK-NEXT: vmfeq.vv v24, v16, v169533; CHECK-NEXT: vmfeq.vv v25, v8, v89534; CHECK-NEXT: vmand.mm v24, v25, v249535; CHECK-NEXT: vmv1r.v v25, v249536; CHECK-NEXT: vmv1r.v v0, v249537; CHECK-NEXT: vmflt.vv v25, v8, v16, v0.t9538; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t9539; CHECK-NEXT: vmnor.mm v0, v24, v259540; CHECK-NEXT: ret9541 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp9542 ret <vscale x 8 x i1> %19543}9544 9545define <vscale x 8 x i1> @fcmp_ueq_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9546; CHECK-LABEL: fcmp_ueq_vf_nxv8f64:9547; CHECK: # %bb.0:9548; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9549; CHECK-NEXT: vfmv.v.f v16, fa09550; CHECK-NEXT: vmfeq.vf v24, v16, fa09551; CHECK-NEXT: vmfeq.vv v16, v8, v89552; CHECK-NEXT: vmand.mm v16, v16, v249553; CHECK-NEXT: vmv1r.v v17, v169554; CHECK-NEXT: vmv1r.v v0, v169555; CHECK-NEXT: vmflt.vf v17, v8, fa0, v0.t9556; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t9557; CHECK-NEXT: vmnor.mm v0, v16, v179558; CHECK-NEXT: ret9559 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09560 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9561 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp9562 ret <vscale x 8 x i1> %19563}9564 9565define <vscale x 8 x i1> @fcmp_ueq_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9566; CHECK-LABEL: fcmp_ueq_fv_nxv8f64:9567; CHECK: # %bb.0:9568; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9569; CHECK-NEXT: vfmv.v.f v16, fa09570; CHECK-NEXT: vmfeq.vf v24, v16, fa09571; CHECK-NEXT: vmfeq.vv v16, v8, v89572; CHECK-NEXT: vmand.mm v16, v24, v169573; CHECK-NEXT: vmv1r.v v17, v169574; CHECK-NEXT: vmv1r.v v0, v169575; CHECK-NEXT: vmfgt.vf v17, v8, fa0, v0.t9576; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t9577; CHECK-NEXT: vmnor.mm v0, v16, v179578; CHECK-NEXT: ret9579 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09580 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9581 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp9582 ret <vscale x 8 x i1> %19583}9584 9585define <vscale x 8 x i1> @fcmp_ugt_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {9586; CHECK-LABEL: fcmp_ugt_vv_nxv8f64:9587; CHECK: # %bb.0:9588; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9589; CHECK-NEXT: vmfeq.vv v24, v16, v169590; CHECK-NEXT: vmfeq.vv v25, v8, v89591; CHECK-NEXT: vmand.mm v24, v25, v249592; CHECK-NEXT: vmv1r.v v0, v249593; CHECK-NEXT: vmfle.vv v24, v8, v16, v0.t9594; CHECK-NEXT: vmnot.m v0, v249595; CHECK-NEXT: ret9596 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp9597 ret <vscale x 8 x i1> %19598}9599 9600define <vscale x 8 x i1> @fcmp_ugt_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9601; CHECK-LABEL: fcmp_ugt_vf_nxv8f64:9602; CHECK: # %bb.0:9603; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9604; CHECK-NEXT: vfmv.v.f v16, fa09605; CHECK-NEXT: vmfeq.vf v24, v16, fa09606; CHECK-NEXT: vmfeq.vv v16, v8, v89607; CHECK-NEXT: vmand.mm v16, v16, v249608; CHECK-NEXT: vmv1r.v v0, v169609; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t9610; CHECK-NEXT: vmnot.m v0, v169611; CHECK-NEXT: ret9612 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09613 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9614 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp9615 ret <vscale x 8 x i1> %19616}9617 9618define <vscale x 8 x i1> @fcmp_ugt_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9619; CHECK-LABEL: fcmp_ugt_fv_nxv8f64:9620; CHECK: # %bb.0:9621; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9622; CHECK-NEXT: vfmv.v.f v16, fa09623; CHECK-NEXT: vmfeq.vf v24, v16, fa09624; CHECK-NEXT: vmfeq.vv v16, v8, v89625; CHECK-NEXT: vmand.mm v16, v24, v169626; CHECK-NEXT: vmv1r.v v0, v169627; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t9628; CHECK-NEXT: vmnot.m v0, v169629; CHECK-NEXT: ret9630 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09631 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9632 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp9633 ret <vscale x 8 x i1> %19634}9635 9636define <vscale x 8 x i1> @fcmp_uge_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {9637; CHECK-LABEL: fcmp_uge_vv_nxv8f64:9638; CHECK: # %bb.0:9639; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9640; CHECK-NEXT: vmfeq.vv v24, v16, v169641; CHECK-NEXT: vmfeq.vv v25, v8, v89642; CHECK-NEXT: vmand.mm v24, v25, v249643; CHECK-NEXT: vmv1r.v v0, v249644; CHECK-NEXT: vmflt.vv v24, v8, v16, v0.t9645; CHECK-NEXT: vmnot.m v0, v249646; CHECK-NEXT: ret9647 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp9648 ret <vscale x 8 x i1> %19649}9650 9651define <vscale x 8 x i1> @fcmp_uge_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9652; CHECK-LABEL: fcmp_uge_vf_nxv8f64:9653; CHECK: # %bb.0:9654; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9655; CHECK-NEXT: vfmv.v.f v16, fa09656; CHECK-NEXT: vmfeq.vf v24, v16, fa09657; CHECK-NEXT: vmfeq.vv v16, v8, v89658; CHECK-NEXT: vmand.mm v16, v16, v249659; CHECK-NEXT: vmv1r.v v0, v169660; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t9661; CHECK-NEXT: vmnot.m v0, v169662; CHECK-NEXT: ret9663 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09664 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9665 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp9666 ret <vscale x 8 x i1> %19667}9668 9669define <vscale x 8 x i1> @fcmp_uge_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9670; CHECK-LABEL: fcmp_uge_fv_nxv8f64:9671; CHECK: # %bb.0:9672; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9673; CHECK-NEXT: vfmv.v.f v16, fa09674; CHECK-NEXT: vmfeq.vf v24, v16, fa09675; CHECK-NEXT: vmfeq.vv v16, v8, v89676; CHECK-NEXT: vmand.mm v16, v24, v169677; CHECK-NEXT: vmv1r.v v0, v169678; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t9679; CHECK-NEXT: vmnot.m v0, v169680; CHECK-NEXT: ret9681 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09682 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9683 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp9684 ret <vscale x 8 x i1> %19685}9686 9687define <vscale x 8 x i1> @fcmp_ult_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {9688; CHECK-LABEL: fcmp_ult_vv_nxv8f64:9689; CHECK: # %bb.0:9690; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9691; CHECK-NEXT: vmfeq.vv v24, v8, v89692; CHECK-NEXT: vmfeq.vv v25, v16, v169693; CHECK-NEXT: vmand.mm v24, v25, v249694; CHECK-NEXT: vmv1r.v v0, v249695; CHECK-NEXT: vmfle.vv v24, v16, v8, v0.t9696; CHECK-NEXT: vmnot.m v0, v249697; CHECK-NEXT: ret9698 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp9699 ret <vscale x 8 x i1> %19700}9701 9702define <vscale x 8 x i1> @fcmp_ult_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9703; CHECK-LABEL: fcmp_ult_vf_nxv8f64:9704; CHECK: # %bb.0:9705; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9706; CHECK-NEXT: vfmv.v.f v16, fa09707; CHECK-NEXT: vmfeq.vf v24, v16, fa09708; CHECK-NEXT: vmfeq.vv v16, v8, v89709; CHECK-NEXT: vmand.mm v16, v24, v169710; CHECK-NEXT: vmv1r.v v0, v169711; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t9712; CHECK-NEXT: vmnot.m v0, v169713; CHECK-NEXT: ret9714 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09715 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9716 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp9717 ret <vscale x 8 x i1> %19718}9719 9720define <vscale x 8 x i1> @fcmp_ult_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9721; CHECK-LABEL: fcmp_ult_fv_nxv8f64:9722; CHECK: # %bb.0:9723; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9724; CHECK-NEXT: vfmv.v.f v16, fa09725; CHECK-NEXT: vmfeq.vf v24, v16, fa09726; CHECK-NEXT: vmfeq.vv v16, v8, v89727; CHECK-NEXT: vmand.mm v16, v16, v249728; CHECK-NEXT: vmv1r.v v0, v169729; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t9730; CHECK-NEXT: vmnot.m v0, v169731; CHECK-NEXT: ret9732 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09733 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9734 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp9735 ret <vscale x 8 x i1> %19736}9737 9738define <vscale x 8 x i1> @fcmp_ule_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {9739; CHECK-LABEL: fcmp_ule_vv_nxv8f64:9740; CHECK: # %bb.0:9741; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9742; CHECK-NEXT: vmfeq.vv v24, v8, v89743; CHECK-NEXT: vmfeq.vv v25, v16, v169744; CHECK-NEXT: vmand.mm v24, v25, v249745; CHECK-NEXT: vmv1r.v v0, v249746; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t9747; CHECK-NEXT: vmnot.m v0, v249748; CHECK-NEXT: ret9749 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp9750 ret <vscale x 8 x i1> %19751}9752 9753define <vscale x 8 x i1> @fcmp_ule_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9754; CHECK-LABEL: fcmp_ule_vf_nxv8f64:9755; CHECK: # %bb.0:9756; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9757; CHECK-NEXT: vfmv.v.f v16, fa09758; CHECK-NEXT: vmfeq.vf v24, v16, fa09759; CHECK-NEXT: vmfeq.vv v16, v8, v89760; CHECK-NEXT: vmand.mm v16, v24, v169761; CHECK-NEXT: vmv1r.v v0, v169762; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t9763; CHECK-NEXT: vmnot.m v0, v169764; CHECK-NEXT: ret9765 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09766 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9767 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp9768 ret <vscale x 8 x i1> %19769}9770 9771define <vscale x 8 x i1> @fcmp_ule_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9772; CHECK-LABEL: fcmp_ule_fv_nxv8f64:9773; CHECK: # %bb.0:9774; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu9775; CHECK-NEXT: vfmv.v.f v16, fa09776; CHECK-NEXT: vmfeq.vf v24, v16, fa09777; CHECK-NEXT: vmfeq.vv v16, v8, v89778; CHECK-NEXT: vmand.mm v16, v16, v249779; CHECK-NEXT: vmv1r.v v0, v169780; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t9781; CHECK-NEXT: vmnot.m v0, v169782; CHECK-NEXT: ret9783 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09784 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9785 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp9786 ret <vscale x 8 x i1> %19787}9788 9789define <vscale x 8 x i1> @fcmp_une_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {9790; CHECK-LABEL: fcmp_une_vv_nxv8f64:9791; CHECK: # %bb.0:9792; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma9793; CHECK-NEXT: vmfne.vv v0, v8, v169794; CHECK-NEXT: ret9795 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp9796 ret <vscale x 8 x i1> %19797}9798 9799define <vscale x 8 x i1> @fcmp_une_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9800; CHECK-LABEL: fcmp_une_vf_nxv8f64:9801; CHECK: # %bb.0:9802; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma9803; CHECK-NEXT: vmfne.vf v0, v8, fa09804; CHECK-NEXT: ret9805 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09806 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9807 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp9808 ret <vscale x 8 x i1> %19809}9810 9811define <vscale x 8 x i1> @fcmp_une_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9812; CHECK-LABEL: fcmp_une_fv_nxv8f64:9813; CHECK: # %bb.0:9814; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma9815; CHECK-NEXT: vmfne.vf v0, v8, fa09816; CHECK-NEXT: ret9817 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09818 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9819 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp9820 ret <vscale x 8 x i1> %19821}9822 9823define <vscale x 8 x i1> @fcmp_uno_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {9824; CHECK-LABEL: fcmp_uno_vv_nxv8f64:9825; CHECK: # %bb.0:9826; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma9827; CHECK-NEXT: vmfne.vv v24, v16, v169828; CHECK-NEXT: vmfne.vv v16, v8, v89829; CHECK-NEXT: vmor.mm v0, v16, v249830; CHECK-NEXT: ret9831 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp9832 ret <vscale x 8 x i1> %19833}9834 9835define <vscale x 8 x i1> @fcmp_uno_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9836; CHECK-LABEL: fcmp_uno_vf_nxv8f64:9837; CHECK: # %bb.0:9838; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma9839; CHECK-NEXT: vfmv.v.f v16, fa09840; CHECK-NEXT: vmfne.vf v24, v16, fa09841; CHECK-NEXT: vmfne.vv v16, v8, v89842; CHECK-NEXT: vmor.mm v0, v16, v249843; CHECK-NEXT: ret9844 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09845 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9846 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp9847 ret <vscale x 8 x i1> %19848}9849 9850define <vscale x 8 x i1> @fcmp_uno_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {9851; CHECK-LABEL: fcmp_uno_fv_nxv8f64:9852; CHECK: # %bb.0:9853; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma9854; CHECK-NEXT: vfmv.v.f v16, fa09855; CHECK-NEXT: vmfne.vf v24, v16, fa09856; CHECK-NEXT: vmfne.vv v16, v8, v89857; CHECK-NEXT: vmor.mm v0, v24, v169858; CHECK-NEXT: ret9859 %head = insertelement <vscale x 8 x double> poison, double %b, i32 09860 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer9861 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp9862 ret <vscale x 8 x i1> %19863}9864