4327 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+m,+d,+zfh,+zvfh,+zfbfmin,+zvfbfmin,+v \3; RUN: -target-abi=ilp32d -verify-machineinstrs < %s | FileCheck %s \4; RUN: --check-prefixes=CHECK,ZVFH,RV325; RUN: llc -mtriple=riscv64 -mattr=+m,+d,+zfh,+zvfh,+zfbfmin,+zvfbfmin,+v \6; RUN: -target-abi=lp64d -verify-machineinstrs < %s | FileCheck %s \7; RUN: --check-prefixes=CHECK,ZVFH,RV648; RUN: llc -mtriple=riscv32 -mattr=+m,+d,+zfh,+zvfhmin,+zfbfmin,+zvfbfmin,+v \9; RUN: -target-abi=ilp32d -verify-machineinstrs < %s | FileCheck %s \10; RUN: --check-prefixes=CHECK,ZVFHMIN,ZVFHMIN3211; RUN: llc -mtriple=riscv64 -mattr=+m,+d,+zfh,+zvfhmin,+zfbfmin,+zvfbfmin,+v \12; RUN: -target-abi=lp64d -verify-machineinstrs < %s | FileCheck %s \13; RUN: --check-prefixes=CHECK,ZVFHMIN,ZVFHMIN6414 15; FIXME: The scalar/vector operations ('fv' tests) should swap operands and16; condition codes accordingly in order to generate a 'vf' instruction.17 18define <vscale x 8 x i1> @fcmp_oeq_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) {19; CHECK-LABEL: fcmp_oeq_vv_nxv8bf16:20; CHECK: # %bb.0:21; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma22; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v1023; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v824; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma25; CHECK-NEXT: vmfeq.vv v0, v16, v1226; CHECK-NEXT: ret27 %vc = fcmp oeq <vscale x 8 x bfloat> %va, %vb28 ret <vscale x 8 x i1> %vc29}30 31define <vscale x 8 x i1> @fcmp_oeq_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {32; CHECK-LABEL: fcmp_oeq_vf_nxv8bf16:33; CHECK: # %bb.0:34; CHECK-NEXT: fcvt.s.bf16 fa5, fa035; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma36; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v837; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma38; CHECK-NEXT: vmfeq.vf v0, v12, fa539; CHECK-NEXT: ret40 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 041 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer42 %vc = fcmp oeq <vscale x 8 x bfloat> %va, %splat43 ret <vscale x 8 x i1> %vc44}45 46define <vscale x 8 x i1> @fcmp_oeq_fv_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {47; CHECK-LABEL: fcmp_oeq_fv_nxv8bf16:48; CHECK: # %bb.0:49; CHECK-NEXT: fcvt.s.bf16 fa5, fa050; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma51; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v852; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma53; CHECK-NEXT: vmfeq.vf v0, v12, fa554; CHECK-NEXT: ret55 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 056 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer57 %vc = fcmp oeq <vscale x 8 x bfloat> %splat, %va58 ret <vscale x 8 x i1> %vc59}60 61define <vscale x 8 x i1> @fcmp_oeq_vv_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) #0 {62; CHECK-LABEL: fcmp_oeq_vv_nxv8bf16_nonans:63; CHECK: # %bb.0:64; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma65; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v1066; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v867; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma68; CHECK-NEXT: vmfeq.vv v0, v16, v1269; CHECK-NEXT: ret70 %vc = fcmp oeq <vscale x 8 x bfloat> %va, %vb71 ret <vscale x 8 x i1> %vc72}73 74define <vscale x 8 x i1> @fcmp_oeq_vf_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, bfloat %b) #0 {75; CHECK-LABEL: fcmp_oeq_vf_nxv8bf16_nonans:76; CHECK: # %bb.0:77; CHECK-NEXT: fcvt.s.bf16 fa5, fa078; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma79; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v880; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma81; CHECK-NEXT: vmfeq.vf v0, v12, fa582; CHECK-NEXT: ret83 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 084 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer85 %vc = fcmp oeq <vscale x 8 x bfloat> %va, %splat86 ret <vscale x 8 x i1> %vc87}88 89define <vscale x 8 x i1> @fcmp_ogt_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) {90; CHECK-LABEL: fcmp_ogt_vv_nxv8bf16:91; CHECK: # %bb.0:92; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma93; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v894; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v1095; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma96; CHECK-NEXT: vmflt.vv v0, v16, v1297; CHECK-NEXT: ret98 %vc = fcmp ogt <vscale x 8 x bfloat> %va, %vb99 ret <vscale x 8 x i1> %vc100}101 102define <vscale x 8 x i1> @fcmp_ogt_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {103; CHECK-LABEL: fcmp_ogt_vf_nxv8bf16:104; CHECK: # %bb.0:105; CHECK-NEXT: fcvt.s.bf16 fa5, fa0106; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma107; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8108; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma109; CHECK-NEXT: vmfgt.vf v0, v12, fa5110; CHECK-NEXT: ret111 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0112 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer113 %vc = fcmp ogt <vscale x 8 x bfloat> %va, %splat114 ret <vscale x 8 x i1> %vc115}116 117define <vscale x 8 x i1> @fcmp_ogt_fv_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {118; CHECK-LABEL: fcmp_ogt_fv_nxv8bf16:119; CHECK: # %bb.0:120; CHECK-NEXT: fcvt.s.bf16 fa5, fa0121; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma122; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8123; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma124; CHECK-NEXT: vmflt.vf v0, v12, fa5125; CHECK-NEXT: ret126 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0127 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer128 %vc = fcmp ogt <vscale x 8 x bfloat> %splat, %va129 ret <vscale x 8 x i1> %vc130}131 132define <vscale x 8 x i1> @fcmp_ogt_vv_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) #0 {133; CHECK-LABEL: fcmp_ogt_vv_nxv8bf16_nonans:134; CHECK: # %bb.0:135; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma136; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8137; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10138; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma139; CHECK-NEXT: vmflt.vv v0, v16, v12140; CHECK-NEXT: ret141 %vc = fcmp ogt <vscale x 8 x bfloat> %va, %vb142 ret <vscale x 8 x i1> %vc143}144 145define <vscale x 8 x i1> @fcmp_ogt_vf_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, bfloat %b) #0 {146; CHECK-LABEL: fcmp_ogt_vf_nxv8bf16_nonans:147; CHECK: # %bb.0:148; CHECK-NEXT: fcvt.s.bf16 fa5, fa0149; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma150; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8151; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma152; CHECK-NEXT: vmfgt.vf v0, v12, fa5153; CHECK-NEXT: ret154 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0155 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer156 %vc = fcmp ogt <vscale x 8 x bfloat> %va, %splat157 ret <vscale x 8 x i1> %vc158}159 160define <vscale x 8 x i1> @fcmp_oge_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) {161; CHECK-LABEL: fcmp_oge_vv_nxv8bf16:162; CHECK: # %bb.0:163; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma164; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8165; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10166; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma167; CHECK-NEXT: vmfle.vv v0, v16, v12168; CHECK-NEXT: ret169 %vc = fcmp oge <vscale x 8 x bfloat> %va, %vb170 ret <vscale x 8 x i1> %vc171}172 173define <vscale x 8 x i1> @fcmp_oge_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {174; CHECK-LABEL: fcmp_oge_vf_nxv8bf16:175; CHECK: # %bb.0:176; CHECK-NEXT: fcvt.s.bf16 fa5, fa0177; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma178; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8179; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma180; CHECK-NEXT: vmfge.vf v0, v12, fa5181; CHECK-NEXT: ret182 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0183 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer184 %vc = fcmp oge <vscale x 8 x bfloat> %va, %splat185 ret <vscale x 8 x i1> %vc186}187 188define <vscale x 8 x i1> @fcmp_oge_fv_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {189; CHECK-LABEL: fcmp_oge_fv_nxv8bf16:190; CHECK: # %bb.0:191; CHECK-NEXT: fcvt.s.bf16 fa5, fa0192; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma193; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8194; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma195; CHECK-NEXT: vmfle.vf v0, v12, fa5196; CHECK-NEXT: ret197 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0198 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer199 %vc = fcmp oge <vscale x 8 x bfloat> %splat, %va200 ret <vscale x 8 x i1> %vc201}202 203define <vscale x 8 x i1> @fcmp_oge_vv_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) #0 {204; CHECK-LABEL: fcmp_oge_vv_nxv8bf16_nonans:205; CHECK: # %bb.0:206; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma207; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8208; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10209; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma210; CHECK-NEXT: vmfle.vv v0, v16, v12211; CHECK-NEXT: ret212 %vc = fcmp oge <vscale x 8 x bfloat> %va, %vb213 ret <vscale x 8 x i1> %vc214}215 216define <vscale x 8 x i1> @fcmp_oge_vf_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, bfloat %b) #0 {217; CHECK-LABEL: fcmp_oge_vf_nxv8bf16_nonans:218; CHECK: # %bb.0:219; CHECK-NEXT: fcvt.s.bf16 fa5, fa0220; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma221; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8222; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma223; CHECK-NEXT: vmfge.vf v0, v12, fa5224; CHECK-NEXT: ret225 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0226 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer227 %vc = fcmp oge <vscale x 8 x bfloat> %va, %splat228 ret <vscale x 8 x i1> %vc229}230 231define <vscale x 8 x i1> @fcmp_olt_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) {232; CHECK-LABEL: fcmp_olt_vv_nxv8bf16:233; CHECK: # %bb.0:234; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma235; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10236; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8237; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma238; CHECK-NEXT: vmflt.vv v0, v16, v12239; CHECK-NEXT: ret240 %vc = fcmp olt <vscale x 8 x bfloat> %va, %vb241 ret <vscale x 8 x i1> %vc242}243 244define <vscale x 8 x i1> @fcmp_olt_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {245; CHECK-LABEL: fcmp_olt_vf_nxv8bf16:246; CHECK: # %bb.0:247; CHECK-NEXT: fcvt.s.bf16 fa5, fa0248; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma249; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8250; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma251; CHECK-NEXT: vmflt.vf v0, v12, fa5252; CHECK-NEXT: ret253 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0254 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer255 %vc = fcmp olt <vscale x 8 x bfloat> %va, %splat256 ret <vscale x 8 x i1> %vc257}258 259define <vscale x 8 x i1> @fcmp_olt_fv_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {260; CHECK-LABEL: fcmp_olt_fv_nxv8bf16:261; CHECK: # %bb.0:262; CHECK-NEXT: fcvt.s.bf16 fa5, fa0263; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma264; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8265; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma266; CHECK-NEXT: vmfgt.vf v0, v12, fa5267; CHECK-NEXT: ret268 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0269 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer270 %vc = fcmp olt <vscale x 8 x bfloat> %splat, %va271 ret <vscale x 8 x i1> %vc272}273 274define <vscale x 8 x i1> @fcmp_olt_vv_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) #0 {275; CHECK-LABEL: fcmp_olt_vv_nxv8bf16_nonans:276; CHECK: # %bb.0:277; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma278; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10279; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8280; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma281; CHECK-NEXT: vmflt.vv v0, v16, v12282; CHECK-NEXT: ret283 %vc = fcmp olt <vscale x 8 x bfloat> %va, %vb284 ret <vscale x 8 x i1> %vc285}286 287define <vscale x 8 x i1> @fcmp_olt_vf_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, bfloat %b) #0 {288; CHECK-LABEL: fcmp_olt_vf_nxv8bf16_nonans:289; CHECK: # %bb.0:290; CHECK-NEXT: fcvt.s.bf16 fa5, fa0291; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma292; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8293; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma294; CHECK-NEXT: vmflt.vf v0, v12, fa5295; CHECK-NEXT: ret296 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0297 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer298 %vc = fcmp olt <vscale x 8 x bfloat> %va, %splat299 ret <vscale x 8 x i1> %vc300}301 302define <vscale x 8 x i1> @fcmp_ole_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) {303; CHECK-LABEL: fcmp_ole_vv_nxv8bf16:304; CHECK: # %bb.0:305; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma306; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10307; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8308; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma309; CHECK-NEXT: vmfle.vv v0, v16, v12310; CHECK-NEXT: ret311 %vc = fcmp ole <vscale x 8 x bfloat> %va, %vb312 ret <vscale x 8 x i1> %vc313}314 315define <vscale x 8 x i1> @fcmp_ole_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {316; CHECK-LABEL: fcmp_ole_vf_nxv8bf16:317; CHECK: # %bb.0:318; CHECK-NEXT: fcvt.s.bf16 fa5, fa0319; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma320; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8321; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma322; CHECK-NEXT: vmfle.vf v0, v12, fa5323; CHECK-NEXT: ret324 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0325 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer326 %vc = fcmp ole <vscale x 8 x bfloat> %va, %splat327 ret <vscale x 8 x i1> %vc328}329 330define <vscale x 8 x i1> @fcmp_ole_fv_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {331; CHECK-LABEL: fcmp_ole_fv_nxv8bf16:332; CHECK: # %bb.0:333; CHECK-NEXT: fcvt.s.bf16 fa5, fa0334; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma335; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8336; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma337; CHECK-NEXT: vmfge.vf v0, v12, fa5338; CHECK-NEXT: ret339 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0340 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer341 %vc = fcmp ole <vscale x 8 x bfloat> %splat, %va342 ret <vscale x 8 x i1> %vc343}344 345define <vscale x 8 x i1> @fcmp_ole_vv_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) #0 {346; CHECK-LABEL: fcmp_ole_vv_nxv8bf16_nonans:347; CHECK: # %bb.0:348; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma349; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10350; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8351; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma352; CHECK-NEXT: vmfle.vv v0, v16, v12353; CHECK-NEXT: ret354 %vc = fcmp ole <vscale x 8 x bfloat> %va, %vb355 ret <vscale x 8 x i1> %vc356}357 358define <vscale x 8 x i1> @fcmp_ole_vf_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, bfloat %b) #0 {359; CHECK-LABEL: fcmp_ole_vf_nxv8bf16_nonans:360; CHECK: # %bb.0:361; CHECK-NEXT: fcvt.s.bf16 fa5, fa0362; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma363; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8364; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma365; CHECK-NEXT: vmfle.vf v0, v12, fa5366; CHECK-NEXT: ret367 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0368 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer369 %vc = fcmp ole <vscale x 8 x bfloat> %va, %splat370 ret <vscale x 8 x i1> %vc371}372 373define <vscale x 8 x i1> @fcmp_one_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) {374; CHECK-LABEL: fcmp_one_vv_nxv8bf16:375; CHECK: # %bb.0:376; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma377; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10378; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8379; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma380; CHECK-NEXT: vmflt.vv v8, v16, v12381; CHECK-NEXT: vmflt.vv v9, v12, v16382; CHECK-NEXT: vmor.mm v0, v9, v8383; CHECK-NEXT: ret384 %vc = fcmp one <vscale x 8 x bfloat> %va, %vb385 ret <vscale x 8 x i1> %vc386}387 388define <vscale x 8 x i1> @fcmp_one_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {389; CHECK-LABEL: fcmp_one_vf_nxv8bf16:390; CHECK: # %bb.0:391; CHECK-NEXT: fcvt.s.bf16 fa5, fa0392; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma393; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8394; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma395; CHECK-NEXT: vmflt.vf v8, v12, fa5396; CHECK-NEXT: vmfgt.vf v9, v12, fa5397; CHECK-NEXT: vmor.mm v0, v9, v8398; CHECK-NEXT: ret399 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0400 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer401 %vc = fcmp one <vscale x 8 x bfloat> %va, %splat402 ret <vscale x 8 x i1> %vc403}404 405define <vscale x 8 x i1> @fcmp_one_fv_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {406; CHECK-LABEL: fcmp_one_fv_nxv8bf16:407; CHECK: # %bb.0:408; CHECK-NEXT: fcvt.s.bf16 fa5, fa0409; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma410; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8411; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma412; CHECK-NEXT: vmfgt.vf v8, v12, fa5413; CHECK-NEXT: vmflt.vf v9, v12, fa5414; CHECK-NEXT: vmor.mm v0, v9, v8415; CHECK-NEXT: ret416 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0417 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer418 %vc = fcmp one <vscale x 8 x bfloat> %splat, %va419 ret <vscale x 8 x i1> %vc420}421 422define <vscale x 8 x i1> @fcmp_one_vv_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) #0 {423; CHECK-LABEL: fcmp_one_vv_nxv8bf16_nonans:424; CHECK: # %bb.0:425; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma426; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10427; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8428; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma429; CHECK-NEXT: vmfne.vv v0, v16, v12430; CHECK-NEXT: ret431 %vc = fcmp one <vscale x 8 x bfloat> %va, %vb432 ret <vscale x 8 x i1> %vc433}434 435define <vscale x 8 x i1> @fcmp_one_vf_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, bfloat %b) #0 {436; CHECK-LABEL: fcmp_one_vf_nxv8bf16_nonans:437; CHECK: # %bb.0:438; CHECK-NEXT: fcvt.s.bf16 fa5, fa0439; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma440; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8441; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma442; CHECK-NEXT: vmfne.vf v0, v12, fa5443; CHECK-NEXT: ret444 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0445 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer446 %vc = fcmp one <vscale x 8 x bfloat> %va, %splat447 ret <vscale x 8 x i1> %vc448}449 450define <vscale x 8 x i1> @fcmp_ord_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) {451; CHECK-LABEL: fcmp_ord_vv_nxv8bf16:452; CHECK: # %bb.0:453; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma454; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10455; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma456; CHECK-NEXT: vmfeq.vv v10, v12, v12457; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma458; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8459; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma460; CHECK-NEXT: vmfeq.vv v8, v12, v12461; CHECK-NEXT: vmand.mm v0, v8, v10462; CHECK-NEXT: ret463 %vc = fcmp ord <vscale x 8 x bfloat> %va, %vb464 ret <vscale x 8 x i1> %vc465}466 467define <vscale x 8 x i1> @fcmp_ord_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {468; CHECK-LABEL: fcmp_ord_vf_nxv8bf16:469; CHECK: # %bb.0:470; CHECK-NEXT: fcvt.s.bf16 fa5, fa0471; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma472; CHECK-NEXT: vfmv.v.f v12, fa5473; CHECK-NEXT: vmfeq.vf v10, v12, fa5474; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma475; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8476; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma477; CHECK-NEXT: vmfeq.vv v8, v12, v12478; CHECK-NEXT: vmand.mm v0, v8, v10479; CHECK-NEXT: ret480 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0481 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer482 %vc = fcmp ord <vscale x 8 x bfloat> %va, %splat483 ret <vscale x 8 x i1> %vc484}485 486define <vscale x 8 x i1> @fcmp_ord_fv_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {487; CHECK-LABEL: fcmp_ord_fv_nxv8bf16:488; CHECK: # %bb.0:489; CHECK-NEXT: fcvt.s.bf16 fa5, fa0490; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma491; CHECK-NEXT: vfmv.v.f v12, fa5492; CHECK-NEXT: vmfeq.vf v10, v12, fa5493; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma494; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8495; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma496; CHECK-NEXT: vmfeq.vv v8, v12, v12497; CHECK-NEXT: vmand.mm v0, v10, v8498; CHECK-NEXT: ret499 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0500 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer501 %vc = fcmp ord <vscale x 8 x bfloat> %splat, %va502 ret <vscale x 8 x i1> %vc503}504 505define <vscale x 8 x i1> @fcmp_ord_vv_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) #0 {506; CHECK-LABEL: fcmp_ord_vv_nxv8bf16_nonans:507; CHECK: # %bb.0:508; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma509; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10510; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma511; CHECK-NEXT: vmfeq.vv v10, v12, v12512; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma513; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8514; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma515; CHECK-NEXT: vmfeq.vv v8, v12, v12516; CHECK-NEXT: vmand.mm v0, v8, v10517; CHECK-NEXT: ret518 %vc = fcmp ord <vscale x 8 x bfloat> %va, %vb519 ret <vscale x 8 x i1> %vc520}521 522define <vscale x 8 x i1> @fcmp_ord_vf_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, bfloat %b) #0 {523; CHECK-LABEL: fcmp_ord_vf_nxv8bf16_nonans:524; CHECK: # %bb.0:525; CHECK-NEXT: fcvt.s.bf16 fa5, fa0526; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma527; CHECK-NEXT: vfmv.v.f v12, fa5528; CHECK-NEXT: vmfeq.vf v10, v12, fa5529; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma530; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8531; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma532; CHECK-NEXT: vmfeq.vv v8, v12, v12533; CHECK-NEXT: vmand.mm v0, v8, v10534; CHECK-NEXT: ret535 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0536 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer537 %vc = fcmp ord <vscale x 8 x bfloat> %va, %splat538 ret <vscale x 8 x i1> %vc539}540 541define <vscale x 8 x i1> @fcmp_ueq_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) {542; CHECK-LABEL: fcmp_ueq_vv_nxv8bf16:543; CHECK: # %bb.0:544; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma545; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10546; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8547; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma548; CHECK-NEXT: vmflt.vv v8, v16, v12549; CHECK-NEXT: vmflt.vv v9, v12, v16550; CHECK-NEXT: vmnor.mm v0, v9, v8551; CHECK-NEXT: ret552 %vc = fcmp ueq <vscale x 8 x bfloat> %va, %vb553 ret <vscale x 8 x i1> %vc554}555 556define <vscale x 8 x i1> @fcmp_ueq_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {557; CHECK-LABEL: fcmp_ueq_vf_nxv8bf16:558; CHECK: # %bb.0:559; CHECK-NEXT: fcvt.s.bf16 fa5, fa0560; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma561; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8562; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma563; CHECK-NEXT: vmflt.vf v8, v12, fa5564; CHECK-NEXT: vmfgt.vf v9, v12, fa5565; CHECK-NEXT: vmnor.mm v0, v9, v8566; CHECK-NEXT: ret567 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0568 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer569 %vc = fcmp ueq <vscale x 8 x bfloat> %va, %splat570 ret <vscale x 8 x i1> %vc571}572 573define <vscale x 8 x i1> @fcmp_ueq_fv_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {574; CHECK-LABEL: fcmp_ueq_fv_nxv8bf16:575; CHECK: # %bb.0:576; CHECK-NEXT: fcvt.s.bf16 fa5, fa0577; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma578; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8579; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma580; CHECK-NEXT: vmfgt.vf v8, v12, fa5581; CHECK-NEXT: vmflt.vf v9, v12, fa5582; CHECK-NEXT: vmnor.mm v0, v9, v8583; CHECK-NEXT: ret584 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0585 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer586 %vc = fcmp ueq <vscale x 8 x bfloat> %splat, %va587 ret <vscale x 8 x i1> %vc588}589 590define <vscale x 8 x i1> @fcmp_ueq_vv_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) #0 {591; CHECK-LABEL: fcmp_ueq_vv_nxv8bf16_nonans:592; CHECK: # %bb.0:593; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma594; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10595; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8596; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma597; CHECK-NEXT: vmfeq.vv v0, v16, v12598; CHECK-NEXT: ret599 %vc = fcmp ueq <vscale x 8 x bfloat> %va, %vb600 ret <vscale x 8 x i1> %vc601}602 603define <vscale x 8 x i1> @fcmp_ueq_vf_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, bfloat %b) #0 {604; CHECK-LABEL: fcmp_ueq_vf_nxv8bf16_nonans:605; CHECK: # %bb.0:606; CHECK-NEXT: fcvt.s.bf16 fa5, fa0607; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma608; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8609; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma610; CHECK-NEXT: vmfeq.vf v0, v12, fa5611; CHECK-NEXT: ret612 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0613 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer614 %vc = fcmp ueq <vscale x 8 x bfloat> %va, %splat615 ret <vscale x 8 x i1> %vc616}617 618define <vscale x 8 x i1> @fcmp_ugt_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) {619; CHECK-LABEL: fcmp_ugt_vv_nxv8bf16:620; CHECK: # %bb.0:621; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma622; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10623; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8624; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma625; CHECK-NEXT: vmfle.vv v8, v16, v12626; CHECK-NEXT: vmnot.m v0, v8627; CHECK-NEXT: ret628 %vc = fcmp ugt <vscale x 8 x bfloat> %va, %vb629 ret <vscale x 8 x i1> %vc630}631 632define <vscale x 8 x i1> @fcmp_ugt_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {633; CHECK-LABEL: fcmp_ugt_vf_nxv8bf16:634; CHECK: # %bb.0:635; CHECK-NEXT: fcvt.s.bf16 fa5, fa0636; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma637; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8638; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma639; CHECK-NEXT: vmfle.vf v8, v12, fa5640; CHECK-NEXT: vmnot.m v0, v8641; CHECK-NEXT: ret642 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0643 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer644 %vc = fcmp ugt <vscale x 8 x bfloat> %va, %splat645 ret <vscale x 8 x i1> %vc646}647 648define <vscale x 8 x i1> @fcmp_ugt_fv_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {649; CHECK-LABEL: fcmp_ugt_fv_nxv8bf16:650; CHECK: # %bb.0:651; CHECK-NEXT: fcvt.s.bf16 fa5, fa0652; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma653; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8654; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma655; CHECK-NEXT: vmfge.vf v8, v12, fa5656; CHECK-NEXT: vmnot.m v0, v8657; CHECK-NEXT: ret658 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0659 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer660 %vc = fcmp ugt <vscale x 8 x bfloat> %splat, %va661 ret <vscale x 8 x i1> %vc662}663 664define <vscale x 8 x i1> @fcmp_ugt_vv_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) #0 {665; CHECK-LABEL: fcmp_ugt_vv_nxv8bf16_nonans:666; CHECK: # %bb.0:667; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma668; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8669; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10670; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma671; CHECK-NEXT: vmflt.vv v0, v16, v12672; CHECK-NEXT: ret673 %vc = fcmp ugt <vscale x 8 x bfloat> %va, %vb674 ret <vscale x 8 x i1> %vc675}676 677define <vscale x 8 x i1> @fcmp_ugt_vf_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, bfloat %b) #0 {678; CHECK-LABEL: fcmp_ugt_vf_nxv8bf16_nonans:679; CHECK: # %bb.0:680; CHECK-NEXT: fcvt.s.bf16 fa5, fa0681; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma682; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8683; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma684; CHECK-NEXT: vmfgt.vf v0, v12, fa5685; CHECK-NEXT: ret686 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0687 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer688 %vc = fcmp ugt <vscale x 8 x bfloat> %va, %splat689 ret <vscale x 8 x i1> %vc690}691 692define <vscale x 8 x i1> @fcmp_uge_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) {693; CHECK-LABEL: fcmp_uge_vv_nxv8bf16:694; CHECK: # %bb.0:695; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma696; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10697; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8698; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma699; CHECK-NEXT: vmflt.vv v8, v16, v12700; CHECK-NEXT: vmnot.m v0, v8701; CHECK-NEXT: ret702 %vc = fcmp uge <vscale x 8 x bfloat> %va, %vb703 ret <vscale x 8 x i1> %vc704}705 706define <vscale x 8 x i1> @fcmp_uge_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {707; CHECK-LABEL: fcmp_uge_vf_nxv8bf16:708; CHECK: # %bb.0:709; CHECK-NEXT: fcvt.s.bf16 fa5, fa0710; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma711; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8712; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma713; CHECK-NEXT: vmflt.vf v8, v12, fa5714; CHECK-NEXT: vmnot.m v0, v8715; CHECK-NEXT: ret716 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0717 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer718 %vc = fcmp uge <vscale x 8 x bfloat> %va, %splat719 ret <vscale x 8 x i1> %vc720}721 722define <vscale x 8 x i1> @fcmp_uge_fv_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {723; CHECK-LABEL: fcmp_uge_fv_nxv8bf16:724; CHECK: # %bb.0:725; CHECK-NEXT: fcvt.s.bf16 fa5, fa0726; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma727; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8728; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma729; CHECK-NEXT: vmfgt.vf v8, v12, fa5730; CHECK-NEXT: vmnot.m v0, v8731; CHECK-NEXT: ret732 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0733 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer734 %vc = fcmp uge <vscale x 8 x bfloat> %splat, %va735 ret <vscale x 8 x i1> %vc736}737 738define <vscale x 8 x i1> @fcmp_uge_vv_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) #0 {739; CHECK-LABEL: fcmp_uge_vv_nxv8bf16_nonans:740; CHECK: # %bb.0:741; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma742; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8743; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10744; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma745; CHECK-NEXT: vmfle.vv v0, v16, v12746; CHECK-NEXT: ret747 %vc = fcmp uge <vscale x 8 x bfloat> %va, %vb748 ret <vscale x 8 x i1> %vc749}750 751define <vscale x 8 x i1> @fcmp_uge_vf_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, bfloat %b) #0 {752; CHECK-LABEL: fcmp_uge_vf_nxv8bf16_nonans:753; CHECK: # %bb.0:754; CHECK-NEXT: fcvt.s.bf16 fa5, fa0755; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma756; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8757; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma758; CHECK-NEXT: vmfge.vf v0, v12, fa5759; CHECK-NEXT: ret760 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0761 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer762 %vc = fcmp uge <vscale x 8 x bfloat> %va, %splat763 ret <vscale x 8 x i1> %vc764}765 766define <vscale x 8 x i1> @fcmp_ult_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) {767; CHECK-LABEL: fcmp_ult_vv_nxv8bf16:768; CHECK: # %bb.0:769; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma770; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8771; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10772; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma773; CHECK-NEXT: vmfle.vv v8, v16, v12774; CHECK-NEXT: vmnot.m v0, v8775; CHECK-NEXT: ret776 %vc = fcmp ult <vscale x 8 x bfloat> %va, %vb777 ret <vscale x 8 x i1> %vc778}779 780define <vscale x 8 x i1> @fcmp_ult_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {781; CHECK-LABEL: fcmp_ult_vf_nxv8bf16:782; CHECK: # %bb.0:783; CHECK-NEXT: fcvt.s.bf16 fa5, fa0784; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma785; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8786; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma787; CHECK-NEXT: vmfge.vf v8, v12, fa5788; CHECK-NEXT: vmnot.m v0, v8789; CHECK-NEXT: ret790 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0791 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer792 %vc = fcmp ult <vscale x 8 x bfloat> %va, %splat793 ret <vscale x 8 x i1> %vc794}795 796define <vscale x 8 x i1> @fcmp_ult_fv_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {797; CHECK-LABEL: fcmp_ult_fv_nxv8bf16:798; CHECK: # %bb.0:799; CHECK-NEXT: fcvt.s.bf16 fa5, fa0800; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma801; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8802; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma803; CHECK-NEXT: vmfle.vf v8, v12, fa5804; CHECK-NEXT: vmnot.m v0, v8805; CHECK-NEXT: ret806 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0807 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer808 %vc = fcmp ult <vscale x 8 x bfloat> %splat, %va809 ret <vscale x 8 x i1> %vc810}811 812define <vscale x 8 x i1> @fcmp_ult_vv_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) #0 {813; CHECK-LABEL: fcmp_ult_vv_nxv8bf16_nonans:814; CHECK: # %bb.0:815; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma816; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10817; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8818; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma819; CHECK-NEXT: vmflt.vv v0, v16, v12820; CHECK-NEXT: ret821 %vc = fcmp ult <vscale x 8 x bfloat> %va, %vb822 ret <vscale x 8 x i1> %vc823}824 825define <vscale x 8 x i1> @fcmp_ult_vf_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, bfloat %b) #0 {826; CHECK-LABEL: fcmp_ult_vf_nxv8bf16_nonans:827; CHECK: # %bb.0:828; CHECK-NEXT: fcvt.s.bf16 fa5, fa0829; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma830; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8831; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma832; CHECK-NEXT: vmflt.vf v0, v12, fa5833; CHECK-NEXT: ret834 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0835 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer836 %vc = fcmp ult <vscale x 8 x bfloat> %va, %splat837 ret <vscale x 8 x i1> %vc838}839 840define <vscale x 8 x i1> @fcmp_ule_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) {841; CHECK-LABEL: fcmp_ule_vv_nxv8bf16:842; CHECK: # %bb.0:843; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma844; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8845; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10846; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma847; CHECK-NEXT: vmflt.vv v8, v16, v12848; CHECK-NEXT: vmnot.m v0, v8849; CHECK-NEXT: ret850 %vc = fcmp ule <vscale x 8 x bfloat> %va, %vb851 ret <vscale x 8 x i1> %vc852}853 854define <vscale x 8 x i1> @fcmp_ule_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {855; CHECK-LABEL: fcmp_ule_vf_nxv8bf16:856; CHECK: # %bb.0:857; CHECK-NEXT: fcvt.s.bf16 fa5, fa0858; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma859; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8860; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma861; CHECK-NEXT: vmfgt.vf v8, v12, fa5862; CHECK-NEXT: vmnot.m v0, v8863; CHECK-NEXT: ret864 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0865 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer866 %vc = fcmp ule <vscale x 8 x bfloat> %va, %splat867 ret <vscale x 8 x i1> %vc868}869 870define <vscale x 8 x i1> @fcmp_ule_fv_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {871; CHECK-LABEL: fcmp_ule_fv_nxv8bf16:872; CHECK: # %bb.0:873; CHECK-NEXT: fcvt.s.bf16 fa5, fa0874; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma875; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8876; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma877; CHECK-NEXT: vmflt.vf v8, v12, fa5878; CHECK-NEXT: vmnot.m v0, v8879; CHECK-NEXT: ret880 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0881 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer882 %vc = fcmp ule <vscale x 8 x bfloat> %splat, %va883 ret <vscale x 8 x i1> %vc884}885 886define <vscale x 8 x i1> @fcmp_ule_vv_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) #0 {887; CHECK-LABEL: fcmp_ule_vv_nxv8bf16_nonans:888; CHECK: # %bb.0:889; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma890; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10891; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8892; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma893; CHECK-NEXT: vmfle.vv v0, v16, v12894; CHECK-NEXT: ret895 %vc = fcmp ule <vscale x 8 x bfloat> %va, %vb896 ret <vscale x 8 x i1> %vc897}898 899define <vscale x 8 x i1> @fcmp_ule_vf_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, bfloat %b) #0 {900; CHECK-LABEL: fcmp_ule_vf_nxv8bf16_nonans:901; CHECK: # %bb.0:902; CHECK-NEXT: fcvt.s.bf16 fa5, fa0903; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma904; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8905; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma906; CHECK-NEXT: vmfle.vf v0, v12, fa5907; CHECK-NEXT: ret908 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0909 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer910 %vc = fcmp ule <vscale x 8 x bfloat> %va, %splat911 ret <vscale x 8 x i1> %vc912}913 914define <vscale x 8 x i1> @fcmp_une_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) {915; CHECK-LABEL: fcmp_une_vv_nxv8bf16:916; CHECK: # %bb.0:917; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma918; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10919; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8920; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma921; CHECK-NEXT: vmfne.vv v0, v16, v12922; CHECK-NEXT: ret923 %vc = fcmp une <vscale x 8 x bfloat> %va, %vb924 ret <vscale x 8 x i1> %vc925}926 927define <vscale x 8 x i1> @fcmp_une_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {928; CHECK-LABEL: fcmp_une_vf_nxv8bf16:929; CHECK: # %bb.0:930; CHECK-NEXT: fcvt.s.bf16 fa5, fa0931; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma932; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8933; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma934; CHECK-NEXT: vmfne.vf v0, v12, fa5935; CHECK-NEXT: ret936 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0937 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer938 %vc = fcmp une <vscale x 8 x bfloat> %va, %splat939 ret <vscale x 8 x i1> %vc940}941 942define <vscale x 8 x i1> @fcmp_une_fv_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {943; CHECK-LABEL: fcmp_une_fv_nxv8bf16:944; CHECK: # %bb.0:945; CHECK-NEXT: fcvt.s.bf16 fa5, fa0946; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma947; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8948; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma949; CHECK-NEXT: vmfne.vf v0, v12, fa5950; CHECK-NEXT: ret951 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0952 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer953 %vc = fcmp une <vscale x 8 x bfloat> %splat, %va954 ret <vscale x 8 x i1> %vc955}956 957define <vscale x 8 x i1> @fcmp_une_vv_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) #0 {958; CHECK-LABEL: fcmp_une_vv_nxv8bf16_nonans:959; CHECK: # %bb.0:960; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma961; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10962; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8963; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma964; CHECK-NEXT: vmfne.vv v0, v16, v12965; CHECK-NEXT: ret966 %vc = fcmp une <vscale x 8 x bfloat> %va, %vb967 ret <vscale x 8 x i1> %vc968}969 970define <vscale x 8 x i1> @fcmp_une_vf_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, bfloat %b) #0 {971; CHECK-LABEL: fcmp_une_vf_nxv8bf16_nonans:972; CHECK: # %bb.0:973; CHECK-NEXT: fcvt.s.bf16 fa5, fa0974; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma975; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8976; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma977; CHECK-NEXT: vmfne.vf v0, v12, fa5978; CHECK-NEXT: ret979 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0980 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer981 %vc = fcmp une <vscale x 8 x bfloat> %va, %splat982 ret <vscale x 8 x i1> %vc983}984 985define <vscale x 8 x i1> @fcmp_uno_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) {986; CHECK-LABEL: fcmp_uno_vv_nxv8bf16:987; CHECK: # %bb.0:988; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma989; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10990; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma991; CHECK-NEXT: vmfne.vv v10, v12, v12992; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma993; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8994; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma995; CHECK-NEXT: vmfne.vv v8, v12, v12996; CHECK-NEXT: vmor.mm v0, v8, v10997; CHECK-NEXT: ret998 %vc = fcmp uno <vscale x 8 x bfloat> %va, %vb999 ret <vscale x 8 x i1> %vc1000}1001 1002define <vscale x 8 x i1> @fcmp_uno_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {1003; CHECK-LABEL: fcmp_uno_vf_nxv8bf16:1004; CHECK: # %bb.0:1005; CHECK-NEXT: fcvt.s.bf16 fa5, fa01006; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma1007; CHECK-NEXT: vfmv.v.f v12, fa51008; CHECK-NEXT: vmfne.vf v10, v12, fa51009; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma1010; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v81011; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma1012; CHECK-NEXT: vmfne.vv v8, v12, v121013; CHECK-NEXT: vmor.mm v0, v8, v101014; CHECK-NEXT: ret1015 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 01016 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer1017 %vc = fcmp uno <vscale x 8 x bfloat> %va, %splat1018 ret <vscale x 8 x i1> %vc1019}1020 1021define <vscale x 8 x i1> @fcmp_uno_fv_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {1022; CHECK-LABEL: fcmp_uno_fv_nxv8bf16:1023; CHECK: # %bb.0:1024; CHECK-NEXT: fcvt.s.bf16 fa5, fa01025; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma1026; CHECK-NEXT: vfmv.v.f v12, fa51027; CHECK-NEXT: vmfne.vf v10, v12, fa51028; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma1029; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v81030; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma1031; CHECK-NEXT: vmfne.vv v8, v12, v121032; CHECK-NEXT: vmor.mm v0, v10, v81033; CHECK-NEXT: ret1034 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 01035 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer1036 %vc = fcmp uno <vscale x 8 x bfloat> %splat, %va1037 ret <vscale x 8 x i1> %vc1038}1039 1040define <vscale x 8 x i1> @fcmp_uno_vv_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) #0 {1041; CHECK-LABEL: fcmp_uno_vv_nxv8bf16_nonans:1042; CHECK: # %bb.0:1043; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1044; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v101045; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma1046; CHECK-NEXT: vmfne.vv v10, v12, v121047; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma1048; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v81049; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma1050; CHECK-NEXT: vmfne.vv v8, v12, v121051; CHECK-NEXT: vmor.mm v0, v8, v101052; CHECK-NEXT: ret1053 %vc = fcmp uno <vscale x 8 x bfloat> %va, %vb1054 ret <vscale x 8 x i1> %vc1055}1056 1057define <vscale x 8 x i1> @fcmp_uno_vf_nxv8bf16_nonans(<vscale x 8 x bfloat> %va, bfloat %b) #0 {1058; CHECK-LABEL: fcmp_uno_vf_nxv8bf16_nonans:1059; CHECK: # %bb.0:1060; CHECK-NEXT: fcvt.s.bf16 fa5, fa01061; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma1062; CHECK-NEXT: vfmv.v.f v12, fa51063; CHECK-NEXT: vmfne.vf v10, v12, fa51064; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma1065; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v81066; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma1067; CHECK-NEXT: vmfne.vv v8, v12, v121068; CHECK-NEXT: vmor.mm v0, v8, v101069; CHECK-NEXT: ret1070 %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 01071 %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer1072 %vc = fcmp uno <vscale x 8 x bfloat> %va, %splat1073 ret <vscale x 8 x i1> %vc1074}1075 1076define <vscale x 8 x i1> @fcmp_oeq_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) {1077; ZVFH-LABEL: fcmp_oeq_vv_nxv8f16:1078; ZVFH: # %bb.0:1079; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1080; ZVFH-NEXT: vmfeq.vv v0, v8, v101081; ZVFH-NEXT: ret1082;1083; ZVFHMIN-LABEL: fcmp_oeq_vv_nxv8f16:1084; ZVFHMIN: # %bb.0:1085; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1086; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v101087; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v81088; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1089; ZVFHMIN-NEXT: vmfeq.vv v0, v16, v121090; ZVFHMIN-NEXT: ret1091 %vc = fcmp oeq <vscale x 8 x half> %va, %vb1092 ret <vscale x 8 x i1> %vc1093}1094 1095define <vscale x 8 x i1> @fcmp_oeq_vf_nxv8f16(<vscale x 8 x half> %va, half %b) {1096; ZVFH-LABEL: fcmp_oeq_vf_nxv8f16:1097; ZVFH: # %bb.0:1098; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1099; ZVFH-NEXT: vmfeq.vf v0, v8, fa01100; ZVFH-NEXT: ret1101;1102; ZVFHMIN-LABEL: fcmp_oeq_vf_nxv8f16:1103; ZVFHMIN: # %bb.0:1104; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01105; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1106; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81107; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1108; ZVFHMIN-NEXT: vmfeq.vf v0, v12, fa51109; ZVFHMIN-NEXT: ret1110 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01111 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1112 %vc = fcmp oeq <vscale x 8 x half> %va, %splat1113 ret <vscale x 8 x i1> %vc1114}1115 1116define <vscale x 8 x i1> @fcmp_oeq_fv_nxv8f16(<vscale x 8 x half> %va, half %b) {1117; ZVFH-LABEL: fcmp_oeq_fv_nxv8f16:1118; ZVFH: # %bb.0:1119; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1120; ZVFH-NEXT: vmfeq.vf v0, v8, fa01121; ZVFH-NEXT: ret1122;1123; ZVFHMIN-LABEL: fcmp_oeq_fv_nxv8f16:1124; ZVFHMIN: # %bb.0:1125; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01126; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1127; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81128; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1129; ZVFHMIN-NEXT: vmfeq.vf v0, v12, fa51130; ZVFHMIN-NEXT: ret1131 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01132 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1133 %vc = fcmp oeq <vscale x 8 x half> %splat, %va1134 ret <vscale x 8 x i1> %vc1135}1136 1137define <vscale x 8 x i1> @fcmp_oeq_vv_nxv8f16_nonans(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) #0 {1138; ZVFH-LABEL: fcmp_oeq_vv_nxv8f16_nonans:1139; ZVFH: # %bb.0:1140; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1141; ZVFH-NEXT: vmfeq.vv v0, v8, v101142; ZVFH-NEXT: ret1143;1144; ZVFHMIN-LABEL: fcmp_oeq_vv_nxv8f16_nonans:1145; ZVFHMIN: # %bb.0:1146; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1147; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v101148; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v81149; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1150; ZVFHMIN-NEXT: vmfeq.vv v0, v16, v121151; ZVFHMIN-NEXT: ret1152 %vc = fcmp oeq <vscale x 8 x half> %va, %vb1153 ret <vscale x 8 x i1> %vc1154}1155 1156define <vscale x 8 x i1> @fcmp_oeq_vf_nxv8f16_nonans(<vscale x 8 x half> %va, half %b) #0 {1157; ZVFH-LABEL: fcmp_oeq_vf_nxv8f16_nonans:1158; ZVFH: # %bb.0:1159; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1160; ZVFH-NEXT: vmfeq.vf v0, v8, fa01161; ZVFH-NEXT: ret1162;1163; ZVFHMIN-LABEL: fcmp_oeq_vf_nxv8f16_nonans:1164; ZVFHMIN: # %bb.0:1165; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01166; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1167; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81168; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1169; ZVFHMIN-NEXT: vmfeq.vf v0, v12, fa51170; ZVFHMIN-NEXT: ret1171 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01172 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1173 %vc = fcmp oeq <vscale x 8 x half> %va, %splat1174 ret <vscale x 8 x i1> %vc1175}1176 1177define <vscale x 8 x i1> @fcmp_ogt_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) {1178; ZVFH-LABEL: fcmp_ogt_vv_nxv8f16:1179; ZVFH: # %bb.0:1180; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1181; ZVFH-NEXT: vmflt.vv v0, v10, v81182; ZVFH-NEXT: ret1183;1184; ZVFHMIN-LABEL: fcmp_ogt_vv_nxv8f16:1185; ZVFHMIN: # %bb.0:1186; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1187; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81188; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v101189; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1190; ZVFHMIN-NEXT: vmflt.vv v0, v16, v121191; ZVFHMIN-NEXT: ret1192 %vc = fcmp ogt <vscale x 8 x half> %va, %vb1193 ret <vscale x 8 x i1> %vc1194}1195 1196define <vscale x 8 x i1> @fcmp_ogt_vf_nxv8f16(<vscale x 8 x half> %va, half %b) {1197; ZVFH-LABEL: fcmp_ogt_vf_nxv8f16:1198; ZVFH: # %bb.0:1199; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1200; ZVFH-NEXT: vmfgt.vf v0, v8, fa01201; ZVFH-NEXT: ret1202;1203; ZVFHMIN-LABEL: fcmp_ogt_vf_nxv8f16:1204; ZVFHMIN: # %bb.0:1205; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01206; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1207; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81208; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1209; ZVFHMIN-NEXT: vmfgt.vf v0, v12, fa51210; ZVFHMIN-NEXT: ret1211 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01212 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1213 %vc = fcmp ogt <vscale x 8 x half> %va, %splat1214 ret <vscale x 8 x i1> %vc1215}1216 1217define <vscale x 8 x i1> @fcmp_ogt_fv_nxv8f16(<vscale x 8 x half> %va, half %b) {1218; ZVFH-LABEL: fcmp_ogt_fv_nxv8f16:1219; ZVFH: # %bb.0:1220; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1221; ZVFH-NEXT: vmflt.vf v0, v8, fa01222; ZVFH-NEXT: ret1223;1224; ZVFHMIN-LABEL: fcmp_ogt_fv_nxv8f16:1225; ZVFHMIN: # %bb.0:1226; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01227; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1228; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81229; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1230; ZVFHMIN-NEXT: vmflt.vf v0, v12, fa51231; ZVFHMIN-NEXT: ret1232 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01233 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1234 %vc = fcmp ogt <vscale x 8 x half> %splat, %va1235 ret <vscale x 8 x i1> %vc1236}1237 1238define <vscale x 8 x i1> @fcmp_ogt_vv_nxv8f16_nonans(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) #0 {1239; ZVFH-LABEL: fcmp_ogt_vv_nxv8f16_nonans:1240; ZVFH: # %bb.0:1241; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1242; ZVFH-NEXT: vmflt.vv v0, v10, v81243; ZVFH-NEXT: ret1244;1245; ZVFHMIN-LABEL: fcmp_ogt_vv_nxv8f16_nonans:1246; ZVFHMIN: # %bb.0:1247; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1248; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81249; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v101250; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1251; ZVFHMIN-NEXT: vmflt.vv v0, v16, v121252; ZVFHMIN-NEXT: ret1253 %vc = fcmp ogt <vscale x 8 x half> %va, %vb1254 ret <vscale x 8 x i1> %vc1255}1256 1257define <vscale x 8 x i1> @fcmp_ogt_vf_nxv8f16_nonans(<vscale x 8 x half> %va, half %b) #0 {1258; ZVFH-LABEL: fcmp_ogt_vf_nxv8f16_nonans:1259; ZVFH: # %bb.0:1260; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1261; ZVFH-NEXT: vmfgt.vf v0, v8, fa01262; ZVFH-NEXT: ret1263;1264; ZVFHMIN-LABEL: fcmp_ogt_vf_nxv8f16_nonans:1265; ZVFHMIN: # %bb.0:1266; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01267; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1268; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81269; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1270; ZVFHMIN-NEXT: vmfgt.vf v0, v12, fa51271; ZVFHMIN-NEXT: ret1272 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01273 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1274 %vc = fcmp ogt <vscale x 8 x half> %va, %splat1275 ret <vscale x 8 x i1> %vc1276}1277 1278define <vscale x 8 x i1> @fcmp_oge_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) {1279; ZVFH-LABEL: fcmp_oge_vv_nxv8f16:1280; ZVFH: # %bb.0:1281; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1282; ZVFH-NEXT: vmfle.vv v0, v10, v81283; ZVFH-NEXT: ret1284;1285; ZVFHMIN-LABEL: fcmp_oge_vv_nxv8f16:1286; ZVFHMIN: # %bb.0:1287; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1288; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81289; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v101290; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1291; ZVFHMIN-NEXT: vmfle.vv v0, v16, v121292; ZVFHMIN-NEXT: ret1293 %vc = fcmp oge <vscale x 8 x half> %va, %vb1294 ret <vscale x 8 x i1> %vc1295}1296 1297define <vscale x 8 x i1> @fcmp_oge_vf_nxv8f16(<vscale x 8 x half> %va, half %b) {1298; ZVFH-LABEL: fcmp_oge_vf_nxv8f16:1299; ZVFH: # %bb.0:1300; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1301; ZVFH-NEXT: vmfge.vf v0, v8, fa01302; ZVFH-NEXT: ret1303;1304; ZVFHMIN-LABEL: fcmp_oge_vf_nxv8f16:1305; ZVFHMIN: # %bb.0:1306; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01307; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1308; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81309; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1310; ZVFHMIN-NEXT: vmfge.vf v0, v12, fa51311; ZVFHMIN-NEXT: ret1312 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01313 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1314 %vc = fcmp oge <vscale x 8 x half> %va, %splat1315 ret <vscale x 8 x i1> %vc1316}1317 1318define <vscale x 8 x i1> @fcmp_oge_fv_nxv8f16(<vscale x 8 x half> %va, half %b) {1319; ZVFH-LABEL: fcmp_oge_fv_nxv8f16:1320; ZVFH: # %bb.0:1321; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1322; ZVFH-NEXT: vmfle.vf v0, v8, fa01323; ZVFH-NEXT: ret1324;1325; ZVFHMIN-LABEL: fcmp_oge_fv_nxv8f16:1326; ZVFHMIN: # %bb.0:1327; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01328; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1329; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81330; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1331; ZVFHMIN-NEXT: vmfle.vf v0, v12, fa51332; ZVFHMIN-NEXT: ret1333 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01334 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1335 %vc = fcmp oge <vscale x 8 x half> %splat, %va1336 ret <vscale x 8 x i1> %vc1337}1338 1339define <vscale x 8 x i1> @fcmp_oge_vv_nxv8f16_nonans(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) #0 {1340; ZVFH-LABEL: fcmp_oge_vv_nxv8f16_nonans:1341; ZVFH: # %bb.0:1342; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1343; ZVFH-NEXT: vmfle.vv v0, v10, v81344; ZVFH-NEXT: ret1345;1346; ZVFHMIN-LABEL: fcmp_oge_vv_nxv8f16_nonans:1347; ZVFHMIN: # %bb.0:1348; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1349; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81350; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v101351; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1352; ZVFHMIN-NEXT: vmfle.vv v0, v16, v121353; ZVFHMIN-NEXT: ret1354 %vc = fcmp oge <vscale x 8 x half> %va, %vb1355 ret <vscale x 8 x i1> %vc1356}1357 1358define <vscale x 8 x i1> @fcmp_oge_vf_nxv8f16_nonans(<vscale x 8 x half> %va, half %b) #0 {1359; ZVFH-LABEL: fcmp_oge_vf_nxv8f16_nonans:1360; ZVFH: # %bb.0:1361; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1362; ZVFH-NEXT: vmfge.vf v0, v8, fa01363; ZVFH-NEXT: ret1364;1365; ZVFHMIN-LABEL: fcmp_oge_vf_nxv8f16_nonans:1366; ZVFHMIN: # %bb.0:1367; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01368; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1369; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81370; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1371; ZVFHMIN-NEXT: vmfge.vf v0, v12, fa51372; ZVFHMIN-NEXT: ret1373 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01374 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1375 %vc = fcmp oge <vscale x 8 x half> %va, %splat1376 ret <vscale x 8 x i1> %vc1377}1378 1379define <vscale x 8 x i1> @fcmp_olt_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) {1380; ZVFH-LABEL: fcmp_olt_vv_nxv8f16:1381; ZVFH: # %bb.0:1382; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1383; ZVFH-NEXT: vmflt.vv v0, v8, v101384; ZVFH-NEXT: ret1385;1386; ZVFHMIN-LABEL: fcmp_olt_vv_nxv8f16:1387; ZVFHMIN: # %bb.0:1388; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1389; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v101390; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v81391; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1392; ZVFHMIN-NEXT: vmflt.vv v0, v16, v121393; ZVFHMIN-NEXT: ret1394 %vc = fcmp olt <vscale x 8 x half> %va, %vb1395 ret <vscale x 8 x i1> %vc1396}1397 1398define <vscale x 8 x i1> @fcmp_olt_vf_nxv8f16(<vscale x 8 x half> %va, half %b) {1399; ZVFH-LABEL: fcmp_olt_vf_nxv8f16:1400; ZVFH: # %bb.0:1401; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1402; ZVFH-NEXT: vmflt.vf v0, v8, fa01403; ZVFH-NEXT: ret1404;1405; ZVFHMIN-LABEL: fcmp_olt_vf_nxv8f16:1406; ZVFHMIN: # %bb.0:1407; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01408; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1409; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81410; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1411; ZVFHMIN-NEXT: vmflt.vf v0, v12, fa51412; ZVFHMIN-NEXT: ret1413 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01414 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1415 %vc = fcmp olt <vscale x 8 x half> %va, %splat1416 ret <vscale x 8 x i1> %vc1417}1418 1419define <vscale x 8 x i1> @fcmp_olt_fv_nxv8f16(<vscale x 8 x half> %va, half %b) {1420; ZVFH-LABEL: fcmp_olt_fv_nxv8f16:1421; ZVFH: # %bb.0:1422; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1423; ZVFH-NEXT: vmfgt.vf v0, v8, fa01424; ZVFH-NEXT: ret1425;1426; ZVFHMIN-LABEL: fcmp_olt_fv_nxv8f16:1427; ZVFHMIN: # %bb.0:1428; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01429; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1430; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81431; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1432; ZVFHMIN-NEXT: vmfgt.vf v0, v12, fa51433; ZVFHMIN-NEXT: ret1434 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01435 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1436 %vc = fcmp olt <vscale x 8 x half> %splat, %va1437 ret <vscale x 8 x i1> %vc1438}1439 1440define <vscale x 8 x i1> @fcmp_olt_vv_nxv8f16_nonans(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) #0 {1441; ZVFH-LABEL: fcmp_olt_vv_nxv8f16_nonans:1442; ZVFH: # %bb.0:1443; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1444; ZVFH-NEXT: vmflt.vv v0, v8, v101445; ZVFH-NEXT: ret1446;1447; ZVFHMIN-LABEL: fcmp_olt_vv_nxv8f16_nonans:1448; ZVFHMIN: # %bb.0:1449; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1450; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v101451; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v81452; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1453; ZVFHMIN-NEXT: vmflt.vv v0, v16, v121454; ZVFHMIN-NEXT: ret1455 %vc = fcmp olt <vscale x 8 x half> %va, %vb1456 ret <vscale x 8 x i1> %vc1457}1458 1459define <vscale x 8 x i1> @fcmp_olt_vf_nxv8f16_nonans(<vscale x 8 x half> %va, half %b) #0 {1460; ZVFH-LABEL: fcmp_olt_vf_nxv8f16_nonans:1461; ZVFH: # %bb.0:1462; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1463; ZVFH-NEXT: vmflt.vf v0, v8, fa01464; ZVFH-NEXT: ret1465;1466; ZVFHMIN-LABEL: fcmp_olt_vf_nxv8f16_nonans:1467; ZVFHMIN: # %bb.0:1468; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01469; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1470; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81471; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1472; ZVFHMIN-NEXT: vmflt.vf v0, v12, fa51473; ZVFHMIN-NEXT: ret1474 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01475 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1476 %vc = fcmp olt <vscale x 8 x half> %va, %splat1477 ret <vscale x 8 x i1> %vc1478}1479 1480define <vscale x 8 x i1> @fcmp_ole_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) {1481; ZVFH-LABEL: fcmp_ole_vv_nxv8f16:1482; ZVFH: # %bb.0:1483; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1484; ZVFH-NEXT: vmfle.vv v0, v8, v101485; ZVFH-NEXT: ret1486;1487; ZVFHMIN-LABEL: fcmp_ole_vv_nxv8f16:1488; ZVFHMIN: # %bb.0:1489; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1490; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v101491; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v81492; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1493; ZVFHMIN-NEXT: vmfle.vv v0, v16, v121494; ZVFHMIN-NEXT: ret1495 %vc = fcmp ole <vscale x 8 x half> %va, %vb1496 ret <vscale x 8 x i1> %vc1497}1498 1499define <vscale x 8 x i1> @fcmp_ole_vf_nxv8f16(<vscale x 8 x half> %va, half %b) {1500; ZVFH-LABEL: fcmp_ole_vf_nxv8f16:1501; ZVFH: # %bb.0:1502; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1503; ZVFH-NEXT: vmfle.vf v0, v8, fa01504; ZVFH-NEXT: ret1505;1506; ZVFHMIN-LABEL: fcmp_ole_vf_nxv8f16:1507; ZVFHMIN: # %bb.0:1508; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01509; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1510; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81511; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1512; ZVFHMIN-NEXT: vmfle.vf v0, v12, fa51513; ZVFHMIN-NEXT: ret1514 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01515 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1516 %vc = fcmp ole <vscale x 8 x half> %va, %splat1517 ret <vscale x 8 x i1> %vc1518}1519 1520define <vscale x 8 x i1> @fcmp_ole_fv_nxv8f16(<vscale x 8 x half> %va, half %b) {1521; ZVFH-LABEL: fcmp_ole_fv_nxv8f16:1522; ZVFH: # %bb.0:1523; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1524; ZVFH-NEXT: vmfge.vf v0, v8, fa01525; ZVFH-NEXT: ret1526;1527; ZVFHMIN-LABEL: fcmp_ole_fv_nxv8f16:1528; ZVFHMIN: # %bb.0:1529; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01530; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1531; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81532; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1533; ZVFHMIN-NEXT: vmfge.vf v0, v12, fa51534; ZVFHMIN-NEXT: ret1535 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01536 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1537 %vc = fcmp ole <vscale x 8 x half> %splat, %va1538 ret <vscale x 8 x i1> %vc1539}1540 1541define <vscale x 8 x i1> @fcmp_ole_vv_nxv8f16_nonans(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) #0 {1542; ZVFH-LABEL: fcmp_ole_vv_nxv8f16_nonans:1543; ZVFH: # %bb.0:1544; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1545; ZVFH-NEXT: vmfle.vv v0, v8, v101546; ZVFH-NEXT: ret1547;1548; ZVFHMIN-LABEL: fcmp_ole_vv_nxv8f16_nonans:1549; ZVFHMIN: # %bb.0:1550; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1551; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v101552; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v81553; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1554; ZVFHMIN-NEXT: vmfle.vv v0, v16, v121555; ZVFHMIN-NEXT: ret1556 %vc = fcmp ole <vscale x 8 x half> %va, %vb1557 ret <vscale x 8 x i1> %vc1558}1559 1560define <vscale x 8 x i1> @fcmp_ole_vf_nxv8f16_nonans(<vscale x 8 x half> %va, half %b) #0 {1561; ZVFH-LABEL: fcmp_ole_vf_nxv8f16_nonans:1562; ZVFH: # %bb.0:1563; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1564; ZVFH-NEXT: vmfle.vf v0, v8, fa01565; ZVFH-NEXT: ret1566;1567; ZVFHMIN-LABEL: fcmp_ole_vf_nxv8f16_nonans:1568; ZVFHMIN: # %bb.0:1569; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01570; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1571; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81572; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1573; ZVFHMIN-NEXT: vmfle.vf v0, v12, fa51574; ZVFHMIN-NEXT: ret1575 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01576 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1577 %vc = fcmp ole <vscale x 8 x half> %va, %splat1578 ret <vscale x 8 x i1> %vc1579}1580 1581define <vscale x 8 x i1> @fcmp_one_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) {1582; ZVFH-LABEL: fcmp_one_vv_nxv8f16:1583; ZVFH: # %bb.0:1584; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1585; ZVFH-NEXT: vmflt.vv v12, v8, v101586; ZVFH-NEXT: vmflt.vv v13, v10, v81587; ZVFH-NEXT: vmor.mm v0, v13, v121588; ZVFH-NEXT: ret1589;1590; ZVFHMIN-LABEL: fcmp_one_vv_nxv8f16:1591; ZVFHMIN: # %bb.0:1592; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1593; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v101594; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v81595; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1596; ZVFHMIN-NEXT: vmflt.vv v8, v16, v121597; ZVFHMIN-NEXT: vmflt.vv v9, v12, v161598; ZVFHMIN-NEXT: vmor.mm v0, v9, v81599; ZVFHMIN-NEXT: ret1600 %vc = fcmp one <vscale x 8 x half> %va, %vb1601 ret <vscale x 8 x i1> %vc1602}1603 1604define <vscale x 8 x i1> @fcmp_one_vf_nxv8f16(<vscale x 8 x half> %va, half %b) {1605; ZVFH-LABEL: fcmp_one_vf_nxv8f16:1606; ZVFH: # %bb.0:1607; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1608; ZVFH-NEXT: vmflt.vf v10, v8, fa01609; ZVFH-NEXT: vmfgt.vf v11, v8, fa01610; ZVFH-NEXT: vmor.mm v0, v11, v101611; ZVFH-NEXT: ret1612;1613; ZVFHMIN-LABEL: fcmp_one_vf_nxv8f16:1614; ZVFHMIN: # %bb.0:1615; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01616; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1617; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81618; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1619; ZVFHMIN-NEXT: vmflt.vf v8, v12, fa51620; ZVFHMIN-NEXT: vmfgt.vf v9, v12, fa51621; ZVFHMIN-NEXT: vmor.mm v0, v9, v81622; ZVFHMIN-NEXT: ret1623 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01624 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1625 %vc = fcmp one <vscale x 8 x half> %va, %splat1626 ret <vscale x 8 x i1> %vc1627}1628 1629define <vscale x 8 x i1> @fcmp_one_fv_nxv8f16(<vscale x 8 x half> %va, half %b) {1630; ZVFH-LABEL: fcmp_one_fv_nxv8f16:1631; ZVFH: # %bb.0:1632; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1633; ZVFH-NEXT: vmfgt.vf v10, v8, fa01634; ZVFH-NEXT: vmflt.vf v11, v8, fa01635; ZVFH-NEXT: vmor.mm v0, v11, v101636; ZVFH-NEXT: ret1637;1638; ZVFHMIN-LABEL: fcmp_one_fv_nxv8f16:1639; ZVFHMIN: # %bb.0:1640; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01641; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1642; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81643; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1644; ZVFHMIN-NEXT: vmfgt.vf v8, v12, fa51645; ZVFHMIN-NEXT: vmflt.vf v9, v12, fa51646; ZVFHMIN-NEXT: vmor.mm v0, v9, v81647; ZVFHMIN-NEXT: ret1648 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01649 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1650 %vc = fcmp one <vscale x 8 x half> %splat, %va1651 ret <vscale x 8 x i1> %vc1652}1653 1654define <vscale x 8 x i1> @fcmp_one_vv_nxv8f16_nonans(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) #0 {1655; ZVFH-LABEL: fcmp_one_vv_nxv8f16_nonans:1656; ZVFH: # %bb.0:1657; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1658; ZVFH-NEXT: vmfne.vv v0, v8, v101659; ZVFH-NEXT: ret1660;1661; ZVFHMIN-LABEL: fcmp_one_vv_nxv8f16_nonans:1662; ZVFHMIN: # %bb.0:1663; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1664; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v101665; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v81666; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1667; ZVFHMIN-NEXT: vmfne.vv v0, v16, v121668; ZVFHMIN-NEXT: ret1669 %vc = fcmp one <vscale x 8 x half> %va, %vb1670 ret <vscale x 8 x i1> %vc1671}1672 1673define <vscale x 8 x i1> @fcmp_one_vf_nxv8f16_nonans(<vscale x 8 x half> %va, half %b) #0 {1674; ZVFH-LABEL: fcmp_one_vf_nxv8f16_nonans:1675; ZVFH: # %bb.0:1676; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1677; ZVFH-NEXT: vmfne.vf v0, v8, fa01678; ZVFH-NEXT: ret1679;1680; ZVFHMIN-LABEL: fcmp_one_vf_nxv8f16_nonans:1681; ZVFHMIN: # %bb.0:1682; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01683; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1684; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81685; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1686; ZVFHMIN-NEXT: vmfne.vf v0, v12, fa51687; ZVFHMIN-NEXT: ret1688 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01689 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1690 %vc = fcmp one <vscale x 8 x half> %va, %splat1691 ret <vscale x 8 x i1> %vc1692}1693 1694define <vscale x 8 x i1> @fcmp_ord_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) {1695; ZVFH-LABEL: fcmp_ord_vv_nxv8f16:1696; ZVFH: # %bb.0:1697; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1698; ZVFH-NEXT: vmfeq.vv v12, v10, v101699; ZVFH-NEXT: vmfeq.vv v10, v8, v81700; ZVFH-NEXT: vmand.mm v0, v10, v121701; ZVFH-NEXT: ret1702;1703; ZVFHMIN-LABEL: fcmp_ord_vv_nxv8f16:1704; ZVFHMIN: # %bb.0:1705; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1706; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v101707; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1708; ZVFHMIN-NEXT: vmfeq.vv v10, v12, v121709; ZVFHMIN-NEXT: vsetvli zero, zero, e16, m2, ta, ma1710; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81711; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1712; ZVFHMIN-NEXT: vmfeq.vv v8, v12, v121713; ZVFHMIN-NEXT: vmand.mm v0, v8, v101714; ZVFHMIN-NEXT: ret1715 %vc = fcmp ord <vscale x 8 x half> %va, %vb1716 ret <vscale x 8 x i1> %vc1717}1718 1719define <vscale x 8 x i1> @fcmp_ord_vf_nxv8f16(<vscale x 8 x half> %va, half %b) {1720; ZVFH-LABEL: fcmp_ord_vf_nxv8f16:1721; ZVFH: # %bb.0:1722; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1723; ZVFH-NEXT: vfmv.v.f v10, fa01724; ZVFH-NEXT: vmfeq.vf v12, v10, fa01725; ZVFH-NEXT: vmfeq.vv v10, v8, v81726; ZVFH-NEXT: vmand.mm v0, v10, v121727; ZVFH-NEXT: ret1728;1729; ZVFHMIN-LABEL: fcmp_ord_vf_nxv8f16:1730; ZVFHMIN: # %bb.0:1731; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01732; ZVFHMIN-NEXT: vsetvli a0, zero, e32, m4, ta, ma1733; ZVFHMIN-NEXT: vfmv.v.f v12, fa51734; ZVFHMIN-NEXT: vmfeq.vf v10, v12, fa51735; ZVFHMIN-NEXT: vsetvli zero, zero, e16, m2, ta, ma1736; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81737; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1738; ZVFHMIN-NEXT: vmfeq.vv v8, v12, v121739; ZVFHMIN-NEXT: vmand.mm v0, v8, v101740; ZVFHMIN-NEXT: ret1741 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01742 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1743 %vc = fcmp ord <vscale x 8 x half> %va, %splat1744 ret <vscale x 8 x i1> %vc1745}1746 1747define <vscale x 8 x i1> @fcmp_ord_fv_nxv8f16(<vscale x 8 x half> %va, half %b) {1748; ZVFH-LABEL: fcmp_ord_fv_nxv8f16:1749; ZVFH: # %bb.0:1750; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1751; ZVFH-NEXT: vfmv.v.f v10, fa01752; ZVFH-NEXT: vmfeq.vf v12, v10, fa01753; ZVFH-NEXT: vmfeq.vv v10, v8, v81754; ZVFH-NEXT: vmand.mm v0, v12, v101755; ZVFH-NEXT: ret1756;1757; ZVFHMIN-LABEL: fcmp_ord_fv_nxv8f16:1758; ZVFHMIN: # %bb.0:1759; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01760; ZVFHMIN-NEXT: vsetvli a0, zero, e32, m4, ta, ma1761; ZVFHMIN-NEXT: vfmv.v.f v12, fa51762; ZVFHMIN-NEXT: vmfeq.vf v10, v12, fa51763; ZVFHMIN-NEXT: vsetvli zero, zero, e16, m2, ta, ma1764; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81765; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1766; ZVFHMIN-NEXT: vmfeq.vv v8, v12, v121767; ZVFHMIN-NEXT: vmand.mm v0, v10, v81768; ZVFHMIN-NEXT: ret1769 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01770 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1771 %vc = fcmp ord <vscale x 8 x half> %splat, %va1772 ret <vscale x 8 x i1> %vc1773}1774 1775define <vscale x 8 x i1> @fcmp_ord_vv_nxv8f16_nonans(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) #0 {1776; ZVFH-LABEL: fcmp_ord_vv_nxv8f16_nonans:1777; ZVFH: # %bb.0:1778; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1779; ZVFH-NEXT: vmfeq.vv v12, v10, v101780; ZVFH-NEXT: vmfeq.vv v10, v8, v81781; ZVFH-NEXT: vmand.mm v0, v10, v121782; ZVFH-NEXT: ret1783;1784; ZVFHMIN-LABEL: fcmp_ord_vv_nxv8f16_nonans:1785; ZVFHMIN: # %bb.0:1786; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1787; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v101788; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1789; ZVFHMIN-NEXT: vmfeq.vv v10, v12, v121790; ZVFHMIN-NEXT: vsetvli zero, zero, e16, m2, ta, ma1791; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81792; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1793; ZVFHMIN-NEXT: vmfeq.vv v8, v12, v121794; ZVFHMIN-NEXT: vmand.mm v0, v8, v101795; ZVFHMIN-NEXT: ret1796 %vc = fcmp ord <vscale x 8 x half> %va, %vb1797 ret <vscale x 8 x i1> %vc1798}1799 1800define <vscale x 8 x i1> @fcmp_ord_vf_nxv8f16_nonans(<vscale x 8 x half> %va, half %b) #0 {1801; ZVFH-LABEL: fcmp_ord_vf_nxv8f16_nonans:1802; ZVFH: # %bb.0:1803; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1804; ZVFH-NEXT: vfmv.v.f v10, fa01805; ZVFH-NEXT: vmfeq.vf v12, v10, fa01806; ZVFH-NEXT: vmfeq.vv v10, v8, v81807; ZVFH-NEXT: vmand.mm v0, v10, v121808; ZVFH-NEXT: ret1809;1810; ZVFHMIN-LABEL: fcmp_ord_vf_nxv8f16_nonans:1811; ZVFHMIN: # %bb.0:1812; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01813; ZVFHMIN-NEXT: vsetvli a0, zero, e32, m4, ta, ma1814; ZVFHMIN-NEXT: vfmv.v.f v12, fa51815; ZVFHMIN-NEXT: vmfeq.vf v10, v12, fa51816; ZVFHMIN-NEXT: vsetvli zero, zero, e16, m2, ta, ma1817; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81818; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1819; ZVFHMIN-NEXT: vmfeq.vv v8, v12, v121820; ZVFHMIN-NEXT: vmand.mm v0, v8, v101821; ZVFHMIN-NEXT: ret1822 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01823 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1824 %vc = fcmp ord <vscale x 8 x half> %va, %splat1825 ret <vscale x 8 x i1> %vc1826}1827 1828define <vscale x 8 x i1> @fcmp_ueq_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) {1829; ZVFH-LABEL: fcmp_ueq_vv_nxv8f16:1830; ZVFH: # %bb.0:1831; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1832; ZVFH-NEXT: vmflt.vv v12, v8, v101833; ZVFH-NEXT: vmflt.vv v13, v10, v81834; ZVFH-NEXT: vmnor.mm v0, v13, v121835; ZVFH-NEXT: ret1836;1837; ZVFHMIN-LABEL: fcmp_ueq_vv_nxv8f16:1838; ZVFHMIN: # %bb.0:1839; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1840; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v101841; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v81842; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1843; ZVFHMIN-NEXT: vmflt.vv v8, v16, v121844; ZVFHMIN-NEXT: vmflt.vv v9, v12, v161845; ZVFHMIN-NEXT: vmnor.mm v0, v9, v81846; ZVFHMIN-NEXT: ret1847 %vc = fcmp ueq <vscale x 8 x half> %va, %vb1848 ret <vscale x 8 x i1> %vc1849}1850 1851define <vscale x 8 x i1> @fcmp_ueq_vf_nxv8f16(<vscale x 8 x half> %va, half %b) {1852; ZVFH-LABEL: fcmp_ueq_vf_nxv8f16:1853; ZVFH: # %bb.0:1854; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1855; ZVFH-NEXT: vmflt.vf v10, v8, fa01856; ZVFH-NEXT: vmfgt.vf v11, v8, fa01857; ZVFH-NEXT: vmnor.mm v0, v11, v101858; ZVFH-NEXT: ret1859;1860; ZVFHMIN-LABEL: fcmp_ueq_vf_nxv8f16:1861; ZVFHMIN: # %bb.0:1862; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01863; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1864; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81865; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1866; ZVFHMIN-NEXT: vmflt.vf v8, v12, fa51867; ZVFHMIN-NEXT: vmfgt.vf v9, v12, fa51868; ZVFHMIN-NEXT: vmnor.mm v0, v9, v81869; ZVFHMIN-NEXT: ret1870 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01871 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1872 %vc = fcmp ueq <vscale x 8 x half> %va, %splat1873 ret <vscale x 8 x i1> %vc1874}1875 1876define <vscale x 8 x i1> @fcmp_ueq_fv_nxv8f16(<vscale x 8 x half> %va, half %b) {1877; ZVFH-LABEL: fcmp_ueq_fv_nxv8f16:1878; ZVFH: # %bb.0:1879; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1880; ZVFH-NEXT: vmfgt.vf v10, v8, fa01881; ZVFH-NEXT: vmflt.vf v11, v8, fa01882; ZVFH-NEXT: vmnor.mm v0, v11, v101883; ZVFH-NEXT: ret1884;1885; ZVFHMIN-LABEL: fcmp_ueq_fv_nxv8f16:1886; ZVFHMIN: # %bb.0:1887; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01888; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1889; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81890; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1891; ZVFHMIN-NEXT: vmfgt.vf v8, v12, fa51892; ZVFHMIN-NEXT: vmflt.vf v9, v12, fa51893; ZVFHMIN-NEXT: vmnor.mm v0, v9, v81894; ZVFHMIN-NEXT: ret1895 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01896 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1897 %vc = fcmp ueq <vscale x 8 x half> %splat, %va1898 ret <vscale x 8 x i1> %vc1899}1900 1901define <vscale x 8 x i1> @fcmp_ueq_vv_nxv8f16_nonans(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) #0 {1902; ZVFH-LABEL: fcmp_ueq_vv_nxv8f16_nonans:1903; ZVFH: # %bb.0:1904; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1905; ZVFH-NEXT: vmfeq.vv v0, v8, v101906; ZVFH-NEXT: ret1907;1908; ZVFHMIN-LABEL: fcmp_ueq_vv_nxv8f16_nonans:1909; ZVFHMIN: # %bb.0:1910; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1911; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v101912; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v81913; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1914; ZVFHMIN-NEXT: vmfeq.vv v0, v16, v121915; ZVFHMIN-NEXT: ret1916 %vc = fcmp ueq <vscale x 8 x half> %va, %vb1917 ret <vscale x 8 x i1> %vc1918}1919 1920define <vscale x 8 x i1> @fcmp_ueq_vf_nxv8f16_nonans(<vscale x 8 x half> %va, half %b) #0 {1921; ZVFH-LABEL: fcmp_ueq_vf_nxv8f16_nonans:1922; ZVFH: # %bb.0:1923; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1924; ZVFH-NEXT: vmfeq.vf v0, v8, fa01925; ZVFH-NEXT: ret1926;1927; ZVFHMIN-LABEL: fcmp_ueq_vf_nxv8f16_nonans:1928; ZVFHMIN: # %bb.0:1929; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01930; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1931; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81932; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1933; ZVFHMIN-NEXT: vmfeq.vf v0, v12, fa51934; ZVFHMIN-NEXT: ret1935 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01936 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1937 %vc = fcmp ueq <vscale x 8 x half> %va, %splat1938 ret <vscale x 8 x i1> %vc1939}1940 1941define <vscale x 8 x i1> @fcmp_ugt_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) {1942; ZVFH-LABEL: fcmp_ugt_vv_nxv8f16:1943; ZVFH: # %bb.0:1944; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1945; ZVFH-NEXT: vmfle.vv v12, v8, v101946; ZVFH-NEXT: vmnot.m v0, v121947; ZVFH-NEXT: ret1948;1949; ZVFHMIN-LABEL: fcmp_ugt_vv_nxv8f16:1950; ZVFHMIN: # %bb.0:1951; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1952; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v101953; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v81954; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1955; ZVFHMIN-NEXT: vmfle.vv v8, v16, v121956; ZVFHMIN-NEXT: vmnot.m v0, v81957; ZVFHMIN-NEXT: ret1958 %vc = fcmp ugt <vscale x 8 x half> %va, %vb1959 ret <vscale x 8 x i1> %vc1960}1961 1962define <vscale x 8 x i1> @fcmp_ugt_vf_nxv8f16(<vscale x 8 x half> %va, half %b) {1963; ZVFH-LABEL: fcmp_ugt_vf_nxv8f16:1964; ZVFH: # %bb.0:1965; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1966; ZVFH-NEXT: vmfle.vf v10, v8, fa01967; ZVFH-NEXT: vmnot.m v0, v101968; ZVFH-NEXT: ret1969;1970; ZVFHMIN-LABEL: fcmp_ugt_vf_nxv8f16:1971; ZVFHMIN: # %bb.0:1972; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01973; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1974; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81975; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1976; ZVFHMIN-NEXT: vmfle.vf v8, v12, fa51977; ZVFHMIN-NEXT: vmnot.m v0, v81978; ZVFHMIN-NEXT: ret1979 %head = insertelement <vscale x 8 x half> poison, half %b, i32 01980 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer1981 %vc = fcmp ugt <vscale x 8 x half> %va, %splat1982 ret <vscale x 8 x i1> %vc1983}1984 1985define <vscale x 8 x i1> @fcmp_ugt_fv_nxv8f16(<vscale x 8 x half> %va, half %b) {1986; ZVFH-LABEL: fcmp_ugt_fv_nxv8f16:1987; ZVFH: # %bb.0:1988; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma1989; ZVFH-NEXT: vmfge.vf v10, v8, fa01990; ZVFH-NEXT: vmnot.m v0, v101991; ZVFH-NEXT: ret1992;1993; ZVFHMIN-LABEL: fcmp_ugt_fv_nxv8f16:1994; ZVFHMIN: # %bb.0:1995; ZVFHMIN-NEXT: fcvt.s.h fa5, fa01996; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma1997; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v81998; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma1999; ZVFHMIN-NEXT: vmfge.vf v8, v12, fa52000; ZVFHMIN-NEXT: vmnot.m v0, v82001; ZVFHMIN-NEXT: ret2002 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02003 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2004 %vc = fcmp ugt <vscale x 8 x half> %splat, %va2005 ret <vscale x 8 x i1> %vc2006}2007 2008define <vscale x 8 x i1> @fcmp_ugt_vv_nxv8f16_nonans(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) #0 {2009; ZVFH-LABEL: fcmp_ugt_vv_nxv8f16_nonans:2010; ZVFH: # %bb.0:2011; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2012; ZVFH-NEXT: vmflt.vv v0, v10, v82013; ZVFH-NEXT: ret2014;2015; ZVFHMIN-LABEL: fcmp_ugt_vv_nxv8f16_nonans:2016; ZVFHMIN: # %bb.0:2017; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2018; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v82019; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v102020; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2021; ZVFHMIN-NEXT: vmflt.vv v0, v16, v122022; ZVFHMIN-NEXT: ret2023 %vc = fcmp ugt <vscale x 8 x half> %va, %vb2024 ret <vscale x 8 x i1> %vc2025}2026 2027define <vscale x 8 x i1> @fcmp_ugt_vf_nxv8f16_nonans(<vscale x 8 x half> %va, half %b) #0 {2028; ZVFH-LABEL: fcmp_ugt_vf_nxv8f16_nonans:2029; ZVFH: # %bb.0:2030; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2031; ZVFH-NEXT: vmfgt.vf v0, v8, fa02032; ZVFH-NEXT: ret2033;2034; ZVFHMIN-LABEL: fcmp_ugt_vf_nxv8f16_nonans:2035; ZVFHMIN: # %bb.0:2036; ZVFHMIN-NEXT: fcvt.s.h fa5, fa02037; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2038; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v82039; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2040; ZVFHMIN-NEXT: vmfgt.vf v0, v12, fa52041; ZVFHMIN-NEXT: ret2042 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02043 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2044 %vc = fcmp ugt <vscale x 8 x half> %va, %splat2045 ret <vscale x 8 x i1> %vc2046}2047 2048define <vscale x 8 x i1> @fcmp_uge_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) {2049; ZVFH-LABEL: fcmp_uge_vv_nxv8f16:2050; ZVFH: # %bb.0:2051; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2052; ZVFH-NEXT: vmflt.vv v12, v8, v102053; ZVFH-NEXT: vmnot.m v0, v122054; ZVFH-NEXT: ret2055;2056; ZVFHMIN-LABEL: fcmp_uge_vv_nxv8f16:2057; ZVFHMIN: # %bb.0:2058; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2059; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v102060; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v82061; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2062; ZVFHMIN-NEXT: vmflt.vv v8, v16, v122063; ZVFHMIN-NEXT: vmnot.m v0, v82064; ZVFHMIN-NEXT: ret2065 %vc = fcmp uge <vscale x 8 x half> %va, %vb2066 ret <vscale x 8 x i1> %vc2067}2068 2069define <vscale x 8 x i1> @fcmp_uge_vf_nxv8f16(<vscale x 8 x half> %va, half %b) {2070; ZVFH-LABEL: fcmp_uge_vf_nxv8f16:2071; ZVFH: # %bb.0:2072; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2073; ZVFH-NEXT: vmflt.vf v10, v8, fa02074; ZVFH-NEXT: vmnot.m v0, v102075; ZVFH-NEXT: ret2076;2077; ZVFHMIN-LABEL: fcmp_uge_vf_nxv8f16:2078; ZVFHMIN: # %bb.0:2079; ZVFHMIN-NEXT: fcvt.s.h fa5, fa02080; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2081; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v82082; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2083; ZVFHMIN-NEXT: vmflt.vf v8, v12, fa52084; ZVFHMIN-NEXT: vmnot.m v0, v82085; ZVFHMIN-NEXT: ret2086 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02087 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2088 %vc = fcmp uge <vscale x 8 x half> %va, %splat2089 ret <vscale x 8 x i1> %vc2090}2091 2092define <vscale x 8 x i1> @fcmp_uge_fv_nxv8f16(<vscale x 8 x half> %va, half %b) {2093; ZVFH-LABEL: fcmp_uge_fv_nxv8f16:2094; ZVFH: # %bb.0:2095; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2096; ZVFH-NEXT: vmfgt.vf v10, v8, fa02097; ZVFH-NEXT: vmnot.m v0, v102098; ZVFH-NEXT: ret2099;2100; ZVFHMIN-LABEL: fcmp_uge_fv_nxv8f16:2101; ZVFHMIN: # %bb.0:2102; ZVFHMIN-NEXT: fcvt.s.h fa5, fa02103; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2104; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v82105; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2106; ZVFHMIN-NEXT: vmfgt.vf v8, v12, fa52107; ZVFHMIN-NEXT: vmnot.m v0, v82108; ZVFHMIN-NEXT: ret2109 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02110 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2111 %vc = fcmp uge <vscale x 8 x half> %splat, %va2112 ret <vscale x 8 x i1> %vc2113}2114 2115define <vscale x 8 x i1> @fcmp_uge_vv_nxv8f16_nonans(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) #0 {2116; ZVFH-LABEL: fcmp_uge_vv_nxv8f16_nonans:2117; ZVFH: # %bb.0:2118; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2119; ZVFH-NEXT: vmfle.vv v0, v10, v82120; ZVFH-NEXT: ret2121;2122; ZVFHMIN-LABEL: fcmp_uge_vv_nxv8f16_nonans:2123; ZVFHMIN: # %bb.0:2124; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2125; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v82126; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v102127; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2128; ZVFHMIN-NEXT: vmfle.vv v0, v16, v122129; ZVFHMIN-NEXT: ret2130 %vc = fcmp uge <vscale x 8 x half> %va, %vb2131 ret <vscale x 8 x i1> %vc2132}2133 2134define <vscale x 8 x i1> @fcmp_uge_vf_nxv8f16_nonans(<vscale x 8 x half> %va, half %b) #0 {2135; ZVFH-LABEL: fcmp_uge_vf_nxv8f16_nonans:2136; ZVFH: # %bb.0:2137; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2138; ZVFH-NEXT: vmfge.vf v0, v8, fa02139; ZVFH-NEXT: ret2140;2141; ZVFHMIN-LABEL: fcmp_uge_vf_nxv8f16_nonans:2142; ZVFHMIN: # %bb.0:2143; ZVFHMIN-NEXT: fcvt.s.h fa5, fa02144; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2145; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v82146; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2147; ZVFHMIN-NEXT: vmfge.vf v0, v12, fa52148; ZVFHMIN-NEXT: ret2149 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02150 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2151 %vc = fcmp uge <vscale x 8 x half> %va, %splat2152 ret <vscale x 8 x i1> %vc2153}2154 2155define <vscale x 8 x i1> @fcmp_ult_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) {2156; ZVFH-LABEL: fcmp_ult_vv_nxv8f16:2157; ZVFH: # %bb.0:2158; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2159; ZVFH-NEXT: vmfle.vv v12, v10, v82160; ZVFH-NEXT: vmnot.m v0, v122161; ZVFH-NEXT: ret2162;2163; ZVFHMIN-LABEL: fcmp_ult_vv_nxv8f16:2164; ZVFHMIN: # %bb.0:2165; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2166; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v82167; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v102168; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2169; ZVFHMIN-NEXT: vmfle.vv v8, v16, v122170; ZVFHMIN-NEXT: vmnot.m v0, v82171; ZVFHMIN-NEXT: ret2172 %vc = fcmp ult <vscale x 8 x half> %va, %vb2173 ret <vscale x 8 x i1> %vc2174}2175 2176define <vscale x 8 x i1> @fcmp_ult_vf_nxv8f16(<vscale x 8 x half> %va, half %b) {2177; ZVFH-LABEL: fcmp_ult_vf_nxv8f16:2178; ZVFH: # %bb.0:2179; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2180; ZVFH-NEXT: vmfge.vf v10, v8, fa02181; ZVFH-NEXT: vmnot.m v0, v102182; ZVFH-NEXT: ret2183;2184; ZVFHMIN-LABEL: fcmp_ult_vf_nxv8f16:2185; ZVFHMIN: # %bb.0:2186; ZVFHMIN-NEXT: fcvt.s.h fa5, fa02187; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2188; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v82189; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2190; ZVFHMIN-NEXT: vmfge.vf v8, v12, fa52191; ZVFHMIN-NEXT: vmnot.m v0, v82192; ZVFHMIN-NEXT: ret2193 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02194 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2195 %vc = fcmp ult <vscale x 8 x half> %va, %splat2196 ret <vscale x 8 x i1> %vc2197}2198 2199define <vscale x 8 x i1> @fcmp_ult_fv_nxv8f16(<vscale x 8 x half> %va, half %b) {2200; ZVFH-LABEL: fcmp_ult_fv_nxv8f16:2201; ZVFH: # %bb.0:2202; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2203; ZVFH-NEXT: vmfle.vf v10, v8, fa02204; ZVFH-NEXT: vmnot.m v0, v102205; ZVFH-NEXT: ret2206;2207; ZVFHMIN-LABEL: fcmp_ult_fv_nxv8f16:2208; ZVFHMIN: # %bb.0:2209; ZVFHMIN-NEXT: fcvt.s.h fa5, fa02210; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2211; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v82212; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2213; ZVFHMIN-NEXT: vmfle.vf v8, v12, fa52214; ZVFHMIN-NEXT: vmnot.m v0, v82215; ZVFHMIN-NEXT: ret2216 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02217 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2218 %vc = fcmp ult <vscale x 8 x half> %splat, %va2219 ret <vscale x 8 x i1> %vc2220}2221 2222define <vscale x 8 x i1> @fcmp_ult_vv_nxv8f16_nonans(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) #0 {2223; ZVFH-LABEL: fcmp_ult_vv_nxv8f16_nonans:2224; ZVFH: # %bb.0:2225; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2226; ZVFH-NEXT: vmflt.vv v0, v8, v102227; ZVFH-NEXT: ret2228;2229; ZVFHMIN-LABEL: fcmp_ult_vv_nxv8f16_nonans:2230; ZVFHMIN: # %bb.0:2231; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2232; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v102233; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v82234; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2235; ZVFHMIN-NEXT: vmflt.vv v0, v16, v122236; ZVFHMIN-NEXT: ret2237 %vc = fcmp ult <vscale x 8 x half> %va, %vb2238 ret <vscale x 8 x i1> %vc2239}2240 2241define <vscale x 8 x i1> @fcmp_ult_vf_nxv8f16_nonans(<vscale x 8 x half> %va, half %b) #0 {2242; ZVFH-LABEL: fcmp_ult_vf_nxv8f16_nonans:2243; ZVFH: # %bb.0:2244; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2245; ZVFH-NEXT: vmflt.vf v0, v8, fa02246; ZVFH-NEXT: ret2247;2248; ZVFHMIN-LABEL: fcmp_ult_vf_nxv8f16_nonans:2249; ZVFHMIN: # %bb.0:2250; ZVFHMIN-NEXT: fcvt.s.h fa5, fa02251; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2252; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v82253; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2254; ZVFHMIN-NEXT: vmflt.vf v0, v12, fa52255; ZVFHMIN-NEXT: ret2256 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02257 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2258 %vc = fcmp ult <vscale x 8 x half> %va, %splat2259 ret <vscale x 8 x i1> %vc2260}2261 2262define <vscale x 8 x i1> @fcmp_ule_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) {2263; ZVFH-LABEL: fcmp_ule_vv_nxv8f16:2264; ZVFH: # %bb.0:2265; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2266; ZVFH-NEXT: vmflt.vv v12, v10, v82267; ZVFH-NEXT: vmnot.m v0, v122268; ZVFH-NEXT: ret2269;2270; ZVFHMIN-LABEL: fcmp_ule_vv_nxv8f16:2271; ZVFHMIN: # %bb.0:2272; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2273; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v82274; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v102275; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2276; ZVFHMIN-NEXT: vmflt.vv v8, v16, v122277; ZVFHMIN-NEXT: vmnot.m v0, v82278; ZVFHMIN-NEXT: ret2279 %vc = fcmp ule <vscale x 8 x half> %va, %vb2280 ret <vscale x 8 x i1> %vc2281}2282 2283define <vscale x 8 x i1> @fcmp_ule_vf_nxv8f16(<vscale x 8 x half> %va, half %b) {2284; ZVFH-LABEL: fcmp_ule_vf_nxv8f16:2285; ZVFH: # %bb.0:2286; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2287; ZVFH-NEXT: vmfgt.vf v10, v8, fa02288; ZVFH-NEXT: vmnot.m v0, v102289; ZVFH-NEXT: ret2290;2291; ZVFHMIN-LABEL: fcmp_ule_vf_nxv8f16:2292; ZVFHMIN: # %bb.0:2293; ZVFHMIN-NEXT: fcvt.s.h fa5, fa02294; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2295; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v82296; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2297; ZVFHMIN-NEXT: vmfgt.vf v8, v12, fa52298; ZVFHMIN-NEXT: vmnot.m v0, v82299; ZVFHMIN-NEXT: ret2300 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02301 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2302 %vc = fcmp ule <vscale x 8 x half> %va, %splat2303 ret <vscale x 8 x i1> %vc2304}2305 2306define <vscale x 8 x i1> @fcmp_ule_fv_nxv8f16(<vscale x 8 x half> %va, half %b) {2307; ZVFH-LABEL: fcmp_ule_fv_nxv8f16:2308; ZVFH: # %bb.0:2309; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2310; ZVFH-NEXT: vmflt.vf v10, v8, fa02311; ZVFH-NEXT: vmnot.m v0, v102312; ZVFH-NEXT: ret2313;2314; ZVFHMIN-LABEL: fcmp_ule_fv_nxv8f16:2315; ZVFHMIN: # %bb.0:2316; ZVFHMIN-NEXT: fcvt.s.h fa5, fa02317; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2318; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v82319; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2320; ZVFHMIN-NEXT: vmflt.vf v8, v12, fa52321; ZVFHMIN-NEXT: vmnot.m v0, v82322; ZVFHMIN-NEXT: ret2323 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02324 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2325 %vc = fcmp ule <vscale x 8 x half> %splat, %va2326 ret <vscale x 8 x i1> %vc2327}2328 2329define <vscale x 8 x i1> @fcmp_ule_vv_nxv8f16_nonans(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) #0 {2330; ZVFH-LABEL: fcmp_ule_vv_nxv8f16_nonans:2331; ZVFH: # %bb.0:2332; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2333; ZVFH-NEXT: vmfle.vv v0, v8, v102334; ZVFH-NEXT: ret2335;2336; ZVFHMIN-LABEL: fcmp_ule_vv_nxv8f16_nonans:2337; ZVFHMIN: # %bb.0:2338; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2339; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v102340; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v82341; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2342; ZVFHMIN-NEXT: vmfle.vv v0, v16, v122343; ZVFHMIN-NEXT: ret2344 %vc = fcmp ule <vscale x 8 x half> %va, %vb2345 ret <vscale x 8 x i1> %vc2346}2347 2348define <vscale x 8 x i1> @fcmp_ule_vf_nxv8f16_nonans(<vscale x 8 x half> %va, half %b) #0 {2349; ZVFH-LABEL: fcmp_ule_vf_nxv8f16_nonans:2350; ZVFH: # %bb.0:2351; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2352; ZVFH-NEXT: vmfle.vf v0, v8, fa02353; ZVFH-NEXT: ret2354;2355; ZVFHMIN-LABEL: fcmp_ule_vf_nxv8f16_nonans:2356; ZVFHMIN: # %bb.0:2357; ZVFHMIN-NEXT: fcvt.s.h fa5, fa02358; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2359; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v82360; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2361; ZVFHMIN-NEXT: vmfle.vf v0, v12, fa52362; ZVFHMIN-NEXT: ret2363 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02364 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2365 %vc = fcmp ule <vscale x 8 x half> %va, %splat2366 ret <vscale x 8 x i1> %vc2367}2368 2369define <vscale x 8 x i1> @fcmp_une_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) {2370; ZVFH-LABEL: fcmp_une_vv_nxv8f16:2371; ZVFH: # %bb.0:2372; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2373; ZVFH-NEXT: vmfne.vv v0, v8, v102374; ZVFH-NEXT: ret2375;2376; ZVFHMIN-LABEL: fcmp_une_vv_nxv8f16:2377; ZVFHMIN: # %bb.0:2378; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2379; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v102380; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v82381; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2382; ZVFHMIN-NEXT: vmfne.vv v0, v16, v122383; ZVFHMIN-NEXT: ret2384 %vc = fcmp une <vscale x 8 x half> %va, %vb2385 ret <vscale x 8 x i1> %vc2386}2387 2388define <vscale x 8 x i1> @fcmp_une_vf_nxv8f16(<vscale x 8 x half> %va, half %b) {2389; ZVFH-LABEL: fcmp_une_vf_nxv8f16:2390; ZVFH: # %bb.0:2391; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2392; ZVFH-NEXT: vmfne.vf v0, v8, fa02393; ZVFH-NEXT: ret2394;2395; ZVFHMIN-LABEL: fcmp_une_vf_nxv8f16:2396; ZVFHMIN: # %bb.0:2397; ZVFHMIN-NEXT: fcvt.s.h fa5, fa02398; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2399; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v82400; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2401; ZVFHMIN-NEXT: vmfne.vf v0, v12, fa52402; ZVFHMIN-NEXT: ret2403 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02404 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2405 %vc = fcmp une <vscale x 8 x half> %va, %splat2406 ret <vscale x 8 x i1> %vc2407}2408 2409define <vscale x 8 x i1> @fcmp_une_fv_nxv8f16(<vscale x 8 x half> %va, half %b) {2410; ZVFH-LABEL: fcmp_une_fv_nxv8f16:2411; ZVFH: # %bb.0:2412; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2413; ZVFH-NEXT: vmfne.vf v0, v8, fa02414; ZVFH-NEXT: ret2415;2416; ZVFHMIN-LABEL: fcmp_une_fv_nxv8f16:2417; ZVFHMIN: # %bb.0:2418; ZVFHMIN-NEXT: fcvt.s.h fa5, fa02419; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2420; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v82421; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2422; ZVFHMIN-NEXT: vmfne.vf v0, v12, fa52423; ZVFHMIN-NEXT: ret2424 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02425 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2426 %vc = fcmp une <vscale x 8 x half> %splat, %va2427 ret <vscale x 8 x i1> %vc2428}2429 2430define <vscale x 8 x i1> @fcmp_une_vv_nxv8f16_nonans(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) #0 {2431; ZVFH-LABEL: fcmp_une_vv_nxv8f16_nonans:2432; ZVFH: # %bb.0:2433; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2434; ZVFH-NEXT: vmfne.vv v0, v8, v102435; ZVFH-NEXT: ret2436;2437; ZVFHMIN-LABEL: fcmp_une_vv_nxv8f16_nonans:2438; ZVFHMIN: # %bb.0:2439; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2440; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v102441; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v82442; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2443; ZVFHMIN-NEXT: vmfne.vv v0, v16, v122444; ZVFHMIN-NEXT: ret2445 %vc = fcmp une <vscale x 8 x half> %va, %vb2446 ret <vscale x 8 x i1> %vc2447}2448 2449define <vscale x 8 x i1> @fcmp_une_vf_nxv8f16_nonans(<vscale x 8 x half> %va, half %b) #0 {2450; ZVFH-LABEL: fcmp_une_vf_nxv8f16_nonans:2451; ZVFH: # %bb.0:2452; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2453; ZVFH-NEXT: vmfne.vf v0, v8, fa02454; ZVFH-NEXT: ret2455;2456; ZVFHMIN-LABEL: fcmp_une_vf_nxv8f16_nonans:2457; ZVFHMIN: # %bb.0:2458; ZVFHMIN-NEXT: fcvt.s.h fa5, fa02459; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2460; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v82461; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2462; ZVFHMIN-NEXT: vmfne.vf v0, v12, fa52463; ZVFHMIN-NEXT: ret2464 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02465 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2466 %vc = fcmp une <vscale x 8 x half> %va, %splat2467 ret <vscale x 8 x i1> %vc2468}2469 2470define <vscale x 8 x i1> @fcmp_uno_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) {2471; ZVFH-LABEL: fcmp_uno_vv_nxv8f16:2472; ZVFH: # %bb.0:2473; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2474; ZVFH-NEXT: vmfne.vv v12, v10, v102475; ZVFH-NEXT: vmfne.vv v10, v8, v82476; ZVFH-NEXT: vmor.mm v0, v10, v122477; ZVFH-NEXT: ret2478;2479; ZVFHMIN-LABEL: fcmp_uno_vv_nxv8f16:2480; ZVFHMIN: # %bb.0:2481; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2482; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v102483; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2484; ZVFHMIN-NEXT: vmfne.vv v10, v12, v122485; ZVFHMIN-NEXT: vsetvli zero, zero, e16, m2, ta, ma2486; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v82487; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2488; ZVFHMIN-NEXT: vmfne.vv v8, v12, v122489; ZVFHMIN-NEXT: vmor.mm v0, v8, v102490; ZVFHMIN-NEXT: ret2491 %vc = fcmp uno <vscale x 8 x half> %va, %vb2492 ret <vscale x 8 x i1> %vc2493}2494 2495define <vscale x 8 x i1> @fcmp_uno_vf_nxv8f16(<vscale x 8 x half> %va, half %b) {2496; ZVFH-LABEL: fcmp_uno_vf_nxv8f16:2497; ZVFH: # %bb.0:2498; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2499; ZVFH-NEXT: vfmv.v.f v10, fa02500; ZVFH-NEXT: vmfne.vf v12, v10, fa02501; ZVFH-NEXT: vmfne.vv v10, v8, v82502; ZVFH-NEXT: vmor.mm v0, v10, v122503; ZVFH-NEXT: ret2504;2505; ZVFHMIN-LABEL: fcmp_uno_vf_nxv8f16:2506; ZVFHMIN: # %bb.0:2507; ZVFHMIN-NEXT: fcvt.s.h fa5, fa02508; ZVFHMIN-NEXT: vsetvli a0, zero, e32, m4, ta, ma2509; ZVFHMIN-NEXT: vfmv.v.f v12, fa52510; ZVFHMIN-NEXT: vmfne.vf v10, v12, fa52511; ZVFHMIN-NEXT: vsetvli zero, zero, e16, m2, ta, ma2512; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v82513; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2514; ZVFHMIN-NEXT: vmfne.vv v8, v12, v122515; ZVFHMIN-NEXT: vmor.mm v0, v8, v102516; ZVFHMIN-NEXT: ret2517 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02518 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2519 %vc = fcmp uno <vscale x 8 x half> %va, %splat2520 ret <vscale x 8 x i1> %vc2521}2522 2523define <vscale x 8 x i1> @fcmp_uno_fv_nxv8f16(<vscale x 8 x half> %va, half %b) {2524; ZVFH-LABEL: fcmp_uno_fv_nxv8f16:2525; ZVFH: # %bb.0:2526; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2527; ZVFH-NEXT: vfmv.v.f v10, fa02528; ZVFH-NEXT: vmfne.vf v12, v10, fa02529; ZVFH-NEXT: vmfne.vv v10, v8, v82530; ZVFH-NEXT: vmor.mm v0, v12, v102531; ZVFH-NEXT: ret2532;2533; ZVFHMIN-LABEL: fcmp_uno_fv_nxv8f16:2534; ZVFHMIN: # %bb.0:2535; ZVFHMIN-NEXT: fcvt.s.h fa5, fa02536; ZVFHMIN-NEXT: vsetvli a0, zero, e32, m4, ta, ma2537; ZVFHMIN-NEXT: vfmv.v.f v12, fa52538; ZVFHMIN-NEXT: vmfne.vf v10, v12, fa52539; ZVFHMIN-NEXT: vsetvli zero, zero, e16, m2, ta, ma2540; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v82541; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2542; ZVFHMIN-NEXT: vmfne.vv v8, v12, v122543; ZVFHMIN-NEXT: vmor.mm v0, v10, v82544; ZVFHMIN-NEXT: ret2545 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02546 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2547 %vc = fcmp uno <vscale x 8 x half> %splat, %va2548 ret <vscale x 8 x i1> %vc2549}2550 2551define <vscale x 8 x i1> @fcmp_uno_vv_nxv8f16_nonans(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) #0 {2552; ZVFH-LABEL: fcmp_uno_vv_nxv8f16_nonans:2553; ZVFH: # %bb.0:2554; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2555; ZVFH-NEXT: vmfne.vv v12, v10, v102556; ZVFH-NEXT: vmfne.vv v10, v8, v82557; ZVFH-NEXT: vmor.mm v0, v10, v122558; ZVFH-NEXT: ret2559;2560; ZVFHMIN-LABEL: fcmp_uno_vv_nxv8f16_nonans:2561; ZVFHMIN: # %bb.0:2562; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m2, ta, ma2563; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v102564; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2565; ZVFHMIN-NEXT: vmfne.vv v10, v12, v122566; ZVFHMIN-NEXT: vsetvli zero, zero, e16, m2, ta, ma2567; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v82568; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2569; ZVFHMIN-NEXT: vmfne.vv v8, v12, v122570; ZVFHMIN-NEXT: vmor.mm v0, v8, v102571; ZVFHMIN-NEXT: ret2572 %vc = fcmp uno <vscale x 8 x half> %va, %vb2573 ret <vscale x 8 x i1> %vc2574}2575 2576define <vscale x 8 x i1> @fcmp_uno_vf_nxv8f16_nonans(<vscale x 8 x half> %va, half %b) #0 {2577; ZVFH-LABEL: fcmp_uno_vf_nxv8f16_nonans:2578; ZVFH: # %bb.0:2579; ZVFH-NEXT: vsetvli a0, zero, e16, m2, ta, ma2580; ZVFH-NEXT: vfmv.v.f v10, fa02581; ZVFH-NEXT: vmfne.vf v12, v10, fa02582; ZVFH-NEXT: vmfne.vv v10, v8, v82583; ZVFH-NEXT: vmor.mm v0, v10, v122584; ZVFH-NEXT: ret2585;2586; ZVFHMIN-LABEL: fcmp_uno_vf_nxv8f16_nonans:2587; ZVFHMIN: # %bb.0:2588; ZVFHMIN-NEXT: fcvt.s.h fa5, fa02589; ZVFHMIN-NEXT: vsetvli a0, zero, e32, m4, ta, ma2590; ZVFHMIN-NEXT: vfmv.v.f v12, fa52591; ZVFHMIN-NEXT: vmfne.vf v10, v12, fa52592; ZVFHMIN-NEXT: vsetvli zero, zero, e16, m2, ta, ma2593; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v82594; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m4, ta, ma2595; ZVFHMIN-NEXT: vmfne.vv v8, v12, v122596; ZVFHMIN-NEXT: vmor.mm v0, v8, v102597; ZVFHMIN-NEXT: ret2598 %head = insertelement <vscale x 8 x half> poison, half %b, i32 02599 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer2600 %vc = fcmp uno <vscale x 8 x half> %va, %splat2601 ret <vscale x 8 x i1> %vc2602}2603 2604define <vscale x 8 x i1> @fcmp_oeq_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) {2605; CHECK-LABEL: fcmp_oeq_vv_nxv8f32:2606; CHECK: # %bb.0:2607; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2608; CHECK-NEXT: vmfeq.vv v0, v8, v122609; CHECK-NEXT: ret2610 %vc = fcmp oeq <vscale x 8 x float> %va, %vb2611 ret <vscale x 8 x i1> %vc2612}2613 2614define <vscale x 8 x i1> @fcmp_oeq_vf_nxv8f32(<vscale x 8 x float> %va, float %b) {2615; CHECK-LABEL: fcmp_oeq_vf_nxv8f32:2616; CHECK: # %bb.0:2617; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2618; CHECK-NEXT: vmfeq.vf v0, v8, fa02619; CHECK-NEXT: ret2620 %head = insertelement <vscale x 8 x float> poison, float %b, i32 02621 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer2622 %vc = fcmp oeq <vscale x 8 x float> %va, %splat2623 ret <vscale x 8 x i1> %vc2624}2625 2626define <vscale x 8 x i1> @fcmp_oeq_fv_nxv8f32(<vscale x 8 x float> %va, float %b) {2627; CHECK-LABEL: fcmp_oeq_fv_nxv8f32:2628; CHECK: # %bb.0:2629; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2630; CHECK-NEXT: vmfeq.vf v0, v8, fa02631; CHECK-NEXT: ret2632 %head = insertelement <vscale x 8 x float> poison, float %b, i32 02633 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer2634 %vc = fcmp oeq <vscale x 8 x float> %splat, %va2635 ret <vscale x 8 x i1> %vc2636}2637 2638define <vscale x 8 x i1> @fcmp_oeq_vv_nxv8f32_nonans(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) #0 {2639; CHECK-LABEL: fcmp_oeq_vv_nxv8f32_nonans:2640; CHECK: # %bb.0:2641; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2642; CHECK-NEXT: vmfeq.vv v0, v8, v122643; CHECK-NEXT: ret2644 %vc = fcmp oeq <vscale x 8 x float> %va, %vb2645 ret <vscale x 8 x i1> %vc2646}2647 2648define <vscale x 8 x i1> @fcmp_oeq_vf_nxv8f32_nonans(<vscale x 8 x float> %va, float %b) #0 {2649; CHECK-LABEL: fcmp_oeq_vf_nxv8f32_nonans:2650; CHECK: # %bb.0:2651; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2652; CHECK-NEXT: vmfeq.vf v0, v8, fa02653; CHECK-NEXT: ret2654 %head = insertelement <vscale x 8 x float> poison, float %b, i32 02655 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer2656 %vc = fcmp oeq <vscale x 8 x float> %va, %splat2657 ret <vscale x 8 x i1> %vc2658}2659 2660define <vscale x 8 x i1> @fcmp_ogt_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) {2661; CHECK-LABEL: fcmp_ogt_vv_nxv8f32:2662; CHECK: # %bb.0:2663; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2664; CHECK-NEXT: vmflt.vv v0, v12, v82665; CHECK-NEXT: ret2666 %vc = fcmp ogt <vscale x 8 x float> %va, %vb2667 ret <vscale x 8 x i1> %vc2668}2669 2670define <vscale x 8 x i1> @fcmp_ogt_vf_nxv8f32(<vscale x 8 x float> %va, float %b) {2671; CHECK-LABEL: fcmp_ogt_vf_nxv8f32:2672; CHECK: # %bb.0:2673; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2674; CHECK-NEXT: vmfgt.vf v0, v8, fa02675; CHECK-NEXT: ret2676 %head = insertelement <vscale x 8 x float> poison, float %b, i32 02677 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer2678 %vc = fcmp ogt <vscale x 8 x float> %va, %splat2679 ret <vscale x 8 x i1> %vc2680}2681 2682define <vscale x 8 x i1> @fcmp_ogt_fv_nxv8f32(<vscale x 8 x float> %va, float %b) {2683; CHECK-LABEL: fcmp_ogt_fv_nxv8f32:2684; CHECK: # %bb.0:2685; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2686; CHECK-NEXT: vmflt.vf v0, v8, fa02687; CHECK-NEXT: ret2688 %head = insertelement <vscale x 8 x float> poison, float %b, i32 02689 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer2690 %vc = fcmp ogt <vscale x 8 x float> %splat, %va2691 ret <vscale x 8 x i1> %vc2692}2693 2694define <vscale x 8 x i1> @fcmp_ogt_vv_nxv8f32_nonans(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) #0 {2695; CHECK-LABEL: fcmp_ogt_vv_nxv8f32_nonans:2696; CHECK: # %bb.0:2697; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2698; CHECK-NEXT: vmflt.vv v0, v12, v82699; CHECK-NEXT: ret2700 %vc = fcmp ogt <vscale x 8 x float> %va, %vb2701 ret <vscale x 8 x i1> %vc2702}2703 2704define <vscale x 8 x i1> @fcmp_ogt_vf_nxv8f32_nonans(<vscale x 8 x float> %va, float %b) #0 {2705; CHECK-LABEL: fcmp_ogt_vf_nxv8f32_nonans:2706; CHECK: # %bb.0:2707; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2708; CHECK-NEXT: vmfgt.vf v0, v8, fa02709; CHECK-NEXT: ret2710 %head = insertelement <vscale x 8 x float> poison, float %b, i32 02711 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer2712 %vc = fcmp ogt <vscale x 8 x float> %va, %splat2713 ret <vscale x 8 x i1> %vc2714}2715 2716define <vscale x 8 x i1> @fcmp_oge_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) {2717; CHECK-LABEL: fcmp_oge_vv_nxv8f32:2718; CHECK: # %bb.0:2719; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2720; CHECK-NEXT: vmfle.vv v0, v12, v82721; CHECK-NEXT: ret2722 %vc = fcmp oge <vscale x 8 x float> %va, %vb2723 ret <vscale x 8 x i1> %vc2724}2725 2726define <vscale x 8 x i1> @fcmp_oge_vf_nxv8f32(<vscale x 8 x float> %va, float %b) {2727; CHECK-LABEL: fcmp_oge_vf_nxv8f32:2728; CHECK: # %bb.0:2729; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2730; CHECK-NEXT: vmfge.vf v0, v8, fa02731; CHECK-NEXT: ret2732 %head = insertelement <vscale x 8 x float> poison, float %b, i32 02733 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer2734 %vc = fcmp oge <vscale x 8 x float> %va, %splat2735 ret <vscale x 8 x i1> %vc2736}2737 2738define <vscale x 8 x i1> @fcmp_oge_fv_nxv8f32(<vscale x 8 x float> %va, float %b) {2739; CHECK-LABEL: fcmp_oge_fv_nxv8f32:2740; CHECK: # %bb.0:2741; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2742; CHECK-NEXT: vmfle.vf v0, v8, fa02743; CHECK-NEXT: ret2744 %head = insertelement <vscale x 8 x float> poison, float %b, i32 02745 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer2746 %vc = fcmp oge <vscale x 8 x float> %splat, %va2747 ret <vscale x 8 x i1> %vc2748}2749 2750define <vscale x 8 x i1> @fcmp_oge_vv_nxv8f32_nonans(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) #0 {2751; CHECK-LABEL: fcmp_oge_vv_nxv8f32_nonans:2752; CHECK: # %bb.0:2753; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2754; CHECK-NEXT: vmfle.vv v0, v12, v82755; CHECK-NEXT: ret2756 %vc = fcmp oge <vscale x 8 x float> %va, %vb2757 ret <vscale x 8 x i1> %vc2758}2759 2760define <vscale x 8 x i1> @fcmp_oge_vf_nxv8f32_nonans(<vscale x 8 x float> %va, float %b) #0 {2761; CHECK-LABEL: fcmp_oge_vf_nxv8f32_nonans:2762; CHECK: # %bb.0:2763; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2764; CHECK-NEXT: vmfge.vf v0, v8, fa02765; CHECK-NEXT: ret2766 %head = insertelement <vscale x 8 x float> poison, float %b, i32 02767 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer2768 %vc = fcmp oge <vscale x 8 x float> %va, %splat2769 ret <vscale x 8 x i1> %vc2770}2771 2772define <vscale x 8 x i1> @fcmp_olt_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) {2773; CHECK-LABEL: fcmp_olt_vv_nxv8f32:2774; CHECK: # %bb.0:2775; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2776; CHECK-NEXT: vmflt.vv v0, v8, v122777; CHECK-NEXT: ret2778 %vc = fcmp olt <vscale x 8 x float> %va, %vb2779 ret <vscale x 8 x i1> %vc2780}2781 2782define <vscale x 8 x i1> @fcmp_olt_vf_nxv8f32(<vscale x 8 x float> %va, float %b) {2783; CHECK-LABEL: fcmp_olt_vf_nxv8f32:2784; CHECK: # %bb.0:2785; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2786; CHECK-NEXT: vmflt.vf v0, v8, fa02787; CHECK-NEXT: ret2788 %head = insertelement <vscale x 8 x float> poison, float %b, i32 02789 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer2790 %vc = fcmp olt <vscale x 8 x float> %va, %splat2791 ret <vscale x 8 x i1> %vc2792}2793 2794define <vscale x 8 x i1> @fcmp_olt_fv_nxv8f32(<vscale x 8 x float> %va, float %b) {2795; CHECK-LABEL: fcmp_olt_fv_nxv8f32:2796; CHECK: # %bb.0:2797; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2798; CHECK-NEXT: vmfgt.vf v0, v8, fa02799; CHECK-NEXT: ret2800 %head = insertelement <vscale x 8 x float> poison, float %b, i32 02801 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer2802 %vc = fcmp olt <vscale x 8 x float> %splat, %va2803 ret <vscale x 8 x i1> %vc2804}2805 2806define <vscale x 8 x i1> @fcmp_olt_vv_nxv8f32_nonans(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) #0 {2807; CHECK-LABEL: fcmp_olt_vv_nxv8f32_nonans:2808; CHECK: # %bb.0:2809; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2810; CHECK-NEXT: vmflt.vv v0, v8, v122811; CHECK-NEXT: ret2812 %vc = fcmp olt <vscale x 8 x float> %va, %vb2813 ret <vscale x 8 x i1> %vc2814}2815 2816define <vscale x 8 x i1> @fcmp_olt_vf_nxv8f32_nonans(<vscale x 8 x float> %va, float %b) #0 {2817; CHECK-LABEL: fcmp_olt_vf_nxv8f32_nonans:2818; CHECK: # %bb.0:2819; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2820; CHECK-NEXT: vmflt.vf v0, v8, fa02821; CHECK-NEXT: ret2822 %head = insertelement <vscale x 8 x float> poison, float %b, i32 02823 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer2824 %vc = fcmp olt <vscale x 8 x float> %va, %splat2825 ret <vscale x 8 x i1> %vc2826}2827 2828define <vscale x 8 x i1> @fcmp_ole_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) {2829; CHECK-LABEL: fcmp_ole_vv_nxv8f32:2830; CHECK: # %bb.0:2831; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2832; CHECK-NEXT: vmfle.vv v0, v8, v122833; CHECK-NEXT: ret2834 %vc = fcmp ole <vscale x 8 x float> %va, %vb2835 ret <vscale x 8 x i1> %vc2836}2837 2838define <vscale x 8 x i1> @fcmp_ole_vf_nxv8f32(<vscale x 8 x float> %va, float %b) {2839; CHECK-LABEL: fcmp_ole_vf_nxv8f32:2840; CHECK: # %bb.0:2841; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2842; CHECK-NEXT: vmfle.vf v0, v8, fa02843; CHECK-NEXT: ret2844 %head = insertelement <vscale x 8 x float> poison, float %b, i32 02845 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer2846 %vc = fcmp ole <vscale x 8 x float> %va, %splat2847 ret <vscale x 8 x i1> %vc2848}2849 2850define <vscale x 8 x i1> @fcmp_ole_fv_nxv8f32(<vscale x 8 x float> %va, float %b) {2851; CHECK-LABEL: fcmp_ole_fv_nxv8f32:2852; CHECK: # %bb.0:2853; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2854; CHECK-NEXT: vmfge.vf v0, v8, fa02855; CHECK-NEXT: ret2856 %head = insertelement <vscale x 8 x float> poison, float %b, i32 02857 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer2858 %vc = fcmp ole <vscale x 8 x float> %splat, %va2859 ret <vscale x 8 x i1> %vc2860}2861 2862define <vscale x 8 x i1> @fcmp_ole_vv_nxv8f32_nonans(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) #0 {2863; CHECK-LABEL: fcmp_ole_vv_nxv8f32_nonans:2864; CHECK: # %bb.0:2865; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2866; CHECK-NEXT: vmfle.vv v0, v8, v122867; CHECK-NEXT: ret2868 %vc = fcmp ole <vscale x 8 x float> %va, %vb2869 ret <vscale x 8 x i1> %vc2870}2871 2872define <vscale x 8 x i1> @fcmp_ole_vf_nxv8f32_nonans(<vscale x 8 x float> %va, float %b) #0 {2873; CHECK-LABEL: fcmp_ole_vf_nxv8f32_nonans:2874; CHECK: # %bb.0:2875; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2876; CHECK-NEXT: vmfle.vf v0, v8, fa02877; CHECK-NEXT: ret2878 %head = insertelement <vscale x 8 x float> poison, float %b, i32 02879 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer2880 %vc = fcmp ole <vscale x 8 x float> %va, %splat2881 ret <vscale x 8 x i1> %vc2882}2883 2884define <vscale x 8 x i1> @fcmp_one_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) {2885; CHECK-LABEL: fcmp_one_vv_nxv8f32:2886; CHECK: # %bb.0:2887; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2888; CHECK-NEXT: vmflt.vv v16, v8, v122889; CHECK-NEXT: vmflt.vv v17, v12, v82890; CHECK-NEXT: vmor.mm v0, v17, v162891; CHECK-NEXT: ret2892 %vc = fcmp one <vscale x 8 x float> %va, %vb2893 ret <vscale x 8 x i1> %vc2894}2895 2896define <vscale x 8 x i1> @fcmp_one_vf_nxv8f32(<vscale x 8 x float> %va, float %b) {2897; CHECK-LABEL: fcmp_one_vf_nxv8f32:2898; CHECK: # %bb.0:2899; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2900; CHECK-NEXT: vmflt.vf v12, v8, fa02901; CHECK-NEXT: vmfgt.vf v13, v8, fa02902; CHECK-NEXT: vmor.mm v0, v13, v122903; CHECK-NEXT: ret2904 %head = insertelement <vscale x 8 x float> poison, float %b, i32 02905 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer2906 %vc = fcmp one <vscale x 8 x float> %va, %splat2907 ret <vscale x 8 x i1> %vc2908}2909 2910define <vscale x 8 x i1> @fcmp_one_fv_nxv8f32(<vscale x 8 x float> %va, float %b) {2911; CHECK-LABEL: fcmp_one_fv_nxv8f32:2912; CHECK: # %bb.0:2913; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2914; CHECK-NEXT: vmfgt.vf v12, v8, fa02915; CHECK-NEXT: vmflt.vf v13, v8, fa02916; CHECK-NEXT: vmor.mm v0, v13, v122917; CHECK-NEXT: ret2918 %head = insertelement <vscale x 8 x float> poison, float %b, i32 02919 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer2920 %vc = fcmp one <vscale x 8 x float> %splat, %va2921 ret <vscale x 8 x i1> %vc2922}2923 2924define <vscale x 8 x i1> @fcmp_one_vv_nxv8f32_nonans(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) #0 {2925; CHECK-LABEL: fcmp_one_vv_nxv8f32_nonans:2926; CHECK: # %bb.0:2927; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2928; CHECK-NEXT: vmfne.vv v0, v8, v122929; CHECK-NEXT: ret2930 %vc = fcmp one <vscale x 8 x float> %va, %vb2931 ret <vscale x 8 x i1> %vc2932}2933 2934define <vscale x 8 x i1> @fcmp_one_vf_nxv8f32_nonans(<vscale x 8 x float> %va, float %b) #0 {2935; CHECK-LABEL: fcmp_one_vf_nxv8f32_nonans:2936; CHECK: # %bb.0:2937; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2938; CHECK-NEXT: vmfne.vf v0, v8, fa02939; CHECK-NEXT: ret2940 %head = insertelement <vscale x 8 x float> poison, float %b, i32 02941 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer2942 %vc = fcmp one <vscale x 8 x float> %va, %splat2943 ret <vscale x 8 x i1> %vc2944}2945 2946define <vscale x 8 x i1> @fcmp_ord_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) {2947; CHECK-LABEL: fcmp_ord_vv_nxv8f32:2948; CHECK: # %bb.0:2949; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2950; CHECK-NEXT: vmfeq.vv v16, v12, v122951; CHECK-NEXT: vmfeq.vv v12, v8, v82952; CHECK-NEXT: vmand.mm v0, v12, v162953; CHECK-NEXT: ret2954 %vc = fcmp ord <vscale x 8 x float> %va, %vb2955 ret <vscale x 8 x i1> %vc2956}2957 2958define <vscale x 8 x i1> @fcmp_ord_vf_nxv8f32(<vscale x 8 x float> %va, float %b) {2959; CHECK-LABEL: fcmp_ord_vf_nxv8f32:2960; CHECK: # %bb.0:2961; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2962; CHECK-NEXT: vfmv.v.f v12, fa02963; CHECK-NEXT: vmfeq.vf v16, v12, fa02964; CHECK-NEXT: vmfeq.vv v12, v8, v82965; CHECK-NEXT: vmand.mm v0, v12, v162966; CHECK-NEXT: ret2967 %head = insertelement <vscale x 8 x float> poison, float %b, i32 02968 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer2969 %vc = fcmp ord <vscale x 8 x float> %va, %splat2970 ret <vscale x 8 x i1> %vc2971}2972 2973define <vscale x 8 x i1> @fcmp_ord_fv_nxv8f32(<vscale x 8 x float> %va, float %b) {2974; CHECK-LABEL: fcmp_ord_fv_nxv8f32:2975; CHECK: # %bb.0:2976; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2977; CHECK-NEXT: vfmv.v.f v12, fa02978; CHECK-NEXT: vmfeq.vf v16, v12, fa02979; CHECK-NEXT: vmfeq.vv v12, v8, v82980; CHECK-NEXT: vmand.mm v0, v16, v122981; CHECK-NEXT: ret2982 %head = insertelement <vscale x 8 x float> poison, float %b, i32 02983 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer2984 %vc = fcmp ord <vscale x 8 x float> %splat, %va2985 ret <vscale x 8 x i1> %vc2986}2987 2988define <vscale x 8 x i1> @fcmp_ord_vv_nxv8f32_nonans(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) #0 {2989; CHECK-LABEL: fcmp_ord_vv_nxv8f32_nonans:2990; CHECK: # %bb.0:2991; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma2992; CHECK-NEXT: vmfeq.vv v16, v12, v122993; CHECK-NEXT: vmfeq.vv v12, v8, v82994; CHECK-NEXT: vmand.mm v0, v12, v162995; CHECK-NEXT: ret2996 %vc = fcmp ord <vscale x 8 x float> %va, %vb2997 ret <vscale x 8 x i1> %vc2998}2999 3000define <vscale x 8 x i1> @fcmp_ord_vf_nxv8f32_nonans(<vscale x 8 x float> %va, float %b) #0 {3001; CHECK-LABEL: fcmp_ord_vf_nxv8f32_nonans:3002; CHECK: # %bb.0:3003; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3004; CHECK-NEXT: vfmv.v.f v12, fa03005; CHECK-NEXT: vmfeq.vf v16, v12, fa03006; CHECK-NEXT: vmfeq.vv v12, v8, v83007; CHECK-NEXT: vmand.mm v0, v12, v163008; CHECK-NEXT: ret3009 %head = insertelement <vscale x 8 x float> poison, float %b, i32 03010 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer3011 %vc = fcmp ord <vscale x 8 x float> %va, %splat3012 ret <vscale x 8 x i1> %vc3013}3014 3015define <vscale x 8 x i1> @fcmp_ueq_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) {3016; CHECK-LABEL: fcmp_ueq_vv_nxv8f32:3017; CHECK: # %bb.0:3018; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3019; CHECK-NEXT: vmflt.vv v16, v8, v123020; CHECK-NEXT: vmflt.vv v17, v12, v83021; CHECK-NEXT: vmnor.mm v0, v17, v163022; CHECK-NEXT: ret3023 %vc = fcmp ueq <vscale x 8 x float> %va, %vb3024 ret <vscale x 8 x i1> %vc3025}3026 3027define <vscale x 8 x i1> @fcmp_ueq_vf_nxv8f32(<vscale x 8 x float> %va, float %b) {3028; CHECK-LABEL: fcmp_ueq_vf_nxv8f32:3029; CHECK: # %bb.0:3030; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3031; CHECK-NEXT: vmflt.vf v12, v8, fa03032; CHECK-NEXT: vmfgt.vf v13, v8, fa03033; CHECK-NEXT: vmnor.mm v0, v13, v123034; CHECK-NEXT: ret3035 %head = insertelement <vscale x 8 x float> poison, float %b, i32 03036 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer3037 %vc = fcmp ueq <vscale x 8 x float> %va, %splat3038 ret <vscale x 8 x i1> %vc3039}3040 3041define <vscale x 8 x i1> @fcmp_ueq_fv_nxv8f32(<vscale x 8 x float> %va, float %b) {3042; CHECK-LABEL: fcmp_ueq_fv_nxv8f32:3043; CHECK: # %bb.0:3044; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3045; CHECK-NEXT: vmfgt.vf v12, v8, fa03046; CHECK-NEXT: vmflt.vf v13, v8, fa03047; CHECK-NEXT: vmnor.mm v0, v13, v123048; CHECK-NEXT: ret3049 %head = insertelement <vscale x 8 x float> poison, float %b, i32 03050 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer3051 %vc = fcmp ueq <vscale x 8 x float> %splat, %va3052 ret <vscale x 8 x i1> %vc3053}3054 3055define <vscale x 8 x i1> @fcmp_ueq_vv_nxv8f32_nonans(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) #0 {3056; CHECK-LABEL: fcmp_ueq_vv_nxv8f32_nonans:3057; CHECK: # %bb.0:3058; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3059; CHECK-NEXT: vmfeq.vv v0, v8, v123060; CHECK-NEXT: ret3061 %vc = fcmp ueq <vscale x 8 x float> %va, %vb3062 ret <vscale x 8 x i1> %vc3063}3064 3065define <vscale x 8 x i1> @fcmp_ueq_vf_nxv8f32_nonans(<vscale x 8 x float> %va, float %b) #0 {3066; CHECK-LABEL: fcmp_ueq_vf_nxv8f32_nonans:3067; CHECK: # %bb.0:3068; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3069; CHECK-NEXT: vmfeq.vf v0, v8, fa03070; CHECK-NEXT: ret3071 %head = insertelement <vscale x 8 x float> poison, float %b, i32 03072 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer3073 %vc = fcmp ueq <vscale x 8 x float> %va, %splat3074 ret <vscale x 8 x i1> %vc3075}3076 3077define <vscale x 8 x i1> @fcmp_ugt_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) {3078; CHECK-LABEL: fcmp_ugt_vv_nxv8f32:3079; CHECK: # %bb.0:3080; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3081; CHECK-NEXT: vmfle.vv v16, v8, v123082; CHECK-NEXT: vmnot.m v0, v163083; CHECK-NEXT: ret3084 %vc = fcmp ugt <vscale x 8 x float> %va, %vb3085 ret <vscale x 8 x i1> %vc3086}3087 3088define <vscale x 8 x i1> @fcmp_ugt_vf_nxv8f32(<vscale x 8 x float> %va, float %b) {3089; CHECK-LABEL: fcmp_ugt_vf_nxv8f32:3090; CHECK: # %bb.0:3091; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3092; CHECK-NEXT: vmfle.vf v12, v8, fa03093; CHECK-NEXT: vmnot.m v0, v123094; CHECK-NEXT: ret3095 %head = insertelement <vscale x 8 x float> poison, float %b, i32 03096 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer3097 %vc = fcmp ugt <vscale x 8 x float> %va, %splat3098 ret <vscale x 8 x i1> %vc3099}3100 3101define <vscale x 8 x i1> @fcmp_ugt_fv_nxv8f32(<vscale x 8 x float> %va, float %b) {3102; CHECK-LABEL: fcmp_ugt_fv_nxv8f32:3103; CHECK: # %bb.0:3104; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3105; CHECK-NEXT: vmfge.vf v12, v8, fa03106; CHECK-NEXT: vmnot.m v0, v123107; CHECK-NEXT: ret3108 %head = insertelement <vscale x 8 x float> poison, float %b, i32 03109 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer3110 %vc = fcmp ugt <vscale x 8 x float> %splat, %va3111 ret <vscale x 8 x i1> %vc3112}3113 3114define <vscale x 8 x i1> @fcmp_ugt_vv_nxv8f32_nonans(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) #0 {3115; CHECK-LABEL: fcmp_ugt_vv_nxv8f32_nonans:3116; CHECK: # %bb.0:3117; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3118; CHECK-NEXT: vmflt.vv v0, v12, v83119; CHECK-NEXT: ret3120 %vc = fcmp ugt <vscale x 8 x float> %va, %vb3121 ret <vscale x 8 x i1> %vc3122}3123 3124define <vscale x 8 x i1> @fcmp_ugt_vf_nxv8f32_nonans(<vscale x 8 x float> %va, float %b) #0 {3125; CHECK-LABEL: fcmp_ugt_vf_nxv8f32_nonans:3126; CHECK: # %bb.0:3127; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3128; CHECK-NEXT: vmfgt.vf v0, v8, fa03129; CHECK-NEXT: ret3130 %head = insertelement <vscale x 8 x float> poison, float %b, i32 03131 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer3132 %vc = fcmp ugt <vscale x 8 x float> %va, %splat3133 ret <vscale x 8 x i1> %vc3134}3135 3136define <vscale x 8 x i1> @fcmp_uge_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) {3137; CHECK-LABEL: fcmp_uge_vv_nxv8f32:3138; CHECK: # %bb.0:3139; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3140; CHECK-NEXT: vmflt.vv v16, v8, v123141; CHECK-NEXT: vmnot.m v0, v163142; CHECK-NEXT: ret3143 %vc = fcmp uge <vscale x 8 x float> %va, %vb3144 ret <vscale x 8 x i1> %vc3145}3146 3147define <vscale x 8 x i1> @fcmp_uge_vf_nxv8f32(<vscale x 8 x float> %va, float %b) {3148; CHECK-LABEL: fcmp_uge_vf_nxv8f32:3149; CHECK: # %bb.0:3150; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3151; CHECK-NEXT: vmflt.vf v12, v8, fa03152; CHECK-NEXT: vmnot.m v0, v123153; CHECK-NEXT: ret3154 %head = insertelement <vscale x 8 x float> poison, float %b, i32 03155 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer3156 %vc = fcmp uge <vscale x 8 x float> %va, %splat3157 ret <vscale x 8 x i1> %vc3158}3159 3160define <vscale x 8 x i1> @fcmp_uge_fv_nxv8f32(<vscale x 8 x float> %va, float %b) {3161; CHECK-LABEL: fcmp_uge_fv_nxv8f32:3162; CHECK: # %bb.0:3163; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3164; CHECK-NEXT: vmfgt.vf v12, v8, fa03165; CHECK-NEXT: vmnot.m v0, v123166; CHECK-NEXT: ret3167 %head = insertelement <vscale x 8 x float> poison, float %b, i32 03168 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer3169 %vc = fcmp uge <vscale x 8 x float> %splat, %va3170 ret <vscale x 8 x i1> %vc3171}3172 3173define <vscale x 8 x i1> @fcmp_uge_vv_nxv8f32_nonans(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) #0 {3174; CHECK-LABEL: fcmp_uge_vv_nxv8f32_nonans:3175; CHECK: # %bb.0:3176; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3177; CHECK-NEXT: vmfle.vv v0, v12, v83178; CHECK-NEXT: ret3179 %vc = fcmp uge <vscale x 8 x float> %va, %vb3180 ret <vscale x 8 x i1> %vc3181}3182 3183define <vscale x 8 x i1> @fcmp_uge_vf_nxv8f32_nonans(<vscale x 8 x float> %va, float %b) #0 {3184; CHECK-LABEL: fcmp_uge_vf_nxv8f32_nonans:3185; CHECK: # %bb.0:3186; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3187; CHECK-NEXT: vmfge.vf v0, v8, fa03188; CHECK-NEXT: ret3189 %head = insertelement <vscale x 8 x float> poison, float %b, i32 03190 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer3191 %vc = fcmp uge <vscale x 8 x float> %va, %splat3192 ret <vscale x 8 x i1> %vc3193}3194 3195define <vscale x 8 x i1> @fcmp_ult_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) {3196; CHECK-LABEL: fcmp_ult_vv_nxv8f32:3197; CHECK: # %bb.0:3198; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3199; CHECK-NEXT: vmfle.vv v16, v12, v83200; CHECK-NEXT: vmnot.m v0, v163201; CHECK-NEXT: ret3202 %vc = fcmp ult <vscale x 8 x float> %va, %vb3203 ret <vscale x 8 x i1> %vc3204}3205 3206define <vscale x 8 x i1> @fcmp_ult_vf_nxv8f32(<vscale x 8 x float> %va, float %b) {3207; CHECK-LABEL: fcmp_ult_vf_nxv8f32:3208; CHECK: # %bb.0:3209; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3210; CHECK-NEXT: vmfge.vf v12, v8, fa03211; CHECK-NEXT: vmnot.m v0, v123212; CHECK-NEXT: ret3213 %head = insertelement <vscale x 8 x float> poison, float %b, i32 03214 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer3215 %vc = fcmp ult <vscale x 8 x float> %va, %splat3216 ret <vscale x 8 x i1> %vc3217}3218 3219define <vscale x 8 x i1> @fcmp_ult_fv_nxv8f32(<vscale x 8 x float> %va, float %b) {3220; CHECK-LABEL: fcmp_ult_fv_nxv8f32:3221; CHECK: # %bb.0:3222; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3223; CHECK-NEXT: vmfle.vf v12, v8, fa03224; CHECK-NEXT: vmnot.m v0, v123225; CHECK-NEXT: ret3226 %head = insertelement <vscale x 8 x float> poison, float %b, i32 03227 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer3228 %vc = fcmp ult <vscale x 8 x float> %splat, %va3229 ret <vscale x 8 x i1> %vc3230}3231 3232define <vscale x 8 x i1> @fcmp_ult_vv_nxv8f32_nonans(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) #0 {3233; CHECK-LABEL: fcmp_ult_vv_nxv8f32_nonans:3234; CHECK: # %bb.0:3235; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3236; CHECK-NEXT: vmflt.vv v0, v8, v123237; CHECK-NEXT: ret3238 %vc = fcmp ult <vscale x 8 x float> %va, %vb3239 ret <vscale x 8 x i1> %vc3240}3241 3242define <vscale x 8 x i1> @fcmp_ult_vf_nxv8f32_nonans(<vscale x 8 x float> %va, float %b) #0 {3243; CHECK-LABEL: fcmp_ult_vf_nxv8f32_nonans:3244; CHECK: # %bb.0:3245; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3246; CHECK-NEXT: vmflt.vf v0, v8, fa03247; CHECK-NEXT: ret3248 %head = insertelement <vscale x 8 x float> poison, float %b, i32 03249 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer3250 %vc = fcmp ult <vscale x 8 x float> %va, %splat3251 ret <vscale x 8 x i1> %vc3252}3253 3254define <vscale x 8 x i1> @fcmp_ule_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) {3255; CHECK-LABEL: fcmp_ule_vv_nxv8f32:3256; CHECK: # %bb.0:3257; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3258; CHECK-NEXT: vmflt.vv v16, v12, v83259; CHECK-NEXT: vmnot.m v0, v163260; CHECK-NEXT: ret3261 %vc = fcmp ule <vscale x 8 x float> %va, %vb3262 ret <vscale x 8 x i1> %vc3263}3264 3265define <vscale x 8 x i1> @fcmp_ule_vf_nxv8f32(<vscale x 8 x float> %va, float %b) {3266; CHECK-LABEL: fcmp_ule_vf_nxv8f32:3267; CHECK: # %bb.0:3268; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3269; CHECK-NEXT: vmfgt.vf v12, v8, fa03270; CHECK-NEXT: vmnot.m v0, v123271; CHECK-NEXT: ret3272 %head = insertelement <vscale x 8 x float> poison, float %b, i32 03273 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer3274 %vc = fcmp ule <vscale x 8 x float> %va, %splat3275 ret <vscale x 8 x i1> %vc3276}3277 3278define <vscale x 8 x i1> @fcmp_ule_fv_nxv8f32(<vscale x 8 x float> %va, float %b) {3279; CHECK-LABEL: fcmp_ule_fv_nxv8f32:3280; CHECK: # %bb.0:3281; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3282; CHECK-NEXT: vmflt.vf v12, v8, fa03283; CHECK-NEXT: vmnot.m v0, v123284; CHECK-NEXT: ret3285 %head = insertelement <vscale x 8 x float> poison, float %b, i32 03286 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer3287 %vc = fcmp ule <vscale x 8 x float> %splat, %va3288 ret <vscale x 8 x i1> %vc3289}3290 3291define <vscale x 8 x i1> @fcmp_ule_vv_nxv8f32_nonans(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) #0 {3292; CHECK-LABEL: fcmp_ule_vv_nxv8f32_nonans:3293; CHECK: # %bb.0:3294; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3295; CHECK-NEXT: vmfle.vv v0, v8, v123296; CHECK-NEXT: ret3297 %vc = fcmp ule <vscale x 8 x float> %va, %vb3298 ret <vscale x 8 x i1> %vc3299}3300 3301define <vscale x 8 x i1> @fcmp_ule_vf_nxv8f32_nonans(<vscale x 8 x float> %va, float %b) #0 {3302; CHECK-LABEL: fcmp_ule_vf_nxv8f32_nonans:3303; CHECK: # %bb.0:3304; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3305; CHECK-NEXT: vmfle.vf v0, v8, fa03306; CHECK-NEXT: ret3307 %head = insertelement <vscale x 8 x float> poison, float %b, i32 03308 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer3309 %vc = fcmp ule <vscale x 8 x float> %va, %splat3310 ret <vscale x 8 x i1> %vc3311}3312 3313define <vscale x 8 x i1> @fcmp_une_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) {3314; CHECK-LABEL: fcmp_une_vv_nxv8f32:3315; CHECK: # %bb.0:3316; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3317; CHECK-NEXT: vmfne.vv v0, v8, v123318; CHECK-NEXT: ret3319 %vc = fcmp une <vscale x 8 x float> %va, %vb3320 ret <vscale x 8 x i1> %vc3321}3322 3323define <vscale x 8 x i1> @fcmp_une_vf_nxv8f32(<vscale x 8 x float> %va, float %b) {3324; CHECK-LABEL: fcmp_une_vf_nxv8f32:3325; CHECK: # %bb.0:3326; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3327; CHECK-NEXT: vmfne.vf v0, v8, fa03328; CHECK-NEXT: ret3329 %head = insertelement <vscale x 8 x float> poison, float %b, i32 03330 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer3331 %vc = fcmp une <vscale x 8 x float> %va, %splat3332 ret <vscale x 8 x i1> %vc3333}3334 3335define <vscale x 8 x i1> @fcmp_une_fv_nxv8f32(<vscale x 8 x float> %va, float %b) {3336; CHECK-LABEL: fcmp_une_fv_nxv8f32:3337; CHECK: # %bb.0:3338; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3339; CHECK-NEXT: vmfne.vf v0, v8, fa03340; CHECK-NEXT: ret3341 %head = insertelement <vscale x 8 x float> poison, float %b, i32 03342 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer3343 %vc = fcmp une <vscale x 8 x float> %splat, %va3344 ret <vscale x 8 x i1> %vc3345}3346 3347define <vscale x 8 x i1> @fcmp_une_vv_nxv8f32_nonans(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) #0 {3348; CHECK-LABEL: fcmp_une_vv_nxv8f32_nonans:3349; CHECK: # %bb.0:3350; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3351; CHECK-NEXT: vmfne.vv v0, v8, v123352; CHECK-NEXT: ret3353 %vc = fcmp une <vscale x 8 x float> %va, %vb3354 ret <vscale x 8 x i1> %vc3355}3356 3357define <vscale x 8 x i1> @fcmp_une_vf_nxv8f32_nonans(<vscale x 8 x float> %va, float %b) #0 {3358; CHECK-LABEL: fcmp_une_vf_nxv8f32_nonans:3359; CHECK: # %bb.0:3360; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3361; CHECK-NEXT: vmfne.vf v0, v8, fa03362; CHECK-NEXT: ret3363 %head = insertelement <vscale x 8 x float> poison, float %b, i32 03364 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer3365 %vc = fcmp une <vscale x 8 x float> %va, %splat3366 ret <vscale x 8 x i1> %vc3367}3368 3369define <vscale x 8 x i1> @fcmp_uno_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) {3370; CHECK-LABEL: fcmp_uno_vv_nxv8f32:3371; CHECK: # %bb.0:3372; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3373; CHECK-NEXT: vmfne.vv v16, v12, v123374; CHECK-NEXT: vmfne.vv v12, v8, v83375; CHECK-NEXT: vmor.mm v0, v12, v163376; CHECK-NEXT: ret3377 %vc = fcmp uno <vscale x 8 x float> %va, %vb3378 ret <vscale x 8 x i1> %vc3379}3380 3381define <vscale x 8 x i1> @fcmp_uno_vf_nxv8f32(<vscale x 8 x float> %va, float %b) {3382; CHECK-LABEL: fcmp_uno_vf_nxv8f32:3383; CHECK: # %bb.0:3384; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3385; CHECK-NEXT: vfmv.v.f v12, fa03386; CHECK-NEXT: vmfne.vf v16, v12, fa03387; CHECK-NEXT: vmfne.vv v12, v8, v83388; CHECK-NEXT: vmor.mm v0, v12, v163389; CHECK-NEXT: ret3390 %head = insertelement <vscale x 8 x float> poison, float %b, i32 03391 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer3392 %vc = fcmp uno <vscale x 8 x float> %va, %splat3393 ret <vscale x 8 x i1> %vc3394}3395 3396define <vscale x 8 x i1> @fcmp_uno_fv_nxv8f32(<vscale x 8 x float> %va, float %b) {3397; CHECK-LABEL: fcmp_uno_fv_nxv8f32:3398; CHECK: # %bb.0:3399; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3400; CHECK-NEXT: vfmv.v.f v12, fa03401; CHECK-NEXT: vmfne.vf v16, v12, fa03402; CHECK-NEXT: vmfne.vv v12, v8, v83403; CHECK-NEXT: vmor.mm v0, v16, v123404; CHECK-NEXT: ret3405 %head = insertelement <vscale x 8 x float> poison, float %b, i32 03406 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer3407 %vc = fcmp uno <vscale x 8 x float> %splat, %va3408 ret <vscale x 8 x i1> %vc3409}3410 3411define <vscale x 8 x i1> @fcmp_uno_vv_nxv8f32_nonans(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) #0 {3412; CHECK-LABEL: fcmp_uno_vv_nxv8f32_nonans:3413; CHECK: # %bb.0:3414; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3415; CHECK-NEXT: vmfne.vv v16, v12, v123416; CHECK-NEXT: vmfne.vv v12, v8, v83417; CHECK-NEXT: vmor.mm v0, v12, v163418; CHECK-NEXT: ret3419 %vc = fcmp uno <vscale x 8 x float> %va, %vb3420 ret <vscale x 8 x i1> %vc3421}3422 3423define <vscale x 8 x i1> @fcmp_uno_vf_nxv8f32_nonans(<vscale x 8 x float> %va, float %b) #0 {3424; CHECK-LABEL: fcmp_uno_vf_nxv8f32_nonans:3425; CHECK: # %bb.0:3426; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma3427; CHECK-NEXT: vfmv.v.f v12, fa03428; CHECK-NEXT: vmfne.vf v16, v12, fa03429; CHECK-NEXT: vmfne.vv v12, v8, v83430; CHECK-NEXT: vmor.mm v0, v12, v163431; CHECK-NEXT: ret3432 %head = insertelement <vscale x 8 x float> poison, float %b, i32 03433 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer3434 %vc = fcmp uno <vscale x 8 x float> %va, %splat3435 ret <vscale x 8 x i1> %vc3436}3437 3438define <vscale x 8 x i1> @fcmp_oeq_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) {3439; CHECK-LABEL: fcmp_oeq_vv_nxv8f64:3440; CHECK: # %bb.0:3441; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3442; CHECK-NEXT: vmfeq.vv v0, v8, v163443; CHECK-NEXT: ret3444 %vc = fcmp oeq <vscale x 8 x double> %va, %vb3445 ret <vscale x 8 x i1> %vc3446}3447 3448define <vscale x 8 x i1> @fcmp_oeq_vf_nxv8f64(<vscale x 8 x double> %va, double %b) {3449; CHECK-LABEL: fcmp_oeq_vf_nxv8f64:3450; CHECK: # %bb.0:3451; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3452; CHECK-NEXT: vmfeq.vf v0, v8, fa03453; CHECK-NEXT: ret3454 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03455 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3456 %vc = fcmp oeq <vscale x 8 x double> %va, %splat3457 ret <vscale x 8 x i1> %vc3458}3459 3460define <vscale x 8 x i1> @fcmp_oeq_fv_nxv8f64(<vscale x 8 x double> %va, double %b) {3461; CHECK-LABEL: fcmp_oeq_fv_nxv8f64:3462; CHECK: # %bb.0:3463; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3464; CHECK-NEXT: vmfeq.vf v0, v8, fa03465; CHECK-NEXT: ret3466 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03467 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3468 %vc = fcmp oeq <vscale x 8 x double> %splat, %va3469 ret <vscale x 8 x i1> %vc3470}3471 3472define <vscale x 8 x i1> @fcmp_oeq_vv_nxv8f64_nonans(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) #0 {3473; CHECK-LABEL: fcmp_oeq_vv_nxv8f64_nonans:3474; CHECK: # %bb.0:3475; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3476; CHECK-NEXT: vmfeq.vv v0, v8, v163477; CHECK-NEXT: ret3478 %vc = fcmp oeq <vscale x 8 x double> %va, %vb3479 ret <vscale x 8 x i1> %vc3480}3481 3482define <vscale x 8 x i1> @fcmp_oeq_vf_nxv8f64_nonans(<vscale x 8 x double> %va, double %b) #0 {3483; CHECK-LABEL: fcmp_oeq_vf_nxv8f64_nonans:3484; CHECK: # %bb.0:3485; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3486; CHECK-NEXT: vmfeq.vf v0, v8, fa03487; CHECK-NEXT: ret3488 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03489 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3490 %vc = fcmp oeq <vscale x 8 x double> %va, %splat3491 ret <vscale x 8 x i1> %vc3492}3493 3494define <vscale x 8 x i1> @fcmp_ogt_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) {3495; CHECK-LABEL: fcmp_ogt_vv_nxv8f64:3496; CHECK: # %bb.0:3497; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3498; CHECK-NEXT: vmflt.vv v0, v16, v83499; CHECK-NEXT: ret3500 %vc = fcmp ogt <vscale x 8 x double> %va, %vb3501 ret <vscale x 8 x i1> %vc3502}3503 3504define <vscale x 8 x i1> @fcmp_ogt_vf_nxv8f64(<vscale x 8 x double> %va, double %b) {3505; CHECK-LABEL: fcmp_ogt_vf_nxv8f64:3506; CHECK: # %bb.0:3507; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3508; CHECK-NEXT: vmfgt.vf v0, v8, fa03509; CHECK-NEXT: ret3510 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03511 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3512 %vc = fcmp ogt <vscale x 8 x double> %va, %splat3513 ret <vscale x 8 x i1> %vc3514}3515 3516define <vscale x 8 x i1> @fcmp_ogt_fv_nxv8f64(<vscale x 8 x double> %va, double %b) {3517; CHECK-LABEL: fcmp_ogt_fv_nxv8f64:3518; CHECK: # %bb.0:3519; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3520; CHECK-NEXT: vmflt.vf v0, v8, fa03521; CHECK-NEXT: ret3522 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03523 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3524 %vc = fcmp ogt <vscale x 8 x double> %splat, %va3525 ret <vscale x 8 x i1> %vc3526}3527 3528define <vscale x 8 x i1> @fcmp_ogt_vv_nxv8f64_nonans(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) #0 {3529; CHECK-LABEL: fcmp_ogt_vv_nxv8f64_nonans:3530; CHECK: # %bb.0:3531; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3532; CHECK-NEXT: vmflt.vv v0, v16, v83533; CHECK-NEXT: ret3534 %vc = fcmp ogt <vscale x 8 x double> %va, %vb3535 ret <vscale x 8 x i1> %vc3536}3537 3538define <vscale x 8 x i1> @fcmp_ogt_vf_nxv8f64_nonans(<vscale x 8 x double> %va, double %b) #0 {3539; CHECK-LABEL: fcmp_ogt_vf_nxv8f64_nonans:3540; CHECK: # %bb.0:3541; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3542; CHECK-NEXT: vmfgt.vf v0, v8, fa03543; CHECK-NEXT: ret3544 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03545 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3546 %vc = fcmp ogt <vscale x 8 x double> %va, %splat3547 ret <vscale x 8 x i1> %vc3548}3549 3550define <vscale x 8 x i1> @fcmp_oge_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) {3551; CHECK-LABEL: fcmp_oge_vv_nxv8f64:3552; CHECK: # %bb.0:3553; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3554; CHECK-NEXT: vmfle.vv v0, v16, v83555; CHECK-NEXT: ret3556 %vc = fcmp oge <vscale x 8 x double> %va, %vb3557 ret <vscale x 8 x i1> %vc3558}3559 3560define <vscale x 8 x i1> @fcmp_oge_vf_nxv8f64(<vscale x 8 x double> %va, double %b) {3561; CHECK-LABEL: fcmp_oge_vf_nxv8f64:3562; CHECK: # %bb.0:3563; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3564; CHECK-NEXT: vmfge.vf v0, v8, fa03565; CHECK-NEXT: ret3566 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03567 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3568 %vc = fcmp oge <vscale x 8 x double> %va, %splat3569 ret <vscale x 8 x i1> %vc3570}3571 3572define <vscale x 8 x i1> @fcmp_oge_fv_nxv8f64(<vscale x 8 x double> %va, double %b) {3573; CHECK-LABEL: fcmp_oge_fv_nxv8f64:3574; CHECK: # %bb.0:3575; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3576; CHECK-NEXT: vmfle.vf v0, v8, fa03577; CHECK-NEXT: ret3578 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03579 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3580 %vc = fcmp oge <vscale x 8 x double> %splat, %va3581 ret <vscale x 8 x i1> %vc3582}3583 3584define <vscale x 8 x i1> @fcmp_oge_vv_nxv8f64_nonans(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) #0 {3585; CHECK-LABEL: fcmp_oge_vv_nxv8f64_nonans:3586; CHECK: # %bb.0:3587; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3588; CHECK-NEXT: vmfle.vv v0, v16, v83589; CHECK-NEXT: ret3590 %vc = fcmp oge <vscale x 8 x double> %va, %vb3591 ret <vscale x 8 x i1> %vc3592}3593 3594define <vscale x 8 x i1> @fcmp_oge_vf_nxv8f64_nonans(<vscale x 8 x double> %va, double %b) #0 {3595; CHECK-LABEL: fcmp_oge_vf_nxv8f64_nonans:3596; CHECK: # %bb.0:3597; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3598; CHECK-NEXT: vmfge.vf v0, v8, fa03599; CHECK-NEXT: ret3600 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03601 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3602 %vc = fcmp oge <vscale x 8 x double> %va, %splat3603 ret <vscale x 8 x i1> %vc3604}3605 3606define <vscale x 8 x i1> @fcmp_olt_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) {3607; CHECK-LABEL: fcmp_olt_vv_nxv8f64:3608; CHECK: # %bb.0:3609; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3610; CHECK-NEXT: vmflt.vv v0, v8, v163611; CHECK-NEXT: ret3612 %vc = fcmp olt <vscale x 8 x double> %va, %vb3613 ret <vscale x 8 x i1> %vc3614}3615 3616define <vscale x 8 x i1> @fcmp_olt_vf_nxv8f64(<vscale x 8 x double> %va, double %b) {3617; CHECK-LABEL: fcmp_olt_vf_nxv8f64:3618; CHECK: # %bb.0:3619; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3620; CHECK-NEXT: vmflt.vf v0, v8, fa03621; CHECK-NEXT: ret3622 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03623 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3624 %vc = fcmp olt <vscale x 8 x double> %va, %splat3625 ret <vscale x 8 x i1> %vc3626}3627 3628define <vscale x 8 x i1> @fcmp_olt_fv_nxv8f64(<vscale x 8 x double> %va, double %b) {3629; CHECK-LABEL: fcmp_olt_fv_nxv8f64:3630; CHECK: # %bb.0:3631; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3632; CHECK-NEXT: vmfgt.vf v0, v8, fa03633; CHECK-NEXT: ret3634 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03635 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3636 %vc = fcmp olt <vscale x 8 x double> %splat, %va3637 ret <vscale x 8 x i1> %vc3638}3639 3640define <vscale x 8 x i1> @fcmp_olt_vv_nxv8f64_nonans(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) #0 {3641; CHECK-LABEL: fcmp_olt_vv_nxv8f64_nonans:3642; CHECK: # %bb.0:3643; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3644; CHECK-NEXT: vmflt.vv v0, v8, v163645; CHECK-NEXT: ret3646 %vc = fcmp olt <vscale x 8 x double> %va, %vb3647 ret <vscale x 8 x i1> %vc3648}3649 3650define <vscale x 8 x i1> @fcmp_olt_vf_nxv8f64_nonans(<vscale x 8 x double> %va, double %b) #0 {3651; CHECK-LABEL: fcmp_olt_vf_nxv8f64_nonans:3652; CHECK: # %bb.0:3653; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3654; CHECK-NEXT: vmflt.vf v0, v8, fa03655; CHECK-NEXT: ret3656 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03657 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3658 %vc = fcmp olt <vscale x 8 x double> %va, %splat3659 ret <vscale x 8 x i1> %vc3660}3661 3662define <vscale x 8 x i1> @fcmp_ole_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) {3663; CHECK-LABEL: fcmp_ole_vv_nxv8f64:3664; CHECK: # %bb.0:3665; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3666; CHECK-NEXT: vmfle.vv v0, v8, v163667; CHECK-NEXT: ret3668 %vc = fcmp ole <vscale x 8 x double> %va, %vb3669 ret <vscale x 8 x i1> %vc3670}3671 3672define <vscale x 8 x i1> @fcmp_ole_vf_nxv8f64(<vscale x 8 x double> %va, double %b) {3673; CHECK-LABEL: fcmp_ole_vf_nxv8f64:3674; CHECK: # %bb.0:3675; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3676; CHECK-NEXT: vmfle.vf v0, v8, fa03677; CHECK-NEXT: ret3678 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03679 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3680 %vc = fcmp ole <vscale x 8 x double> %va, %splat3681 ret <vscale x 8 x i1> %vc3682}3683 3684define <vscale x 8 x i1> @fcmp_ole_fv_nxv8f64(<vscale x 8 x double> %va, double %b) {3685; CHECK-LABEL: fcmp_ole_fv_nxv8f64:3686; CHECK: # %bb.0:3687; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3688; CHECK-NEXT: vmfge.vf v0, v8, fa03689; CHECK-NEXT: ret3690 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03691 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3692 %vc = fcmp ole <vscale x 8 x double> %splat, %va3693 ret <vscale x 8 x i1> %vc3694}3695 3696define <vscale x 8 x i1> @fcmp_ole_vv_nxv8f64_nonans(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) #0 {3697; CHECK-LABEL: fcmp_ole_vv_nxv8f64_nonans:3698; CHECK: # %bb.0:3699; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3700; CHECK-NEXT: vmfle.vv v0, v8, v163701; CHECK-NEXT: ret3702 %vc = fcmp ole <vscale x 8 x double> %va, %vb3703 ret <vscale x 8 x i1> %vc3704}3705 3706define <vscale x 8 x i1> @fcmp_ole_vf_nxv8f64_nonans(<vscale x 8 x double> %va, double %b) #0 {3707; CHECK-LABEL: fcmp_ole_vf_nxv8f64_nonans:3708; CHECK: # %bb.0:3709; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3710; CHECK-NEXT: vmfle.vf v0, v8, fa03711; CHECK-NEXT: ret3712 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03713 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3714 %vc = fcmp ole <vscale x 8 x double> %va, %splat3715 ret <vscale x 8 x i1> %vc3716}3717 3718define <vscale x 8 x i1> @fcmp_one_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) {3719; CHECK-LABEL: fcmp_one_vv_nxv8f64:3720; CHECK: # %bb.0:3721; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3722; CHECK-NEXT: vmflt.vv v24, v8, v163723; CHECK-NEXT: vmflt.vv v25, v16, v83724; CHECK-NEXT: vmor.mm v0, v25, v243725; CHECK-NEXT: ret3726 %vc = fcmp one <vscale x 8 x double> %va, %vb3727 ret <vscale x 8 x i1> %vc3728}3729 3730define <vscale x 8 x i1> @fcmp_one_vf_nxv8f64(<vscale x 8 x double> %va, double %b) {3731; CHECK-LABEL: fcmp_one_vf_nxv8f64:3732; CHECK: # %bb.0:3733; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3734; CHECK-NEXT: vmflt.vf v16, v8, fa03735; CHECK-NEXT: vmfgt.vf v17, v8, fa03736; CHECK-NEXT: vmor.mm v0, v17, v163737; CHECK-NEXT: ret3738 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03739 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3740 %vc = fcmp one <vscale x 8 x double> %va, %splat3741 ret <vscale x 8 x i1> %vc3742}3743 3744define <vscale x 8 x i1> @fcmp_one_fv_nxv8f64(<vscale x 8 x double> %va, double %b) {3745; CHECK-LABEL: fcmp_one_fv_nxv8f64:3746; CHECK: # %bb.0:3747; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3748; CHECK-NEXT: vmfgt.vf v16, v8, fa03749; CHECK-NEXT: vmflt.vf v17, v8, fa03750; CHECK-NEXT: vmor.mm v0, v17, v163751; CHECK-NEXT: ret3752 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03753 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3754 %vc = fcmp one <vscale x 8 x double> %splat, %va3755 ret <vscale x 8 x i1> %vc3756}3757 3758define <vscale x 8 x i1> @fcmp_one_vv_nxv8f64_nonans(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) #0 {3759; CHECK-LABEL: fcmp_one_vv_nxv8f64_nonans:3760; CHECK: # %bb.0:3761; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3762; CHECK-NEXT: vmfne.vv v0, v8, v163763; CHECK-NEXT: ret3764 %vc = fcmp one <vscale x 8 x double> %va, %vb3765 ret <vscale x 8 x i1> %vc3766}3767 3768define <vscale x 8 x i1> @fcmp_one_vf_nxv8f64_nonans(<vscale x 8 x double> %va, double %b) #0 {3769; CHECK-LABEL: fcmp_one_vf_nxv8f64_nonans:3770; CHECK: # %bb.0:3771; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3772; CHECK-NEXT: vmfne.vf v0, v8, fa03773; CHECK-NEXT: ret3774 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03775 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3776 %vc = fcmp one <vscale x 8 x double> %va, %splat3777 ret <vscale x 8 x i1> %vc3778}3779 3780define <vscale x 8 x i1> @fcmp_ord_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) {3781; CHECK-LABEL: fcmp_ord_vv_nxv8f64:3782; CHECK: # %bb.0:3783; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3784; CHECK-NEXT: vmfeq.vv v24, v16, v163785; CHECK-NEXT: vmfeq.vv v16, v8, v83786; CHECK-NEXT: vmand.mm v0, v16, v243787; CHECK-NEXT: ret3788 %vc = fcmp ord <vscale x 8 x double> %va, %vb3789 ret <vscale x 8 x i1> %vc3790}3791 3792define <vscale x 8 x i1> @fcmp_ord_vf_nxv8f64(<vscale x 8 x double> %va, double %b) {3793; CHECK-LABEL: fcmp_ord_vf_nxv8f64:3794; CHECK: # %bb.0:3795; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3796; CHECK-NEXT: vfmv.v.f v16, fa03797; CHECK-NEXT: vmfeq.vf v24, v16, fa03798; CHECK-NEXT: vmfeq.vv v16, v8, v83799; CHECK-NEXT: vmand.mm v0, v16, v243800; CHECK-NEXT: ret3801 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03802 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3803 %vc = fcmp ord <vscale x 8 x double> %va, %splat3804 ret <vscale x 8 x i1> %vc3805}3806 3807define <vscale x 8 x i1> @fcmp_ord_fv_nxv8f64(<vscale x 8 x double> %va, double %b) {3808; CHECK-LABEL: fcmp_ord_fv_nxv8f64:3809; CHECK: # %bb.0:3810; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3811; CHECK-NEXT: vfmv.v.f v16, fa03812; CHECK-NEXT: vmfeq.vf v24, v16, fa03813; CHECK-NEXT: vmfeq.vv v16, v8, v83814; CHECK-NEXT: vmand.mm v0, v24, v163815; CHECK-NEXT: ret3816 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03817 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3818 %vc = fcmp ord <vscale x 8 x double> %splat, %va3819 ret <vscale x 8 x i1> %vc3820}3821 3822define <vscale x 8 x i1> @fcmp_ord_vv_nxv8f64_nonans(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) #0 {3823; CHECK-LABEL: fcmp_ord_vv_nxv8f64_nonans:3824; CHECK: # %bb.0:3825; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3826; CHECK-NEXT: vmfeq.vv v24, v16, v163827; CHECK-NEXT: vmfeq.vv v16, v8, v83828; CHECK-NEXT: vmand.mm v0, v16, v243829; CHECK-NEXT: ret3830 %vc = fcmp ord <vscale x 8 x double> %va, %vb3831 ret <vscale x 8 x i1> %vc3832}3833 3834define <vscale x 8 x i1> @fcmp_ord_vf_nxv8f64_nonans(<vscale x 8 x double> %va, double %b) #0 {3835; CHECK-LABEL: fcmp_ord_vf_nxv8f64_nonans:3836; CHECK: # %bb.0:3837; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3838; CHECK-NEXT: vfmv.v.f v16, fa03839; CHECK-NEXT: vmfeq.vf v24, v16, fa03840; CHECK-NEXT: vmfeq.vv v16, v8, v83841; CHECK-NEXT: vmand.mm v0, v16, v243842; CHECK-NEXT: ret3843 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03844 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3845 %vc = fcmp ord <vscale x 8 x double> %va, %splat3846 ret <vscale x 8 x i1> %vc3847}3848 3849define <vscale x 8 x i1> @fcmp_ueq_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) {3850; CHECK-LABEL: fcmp_ueq_vv_nxv8f64:3851; CHECK: # %bb.0:3852; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3853; CHECK-NEXT: vmflt.vv v24, v8, v163854; CHECK-NEXT: vmflt.vv v25, v16, v83855; CHECK-NEXT: vmnor.mm v0, v25, v243856; CHECK-NEXT: ret3857 %vc = fcmp ueq <vscale x 8 x double> %va, %vb3858 ret <vscale x 8 x i1> %vc3859}3860 3861define <vscale x 8 x i1> @fcmp_ueq_vf_nxv8f64(<vscale x 8 x double> %va, double %b) {3862; CHECK-LABEL: fcmp_ueq_vf_nxv8f64:3863; CHECK: # %bb.0:3864; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3865; CHECK-NEXT: vmflt.vf v16, v8, fa03866; CHECK-NEXT: vmfgt.vf v17, v8, fa03867; CHECK-NEXT: vmnor.mm v0, v17, v163868; CHECK-NEXT: ret3869 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03870 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3871 %vc = fcmp ueq <vscale x 8 x double> %va, %splat3872 ret <vscale x 8 x i1> %vc3873}3874 3875define <vscale x 8 x i1> @fcmp_ueq_fv_nxv8f64(<vscale x 8 x double> %va, double %b) {3876; CHECK-LABEL: fcmp_ueq_fv_nxv8f64:3877; CHECK: # %bb.0:3878; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3879; CHECK-NEXT: vmfgt.vf v16, v8, fa03880; CHECK-NEXT: vmflt.vf v17, v8, fa03881; CHECK-NEXT: vmnor.mm v0, v17, v163882; CHECK-NEXT: ret3883 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03884 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3885 %vc = fcmp ueq <vscale x 8 x double> %splat, %va3886 ret <vscale x 8 x i1> %vc3887}3888 3889define <vscale x 8 x i1> @fcmp_ueq_vv_nxv8f64_nonans(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) #0 {3890; CHECK-LABEL: fcmp_ueq_vv_nxv8f64_nonans:3891; CHECK: # %bb.0:3892; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3893; CHECK-NEXT: vmfeq.vv v0, v8, v163894; CHECK-NEXT: ret3895 %vc = fcmp ueq <vscale x 8 x double> %va, %vb3896 ret <vscale x 8 x i1> %vc3897}3898 3899define <vscale x 8 x i1> @fcmp_ueq_vf_nxv8f64_nonans(<vscale x 8 x double> %va, double %b) #0 {3900; CHECK-LABEL: fcmp_ueq_vf_nxv8f64_nonans:3901; CHECK: # %bb.0:3902; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3903; CHECK-NEXT: vmfeq.vf v0, v8, fa03904; CHECK-NEXT: ret3905 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03906 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3907 %vc = fcmp ueq <vscale x 8 x double> %va, %splat3908 ret <vscale x 8 x i1> %vc3909}3910 3911define <vscale x 8 x i1> @fcmp_ugt_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) {3912; CHECK-LABEL: fcmp_ugt_vv_nxv8f64:3913; CHECK: # %bb.0:3914; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3915; CHECK-NEXT: vmfle.vv v24, v8, v163916; CHECK-NEXT: vmnot.m v0, v243917; CHECK-NEXT: ret3918 %vc = fcmp ugt <vscale x 8 x double> %va, %vb3919 ret <vscale x 8 x i1> %vc3920}3921 3922define <vscale x 8 x i1> @fcmp_ugt_vf_nxv8f64(<vscale x 8 x double> %va, double %b) {3923; CHECK-LABEL: fcmp_ugt_vf_nxv8f64:3924; CHECK: # %bb.0:3925; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3926; CHECK-NEXT: vmfle.vf v16, v8, fa03927; CHECK-NEXT: vmnot.m v0, v163928; CHECK-NEXT: ret3929 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03930 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3931 %vc = fcmp ugt <vscale x 8 x double> %va, %splat3932 ret <vscale x 8 x i1> %vc3933}3934 3935define <vscale x 8 x i1> @fcmp_ugt_fv_nxv8f64(<vscale x 8 x double> %va, double %b) {3936; CHECK-LABEL: fcmp_ugt_fv_nxv8f64:3937; CHECK: # %bb.0:3938; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3939; CHECK-NEXT: vmfge.vf v16, v8, fa03940; CHECK-NEXT: vmnot.m v0, v163941; CHECK-NEXT: ret3942 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03943 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3944 %vc = fcmp ugt <vscale x 8 x double> %splat, %va3945 ret <vscale x 8 x i1> %vc3946}3947 3948define <vscale x 8 x i1> @fcmp_ugt_vv_nxv8f64_nonans(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) #0 {3949; CHECK-LABEL: fcmp_ugt_vv_nxv8f64_nonans:3950; CHECK: # %bb.0:3951; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3952; CHECK-NEXT: vmflt.vv v0, v16, v83953; CHECK-NEXT: ret3954 %vc = fcmp ugt <vscale x 8 x double> %va, %vb3955 ret <vscale x 8 x i1> %vc3956}3957 3958define <vscale x 8 x i1> @fcmp_ugt_vf_nxv8f64_nonans(<vscale x 8 x double> %va, double %b) #0 {3959; CHECK-LABEL: fcmp_ugt_vf_nxv8f64_nonans:3960; CHECK: # %bb.0:3961; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3962; CHECK-NEXT: vmfgt.vf v0, v8, fa03963; CHECK-NEXT: ret3964 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03965 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3966 %vc = fcmp ugt <vscale x 8 x double> %va, %splat3967 ret <vscale x 8 x i1> %vc3968}3969 3970define <vscale x 8 x i1> @fcmp_uge_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) {3971; CHECK-LABEL: fcmp_uge_vv_nxv8f64:3972; CHECK: # %bb.0:3973; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3974; CHECK-NEXT: vmflt.vv v24, v8, v163975; CHECK-NEXT: vmnot.m v0, v243976; CHECK-NEXT: ret3977 %vc = fcmp uge <vscale x 8 x double> %va, %vb3978 ret <vscale x 8 x i1> %vc3979}3980 3981define <vscale x 8 x i1> @fcmp_uge_vf_nxv8f64(<vscale x 8 x double> %va, double %b) {3982; CHECK-LABEL: fcmp_uge_vf_nxv8f64:3983; CHECK: # %bb.0:3984; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3985; CHECK-NEXT: vmflt.vf v16, v8, fa03986; CHECK-NEXT: vmnot.m v0, v163987; CHECK-NEXT: ret3988 %head = insertelement <vscale x 8 x double> poison, double %b, i32 03989 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer3990 %vc = fcmp uge <vscale x 8 x double> %va, %splat3991 ret <vscale x 8 x i1> %vc3992}3993 3994define <vscale x 8 x i1> @fcmp_uge_fv_nxv8f64(<vscale x 8 x double> %va, double %b) {3995; CHECK-LABEL: fcmp_uge_fv_nxv8f64:3996; CHECK: # %bb.0:3997; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma3998; CHECK-NEXT: vmfgt.vf v16, v8, fa03999; CHECK-NEXT: vmnot.m v0, v164000; CHECK-NEXT: ret4001 %head = insertelement <vscale x 8 x double> poison, double %b, i32 04002 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer4003 %vc = fcmp uge <vscale x 8 x double> %splat, %va4004 ret <vscale x 8 x i1> %vc4005}4006 4007define <vscale x 8 x i1> @fcmp_uge_vv_nxv8f64_nonans(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) #0 {4008; CHECK-LABEL: fcmp_uge_vv_nxv8f64_nonans:4009; CHECK: # %bb.0:4010; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma4011; CHECK-NEXT: vmfle.vv v0, v16, v84012; CHECK-NEXT: ret4013 %vc = fcmp uge <vscale x 8 x double> %va, %vb4014 ret <vscale x 8 x i1> %vc4015}4016 4017define <vscale x 8 x i1> @fcmp_uge_vf_nxv8f64_nonans(<vscale x 8 x double> %va, double %b) #0 {4018; CHECK-LABEL: fcmp_uge_vf_nxv8f64_nonans:4019; CHECK: # %bb.0:4020; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma4021; CHECK-NEXT: vmfge.vf v0, v8, fa04022; CHECK-NEXT: ret4023 %head = insertelement <vscale x 8 x double> poison, double %b, i32 04024 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer4025 %vc = fcmp uge <vscale x 8 x double> %va, %splat4026 ret <vscale x 8 x i1> %vc4027}4028 4029define <vscale x 8 x i1> @fcmp_ult_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) {4030; CHECK-LABEL: fcmp_ult_vv_nxv8f64:4031; CHECK: # %bb.0:4032; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma4033; CHECK-NEXT: vmfle.vv v24, v16, v84034; CHECK-NEXT: vmnot.m v0, v244035; CHECK-NEXT: ret4036 %vc = fcmp ult <vscale x 8 x double> %va, %vb4037 ret <vscale x 8 x i1> %vc4038}4039 4040define <vscale x 8 x i1> @fcmp_ult_vf_nxv8f64(<vscale x 8 x double> %va, double %b) {4041; CHECK-LABEL: fcmp_ult_vf_nxv8f64:4042; CHECK: # %bb.0:4043; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma4044; CHECK-NEXT: vmfge.vf v16, v8, fa04045; CHECK-NEXT: vmnot.m v0, v164046; CHECK-NEXT: ret4047 %head = insertelement <vscale x 8 x double> poison, double %b, i32 04048 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer4049 %vc = fcmp ult <vscale x 8 x double> %va, %splat4050 ret <vscale x 8 x i1> %vc4051}4052 4053define <vscale x 8 x i1> @fcmp_ult_fv_nxv8f64(<vscale x 8 x double> %va, double %b) {4054; CHECK-LABEL: fcmp_ult_fv_nxv8f64:4055; CHECK: # %bb.0:4056; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma4057; CHECK-NEXT: vmfle.vf v16, v8, fa04058; CHECK-NEXT: vmnot.m v0, v164059; CHECK-NEXT: ret4060 %head = insertelement <vscale x 8 x double> poison, double %b, i32 04061 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer4062 %vc = fcmp ult <vscale x 8 x double> %splat, %va4063 ret <vscale x 8 x i1> %vc4064}4065 4066define <vscale x 8 x i1> @fcmp_ult_vv_nxv8f64_nonans(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) #0 {4067; CHECK-LABEL: fcmp_ult_vv_nxv8f64_nonans:4068; CHECK: # %bb.0:4069; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma4070; CHECK-NEXT: vmflt.vv v0, v8, v164071; CHECK-NEXT: ret4072 %vc = fcmp ult <vscale x 8 x double> %va, %vb4073 ret <vscale x 8 x i1> %vc4074}4075 4076define <vscale x 8 x i1> @fcmp_ult_vf_nxv8f64_nonans(<vscale x 8 x double> %va, double %b) #0 {4077; CHECK-LABEL: fcmp_ult_vf_nxv8f64_nonans:4078; CHECK: # %bb.0:4079; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma4080; CHECK-NEXT: vmflt.vf v0, v8, fa04081; CHECK-NEXT: ret4082 %head = insertelement <vscale x 8 x double> poison, double %b, i32 04083 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer4084 %vc = fcmp ult <vscale x 8 x double> %va, %splat4085 ret <vscale x 8 x i1> %vc4086}4087 4088define <vscale x 8 x i1> @fcmp_ule_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) {4089; CHECK-LABEL: fcmp_ule_vv_nxv8f64:4090; CHECK: # %bb.0:4091; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma4092; CHECK-NEXT: vmflt.vv v24, v16, v84093; CHECK-NEXT: vmnot.m v0, v244094; CHECK-NEXT: ret4095 %vc = fcmp ule <vscale x 8 x double> %va, %vb4096 ret <vscale x 8 x i1> %vc4097}4098 4099define <vscale x 8 x i1> @fcmp_ule_vf_nxv8f64(<vscale x 8 x double> %va, double %b) {4100; CHECK-LABEL: fcmp_ule_vf_nxv8f64:4101; CHECK: # %bb.0:4102; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma4103; CHECK-NEXT: vmfgt.vf v16, v8, fa04104; CHECK-NEXT: vmnot.m v0, v164105; CHECK-NEXT: ret4106 %head = insertelement <vscale x 8 x double> poison, double %b, i32 04107 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer4108 %vc = fcmp ule <vscale x 8 x double> %va, %splat4109 ret <vscale x 8 x i1> %vc4110}4111 4112define <vscale x 8 x i1> @fcmp_ule_fv_nxv8f64(<vscale x 8 x double> %va, double %b) {4113; CHECK-LABEL: fcmp_ule_fv_nxv8f64:4114; CHECK: # %bb.0:4115; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma4116; CHECK-NEXT: vmflt.vf v16, v8, fa04117; CHECK-NEXT: vmnot.m v0, v164118; CHECK-NEXT: ret4119 %head = insertelement <vscale x 8 x double> poison, double %b, i32 04120 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer4121 %vc = fcmp ule <vscale x 8 x double> %splat, %va4122 ret <vscale x 8 x i1> %vc4123}4124 4125define <vscale x 8 x i1> @fcmp_ule_vv_nxv8f64_nonans(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) #0 {4126; CHECK-LABEL: fcmp_ule_vv_nxv8f64_nonans:4127; CHECK: # %bb.0:4128; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma4129; CHECK-NEXT: vmfle.vv v0, v8, v164130; CHECK-NEXT: ret4131 %vc = fcmp ule <vscale x 8 x double> %va, %vb4132 ret <vscale x 8 x i1> %vc4133}4134 4135define <vscale x 8 x i1> @fcmp_ule_vf_nxv8f64_nonans(<vscale x 8 x double> %va, double %b) #0 {4136; CHECK-LABEL: fcmp_ule_vf_nxv8f64_nonans:4137; CHECK: # %bb.0:4138; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma4139; CHECK-NEXT: vmfle.vf v0, v8, fa04140; CHECK-NEXT: ret4141 %head = insertelement <vscale x 8 x double> poison, double %b, i32 04142 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer4143 %vc = fcmp ule <vscale x 8 x double> %va, %splat4144 ret <vscale x 8 x i1> %vc4145}4146 4147define <vscale x 8 x i1> @fcmp_une_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) {4148; CHECK-LABEL: fcmp_une_vv_nxv8f64:4149; CHECK: # %bb.0:4150; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma4151; CHECK-NEXT: vmfne.vv v0, v8, v164152; CHECK-NEXT: ret4153 %vc = fcmp une <vscale x 8 x double> %va, %vb4154 ret <vscale x 8 x i1> %vc4155}4156 4157define <vscale x 8 x i1> @fcmp_une_vf_nxv8f64(<vscale x 8 x double> %va, double %b) {4158; CHECK-LABEL: fcmp_une_vf_nxv8f64:4159; CHECK: # %bb.0:4160; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma4161; CHECK-NEXT: vmfne.vf v0, v8, fa04162; CHECK-NEXT: ret4163 %head = insertelement <vscale x 8 x double> poison, double %b, i32 04164 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer4165 %vc = fcmp une <vscale x 8 x double> %va, %splat4166 ret <vscale x 8 x i1> %vc4167}4168 4169define <vscale x 8 x i1> @fcmp_une_fv_nxv8f64(<vscale x 8 x double> %va, double %b) {4170; CHECK-LABEL: fcmp_une_fv_nxv8f64:4171; CHECK: # %bb.0:4172; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma4173; CHECK-NEXT: vmfne.vf v0, v8, fa04174; CHECK-NEXT: ret4175 %head = insertelement <vscale x 8 x double> poison, double %b, i32 04176 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer4177 %vc = fcmp une <vscale x 8 x double> %splat, %va4178 ret <vscale x 8 x i1> %vc4179}4180 4181define <vscale x 8 x i1> @fcmp_une_vv_nxv8f64_nonans(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) #0 {4182; CHECK-LABEL: fcmp_une_vv_nxv8f64_nonans:4183; CHECK: # %bb.0:4184; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma4185; CHECK-NEXT: vmfne.vv v0, v8, v164186; CHECK-NEXT: ret4187 %vc = fcmp une <vscale x 8 x double> %va, %vb4188 ret <vscale x 8 x i1> %vc4189}4190 4191define <vscale x 8 x i1> @fcmp_une_vf_nxv8f64_nonans(<vscale x 8 x double> %va, double %b) #0 {4192; CHECK-LABEL: fcmp_une_vf_nxv8f64_nonans:4193; CHECK: # %bb.0:4194; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma4195; CHECK-NEXT: vmfne.vf v0, v8, fa04196; CHECK-NEXT: ret4197 %head = insertelement <vscale x 8 x double> poison, double %b, i32 04198 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer4199 %vc = fcmp une <vscale x 8 x double> %va, %splat4200 ret <vscale x 8 x i1> %vc4201}4202 4203define <vscale x 8 x i1> @fcmp_uno_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) {4204; CHECK-LABEL: fcmp_uno_vv_nxv8f64:4205; CHECK: # %bb.0:4206; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma4207; CHECK-NEXT: vmfne.vv v24, v16, v164208; CHECK-NEXT: vmfne.vv v16, v8, v84209; CHECK-NEXT: vmor.mm v0, v16, v244210; CHECK-NEXT: ret4211 %vc = fcmp uno <vscale x 8 x double> %va, %vb4212 ret <vscale x 8 x i1> %vc4213}4214 4215define <vscale x 8 x i1> @fcmp_uno_vf_nxv8f64(<vscale x 8 x double> %va, double %b) {4216; CHECK-LABEL: fcmp_uno_vf_nxv8f64:4217; CHECK: # %bb.0:4218; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma4219; CHECK-NEXT: vfmv.v.f v16, fa04220; CHECK-NEXT: vmfne.vf v24, v16, fa04221; CHECK-NEXT: vmfne.vv v16, v8, v84222; CHECK-NEXT: vmor.mm v0, v16, v244223; CHECK-NEXT: ret4224 %head = insertelement <vscale x 8 x double> poison, double %b, i32 04225 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer4226 %vc = fcmp uno <vscale x 8 x double> %va, %splat4227 ret <vscale x 8 x i1> %vc4228}4229 4230define <vscale x 8 x i1> @fcmp_uno_fv_nxv8f64(<vscale x 8 x double> %va, double %b) {4231; CHECK-LABEL: fcmp_uno_fv_nxv8f64:4232; CHECK: # %bb.0:4233; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma4234; CHECK-NEXT: vfmv.v.f v16, fa04235; CHECK-NEXT: vmfne.vf v24, v16, fa04236; CHECK-NEXT: vmfne.vv v16, v8, v84237; CHECK-NEXT: vmor.mm v0, v24, v164238; CHECK-NEXT: ret4239 %head = insertelement <vscale x 8 x double> poison, double %b, i32 04240 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer4241 %vc = fcmp uno <vscale x 8 x double> %splat, %va4242 ret <vscale x 8 x i1> %vc4243}4244 4245define <vscale x 8 x i1> @fcmp_uno_vv_nxv8f64_nonans(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) #0 {4246; CHECK-LABEL: fcmp_uno_vv_nxv8f64_nonans:4247; CHECK: # %bb.0:4248; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma4249; CHECK-NEXT: vmfne.vv v24, v16, v164250; CHECK-NEXT: vmfne.vv v16, v8, v84251; CHECK-NEXT: vmor.mm v0, v16, v244252; CHECK-NEXT: ret4253 %vc = fcmp uno <vscale x 8 x double> %va, %vb4254 ret <vscale x 8 x i1> %vc4255}4256 4257define <vscale x 8 x i1> @fcmp_uno_vf_nxv8f64_nonans(<vscale x 8 x double> %va, double %b) #0 {4258; CHECK-LABEL: fcmp_uno_vf_nxv8f64_nonans:4259; CHECK: # %bb.0:4260; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma4261; CHECK-NEXT: vfmv.v.f v16, fa04262; CHECK-NEXT: vmfne.vf v24, v16, fa04263; CHECK-NEXT: vmfne.vv v16, v8, v84264; CHECK-NEXT: vmor.mm v0, v16, v244265; CHECK-NEXT: ret4266 %head = insertelement <vscale x 8 x double> poison, double %b, i32 04267 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer4268 %vc = fcmp uno <vscale x 8 x double> %va, %splat4269 ret <vscale x 8 x i1> %vc4270}4271 4272; This fcmp/setcc is split and so we find a scalable-vector mask CONCAT_VECTOR4273; node. Ensure we correctly (custom) lower this.4274define <vscale x 16 x i1> @fcmp_oeq_vf_nx16f64(<vscale x 16 x double> %va) {4275; RV32-LABEL: fcmp_oeq_vf_nx16f64:4276; RV32: # %bb.0:4277; RV32-NEXT: fcvt.d.w fa5, zero4278; RV32-NEXT: csrr a0, vlenb4279; RV32-NEXT: vsetvli a1, zero, e64, m8, ta, ma4280; RV32-NEXT: vmfeq.vf v24, v16, fa54281; RV32-NEXT: vmfeq.vf v0, v8, fa54282; RV32-NEXT: srli a0, a0, 34283; RV32-NEXT: vsetvli a1, zero, e8, mf4, ta, ma4284; RV32-NEXT: vslideup.vx v0, v24, a04285; RV32-NEXT: ret4286;4287; RV64-LABEL: fcmp_oeq_vf_nx16f64:4288; RV64: # %bb.0:4289; RV64-NEXT: fmv.d.x fa5, zero4290; RV64-NEXT: csrr a0, vlenb4291; RV64-NEXT: vsetvli a1, zero, e64, m8, ta, ma4292; RV64-NEXT: vmfeq.vf v24, v16, fa54293; RV64-NEXT: vmfeq.vf v0, v8, fa54294; RV64-NEXT: srli a0, a0, 34295; RV64-NEXT: vsetvli a1, zero, e8, mf4, ta, ma4296; RV64-NEXT: vslideup.vx v0, v24, a04297; RV64-NEXT: ret4298;4299; ZVFHMIN32-LABEL: fcmp_oeq_vf_nx16f64:4300; ZVFHMIN32: # %bb.0:4301; ZVFHMIN32-NEXT: fcvt.d.w fa5, zero4302; ZVFHMIN32-NEXT: csrr a0, vlenb4303; ZVFHMIN32-NEXT: vsetvli a1, zero, e64, m8, ta, ma4304; ZVFHMIN32-NEXT: vmfeq.vf v24, v16, fa54305; ZVFHMIN32-NEXT: vmfeq.vf v0, v8, fa54306; ZVFHMIN32-NEXT: srli a0, a0, 34307; ZVFHMIN32-NEXT: vsetvli a1, zero, e8, mf4, ta, ma4308; ZVFHMIN32-NEXT: vslideup.vx v0, v24, a04309; ZVFHMIN32-NEXT: ret4310;4311; ZVFHMIN64-LABEL: fcmp_oeq_vf_nx16f64:4312; ZVFHMIN64: # %bb.0:4313; ZVFHMIN64-NEXT: fmv.d.x fa5, zero4314; ZVFHMIN64-NEXT: csrr a0, vlenb4315; ZVFHMIN64-NEXT: vsetvli a1, zero, e64, m8, ta, ma4316; ZVFHMIN64-NEXT: vmfeq.vf v24, v16, fa54317; ZVFHMIN64-NEXT: vmfeq.vf v0, v8, fa54318; ZVFHMIN64-NEXT: srli a0, a0, 34319; ZVFHMIN64-NEXT: vsetvli a1, zero, e8, mf4, ta, ma4320; ZVFHMIN64-NEXT: vslideup.vx v0, v24, a04321; ZVFHMIN64-NEXT: ret4322 %vc = fcmp oeq <vscale x 16 x double> %va, zeroinitializer4323 ret <vscale x 16 x i1> %vc4324}4325 4326attributes #0 = { "no-nans-fp-math"="true" }4327