brintos

brintos / llvm-project-archived public Read only

0
0
Text · 170.2 KiB · ff923ef Raw
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