8013 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+d,+zvfh,+v -target-abi=ilp32d \3; RUN: -verify-machineinstrs < %s | FileCheck %s4; RUN: llc -mtriple=riscv64 -mattr=+d,+zvfh,+v -target-abi=lp64d \5; RUN: -verify-machineinstrs < %s | FileCheck %s6 7define <1 x i1> @fcmps_oeq_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {8; CHECK-LABEL: fcmps_oeq_vv_v1f16:9; CHECK: # %bb.0:10; CHECK-NEXT: vsetivli zero, 1, 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 <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp16 ret <1 x i1> %117}18 19define <1 x i1> @fcmps_oeq_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {20; CHECK-LABEL: fcmps_oeq_vf_v1f16:21; CHECK: # %bb.0:22; CHECK-NEXT: vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 028 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer29 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp30 ret <1 x i1> %131}32 33define <1 x i1> @fcmps_oeq_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {34; CHECK-LABEL: fcmps_oeq_fv_v1f16:35; CHECK: # %bb.0:36; CHECK-NEXT: vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 042 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer43 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp44 ret <1 x i1> %145}46 47define <1 x i1> @fcmps_ogt_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {48; CHECK-LABEL: fcmps_ogt_vv_v1f16:49; CHECK: # %bb.0:50; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma51; CHECK-NEXT: vmflt.vv v0, v9, v852; CHECK-NEXT: ret53 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp54 ret <1 x i1> %155}56 57define <1 x i1> @fcmps_ogt_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {58; CHECK-LABEL: fcmps_ogt_vf_v1f16:59; CHECK: # %bb.0:60; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma61; CHECK-NEXT: vmfgt.vf v0, v8, fa062; CHECK-NEXT: ret63 %head = insertelement <1 x half> poison, half %b, i32 064 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer65 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp66 ret <1 x i1> %167}68 69define <1 x i1> @fcmps_ogt_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {70; CHECK-LABEL: fcmps_ogt_fv_v1f16:71; CHECK: # %bb.0:72; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma73; CHECK-NEXT: vmflt.vf v0, v8, fa074; CHECK-NEXT: ret75 %head = insertelement <1 x half> poison, half %b, i32 076 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer77 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp78 ret <1 x i1> %179}80 81define <1 x i1> @fcmps_oge_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {82; CHECK-LABEL: fcmps_oge_vv_v1f16:83; CHECK: # %bb.0:84; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma85; CHECK-NEXT: vmfle.vv v0, v9, v886; CHECK-NEXT: ret87 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp88 ret <1 x i1> %189}90 91define <1 x i1> @fcmps_oge_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {92; CHECK-LABEL: fcmps_oge_vf_v1f16:93; CHECK: # %bb.0:94; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma95; CHECK-NEXT: vmfge.vf v0, v8, fa096; CHECK-NEXT: ret97 %head = insertelement <1 x half> poison, half %b, i32 098 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer99 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp100 ret <1 x i1> %1101}102 103define <1 x i1> @fcmps_oge_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {104; CHECK-LABEL: fcmps_oge_fv_v1f16:105; CHECK: # %bb.0:106; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma107; CHECK-NEXT: vmfle.vf v0, v8, fa0108; CHECK-NEXT: ret109 %head = insertelement <1 x half> poison, half %b, i32 0110 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer111 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp112 ret <1 x i1> %1113}114 115define <1 x i1> @fcmps_olt_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {116; CHECK-LABEL: fcmps_olt_vv_v1f16:117; CHECK: # %bb.0:118; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma119; CHECK-NEXT: vmflt.vv v0, v8, v9120; CHECK-NEXT: ret121 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp122 ret <1 x i1> %1123}124 125define <1 x i1> @fcmps_olt_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {126; CHECK-LABEL: fcmps_olt_vf_v1f16:127; CHECK: # %bb.0:128; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma129; CHECK-NEXT: vmflt.vf v0, v8, fa0130; CHECK-NEXT: ret131 %head = insertelement <1 x half> poison, half %b, i32 0132 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer133 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp134 ret <1 x i1> %1135}136 137define <1 x i1> @fcmps_olt_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {138; CHECK-LABEL: fcmps_olt_fv_v1f16:139; CHECK: # %bb.0:140; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma141; CHECK-NEXT: vmfgt.vf v0, v8, fa0142; CHECK-NEXT: ret143 %head = insertelement <1 x half> poison, half %b, i32 0144 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer145 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp146 ret <1 x i1> %1147}148 149define <1 x i1> @fcmps_ole_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {150; CHECK-LABEL: fcmps_ole_vv_v1f16:151; CHECK: # %bb.0:152; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma153; CHECK-NEXT: vmfle.vv v0, v8, v9154; CHECK-NEXT: ret155 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp156 ret <1 x i1> %1157}158 159define <1 x i1> @fcmps_ole_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {160; CHECK-LABEL: fcmps_ole_vf_v1f16:161; CHECK: # %bb.0:162; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma163; CHECK-NEXT: vmfle.vf v0, v8, fa0164; CHECK-NEXT: ret165 %head = insertelement <1 x half> poison, half %b, i32 0166 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer167 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp168 ret <1 x i1> %1169}170 171define <1 x i1> @fcmps_ole_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {172; CHECK-LABEL: fcmps_ole_fv_v1f16:173; CHECK: # %bb.0:174; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma175; CHECK-NEXT: vmfge.vf v0, v8, fa0176; CHECK-NEXT: ret177 %head = insertelement <1 x half> poison, half %b, i32 0178 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer179 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp180 ret <1 x i1> %1181}182 183define <1 x i1> @fcmps_one_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {184; CHECK-LABEL: fcmps_one_vv_v1f16:185; CHECK: # %bb.0:186; CHECK-NEXT: vsetivli zero, 1, 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 <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp192 ret <1 x i1> %1193}194 195define <1 x i1> @fcmps_one_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {196; CHECK-LABEL: fcmps_one_vf_v1f16:197; CHECK: # %bb.0:198; CHECK-NEXT: vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 0204 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer205 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp206 ret <1 x i1> %1207}208 209define <1 x i1> @fcmps_one_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {210; CHECK-LABEL: fcmps_one_fv_v1f16:211; CHECK: # %bb.0:212; CHECK-NEXT: vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 0218 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer219 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp220 ret <1 x i1> %1221}222 223define <1 x i1> @fcmps_ord_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {224; CHECK-LABEL: fcmps_ord_vv_v1f16:225; CHECK: # %bb.0:226; CHECK-NEXT: vsetivli zero, 1, 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 <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp232 ret <1 x i1> %1233}234 235define <1 x i1> @fcmps_ord_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {236; CHECK-LABEL: fcmps_ord_vf_v1f16:237; CHECK: # %bb.0:238; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma239; CHECK-NEXT: vfmv.s.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 <1 x half> poison, half %b, i32 0245 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer246 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp247 ret <1 x i1> %1248}249 250define <1 x i1> @fcmps_ord_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {251; CHECK-LABEL: fcmps_ord_fv_v1f16:252; CHECK: # %bb.0:253; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma254; CHECK-NEXT: vfmv.s.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 <1 x half> poison, half %b, i32 0260 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer261 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp262 ret <1 x i1> %1263}264 265define <1 x i1> @fcmps_ueq_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {266; CHECK-LABEL: fcmps_ueq_vv_v1f16:267; CHECK: # %bb.0:268; CHECK-NEXT: vsetivli zero, 1, 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 <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp274 ret <1 x i1> %1275}276 277define <1 x i1> @fcmps_ueq_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {278; CHECK-LABEL: fcmps_ueq_vf_v1f16:279; CHECK: # %bb.0:280; CHECK-NEXT: vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 0286 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer287 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp288 ret <1 x i1> %1289}290 291define <1 x i1> @fcmps_ueq_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {292; CHECK-LABEL: fcmps_ueq_fv_v1f16:293; CHECK: # %bb.0:294; CHECK-NEXT: vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 0300 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer301 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp302 ret <1 x i1> %1303}304 305define <1 x i1> @fcmps_ugt_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {306; CHECK-LABEL: fcmps_ugt_vv_v1f16:307; CHECK: # %bb.0:308; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma309; CHECK-NEXT: vmfle.vv v8, v8, v9310; CHECK-NEXT: vmnot.m v0, v8311; CHECK-NEXT: ret312 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp313 ret <1 x i1> %1314}315 316define <1 x i1> @fcmps_ugt_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {317; CHECK-LABEL: fcmps_ugt_vf_v1f16:318; CHECK: # %bb.0:319; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma320; CHECK-NEXT: vmfle.vf v8, v8, fa0321; CHECK-NEXT: vmnot.m v0, v8322; CHECK-NEXT: ret323 %head = insertelement <1 x half> poison, half %b, i32 0324 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer325 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp326 ret <1 x i1> %1327}328 329define <1 x i1> @fcmps_ugt_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {330; CHECK-LABEL: fcmps_ugt_fv_v1f16:331; CHECK: # %bb.0:332; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma333; CHECK-NEXT: vmfge.vf v8, v8, fa0334; CHECK-NEXT: vmnot.m v0, v8335; CHECK-NEXT: ret336 %head = insertelement <1 x half> poison, half %b, i32 0337 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer338 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp339 ret <1 x i1> %1340}341 342define <1 x i1> @fcmps_uge_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {343; CHECK-LABEL: fcmps_uge_vv_v1f16:344; CHECK: # %bb.0:345; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma346; CHECK-NEXT: vmflt.vv v8, v8, v9347; CHECK-NEXT: vmnot.m v0, v8348; CHECK-NEXT: ret349 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp350 ret <1 x i1> %1351}352 353define <1 x i1> @fcmps_uge_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {354; CHECK-LABEL: fcmps_uge_vf_v1f16:355; CHECK: # %bb.0:356; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma357; CHECK-NEXT: vmflt.vf v8, v8, fa0358; CHECK-NEXT: vmnot.m v0, v8359; CHECK-NEXT: ret360 %head = insertelement <1 x half> poison, half %b, i32 0361 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer362 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp363 ret <1 x i1> %1364}365 366define <1 x i1> @fcmps_uge_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {367; CHECK-LABEL: fcmps_uge_fv_v1f16:368; CHECK: # %bb.0:369; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma370; CHECK-NEXT: vmfgt.vf v8, v8, fa0371; CHECK-NEXT: vmnot.m v0, v8372; CHECK-NEXT: ret373 %head = insertelement <1 x half> poison, half %b, i32 0374 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer375 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp376 ret <1 x i1> %1377}378 379define <1 x i1> @fcmps_ult_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {380; CHECK-LABEL: fcmps_ult_vv_v1f16:381; CHECK: # %bb.0:382; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma383; CHECK-NEXT: vmfle.vv v8, v9, v8384; CHECK-NEXT: vmnot.m v0, v8385; CHECK-NEXT: ret386 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp387 ret <1 x i1> %1388}389 390define <1 x i1> @fcmps_ult_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {391; CHECK-LABEL: fcmps_ult_vf_v1f16:392; CHECK: # %bb.0:393; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma394; CHECK-NEXT: vmfge.vf v8, v8, fa0395; CHECK-NEXT: vmnot.m v0, v8396; CHECK-NEXT: ret397 %head = insertelement <1 x half> poison, half %b, i32 0398 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer399 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp400 ret <1 x i1> %1401}402 403define <1 x i1> @fcmps_ult_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {404; CHECK-LABEL: fcmps_ult_fv_v1f16:405; CHECK: # %bb.0:406; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma407; CHECK-NEXT: vmfle.vf v8, v8, fa0408; CHECK-NEXT: vmnot.m v0, v8409; CHECK-NEXT: ret410 %head = insertelement <1 x half> poison, half %b, i32 0411 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer412 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp413 ret <1 x i1> %1414}415 416define <1 x i1> @fcmps_ule_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {417; CHECK-LABEL: fcmps_ule_vv_v1f16:418; CHECK: # %bb.0:419; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma420; CHECK-NEXT: vmflt.vv v8, v9, v8421; CHECK-NEXT: vmnot.m v0, v8422; CHECK-NEXT: ret423 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp424 ret <1 x i1> %1425}426 427define <1 x i1> @fcmps_ule_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {428; CHECK-LABEL: fcmps_ule_vf_v1f16:429; CHECK: # %bb.0:430; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma431; CHECK-NEXT: vmfgt.vf v8, v8, fa0432; CHECK-NEXT: vmnot.m v0, v8433; CHECK-NEXT: ret434 %head = insertelement <1 x half> poison, half %b, i32 0435 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer436 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp437 ret <1 x i1> %1438}439 440define <1 x i1> @fcmps_ule_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {441; CHECK-LABEL: fcmps_ule_fv_v1f16:442; CHECK: # %bb.0:443; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma444; CHECK-NEXT: vmflt.vf v8, v8, fa0445; CHECK-NEXT: vmnot.m v0, v8446; CHECK-NEXT: ret447 %head = insertelement <1 x half> poison, half %b, i32 0448 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer449 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp450 ret <1 x i1> %1451}452 453define <1 x i1> @fcmps_une_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {454; CHECK-LABEL: fcmps_une_vv_v1f16:455; CHECK: # %bb.0:456; CHECK-NEXT: vsetivli zero, 1, 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 <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp462 ret <1 x i1> %1463}464 465define <1 x i1> @fcmps_une_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {466; CHECK-LABEL: fcmps_une_vf_v1f16:467; CHECK: # %bb.0:468; CHECK-NEXT: vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 0474 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer475 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp476 ret <1 x i1> %1477}478 479define <1 x i1> @fcmps_une_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {480; CHECK-LABEL: fcmps_une_fv_v1f16:481; CHECK: # %bb.0:482; CHECK-NEXT: vsetivli zero, 1, 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 <1 x half> poison, half %b, i32 0488 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer489 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp490 ret <1 x i1> %1491}492 493define <1 x i1> @fcmps_uno_vv_v1f16(<1 x half> %va, <1 x half> %vb) nounwind strictfp {494; CHECK-LABEL: fcmps_uno_vv_v1f16:495; CHECK: # %bb.0:496; CHECK-NEXT: vsetivli zero, 1, 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 <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp503 ret <1 x i1> %1504}505 506define <1 x i1> @fcmps_uno_vf_v1f16(<1 x half> %va, half %b) nounwind strictfp {507; CHECK-LABEL: fcmps_uno_vf_v1f16:508; CHECK: # %bb.0:509; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma510; CHECK-NEXT: vfmv.s.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 <1 x half> poison, half %b, i32 0517 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer518 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %va, <1 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp519 ret <1 x i1> %1520}521 522define <1 x i1> @fcmps_uno_fv_v1f16(<1 x half> %va, half %b) nounwind strictfp {523; CHECK-LABEL: fcmps_uno_fv_v1f16:524; CHECK: # %bb.0:525; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma526; CHECK-NEXT: vfmv.s.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 <1 x half> poison, half %b, i32 0533 %splat = shufflevector <1 x half> %head, <1 x half> poison, <1 x i32> zeroinitializer534 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f16(<1 x half> %splat, <1 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp535 ret <1 x i1> %1536}537 538define <2 x i1> @fcmps_oeq_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {539; CHECK-LABEL: fcmps_oeq_vv_v2f16:540; CHECK: # %bb.0:541; CHECK-NEXT: vsetivli zero, 2, e16, mf4, 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 <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp547 ret <2 x i1> %1548}549 550define <2 x i1> @fcmps_oeq_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {551; CHECK-LABEL: fcmps_oeq_vf_v2f16:552; CHECK: # %bb.0:553; CHECK-NEXT: vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 0559 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer560 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp561 ret <2 x i1> %1562}563 564define <2 x i1> @fcmps_oeq_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {565; CHECK-LABEL: fcmps_oeq_fv_v2f16:566; CHECK: # %bb.0:567; CHECK-NEXT: vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 0573 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer574 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp575 ret <2 x i1> %1576}577 578define <2 x i1> @fcmps_ogt_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {579; CHECK-LABEL: fcmps_ogt_vv_v2f16:580; CHECK: # %bb.0:581; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma582; CHECK-NEXT: vmflt.vv v0, v9, v8583; CHECK-NEXT: ret584 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp585 ret <2 x i1> %1586}587 588define <2 x i1> @fcmps_ogt_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {589; CHECK-LABEL: fcmps_ogt_vf_v2f16:590; CHECK: # %bb.0:591; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma592; CHECK-NEXT: vmfgt.vf v0, v8, fa0593; CHECK-NEXT: ret594 %head = insertelement <2 x half> poison, half %b, i32 0595 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer596 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp597 ret <2 x i1> %1598}599 600define <2 x i1> @fcmps_ogt_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {601; CHECK-LABEL: fcmps_ogt_fv_v2f16:602; CHECK: # %bb.0:603; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma604; CHECK-NEXT: vmflt.vf v0, v8, fa0605; CHECK-NEXT: ret606 %head = insertelement <2 x half> poison, half %b, i32 0607 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer608 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp609 ret <2 x i1> %1610}611 612define <2 x i1> @fcmps_oge_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {613; CHECK-LABEL: fcmps_oge_vv_v2f16:614; CHECK: # %bb.0:615; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma616; CHECK-NEXT: vmfle.vv v0, v9, v8617; CHECK-NEXT: ret618 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp619 ret <2 x i1> %1620}621 622define <2 x i1> @fcmps_oge_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {623; CHECK-LABEL: fcmps_oge_vf_v2f16:624; CHECK: # %bb.0:625; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma626; CHECK-NEXT: vmfge.vf v0, v8, fa0627; CHECK-NEXT: ret628 %head = insertelement <2 x half> poison, half %b, i32 0629 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer630 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp631 ret <2 x i1> %1632}633 634define <2 x i1> @fcmps_oge_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {635; CHECK-LABEL: fcmps_oge_fv_v2f16:636; CHECK: # %bb.0:637; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma638; CHECK-NEXT: vmfle.vf v0, v8, fa0639; CHECK-NEXT: ret640 %head = insertelement <2 x half> poison, half %b, i32 0641 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer642 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp643 ret <2 x i1> %1644}645 646define <2 x i1> @fcmps_olt_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {647; CHECK-LABEL: fcmps_olt_vv_v2f16:648; CHECK: # %bb.0:649; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma650; CHECK-NEXT: vmflt.vv v0, v8, v9651; CHECK-NEXT: ret652 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp653 ret <2 x i1> %1654}655 656define <2 x i1> @fcmps_olt_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {657; CHECK-LABEL: fcmps_olt_vf_v2f16:658; CHECK: # %bb.0:659; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma660; CHECK-NEXT: vmflt.vf v0, v8, fa0661; CHECK-NEXT: ret662 %head = insertelement <2 x half> poison, half %b, i32 0663 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer664 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp665 ret <2 x i1> %1666}667 668define <2 x i1> @fcmps_olt_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {669; CHECK-LABEL: fcmps_olt_fv_v2f16:670; CHECK: # %bb.0:671; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma672; CHECK-NEXT: vmfgt.vf v0, v8, fa0673; CHECK-NEXT: ret674 %head = insertelement <2 x half> poison, half %b, i32 0675 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer676 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp677 ret <2 x i1> %1678}679 680define <2 x i1> @fcmps_ole_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {681; CHECK-LABEL: fcmps_ole_vv_v2f16:682; CHECK: # %bb.0:683; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma684; CHECK-NEXT: vmfle.vv v0, v8, v9685; CHECK-NEXT: ret686 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp687 ret <2 x i1> %1688}689 690define <2 x i1> @fcmps_ole_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {691; CHECK-LABEL: fcmps_ole_vf_v2f16:692; CHECK: # %bb.0:693; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma694; CHECK-NEXT: vmfle.vf v0, v8, fa0695; CHECK-NEXT: ret696 %head = insertelement <2 x half> poison, half %b, i32 0697 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer698 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp699 ret <2 x i1> %1700}701 702define <2 x i1> @fcmps_ole_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {703; CHECK-LABEL: fcmps_ole_fv_v2f16:704; CHECK: # %bb.0:705; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma706; CHECK-NEXT: vmfge.vf v0, v8, fa0707; CHECK-NEXT: ret708 %head = insertelement <2 x half> poison, half %b, i32 0709 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer710 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp711 ret <2 x i1> %1712}713 714define <2 x i1> @fcmps_one_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {715; CHECK-LABEL: fcmps_one_vv_v2f16:716; CHECK: # %bb.0:717; CHECK-NEXT: vsetivli zero, 2, e16, mf4, 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 <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp723 ret <2 x i1> %1724}725 726define <2 x i1> @fcmps_one_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {727; CHECK-LABEL: fcmps_one_vf_v2f16:728; CHECK: # %bb.0:729; CHECK-NEXT: vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 0735 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer736 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp737 ret <2 x i1> %1738}739 740define <2 x i1> @fcmps_one_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {741; CHECK-LABEL: fcmps_one_fv_v2f16:742; CHECK: # %bb.0:743; CHECK-NEXT: vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 0749 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer750 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp751 ret <2 x i1> %1752}753 754define <2 x i1> @fcmps_ord_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {755; CHECK-LABEL: fcmps_ord_vv_v2f16:756; CHECK: # %bb.0:757; CHECK-NEXT: vsetivli zero, 2, e16, mf4, 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 <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp763 ret <2 x i1> %1764}765 766define <2 x i1> @fcmps_ord_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {767; CHECK-LABEL: fcmps_ord_vf_v2f16:768; CHECK: # %bb.0:769; CHECK-NEXT: vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 0776 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer777 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp778 ret <2 x i1> %1779}780 781define <2 x i1> @fcmps_ord_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {782; CHECK-LABEL: fcmps_ord_fv_v2f16:783; CHECK: # %bb.0:784; CHECK-NEXT: vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 0791 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer792 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp793 ret <2 x i1> %1794}795 796define <2 x i1> @fcmps_ueq_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {797; CHECK-LABEL: fcmps_ueq_vv_v2f16:798; CHECK: # %bb.0:799; CHECK-NEXT: vsetivli zero, 2, e16, mf4, 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 <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp805 ret <2 x i1> %1806}807 808define <2 x i1> @fcmps_ueq_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {809; CHECK-LABEL: fcmps_ueq_vf_v2f16:810; CHECK: # %bb.0:811; CHECK-NEXT: vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 0817 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer818 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp819 ret <2 x i1> %1820}821 822define <2 x i1> @fcmps_ueq_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {823; CHECK-LABEL: fcmps_ueq_fv_v2f16:824; CHECK: # %bb.0:825; CHECK-NEXT: vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 0831 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer832 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp833 ret <2 x i1> %1834}835 836define <2 x i1> @fcmps_ugt_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {837; CHECK-LABEL: fcmps_ugt_vv_v2f16:838; CHECK: # %bb.0:839; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma840; CHECK-NEXT: vmfle.vv v8, v8, v9841; CHECK-NEXT: vmnot.m v0, v8842; CHECK-NEXT: ret843 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp844 ret <2 x i1> %1845}846 847define <2 x i1> @fcmps_ugt_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {848; CHECK-LABEL: fcmps_ugt_vf_v2f16:849; CHECK: # %bb.0:850; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma851; CHECK-NEXT: vmfle.vf v8, v8, fa0852; CHECK-NEXT: vmnot.m v0, v8853; CHECK-NEXT: ret854 %head = insertelement <2 x half> poison, half %b, i32 0855 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer856 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp857 ret <2 x i1> %1858}859 860define <2 x i1> @fcmps_ugt_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {861; CHECK-LABEL: fcmps_ugt_fv_v2f16:862; CHECK: # %bb.0:863; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma864; CHECK-NEXT: vmfge.vf v8, v8, fa0865; CHECK-NEXT: vmnot.m v0, v8866; CHECK-NEXT: ret867 %head = insertelement <2 x half> poison, half %b, i32 0868 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer869 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp870 ret <2 x i1> %1871}872 873define <2 x i1> @fcmps_uge_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {874; CHECK-LABEL: fcmps_uge_vv_v2f16:875; CHECK: # %bb.0:876; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma877; CHECK-NEXT: vmflt.vv v8, v8, v9878; CHECK-NEXT: vmnot.m v0, v8879; CHECK-NEXT: ret880 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp881 ret <2 x i1> %1882}883 884define <2 x i1> @fcmps_uge_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {885; CHECK-LABEL: fcmps_uge_vf_v2f16:886; CHECK: # %bb.0:887; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma888; CHECK-NEXT: vmflt.vf v8, v8, fa0889; CHECK-NEXT: vmnot.m v0, v8890; CHECK-NEXT: ret891 %head = insertelement <2 x half> poison, half %b, i32 0892 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer893 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp894 ret <2 x i1> %1895}896 897define <2 x i1> @fcmps_uge_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {898; CHECK-LABEL: fcmps_uge_fv_v2f16:899; CHECK: # %bb.0:900; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma901; CHECK-NEXT: vmfgt.vf v8, v8, fa0902; CHECK-NEXT: vmnot.m v0, v8903; CHECK-NEXT: ret904 %head = insertelement <2 x half> poison, half %b, i32 0905 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer906 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp907 ret <2 x i1> %1908}909 910define <2 x i1> @fcmps_ult_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {911; CHECK-LABEL: fcmps_ult_vv_v2f16:912; CHECK: # %bb.0:913; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma914; CHECK-NEXT: vmfle.vv v8, v9, v8915; CHECK-NEXT: vmnot.m v0, v8916; CHECK-NEXT: ret917 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp918 ret <2 x i1> %1919}920 921define <2 x i1> @fcmps_ult_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {922; CHECK-LABEL: fcmps_ult_vf_v2f16:923; CHECK: # %bb.0:924; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma925; CHECK-NEXT: vmfge.vf v8, v8, fa0926; CHECK-NEXT: vmnot.m v0, v8927; CHECK-NEXT: ret928 %head = insertelement <2 x half> poison, half %b, i32 0929 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer930 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp931 ret <2 x i1> %1932}933 934define <2 x i1> @fcmps_ult_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {935; CHECK-LABEL: fcmps_ult_fv_v2f16:936; CHECK: # %bb.0:937; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma938; CHECK-NEXT: vmfle.vf v8, v8, fa0939; CHECK-NEXT: vmnot.m v0, v8940; CHECK-NEXT: ret941 %head = insertelement <2 x half> poison, half %b, i32 0942 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer943 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp944 ret <2 x i1> %1945}946 947define <2 x i1> @fcmps_ule_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {948; CHECK-LABEL: fcmps_ule_vv_v2f16:949; CHECK: # %bb.0:950; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma951; CHECK-NEXT: vmflt.vv v8, v9, v8952; CHECK-NEXT: vmnot.m v0, v8953; CHECK-NEXT: ret954 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp955 ret <2 x i1> %1956}957 958define <2 x i1> @fcmps_ule_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {959; CHECK-LABEL: fcmps_ule_vf_v2f16:960; CHECK: # %bb.0:961; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma962; CHECK-NEXT: vmfgt.vf v8, v8, fa0963; CHECK-NEXT: vmnot.m v0, v8964; CHECK-NEXT: ret965 %head = insertelement <2 x half> poison, half %b, i32 0966 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer967 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp968 ret <2 x i1> %1969}970 971define <2 x i1> @fcmps_ule_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {972; CHECK-LABEL: fcmps_ule_fv_v2f16:973; CHECK: # %bb.0:974; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma975; CHECK-NEXT: vmflt.vf v8, v8, fa0976; CHECK-NEXT: vmnot.m v0, v8977; CHECK-NEXT: ret978 %head = insertelement <2 x half> poison, half %b, i32 0979 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer980 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp981 ret <2 x i1> %1982}983 984define <2 x i1> @fcmps_une_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {985; CHECK-LABEL: fcmps_une_vv_v2f16:986; CHECK: # %bb.0:987; CHECK-NEXT: vsetivli zero, 2, e16, mf4, 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 <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp993 ret <2 x i1> %1994}995 996define <2 x i1> @fcmps_une_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {997; CHECK-LABEL: fcmps_une_vf_v2f16:998; CHECK: # %bb.0:999; CHECK-NEXT: vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 01005 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer1006 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp1007 ret <2 x i1> %11008}1009 1010define <2 x i1> @fcmps_une_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {1011; CHECK-LABEL: fcmps_une_fv_v2f16:1012; CHECK: # %bb.0:1013; CHECK-NEXT: vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 01019 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer1020 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp1021 ret <2 x i1> %11022}1023 1024define <2 x i1> @fcmps_uno_vv_v2f16(<2 x half> %va, <2 x half> %vb) nounwind strictfp {1025; CHECK-LABEL: fcmps_uno_vv_v2f16:1026; CHECK: # %bb.0:1027; CHECK-NEXT: vsetivli zero, 2, e16, mf4, 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 <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp1034 ret <2 x i1> %11035}1036 1037define <2 x i1> @fcmps_uno_vf_v2f16(<2 x half> %va, half %b) nounwind strictfp {1038; CHECK-LABEL: fcmps_uno_vf_v2f16:1039; CHECK: # %bb.0:1040; CHECK-NEXT: vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 01048 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer1049 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %va, <2 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp1050 ret <2 x i1> %11051}1052 1053define <2 x i1> @fcmps_uno_fv_v2f16(<2 x half> %va, half %b) nounwind strictfp {1054; CHECK-LABEL: fcmps_uno_fv_v2f16:1055; CHECK: # %bb.0:1056; CHECK-NEXT: vsetivli zero, 2, e16, mf4, 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 <2 x half> poison, half %b, i32 01064 %splat = shufflevector <2 x half> %head, <2 x half> poison, <2 x i32> zeroinitializer1065 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f16(<2 x half> %splat, <2 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp1066 ret <2 x i1> %11067}1068 1069define <4 x i1> @fcmps_oeq_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1070; CHECK-LABEL: fcmps_oeq_vv_v4f16:1071; CHECK: # %bb.0:1072; CHECK-NEXT: vsetivli zero, 4, e16, mf2, 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 <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp1078 ret <4 x i1> %11079}1080 1081define <4 x i1> @fcmps_oeq_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1082; CHECK-LABEL: fcmps_oeq_vf_v4f16:1083; CHECK: # %bb.0:1084; CHECK-NEXT: vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 01090 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1091 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp1092 ret <4 x i1> %11093}1094 1095define <4 x i1> @fcmps_oeq_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1096; CHECK-LABEL: fcmps_oeq_fv_v4f16:1097; CHECK: # %bb.0:1098; CHECK-NEXT: vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 01104 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1105 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp1106 ret <4 x i1> %11107}1108 1109define <4 x i1> @fcmps_ogt_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1110; CHECK-LABEL: fcmps_ogt_vv_v4f16:1111; CHECK: # %bb.0:1112; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1113; CHECK-NEXT: vmflt.vv v0, v9, v81114; CHECK-NEXT: ret1115 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp1116 ret <4 x i1> %11117}1118 1119define <4 x i1> @fcmps_ogt_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1120; CHECK-LABEL: fcmps_ogt_vf_v4f16:1121; CHECK: # %bb.0:1122; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1123; CHECK-NEXT: vmfgt.vf v0, v8, fa01124; CHECK-NEXT: ret1125 %head = insertelement <4 x half> poison, half %b, i32 01126 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1127 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp1128 ret <4 x i1> %11129}1130 1131define <4 x i1> @fcmps_ogt_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1132; CHECK-LABEL: fcmps_ogt_fv_v4f16:1133; CHECK: # %bb.0:1134; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1135; CHECK-NEXT: vmflt.vf v0, v8, fa01136; CHECK-NEXT: ret1137 %head = insertelement <4 x half> poison, half %b, i32 01138 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1139 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp1140 ret <4 x i1> %11141}1142 1143define <4 x i1> @fcmps_oge_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1144; CHECK-LABEL: fcmps_oge_vv_v4f16:1145; CHECK: # %bb.0:1146; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1147; CHECK-NEXT: vmfle.vv v0, v9, v81148; CHECK-NEXT: ret1149 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp1150 ret <4 x i1> %11151}1152 1153define <4 x i1> @fcmps_oge_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1154; CHECK-LABEL: fcmps_oge_vf_v4f16:1155; CHECK: # %bb.0:1156; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1157; CHECK-NEXT: vmfge.vf v0, v8, fa01158; CHECK-NEXT: ret1159 %head = insertelement <4 x half> poison, half %b, i32 01160 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1161 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp1162 ret <4 x i1> %11163}1164 1165define <4 x i1> @fcmps_oge_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1166; CHECK-LABEL: fcmps_oge_fv_v4f16:1167; CHECK: # %bb.0:1168; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1169; CHECK-NEXT: vmfle.vf v0, v8, fa01170; CHECK-NEXT: ret1171 %head = insertelement <4 x half> poison, half %b, i32 01172 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1173 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp1174 ret <4 x i1> %11175}1176 1177define <4 x i1> @fcmps_olt_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1178; CHECK-LABEL: fcmps_olt_vv_v4f16:1179; CHECK: # %bb.0:1180; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1181; CHECK-NEXT: vmflt.vv v0, v8, v91182; CHECK-NEXT: ret1183 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp1184 ret <4 x i1> %11185}1186 1187define <4 x i1> @fcmps_olt_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1188; CHECK-LABEL: fcmps_olt_vf_v4f16:1189; CHECK: # %bb.0:1190; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1191; CHECK-NEXT: vmflt.vf v0, v8, fa01192; CHECK-NEXT: ret1193 %head = insertelement <4 x half> poison, half %b, i32 01194 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1195 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp1196 ret <4 x i1> %11197}1198 1199define <4 x i1> @fcmps_olt_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1200; CHECK-LABEL: fcmps_olt_fv_v4f16:1201; CHECK: # %bb.0:1202; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1203; CHECK-NEXT: vmfgt.vf v0, v8, fa01204; CHECK-NEXT: ret1205 %head = insertelement <4 x half> poison, half %b, i32 01206 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1207 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp1208 ret <4 x i1> %11209}1210 1211define <4 x i1> @fcmps_ole_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1212; CHECK-LABEL: fcmps_ole_vv_v4f16:1213; CHECK: # %bb.0:1214; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1215; CHECK-NEXT: vmfle.vv v0, v8, v91216; CHECK-NEXT: ret1217 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp1218 ret <4 x i1> %11219}1220 1221define <4 x i1> @fcmps_ole_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1222; CHECK-LABEL: fcmps_ole_vf_v4f16:1223; CHECK: # %bb.0:1224; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1225; CHECK-NEXT: vmfle.vf v0, v8, fa01226; CHECK-NEXT: ret1227 %head = insertelement <4 x half> poison, half %b, i32 01228 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1229 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp1230 ret <4 x i1> %11231}1232 1233define <4 x i1> @fcmps_ole_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1234; CHECK-LABEL: fcmps_ole_fv_v4f16:1235; CHECK: # %bb.0:1236; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1237; CHECK-NEXT: vmfge.vf v0, v8, fa01238; CHECK-NEXT: ret1239 %head = insertelement <4 x half> poison, half %b, i32 01240 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1241 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp1242 ret <4 x i1> %11243}1244 1245define <4 x i1> @fcmps_one_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1246; CHECK-LABEL: fcmps_one_vv_v4f16:1247; CHECK: # %bb.0:1248; CHECK-NEXT: vsetivli zero, 4, e16, mf2, 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 <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp1254 ret <4 x i1> %11255}1256 1257define <4 x i1> @fcmps_one_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1258; CHECK-LABEL: fcmps_one_vf_v4f16:1259; CHECK: # %bb.0:1260; CHECK-NEXT: vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 01266 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1267 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp1268 ret <4 x i1> %11269}1270 1271define <4 x i1> @fcmps_one_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1272; CHECK-LABEL: fcmps_one_fv_v4f16:1273; CHECK: # %bb.0:1274; CHECK-NEXT: vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 01280 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1281 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp1282 ret <4 x i1> %11283}1284 1285define <4 x i1> @fcmps_ord_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1286; CHECK-LABEL: fcmps_ord_vv_v4f16:1287; CHECK: # %bb.0:1288; CHECK-NEXT: vsetivli zero, 4, e16, mf2, 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 <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp1294 ret <4 x i1> %11295}1296 1297define <4 x i1> @fcmps_ord_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1298; CHECK-LABEL: fcmps_ord_vf_v4f16:1299; CHECK: # %bb.0:1300; CHECK-NEXT: vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 01307 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1308 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp1309 ret <4 x i1> %11310}1311 1312define <4 x i1> @fcmps_ord_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1313; CHECK-LABEL: fcmps_ord_fv_v4f16:1314; CHECK: # %bb.0:1315; CHECK-NEXT: vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 01322 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1323 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp1324 ret <4 x i1> %11325}1326 1327define <4 x i1> @fcmps_ueq_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1328; CHECK-LABEL: fcmps_ueq_vv_v4f16:1329; CHECK: # %bb.0:1330; CHECK-NEXT: vsetivli zero, 4, e16, mf2, 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 <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp1336 ret <4 x i1> %11337}1338 1339define <4 x i1> @fcmps_ueq_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1340; CHECK-LABEL: fcmps_ueq_vf_v4f16:1341; CHECK: # %bb.0:1342; CHECK-NEXT: vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 01348 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1349 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp1350 ret <4 x i1> %11351}1352 1353define <4 x i1> @fcmps_ueq_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1354; CHECK-LABEL: fcmps_ueq_fv_v4f16:1355; CHECK: # %bb.0:1356; CHECK-NEXT: vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 01362 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1363 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp1364 ret <4 x i1> %11365}1366 1367define <4 x i1> @fcmps_ugt_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1368; CHECK-LABEL: fcmps_ugt_vv_v4f16:1369; CHECK: # %bb.0:1370; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1371; CHECK-NEXT: vmfle.vv v8, v8, v91372; CHECK-NEXT: vmnot.m v0, v81373; CHECK-NEXT: ret1374 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp1375 ret <4 x i1> %11376}1377 1378define <4 x i1> @fcmps_ugt_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1379; CHECK-LABEL: fcmps_ugt_vf_v4f16:1380; CHECK: # %bb.0:1381; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1382; CHECK-NEXT: vmfle.vf v8, v8, fa01383; CHECK-NEXT: vmnot.m v0, v81384; CHECK-NEXT: ret1385 %head = insertelement <4 x half> poison, half %b, i32 01386 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1387 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp1388 ret <4 x i1> %11389}1390 1391define <4 x i1> @fcmps_ugt_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1392; CHECK-LABEL: fcmps_ugt_fv_v4f16:1393; CHECK: # %bb.0:1394; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1395; CHECK-NEXT: vmfge.vf v8, v8, fa01396; CHECK-NEXT: vmnot.m v0, v81397; CHECK-NEXT: ret1398 %head = insertelement <4 x half> poison, half %b, i32 01399 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1400 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp1401 ret <4 x i1> %11402}1403 1404define <4 x i1> @fcmps_uge_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1405; CHECK-LABEL: fcmps_uge_vv_v4f16:1406; CHECK: # %bb.0:1407; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1408; CHECK-NEXT: vmflt.vv v8, v8, v91409; CHECK-NEXT: vmnot.m v0, v81410; CHECK-NEXT: ret1411 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp1412 ret <4 x i1> %11413}1414 1415define <4 x i1> @fcmps_uge_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1416; CHECK-LABEL: fcmps_uge_vf_v4f16:1417; CHECK: # %bb.0:1418; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1419; CHECK-NEXT: vmflt.vf v8, v8, fa01420; CHECK-NEXT: vmnot.m v0, v81421; CHECK-NEXT: ret1422 %head = insertelement <4 x half> poison, half %b, i32 01423 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1424 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp1425 ret <4 x i1> %11426}1427 1428define <4 x i1> @fcmps_uge_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1429; CHECK-LABEL: fcmps_uge_fv_v4f16:1430; CHECK: # %bb.0:1431; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1432; CHECK-NEXT: vmfgt.vf v8, v8, fa01433; CHECK-NEXT: vmnot.m v0, v81434; CHECK-NEXT: ret1435 %head = insertelement <4 x half> poison, half %b, i32 01436 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1437 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp1438 ret <4 x i1> %11439}1440 1441define <4 x i1> @fcmps_ult_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1442; CHECK-LABEL: fcmps_ult_vv_v4f16:1443; CHECK: # %bb.0:1444; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1445; CHECK-NEXT: vmfle.vv v8, v9, v81446; CHECK-NEXT: vmnot.m v0, v81447; CHECK-NEXT: ret1448 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp1449 ret <4 x i1> %11450}1451 1452define <4 x i1> @fcmps_ult_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1453; CHECK-LABEL: fcmps_ult_vf_v4f16:1454; CHECK: # %bb.0:1455; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1456; CHECK-NEXT: vmfge.vf v8, v8, fa01457; CHECK-NEXT: vmnot.m v0, v81458; CHECK-NEXT: ret1459 %head = insertelement <4 x half> poison, half %b, i32 01460 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1461 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp1462 ret <4 x i1> %11463}1464 1465define <4 x i1> @fcmps_ult_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1466; CHECK-LABEL: fcmps_ult_fv_v4f16:1467; CHECK: # %bb.0:1468; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1469; CHECK-NEXT: vmfle.vf v8, v8, fa01470; CHECK-NEXT: vmnot.m v0, v81471; CHECK-NEXT: ret1472 %head = insertelement <4 x half> poison, half %b, i32 01473 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1474 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp1475 ret <4 x i1> %11476}1477 1478define <4 x i1> @fcmps_ule_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1479; CHECK-LABEL: fcmps_ule_vv_v4f16:1480; CHECK: # %bb.0:1481; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1482; CHECK-NEXT: vmflt.vv v8, v9, v81483; CHECK-NEXT: vmnot.m v0, v81484; CHECK-NEXT: ret1485 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp1486 ret <4 x i1> %11487}1488 1489define <4 x i1> @fcmps_ule_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1490; CHECK-LABEL: fcmps_ule_vf_v4f16:1491; CHECK: # %bb.0:1492; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1493; CHECK-NEXT: vmfgt.vf v8, v8, fa01494; CHECK-NEXT: vmnot.m v0, v81495; CHECK-NEXT: ret1496 %head = insertelement <4 x half> poison, half %b, i32 01497 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1498 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp1499 ret <4 x i1> %11500}1501 1502define <4 x i1> @fcmps_ule_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1503; CHECK-LABEL: fcmps_ule_fv_v4f16:1504; CHECK: # %bb.0:1505; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma1506; CHECK-NEXT: vmflt.vf v8, v8, fa01507; CHECK-NEXT: vmnot.m v0, v81508; CHECK-NEXT: ret1509 %head = insertelement <4 x half> poison, half %b, i32 01510 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1511 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp1512 ret <4 x i1> %11513}1514 1515define <4 x i1> @fcmps_une_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1516; CHECK-LABEL: fcmps_une_vv_v4f16:1517; CHECK: # %bb.0:1518; CHECK-NEXT: vsetivli zero, 4, e16, mf2, 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 <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp1524 ret <4 x i1> %11525}1526 1527define <4 x i1> @fcmps_une_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1528; CHECK-LABEL: fcmps_une_vf_v4f16:1529; CHECK: # %bb.0:1530; CHECK-NEXT: vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 01536 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1537 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp1538 ret <4 x i1> %11539}1540 1541define <4 x i1> @fcmps_une_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1542; CHECK-LABEL: fcmps_une_fv_v4f16:1543; CHECK: # %bb.0:1544; CHECK-NEXT: vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 01550 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1551 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp1552 ret <4 x i1> %11553}1554 1555define <4 x i1> @fcmps_uno_vv_v4f16(<4 x half> %va, <4 x half> %vb) nounwind strictfp {1556; CHECK-LABEL: fcmps_uno_vv_v4f16:1557; CHECK: # %bb.0:1558; CHECK-NEXT: vsetivli zero, 4, e16, mf2, 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 <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp1565 ret <4 x i1> %11566}1567 1568define <4 x i1> @fcmps_uno_vf_v4f16(<4 x half> %va, half %b) nounwind strictfp {1569; CHECK-LABEL: fcmps_uno_vf_v4f16:1570; CHECK: # %bb.0:1571; CHECK-NEXT: vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 01579 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1580 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %va, <4 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp1581 ret <4 x i1> %11582}1583 1584define <4 x i1> @fcmps_uno_fv_v4f16(<4 x half> %va, half %b) nounwind strictfp {1585; CHECK-LABEL: fcmps_uno_fv_v4f16:1586; CHECK: # %bb.0:1587; CHECK-NEXT: vsetivli zero, 4, e16, mf2, 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 <4 x half> poison, half %b, i32 01595 %splat = shufflevector <4 x half> %head, <4 x half> poison, <4 x i32> zeroinitializer1596 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f16(<4 x half> %splat, <4 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp1597 ret <4 x i1> %11598}1599 1600define <8 x i1> @fcmps_oeq_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {1601; CHECK-LABEL: fcmps_oeq_vv_v8f16:1602; CHECK: # %bb.0:1603; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1604; CHECK-NEXT: vmfle.vv v10, v9, v81605; CHECK-NEXT: vmfle.vv v8, v8, v91606; CHECK-NEXT: vmand.mm v0, v8, v101607; CHECK-NEXT: ret1608 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp1609 ret <8 x i1> %11610}1611 1612define <8 x i1> @fcmps_oeq_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {1613; CHECK-LABEL: fcmps_oeq_vf_v8f16:1614; CHECK: # %bb.0:1615; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1616; CHECK-NEXT: vmfge.vf v9, v8, fa01617; CHECK-NEXT: vmfle.vf v8, v8, fa01618; CHECK-NEXT: vmand.mm v0, v8, v91619; CHECK-NEXT: ret1620 %head = insertelement <8 x half> poison, half %b, i32 01621 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1622 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp1623 ret <8 x i1> %11624}1625 1626define <8 x i1> @fcmps_oeq_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {1627; CHECK-LABEL: fcmps_oeq_fv_v8f16:1628; CHECK: # %bb.0:1629; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1630; CHECK-NEXT: vmfle.vf v9, v8, fa01631; CHECK-NEXT: vmfge.vf v8, v8, fa01632; CHECK-NEXT: vmand.mm v0, v8, v91633; CHECK-NEXT: ret1634 %head = insertelement <8 x half> poison, half %b, i32 01635 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1636 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp1637 ret <8 x i1> %11638}1639 1640define <8 x i1> @fcmps_ogt_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {1641; CHECK-LABEL: fcmps_ogt_vv_v8f16:1642; CHECK: # %bb.0:1643; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1644; CHECK-NEXT: vmflt.vv v0, v9, v81645; CHECK-NEXT: ret1646 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp1647 ret <8 x i1> %11648}1649 1650define <8 x i1> @fcmps_ogt_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {1651; CHECK-LABEL: fcmps_ogt_vf_v8f16:1652; CHECK: # %bb.0:1653; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1654; CHECK-NEXT: vmfgt.vf v0, v8, fa01655; CHECK-NEXT: ret1656 %head = insertelement <8 x half> poison, half %b, i32 01657 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1658 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp1659 ret <8 x i1> %11660}1661 1662define <8 x i1> @fcmps_ogt_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {1663; CHECK-LABEL: fcmps_ogt_fv_v8f16:1664; CHECK: # %bb.0:1665; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1666; CHECK-NEXT: vmflt.vf v0, v8, fa01667; CHECK-NEXT: ret1668 %head = insertelement <8 x half> poison, half %b, i32 01669 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1670 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp1671 ret <8 x i1> %11672}1673 1674define <8 x i1> @fcmps_oge_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {1675; CHECK-LABEL: fcmps_oge_vv_v8f16:1676; CHECK: # %bb.0:1677; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1678; CHECK-NEXT: vmfle.vv v0, v9, v81679; CHECK-NEXT: ret1680 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp1681 ret <8 x i1> %11682}1683 1684define <8 x i1> @fcmps_oge_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {1685; CHECK-LABEL: fcmps_oge_vf_v8f16:1686; CHECK: # %bb.0:1687; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1688; CHECK-NEXT: vmfge.vf v0, v8, fa01689; CHECK-NEXT: ret1690 %head = insertelement <8 x half> poison, half %b, i32 01691 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1692 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp1693 ret <8 x i1> %11694}1695 1696define <8 x i1> @fcmps_oge_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {1697; CHECK-LABEL: fcmps_oge_fv_v8f16:1698; CHECK: # %bb.0:1699; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1700; CHECK-NEXT: vmfle.vf v0, v8, fa01701; CHECK-NEXT: ret1702 %head = insertelement <8 x half> poison, half %b, i32 01703 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1704 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp1705 ret <8 x i1> %11706}1707 1708define <8 x i1> @fcmps_olt_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {1709; CHECK-LABEL: fcmps_olt_vv_v8f16:1710; CHECK: # %bb.0:1711; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1712; CHECK-NEXT: vmflt.vv v0, v8, v91713; CHECK-NEXT: ret1714 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp1715 ret <8 x i1> %11716}1717 1718define <8 x i1> @fcmps_olt_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {1719; CHECK-LABEL: fcmps_olt_vf_v8f16:1720; CHECK: # %bb.0:1721; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1722; CHECK-NEXT: vmflt.vf v0, v8, fa01723; CHECK-NEXT: ret1724 %head = insertelement <8 x half> poison, half %b, i32 01725 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1726 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp1727 ret <8 x i1> %11728}1729 1730define <8 x i1> @fcmps_olt_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {1731; CHECK-LABEL: fcmps_olt_fv_v8f16:1732; CHECK: # %bb.0:1733; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1734; CHECK-NEXT: vmfgt.vf v0, v8, fa01735; CHECK-NEXT: ret1736 %head = insertelement <8 x half> poison, half %b, i32 01737 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1738 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp1739 ret <8 x i1> %11740}1741 1742define <8 x i1> @fcmps_ole_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {1743; CHECK-LABEL: fcmps_ole_vv_v8f16:1744; CHECK: # %bb.0:1745; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1746; CHECK-NEXT: vmfle.vv v0, v8, v91747; CHECK-NEXT: ret1748 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp1749 ret <8 x i1> %11750}1751 1752define <8 x i1> @fcmps_ole_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {1753; CHECK-LABEL: fcmps_ole_vf_v8f16:1754; CHECK: # %bb.0:1755; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1756; CHECK-NEXT: vmfle.vf v0, v8, fa01757; CHECK-NEXT: ret1758 %head = insertelement <8 x half> poison, half %b, i32 01759 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1760 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp1761 ret <8 x i1> %11762}1763 1764define <8 x i1> @fcmps_ole_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {1765; CHECK-LABEL: fcmps_ole_fv_v8f16:1766; CHECK: # %bb.0:1767; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1768; CHECK-NEXT: vmfge.vf v0, v8, fa01769; CHECK-NEXT: ret1770 %head = insertelement <8 x half> poison, half %b, i32 01771 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1772 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp1773 ret <8 x i1> %11774}1775 1776define <8 x i1> @fcmps_one_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {1777; CHECK-LABEL: fcmps_one_vv_v8f16:1778; CHECK: # %bb.0:1779; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1780; CHECK-NEXT: vmflt.vv v10, v8, v91781; CHECK-NEXT: vmflt.vv v8, v9, v81782; CHECK-NEXT: vmor.mm v0, v8, v101783; CHECK-NEXT: ret1784 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp1785 ret <8 x i1> %11786}1787 1788define <8 x i1> @fcmps_one_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {1789; CHECK-LABEL: fcmps_one_vf_v8f16:1790; CHECK: # %bb.0:1791; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1792; CHECK-NEXT: vmflt.vf v9, v8, fa01793; CHECK-NEXT: vmfgt.vf v8, v8, fa01794; CHECK-NEXT: vmor.mm v0, v8, v91795; CHECK-NEXT: ret1796 %head = insertelement <8 x half> poison, half %b, i32 01797 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1798 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp1799 ret <8 x i1> %11800}1801 1802define <8 x i1> @fcmps_one_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {1803; CHECK-LABEL: fcmps_one_fv_v8f16:1804; CHECK: # %bb.0:1805; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1806; CHECK-NEXT: vmfgt.vf v9, v8, fa01807; CHECK-NEXT: vmflt.vf v8, v8, fa01808; CHECK-NEXT: vmor.mm v0, v8, v91809; CHECK-NEXT: ret1810 %head = insertelement <8 x half> poison, half %b, i32 01811 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1812 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp1813 ret <8 x i1> %11814}1815 1816define <8 x i1> @fcmps_ord_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {1817; CHECK-LABEL: fcmps_ord_vv_v8f16:1818; CHECK: # %bb.0:1819; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1820; CHECK-NEXT: vmfle.vv v9, v9, v91821; CHECK-NEXT: vmfle.vv v8, v8, v81822; CHECK-NEXT: vmand.mm v0, v8, v91823; CHECK-NEXT: ret1824 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp1825 ret <8 x i1> %11826}1827 1828define <8 x i1> @fcmps_ord_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {1829; CHECK-LABEL: fcmps_ord_vf_v8f16:1830; CHECK: # %bb.0:1831; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1832; CHECK-NEXT: vfmv.v.f v9, fa01833; CHECK-NEXT: vmfle.vf v9, v9, fa01834; CHECK-NEXT: vmfle.vv v8, v8, v81835; CHECK-NEXT: vmand.mm v0, v8, v91836; CHECK-NEXT: ret1837 %head = insertelement <8 x half> poison, half %b, i32 01838 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1839 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp1840 ret <8 x i1> %11841}1842 1843define <8 x i1> @fcmps_ord_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {1844; CHECK-LABEL: fcmps_ord_fv_v8f16:1845; CHECK: # %bb.0:1846; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1847; CHECK-NEXT: vfmv.v.f v9, fa01848; CHECK-NEXT: vmfle.vf v9, v9, fa01849; CHECK-NEXT: vmfle.vv v8, v8, v81850; CHECK-NEXT: vmand.mm v0, v9, v81851; CHECK-NEXT: ret1852 %head = insertelement <8 x half> poison, half %b, i32 01853 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1854 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp1855 ret <8 x i1> %11856}1857 1858define <8 x i1> @fcmps_ueq_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {1859; CHECK-LABEL: fcmps_ueq_vv_v8f16:1860; CHECK: # %bb.0:1861; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1862; CHECK-NEXT: vmflt.vv v10, v8, v91863; CHECK-NEXT: vmflt.vv v8, v9, v81864; CHECK-NEXT: vmnor.mm v0, v8, v101865; CHECK-NEXT: ret1866 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp1867 ret <8 x i1> %11868}1869 1870define <8 x i1> @fcmps_ueq_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {1871; CHECK-LABEL: fcmps_ueq_vf_v8f16:1872; CHECK: # %bb.0:1873; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1874; CHECK-NEXT: vmflt.vf v9, v8, fa01875; CHECK-NEXT: vmfgt.vf v8, v8, fa01876; CHECK-NEXT: vmnor.mm v0, v8, v91877; CHECK-NEXT: ret1878 %head = insertelement <8 x half> poison, half %b, i32 01879 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1880 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp1881 ret <8 x i1> %11882}1883 1884define <8 x i1> @fcmps_ueq_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {1885; CHECK-LABEL: fcmps_ueq_fv_v8f16:1886; CHECK: # %bb.0:1887; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1888; CHECK-NEXT: vmfgt.vf v9, v8, fa01889; CHECK-NEXT: vmflt.vf v8, v8, fa01890; CHECK-NEXT: vmnor.mm v0, v8, v91891; CHECK-NEXT: ret1892 %head = insertelement <8 x half> poison, half %b, i32 01893 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1894 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp1895 ret <8 x i1> %11896}1897 1898define <8 x i1> @fcmps_ugt_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {1899; CHECK-LABEL: fcmps_ugt_vv_v8f16:1900; CHECK: # %bb.0:1901; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1902; CHECK-NEXT: vmfle.vv v8, v8, v91903; CHECK-NEXT: vmnot.m v0, v81904; CHECK-NEXT: ret1905 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp1906 ret <8 x i1> %11907}1908 1909define <8 x i1> @fcmps_ugt_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {1910; CHECK-LABEL: fcmps_ugt_vf_v8f16:1911; CHECK: # %bb.0:1912; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1913; CHECK-NEXT: vmfle.vf v8, v8, fa01914; CHECK-NEXT: vmnot.m v0, v81915; CHECK-NEXT: ret1916 %head = insertelement <8 x half> poison, half %b, i32 01917 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1918 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp1919 ret <8 x i1> %11920}1921 1922define <8 x i1> @fcmps_ugt_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {1923; CHECK-LABEL: fcmps_ugt_fv_v8f16:1924; CHECK: # %bb.0:1925; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1926; CHECK-NEXT: vmfge.vf v8, v8, fa01927; CHECK-NEXT: vmnot.m v0, v81928; CHECK-NEXT: ret1929 %head = insertelement <8 x half> poison, half %b, i32 01930 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1931 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp1932 ret <8 x i1> %11933}1934 1935define <8 x i1> @fcmps_uge_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {1936; CHECK-LABEL: fcmps_uge_vv_v8f16:1937; CHECK: # %bb.0:1938; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1939; CHECK-NEXT: vmflt.vv v8, v8, v91940; CHECK-NEXT: vmnot.m v0, v81941; CHECK-NEXT: ret1942 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp1943 ret <8 x i1> %11944}1945 1946define <8 x i1> @fcmps_uge_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {1947; CHECK-LABEL: fcmps_uge_vf_v8f16:1948; CHECK: # %bb.0:1949; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1950; CHECK-NEXT: vmflt.vf v8, v8, fa01951; CHECK-NEXT: vmnot.m v0, v81952; CHECK-NEXT: ret1953 %head = insertelement <8 x half> poison, half %b, i32 01954 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1955 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp1956 ret <8 x i1> %11957}1958 1959define <8 x i1> @fcmps_uge_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {1960; CHECK-LABEL: fcmps_uge_fv_v8f16:1961; CHECK: # %bb.0:1962; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1963; CHECK-NEXT: vmfgt.vf v8, v8, fa01964; CHECK-NEXT: vmnot.m v0, v81965; CHECK-NEXT: ret1966 %head = insertelement <8 x half> poison, half %b, i32 01967 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1968 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp1969 ret <8 x i1> %11970}1971 1972define <8 x i1> @fcmps_ult_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {1973; CHECK-LABEL: fcmps_ult_vv_v8f16:1974; CHECK: # %bb.0:1975; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1976; CHECK-NEXT: vmfle.vv v8, v9, v81977; CHECK-NEXT: vmnot.m v0, v81978; CHECK-NEXT: ret1979 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp1980 ret <8 x i1> %11981}1982 1983define <8 x i1> @fcmps_ult_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {1984; CHECK-LABEL: fcmps_ult_vf_v8f16:1985; CHECK: # %bb.0:1986; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1987; CHECK-NEXT: vmfge.vf v8, v8, fa01988; CHECK-NEXT: vmnot.m v0, v81989; CHECK-NEXT: ret1990 %head = insertelement <8 x half> poison, half %b, i32 01991 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer1992 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp1993 ret <8 x i1> %11994}1995 1996define <8 x i1> @fcmps_ult_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {1997; CHECK-LABEL: fcmps_ult_fv_v8f16:1998; CHECK: # %bb.0:1999; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma2000; CHECK-NEXT: vmfle.vf v8, v8, fa02001; CHECK-NEXT: vmnot.m v0, v82002; CHECK-NEXT: ret2003 %head = insertelement <8 x half> poison, half %b, i32 02004 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2005 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp2006 ret <8 x i1> %12007}2008 2009define <8 x i1> @fcmps_ule_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {2010; CHECK-LABEL: fcmps_ule_vv_v8f16:2011; CHECK: # %bb.0:2012; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma2013; CHECK-NEXT: vmflt.vv v8, v9, v82014; CHECK-NEXT: vmnot.m v0, v82015; CHECK-NEXT: ret2016 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp2017 ret <8 x i1> %12018}2019 2020define <8 x i1> @fcmps_ule_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {2021; CHECK-LABEL: fcmps_ule_vf_v8f16:2022; CHECK: # %bb.0:2023; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma2024; CHECK-NEXT: vmfgt.vf v8, v8, fa02025; CHECK-NEXT: vmnot.m v0, v82026; CHECK-NEXT: ret2027 %head = insertelement <8 x half> poison, half %b, i32 02028 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2029 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp2030 ret <8 x i1> %12031}2032 2033define <8 x i1> @fcmps_ule_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {2034; CHECK-LABEL: fcmps_ule_fv_v8f16:2035; CHECK: # %bb.0:2036; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma2037; CHECK-NEXT: vmflt.vf v8, v8, fa02038; CHECK-NEXT: vmnot.m v0, v82039; CHECK-NEXT: ret2040 %head = insertelement <8 x half> poison, half %b, i32 02041 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2042 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp2043 ret <8 x i1> %12044}2045 2046define <8 x i1> @fcmps_une_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {2047; CHECK-LABEL: fcmps_une_vv_v8f16:2048; CHECK: # %bb.0:2049; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma2050; CHECK-NEXT: vmfle.vv v10, v9, v82051; CHECK-NEXT: vmfle.vv v8, v8, v92052; CHECK-NEXT: vmnand.mm v0, v8, v102053; CHECK-NEXT: ret2054 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp2055 ret <8 x i1> %12056}2057 2058define <8 x i1> @fcmps_une_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {2059; CHECK-LABEL: fcmps_une_vf_v8f16:2060; CHECK: # %bb.0:2061; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma2062; CHECK-NEXT: vmfge.vf v9, v8, fa02063; CHECK-NEXT: vmfle.vf v8, v8, fa02064; CHECK-NEXT: vmnand.mm v0, v8, v92065; CHECK-NEXT: ret2066 %head = insertelement <8 x half> poison, half %b, i32 02067 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2068 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp2069 ret <8 x i1> %12070}2071 2072define <8 x i1> @fcmps_une_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {2073; CHECK-LABEL: fcmps_une_fv_v8f16:2074; CHECK: # %bb.0:2075; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma2076; CHECK-NEXT: vmfle.vf v9, v8, fa02077; CHECK-NEXT: vmfge.vf v8, v8, fa02078; CHECK-NEXT: vmnand.mm v0, v8, v92079; CHECK-NEXT: ret2080 %head = insertelement <8 x half> poison, half %b, i32 02081 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2082 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp2083 ret <8 x i1> %12084}2085 2086define <8 x i1> @fcmps_uno_vv_v8f16(<8 x half> %va, <8 x half> %vb) nounwind strictfp {2087; CHECK-LABEL: fcmps_uno_vv_v8f16:2088; CHECK: # %bb.0:2089; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma2090; CHECK-NEXT: vmfle.vv v9, v9, v92091; CHECK-NEXT: vmfle.vv v8, v8, v82092; CHECK-NEXT: vmnot.m v8, v82093; CHECK-NEXT: vmorn.mm v0, v8, v92094; CHECK-NEXT: ret2095 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp2096 ret <8 x i1> %12097}2098 2099define <8 x i1> @fcmps_uno_vf_v8f16(<8 x half> %va, half %b) nounwind strictfp {2100; CHECK-LABEL: fcmps_uno_vf_v8f16:2101; CHECK: # %bb.0:2102; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma2103; CHECK-NEXT: vfmv.v.f v9, fa02104; CHECK-NEXT: vmfle.vv v8, v8, v82105; CHECK-NEXT: vmfle.vf v9, v9, fa02106; CHECK-NEXT: vmnot.m v8, v82107; CHECK-NEXT: vmorn.mm v0, v8, v92108; CHECK-NEXT: ret2109 %head = insertelement <8 x half> poison, half %b, i32 02110 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2111 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %va, <8 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp2112 ret <8 x i1> %12113}2114 2115define <8 x i1> @fcmps_uno_fv_v8f16(<8 x half> %va, half %b) nounwind strictfp {2116; CHECK-LABEL: fcmps_uno_fv_v8f16:2117; CHECK: # %bb.0:2118; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma2119; CHECK-NEXT: vfmv.v.f v9, fa02120; CHECK-NEXT: vmfle.vf v9, v9, fa02121; CHECK-NEXT: vmnot.m v9, v92122; CHECK-NEXT: vmfle.vv v8, v8, v82123; CHECK-NEXT: vmorn.mm v0, v9, v82124; CHECK-NEXT: ret2125 %head = insertelement <8 x half> poison, half %b, i32 02126 %splat = shufflevector <8 x half> %head, <8 x half> poison, <8 x i32> zeroinitializer2127 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f16(<8 x half> %splat, <8 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp2128 ret <8 x i1> %12129}2130 2131define <16 x i1> @fcmps_oeq_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2132; CHECK-LABEL: fcmps_oeq_vv_v16f16:2133; CHECK: # %bb.0:2134; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2135; CHECK-NEXT: vmfle.vv v12, v10, v82136; CHECK-NEXT: vmfle.vv v13, v8, v102137; CHECK-NEXT: vmand.mm v0, v13, v122138; CHECK-NEXT: ret2139 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp2140 ret <16 x i1> %12141}2142 2143define <16 x i1> @fcmps_oeq_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2144; CHECK-LABEL: fcmps_oeq_vf_v16f16:2145; CHECK: # %bb.0:2146; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2147; CHECK-NEXT: vmfge.vf v10, v8, fa02148; CHECK-NEXT: vmfle.vf v11, v8, fa02149; CHECK-NEXT: vmand.mm v0, v11, v102150; CHECK-NEXT: ret2151 %head = insertelement <16 x half> poison, half %b, i32 02152 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2153 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp2154 ret <16 x i1> %12155}2156 2157define <16 x i1> @fcmps_oeq_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2158; CHECK-LABEL: fcmps_oeq_fv_v16f16:2159; CHECK: # %bb.0:2160; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2161; CHECK-NEXT: vmfle.vf v10, v8, fa02162; CHECK-NEXT: vmfge.vf v11, v8, fa02163; CHECK-NEXT: vmand.mm v0, v11, v102164; CHECK-NEXT: ret2165 %head = insertelement <16 x half> poison, half %b, i32 02166 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2167 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp2168 ret <16 x i1> %12169}2170 2171define <16 x i1> @fcmps_ogt_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2172; CHECK-LABEL: fcmps_ogt_vv_v16f16:2173; CHECK: # %bb.0:2174; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2175; CHECK-NEXT: vmflt.vv v0, v10, v82176; CHECK-NEXT: ret2177 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp2178 ret <16 x i1> %12179}2180 2181define <16 x i1> @fcmps_ogt_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2182; CHECK-LABEL: fcmps_ogt_vf_v16f16:2183; CHECK: # %bb.0:2184; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2185; CHECK-NEXT: vmfgt.vf v0, v8, fa02186; CHECK-NEXT: ret2187 %head = insertelement <16 x half> poison, half %b, i32 02188 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2189 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp2190 ret <16 x i1> %12191}2192 2193define <16 x i1> @fcmps_ogt_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2194; CHECK-LABEL: fcmps_ogt_fv_v16f16:2195; CHECK: # %bb.0:2196; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2197; CHECK-NEXT: vmflt.vf v0, v8, fa02198; CHECK-NEXT: ret2199 %head = insertelement <16 x half> poison, half %b, i32 02200 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2201 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp2202 ret <16 x i1> %12203}2204 2205define <16 x i1> @fcmps_oge_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2206; CHECK-LABEL: fcmps_oge_vv_v16f16:2207; CHECK: # %bb.0:2208; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2209; CHECK-NEXT: vmfle.vv v0, v10, v82210; CHECK-NEXT: ret2211 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp2212 ret <16 x i1> %12213}2214 2215define <16 x i1> @fcmps_oge_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2216; CHECK-LABEL: fcmps_oge_vf_v16f16:2217; CHECK: # %bb.0:2218; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2219; CHECK-NEXT: vmfge.vf v0, v8, fa02220; CHECK-NEXT: ret2221 %head = insertelement <16 x half> poison, half %b, i32 02222 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2223 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp2224 ret <16 x i1> %12225}2226 2227define <16 x i1> @fcmps_oge_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2228; CHECK-LABEL: fcmps_oge_fv_v16f16:2229; CHECK: # %bb.0:2230; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2231; CHECK-NEXT: vmfle.vf v0, v8, fa02232; CHECK-NEXT: ret2233 %head = insertelement <16 x half> poison, half %b, i32 02234 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2235 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp2236 ret <16 x i1> %12237}2238 2239define <16 x i1> @fcmps_olt_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2240; CHECK-LABEL: fcmps_olt_vv_v16f16:2241; CHECK: # %bb.0:2242; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2243; CHECK-NEXT: vmflt.vv v0, v8, v102244; CHECK-NEXT: ret2245 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp2246 ret <16 x i1> %12247}2248 2249define <16 x i1> @fcmps_olt_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2250; CHECK-LABEL: fcmps_olt_vf_v16f16:2251; CHECK: # %bb.0:2252; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2253; CHECK-NEXT: vmflt.vf v0, v8, fa02254; CHECK-NEXT: ret2255 %head = insertelement <16 x half> poison, half %b, i32 02256 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2257 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp2258 ret <16 x i1> %12259}2260 2261define <16 x i1> @fcmps_olt_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2262; CHECK-LABEL: fcmps_olt_fv_v16f16:2263; CHECK: # %bb.0:2264; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2265; CHECK-NEXT: vmfgt.vf v0, v8, fa02266; CHECK-NEXT: ret2267 %head = insertelement <16 x half> poison, half %b, i32 02268 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2269 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp2270 ret <16 x i1> %12271}2272 2273define <16 x i1> @fcmps_ole_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2274; CHECK-LABEL: fcmps_ole_vv_v16f16:2275; CHECK: # %bb.0:2276; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2277; CHECK-NEXT: vmfle.vv v0, v8, v102278; CHECK-NEXT: ret2279 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp2280 ret <16 x i1> %12281}2282 2283define <16 x i1> @fcmps_ole_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2284; CHECK-LABEL: fcmps_ole_vf_v16f16:2285; CHECK: # %bb.0:2286; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2287; CHECK-NEXT: vmfle.vf v0, v8, fa02288; CHECK-NEXT: ret2289 %head = insertelement <16 x half> poison, half %b, i32 02290 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2291 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp2292 ret <16 x i1> %12293}2294 2295define <16 x i1> @fcmps_ole_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2296; CHECK-LABEL: fcmps_ole_fv_v16f16:2297; CHECK: # %bb.0:2298; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2299; CHECK-NEXT: vmfge.vf v0, v8, fa02300; CHECK-NEXT: ret2301 %head = insertelement <16 x half> poison, half %b, i32 02302 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2303 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp2304 ret <16 x i1> %12305}2306 2307define <16 x i1> @fcmps_one_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2308; CHECK-LABEL: fcmps_one_vv_v16f16:2309; CHECK: # %bb.0:2310; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2311; CHECK-NEXT: vmflt.vv v12, v8, v102312; CHECK-NEXT: vmflt.vv v13, v10, v82313; CHECK-NEXT: vmor.mm v0, v13, v122314; CHECK-NEXT: ret2315 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp2316 ret <16 x i1> %12317}2318 2319define <16 x i1> @fcmps_one_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2320; CHECK-LABEL: fcmps_one_vf_v16f16:2321; CHECK: # %bb.0:2322; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2323; CHECK-NEXT: vmflt.vf v10, v8, fa02324; CHECK-NEXT: vmfgt.vf v11, v8, fa02325; CHECK-NEXT: vmor.mm v0, v11, v102326; CHECK-NEXT: ret2327 %head = insertelement <16 x half> poison, half %b, i32 02328 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2329 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp2330 ret <16 x i1> %12331}2332 2333define <16 x i1> @fcmps_one_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2334; CHECK-LABEL: fcmps_one_fv_v16f16:2335; CHECK: # %bb.0:2336; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2337; CHECK-NEXT: vmfgt.vf v10, v8, fa02338; CHECK-NEXT: vmflt.vf v11, v8, fa02339; CHECK-NEXT: vmor.mm v0, v11, v102340; CHECK-NEXT: ret2341 %head = insertelement <16 x half> poison, half %b, i32 02342 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2343 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp2344 ret <16 x i1> %12345}2346 2347define <16 x i1> @fcmps_ord_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2348; CHECK-LABEL: fcmps_ord_vv_v16f16:2349; CHECK: # %bb.0:2350; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2351; CHECK-NEXT: vmfle.vv v12, v10, v102352; CHECK-NEXT: vmfle.vv v10, v8, v82353; CHECK-NEXT: vmand.mm v0, v10, v122354; CHECK-NEXT: ret2355 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp2356 ret <16 x i1> %12357}2358 2359define <16 x i1> @fcmps_ord_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2360; CHECK-LABEL: fcmps_ord_vf_v16f16:2361; CHECK: # %bb.0:2362; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2363; CHECK-NEXT: vfmv.v.f v10, fa02364; CHECK-NEXT: vmfle.vf v12, v10, fa02365; CHECK-NEXT: vmfle.vv v10, v8, v82366; CHECK-NEXT: vmand.mm v0, v10, v122367; CHECK-NEXT: ret2368 %head = insertelement <16 x half> poison, half %b, i32 02369 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2370 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp2371 ret <16 x i1> %12372}2373 2374define <16 x i1> @fcmps_ord_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2375; CHECK-LABEL: fcmps_ord_fv_v16f16:2376; CHECK: # %bb.0:2377; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2378; CHECK-NEXT: vfmv.v.f v10, fa02379; CHECK-NEXT: vmfle.vf v12, v10, fa02380; CHECK-NEXT: vmfle.vv v10, v8, v82381; CHECK-NEXT: vmand.mm v0, v12, v102382; CHECK-NEXT: ret2383 %head = insertelement <16 x half> poison, half %b, i32 02384 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2385 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp2386 ret <16 x i1> %12387}2388 2389define <16 x i1> @fcmps_ueq_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2390; CHECK-LABEL: fcmps_ueq_vv_v16f16:2391; CHECK: # %bb.0:2392; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2393; CHECK-NEXT: vmflt.vv v12, v8, v102394; CHECK-NEXT: vmflt.vv v13, v10, v82395; CHECK-NEXT: vmnor.mm v0, v13, v122396; CHECK-NEXT: ret2397 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp2398 ret <16 x i1> %12399}2400 2401define <16 x i1> @fcmps_ueq_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2402; CHECK-LABEL: fcmps_ueq_vf_v16f16:2403; CHECK: # %bb.0:2404; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2405; CHECK-NEXT: vmflt.vf v10, v8, fa02406; CHECK-NEXT: vmfgt.vf v11, v8, fa02407; CHECK-NEXT: vmnor.mm v0, v11, v102408; CHECK-NEXT: ret2409 %head = insertelement <16 x half> poison, half %b, i32 02410 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2411 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp2412 ret <16 x i1> %12413}2414 2415define <16 x i1> @fcmps_ueq_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2416; CHECK-LABEL: fcmps_ueq_fv_v16f16:2417; CHECK: # %bb.0:2418; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2419; CHECK-NEXT: vmfgt.vf v10, v8, fa02420; CHECK-NEXT: vmflt.vf v11, v8, fa02421; CHECK-NEXT: vmnor.mm v0, v11, v102422; CHECK-NEXT: ret2423 %head = insertelement <16 x half> poison, half %b, i32 02424 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2425 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp2426 ret <16 x i1> %12427}2428 2429define <16 x i1> @fcmps_ugt_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2430; CHECK-LABEL: fcmps_ugt_vv_v16f16:2431; CHECK: # %bb.0:2432; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2433; CHECK-NEXT: vmfle.vv v12, v8, v102434; CHECK-NEXT: vmnot.m v0, v122435; CHECK-NEXT: ret2436 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp2437 ret <16 x i1> %12438}2439 2440define <16 x i1> @fcmps_ugt_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2441; CHECK-LABEL: fcmps_ugt_vf_v16f16:2442; CHECK: # %bb.0:2443; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2444; CHECK-NEXT: vmfle.vf v10, v8, fa02445; CHECK-NEXT: vmnot.m v0, v102446; CHECK-NEXT: ret2447 %head = insertelement <16 x half> poison, half %b, i32 02448 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2449 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp2450 ret <16 x i1> %12451}2452 2453define <16 x i1> @fcmps_ugt_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2454; CHECK-LABEL: fcmps_ugt_fv_v16f16:2455; CHECK: # %bb.0:2456; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2457; CHECK-NEXT: vmfge.vf v10, v8, fa02458; CHECK-NEXT: vmnot.m v0, v102459; CHECK-NEXT: ret2460 %head = insertelement <16 x half> poison, half %b, i32 02461 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2462 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp2463 ret <16 x i1> %12464}2465 2466define <16 x i1> @fcmps_uge_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2467; CHECK-LABEL: fcmps_uge_vv_v16f16:2468; CHECK: # %bb.0:2469; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2470; CHECK-NEXT: vmflt.vv v12, v8, v102471; CHECK-NEXT: vmnot.m v0, v122472; CHECK-NEXT: ret2473 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp2474 ret <16 x i1> %12475}2476 2477define <16 x i1> @fcmps_uge_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2478; CHECK-LABEL: fcmps_uge_vf_v16f16:2479; CHECK: # %bb.0:2480; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2481; CHECK-NEXT: vmflt.vf v10, v8, fa02482; CHECK-NEXT: vmnot.m v0, v102483; CHECK-NEXT: ret2484 %head = insertelement <16 x half> poison, half %b, i32 02485 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2486 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp2487 ret <16 x i1> %12488}2489 2490define <16 x i1> @fcmps_uge_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2491; CHECK-LABEL: fcmps_uge_fv_v16f16:2492; CHECK: # %bb.0:2493; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2494; CHECK-NEXT: vmfgt.vf v10, v8, fa02495; CHECK-NEXT: vmnot.m v0, v102496; CHECK-NEXT: ret2497 %head = insertelement <16 x half> poison, half %b, i32 02498 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2499 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp2500 ret <16 x i1> %12501}2502 2503define <16 x i1> @fcmps_ult_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2504; CHECK-LABEL: fcmps_ult_vv_v16f16:2505; CHECK: # %bb.0:2506; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2507; CHECK-NEXT: vmfle.vv v12, v10, v82508; CHECK-NEXT: vmnot.m v0, v122509; CHECK-NEXT: ret2510 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp2511 ret <16 x i1> %12512}2513 2514define <16 x i1> @fcmps_ult_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2515; CHECK-LABEL: fcmps_ult_vf_v16f16:2516; CHECK: # %bb.0:2517; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2518; CHECK-NEXT: vmfge.vf v10, v8, fa02519; CHECK-NEXT: vmnot.m v0, v102520; CHECK-NEXT: ret2521 %head = insertelement <16 x half> poison, half %b, i32 02522 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2523 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp2524 ret <16 x i1> %12525}2526 2527define <16 x i1> @fcmps_ult_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2528; CHECK-LABEL: fcmps_ult_fv_v16f16:2529; CHECK: # %bb.0:2530; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2531; CHECK-NEXT: vmfle.vf v10, v8, fa02532; CHECK-NEXT: vmnot.m v0, v102533; CHECK-NEXT: ret2534 %head = insertelement <16 x half> poison, half %b, i32 02535 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2536 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp2537 ret <16 x i1> %12538}2539 2540define <16 x i1> @fcmps_ule_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2541; CHECK-LABEL: fcmps_ule_vv_v16f16:2542; CHECK: # %bb.0:2543; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2544; CHECK-NEXT: vmflt.vv v12, v10, v82545; CHECK-NEXT: vmnot.m v0, v122546; CHECK-NEXT: ret2547 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp2548 ret <16 x i1> %12549}2550 2551define <16 x i1> @fcmps_ule_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2552; CHECK-LABEL: fcmps_ule_vf_v16f16:2553; CHECK: # %bb.0:2554; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2555; CHECK-NEXT: vmfgt.vf v10, v8, fa02556; CHECK-NEXT: vmnot.m v0, v102557; CHECK-NEXT: ret2558 %head = insertelement <16 x half> poison, half %b, i32 02559 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2560 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp2561 ret <16 x i1> %12562}2563 2564define <16 x i1> @fcmps_ule_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2565; CHECK-LABEL: fcmps_ule_fv_v16f16:2566; CHECK: # %bb.0:2567; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2568; CHECK-NEXT: vmflt.vf v10, v8, fa02569; CHECK-NEXT: vmnot.m v0, v102570; CHECK-NEXT: ret2571 %head = insertelement <16 x half> poison, half %b, i32 02572 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2573 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp2574 ret <16 x i1> %12575}2576 2577define <16 x i1> @fcmps_une_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2578; CHECK-LABEL: fcmps_une_vv_v16f16:2579; CHECK: # %bb.0:2580; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2581; CHECK-NEXT: vmfle.vv v12, v10, v82582; CHECK-NEXT: vmfle.vv v13, v8, v102583; CHECK-NEXT: vmnand.mm v0, v13, v122584; CHECK-NEXT: ret2585 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp2586 ret <16 x i1> %12587}2588 2589define <16 x i1> @fcmps_une_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2590; CHECK-LABEL: fcmps_une_vf_v16f16:2591; CHECK: # %bb.0:2592; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2593; CHECK-NEXT: vmfge.vf v10, v8, fa02594; CHECK-NEXT: vmfle.vf v11, v8, fa02595; CHECK-NEXT: vmnand.mm v0, v11, v102596; CHECK-NEXT: ret2597 %head = insertelement <16 x half> poison, half %b, i32 02598 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2599 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp2600 ret <16 x i1> %12601}2602 2603define <16 x i1> @fcmps_une_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2604; CHECK-LABEL: fcmps_une_fv_v16f16:2605; CHECK: # %bb.0:2606; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2607; CHECK-NEXT: vmfle.vf v10, v8, fa02608; CHECK-NEXT: vmfge.vf v11, v8, fa02609; CHECK-NEXT: vmnand.mm v0, v11, v102610; CHECK-NEXT: ret2611 %head = insertelement <16 x half> poison, half %b, i32 02612 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2613 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp2614 ret <16 x i1> %12615}2616 2617define <16 x i1> @fcmps_uno_vv_v16f16(<16 x half> %va, <16 x half> %vb) nounwind strictfp {2618; CHECK-LABEL: fcmps_uno_vv_v16f16:2619; CHECK: # %bb.0:2620; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2621; CHECK-NEXT: vmfle.vv v12, v10, v102622; CHECK-NEXT: vmfle.vv v10, v8, v82623; CHECK-NEXT: vmnot.m v8, v102624; CHECK-NEXT: vmorn.mm v0, v8, v122625; CHECK-NEXT: ret2626 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp2627 ret <16 x i1> %12628}2629 2630define <16 x i1> @fcmps_uno_vf_v16f16(<16 x half> %va, half %b) nounwind strictfp {2631; CHECK-LABEL: fcmps_uno_vf_v16f16:2632; CHECK: # %bb.0:2633; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2634; CHECK-NEXT: vfmv.v.f v10, fa02635; CHECK-NEXT: vmfle.vv v12, v8, v82636; CHECK-NEXT: vmfle.vf v8, v10, fa02637; CHECK-NEXT: vmnot.m v9, v122638; CHECK-NEXT: vmorn.mm v0, v9, v82639; CHECK-NEXT: ret2640 %head = insertelement <16 x half> poison, half %b, i32 02641 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2642 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %va, <16 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp2643 ret <16 x i1> %12644}2645 2646define <16 x i1> @fcmps_uno_fv_v16f16(<16 x half> %va, half %b) nounwind strictfp {2647; CHECK-LABEL: fcmps_uno_fv_v16f16:2648; CHECK: # %bb.0:2649; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma2650; CHECK-NEXT: vfmv.v.f v10, fa02651; CHECK-NEXT: vmfle.vf v12, v10, fa02652; CHECK-NEXT: vmnot.m v10, v122653; CHECK-NEXT: vmfle.vv v11, v8, v82654; CHECK-NEXT: vmorn.mm v0, v10, v112655; CHECK-NEXT: ret2656 %head = insertelement <16 x half> poison, half %b, i32 02657 %splat = shufflevector <16 x half> %head, <16 x half> poison, <16 x i32> zeroinitializer2658 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f16(<16 x half> %splat, <16 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp2659 ret <16 x i1> %12660}2661 2662define <32 x i1> @fcmps_oeq_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {2663; CHECK-LABEL: fcmps_oeq_vv_v32f16:2664; CHECK: # %bb.0:2665; CHECK-NEXT: li a0, 322666; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2667; CHECK-NEXT: vmfle.vv v16, v12, v82668; CHECK-NEXT: vmfle.vv v17, v8, v122669; CHECK-NEXT: vmand.mm v0, v17, v162670; CHECK-NEXT: ret2671 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp2672 ret <32 x i1> %12673}2674 2675define <32 x i1> @fcmps_oeq_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {2676; CHECK-LABEL: fcmps_oeq_vf_v32f16:2677; CHECK: # %bb.0:2678; CHECK-NEXT: li a0, 322679; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2680; CHECK-NEXT: vmfge.vf v12, v8, fa02681; CHECK-NEXT: vmfle.vf v13, v8, fa02682; CHECK-NEXT: vmand.mm v0, v13, v122683; CHECK-NEXT: ret2684 %head = insertelement <32 x half> poison, half %b, i32 02685 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer2686 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp2687 ret <32 x i1> %12688}2689 2690define <32 x i1> @fcmps_oeq_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {2691; CHECK-LABEL: fcmps_oeq_fv_v32f16:2692; CHECK: # %bb.0:2693; CHECK-NEXT: li a0, 322694; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2695; CHECK-NEXT: vmfle.vf v12, v8, fa02696; CHECK-NEXT: vmfge.vf v13, v8, fa02697; CHECK-NEXT: vmand.mm v0, v13, v122698; CHECK-NEXT: ret2699 %head = insertelement <32 x half> poison, half %b, i32 02700 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer2701 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp2702 ret <32 x i1> %12703}2704 2705define <32 x i1> @fcmps_ogt_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {2706; CHECK-LABEL: fcmps_ogt_vv_v32f16:2707; CHECK: # %bb.0:2708; CHECK-NEXT: li a0, 322709; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2710; CHECK-NEXT: vmflt.vv v0, v12, v82711; CHECK-NEXT: ret2712 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp2713 ret <32 x i1> %12714}2715 2716define <32 x i1> @fcmps_ogt_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {2717; CHECK-LABEL: fcmps_ogt_vf_v32f16:2718; CHECK: # %bb.0:2719; CHECK-NEXT: li a0, 322720; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2721; CHECK-NEXT: vmfgt.vf v0, v8, fa02722; CHECK-NEXT: ret2723 %head = insertelement <32 x half> poison, half %b, i32 02724 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer2725 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp2726 ret <32 x i1> %12727}2728 2729define <32 x i1> @fcmps_ogt_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {2730; CHECK-LABEL: fcmps_ogt_fv_v32f16:2731; CHECK: # %bb.0:2732; CHECK-NEXT: li a0, 322733; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2734; CHECK-NEXT: vmflt.vf v0, v8, fa02735; CHECK-NEXT: ret2736 %head = insertelement <32 x half> poison, half %b, i32 02737 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer2738 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp2739 ret <32 x i1> %12740}2741 2742define <32 x i1> @fcmps_oge_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {2743; CHECK-LABEL: fcmps_oge_vv_v32f16:2744; CHECK: # %bb.0:2745; CHECK-NEXT: li a0, 322746; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2747; CHECK-NEXT: vmfle.vv v0, v12, v82748; CHECK-NEXT: ret2749 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp2750 ret <32 x i1> %12751}2752 2753define <32 x i1> @fcmps_oge_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {2754; CHECK-LABEL: fcmps_oge_vf_v32f16:2755; CHECK: # %bb.0:2756; CHECK-NEXT: li a0, 322757; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2758; CHECK-NEXT: vmfge.vf v0, v8, fa02759; CHECK-NEXT: ret2760 %head = insertelement <32 x half> poison, half %b, i32 02761 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer2762 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp2763 ret <32 x i1> %12764}2765 2766define <32 x i1> @fcmps_oge_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {2767; CHECK-LABEL: fcmps_oge_fv_v32f16:2768; CHECK: # %bb.0:2769; CHECK-NEXT: li a0, 322770; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2771; CHECK-NEXT: vmfle.vf v0, v8, fa02772; CHECK-NEXT: ret2773 %head = insertelement <32 x half> poison, half %b, i32 02774 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer2775 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp2776 ret <32 x i1> %12777}2778 2779define <32 x i1> @fcmps_olt_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {2780; CHECK-LABEL: fcmps_olt_vv_v32f16:2781; CHECK: # %bb.0:2782; CHECK-NEXT: li a0, 322783; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2784; CHECK-NEXT: vmflt.vv v0, v8, v122785; CHECK-NEXT: ret2786 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp2787 ret <32 x i1> %12788}2789 2790define <32 x i1> @fcmps_olt_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {2791; CHECK-LABEL: fcmps_olt_vf_v32f16:2792; CHECK: # %bb.0:2793; CHECK-NEXT: li a0, 322794; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2795; CHECK-NEXT: vmflt.vf v0, v8, fa02796; CHECK-NEXT: ret2797 %head = insertelement <32 x half> poison, half %b, i32 02798 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer2799 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp2800 ret <32 x i1> %12801}2802 2803define <32 x i1> @fcmps_olt_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {2804; CHECK-LABEL: fcmps_olt_fv_v32f16:2805; CHECK: # %bb.0:2806; CHECK-NEXT: li a0, 322807; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2808; CHECK-NEXT: vmfgt.vf v0, v8, fa02809; CHECK-NEXT: ret2810 %head = insertelement <32 x half> poison, half %b, i32 02811 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer2812 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp2813 ret <32 x i1> %12814}2815 2816define <32 x i1> @fcmps_ole_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {2817; CHECK-LABEL: fcmps_ole_vv_v32f16:2818; CHECK: # %bb.0:2819; CHECK-NEXT: li a0, 322820; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2821; CHECK-NEXT: vmfle.vv v0, v8, v122822; CHECK-NEXT: ret2823 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp2824 ret <32 x i1> %12825}2826 2827define <32 x i1> @fcmps_ole_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {2828; CHECK-LABEL: fcmps_ole_vf_v32f16:2829; CHECK: # %bb.0:2830; CHECK-NEXT: li a0, 322831; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2832; CHECK-NEXT: vmfle.vf v0, v8, fa02833; CHECK-NEXT: ret2834 %head = insertelement <32 x half> poison, half %b, i32 02835 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer2836 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp2837 ret <32 x i1> %12838}2839 2840define <32 x i1> @fcmps_ole_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {2841; CHECK-LABEL: fcmps_ole_fv_v32f16:2842; CHECK: # %bb.0:2843; CHECK-NEXT: li a0, 322844; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2845; CHECK-NEXT: vmfge.vf v0, v8, fa02846; CHECK-NEXT: ret2847 %head = insertelement <32 x half> poison, half %b, i32 02848 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer2849 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp2850 ret <32 x i1> %12851}2852 2853define <32 x i1> @fcmps_one_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {2854; CHECK-LABEL: fcmps_one_vv_v32f16:2855; CHECK: # %bb.0:2856; CHECK-NEXT: li a0, 322857; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2858; CHECK-NEXT: vmflt.vv v16, v8, v122859; CHECK-NEXT: vmflt.vv v17, v12, v82860; CHECK-NEXT: vmor.mm v0, v17, v162861; CHECK-NEXT: ret2862 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp2863 ret <32 x i1> %12864}2865 2866define <32 x i1> @fcmps_one_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {2867; CHECK-LABEL: fcmps_one_vf_v32f16:2868; CHECK: # %bb.0:2869; CHECK-NEXT: li a0, 322870; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2871; CHECK-NEXT: vmflt.vf v12, v8, fa02872; CHECK-NEXT: vmfgt.vf v13, v8, fa02873; CHECK-NEXT: vmor.mm v0, v13, v122874; CHECK-NEXT: ret2875 %head = insertelement <32 x half> poison, half %b, i32 02876 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer2877 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp2878 ret <32 x i1> %12879}2880 2881define <32 x i1> @fcmps_one_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {2882; CHECK-LABEL: fcmps_one_fv_v32f16:2883; CHECK: # %bb.0:2884; CHECK-NEXT: li a0, 322885; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2886; CHECK-NEXT: vmfgt.vf v12, v8, fa02887; CHECK-NEXT: vmflt.vf v13, v8, fa02888; CHECK-NEXT: vmor.mm v0, v13, v122889; CHECK-NEXT: ret2890 %head = insertelement <32 x half> poison, half %b, i32 02891 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer2892 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp2893 ret <32 x i1> %12894}2895 2896define <32 x i1> @fcmps_ord_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {2897; CHECK-LABEL: fcmps_ord_vv_v32f16:2898; CHECK: # %bb.0:2899; CHECK-NEXT: li a0, 322900; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2901; CHECK-NEXT: vmfle.vv v16, v12, v122902; CHECK-NEXT: vmfle.vv v12, v8, v82903; CHECK-NEXT: vmand.mm v0, v12, v162904; CHECK-NEXT: ret2905 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp2906 ret <32 x i1> %12907}2908 2909define <32 x i1> @fcmps_ord_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {2910; CHECK-LABEL: fcmps_ord_vf_v32f16:2911; CHECK: # %bb.0:2912; CHECK-NEXT: li a0, 322913; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2914; CHECK-NEXT: vfmv.v.f v12, fa02915; CHECK-NEXT: vmfle.vf v16, v12, fa02916; CHECK-NEXT: vmfle.vv v12, v8, v82917; CHECK-NEXT: vmand.mm v0, v12, v162918; CHECK-NEXT: ret2919 %head = insertelement <32 x half> poison, half %b, i32 02920 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer2921 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp2922 ret <32 x i1> %12923}2924 2925define <32 x i1> @fcmps_ord_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {2926; CHECK-LABEL: fcmps_ord_fv_v32f16:2927; CHECK: # %bb.0:2928; CHECK-NEXT: li a0, 322929; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2930; CHECK-NEXT: vfmv.v.f v12, fa02931; CHECK-NEXT: vmfle.vf v16, v12, fa02932; CHECK-NEXT: vmfle.vv v12, v8, v82933; CHECK-NEXT: vmand.mm v0, v16, v122934; CHECK-NEXT: ret2935 %head = insertelement <32 x half> poison, half %b, i32 02936 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer2937 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp2938 ret <32 x i1> %12939}2940 2941define <32 x i1> @fcmps_ueq_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {2942; CHECK-LABEL: fcmps_ueq_vv_v32f16:2943; CHECK: # %bb.0:2944; CHECK-NEXT: li a0, 322945; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2946; CHECK-NEXT: vmflt.vv v16, v8, v122947; CHECK-NEXT: vmflt.vv v17, v12, v82948; CHECK-NEXT: vmnor.mm v0, v17, v162949; CHECK-NEXT: ret2950 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp2951 ret <32 x i1> %12952}2953 2954define <32 x i1> @fcmps_ueq_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {2955; CHECK-LABEL: fcmps_ueq_vf_v32f16:2956; CHECK: # %bb.0:2957; CHECK-NEXT: li a0, 322958; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2959; CHECK-NEXT: vmflt.vf v12, v8, fa02960; CHECK-NEXT: vmfgt.vf v13, v8, fa02961; CHECK-NEXT: vmnor.mm v0, v13, v122962; CHECK-NEXT: ret2963 %head = insertelement <32 x half> poison, half %b, i32 02964 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer2965 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp2966 ret <32 x i1> %12967}2968 2969define <32 x i1> @fcmps_ueq_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {2970; CHECK-LABEL: fcmps_ueq_fv_v32f16:2971; CHECK: # %bb.0:2972; CHECK-NEXT: li a0, 322973; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2974; CHECK-NEXT: vmfgt.vf v12, v8, fa02975; CHECK-NEXT: vmflt.vf v13, v8, fa02976; CHECK-NEXT: vmnor.mm v0, v13, v122977; CHECK-NEXT: ret2978 %head = insertelement <32 x half> poison, half %b, i32 02979 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer2980 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp2981 ret <32 x i1> %12982}2983 2984define <32 x i1> @fcmps_ugt_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {2985; CHECK-LABEL: fcmps_ugt_vv_v32f16:2986; CHECK: # %bb.0:2987; CHECK-NEXT: li a0, 322988; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2989; CHECK-NEXT: vmfle.vv v16, v8, v122990; CHECK-NEXT: vmnot.m v0, v162991; CHECK-NEXT: ret2992 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp2993 ret <32 x i1> %12994}2995 2996define <32 x i1> @fcmps_ugt_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {2997; CHECK-LABEL: fcmps_ugt_vf_v32f16:2998; CHECK: # %bb.0:2999; CHECK-NEXT: li a0, 323000; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3001; CHECK-NEXT: vmfle.vf v12, v8, fa03002; CHECK-NEXT: vmnot.m v0, v123003; CHECK-NEXT: ret3004 %head = insertelement <32 x half> poison, half %b, i32 03005 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3006 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp3007 ret <32 x i1> %13008}3009 3010define <32 x i1> @fcmps_ugt_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {3011; CHECK-LABEL: fcmps_ugt_fv_v32f16:3012; CHECK: # %bb.0:3013; CHECK-NEXT: li a0, 323014; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3015; CHECK-NEXT: vmfge.vf v12, v8, fa03016; CHECK-NEXT: vmnot.m v0, v123017; CHECK-NEXT: ret3018 %head = insertelement <32 x half> poison, half %b, i32 03019 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3020 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp3021 ret <32 x i1> %13022}3023 3024define <32 x i1> @fcmps_uge_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {3025; CHECK-LABEL: fcmps_uge_vv_v32f16:3026; CHECK: # %bb.0:3027; CHECK-NEXT: li a0, 323028; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3029; CHECK-NEXT: vmflt.vv v16, v8, v123030; CHECK-NEXT: vmnot.m v0, v163031; CHECK-NEXT: ret3032 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp3033 ret <32 x i1> %13034}3035 3036define <32 x i1> @fcmps_uge_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {3037; CHECK-LABEL: fcmps_uge_vf_v32f16:3038; CHECK: # %bb.0:3039; CHECK-NEXT: li a0, 323040; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3041; CHECK-NEXT: vmflt.vf v12, v8, fa03042; CHECK-NEXT: vmnot.m v0, v123043; CHECK-NEXT: ret3044 %head = insertelement <32 x half> poison, half %b, i32 03045 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3046 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp3047 ret <32 x i1> %13048}3049 3050define <32 x i1> @fcmps_uge_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {3051; CHECK-LABEL: fcmps_uge_fv_v32f16:3052; CHECK: # %bb.0:3053; CHECK-NEXT: li a0, 323054; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3055; CHECK-NEXT: vmfgt.vf v12, v8, fa03056; CHECK-NEXT: vmnot.m v0, v123057; CHECK-NEXT: ret3058 %head = insertelement <32 x half> poison, half %b, i32 03059 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3060 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp3061 ret <32 x i1> %13062}3063 3064define <32 x i1> @fcmps_ult_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {3065; CHECK-LABEL: fcmps_ult_vv_v32f16:3066; CHECK: # %bb.0:3067; CHECK-NEXT: li a0, 323068; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3069; CHECK-NEXT: vmfle.vv v16, v12, v83070; CHECK-NEXT: vmnot.m v0, v163071; CHECK-NEXT: ret3072 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp3073 ret <32 x i1> %13074}3075 3076define <32 x i1> @fcmps_ult_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {3077; CHECK-LABEL: fcmps_ult_vf_v32f16:3078; CHECK: # %bb.0:3079; CHECK-NEXT: li a0, 323080; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3081; CHECK-NEXT: vmfge.vf v12, v8, fa03082; CHECK-NEXT: vmnot.m v0, v123083; CHECK-NEXT: ret3084 %head = insertelement <32 x half> poison, half %b, i32 03085 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3086 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp3087 ret <32 x i1> %13088}3089 3090define <32 x i1> @fcmps_ult_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {3091; CHECK-LABEL: fcmps_ult_fv_v32f16:3092; CHECK: # %bb.0:3093; CHECK-NEXT: li a0, 323094; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3095; CHECK-NEXT: vmfle.vf v12, v8, fa03096; CHECK-NEXT: vmnot.m v0, v123097; CHECK-NEXT: ret3098 %head = insertelement <32 x half> poison, half %b, i32 03099 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3100 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp3101 ret <32 x i1> %13102}3103 3104define <32 x i1> @fcmps_ule_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {3105; CHECK-LABEL: fcmps_ule_vv_v32f16:3106; CHECK: # %bb.0:3107; CHECK-NEXT: li a0, 323108; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3109; CHECK-NEXT: vmflt.vv v16, v12, v83110; CHECK-NEXT: vmnot.m v0, v163111; CHECK-NEXT: ret3112 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp3113 ret <32 x i1> %13114}3115 3116define <32 x i1> @fcmps_ule_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {3117; CHECK-LABEL: fcmps_ule_vf_v32f16:3118; CHECK: # %bb.0:3119; CHECK-NEXT: li a0, 323120; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3121; CHECK-NEXT: vmfgt.vf v12, v8, fa03122; CHECK-NEXT: vmnot.m v0, v123123; CHECK-NEXT: ret3124 %head = insertelement <32 x half> poison, half %b, i32 03125 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3126 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp3127 ret <32 x i1> %13128}3129 3130define <32 x i1> @fcmps_ule_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {3131; CHECK-LABEL: fcmps_ule_fv_v32f16:3132; CHECK: # %bb.0:3133; CHECK-NEXT: li a0, 323134; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3135; CHECK-NEXT: vmflt.vf v12, v8, fa03136; CHECK-NEXT: vmnot.m v0, v123137; CHECK-NEXT: ret3138 %head = insertelement <32 x half> poison, half %b, i32 03139 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3140 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp3141 ret <32 x i1> %13142}3143 3144define <32 x i1> @fcmps_une_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {3145; CHECK-LABEL: fcmps_une_vv_v32f16:3146; CHECK: # %bb.0:3147; CHECK-NEXT: li a0, 323148; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3149; CHECK-NEXT: vmfle.vv v16, v12, v83150; CHECK-NEXT: vmfle.vv v17, v8, v123151; CHECK-NEXT: vmnand.mm v0, v17, v163152; CHECK-NEXT: ret3153 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp3154 ret <32 x i1> %13155}3156 3157define <32 x i1> @fcmps_une_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {3158; CHECK-LABEL: fcmps_une_vf_v32f16:3159; CHECK: # %bb.0:3160; CHECK-NEXT: li a0, 323161; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3162; CHECK-NEXT: vmfge.vf v12, v8, fa03163; CHECK-NEXT: vmfle.vf v13, v8, fa03164; CHECK-NEXT: vmnand.mm v0, v13, v123165; CHECK-NEXT: ret3166 %head = insertelement <32 x half> poison, half %b, i32 03167 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3168 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp3169 ret <32 x i1> %13170}3171 3172define <32 x i1> @fcmps_une_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {3173; CHECK-LABEL: fcmps_une_fv_v32f16:3174; CHECK: # %bb.0:3175; CHECK-NEXT: li a0, 323176; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3177; CHECK-NEXT: vmfle.vf v12, v8, fa03178; CHECK-NEXT: vmfge.vf v13, v8, fa03179; CHECK-NEXT: vmnand.mm v0, v13, v123180; CHECK-NEXT: ret3181 %head = insertelement <32 x half> poison, half %b, i32 03182 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3183 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp3184 ret <32 x i1> %13185}3186 3187define <32 x i1> @fcmps_uno_vv_v32f16(<32 x half> %va, <32 x half> %vb) nounwind strictfp {3188; CHECK-LABEL: fcmps_uno_vv_v32f16:3189; CHECK: # %bb.0:3190; CHECK-NEXT: li a0, 323191; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3192; CHECK-NEXT: vmfle.vv v16, v12, v123193; CHECK-NEXT: vmfle.vv v12, v8, v83194; CHECK-NEXT: vmnot.m v8, v123195; CHECK-NEXT: vmorn.mm v0, v8, v163196; CHECK-NEXT: ret3197 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp3198 ret <32 x i1> %13199}3200 3201define <32 x i1> @fcmps_uno_vf_v32f16(<32 x half> %va, half %b) nounwind strictfp {3202; CHECK-LABEL: fcmps_uno_vf_v32f16:3203; CHECK: # %bb.0:3204; CHECK-NEXT: li a0, 323205; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3206; CHECK-NEXT: vfmv.v.f v12, fa03207; CHECK-NEXT: vmfle.vv v16, v8, v83208; CHECK-NEXT: vmfle.vf v8, v12, fa03209; CHECK-NEXT: vmnot.m v9, v163210; CHECK-NEXT: vmorn.mm v0, v9, v83211; CHECK-NEXT: ret3212 %head = insertelement <32 x half> poison, half %b, i32 03213 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3214 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %va, <32 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp3215 ret <32 x i1> %13216}3217 3218define <32 x i1> @fcmps_uno_fv_v32f16(<32 x half> %va, half %b) nounwind strictfp {3219; CHECK-LABEL: fcmps_uno_fv_v32f16:3220; CHECK: # %bb.0:3221; CHECK-NEXT: li a0, 323222; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3223; CHECK-NEXT: vfmv.v.f v12, fa03224; CHECK-NEXT: vmfle.vv v16, v8, v83225; CHECK-NEXT: vmfle.vf v8, v12, fa03226; CHECK-NEXT: vmnot.m v8, v83227; CHECK-NEXT: vmorn.mm v0, v8, v163228; CHECK-NEXT: ret3229 %head = insertelement <32 x half> poison, half %b, i32 03230 %splat = shufflevector <32 x half> %head, <32 x half> poison, <32 x i32> zeroinitializer3231 %1 = call <32 x i1> @llvm.experimental.constrained.fcmps.v32f16(<32 x half> %splat, <32 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp3232 ret <32 x i1> %13233}3234 3235define <1 x i1> @fcmps_oeq_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {3236; CHECK-LABEL: fcmps_oeq_vv_v1f32:3237; CHECK: # %bb.0:3238; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3239; CHECK-NEXT: vmfle.vv v10, v9, v83240; CHECK-NEXT: vmfle.vv v8, v8, v93241; CHECK-NEXT: vmand.mm v0, v8, v103242; CHECK-NEXT: ret3243 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp3244 ret <1 x i1> %13245}3246 3247define <1 x i1> @fcmps_oeq_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {3248; CHECK-LABEL: fcmps_oeq_vf_v1f32:3249; CHECK: # %bb.0:3250; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3251; CHECK-NEXT: vmfge.vf v9, v8, fa03252; CHECK-NEXT: vmfle.vf v8, v8, fa03253; CHECK-NEXT: vmand.mm v0, v8, v93254; CHECK-NEXT: ret3255 %head = insertelement <1 x float> poison, float %b, i32 03256 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3257 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp3258 ret <1 x i1> %13259}3260 3261define <1 x i1> @fcmps_oeq_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {3262; CHECK-LABEL: fcmps_oeq_fv_v1f32:3263; CHECK: # %bb.0:3264; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3265; CHECK-NEXT: vmfle.vf v9, v8, fa03266; CHECK-NEXT: vmfge.vf v8, v8, fa03267; CHECK-NEXT: vmand.mm v0, v8, v93268; CHECK-NEXT: ret3269 %head = insertelement <1 x float> poison, float %b, i32 03270 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3271 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp3272 ret <1 x i1> %13273}3274 3275define <1 x i1> @fcmps_ogt_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {3276; CHECK-LABEL: fcmps_ogt_vv_v1f32:3277; CHECK: # %bb.0:3278; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3279; CHECK-NEXT: vmflt.vv v0, v9, v83280; CHECK-NEXT: ret3281 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp3282 ret <1 x i1> %13283}3284 3285define <1 x i1> @fcmps_ogt_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {3286; CHECK-LABEL: fcmps_ogt_vf_v1f32:3287; CHECK: # %bb.0:3288; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3289; CHECK-NEXT: vmfgt.vf v0, v8, fa03290; CHECK-NEXT: ret3291 %head = insertelement <1 x float> poison, float %b, i32 03292 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3293 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp3294 ret <1 x i1> %13295}3296 3297define <1 x i1> @fcmps_ogt_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {3298; CHECK-LABEL: fcmps_ogt_fv_v1f32:3299; CHECK: # %bb.0:3300; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3301; CHECK-NEXT: vmflt.vf v0, v8, fa03302; CHECK-NEXT: ret3303 %head = insertelement <1 x float> poison, float %b, i32 03304 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3305 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp3306 ret <1 x i1> %13307}3308 3309define <1 x i1> @fcmps_oge_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {3310; CHECK-LABEL: fcmps_oge_vv_v1f32:3311; CHECK: # %bb.0:3312; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3313; CHECK-NEXT: vmfle.vv v0, v9, v83314; CHECK-NEXT: ret3315 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp3316 ret <1 x i1> %13317}3318 3319define <1 x i1> @fcmps_oge_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {3320; CHECK-LABEL: fcmps_oge_vf_v1f32:3321; CHECK: # %bb.0:3322; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3323; CHECK-NEXT: vmfge.vf v0, v8, fa03324; CHECK-NEXT: ret3325 %head = insertelement <1 x float> poison, float %b, i32 03326 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3327 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp3328 ret <1 x i1> %13329}3330 3331define <1 x i1> @fcmps_oge_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {3332; CHECK-LABEL: fcmps_oge_fv_v1f32:3333; CHECK: # %bb.0:3334; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3335; CHECK-NEXT: vmfle.vf v0, v8, fa03336; CHECK-NEXT: ret3337 %head = insertelement <1 x float> poison, float %b, i32 03338 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3339 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp3340 ret <1 x i1> %13341}3342 3343define <1 x i1> @fcmps_olt_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {3344; CHECK-LABEL: fcmps_olt_vv_v1f32:3345; CHECK: # %bb.0:3346; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3347; CHECK-NEXT: vmflt.vv v0, v8, v93348; CHECK-NEXT: ret3349 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp3350 ret <1 x i1> %13351}3352 3353define <1 x i1> @fcmps_olt_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {3354; CHECK-LABEL: fcmps_olt_vf_v1f32:3355; CHECK: # %bb.0:3356; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3357; CHECK-NEXT: vmflt.vf v0, v8, fa03358; CHECK-NEXT: ret3359 %head = insertelement <1 x float> poison, float %b, i32 03360 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3361 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp3362 ret <1 x i1> %13363}3364 3365define <1 x i1> @fcmps_olt_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {3366; CHECK-LABEL: fcmps_olt_fv_v1f32:3367; CHECK: # %bb.0:3368; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3369; CHECK-NEXT: vmfgt.vf v0, v8, fa03370; CHECK-NEXT: ret3371 %head = insertelement <1 x float> poison, float %b, i32 03372 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3373 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp3374 ret <1 x i1> %13375}3376 3377define <1 x i1> @fcmps_ole_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {3378; CHECK-LABEL: fcmps_ole_vv_v1f32:3379; CHECK: # %bb.0:3380; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3381; CHECK-NEXT: vmfle.vv v0, v8, v93382; CHECK-NEXT: ret3383 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp3384 ret <1 x i1> %13385}3386 3387define <1 x i1> @fcmps_ole_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {3388; CHECK-LABEL: fcmps_ole_vf_v1f32:3389; CHECK: # %bb.0:3390; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3391; CHECK-NEXT: vmfle.vf v0, v8, fa03392; CHECK-NEXT: ret3393 %head = insertelement <1 x float> poison, float %b, i32 03394 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3395 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp3396 ret <1 x i1> %13397}3398 3399define <1 x i1> @fcmps_ole_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {3400; CHECK-LABEL: fcmps_ole_fv_v1f32:3401; CHECK: # %bb.0:3402; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3403; CHECK-NEXT: vmfge.vf v0, v8, fa03404; CHECK-NEXT: ret3405 %head = insertelement <1 x float> poison, float %b, i32 03406 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3407 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp3408 ret <1 x i1> %13409}3410 3411define <1 x i1> @fcmps_one_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {3412; CHECK-LABEL: fcmps_one_vv_v1f32:3413; CHECK: # %bb.0:3414; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3415; CHECK-NEXT: vmflt.vv v10, v8, v93416; CHECK-NEXT: vmflt.vv v8, v9, v83417; CHECK-NEXT: vmor.mm v0, v8, v103418; CHECK-NEXT: ret3419 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp3420 ret <1 x i1> %13421}3422 3423define <1 x i1> @fcmps_one_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {3424; CHECK-LABEL: fcmps_one_vf_v1f32:3425; CHECK: # %bb.0:3426; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3427; CHECK-NEXT: vmflt.vf v9, v8, fa03428; CHECK-NEXT: vmfgt.vf v8, v8, fa03429; CHECK-NEXT: vmor.mm v0, v8, v93430; CHECK-NEXT: ret3431 %head = insertelement <1 x float> poison, float %b, i32 03432 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3433 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp3434 ret <1 x i1> %13435}3436 3437define <1 x i1> @fcmps_one_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {3438; CHECK-LABEL: fcmps_one_fv_v1f32:3439; CHECK: # %bb.0:3440; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3441; CHECK-NEXT: vmfgt.vf v9, v8, fa03442; CHECK-NEXT: vmflt.vf v8, v8, fa03443; CHECK-NEXT: vmor.mm v0, v8, v93444; CHECK-NEXT: ret3445 %head = insertelement <1 x float> poison, float %b, i32 03446 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3447 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp3448 ret <1 x i1> %13449}3450 3451define <1 x i1> @fcmps_ord_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {3452; CHECK-LABEL: fcmps_ord_vv_v1f32:3453; CHECK: # %bb.0:3454; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3455; CHECK-NEXT: vmfle.vv v9, v9, v93456; CHECK-NEXT: vmfle.vv v8, v8, v83457; CHECK-NEXT: vmand.mm v0, v8, v93458; CHECK-NEXT: ret3459 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp3460 ret <1 x i1> %13461}3462 3463define <1 x i1> @fcmps_ord_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {3464; CHECK-LABEL: fcmps_ord_vf_v1f32:3465; CHECK: # %bb.0:3466; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3467; CHECK-NEXT: vfmv.s.f v9, fa03468; CHECK-NEXT: vmfle.vf v9, v9, fa03469; CHECK-NEXT: vmfle.vv v8, v8, v83470; CHECK-NEXT: vmand.mm v0, v8, v93471; CHECK-NEXT: ret3472 %head = insertelement <1 x float> poison, float %b, i32 03473 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3474 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp3475 ret <1 x i1> %13476}3477 3478define <1 x i1> @fcmps_ord_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {3479; CHECK-LABEL: fcmps_ord_fv_v1f32:3480; CHECK: # %bb.0:3481; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3482; CHECK-NEXT: vfmv.s.f v9, fa03483; CHECK-NEXT: vmfle.vf v9, v9, fa03484; CHECK-NEXT: vmfle.vv v8, v8, v83485; CHECK-NEXT: vmand.mm v0, v9, v83486; CHECK-NEXT: ret3487 %head = insertelement <1 x float> poison, float %b, i32 03488 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3489 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp3490 ret <1 x i1> %13491}3492 3493define <1 x i1> @fcmps_ueq_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {3494; CHECK-LABEL: fcmps_ueq_vv_v1f32:3495; CHECK: # %bb.0:3496; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3497; CHECK-NEXT: vmflt.vv v10, v8, v93498; CHECK-NEXT: vmflt.vv v8, v9, v83499; CHECK-NEXT: vmnor.mm v0, v8, v103500; CHECK-NEXT: ret3501 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp3502 ret <1 x i1> %13503}3504 3505define <1 x i1> @fcmps_ueq_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {3506; CHECK-LABEL: fcmps_ueq_vf_v1f32:3507; CHECK: # %bb.0:3508; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3509; CHECK-NEXT: vmflt.vf v9, v8, fa03510; CHECK-NEXT: vmfgt.vf v8, v8, fa03511; CHECK-NEXT: vmnor.mm v0, v8, v93512; CHECK-NEXT: ret3513 %head = insertelement <1 x float> poison, float %b, i32 03514 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3515 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp3516 ret <1 x i1> %13517}3518 3519define <1 x i1> @fcmps_ueq_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {3520; CHECK-LABEL: fcmps_ueq_fv_v1f32:3521; CHECK: # %bb.0:3522; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3523; CHECK-NEXT: vmfgt.vf v9, v8, fa03524; CHECK-NEXT: vmflt.vf v8, v8, fa03525; CHECK-NEXT: vmnor.mm v0, v8, v93526; CHECK-NEXT: ret3527 %head = insertelement <1 x float> poison, float %b, i32 03528 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3529 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp3530 ret <1 x i1> %13531}3532 3533define <1 x i1> @fcmps_ugt_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {3534; CHECK-LABEL: fcmps_ugt_vv_v1f32:3535; CHECK: # %bb.0:3536; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3537; CHECK-NEXT: vmfle.vv v8, v8, v93538; CHECK-NEXT: vmnot.m v0, v83539; CHECK-NEXT: ret3540 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp3541 ret <1 x i1> %13542}3543 3544define <1 x i1> @fcmps_ugt_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {3545; CHECK-LABEL: fcmps_ugt_vf_v1f32:3546; CHECK: # %bb.0:3547; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3548; CHECK-NEXT: vmfle.vf v8, v8, fa03549; CHECK-NEXT: vmnot.m v0, v83550; CHECK-NEXT: ret3551 %head = insertelement <1 x float> poison, float %b, i32 03552 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3553 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp3554 ret <1 x i1> %13555}3556 3557define <1 x i1> @fcmps_ugt_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {3558; CHECK-LABEL: fcmps_ugt_fv_v1f32:3559; CHECK: # %bb.0:3560; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3561; CHECK-NEXT: vmfge.vf v8, v8, fa03562; CHECK-NEXT: vmnot.m v0, v83563; CHECK-NEXT: ret3564 %head = insertelement <1 x float> poison, float %b, i32 03565 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3566 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp3567 ret <1 x i1> %13568}3569 3570define <1 x i1> @fcmps_uge_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {3571; CHECK-LABEL: fcmps_uge_vv_v1f32:3572; CHECK: # %bb.0:3573; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3574; CHECK-NEXT: vmflt.vv v8, v8, v93575; CHECK-NEXT: vmnot.m v0, v83576; CHECK-NEXT: ret3577 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp3578 ret <1 x i1> %13579}3580 3581define <1 x i1> @fcmps_uge_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {3582; CHECK-LABEL: fcmps_uge_vf_v1f32:3583; CHECK: # %bb.0:3584; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3585; CHECK-NEXT: vmflt.vf v8, v8, fa03586; CHECK-NEXT: vmnot.m v0, v83587; CHECK-NEXT: ret3588 %head = insertelement <1 x float> poison, float %b, i32 03589 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3590 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp3591 ret <1 x i1> %13592}3593 3594define <1 x i1> @fcmps_uge_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {3595; CHECK-LABEL: fcmps_uge_fv_v1f32:3596; CHECK: # %bb.0:3597; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3598; CHECK-NEXT: vmfgt.vf v8, v8, fa03599; CHECK-NEXT: vmnot.m v0, v83600; CHECK-NEXT: ret3601 %head = insertelement <1 x float> poison, float %b, i32 03602 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3603 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp3604 ret <1 x i1> %13605}3606 3607define <1 x i1> @fcmps_ult_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {3608; CHECK-LABEL: fcmps_ult_vv_v1f32:3609; CHECK: # %bb.0:3610; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3611; CHECK-NEXT: vmfle.vv v8, v9, v83612; CHECK-NEXT: vmnot.m v0, v83613; CHECK-NEXT: ret3614 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp3615 ret <1 x i1> %13616}3617 3618define <1 x i1> @fcmps_ult_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {3619; CHECK-LABEL: fcmps_ult_vf_v1f32:3620; CHECK: # %bb.0:3621; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3622; CHECK-NEXT: vmfge.vf v8, v8, fa03623; CHECK-NEXT: vmnot.m v0, v83624; CHECK-NEXT: ret3625 %head = insertelement <1 x float> poison, float %b, i32 03626 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3627 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp3628 ret <1 x i1> %13629}3630 3631define <1 x i1> @fcmps_ult_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {3632; CHECK-LABEL: fcmps_ult_fv_v1f32:3633; CHECK: # %bb.0:3634; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3635; CHECK-NEXT: vmfle.vf v8, v8, fa03636; CHECK-NEXT: vmnot.m v0, v83637; CHECK-NEXT: ret3638 %head = insertelement <1 x float> poison, float %b, i32 03639 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3640 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp3641 ret <1 x i1> %13642}3643 3644define <1 x i1> @fcmps_ule_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {3645; CHECK-LABEL: fcmps_ule_vv_v1f32:3646; CHECK: # %bb.0:3647; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3648; CHECK-NEXT: vmflt.vv v8, v9, v83649; CHECK-NEXT: vmnot.m v0, v83650; CHECK-NEXT: ret3651 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp3652 ret <1 x i1> %13653}3654 3655define <1 x i1> @fcmps_ule_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {3656; CHECK-LABEL: fcmps_ule_vf_v1f32:3657; CHECK: # %bb.0:3658; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3659; CHECK-NEXT: vmfgt.vf v8, v8, fa03660; CHECK-NEXT: vmnot.m v0, v83661; CHECK-NEXT: ret3662 %head = insertelement <1 x float> poison, float %b, i32 03663 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3664 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp3665 ret <1 x i1> %13666}3667 3668define <1 x i1> @fcmps_ule_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {3669; CHECK-LABEL: fcmps_ule_fv_v1f32:3670; CHECK: # %bb.0:3671; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3672; CHECK-NEXT: vmflt.vf v8, v8, fa03673; CHECK-NEXT: vmnot.m v0, v83674; CHECK-NEXT: ret3675 %head = insertelement <1 x float> poison, float %b, i32 03676 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3677 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp3678 ret <1 x i1> %13679}3680 3681define <1 x i1> @fcmps_une_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {3682; CHECK-LABEL: fcmps_une_vv_v1f32:3683; CHECK: # %bb.0:3684; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3685; CHECK-NEXT: vmfle.vv v10, v9, v83686; CHECK-NEXT: vmfle.vv v8, v8, v93687; CHECK-NEXT: vmnand.mm v0, v8, v103688; CHECK-NEXT: ret3689 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp3690 ret <1 x i1> %13691}3692 3693define <1 x i1> @fcmps_une_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {3694; CHECK-LABEL: fcmps_une_vf_v1f32:3695; CHECK: # %bb.0:3696; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3697; CHECK-NEXT: vmfge.vf v9, v8, fa03698; CHECK-NEXT: vmfle.vf v8, v8, fa03699; CHECK-NEXT: vmnand.mm v0, v8, v93700; CHECK-NEXT: ret3701 %head = insertelement <1 x float> poison, float %b, i32 03702 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3703 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp3704 ret <1 x i1> %13705}3706 3707define <1 x i1> @fcmps_une_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {3708; CHECK-LABEL: fcmps_une_fv_v1f32:3709; CHECK: # %bb.0:3710; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3711; CHECK-NEXT: vmfle.vf v9, v8, fa03712; CHECK-NEXT: vmfge.vf v8, v8, fa03713; CHECK-NEXT: vmnand.mm v0, v8, v93714; CHECK-NEXT: ret3715 %head = insertelement <1 x float> poison, float %b, i32 03716 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3717 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp3718 ret <1 x i1> %13719}3720 3721define <1 x i1> @fcmps_uno_vv_v1f32(<1 x float> %va, <1 x float> %vb) nounwind strictfp {3722; CHECK-LABEL: fcmps_uno_vv_v1f32:3723; CHECK: # %bb.0:3724; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3725; CHECK-NEXT: vmfle.vv v9, v9, v93726; CHECK-NEXT: vmfle.vv v8, v8, v83727; CHECK-NEXT: vmnot.m v8, v83728; CHECK-NEXT: vmorn.mm v0, v8, v93729; CHECK-NEXT: ret3730 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp3731 ret <1 x i1> %13732}3733 3734define <1 x i1> @fcmps_uno_vf_v1f32(<1 x float> %va, float %b) nounwind strictfp {3735; CHECK-LABEL: fcmps_uno_vf_v1f32:3736; CHECK: # %bb.0:3737; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3738; CHECK-NEXT: vfmv.s.f v9, fa03739; CHECK-NEXT: vmfle.vv v8, v8, v83740; CHECK-NEXT: vmfle.vf v9, v9, fa03741; CHECK-NEXT: vmnot.m v8, v83742; CHECK-NEXT: vmorn.mm v0, v8, v93743; CHECK-NEXT: ret3744 %head = insertelement <1 x float> poison, float %b, i32 03745 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3746 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %va, <1 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp3747 ret <1 x i1> %13748}3749 3750define <1 x i1> @fcmps_uno_fv_v1f32(<1 x float> %va, float %b) nounwind strictfp {3751; CHECK-LABEL: fcmps_uno_fv_v1f32:3752; CHECK: # %bb.0:3753; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3754; CHECK-NEXT: vfmv.s.f v9, fa03755; CHECK-NEXT: vmfle.vf v9, v9, fa03756; CHECK-NEXT: vmnot.m v9, v93757; CHECK-NEXT: vmfle.vv v8, v8, v83758; CHECK-NEXT: vmorn.mm v0, v9, v83759; CHECK-NEXT: ret3760 %head = insertelement <1 x float> poison, float %b, i32 03761 %splat = shufflevector <1 x float> %head, <1 x float> poison, <1 x i32> zeroinitializer3762 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f32(<1 x float> %splat, <1 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp3763 ret <1 x i1> %13764}3765 3766define <2 x i1> @fcmps_oeq_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {3767; CHECK-LABEL: fcmps_oeq_vv_v2f32:3768; CHECK: # %bb.0:3769; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma3770; CHECK-NEXT: vmfle.vv v10, v9, v83771; CHECK-NEXT: vmfle.vv v8, v8, v93772; CHECK-NEXT: vmand.mm v0, v8, v103773; CHECK-NEXT: ret3774 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp3775 ret <2 x i1> %13776}3777 3778define <2 x i1> @fcmps_oeq_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {3779; CHECK-LABEL: fcmps_oeq_vf_v2f32:3780; CHECK: # %bb.0:3781; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma3782; CHECK-NEXT: vmfge.vf v9, v8, fa03783; CHECK-NEXT: vmfle.vf v8, v8, fa03784; CHECK-NEXT: vmand.mm v0, v8, v93785; CHECK-NEXT: ret3786 %head = insertelement <2 x float> poison, float %b, i32 03787 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer3788 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp3789 ret <2 x i1> %13790}3791 3792define <2 x i1> @fcmps_oeq_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {3793; CHECK-LABEL: fcmps_oeq_fv_v2f32:3794; CHECK: # %bb.0:3795; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma3796; CHECK-NEXT: vmfle.vf v9, v8, fa03797; CHECK-NEXT: vmfge.vf v8, v8, fa03798; CHECK-NEXT: vmand.mm v0, v8, v93799; CHECK-NEXT: ret3800 %head = insertelement <2 x float> poison, float %b, i32 03801 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer3802 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp3803 ret <2 x i1> %13804}3805 3806define <2 x i1> @fcmps_ogt_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {3807; CHECK-LABEL: fcmps_ogt_vv_v2f32:3808; CHECK: # %bb.0:3809; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma3810; CHECK-NEXT: vmflt.vv v0, v9, v83811; CHECK-NEXT: ret3812 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp3813 ret <2 x i1> %13814}3815 3816define <2 x i1> @fcmps_ogt_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {3817; CHECK-LABEL: fcmps_ogt_vf_v2f32:3818; CHECK: # %bb.0:3819; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma3820; CHECK-NEXT: vmfgt.vf v0, v8, fa03821; CHECK-NEXT: ret3822 %head = insertelement <2 x float> poison, float %b, i32 03823 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer3824 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp3825 ret <2 x i1> %13826}3827 3828define <2 x i1> @fcmps_ogt_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {3829; CHECK-LABEL: fcmps_ogt_fv_v2f32:3830; CHECK: # %bb.0:3831; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma3832; CHECK-NEXT: vmflt.vf v0, v8, fa03833; CHECK-NEXT: ret3834 %head = insertelement <2 x float> poison, float %b, i32 03835 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer3836 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp3837 ret <2 x i1> %13838}3839 3840define <2 x i1> @fcmps_oge_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {3841; CHECK-LABEL: fcmps_oge_vv_v2f32:3842; CHECK: # %bb.0:3843; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma3844; CHECK-NEXT: vmfle.vv v0, v9, v83845; CHECK-NEXT: ret3846 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp3847 ret <2 x i1> %13848}3849 3850define <2 x i1> @fcmps_oge_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {3851; CHECK-LABEL: fcmps_oge_vf_v2f32:3852; CHECK: # %bb.0:3853; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma3854; CHECK-NEXT: vmfge.vf v0, v8, fa03855; CHECK-NEXT: ret3856 %head = insertelement <2 x float> poison, float %b, i32 03857 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer3858 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp3859 ret <2 x i1> %13860}3861 3862define <2 x i1> @fcmps_oge_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {3863; CHECK-LABEL: fcmps_oge_fv_v2f32:3864; CHECK: # %bb.0:3865; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma3866; CHECK-NEXT: vmfle.vf v0, v8, fa03867; CHECK-NEXT: ret3868 %head = insertelement <2 x float> poison, float %b, i32 03869 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer3870 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp3871 ret <2 x i1> %13872}3873 3874define <2 x i1> @fcmps_olt_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {3875; CHECK-LABEL: fcmps_olt_vv_v2f32:3876; CHECK: # %bb.0:3877; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma3878; CHECK-NEXT: vmflt.vv v0, v8, v93879; CHECK-NEXT: ret3880 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp3881 ret <2 x i1> %13882}3883 3884define <2 x i1> @fcmps_olt_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {3885; CHECK-LABEL: fcmps_olt_vf_v2f32:3886; CHECK: # %bb.0:3887; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma3888; CHECK-NEXT: vmflt.vf v0, v8, fa03889; CHECK-NEXT: ret3890 %head = insertelement <2 x float> poison, float %b, i32 03891 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer3892 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp3893 ret <2 x i1> %13894}3895 3896define <2 x i1> @fcmps_olt_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {3897; CHECK-LABEL: fcmps_olt_fv_v2f32:3898; CHECK: # %bb.0:3899; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma3900; CHECK-NEXT: vmfgt.vf v0, v8, fa03901; CHECK-NEXT: ret3902 %head = insertelement <2 x float> poison, float %b, i32 03903 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer3904 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp3905 ret <2 x i1> %13906}3907 3908define <2 x i1> @fcmps_ole_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {3909; CHECK-LABEL: fcmps_ole_vv_v2f32:3910; CHECK: # %bb.0:3911; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma3912; CHECK-NEXT: vmfle.vv v0, v8, v93913; CHECK-NEXT: ret3914 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp3915 ret <2 x i1> %13916}3917 3918define <2 x i1> @fcmps_ole_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {3919; CHECK-LABEL: fcmps_ole_vf_v2f32:3920; CHECK: # %bb.0:3921; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma3922; CHECK-NEXT: vmfle.vf v0, v8, fa03923; CHECK-NEXT: ret3924 %head = insertelement <2 x float> poison, float %b, i32 03925 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer3926 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp3927 ret <2 x i1> %13928}3929 3930define <2 x i1> @fcmps_ole_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {3931; CHECK-LABEL: fcmps_ole_fv_v2f32:3932; CHECK: # %bb.0:3933; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma3934; CHECK-NEXT: vmfge.vf v0, v8, fa03935; CHECK-NEXT: ret3936 %head = insertelement <2 x float> poison, float %b, i32 03937 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer3938 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp3939 ret <2 x i1> %13940}3941 3942define <2 x i1> @fcmps_one_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {3943; CHECK-LABEL: fcmps_one_vv_v2f32:3944; CHECK: # %bb.0:3945; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma3946; CHECK-NEXT: vmflt.vv v10, v8, v93947; CHECK-NEXT: vmflt.vv v8, v9, v83948; CHECK-NEXT: vmor.mm v0, v8, v103949; CHECK-NEXT: ret3950 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp3951 ret <2 x i1> %13952}3953 3954define <2 x i1> @fcmps_one_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {3955; CHECK-LABEL: fcmps_one_vf_v2f32:3956; CHECK: # %bb.0:3957; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma3958; CHECK-NEXT: vmflt.vf v9, v8, fa03959; CHECK-NEXT: vmfgt.vf v8, v8, fa03960; CHECK-NEXT: vmor.mm v0, v8, v93961; CHECK-NEXT: ret3962 %head = insertelement <2 x float> poison, float %b, i32 03963 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer3964 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp3965 ret <2 x i1> %13966}3967 3968define <2 x i1> @fcmps_one_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {3969; CHECK-LABEL: fcmps_one_fv_v2f32:3970; CHECK: # %bb.0:3971; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma3972; CHECK-NEXT: vmfgt.vf v9, v8, fa03973; CHECK-NEXT: vmflt.vf v8, v8, fa03974; CHECK-NEXT: vmor.mm v0, v8, v93975; CHECK-NEXT: ret3976 %head = insertelement <2 x float> poison, float %b, i32 03977 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer3978 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp3979 ret <2 x i1> %13980}3981 3982define <2 x i1> @fcmps_ord_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {3983; CHECK-LABEL: fcmps_ord_vv_v2f32:3984; CHECK: # %bb.0:3985; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma3986; CHECK-NEXT: vmfle.vv v9, v9, v93987; CHECK-NEXT: vmfle.vv v8, v8, v83988; CHECK-NEXT: vmand.mm v0, v8, v93989; CHECK-NEXT: ret3990 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp3991 ret <2 x i1> %13992}3993 3994define <2 x i1> @fcmps_ord_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {3995; CHECK-LABEL: fcmps_ord_vf_v2f32:3996; CHECK: # %bb.0:3997; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma3998; CHECK-NEXT: vfmv.v.f v9, fa03999; CHECK-NEXT: vmfle.vf v9, v9, fa04000; CHECK-NEXT: vmfle.vv v8, v8, v84001; CHECK-NEXT: vmand.mm v0, v8, v94002; CHECK-NEXT: ret4003 %head = insertelement <2 x float> poison, float %b, i32 04004 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4005 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp4006 ret <2 x i1> %14007}4008 4009define <2 x i1> @fcmps_ord_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {4010; CHECK-LABEL: fcmps_ord_fv_v2f32:4011; CHECK: # %bb.0:4012; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4013; CHECK-NEXT: vfmv.v.f v9, fa04014; CHECK-NEXT: vmfle.vf v9, v9, fa04015; CHECK-NEXT: vmfle.vv v8, v8, v84016; CHECK-NEXT: vmand.mm v0, v9, v84017; CHECK-NEXT: ret4018 %head = insertelement <2 x float> poison, float %b, i32 04019 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4020 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp4021 ret <2 x i1> %14022}4023 4024define <2 x i1> @fcmps_ueq_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {4025; CHECK-LABEL: fcmps_ueq_vv_v2f32:4026; CHECK: # %bb.0:4027; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4028; CHECK-NEXT: vmflt.vv v10, v8, v94029; CHECK-NEXT: vmflt.vv v8, v9, v84030; CHECK-NEXT: vmnor.mm v0, v8, v104031; CHECK-NEXT: ret4032 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp4033 ret <2 x i1> %14034}4035 4036define <2 x i1> @fcmps_ueq_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {4037; CHECK-LABEL: fcmps_ueq_vf_v2f32:4038; CHECK: # %bb.0:4039; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4040; CHECK-NEXT: vmflt.vf v9, v8, fa04041; CHECK-NEXT: vmfgt.vf v8, v8, fa04042; CHECK-NEXT: vmnor.mm v0, v8, v94043; CHECK-NEXT: ret4044 %head = insertelement <2 x float> poison, float %b, i32 04045 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4046 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp4047 ret <2 x i1> %14048}4049 4050define <2 x i1> @fcmps_ueq_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {4051; CHECK-LABEL: fcmps_ueq_fv_v2f32:4052; CHECK: # %bb.0:4053; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4054; CHECK-NEXT: vmfgt.vf v9, v8, fa04055; CHECK-NEXT: vmflt.vf v8, v8, fa04056; CHECK-NEXT: vmnor.mm v0, v8, v94057; CHECK-NEXT: ret4058 %head = insertelement <2 x float> poison, float %b, i32 04059 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4060 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp4061 ret <2 x i1> %14062}4063 4064define <2 x i1> @fcmps_ugt_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {4065; CHECK-LABEL: fcmps_ugt_vv_v2f32:4066; CHECK: # %bb.0:4067; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4068; CHECK-NEXT: vmfle.vv v8, v8, v94069; CHECK-NEXT: vmnot.m v0, v84070; CHECK-NEXT: ret4071 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp4072 ret <2 x i1> %14073}4074 4075define <2 x i1> @fcmps_ugt_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {4076; CHECK-LABEL: fcmps_ugt_vf_v2f32:4077; CHECK: # %bb.0:4078; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4079; CHECK-NEXT: vmfle.vf v8, v8, fa04080; CHECK-NEXT: vmnot.m v0, v84081; CHECK-NEXT: ret4082 %head = insertelement <2 x float> poison, float %b, i32 04083 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4084 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp4085 ret <2 x i1> %14086}4087 4088define <2 x i1> @fcmps_ugt_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {4089; CHECK-LABEL: fcmps_ugt_fv_v2f32:4090; CHECK: # %bb.0:4091; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4092; CHECK-NEXT: vmfge.vf v8, v8, fa04093; CHECK-NEXT: vmnot.m v0, v84094; CHECK-NEXT: ret4095 %head = insertelement <2 x float> poison, float %b, i32 04096 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4097 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp4098 ret <2 x i1> %14099}4100 4101define <2 x i1> @fcmps_uge_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {4102; CHECK-LABEL: fcmps_uge_vv_v2f32:4103; CHECK: # %bb.0:4104; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4105; CHECK-NEXT: vmflt.vv v8, v8, v94106; CHECK-NEXT: vmnot.m v0, v84107; CHECK-NEXT: ret4108 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp4109 ret <2 x i1> %14110}4111 4112define <2 x i1> @fcmps_uge_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {4113; CHECK-LABEL: fcmps_uge_vf_v2f32:4114; CHECK: # %bb.0:4115; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4116; CHECK-NEXT: vmflt.vf v8, v8, fa04117; CHECK-NEXT: vmnot.m v0, v84118; CHECK-NEXT: ret4119 %head = insertelement <2 x float> poison, float %b, i32 04120 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4121 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp4122 ret <2 x i1> %14123}4124 4125define <2 x i1> @fcmps_uge_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {4126; CHECK-LABEL: fcmps_uge_fv_v2f32:4127; CHECK: # %bb.0:4128; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4129; CHECK-NEXT: vmfgt.vf v8, v8, fa04130; CHECK-NEXT: vmnot.m v0, v84131; CHECK-NEXT: ret4132 %head = insertelement <2 x float> poison, float %b, i32 04133 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4134 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp4135 ret <2 x i1> %14136}4137 4138define <2 x i1> @fcmps_ult_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {4139; CHECK-LABEL: fcmps_ult_vv_v2f32:4140; CHECK: # %bb.0:4141; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4142; CHECK-NEXT: vmfle.vv v8, v9, v84143; CHECK-NEXT: vmnot.m v0, v84144; CHECK-NEXT: ret4145 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp4146 ret <2 x i1> %14147}4148 4149define <2 x i1> @fcmps_ult_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {4150; CHECK-LABEL: fcmps_ult_vf_v2f32:4151; CHECK: # %bb.0:4152; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4153; CHECK-NEXT: vmfge.vf v8, v8, fa04154; CHECK-NEXT: vmnot.m v0, v84155; CHECK-NEXT: ret4156 %head = insertelement <2 x float> poison, float %b, i32 04157 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4158 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp4159 ret <2 x i1> %14160}4161 4162define <2 x i1> @fcmps_ult_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {4163; CHECK-LABEL: fcmps_ult_fv_v2f32:4164; CHECK: # %bb.0:4165; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4166; CHECK-NEXT: vmfle.vf v8, v8, fa04167; CHECK-NEXT: vmnot.m v0, v84168; CHECK-NEXT: ret4169 %head = insertelement <2 x float> poison, float %b, i32 04170 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4171 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp4172 ret <2 x i1> %14173}4174 4175define <2 x i1> @fcmps_ule_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {4176; CHECK-LABEL: fcmps_ule_vv_v2f32:4177; CHECK: # %bb.0:4178; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4179; CHECK-NEXT: vmflt.vv v8, v9, v84180; CHECK-NEXT: vmnot.m v0, v84181; CHECK-NEXT: ret4182 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp4183 ret <2 x i1> %14184}4185 4186define <2 x i1> @fcmps_ule_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {4187; CHECK-LABEL: fcmps_ule_vf_v2f32:4188; CHECK: # %bb.0:4189; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4190; CHECK-NEXT: vmfgt.vf v8, v8, fa04191; CHECK-NEXT: vmnot.m v0, v84192; CHECK-NEXT: ret4193 %head = insertelement <2 x float> poison, float %b, i32 04194 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4195 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp4196 ret <2 x i1> %14197}4198 4199define <2 x i1> @fcmps_ule_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {4200; CHECK-LABEL: fcmps_ule_fv_v2f32:4201; CHECK: # %bb.0:4202; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4203; CHECK-NEXT: vmflt.vf v8, v8, fa04204; CHECK-NEXT: vmnot.m v0, v84205; CHECK-NEXT: ret4206 %head = insertelement <2 x float> poison, float %b, i32 04207 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4208 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp4209 ret <2 x i1> %14210}4211 4212define <2 x i1> @fcmps_une_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {4213; CHECK-LABEL: fcmps_une_vv_v2f32:4214; CHECK: # %bb.0:4215; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4216; CHECK-NEXT: vmfle.vv v10, v9, v84217; CHECK-NEXT: vmfle.vv v8, v8, v94218; CHECK-NEXT: vmnand.mm v0, v8, v104219; CHECK-NEXT: ret4220 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp4221 ret <2 x i1> %14222}4223 4224define <2 x i1> @fcmps_une_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {4225; CHECK-LABEL: fcmps_une_vf_v2f32:4226; CHECK: # %bb.0:4227; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4228; CHECK-NEXT: vmfge.vf v9, v8, fa04229; CHECK-NEXT: vmfle.vf v8, v8, fa04230; CHECK-NEXT: vmnand.mm v0, v8, v94231; CHECK-NEXT: ret4232 %head = insertelement <2 x float> poison, float %b, i32 04233 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4234 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp4235 ret <2 x i1> %14236}4237 4238define <2 x i1> @fcmps_une_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {4239; CHECK-LABEL: fcmps_une_fv_v2f32:4240; CHECK: # %bb.0:4241; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4242; CHECK-NEXT: vmfle.vf v9, v8, fa04243; CHECK-NEXT: vmfge.vf v8, v8, fa04244; CHECK-NEXT: vmnand.mm v0, v8, v94245; CHECK-NEXT: ret4246 %head = insertelement <2 x float> poison, float %b, i32 04247 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4248 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp4249 ret <2 x i1> %14250}4251 4252define <2 x i1> @fcmps_uno_vv_v2f32(<2 x float> %va, <2 x float> %vb) nounwind strictfp {4253; CHECK-LABEL: fcmps_uno_vv_v2f32:4254; CHECK: # %bb.0:4255; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4256; CHECK-NEXT: vmfle.vv v9, v9, v94257; CHECK-NEXT: vmfle.vv v8, v8, v84258; CHECK-NEXT: vmnot.m v8, v84259; CHECK-NEXT: vmorn.mm v0, v8, v94260; CHECK-NEXT: ret4261 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp4262 ret <2 x i1> %14263}4264 4265define <2 x i1> @fcmps_uno_vf_v2f32(<2 x float> %va, float %b) nounwind strictfp {4266; CHECK-LABEL: fcmps_uno_vf_v2f32:4267; CHECK: # %bb.0:4268; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4269; CHECK-NEXT: vfmv.v.f v9, fa04270; CHECK-NEXT: vmfle.vv v8, v8, v84271; CHECK-NEXT: vmfle.vf v9, v9, fa04272; CHECK-NEXT: vmnot.m v8, v84273; CHECK-NEXT: vmorn.mm v0, v8, v94274; CHECK-NEXT: ret4275 %head = insertelement <2 x float> poison, float %b, i32 04276 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4277 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %va, <2 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp4278 ret <2 x i1> %14279}4280 4281define <2 x i1> @fcmps_uno_fv_v2f32(<2 x float> %va, float %b) nounwind strictfp {4282; CHECK-LABEL: fcmps_uno_fv_v2f32:4283; CHECK: # %bb.0:4284; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4285; CHECK-NEXT: vfmv.v.f v9, fa04286; CHECK-NEXT: vmfle.vf v9, v9, fa04287; CHECK-NEXT: vmnot.m v9, v94288; CHECK-NEXT: vmfle.vv v8, v8, v84289; CHECK-NEXT: vmorn.mm v0, v9, v84290; CHECK-NEXT: ret4291 %head = insertelement <2 x float> poison, float %b, i32 04292 %splat = shufflevector <2 x float> %head, <2 x float> poison, <2 x i32> zeroinitializer4293 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f32(<2 x float> %splat, <2 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp4294 ret <2 x i1> %14295}4296 4297define <4 x i1> @fcmps_oeq_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {4298; CHECK-LABEL: fcmps_oeq_vv_v4f32:4299; CHECK: # %bb.0:4300; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4301; CHECK-NEXT: vmfle.vv v10, v9, v84302; CHECK-NEXT: vmfle.vv v8, v8, v94303; CHECK-NEXT: vmand.mm v0, v8, v104304; CHECK-NEXT: ret4305 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp4306 ret <4 x i1> %14307}4308 4309define <4 x i1> @fcmps_oeq_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {4310; CHECK-LABEL: fcmps_oeq_vf_v4f32:4311; CHECK: # %bb.0:4312; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4313; CHECK-NEXT: vmfge.vf v9, v8, fa04314; CHECK-NEXT: vmfle.vf v8, v8, fa04315; CHECK-NEXT: vmand.mm v0, v8, v94316; CHECK-NEXT: ret4317 %head = insertelement <4 x float> poison, float %b, i32 04318 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4319 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp4320 ret <4 x i1> %14321}4322 4323define <4 x i1> @fcmps_oeq_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {4324; CHECK-LABEL: fcmps_oeq_fv_v4f32:4325; CHECK: # %bb.0:4326; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4327; CHECK-NEXT: vmfle.vf v9, v8, fa04328; CHECK-NEXT: vmfge.vf v8, v8, fa04329; CHECK-NEXT: vmand.mm v0, v8, v94330; CHECK-NEXT: ret4331 %head = insertelement <4 x float> poison, float %b, i32 04332 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4333 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp4334 ret <4 x i1> %14335}4336 4337define <4 x i1> @fcmps_ogt_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {4338; CHECK-LABEL: fcmps_ogt_vv_v4f32:4339; CHECK: # %bb.0:4340; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4341; CHECK-NEXT: vmflt.vv v0, v9, v84342; CHECK-NEXT: ret4343 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp4344 ret <4 x i1> %14345}4346 4347define <4 x i1> @fcmps_ogt_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {4348; CHECK-LABEL: fcmps_ogt_vf_v4f32:4349; CHECK: # %bb.0:4350; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4351; CHECK-NEXT: vmfgt.vf v0, v8, fa04352; CHECK-NEXT: ret4353 %head = insertelement <4 x float> poison, float %b, i32 04354 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4355 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp4356 ret <4 x i1> %14357}4358 4359define <4 x i1> @fcmps_ogt_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {4360; CHECK-LABEL: fcmps_ogt_fv_v4f32:4361; CHECK: # %bb.0:4362; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4363; CHECK-NEXT: vmflt.vf v0, v8, fa04364; CHECK-NEXT: ret4365 %head = insertelement <4 x float> poison, float %b, i32 04366 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4367 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp4368 ret <4 x i1> %14369}4370 4371define <4 x i1> @fcmps_oge_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {4372; CHECK-LABEL: fcmps_oge_vv_v4f32:4373; CHECK: # %bb.0:4374; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4375; CHECK-NEXT: vmfle.vv v0, v9, v84376; CHECK-NEXT: ret4377 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp4378 ret <4 x i1> %14379}4380 4381define <4 x i1> @fcmps_oge_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {4382; CHECK-LABEL: fcmps_oge_vf_v4f32:4383; CHECK: # %bb.0:4384; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4385; CHECK-NEXT: vmfge.vf v0, v8, fa04386; CHECK-NEXT: ret4387 %head = insertelement <4 x float> poison, float %b, i32 04388 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4389 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp4390 ret <4 x i1> %14391}4392 4393define <4 x i1> @fcmps_oge_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {4394; CHECK-LABEL: fcmps_oge_fv_v4f32:4395; CHECK: # %bb.0:4396; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4397; CHECK-NEXT: vmfle.vf v0, v8, fa04398; CHECK-NEXT: ret4399 %head = insertelement <4 x float> poison, float %b, i32 04400 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4401 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp4402 ret <4 x i1> %14403}4404 4405define <4 x i1> @fcmps_olt_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {4406; CHECK-LABEL: fcmps_olt_vv_v4f32:4407; CHECK: # %bb.0:4408; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4409; CHECK-NEXT: vmflt.vv v0, v8, v94410; CHECK-NEXT: ret4411 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp4412 ret <4 x i1> %14413}4414 4415define <4 x i1> @fcmps_olt_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {4416; CHECK-LABEL: fcmps_olt_vf_v4f32:4417; CHECK: # %bb.0:4418; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4419; CHECK-NEXT: vmflt.vf v0, v8, fa04420; CHECK-NEXT: ret4421 %head = insertelement <4 x float> poison, float %b, i32 04422 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4423 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp4424 ret <4 x i1> %14425}4426 4427define <4 x i1> @fcmps_olt_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {4428; CHECK-LABEL: fcmps_olt_fv_v4f32:4429; CHECK: # %bb.0:4430; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4431; CHECK-NEXT: vmfgt.vf v0, v8, fa04432; CHECK-NEXT: ret4433 %head = insertelement <4 x float> poison, float %b, i32 04434 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4435 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp4436 ret <4 x i1> %14437}4438 4439define <4 x i1> @fcmps_ole_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {4440; CHECK-LABEL: fcmps_ole_vv_v4f32:4441; CHECK: # %bb.0:4442; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4443; CHECK-NEXT: vmfle.vv v0, v8, v94444; CHECK-NEXT: ret4445 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp4446 ret <4 x i1> %14447}4448 4449define <4 x i1> @fcmps_ole_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {4450; CHECK-LABEL: fcmps_ole_vf_v4f32:4451; CHECK: # %bb.0:4452; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4453; CHECK-NEXT: vmfle.vf v0, v8, fa04454; CHECK-NEXT: ret4455 %head = insertelement <4 x float> poison, float %b, i32 04456 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4457 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp4458 ret <4 x i1> %14459}4460 4461define <4 x i1> @fcmps_ole_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {4462; CHECK-LABEL: fcmps_ole_fv_v4f32:4463; CHECK: # %bb.0:4464; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4465; CHECK-NEXT: vmfge.vf v0, v8, fa04466; CHECK-NEXT: ret4467 %head = insertelement <4 x float> poison, float %b, i32 04468 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4469 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp4470 ret <4 x i1> %14471}4472 4473define <4 x i1> @fcmps_one_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {4474; CHECK-LABEL: fcmps_one_vv_v4f32:4475; CHECK: # %bb.0:4476; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4477; CHECK-NEXT: vmflt.vv v10, v8, v94478; CHECK-NEXT: vmflt.vv v8, v9, v84479; CHECK-NEXT: vmor.mm v0, v8, v104480; CHECK-NEXT: ret4481 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp4482 ret <4 x i1> %14483}4484 4485define <4 x i1> @fcmps_one_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {4486; CHECK-LABEL: fcmps_one_vf_v4f32:4487; CHECK: # %bb.0:4488; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4489; CHECK-NEXT: vmflt.vf v9, v8, fa04490; CHECK-NEXT: vmfgt.vf v8, v8, fa04491; CHECK-NEXT: vmor.mm v0, v8, v94492; CHECK-NEXT: ret4493 %head = insertelement <4 x float> poison, float %b, i32 04494 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4495 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp4496 ret <4 x i1> %14497}4498 4499define <4 x i1> @fcmps_one_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {4500; CHECK-LABEL: fcmps_one_fv_v4f32:4501; CHECK: # %bb.0:4502; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4503; CHECK-NEXT: vmfgt.vf v9, v8, fa04504; CHECK-NEXT: vmflt.vf v8, v8, fa04505; CHECK-NEXT: vmor.mm v0, v8, v94506; CHECK-NEXT: ret4507 %head = insertelement <4 x float> poison, float %b, i32 04508 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4509 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp4510 ret <4 x i1> %14511}4512 4513define <4 x i1> @fcmps_ord_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {4514; CHECK-LABEL: fcmps_ord_vv_v4f32:4515; CHECK: # %bb.0:4516; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4517; CHECK-NEXT: vmfle.vv v9, v9, v94518; CHECK-NEXT: vmfle.vv v8, v8, v84519; CHECK-NEXT: vmand.mm v0, v8, v94520; CHECK-NEXT: ret4521 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp4522 ret <4 x i1> %14523}4524 4525define <4 x i1> @fcmps_ord_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {4526; CHECK-LABEL: fcmps_ord_vf_v4f32:4527; CHECK: # %bb.0:4528; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4529; CHECK-NEXT: vfmv.v.f v9, fa04530; CHECK-NEXT: vmfle.vf v9, v9, fa04531; CHECK-NEXT: vmfle.vv v8, v8, v84532; CHECK-NEXT: vmand.mm v0, v8, v94533; CHECK-NEXT: ret4534 %head = insertelement <4 x float> poison, float %b, i32 04535 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4536 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp4537 ret <4 x i1> %14538}4539 4540define <4 x i1> @fcmps_ord_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {4541; CHECK-LABEL: fcmps_ord_fv_v4f32:4542; CHECK: # %bb.0:4543; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4544; CHECK-NEXT: vfmv.v.f v9, fa04545; CHECK-NEXT: vmfle.vf v9, v9, fa04546; CHECK-NEXT: vmfle.vv v8, v8, v84547; CHECK-NEXT: vmand.mm v0, v9, v84548; CHECK-NEXT: ret4549 %head = insertelement <4 x float> poison, float %b, i32 04550 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4551 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp4552 ret <4 x i1> %14553}4554 4555define <4 x i1> @fcmps_ueq_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {4556; CHECK-LABEL: fcmps_ueq_vv_v4f32:4557; CHECK: # %bb.0:4558; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4559; CHECK-NEXT: vmflt.vv v10, v8, v94560; CHECK-NEXT: vmflt.vv v8, v9, v84561; CHECK-NEXT: vmnor.mm v0, v8, v104562; CHECK-NEXT: ret4563 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp4564 ret <4 x i1> %14565}4566 4567define <4 x i1> @fcmps_ueq_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {4568; CHECK-LABEL: fcmps_ueq_vf_v4f32:4569; CHECK: # %bb.0:4570; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4571; CHECK-NEXT: vmflt.vf v9, v8, fa04572; CHECK-NEXT: vmfgt.vf v8, v8, fa04573; CHECK-NEXT: vmnor.mm v0, v8, v94574; CHECK-NEXT: ret4575 %head = insertelement <4 x float> poison, float %b, i32 04576 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4577 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp4578 ret <4 x i1> %14579}4580 4581define <4 x i1> @fcmps_ueq_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {4582; CHECK-LABEL: fcmps_ueq_fv_v4f32:4583; CHECK: # %bb.0:4584; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4585; CHECK-NEXT: vmfgt.vf v9, v8, fa04586; CHECK-NEXT: vmflt.vf v8, v8, fa04587; CHECK-NEXT: vmnor.mm v0, v8, v94588; CHECK-NEXT: ret4589 %head = insertelement <4 x float> poison, float %b, i32 04590 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4591 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp4592 ret <4 x i1> %14593}4594 4595define <4 x i1> @fcmps_ugt_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {4596; CHECK-LABEL: fcmps_ugt_vv_v4f32:4597; CHECK: # %bb.0:4598; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4599; CHECK-NEXT: vmfle.vv v8, v8, v94600; CHECK-NEXT: vmnot.m v0, v84601; CHECK-NEXT: ret4602 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp4603 ret <4 x i1> %14604}4605 4606define <4 x i1> @fcmps_ugt_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {4607; CHECK-LABEL: fcmps_ugt_vf_v4f32:4608; CHECK: # %bb.0:4609; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4610; CHECK-NEXT: vmfle.vf v8, v8, fa04611; CHECK-NEXT: vmnot.m v0, v84612; CHECK-NEXT: ret4613 %head = insertelement <4 x float> poison, float %b, i32 04614 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4615 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp4616 ret <4 x i1> %14617}4618 4619define <4 x i1> @fcmps_ugt_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {4620; CHECK-LABEL: fcmps_ugt_fv_v4f32:4621; CHECK: # %bb.0:4622; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4623; CHECK-NEXT: vmfge.vf v8, v8, fa04624; CHECK-NEXT: vmnot.m v0, v84625; CHECK-NEXT: ret4626 %head = insertelement <4 x float> poison, float %b, i32 04627 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4628 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp4629 ret <4 x i1> %14630}4631 4632define <4 x i1> @fcmps_uge_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {4633; CHECK-LABEL: fcmps_uge_vv_v4f32:4634; CHECK: # %bb.0:4635; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4636; CHECK-NEXT: vmflt.vv v8, v8, v94637; CHECK-NEXT: vmnot.m v0, v84638; CHECK-NEXT: ret4639 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp4640 ret <4 x i1> %14641}4642 4643define <4 x i1> @fcmps_uge_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {4644; CHECK-LABEL: fcmps_uge_vf_v4f32:4645; CHECK: # %bb.0:4646; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4647; CHECK-NEXT: vmflt.vf v8, v8, fa04648; CHECK-NEXT: vmnot.m v0, v84649; CHECK-NEXT: ret4650 %head = insertelement <4 x float> poison, float %b, i32 04651 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4652 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp4653 ret <4 x i1> %14654}4655 4656define <4 x i1> @fcmps_uge_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {4657; CHECK-LABEL: fcmps_uge_fv_v4f32:4658; CHECK: # %bb.0:4659; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4660; CHECK-NEXT: vmfgt.vf v8, v8, fa04661; CHECK-NEXT: vmnot.m v0, v84662; CHECK-NEXT: ret4663 %head = insertelement <4 x float> poison, float %b, i32 04664 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4665 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp4666 ret <4 x i1> %14667}4668 4669define <4 x i1> @fcmps_ult_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {4670; CHECK-LABEL: fcmps_ult_vv_v4f32:4671; CHECK: # %bb.0:4672; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4673; CHECK-NEXT: vmfle.vv v8, v9, v84674; CHECK-NEXT: vmnot.m v0, v84675; CHECK-NEXT: ret4676 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp4677 ret <4 x i1> %14678}4679 4680define <4 x i1> @fcmps_ult_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {4681; CHECK-LABEL: fcmps_ult_vf_v4f32:4682; CHECK: # %bb.0:4683; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4684; CHECK-NEXT: vmfge.vf v8, v8, fa04685; CHECK-NEXT: vmnot.m v0, v84686; CHECK-NEXT: ret4687 %head = insertelement <4 x float> poison, float %b, i32 04688 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4689 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp4690 ret <4 x i1> %14691}4692 4693define <4 x i1> @fcmps_ult_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {4694; CHECK-LABEL: fcmps_ult_fv_v4f32:4695; CHECK: # %bb.0:4696; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4697; CHECK-NEXT: vmfle.vf v8, v8, fa04698; CHECK-NEXT: vmnot.m v0, v84699; CHECK-NEXT: ret4700 %head = insertelement <4 x float> poison, float %b, i32 04701 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4702 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp4703 ret <4 x i1> %14704}4705 4706define <4 x i1> @fcmps_ule_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {4707; CHECK-LABEL: fcmps_ule_vv_v4f32:4708; CHECK: # %bb.0:4709; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4710; CHECK-NEXT: vmflt.vv v8, v9, v84711; CHECK-NEXT: vmnot.m v0, v84712; CHECK-NEXT: ret4713 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp4714 ret <4 x i1> %14715}4716 4717define <4 x i1> @fcmps_ule_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {4718; CHECK-LABEL: fcmps_ule_vf_v4f32:4719; CHECK: # %bb.0:4720; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4721; CHECK-NEXT: vmfgt.vf v8, v8, fa04722; CHECK-NEXT: vmnot.m v0, v84723; CHECK-NEXT: ret4724 %head = insertelement <4 x float> poison, float %b, i32 04725 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4726 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp4727 ret <4 x i1> %14728}4729 4730define <4 x i1> @fcmps_ule_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {4731; CHECK-LABEL: fcmps_ule_fv_v4f32:4732; CHECK: # %bb.0:4733; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4734; CHECK-NEXT: vmflt.vf v8, v8, fa04735; CHECK-NEXT: vmnot.m v0, v84736; CHECK-NEXT: ret4737 %head = insertelement <4 x float> poison, float %b, i32 04738 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4739 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp4740 ret <4 x i1> %14741}4742 4743define <4 x i1> @fcmps_une_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {4744; CHECK-LABEL: fcmps_une_vv_v4f32:4745; CHECK: # %bb.0:4746; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4747; CHECK-NEXT: vmfle.vv v10, v9, v84748; CHECK-NEXT: vmfle.vv v8, v8, v94749; CHECK-NEXT: vmnand.mm v0, v8, v104750; CHECK-NEXT: ret4751 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp4752 ret <4 x i1> %14753}4754 4755define <4 x i1> @fcmps_une_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {4756; CHECK-LABEL: fcmps_une_vf_v4f32:4757; CHECK: # %bb.0:4758; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4759; CHECK-NEXT: vmfge.vf v9, v8, fa04760; CHECK-NEXT: vmfle.vf v8, v8, fa04761; CHECK-NEXT: vmnand.mm v0, v8, v94762; CHECK-NEXT: ret4763 %head = insertelement <4 x float> poison, float %b, i32 04764 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4765 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp4766 ret <4 x i1> %14767}4768 4769define <4 x i1> @fcmps_une_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {4770; CHECK-LABEL: fcmps_une_fv_v4f32:4771; CHECK: # %bb.0:4772; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4773; CHECK-NEXT: vmfle.vf v9, v8, fa04774; CHECK-NEXT: vmfge.vf v8, v8, fa04775; CHECK-NEXT: vmnand.mm v0, v8, v94776; CHECK-NEXT: ret4777 %head = insertelement <4 x float> poison, float %b, i32 04778 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4779 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp4780 ret <4 x i1> %14781}4782 4783define <4 x i1> @fcmps_uno_vv_v4f32(<4 x float> %va, <4 x float> %vb) nounwind strictfp {4784; CHECK-LABEL: fcmps_uno_vv_v4f32:4785; CHECK: # %bb.0:4786; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4787; CHECK-NEXT: vmfle.vv v9, v9, v94788; CHECK-NEXT: vmfle.vv v8, v8, v84789; CHECK-NEXT: vmnot.m v8, v84790; CHECK-NEXT: vmorn.mm v0, v8, v94791; CHECK-NEXT: ret4792 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp4793 ret <4 x i1> %14794}4795 4796define <4 x i1> @fcmps_uno_vf_v4f32(<4 x float> %va, float %b) nounwind strictfp {4797; CHECK-LABEL: fcmps_uno_vf_v4f32:4798; CHECK: # %bb.0:4799; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4800; CHECK-NEXT: vfmv.v.f v9, fa04801; CHECK-NEXT: vmfle.vv v8, v8, v84802; CHECK-NEXT: vmfle.vf v9, v9, fa04803; CHECK-NEXT: vmnot.m v8, v84804; CHECK-NEXT: vmorn.mm v0, v8, v94805; CHECK-NEXT: ret4806 %head = insertelement <4 x float> poison, float %b, i32 04807 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4808 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %va, <4 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp4809 ret <4 x i1> %14810}4811 4812define <4 x i1> @fcmps_uno_fv_v4f32(<4 x float> %va, float %b) nounwind strictfp {4813; CHECK-LABEL: fcmps_uno_fv_v4f32:4814; CHECK: # %bb.0:4815; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma4816; CHECK-NEXT: vfmv.v.f v9, fa04817; CHECK-NEXT: vmfle.vf v9, v9, fa04818; CHECK-NEXT: vmnot.m v9, v94819; CHECK-NEXT: vmfle.vv v8, v8, v84820; CHECK-NEXT: vmorn.mm v0, v9, v84821; CHECK-NEXT: ret4822 %head = insertelement <4 x float> poison, float %b, i32 04823 %splat = shufflevector <4 x float> %head, <4 x float> poison, <4 x i32> zeroinitializer4824 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %splat, <4 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp4825 ret <4 x i1> %14826}4827 4828define <8 x i1> @fcmps_oeq_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {4829; CHECK-LABEL: fcmps_oeq_vv_v8f32:4830; CHECK: # %bb.0:4831; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma4832; CHECK-NEXT: vmfle.vv v12, v10, v84833; CHECK-NEXT: vmfle.vv v13, v8, v104834; CHECK-NEXT: vmand.mm v0, v13, v124835; CHECK-NEXT: ret4836 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp4837 ret <8 x i1> %14838}4839 4840define <8 x i1> @fcmps_oeq_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {4841; CHECK-LABEL: fcmps_oeq_vf_v8f32:4842; CHECK: # %bb.0:4843; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma4844; CHECK-NEXT: vmfge.vf v10, v8, fa04845; CHECK-NEXT: vmfle.vf v11, v8, fa04846; CHECK-NEXT: vmand.mm v0, v11, v104847; CHECK-NEXT: ret4848 %head = insertelement <8 x float> poison, float %b, i32 04849 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer4850 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp4851 ret <8 x i1> %14852}4853 4854define <8 x i1> @fcmps_oeq_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {4855; CHECK-LABEL: fcmps_oeq_fv_v8f32:4856; CHECK: # %bb.0:4857; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma4858; CHECK-NEXT: vmfle.vf v10, v8, fa04859; CHECK-NEXT: vmfge.vf v11, v8, fa04860; CHECK-NEXT: vmand.mm v0, v11, v104861; CHECK-NEXT: ret4862 %head = insertelement <8 x float> poison, float %b, i32 04863 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer4864 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp4865 ret <8 x i1> %14866}4867 4868define <8 x i1> @fcmps_ogt_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {4869; CHECK-LABEL: fcmps_ogt_vv_v8f32:4870; CHECK: # %bb.0:4871; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma4872; CHECK-NEXT: vmflt.vv v0, v10, v84873; CHECK-NEXT: ret4874 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp4875 ret <8 x i1> %14876}4877 4878define <8 x i1> @fcmps_ogt_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {4879; CHECK-LABEL: fcmps_ogt_vf_v8f32:4880; CHECK: # %bb.0:4881; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma4882; CHECK-NEXT: vmfgt.vf v0, v8, fa04883; CHECK-NEXT: ret4884 %head = insertelement <8 x float> poison, float %b, i32 04885 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer4886 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp4887 ret <8 x i1> %14888}4889 4890define <8 x i1> @fcmps_ogt_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {4891; CHECK-LABEL: fcmps_ogt_fv_v8f32:4892; CHECK: # %bb.0:4893; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma4894; CHECK-NEXT: vmflt.vf v0, v8, fa04895; CHECK-NEXT: ret4896 %head = insertelement <8 x float> poison, float %b, i32 04897 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer4898 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp4899 ret <8 x i1> %14900}4901 4902define <8 x i1> @fcmps_oge_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {4903; CHECK-LABEL: fcmps_oge_vv_v8f32:4904; CHECK: # %bb.0:4905; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma4906; CHECK-NEXT: vmfle.vv v0, v10, v84907; CHECK-NEXT: ret4908 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp4909 ret <8 x i1> %14910}4911 4912define <8 x i1> @fcmps_oge_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {4913; CHECK-LABEL: fcmps_oge_vf_v8f32:4914; CHECK: # %bb.0:4915; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma4916; CHECK-NEXT: vmfge.vf v0, v8, fa04917; CHECK-NEXT: ret4918 %head = insertelement <8 x float> poison, float %b, i32 04919 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer4920 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp4921 ret <8 x i1> %14922}4923 4924define <8 x i1> @fcmps_oge_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {4925; CHECK-LABEL: fcmps_oge_fv_v8f32:4926; CHECK: # %bb.0:4927; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma4928; CHECK-NEXT: vmfle.vf v0, v8, fa04929; CHECK-NEXT: ret4930 %head = insertelement <8 x float> poison, float %b, i32 04931 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer4932 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp4933 ret <8 x i1> %14934}4935 4936define <8 x i1> @fcmps_olt_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {4937; CHECK-LABEL: fcmps_olt_vv_v8f32:4938; CHECK: # %bb.0:4939; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma4940; CHECK-NEXT: vmflt.vv v0, v8, v104941; CHECK-NEXT: ret4942 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp4943 ret <8 x i1> %14944}4945 4946define <8 x i1> @fcmps_olt_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {4947; CHECK-LABEL: fcmps_olt_vf_v8f32:4948; CHECK: # %bb.0:4949; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma4950; CHECK-NEXT: vmflt.vf v0, v8, fa04951; CHECK-NEXT: ret4952 %head = insertelement <8 x float> poison, float %b, i32 04953 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer4954 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp4955 ret <8 x i1> %14956}4957 4958define <8 x i1> @fcmps_olt_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {4959; CHECK-LABEL: fcmps_olt_fv_v8f32:4960; CHECK: # %bb.0:4961; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma4962; CHECK-NEXT: vmfgt.vf v0, v8, fa04963; CHECK-NEXT: ret4964 %head = insertelement <8 x float> poison, float %b, i32 04965 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer4966 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp4967 ret <8 x i1> %14968}4969 4970define <8 x i1> @fcmps_ole_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {4971; CHECK-LABEL: fcmps_ole_vv_v8f32:4972; CHECK: # %bb.0:4973; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma4974; CHECK-NEXT: vmfle.vv v0, v8, v104975; CHECK-NEXT: ret4976 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp4977 ret <8 x i1> %14978}4979 4980define <8 x i1> @fcmps_ole_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {4981; CHECK-LABEL: fcmps_ole_vf_v8f32:4982; CHECK: # %bb.0:4983; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma4984; CHECK-NEXT: vmfle.vf v0, v8, fa04985; CHECK-NEXT: ret4986 %head = insertelement <8 x float> poison, float %b, i32 04987 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer4988 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp4989 ret <8 x i1> %14990}4991 4992define <8 x i1> @fcmps_ole_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {4993; CHECK-LABEL: fcmps_ole_fv_v8f32:4994; CHECK: # %bb.0:4995; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma4996; CHECK-NEXT: vmfge.vf v0, v8, fa04997; CHECK-NEXT: ret4998 %head = insertelement <8 x float> poison, float %b, i32 04999 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5000 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp5001 ret <8 x i1> %15002}5003 5004define <8 x i1> @fcmps_one_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {5005; CHECK-LABEL: fcmps_one_vv_v8f32:5006; CHECK: # %bb.0:5007; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5008; CHECK-NEXT: vmflt.vv v12, v8, v105009; CHECK-NEXT: vmflt.vv v13, v10, v85010; CHECK-NEXT: vmor.mm v0, v13, v125011; CHECK-NEXT: ret5012 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp5013 ret <8 x i1> %15014}5015 5016define <8 x i1> @fcmps_one_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {5017; CHECK-LABEL: fcmps_one_vf_v8f32:5018; CHECK: # %bb.0:5019; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5020; CHECK-NEXT: vmflt.vf v10, v8, fa05021; CHECK-NEXT: vmfgt.vf v11, v8, fa05022; CHECK-NEXT: vmor.mm v0, v11, v105023; CHECK-NEXT: ret5024 %head = insertelement <8 x float> poison, float %b, i32 05025 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5026 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp5027 ret <8 x i1> %15028}5029 5030define <8 x i1> @fcmps_one_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {5031; CHECK-LABEL: fcmps_one_fv_v8f32:5032; CHECK: # %bb.0:5033; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5034; CHECK-NEXT: vmfgt.vf v10, v8, fa05035; CHECK-NEXT: vmflt.vf v11, v8, fa05036; CHECK-NEXT: vmor.mm v0, v11, v105037; CHECK-NEXT: ret5038 %head = insertelement <8 x float> poison, float %b, i32 05039 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5040 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp5041 ret <8 x i1> %15042}5043 5044define <8 x i1> @fcmps_ord_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {5045; CHECK-LABEL: fcmps_ord_vv_v8f32:5046; CHECK: # %bb.0:5047; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5048; CHECK-NEXT: vmfle.vv v12, v10, v105049; CHECK-NEXT: vmfle.vv v10, v8, v85050; CHECK-NEXT: vmand.mm v0, v10, v125051; CHECK-NEXT: ret5052 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp5053 ret <8 x i1> %15054}5055 5056define <8 x i1> @fcmps_ord_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {5057; CHECK-LABEL: fcmps_ord_vf_v8f32:5058; CHECK: # %bb.0:5059; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5060; CHECK-NEXT: vfmv.v.f v10, fa05061; CHECK-NEXT: vmfle.vf v12, v10, fa05062; CHECK-NEXT: vmfle.vv v10, v8, v85063; CHECK-NEXT: vmand.mm v0, v10, v125064; CHECK-NEXT: ret5065 %head = insertelement <8 x float> poison, float %b, i32 05066 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5067 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp5068 ret <8 x i1> %15069}5070 5071define <8 x i1> @fcmps_ord_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {5072; CHECK-LABEL: fcmps_ord_fv_v8f32:5073; CHECK: # %bb.0:5074; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5075; CHECK-NEXT: vfmv.v.f v10, fa05076; CHECK-NEXT: vmfle.vf v12, v10, fa05077; CHECK-NEXT: vmfle.vv v10, v8, v85078; CHECK-NEXT: vmand.mm v0, v12, v105079; CHECK-NEXT: ret5080 %head = insertelement <8 x float> poison, float %b, i32 05081 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5082 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp5083 ret <8 x i1> %15084}5085 5086define <8 x i1> @fcmps_ueq_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {5087; CHECK-LABEL: fcmps_ueq_vv_v8f32:5088; CHECK: # %bb.0:5089; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5090; CHECK-NEXT: vmflt.vv v12, v8, v105091; CHECK-NEXT: vmflt.vv v13, v10, v85092; CHECK-NEXT: vmnor.mm v0, v13, v125093; CHECK-NEXT: ret5094 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp5095 ret <8 x i1> %15096}5097 5098define <8 x i1> @fcmps_ueq_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {5099; CHECK-LABEL: fcmps_ueq_vf_v8f32:5100; CHECK: # %bb.0:5101; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5102; CHECK-NEXT: vmflt.vf v10, v8, fa05103; CHECK-NEXT: vmfgt.vf v11, v8, fa05104; CHECK-NEXT: vmnor.mm v0, v11, v105105; CHECK-NEXT: ret5106 %head = insertelement <8 x float> poison, float %b, i32 05107 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5108 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp5109 ret <8 x i1> %15110}5111 5112define <8 x i1> @fcmps_ueq_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {5113; CHECK-LABEL: fcmps_ueq_fv_v8f32:5114; CHECK: # %bb.0:5115; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5116; CHECK-NEXT: vmfgt.vf v10, v8, fa05117; CHECK-NEXT: vmflt.vf v11, v8, fa05118; CHECK-NEXT: vmnor.mm v0, v11, v105119; CHECK-NEXT: ret5120 %head = insertelement <8 x float> poison, float %b, i32 05121 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5122 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp5123 ret <8 x i1> %15124}5125 5126define <8 x i1> @fcmps_ugt_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {5127; CHECK-LABEL: fcmps_ugt_vv_v8f32:5128; CHECK: # %bb.0:5129; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5130; CHECK-NEXT: vmfle.vv v12, v8, v105131; CHECK-NEXT: vmnot.m v0, v125132; CHECK-NEXT: ret5133 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp5134 ret <8 x i1> %15135}5136 5137define <8 x i1> @fcmps_ugt_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {5138; CHECK-LABEL: fcmps_ugt_vf_v8f32:5139; CHECK: # %bb.0:5140; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5141; CHECK-NEXT: vmfle.vf v10, v8, fa05142; CHECK-NEXT: vmnot.m v0, v105143; CHECK-NEXT: ret5144 %head = insertelement <8 x float> poison, float %b, i32 05145 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5146 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp5147 ret <8 x i1> %15148}5149 5150define <8 x i1> @fcmps_ugt_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {5151; CHECK-LABEL: fcmps_ugt_fv_v8f32:5152; CHECK: # %bb.0:5153; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5154; CHECK-NEXT: vmfge.vf v10, v8, fa05155; CHECK-NEXT: vmnot.m v0, v105156; CHECK-NEXT: ret5157 %head = insertelement <8 x float> poison, float %b, i32 05158 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5159 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp5160 ret <8 x i1> %15161}5162 5163define <8 x i1> @fcmps_uge_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {5164; CHECK-LABEL: fcmps_uge_vv_v8f32:5165; CHECK: # %bb.0:5166; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5167; CHECK-NEXT: vmflt.vv v12, v8, v105168; CHECK-NEXT: vmnot.m v0, v125169; CHECK-NEXT: ret5170 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp5171 ret <8 x i1> %15172}5173 5174define <8 x i1> @fcmps_uge_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {5175; CHECK-LABEL: fcmps_uge_vf_v8f32:5176; CHECK: # %bb.0:5177; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5178; CHECK-NEXT: vmflt.vf v10, v8, fa05179; CHECK-NEXT: vmnot.m v0, v105180; CHECK-NEXT: ret5181 %head = insertelement <8 x float> poison, float %b, i32 05182 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5183 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp5184 ret <8 x i1> %15185}5186 5187define <8 x i1> @fcmps_uge_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {5188; CHECK-LABEL: fcmps_uge_fv_v8f32:5189; CHECK: # %bb.0:5190; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5191; CHECK-NEXT: vmfgt.vf v10, v8, fa05192; CHECK-NEXT: vmnot.m v0, v105193; CHECK-NEXT: ret5194 %head = insertelement <8 x float> poison, float %b, i32 05195 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5196 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp5197 ret <8 x i1> %15198}5199 5200define <8 x i1> @fcmps_ult_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {5201; CHECK-LABEL: fcmps_ult_vv_v8f32:5202; CHECK: # %bb.0:5203; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5204; CHECK-NEXT: vmfle.vv v12, v10, v85205; CHECK-NEXT: vmnot.m v0, v125206; CHECK-NEXT: ret5207 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp5208 ret <8 x i1> %15209}5210 5211define <8 x i1> @fcmps_ult_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {5212; CHECK-LABEL: fcmps_ult_vf_v8f32:5213; CHECK: # %bb.0:5214; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5215; CHECK-NEXT: vmfge.vf v10, v8, fa05216; CHECK-NEXT: vmnot.m v0, v105217; CHECK-NEXT: ret5218 %head = insertelement <8 x float> poison, float %b, i32 05219 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5220 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp5221 ret <8 x i1> %15222}5223 5224define <8 x i1> @fcmps_ult_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {5225; CHECK-LABEL: fcmps_ult_fv_v8f32:5226; CHECK: # %bb.0:5227; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5228; CHECK-NEXT: vmfle.vf v10, v8, fa05229; CHECK-NEXT: vmnot.m v0, v105230; CHECK-NEXT: ret5231 %head = insertelement <8 x float> poison, float %b, i32 05232 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5233 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp5234 ret <8 x i1> %15235}5236 5237define <8 x i1> @fcmps_ule_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {5238; CHECK-LABEL: fcmps_ule_vv_v8f32:5239; CHECK: # %bb.0:5240; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5241; CHECK-NEXT: vmflt.vv v12, v10, v85242; CHECK-NEXT: vmnot.m v0, v125243; CHECK-NEXT: ret5244 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp5245 ret <8 x i1> %15246}5247 5248define <8 x i1> @fcmps_ule_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {5249; CHECK-LABEL: fcmps_ule_vf_v8f32:5250; CHECK: # %bb.0:5251; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5252; CHECK-NEXT: vmfgt.vf v10, v8, fa05253; CHECK-NEXT: vmnot.m v0, v105254; CHECK-NEXT: ret5255 %head = insertelement <8 x float> poison, float %b, i32 05256 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5257 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp5258 ret <8 x i1> %15259}5260 5261define <8 x i1> @fcmps_ule_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {5262; CHECK-LABEL: fcmps_ule_fv_v8f32:5263; CHECK: # %bb.0:5264; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5265; CHECK-NEXT: vmflt.vf v10, v8, fa05266; CHECK-NEXT: vmnot.m v0, v105267; CHECK-NEXT: ret5268 %head = insertelement <8 x float> poison, float %b, i32 05269 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5270 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp5271 ret <8 x i1> %15272}5273 5274define <8 x i1> @fcmps_une_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {5275; CHECK-LABEL: fcmps_une_vv_v8f32:5276; CHECK: # %bb.0:5277; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5278; CHECK-NEXT: vmfle.vv v12, v10, v85279; CHECK-NEXT: vmfle.vv v13, v8, v105280; CHECK-NEXT: vmnand.mm v0, v13, v125281; CHECK-NEXT: ret5282 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp5283 ret <8 x i1> %15284}5285 5286define <8 x i1> @fcmps_une_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {5287; CHECK-LABEL: fcmps_une_vf_v8f32:5288; CHECK: # %bb.0:5289; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5290; CHECK-NEXT: vmfge.vf v10, v8, fa05291; CHECK-NEXT: vmfle.vf v11, v8, fa05292; CHECK-NEXT: vmnand.mm v0, v11, v105293; CHECK-NEXT: ret5294 %head = insertelement <8 x float> poison, float %b, i32 05295 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5296 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp5297 ret <8 x i1> %15298}5299 5300define <8 x i1> @fcmps_une_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {5301; CHECK-LABEL: fcmps_une_fv_v8f32:5302; CHECK: # %bb.0:5303; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5304; CHECK-NEXT: vmfle.vf v10, v8, fa05305; CHECK-NEXT: vmfge.vf v11, v8, fa05306; CHECK-NEXT: vmnand.mm v0, v11, v105307; CHECK-NEXT: ret5308 %head = insertelement <8 x float> poison, float %b, i32 05309 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5310 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp5311 ret <8 x i1> %15312}5313 5314define <8 x i1> @fcmps_uno_vv_v8f32(<8 x float> %va, <8 x float> %vb) nounwind strictfp {5315; CHECK-LABEL: fcmps_uno_vv_v8f32:5316; CHECK: # %bb.0:5317; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5318; CHECK-NEXT: vmfle.vv v12, v10, v105319; CHECK-NEXT: vmfle.vv v10, v8, v85320; CHECK-NEXT: vmnot.m v8, v105321; CHECK-NEXT: vmorn.mm v0, v8, v125322; CHECK-NEXT: ret5323 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp5324 ret <8 x i1> %15325}5326 5327define <8 x i1> @fcmps_uno_vf_v8f32(<8 x float> %va, float %b) nounwind strictfp {5328; CHECK-LABEL: fcmps_uno_vf_v8f32:5329; CHECK: # %bb.0:5330; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5331; CHECK-NEXT: vfmv.v.f v10, fa05332; CHECK-NEXT: vmfle.vv v12, v8, v85333; CHECK-NEXT: vmfle.vf v8, v10, fa05334; CHECK-NEXT: vmnot.m v9, v125335; CHECK-NEXT: vmorn.mm v0, v9, v85336; CHECK-NEXT: ret5337 %head = insertelement <8 x float> poison, float %b, i32 05338 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5339 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %va, <8 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp5340 ret <8 x i1> %15341}5342 5343define <8 x i1> @fcmps_uno_fv_v8f32(<8 x float> %va, float %b) nounwind strictfp {5344; CHECK-LABEL: fcmps_uno_fv_v8f32:5345; CHECK: # %bb.0:5346; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma5347; CHECK-NEXT: vfmv.v.f v10, fa05348; CHECK-NEXT: vmfle.vf v12, v10, fa05349; CHECK-NEXT: vmnot.m v10, v125350; CHECK-NEXT: vmfle.vv v11, v8, v85351; CHECK-NEXT: vmorn.mm v0, v10, v115352; CHECK-NEXT: ret5353 %head = insertelement <8 x float> poison, float %b, i32 05354 %splat = shufflevector <8 x float> %head, <8 x float> poison, <8 x i32> zeroinitializer5355 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %splat, <8 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp5356 ret <8 x i1> %15357}5358 5359define <16 x i1> @fcmps_oeq_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {5360; CHECK-LABEL: fcmps_oeq_vv_v16f32:5361; CHECK: # %bb.0:5362; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5363; CHECK-NEXT: vmfle.vv v16, v12, v85364; CHECK-NEXT: vmfle.vv v17, v8, v125365; CHECK-NEXT: vmand.mm v0, v17, v165366; CHECK-NEXT: ret5367 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp5368 ret <16 x i1> %15369}5370 5371define <16 x i1> @fcmps_oeq_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {5372; CHECK-LABEL: fcmps_oeq_vf_v16f32:5373; CHECK: # %bb.0:5374; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5375; CHECK-NEXT: vmfge.vf v12, v8, fa05376; CHECK-NEXT: vmfle.vf v13, v8, fa05377; CHECK-NEXT: vmand.mm v0, v13, v125378; CHECK-NEXT: ret5379 %head = insertelement <16 x float> poison, float %b, i32 05380 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5381 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp5382 ret <16 x i1> %15383}5384 5385define <16 x i1> @fcmps_oeq_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {5386; CHECK-LABEL: fcmps_oeq_fv_v16f32:5387; CHECK: # %bb.0:5388; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5389; CHECK-NEXT: vmfle.vf v12, v8, fa05390; CHECK-NEXT: vmfge.vf v13, v8, fa05391; CHECK-NEXT: vmand.mm v0, v13, v125392; CHECK-NEXT: ret5393 %head = insertelement <16 x float> poison, float %b, i32 05394 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5395 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp5396 ret <16 x i1> %15397}5398 5399define <16 x i1> @fcmps_ogt_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {5400; CHECK-LABEL: fcmps_ogt_vv_v16f32:5401; CHECK: # %bb.0:5402; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5403; CHECK-NEXT: vmflt.vv v0, v12, v85404; CHECK-NEXT: ret5405 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp5406 ret <16 x i1> %15407}5408 5409define <16 x i1> @fcmps_ogt_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {5410; CHECK-LABEL: fcmps_ogt_vf_v16f32:5411; CHECK: # %bb.0:5412; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5413; CHECK-NEXT: vmfgt.vf v0, v8, fa05414; CHECK-NEXT: ret5415 %head = insertelement <16 x float> poison, float %b, i32 05416 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5417 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp5418 ret <16 x i1> %15419}5420 5421define <16 x i1> @fcmps_ogt_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {5422; CHECK-LABEL: fcmps_ogt_fv_v16f32:5423; CHECK: # %bb.0:5424; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5425; CHECK-NEXT: vmflt.vf v0, v8, fa05426; CHECK-NEXT: ret5427 %head = insertelement <16 x float> poison, float %b, i32 05428 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5429 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp5430 ret <16 x i1> %15431}5432 5433define <16 x i1> @fcmps_oge_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {5434; CHECK-LABEL: fcmps_oge_vv_v16f32:5435; CHECK: # %bb.0:5436; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5437; CHECK-NEXT: vmfle.vv v0, v12, v85438; CHECK-NEXT: ret5439 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp5440 ret <16 x i1> %15441}5442 5443define <16 x i1> @fcmps_oge_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {5444; CHECK-LABEL: fcmps_oge_vf_v16f32:5445; CHECK: # %bb.0:5446; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5447; CHECK-NEXT: vmfge.vf v0, v8, fa05448; CHECK-NEXT: ret5449 %head = insertelement <16 x float> poison, float %b, i32 05450 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5451 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp5452 ret <16 x i1> %15453}5454 5455define <16 x i1> @fcmps_oge_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {5456; CHECK-LABEL: fcmps_oge_fv_v16f32:5457; CHECK: # %bb.0:5458; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5459; CHECK-NEXT: vmfle.vf v0, v8, fa05460; CHECK-NEXT: ret5461 %head = insertelement <16 x float> poison, float %b, i32 05462 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5463 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp5464 ret <16 x i1> %15465}5466 5467define <16 x i1> @fcmps_olt_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {5468; CHECK-LABEL: fcmps_olt_vv_v16f32:5469; CHECK: # %bb.0:5470; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5471; CHECK-NEXT: vmflt.vv v0, v8, v125472; CHECK-NEXT: ret5473 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp5474 ret <16 x i1> %15475}5476 5477define <16 x i1> @fcmps_olt_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {5478; CHECK-LABEL: fcmps_olt_vf_v16f32:5479; CHECK: # %bb.0:5480; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5481; CHECK-NEXT: vmflt.vf v0, v8, fa05482; CHECK-NEXT: ret5483 %head = insertelement <16 x float> poison, float %b, i32 05484 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5485 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp5486 ret <16 x i1> %15487}5488 5489define <16 x i1> @fcmps_olt_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {5490; CHECK-LABEL: fcmps_olt_fv_v16f32:5491; CHECK: # %bb.0:5492; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5493; CHECK-NEXT: vmfgt.vf v0, v8, fa05494; CHECK-NEXT: ret5495 %head = insertelement <16 x float> poison, float %b, i32 05496 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5497 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp5498 ret <16 x i1> %15499}5500 5501define <16 x i1> @fcmps_ole_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {5502; CHECK-LABEL: fcmps_ole_vv_v16f32:5503; CHECK: # %bb.0:5504; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5505; CHECK-NEXT: vmfle.vv v0, v8, v125506; CHECK-NEXT: ret5507 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp5508 ret <16 x i1> %15509}5510 5511define <16 x i1> @fcmps_ole_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {5512; CHECK-LABEL: fcmps_ole_vf_v16f32:5513; CHECK: # %bb.0:5514; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5515; CHECK-NEXT: vmfle.vf v0, v8, fa05516; CHECK-NEXT: ret5517 %head = insertelement <16 x float> poison, float %b, i32 05518 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5519 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp5520 ret <16 x i1> %15521}5522 5523define <16 x i1> @fcmps_ole_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {5524; CHECK-LABEL: fcmps_ole_fv_v16f32:5525; CHECK: # %bb.0:5526; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5527; CHECK-NEXT: vmfge.vf v0, v8, fa05528; CHECK-NEXT: ret5529 %head = insertelement <16 x float> poison, float %b, i32 05530 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5531 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp5532 ret <16 x i1> %15533}5534 5535define <16 x i1> @fcmps_one_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {5536; CHECK-LABEL: fcmps_one_vv_v16f32:5537; CHECK: # %bb.0:5538; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5539; CHECK-NEXT: vmflt.vv v16, v8, v125540; CHECK-NEXT: vmflt.vv v17, v12, v85541; CHECK-NEXT: vmor.mm v0, v17, v165542; CHECK-NEXT: ret5543 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp5544 ret <16 x i1> %15545}5546 5547define <16 x i1> @fcmps_one_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {5548; CHECK-LABEL: fcmps_one_vf_v16f32:5549; CHECK: # %bb.0:5550; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5551; CHECK-NEXT: vmflt.vf v12, v8, fa05552; CHECK-NEXT: vmfgt.vf v13, v8, fa05553; CHECK-NEXT: vmor.mm v0, v13, v125554; CHECK-NEXT: ret5555 %head = insertelement <16 x float> poison, float %b, i32 05556 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5557 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp5558 ret <16 x i1> %15559}5560 5561define <16 x i1> @fcmps_one_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {5562; CHECK-LABEL: fcmps_one_fv_v16f32:5563; CHECK: # %bb.0:5564; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5565; CHECK-NEXT: vmfgt.vf v12, v8, fa05566; CHECK-NEXT: vmflt.vf v13, v8, fa05567; CHECK-NEXT: vmor.mm v0, v13, v125568; CHECK-NEXT: ret5569 %head = insertelement <16 x float> poison, float %b, i32 05570 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5571 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp5572 ret <16 x i1> %15573}5574 5575define <16 x i1> @fcmps_ord_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {5576; CHECK-LABEL: fcmps_ord_vv_v16f32:5577; CHECK: # %bb.0:5578; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5579; CHECK-NEXT: vmfle.vv v16, v12, v125580; CHECK-NEXT: vmfle.vv v12, v8, v85581; CHECK-NEXT: vmand.mm v0, v12, v165582; CHECK-NEXT: ret5583 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp5584 ret <16 x i1> %15585}5586 5587define <16 x i1> @fcmps_ord_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {5588; CHECK-LABEL: fcmps_ord_vf_v16f32:5589; CHECK: # %bb.0:5590; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5591; CHECK-NEXT: vfmv.v.f v12, fa05592; CHECK-NEXT: vmfle.vf v16, v12, fa05593; CHECK-NEXT: vmfle.vv v12, v8, v85594; CHECK-NEXT: vmand.mm v0, v12, v165595; CHECK-NEXT: ret5596 %head = insertelement <16 x float> poison, float %b, i32 05597 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5598 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp5599 ret <16 x i1> %15600}5601 5602define <16 x i1> @fcmps_ord_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {5603; CHECK-LABEL: fcmps_ord_fv_v16f32:5604; CHECK: # %bb.0:5605; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5606; CHECK-NEXT: vfmv.v.f v12, fa05607; CHECK-NEXT: vmfle.vf v16, v12, fa05608; CHECK-NEXT: vmfle.vv v12, v8, v85609; CHECK-NEXT: vmand.mm v0, v16, v125610; CHECK-NEXT: ret5611 %head = insertelement <16 x float> poison, float %b, i32 05612 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5613 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp5614 ret <16 x i1> %15615}5616 5617define <16 x i1> @fcmps_ueq_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {5618; CHECK-LABEL: fcmps_ueq_vv_v16f32:5619; CHECK: # %bb.0:5620; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5621; CHECK-NEXT: vmflt.vv v16, v8, v125622; CHECK-NEXT: vmflt.vv v17, v12, v85623; CHECK-NEXT: vmnor.mm v0, v17, v165624; CHECK-NEXT: ret5625 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp5626 ret <16 x i1> %15627}5628 5629define <16 x i1> @fcmps_ueq_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {5630; CHECK-LABEL: fcmps_ueq_vf_v16f32:5631; CHECK: # %bb.0:5632; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5633; CHECK-NEXT: vmflt.vf v12, v8, fa05634; CHECK-NEXT: vmfgt.vf v13, v8, fa05635; CHECK-NEXT: vmnor.mm v0, v13, v125636; CHECK-NEXT: ret5637 %head = insertelement <16 x float> poison, float %b, i32 05638 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5639 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp5640 ret <16 x i1> %15641}5642 5643define <16 x i1> @fcmps_ueq_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {5644; CHECK-LABEL: fcmps_ueq_fv_v16f32:5645; CHECK: # %bb.0:5646; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5647; CHECK-NEXT: vmfgt.vf v12, v8, fa05648; CHECK-NEXT: vmflt.vf v13, v8, fa05649; CHECK-NEXT: vmnor.mm v0, v13, v125650; CHECK-NEXT: ret5651 %head = insertelement <16 x float> poison, float %b, i32 05652 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5653 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp5654 ret <16 x i1> %15655}5656 5657define <16 x i1> @fcmps_ugt_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {5658; CHECK-LABEL: fcmps_ugt_vv_v16f32:5659; CHECK: # %bb.0:5660; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5661; CHECK-NEXT: vmfle.vv v16, v8, v125662; CHECK-NEXT: vmnot.m v0, v165663; CHECK-NEXT: ret5664 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp5665 ret <16 x i1> %15666}5667 5668define <16 x i1> @fcmps_ugt_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {5669; CHECK-LABEL: fcmps_ugt_vf_v16f32:5670; CHECK: # %bb.0:5671; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5672; CHECK-NEXT: vmfle.vf v12, v8, fa05673; CHECK-NEXT: vmnot.m v0, v125674; CHECK-NEXT: ret5675 %head = insertelement <16 x float> poison, float %b, i32 05676 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5677 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp5678 ret <16 x i1> %15679}5680 5681define <16 x i1> @fcmps_ugt_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {5682; CHECK-LABEL: fcmps_ugt_fv_v16f32:5683; CHECK: # %bb.0:5684; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5685; CHECK-NEXT: vmfge.vf v12, v8, fa05686; CHECK-NEXT: vmnot.m v0, v125687; CHECK-NEXT: ret5688 %head = insertelement <16 x float> poison, float %b, i32 05689 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5690 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp5691 ret <16 x i1> %15692}5693 5694define <16 x i1> @fcmps_uge_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {5695; CHECK-LABEL: fcmps_uge_vv_v16f32:5696; CHECK: # %bb.0:5697; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5698; CHECK-NEXT: vmflt.vv v16, v8, v125699; CHECK-NEXT: vmnot.m v0, v165700; CHECK-NEXT: ret5701 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp5702 ret <16 x i1> %15703}5704 5705define <16 x i1> @fcmps_uge_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {5706; CHECK-LABEL: fcmps_uge_vf_v16f32:5707; CHECK: # %bb.0:5708; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5709; CHECK-NEXT: vmflt.vf v12, v8, fa05710; CHECK-NEXT: vmnot.m v0, v125711; CHECK-NEXT: ret5712 %head = insertelement <16 x float> poison, float %b, i32 05713 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5714 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp5715 ret <16 x i1> %15716}5717 5718define <16 x i1> @fcmps_uge_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {5719; CHECK-LABEL: fcmps_uge_fv_v16f32:5720; CHECK: # %bb.0:5721; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5722; CHECK-NEXT: vmfgt.vf v12, v8, fa05723; CHECK-NEXT: vmnot.m v0, v125724; CHECK-NEXT: ret5725 %head = insertelement <16 x float> poison, float %b, i32 05726 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5727 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp5728 ret <16 x i1> %15729}5730 5731define <16 x i1> @fcmps_ult_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {5732; CHECK-LABEL: fcmps_ult_vv_v16f32:5733; CHECK: # %bb.0:5734; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5735; CHECK-NEXT: vmfle.vv v16, v12, v85736; CHECK-NEXT: vmnot.m v0, v165737; CHECK-NEXT: ret5738 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp5739 ret <16 x i1> %15740}5741 5742define <16 x i1> @fcmps_ult_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {5743; CHECK-LABEL: fcmps_ult_vf_v16f32:5744; CHECK: # %bb.0:5745; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5746; CHECK-NEXT: vmfge.vf v12, v8, fa05747; CHECK-NEXT: vmnot.m v0, v125748; CHECK-NEXT: ret5749 %head = insertelement <16 x float> poison, float %b, i32 05750 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5751 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp5752 ret <16 x i1> %15753}5754 5755define <16 x i1> @fcmps_ult_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {5756; CHECK-LABEL: fcmps_ult_fv_v16f32:5757; CHECK: # %bb.0:5758; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5759; CHECK-NEXT: vmfle.vf v12, v8, fa05760; CHECK-NEXT: vmnot.m v0, v125761; CHECK-NEXT: ret5762 %head = insertelement <16 x float> poison, float %b, i32 05763 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5764 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp5765 ret <16 x i1> %15766}5767 5768define <16 x i1> @fcmps_ule_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {5769; CHECK-LABEL: fcmps_ule_vv_v16f32:5770; CHECK: # %bb.0:5771; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5772; CHECK-NEXT: vmflt.vv v16, v12, v85773; CHECK-NEXT: vmnot.m v0, v165774; CHECK-NEXT: ret5775 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp5776 ret <16 x i1> %15777}5778 5779define <16 x i1> @fcmps_ule_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {5780; CHECK-LABEL: fcmps_ule_vf_v16f32:5781; CHECK: # %bb.0:5782; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5783; CHECK-NEXT: vmfgt.vf v12, v8, fa05784; CHECK-NEXT: vmnot.m v0, v125785; CHECK-NEXT: ret5786 %head = insertelement <16 x float> poison, float %b, i32 05787 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5788 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp5789 ret <16 x i1> %15790}5791 5792define <16 x i1> @fcmps_ule_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {5793; CHECK-LABEL: fcmps_ule_fv_v16f32:5794; CHECK: # %bb.0:5795; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5796; CHECK-NEXT: vmflt.vf v12, v8, fa05797; CHECK-NEXT: vmnot.m v0, v125798; CHECK-NEXT: ret5799 %head = insertelement <16 x float> poison, float %b, i32 05800 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5801 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp5802 ret <16 x i1> %15803}5804 5805define <16 x i1> @fcmps_une_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {5806; CHECK-LABEL: fcmps_une_vv_v16f32:5807; CHECK: # %bb.0:5808; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5809; CHECK-NEXT: vmfle.vv v16, v12, v85810; CHECK-NEXT: vmfle.vv v17, v8, v125811; CHECK-NEXT: vmnand.mm v0, v17, v165812; CHECK-NEXT: ret5813 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp5814 ret <16 x i1> %15815}5816 5817define <16 x i1> @fcmps_une_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {5818; CHECK-LABEL: fcmps_une_vf_v16f32:5819; CHECK: # %bb.0:5820; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5821; CHECK-NEXT: vmfge.vf v12, v8, fa05822; CHECK-NEXT: vmfle.vf v13, v8, fa05823; CHECK-NEXT: vmnand.mm v0, v13, v125824; CHECK-NEXT: ret5825 %head = insertelement <16 x float> poison, float %b, i32 05826 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5827 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp5828 ret <16 x i1> %15829}5830 5831define <16 x i1> @fcmps_une_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {5832; CHECK-LABEL: fcmps_une_fv_v16f32:5833; CHECK: # %bb.0:5834; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5835; CHECK-NEXT: vmfle.vf v12, v8, fa05836; CHECK-NEXT: vmfge.vf v13, v8, fa05837; CHECK-NEXT: vmnand.mm v0, v13, v125838; CHECK-NEXT: ret5839 %head = insertelement <16 x float> poison, float %b, i32 05840 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5841 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp5842 ret <16 x i1> %15843}5844 5845define <16 x i1> @fcmps_uno_vv_v16f32(<16 x float> %va, <16 x float> %vb) nounwind strictfp {5846; CHECK-LABEL: fcmps_uno_vv_v16f32:5847; CHECK: # %bb.0:5848; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5849; CHECK-NEXT: vmfle.vv v16, v12, v125850; CHECK-NEXT: vmfle.vv v12, v8, v85851; CHECK-NEXT: vmnot.m v8, v125852; CHECK-NEXT: vmorn.mm v0, v8, v165853; CHECK-NEXT: ret5854 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp5855 ret <16 x i1> %15856}5857 5858define <16 x i1> @fcmps_uno_vf_v16f32(<16 x float> %va, float %b) nounwind strictfp {5859; CHECK-LABEL: fcmps_uno_vf_v16f32:5860; CHECK: # %bb.0:5861; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5862; CHECK-NEXT: vfmv.v.f v12, fa05863; CHECK-NEXT: vmfle.vv v16, v8, v85864; CHECK-NEXT: vmfle.vf v8, v12, fa05865; CHECK-NEXT: vmnot.m v9, v165866; CHECK-NEXT: vmorn.mm v0, v9, v85867; CHECK-NEXT: ret5868 %head = insertelement <16 x float> poison, float %b, i32 05869 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5870 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %va, <16 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp5871 ret <16 x i1> %15872}5873 5874define <16 x i1> @fcmps_uno_fv_v16f32(<16 x float> %va, float %b) nounwind strictfp {5875; CHECK-LABEL: fcmps_uno_fv_v16f32:5876; CHECK: # %bb.0:5877; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma5878; CHECK-NEXT: vfmv.v.f v12, fa05879; CHECK-NEXT: vmfle.vf v16, v12, fa05880; CHECK-NEXT: vmnot.m v12, v165881; CHECK-NEXT: vmfle.vv v13, v8, v85882; CHECK-NEXT: vmorn.mm v0, v12, v135883; CHECK-NEXT: ret5884 %head = insertelement <16 x float> poison, float %b, i32 05885 %splat = shufflevector <16 x float> %head, <16 x float> poison, <16 x i32> zeroinitializer5886 %1 = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %splat, <16 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp5887 ret <16 x i1> %15888}5889 5890define <1 x i1> @fcmps_oeq_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {5891; CHECK-LABEL: fcmps_oeq_vv_v1f64:5892; CHECK: # %bb.0:5893; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma5894; CHECK-NEXT: vmfle.vv v10, v9, v85895; CHECK-NEXT: vmfle.vv v8, v8, v95896; CHECK-NEXT: vmand.mm v0, v8, v105897; CHECK-NEXT: ret5898 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp5899 ret <1 x i1> %15900}5901 5902define <1 x i1> @fcmps_oeq_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {5903; CHECK-LABEL: fcmps_oeq_vf_v1f64:5904; CHECK: # %bb.0:5905; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma5906; CHECK-NEXT: vmfge.vf v9, v8, fa05907; CHECK-NEXT: vmfle.vf v8, v8, fa05908; CHECK-NEXT: vmand.mm v0, v8, v95909; CHECK-NEXT: ret5910 %head = insertelement <1 x double> poison, double %b, i32 05911 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer5912 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp5913 ret <1 x i1> %15914}5915 5916define <1 x i1> @fcmps_oeq_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {5917; CHECK-LABEL: fcmps_oeq_fv_v1f64:5918; CHECK: # %bb.0:5919; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma5920; CHECK-NEXT: vmfle.vf v9, v8, fa05921; CHECK-NEXT: vmfge.vf v8, v8, fa05922; CHECK-NEXT: vmand.mm v0, v8, v95923; CHECK-NEXT: ret5924 %head = insertelement <1 x double> poison, double %b, i32 05925 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer5926 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp5927 ret <1 x i1> %15928}5929 5930define <1 x i1> @fcmps_ogt_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {5931; CHECK-LABEL: fcmps_ogt_vv_v1f64:5932; CHECK: # %bb.0:5933; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma5934; CHECK-NEXT: vmflt.vv v0, v9, v85935; CHECK-NEXT: ret5936 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp5937 ret <1 x i1> %15938}5939 5940define <1 x i1> @fcmps_ogt_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {5941; CHECK-LABEL: fcmps_ogt_vf_v1f64:5942; CHECK: # %bb.0:5943; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma5944; CHECK-NEXT: vmfgt.vf v0, v8, fa05945; CHECK-NEXT: ret5946 %head = insertelement <1 x double> poison, double %b, i32 05947 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer5948 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp5949 ret <1 x i1> %15950}5951 5952define <1 x i1> @fcmps_ogt_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {5953; CHECK-LABEL: fcmps_ogt_fv_v1f64:5954; CHECK: # %bb.0:5955; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma5956; CHECK-NEXT: vmflt.vf v0, v8, fa05957; CHECK-NEXT: ret5958 %head = insertelement <1 x double> poison, double %b, i32 05959 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer5960 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp5961 ret <1 x i1> %15962}5963 5964define <1 x i1> @fcmps_oge_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {5965; CHECK-LABEL: fcmps_oge_vv_v1f64:5966; CHECK: # %bb.0:5967; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma5968; CHECK-NEXT: vmfle.vv v0, v9, v85969; CHECK-NEXT: ret5970 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp5971 ret <1 x i1> %15972}5973 5974define <1 x i1> @fcmps_oge_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {5975; CHECK-LABEL: fcmps_oge_vf_v1f64:5976; CHECK: # %bb.0:5977; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma5978; CHECK-NEXT: vmfge.vf v0, v8, fa05979; CHECK-NEXT: ret5980 %head = insertelement <1 x double> poison, double %b, i32 05981 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer5982 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp5983 ret <1 x i1> %15984}5985 5986define <1 x i1> @fcmps_oge_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {5987; CHECK-LABEL: fcmps_oge_fv_v1f64:5988; CHECK: # %bb.0:5989; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma5990; CHECK-NEXT: vmfle.vf v0, v8, fa05991; CHECK-NEXT: ret5992 %head = insertelement <1 x double> poison, double %b, i32 05993 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer5994 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp5995 ret <1 x i1> %15996}5997 5998define <1 x i1> @fcmps_olt_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {5999; CHECK-LABEL: fcmps_olt_vv_v1f64:6000; CHECK: # %bb.0:6001; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6002; CHECK-NEXT: vmflt.vv v0, v8, v96003; CHECK-NEXT: ret6004 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp6005 ret <1 x i1> %16006}6007 6008define <1 x i1> @fcmps_olt_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {6009; CHECK-LABEL: fcmps_olt_vf_v1f64:6010; CHECK: # %bb.0:6011; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6012; CHECK-NEXT: vmflt.vf v0, v8, fa06013; CHECK-NEXT: ret6014 %head = insertelement <1 x double> poison, double %b, i32 06015 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer6016 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp6017 ret <1 x i1> %16018}6019 6020define <1 x i1> @fcmps_olt_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {6021; CHECK-LABEL: fcmps_olt_fv_v1f64:6022; CHECK: # %bb.0:6023; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6024; CHECK-NEXT: vmfgt.vf v0, v8, fa06025; CHECK-NEXT: ret6026 %head = insertelement <1 x double> poison, double %b, i32 06027 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer6028 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp6029 ret <1 x i1> %16030}6031 6032define <1 x i1> @fcmps_ole_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {6033; CHECK-LABEL: fcmps_ole_vv_v1f64:6034; CHECK: # %bb.0:6035; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6036; CHECK-NEXT: vmfle.vv v0, v8, v96037; CHECK-NEXT: ret6038 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp6039 ret <1 x i1> %16040}6041 6042define <1 x i1> @fcmps_ole_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {6043; CHECK-LABEL: fcmps_ole_vf_v1f64:6044; CHECK: # %bb.0:6045; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6046; CHECK-NEXT: vmfle.vf v0, v8, fa06047; CHECK-NEXT: ret6048 %head = insertelement <1 x double> poison, double %b, i32 06049 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer6050 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp6051 ret <1 x i1> %16052}6053 6054define <1 x i1> @fcmps_ole_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {6055; CHECK-LABEL: fcmps_ole_fv_v1f64:6056; CHECK: # %bb.0:6057; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6058; CHECK-NEXT: vmfge.vf v0, v8, fa06059; CHECK-NEXT: ret6060 %head = insertelement <1 x double> poison, double %b, i32 06061 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer6062 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp6063 ret <1 x i1> %16064}6065 6066define <1 x i1> @fcmps_one_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {6067; CHECK-LABEL: fcmps_one_vv_v1f64:6068; CHECK: # %bb.0:6069; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6070; CHECK-NEXT: vmflt.vv v10, v8, v96071; CHECK-NEXT: vmflt.vv v8, v9, v86072; CHECK-NEXT: vmor.mm v0, v8, v106073; CHECK-NEXT: ret6074 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp6075 ret <1 x i1> %16076}6077 6078define <1 x i1> @fcmps_one_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {6079; CHECK-LABEL: fcmps_one_vf_v1f64:6080; CHECK: # %bb.0:6081; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6082; CHECK-NEXT: vmflt.vf v9, v8, fa06083; CHECK-NEXT: vmfgt.vf v8, v8, fa06084; CHECK-NEXT: vmor.mm v0, v8, v96085; CHECK-NEXT: ret6086 %head = insertelement <1 x double> poison, double %b, i32 06087 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer6088 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp6089 ret <1 x i1> %16090}6091 6092define <1 x i1> @fcmps_one_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {6093; CHECK-LABEL: fcmps_one_fv_v1f64:6094; CHECK: # %bb.0:6095; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6096; CHECK-NEXT: vmfgt.vf v9, v8, fa06097; CHECK-NEXT: vmflt.vf v8, v8, fa06098; CHECK-NEXT: vmor.mm v0, v8, v96099; CHECK-NEXT: ret6100 %head = insertelement <1 x double> poison, double %b, i32 06101 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer6102 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp6103 ret <1 x i1> %16104}6105 6106define <1 x i1> @fcmps_ord_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {6107; CHECK-LABEL: fcmps_ord_vv_v1f64:6108; CHECK: # %bb.0:6109; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6110; CHECK-NEXT: vmfle.vv v9, v9, v96111; CHECK-NEXT: vmfle.vv v8, v8, v86112; CHECK-NEXT: vmand.mm v0, v8, v96113; CHECK-NEXT: ret6114 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp6115 ret <1 x i1> %16116}6117 6118define <1 x i1> @fcmps_ord_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {6119; CHECK-LABEL: fcmps_ord_vf_v1f64:6120; CHECK: # %bb.0:6121; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6122; CHECK-NEXT: vfmv.s.f v9, fa06123; CHECK-NEXT: vmfle.vf v9, v9, fa06124; CHECK-NEXT: vmfle.vv v8, v8, v86125; CHECK-NEXT: vmand.mm v0, v8, v96126; CHECK-NEXT: ret6127 %head = insertelement <1 x double> poison, double %b, i32 06128 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer6129 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp6130 ret <1 x i1> %16131}6132 6133define <1 x i1> @fcmps_ord_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {6134; CHECK-LABEL: fcmps_ord_fv_v1f64:6135; CHECK: # %bb.0:6136; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6137; CHECK-NEXT: vfmv.s.f v9, fa06138; CHECK-NEXT: vmfle.vf v9, v9, fa06139; CHECK-NEXT: vmfle.vv v8, v8, v86140; CHECK-NEXT: vmand.mm v0, v9, v86141; CHECK-NEXT: ret6142 %head = insertelement <1 x double> poison, double %b, i32 06143 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer6144 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp6145 ret <1 x i1> %16146}6147 6148define <1 x i1> @fcmps_ueq_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {6149; CHECK-LABEL: fcmps_ueq_vv_v1f64:6150; CHECK: # %bb.0:6151; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6152; CHECK-NEXT: vmflt.vv v10, v8, v96153; CHECK-NEXT: vmflt.vv v8, v9, v86154; CHECK-NEXT: vmnor.mm v0, v8, v106155; CHECK-NEXT: ret6156 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp6157 ret <1 x i1> %16158}6159 6160define <1 x i1> @fcmps_ueq_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {6161; CHECK-LABEL: fcmps_ueq_vf_v1f64:6162; CHECK: # %bb.0:6163; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6164; CHECK-NEXT: vmflt.vf v9, v8, fa06165; CHECK-NEXT: vmfgt.vf v8, v8, fa06166; CHECK-NEXT: vmnor.mm v0, v8, v96167; CHECK-NEXT: ret6168 %head = insertelement <1 x double> poison, double %b, i32 06169 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer6170 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp6171 ret <1 x i1> %16172}6173 6174define <1 x i1> @fcmps_ueq_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {6175; CHECK-LABEL: fcmps_ueq_fv_v1f64:6176; CHECK: # %bb.0:6177; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6178; CHECK-NEXT: vmfgt.vf v9, v8, fa06179; CHECK-NEXT: vmflt.vf v8, v8, fa06180; CHECK-NEXT: vmnor.mm v0, v8, v96181; CHECK-NEXT: ret6182 %head = insertelement <1 x double> poison, double %b, i32 06183 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer6184 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp6185 ret <1 x i1> %16186}6187 6188define <1 x i1> @fcmps_ugt_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {6189; CHECK-LABEL: fcmps_ugt_vv_v1f64:6190; CHECK: # %bb.0:6191; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6192; CHECK-NEXT: vmfle.vv v8, v8, v96193; CHECK-NEXT: vmnot.m v0, v86194; CHECK-NEXT: ret6195 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp6196 ret <1 x i1> %16197}6198 6199define <1 x i1> @fcmps_ugt_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {6200; CHECK-LABEL: fcmps_ugt_vf_v1f64:6201; CHECK: # %bb.0:6202; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6203; CHECK-NEXT: vmfle.vf v8, v8, fa06204; CHECK-NEXT: vmnot.m v0, v86205; CHECK-NEXT: ret6206 %head = insertelement <1 x double> poison, double %b, i32 06207 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer6208 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp6209 ret <1 x i1> %16210}6211 6212define <1 x i1> @fcmps_ugt_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {6213; CHECK-LABEL: fcmps_ugt_fv_v1f64:6214; CHECK: # %bb.0:6215; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6216; CHECK-NEXT: vmfge.vf v8, v8, fa06217; CHECK-NEXT: vmnot.m v0, v86218; CHECK-NEXT: ret6219 %head = insertelement <1 x double> poison, double %b, i32 06220 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer6221 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp6222 ret <1 x i1> %16223}6224 6225define <1 x i1> @fcmps_uge_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {6226; CHECK-LABEL: fcmps_uge_vv_v1f64:6227; CHECK: # %bb.0:6228; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6229; CHECK-NEXT: vmflt.vv v8, v8, v96230; CHECK-NEXT: vmnot.m v0, v86231; CHECK-NEXT: ret6232 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp6233 ret <1 x i1> %16234}6235 6236define <1 x i1> @fcmps_uge_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {6237; CHECK-LABEL: fcmps_uge_vf_v1f64:6238; CHECK: # %bb.0:6239; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6240; CHECK-NEXT: vmflt.vf v8, v8, fa06241; CHECK-NEXT: vmnot.m v0, v86242; CHECK-NEXT: ret6243 %head = insertelement <1 x double> poison, double %b, i32 06244 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer6245 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp6246 ret <1 x i1> %16247}6248 6249define <1 x i1> @fcmps_uge_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {6250; CHECK-LABEL: fcmps_uge_fv_v1f64:6251; CHECK: # %bb.0:6252; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6253; CHECK-NEXT: vmfgt.vf v8, v8, fa06254; CHECK-NEXT: vmnot.m v0, v86255; CHECK-NEXT: ret6256 %head = insertelement <1 x double> poison, double %b, i32 06257 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer6258 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp6259 ret <1 x i1> %16260}6261 6262define <1 x i1> @fcmps_ult_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {6263; CHECK-LABEL: fcmps_ult_vv_v1f64:6264; CHECK: # %bb.0:6265; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6266; CHECK-NEXT: vmfle.vv v8, v9, v86267; CHECK-NEXT: vmnot.m v0, v86268; CHECK-NEXT: ret6269 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp6270 ret <1 x i1> %16271}6272 6273define <1 x i1> @fcmps_ult_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {6274; CHECK-LABEL: fcmps_ult_vf_v1f64:6275; CHECK: # %bb.0:6276; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6277; CHECK-NEXT: vmfge.vf v8, v8, fa06278; CHECK-NEXT: vmnot.m v0, v86279; CHECK-NEXT: ret6280 %head = insertelement <1 x double> poison, double %b, i32 06281 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer6282 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp6283 ret <1 x i1> %16284}6285 6286define <1 x i1> @fcmps_ult_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {6287; CHECK-LABEL: fcmps_ult_fv_v1f64:6288; CHECK: # %bb.0:6289; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6290; CHECK-NEXT: vmfle.vf v8, v8, fa06291; CHECK-NEXT: vmnot.m v0, v86292; CHECK-NEXT: ret6293 %head = insertelement <1 x double> poison, double %b, i32 06294 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer6295 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp6296 ret <1 x i1> %16297}6298 6299define <1 x i1> @fcmps_ule_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {6300; CHECK-LABEL: fcmps_ule_vv_v1f64:6301; CHECK: # %bb.0:6302; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6303; CHECK-NEXT: vmflt.vv v8, v9, v86304; CHECK-NEXT: vmnot.m v0, v86305; CHECK-NEXT: ret6306 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp6307 ret <1 x i1> %16308}6309 6310define <1 x i1> @fcmps_ule_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {6311; CHECK-LABEL: fcmps_ule_vf_v1f64:6312; CHECK: # %bb.0:6313; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6314; CHECK-NEXT: vmfgt.vf v8, v8, fa06315; CHECK-NEXT: vmnot.m v0, v86316; CHECK-NEXT: ret6317 %head = insertelement <1 x double> poison, double %b, i32 06318 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer6319 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp6320 ret <1 x i1> %16321}6322 6323define <1 x i1> @fcmps_ule_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {6324; CHECK-LABEL: fcmps_ule_fv_v1f64:6325; CHECK: # %bb.0:6326; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6327; CHECK-NEXT: vmflt.vf v8, v8, fa06328; CHECK-NEXT: vmnot.m v0, v86329; CHECK-NEXT: ret6330 %head = insertelement <1 x double> poison, double %b, i32 06331 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer6332 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp6333 ret <1 x i1> %16334}6335 6336define <1 x i1> @fcmps_une_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {6337; CHECK-LABEL: fcmps_une_vv_v1f64:6338; CHECK: # %bb.0:6339; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6340; CHECK-NEXT: vmfle.vv v10, v9, v86341; CHECK-NEXT: vmfle.vv v8, v8, v96342; CHECK-NEXT: vmnand.mm v0, v8, v106343; CHECK-NEXT: ret6344 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp6345 ret <1 x i1> %16346}6347 6348define <1 x i1> @fcmps_une_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {6349; CHECK-LABEL: fcmps_une_vf_v1f64:6350; CHECK: # %bb.0:6351; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6352; CHECK-NEXT: vmfge.vf v9, v8, fa06353; CHECK-NEXT: vmfle.vf v8, v8, fa06354; CHECK-NEXT: vmnand.mm v0, v8, v96355; CHECK-NEXT: ret6356 %head = insertelement <1 x double> poison, double %b, i32 06357 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer6358 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp6359 ret <1 x i1> %16360}6361 6362define <1 x i1> @fcmps_une_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {6363; CHECK-LABEL: fcmps_une_fv_v1f64:6364; CHECK: # %bb.0:6365; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6366; CHECK-NEXT: vmfle.vf v9, v8, fa06367; CHECK-NEXT: vmfge.vf v8, v8, fa06368; CHECK-NEXT: vmnand.mm v0, v8, v96369; CHECK-NEXT: ret6370 %head = insertelement <1 x double> poison, double %b, i32 06371 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer6372 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp6373 ret <1 x i1> %16374}6375 6376define <1 x i1> @fcmps_uno_vv_v1f64(<1 x double> %va, <1 x double> %vb) nounwind strictfp {6377; CHECK-LABEL: fcmps_uno_vv_v1f64:6378; CHECK: # %bb.0:6379; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6380; CHECK-NEXT: vmfle.vv v9, v9, v96381; CHECK-NEXT: vmfle.vv v8, v8, v86382; CHECK-NEXT: vmnot.m v8, v86383; CHECK-NEXT: vmorn.mm v0, v8, v96384; CHECK-NEXT: ret6385 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp6386 ret <1 x i1> %16387}6388 6389define <1 x i1> @fcmps_uno_vf_v1f64(<1 x double> %va, double %b) nounwind strictfp {6390; CHECK-LABEL: fcmps_uno_vf_v1f64:6391; CHECK: # %bb.0:6392; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6393; CHECK-NEXT: vfmv.s.f v9, fa06394; CHECK-NEXT: vmfle.vv v8, v8, v86395; CHECK-NEXT: vmfle.vf v9, v9, fa06396; CHECK-NEXT: vmnot.m v8, v86397; CHECK-NEXT: vmorn.mm v0, v8, v96398; CHECK-NEXT: ret6399 %head = insertelement <1 x double> poison, double %b, i32 06400 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer6401 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %va, <1 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp6402 ret <1 x i1> %16403}6404 6405define <1 x i1> @fcmps_uno_fv_v1f64(<1 x double> %va, double %b) nounwind strictfp {6406; CHECK-LABEL: fcmps_uno_fv_v1f64:6407; CHECK: # %bb.0:6408; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma6409; CHECK-NEXT: vfmv.s.f v9, fa06410; CHECK-NEXT: vmfle.vf v9, v9, fa06411; CHECK-NEXT: vmnot.m v9, v96412; CHECK-NEXT: vmfle.vv v8, v8, v86413; CHECK-NEXT: vmorn.mm v0, v9, v86414; CHECK-NEXT: ret6415 %head = insertelement <1 x double> poison, double %b, i32 06416 %splat = shufflevector <1 x double> %head, <1 x double> poison, <1 x i32> zeroinitializer6417 %1 = call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %splat, <1 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp6418 ret <1 x i1> %16419}6420 6421define <2 x i1> @fcmps_oeq_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {6422; CHECK-LABEL: fcmps_oeq_vv_v2f64:6423; CHECK: # %bb.0:6424; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6425; CHECK-NEXT: vmfle.vv v10, v9, v86426; CHECK-NEXT: vmfle.vv v8, v8, v96427; CHECK-NEXT: vmand.mm v0, v8, v106428; CHECK-NEXT: ret6429 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp6430 ret <2 x i1> %16431}6432 6433define <2 x i1> @fcmps_oeq_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {6434; CHECK-LABEL: fcmps_oeq_vf_v2f64:6435; CHECK: # %bb.0:6436; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6437; CHECK-NEXT: vmfge.vf v9, v8, fa06438; CHECK-NEXT: vmfle.vf v8, v8, fa06439; CHECK-NEXT: vmand.mm v0, v8, v96440; CHECK-NEXT: ret6441 %head = insertelement <2 x double> poison, double %b, i32 06442 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6443 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp6444 ret <2 x i1> %16445}6446 6447define <2 x i1> @fcmps_oeq_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {6448; CHECK-LABEL: fcmps_oeq_fv_v2f64:6449; CHECK: # %bb.0:6450; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6451; CHECK-NEXT: vmfle.vf v9, v8, fa06452; CHECK-NEXT: vmfge.vf v8, v8, fa06453; CHECK-NEXT: vmand.mm v0, v8, v96454; CHECK-NEXT: ret6455 %head = insertelement <2 x double> poison, double %b, i32 06456 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6457 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp6458 ret <2 x i1> %16459}6460 6461define <2 x i1> @fcmps_ogt_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {6462; CHECK-LABEL: fcmps_ogt_vv_v2f64:6463; CHECK: # %bb.0:6464; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6465; CHECK-NEXT: vmflt.vv v0, v9, v86466; CHECK-NEXT: ret6467 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp6468 ret <2 x i1> %16469}6470 6471define <2 x i1> @fcmps_ogt_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {6472; CHECK-LABEL: fcmps_ogt_vf_v2f64:6473; CHECK: # %bb.0:6474; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6475; CHECK-NEXT: vmfgt.vf v0, v8, fa06476; CHECK-NEXT: ret6477 %head = insertelement <2 x double> poison, double %b, i32 06478 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6479 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp6480 ret <2 x i1> %16481}6482 6483define <2 x i1> @fcmps_ogt_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {6484; CHECK-LABEL: fcmps_ogt_fv_v2f64:6485; CHECK: # %bb.0:6486; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6487; CHECK-NEXT: vmflt.vf v0, v8, fa06488; CHECK-NEXT: ret6489 %head = insertelement <2 x double> poison, double %b, i32 06490 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6491 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp6492 ret <2 x i1> %16493}6494 6495define <2 x i1> @fcmps_oge_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {6496; CHECK-LABEL: fcmps_oge_vv_v2f64:6497; CHECK: # %bb.0:6498; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6499; CHECK-NEXT: vmfle.vv v0, v9, v86500; CHECK-NEXT: ret6501 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp6502 ret <2 x i1> %16503}6504 6505define <2 x i1> @fcmps_oge_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {6506; CHECK-LABEL: fcmps_oge_vf_v2f64:6507; CHECK: # %bb.0:6508; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6509; CHECK-NEXT: vmfge.vf v0, v8, fa06510; CHECK-NEXT: ret6511 %head = insertelement <2 x double> poison, double %b, i32 06512 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6513 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp6514 ret <2 x i1> %16515}6516 6517define <2 x i1> @fcmps_oge_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {6518; CHECK-LABEL: fcmps_oge_fv_v2f64:6519; CHECK: # %bb.0:6520; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6521; CHECK-NEXT: vmfle.vf v0, v8, fa06522; CHECK-NEXT: ret6523 %head = insertelement <2 x double> poison, double %b, i32 06524 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6525 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp6526 ret <2 x i1> %16527}6528 6529define <2 x i1> @fcmps_olt_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {6530; CHECK-LABEL: fcmps_olt_vv_v2f64:6531; CHECK: # %bb.0:6532; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6533; CHECK-NEXT: vmflt.vv v0, v8, v96534; CHECK-NEXT: ret6535 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp6536 ret <2 x i1> %16537}6538 6539define <2 x i1> @fcmps_olt_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {6540; CHECK-LABEL: fcmps_olt_vf_v2f64:6541; CHECK: # %bb.0:6542; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6543; CHECK-NEXT: vmflt.vf v0, v8, fa06544; CHECK-NEXT: ret6545 %head = insertelement <2 x double> poison, double %b, i32 06546 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6547 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp6548 ret <2 x i1> %16549}6550 6551define <2 x i1> @fcmps_olt_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {6552; CHECK-LABEL: fcmps_olt_fv_v2f64:6553; CHECK: # %bb.0:6554; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6555; CHECK-NEXT: vmfgt.vf v0, v8, fa06556; CHECK-NEXT: ret6557 %head = insertelement <2 x double> poison, double %b, i32 06558 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6559 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp6560 ret <2 x i1> %16561}6562 6563define <2 x i1> @fcmps_ole_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {6564; CHECK-LABEL: fcmps_ole_vv_v2f64:6565; CHECK: # %bb.0:6566; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6567; CHECK-NEXT: vmfle.vv v0, v8, v96568; CHECK-NEXT: ret6569 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp6570 ret <2 x i1> %16571}6572 6573define <2 x i1> @fcmps_ole_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {6574; CHECK-LABEL: fcmps_ole_vf_v2f64:6575; CHECK: # %bb.0:6576; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6577; CHECK-NEXT: vmfle.vf v0, v8, fa06578; CHECK-NEXT: ret6579 %head = insertelement <2 x double> poison, double %b, i32 06580 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6581 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp6582 ret <2 x i1> %16583}6584 6585define <2 x i1> @fcmps_ole_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {6586; CHECK-LABEL: fcmps_ole_fv_v2f64:6587; CHECK: # %bb.0:6588; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6589; CHECK-NEXT: vmfge.vf v0, v8, fa06590; CHECK-NEXT: ret6591 %head = insertelement <2 x double> poison, double %b, i32 06592 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6593 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp6594 ret <2 x i1> %16595}6596 6597define <2 x i1> @fcmps_one_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {6598; CHECK-LABEL: fcmps_one_vv_v2f64:6599; CHECK: # %bb.0:6600; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6601; CHECK-NEXT: vmflt.vv v10, v8, v96602; CHECK-NEXT: vmflt.vv v8, v9, v86603; CHECK-NEXT: vmor.mm v0, v8, v106604; CHECK-NEXT: ret6605 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp6606 ret <2 x i1> %16607}6608 6609define <2 x i1> @fcmps_one_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {6610; CHECK-LABEL: fcmps_one_vf_v2f64:6611; CHECK: # %bb.0:6612; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6613; CHECK-NEXT: vmflt.vf v9, v8, fa06614; CHECK-NEXT: vmfgt.vf v8, v8, fa06615; CHECK-NEXT: vmor.mm v0, v8, v96616; CHECK-NEXT: ret6617 %head = insertelement <2 x double> poison, double %b, i32 06618 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6619 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp6620 ret <2 x i1> %16621}6622 6623define <2 x i1> @fcmps_one_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {6624; CHECK-LABEL: fcmps_one_fv_v2f64:6625; CHECK: # %bb.0:6626; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6627; CHECK-NEXT: vmfgt.vf v9, v8, fa06628; CHECK-NEXT: vmflt.vf v8, v8, fa06629; CHECK-NEXT: vmor.mm v0, v8, v96630; CHECK-NEXT: ret6631 %head = insertelement <2 x double> poison, double %b, i32 06632 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6633 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp6634 ret <2 x i1> %16635}6636 6637define <2 x i1> @fcmps_ord_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {6638; CHECK-LABEL: fcmps_ord_vv_v2f64:6639; CHECK: # %bb.0:6640; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6641; CHECK-NEXT: vmfle.vv v9, v9, v96642; CHECK-NEXT: vmfle.vv v8, v8, v86643; CHECK-NEXT: vmand.mm v0, v8, v96644; CHECK-NEXT: ret6645 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp6646 ret <2 x i1> %16647}6648 6649define <2 x i1> @fcmps_ord_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {6650; CHECK-LABEL: fcmps_ord_vf_v2f64:6651; CHECK: # %bb.0:6652; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6653; CHECK-NEXT: vfmv.v.f v9, fa06654; CHECK-NEXT: vmfle.vf v9, v9, fa06655; CHECK-NEXT: vmfle.vv v8, v8, v86656; CHECK-NEXT: vmand.mm v0, v8, v96657; CHECK-NEXT: ret6658 %head = insertelement <2 x double> poison, double %b, i32 06659 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6660 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp6661 ret <2 x i1> %16662}6663 6664define <2 x i1> @fcmps_ord_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {6665; CHECK-LABEL: fcmps_ord_fv_v2f64:6666; CHECK: # %bb.0:6667; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6668; CHECK-NEXT: vfmv.v.f v9, fa06669; CHECK-NEXT: vmfle.vf v9, v9, fa06670; CHECK-NEXT: vmfle.vv v8, v8, v86671; CHECK-NEXT: vmand.mm v0, v9, v86672; CHECK-NEXT: ret6673 %head = insertelement <2 x double> poison, double %b, i32 06674 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6675 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp6676 ret <2 x i1> %16677}6678 6679define <2 x i1> @fcmps_ueq_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {6680; CHECK-LABEL: fcmps_ueq_vv_v2f64:6681; CHECK: # %bb.0:6682; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6683; CHECK-NEXT: vmflt.vv v10, v8, v96684; CHECK-NEXT: vmflt.vv v8, v9, v86685; CHECK-NEXT: vmnor.mm v0, v8, v106686; CHECK-NEXT: ret6687 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp6688 ret <2 x i1> %16689}6690 6691define <2 x i1> @fcmps_ueq_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {6692; CHECK-LABEL: fcmps_ueq_vf_v2f64:6693; CHECK: # %bb.0:6694; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6695; CHECK-NEXT: vmflt.vf v9, v8, fa06696; CHECK-NEXT: vmfgt.vf v8, v8, fa06697; CHECK-NEXT: vmnor.mm v0, v8, v96698; CHECK-NEXT: ret6699 %head = insertelement <2 x double> poison, double %b, i32 06700 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6701 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp6702 ret <2 x i1> %16703}6704 6705define <2 x i1> @fcmps_ueq_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {6706; CHECK-LABEL: fcmps_ueq_fv_v2f64:6707; CHECK: # %bb.0:6708; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6709; CHECK-NEXT: vmfgt.vf v9, v8, fa06710; CHECK-NEXT: vmflt.vf v8, v8, fa06711; CHECK-NEXT: vmnor.mm v0, v8, v96712; CHECK-NEXT: ret6713 %head = insertelement <2 x double> poison, double %b, i32 06714 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6715 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp6716 ret <2 x i1> %16717}6718 6719define <2 x i1> @fcmps_ugt_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {6720; CHECK-LABEL: fcmps_ugt_vv_v2f64:6721; CHECK: # %bb.0:6722; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6723; CHECK-NEXT: vmfle.vv v8, v8, v96724; CHECK-NEXT: vmnot.m v0, v86725; CHECK-NEXT: ret6726 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp6727 ret <2 x i1> %16728}6729 6730define <2 x i1> @fcmps_ugt_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {6731; CHECK-LABEL: fcmps_ugt_vf_v2f64:6732; CHECK: # %bb.0:6733; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6734; CHECK-NEXT: vmfle.vf v8, v8, fa06735; CHECK-NEXT: vmnot.m v0, v86736; CHECK-NEXT: ret6737 %head = insertelement <2 x double> poison, double %b, i32 06738 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6739 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp6740 ret <2 x i1> %16741}6742 6743define <2 x i1> @fcmps_ugt_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {6744; CHECK-LABEL: fcmps_ugt_fv_v2f64:6745; CHECK: # %bb.0:6746; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6747; CHECK-NEXT: vmfge.vf v8, v8, fa06748; CHECK-NEXT: vmnot.m v0, v86749; CHECK-NEXT: ret6750 %head = insertelement <2 x double> poison, double %b, i32 06751 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6752 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp6753 ret <2 x i1> %16754}6755 6756define <2 x i1> @fcmps_uge_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {6757; CHECK-LABEL: fcmps_uge_vv_v2f64:6758; CHECK: # %bb.0:6759; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6760; CHECK-NEXT: vmflt.vv v8, v8, v96761; CHECK-NEXT: vmnot.m v0, v86762; CHECK-NEXT: ret6763 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp6764 ret <2 x i1> %16765}6766 6767define <2 x i1> @fcmps_uge_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {6768; CHECK-LABEL: fcmps_uge_vf_v2f64:6769; CHECK: # %bb.0:6770; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6771; CHECK-NEXT: vmflt.vf v8, v8, fa06772; CHECK-NEXT: vmnot.m v0, v86773; CHECK-NEXT: ret6774 %head = insertelement <2 x double> poison, double %b, i32 06775 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6776 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp6777 ret <2 x i1> %16778}6779 6780define <2 x i1> @fcmps_uge_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {6781; CHECK-LABEL: fcmps_uge_fv_v2f64:6782; CHECK: # %bb.0:6783; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6784; CHECK-NEXT: vmfgt.vf v8, v8, fa06785; CHECK-NEXT: vmnot.m v0, v86786; CHECK-NEXT: ret6787 %head = insertelement <2 x double> poison, double %b, i32 06788 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6789 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp6790 ret <2 x i1> %16791}6792 6793define <2 x i1> @fcmps_ult_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {6794; CHECK-LABEL: fcmps_ult_vv_v2f64:6795; CHECK: # %bb.0:6796; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6797; CHECK-NEXT: vmfle.vv v8, v9, v86798; CHECK-NEXT: vmnot.m v0, v86799; CHECK-NEXT: ret6800 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp6801 ret <2 x i1> %16802}6803 6804define <2 x i1> @fcmps_ult_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {6805; CHECK-LABEL: fcmps_ult_vf_v2f64:6806; CHECK: # %bb.0:6807; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6808; CHECK-NEXT: vmfge.vf v8, v8, fa06809; CHECK-NEXT: vmnot.m v0, v86810; CHECK-NEXT: ret6811 %head = insertelement <2 x double> poison, double %b, i32 06812 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6813 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp6814 ret <2 x i1> %16815}6816 6817define <2 x i1> @fcmps_ult_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {6818; CHECK-LABEL: fcmps_ult_fv_v2f64:6819; CHECK: # %bb.0:6820; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6821; CHECK-NEXT: vmfle.vf v8, v8, fa06822; CHECK-NEXT: vmnot.m v0, v86823; CHECK-NEXT: ret6824 %head = insertelement <2 x double> poison, double %b, i32 06825 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6826 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp6827 ret <2 x i1> %16828}6829 6830define <2 x i1> @fcmps_ule_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {6831; CHECK-LABEL: fcmps_ule_vv_v2f64:6832; CHECK: # %bb.0:6833; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6834; CHECK-NEXT: vmflt.vv v8, v9, v86835; CHECK-NEXT: vmnot.m v0, v86836; CHECK-NEXT: ret6837 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp6838 ret <2 x i1> %16839}6840 6841define <2 x i1> @fcmps_ule_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {6842; CHECK-LABEL: fcmps_ule_vf_v2f64:6843; CHECK: # %bb.0:6844; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6845; CHECK-NEXT: vmfgt.vf v8, v8, fa06846; CHECK-NEXT: vmnot.m v0, v86847; CHECK-NEXT: ret6848 %head = insertelement <2 x double> poison, double %b, i32 06849 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6850 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp6851 ret <2 x i1> %16852}6853 6854define <2 x i1> @fcmps_ule_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {6855; CHECK-LABEL: fcmps_ule_fv_v2f64:6856; CHECK: # %bb.0:6857; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6858; CHECK-NEXT: vmflt.vf v8, v8, fa06859; CHECK-NEXT: vmnot.m v0, v86860; CHECK-NEXT: ret6861 %head = insertelement <2 x double> poison, double %b, i32 06862 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6863 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp6864 ret <2 x i1> %16865}6866 6867define <2 x i1> @fcmps_une_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {6868; CHECK-LABEL: fcmps_une_vv_v2f64:6869; CHECK: # %bb.0:6870; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6871; CHECK-NEXT: vmfle.vv v10, v9, v86872; CHECK-NEXT: vmfle.vv v8, v8, v96873; CHECK-NEXT: vmnand.mm v0, v8, v106874; CHECK-NEXT: ret6875 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp6876 ret <2 x i1> %16877}6878 6879define <2 x i1> @fcmps_une_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {6880; CHECK-LABEL: fcmps_une_vf_v2f64:6881; CHECK: # %bb.0:6882; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6883; CHECK-NEXT: vmfge.vf v9, v8, fa06884; CHECK-NEXT: vmfle.vf v8, v8, fa06885; CHECK-NEXT: vmnand.mm v0, v8, v96886; CHECK-NEXT: ret6887 %head = insertelement <2 x double> poison, double %b, i32 06888 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6889 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp6890 ret <2 x i1> %16891}6892 6893define <2 x i1> @fcmps_une_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {6894; CHECK-LABEL: fcmps_une_fv_v2f64:6895; CHECK: # %bb.0:6896; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6897; CHECK-NEXT: vmfle.vf v9, v8, fa06898; CHECK-NEXT: vmfge.vf v8, v8, fa06899; CHECK-NEXT: vmnand.mm v0, v8, v96900; CHECK-NEXT: ret6901 %head = insertelement <2 x double> poison, double %b, i32 06902 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6903 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp6904 ret <2 x i1> %16905}6906 6907define <2 x i1> @fcmps_uno_vv_v2f64(<2 x double> %va, <2 x double> %vb) nounwind strictfp {6908; CHECK-LABEL: fcmps_uno_vv_v2f64:6909; CHECK: # %bb.0:6910; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6911; CHECK-NEXT: vmfle.vv v9, v9, v96912; CHECK-NEXT: vmfle.vv v8, v8, v86913; CHECK-NEXT: vmnot.m v8, v86914; CHECK-NEXT: vmorn.mm v0, v8, v96915; CHECK-NEXT: ret6916 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp6917 ret <2 x i1> %16918}6919 6920define <2 x i1> @fcmps_uno_vf_v2f64(<2 x double> %va, double %b) nounwind strictfp {6921; CHECK-LABEL: fcmps_uno_vf_v2f64:6922; CHECK: # %bb.0:6923; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6924; CHECK-NEXT: vfmv.v.f v9, fa06925; CHECK-NEXT: vmfle.vv v8, v8, v86926; CHECK-NEXT: vmfle.vf v9, v9, fa06927; CHECK-NEXT: vmnot.m v8, v86928; CHECK-NEXT: vmorn.mm v0, v8, v96929; CHECK-NEXT: ret6930 %head = insertelement <2 x double> poison, double %b, i32 06931 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6932 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %va, <2 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp6933 ret <2 x i1> %16934}6935 6936define <2 x i1> @fcmps_uno_fv_v2f64(<2 x double> %va, double %b) nounwind strictfp {6937; CHECK-LABEL: fcmps_uno_fv_v2f64:6938; CHECK: # %bb.0:6939; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma6940; CHECK-NEXT: vfmv.v.f v9, fa06941; CHECK-NEXT: vmfle.vf v9, v9, fa06942; CHECK-NEXT: vmnot.m v9, v96943; CHECK-NEXT: vmfle.vv v8, v8, v86944; CHECK-NEXT: vmorn.mm v0, v9, v86945; CHECK-NEXT: ret6946 %head = insertelement <2 x double> poison, double %b, i32 06947 %splat = shufflevector <2 x double> %head, <2 x double> poison, <2 x i32> zeroinitializer6948 %1 = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %splat, <2 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp6949 ret <2 x i1> %16950}6951 6952define <4 x i1> @fcmps_oeq_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {6953; CHECK-LABEL: fcmps_oeq_vv_v4f64:6954; CHECK: # %bb.0:6955; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma6956; CHECK-NEXT: vmfle.vv v12, v10, v86957; CHECK-NEXT: vmfle.vv v13, v8, v106958; CHECK-NEXT: vmand.mm v0, v13, v126959; CHECK-NEXT: ret6960 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp6961 ret <4 x i1> %16962}6963 6964define <4 x i1> @fcmps_oeq_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {6965; CHECK-LABEL: fcmps_oeq_vf_v4f64:6966; CHECK: # %bb.0:6967; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma6968; CHECK-NEXT: vmfge.vf v10, v8, fa06969; CHECK-NEXT: vmfle.vf v11, v8, fa06970; CHECK-NEXT: vmand.mm v0, v11, v106971; CHECK-NEXT: ret6972 %head = insertelement <4 x double> poison, double %b, i32 06973 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer6974 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp6975 ret <4 x i1> %16976}6977 6978define <4 x i1> @fcmps_oeq_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {6979; CHECK-LABEL: fcmps_oeq_fv_v4f64:6980; CHECK: # %bb.0:6981; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma6982; CHECK-NEXT: vmfle.vf v10, v8, fa06983; CHECK-NEXT: vmfge.vf v11, v8, fa06984; CHECK-NEXT: vmand.mm v0, v11, v106985; CHECK-NEXT: ret6986 %head = insertelement <4 x double> poison, double %b, i32 06987 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer6988 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp6989 ret <4 x i1> %16990}6991 6992define <4 x i1> @fcmps_ogt_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {6993; CHECK-LABEL: fcmps_ogt_vv_v4f64:6994; CHECK: # %bb.0:6995; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma6996; CHECK-NEXT: vmflt.vv v0, v10, v86997; CHECK-NEXT: ret6998 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp6999 ret <4 x i1> %17000}7001 7002define <4 x i1> @fcmps_ogt_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {7003; CHECK-LABEL: fcmps_ogt_vf_v4f64:7004; CHECK: # %bb.0:7005; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7006; CHECK-NEXT: vmfgt.vf v0, v8, fa07007; CHECK-NEXT: ret7008 %head = insertelement <4 x double> poison, double %b, i32 07009 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7010 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp7011 ret <4 x i1> %17012}7013 7014define <4 x i1> @fcmps_ogt_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {7015; CHECK-LABEL: fcmps_ogt_fv_v4f64:7016; CHECK: # %bb.0:7017; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7018; CHECK-NEXT: vmflt.vf v0, v8, fa07019; CHECK-NEXT: ret7020 %head = insertelement <4 x double> poison, double %b, i32 07021 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7022 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp7023 ret <4 x i1> %17024}7025 7026define <4 x i1> @fcmps_oge_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {7027; CHECK-LABEL: fcmps_oge_vv_v4f64:7028; CHECK: # %bb.0:7029; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7030; CHECK-NEXT: vmfle.vv v0, v10, v87031; CHECK-NEXT: ret7032 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp7033 ret <4 x i1> %17034}7035 7036define <4 x i1> @fcmps_oge_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {7037; CHECK-LABEL: fcmps_oge_vf_v4f64:7038; CHECK: # %bb.0:7039; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7040; CHECK-NEXT: vmfge.vf v0, v8, fa07041; CHECK-NEXT: ret7042 %head = insertelement <4 x double> poison, double %b, i32 07043 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7044 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp7045 ret <4 x i1> %17046}7047 7048define <4 x i1> @fcmps_oge_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {7049; CHECK-LABEL: fcmps_oge_fv_v4f64:7050; CHECK: # %bb.0:7051; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7052; CHECK-NEXT: vmfle.vf v0, v8, fa07053; CHECK-NEXT: ret7054 %head = insertelement <4 x double> poison, double %b, i32 07055 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7056 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp7057 ret <4 x i1> %17058}7059 7060define <4 x i1> @fcmps_olt_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {7061; CHECK-LABEL: fcmps_olt_vv_v4f64:7062; CHECK: # %bb.0:7063; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7064; CHECK-NEXT: vmflt.vv v0, v8, v107065; CHECK-NEXT: ret7066 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp7067 ret <4 x i1> %17068}7069 7070define <4 x i1> @fcmps_olt_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {7071; CHECK-LABEL: fcmps_olt_vf_v4f64:7072; CHECK: # %bb.0:7073; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7074; CHECK-NEXT: vmflt.vf v0, v8, fa07075; CHECK-NEXT: ret7076 %head = insertelement <4 x double> poison, double %b, i32 07077 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7078 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp7079 ret <4 x i1> %17080}7081 7082define <4 x i1> @fcmps_olt_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {7083; CHECK-LABEL: fcmps_olt_fv_v4f64:7084; CHECK: # %bb.0:7085; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7086; CHECK-NEXT: vmfgt.vf v0, v8, fa07087; CHECK-NEXT: ret7088 %head = insertelement <4 x double> poison, double %b, i32 07089 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7090 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp7091 ret <4 x i1> %17092}7093 7094define <4 x i1> @fcmps_ole_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {7095; CHECK-LABEL: fcmps_ole_vv_v4f64:7096; CHECK: # %bb.0:7097; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7098; CHECK-NEXT: vmfle.vv v0, v8, v107099; CHECK-NEXT: ret7100 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp7101 ret <4 x i1> %17102}7103 7104define <4 x i1> @fcmps_ole_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {7105; CHECK-LABEL: fcmps_ole_vf_v4f64:7106; CHECK: # %bb.0:7107; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7108; CHECK-NEXT: vmfle.vf v0, v8, fa07109; CHECK-NEXT: ret7110 %head = insertelement <4 x double> poison, double %b, i32 07111 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7112 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp7113 ret <4 x i1> %17114}7115 7116define <4 x i1> @fcmps_ole_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {7117; CHECK-LABEL: fcmps_ole_fv_v4f64:7118; CHECK: # %bb.0:7119; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7120; CHECK-NEXT: vmfge.vf v0, v8, fa07121; CHECK-NEXT: ret7122 %head = insertelement <4 x double> poison, double %b, i32 07123 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7124 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp7125 ret <4 x i1> %17126}7127 7128define <4 x i1> @fcmps_one_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {7129; CHECK-LABEL: fcmps_one_vv_v4f64:7130; CHECK: # %bb.0:7131; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7132; CHECK-NEXT: vmflt.vv v12, v8, v107133; CHECK-NEXT: vmflt.vv v13, v10, v87134; CHECK-NEXT: vmor.mm v0, v13, v127135; CHECK-NEXT: ret7136 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp7137 ret <4 x i1> %17138}7139 7140define <4 x i1> @fcmps_one_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {7141; CHECK-LABEL: fcmps_one_vf_v4f64:7142; CHECK: # %bb.0:7143; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7144; CHECK-NEXT: vmflt.vf v10, v8, fa07145; CHECK-NEXT: vmfgt.vf v11, v8, fa07146; CHECK-NEXT: vmor.mm v0, v11, v107147; CHECK-NEXT: ret7148 %head = insertelement <4 x double> poison, double %b, i32 07149 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7150 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp7151 ret <4 x i1> %17152}7153 7154define <4 x i1> @fcmps_one_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {7155; CHECK-LABEL: fcmps_one_fv_v4f64:7156; CHECK: # %bb.0:7157; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7158; CHECK-NEXT: vmfgt.vf v10, v8, fa07159; CHECK-NEXT: vmflt.vf v11, v8, fa07160; CHECK-NEXT: vmor.mm v0, v11, v107161; CHECK-NEXT: ret7162 %head = insertelement <4 x double> poison, double %b, i32 07163 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7164 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp7165 ret <4 x i1> %17166}7167 7168define <4 x i1> @fcmps_ord_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {7169; CHECK-LABEL: fcmps_ord_vv_v4f64:7170; CHECK: # %bb.0:7171; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7172; CHECK-NEXT: vmfle.vv v12, v10, v107173; CHECK-NEXT: vmfle.vv v10, v8, v87174; CHECK-NEXT: vmand.mm v0, v10, v127175; CHECK-NEXT: ret7176 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp7177 ret <4 x i1> %17178}7179 7180define <4 x i1> @fcmps_ord_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {7181; CHECK-LABEL: fcmps_ord_vf_v4f64:7182; CHECK: # %bb.0:7183; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7184; CHECK-NEXT: vfmv.v.f v10, fa07185; CHECK-NEXT: vmfle.vf v12, v10, fa07186; CHECK-NEXT: vmfle.vv v10, v8, v87187; CHECK-NEXT: vmand.mm v0, v10, v127188; CHECK-NEXT: ret7189 %head = insertelement <4 x double> poison, double %b, i32 07190 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7191 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp7192 ret <4 x i1> %17193}7194 7195define <4 x i1> @fcmps_ord_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {7196; CHECK-LABEL: fcmps_ord_fv_v4f64:7197; CHECK: # %bb.0:7198; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7199; CHECK-NEXT: vfmv.v.f v10, fa07200; CHECK-NEXT: vmfle.vf v12, v10, fa07201; CHECK-NEXT: vmfle.vv v10, v8, v87202; CHECK-NEXT: vmand.mm v0, v12, v107203; CHECK-NEXT: ret7204 %head = insertelement <4 x double> poison, double %b, i32 07205 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7206 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp7207 ret <4 x i1> %17208}7209 7210define <4 x i1> @fcmps_ueq_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {7211; CHECK-LABEL: fcmps_ueq_vv_v4f64:7212; CHECK: # %bb.0:7213; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7214; CHECK-NEXT: vmflt.vv v12, v8, v107215; CHECK-NEXT: vmflt.vv v13, v10, v87216; CHECK-NEXT: vmnor.mm v0, v13, v127217; CHECK-NEXT: ret7218 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp7219 ret <4 x i1> %17220}7221 7222define <4 x i1> @fcmps_ueq_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {7223; CHECK-LABEL: fcmps_ueq_vf_v4f64:7224; CHECK: # %bb.0:7225; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7226; CHECK-NEXT: vmflt.vf v10, v8, fa07227; CHECK-NEXT: vmfgt.vf v11, v8, fa07228; CHECK-NEXT: vmnor.mm v0, v11, v107229; CHECK-NEXT: ret7230 %head = insertelement <4 x double> poison, double %b, i32 07231 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7232 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp7233 ret <4 x i1> %17234}7235 7236define <4 x i1> @fcmps_ueq_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {7237; CHECK-LABEL: fcmps_ueq_fv_v4f64:7238; CHECK: # %bb.0:7239; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7240; CHECK-NEXT: vmfgt.vf v10, v8, fa07241; CHECK-NEXT: vmflt.vf v11, v8, fa07242; CHECK-NEXT: vmnor.mm v0, v11, v107243; CHECK-NEXT: ret7244 %head = insertelement <4 x double> poison, double %b, i32 07245 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7246 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp7247 ret <4 x i1> %17248}7249 7250define <4 x i1> @fcmps_ugt_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {7251; CHECK-LABEL: fcmps_ugt_vv_v4f64:7252; CHECK: # %bb.0:7253; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7254; CHECK-NEXT: vmfle.vv v12, v8, v107255; CHECK-NEXT: vmnot.m v0, v127256; CHECK-NEXT: ret7257 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp7258 ret <4 x i1> %17259}7260 7261define <4 x i1> @fcmps_ugt_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {7262; CHECK-LABEL: fcmps_ugt_vf_v4f64:7263; CHECK: # %bb.0:7264; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7265; CHECK-NEXT: vmfle.vf v10, v8, fa07266; CHECK-NEXT: vmnot.m v0, v107267; CHECK-NEXT: ret7268 %head = insertelement <4 x double> poison, double %b, i32 07269 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7270 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp7271 ret <4 x i1> %17272}7273 7274define <4 x i1> @fcmps_ugt_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {7275; CHECK-LABEL: fcmps_ugt_fv_v4f64:7276; CHECK: # %bb.0:7277; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7278; CHECK-NEXT: vmfge.vf v10, v8, fa07279; CHECK-NEXT: vmnot.m v0, v107280; CHECK-NEXT: ret7281 %head = insertelement <4 x double> poison, double %b, i32 07282 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7283 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp7284 ret <4 x i1> %17285}7286 7287define <4 x i1> @fcmps_uge_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {7288; CHECK-LABEL: fcmps_uge_vv_v4f64:7289; CHECK: # %bb.0:7290; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7291; CHECK-NEXT: vmflt.vv v12, v8, v107292; CHECK-NEXT: vmnot.m v0, v127293; CHECK-NEXT: ret7294 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp7295 ret <4 x i1> %17296}7297 7298define <4 x i1> @fcmps_uge_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {7299; CHECK-LABEL: fcmps_uge_vf_v4f64:7300; CHECK: # %bb.0:7301; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7302; CHECK-NEXT: vmflt.vf v10, v8, fa07303; CHECK-NEXT: vmnot.m v0, v107304; CHECK-NEXT: ret7305 %head = insertelement <4 x double> poison, double %b, i32 07306 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7307 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp7308 ret <4 x i1> %17309}7310 7311define <4 x i1> @fcmps_uge_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {7312; CHECK-LABEL: fcmps_uge_fv_v4f64:7313; CHECK: # %bb.0:7314; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7315; CHECK-NEXT: vmfgt.vf v10, v8, fa07316; CHECK-NEXT: vmnot.m v0, v107317; CHECK-NEXT: ret7318 %head = insertelement <4 x double> poison, double %b, i32 07319 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7320 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp7321 ret <4 x i1> %17322}7323 7324define <4 x i1> @fcmps_ult_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {7325; CHECK-LABEL: fcmps_ult_vv_v4f64:7326; CHECK: # %bb.0:7327; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7328; CHECK-NEXT: vmfle.vv v12, v10, v87329; CHECK-NEXT: vmnot.m v0, v127330; CHECK-NEXT: ret7331 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp7332 ret <4 x i1> %17333}7334 7335define <4 x i1> @fcmps_ult_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {7336; CHECK-LABEL: fcmps_ult_vf_v4f64:7337; CHECK: # %bb.0:7338; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7339; CHECK-NEXT: vmfge.vf v10, v8, fa07340; CHECK-NEXT: vmnot.m v0, v107341; CHECK-NEXT: ret7342 %head = insertelement <4 x double> poison, double %b, i32 07343 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7344 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp7345 ret <4 x i1> %17346}7347 7348define <4 x i1> @fcmps_ult_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {7349; CHECK-LABEL: fcmps_ult_fv_v4f64:7350; CHECK: # %bb.0:7351; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7352; CHECK-NEXT: vmfle.vf v10, v8, fa07353; CHECK-NEXT: vmnot.m v0, v107354; CHECK-NEXT: ret7355 %head = insertelement <4 x double> poison, double %b, i32 07356 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7357 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp7358 ret <4 x i1> %17359}7360 7361define <4 x i1> @fcmps_ule_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {7362; CHECK-LABEL: fcmps_ule_vv_v4f64:7363; CHECK: # %bb.0:7364; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7365; CHECK-NEXT: vmflt.vv v12, v10, v87366; CHECK-NEXT: vmnot.m v0, v127367; CHECK-NEXT: ret7368 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp7369 ret <4 x i1> %17370}7371 7372define <4 x i1> @fcmps_ule_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {7373; CHECK-LABEL: fcmps_ule_vf_v4f64:7374; CHECK: # %bb.0:7375; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7376; CHECK-NEXT: vmfgt.vf v10, v8, fa07377; CHECK-NEXT: vmnot.m v0, v107378; CHECK-NEXT: ret7379 %head = insertelement <4 x double> poison, double %b, i32 07380 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7381 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp7382 ret <4 x i1> %17383}7384 7385define <4 x i1> @fcmps_ule_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {7386; CHECK-LABEL: fcmps_ule_fv_v4f64:7387; CHECK: # %bb.0:7388; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7389; CHECK-NEXT: vmflt.vf v10, v8, fa07390; CHECK-NEXT: vmnot.m v0, v107391; CHECK-NEXT: ret7392 %head = insertelement <4 x double> poison, double %b, i32 07393 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7394 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp7395 ret <4 x i1> %17396}7397 7398define <4 x i1> @fcmps_une_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {7399; CHECK-LABEL: fcmps_une_vv_v4f64:7400; CHECK: # %bb.0:7401; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7402; CHECK-NEXT: vmfle.vv v12, v10, v87403; CHECK-NEXT: vmfle.vv v13, v8, v107404; CHECK-NEXT: vmnand.mm v0, v13, v127405; CHECK-NEXT: ret7406 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp7407 ret <4 x i1> %17408}7409 7410define <4 x i1> @fcmps_une_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {7411; CHECK-LABEL: fcmps_une_vf_v4f64:7412; CHECK: # %bb.0:7413; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7414; CHECK-NEXT: vmfge.vf v10, v8, fa07415; CHECK-NEXT: vmfle.vf v11, v8, fa07416; CHECK-NEXT: vmnand.mm v0, v11, v107417; CHECK-NEXT: ret7418 %head = insertelement <4 x double> poison, double %b, i32 07419 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7420 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp7421 ret <4 x i1> %17422}7423 7424define <4 x i1> @fcmps_une_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {7425; CHECK-LABEL: fcmps_une_fv_v4f64:7426; CHECK: # %bb.0:7427; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7428; CHECK-NEXT: vmfle.vf v10, v8, fa07429; CHECK-NEXT: vmfge.vf v11, v8, fa07430; CHECK-NEXT: vmnand.mm v0, v11, v107431; CHECK-NEXT: ret7432 %head = insertelement <4 x double> poison, double %b, i32 07433 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7434 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp7435 ret <4 x i1> %17436}7437 7438define <4 x i1> @fcmps_uno_vv_v4f64(<4 x double> %va, <4 x double> %vb) nounwind strictfp {7439; CHECK-LABEL: fcmps_uno_vv_v4f64:7440; CHECK: # %bb.0:7441; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7442; CHECK-NEXT: vmfle.vv v12, v10, v107443; CHECK-NEXT: vmfle.vv v10, v8, v87444; CHECK-NEXT: vmnot.m v8, v107445; CHECK-NEXT: vmorn.mm v0, v8, v127446; CHECK-NEXT: ret7447 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp7448 ret <4 x i1> %17449}7450 7451define <4 x i1> @fcmps_uno_vf_v4f64(<4 x double> %va, double %b) nounwind strictfp {7452; CHECK-LABEL: fcmps_uno_vf_v4f64:7453; CHECK: # %bb.0:7454; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7455; CHECK-NEXT: vfmv.v.f v10, fa07456; CHECK-NEXT: vmfle.vv v12, v8, v87457; CHECK-NEXT: vmfle.vf v8, v10, fa07458; CHECK-NEXT: vmnot.m v9, v127459; CHECK-NEXT: vmorn.mm v0, v9, v87460; CHECK-NEXT: ret7461 %head = insertelement <4 x double> poison, double %b, i32 07462 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7463 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %va, <4 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp7464 ret <4 x i1> %17465}7466 7467define <4 x i1> @fcmps_uno_fv_v4f64(<4 x double> %va, double %b) nounwind strictfp {7468; CHECK-LABEL: fcmps_uno_fv_v4f64:7469; CHECK: # %bb.0:7470; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma7471; CHECK-NEXT: vfmv.v.f v10, fa07472; CHECK-NEXT: vmfle.vf v12, v10, fa07473; CHECK-NEXT: vmnot.m v10, v127474; CHECK-NEXT: vmfle.vv v11, v8, v87475; CHECK-NEXT: vmorn.mm v0, v10, v117476; CHECK-NEXT: ret7477 %head = insertelement <4 x double> poison, double %b, i32 07478 %splat = shufflevector <4 x double> %head, <4 x double> poison, <4 x i32> zeroinitializer7479 %1 = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %splat, <4 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp7480 ret <4 x i1> %17481}7482 7483define <8 x i1> @fcmps_oeq_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {7484; CHECK-LABEL: fcmps_oeq_vv_v8f64:7485; CHECK: # %bb.0:7486; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7487; CHECK-NEXT: vmfle.vv v16, v12, v87488; CHECK-NEXT: vmfle.vv v17, v8, v127489; CHECK-NEXT: vmand.mm v0, v17, v167490; CHECK-NEXT: ret7491 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp7492 ret <8 x i1> %17493}7494 7495define <8 x i1> @fcmps_oeq_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {7496; CHECK-LABEL: fcmps_oeq_vf_v8f64:7497; CHECK: # %bb.0:7498; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7499; CHECK-NEXT: vmfge.vf v12, v8, fa07500; CHECK-NEXT: vmfle.vf v13, v8, fa07501; CHECK-NEXT: vmand.mm v0, v13, v127502; CHECK-NEXT: ret7503 %head = insertelement <8 x double> poison, double %b, i32 07504 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7505 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp7506 ret <8 x i1> %17507}7508 7509define <8 x i1> @fcmps_oeq_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {7510; CHECK-LABEL: fcmps_oeq_fv_v8f64:7511; CHECK: # %bb.0:7512; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7513; CHECK-NEXT: vmfle.vf v12, v8, fa07514; CHECK-NEXT: vmfge.vf v13, v8, fa07515; CHECK-NEXT: vmand.mm v0, v13, v127516; CHECK-NEXT: ret7517 %head = insertelement <8 x double> poison, double %b, i32 07518 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7519 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp7520 ret <8 x i1> %17521}7522 7523define <8 x i1> @fcmps_ogt_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {7524; CHECK-LABEL: fcmps_ogt_vv_v8f64:7525; CHECK: # %bb.0:7526; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7527; CHECK-NEXT: vmflt.vv v0, v12, v87528; CHECK-NEXT: ret7529 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp7530 ret <8 x i1> %17531}7532 7533define <8 x i1> @fcmps_ogt_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {7534; CHECK-LABEL: fcmps_ogt_vf_v8f64:7535; CHECK: # %bb.0:7536; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7537; CHECK-NEXT: vmfgt.vf v0, v8, fa07538; CHECK-NEXT: ret7539 %head = insertelement <8 x double> poison, double %b, i32 07540 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7541 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp7542 ret <8 x i1> %17543}7544 7545define <8 x i1> @fcmps_ogt_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {7546; CHECK-LABEL: fcmps_ogt_fv_v8f64:7547; CHECK: # %bb.0:7548; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7549; CHECK-NEXT: vmflt.vf v0, v8, fa07550; CHECK-NEXT: ret7551 %head = insertelement <8 x double> poison, double %b, i32 07552 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7553 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp7554 ret <8 x i1> %17555}7556 7557define <8 x i1> @fcmps_oge_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {7558; CHECK-LABEL: fcmps_oge_vv_v8f64:7559; CHECK: # %bb.0:7560; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7561; CHECK-NEXT: vmfle.vv v0, v12, v87562; CHECK-NEXT: ret7563 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp7564 ret <8 x i1> %17565}7566 7567define <8 x i1> @fcmps_oge_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {7568; CHECK-LABEL: fcmps_oge_vf_v8f64:7569; CHECK: # %bb.0:7570; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7571; CHECK-NEXT: vmfge.vf v0, v8, fa07572; CHECK-NEXT: ret7573 %head = insertelement <8 x double> poison, double %b, i32 07574 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7575 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp7576 ret <8 x i1> %17577}7578 7579define <8 x i1> @fcmps_oge_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {7580; CHECK-LABEL: fcmps_oge_fv_v8f64:7581; CHECK: # %bb.0:7582; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7583; CHECK-NEXT: vmfle.vf v0, v8, fa07584; CHECK-NEXT: ret7585 %head = insertelement <8 x double> poison, double %b, i32 07586 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7587 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp7588 ret <8 x i1> %17589}7590 7591define <8 x i1> @fcmps_olt_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {7592; CHECK-LABEL: fcmps_olt_vv_v8f64:7593; CHECK: # %bb.0:7594; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7595; CHECK-NEXT: vmflt.vv v0, v8, v127596; CHECK-NEXT: ret7597 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp7598 ret <8 x i1> %17599}7600 7601define <8 x i1> @fcmps_olt_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {7602; CHECK-LABEL: fcmps_olt_vf_v8f64:7603; CHECK: # %bb.0:7604; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7605; CHECK-NEXT: vmflt.vf v0, v8, fa07606; CHECK-NEXT: ret7607 %head = insertelement <8 x double> poison, double %b, i32 07608 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7609 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp7610 ret <8 x i1> %17611}7612 7613define <8 x i1> @fcmps_olt_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {7614; CHECK-LABEL: fcmps_olt_fv_v8f64:7615; CHECK: # %bb.0:7616; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7617; CHECK-NEXT: vmfgt.vf v0, v8, fa07618; CHECK-NEXT: ret7619 %head = insertelement <8 x double> poison, double %b, i32 07620 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7621 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp7622 ret <8 x i1> %17623}7624 7625define <8 x i1> @fcmps_ole_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {7626; CHECK-LABEL: fcmps_ole_vv_v8f64:7627; CHECK: # %bb.0:7628; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7629; CHECK-NEXT: vmfle.vv v0, v8, v127630; CHECK-NEXT: ret7631 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp7632 ret <8 x i1> %17633}7634 7635define <8 x i1> @fcmps_ole_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {7636; CHECK-LABEL: fcmps_ole_vf_v8f64:7637; CHECK: # %bb.0:7638; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7639; CHECK-NEXT: vmfle.vf v0, v8, fa07640; CHECK-NEXT: ret7641 %head = insertelement <8 x double> poison, double %b, i32 07642 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7643 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp7644 ret <8 x i1> %17645}7646 7647define <8 x i1> @fcmps_ole_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {7648; CHECK-LABEL: fcmps_ole_fv_v8f64:7649; CHECK: # %bb.0:7650; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7651; CHECK-NEXT: vmfge.vf v0, v8, fa07652; CHECK-NEXT: ret7653 %head = insertelement <8 x double> poison, double %b, i32 07654 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7655 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp7656 ret <8 x i1> %17657}7658 7659define <8 x i1> @fcmps_one_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {7660; CHECK-LABEL: fcmps_one_vv_v8f64:7661; CHECK: # %bb.0:7662; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7663; CHECK-NEXT: vmflt.vv v16, v8, v127664; CHECK-NEXT: vmflt.vv v17, v12, v87665; CHECK-NEXT: vmor.mm v0, v17, v167666; CHECK-NEXT: ret7667 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp7668 ret <8 x i1> %17669}7670 7671define <8 x i1> @fcmps_one_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {7672; CHECK-LABEL: fcmps_one_vf_v8f64:7673; CHECK: # %bb.0:7674; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7675; CHECK-NEXT: vmflt.vf v12, v8, fa07676; CHECK-NEXT: vmfgt.vf v13, v8, fa07677; CHECK-NEXT: vmor.mm v0, v13, v127678; CHECK-NEXT: ret7679 %head = insertelement <8 x double> poison, double %b, i32 07680 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7681 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp7682 ret <8 x i1> %17683}7684 7685define <8 x i1> @fcmps_one_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {7686; CHECK-LABEL: fcmps_one_fv_v8f64:7687; CHECK: # %bb.0:7688; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7689; CHECK-NEXT: vmfgt.vf v12, v8, fa07690; CHECK-NEXT: vmflt.vf v13, v8, fa07691; CHECK-NEXT: vmor.mm v0, v13, v127692; CHECK-NEXT: ret7693 %head = insertelement <8 x double> poison, double %b, i32 07694 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7695 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp7696 ret <8 x i1> %17697}7698 7699define <8 x i1> @fcmps_ord_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {7700; CHECK-LABEL: fcmps_ord_vv_v8f64:7701; CHECK: # %bb.0:7702; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7703; CHECK-NEXT: vmfle.vv v16, v12, v127704; CHECK-NEXT: vmfle.vv v12, v8, v87705; CHECK-NEXT: vmand.mm v0, v12, v167706; CHECK-NEXT: ret7707 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp7708 ret <8 x i1> %17709}7710 7711define <8 x i1> @fcmps_ord_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {7712; CHECK-LABEL: fcmps_ord_vf_v8f64:7713; CHECK: # %bb.0:7714; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7715; CHECK-NEXT: vfmv.v.f v12, fa07716; CHECK-NEXT: vmfle.vf v16, v12, fa07717; CHECK-NEXT: vmfle.vv v12, v8, v87718; CHECK-NEXT: vmand.mm v0, v12, v167719; CHECK-NEXT: ret7720 %head = insertelement <8 x double> poison, double %b, i32 07721 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7722 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp7723 ret <8 x i1> %17724}7725 7726define <8 x i1> @fcmps_ord_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {7727; CHECK-LABEL: fcmps_ord_fv_v8f64:7728; CHECK: # %bb.0:7729; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7730; CHECK-NEXT: vfmv.v.f v12, fa07731; CHECK-NEXT: vmfle.vf v16, v12, fa07732; CHECK-NEXT: vmfle.vv v12, v8, v87733; CHECK-NEXT: vmand.mm v0, v16, v127734; CHECK-NEXT: ret7735 %head = insertelement <8 x double> poison, double %b, i32 07736 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7737 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp7738 ret <8 x i1> %17739}7740 7741define <8 x i1> @fcmps_ueq_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {7742; CHECK-LABEL: fcmps_ueq_vv_v8f64:7743; CHECK: # %bb.0:7744; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7745; CHECK-NEXT: vmflt.vv v16, v8, v127746; CHECK-NEXT: vmflt.vv v17, v12, v87747; CHECK-NEXT: vmnor.mm v0, v17, v167748; CHECK-NEXT: ret7749 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp7750 ret <8 x i1> %17751}7752 7753define <8 x i1> @fcmps_ueq_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {7754; CHECK-LABEL: fcmps_ueq_vf_v8f64:7755; CHECK: # %bb.0:7756; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7757; CHECK-NEXT: vmflt.vf v12, v8, fa07758; CHECK-NEXT: vmfgt.vf v13, v8, fa07759; CHECK-NEXT: vmnor.mm v0, v13, v127760; CHECK-NEXT: ret7761 %head = insertelement <8 x double> poison, double %b, i32 07762 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7763 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp7764 ret <8 x i1> %17765}7766 7767define <8 x i1> @fcmps_ueq_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {7768; CHECK-LABEL: fcmps_ueq_fv_v8f64:7769; CHECK: # %bb.0:7770; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7771; CHECK-NEXT: vmfgt.vf v12, v8, fa07772; CHECK-NEXT: vmflt.vf v13, v8, fa07773; CHECK-NEXT: vmnor.mm v0, v13, v127774; CHECK-NEXT: ret7775 %head = insertelement <8 x double> poison, double %b, i32 07776 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7777 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp7778 ret <8 x i1> %17779}7780 7781define <8 x i1> @fcmps_ugt_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {7782; CHECK-LABEL: fcmps_ugt_vv_v8f64:7783; CHECK: # %bb.0:7784; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7785; CHECK-NEXT: vmfle.vv v16, v8, v127786; CHECK-NEXT: vmnot.m v0, v167787; CHECK-NEXT: ret7788 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp7789 ret <8 x i1> %17790}7791 7792define <8 x i1> @fcmps_ugt_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {7793; CHECK-LABEL: fcmps_ugt_vf_v8f64:7794; CHECK: # %bb.0:7795; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7796; CHECK-NEXT: vmfle.vf v12, v8, fa07797; CHECK-NEXT: vmnot.m v0, v127798; CHECK-NEXT: ret7799 %head = insertelement <8 x double> poison, double %b, i32 07800 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7801 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp7802 ret <8 x i1> %17803}7804 7805define <8 x i1> @fcmps_ugt_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {7806; CHECK-LABEL: fcmps_ugt_fv_v8f64:7807; CHECK: # %bb.0:7808; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7809; CHECK-NEXT: vmfge.vf v12, v8, fa07810; CHECK-NEXT: vmnot.m v0, v127811; CHECK-NEXT: ret7812 %head = insertelement <8 x double> poison, double %b, i32 07813 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7814 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp7815 ret <8 x i1> %17816}7817 7818define <8 x i1> @fcmps_uge_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {7819; CHECK-LABEL: fcmps_uge_vv_v8f64:7820; CHECK: # %bb.0:7821; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7822; CHECK-NEXT: vmflt.vv v16, v8, v127823; CHECK-NEXT: vmnot.m v0, v167824; CHECK-NEXT: ret7825 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp7826 ret <8 x i1> %17827}7828 7829define <8 x i1> @fcmps_uge_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {7830; CHECK-LABEL: fcmps_uge_vf_v8f64:7831; CHECK: # %bb.0:7832; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7833; CHECK-NEXT: vmflt.vf v12, v8, fa07834; CHECK-NEXT: vmnot.m v0, v127835; CHECK-NEXT: ret7836 %head = insertelement <8 x double> poison, double %b, i32 07837 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7838 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp7839 ret <8 x i1> %17840}7841 7842define <8 x i1> @fcmps_uge_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {7843; CHECK-LABEL: fcmps_uge_fv_v8f64:7844; CHECK: # %bb.0:7845; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7846; CHECK-NEXT: vmfgt.vf v12, v8, fa07847; CHECK-NEXT: vmnot.m v0, v127848; CHECK-NEXT: ret7849 %head = insertelement <8 x double> poison, double %b, i32 07850 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7851 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp7852 ret <8 x i1> %17853}7854 7855define <8 x i1> @fcmps_ult_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {7856; CHECK-LABEL: fcmps_ult_vv_v8f64:7857; CHECK: # %bb.0:7858; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7859; CHECK-NEXT: vmfle.vv v16, v12, v87860; CHECK-NEXT: vmnot.m v0, v167861; CHECK-NEXT: ret7862 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp7863 ret <8 x i1> %17864}7865 7866define <8 x i1> @fcmps_ult_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {7867; CHECK-LABEL: fcmps_ult_vf_v8f64:7868; CHECK: # %bb.0:7869; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7870; CHECK-NEXT: vmfge.vf v12, v8, fa07871; CHECK-NEXT: vmnot.m v0, v127872; CHECK-NEXT: ret7873 %head = insertelement <8 x double> poison, double %b, i32 07874 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7875 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp7876 ret <8 x i1> %17877}7878 7879define <8 x i1> @fcmps_ult_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {7880; CHECK-LABEL: fcmps_ult_fv_v8f64:7881; CHECK: # %bb.0:7882; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7883; CHECK-NEXT: vmfle.vf v12, v8, fa07884; CHECK-NEXT: vmnot.m v0, v127885; CHECK-NEXT: ret7886 %head = insertelement <8 x double> poison, double %b, i32 07887 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7888 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp7889 ret <8 x i1> %17890}7891 7892define <8 x i1> @fcmps_ule_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {7893; CHECK-LABEL: fcmps_ule_vv_v8f64:7894; CHECK: # %bb.0:7895; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7896; CHECK-NEXT: vmflt.vv v16, v12, v87897; CHECK-NEXT: vmnot.m v0, v167898; CHECK-NEXT: ret7899 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp7900 ret <8 x i1> %17901}7902 7903define <8 x i1> @fcmps_ule_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {7904; CHECK-LABEL: fcmps_ule_vf_v8f64:7905; CHECK: # %bb.0:7906; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7907; CHECK-NEXT: vmfgt.vf v12, v8, fa07908; CHECK-NEXT: vmnot.m v0, v127909; CHECK-NEXT: ret7910 %head = insertelement <8 x double> poison, double %b, i32 07911 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7912 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp7913 ret <8 x i1> %17914}7915 7916define <8 x i1> @fcmps_ule_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {7917; CHECK-LABEL: fcmps_ule_fv_v8f64:7918; CHECK: # %bb.0:7919; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7920; CHECK-NEXT: vmflt.vf v12, v8, fa07921; CHECK-NEXT: vmnot.m v0, v127922; CHECK-NEXT: ret7923 %head = insertelement <8 x double> poison, double %b, i32 07924 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7925 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp7926 ret <8 x i1> %17927}7928 7929define <8 x i1> @fcmps_une_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {7930; CHECK-LABEL: fcmps_une_vv_v8f64:7931; CHECK: # %bb.0:7932; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7933; CHECK-NEXT: vmfle.vv v16, v12, v87934; CHECK-NEXT: vmfle.vv v17, v8, v127935; CHECK-NEXT: vmnand.mm v0, v17, v167936; CHECK-NEXT: ret7937 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp7938 ret <8 x i1> %17939}7940 7941define <8 x i1> @fcmps_une_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {7942; CHECK-LABEL: fcmps_une_vf_v8f64:7943; CHECK: # %bb.0:7944; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7945; CHECK-NEXT: vmfge.vf v12, v8, fa07946; CHECK-NEXT: vmfle.vf v13, v8, fa07947; CHECK-NEXT: vmnand.mm v0, v13, v127948; CHECK-NEXT: ret7949 %head = insertelement <8 x double> poison, double %b, i32 07950 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7951 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp7952 ret <8 x i1> %17953}7954 7955define <8 x i1> @fcmps_une_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {7956; CHECK-LABEL: fcmps_une_fv_v8f64:7957; CHECK: # %bb.0:7958; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7959; CHECK-NEXT: vmfle.vf v12, v8, fa07960; CHECK-NEXT: vmfge.vf v13, v8, fa07961; CHECK-NEXT: vmnand.mm v0, v13, v127962; CHECK-NEXT: ret7963 %head = insertelement <8 x double> poison, double %b, i32 07964 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7965 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp7966 ret <8 x i1> %17967}7968 7969define <8 x i1> @fcmps_uno_vv_v8f64(<8 x double> %va, <8 x double> %vb) nounwind strictfp {7970; CHECK-LABEL: fcmps_uno_vv_v8f64:7971; CHECK: # %bb.0:7972; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7973; CHECK-NEXT: vmfle.vv v16, v12, v127974; CHECK-NEXT: vmfle.vv v12, v8, v87975; CHECK-NEXT: vmnot.m v8, v127976; CHECK-NEXT: vmorn.mm v0, v8, v167977; CHECK-NEXT: ret7978 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp7979 ret <8 x i1> %17980}7981 7982define <8 x i1> @fcmps_uno_vf_v8f64(<8 x double> %va, double %b) nounwind strictfp {7983; CHECK-LABEL: fcmps_uno_vf_v8f64:7984; CHECK: # %bb.0:7985; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma7986; CHECK-NEXT: vfmv.v.f v12, fa07987; CHECK-NEXT: vmfle.vv v16, v8, v87988; CHECK-NEXT: vmfle.vf v8, v12, fa07989; CHECK-NEXT: vmnot.m v9, v167990; CHECK-NEXT: vmorn.mm v0, v9, v87991; CHECK-NEXT: ret7992 %head = insertelement <8 x double> poison, double %b, i32 07993 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer7994 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %va, <8 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp7995 ret <8 x i1> %17996}7997 7998define <8 x i1> @fcmps_uno_fv_v8f64(<8 x double> %va, double %b) nounwind strictfp {7999; CHECK-LABEL: fcmps_uno_fv_v8f64:8000; CHECK: # %bb.0:8001; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma8002; CHECK-NEXT: vfmv.v.f v12, fa08003; CHECK-NEXT: vmfle.vf v16, v12, fa08004; CHECK-NEXT: vmnot.m v12, v168005; CHECK-NEXT: vmfle.vv v13, v8, v88006; CHECK-NEXT: vmorn.mm v0, v12, v138007; CHECK-NEXT: ret8008 %head = insertelement <8 x double> poison, double %b, i32 08009 %splat = shufflevector <8 x double> %head, <8 x double> poison, <8 x i32> zeroinitializer8010 %1 = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %splat, <8 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp8011 ret <8 x i1> %18012}8013