brintos

brintos / llvm-project-archived public Read only

0
0
Text · 480.3 KiB · 1981c78 Raw
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