7971 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> @fcmps_oeq_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {8; CHECK-LABEL: fcmps_oeq_vv_nxv1f16:9; CHECK: # %bb.0:10; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma11; CHECK-NEXT: vmfle.vv v10, v9, v812; CHECK-NEXT: vmfle.vv v8, v8, v913; CHECK-NEXT: vmand.mm v0, v8, v1014; CHECK-NEXT: ret15 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp16 ret <vscale x 1 x i1> %117}18 19define <vscale x 1 x i1> @fcmps_oeq_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {20; CHECK-LABEL: fcmps_oeq_vf_nxv1f16:21; CHECK: # %bb.0:22; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma23; CHECK-NEXT: vmfge.vf v9, v8, fa024; CHECK-NEXT: vmfle.vf v8, v8, fa025; CHECK-NEXT: vmand.mm v0, v8, v926; CHECK-NEXT: ret27 %head = insertelement <vscale x 1 x half> poison, half %b, i32 028 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer29 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp30 ret <vscale x 1 x i1> %131}32 33define <vscale x 1 x i1> @fcmps_oeq_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {34; CHECK-LABEL: fcmps_oeq_fv_nxv1f16:35; CHECK: # %bb.0:36; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma37; CHECK-NEXT: vmfle.vf v9, v8, fa038; CHECK-NEXT: vmfge.vf v8, v8, fa039; CHECK-NEXT: vmand.mm v0, v8, v940; CHECK-NEXT: ret41 %head = insertelement <vscale x 1 x half> poison, half %b, i32 042 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer43 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp44 ret <vscale x 1 x i1> %145}46 47define <vscale x 1 x i1> @fcmps_ogt_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {48; CHECK-LABEL: fcmps_ogt_vv_nxv1f16:49; CHECK: # %bb.0:50; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma51; CHECK-NEXT: vmflt.vv v0, v9, v852; CHECK-NEXT: ret53 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp54 ret <vscale x 1 x i1> %155}56 57define <vscale x 1 x i1> @fcmps_ogt_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {58; CHECK-LABEL: fcmps_ogt_vf_nxv1f16:59; CHECK: # %bb.0:60; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma61; CHECK-NEXT: vmfgt.vf v0, v8, fa062; CHECK-NEXT: ret63 %head = insertelement <vscale x 1 x half> poison, half %b, i32 064 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer65 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp66 ret <vscale x 1 x i1> %167}68 69define <vscale x 1 x i1> @fcmps_ogt_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {70; CHECK-LABEL: fcmps_ogt_fv_nxv1f16:71; CHECK: # %bb.0:72; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma73; CHECK-NEXT: vmflt.vf v0, v8, fa074; CHECK-NEXT: ret75 %head = insertelement <vscale x 1 x half> poison, half %b, i32 076 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer77 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp78 ret <vscale x 1 x i1> %179}80 81define <vscale x 1 x i1> @fcmps_oge_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {82; CHECK-LABEL: fcmps_oge_vv_nxv1f16:83; CHECK: # %bb.0:84; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma85; CHECK-NEXT: vmfle.vv v0, v9, v886; CHECK-NEXT: ret87 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp88 ret <vscale x 1 x i1> %189}90 91define <vscale x 1 x i1> @fcmps_oge_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {92; CHECK-LABEL: fcmps_oge_vf_nxv1f16:93; CHECK: # %bb.0:94; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma95; CHECK-NEXT: vmfge.vf v0, v8, fa096; CHECK-NEXT: ret97 %head = insertelement <vscale x 1 x half> poison, half %b, i32 098 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer99 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp100 ret <vscale x 1 x i1> %1101}102 103define <vscale x 1 x i1> @fcmps_oge_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {104; CHECK-LABEL: fcmps_oge_fv_nxv1f16:105; CHECK: # %bb.0:106; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma107; CHECK-NEXT: vmfle.vf v0, v8, fa0108; 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.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp112 ret <vscale x 1 x i1> %1113}114 115define <vscale x 1 x i1> @fcmps_olt_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {116; CHECK-LABEL: fcmps_olt_vv_nxv1f16:117; CHECK: # %bb.0:118; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma119; CHECK-NEXT: vmflt.vv v0, v8, v9120; CHECK-NEXT: ret121 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp122 ret <vscale x 1 x i1> %1123}124 125define <vscale x 1 x i1> @fcmps_olt_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {126; CHECK-LABEL: fcmps_olt_vf_nxv1f16:127; CHECK: # %bb.0:128; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma129; CHECK-NEXT: vmflt.vf v0, v8, fa0130; CHECK-NEXT: ret131 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0132 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer133 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp134 ret <vscale x 1 x i1> %1135}136 137define <vscale x 1 x i1> @fcmps_olt_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {138; CHECK-LABEL: fcmps_olt_fv_nxv1f16:139; CHECK: # %bb.0:140; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma141; CHECK-NEXT: vmfgt.vf v0, v8, fa0142; CHECK-NEXT: ret143 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0144 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer145 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp146 ret <vscale x 1 x i1> %1147}148 149define <vscale x 1 x i1> @fcmps_ole_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {150; CHECK-LABEL: fcmps_ole_vv_nxv1f16:151; CHECK: # %bb.0:152; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma153; CHECK-NEXT: vmfle.vv v0, v8, v9154; CHECK-NEXT: ret155 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp156 ret <vscale x 1 x i1> %1157}158 159define <vscale x 1 x i1> @fcmps_ole_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {160; CHECK-LABEL: fcmps_ole_vf_nxv1f16:161; CHECK: # %bb.0:162; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma163; CHECK-NEXT: vmfle.vf v0, v8, fa0164; CHECK-NEXT: ret165 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0166 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer167 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp168 ret <vscale x 1 x i1> %1169}170 171define <vscale x 1 x i1> @fcmps_ole_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {172; CHECK-LABEL: fcmps_ole_fv_nxv1f16:173; CHECK: # %bb.0:174; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma175; CHECK-NEXT: vmfge.vf v0, v8, fa0176; CHECK-NEXT: ret177 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0178 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer179 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp180 ret <vscale x 1 x i1> %1181}182 183define <vscale x 1 x i1> @fcmps_one_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {184; CHECK-LABEL: fcmps_one_vv_nxv1f16:185; CHECK: # %bb.0:186; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma187; CHECK-NEXT: vmflt.vv v10, v8, v9188; CHECK-NEXT: vmflt.vv v8, v9, v8189; CHECK-NEXT: vmor.mm v0, v8, v10190; CHECK-NEXT: ret191 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp192 ret <vscale x 1 x i1> %1193}194 195define <vscale x 1 x i1> @fcmps_one_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {196; CHECK-LABEL: fcmps_one_vf_nxv1f16:197; CHECK: # %bb.0:198; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma199; CHECK-NEXT: vmflt.vf v9, v8, fa0200; CHECK-NEXT: vmfgt.vf v8, v8, fa0201; CHECK-NEXT: vmor.mm v0, v8, v9202; CHECK-NEXT: ret203 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0204 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer205 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp206 ret <vscale x 1 x i1> %1207}208 209define <vscale x 1 x i1> @fcmps_one_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {210; CHECK-LABEL: fcmps_one_fv_nxv1f16:211; CHECK: # %bb.0:212; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma213; CHECK-NEXT: vmfgt.vf v9, v8, fa0214; CHECK-NEXT: vmflt.vf v8, v8, fa0215; CHECK-NEXT: vmor.mm v0, v8, v9216; CHECK-NEXT: ret217 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0218 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer219 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp220 ret <vscale x 1 x i1> %1221}222 223define <vscale x 1 x i1> @fcmps_ord_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {224; CHECK-LABEL: fcmps_ord_vv_nxv1f16:225; CHECK: # %bb.0:226; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma227; CHECK-NEXT: vmfle.vv v9, v9, v9228; CHECK-NEXT: vmfle.vv v8, v8, v8229; CHECK-NEXT: vmand.mm v0, v8, v9230; CHECK-NEXT: ret231 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp232 ret <vscale x 1 x i1> %1233}234 235define <vscale x 1 x i1> @fcmps_ord_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {236; CHECK-LABEL: fcmps_ord_vf_nxv1f16:237; CHECK: # %bb.0:238; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma239; CHECK-NEXT: vfmv.v.f v9, fa0240; CHECK-NEXT: vmfle.vf v9, v9, fa0241; CHECK-NEXT: vmfle.vv v8, v8, v8242; CHECK-NEXT: vmand.mm v0, v8, v9243; CHECK-NEXT: ret244 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0245 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer246 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp247 ret <vscale x 1 x i1> %1248}249 250define <vscale x 1 x i1> @fcmps_ord_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {251; CHECK-LABEL: fcmps_ord_fv_nxv1f16:252; CHECK: # %bb.0:253; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma254; CHECK-NEXT: vfmv.v.f v9, fa0255; CHECK-NEXT: vmfle.vf v9, v9, fa0256; CHECK-NEXT: vmfle.vv v8, v8, v8257; CHECK-NEXT: vmand.mm v0, v9, v8258; CHECK-NEXT: ret259 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0260 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer261 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp262 ret <vscale x 1 x i1> %1263}264 265define <vscale x 1 x i1> @fcmps_ueq_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {266; CHECK-LABEL: fcmps_ueq_vv_nxv1f16:267; CHECK: # %bb.0:268; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma269; CHECK-NEXT: vmflt.vv v10, v8, v9270; CHECK-NEXT: vmflt.vv v8, v9, v8271; CHECK-NEXT: vmnor.mm v0, v8, v10272; CHECK-NEXT: ret273 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp274 ret <vscale x 1 x i1> %1275}276 277define <vscale x 1 x i1> @fcmps_ueq_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {278; CHECK-LABEL: fcmps_ueq_vf_nxv1f16:279; CHECK: # %bb.0:280; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma281; CHECK-NEXT: vmflt.vf v9, v8, fa0282; CHECK-NEXT: vmfgt.vf v8, v8, fa0283; CHECK-NEXT: vmnor.mm v0, v8, v9284; CHECK-NEXT: ret285 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0286 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer287 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp288 ret <vscale x 1 x i1> %1289}290 291define <vscale x 1 x i1> @fcmps_ueq_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {292; CHECK-LABEL: fcmps_ueq_fv_nxv1f16:293; CHECK: # %bb.0:294; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma295; CHECK-NEXT: vmfgt.vf v9, v8, fa0296; CHECK-NEXT: vmflt.vf v8, v8, fa0297; CHECK-NEXT: vmnor.mm v0, v8, v9298; CHECK-NEXT: ret299 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0300 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer301 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp302 ret <vscale x 1 x i1> %1303}304 305define <vscale x 1 x i1> @fcmps_ugt_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {306; CHECK-LABEL: fcmps_ugt_vv_nxv1f16:307; CHECK: # %bb.0:308; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma309; CHECK-NEXT: vmfle.vv v8, v8, v9310; CHECK-NEXT: vmnot.m v0, v8311; CHECK-NEXT: ret312 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp313 ret <vscale x 1 x i1> %1314}315 316define <vscale x 1 x i1> @fcmps_ugt_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {317; CHECK-LABEL: fcmps_ugt_vf_nxv1f16:318; CHECK: # %bb.0:319; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma320; CHECK-NEXT: vmfle.vf v8, v8, fa0321; CHECK-NEXT: vmnot.m v0, v8322; CHECK-NEXT: ret323 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0324 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer325 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp326 ret <vscale x 1 x i1> %1327}328 329define <vscale x 1 x i1> @fcmps_ugt_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {330; CHECK-LABEL: fcmps_ugt_fv_nxv1f16:331; CHECK: # %bb.0:332; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma333; CHECK-NEXT: vmfge.vf v8, v8, fa0334; CHECK-NEXT: vmnot.m v0, v8335; CHECK-NEXT: ret336 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0337 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer338 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp339 ret <vscale x 1 x i1> %1340}341 342define <vscale x 1 x i1> @fcmps_uge_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {343; CHECK-LABEL: fcmps_uge_vv_nxv1f16:344; CHECK: # %bb.0:345; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma346; CHECK-NEXT: vmflt.vv v8, v8, v9347; CHECK-NEXT: vmnot.m v0, v8348; CHECK-NEXT: ret349 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp350 ret <vscale x 1 x i1> %1351}352 353define <vscale x 1 x i1> @fcmps_uge_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {354; CHECK-LABEL: fcmps_uge_vf_nxv1f16:355; CHECK: # %bb.0:356; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma357; CHECK-NEXT: vmflt.vf v8, v8, fa0358; CHECK-NEXT: vmnot.m v0, v8359; CHECK-NEXT: ret360 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0361 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer362 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp363 ret <vscale x 1 x i1> %1364}365 366define <vscale x 1 x i1> @fcmps_uge_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {367; CHECK-LABEL: fcmps_uge_fv_nxv1f16:368; CHECK: # %bb.0:369; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma370; CHECK-NEXT: vmfgt.vf v8, v8, fa0371; CHECK-NEXT: vmnot.m v0, v8372; CHECK-NEXT: ret373 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0374 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer375 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp376 ret <vscale x 1 x i1> %1377}378 379define <vscale x 1 x i1> @fcmps_ult_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {380; CHECK-LABEL: fcmps_ult_vv_nxv1f16:381; CHECK: # %bb.0:382; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma383; CHECK-NEXT: vmfle.vv v8, v9, v8384; CHECK-NEXT: vmnot.m v0, v8385; CHECK-NEXT: ret386 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp387 ret <vscale x 1 x i1> %1388}389 390define <vscale x 1 x i1> @fcmps_ult_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {391; CHECK-LABEL: fcmps_ult_vf_nxv1f16:392; CHECK: # %bb.0:393; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma394; CHECK-NEXT: vmfge.vf v8, v8, fa0395; CHECK-NEXT: vmnot.m v0, v8396; CHECK-NEXT: ret397 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0398 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer399 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp400 ret <vscale x 1 x i1> %1401}402 403define <vscale x 1 x i1> @fcmps_ult_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {404; CHECK-LABEL: fcmps_ult_fv_nxv1f16:405; CHECK: # %bb.0:406; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma407; CHECK-NEXT: vmfle.vf v8, v8, fa0408; CHECK-NEXT: vmnot.m v0, v8409; CHECK-NEXT: ret410 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0411 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer412 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp413 ret <vscale x 1 x i1> %1414}415 416define <vscale x 1 x i1> @fcmps_ule_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {417; CHECK-LABEL: fcmps_ule_vv_nxv1f16:418; CHECK: # %bb.0:419; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma420; CHECK-NEXT: vmflt.vv v8, v9, v8421; CHECK-NEXT: vmnot.m v0, v8422; CHECK-NEXT: ret423 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp424 ret <vscale x 1 x i1> %1425}426 427define <vscale x 1 x i1> @fcmps_ule_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {428; CHECK-LABEL: fcmps_ule_vf_nxv1f16:429; CHECK: # %bb.0:430; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma431; CHECK-NEXT: vmfgt.vf v8, v8, fa0432; CHECK-NEXT: vmnot.m v0, v8433; CHECK-NEXT: ret434 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0435 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer436 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp437 ret <vscale x 1 x i1> %1438}439 440define <vscale x 1 x i1> @fcmps_ule_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {441; CHECK-LABEL: fcmps_ule_fv_nxv1f16:442; CHECK: # %bb.0:443; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma444; CHECK-NEXT: vmflt.vf v8, v8, fa0445; CHECK-NEXT: vmnot.m v0, v8446; CHECK-NEXT: ret447 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0448 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer449 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp450 ret <vscale x 1 x i1> %1451}452 453define <vscale x 1 x i1> @fcmps_une_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {454; CHECK-LABEL: fcmps_une_vv_nxv1f16:455; CHECK: # %bb.0:456; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma457; CHECK-NEXT: vmfle.vv v10, v9, v8458; CHECK-NEXT: vmfle.vv v8, v8, v9459; CHECK-NEXT: vmnand.mm v0, v8, v10460; CHECK-NEXT: ret461 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp462 ret <vscale x 1 x i1> %1463}464 465define <vscale x 1 x i1> @fcmps_une_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {466; CHECK-LABEL: fcmps_une_vf_nxv1f16:467; CHECK: # %bb.0:468; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma469; CHECK-NEXT: vmfge.vf v9, v8, fa0470; CHECK-NEXT: vmfle.vf v8, v8, fa0471; CHECK-NEXT: vmnand.mm v0, v8, v9472; CHECK-NEXT: ret473 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0474 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer475 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp476 ret <vscale x 1 x i1> %1477}478 479define <vscale x 1 x i1> @fcmps_une_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {480; CHECK-LABEL: fcmps_une_fv_nxv1f16:481; CHECK: # %bb.0:482; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma483; CHECK-NEXT: vmfle.vf v9, v8, fa0484; CHECK-NEXT: vmfge.vf v8, v8, fa0485; CHECK-NEXT: vmnand.mm v0, v8, v9486; CHECK-NEXT: ret487 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0488 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer489 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp490 ret <vscale x 1 x i1> %1491}492 493define <vscale x 1 x i1> @fcmps_uno_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {494; CHECK-LABEL: fcmps_uno_vv_nxv1f16:495; CHECK: # %bb.0:496; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma497; CHECK-NEXT: vmfle.vv v9, v9, v9498; CHECK-NEXT: vmfle.vv v8, v8, v8499; CHECK-NEXT: vmnot.m v8, v8500; CHECK-NEXT: vmorn.mm v0, v8, v9501; CHECK-NEXT: ret502 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp503 ret <vscale x 1 x i1> %1504}505 506define <vscale x 1 x i1> @fcmps_uno_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {507; CHECK-LABEL: fcmps_uno_vf_nxv1f16:508; CHECK: # %bb.0:509; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma510; CHECK-NEXT: vfmv.v.f v9, fa0511; CHECK-NEXT: vmfle.vv v8, v8, v8512; CHECK-NEXT: vmfle.vf v9, v9, fa0513; CHECK-NEXT: vmnot.m v8, v8514; CHECK-NEXT: vmorn.mm v0, v8, v9515; CHECK-NEXT: ret516 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0517 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer518 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp519 ret <vscale x 1 x i1> %1520}521 522define <vscale x 1 x i1> @fcmps_uno_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {523; CHECK-LABEL: fcmps_uno_fv_nxv1f16:524; CHECK: # %bb.0:525; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma526; CHECK-NEXT: vfmv.v.f v9, fa0527; CHECK-NEXT: vmfle.vf v9, v9, fa0528; CHECK-NEXT: vmnot.m v9, v9529; CHECK-NEXT: vmfle.vv v8, v8, v8530; CHECK-NEXT: vmorn.mm v0, v9, v8531; CHECK-NEXT: ret532 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0533 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer534 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp535 ret <vscale x 1 x i1> %1536}537 538define <vscale x 2 x i1> @fcmps_oeq_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {539; CHECK-LABEL: fcmps_oeq_vv_nxv2f16:540; CHECK: # %bb.0:541; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma542; CHECK-NEXT: vmfle.vv v10, v9, v8543; CHECK-NEXT: vmfle.vv v8, v8, v9544; CHECK-NEXT: vmand.mm v0, v8, v10545; CHECK-NEXT: ret546 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp547 ret <vscale x 2 x i1> %1548}549 550define <vscale x 2 x i1> @fcmps_oeq_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {551; CHECK-LABEL: fcmps_oeq_vf_nxv2f16:552; CHECK: # %bb.0:553; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma554; CHECK-NEXT: vmfge.vf v9, v8, fa0555; CHECK-NEXT: vmfle.vf v8, v8, fa0556; CHECK-NEXT: vmand.mm v0, v8, v9557; CHECK-NEXT: ret558 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0559 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer560 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp561 ret <vscale x 2 x i1> %1562}563 564define <vscale x 2 x i1> @fcmps_oeq_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {565; CHECK-LABEL: fcmps_oeq_fv_nxv2f16:566; CHECK: # %bb.0:567; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma568; CHECK-NEXT: vmfle.vf v9, v8, fa0569; CHECK-NEXT: vmfge.vf v8, v8, fa0570; CHECK-NEXT: vmand.mm v0, v8, v9571; CHECK-NEXT: ret572 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0573 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer574 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp575 ret <vscale x 2 x i1> %1576}577 578define <vscale x 2 x i1> @fcmps_ogt_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {579; CHECK-LABEL: fcmps_ogt_vv_nxv2f16:580; CHECK: # %bb.0:581; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma582; CHECK-NEXT: vmflt.vv v0, v9, v8583; CHECK-NEXT: ret584 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp585 ret <vscale x 2 x i1> %1586}587 588define <vscale x 2 x i1> @fcmps_ogt_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {589; CHECK-LABEL: fcmps_ogt_vf_nxv2f16:590; CHECK: # %bb.0:591; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma592; CHECK-NEXT: vmfgt.vf v0, v8, fa0593; CHECK-NEXT: ret594 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0595 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer596 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp597 ret <vscale x 2 x i1> %1598}599 600define <vscale x 2 x i1> @fcmps_ogt_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {601; CHECK-LABEL: fcmps_ogt_fv_nxv2f16:602; CHECK: # %bb.0:603; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma604; CHECK-NEXT: vmflt.vf v0, v8, fa0605; CHECK-NEXT: ret606 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0607 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer608 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp609 ret <vscale x 2 x i1> %1610}611 612define <vscale x 2 x i1> @fcmps_oge_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {613; CHECK-LABEL: fcmps_oge_vv_nxv2f16:614; CHECK: # %bb.0:615; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma616; CHECK-NEXT: vmfle.vv v0, v9, v8617; CHECK-NEXT: ret618 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp619 ret <vscale x 2 x i1> %1620}621 622define <vscale x 2 x i1> @fcmps_oge_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {623; CHECK-LABEL: fcmps_oge_vf_nxv2f16:624; CHECK: # %bb.0:625; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma626; CHECK-NEXT: vmfge.vf v0, v8, fa0627; CHECK-NEXT: ret628 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0629 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer630 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp631 ret <vscale x 2 x i1> %1632}633 634define <vscale x 2 x i1> @fcmps_oge_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {635; CHECK-LABEL: fcmps_oge_fv_nxv2f16:636; CHECK: # %bb.0:637; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma638; CHECK-NEXT: vmfle.vf v0, v8, fa0639; CHECK-NEXT: ret640 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0641 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer642 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp643 ret <vscale x 2 x i1> %1644}645 646define <vscale x 2 x i1> @fcmps_olt_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {647; CHECK-LABEL: fcmps_olt_vv_nxv2f16:648; CHECK: # %bb.0:649; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma650; CHECK-NEXT: vmflt.vv v0, v8, v9651; CHECK-NEXT: ret652 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp653 ret <vscale x 2 x i1> %1654}655 656define <vscale x 2 x i1> @fcmps_olt_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {657; CHECK-LABEL: fcmps_olt_vf_nxv2f16:658; CHECK: # %bb.0:659; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma660; CHECK-NEXT: vmflt.vf v0, v8, fa0661; CHECK-NEXT: ret662 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0663 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer664 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp665 ret <vscale x 2 x i1> %1666}667 668define <vscale x 2 x i1> @fcmps_olt_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {669; CHECK-LABEL: fcmps_olt_fv_nxv2f16:670; CHECK: # %bb.0:671; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma672; CHECK-NEXT: vmfgt.vf v0, v8, fa0673; CHECK-NEXT: ret674 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0675 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer676 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp677 ret <vscale x 2 x i1> %1678}679 680define <vscale x 2 x i1> @fcmps_ole_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {681; CHECK-LABEL: fcmps_ole_vv_nxv2f16:682; CHECK: # %bb.0:683; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma684; CHECK-NEXT: vmfle.vv v0, v8, v9685; CHECK-NEXT: ret686 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp687 ret <vscale x 2 x i1> %1688}689 690define <vscale x 2 x i1> @fcmps_ole_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {691; CHECK-LABEL: fcmps_ole_vf_nxv2f16:692; CHECK: # %bb.0:693; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma694; CHECK-NEXT: vmfle.vf v0, v8, fa0695; 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.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp699 ret <vscale x 2 x i1> %1700}701 702define <vscale x 2 x i1> @fcmps_ole_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {703; CHECK-LABEL: fcmps_ole_fv_nxv2f16:704; CHECK: # %bb.0:705; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma706; CHECK-NEXT: vmfge.vf v0, v8, fa0707; CHECK-NEXT: ret708 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0709 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer710 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp711 ret <vscale x 2 x i1> %1712}713 714define <vscale x 2 x i1> @fcmps_one_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {715; CHECK-LABEL: fcmps_one_vv_nxv2f16:716; CHECK: # %bb.0:717; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma718; CHECK-NEXT: vmflt.vv v10, v8, v9719; CHECK-NEXT: vmflt.vv v8, v9, v8720; CHECK-NEXT: vmor.mm v0, v8, v10721; CHECK-NEXT: ret722 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp723 ret <vscale x 2 x i1> %1724}725 726define <vscale x 2 x i1> @fcmps_one_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {727; CHECK-LABEL: fcmps_one_vf_nxv2f16:728; CHECK: # %bb.0:729; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma730; CHECK-NEXT: vmflt.vf v9, v8, fa0731; CHECK-NEXT: vmfgt.vf v8, v8, fa0732; CHECK-NEXT: vmor.mm v0, v8, v9733; CHECK-NEXT: ret734 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0735 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer736 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp737 ret <vscale x 2 x i1> %1738}739 740define <vscale x 2 x i1> @fcmps_one_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {741; CHECK-LABEL: fcmps_one_fv_nxv2f16:742; CHECK: # %bb.0:743; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma744; CHECK-NEXT: vmfgt.vf v9, v8, fa0745; CHECK-NEXT: vmflt.vf v8, v8, fa0746; CHECK-NEXT: vmor.mm v0, v8, v9747; CHECK-NEXT: ret748 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0749 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer750 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp751 ret <vscale x 2 x i1> %1752}753 754define <vscale x 2 x i1> @fcmps_ord_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {755; CHECK-LABEL: fcmps_ord_vv_nxv2f16:756; CHECK: # %bb.0:757; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma758; CHECK-NEXT: vmfle.vv v9, v9, v9759; CHECK-NEXT: vmfle.vv v8, v8, v8760; CHECK-NEXT: vmand.mm v0, v8, v9761; CHECK-NEXT: ret762 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp763 ret <vscale x 2 x i1> %1764}765 766define <vscale x 2 x i1> @fcmps_ord_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {767; CHECK-LABEL: fcmps_ord_vf_nxv2f16:768; CHECK: # %bb.0:769; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma770; CHECK-NEXT: vfmv.v.f v9, fa0771; CHECK-NEXT: vmfle.vf v9, v9, fa0772; CHECK-NEXT: vmfle.vv v8, v8, v8773; CHECK-NEXT: vmand.mm v0, v8, v9774; CHECK-NEXT: ret775 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0776 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer777 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp778 ret <vscale x 2 x i1> %1779}780 781define <vscale x 2 x i1> @fcmps_ord_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {782; CHECK-LABEL: fcmps_ord_fv_nxv2f16:783; CHECK: # %bb.0:784; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma785; CHECK-NEXT: vfmv.v.f v9, fa0786; CHECK-NEXT: vmfle.vf v9, v9, fa0787; CHECK-NEXT: vmfle.vv v8, v8, v8788; CHECK-NEXT: vmand.mm v0, v9, v8789; CHECK-NEXT: ret790 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0791 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer792 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp793 ret <vscale x 2 x i1> %1794}795 796define <vscale x 2 x i1> @fcmps_ueq_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {797; CHECK-LABEL: fcmps_ueq_vv_nxv2f16:798; CHECK: # %bb.0:799; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma800; CHECK-NEXT: vmflt.vv v10, v8, v9801; CHECK-NEXT: vmflt.vv v8, v9, v8802; CHECK-NEXT: vmnor.mm v0, v8, v10803; CHECK-NEXT: ret804 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp805 ret <vscale x 2 x i1> %1806}807 808define <vscale x 2 x i1> @fcmps_ueq_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {809; CHECK-LABEL: fcmps_ueq_vf_nxv2f16:810; CHECK: # %bb.0:811; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma812; CHECK-NEXT: vmflt.vf v9, v8, fa0813; CHECK-NEXT: vmfgt.vf v8, v8, fa0814; CHECK-NEXT: vmnor.mm v0, v8, v9815; CHECK-NEXT: ret816 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0817 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer818 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp819 ret <vscale x 2 x i1> %1820}821 822define <vscale x 2 x i1> @fcmps_ueq_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {823; CHECK-LABEL: fcmps_ueq_fv_nxv2f16:824; CHECK: # %bb.0:825; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma826; CHECK-NEXT: vmfgt.vf v9, v8, fa0827; CHECK-NEXT: vmflt.vf v8, v8, fa0828; CHECK-NEXT: vmnor.mm v0, v8, v9829; CHECK-NEXT: ret830 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0831 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer832 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp833 ret <vscale x 2 x i1> %1834}835 836define <vscale x 2 x i1> @fcmps_ugt_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {837; CHECK-LABEL: fcmps_ugt_vv_nxv2f16:838; CHECK: # %bb.0:839; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma840; CHECK-NEXT: vmfle.vv v8, v8, v9841; CHECK-NEXT: vmnot.m v0, v8842; CHECK-NEXT: ret843 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp844 ret <vscale x 2 x i1> %1845}846 847define <vscale x 2 x i1> @fcmps_ugt_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {848; CHECK-LABEL: fcmps_ugt_vf_nxv2f16:849; CHECK: # %bb.0:850; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma851; CHECK-NEXT: vmfle.vf v8, v8, fa0852; CHECK-NEXT: vmnot.m v0, v8853; CHECK-NEXT: ret854 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0855 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer856 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp857 ret <vscale x 2 x i1> %1858}859 860define <vscale x 2 x i1> @fcmps_ugt_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {861; CHECK-LABEL: fcmps_ugt_fv_nxv2f16:862; CHECK: # %bb.0:863; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma864; CHECK-NEXT: vmfge.vf v8, v8, fa0865; CHECK-NEXT: vmnot.m v0, v8866; CHECK-NEXT: ret867 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0868 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer869 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp870 ret <vscale x 2 x i1> %1871}872 873define <vscale x 2 x i1> @fcmps_uge_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {874; CHECK-LABEL: fcmps_uge_vv_nxv2f16:875; CHECK: # %bb.0:876; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma877; CHECK-NEXT: vmflt.vv v8, v8, v9878; CHECK-NEXT: vmnot.m v0, v8879; CHECK-NEXT: ret880 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp881 ret <vscale x 2 x i1> %1882}883 884define <vscale x 2 x i1> @fcmps_uge_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {885; CHECK-LABEL: fcmps_uge_vf_nxv2f16:886; CHECK: # %bb.0:887; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma888; CHECK-NEXT: vmflt.vf v8, v8, fa0889; CHECK-NEXT: vmnot.m v0, v8890; CHECK-NEXT: ret891 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0892 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer893 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp894 ret <vscale x 2 x i1> %1895}896 897define <vscale x 2 x i1> @fcmps_uge_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {898; CHECK-LABEL: fcmps_uge_fv_nxv2f16:899; CHECK: # %bb.0:900; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma901; CHECK-NEXT: vmfgt.vf v8, v8, fa0902; CHECK-NEXT: vmnot.m v0, v8903; CHECK-NEXT: ret904 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0905 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer906 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp907 ret <vscale x 2 x i1> %1908}909 910define <vscale x 2 x i1> @fcmps_ult_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {911; CHECK-LABEL: fcmps_ult_vv_nxv2f16:912; CHECK: # %bb.0:913; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma914; CHECK-NEXT: vmfle.vv v8, v9, v8915; CHECK-NEXT: vmnot.m v0, v8916; CHECK-NEXT: ret917 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp918 ret <vscale x 2 x i1> %1919}920 921define <vscale x 2 x i1> @fcmps_ult_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {922; CHECK-LABEL: fcmps_ult_vf_nxv2f16:923; CHECK: # %bb.0:924; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma925; CHECK-NEXT: vmfge.vf v8, v8, fa0926; CHECK-NEXT: vmnot.m v0, v8927; 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.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp931 ret <vscale x 2 x i1> %1932}933 934define <vscale x 2 x i1> @fcmps_ult_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {935; CHECK-LABEL: fcmps_ult_fv_nxv2f16:936; CHECK: # %bb.0:937; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma938; CHECK-NEXT: vmfle.vf v8, v8, fa0939; CHECK-NEXT: vmnot.m v0, v8940; CHECK-NEXT: ret941 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0942 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer943 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp944 ret <vscale x 2 x i1> %1945}946 947define <vscale x 2 x i1> @fcmps_ule_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {948; CHECK-LABEL: fcmps_ule_vv_nxv2f16:949; CHECK: # %bb.0:950; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma951; CHECK-NEXT: vmflt.vv v8, v9, v8952; CHECK-NEXT: vmnot.m v0, v8953; CHECK-NEXT: ret954 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp955 ret <vscale x 2 x i1> %1956}957 958define <vscale x 2 x i1> @fcmps_ule_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {959; CHECK-LABEL: fcmps_ule_vf_nxv2f16:960; CHECK: # %bb.0:961; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma962; CHECK-NEXT: vmfgt.vf v8, v8, fa0963; CHECK-NEXT: vmnot.m v0, v8964; CHECK-NEXT: ret965 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0966 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer967 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp968 ret <vscale x 2 x i1> %1969}970 971define <vscale x 2 x i1> @fcmps_ule_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {972; CHECK-LABEL: fcmps_ule_fv_nxv2f16:973; CHECK: # %bb.0:974; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma975; CHECK-NEXT: vmflt.vf v8, v8, fa0976; CHECK-NEXT: vmnot.m v0, v8977; 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.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp981 ret <vscale x 2 x i1> %1982}983 984define <vscale x 2 x i1> @fcmps_une_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {985; CHECK-LABEL: fcmps_une_vv_nxv2f16:986; CHECK: # %bb.0:987; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma988; CHECK-NEXT: vmfle.vv v10, v9, v8989; CHECK-NEXT: vmfle.vv v8, v8, v9990; CHECK-NEXT: vmnand.mm v0, v8, v10991; CHECK-NEXT: ret992 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp993 ret <vscale x 2 x i1> %1994}995 996define <vscale x 2 x i1> @fcmps_une_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {997; CHECK-LABEL: fcmps_une_vf_nxv2f16:998; CHECK: # %bb.0:999; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma1000; CHECK-NEXT: vmfge.vf v9, v8, fa01001; CHECK-NEXT: vmfle.vf v8, v8, fa01002; CHECK-NEXT: vmnand.mm v0, v8, v91003; CHECK-NEXT: ret1004 %head = insertelement <vscale x 2 x half> poison, half %b, i32 01005 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1006 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp1007 ret <vscale x 2 x i1> %11008}1009 1010define <vscale x 2 x i1> @fcmps_une_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {1011; CHECK-LABEL: fcmps_une_fv_nxv2f16:1012; CHECK: # %bb.0:1013; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma1014; CHECK-NEXT: vmfle.vf v9, v8, fa01015; CHECK-NEXT: vmfge.vf v8, v8, fa01016; CHECK-NEXT: vmnand.mm v0, v8, v91017; CHECK-NEXT: ret1018 %head = insertelement <vscale x 2 x half> poison, half %b, i32 01019 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1020 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp1021 ret <vscale x 2 x i1> %11022}1023 1024define <vscale x 2 x i1> @fcmps_uno_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {1025; CHECK-LABEL: fcmps_uno_vv_nxv2f16:1026; CHECK: # %bb.0:1027; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma1028; CHECK-NEXT: vmfle.vv v9, v9, v91029; CHECK-NEXT: vmfle.vv v8, v8, v81030; CHECK-NEXT: vmnot.m v8, v81031; CHECK-NEXT: vmorn.mm v0, v8, v91032; CHECK-NEXT: ret1033 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp1034 ret <vscale x 2 x i1> %11035}1036 1037define <vscale x 2 x i1> @fcmps_uno_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {1038; CHECK-LABEL: fcmps_uno_vf_nxv2f16:1039; CHECK: # %bb.0:1040; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma1041; CHECK-NEXT: vfmv.v.f v9, fa01042; CHECK-NEXT: vmfle.vv v8, v8, v81043; CHECK-NEXT: vmfle.vf v9, v9, fa01044; CHECK-NEXT: vmnot.m v8, v81045; CHECK-NEXT: vmorn.mm v0, v8, v91046; CHECK-NEXT: ret1047 %head = insertelement <vscale x 2 x half> poison, half %b, i32 01048 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1049 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp1050 ret <vscale x 2 x i1> %11051}1052 1053define <vscale x 2 x i1> @fcmps_uno_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {1054; CHECK-LABEL: fcmps_uno_fv_nxv2f16:1055; CHECK: # %bb.0:1056; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma1057; CHECK-NEXT: vfmv.v.f v9, fa01058; CHECK-NEXT: vmfle.vf v9, v9, fa01059; CHECK-NEXT: vmnot.m v9, v91060; CHECK-NEXT: vmfle.vv v8, v8, v81061; CHECK-NEXT: vmorn.mm v0, v9, v81062; CHECK-NEXT: ret1063 %head = insertelement <vscale x 2 x half> poison, half %b, i32 01064 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer1065 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp1066 ret <vscale x 2 x i1> %11067}1068 1069define <vscale x 4 x i1> @fcmps_oeq_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1070; CHECK-LABEL: fcmps_oeq_vv_nxv4f16:1071; CHECK: # %bb.0:1072; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1073; CHECK-NEXT: vmfle.vv v10, v9, v81074; CHECK-NEXT: vmfle.vv v8, v8, v91075; CHECK-NEXT: vmand.mm v0, v8, v101076; CHECK-NEXT: ret1077 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp1078 ret <vscale x 4 x i1> %11079}1080 1081define <vscale x 4 x i1> @fcmps_oeq_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1082; CHECK-LABEL: fcmps_oeq_vf_nxv4f16:1083; CHECK: # %bb.0:1084; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1085; CHECK-NEXT: vmfge.vf v9, v8, fa01086; CHECK-NEXT: vmfle.vf v8, v8, fa01087; CHECK-NEXT: vmand.mm v0, v8, v91088; CHECK-NEXT: ret1089 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01090 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1091 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp1092 ret <vscale x 4 x i1> %11093}1094 1095define <vscale x 4 x i1> @fcmps_oeq_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1096; CHECK-LABEL: fcmps_oeq_fv_nxv4f16:1097; CHECK: # %bb.0:1098; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1099; CHECK-NEXT: vmfle.vf v9, v8, fa01100; CHECK-NEXT: vmfge.vf v8, v8, fa01101; CHECK-NEXT: vmand.mm v0, v8, v91102; CHECK-NEXT: ret1103 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01104 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1105 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp1106 ret <vscale x 4 x i1> %11107}1108 1109define <vscale x 4 x i1> @fcmps_ogt_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1110; CHECK-LABEL: fcmps_ogt_vv_nxv4f16:1111; CHECK: # %bb.0:1112; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1113; CHECK-NEXT: vmflt.vv v0, v9, v81114; CHECK-NEXT: ret1115 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp1116 ret <vscale x 4 x i1> %11117}1118 1119define <vscale x 4 x i1> @fcmps_ogt_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1120; CHECK-LABEL: fcmps_ogt_vf_nxv4f16:1121; CHECK: # %bb.0:1122; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1123; CHECK-NEXT: vmfgt.vf v0, v8, fa01124; CHECK-NEXT: ret1125 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01126 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1127 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp1128 ret <vscale x 4 x i1> %11129}1130 1131define <vscale x 4 x i1> @fcmps_ogt_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1132; CHECK-LABEL: fcmps_ogt_fv_nxv4f16:1133; CHECK: # %bb.0:1134; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1135; CHECK-NEXT: vmflt.vf v0, v8, fa01136; CHECK-NEXT: ret1137 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01138 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1139 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp1140 ret <vscale x 4 x i1> %11141}1142 1143define <vscale x 4 x i1> @fcmps_oge_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1144; CHECK-LABEL: fcmps_oge_vv_nxv4f16:1145; CHECK: # %bb.0:1146; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1147; CHECK-NEXT: vmfle.vv v0, v9, v81148; CHECK-NEXT: ret1149 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp1150 ret <vscale x 4 x i1> %11151}1152 1153define <vscale x 4 x i1> @fcmps_oge_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1154; CHECK-LABEL: fcmps_oge_vf_nxv4f16:1155; CHECK: # %bb.0:1156; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1157; CHECK-NEXT: vmfge.vf v0, v8, fa01158; CHECK-NEXT: ret1159 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01160 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1161 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp1162 ret <vscale x 4 x i1> %11163}1164 1165define <vscale x 4 x i1> @fcmps_oge_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1166; CHECK-LABEL: fcmps_oge_fv_nxv4f16:1167; CHECK: # %bb.0:1168; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1169; CHECK-NEXT: vmfle.vf v0, v8, fa01170; CHECK-NEXT: ret1171 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01172 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1173 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp1174 ret <vscale x 4 x i1> %11175}1176 1177define <vscale x 4 x i1> @fcmps_olt_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1178; CHECK-LABEL: fcmps_olt_vv_nxv4f16:1179; CHECK: # %bb.0:1180; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1181; CHECK-NEXT: vmflt.vv v0, v8, v91182; CHECK-NEXT: ret1183 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp1184 ret <vscale x 4 x i1> %11185}1186 1187define <vscale x 4 x i1> @fcmps_olt_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1188; CHECK-LABEL: fcmps_olt_vf_nxv4f16:1189; CHECK: # %bb.0:1190; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1191; CHECK-NEXT: vmflt.vf v0, v8, fa01192; CHECK-NEXT: ret1193 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01194 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1195 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp1196 ret <vscale x 4 x i1> %11197}1198 1199define <vscale x 4 x i1> @fcmps_olt_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1200; CHECK-LABEL: fcmps_olt_fv_nxv4f16:1201; CHECK: # %bb.0:1202; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1203; CHECK-NEXT: vmfgt.vf v0, v8, fa01204; CHECK-NEXT: ret1205 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01206 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1207 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp1208 ret <vscale x 4 x i1> %11209}1210 1211define <vscale x 4 x i1> @fcmps_ole_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1212; CHECK-LABEL: fcmps_ole_vv_nxv4f16:1213; CHECK: # %bb.0:1214; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1215; CHECK-NEXT: vmfle.vv v0, v8, v91216; CHECK-NEXT: ret1217 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp1218 ret <vscale x 4 x i1> %11219}1220 1221define <vscale x 4 x i1> @fcmps_ole_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1222; CHECK-LABEL: fcmps_ole_vf_nxv4f16:1223; CHECK: # %bb.0:1224; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1225; CHECK-NEXT: vmfle.vf v0, v8, fa01226; CHECK-NEXT: ret1227 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01228 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1229 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp1230 ret <vscale x 4 x i1> %11231}1232 1233define <vscale x 4 x i1> @fcmps_ole_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1234; CHECK-LABEL: fcmps_ole_fv_nxv4f16:1235; CHECK: # %bb.0:1236; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1237; CHECK-NEXT: vmfge.vf v0, v8, fa01238; CHECK-NEXT: ret1239 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01240 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1241 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp1242 ret <vscale x 4 x i1> %11243}1244 1245define <vscale x 4 x i1> @fcmps_one_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1246; CHECK-LABEL: fcmps_one_vv_nxv4f16:1247; CHECK: # %bb.0:1248; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1249; CHECK-NEXT: vmflt.vv v10, v8, v91250; CHECK-NEXT: vmflt.vv v8, v9, v81251; CHECK-NEXT: vmor.mm v0, v8, v101252; CHECK-NEXT: ret1253 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp1254 ret <vscale x 4 x i1> %11255}1256 1257define <vscale x 4 x i1> @fcmps_one_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1258; CHECK-LABEL: fcmps_one_vf_nxv4f16:1259; CHECK: # %bb.0:1260; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1261; CHECK-NEXT: vmflt.vf v9, v8, fa01262; CHECK-NEXT: vmfgt.vf v8, v8, fa01263; CHECK-NEXT: vmor.mm v0, v8, v91264; CHECK-NEXT: ret1265 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01266 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1267 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp1268 ret <vscale x 4 x i1> %11269}1270 1271define <vscale x 4 x i1> @fcmps_one_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1272; CHECK-LABEL: fcmps_one_fv_nxv4f16:1273; CHECK: # %bb.0:1274; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1275; CHECK-NEXT: vmfgt.vf v9, v8, fa01276; CHECK-NEXT: vmflt.vf v8, v8, fa01277; CHECK-NEXT: vmor.mm v0, v8, v91278; CHECK-NEXT: ret1279 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01280 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1281 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp1282 ret <vscale x 4 x i1> %11283}1284 1285define <vscale x 4 x i1> @fcmps_ord_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1286; CHECK-LABEL: fcmps_ord_vv_nxv4f16:1287; CHECK: # %bb.0:1288; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1289; CHECK-NEXT: vmfle.vv v9, v9, v91290; CHECK-NEXT: vmfle.vv v8, v8, v81291; CHECK-NEXT: vmand.mm v0, v8, v91292; CHECK-NEXT: ret1293 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp1294 ret <vscale x 4 x i1> %11295}1296 1297define <vscale x 4 x i1> @fcmps_ord_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1298; CHECK-LABEL: fcmps_ord_vf_nxv4f16:1299; CHECK: # %bb.0:1300; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1301; CHECK-NEXT: vfmv.v.f v9, fa01302; CHECK-NEXT: vmfle.vf v9, v9, fa01303; CHECK-NEXT: vmfle.vv v8, v8, v81304; CHECK-NEXT: vmand.mm v0, v8, v91305; CHECK-NEXT: ret1306 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01307 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1308 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp1309 ret <vscale x 4 x i1> %11310}1311 1312define <vscale x 4 x i1> @fcmps_ord_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1313; CHECK-LABEL: fcmps_ord_fv_nxv4f16:1314; CHECK: # %bb.0:1315; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1316; CHECK-NEXT: vfmv.v.f v9, fa01317; CHECK-NEXT: vmfle.vf v9, v9, fa01318; CHECK-NEXT: vmfle.vv v8, v8, v81319; CHECK-NEXT: vmand.mm v0, v9, v81320; CHECK-NEXT: ret1321 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01322 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1323 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp1324 ret <vscale x 4 x i1> %11325}1326 1327define <vscale x 4 x i1> @fcmps_ueq_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1328; CHECK-LABEL: fcmps_ueq_vv_nxv4f16:1329; CHECK: # %bb.0:1330; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1331; CHECK-NEXT: vmflt.vv v10, v8, v91332; CHECK-NEXT: vmflt.vv v8, v9, v81333; CHECK-NEXT: vmnor.mm v0, v8, v101334; CHECK-NEXT: ret1335 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp1336 ret <vscale x 4 x i1> %11337}1338 1339define <vscale x 4 x i1> @fcmps_ueq_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1340; CHECK-LABEL: fcmps_ueq_vf_nxv4f16:1341; CHECK: # %bb.0:1342; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1343; CHECK-NEXT: vmflt.vf v9, v8, fa01344; CHECK-NEXT: vmfgt.vf v8, v8, fa01345; CHECK-NEXT: vmnor.mm v0, v8, v91346; CHECK-NEXT: ret1347 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01348 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1349 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp1350 ret <vscale x 4 x i1> %11351}1352 1353define <vscale x 4 x i1> @fcmps_ueq_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1354; CHECK-LABEL: fcmps_ueq_fv_nxv4f16:1355; CHECK: # %bb.0:1356; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1357; CHECK-NEXT: vmfgt.vf v9, v8, fa01358; CHECK-NEXT: vmflt.vf v8, v8, fa01359; CHECK-NEXT: vmnor.mm v0, v8, v91360; CHECK-NEXT: ret1361 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01362 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1363 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp1364 ret <vscale x 4 x i1> %11365}1366 1367define <vscale x 4 x i1> @fcmps_ugt_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1368; CHECK-LABEL: fcmps_ugt_vv_nxv4f16:1369; CHECK: # %bb.0:1370; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1371; CHECK-NEXT: vmfle.vv v8, v8, v91372; CHECK-NEXT: vmnot.m v0, v81373; CHECK-NEXT: ret1374 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp1375 ret <vscale x 4 x i1> %11376}1377 1378define <vscale x 4 x i1> @fcmps_ugt_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1379; CHECK-LABEL: fcmps_ugt_vf_nxv4f16:1380; CHECK: # %bb.0:1381; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1382; CHECK-NEXT: vmfle.vf v8, v8, fa01383; CHECK-NEXT: vmnot.m v0, v81384; CHECK-NEXT: ret1385 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01386 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1387 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp1388 ret <vscale x 4 x i1> %11389}1390 1391define <vscale x 4 x i1> @fcmps_ugt_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1392; CHECK-LABEL: fcmps_ugt_fv_nxv4f16:1393; CHECK: # %bb.0:1394; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1395; CHECK-NEXT: vmfge.vf v8, v8, fa01396; CHECK-NEXT: vmnot.m v0, v81397; CHECK-NEXT: ret1398 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01399 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1400 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp1401 ret <vscale x 4 x i1> %11402}1403 1404define <vscale x 4 x i1> @fcmps_uge_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1405; CHECK-LABEL: fcmps_uge_vv_nxv4f16:1406; CHECK: # %bb.0:1407; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1408; CHECK-NEXT: vmflt.vv v8, v8, v91409; CHECK-NEXT: vmnot.m v0, v81410; CHECK-NEXT: ret1411 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp1412 ret <vscale x 4 x i1> %11413}1414 1415define <vscale x 4 x i1> @fcmps_uge_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1416; CHECK-LABEL: fcmps_uge_vf_nxv4f16:1417; CHECK: # %bb.0:1418; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1419; CHECK-NEXT: vmflt.vf v8, v8, fa01420; CHECK-NEXT: vmnot.m v0, v81421; CHECK-NEXT: ret1422 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01423 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1424 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp1425 ret <vscale x 4 x i1> %11426}1427 1428define <vscale x 4 x i1> @fcmps_uge_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1429; CHECK-LABEL: fcmps_uge_fv_nxv4f16:1430; CHECK: # %bb.0:1431; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1432; CHECK-NEXT: vmfgt.vf v8, v8, fa01433; CHECK-NEXT: vmnot.m v0, v81434; CHECK-NEXT: ret1435 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01436 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1437 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp1438 ret <vscale x 4 x i1> %11439}1440 1441define <vscale x 4 x i1> @fcmps_ult_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1442; CHECK-LABEL: fcmps_ult_vv_nxv4f16:1443; CHECK: # %bb.0:1444; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1445; CHECK-NEXT: vmfle.vv v8, v9, v81446; CHECK-NEXT: vmnot.m v0, v81447; CHECK-NEXT: ret1448 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp1449 ret <vscale x 4 x i1> %11450}1451 1452define <vscale x 4 x i1> @fcmps_ult_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1453; CHECK-LABEL: fcmps_ult_vf_nxv4f16:1454; CHECK: # %bb.0:1455; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1456; CHECK-NEXT: vmfge.vf v8, v8, fa01457; CHECK-NEXT: vmnot.m v0, v81458; CHECK-NEXT: ret1459 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01460 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1461 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp1462 ret <vscale x 4 x i1> %11463}1464 1465define <vscale x 4 x i1> @fcmps_ult_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1466; CHECK-LABEL: fcmps_ult_fv_nxv4f16:1467; CHECK: # %bb.0:1468; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1469; CHECK-NEXT: vmfle.vf v8, v8, fa01470; CHECK-NEXT: vmnot.m v0, v81471; CHECK-NEXT: ret1472 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01473 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1474 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp1475 ret <vscale x 4 x i1> %11476}1477 1478define <vscale x 4 x i1> @fcmps_ule_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1479; CHECK-LABEL: fcmps_ule_vv_nxv4f16:1480; CHECK: # %bb.0:1481; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1482; CHECK-NEXT: vmflt.vv v8, v9, v81483; CHECK-NEXT: vmnot.m v0, v81484; CHECK-NEXT: ret1485 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp1486 ret <vscale x 4 x i1> %11487}1488 1489define <vscale x 4 x i1> @fcmps_ule_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1490; CHECK-LABEL: fcmps_ule_vf_nxv4f16:1491; CHECK: # %bb.0:1492; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1493; CHECK-NEXT: vmfgt.vf v8, v8, fa01494; CHECK-NEXT: vmnot.m v0, v81495; CHECK-NEXT: ret1496 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01497 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1498 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp1499 ret <vscale x 4 x i1> %11500}1501 1502define <vscale x 4 x i1> @fcmps_ule_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1503; CHECK-LABEL: fcmps_ule_fv_nxv4f16:1504; CHECK: # %bb.0:1505; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1506; CHECK-NEXT: vmflt.vf v8, v8, fa01507; CHECK-NEXT: vmnot.m v0, v81508; CHECK-NEXT: ret1509 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01510 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1511 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp1512 ret <vscale x 4 x i1> %11513}1514 1515define <vscale x 4 x i1> @fcmps_une_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1516; CHECK-LABEL: fcmps_une_vv_nxv4f16:1517; CHECK: # %bb.0:1518; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1519; CHECK-NEXT: vmfle.vv v10, v9, v81520; CHECK-NEXT: vmfle.vv v8, v8, v91521; CHECK-NEXT: vmnand.mm v0, v8, v101522; CHECK-NEXT: ret1523 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp1524 ret <vscale x 4 x i1> %11525}1526 1527define <vscale x 4 x i1> @fcmps_une_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1528; CHECK-LABEL: fcmps_une_vf_nxv4f16:1529; CHECK: # %bb.0:1530; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1531; CHECK-NEXT: vmfge.vf v9, v8, fa01532; CHECK-NEXT: vmfle.vf v8, v8, fa01533; CHECK-NEXT: vmnand.mm v0, v8, v91534; CHECK-NEXT: ret1535 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01536 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1537 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp1538 ret <vscale x 4 x i1> %11539}1540 1541define <vscale x 4 x i1> @fcmps_une_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1542; CHECK-LABEL: fcmps_une_fv_nxv4f16:1543; CHECK: # %bb.0:1544; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1545; CHECK-NEXT: vmfle.vf v9, v8, fa01546; CHECK-NEXT: vmfge.vf v8, v8, fa01547; CHECK-NEXT: vmnand.mm v0, v8, v91548; CHECK-NEXT: ret1549 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01550 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1551 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp1552 ret <vscale x 4 x i1> %11553}1554 1555define <vscale x 4 x i1> @fcmps_uno_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {1556; CHECK-LABEL: fcmps_uno_vv_nxv4f16:1557; CHECK: # %bb.0:1558; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1559; CHECK-NEXT: vmfle.vv v9, v9, v91560; CHECK-NEXT: vmfle.vv v8, v8, v81561; CHECK-NEXT: vmnot.m v8, v81562; CHECK-NEXT: vmorn.mm v0, v8, v91563; CHECK-NEXT: ret1564 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp1565 ret <vscale x 4 x i1> %11566}1567 1568define <vscale x 4 x i1> @fcmps_uno_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1569; CHECK-LABEL: fcmps_uno_vf_nxv4f16:1570; CHECK: # %bb.0:1571; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1572; CHECK-NEXT: vfmv.v.f v9, fa01573; CHECK-NEXT: vmfle.vv v8, v8, v81574; CHECK-NEXT: vmfle.vf v9, v9, fa01575; CHECK-NEXT: vmnot.m v8, v81576; CHECK-NEXT: vmorn.mm v0, v8, v91577; CHECK-NEXT: ret1578 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01579 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1580 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp1581 ret <vscale x 4 x i1> %11582}1583 1584define <vscale x 4 x i1> @fcmps_uno_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {1585; CHECK-LABEL: fcmps_uno_fv_nxv4f16:1586; CHECK: # %bb.0:1587; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma1588; CHECK-NEXT: vfmv.v.f v9, fa01589; CHECK-NEXT: vmfle.vf v9, v9, fa01590; CHECK-NEXT: vmnot.m v9, v91591; CHECK-NEXT: vmfle.vv v8, v8, v81592; CHECK-NEXT: vmorn.mm v0, v9, v81593; CHECK-NEXT: ret1594 %head = insertelement <vscale x 4 x half> poison, half %b, i32 01595 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer1596 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp1597 ret <vscale x 4 x i1> %11598}1599 1600define <vscale x 8 x i1> @fcmps_oeq_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {1601; CHECK-LABEL: fcmps_oeq_vv_nxv8f16:1602; CHECK: # %bb.0:1603; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1604; CHECK-NEXT: vmfle.vv v12, v10, v81605; CHECK-NEXT: vmfle.vv v13, v8, v101606; CHECK-NEXT: vmand.mm v0, v13, v121607; CHECK-NEXT: ret1608 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp1609 ret <vscale x 8 x i1> %11610}1611 1612define <vscale x 8 x i1> @fcmps_oeq_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1613; CHECK-LABEL: fcmps_oeq_vf_nxv8f16:1614; CHECK: # %bb.0:1615; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1616; CHECK-NEXT: vmfge.vf v10, v8, fa01617; CHECK-NEXT: vmfle.vf v11, v8, fa01618; CHECK-NEXT: vmand.mm v0, v11, v101619; CHECK-NEXT: ret1620 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01621 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1622 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp1623 ret <vscale x 8 x i1> %11624}1625 1626define <vscale x 8 x i1> @fcmps_oeq_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1627; CHECK-LABEL: fcmps_oeq_fv_nxv8f16:1628; CHECK: # %bb.0:1629; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1630; CHECK-NEXT: vmfle.vf v10, v8, fa01631; CHECK-NEXT: vmfge.vf v11, v8, fa01632; CHECK-NEXT: vmand.mm v0, v11, v101633; CHECK-NEXT: ret1634 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01635 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1636 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp1637 ret <vscale x 8 x i1> %11638}1639 1640define <vscale x 8 x i1> @fcmps_ogt_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {1641; CHECK-LABEL: fcmps_ogt_vv_nxv8f16:1642; CHECK: # %bb.0:1643; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1644; CHECK-NEXT: vmflt.vv v0, v10, v81645; CHECK-NEXT: ret1646 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp1647 ret <vscale x 8 x i1> %11648}1649 1650define <vscale x 8 x i1> @fcmps_ogt_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1651; CHECK-LABEL: fcmps_ogt_vf_nxv8f16:1652; CHECK: # %bb.0:1653; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1654; CHECK-NEXT: vmfgt.vf v0, v8, fa01655; CHECK-NEXT: ret1656 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01657 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1658 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp1659 ret <vscale x 8 x i1> %11660}1661 1662define <vscale x 8 x i1> @fcmps_ogt_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1663; CHECK-LABEL: fcmps_ogt_fv_nxv8f16:1664; CHECK: # %bb.0:1665; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1666; CHECK-NEXT: vmflt.vf v0, v8, fa01667; CHECK-NEXT: ret1668 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01669 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1670 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp1671 ret <vscale x 8 x i1> %11672}1673 1674define <vscale x 8 x i1> @fcmps_oge_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {1675; CHECK-LABEL: fcmps_oge_vv_nxv8f16:1676; CHECK: # %bb.0:1677; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1678; CHECK-NEXT: vmfle.vv v0, v10, v81679; CHECK-NEXT: ret1680 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp1681 ret <vscale x 8 x i1> %11682}1683 1684define <vscale x 8 x i1> @fcmps_oge_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1685; CHECK-LABEL: fcmps_oge_vf_nxv8f16:1686; CHECK: # %bb.0:1687; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1688; CHECK-NEXT: vmfge.vf v0, v8, fa01689; CHECK-NEXT: ret1690 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01691 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1692 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp1693 ret <vscale x 8 x i1> %11694}1695 1696define <vscale x 8 x i1> @fcmps_oge_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1697; CHECK-LABEL: fcmps_oge_fv_nxv8f16:1698; CHECK: # %bb.0:1699; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1700; CHECK-NEXT: vmfle.vf v0, v8, fa01701; CHECK-NEXT: ret1702 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01703 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1704 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp1705 ret <vscale x 8 x i1> %11706}1707 1708define <vscale x 8 x i1> @fcmps_olt_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {1709; CHECK-LABEL: fcmps_olt_vv_nxv8f16:1710; CHECK: # %bb.0:1711; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1712; CHECK-NEXT: vmflt.vv v0, v8, v101713; CHECK-NEXT: ret1714 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp1715 ret <vscale x 8 x i1> %11716}1717 1718define <vscale x 8 x i1> @fcmps_olt_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1719; CHECK-LABEL: fcmps_olt_vf_nxv8f16:1720; CHECK: # %bb.0:1721; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1722; CHECK-NEXT: vmflt.vf v0, v8, fa01723; CHECK-NEXT: ret1724 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01725 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1726 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp1727 ret <vscale x 8 x i1> %11728}1729 1730define <vscale x 8 x i1> @fcmps_olt_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1731; CHECK-LABEL: fcmps_olt_fv_nxv8f16:1732; CHECK: # %bb.0:1733; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1734; CHECK-NEXT: vmfgt.vf v0, v8, fa01735; CHECK-NEXT: ret1736 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01737 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1738 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp1739 ret <vscale x 8 x i1> %11740}1741 1742define <vscale x 8 x i1> @fcmps_ole_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {1743; CHECK-LABEL: fcmps_ole_vv_nxv8f16:1744; CHECK: # %bb.0:1745; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1746; CHECK-NEXT: vmfle.vv v0, v8, v101747; CHECK-NEXT: ret1748 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp1749 ret <vscale x 8 x i1> %11750}1751 1752define <vscale x 8 x i1> @fcmps_ole_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1753; CHECK-LABEL: fcmps_ole_vf_nxv8f16:1754; CHECK: # %bb.0:1755; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1756; CHECK-NEXT: vmfle.vf v0, v8, fa01757; CHECK-NEXT: ret1758 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01759 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1760 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp1761 ret <vscale x 8 x i1> %11762}1763 1764define <vscale x 8 x i1> @fcmps_ole_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1765; CHECK-LABEL: fcmps_ole_fv_nxv8f16:1766; CHECK: # %bb.0:1767; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1768; CHECK-NEXT: vmfge.vf v0, v8, fa01769; CHECK-NEXT: ret1770 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01771 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1772 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp1773 ret <vscale x 8 x i1> %11774}1775 1776define <vscale x 8 x i1> @fcmps_one_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {1777; CHECK-LABEL: fcmps_one_vv_nxv8f16:1778; CHECK: # %bb.0:1779; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1780; CHECK-NEXT: vmflt.vv v12, v8, v101781; CHECK-NEXT: vmflt.vv v13, v10, v81782; CHECK-NEXT: vmor.mm v0, v13, v121783; CHECK-NEXT: ret1784 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp1785 ret <vscale x 8 x i1> %11786}1787 1788define <vscale x 8 x i1> @fcmps_one_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1789; CHECK-LABEL: fcmps_one_vf_nxv8f16:1790; CHECK: # %bb.0:1791; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1792; CHECK-NEXT: vmflt.vf v10, v8, fa01793; CHECK-NEXT: vmfgt.vf v11, v8, fa01794; CHECK-NEXT: vmor.mm v0, v11, v101795; CHECK-NEXT: ret1796 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01797 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1798 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp1799 ret <vscale x 8 x i1> %11800}1801 1802define <vscale x 8 x i1> @fcmps_one_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1803; CHECK-LABEL: fcmps_one_fv_nxv8f16:1804; CHECK: # %bb.0:1805; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1806; CHECK-NEXT: vmfgt.vf v10, v8, fa01807; CHECK-NEXT: vmflt.vf v11, v8, fa01808; CHECK-NEXT: vmor.mm v0, v11, v101809; CHECK-NEXT: ret1810 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01811 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1812 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp1813 ret <vscale x 8 x i1> %11814}1815 1816define <vscale x 8 x i1> @fcmps_ord_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {1817; CHECK-LABEL: fcmps_ord_vv_nxv8f16:1818; CHECK: # %bb.0:1819; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1820; CHECK-NEXT: vmfle.vv v12, v10, v101821; CHECK-NEXT: vmfle.vv v10, v8, v81822; CHECK-NEXT: vmand.mm v0, v10, v121823; CHECK-NEXT: ret1824 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp1825 ret <vscale x 8 x i1> %11826}1827 1828define <vscale x 8 x i1> @fcmps_ord_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1829; CHECK-LABEL: fcmps_ord_vf_nxv8f16:1830; CHECK: # %bb.0:1831; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1832; CHECK-NEXT: vfmv.v.f v10, fa01833; CHECK-NEXT: vmfle.vf v12, v10, fa01834; CHECK-NEXT: vmfle.vv v10, v8, v81835; CHECK-NEXT: vmand.mm v0, v10, v121836; CHECK-NEXT: ret1837 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01838 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1839 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp1840 ret <vscale x 8 x i1> %11841}1842 1843define <vscale x 8 x i1> @fcmps_ord_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1844; CHECK-LABEL: fcmps_ord_fv_nxv8f16:1845; CHECK: # %bb.0:1846; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1847; CHECK-NEXT: vfmv.v.f v10, fa01848; CHECK-NEXT: vmfle.vf v12, v10, fa01849; CHECK-NEXT: vmfle.vv v10, v8, v81850; CHECK-NEXT: vmand.mm v0, v12, v101851; CHECK-NEXT: ret1852 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01853 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1854 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp1855 ret <vscale x 8 x i1> %11856}1857 1858define <vscale x 8 x i1> @fcmps_ueq_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {1859; CHECK-LABEL: fcmps_ueq_vv_nxv8f16:1860; CHECK: # %bb.0:1861; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1862; CHECK-NEXT: vmflt.vv v12, v8, v101863; CHECK-NEXT: vmflt.vv v13, v10, v81864; CHECK-NEXT: vmnor.mm v0, v13, v121865; CHECK-NEXT: ret1866 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp1867 ret <vscale x 8 x i1> %11868}1869 1870define <vscale x 8 x i1> @fcmps_ueq_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1871; CHECK-LABEL: fcmps_ueq_vf_nxv8f16:1872; CHECK: # %bb.0:1873; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1874; CHECK-NEXT: vmflt.vf v10, v8, fa01875; CHECK-NEXT: vmfgt.vf v11, v8, fa01876; CHECK-NEXT: vmnor.mm v0, v11, v101877; CHECK-NEXT: ret1878 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01879 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1880 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp1881 ret <vscale x 8 x i1> %11882}1883 1884define <vscale x 8 x i1> @fcmps_ueq_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1885; CHECK-LABEL: fcmps_ueq_fv_nxv8f16:1886; CHECK: # %bb.0:1887; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1888; CHECK-NEXT: vmfgt.vf v10, v8, fa01889; CHECK-NEXT: vmflt.vf v11, v8, fa01890; CHECK-NEXT: vmnor.mm v0, v11, v101891; CHECK-NEXT: ret1892 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01893 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1894 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp1895 ret <vscale x 8 x i1> %11896}1897 1898define <vscale x 8 x i1> @fcmps_ugt_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {1899; CHECK-LABEL: fcmps_ugt_vv_nxv8f16:1900; CHECK: # %bb.0:1901; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1902; CHECK-NEXT: vmfle.vv v12, v8, v101903; CHECK-NEXT: vmnot.m v0, v121904; CHECK-NEXT: ret1905 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp1906 ret <vscale x 8 x i1> %11907}1908 1909define <vscale x 8 x i1> @fcmps_ugt_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1910; CHECK-LABEL: fcmps_ugt_vf_nxv8f16:1911; CHECK: # %bb.0:1912; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1913; CHECK-NEXT: vmfle.vf v10, v8, fa01914; CHECK-NEXT: vmnot.m v0, v101915; CHECK-NEXT: ret1916 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01917 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1918 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp1919 ret <vscale x 8 x i1> %11920}1921 1922define <vscale x 8 x i1> @fcmps_ugt_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1923; CHECK-LABEL: fcmps_ugt_fv_nxv8f16:1924; CHECK: # %bb.0:1925; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1926; CHECK-NEXT: vmfge.vf v10, v8, fa01927; CHECK-NEXT: vmnot.m v0, v101928; CHECK-NEXT: ret1929 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01930 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1931 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp1932 ret <vscale x 8 x i1> %11933}1934 1935define <vscale x 8 x i1> @fcmps_uge_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {1936; CHECK-LABEL: fcmps_uge_vv_nxv8f16:1937; CHECK: # %bb.0:1938; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1939; CHECK-NEXT: vmflt.vv v12, v8, v101940; CHECK-NEXT: vmnot.m v0, v121941; CHECK-NEXT: ret1942 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp1943 ret <vscale x 8 x i1> %11944}1945 1946define <vscale x 8 x i1> @fcmps_uge_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1947; CHECK-LABEL: fcmps_uge_vf_nxv8f16:1948; CHECK: # %bb.0:1949; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1950; CHECK-NEXT: vmflt.vf v10, v8, fa01951; CHECK-NEXT: vmnot.m v0, v101952; CHECK-NEXT: ret1953 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01954 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1955 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp1956 ret <vscale x 8 x i1> %11957}1958 1959define <vscale x 8 x i1> @fcmps_uge_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1960; CHECK-LABEL: fcmps_uge_fv_nxv8f16:1961; CHECK: # %bb.0:1962; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1963; CHECK-NEXT: vmfgt.vf v10, v8, fa01964; CHECK-NEXT: vmnot.m v0, v101965; CHECK-NEXT: ret1966 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01967 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1968 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp1969 ret <vscale x 8 x i1> %11970}1971 1972define <vscale x 8 x i1> @fcmps_ult_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {1973; CHECK-LABEL: fcmps_ult_vv_nxv8f16:1974; CHECK: # %bb.0:1975; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1976; CHECK-NEXT: vmfle.vv v12, v10, v81977; CHECK-NEXT: vmnot.m v0, v121978; CHECK-NEXT: ret1979 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp1980 ret <vscale x 8 x i1> %11981}1982 1983define <vscale x 8 x i1> @fcmps_ult_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1984; CHECK-LABEL: fcmps_ult_vf_nxv8f16:1985; CHECK: # %bb.0:1986; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1987; CHECK-NEXT: vmfge.vf v10, v8, fa01988; CHECK-NEXT: vmnot.m v0, v101989; CHECK-NEXT: ret1990 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01991 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1992 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp1993 ret <vscale x 8 x i1> %11994}1995 1996define <vscale x 8 x i1> @fcmps_ult_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {1997; CHECK-LABEL: fcmps_ult_fv_nxv8f16:1998; CHECK: # %bb.0:1999; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma2000; CHECK-NEXT: vmfle.vf v10, v8, fa02001; CHECK-NEXT: vmnot.m v0, v102002; CHECK-NEXT: ret2003 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02004 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2005 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp2006 ret <vscale x 8 x i1> %12007}2008 2009define <vscale x 8 x i1> @fcmps_ule_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {2010; CHECK-LABEL: fcmps_ule_vv_nxv8f16:2011; CHECK: # %bb.0:2012; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma2013; CHECK-NEXT: vmflt.vv v12, v10, v82014; CHECK-NEXT: vmnot.m v0, v122015; CHECK-NEXT: ret2016 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp2017 ret <vscale x 8 x i1> %12018}2019 2020define <vscale x 8 x i1> @fcmps_ule_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2021; CHECK-LABEL: fcmps_ule_vf_nxv8f16:2022; CHECK: # %bb.0:2023; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma2024; CHECK-NEXT: vmfgt.vf v10, v8, fa02025; CHECK-NEXT: vmnot.m v0, v102026; CHECK-NEXT: ret2027 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02028 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2029 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp2030 ret <vscale x 8 x i1> %12031}2032 2033define <vscale x 8 x i1> @fcmps_ule_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2034; CHECK-LABEL: fcmps_ule_fv_nxv8f16:2035; CHECK: # %bb.0:2036; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma2037; CHECK-NEXT: vmflt.vf v10, v8, fa02038; CHECK-NEXT: vmnot.m v0, v102039; CHECK-NEXT: ret2040 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02041 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2042 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp2043 ret <vscale x 8 x i1> %12044}2045 2046define <vscale x 8 x i1> @fcmps_une_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {2047; CHECK-LABEL: fcmps_une_vv_nxv8f16:2048; CHECK: # %bb.0:2049; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma2050; CHECK-NEXT: vmfle.vv v12, v10, v82051; CHECK-NEXT: vmfle.vv v13, v8, v102052; CHECK-NEXT: vmnand.mm v0, v13, v122053; CHECK-NEXT: ret2054 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp2055 ret <vscale x 8 x i1> %12056}2057 2058define <vscale x 8 x i1> @fcmps_une_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2059; CHECK-LABEL: fcmps_une_vf_nxv8f16:2060; CHECK: # %bb.0:2061; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma2062; CHECK-NEXT: vmfge.vf v10, v8, fa02063; CHECK-NEXT: vmfle.vf v11, v8, fa02064; CHECK-NEXT: vmnand.mm v0, v11, 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.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp2069 ret <vscale x 8 x i1> %12070}2071 2072define <vscale x 8 x i1> @fcmps_une_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2073; CHECK-LABEL: fcmps_une_fv_nxv8f16:2074; CHECK: # %bb.0:2075; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma2076; CHECK-NEXT: vmfle.vf v10, v8, fa02077; CHECK-NEXT: vmfge.vf v11, v8, fa02078; CHECK-NEXT: vmnand.mm v0, v11, v102079; CHECK-NEXT: ret2080 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02081 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2082 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp2083 ret <vscale x 8 x i1> %12084}2085 2086define <vscale x 8 x i1> @fcmps_uno_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {2087; CHECK-LABEL: fcmps_uno_vv_nxv8f16:2088; CHECK: # %bb.0:2089; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma2090; CHECK-NEXT: vmfle.vv v12, v10, v102091; CHECK-NEXT: vmfle.vv v10, v8, v82092; CHECK-NEXT: vmnot.m v8, v102093; CHECK-NEXT: vmorn.mm v0, v8, v122094; CHECK-NEXT: ret2095 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp2096 ret <vscale x 8 x i1> %12097}2098 2099define <vscale x 8 x i1> @fcmps_uno_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2100; CHECK-LABEL: fcmps_uno_vf_nxv8f16:2101; CHECK: # %bb.0:2102; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma2103; CHECK-NEXT: vfmv.v.f v10, fa02104; CHECK-NEXT: vmfle.vv v12, v8, v82105; CHECK-NEXT: vmfle.vf v8, v10, fa02106; CHECK-NEXT: vmnot.m v9, v122107; CHECK-NEXT: vmorn.mm v0, v9, v82108; CHECK-NEXT: ret2109 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02110 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2111 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp2112 ret <vscale x 8 x i1> %12113}2114 2115define <vscale x 8 x i1> @fcmps_uno_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {2116; CHECK-LABEL: fcmps_uno_fv_nxv8f16:2117; CHECK: # %bb.0:2118; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma2119; CHECK-NEXT: vfmv.v.f v10, fa02120; CHECK-NEXT: vmfle.vf v12, v10, fa02121; CHECK-NEXT: vmnot.m v10, v122122; CHECK-NEXT: vmfle.vv v11, v8, v82123; CHECK-NEXT: vmorn.mm v0, v10, v112124; CHECK-NEXT: ret2125 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02126 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2127 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp2128 ret <vscale x 8 x i1> %12129}2130 2131define <vscale x 16 x i1> @fcmps_oeq_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2132; CHECK-LABEL: fcmps_oeq_vv_nxv16f16:2133; CHECK: # %bb.0:2134; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2135; CHECK-NEXT: vmfle.vv v16, v12, v82136; CHECK-NEXT: vmfle.vv v17, v8, v122137; CHECK-NEXT: vmand.mm v0, v17, v162138; CHECK-NEXT: ret2139 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp2140 ret <vscale x 16 x i1> %12141}2142 2143define <vscale x 16 x i1> @fcmps_oeq_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2144; CHECK-LABEL: fcmps_oeq_vf_nxv16f16:2145; CHECK: # %bb.0:2146; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2147; CHECK-NEXT: vmfge.vf v12, v8, fa02148; CHECK-NEXT: vmfle.vf v13, v8, fa02149; CHECK-NEXT: vmand.mm v0, v13, v122150; CHECK-NEXT: ret2151 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02152 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2153 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp2154 ret <vscale x 16 x i1> %12155}2156 2157define <vscale x 16 x i1> @fcmps_oeq_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2158; CHECK-LABEL: fcmps_oeq_fv_nxv16f16:2159; CHECK: # %bb.0:2160; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2161; CHECK-NEXT: vmfle.vf v12, v8, fa02162; CHECK-NEXT: vmfge.vf v13, v8, fa02163; CHECK-NEXT: vmand.mm v0, v13, v122164; CHECK-NEXT: ret2165 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02166 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2167 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp2168 ret <vscale x 16 x i1> %12169}2170 2171define <vscale x 16 x i1> @fcmps_ogt_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2172; CHECK-LABEL: fcmps_ogt_vv_nxv16f16:2173; CHECK: # %bb.0:2174; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2175; CHECK-NEXT: vmflt.vv v0, v12, v82176; CHECK-NEXT: ret2177 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp2178 ret <vscale x 16 x i1> %12179}2180 2181define <vscale x 16 x i1> @fcmps_ogt_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2182; CHECK-LABEL: fcmps_ogt_vf_nxv16f16:2183; CHECK: # %bb.0:2184; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2185; CHECK-NEXT: vmfgt.vf v0, v8, fa02186; CHECK-NEXT: ret2187 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02188 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2189 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp2190 ret <vscale x 16 x i1> %12191}2192 2193define <vscale x 16 x i1> @fcmps_ogt_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2194; CHECK-LABEL: fcmps_ogt_fv_nxv16f16:2195; CHECK: # %bb.0:2196; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2197; CHECK-NEXT: vmflt.vf v0, v8, fa02198; CHECK-NEXT: ret2199 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02200 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2201 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp2202 ret <vscale x 16 x i1> %12203}2204 2205define <vscale x 16 x i1> @fcmps_oge_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2206; CHECK-LABEL: fcmps_oge_vv_nxv16f16:2207; CHECK: # %bb.0:2208; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2209; CHECK-NEXT: vmfle.vv v0, v12, v82210; CHECK-NEXT: ret2211 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp2212 ret <vscale x 16 x i1> %12213}2214 2215define <vscale x 16 x i1> @fcmps_oge_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2216; CHECK-LABEL: fcmps_oge_vf_nxv16f16:2217; CHECK: # %bb.0:2218; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2219; CHECK-NEXT: vmfge.vf v0, v8, fa02220; CHECK-NEXT: ret2221 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02222 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2223 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp2224 ret <vscale x 16 x i1> %12225}2226 2227define <vscale x 16 x i1> @fcmps_oge_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2228; CHECK-LABEL: fcmps_oge_fv_nxv16f16:2229; CHECK: # %bb.0:2230; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2231; CHECK-NEXT: vmfle.vf v0, v8, fa02232; CHECK-NEXT: ret2233 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02234 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2235 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp2236 ret <vscale x 16 x i1> %12237}2238 2239define <vscale x 16 x i1> @fcmps_olt_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2240; CHECK-LABEL: fcmps_olt_vv_nxv16f16:2241; CHECK: # %bb.0:2242; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2243; CHECK-NEXT: vmflt.vv v0, v8, v122244; CHECK-NEXT: ret2245 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp2246 ret <vscale x 16 x i1> %12247}2248 2249define <vscale x 16 x i1> @fcmps_olt_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2250; CHECK-LABEL: fcmps_olt_vf_nxv16f16:2251; CHECK: # %bb.0:2252; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2253; CHECK-NEXT: vmflt.vf v0, v8, fa02254; CHECK-NEXT: ret2255 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02256 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2257 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp2258 ret <vscale x 16 x i1> %12259}2260 2261define <vscale x 16 x i1> @fcmps_olt_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2262; CHECK-LABEL: fcmps_olt_fv_nxv16f16:2263; CHECK: # %bb.0:2264; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2265; CHECK-NEXT: vmfgt.vf v0, v8, fa02266; CHECK-NEXT: ret2267 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02268 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2269 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp2270 ret <vscale x 16 x i1> %12271}2272 2273define <vscale x 16 x i1> @fcmps_ole_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2274; CHECK-LABEL: fcmps_ole_vv_nxv16f16:2275; CHECK: # %bb.0:2276; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2277; CHECK-NEXT: vmfle.vv v0, v8, v122278; CHECK-NEXT: ret2279 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp2280 ret <vscale x 16 x i1> %12281}2282 2283define <vscale x 16 x i1> @fcmps_ole_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2284; CHECK-LABEL: fcmps_ole_vf_nxv16f16:2285; CHECK: # %bb.0:2286; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2287; CHECK-NEXT: vmfle.vf v0, v8, fa02288; CHECK-NEXT: ret2289 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02290 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2291 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp2292 ret <vscale x 16 x i1> %12293}2294 2295define <vscale x 16 x i1> @fcmps_ole_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2296; CHECK-LABEL: fcmps_ole_fv_nxv16f16:2297; CHECK: # %bb.0:2298; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2299; CHECK-NEXT: vmfge.vf v0, v8, fa02300; CHECK-NEXT: ret2301 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02302 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2303 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp2304 ret <vscale x 16 x i1> %12305}2306 2307define <vscale x 16 x i1> @fcmps_one_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2308; CHECK-LABEL: fcmps_one_vv_nxv16f16:2309; CHECK: # %bb.0:2310; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2311; CHECK-NEXT: vmflt.vv v16, v8, v122312; CHECK-NEXT: vmflt.vv v17, v12, v82313; CHECK-NEXT: vmor.mm v0, v17, v162314; CHECK-NEXT: ret2315 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp2316 ret <vscale x 16 x i1> %12317}2318 2319define <vscale x 16 x i1> @fcmps_one_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2320; CHECK-LABEL: fcmps_one_vf_nxv16f16:2321; CHECK: # %bb.0:2322; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2323; CHECK-NEXT: vmflt.vf v12, v8, fa02324; CHECK-NEXT: vmfgt.vf v13, v8, fa02325; CHECK-NEXT: vmor.mm v0, v13, v122326; CHECK-NEXT: ret2327 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02328 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2329 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp2330 ret <vscale x 16 x i1> %12331}2332 2333define <vscale x 16 x i1> @fcmps_one_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2334; CHECK-LABEL: fcmps_one_fv_nxv16f16:2335; CHECK: # %bb.0:2336; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2337; CHECK-NEXT: vmfgt.vf v12, v8, fa02338; CHECK-NEXT: vmflt.vf v13, v8, fa02339; CHECK-NEXT: vmor.mm v0, v13, v122340; CHECK-NEXT: ret2341 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02342 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2343 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp2344 ret <vscale x 16 x i1> %12345}2346 2347define <vscale x 16 x i1> @fcmps_ord_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2348; CHECK-LABEL: fcmps_ord_vv_nxv16f16:2349; CHECK: # %bb.0:2350; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2351; CHECK-NEXT: vmfle.vv v16, v12, v122352; CHECK-NEXT: vmfle.vv v12, v8, v82353; CHECK-NEXT: vmand.mm v0, v12, v162354; CHECK-NEXT: ret2355 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp2356 ret <vscale x 16 x i1> %12357}2358 2359define <vscale x 16 x i1> @fcmps_ord_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2360; CHECK-LABEL: fcmps_ord_vf_nxv16f16:2361; CHECK: # %bb.0:2362; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2363; CHECK-NEXT: vfmv.v.f v12, fa02364; CHECK-NEXT: vmfle.vf v16, v12, fa02365; CHECK-NEXT: vmfle.vv v12, v8, v82366; CHECK-NEXT: vmand.mm v0, v12, v162367; CHECK-NEXT: ret2368 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02369 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2370 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp2371 ret <vscale x 16 x i1> %12372}2373 2374define <vscale x 16 x i1> @fcmps_ord_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2375; CHECK-LABEL: fcmps_ord_fv_nxv16f16:2376; CHECK: # %bb.0:2377; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2378; CHECK-NEXT: vfmv.v.f v12, fa02379; CHECK-NEXT: vmfle.vf v16, v12, fa02380; CHECK-NEXT: vmfle.vv v12, v8, v82381; CHECK-NEXT: vmand.mm v0, v16, v122382; CHECK-NEXT: ret2383 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02384 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2385 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp2386 ret <vscale x 16 x i1> %12387}2388 2389define <vscale x 16 x i1> @fcmps_ueq_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2390; CHECK-LABEL: fcmps_ueq_vv_nxv16f16:2391; CHECK: # %bb.0:2392; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2393; CHECK-NEXT: vmflt.vv v16, v8, v122394; CHECK-NEXT: vmflt.vv v17, v12, v82395; CHECK-NEXT: vmnor.mm v0, v17, v162396; CHECK-NEXT: ret2397 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp2398 ret <vscale x 16 x i1> %12399}2400 2401define <vscale x 16 x i1> @fcmps_ueq_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2402; CHECK-LABEL: fcmps_ueq_vf_nxv16f16:2403; CHECK: # %bb.0:2404; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2405; CHECK-NEXT: vmflt.vf v12, v8, fa02406; CHECK-NEXT: vmfgt.vf v13, v8, fa02407; CHECK-NEXT: vmnor.mm v0, v13, v122408; CHECK-NEXT: ret2409 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02410 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2411 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp2412 ret <vscale x 16 x i1> %12413}2414 2415define <vscale x 16 x i1> @fcmps_ueq_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2416; CHECK-LABEL: fcmps_ueq_fv_nxv16f16:2417; CHECK: # %bb.0:2418; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2419; CHECK-NEXT: vmfgt.vf v12, v8, fa02420; CHECK-NEXT: vmflt.vf v13, v8, fa02421; CHECK-NEXT: vmnor.mm v0, v13, v122422; CHECK-NEXT: ret2423 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02424 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2425 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp2426 ret <vscale x 16 x i1> %12427}2428 2429define <vscale x 16 x i1> @fcmps_ugt_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2430; CHECK-LABEL: fcmps_ugt_vv_nxv16f16:2431; CHECK: # %bb.0:2432; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2433; CHECK-NEXT: vmfle.vv v16, v8, v122434; CHECK-NEXT: vmnot.m v0, v162435; CHECK-NEXT: ret2436 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp2437 ret <vscale x 16 x i1> %12438}2439 2440define <vscale x 16 x i1> @fcmps_ugt_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2441; CHECK-LABEL: fcmps_ugt_vf_nxv16f16:2442; CHECK: # %bb.0:2443; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2444; CHECK-NEXT: vmfle.vf v12, v8, fa02445; CHECK-NEXT: vmnot.m v0, v122446; CHECK-NEXT: ret2447 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02448 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2449 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp2450 ret <vscale x 16 x i1> %12451}2452 2453define <vscale x 16 x i1> @fcmps_ugt_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2454; CHECK-LABEL: fcmps_ugt_fv_nxv16f16:2455; CHECK: # %bb.0:2456; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2457; CHECK-NEXT: vmfge.vf v12, v8, fa02458; CHECK-NEXT: vmnot.m v0, v122459; CHECK-NEXT: ret2460 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02461 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2462 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp2463 ret <vscale x 16 x i1> %12464}2465 2466define <vscale x 16 x i1> @fcmps_uge_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2467; CHECK-LABEL: fcmps_uge_vv_nxv16f16:2468; CHECK: # %bb.0:2469; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2470; CHECK-NEXT: vmflt.vv v16, v8, v122471; CHECK-NEXT: vmnot.m v0, v162472; CHECK-NEXT: ret2473 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp2474 ret <vscale x 16 x i1> %12475}2476 2477define <vscale x 16 x i1> @fcmps_uge_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2478; CHECK-LABEL: fcmps_uge_vf_nxv16f16:2479; CHECK: # %bb.0:2480; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2481; CHECK-NEXT: vmflt.vf v12, v8, fa02482; CHECK-NEXT: vmnot.m v0, v122483; CHECK-NEXT: ret2484 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02485 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2486 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp2487 ret <vscale x 16 x i1> %12488}2489 2490define <vscale x 16 x i1> @fcmps_uge_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2491; CHECK-LABEL: fcmps_uge_fv_nxv16f16:2492; CHECK: # %bb.0:2493; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2494; CHECK-NEXT: vmfgt.vf v12, v8, fa02495; CHECK-NEXT: vmnot.m v0, v122496; CHECK-NEXT: ret2497 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02498 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2499 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp2500 ret <vscale x 16 x i1> %12501}2502 2503define <vscale x 16 x i1> @fcmps_ult_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2504; CHECK-LABEL: fcmps_ult_vv_nxv16f16:2505; CHECK: # %bb.0:2506; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2507; CHECK-NEXT: vmfle.vv v16, v12, v82508; CHECK-NEXT: vmnot.m v0, v162509; CHECK-NEXT: ret2510 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp2511 ret <vscale x 16 x i1> %12512}2513 2514define <vscale x 16 x i1> @fcmps_ult_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2515; CHECK-LABEL: fcmps_ult_vf_nxv16f16:2516; CHECK: # %bb.0:2517; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2518; CHECK-NEXT: vmfge.vf v12, v8, fa02519; CHECK-NEXT: vmnot.m v0, v122520; CHECK-NEXT: ret2521 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02522 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2523 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp2524 ret <vscale x 16 x i1> %12525}2526 2527define <vscale x 16 x i1> @fcmps_ult_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2528; CHECK-LABEL: fcmps_ult_fv_nxv16f16:2529; CHECK: # %bb.0:2530; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2531; CHECK-NEXT: vmfle.vf v12, v8, fa02532; CHECK-NEXT: vmnot.m v0, v122533; CHECK-NEXT: ret2534 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02535 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2536 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp2537 ret <vscale x 16 x i1> %12538}2539 2540define <vscale x 16 x i1> @fcmps_ule_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2541; CHECK-LABEL: fcmps_ule_vv_nxv16f16:2542; CHECK: # %bb.0:2543; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2544; CHECK-NEXT: vmflt.vv v16, v12, v82545; CHECK-NEXT: vmnot.m v0, v162546; CHECK-NEXT: ret2547 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp2548 ret <vscale x 16 x i1> %12549}2550 2551define <vscale x 16 x i1> @fcmps_ule_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2552; CHECK-LABEL: fcmps_ule_vf_nxv16f16:2553; CHECK: # %bb.0:2554; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2555; CHECK-NEXT: vmfgt.vf v12, v8, fa02556; CHECK-NEXT: vmnot.m v0, v122557; CHECK-NEXT: ret2558 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02559 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2560 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp2561 ret <vscale x 16 x i1> %12562}2563 2564define <vscale x 16 x i1> @fcmps_ule_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2565; CHECK-LABEL: fcmps_ule_fv_nxv16f16:2566; CHECK: # %bb.0:2567; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2568; CHECK-NEXT: vmflt.vf v12, v8, fa02569; CHECK-NEXT: vmnot.m v0, v122570; CHECK-NEXT: ret2571 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02572 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2573 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp2574 ret <vscale x 16 x i1> %12575}2576 2577define <vscale x 16 x i1> @fcmps_une_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2578; CHECK-LABEL: fcmps_une_vv_nxv16f16:2579; CHECK: # %bb.0:2580; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2581; CHECK-NEXT: vmfle.vv v16, v12, v82582; CHECK-NEXT: vmfle.vv v17, v8, v122583; CHECK-NEXT: vmnand.mm v0, v17, v162584; CHECK-NEXT: ret2585 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp2586 ret <vscale x 16 x i1> %12587}2588 2589define <vscale x 16 x i1> @fcmps_une_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2590; CHECK-LABEL: fcmps_une_vf_nxv16f16:2591; CHECK: # %bb.0:2592; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2593; CHECK-NEXT: vmfge.vf v12, v8, fa02594; CHECK-NEXT: vmfle.vf v13, v8, fa02595; CHECK-NEXT: vmnand.mm v0, v13, v122596; CHECK-NEXT: ret2597 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02598 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2599 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp2600 ret <vscale x 16 x i1> %12601}2602 2603define <vscale x 16 x i1> @fcmps_une_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2604; CHECK-LABEL: fcmps_une_fv_nxv16f16:2605; CHECK: # %bb.0:2606; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2607; CHECK-NEXT: vmfle.vf v12, v8, fa02608; CHECK-NEXT: vmfge.vf v13, v8, fa02609; CHECK-NEXT: vmnand.mm v0, v13, v122610; CHECK-NEXT: ret2611 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02612 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2613 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp2614 ret <vscale x 16 x i1> %12615}2616 2617define <vscale x 16 x i1> @fcmps_uno_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {2618; CHECK-LABEL: fcmps_uno_vv_nxv16f16:2619; CHECK: # %bb.0:2620; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2621; CHECK-NEXT: vmfle.vv v16, v12, v122622; CHECK-NEXT: vmfle.vv v12, v8, v82623; CHECK-NEXT: vmnot.m v8, v122624; CHECK-NEXT: vmorn.mm v0, v8, v162625; CHECK-NEXT: ret2626 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp2627 ret <vscale x 16 x i1> %12628}2629 2630define <vscale x 16 x i1> @fcmps_uno_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2631; CHECK-LABEL: fcmps_uno_vf_nxv16f16:2632; CHECK: # %bb.0:2633; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2634; CHECK-NEXT: vfmv.v.f v12, fa02635; CHECK-NEXT: vmfle.vv v16, v8, v82636; CHECK-NEXT: vmfle.vf v8, v12, fa02637; CHECK-NEXT: vmnot.m v9, v162638; CHECK-NEXT: vmorn.mm v0, v9, v82639; CHECK-NEXT: ret2640 %head = insertelement <vscale x 16 x half> poison, half %b, i32 02641 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer2642 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp2643 ret <vscale x 16 x i1> %12644}2645 2646define <vscale x 16 x i1> @fcmps_uno_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {2647; CHECK-LABEL: fcmps_uno_fv_nxv16f16:2648; CHECK: # %bb.0:2649; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma2650; CHECK-NEXT: vfmv.v.f v12, fa02651; CHECK-NEXT: vmfle.vf v16, v12, fa02652; CHECK-NEXT: vmnot.m v12, v162653; CHECK-NEXT: vmfle.vv v13, v8, v82654; CHECK-NEXT: vmorn.mm v0, v12, v132655; 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.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp2659 ret <vscale x 16 x i1> %12660}2661 2662define <vscale x 32 x i1> @fcmps_oeq_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {2663; CHECK-LABEL: fcmps_oeq_vv_nxv32f16:2664; CHECK: # %bb.0:2665; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2666; CHECK-NEXT: vmfle.vv v24, v16, v82667; CHECK-NEXT: vmfle.vv v25, v8, v162668; CHECK-NEXT: vmand.mm v0, v25, v242669; CHECK-NEXT: ret2670 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp2671 ret <vscale x 32 x i1> %12672}2673 2674define <vscale x 32 x i1> @fcmps_oeq_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {2675; CHECK-LABEL: fcmps_oeq_vf_nxv32f16:2676; CHECK: # %bb.0:2677; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2678; CHECK-NEXT: vmfge.vf v16, v8, fa02679; CHECK-NEXT: vmfle.vf v17, v8, fa02680; CHECK-NEXT: vmand.mm v0, v17, v162681; CHECK-NEXT: ret2682 %head = insertelement <vscale x 32 x half> poison, half %b, i32 02683 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer2684 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp2685 ret <vscale x 32 x i1> %12686}2687 2688define <vscale x 32 x i1> @fcmps_oeq_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {2689; CHECK-LABEL: fcmps_oeq_fv_nxv32f16:2690; CHECK: # %bb.0:2691; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2692; CHECK-NEXT: vmfle.vf v16, v8, fa02693; CHECK-NEXT: vmfge.vf v17, v8, fa02694; CHECK-NEXT: vmand.mm v0, v17, v162695; CHECK-NEXT: ret2696 %head = insertelement <vscale x 32 x half> poison, half %b, i32 02697 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer2698 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp2699 ret <vscale x 32 x i1> %12700}2701 2702define <vscale x 32 x i1> @fcmps_ogt_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {2703; CHECK-LABEL: fcmps_ogt_vv_nxv32f16:2704; CHECK: # %bb.0:2705; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2706; CHECK-NEXT: vmflt.vv v0, v16, v82707; CHECK-NEXT: ret2708 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp2709 ret <vscale x 32 x i1> %12710}2711 2712define <vscale x 32 x i1> @fcmps_ogt_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {2713; CHECK-LABEL: fcmps_ogt_vf_nxv32f16:2714; CHECK: # %bb.0:2715; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2716; CHECK-NEXT: vmfgt.vf v0, v8, fa02717; CHECK-NEXT: ret2718 %head = insertelement <vscale x 32 x half> poison, half %b, i32 02719 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer2720 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp2721 ret <vscale x 32 x i1> %12722}2723 2724define <vscale x 32 x i1> @fcmps_ogt_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {2725; CHECK-LABEL: fcmps_ogt_fv_nxv32f16:2726; CHECK: # %bb.0:2727; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2728; CHECK-NEXT: vmflt.vf v0, v8, fa02729; CHECK-NEXT: ret2730 %head = insertelement <vscale x 32 x half> poison, half %b, i32 02731 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer2732 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp2733 ret <vscale x 32 x i1> %12734}2735 2736define <vscale x 32 x i1> @fcmps_oge_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {2737; CHECK-LABEL: fcmps_oge_vv_nxv32f16:2738; CHECK: # %bb.0:2739; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2740; CHECK-NEXT: vmfle.vv v0, v16, v82741; CHECK-NEXT: ret2742 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp2743 ret <vscale x 32 x i1> %12744}2745 2746define <vscale x 32 x i1> @fcmps_oge_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {2747; CHECK-LABEL: fcmps_oge_vf_nxv32f16:2748; CHECK: # %bb.0:2749; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2750; CHECK-NEXT: vmfge.vf v0, v8, fa02751; CHECK-NEXT: ret2752 %head = insertelement <vscale x 32 x half> poison, half %b, i32 02753 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer2754 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp2755 ret <vscale x 32 x i1> %12756}2757 2758define <vscale x 32 x i1> @fcmps_oge_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {2759; CHECK-LABEL: fcmps_oge_fv_nxv32f16:2760; CHECK: # %bb.0:2761; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2762; CHECK-NEXT: vmfle.vf v0, v8, fa02763; CHECK-NEXT: ret2764 %head = insertelement <vscale x 32 x half> poison, half %b, i32 02765 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer2766 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp2767 ret <vscale x 32 x i1> %12768}2769 2770define <vscale x 32 x i1> @fcmps_olt_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {2771; CHECK-LABEL: fcmps_olt_vv_nxv32f16:2772; CHECK: # %bb.0:2773; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2774; CHECK-NEXT: vmflt.vv v0, v8, v162775; CHECK-NEXT: ret2776 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp2777 ret <vscale x 32 x i1> %12778}2779 2780define <vscale x 32 x i1> @fcmps_olt_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {2781; CHECK-LABEL: fcmps_olt_vf_nxv32f16:2782; CHECK: # %bb.0:2783; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2784; CHECK-NEXT: vmflt.vf v0, v8, fa02785; CHECK-NEXT: ret2786 %head = insertelement <vscale x 32 x half> poison, half %b, i32 02787 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer2788 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp2789 ret <vscale x 32 x i1> %12790}2791 2792define <vscale x 32 x i1> @fcmps_olt_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {2793; CHECK-LABEL: fcmps_olt_fv_nxv32f16:2794; CHECK: # %bb.0:2795; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2796; CHECK-NEXT: vmfgt.vf v0, v8, fa02797; CHECK-NEXT: ret2798 %head = insertelement <vscale x 32 x half> poison, half %b, i32 02799 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer2800 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp2801 ret <vscale x 32 x i1> %12802}2803 2804define <vscale x 32 x i1> @fcmps_ole_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {2805; CHECK-LABEL: fcmps_ole_vv_nxv32f16:2806; CHECK: # %bb.0:2807; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2808; CHECK-NEXT: vmfle.vv v0, v8, v162809; CHECK-NEXT: ret2810 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp2811 ret <vscale x 32 x i1> %12812}2813 2814define <vscale x 32 x i1> @fcmps_ole_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {2815; CHECK-LABEL: fcmps_ole_vf_nxv32f16:2816; CHECK: # %bb.0:2817; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2818; CHECK-NEXT: vmfle.vf v0, v8, fa02819; CHECK-NEXT: ret2820 %head = insertelement <vscale x 32 x half> poison, half %b, i32 02821 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer2822 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp2823 ret <vscale x 32 x i1> %12824}2825 2826define <vscale x 32 x i1> @fcmps_ole_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {2827; CHECK-LABEL: fcmps_ole_fv_nxv32f16:2828; CHECK: # %bb.0:2829; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2830; CHECK-NEXT: vmfge.vf v0, v8, fa02831; CHECK-NEXT: ret2832 %head = insertelement <vscale x 32 x half> poison, half %b, i32 02833 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer2834 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp2835 ret <vscale x 32 x i1> %12836}2837 2838define <vscale x 32 x i1> @fcmps_one_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {2839; CHECK-LABEL: fcmps_one_vv_nxv32f16:2840; CHECK: # %bb.0:2841; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2842; CHECK-NEXT: vmflt.vv v24, v8, v162843; CHECK-NEXT: vmflt.vv v25, v16, v82844; CHECK-NEXT: vmor.mm v0, v25, v242845; CHECK-NEXT: ret2846 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp2847 ret <vscale x 32 x i1> %12848}2849 2850define <vscale x 32 x i1> @fcmps_one_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {2851; CHECK-LABEL: fcmps_one_vf_nxv32f16:2852; CHECK: # %bb.0:2853; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2854; CHECK-NEXT: vmflt.vf v16, v8, fa02855; CHECK-NEXT: vmfgt.vf v17, v8, fa02856; CHECK-NEXT: vmor.mm v0, v17, v162857; CHECK-NEXT: ret2858 %head = insertelement <vscale x 32 x half> poison, half %b, i32 02859 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer2860 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp2861 ret <vscale x 32 x i1> %12862}2863 2864define <vscale x 32 x i1> @fcmps_one_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {2865; CHECK-LABEL: fcmps_one_fv_nxv32f16:2866; CHECK: # %bb.0:2867; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2868; CHECK-NEXT: vmfgt.vf v16, v8, fa02869; CHECK-NEXT: vmflt.vf v17, v8, fa02870; CHECK-NEXT: vmor.mm v0, v17, v162871; CHECK-NEXT: ret2872 %head = insertelement <vscale x 32 x half> poison, half %b, i32 02873 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer2874 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp2875 ret <vscale x 32 x i1> %12876}2877 2878define <vscale x 32 x i1> @fcmps_ord_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {2879; CHECK-LABEL: fcmps_ord_vv_nxv32f16:2880; CHECK: # %bb.0:2881; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2882; CHECK-NEXT: vmfle.vv v24, v16, v162883; CHECK-NEXT: vmfle.vv v16, v8, v82884; CHECK-NEXT: vmand.mm v0, v16, v242885; CHECK-NEXT: ret2886 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp2887 ret <vscale x 32 x i1> %12888}2889 2890define <vscale x 32 x i1> @fcmps_ord_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {2891; CHECK-LABEL: fcmps_ord_vf_nxv32f16:2892; CHECK: # %bb.0:2893; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2894; CHECK-NEXT: vfmv.v.f v16, fa02895; CHECK-NEXT: vmfle.vf v24, v16, fa02896; CHECK-NEXT: vmfle.vv v16, v8, v82897; CHECK-NEXT: vmand.mm v0, v16, v242898; CHECK-NEXT: ret2899 %head = insertelement <vscale x 32 x half> poison, half %b, i32 02900 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer2901 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp2902 ret <vscale x 32 x i1> %12903}2904 2905define <vscale x 32 x i1> @fcmps_ord_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {2906; CHECK-LABEL: fcmps_ord_fv_nxv32f16:2907; CHECK: # %bb.0:2908; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2909; CHECK-NEXT: vfmv.v.f v16, fa02910; CHECK-NEXT: vmfle.vf v24, v16, fa02911; CHECK-NEXT: vmfle.vv v16, v8, v82912; CHECK-NEXT: vmand.mm v0, v24, v162913; CHECK-NEXT: ret2914 %head = insertelement <vscale x 32 x half> poison, half %b, i32 02915 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer2916 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp2917 ret <vscale x 32 x i1> %12918}2919 2920define <vscale x 32 x i1> @fcmps_ueq_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {2921; CHECK-LABEL: fcmps_ueq_vv_nxv32f16:2922; CHECK: # %bb.0:2923; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2924; CHECK-NEXT: vmflt.vv v24, v8, v162925; CHECK-NEXT: vmflt.vv v25, v16, v82926; CHECK-NEXT: vmnor.mm v0, v25, v242927; CHECK-NEXT: ret2928 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp2929 ret <vscale x 32 x i1> %12930}2931 2932define <vscale x 32 x i1> @fcmps_ueq_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {2933; CHECK-LABEL: fcmps_ueq_vf_nxv32f16:2934; CHECK: # %bb.0:2935; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2936; CHECK-NEXT: vmflt.vf v16, v8, fa02937; CHECK-NEXT: vmfgt.vf v17, v8, fa02938; CHECK-NEXT: vmnor.mm v0, v17, v162939; CHECK-NEXT: ret2940 %head = insertelement <vscale x 32 x half> poison, half %b, i32 02941 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer2942 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp2943 ret <vscale x 32 x i1> %12944}2945 2946define <vscale x 32 x i1> @fcmps_ueq_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {2947; CHECK-LABEL: fcmps_ueq_fv_nxv32f16:2948; CHECK: # %bb.0:2949; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2950; CHECK-NEXT: vmfgt.vf v16, v8, fa02951; CHECK-NEXT: vmflt.vf v17, v8, fa02952; CHECK-NEXT: vmnor.mm v0, v17, v162953; CHECK-NEXT: ret2954 %head = insertelement <vscale x 32 x half> poison, half %b, i32 02955 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer2956 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp2957 ret <vscale x 32 x i1> %12958}2959 2960define <vscale x 32 x i1> @fcmps_ugt_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {2961; CHECK-LABEL: fcmps_ugt_vv_nxv32f16:2962; CHECK: # %bb.0:2963; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2964; CHECK-NEXT: vmfle.vv v24, v8, v162965; CHECK-NEXT: vmnot.m v0, v242966; CHECK-NEXT: ret2967 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp2968 ret <vscale x 32 x i1> %12969}2970 2971define <vscale x 32 x i1> @fcmps_ugt_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {2972; CHECK-LABEL: fcmps_ugt_vf_nxv32f16:2973; CHECK: # %bb.0:2974; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2975; CHECK-NEXT: vmfle.vf v16, v8, fa02976; CHECK-NEXT: vmnot.m v0, v162977; CHECK-NEXT: ret2978 %head = insertelement <vscale x 32 x half> poison, half %b, i32 02979 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer2980 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp2981 ret <vscale x 32 x i1> %12982}2983 2984define <vscale x 32 x i1> @fcmps_ugt_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {2985; CHECK-LABEL: fcmps_ugt_fv_nxv32f16:2986; CHECK: # %bb.0:2987; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma2988; CHECK-NEXT: vmfge.vf v16, v8, fa02989; CHECK-NEXT: vmnot.m v0, v162990; CHECK-NEXT: ret2991 %head = insertelement <vscale x 32 x half> poison, half %b, i32 02992 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer2993 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp2994 ret <vscale x 32 x i1> %12995}2996 2997define <vscale x 32 x i1> @fcmps_uge_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {2998; CHECK-LABEL: fcmps_uge_vv_nxv32f16:2999; CHECK: # %bb.0:3000; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3001; CHECK-NEXT: vmflt.vv v24, v8, v163002; CHECK-NEXT: vmnot.m v0, v243003; CHECK-NEXT: ret3004 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp3005 ret <vscale x 32 x i1> %13006}3007 3008define <vscale x 32 x i1> @fcmps_uge_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3009; CHECK-LABEL: fcmps_uge_vf_nxv32f16:3010; CHECK: # %bb.0:3011; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3012; CHECK-NEXT: vmflt.vf v16, v8, fa03013; CHECK-NEXT: vmnot.m v0, v163014; CHECK-NEXT: ret3015 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03016 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3017 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp3018 ret <vscale x 32 x i1> %13019}3020 3021define <vscale x 32 x i1> @fcmps_uge_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3022; CHECK-LABEL: fcmps_uge_fv_nxv32f16:3023; CHECK: # %bb.0:3024; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3025; CHECK-NEXT: vmfgt.vf v16, v8, fa03026; CHECK-NEXT: vmnot.m v0, v163027; CHECK-NEXT: ret3028 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03029 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3030 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp3031 ret <vscale x 32 x i1> %13032}3033 3034define <vscale x 32 x i1> @fcmps_ult_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {3035; CHECK-LABEL: fcmps_ult_vv_nxv32f16:3036; CHECK: # %bb.0:3037; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3038; CHECK-NEXT: vmfle.vv v24, v16, v83039; CHECK-NEXT: vmnot.m v0, v243040; CHECK-NEXT: ret3041 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp3042 ret <vscale x 32 x i1> %13043}3044 3045define <vscale x 32 x i1> @fcmps_ult_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3046; CHECK-LABEL: fcmps_ult_vf_nxv32f16:3047; CHECK: # %bb.0:3048; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3049; CHECK-NEXT: vmfge.vf v16, v8, fa03050; CHECK-NEXT: vmnot.m v0, v163051; CHECK-NEXT: ret3052 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03053 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3054 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp3055 ret <vscale x 32 x i1> %13056}3057 3058define <vscale x 32 x i1> @fcmps_ult_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3059; CHECK-LABEL: fcmps_ult_fv_nxv32f16:3060; CHECK: # %bb.0:3061; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3062; CHECK-NEXT: vmfle.vf v16, v8, fa03063; CHECK-NEXT: vmnot.m v0, v163064; CHECK-NEXT: ret3065 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03066 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3067 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp3068 ret <vscale x 32 x i1> %13069}3070 3071define <vscale x 32 x i1> @fcmps_ule_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {3072; CHECK-LABEL: fcmps_ule_vv_nxv32f16:3073; CHECK: # %bb.0:3074; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3075; CHECK-NEXT: vmflt.vv v24, v16, v83076; CHECK-NEXT: vmnot.m v0, v243077; CHECK-NEXT: ret3078 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp3079 ret <vscale x 32 x i1> %13080}3081 3082define <vscale x 32 x i1> @fcmps_ule_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3083; CHECK-LABEL: fcmps_ule_vf_nxv32f16:3084; CHECK: # %bb.0:3085; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3086; CHECK-NEXT: vmfgt.vf v16, v8, fa03087; CHECK-NEXT: vmnot.m v0, v163088; CHECK-NEXT: ret3089 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03090 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3091 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp3092 ret <vscale x 32 x i1> %13093}3094 3095define <vscale x 32 x i1> @fcmps_ule_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3096; CHECK-LABEL: fcmps_ule_fv_nxv32f16:3097; CHECK: # %bb.0:3098; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3099; CHECK-NEXT: vmflt.vf v16, v8, fa03100; CHECK-NEXT: vmnot.m v0, v163101; CHECK-NEXT: ret3102 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03103 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3104 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp3105 ret <vscale x 32 x i1> %13106}3107 3108define <vscale x 32 x i1> @fcmps_une_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {3109; CHECK-LABEL: fcmps_une_vv_nxv32f16:3110; CHECK: # %bb.0:3111; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3112; CHECK-NEXT: vmfle.vv v24, v16, v83113; CHECK-NEXT: vmfle.vv v25, v8, v163114; CHECK-NEXT: vmnand.mm v0, v25, v243115; CHECK-NEXT: ret3116 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp3117 ret <vscale x 32 x i1> %13118}3119 3120define <vscale x 32 x i1> @fcmps_une_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3121; CHECK-LABEL: fcmps_une_vf_nxv32f16:3122; CHECK: # %bb.0:3123; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3124; CHECK-NEXT: vmfge.vf v16, v8, fa03125; CHECK-NEXT: vmfle.vf v17, v8, fa03126; CHECK-NEXT: vmnand.mm v0, v17, v163127; CHECK-NEXT: ret3128 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03129 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3130 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp3131 ret <vscale x 32 x i1> %13132}3133 3134define <vscale x 32 x i1> @fcmps_une_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3135; CHECK-LABEL: fcmps_une_fv_nxv32f16:3136; CHECK: # %bb.0:3137; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3138; CHECK-NEXT: vmfle.vf v16, v8, fa03139; CHECK-NEXT: vmfge.vf v17, v8, fa03140; CHECK-NEXT: vmnand.mm v0, v17, v163141; CHECK-NEXT: ret3142 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03143 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3144 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp3145 ret <vscale x 32 x i1> %13146}3147 3148define <vscale x 32 x i1> @fcmps_uno_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {3149; CHECK-LABEL: fcmps_uno_vv_nxv32f16:3150; CHECK: # %bb.0:3151; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3152; CHECK-NEXT: vmfle.vv v24, v16, v163153; CHECK-NEXT: vmfle.vv v16, v8, v83154; CHECK-NEXT: vmnot.m v8, v163155; CHECK-NEXT: vmorn.mm v0, v8, v243156; CHECK-NEXT: ret3157 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp3158 ret <vscale x 32 x i1> %13159}3160 3161define <vscale x 32 x i1> @fcmps_uno_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3162; CHECK-LABEL: fcmps_uno_vf_nxv32f16:3163; CHECK: # %bb.0:3164; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3165; CHECK-NEXT: vfmv.v.f v16, fa03166; CHECK-NEXT: vmfle.vv v24, v8, v83167; CHECK-NEXT: vmfle.vf v8, v16, fa03168; CHECK-NEXT: vmnot.m v9, v243169; CHECK-NEXT: vmorn.mm v0, v9, v83170; CHECK-NEXT: ret3171 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03172 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3173 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp3174 ret <vscale x 32 x i1> %13175}3176 3177define <vscale x 32 x i1> @fcmps_uno_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {3178; CHECK-LABEL: fcmps_uno_fv_nxv32f16:3179; CHECK: # %bb.0:3180; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma3181; CHECK-NEXT: vfmv.v.f v16, fa03182; CHECK-NEXT: vmfle.vf v24, v16, fa03183; CHECK-NEXT: vmnot.m v16, v243184; CHECK-NEXT: vmfle.vv v17, v8, v83185; CHECK-NEXT: vmorn.mm v0, v16, v173186; CHECK-NEXT: ret3187 %head = insertelement <vscale x 32 x half> poison, half %b, i32 03188 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer3189 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp3190 ret <vscale x 32 x i1> %13191}3192 3193define <vscale x 1 x i1> @fcmps_oeq_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {3194; CHECK-LABEL: fcmps_oeq_vv_nxv1f32:3195; CHECK: # %bb.0:3196; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3197; CHECK-NEXT: vmfle.vv v10, v9, v83198; CHECK-NEXT: vmfle.vv v8, v8, v93199; CHECK-NEXT: vmand.mm v0, v8, v103200; CHECK-NEXT: ret3201 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp3202 ret <vscale x 1 x i1> %13203}3204 3205define <vscale x 1 x i1> @fcmps_oeq_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3206; CHECK-LABEL: fcmps_oeq_vf_nxv1f32:3207; CHECK: # %bb.0:3208; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3209; CHECK-NEXT: vmfge.vf v9, v8, fa03210; CHECK-NEXT: vmfle.vf v8, v8, fa03211; CHECK-NEXT: vmand.mm v0, v8, v93212; CHECK-NEXT: ret3213 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03214 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3215 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp3216 ret <vscale x 1 x i1> %13217}3218 3219define <vscale x 1 x i1> @fcmps_oeq_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3220; CHECK-LABEL: fcmps_oeq_fv_nxv1f32:3221; CHECK: # %bb.0:3222; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3223; CHECK-NEXT: vmfle.vf v9, v8, fa03224; CHECK-NEXT: vmfge.vf v8, v8, fa03225; CHECK-NEXT: vmand.mm v0, v8, v93226; CHECK-NEXT: ret3227 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03228 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3229 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp3230 ret <vscale x 1 x i1> %13231}3232 3233define <vscale x 1 x i1> @fcmps_ogt_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {3234; CHECK-LABEL: fcmps_ogt_vv_nxv1f32:3235; CHECK: # %bb.0:3236; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3237; CHECK-NEXT: vmflt.vv v0, v9, v83238; CHECK-NEXT: ret3239 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp3240 ret <vscale x 1 x i1> %13241}3242 3243define <vscale x 1 x i1> @fcmps_ogt_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3244; CHECK-LABEL: fcmps_ogt_vf_nxv1f32:3245; CHECK: # %bb.0:3246; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3247; CHECK-NEXT: vmfgt.vf v0, v8, fa03248; CHECK-NEXT: ret3249 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03250 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3251 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp3252 ret <vscale x 1 x i1> %13253}3254 3255define <vscale x 1 x i1> @fcmps_ogt_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3256; CHECK-LABEL: fcmps_ogt_fv_nxv1f32:3257; CHECK: # %bb.0:3258; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3259; CHECK-NEXT: vmflt.vf v0, v8, fa03260; CHECK-NEXT: ret3261 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03262 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3263 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp3264 ret <vscale x 1 x i1> %13265}3266 3267define <vscale x 1 x i1> @fcmps_oge_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {3268; CHECK-LABEL: fcmps_oge_vv_nxv1f32:3269; CHECK: # %bb.0:3270; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3271; CHECK-NEXT: vmfle.vv v0, v9, v83272; CHECK-NEXT: ret3273 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp3274 ret <vscale x 1 x i1> %13275}3276 3277define <vscale x 1 x i1> @fcmps_oge_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3278; CHECK-LABEL: fcmps_oge_vf_nxv1f32:3279; CHECK: # %bb.0:3280; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3281; CHECK-NEXT: vmfge.vf v0, v8, fa03282; CHECK-NEXT: ret3283 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03284 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3285 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp3286 ret <vscale x 1 x i1> %13287}3288 3289define <vscale x 1 x i1> @fcmps_oge_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3290; CHECK-LABEL: fcmps_oge_fv_nxv1f32:3291; CHECK: # %bb.0:3292; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3293; CHECK-NEXT: vmfle.vf v0, v8, fa03294; CHECK-NEXT: ret3295 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03296 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3297 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp3298 ret <vscale x 1 x i1> %13299}3300 3301define <vscale x 1 x i1> @fcmps_olt_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {3302; CHECK-LABEL: fcmps_olt_vv_nxv1f32:3303; CHECK: # %bb.0:3304; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3305; CHECK-NEXT: vmflt.vv v0, v8, v93306; CHECK-NEXT: ret3307 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp3308 ret <vscale x 1 x i1> %13309}3310 3311define <vscale x 1 x i1> @fcmps_olt_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3312; CHECK-LABEL: fcmps_olt_vf_nxv1f32:3313; CHECK: # %bb.0:3314; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3315; CHECK-NEXT: vmflt.vf v0, v8, fa03316; CHECK-NEXT: ret3317 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03318 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3319 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp3320 ret <vscale x 1 x i1> %13321}3322 3323define <vscale x 1 x i1> @fcmps_olt_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3324; CHECK-LABEL: fcmps_olt_fv_nxv1f32:3325; CHECK: # %bb.0:3326; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3327; CHECK-NEXT: vmfgt.vf v0, v8, fa03328; CHECK-NEXT: ret3329 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03330 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3331 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp3332 ret <vscale x 1 x i1> %13333}3334 3335define <vscale x 1 x i1> @fcmps_ole_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {3336; CHECK-LABEL: fcmps_ole_vv_nxv1f32:3337; CHECK: # %bb.0:3338; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3339; CHECK-NEXT: vmfle.vv v0, v8, v93340; CHECK-NEXT: ret3341 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp3342 ret <vscale x 1 x i1> %13343}3344 3345define <vscale x 1 x i1> @fcmps_ole_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3346; CHECK-LABEL: fcmps_ole_vf_nxv1f32:3347; CHECK: # %bb.0:3348; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3349; CHECK-NEXT: vmfle.vf v0, v8, fa03350; CHECK-NEXT: ret3351 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03352 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3353 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp3354 ret <vscale x 1 x i1> %13355}3356 3357define <vscale x 1 x i1> @fcmps_ole_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3358; CHECK-LABEL: fcmps_ole_fv_nxv1f32:3359; CHECK: # %bb.0:3360; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3361; CHECK-NEXT: vmfge.vf v0, v8, fa03362; CHECK-NEXT: ret3363 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03364 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3365 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp3366 ret <vscale x 1 x i1> %13367}3368 3369define <vscale x 1 x i1> @fcmps_one_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {3370; CHECK-LABEL: fcmps_one_vv_nxv1f32:3371; CHECK: # %bb.0:3372; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3373; CHECK-NEXT: vmflt.vv v10, v8, v93374; CHECK-NEXT: vmflt.vv v8, v9, v83375; CHECK-NEXT: vmor.mm v0, v8, v103376; CHECK-NEXT: ret3377 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp3378 ret <vscale x 1 x i1> %13379}3380 3381define <vscale x 1 x i1> @fcmps_one_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3382; CHECK-LABEL: fcmps_one_vf_nxv1f32:3383; CHECK: # %bb.0:3384; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3385; CHECK-NEXT: vmflt.vf v9, v8, fa03386; CHECK-NEXT: vmfgt.vf v8, v8, fa03387; CHECK-NEXT: vmor.mm v0, v8, v93388; CHECK-NEXT: ret3389 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03390 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3391 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp3392 ret <vscale x 1 x i1> %13393}3394 3395define <vscale x 1 x i1> @fcmps_one_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3396; CHECK-LABEL: fcmps_one_fv_nxv1f32:3397; CHECK: # %bb.0:3398; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3399; CHECK-NEXT: vmfgt.vf v9, v8, fa03400; CHECK-NEXT: vmflt.vf v8, v8, fa03401; CHECK-NEXT: vmor.mm v0, v8, v93402; CHECK-NEXT: ret3403 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03404 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3405 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp3406 ret <vscale x 1 x i1> %13407}3408 3409define <vscale x 1 x i1> @fcmps_ord_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {3410; CHECK-LABEL: fcmps_ord_vv_nxv1f32:3411; CHECK: # %bb.0:3412; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3413; CHECK-NEXT: vmfle.vv v9, v9, v93414; CHECK-NEXT: vmfle.vv v8, v8, v83415; CHECK-NEXT: vmand.mm v0, v8, v93416; CHECK-NEXT: ret3417 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp3418 ret <vscale x 1 x i1> %13419}3420 3421define <vscale x 1 x i1> @fcmps_ord_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3422; CHECK-LABEL: fcmps_ord_vf_nxv1f32:3423; CHECK: # %bb.0:3424; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3425; CHECK-NEXT: vfmv.v.f v9, fa03426; CHECK-NEXT: vmfle.vf v9, v9, fa03427; CHECK-NEXT: vmfle.vv v8, v8, v83428; CHECK-NEXT: vmand.mm v0, v8, v93429; CHECK-NEXT: ret3430 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03431 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3432 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp3433 ret <vscale x 1 x i1> %13434}3435 3436define <vscale x 1 x i1> @fcmps_ord_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3437; CHECK-LABEL: fcmps_ord_fv_nxv1f32:3438; CHECK: # %bb.0:3439; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3440; CHECK-NEXT: vfmv.v.f v9, fa03441; CHECK-NEXT: vmfle.vf v9, v9, fa03442; CHECK-NEXT: vmfle.vv v8, v8, v83443; CHECK-NEXT: vmand.mm v0, v9, v83444; CHECK-NEXT: ret3445 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03446 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3447 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp3448 ret <vscale x 1 x i1> %13449}3450 3451define <vscale x 1 x i1> @fcmps_ueq_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {3452; CHECK-LABEL: fcmps_ueq_vv_nxv1f32:3453; CHECK: # %bb.0:3454; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3455; CHECK-NEXT: vmflt.vv v10, v8, v93456; CHECK-NEXT: vmflt.vv v8, v9, v83457; CHECK-NEXT: vmnor.mm v0, v8, v103458; CHECK-NEXT: ret3459 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp3460 ret <vscale x 1 x i1> %13461}3462 3463define <vscale x 1 x i1> @fcmps_ueq_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3464; CHECK-LABEL: fcmps_ueq_vf_nxv1f32:3465; CHECK: # %bb.0:3466; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3467; CHECK-NEXT: vmflt.vf v9, v8, fa03468; CHECK-NEXT: vmfgt.vf v8, v8, fa03469; CHECK-NEXT: vmnor.mm v0, v8, v93470; CHECK-NEXT: ret3471 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03472 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3473 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp3474 ret <vscale x 1 x i1> %13475}3476 3477define <vscale x 1 x i1> @fcmps_ueq_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3478; CHECK-LABEL: fcmps_ueq_fv_nxv1f32:3479; CHECK: # %bb.0:3480; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3481; CHECK-NEXT: vmfgt.vf v9, v8, fa03482; CHECK-NEXT: vmflt.vf v8, v8, fa03483; CHECK-NEXT: vmnor.mm v0, v8, v93484; CHECK-NEXT: ret3485 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03486 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3487 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp3488 ret <vscale x 1 x i1> %13489}3490 3491define <vscale x 1 x i1> @fcmps_ugt_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {3492; CHECK-LABEL: fcmps_ugt_vv_nxv1f32:3493; CHECK: # %bb.0:3494; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3495; CHECK-NEXT: vmfle.vv v8, v8, v93496; CHECK-NEXT: vmnot.m v0, v83497; CHECK-NEXT: ret3498 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp3499 ret <vscale x 1 x i1> %13500}3501 3502define <vscale x 1 x i1> @fcmps_ugt_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3503; CHECK-LABEL: fcmps_ugt_vf_nxv1f32:3504; CHECK: # %bb.0:3505; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3506; CHECK-NEXT: vmfle.vf v8, v8, fa03507; CHECK-NEXT: vmnot.m v0, v83508; CHECK-NEXT: ret3509 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03510 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3511 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp3512 ret <vscale x 1 x i1> %13513}3514 3515define <vscale x 1 x i1> @fcmps_ugt_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3516; CHECK-LABEL: fcmps_ugt_fv_nxv1f32:3517; CHECK: # %bb.0:3518; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3519; CHECK-NEXT: vmfge.vf v8, v8, fa03520; CHECK-NEXT: vmnot.m v0, v83521; CHECK-NEXT: ret3522 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03523 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3524 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp3525 ret <vscale x 1 x i1> %13526}3527 3528define <vscale x 1 x i1> @fcmps_uge_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {3529; CHECK-LABEL: fcmps_uge_vv_nxv1f32:3530; CHECK: # %bb.0:3531; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3532; CHECK-NEXT: vmflt.vv v8, v8, v93533; CHECK-NEXT: vmnot.m v0, v83534; CHECK-NEXT: ret3535 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp3536 ret <vscale x 1 x i1> %13537}3538 3539define <vscale x 1 x i1> @fcmps_uge_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3540; CHECK-LABEL: fcmps_uge_vf_nxv1f32:3541; CHECK: # %bb.0:3542; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3543; CHECK-NEXT: vmflt.vf v8, v8, fa03544; CHECK-NEXT: vmnot.m v0, v83545; CHECK-NEXT: ret3546 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03547 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3548 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp3549 ret <vscale x 1 x i1> %13550}3551 3552define <vscale x 1 x i1> @fcmps_uge_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3553; CHECK-LABEL: fcmps_uge_fv_nxv1f32:3554; CHECK: # %bb.0:3555; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3556; CHECK-NEXT: vmfgt.vf v8, v8, fa03557; CHECK-NEXT: vmnot.m v0, v83558; CHECK-NEXT: ret3559 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03560 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3561 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp3562 ret <vscale x 1 x i1> %13563}3564 3565define <vscale x 1 x i1> @fcmps_ult_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {3566; CHECK-LABEL: fcmps_ult_vv_nxv1f32:3567; CHECK: # %bb.0:3568; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3569; CHECK-NEXT: vmfle.vv v8, v9, v83570; CHECK-NEXT: vmnot.m v0, v83571; CHECK-NEXT: ret3572 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp3573 ret <vscale x 1 x i1> %13574}3575 3576define <vscale x 1 x i1> @fcmps_ult_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3577; CHECK-LABEL: fcmps_ult_vf_nxv1f32:3578; CHECK: # %bb.0:3579; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3580; CHECK-NEXT: vmfge.vf v8, v8, fa03581; CHECK-NEXT: vmnot.m v0, v83582; CHECK-NEXT: ret3583 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03584 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3585 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp3586 ret <vscale x 1 x i1> %13587}3588 3589define <vscale x 1 x i1> @fcmps_ult_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3590; CHECK-LABEL: fcmps_ult_fv_nxv1f32:3591; CHECK: # %bb.0:3592; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3593; CHECK-NEXT: vmfle.vf v8, v8, fa03594; CHECK-NEXT: vmnot.m v0, v83595; CHECK-NEXT: ret3596 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03597 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3598 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp3599 ret <vscale x 1 x i1> %13600}3601 3602define <vscale x 1 x i1> @fcmps_ule_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {3603; CHECK-LABEL: fcmps_ule_vv_nxv1f32:3604; CHECK: # %bb.0:3605; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3606; CHECK-NEXT: vmflt.vv v8, v9, v83607; CHECK-NEXT: vmnot.m v0, v83608; CHECK-NEXT: ret3609 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp3610 ret <vscale x 1 x i1> %13611}3612 3613define <vscale x 1 x i1> @fcmps_ule_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3614; CHECK-LABEL: fcmps_ule_vf_nxv1f32:3615; CHECK: # %bb.0:3616; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3617; CHECK-NEXT: vmfgt.vf v8, v8, fa03618; CHECK-NEXT: vmnot.m v0, v83619; CHECK-NEXT: ret3620 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03621 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3622 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp3623 ret <vscale x 1 x i1> %13624}3625 3626define <vscale x 1 x i1> @fcmps_ule_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3627; CHECK-LABEL: fcmps_ule_fv_nxv1f32:3628; CHECK: # %bb.0:3629; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3630; CHECK-NEXT: vmflt.vf v8, v8, fa03631; CHECK-NEXT: vmnot.m v0, v83632; CHECK-NEXT: ret3633 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03634 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3635 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp3636 ret <vscale x 1 x i1> %13637}3638 3639define <vscale x 1 x i1> @fcmps_une_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {3640; CHECK-LABEL: fcmps_une_vv_nxv1f32:3641; CHECK: # %bb.0:3642; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3643; CHECK-NEXT: vmfle.vv v10, v9, v83644; CHECK-NEXT: vmfle.vv v8, v8, v93645; CHECK-NEXT: vmnand.mm v0, v8, v103646; CHECK-NEXT: ret3647 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp3648 ret <vscale x 1 x i1> %13649}3650 3651define <vscale x 1 x i1> @fcmps_une_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3652; CHECK-LABEL: fcmps_une_vf_nxv1f32:3653; CHECK: # %bb.0:3654; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3655; CHECK-NEXT: vmfge.vf v9, v8, fa03656; CHECK-NEXT: vmfle.vf v8, v8, fa03657; CHECK-NEXT: vmnand.mm v0, v8, v93658; CHECK-NEXT: ret3659 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03660 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3661 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp3662 ret <vscale x 1 x i1> %13663}3664 3665define <vscale x 1 x i1> @fcmps_une_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3666; CHECK-LABEL: fcmps_une_fv_nxv1f32:3667; CHECK: # %bb.0:3668; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3669; CHECK-NEXT: vmfle.vf v9, v8, fa03670; CHECK-NEXT: vmfge.vf v8, v8, fa03671; CHECK-NEXT: vmnand.mm v0, v8, v93672; CHECK-NEXT: ret3673 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03674 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3675 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp3676 ret <vscale x 1 x i1> %13677}3678 3679define <vscale x 1 x i1> @fcmps_uno_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {3680; CHECK-LABEL: fcmps_uno_vv_nxv1f32:3681; CHECK: # %bb.0:3682; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3683; CHECK-NEXT: vmfle.vv v9, v9, v93684; CHECK-NEXT: vmfle.vv v8, v8, v83685; CHECK-NEXT: vmnot.m v8, v83686; CHECK-NEXT: vmorn.mm v0, v8, v93687; CHECK-NEXT: ret3688 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp3689 ret <vscale x 1 x i1> %13690}3691 3692define <vscale x 1 x i1> @fcmps_uno_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3693; CHECK-LABEL: fcmps_uno_vf_nxv1f32:3694; CHECK: # %bb.0:3695; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3696; CHECK-NEXT: vfmv.v.f v9, fa03697; CHECK-NEXT: vmfle.vv v8, v8, v83698; CHECK-NEXT: vmfle.vf v9, v9, fa03699; CHECK-NEXT: vmnot.m v8, v83700; CHECK-NEXT: vmorn.mm v0, v8, v93701; CHECK-NEXT: ret3702 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03703 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3704 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp3705 ret <vscale x 1 x i1> %13706}3707 3708define <vscale x 1 x i1> @fcmps_uno_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {3709; CHECK-LABEL: fcmps_uno_fv_nxv1f32:3710; CHECK: # %bb.0:3711; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma3712; CHECK-NEXT: vfmv.v.f v9, fa03713; CHECK-NEXT: vmfle.vf v9, v9, fa03714; CHECK-NEXT: vmnot.m v9, v93715; CHECK-NEXT: vmfle.vv v8, v8, v83716; CHECK-NEXT: vmorn.mm v0, v9, v83717; CHECK-NEXT: ret3718 %head = insertelement <vscale x 1 x float> poison, float %b, i32 03719 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer3720 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp3721 ret <vscale x 1 x i1> %13722}3723 3724define <vscale x 2 x i1> @fcmps_oeq_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {3725; CHECK-LABEL: fcmps_oeq_vv_nxv2f32:3726; CHECK: # %bb.0:3727; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3728; CHECK-NEXT: vmfle.vv v10, v9, v83729; CHECK-NEXT: vmfle.vv v8, v8, v93730; CHECK-NEXT: vmand.mm v0, v8, v103731; CHECK-NEXT: ret3732 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp3733 ret <vscale x 2 x i1> %13734}3735 3736define <vscale x 2 x i1> @fcmps_oeq_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {3737; CHECK-LABEL: fcmps_oeq_vf_nxv2f32:3738; CHECK: # %bb.0:3739; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3740; CHECK-NEXT: vmfge.vf v9, v8, fa03741; CHECK-NEXT: vmfle.vf v8, v8, fa03742; CHECK-NEXT: vmand.mm v0, v8, v93743; CHECK-NEXT: ret3744 %head = insertelement <vscale x 2 x float> poison, float %b, i32 03745 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer3746 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp3747 ret <vscale x 2 x i1> %13748}3749 3750define <vscale x 2 x i1> @fcmps_oeq_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {3751; CHECK-LABEL: fcmps_oeq_fv_nxv2f32:3752; CHECK: # %bb.0:3753; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3754; CHECK-NEXT: vmfle.vf v9, v8, fa03755; CHECK-NEXT: vmfge.vf v8, v8, fa03756; CHECK-NEXT: vmand.mm v0, v8, v93757; CHECK-NEXT: ret3758 %head = insertelement <vscale x 2 x float> poison, float %b, i32 03759 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer3760 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp3761 ret <vscale x 2 x i1> %13762}3763 3764define <vscale x 2 x i1> @fcmps_ogt_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {3765; CHECK-LABEL: fcmps_ogt_vv_nxv2f32:3766; CHECK: # %bb.0:3767; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3768; CHECK-NEXT: vmflt.vv v0, v9, v83769; CHECK-NEXT: ret3770 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp3771 ret <vscale x 2 x i1> %13772}3773 3774define <vscale x 2 x i1> @fcmps_ogt_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {3775; CHECK-LABEL: fcmps_ogt_vf_nxv2f32:3776; CHECK: # %bb.0:3777; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3778; CHECK-NEXT: vmfgt.vf v0, v8, fa03779; CHECK-NEXT: ret3780 %head = insertelement <vscale x 2 x float> poison, float %b, i32 03781 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer3782 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp3783 ret <vscale x 2 x i1> %13784}3785 3786define <vscale x 2 x i1> @fcmps_ogt_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {3787; CHECK-LABEL: fcmps_ogt_fv_nxv2f32:3788; CHECK: # %bb.0:3789; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3790; CHECK-NEXT: vmflt.vf v0, v8, fa03791; CHECK-NEXT: ret3792 %head = insertelement <vscale x 2 x float> poison, float %b, i32 03793 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer3794 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp3795 ret <vscale x 2 x i1> %13796}3797 3798define <vscale x 2 x i1> @fcmps_oge_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {3799; CHECK-LABEL: fcmps_oge_vv_nxv2f32:3800; CHECK: # %bb.0:3801; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3802; CHECK-NEXT: vmfle.vv v0, v9, v83803; CHECK-NEXT: ret3804 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp3805 ret <vscale x 2 x i1> %13806}3807 3808define <vscale x 2 x i1> @fcmps_oge_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {3809; CHECK-LABEL: fcmps_oge_vf_nxv2f32:3810; CHECK: # %bb.0:3811; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3812; CHECK-NEXT: vmfge.vf v0, v8, fa03813; CHECK-NEXT: ret3814 %head = insertelement <vscale x 2 x float> poison, float %b, i32 03815 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer3816 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp3817 ret <vscale x 2 x i1> %13818}3819 3820define <vscale x 2 x i1> @fcmps_oge_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {3821; CHECK-LABEL: fcmps_oge_fv_nxv2f32:3822; CHECK: # %bb.0:3823; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3824; CHECK-NEXT: vmfle.vf v0, v8, fa03825; CHECK-NEXT: ret3826 %head = insertelement <vscale x 2 x float> poison, float %b, i32 03827 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer3828 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp3829 ret <vscale x 2 x i1> %13830}3831 3832define <vscale x 2 x i1> @fcmps_olt_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {3833; CHECK-LABEL: fcmps_olt_vv_nxv2f32:3834; CHECK: # %bb.0:3835; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3836; CHECK-NEXT: vmflt.vv v0, v8, v93837; CHECK-NEXT: ret3838 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp3839 ret <vscale x 2 x i1> %13840}3841 3842define <vscale x 2 x i1> @fcmps_olt_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {3843; CHECK-LABEL: fcmps_olt_vf_nxv2f32:3844; CHECK: # %bb.0:3845; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3846; CHECK-NEXT: vmflt.vf v0, v8, fa03847; CHECK-NEXT: ret3848 %head = insertelement <vscale x 2 x float> poison, float %b, i32 03849 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer3850 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp3851 ret <vscale x 2 x i1> %13852}3853 3854define <vscale x 2 x i1> @fcmps_olt_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {3855; CHECK-LABEL: fcmps_olt_fv_nxv2f32:3856; CHECK: # %bb.0:3857; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3858; CHECK-NEXT: vmfgt.vf v0, v8, fa03859; CHECK-NEXT: ret3860 %head = insertelement <vscale x 2 x float> poison, float %b, i32 03861 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer3862 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp3863 ret <vscale x 2 x i1> %13864}3865 3866define <vscale x 2 x i1> @fcmps_ole_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {3867; CHECK-LABEL: fcmps_ole_vv_nxv2f32:3868; CHECK: # %bb.0:3869; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3870; CHECK-NEXT: vmfle.vv v0, v8, v93871; CHECK-NEXT: ret3872 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp3873 ret <vscale x 2 x i1> %13874}3875 3876define <vscale x 2 x i1> @fcmps_ole_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {3877; CHECK-LABEL: fcmps_ole_vf_nxv2f32:3878; CHECK: # %bb.0:3879; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3880; CHECK-NEXT: vmfle.vf v0, v8, fa03881; CHECK-NEXT: ret3882 %head = insertelement <vscale x 2 x float> poison, float %b, i32 03883 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer3884 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp3885 ret <vscale x 2 x i1> %13886}3887 3888define <vscale x 2 x i1> @fcmps_ole_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {3889; CHECK-LABEL: fcmps_ole_fv_nxv2f32:3890; CHECK: # %bb.0:3891; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3892; CHECK-NEXT: vmfge.vf v0, v8, fa03893; CHECK-NEXT: ret3894 %head = insertelement <vscale x 2 x float> poison, float %b, i32 03895 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer3896 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp3897 ret <vscale x 2 x i1> %13898}3899 3900define <vscale x 2 x i1> @fcmps_one_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {3901; CHECK-LABEL: fcmps_one_vv_nxv2f32:3902; CHECK: # %bb.0:3903; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3904; CHECK-NEXT: vmflt.vv v10, v8, v93905; CHECK-NEXT: vmflt.vv v8, v9, v83906; CHECK-NEXT: vmor.mm v0, v8, v103907; CHECK-NEXT: ret3908 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp3909 ret <vscale x 2 x i1> %13910}3911 3912define <vscale x 2 x i1> @fcmps_one_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {3913; CHECK-LABEL: fcmps_one_vf_nxv2f32:3914; CHECK: # %bb.0:3915; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3916; CHECK-NEXT: vmflt.vf v9, v8, fa03917; CHECK-NEXT: vmfgt.vf v8, v8, fa03918; CHECK-NEXT: vmor.mm v0, v8, v93919; CHECK-NEXT: ret3920 %head = insertelement <vscale x 2 x float> poison, float %b, i32 03921 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer3922 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp3923 ret <vscale x 2 x i1> %13924}3925 3926define <vscale x 2 x i1> @fcmps_one_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {3927; CHECK-LABEL: fcmps_one_fv_nxv2f32:3928; CHECK: # %bb.0:3929; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3930; CHECK-NEXT: vmfgt.vf v9, v8, fa03931; CHECK-NEXT: vmflt.vf v8, v8, fa03932; CHECK-NEXT: vmor.mm v0, v8, v93933; CHECK-NEXT: ret3934 %head = insertelement <vscale x 2 x float> poison, float %b, i32 03935 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer3936 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp3937 ret <vscale x 2 x i1> %13938}3939 3940define <vscale x 2 x i1> @fcmps_ord_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {3941; CHECK-LABEL: fcmps_ord_vv_nxv2f32:3942; CHECK: # %bb.0:3943; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3944; CHECK-NEXT: vmfle.vv v9, v9, v93945; CHECK-NEXT: vmfle.vv v8, v8, v83946; CHECK-NEXT: vmand.mm v0, v8, v93947; CHECK-NEXT: ret3948 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp3949 ret <vscale x 2 x i1> %13950}3951 3952define <vscale x 2 x i1> @fcmps_ord_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {3953; CHECK-LABEL: fcmps_ord_vf_nxv2f32:3954; CHECK: # %bb.0:3955; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3956; CHECK-NEXT: vfmv.v.f v9, fa03957; CHECK-NEXT: vmfle.vf v9, v9, fa03958; CHECK-NEXT: vmfle.vv v8, v8, v83959; CHECK-NEXT: vmand.mm v0, v8, v93960; CHECK-NEXT: ret3961 %head = insertelement <vscale x 2 x float> poison, float %b, i32 03962 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer3963 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp3964 ret <vscale x 2 x i1> %13965}3966 3967define <vscale x 2 x i1> @fcmps_ord_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {3968; CHECK-LABEL: fcmps_ord_fv_nxv2f32:3969; CHECK: # %bb.0:3970; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3971; CHECK-NEXT: vfmv.v.f v9, fa03972; CHECK-NEXT: vmfle.vf v9, v9, fa03973; CHECK-NEXT: vmfle.vv v8, v8, v83974; CHECK-NEXT: vmand.mm v0, v9, v83975; CHECK-NEXT: ret3976 %head = insertelement <vscale x 2 x float> poison, float %b, i32 03977 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer3978 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp3979 ret <vscale x 2 x i1> %13980}3981 3982define <vscale x 2 x i1> @fcmps_ueq_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {3983; CHECK-LABEL: fcmps_ueq_vv_nxv2f32:3984; CHECK: # %bb.0:3985; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3986; CHECK-NEXT: vmflt.vv v10, v8, v93987; CHECK-NEXT: vmflt.vv v8, v9, v83988; CHECK-NEXT: vmnor.mm v0, v8, v103989; CHECK-NEXT: ret3990 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp3991 ret <vscale x 2 x i1> %13992}3993 3994define <vscale x 2 x i1> @fcmps_ueq_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {3995; CHECK-LABEL: fcmps_ueq_vf_nxv2f32:3996; CHECK: # %bb.0:3997; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma3998; CHECK-NEXT: vmflt.vf v9, v8, fa03999; CHECK-NEXT: vmfgt.vf v8, v8, fa04000; CHECK-NEXT: vmnor.mm v0, v8, v94001; CHECK-NEXT: ret4002 %head = insertelement <vscale x 2 x float> poison, float %b, i32 04003 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4004 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp4005 ret <vscale x 2 x i1> %14006}4007 4008define <vscale x 2 x i1> @fcmps_ueq_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4009; CHECK-LABEL: fcmps_ueq_fv_nxv2f32:4010; CHECK: # %bb.0:4011; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma4012; CHECK-NEXT: vmfgt.vf v9, v8, fa04013; CHECK-NEXT: vmflt.vf v8, v8, fa04014; CHECK-NEXT: vmnor.mm v0, v8, v94015; CHECK-NEXT: ret4016 %head = insertelement <vscale x 2 x float> poison, float %b, i32 04017 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4018 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp4019 ret <vscale x 2 x i1> %14020}4021 4022define <vscale x 2 x i1> @fcmps_ugt_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {4023; CHECK-LABEL: fcmps_ugt_vv_nxv2f32:4024; CHECK: # %bb.0:4025; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma4026; CHECK-NEXT: vmfle.vv v8, v8, v94027; CHECK-NEXT: vmnot.m v0, v84028; CHECK-NEXT: ret4029 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp4030 ret <vscale x 2 x i1> %14031}4032 4033define <vscale x 2 x i1> @fcmps_ugt_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4034; CHECK-LABEL: fcmps_ugt_vf_nxv2f32:4035; CHECK: # %bb.0:4036; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma4037; CHECK-NEXT: vmfle.vf v8, v8, fa04038; CHECK-NEXT: vmnot.m v0, v84039; CHECK-NEXT: ret4040 %head = insertelement <vscale x 2 x float> poison, float %b, i32 04041 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4042 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp4043 ret <vscale x 2 x i1> %14044}4045 4046define <vscale x 2 x i1> @fcmps_ugt_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4047; CHECK-LABEL: fcmps_ugt_fv_nxv2f32:4048; CHECK: # %bb.0:4049; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma4050; CHECK-NEXT: vmfge.vf v8, v8, fa04051; CHECK-NEXT: vmnot.m v0, v84052; CHECK-NEXT: ret4053 %head = insertelement <vscale x 2 x float> poison, float %b, i32 04054 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4055 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp4056 ret <vscale x 2 x i1> %14057}4058 4059define <vscale x 2 x i1> @fcmps_uge_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {4060; CHECK-LABEL: fcmps_uge_vv_nxv2f32:4061; CHECK: # %bb.0:4062; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma4063; CHECK-NEXT: vmflt.vv v8, v8, v94064; CHECK-NEXT: vmnot.m v0, v84065; CHECK-NEXT: ret4066 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp4067 ret <vscale x 2 x i1> %14068}4069 4070define <vscale x 2 x i1> @fcmps_uge_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4071; CHECK-LABEL: fcmps_uge_vf_nxv2f32:4072; CHECK: # %bb.0:4073; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma4074; CHECK-NEXT: vmflt.vf v8, v8, fa04075; CHECK-NEXT: vmnot.m v0, v84076; CHECK-NEXT: ret4077 %head = insertelement <vscale x 2 x float> poison, float %b, i32 04078 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4079 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp4080 ret <vscale x 2 x i1> %14081}4082 4083define <vscale x 2 x i1> @fcmps_uge_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4084; CHECK-LABEL: fcmps_uge_fv_nxv2f32:4085; CHECK: # %bb.0:4086; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma4087; CHECK-NEXT: vmfgt.vf v8, v8, fa04088; CHECK-NEXT: vmnot.m v0, v84089; CHECK-NEXT: ret4090 %head = insertelement <vscale x 2 x float> poison, float %b, i32 04091 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4092 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp4093 ret <vscale x 2 x i1> %14094}4095 4096define <vscale x 2 x i1> @fcmps_ult_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {4097; CHECK-LABEL: fcmps_ult_vv_nxv2f32:4098; CHECK: # %bb.0:4099; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma4100; CHECK-NEXT: vmfle.vv v8, v9, v84101; CHECK-NEXT: vmnot.m v0, v84102; CHECK-NEXT: ret4103 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp4104 ret <vscale x 2 x i1> %14105}4106 4107define <vscale x 2 x i1> @fcmps_ult_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4108; CHECK-LABEL: fcmps_ult_vf_nxv2f32:4109; CHECK: # %bb.0:4110; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma4111; CHECK-NEXT: vmfge.vf v8, v8, fa04112; CHECK-NEXT: vmnot.m v0, v84113; CHECK-NEXT: ret4114 %head = insertelement <vscale x 2 x float> poison, float %b, i32 04115 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4116 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp4117 ret <vscale x 2 x i1> %14118}4119 4120define <vscale x 2 x i1> @fcmps_ult_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4121; CHECK-LABEL: fcmps_ult_fv_nxv2f32:4122; CHECK: # %bb.0:4123; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma4124; CHECK-NEXT: vmfle.vf v8, v8, fa04125; CHECK-NEXT: vmnot.m v0, v84126; CHECK-NEXT: ret4127 %head = insertelement <vscale x 2 x float> poison, float %b, i32 04128 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4129 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp4130 ret <vscale x 2 x i1> %14131}4132 4133define <vscale x 2 x i1> @fcmps_ule_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {4134; CHECK-LABEL: fcmps_ule_vv_nxv2f32:4135; CHECK: # %bb.0:4136; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma4137; CHECK-NEXT: vmflt.vv v8, v9, v84138; CHECK-NEXT: vmnot.m v0, v84139; CHECK-NEXT: ret4140 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp4141 ret <vscale x 2 x i1> %14142}4143 4144define <vscale x 2 x i1> @fcmps_ule_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4145; CHECK-LABEL: fcmps_ule_vf_nxv2f32:4146; CHECK: # %bb.0:4147; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma4148; CHECK-NEXT: vmfgt.vf v8, v8, fa04149; CHECK-NEXT: vmnot.m v0, v84150; CHECK-NEXT: ret4151 %head = insertelement <vscale x 2 x float> poison, float %b, i32 04152 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4153 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp4154 ret <vscale x 2 x i1> %14155}4156 4157define <vscale x 2 x i1> @fcmps_ule_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4158; CHECK-LABEL: fcmps_ule_fv_nxv2f32:4159; CHECK: # %bb.0:4160; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma4161; CHECK-NEXT: vmflt.vf v8, v8, fa04162; CHECK-NEXT: vmnot.m v0, v84163; CHECK-NEXT: ret4164 %head = insertelement <vscale x 2 x float> poison, float %b, i32 04165 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4166 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp4167 ret <vscale x 2 x i1> %14168}4169 4170define <vscale x 2 x i1> @fcmps_une_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {4171; CHECK-LABEL: fcmps_une_vv_nxv2f32:4172; CHECK: # %bb.0:4173; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma4174; CHECK-NEXT: vmfle.vv v10, v9, v84175; CHECK-NEXT: vmfle.vv v8, v8, v94176; CHECK-NEXT: vmnand.mm v0, v8, v104177; CHECK-NEXT: ret4178 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp4179 ret <vscale x 2 x i1> %14180}4181 4182define <vscale x 2 x i1> @fcmps_une_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4183; CHECK-LABEL: fcmps_une_vf_nxv2f32:4184; CHECK: # %bb.0:4185; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma4186; CHECK-NEXT: vmfge.vf v9, v8, fa04187; CHECK-NEXT: vmfle.vf v8, v8, fa04188; CHECK-NEXT: vmnand.mm v0, v8, v94189; CHECK-NEXT: ret4190 %head = insertelement <vscale x 2 x float> poison, float %b, i32 04191 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4192 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp4193 ret <vscale x 2 x i1> %14194}4195 4196define <vscale x 2 x i1> @fcmps_une_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4197; CHECK-LABEL: fcmps_une_fv_nxv2f32:4198; CHECK: # %bb.0:4199; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma4200; CHECK-NEXT: vmfle.vf v9, v8, fa04201; CHECK-NEXT: vmfge.vf v8, v8, fa04202; CHECK-NEXT: vmnand.mm v0, v8, v94203; CHECK-NEXT: ret4204 %head = insertelement <vscale x 2 x float> poison, float %b, i32 04205 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4206 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp4207 ret <vscale x 2 x i1> %14208}4209 4210define <vscale x 2 x i1> @fcmps_uno_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {4211; CHECK-LABEL: fcmps_uno_vv_nxv2f32:4212; CHECK: # %bb.0:4213; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma4214; CHECK-NEXT: vmfle.vv v9, v9, v94215; CHECK-NEXT: vmfle.vv v8, v8, v84216; CHECK-NEXT: vmnot.m v8, v84217; CHECK-NEXT: vmorn.mm v0, v8, v94218; CHECK-NEXT: ret4219 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp4220 ret <vscale x 2 x i1> %14221}4222 4223define <vscale x 2 x i1> @fcmps_uno_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4224; CHECK-LABEL: fcmps_uno_vf_nxv2f32:4225; CHECK: # %bb.0:4226; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma4227; CHECK-NEXT: vfmv.v.f v9, fa04228; CHECK-NEXT: vmfle.vv v8, v8, v84229; CHECK-NEXT: vmfle.vf v9, v9, fa04230; CHECK-NEXT: vmnot.m v8, v84231; CHECK-NEXT: vmorn.mm v0, v8, v94232; CHECK-NEXT: ret4233 %head = insertelement <vscale x 2 x float> poison, float %b, i32 04234 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4235 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp4236 ret <vscale x 2 x i1> %14237}4238 4239define <vscale x 2 x i1> @fcmps_uno_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {4240; CHECK-LABEL: fcmps_uno_fv_nxv2f32:4241; CHECK: # %bb.0:4242; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma4243; CHECK-NEXT: vfmv.v.f v9, fa04244; CHECK-NEXT: vmfle.vf v9, v9, fa04245; CHECK-NEXT: vmnot.m v9, v94246; CHECK-NEXT: vmfle.vv v8, v8, v84247; CHECK-NEXT: vmorn.mm v0, v9, v84248; CHECK-NEXT: ret4249 %head = insertelement <vscale x 2 x float> poison, float %b, i32 04250 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer4251 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp4252 ret <vscale x 2 x i1> %14253}4254 4255define <vscale x 4 x i1> @fcmps_oeq_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {4256; CHECK-LABEL: fcmps_oeq_vv_nxv4f32:4257; CHECK: # %bb.0:4258; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4259; CHECK-NEXT: vmfle.vv v12, v10, v84260; CHECK-NEXT: vmfle.vv v13, v8, v104261; CHECK-NEXT: vmand.mm v0, v13, v124262; CHECK-NEXT: ret4263 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp4264 ret <vscale x 4 x i1> %14265}4266 4267define <vscale x 4 x i1> @fcmps_oeq_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4268; CHECK-LABEL: fcmps_oeq_vf_nxv4f32:4269; CHECK: # %bb.0:4270; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4271; CHECK-NEXT: vmfge.vf v10, v8, fa04272; CHECK-NEXT: vmfle.vf v11, v8, fa04273; CHECK-NEXT: vmand.mm v0, v11, v104274; CHECK-NEXT: ret4275 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04276 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4277 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp4278 ret <vscale x 4 x i1> %14279}4280 4281define <vscale x 4 x i1> @fcmps_oeq_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4282; CHECK-LABEL: fcmps_oeq_fv_nxv4f32:4283; CHECK: # %bb.0:4284; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4285; CHECK-NEXT: vmfle.vf v10, v8, fa04286; CHECK-NEXT: vmfge.vf v11, v8, fa04287; CHECK-NEXT: vmand.mm v0, v11, v104288; CHECK-NEXT: ret4289 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04290 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4291 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp4292 ret <vscale x 4 x i1> %14293}4294 4295define <vscale x 4 x i1> @fcmps_ogt_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {4296; CHECK-LABEL: fcmps_ogt_vv_nxv4f32:4297; CHECK: # %bb.0:4298; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4299; CHECK-NEXT: vmflt.vv v0, v10, v84300; CHECK-NEXT: ret4301 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp4302 ret <vscale x 4 x i1> %14303}4304 4305define <vscale x 4 x i1> @fcmps_ogt_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4306; CHECK-LABEL: fcmps_ogt_vf_nxv4f32:4307; CHECK: # %bb.0:4308; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4309; CHECK-NEXT: vmfgt.vf v0, v8, fa04310; CHECK-NEXT: ret4311 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04312 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4313 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp4314 ret <vscale x 4 x i1> %14315}4316 4317define <vscale x 4 x i1> @fcmps_ogt_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4318; CHECK-LABEL: fcmps_ogt_fv_nxv4f32:4319; CHECK: # %bb.0:4320; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4321; CHECK-NEXT: vmflt.vf v0, v8, fa04322; CHECK-NEXT: ret4323 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04324 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4325 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp4326 ret <vscale x 4 x i1> %14327}4328 4329define <vscale x 4 x i1> @fcmps_oge_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {4330; CHECK-LABEL: fcmps_oge_vv_nxv4f32:4331; CHECK: # %bb.0:4332; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4333; CHECK-NEXT: vmfle.vv v0, v10, v84334; CHECK-NEXT: ret4335 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp4336 ret <vscale x 4 x i1> %14337}4338 4339define <vscale x 4 x i1> @fcmps_oge_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4340; CHECK-LABEL: fcmps_oge_vf_nxv4f32:4341; CHECK: # %bb.0:4342; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4343; CHECK-NEXT: vmfge.vf v0, v8, fa04344; CHECK-NEXT: ret4345 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04346 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4347 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp4348 ret <vscale x 4 x i1> %14349}4350 4351define <vscale x 4 x i1> @fcmps_oge_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4352; CHECK-LABEL: fcmps_oge_fv_nxv4f32:4353; CHECK: # %bb.0:4354; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4355; CHECK-NEXT: vmfle.vf v0, v8, fa04356; CHECK-NEXT: ret4357 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04358 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4359 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp4360 ret <vscale x 4 x i1> %14361}4362 4363define <vscale x 4 x i1> @fcmps_olt_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {4364; CHECK-LABEL: fcmps_olt_vv_nxv4f32:4365; CHECK: # %bb.0:4366; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4367; CHECK-NEXT: vmflt.vv v0, v8, v104368; CHECK-NEXT: ret4369 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp4370 ret <vscale x 4 x i1> %14371}4372 4373define <vscale x 4 x i1> @fcmps_olt_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4374; CHECK-LABEL: fcmps_olt_vf_nxv4f32:4375; CHECK: # %bb.0:4376; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4377; CHECK-NEXT: vmflt.vf v0, v8, fa04378; CHECK-NEXT: ret4379 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04380 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4381 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp4382 ret <vscale x 4 x i1> %14383}4384 4385define <vscale x 4 x i1> @fcmps_olt_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4386; CHECK-LABEL: fcmps_olt_fv_nxv4f32:4387; CHECK: # %bb.0:4388; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4389; CHECK-NEXT: vmfgt.vf v0, v8, fa04390; CHECK-NEXT: ret4391 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04392 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4393 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp4394 ret <vscale x 4 x i1> %14395}4396 4397define <vscale x 4 x i1> @fcmps_ole_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {4398; CHECK-LABEL: fcmps_ole_vv_nxv4f32:4399; CHECK: # %bb.0:4400; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4401; CHECK-NEXT: vmfle.vv v0, v8, v104402; CHECK-NEXT: ret4403 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp4404 ret <vscale x 4 x i1> %14405}4406 4407define <vscale x 4 x i1> @fcmps_ole_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4408; CHECK-LABEL: fcmps_ole_vf_nxv4f32:4409; CHECK: # %bb.0:4410; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4411; CHECK-NEXT: vmfle.vf v0, v8, fa04412; CHECK-NEXT: ret4413 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04414 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4415 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp4416 ret <vscale x 4 x i1> %14417}4418 4419define <vscale x 4 x i1> @fcmps_ole_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4420; CHECK-LABEL: fcmps_ole_fv_nxv4f32:4421; CHECK: # %bb.0:4422; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4423; CHECK-NEXT: vmfge.vf v0, v8, fa04424; CHECK-NEXT: ret4425 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04426 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4427 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp4428 ret <vscale x 4 x i1> %14429}4430 4431define <vscale x 4 x i1> @fcmps_one_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {4432; CHECK-LABEL: fcmps_one_vv_nxv4f32:4433; CHECK: # %bb.0:4434; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4435; CHECK-NEXT: vmflt.vv v12, v8, v104436; CHECK-NEXT: vmflt.vv v13, v10, v84437; CHECK-NEXT: vmor.mm v0, v13, v124438; CHECK-NEXT: ret4439 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp4440 ret <vscale x 4 x i1> %14441}4442 4443define <vscale x 4 x i1> @fcmps_one_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4444; CHECK-LABEL: fcmps_one_vf_nxv4f32:4445; CHECK: # %bb.0:4446; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4447; CHECK-NEXT: vmflt.vf v10, v8, fa04448; CHECK-NEXT: vmfgt.vf v11, v8, fa04449; CHECK-NEXT: vmor.mm v0, v11, v104450; CHECK-NEXT: ret4451 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04452 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4453 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp4454 ret <vscale x 4 x i1> %14455}4456 4457define <vscale x 4 x i1> @fcmps_one_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4458; CHECK-LABEL: fcmps_one_fv_nxv4f32:4459; CHECK: # %bb.0:4460; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4461; CHECK-NEXT: vmfgt.vf v10, v8, fa04462; CHECK-NEXT: vmflt.vf v11, v8, fa04463; CHECK-NEXT: vmor.mm v0, v11, v104464; CHECK-NEXT: ret4465 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04466 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4467 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp4468 ret <vscale x 4 x i1> %14469}4470 4471define <vscale x 4 x i1> @fcmps_ord_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {4472; CHECK-LABEL: fcmps_ord_vv_nxv4f32:4473; CHECK: # %bb.0:4474; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4475; CHECK-NEXT: vmfle.vv v12, v10, v104476; CHECK-NEXT: vmfle.vv v10, v8, v84477; CHECK-NEXT: vmand.mm v0, v10, v124478; CHECK-NEXT: ret4479 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp4480 ret <vscale x 4 x i1> %14481}4482 4483define <vscale x 4 x i1> @fcmps_ord_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4484; CHECK-LABEL: fcmps_ord_vf_nxv4f32:4485; CHECK: # %bb.0:4486; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4487; CHECK-NEXT: vfmv.v.f v10, fa04488; CHECK-NEXT: vmfle.vf v12, v10, fa04489; CHECK-NEXT: vmfle.vv v10, v8, v84490; CHECK-NEXT: vmand.mm v0, v10, v124491; CHECK-NEXT: ret4492 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04493 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4494 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp4495 ret <vscale x 4 x i1> %14496}4497 4498define <vscale x 4 x i1> @fcmps_ord_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4499; CHECK-LABEL: fcmps_ord_fv_nxv4f32:4500; CHECK: # %bb.0:4501; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4502; CHECK-NEXT: vfmv.v.f v10, fa04503; CHECK-NEXT: vmfle.vf v12, v10, fa04504; CHECK-NEXT: vmfle.vv v10, v8, v84505; CHECK-NEXT: vmand.mm v0, v12, v104506; CHECK-NEXT: ret4507 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04508 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4509 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp4510 ret <vscale x 4 x i1> %14511}4512 4513define <vscale x 4 x i1> @fcmps_ueq_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {4514; CHECK-LABEL: fcmps_ueq_vv_nxv4f32:4515; CHECK: # %bb.0:4516; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4517; CHECK-NEXT: vmflt.vv v12, v8, v104518; CHECK-NEXT: vmflt.vv v13, v10, v84519; CHECK-NEXT: vmnor.mm v0, v13, v124520; CHECK-NEXT: ret4521 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp4522 ret <vscale x 4 x i1> %14523}4524 4525define <vscale x 4 x i1> @fcmps_ueq_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4526; CHECK-LABEL: fcmps_ueq_vf_nxv4f32:4527; CHECK: # %bb.0:4528; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4529; CHECK-NEXT: vmflt.vf v10, v8, fa04530; CHECK-NEXT: vmfgt.vf v11, v8, fa04531; CHECK-NEXT: vmnor.mm v0, v11, v104532; CHECK-NEXT: ret4533 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04534 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4535 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp4536 ret <vscale x 4 x i1> %14537}4538 4539define <vscale x 4 x i1> @fcmps_ueq_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4540; CHECK-LABEL: fcmps_ueq_fv_nxv4f32:4541; CHECK: # %bb.0:4542; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4543; CHECK-NEXT: vmfgt.vf v10, v8, fa04544; CHECK-NEXT: vmflt.vf v11, v8, fa04545; CHECK-NEXT: vmnor.mm v0, v11, v104546; CHECK-NEXT: ret4547 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04548 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4549 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp4550 ret <vscale x 4 x i1> %14551}4552 4553define <vscale x 4 x i1> @fcmps_ugt_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {4554; CHECK-LABEL: fcmps_ugt_vv_nxv4f32:4555; CHECK: # %bb.0:4556; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4557; CHECK-NEXT: vmfle.vv v12, v8, v104558; CHECK-NEXT: vmnot.m v0, v124559; CHECK-NEXT: ret4560 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp4561 ret <vscale x 4 x i1> %14562}4563 4564define <vscale x 4 x i1> @fcmps_ugt_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4565; CHECK-LABEL: fcmps_ugt_vf_nxv4f32:4566; CHECK: # %bb.0:4567; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4568; CHECK-NEXT: vmfle.vf v10, v8, fa04569; CHECK-NEXT: vmnot.m v0, v104570; CHECK-NEXT: ret4571 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04572 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4573 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp4574 ret <vscale x 4 x i1> %14575}4576 4577define <vscale x 4 x i1> @fcmps_ugt_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4578; CHECK-LABEL: fcmps_ugt_fv_nxv4f32:4579; CHECK: # %bb.0:4580; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4581; CHECK-NEXT: vmfge.vf v10, v8, fa04582; CHECK-NEXT: vmnot.m v0, v104583; CHECK-NEXT: ret4584 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04585 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4586 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp4587 ret <vscale x 4 x i1> %14588}4589 4590define <vscale x 4 x i1> @fcmps_uge_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {4591; CHECK-LABEL: fcmps_uge_vv_nxv4f32:4592; CHECK: # %bb.0:4593; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4594; CHECK-NEXT: vmflt.vv v12, v8, v104595; CHECK-NEXT: vmnot.m v0, v124596; CHECK-NEXT: ret4597 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp4598 ret <vscale x 4 x i1> %14599}4600 4601define <vscale x 4 x i1> @fcmps_uge_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4602; CHECK-LABEL: fcmps_uge_vf_nxv4f32:4603; CHECK: # %bb.0:4604; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4605; CHECK-NEXT: vmflt.vf v10, v8, fa04606; CHECK-NEXT: vmnot.m v0, v104607; CHECK-NEXT: ret4608 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04609 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4610 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp4611 ret <vscale x 4 x i1> %14612}4613 4614define <vscale x 4 x i1> @fcmps_uge_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4615; CHECK-LABEL: fcmps_uge_fv_nxv4f32:4616; CHECK: # %bb.0:4617; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4618; CHECK-NEXT: vmfgt.vf v10, v8, fa04619; CHECK-NEXT: vmnot.m v0, v104620; CHECK-NEXT: ret4621 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04622 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4623 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp4624 ret <vscale x 4 x i1> %14625}4626 4627define <vscale x 4 x i1> @fcmps_ult_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {4628; CHECK-LABEL: fcmps_ult_vv_nxv4f32:4629; CHECK: # %bb.0:4630; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4631; CHECK-NEXT: vmfle.vv v12, v10, v84632; CHECK-NEXT: vmnot.m v0, v124633; CHECK-NEXT: ret4634 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp4635 ret <vscale x 4 x i1> %14636}4637 4638define <vscale x 4 x i1> @fcmps_ult_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4639; CHECK-LABEL: fcmps_ult_vf_nxv4f32:4640; CHECK: # %bb.0:4641; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4642; CHECK-NEXT: vmfge.vf v10, v8, fa04643; CHECK-NEXT: vmnot.m v0, v104644; CHECK-NEXT: ret4645 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04646 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4647 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp4648 ret <vscale x 4 x i1> %14649}4650 4651define <vscale x 4 x i1> @fcmps_ult_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4652; CHECK-LABEL: fcmps_ult_fv_nxv4f32:4653; CHECK: # %bb.0:4654; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4655; CHECK-NEXT: vmfle.vf v10, v8, fa04656; CHECK-NEXT: vmnot.m v0, v104657; CHECK-NEXT: ret4658 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04659 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4660 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp4661 ret <vscale x 4 x i1> %14662}4663 4664define <vscale x 4 x i1> @fcmps_ule_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {4665; CHECK-LABEL: fcmps_ule_vv_nxv4f32:4666; CHECK: # %bb.0:4667; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4668; CHECK-NEXT: vmflt.vv v12, v10, v84669; CHECK-NEXT: vmnot.m v0, v124670; CHECK-NEXT: ret4671 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp4672 ret <vscale x 4 x i1> %14673}4674 4675define <vscale x 4 x i1> @fcmps_ule_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4676; CHECK-LABEL: fcmps_ule_vf_nxv4f32:4677; CHECK: # %bb.0:4678; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4679; CHECK-NEXT: vmfgt.vf v10, v8, fa04680; CHECK-NEXT: vmnot.m v0, v104681; CHECK-NEXT: ret4682 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04683 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4684 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp4685 ret <vscale x 4 x i1> %14686}4687 4688define <vscale x 4 x i1> @fcmps_ule_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4689; CHECK-LABEL: fcmps_ule_fv_nxv4f32:4690; CHECK: # %bb.0:4691; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4692; CHECK-NEXT: vmflt.vf v10, v8, fa04693; CHECK-NEXT: vmnot.m v0, v104694; CHECK-NEXT: ret4695 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04696 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4697 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp4698 ret <vscale x 4 x i1> %14699}4700 4701define <vscale x 4 x i1> @fcmps_une_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {4702; CHECK-LABEL: fcmps_une_vv_nxv4f32:4703; CHECK: # %bb.0:4704; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4705; CHECK-NEXT: vmfle.vv v12, v10, v84706; CHECK-NEXT: vmfle.vv v13, v8, v104707; CHECK-NEXT: vmnand.mm v0, v13, v124708; CHECK-NEXT: ret4709 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp4710 ret <vscale x 4 x i1> %14711}4712 4713define <vscale x 4 x i1> @fcmps_une_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4714; CHECK-LABEL: fcmps_une_vf_nxv4f32:4715; CHECK: # %bb.0:4716; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4717; CHECK-NEXT: vmfge.vf v10, v8, fa04718; CHECK-NEXT: vmfle.vf v11, v8, fa04719; CHECK-NEXT: vmnand.mm v0, v11, v104720; CHECK-NEXT: ret4721 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04722 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4723 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp4724 ret <vscale x 4 x i1> %14725}4726 4727define <vscale x 4 x i1> @fcmps_une_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4728; CHECK-LABEL: fcmps_une_fv_nxv4f32:4729; CHECK: # %bb.0:4730; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4731; CHECK-NEXT: vmfle.vf v10, v8, fa04732; CHECK-NEXT: vmfge.vf v11, v8, fa04733; CHECK-NEXT: vmnand.mm v0, v11, v104734; CHECK-NEXT: ret4735 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04736 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4737 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp4738 ret <vscale x 4 x i1> %14739}4740 4741define <vscale x 4 x i1> @fcmps_uno_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {4742; CHECK-LABEL: fcmps_uno_vv_nxv4f32:4743; CHECK: # %bb.0:4744; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4745; CHECK-NEXT: vmfle.vv v12, v10, v104746; CHECK-NEXT: vmfle.vv v10, v8, v84747; CHECK-NEXT: vmnot.m v8, v104748; CHECK-NEXT: vmorn.mm v0, v8, v124749; CHECK-NEXT: ret4750 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp4751 ret <vscale x 4 x i1> %14752}4753 4754define <vscale x 4 x i1> @fcmps_uno_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4755; CHECK-LABEL: fcmps_uno_vf_nxv4f32:4756; CHECK: # %bb.0:4757; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4758; CHECK-NEXT: vfmv.v.f v10, fa04759; CHECK-NEXT: vmfle.vv v12, v8, v84760; CHECK-NEXT: vmfle.vf v8, v10, fa04761; CHECK-NEXT: vmnot.m v9, v124762; CHECK-NEXT: vmorn.mm v0, v9, v84763; CHECK-NEXT: ret4764 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04765 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4766 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp4767 ret <vscale x 4 x i1> %14768}4769 4770define <vscale x 4 x i1> @fcmps_uno_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {4771; CHECK-LABEL: fcmps_uno_fv_nxv4f32:4772; CHECK: # %bb.0:4773; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma4774; CHECK-NEXT: vfmv.v.f v10, fa04775; CHECK-NEXT: vmfle.vf v12, v10, fa04776; CHECK-NEXT: vmnot.m v10, v124777; CHECK-NEXT: vmfle.vv v11, v8, v84778; CHECK-NEXT: vmorn.mm v0, v10, v114779; CHECK-NEXT: ret4780 %head = insertelement <vscale x 4 x float> poison, float %b, i32 04781 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer4782 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp4783 ret <vscale x 4 x i1> %14784}4785 4786define <vscale x 8 x i1> @fcmps_oeq_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {4787; CHECK-LABEL: fcmps_oeq_vv_nxv8f32:4788; CHECK: # %bb.0:4789; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma4790; CHECK-NEXT: vmfle.vv v16, v12, v84791; CHECK-NEXT: vmfle.vv v17, v8, v124792; CHECK-NEXT: vmand.mm v0, v17, v164793; CHECK-NEXT: ret4794 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp4795 ret <vscale x 8 x i1> %14796}4797 4798define <vscale x 8 x i1> @fcmps_oeq_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {4799; CHECK-LABEL: fcmps_oeq_vf_nxv8f32:4800; CHECK: # %bb.0:4801; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma4802; CHECK-NEXT: vmfge.vf v12, v8, fa04803; CHECK-NEXT: vmfle.vf v13, v8, fa04804; CHECK-NEXT: vmand.mm v0, v13, v124805; CHECK-NEXT: ret4806 %head = insertelement <vscale x 8 x float> poison, float %b, i32 04807 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4808 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp4809 ret <vscale x 8 x i1> %14810}4811 4812define <vscale x 8 x i1> @fcmps_oeq_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {4813; CHECK-LABEL: fcmps_oeq_fv_nxv8f32:4814; CHECK: # %bb.0:4815; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma4816; CHECK-NEXT: vmfle.vf v12, v8, fa04817; CHECK-NEXT: vmfge.vf v13, v8, fa04818; CHECK-NEXT: vmand.mm v0, v13, v124819; CHECK-NEXT: ret4820 %head = insertelement <vscale x 8 x float> poison, float %b, i32 04821 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4822 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp4823 ret <vscale x 8 x i1> %14824}4825 4826define <vscale x 8 x i1> @fcmps_ogt_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {4827; CHECK-LABEL: fcmps_ogt_vv_nxv8f32:4828; CHECK: # %bb.0:4829; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma4830; CHECK-NEXT: vmflt.vv v0, v12, v84831; CHECK-NEXT: ret4832 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp4833 ret <vscale x 8 x i1> %14834}4835 4836define <vscale x 8 x i1> @fcmps_ogt_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {4837; CHECK-LABEL: fcmps_ogt_vf_nxv8f32:4838; CHECK: # %bb.0:4839; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma4840; CHECK-NEXT: vmfgt.vf v0, v8, fa04841; CHECK-NEXT: ret4842 %head = insertelement <vscale x 8 x float> poison, float %b, i32 04843 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4844 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp4845 ret <vscale x 8 x i1> %14846}4847 4848define <vscale x 8 x i1> @fcmps_ogt_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {4849; CHECK-LABEL: fcmps_ogt_fv_nxv8f32:4850; CHECK: # %bb.0:4851; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma4852; CHECK-NEXT: vmflt.vf v0, v8, fa04853; CHECK-NEXT: ret4854 %head = insertelement <vscale x 8 x float> poison, float %b, i32 04855 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4856 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp4857 ret <vscale x 8 x i1> %14858}4859 4860define <vscale x 8 x i1> @fcmps_oge_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {4861; CHECK-LABEL: fcmps_oge_vv_nxv8f32:4862; CHECK: # %bb.0:4863; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma4864; CHECK-NEXT: vmfle.vv v0, v12, v84865; CHECK-NEXT: ret4866 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp4867 ret <vscale x 8 x i1> %14868}4869 4870define <vscale x 8 x i1> @fcmps_oge_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {4871; CHECK-LABEL: fcmps_oge_vf_nxv8f32:4872; CHECK: # %bb.0:4873; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma4874; CHECK-NEXT: vmfge.vf v0, v8, fa04875; CHECK-NEXT: ret4876 %head = insertelement <vscale x 8 x float> poison, float %b, i32 04877 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4878 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp4879 ret <vscale x 8 x i1> %14880}4881 4882define <vscale x 8 x i1> @fcmps_oge_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {4883; CHECK-LABEL: fcmps_oge_fv_nxv8f32:4884; CHECK: # %bb.0:4885; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma4886; CHECK-NEXT: vmfle.vf v0, v8, fa04887; CHECK-NEXT: ret4888 %head = insertelement <vscale x 8 x float> poison, float %b, i32 04889 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4890 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp4891 ret <vscale x 8 x i1> %14892}4893 4894define <vscale x 8 x i1> @fcmps_olt_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {4895; CHECK-LABEL: fcmps_olt_vv_nxv8f32:4896; CHECK: # %bb.0:4897; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma4898; CHECK-NEXT: vmflt.vv v0, v8, v124899; CHECK-NEXT: ret4900 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp4901 ret <vscale x 8 x i1> %14902}4903 4904define <vscale x 8 x i1> @fcmps_olt_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {4905; CHECK-LABEL: fcmps_olt_vf_nxv8f32:4906; CHECK: # %bb.0:4907; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma4908; CHECK-NEXT: vmflt.vf v0, v8, fa04909; CHECK-NEXT: ret4910 %head = insertelement <vscale x 8 x float> poison, float %b, i32 04911 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4912 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp4913 ret <vscale x 8 x i1> %14914}4915 4916define <vscale x 8 x i1> @fcmps_olt_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {4917; CHECK-LABEL: fcmps_olt_fv_nxv8f32:4918; CHECK: # %bb.0:4919; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma4920; CHECK-NEXT: vmfgt.vf v0, v8, fa04921; CHECK-NEXT: ret4922 %head = insertelement <vscale x 8 x float> poison, float %b, i32 04923 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4924 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp4925 ret <vscale x 8 x i1> %14926}4927 4928define <vscale x 8 x i1> @fcmps_ole_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {4929; CHECK-LABEL: fcmps_ole_vv_nxv8f32:4930; CHECK: # %bb.0:4931; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma4932; CHECK-NEXT: vmfle.vv v0, v8, v124933; CHECK-NEXT: ret4934 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp4935 ret <vscale x 8 x i1> %14936}4937 4938define <vscale x 8 x i1> @fcmps_ole_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {4939; CHECK-LABEL: fcmps_ole_vf_nxv8f32:4940; CHECK: # %bb.0:4941; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma4942; CHECK-NEXT: vmfle.vf v0, v8, fa04943; CHECK-NEXT: ret4944 %head = insertelement <vscale x 8 x float> poison, float %b, i32 04945 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4946 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp4947 ret <vscale x 8 x i1> %14948}4949 4950define <vscale x 8 x i1> @fcmps_ole_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {4951; CHECK-LABEL: fcmps_ole_fv_nxv8f32:4952; CHECK: # %bb.0:4953; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma4954; CHECK-NEXT: vmfge.vf v0, v8, fa04955; CHECK-NEXT: ret4956 %head = insertelement <vscale x 8 x float> poison, float %b, i32 04957 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4958 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp4959 ret <vscale x 8 x i1> %14960}4961 4962define <vscale x 8 x i1> @fcmps_one_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {4963; CHECK-LABEL: fcmps_one_vv_nxv8f32:4964; CHECK: # %bb.0:4965; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma4966; CHECK-NEXT: vmflt.vv v16, v8, v124967; CHECK-NEXT: vmflt.vv v17, v12, v84968; CHECK-NEXT: vmor.mm v0, v17, v164969; CHECK-NEXT: ret4970 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp4971 ret <vscale x 8 x i1> %14972}4973 4974define <vscale x 8 x i1> @fcmps_one_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {4975; CHECK-LABEL: fcmps_one_vf_nxv8f32:4976; CHECK: # %bb.0:4977; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma4978; CHECK-NEXT: vmflt.vf v12, v8, fa04979; CHECK-NEXT: vmfgt.vf v13, v8, fa04980; CHECK-NEXT: vmor.mm v0, v13, v124981; CHECK-NEXT: ret4982 %head = insertelement <vscale x 8 x float> poison, float %b, i32 04983 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4984 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp4985 ret <vscale x 8 x i1> %14986}4987 4988define <vscale x 8 x i1> @fcmps_one_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {4989; CHECK-LABEL: fcmps_one_fv_nxv8f32:4990; CHECK: # %bb.0:4991; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma4992; CHECK-NEXT: vmfgt.vf v12, v8, fa04993; CHECK-NEXT: vmflt.vf v13, v8, fa04994; CHECK-NEXT: vmor.mm v0, v13, v124995; CHECK-NEXT: ret4996 %head = insertelement <vscale x 8 x float> poison, float %b, i32 04997 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer4998 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp4999 ret <vscale x 8 x i1> %15000}5001 5002define <vscale x 8 x i1> @fcmps_ord_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {5003; CHECK-LABEL: fcmps_ord_vv_nxv8f32:5004; CHECK: # %bb.0:5005; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5006; CHECK-NEXT: vmfle.vv v16, v12, v125007; CHECK-NEXT: vmfle.vv v12, v8, v85008; CHECK-NEXT: vmand.mm v0, v12, v165009; CHECK-NEXT: ret5010 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp5011 ret <vscale x 8 x i1> %15012}5013 5014define <vscale x 8 x i1> @fcmps_ord_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {5015; CHECK-LABEL: fcmps_ord_vf_nxv8f32:5016; CHECK: # %bb.0:5017; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5018; CHECK-NEXT: vfmv.v.f v12, fa05019; CHECK-NEXT: vmfle.vf v16, v12, fa05020; CHECK-NEXT: vmfle.vv v12, v8, v85021; CHECK-NEXT: vmand.mm v0, v12, v165022; CHECK-NEXT: ret5023 %head = insertelement <vscale x 8 x float> poison, float %b, i32 05024 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5025 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp5026 ret <vscale x 8 x i1> %15027}5028 5029define <vscale x 8 x i1> @fcmps_ord_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {5030; CHECK-LABEL: fcmps_ord_fv_nxv8f32:5031; CHECK: # %bb.0:5032; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5033; CHECK-NEXT: vfmv.v.f v12, fa05034; CHECK-NEXT: vmfle.vf v16, v12, fa05035; CHECK-NEXT: vmfle.vv v12, v8, v85036; CHECK-NEXT: vmand.mm v0, v16, v125037; CHECK-NEXT: ret5038 %head = insertelement <vscale x 8 x float> poison, float %b, i32 05039 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5040 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp5041 ret <vscale x 8 x i1> %15042}5043 5044define <vscale x 8 x i1> @fcmps_ueq_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {5045; CHECK-LABEL: fcmps_ueq_vv_nxv8f32:5046; CHECK: # %bb.0:5047; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5048; CHECK-NEXT: vmflt.vv v16, v8, v125049; CHECK-NEXT: vmflt.vv v17, v12, v85050; CHECK-NEXT: vmnor.mm v0, v17, v165051; CHECK-NEXT: ret5052 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp5053 ret <vscale x 8 x i1> %15054}5055 5056define <vscale x 8 x i1> @fcmps_ueq_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {5057; CHECK-LABEL: fcmps_ueq_vf_nxv8f32:5058; CHECK: # %bb.0:5059; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5060; CHECK-NEXT: vmflt.vf v12, v8, fa05061; CHECK-NEXT: vmfgt.vf v13, v8, fa05062; CHECK-NEXT: vmnor.mm v0, v13, v125063; CHECK-NEXT: ret5064 %head = insertelement <vscale x 8 x float> poison, float %b, i32 05065 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5066 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp5067 ret <vscale x 8 x i1> %15068}5069 5070define <vscale x 8 x i1> @fcmps_ueq_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {5071; CHECK-LABEL: fcmps_ueq_fv_nxv8f32:5072; CHECK: # %bb.0:5073; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5074; CHECK-NEXT: vmfgt.vf v12, v8, fa05075; CHECK-NEXT: vmflt.vf v13, v8, fa05076; CHECK-NEXT: vmnor.mm v0, v13, v125077; CHECK-NEXT: ret5078 %head = insertelement <vscale x 8 x float> poison, float %b, i32 05079 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5080 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp5081 ret <vscale x 8 x i1> %15082}5083 5084define <vscale x 8 x i1> @fcmps_ugt_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {5085; CHECK-LABEL: fcmps_ugt_vv_nxv8f32:5086; CHECK: # %bb.0:5087; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5088; CHECK-NEXT: vmfle.vv v16, v8, v125089; CHECK-NEXT: vmnot.m v0, v165090; CHECK-NEXT: ret5091 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp5092 ret <vscale x 8 x i1> %15093}5094 5095define <vscale x 8 x i1> @fcmps_ugt_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {5096; CHECK-LABEL: fcmps_ugt_vf_nxv8f32:5097; CHECK: # %bb.0:5098; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5099; CHECK-NEXT: vmfle.vf v12, v8, fa05100; CHECK-NEXT: vmnot.m v0, v125101; CHECK-NEXT: ret5102 %head = insertelement <vscale x 8 x float> poison, float %b, i32 05103 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5104 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp5105 ret <vscale x 8 x i1> %15106}5107 5108define <vscale x 8 x i1> @fcmps_ugt_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {5109; CHECK-LABEL: fcmps_ugt_fv_nxv8f32:5110; CHECK: # %bb.0:5111; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5112; CHECK-NEXT: vmfge.vf v12, v8, fa05113; CHECK-NEXT: vmnot.m v0, v125114; CHECK-NEXT: ret5115 %head = insertelement <vscale x 8 x float> poison, float %b, i32 05116 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5117 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp5118 ret <vscale x 8 x i1> %15119}5120 5121define <vscale x 8 x i1> @fcmps_uge_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {5122; CHECK-LABEL: fcmps_uge_vv_nxv8f32:5123; CHECK: # %bb.0:5124; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5125; CHECK-NEXT: vmflt.vv v16, v8, v125126; CHECK-NEXT: vmnot.m v0, v165127; CHECK-NEXT: ret5128 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp5129 ret <vscale x 8 x i1> %15130}5131 5132define <vscale x 8 x i1> @fcmps_uge_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {5133; CHECK-LABEL: fcmps_uge_vf_nxv8f32:5134; CHECK: # %bb.0:5135; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5136; CHECK-NEXT: vmflt.vf v12, v8, fa05137; CHECK-NEXT: vmnot.m v0, v125138; CHECK-NEXT: ret5139 %head = insertelement <vscale x 8 x float> poison, float %b, i32 05140 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5141 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp5142 ret <vscale x 8 x i1> %15143}5144 5145define <vscale x 8 x i1> @fcmps_uge_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {5146; CHECK-LABEL: fcmps_uge_fv_nxv8f32:5147; CHECK: # %bb.0:5148; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5149; CHECK-NEXT: vmfgt.vf v12, v8, fa05150; CHECK-NEXT: vmnot.m v0, v125151; CHECK-NEXT: ret5152 %head = insertelement <vscale x 8 x float> poison, float %b, i32 05153 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5154 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp5155 ret <vscale x 8 x i1> %15156}5157 5158define <vscale x 8 x i1> @fcmps_ult_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {5159; CHECK-LABEL: fcmps_ult_vv_nxv8f32:5160; CHECK: # %bb.0:5161; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5162; CHECK-NEXT: vmfle.vv v16, v12, v85163; CHECK-NEXT: vmnot.m v0, v165164; CHECK-NEXT: ret5165 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp5166 ret <vscale x 8 x i1> %15167}5168 5169define <vscale x 8 x i1> @fcmps_ult_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {5170; CHECK-LABEL: fcmps_ult_vf_nxv8f32:5171; CHECK: # %bb.0:5172; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5173; CHECK-NEXT: vmfge.vf v12, v8, fa05174; CHECK-NEXT: vmnot.m v0, v125175; CHECK-NEXT: ret5176 %head = insertelement <vscale x 8 x float> poison, float %b, i32 05177 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5178 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp5179 ret <vscale x 8 x i1> %15180}5181 5182define <vscale x 8 x i1> @fcmps_ult_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {5183; CHECK-LABEL: fcmps_ult_fv_nxv8f32:5184; CHECK: # %bb.0:5185; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5186; CHECK-NEXT: vmfle.vf v12, v8, fa05187; CHECK-NEXT: vmnot.m v0, v125188; CHECK-NEXT: ret5189 %head = insertelement <vscale x 8 x float> poison, float %b, i32 05190 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5191 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp5192 ret <vscale x 8 x i1> %15193}5194 5195define <vscale x 8 x i1> @fcmps_ule_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {5196; CHECK-LABEL: fcmps_ule_vv_nxv8f32:5197; CHECK: # %bb.0:5198; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5199; CHECK-NEXT: vmflt.vv v16, v12, v85200; CHECK-NEXT: vmnot.m v0, v165201; CHECK-NEXT: ret5202 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp5203 ret <vscale x 8 x i1> %15204}5205 5206define <vscale x 8 x i1> @fcmps_ule_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {5207; CHECK-LABEL: fcmps_ule_vf_nxv8f32:5208; CHECK: # %bb.0:5209; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5210; CHECK-NEXT: vmfgt.vf v12, v8, fa05211; CHECK-NEXT: vmnot.m v0, v125212; CHECK-NEXT: ret5213 %head = insertelement <vscale x 8 x float> poison, float %b, i32 05214 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5215 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp5216 ret <vscale x 8 x i1> %15217}5218 5219define <vscale x 8 x i1> @fcmps_ule_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {5220; CHECK-LABEL: fcmps_ule_fv_nxv8f32:5221; CHECK: # %bb.0:5222; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5223; CHECK-NEXT: vmflt.vf v12, v8, fa05224; CHECK-NEXT: vmnot.m v0, v125225; CHECK-NEXT: ret5226 %head = insertelement <vscale x 8 x float> poison, float %b, i32 05227 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5228 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp5229 ret <vscale x 8 x i1> %15230}5231 5232define <vscale x 8 x i1> @fcmps_une_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {5233; CHECK-LABEL: fcmps_une_vv_nxv8f32:5234; CHECK: # %bb.0:5235; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5236; CHECK-NEXT: vmfle.vv v16, v12, v85237; CHECK-NEXT: vmfle.vv v17, v8, v125238; CHECK-NEXT: vmnand.mm v0, v17, v165239; CHECK-NEXT: ret5240 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp5241 ret <vscale x 8 x i1> %15242}5243 5244define <vscale x 8 x i1> @fcmps_une_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {5245; CHECK-LABEL: fcmps_une_vf_nxv8f32:5246; CHECK: # %bb.0:5247; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5248; CHECK-NEXT: vmfge.vf v12, v8, fa05249; CHECK-NEXT: vmfle.vf v13, v8, fa05250; CHECK-NEXT: vmnand.mm v0, v13, v125251; CHECK-NEXT: ret5252 %head = insertelement <vscale x 8 x float> poison, float %b, i32 05253 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5254 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp5255 ret <vscale x 8 x i1> %15256}5257 5258define <vscale x 8 x i1> @fcmps_une_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {5259; CHECK-LABEL: fcmps_une_fv_nxv8f32:5260; CHECK: # %bb.0:5261; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5262; CHECK-NEXT: vmfle.vf v12, v8, fa05263; CHECK-NEXT: vmfge.vf v13, v8, fa05264; CHECK-NEXT: vmnand.mm v0, v13, v125265; CHECK-NEXT: ret5266 %head = insertelement <vscale x 8 x float> poison, float %b, i32 05267 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5268 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp5269 ret <vscale x 8 x i1> %15270}5271 5272define <vscale x 8 x i1> @fcmps_uno_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {5273; CHECK-LABEL: fcmps_uno_vv_nxv8f32:5274; CHECK: # %bb.0:5275; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5276; CHECK-NEXT: vmfle.vv v16, v12, v125277; CHECK-NEXT: vmfle.vv v12, v8, v85278; CHECK-NEXT: vmnot.m v8, v125279; CHECK-NEXT: vmorn.mm v0, v8, v165280; CHECK-NEXT: ret5281 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp5282 ret <vscale x 8 x i1> %15283}5284 5285define <vscale x 8 x i1> @fcmps_uno_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {5286; CHECK-LABEL: fcmps_uno_vf_nxv8f32:5287; CHECK: # %bb.0:5288; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5289; CHECK-NEXT: vfmv.v.f v12, fa05290; CHECK-NEXT: vmfle.vv v16, v8, v85291; CHECK-NEXT: vmfle.vf v8, v12, fa05292; CHECK-NEXT: vmnot.m v9, v165293; CHECK-NEXT: vmorn.mm v0, v9, v85294; CHECK-NEXT: ret5295 %head = insertelement <vscale x 8 x float> poison, float %b, i32 05296 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5297 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp5298 ret <vscale x 8 x i1> %15299}5300 5301define <vscale x 8 x i1> @fcmps_uno_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {5302; CHECK-LABEL: fcmps_uno_fv_nxv8f32:5303; CHECK: # %bb.0:5304; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma5305; CHECK-NEXT: vfmv.v.f v12, fa05306; CHECK-NEXT: vmfle.vf v16, v12, fa05307; CHECK-NEXT: vmnot.m v12, v165308; CHECK-NEXT: vmfle.vv v13, v8, v85309; CHECK-NEXT: vmorn.mm v0, v12, v135310; CHECK-NEXT: ret5311 %head = insertelement <vscale x 8 x float> poison, float %b, i32 05312 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer5313 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp5314 ret <vscale x 8 x i1> %15315}5316 5317define <vscale x 16 x i1> @fcmps_oeq_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {5318; CHECK-LABEL: fcmps_oeq_vv_nxv16f32:5319; CHECK: # %bb.0:5320; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5321; CHECK-NEXT: vmfle.vv v24, v16, v85322; CHECK-NEXT: vmfle.vv v25, v8, v165323; CHECK-NEXT: vmand.mm v0, v25, v245324; CHECK-NEXT: ret5325 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp5326 ret <vscale x 16 x i1> %15327}5328 5329define <vscale x 16 x i1> @fcmps_oeq_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5330; CHECK-LABEL: fcmps_oeq_vf_nxv16f32:5331; CHECK: # %bb.0:5332; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5333; CHECK-NEXT: vmfge.vf v16, v8, fa05334; CHECK-NEXT: vmfle.vf v17, v8, fa05335; CHECK-NEXT: vmand.mm v0, v17, v165336; CHECK-NEXT: ret5337 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05338 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5339 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp5340 ret <vscale x 16 x i1> %15341}5342 5343define <vscale x 16 x i1> @fcmps_oeq_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5344; CHECK-LABEL: fcmps_oeq_fv_nxv16f32:5345; CHECK: # %bb.0:5346; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5347; CHECK-NEXT: vmfle.vf v16, v8, fa05348; CHECK-NEXT: vmfge.vf v17, v8, fa05349; CHECK-NEXT: vmand.mm v0, v17, v165350; CHECK-NEXT: ret5351 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05352 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5353 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp5354 ret <vscale x 16 x i1> %15355}5356 5357define <vscale x 16 x i1> @fcmps_ogt_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {5358; CHECK-LABEL: fcmps_ogt_vv_nxv16f32:5359; CHECK: # %bb.0:5360; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5361; CHECK-NEXT: vmflt.vv v0, v16, v85362; CHECK-NEXT: ret5363 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp5364 ret <vscale x 16 x i1> %15365}5366 5367define <vscale x 16 x i1> @fcmps_ogt_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5368; CHECK-LABEL: fcmps_ogt_vf_nxv16f32:5369; CHECK: # %bb.0:5370; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5371; CHECK-NEXT: vmfgt.vf v0, v8, fa05372; CHECK-NEXT: ret5373 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05374 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5375 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp5376 ret <vscale x 16 x i1> %15377}5378 5379define <vscale x 16 x i1> @fcmps_ogt_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5380; CHECK-LABEL: fcmps_ogt_fv_nxv16f32:5381; CHECK: # %bb.0:5382; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5383; CHECK-NEXT: vmflt.vf v0, v8, fa05384; CHECK-NEXT: ret5385 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05386 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5387 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp5388 ret <vscale x 16 x i1> %15389}5390 5391define <vscale x 16 x i1> @fcmps_oge_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {5392; CHECK-LABEL: fcmps_oge_vv_nxv16f32:5393; CHECK: # %bb.0:5394; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5395; CHECK-NEXT: vmfle.vv v0, v16, v85396; CHECK-NEXT: ret5397 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp5398 ret <vscale x 16 x i1> %15399}5400 5401define <vscale x 16 x i1> @fcmps_oge_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5402; CHECK-LABEL: fcmps_oge_vf_nxv16f32:5403; CHECK: # %bb.0:5404; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5405; CHECK-NEXT: vmfge.vf v0, v8, fa05406; CHECK-NEXT: ret5407 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05408 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5409 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp5410 ret <vscale x 16 x i1> %15411}5412 5413define <vscale x 16 x i1> @fcmps_oge_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5414; CHECK-LABEL: fcmps_oge_fv_nxv16f32:5415; CHECK: # %bb.0:5416; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5417; CHECK-NEXT: vmfle.vf v0, v8, fa05418; CHECK-NEXT: ret5419 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05420 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5421 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp5422 ret <vscale x 16 x i1> %15423}5424 5425define <vscale x 16 x i1> @fcmps_olt_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {5426; CHECK-LABEL: fcmps_olt_vv_nxv16f32:5427; CHECK: # %bb.0:5428; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5429; CHECK-NEXT: vmflt.vv v0, v8, v165430; CHECK-NEXT: ret5431 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp5432 ret <vscale x 16 x i1> %15433}5434 5435define <vscale x 16 x i1> @fcmps_olt_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5436; CHECK-LABEL: fcmps_olt_vf_nxv16f32:5437; CHECK: # %bb.0:5438; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5439; CHECK-NEXT: vmflt.vf v0, v8, fa05440; CHECK-NEXT: ret5441 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05442 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5443 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp5444 ret <vscale x 16 x i1> %15445}5446 5447define <vscale x 16 x i1> @fcmps_olt_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5448; CHECK-LABEL: fcmps_olt_fv_nxv16f32:5449; CHECK: # %bb.0:5450; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5451; CHECK-NEXT: vmfgt.vf v0, v8, fa05452; CHECK-NEXT: ret5453 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05454 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5455 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp5456 ret <vscale x 16 x i1> %15457}5458 5459define <vscale x 16 x i1> @fcmps_ole_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {5460; CHECK-LABEL: fcmps_ole_vv_nxv16f32:5461; CHECK: # %bb.0:5462; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5463; CHECK-NEXT: vmfle.vv v0, v8, v165464; CHECK-NEXT: ret5465 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp5466 ret <vscale x 16 x i1> %15467}5468 5469define <vscale x 16 x i1> @fcmps_ole_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5470; CHECK-LABEL: fcmps_ole_vf_nxv16f32:5471; CHECK: # %bb.0:5472; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5473; CHECK-NEXT: vmfle.vf v0, v8, fa05474; CHECK-NEXT: ret5475 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05476 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5477 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp5478 ret <vscale x 16 x i1> %15479}5480 5481define <vscale x 16 x i1> @fcmps_ole_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5482; CHECK-LABEL: fcmps_ole_fv_nxv16f32:5483; CHECK: # %bb.0:5484; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5485; CHECK-NEXT: vmfge.vf v0, v8, fa05486; CHECK-NEXT: ret5487 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05488 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5489 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp5490 ret <vscale x 16 x i1> %15491}5492 5493define <vscale x 16 x i1> @fcmps_one_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {5494; CHECK-LABEL: fcmps_one_vv_nxv16f32:5495; CHECK: # %bb.0:5496; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5497; CHECK-NEXT: vmflt.vv v24, v8, v165498; CHECK-NEXT: vmflt.vv v25, v16, v85499; CHECK-NEXT: vmor.mm v0, v25, v245500; CHECK-NEXT: ret5501 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp5502 ret <vscale x 16 x i1> %15503}5504 5505define <vscale x 16 x i1> @fcmps_one_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5506; CHECK-LABEL: fcmps_one_vf_nxv16f32:5507; CHECK: # %bb.0:5508; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5509; CHECK-NEXT: vmflt.vf v16, v8, fa05510; CHECK-NEXT: vmfgt.vf v17, v8, fa05511; CHECK-NEXT: vmor.mm v0, v17, v165512; CHECK-NEXT: ret5513 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05514 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5515 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp5516 ret <vscale x 16 x i1> %15517}5518 5519define <vscale x 16 x i1> @fcmps_one_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5520; CHECK-LABEL: fcmps_one_fv_nxv16f32:5521; CHECK: # %bb.0:5522; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5523; CHECK-NEXT: vmfgt.vf v16, v8, fa05524; CHECK-NEXT: vmflt.vf v17, v8, fa05525; CHECK-NEXT: vmor.mm v0, v17, v165526; CHECK-NEXT: ret5527 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05528 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5529 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp5530 ret <vscale x 16 x i1> %15531}5532 5533define <vscale x 16 x i1> @fcmps_ord_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {5534; CHECK-LABEL: fcmps_ord_vv_nxv16f32:5535; CHECK: # %bb.0:5536; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5537; CHECK-NEXT: vmfle.vv v24, v16, v165538; CHECK-NEXT: vmfle.vv v16, v8, v85539; CHECK-NEXT: vmand.mm v0, v16, v245540; CHECK-NEXT: ret5541 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp5542 ret <vscale x 16 x i1> %15543}5544 5545define <vscale x 16 x i1> @fcmps_ord_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5546; CHECK-LABEL: fcmps_ord_vf_nxv16f32:5547; CHECK: # %bb.0:5548; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5549; CHECK-NEXT: vfmv.v.f v16, fa05550; CHECK-NEXT: vmfle.vf v24, v16, fa05551; CHECK-NEXT: vmfle.vv v16, v8, v85552; CHECK-NEXT: vmand.mm v0, v16, v245553; CHECK-NEXT: ret5554 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05555 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5556 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp5557 ret <vscale x 16 x i1> %15558}5559 5560define <vscale x 16 x i1> @fcmps_ord_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5561; CHECK-LABEL: fcmps_ord_fv_nxv16f32:5562; CHECK: # %bb.0:5563; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5564; CHECK-NEXT: vfmv.v.f v16, fa05565; CHECK-NEXT: vmfle.vf v24, v16, fa05566; CHECK-NEXT: vmfle.vv v16, v8, v85567; CHECK-NEXT: vmand.mm v0, v24, v165568; CHECK-NEXT: ret5569 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05570 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5571 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp5572 ret <vscale x 16 x i1> %15573}5574 5575define <vscale x 16 x i1> @fcmps_ueq_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {5576; CHECK-LABEL: fcmps_ueq_vv_nxv16f32:5577; CHECK: # %bb.0:5578; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5579; CHECK-NEXT: vmflt.vv v24, v8, v165580; CHECK-NEXT: vmflt.vv v25, v16, v85581; CHECK-NEXT: vmnor.mm v0, v25, v245582; CHECK-NEXT: ret5583 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp5584 ret <vscale x 16 x i1> %15585}5586 5587define <vscale x 16 x i1> @fcmps_ueq_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5588; CHECK-LABEL: fcmps_ueq_vf_nxv16f32:5589; CHECK: # %bb.0:5590; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5591; CHECK-NEXT: vmflt.vf v16, v8, fa05592; CHECK-NEXT: vmfgt.vf v17, v8, fa05593; CHECK-NEXT: vmnor.mm v0, v17, v165594; CHECK-NEXT: ret5595 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05596 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5597 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp5598 ret <vscale x 16 x i1> %15599}5600 5601define <vscale x 16 x i1> @fcmps_ueq_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5602; CHECK-LABEL: fcmps_ueq_fv_nxv16f32:5603; CHECK: # %bb.0:5604; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5605; CHECK-NEXT: vmfgt.vf v16, v8, fa05606; CHECK-NEXT: vmflt.vf v17, v8, fa05607; CHECK-NEXT: vmnor.mm v0, v17, v165608; CHECK-NEXT: ret5609 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05610 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5611 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp5612 ret <vscale x 16 x i1> %15613}5614 5615define <vscale x 16 x i1> @fcmps_ugt_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {5616; CHECK-LABEL: fcmps_ugt_vv_nxv16f32:5617; CHECK: # %bb.0:5618; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5619; CHECK-NEXT: vmfle.vv v24, v8, v165620; CHECK-NEXT: vmnot.m v0, v245621; CHECK-NEXT: ret5622 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp5623 ret <vscale x 16 x i1> %15624}5625 5626define <vscale x 16 x i1> @fcmps_ugt_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5627; CHECK-LABEL: fcmps_ugt_vf_nxv16f32:5628; CHECK: # %bb.0:5629; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5630; CHECK-NEXT: vmfle.vf v16, v8, fa05631; CHECK-NEXT: vmnot.m v0, v165632; CHECK-NEXT: ret5633 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05634 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5635 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp5636 ret <vscale x 16 x i1> %15637}5638 5639define <vscale x 16 x i1> @fcmps_ugt_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5640; CHECK-LABEL: fcmps_ugt_fv_nxv16f32:5641; CHECK: # %bb.0:5642; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5643; CHECK-NEXT: vmfge.vf v16, v8, fa05644; CHECK-NEXT: vmnot.m v0, v165645; CHECK-NEXT: ret5646 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05647 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5648 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp5649 ret <vscale x 16 x i1> %15650}5651 5652define <vscale x 16 x i1> @fcmps_uge_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {5653; CHECK-LABEL: fcmps_uge_vv_nxv16f32:5654; CHECK: # %bb.0:5655; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5656; CHECK-NEXT: vmflt.vv v24, v8, v165657; CHECK-NEXT: vmnot.m v0, v245658; CHECK-NEXT: ret5659 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp5660 ret <vscale x 16 x i1> %15661}5662 5663define <vscale x 16 x i1> @fcmps_uge_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5664; CHECK-LABEL: fcmps_uge_vf_nxv16f32:5665; CHECK: # %bb.0:5666; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5667; CHECK-NEXT: vmflt.vf v16, v8, fa05668; CHECK-NEXT: vmnot.m v0, v165669; CHECK-NEXT: ret5670 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05671 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5672 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp5673 ret <vscale x 16 x i1> %15674}5675 5676define <vscale x 16 x i1> @fcmps_uge_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5677; CHECK-LABEL: fcmps_uge_fv_nxv16f32:5678; CHECK: # %bb.0:5679; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5680; CHECK-NEXT: vmfgt.vf v16, v8, fa05681; CHECK-NEXT: vmnot.m v0, v165682; CHECK-NEXT: ret5683 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05684 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5685 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp5686 ret <vscale x 16 x i1> %15687}5688 5689define <vscale x 16 x i1> @fcmps_ult_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {5690; CHECK-LABEL: fcmps_ult_vv_nxv16f32:5691; CHECK: # %bb.0:5692; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5693; CHECK-NEXT: vmfle.vv v24, v16, v85694; CHECK-NEXT: vmnot.m v0, v245695; CHECK-NEXT: ret5696 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp5697 ret <vscale x 16 x i1> %15698}5699 5700define <vscale x 16 x i1> @fcmps_ult_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5701; CHECK-LABEL: fcmps_ult_vf_nxv16f32:5702; CHECK: # %bb.0:5703; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5704; CHECK-NEXT: vmfge.vf v16, v8, fa05705; CHECK-NEXT: vmnot.m v0, v165706; CHECK-NEXT: ret5707 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05708 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5709 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp5710 ret <vscale x 16 x i1> %15711}5712 5713define <vscale x 16 x i1> @fcmps_ult_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5714; CHECK-LABEL: fcmps_ult_fv_nxv16f32:5715; CHECK: # %bb.0:5716; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5717; CHECK-NEXT: vmfle.vf v16, v8, fa05718; CHECK-NEXT: vmnot.m v0, v165719; CHECK-NEXT: ret5720 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05721 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5722 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp5723 ret <vscale x 16 x i1> %15724}5725 5726define <vscale x 16 x i1> @fcmps_ule_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {5727; CHECK-LABEL: fcmps_ule_vv_nxv16f32:5728; CHECK: # %bb.0:5729; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5730; CHECK-NEXT: vmflt.vv v24, v16, v85731; CHECK-NEXT: vmnot.m v0, v245732; CHECK-NEXT: ret5733 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp5734 ret <vscale x 16 x i1> %15735}5736 5737define <vscale x 16 x i1> @fcmps_ule_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5738; CHECK-LABEL: fcmps_ule_vf_nxv16f32:5739; CHECK: # %bb.0:5740; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5741; CHECK-NEXT: vmfgt.vf v16, v8, fa05742; CHECK-NEXT: vmnot.m v0, v165743; CHECK-NEXT: ret5744 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05745 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5746 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp5747 ret <vscale x 16 x i1> %15748}5749 5750define <vscale x 16 x i1> @fcmps_ule_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5751; CHECK-LABEL: fcmps_ule_fv_nxv16f32:5752; CHECK: # %bb.0:5753; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5754; CHECK-NEXT: vmflt.vf v16, v8, fa05755; CHECK-NEXT: vmnot.m v0, v165756; CHECK-NEXT: ret5757 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05758 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5759 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp5760 ret <vscale x 16 x i1> %15761}5762 5763define <vscale x 16 x i1> @fcmps_une_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {5764; CHECK-LABEL: fcmps_une_vv_nxv16f32:5765; CHECK: # %bb.0:5766; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5767; CHECK-NEXT: vmfle.vv v24, v16, v85768; CHECK-NEXT: vmfle.vv v25, v8, v165769; CHECK-NEXT: vmnand.mm v0, v25, v245770; CHECK-NEXT: ret5771 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp5772 ret <vscale x 16 x i1> %15773}5774 5775define <vscale x 16 x i1> @fcmps_une_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5776; CHECK-LABEL: fcmps_une_vf_nxv16f32:5777; CHECK: # %bb.0:5778; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5779; CHECK-NEXT: vmfge.vf v16, v8, fa05780; CHECK-NEXT: vmfle.vf v17, v8, fa05781; CHECK-NEXT: vmnand.mm v0, v17, v165782; CHECK-NEXT: ret5783 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05784 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5785 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp5786 ret <vscale x 16 x i1> %15787}5788 5789define <vscale x 16 x i1> @fcmps_une_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5790; CHECK-LABEL: fcmps_une_fv_nxv16f32:5791; CHECK: # %bb.0:5792; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5793; CHECK-NEXT: vmfle.vf v16, v8, fa05794; CHECK-NEXT: vmfge.vf v17, v8, fa05795; CHECK-NEXT: vmnand.mm v0, v17, v165796; CHECK-NEXT: ret5797 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05798 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5799 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp5800 ret <vscale x 16 x i1> %15801}5802 5803define <vscale x 16 x i1> @fcmps_uno_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {5804; CHECK-LABEL: fcmps_uno_vv_nxv16f32:5805; CHECK: # %bb.0:5806; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5807; CHECK-NEXT: vmfle.vv v24, v16, v165808; CHECK-NEXT: vmfle.vv v16, v8, v85809; CHECK-NEXT: vmnot.m v8, v165810; CHECK-NEXT: vmorn.mm v0, v8, v245811; CHECK-NEXT: ret5812 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp5813 ret <vscale x 16 x i1> %15814}5815 5816define <vscale x 16 x i1> @fcmps_uno_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5817; CHECK-LABEL: fcmps_uno_vf_nxv16f32:5818; CHECK: # %bb.0:5819; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5820; CHECK-NEXT: vfmv.v.f v16, fa05821; CHECK-NEXT: vmfle.vv v24, v8, v85822; CHECK-NEXT: vmfle.vf v8, v16, fa05823; CHECK-NEXT: vmnot.m v9, v245824; CHECK-NEXT: vmorn.mm v0, v9, v85825; CHECK-NEXT: ret5826 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05827 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5828 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp5829 ret <vscale x 16 x i1> %15830}5831 5832define <vscale x 16 x i1> @fcmps_uno_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {5833; CHECK-LABEL: fcmps_uno_fv_nxv16f32:5834; CHECK: # %bb.0:5835; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma5836; CHECK-NEXT: vfmv.v.f v16, fa05837; CHECK-NEXT: vmfle.vf v24, v16, fa05838; CHECK-NEXT: vmnot.m v16, v245839; CHECK-NEXT: vmfle.vv v17, v8, v85840; CHECK-NEXT: vmorn.mm v0, v16, v175841; CHECK-NEXT: ret5842 %head = insertelement <vscale x 16 x float> poison, float %b, i32 05843 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer5844 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp5845 ret <vscale x 16 x i1> %15846}5847 5848define <vscale x 1 x i1> @fcmps_oeq_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {5849; CHECK-LABEL: fcmps_oeq_vv_nxv1f64:5850; CHECK: # %bb.0:5851; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma5852; CHECK-NEXT: vmfle.vv v10, v9, v85853; CHECK-NEXT: vmfle.vv v8, v8, v95854; CHECK-NEXT: vmand.mm v0, v8, v105855; CHECK-NEXT: ret5856 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp5857 ret <vscale x 1 x i1> %15858}5859 5860define <vscale x 1 x i1> @fcmps_oeq_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {5861; CHECK-LABEL: fcmps_oeq_vf_nxv1f64:5862; CHECK: # %bb.0:5863; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma5864; CHECK-NEXT: vmfge.vf v9, v8, fa05865; CHECK-NEXT: vmfle.vf v8, v8, fa05866; CHECK-NEXT: vmand.mm v0, v8, v95867; CHECK-NEXT: ret5868 %head = insertelement <vscale x 1 x double> poison, double %b, i32 05869 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5870 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp5871 ret <vscale x 1 x i1> %15872}5873 5874define <vscale x 1 x i1> @fcmps_oeq_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {5875; CHECK-LABEL: fcmps_oeq_fv_nxv1f64:5876; CHECK: # %bb.0:5877; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma5878; CHECK-NEXT: vmfle.vf v9, v8, fa05879; CHECK-NEXT: vmfge.vf v8, v8, fa05880; CHECK-NEXT: vmand.mm v0, v8, v95881; CHECK-NEXT: ret5882 %head = insertelement <vscale x 1 x double> poison, double %b, i32 05883 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5884 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp5885 ret <vscale x 1 x i1> %15886}5887 5888define <vscale x 1 x i1> @fcmps_ogt_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {5889; CHECK-LABEL: fcmps_ogt_vv_nxv1f64:5890; CHECK: # %bb.0:5891; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma5892; CHECK-NEXT: vmflt.vv v0, v9, v85893; CHECK-NEXT: ret5894 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp5895 ret <vscale x 1 x i1> %15896}5897 5898define <vscale x 1 x i1> @fcmps_ogt_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {5899; CHECK-LABEL: fcmps_ogt_vf_nxv1f64:5900; CHECK: # %bb.0:5901; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma5902; CHECK-NEXT: vmfgt.vf v0, v8, fa05903; CHECK-NEXT: ret5904 %head = insertelement <vscale x 1 x double> poison, double %b, i32 05905 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5906 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp5907 ret <vscale x 1 x i1> %15908}5909 5910define <vscale x 1 x i1> @fcmps_ogt_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {5911; CHECK-LABEL: fcmps_ogt_fv_nxv1f64:5912; CHECK: # %bb.0:5913; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma5914; CHECK-NEXT: vmflt.vf v0, v8, fa05915; CHECK-NEXT: ret5916 %head = insertelement <vscale x 1 x double> poison, double %b, i32 05917 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5918 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp5919 ret <vscale x 1 x i1> %15920}5921 5922define <vscale x 1 x i1> @fcmps_oge_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {5923; CHECK-LABEL: fcmps_oge_vv_nxv1f64:5924; CHECK: # %bb.0:5925; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma5926; CHECK-NEXT: vmfle.vv v0, v9, v85927; CHECK-NEXT: ret5928 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp5929 ret <vscale x 1 x i1> %15930}5931 5932define <vscale x 1 x i1> @fcmps_oge_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {5933; CHECK-LABEL: fcmps_oge_vf_nxv1f64:5934; CHECK: # %bb.0:5935; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma5936; CHECK-NEXT: vmfge.vf v0, v8, fa05937; CHECK-NEXT: ret5938 %head = insertelement <vscale x 1 x double> poison, double %b, i32 05939 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5940 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp5941 ret <vscale x 1 x i1> %15942}5943 5944define <vscale x 1 x i1> @fcmps_oge_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {5945; CHECK-LABEL: fcmps_oge_fv_nxv1f64:5946; CHECK: # %bb.0:5947; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma5948; CHECK-NEXT: vmfle.vf v0, v8, fa05949; CHECK-NEXT: ret5950 %head = insertelement <vscale x 1 x double> poison, double %b, i32 05951 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5952 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp5953 ret <vscale x 1 x i1> %15954}5955 5956define <vscale x 1 x i1> @fcmps_olt_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {5957; CHECK-LABEL: fcmps_olt_vv_nxv1f64:5958; CHECK: # %bb.0:5959; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma5960; CHECK-NEXT: vmflt.vv v0, v8, v95961; CHECK-NEXT: ret5962 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp5963 ret <vscale x 1 x i1> %15964}5965 5966define <vscale x 1 x i1> @fcmps_olt_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {5967; CHECK-LABEL: fcmps_olt_vf_nxv1f64:5968; CHECK: # %bb.0:5969; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma5970; CHECK-NEXT: vmflt.vf v0, v8, fa05971; CHECK-NEXT: ret5972 %head = insertelement <vscale x 1 x double> poison, double %b, i32 05973 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5974 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp5975 ret <vscale x 1 x i1> %15976}5977 5978define <vscale x 1 x i1> @fcmps_olt_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {5979; CHECK-LABEL: fcmps_olt_fv_nxv1f64:5980; CHECK: # %bb.0:5981; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma5982; CHECK-NEXT: vmfgt.vf v0, v8, fa05983; CHECK-NEXT: ret5984 %head = insertelement <vscale x 1 x double> poison, double %b, i32 05985 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer5986 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp5987 ret <vscale x 1 x i1> %15988}5989 5990define <vscale x 1 x i1> @fcmps_ole_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {5991; CHECK-LABEL: fcmps_ole_vv_nxv1f64:5992; CHECK: # %bb.0:5993; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma5994; CHECK-NEXT: vmfle.vv v0, v8, v95995; CHECK-NEXT: ret5996 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp5997 ret <vscale x 1 x i1> %15998}5999 6000define <vscale x 1 x i1> @fcmps_ole_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {6001; CHECK-LABEL: fcmps_ole_vf_nxv1f64:6002; CHECK: # %bb.0:6003; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6004; CHECK-NEXT: vmfle.vf v0, v8, fa06005; CHECK-NEXT: ret6006 %head = insertelement <vscale x 1 x double> poison, double %b, i32 06007 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer6008 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp6009 ret <vscale x 1 x i1> %16010}6011 6012define <vscale x 1 x i1> @fcmps_ole_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {6013; CHECK-LABEL: fcmps_ole_fv_nxv1f64:6014; CHECK: # %bb.0:6015; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6016; CHECK-NEXT: vmfge.vf v0, v8, fa06017; CHECK-NEXT: ret6018 %head = insertelement <vscale x 1 x double> poison, double %b, i32 06019 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer6020 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp6021 ret <vscale x 1 x i1> %16022}6023 6024define <vscale x 1 x i1> @fcmps_one_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {6025; CHECK-LABEL: fcmps_one_vv_nxv1f64:6026; CHECK: # %bb.0:6027; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6028; CHECK-NEXT: vmflt.vv v10, v8, v96029; CHECK-NEXT: vmflt.vv v8, v9, v86030; CHECK-NEXT: vmor.mm v0, v8, v106031; CHECK-NEXT: ret6032 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp6033 ret <vscale x 1 x i1> %16034}6035 6036define <vscale x 1 x i1> @fcmps_one_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {6037; CHECK-LABEL: fcmps_one_vf_nxv1f64:6038; CHECK: # %bb.0:6039; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6040; CHECK-NEXT: vmflt.vf v9, v8, fa06041; CHECK-NEXT: vmfgt.vf v8, v8, fa06042; CHECK-NEXT: vmor.mm v0, v8, v96043; CHECK-NEXT: ret6044 %head = insertelement <vscale x 1 x double> poison, double %b, i32 06045 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer6046 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp6047 ret <vscale x 1 x i1> %16048}6049 6050define <vscale x 1 x i1> @fcmps_one_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {6051; CHECK-LABEL: fcmps_one_fv_nxv1f64:6052; CHECK: # %bb.0:6053; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6054; CHECK-NEXT: vmfgt.vf v9, v8, fa06055; CHECK-NEXT: vmflt.vf v8, v8, fa06056; CHECK-NEXT: vmor.mm v0, v8, v96057; CHECK-NEXT: ret6058 %head = insertelement <vscale x 1 x double> poison, double %b, i32 06059 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer6060 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp6061 ret <vscale x 1 x i1> %16062}6063 6064define <vscale x 1 x i1> @fcmps_ord_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {6065; CHECK-LABEL: fcmps_ord_vv_nxv1f64:6066; CHECK: # %bb.0:6067; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6068; CHECK-NEXT: vmfle.vv v9, v9, v96069; CHECK-NEXT: vmfle.vv v8, v8, v86070; CHECK-NEXT: vmand.mm v0, v8, v96071; CHECK-NEXT: ret6072 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp6073 ret <vscale x 1 x i1> %16074}6075 6076define <vscale x 1 x i1> @fcmps_ord_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {6077; CHECK-LABEL: fcmps_ord_vf_nxv1f64:6078; CHECK: # %bb.0:6079; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6080; CHECK-NEXT: vfmv.v.f v9, fa06081; CHECK-NEXT: vmfle.vf v9, v9, fa06082; CHECK-NEXT: vmfle.vv v8, v8, v86083; CHECK-NEXT: vmand.mm v0, v8, v96084; CHECK-NEXT: ret6085 %head = insertelement <vscale x 1 x double> poison, double %b, i32 06086 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer6087 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp6088 ret <vscale x 1 x i1> %16089}6090 6091define <vscale x 1 x i1> @fcmps_ord_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {6092; CHECK-LABEL: fcmps_ord_fv_nxv1f64:6093; CHECK: # %bb.0:6094; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6095; CHECK-NEXT: vfmv.v.f v9, fa06096; CHECK-NEXT: vmfle.vf v9, v9, fa06097; CHECK-NEXT: vmfle.vv v8, v8, v86098; CHECK-NEXT: vmand.mm v0, v9, v86099; CHECK-NEXT: ret6100 %head = insertelement <vscale x 1 x double> poison, double %b, i32 06101 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer6102 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp6103 ret <vscale x 1 x i1> %16104}6105 6106define <vscale x 1 x i1> @fcmps_ueq_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {6107; CHECK-LABEL: fcmps_ueq_vv_nxv1f64:6108; CHECK: # %bb.0:6109; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6110; CHECK-NEXT: vmflt.vv v10, v8, v96111; CHECK-NEXT: vmflt.vv v8, v9, v86112; CHECK-NEXT: vmnor.mm v0, v8, v106113; CHECK-NEXT: ret6114 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp6115 ret <vscale x 1 x i1> %16116}6117 6118define <vscale x 1 x i1> @fcmps_ueq_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {6119; CHECK-LABEL: fcmps_ueq_vf_nxv1f64:6120; CHECK: # %bb.0:6121; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6122; CHECK-NEXT: vmflt.vf v9, v8, fa06123; CHECK-NEXT: vmfgt.vf v8, v8, fa06124; CHECK-NEXT: vmnor.mm v0, v8, v96125; CHECK-NEXT: ret6126 %head = insertelement <vscale x 1 x double> poison, double %b, i32 06127 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer6128 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp6129 ret <vscale x 1 x i1> %16130}6131 6132define <vscale x 1 x i1> @fcmps_ueq_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {6133; CHECK-LABEL: fcmps_ueq_fv_nxv1f64:6134; CHECK: # %bb.0:6135; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6136; CHECK-NEXT: vmfgt.vf v9, v8, fa06137; CHECK-NEXT: vmflt.vf v8, v8, fa06138; CHECK-NEXT: vmnor.mm v0, v8, v96139; CHECK-NEXT: ret6140 %head = insertelement <vscale x 1 x double> poison, double %b, i32 06141 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer6142 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp6143 ret <vscale x 1 x i1> %16144}6145 6146define <vscale x 1 x i1> @fcmps_ugt_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {6147; CHECK-LABEL: fcmps_ugt_vv_nxv1f64:6148; CHECK: # %bb.0:6149; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6150; CHECK-NEXT: vmfle.vv v8, v8, v96151; CHECK-NEXT: vmnot.m v0, v86152; CHECK-NEXT: ret6153 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp6154 ret <vscale x 1 x i1> %16155}6156 6157define <vscale x 1 x i1> @fcmps_ugt_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {6158; CHECK-LABEL: fcmps_ugt_vf_nxv1f64:6159; CHECK: # %bb.0:6160; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6161; CHECK-NEXT: vmfle.vf v8, v8, fa06162; CHECK-NEXT: vmnot.m v0, v86163; CHECK-NEXT: ret6164 %head = insertelement <vscale x 1 x double> poison, double %b, i32 06165 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer6166 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp6167 ret <vscale x 1 x i1> %16168}6169 6170define <vscale x 1 x i1> @fcmps_ugt_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {6171; CHECK-LABEL: fcmps_ugt_fv_nxv1f64:6172; CHECK: # %bb.0:6173; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6174; CHECK-NEXT: vmfge.vf v8, v8, fa06175; CHECK-NEXT: vmnot.m v0, v86176; CHECK-NEXT: ret6177 %head = insertelement <vscale x 1 x double> poison, double %b, i32 06178 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer6179 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp6180 ret <vscale x 1 x i1> %16181}6182 6183define <vscale x 1 x i1> @fcmps_uge_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {6184; CHECK-LABEL: fcmps_uge_vv_nxv1f64:6185; CHECK: # %bb.0:6186; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6187; CHECK-NEXT: vmflt.vv v8, v8, v96188; CHECK-NEXT: vmnot.m v0, v86189; CHECK-NEXT: ret6190 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp6191 ret <vscale x 1 x i1> %16192}6193 6194define <vscale x 1 x i1> @fcmps_uge_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {6195; CHECK-LABEL: fcmps_uge_vf_nxv1f64:6196; CHECK: # %bb.0:6197; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6198; CHECK-NEXT: vmflt.vf v8, v8, fa06199; CHECK-NEXT: vmnot.m v0, v86200; CHECK-NEXT: ret6201 %head = insertelement <vscale x 1 x double> poison, double %b, i32 06202 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer6203 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp6204 ret <vscale x 1 x i1> %16205}6206 6207define <vscale x 1 x i1> @fcmps_uge_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {6208; CHECK-LABEL: fcmps_uge_fv_nxv1f64:6209; CHECK: # %bb.0:6210; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6211; CHECK-NEXT: vmfgt.vf v8, v8, fa06212; CHECK-NEXT: vmnot.m v0, v86213; CHECK-NEXT: ret6214 %head = insertelement <vscale x 1 x double> poison, double %b, i32 06215 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer6216 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp6217 ret <vscale x 1 x i1> %16218}6219 6220define <vscale x 1 x i1> @fcmps_ult_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {6221; CHECK-LABEL: fcmps_ult_vv_nxv1f64:6222; CHECK: # %bb.0:6223; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6224; CHECK-NEXT: vmfle.vv v8, v9, v86225; CHECK-NEXT: vmnot.m v0, v86226; CHECK-NEXT: ret6227 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp6228 ret <vscale x 1 x i1> %16229}6230 6231define <vscale x 1 x i1> @fcmps_ult_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {6232; CHECK-LABEL: fcmps_ult_vf_nxv1f64:6233; CHECK: # %bb.0:6234; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6235; CHECK-NEXT: vmfge.vf v8, v8, fa06236; CHECK-NEXT: vmnot.m v0, v86237; CHECK-NEXT: ret6238 %head = insertelement <vscale x 1 x double> poison, double %b, i32 06239 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer6240 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp6241 ret <vscale x 1 x i1> %16242}6243 6244define <vscale x 1 x i1> @fcmps_ult_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {6245; CHECK-LABEL: fcmps_ult_fv_nxv1f64:6246; CHECK: # %bb.0:6247; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6248; CHECK-NEXT: vmfle.vf v8, v8, fa06249; CHECK-NEXT: vmnot.m v0, v86250; CHECK-NEXT: ret6251 %head = insertelement <vscale x 1 x double> poison, double %b, i32 06252 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer6253 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp6254 ret <vscale x 1 x i1> %16255}6256 6257define <vscale x 1 x i1> @fcmps_ule_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {6258; CHECK-LABEL: fcmps_ule_vv_nxv1f64:6259; CHECK: # %bb.0:6260; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6261; CHECK-NEXT: vmflt.vv v8, v9, v86262; CHECK-NEXT: vmnot.m v0, v86263; CHECK-NEXT: ret6264 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp6265 ret <vscale x 1 x i1> %16266}6267 6268define <vscale x 1 x i1> @fcmps_ule_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {6269; CHECK-LABEL: fcmps_ule_vf_nxv1f64:6270; CHECK: # %bb.0:6271; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6272; CHECK-NEXT: vmfgt.vf v8, v8, fa06273; CHECK-NEXT: vmnot.m v0, v86274; CHECK-NEXT: ret6275 %head = insertelement <vscale x 1 x double> poison, double %b, i32 06276 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer6277 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp6278 ret <vscale x 1 x i1> %16279}6280 6281define <vscale x 1 x i1> @fcmps_ule_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {6282; CHECK-LABEL: fcmps_ule_fv_nxv1f64:6283; CHECK: # %bb.0:6284; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6285; CHECK-NEXT: vmflt.vf v8, v8, fa06286; CHECK-NEXT: vmnot.m v0, v86287; CHECK-NEXT: ret6288 %head = insertelement <vscale x 1 x double> poison, double %b, i32 06289 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer6290 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp6291 ret <vscale x 1 x i1> %16292}6293 6294define <vscale x 1 x i1> @fcmps_une_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {6295; CHECK-LABEL: fcmps_une_vv_nxv1f64:6296; CHECK: # %bb.0:6297; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6298; CHECK-NEXT: vmfle.vv v10, v9, v86299; CHECK-NEXT: vmfle.vv v8, v8, v96300; CHECK-NEXT: vmnand.mm v0, v8, v106301; CHECK-NEXT: ret6302 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp6303 ret <vscale x 1 x i1> %16304}6305 6306define <vscale x 1 x i1> @fcmps_une_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {6307; CHECK-LABEL: fcmps_une_vf_nxv1f64:6308; CHECK: # %bb.0:6309; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6310; CHECK-NEXT: vmfge.vf v9, v8, fa06311; CHECK-NEXT: vmfle.vf v8, v8, fa06312; CHECK-NEXT: vmnand.mm v0, v8, v96313; CHECK-NEXT: ret6314 %head = insertelement <vscale x 1 x double> poison, double %b, i32 06315 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer6316 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp6317 ret <vscale x 1 x i1> %16318}6319 6320define <vscale x 1 x i1> @fcmps_une_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {6321; CHECK-LABEL: fcmps_une_fv_nxv1f64:6322; CHECK: # %bb.0:6323; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6324; CHECK-NEXT: vmfle.vf v9, v8, fa06325; CHECK-NEXT: vmfge.vf v8, v8, fa06326; CHECK-NEXT: vmnand.mm v0, v8, v96327; CHECK-NEXT: ret6328 %head = insertelement <vscale x 1 x double> poison, double %b, i32 06329 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer6330 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp6331 ret <vscale x 1 x i1> %16332}6333 6334define <vscale x 1 x i1> @fcmps_uno_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {6335; CHECK-LABEL: fcmps_uno_vv_nxv1f64:6336; CHECK: # %bb.0:6337; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6338; CHECK-NEXT: vmfle.vv v9, v9, v96339; CHECK-NEXT: vmfle.vv v8, v8, v86340; CHECK-NEXT: vmnot.m v8, v86341; CHECK-NEXT: vmorn.mm v0, v8, v96342; CHECK-NEXT: ret6343 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp6344 ret <vscale x 1 x i1> %16345}6346 6347define <vscale x 1 x i1> @fcmps_uno_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {6348; CHECK-LABEL: fcmps_uno_vf_nxv1f64:6349; CHECK: # %bb.0:6350; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6351; CHECK-NEXT: vfmv.v.f v9, fa06352; CHECK-NEXT: vmfle.vv v8, v8, v86353; CHECK-NEXT: vmfle.vf v9, v9, fa06354; CHECK-NEXT: vmnot.m v8, v86355; CHECK-NEXT: vmorn.mm v0, v8, v96356; CHECK-NEXT: ret6357 %head = insertelement <vscale x 1 x double> poison, double %b, i32 06358 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer6359 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp6360 ret <vscale x 1 x i1> %16361}6362 6363define <vscale x 1 x i1> @fcmps_uno_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {6364; CHECK-LABEL: fcmps_uno_fv_nxv1f64:6365; CHECK: # %bb.0:6366; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma6367; CHECK-NEXT: vfmv.v.f v9, fa06368; CHECK-NEXT: vmfle.vf v9, v9, fa06369; CHECK-NEXT: vmnot.m v9, v96370; CHECK-NEXT: vmfle.vv v8, v8, v86371; CHECK-NEXT: vmorn.mm v0, v9, v86372; CHECK-NEXT: ret6373 %head = insertelement <vscale x 1 x double> poison, double %b, i32 06374 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer6375 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp6376 ret <vscale x 1 x i1> %16377}6378 6379define <vscale x 2 x i1> @fcmps_oeq_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {6380; CHECK-LABEL: fcmps_oeq_vv_nxv2f64:6381; CHECK: # %bb.0:6382; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6383; CHECK-NEXT: vmfle.vv v12, v10, v86384; CHECK-NEXT: vmfle.vv v13, v8, v106385; CHECK-NEXT: vmand.mm v0, v13, v126386; CHECK-NEXT: ret6387 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp6388 ret <vscale x 2 x i1> %16389}6390 6391define <vscale x 2 x i1> @fcmps_oeq_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6392; CHECK-LABEL: fcmps_oeq_vf_nxv2f64:6393; CHECK: # %bb.0:6394; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6395; CHECK-NEXT: vmfge.vf v10, v8, fa06396; CHECK-NEXT: vmfle.vf v11, v8, fa06397; CHECK-NEXT: vmand.mm v0, v11, v106398; CHECK-NEXT: ret6399 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06400 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6401 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp6402 ret <vscale x 2 x i1> %16403}6404 6405define <vscale x 2 x i1> @fcmps_oeq_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6406; CHECK-LABEL: fcmps_oeq_fv_nxv2f64:6407; CHECK: # %bb.0:6408; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6409; CHECK-NEXT: vmfle.vf v10, v8, fa06410; CHECK-NEXT: vmfge.vf v11, v8, fa06411; CHECK-NEXT: vmand.mm v0, v11, v106412; CHECK-NEXT: ret6413 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06414 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6415 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp6416 ret <vscale x 2 x i1> %16417}6418 6419define <vscale x 2 x i1> @fcmps_ogt_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {6420; CHECK-LABEL: fcmps_ogt_vv_nxv2f64:6421; CHECK: # %bb.0:6422; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6423; CHECK-NEXT: vmflt.vv v0, v10, v86424; CHECK-NEXT: ret6425 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp6426 ret <vscale x 2 x i1> %16427}6428 6429define <vscale x 2 x i1> @fcmps_ogt_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6430; CHECK-LABEL: fcmps_ogt_vf_nxv2f64:6431; CHECK: # %bb.0:6432; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6433; CHECK-NEXT: vmfgt.vf v0, v8, fa06434; CHECK-NEXT: ret6435 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06436 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6437 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp6438 ret <vscale x 2 x i1> %16439}6440 6441define <vscale x 2 x i1> @fcmps_ogt_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6442; CHECK-LABEL: fcmps_ogt_fv_nxv2f64:6443; CHECK: # %bb.0:6444; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6445; CHECK-NEXT: vmflt.vf v0, v8, fa06446; CHECK-NEXT: ret6447 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06448 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6449 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp6450 ret <vscale x 2 x i1> %16451}6452 6453define <vscale x 2 x i1> @fcmps_oge_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {6454; CHECK-LABEL: fcmps_oge_vv_nxv2f64:6455; CHECK: # %bb.0:6456; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6457; CHECK-NEXT: vmfle.vv v0, v10, v86458; CHECK-NEXT: ret6459 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp6460 ret <vscale x 2 x i1> %16461}6462 6463define <vscale x 2 x i1> @fcmps_oge_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6464; CHECK-LABEL: fcmps_oge_vf_nxv2f64:6465; CHECK: # %bb.0:6466; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6467; CHECK-NEXT: vmfge.vf v0, v8, fa06468; CHECK-NEXT: ret6469 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06470 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6471 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp6472 ret <vscale x 2 x i1> %16473}6474 6475define <vscale x 2 x i1> @fcmps_oge_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6476; CHECK-LABEL: fcmps_oge_fv_nxv2f64:6477; CHECK: # %bb.0:6478; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6479; CHECK-NEXT: vmfle.vf v0, v8, fa06480; CHECK-NEXT: ret6481 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06482 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6483 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp6484 ret <vscale x 2 x i1> %16485}6486 6487define <vscale x 2 x i1> @fcmps_olt_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {6488; CHECK-LABEL: fcmps_olt_vv_nxv2f64:6489; CHECK: # %bb.0:6490; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6491; CHECK-NEXT: vmflt.vv v0, v8, v106492; CHECK-NEXT: ret6493 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp6494 ret <vscale x 2 x i1> %16495}6496 6497define <vscale x 2 x i1> @fcmps_olt_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6498; CHECK-LABEL: fcmps_olt_vf_nxv2f64:6499; CHECK: # %bb.0:6500; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6501; CHECK-NEXT: vmflt.vf v0, v8, fa06502; CHECK-NEXT: ret6503 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06504 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6505 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp6506 ret <vscale x 2 x i1> %16507}6508 6509define <vscale x 2 x i1> @fcmps_olt_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6510; CHECK-LABEL: fcmps_olt_fv_nxv2f64:6511; CHECK: # %bb.0:6512; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6513; CHECK-NEXT: vmfgt.vf v0, v8, fa06514; CHECK-NEXT: ret6515 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06516 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6517 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp6518 ret <vscale x 2 x i1> %16519}6520 6521define <vscale x 2 x i1> @fcmps_ole_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {6522; CHECK-LABEL: fcmps_ole_vv_nxv2f64:6523; CHECK: # %bb.0:6524; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6525; CHECK-NEXT: vmfle.vv v0, v8, v106526; CHECK-NEXT: ret6527 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp6528 ret <vscale x 2 x i1> %16529}6530 6531define <vscale x 2 x i1> @fcmps_ole_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6532; CHECK-LABEL: fcmps_ole_vf_nxv2f64:6533; CHECK: # %bb.0:6534; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6535; CHECK-NEXT: vmfle.vf v0, v8, fa06536; CHECK-NEXT: ret6537 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06538 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6539 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp6540 ret <vscale x 2 x i1> %16541}6542 6543define <vscale x 2 x i1> @fcmps_ole_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6544; CHECK-LABEL: fcmps_ole_fv_nxv2f64:6545; CHECK: # %bb.0:6546; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6547; CHECK-NEXT: vmfge.vf v0, v8, fa06548; CHECK-NEXT: ret6549 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06550 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6551 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp6552 ret <vscale x 2 x i1> %16553}6554 6555define <vscale x 2 x i1> @fcmps_one_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {6556; CHECK-LABEL: fcmps_one_vv_nxv2f64:6557; CHECK: # %bb.0:6558; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6559; CHECK-NEXT: vmflt.vv v12, v8, v106560; CHECK-NEXT: vmflt.vv v13, v10, v86561; CHECK-NEXT: vmor.mm v0, v13, v126562; CHECK-NEXT: ret6563 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp6564 ret <vscale x 2 x i1> %16565}6566 6567define <vscale x 2 x i1> @fcmps_one_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6568; CHECK-LABEL: fcmps_one_vf_nxv2f64:6569; CHECK: # %bb.0:6570; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6571; CHECK-NEXT: vmflt.vf v10, v8, fa06572; CHECK-NEXT: vmfgt.vf v11, v8, fa06573; CHECK-NEXT: vmor.mm v0, v11, v106574; CHECK-NEXT: ret6575 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06576 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6577 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp6578 ret <vscale x 2 x i1> %16579}6580 6581define <vscale x 2 x i1> @fcmps_one_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6582; CHECK-LABEL: fcmps_one_fv_nxv2f64:6583; CHECK: # %bb.0:6584; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6585; CHECK-NEXT: vmfgt.vf v10, v8, fa06586; CHECK-NEXT: vmflt.vf v11, v8, fa06587; CHECK-NEXT: vmor.mm v0, v11, v106588; CHECK-NEXT: ret6589 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06590 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6591 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp6592 ret <vscale x 2 x i1> %16593}6594 6595define <vscale x 2 x i1> @fcmps_ord_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {6596; CHECK-LABEL: fcmps_ord_vv_nxv2f64:6597; CHECK: # %bb.0:6598; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6599; CHECK-NEXT: vmfle.vv v12, v10, v106600; CHECK-NEXT: vmfle.vv v10, v8, v86601; CHECK-NEXT: vmand.mm v0, v10, v126602; CHECK-NEXT: ret6603 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp6604 ret <vscale x 2 x i1> %16605}6606 6607define <vscale x 2 x i1> @fcmps_ord_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6608; CHECK-LABEL: fcmps_ord_vf_nxv2f64:6609; CHECK: # %bb.0:6610; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6611; CHECK-NEXT: vfmv.v.f v10, fa06612; CHECK-NEXT: vmfle.vf v12, v10, fa06613; CHECK-NEXT: vmfle.vv v10, v8, v86614; CHECK-NEXT: vmand.mm v0, v10, v126615; CHECK-NEXT: ret6616 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06617 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6618 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp6619 ret <vscale x 2 x i1> %16620}6621 6622define <vscale x 2 x i1> @fcmps_ord_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6623; CHECK-LABEL: fcmps_ord_fv_nxv2f64:6624; CHECK: # %bb.0:6625; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6626; CHECK-NEXT: vfmv.v.f v10, fa06627; CHECK-NEXT: vmfle.vf v12, v10, fa06628; CHECK-NEXT: vmfle.vv v10, v8, v86629; CHECK-NEXT: vmand.mm v0, v12, v106630; CHECK-NEXT: ret6631 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06632 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6633 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp6634 ret <vscale x 2 x i1> %16635}6636 6637define <vscale x 2 x i1> @fcmps_ueq_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {6638; CHECK-LABEL: fcmps_ueq_vv_nxv2f64:6639; CHECK: # %bb.0:6640; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6641; CHECK-NEXT: vmflt.vv v12, v8, v106642; CHECK-NEXT: vmflt.vv v13, v10, v86643; CHECK-NEXT: vmnor.mm v0, v13, v126644; CHECK-NEXT: ret6645 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp6646 ret <vscale x 2 x i1> %16647}6648 6649define <vscale x 2 x i1> @fcmps_ueq_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6650; CHECK-LABEL: fcmps_ueq_vf_nxv2f64:6651; CHECK: # %bb.0:6652; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6653; CHECK-NEXT: vmflt.vf v10, v8, fa06654; CHECK-NEXT: vmfgt.vf v11, v8, fa06655; CHECK-NEXT: vmnor.mm v0, v11, v106656; CHECK-NEXT: ret6657 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06658 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6659 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp6660 ret <vscale x 2 x i1> %16661}6662 6663define <vscale x 2 x i1> @fcmps_ueq_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6664; CHECK-LABEL: fcmps_ueq_fv_nxv2f64:6665; CHECK: # %bb.0:6666; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6667; CHECK-NEXT: vmfgt.vf v10, v8, fa06668; CHECK-NEXT: vmflt.vf v11, v8, fa06669; CHECK-NEXT: vmnor.mm v0, v11, v106670; CHECK-NEXT: ret6671 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06672 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6673 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp6674 ret <vscale x 2 x i1> %16675}6676 6677define <vscale x 2 x i1> @fcmps_ugt_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {6678; CHECK-LABEL: fcmps_ugt_vv_nxv2f64:6679; CHECK: # %bb.0:6680; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6681; CHECK-NEXT: vmfle.vv v12, v8, v106682; CHECK-NEXT: vmnot.m v0, v126683; CHECK-NEXT: ret6684 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp6685 ret <vscale x 2 x i1> %16686}6687 6688define <vscale x 2 x i1> @fcmps_ugt_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6689; CHECK-LABEL: fcmps_ugt_vf_nxv2f64:6690; CHECK: # %bb.0:6691; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6692; CHECK-NEXT: vmfle.vf v10, v8, fa06693; CHECK-NEXT: vmnot.m v0, v106694; CHECK-NEXT: ret6695 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06696 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6697 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp6698 ret <vscale x 2 x i1> %16699}6700 6701define <vscale x 2 x i1> @fcmps_ugt_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6702; CHECK-LABEL: fcmps_ugt_fv_nxv2f64:6703; CHECK: # %bb.0:6704; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6705; CHECK-NEXT: vmfge.vf v10, v8, fa06706; CHECK-NEXT: vmnot.m v0, v106707; CHECK-NEXT: ret6708 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06709 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6710 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp6711 ret <vscale x 2 x i1> %16712}6713 6714define <vscale x 2 x i1> @fcmps_uge_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {6715; CHECK-LABEL: fcmps_uge_vv_nxv2f64:6716; CHECK: # %bb.0:6717; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6718; CHECK-NEXT: vmflt.vv v12, v8, v106719; CHECK-NEXT: vmnot.m v0, v126720; CHECK-NEXT: ret6721 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp6722 ret <vscale x 2 x i1> %16723}6724 6725define <vscale x 2 x i1> @fcmps_uge_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6726; CHECK-LABEL: fcmps_uge_vf_nxv2f64:6727; CHECK: # %bb.0:6728; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6729; CHECK-NEXT: vmflt.vf v10, v8, fa06730; CHECK-NEXT: vmnot.m v0, v106731; CHECK-NEXT: ret6732 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06733 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6734 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp6735 ret <vscale x 2 x i1> %16736}6737 6738define <vscale x 2 x i1> @fcmps_uge_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6739; CHECK-LABEL: fcmps_uge_fv_nxv2f64:6740; CHECK: # %bb.0:6741; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6742; CHECK-NEXT: vmfgt.vf v10, v8, fa06743; CHECK-NEXT: vmnot.m v0, v106744; CHECK-NEXT: ret6745 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06746 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6747 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp6748 ret <vscale x 2 x i1> %16749}6750 6751define <vscale x 2 x i1> @fcmps_ult_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {6752; CHECK-LABEL: fcmps_ult_vv_nxv2f64:6753; CHECK: # %bb.0:6754; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6755; CHECK-NEXT: vmfle.vv v12, v10, v86756; CHECK-NEXT: vmnot.m v0, v126757; CHECK-NEXT: ret6758 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp6759 ret <vscale x 2 x i1> %16760}6761 6762define <vscale x 2 x i1> @fcmps_ult_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6763; CHECK-LABEL: fcmps_ult_vf_nxv2f64:6764; CHECK: # %bb.0:6765; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6766; CHECK-NEXT: vmfge.vf v10, v8, fa06767; CHECK-NEXT: vmnot.m v0, v106768; CHECK-NEXT: ret6769 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06770 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6771 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp6772 ret <vscale x 2 x i1> %16773}6774 6775define <vscale x 2 x i1> @fcmps_ult_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6776; CHECK-LABEL: fcmps_ult_fv_nxv2f64:6777; CHECK: # %bb.0:6778; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6779; CHECK-NEXT: vmfle.vf v10, v8, fa06780; CHECK-NEXT: vmnot.m v0, v106781; CHECK-NEXT: ret6782 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06783 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6784 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp6785 ret <vscale x 2 x i1> %16786}6787 6788define <vscale x 2 x i1> @fcmps_ule_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {6789; CHECK-LABEL: fcmps_ule_vv_nxv2f64:6790; CHECK: # %bb.0:6791; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6792; CHECK-NEXT: vmflt.vv v12, v10, v86793; CHECK-NEXT: vmnot.m v0, v126794; CHECK-NEXT: ret6795 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp6796 ret <vscale x 2 x i1> %16797}6798 6799define <vscale x 2 x i1> @fcmps_ule_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6800; CHECK-LABEL: fcmps_ule_vf_nxv2f64:6801; CHECK: # %bb.0:6802; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6803; CHECK-NEXT: vmfgt.vf v10, v8, fa06804; CHECK-NEXT: vmnot.m v0, v106805; CHECK-NEXT: ret6806 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06807 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6808 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp6809 ret <vscale x 2 x i1> %16810}6811 6812define <vscale x 2 x i1> @fcmps_ule_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6813; CHECK-LABEL: fcmps_ule_fv_nxv2f64:6814; CHECK: # %bb.0:6815; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6816; CHECK-NEXT: vmflt.vf v10, v8, fa06817; CHECK-NEXT: vmnot.m v0, v106818; CHECK-NEXT: ret6819 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06820 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6821 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp6822 ret <vscale x 2 x i1> %16823}6824 6825define <vscale x 2 x i1> @fcmps_une_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {6826; CHECK-LABEL: fcmps_une_vv_nxv2f64:6827; CHECK: # %bb.0:6828; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6829; CHECK-NEXT: vmfle.vv v12, v10, v86830; CHECK-NEXT: vmfle.vv v13, v8, v106831; CHECK-NEXT: vmnand.mm v0, v13, v126832; CHECK-NEXT: ret6833 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp6834 ret <vscale x 2 x i1> %16835}6836 6837define <vscale x 2 x i1> @fcmps_une_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6838; CHECK-LABEL: fcmps_une_vf_nxv2f64:6839; CHECK: # %bb.0:6840; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6841; CHECK-NEXT: vmfge.vf v10, v8, fa06842; CHECK-NEXT: vmfle.vf v11, v8, fa06843; CHECK-NEXT: vmnand.mm v0, v11, v106844; CHECK-NEXT: ret6845 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06846 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6847 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp6848 ret <vscale x 2 x i1> %16849}6850 6851define <vscale x 2 x i1> @fcmps_une_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6852; CHECK-LABEL: fcmps_une_fv_nxv2f64:6853; CHECK: # %bb.0:6854; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6855; CHECK-NEXT: vmfle.vf v10, v8, fa06856; CHECK-NEXT: vmfge.vf v11, v8, fa06857; CHECK-NEXT: vmnand.mm v0, v11, v106858; CHECK-NEXT: ret6859 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06860 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6861 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp6862 ret <vscale x 2 x i1> %16863}6864 6865define <vscale x 2 x i1> @fcmps_uno_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {6866; CHECK-LABEL: fcmps_uno_vv_nxv2f64:6867; CHECK: # %bb.0:6868; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6869; CHECK-NEXT: vmfle.vv v12, v10, v106870; CHECK-NEXT: vmfle.vv v10, v8, v86871; CHECK-NEXT: vmnot.m v8, v106872; CHECK-NEXT: vmorn.mm v0, v8, v126873; CHECK-NEXT: ret6874 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp6875 ret <vscale x 2 x i1> %16876}6877 6878define <vscale x 2 x i1> @fcmps_uno_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6879; CHECK-LABEL: fcmps_uno_vf_nxv2f64:6880; CHECK: # %bb.0:6881; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6882; CHECK-NEXT: vfmv.v.f v10, fa06883; CHECK-NEXT: vmfle.vv v12, v8, v86884; CHECK-NEXT: vmfle.vf v8, v10, fa06885; CHECK-NEXT: vmnot.m v9, v126886; CHECK-NEXT: vmorn.mm v0, v9, v86887; CHECK-NEXT: ret6888 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06889 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6890 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp6891 ret <vscale x 2 x i1> %16892}6893 6894define <vscale x 2 x i1> @fcmps_uno_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {6895; CHECK-LABEL: fcmps_uno_fv_nxv2f64:6896; CHECK: # %bb.0:6897; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma6898; CHECK-NEXT: vfmv.v.f v10, fa06899; CHECK-NEXT: vmfle.vf v12, v10, fa06900; CHECK-NEXT: vmnot.m v10, v126901; CHECK-NEXT: vmfle.vv v11, v8, v86902; CHECK-NEXT: vmorn.mm v0, v10, v116903; CHECK-NEXT: ret6904 %head = insertelement <vscale x 2 x double> poison, double %b, i32 06905 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer6906 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp6907 ret <vscale x 2 x i1> %16908}6909 6910define <vscale x 4 x i1> @fcmps_oeq_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {6911; CHECK-LABEL: fcmps_oeq_vv_nxv4f64:6912; CHECK: # %bb.0:6913; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma6914; CHECK-NEXT: vmfle.vv v16, v12, v86915; CHECK-NEXT: vmfle.vv v17, v8, v126916; CHECK-NEXT: vmand.mm v0, v17, v166917; CHECK-NEXT: ret6918 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp6919 ret <vscale x 4 x i1> %16920}6921 6922define <vscale x 4 x i1> @fcmps_oeq_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {6923; CHECK-LABEL: fcmps_oeq_vf_nxv4f64:6924; CHECK: # %bb.0:6925; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma6926; CHECK-NEXT: vmfge.vf v12, v8, fa06927; CHECK-NEXT: vmfle.vf v13, v8, fa06928; CHECK-NEXT: vmand.mm v0, v13, v126929; CHECK-NEXT: ret6930 %head = insertelement <vscale x 4 x double> poison, double %b, i32 06931 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6932 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp6933 ret <vscale x 4 x i1> %16934}6935 6936define <vscale x 4 x i1> @fcmps_oeq_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {6937; CHECK-LABEL: fcmps_oeq_fv_nxv4f64:6938; CHECK: # %bb.0:6939; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma6940; CHECK-NEXT: vmfle.vf v12, v8, fa06941; CHECK-NEXT: vmfge.vf v13, v8, fa06942; CHECK-NEXT: vmand.mm v0, v13, v126943; CHECK-NEXT: ret6944 %head = insertelement <vscale x 4 x double> poison, double %b, i32 06945 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6946 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp6947 ret <vscale x 4 x i1> %16948}6949 6950define <vscale x 4 x i1> @fcmps_ogt_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {6951; CHECK-LABEL: fcmps_ogt_vv_nxv4f64:6952; CHECK: # %bb.0:6953; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma6954; CHECK-NEXT: vmflt.vv v0, v12, v86955; CHECK-NEXT: ret6956 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp6957 ret <vscale x 4 x i1> %16958}6959 6960define <vscale x 4 x i1> @fcmps_ogt_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {6961; CHECK-LABEL: fcmps_ogt_vf_nxv4f64:6962; CHECK: # %bb.0:6963; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma6964; CHECK-NEXT: vmfgt.vf v0, v8, fa06965; CHECK-NEXT: ret6966 %head = insertelement <vscale x 4 x double> poison, double %b, i32 06967 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6968 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp6969 ret <vscale x 4 x i1> %16970}6971 6972define <vscale x 4 x i1> @fcmps_ogt_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {6973; CHECK-LABEL: fcmps_ogt_fv_nxv4f64:6974; CHECK: # %bb.0:6975; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma6976; CHECK-NEXT: vmflt.vf v0, v8, fa06977; CHECK-NEXT: ret6978 %head = insertelement <vscale x 4 x double> poison, double %b, i32 06979 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer6980 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp6981 ret <vscale x 4 x i1> %16982}6983 6984define <vscale x 4 x i1> @fcmps_oge_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {6985; CHECK-LABEL: fcmps_oge_vv_nxv4f64:6986; CHECK: # %bb.0:6987; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma6988; CHECK-NEXT: vmfle.vv v0, v12, v86989; CHECK-NEXT: ret6990 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp6991 ret <vscale x 4 x i1> %16992}6993 6994define <vscale x 4 x i1> @fcmps_oge_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {6995; CHECK-LABEL: fcmps_oge_vf_nxv4f64:6996; CHECK: # %bb.0:6997; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma6998; CHECK-NEXT: vmfge.vf v0, v8, fa06999; CHECK-NEXT: ret7000 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07001 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7002 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp7003 ret <vscale x 4 x i1> %17004}7005 7006define <vscale x 4 x i1> @fcmps_oge_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7007; CHECK-LABEL: fcmps_oge_fv_nxv4f64:7008; CHECK: # %bb.0:7009; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7010; CHECK-NEXT: vmfle.vf v0, v8, fa07011; CHECK-NEXT: ret7012 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07013 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7014 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp7015 ret <vscale x 4 x i1> %17016}7017 7018define <vscale x 4 x i1> @fcmps_olt_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {7019; CHECK-LABEL: fcmps_olt_vv_nxv4f64:7020; CHECK: # %bb.0:7021; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7022; CHECK-NEXT: vmflt.vv v0, v8, v127023; CHECK-NEXT: ret7024 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp7025 ret <vscale x 4 x i1> %17026}7027 7028define <vscale x 4 x i1> @fcmps_olt_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7029; CHECK-LABEL: fcmps_olt_vf_nxv4f64:7030; CHECK: # %bb.0:7031; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7032; CHECK-NEXT: vmflt.vf v0, v8, fa07033; CHECK-NEXT: ret7034 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07035 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7036 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp7037 ret <vscale x 4 x i1> %17038}7039 7040define <vscale x 4 x i1> @fcmps_olt_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7041; CHECK-LABEL: fcmps_olt_fv_nxv4f64:7042; CHECK: # %bb.0:7043; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7044; CHECK-NEXT: vmfgt.vf v0, v8, fa07045; CHECK-NEXT: ret7046 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07047 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7048 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp7049 ret <vscale x 4 x i1> %17050}7051 7052define <vscale x 4 x i1> @fcmps_ole_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {7053; CHECK-LABEL: fcmps_ole_vv_nxv4f64:7054; CHECK: # %bb.0:7055; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7056; CHECK-NEXT: vmfle.vv v0, v8, v127057; CHECK-NEXT: ret7058 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp7059 ret <vscale x 4 x i1> %17060}7061 7062define <vscale x 4 x i1> @fcmps_ole_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7063; CHECK-LABEL: fcmps_ole_vf_nxv4f64:7064; CHECK: # %bb.0:7065; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7066; CHECK-NEXT: vmfle.vf v0, v8, fa07067; CHECK-NEXT: ret7068 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07069 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7070 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp7071 ret <vscale x 4 x i1> %17072}7073 7074define <vscale x 4 x i1> @fcmps_ole_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7075; CHECK-LABEL: fcmps_ole_fv_nxv4f64:7076; CHECK: # %bb.0:7077; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7078; CHECK-NEXT: vmfge.vf v0, v8, fa07079; CHECK-NEXT: ret7080 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07081 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7082 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp7083 ret <vscale x 4 x i1> %17084}7085 7086define <vscale x 4 x i1> @fcmps_one_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {7087; CHECK-LABEL: fcmps_one_vv_nxv4f64:7088; CHECK: # %bb.0:7089; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7090; CHECK-NEXT: vmflt.vv v16, v8, v127091; CHECK-NEXT: vmflt.vv v17, v12, v87092; CHECK-NEXT: vmor.mm v0, v17, v167093; CHECK-NEXT: ret7094 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp7095 ret <vscale x 4 x i1> %17096}7097 7098define <vscale x 4 x i1> @fcmps_one_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7099; CHECK-LABEL: fcmps_one_vf_nxv4f64:7100; CHECK: # %bb.0:7101; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7102; CHECK-NEXT: vmflt.vf v12, v8, fa07103; CHECK-NEXT: vmfgt.vf v13, v8, fa07104; CHECK-NEXT: vmor.mm v0, v13, v127105; CHECK-NEXT: ret7106 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07107 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7108 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp7109 ret <vscale x 4 x i1> %17110}7111 7112define <vscale x 4 x i1> @fcmps_one_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7113; CHECK-LABEL: fcmps_one_fv_nxv4f64:7114; CHECK: # %bb.0:7115; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7116; CHECK-NEXT: vmfgt.vf v12, v8, fa07117; CHECK-NEXT: vmflt.vf v13, v8, fa07118; CHECK-NEXT: vmor.mm v0, v13, v127119; CHECK-NEXT: ret7120 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07121 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7122 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp7123 ret <vscale x 4 x i1> %17124}7125 7126define <vscale x 4 x i1> @fcmps_ord_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {7127; CHECK-LABEL: fcmps_ord_vv_nxv4f64:7128; CHECK: # %bb.0:7129; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7130; CHECK-NEXT: vmfle.vv v16, v12, v127131; CHECK-NEXT: vmfle.vv v12, v8, v87132; CHECK-NEXT: vmand.mm v0, v12, v167133; CHECK-NEXT: ret7134 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp7135 ret <vscale x 4 x i1> %17136}7137 7138define <vscale x 4 x i1> @fcmps_ord_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7139; CHECK-LABEL: fcmps_ord_vf_nxv4f64:7140; CHECK: # %bb.0:7141; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7142; CHECK-NEXT: vfmv.v.f v12, fa07143; CHECK-NEXT: vmfle.vf v16, v12, fa07144; CHECK-NEXT: vmfle.vv v12, v8, v87145; CHECK-NEXT: vmand.mm v0, v12, v167146; CHECK-NEXT: ret7147 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07148 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7149 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp7150 ret <vscale x 4 x i1> %17151}7152 7153define <vscale x 4 x i1> @fcmps_ord_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7154; CHECK-LABEL: fcmps_ord_fv_nxv4f64:7155; CHECK: # %bb.0:7156; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7157; CHECK-NEXT: vfmv.v.f v12, fa07158; CHECK-NEXT: vmfle.vf v16, v12, fa07159; CHECK-NEXT: vmfle.vv v12, v8, v87160; CHECK-NEXT: vmand.mm v0, v16, v127161; CHECK-NEXT: ret7162 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07163 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7164 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp7165 ret <vscale x 4 x i1> %17166}7167 7168define <vscale x 4 x i1> @fcmps_ueq_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {7169; CHECK-LABEL: fcmps_ueq_vv_nxv4f64:7170; CHECK: # %bb.0:7171; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7172; CHECK-NEXT: vmflt.vv v16, v8, v127173; CHECK-NEXT: vmflt.vv v17, v12, v87174; CHECK-NEXT: vmnor.mm v0, v17, v167175; CHECK-NEXT: ret7176 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp7177 ret <vscale x 4 x i1> %17178}7179 7180define <vscale x 4 x i1> @fcmps_ueq_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7181; CHECK-LABEL: fcmps_ueq_vf_nxv4f64:7182; CHECK: # %bb.0:7183; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7184; CHECK-NEXT: vmflt.vf v12, v8, fa07185; CHECK-NEXT: vmfgt.vf v13, v8, fa07186; CHECK-NEXT: vmnor.mm v0, v13, v127187; CHECK-NEXT: ret7188 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07189 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7190 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp7191 ret <vscale x 4 x i1> %17192}7193 7194define <vscale x 4 x i1> @fcmps_ueq_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7195; CHECK-LABEL: fcmps_ueq_fv_nxv4f64:7196; CHECK: # %bb.0:7197; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7198; CHECK-NEXT: vmfgt.vf v12, v8, fa07199; CHECK-NEXT: vmflt.vf v13, v8, fa07200; CHECK-NEXT: vmnor.mm v0, v13, v127201; CHECK-NEXT: ret7202 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07203 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7204 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp7205 ret <vscale x 4 x i1> %17206}7207 7208define <vscale x 4 x i1> @fcmps_ugt_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {7209; CHECK-LABEL: fcmps_ugt_vv_nxv4f64:7210; CHECK: # %bb.0:7211; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7212; CHECK-NEXT: vmfle.vv v16, v8, v127213; CHECK-NEXT: vmnot.m v0, v167214; CHECK-NEXT: ret7215 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp7216 ret <vscale x 4 x i1> %17217}7218 7219define <vscale x 4 x i1> @fcmps_ugt_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7220; CHECK-LABEL: fcmps_ugt_vf_nxv4f64:7221; CHECK: # %bb.0:7222; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7223; CHECK-NEXT: vmfle.vf v12, v8, fa07224; CHECK-NEXT: vmnot.m v0, v127225; CHECK-NEXT: ret7226 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07227 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7228 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp7229 ret <vscale x 4 x i1> %17230}7231 7232define <vscale x 4 x i1> @fcmps_ugt_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7233; CHECK-LABEL: fcmps_ugt_fv_nxv4f64:7234; CHECK: # %bb.0:7235; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7236; CHECK-NEXT: vmfge.vf v12, v8, fa07237; CHECK-NEXT: vmnot.m v0, v127238; CHECK-NEXT: ret7239 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07240 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7241 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp7242 ret <vscale x 4 x i1> %17243}7244 7245define <vscale x 4 x i1> @fcmps_uge_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {7246; CHECK-LABEL: fcmps_uge_vv_nxv4f64:7247; CHECK: # %bb.0:7248; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7249; CHECK-NEXT: vmflt.vv v16, v8, v127250; CHECK-NEXT: vmnot.m v0, v167251; CHECK-NEXT: ret7252 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp7253 ret <vscale x 4 x i1> %17254}7255 7256define <vscale x 4 x i1> @fcmps_uge_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7257; CHECK-LABEL: fcmps_uge_vf_nxv4f64:7258; CHECK: # %bb.0:7259; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7260; CHECK-NEXT: vmflt.vf v12, v8, fa07261; CHECK-NEXT: vmnot.m v0, v127262; CHECK-NEXT: ret7263 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07264 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7265 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp7266 ret <vscale x 4 x i1> %17267}7268 7269define <vscale x 4 x i1> @fcmps_uge_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7270; CHECK-LABEL: fcmps_uge_fv_nxv4f64:7271; CHECK: # %bb.0:7272; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7273; CHECK-NEXT: vmfgt.vf v12, v8, fa07274; CHECK-NEXT: vmnot.m v0, v127275; CHECK-NEXT: ret7276 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07277 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7278 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp7279 ret <vscale x 4 x i1> %17280}7281 7282define <vscale x 4 x i1> @fcmps_ult_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {7283; CHECK-LABEL: fcmps_ult_vv_nxv4f64:7284; CHECK: # %bb.0:7285; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7286; CHECK-NEXT: vmfle.vv v16, v12, v87287; CHECK-NEXT: vmnot.m v0, v167288; CHECK-NEXT: ret7289 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp7290 ret <vscale x 4 x i1> %17291}7292 7293define <vscale x 4 x i1> @fcmps_ult_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7294; CHECK-LABEL: fcmps_ult_vf_nxv4f64:7295; CHECK: # %bb.0:7296; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7297; CHECK-NEXT: vmfge.vf v12, v8, fa07298; CHECK-NEXT: vmnot.m v0, v127299; CHECK-NEXT: ret7300 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07301 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7302 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp7303 ret <vscale x 4 x i1> %17304}7305 7306define <vscale x 4 x i1> @fcmps_ult_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7307; CHECK-LABEL: fcmps_ult_fv_nxv4f64:7308; CHECK: # %bb.0:7309; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7310; CHECK-NEXT: vmfle.vf v12, v8, fa07311; CHECK-NEXT: vmnot.m v0, v127312; CHECK-NEXT: ret7313 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07314 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7315 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp7316 ret <vscale x 4 x i1> %17317}7318 7319define <vscale x 4 x i1> @fcmps_ule_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {7320; CHECK-LABEL: fcmps_ule_vv_nxv4f64:7321; CHECK: # %bb.0:7322; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7323; CHECK-NEXT: vmflt.vv v16, v12, v87324; CHECK-NEXT: vmnot.m v0, v167325; CHECK-NEXT: ret7326 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp7327 ret <vscale x 4 x i1> %17328}7329 7330define <vscale x 4 x i1> @fcmps_ule_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7331; CHECK-LABEL: fcmps_ule_vf_nxv4f64:7332; CHECK: # %bb.0:7333; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7334; CHECK-NEXT: vmfgt.vf v12, v8, fa07335; CHECK-NEXT: vmnot.m v0, v127336; CHECK-NEXT: ret7337 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07338 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7339 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp7340 ret <vscale x 4 x i1> %17341}7342 7343define <vscale x 4 x i1> @fcmps_ule_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7344; CHECK-LABEL: fcmps_ule_fv_nxv4f64:7345; CHECK: # %bb.0:7346; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7347; CHECK-NEXT: vmflt.vf v12, v8, fa07348; CHECK-NEXT: vmnot.m v0, v127349; CHECK-NEXT: ret7350 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07351 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7352 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp7353 ret <vscale x 4 x i1> %17354}7355 7356define <vscale x 4 x i1> @fcmps_une_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {7357; CHECK-LABEL: fcmps_une_vv_nxv4f64:7358; CHECK: # %bb.0:7359; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7360; CHECK-NEXT: vmfle.vv v16, v12, v87361; CHECK-NEXT: vmfle.vv v17, v8, v127362; CHECK-NEXT: vmnand.mm v0, v17, v167363; CHECK-NEXT: ret7364 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp7365 ret <vscale x 4 x i1> %17366}7367 7368define <vscale x 4 x i1> @fcmps_une_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7369; CHECK-LABEL: fcmps_une_vf_nxv4f64:7370; CHECK: # %bb.0:7371; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7372; CHECK-NEXT: vmfge.vf v12, v8, fa07373; CHECK-NEXT: vmfle.vf v13, v8, fa07374; CHECK-NEXT: vmnand.mm v0, v13, v127375; CHECK-NEXT: ret7376 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07377 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7378 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp7379 ret <vscale x 4 x i1> %17380}7381 7382define <vscale x 4 x i1> @fcmps_une_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7383; CHECK-LABEL: fcmps_une_fv_nxv4f64:7384; CHECK: # %bb.0:7385; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7386; CHECK-NEXT: vmfle.vf v12, v8, fa07387; CHECK-NEXT: vmfge.vf v13, v8, fa07388; CHECK-NEXT: vmnand.mm v0, v13, v127389; CHECK-NEXT: ret7390 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07391 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7392 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp7393 ret <vscale x 4 x i1> %17394}7395 7396define <vscale x 4 x i1> @fcmps_uno_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {7397; CHECK-LABEL: fcmps_uno_vv_nxv4f64:7398; CHECK: # %bb.0:7399; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7400; CHECK-NEXT: vmfle.vv v16, v12, v127401; CHECK-NEXT: vmfle.vv v12, v8, v87402; CHECK-NEXT: vmnot.m v8, v127403; CHECK-NEXT: vmorn.mm v0, v8, v167404; CHECK-NEXT: ret7405 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp7406 ret <vscale x 4 x i1> %17407}7408 7409define <vscale x 4 x i1> @fcmps_uno_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7410; CHECK-LABEL: fcmps_uno_vf_nxv4f64:7411; CHECK: # %bb.0:7412; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7413; CHECK-NEXT: vfmv.v.f v12, fa07414; CHECK-NEXT: vmfle.vv v16, v8, v87415; CHECK-NEXT: vmfle.vf v8, v12, fa07416; CHECK-NEXT: vmnot.m v9, v167417; CHECK-NEXT: vmorn.mm v0, v9, v87418; CHECK-NEXT: ret7419 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07420 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7421 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp7422 ret <vscale x 4 x i1> %17423}7424 7425define <vscale x 4 x i1> @fcmps_uno_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {7426; CHECK-LABEL: fcmps_uno_fv_nxv4f64:7427; CHECK: # %bb.0:7428; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma7429; CHECK-NEXT: vfmv.v.f v12, fa07430; CHECK-NEXT: vmfle.vf v16, v12, fa07431; CHECK-NEXT: vmnot.m v12, v167432; CHECK-NEXT: vmfle.vv v13, v8, v87433; CHECK-NEXT: vmorn.mm v0, v12, v137434; CHECK-NEXT: ret7435 %head = insertelement <vscale x 4 x double> poison, double %b, i32 07436 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer7437 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp7438 ret <vscale x 4 x i1> %17439}7440 7441define <vscale x 8 x i1> @fcmps_oeq_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {7442; CHECK-LABEL: fcmps_oeq_vv_nxv8f64:7443; CHECK: # %bb.0:7444; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7445; CHECK-NEXT: vmfle.vv v24, v16, v87446; CHECK-NEXT: vmfle.vv v25, v8, v167447; CHECK-NEXT: vmand.mm v0, v25, v247448; CHECK-NEXT: ret7449 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp7450 ret <vscale x 8 x i1> %17451}7452 7453define <vscale x 8 x i1> @fcmps_oeq_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7454; CHECK-LABEL: fcmps_oeq_vf_nxv8f64:7455; CHECK: # %bb.0:7456; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7457; CHECK-NEXT: vmfge.vf v16, v8, fa07458; CHECK-NEXT: vmfle.vf v17, v8, fa07459; CHECK-NEXT: vmand.mm v0, v17, v167460; CHECK-NEXT: ret7461 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07462 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7463 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp7464 ret <vscale x 8 x i1> %17465}7466 7467define <vscale x 8 x i1> @fcmps_oeq_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7468; CHECK-LABEL: fcmps_oeq_fv_nxv8f64:7469; CHECK: # %bb.0:7470; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7471; CHECK-NEXT: vmfle.vf v16, v8, fa07472; CHECK-NEXT: vmfge.vf v17, v8, fa07473; CHECK-NEXT: vmand.mm v0, v17, v167474; CHECK-NEXT: ret7475 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07476 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7477 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp7478 ret <vscale x 8 x i1> %17479}7480 7481define <vscale x 8 x i1> @fcmps_ogt_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {7482; CHECK-LABEL: fcmps_ogt_vv_nxv8f64:7483; CHECK: # %bb.0:7484; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7485; CHECK-NEXT: vmflt.vv v0, v16, v87486; CHECK-NEXT: ret7487 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp7488 ret <vscale x 8 x i1> %17489}7490 7491define <vscale x 8 x i1> @fcmps_ogt_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7492; CHECK-LABEL: fcmps_ogt_vf_nxv8f64:7493; CHECK: # %bb.0:7494; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7495; CHECK-NEXT: vmfgt.vf v0, v8, fa07496; CHECK-NEXT: ret7497 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07498 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7499 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp7500 ret <vscale x 8 x i1> %17501}7502 7503define <vscale x 8 x i1> @fcmps_ogt_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7504; CHECK-LABEL: fcmps_ogt_fv_nxv8f64:7505; CHECK: # %bb.0:7506; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7507; CHECK-NEXT: vmflt.vf v0, v8, fa07508; CHECK-NEXT: ret7509 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07510 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7511 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp7512 ret <vscale x 8 x i1> %17513}7514 7515define <vscale x 8 x i1> @fcmps_oge_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {7516; CHECK-LABEL: fcmps_oge_vv_nxv8f64:7517; CHECK: # %bb.0:7518; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7519; CHECK-NEXT: vmfle.vv v0, v16, v87520; CHECK-NEXT: ret7521 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp7522 ret <vscale x 8 x i1> %17523}7524 7525define <vscale x 8 x i1> @fcmps_oge_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7526; CHECK-LABEL: fcmps_oge_vf_nxv8f64:7527; CHECK: # %bb.0:7528; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7529; CHECK-NEXT: vmfge.vf v0, v8, fa07530; CHECK-NEXT: ret7531 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07532 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7533 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp7534 ret <vscale x 8 x i1> %17535}7536 7537define <vscale x 8 x i1> @fcmps_oge_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7538; CHECK-LABEL: fcmps_oge_fv_nxv8f64:7539; CHECK: # %bb.0:7540; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7541; CHECK-NEXT: vmfle.vf v0, v8, fa07542; CHECK-NEXT: ret7543 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07544 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7545 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp7546 ret <vscale x 8 x i1> %17547}7548 7549define <vscale x 8 x i1> @fcmps_olt_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {7550; CHECK-LABEL: fcmps_olt_vv_nxv8f64:7551; CHECK: # %bb.0:7552; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7553; CHECK-NEXT: vmflt.vv v0, v8, v167554; CHECK-NEXT: ret7555 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp7556 ret <vscale x 8 x i1> %17557}7558 7559define <vscale x 8 x i1> @fcmps_olt_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7560; CHECK-LABEL: fcmps_olt_vf_nxv8f64:7561; CHECK: # %bb.0:7562; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7563; CHECK-NEXT: vmflt.vf v0, v8, fa07564; CHECK-NEXT: ret7565 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07566 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7567 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp7568 ret <vscale x 8 x i1> %17569}7570 7571define <vscale x 8 x i1> @fcmps_olt_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7572; CHECK-LABEL: fcmps_olt_fv_nxv8f64:7573; CHECK: # %bb.0:7574; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7575; CHECK-NEXT: vmfgt.vf v0, v8, fa07576; CHECK-NEXT: ret7577 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07578 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7579 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp7580 ret <vscale x 8 x i1> %17581}7582 7583define <vscale x 8 x i1> @fcmps_ole_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {7584; CHECK-LABEL: fcmps_ole_vv_nxv8f64:7585; CHECK: # %bb.0:7586; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7587; CHECK-NEXT: vmfle.vv v0, v8, v167588; CHECK-NEXT: ret7589 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp7590 ret <vscale x 8 x i1> %17591}7592 7593define <vscale x 8 x i1> @fcmps_ole_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7594; CHECK-LABEL: fcmps_ole_vf_nxv8f64:7595; CHECK: # %bb.0:7596; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7597; CHECK-NEXT: vmfle.vf v0, v8, fa07598; CHECK-NEXT: ret7599 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07600 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7601 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp7602 ret <vscale x 8 x i1> %17603}7604 7605define <vscale x 8 x i1> @fcmps_ole_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7606; CHECK-LABEL: fcmps_ole_fv_nxv8f64:7607; CHECK: # %bb.0:7608; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7609; CHECK-NEXT: vmfge.vf v0, v8, fa07610; CHECK-NEXT: ret7611 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07612 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7613 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp7614 ret <vscale x 8 x i1> %17615}7616 7617define <vscale x 8 x i1> @fcmps_one_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {7618; CHECK-LABEL: fcmps_one_vv_nxv8f64:7619; CHECK: # %bb.0:7620; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7621; CHECK-NEXT: vmflt.vv v24, v8, v167622; CHECK-NEXT: vmflt.vv v25, v16, v87623; CHECK-NEXT: vmor.mm v0, v25, v247624; CHECK-NEXT: ret7625 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp7626 ret <vscale x 8 x i1> %17627}7628 7629define <vscale x 8 x i1> @fcmps_one_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7630; CHECK-LABEL: fcmps_one_vf_nxv8f64:7631; CHECK: # %bb.0:7632; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7633; CHECK-NEXT: vmflt.vf v16, v8, fa07634; CHECK-NEXT: vmfgt.vf v17, v8, fa07635; CHECK-NEXT: vmor.mm v0, v17, v167636; CHECK-NEXT: ret7637 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07638 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7639 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp7640 ret <vscale x 8 x i1> %17641}7642 7643define <vscale x 8 x i1> @fcmps_one_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7644; CHECK-LABEL: fcmps_one_fv_nxv8f64:7645; CHECK: # %bb.0:7646; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7647; CHECK-NEXT: vmfgt.vf v16, v8, fa07648; CHECK-NEXT: vmflt.vf v17, v8, fa07649; CHECK-NEXT: vmor.mm v0, v17, v167650; CHECK-NEXT: ret7651 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07652 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7653 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp7654 ret <vscale x 8 x i1> %17655}7656 7657define <vscale x 8 x i1> @fcmps_ord_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {7658; CHECK-LABEL: fcmps_ord_vv_nxv8f64:7659; CHECK: # %bb.0:7660; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7661; CHECK-NEXT: vmfle.vv v24, v16, v167662; CHECK-NEXT: vmfle.vv v16, v8, v87663; CHECK-NEXT: vmand.mm v0, v16, v247664; CHECK-NEXT: ret7665 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp7666 ret <vscale x 8 x i1> %17667}7668 7669define <vscale x 8 x i1> @fcmps_ord_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7670; CHECK-LABEL: fcmps_ord_vf_nxv8f64:7671; CHECK: # %bb.0:7672; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7673; CHECK-NEXT: vfmv.v.f v16, fa07674; CHECK-NEXT: vmfle.vf v24, v16, fa07675; CHECK-NEXT: vmfle.vv v16, v8, v87676; CHECK-NEXT: vmand.mm v0, v16, v247677; CHECK-NEXT: ret7678 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07679 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7680 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp7681 ret <vscale x 8 x i1> %17682}7683 7684define <vscale x 8 x i1> @fcmps_ord_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7685; CHECK-LABEL: fcmps_ord_fv_nxv8f64:7686; CHECK: # %bb.0:7687; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7688; CHECK-NEXT: vfmv.v.f v16, fa07689; CHECK-NEXT: vmfle.vf v24, v16, fa07690; CHECK-NEXT: vmfle.vv v16, v8, v87691; CHECK-NEXT: vmand.mm v0, v24, v167692; CHECK-NEXT: ret7693 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07694 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7695 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp7696 ret <vscale x 8 x i1> %17697}7698 7699define <vscale x 8 x i1> @fcmps_ueq_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {7700; CHECK-LABEL: fcmps_ueq_vv_nxv8f64:7701; CHECK: # %bb.0:7702; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7703; CHECK-NEXT: vmflt.vv v24, v8, v167704; CHECK-NEXT: vmflt.vv v25, v16, v87705; CHECK-NEXT: vmnor.mm v0, v25, v247706; CHECK-NEXT: ret7707 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp7708 ret <vscale x 8 x i1> %17709}7710 7711define <vscale x 8 x i1> @fcmps_ueq_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7712; CHECK-LABEL: fcmps_ueq_vf_nxv8f64:7713; CHECK: # %bb.0:7714; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7715; CHECK-NEXT: vmflt.vf v16, v8, fa07716; CHECK-NEXT: vmfgt.vf v17, v8, fa07717; CHECK-NEXT: vmnor.mm v0, v17, v167718; CHECK-NEXT: ret7719 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07720 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7721 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp7722 ret <vscale x 8 x i1> %17723}7724 7725define <vscale x 8 x i1> @fcmps_ueq_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7726; CHECK-LABEL: fcmps_ueq_fv_nxv8f64:7727; CHECK: # %bb.0:7728; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7729; CHECK-NEXT: vmfgt.vf v16, v8, fa07730; CHECK-NEXT: vmflt.vf v17, v8, fa07731; CHECK-NEXT: vmnor.mm v0, v17, v167732; CHECK-NEXT: ret7733 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07734 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7735 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp7736 ret <vscale x 8 x i1> %17737}7738 7739define <vscale x 8 x i1> @fcmps_ugt_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {7740; CHECK-LABEL: fcmps_ugt_vv_nxv8f64:7741; CHECK: # %bb.0:7742; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7743; CHECK-NEXT: vmfle.vv v24, v8, v167744; CHECK-NEXT: vmnot.m v0, v247745; CHECK-NEXT: ret7746 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp7747 ret <vscale x 8 x i1> %17748}7749 7750define <vscale x 8 x i1> @fcmps_ugt_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7751; CHECK-LABEL: fcmps_ugt_vf_nxv8f64:7752; CHECK: # %bb.0:7753; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7754; CHECK-NEXT: vmfle.vf v16, v8, fa07755; CHECK-NEXT: vmnot.m v0, v167756; CHECK-NEXT: ret7757 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07758 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7759 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp7760 ret <vscale x 8 x i1> %17761}7762 7763define <vscale x 8 x i1> @fcmps_ugt_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7764; CHECK-LABEL: fcmps_ugt_fv_nxv8f64:7765; CHECK: # %bb.0:7766; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7767; CHECK-NEXT: vmfge.vf v16, v8, fa07768; CHECK-NEXT: vmnot.m v0, v167769; CHECK-NEXT: ret7770 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07771 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7772 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp7773 ret <vscale x 8 x i1> %17774}7775 7776define <vscale x 8 x i1> @fcmps_uge_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {7777; CHECK-LABEL: fcmps_uge_vv_nxv8f64:7778; CHECK: # %bb.0:7779; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7780; CHECK-NEXT: vmflt.vv v24, v8, v167781; CHECK-NEXT: vmnot.m v0, v247782; CHECK-NEXT: ret7783 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp7784 ret <vscale x 8 x i1> %17785}7786 7787define <vscale x 8 x i1> @fcmps_uge_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7788; CHECK-LABEL: fcmps_uge_vf_nxv8f64:7789; CHECK: # %bb.0:7790; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7791; CHECK-NEXT: vmflt.vf v16, v8, fa07792; CHECK-NEXT: vmnot.m v0, v167793; CHECK-NEXT: ret7794 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07795 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7796 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp7797 ret <vscale x 8 x i1> %17798}7799 7800define <vscale x 8 x i1> @fcmps_uge_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7801; CHECK-LABEL: fcmps_uge_fv_nxv8f64:7802; CHECK: # %bb.0:7803; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7804; CHECK-NEXT: vmfgt.vf v16, v8, fa07805; CHECK-NEXT: vmnot.m v0, v167806; CHECK-NEXT: ret7807 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07808 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7809 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp7810 ret <vscale x 8 x i1> %17811}7812 7813define <vscale x 8 x i1> @fcmps_ult_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {7814; CHECK-LABEL: fcmps_ult_vv_nxv8f64:7815; CHECK: # %bb.0:7816; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7817; CHECK-NEXT: vmfle.vv v24, v16, v87818; CHECK-NEXT: vmnot.m v0, v247819; CHECK-NEXT: ret7820 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp7821 ret <vscale x 8 x i1> %17822}7823 7824define <vscale x 8 x i1> @fcmps_ult_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7825; CHECK-LABEL: fcmps_ult_vf_nxv8f64:7826; CHECK: # %bb.0:7827; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7828; CHECK-NEXT: vmfge.vf v16, v8, fa07829; CHECK-NEXT: vmnot.m v0, v167830; CHECK-NEXT: ret7831 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07832 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7833 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp7834 ret <vscale x 8 x i1> %17835}7836 7837define <vscale x 8 x i1> @fcmps_ult_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7838; CHECK-LABEL: fcmps_ult_fv_nxv8f64:7839; CHECK: # %bb.0:7840; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7841; CHECK-NEXT: vmfle.vf v16, v8, fa07842; CHECK-NEXT: vmnot.m v0, v167843; CHECK-NEXT: ret7844 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07845 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7846 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp7847 ret <vscale x 8 x i1> %17848}7849 7850define <vscale x 8 x i1> @fcmps_ule_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {7851; CHECK-LABEL: fcmps_ule_vv_nxv8f64:7852; CHECK: # %bb.0:7853; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7854; CHECK-NEXT: vmflt.vv v24, v16, v87855; CHECK-NEXT: vmnot.m v0, v247856; CHECK-NEXT: ret7857 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp7858 ret <vscale x 8 x i1> %17859}7860 7861define <vscale x 8 x i1> @fcmps_ule_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7862; CHECK-LABEL: fcmps_ule_vf_nxv8f64:7863; CHECK: # %bb.0:7864; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7865; CHECK-NEXT: vmfgt.vf v16, v8, fa07866; CHECK-NEXT: vmnot.m v0, v167867; CHECK-NEXT: ret7868 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07869 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7870 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp7871 ret <vscale x 8 x i1> %17872}7873 7874define <vscale x 8 x i1> @fcmps_ule_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7875; CHECK-LABEL: fcmps_ule_fv_nxv8f64:7876; CHECK: # %bb.0:7877; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7878; CHECK-NEXT: vmflt.vf v16, v8, fa07879; CHECK-NEXT: vmnot.m v0, v167880; CHECK-NEXT: ret7881 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07882 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7883 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp7884 ret <vscale x 8 x i1> %17885}7886 7887define <vscale x 8 x i1> @fcmps_une_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {7888; CHECK-LABEL: fcmps_une_vv_nxv8f64:7889; CHECK: # %bb.0:7890; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7891; CHECK-NEXT: vmfle.vv v24, v16, v87892; CHECK-NEXT: vmfle.vv v25, v8, v167893; CHECK-NEXT: vmnand.mm v0, v25, v247894; CHECK-NEXT: ret7895 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp7896 ret <vscale x 8 x i1> %17897}7898 7899define <vscale x 8 x i1> @fcmps_une_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7900; CHECK-LABEL: fcmps_une_vf_nxv8f64:7901; CHECK: # %bb.0:7902; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7903; CHECK-NEXT: vmfge.vf v16, v8, fa07904; CHECK-NEXT: vmfle.vf v17, v8, fa07905; CHECK-NEXT: vmnand.mm v0, v17, v167906; CHECK-NEXT: ret7907 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07908 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7909 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp7910 ret <vscale x 8 x i1> %17911}7912 7913define <vscale x 8 x i1> @fcmps_une_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7914; CHECK-LABEL: fcmps_une_fv_nxv8f64:7915; CHECK: # %bb.0:7916; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7917; CHECK-NEXT: vmfle.vf v16, v8, fa07918; CHECK-NEXT: vmfge.vf v17, v8, fa07919; CHECK-NEXT: vmnand.mm v0, v17, v167920; CHECK-NEXT: ret7921 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07922 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7923 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp7924 ret <vscale x 8 x i1> %17925}7926 7927define <vscale x 8 x i1> @fcmps_uno_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {7928; CHECK-LABEL: fcmps_uno_vv_nxv8f64:7929; CHECK: # %bb.0:7930; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7931; CHECK-NEXT: vmfle.vv v24, v16, v167932; CHECK-NEXT: vmfle.vv v16, v8, v87933; CHECK-NEXT: vmnot.m v8, v167934; CHECK-NEXT: vmorn.mm v0, v8, v247935; CHECK-NEXT: ret7936 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp7937 ret <vscale x 8 x i1> %17938}7939 7940define <vscale x 8 x i1> @fcmps_uno_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7941; CHECK-LABEL: fcmps_uno_vf_nxv8f64:7942; CHECK: # %bb.0:7943; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7944; CHECK-NEXT: vfmv.v.f v16, fa07945; CHECK-NEXT: vmfle.vv v24, v8, v87946; CHECK-NEXT: vmfle.vf v8, v16, fa07947; CHECK-NEXT: vmnot.m v9, v247948; CHECK-NEXT: vmorn.mm v0, v9, v87949; CHECK-NEXT: ret7950 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07951 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7952 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp7953 ret <vscale x 8 x i1> %17954}7955 7956define <vscale x 8 x i1> @fcmps_uno_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {7957; CHECK-LABEL: fcmps_uno_fv_nxv8f64:7958; CHECK: # %bb.0:7959; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma7960; CHECK-NEXT: vfmv.v.f v16, fa07961; CHECK-NEXT: vmfle.vf v24, v16, fa07962; CHECK-NEXT: vmnot.m v16, v247963; CHECK-NEXT: vmfle.vv v17, v8, v87964; CHECK-NEXT: vmorn.mm v0, v16, v177965; CHECK-NEXT: ret7966 %head = insertelement <vscale x 8 x double> poison, double %b, i32 07967 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer7968 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp7969 ret <vscale x 8 x i1> %17970}7971