@@ -1663,12 +1663,42 @@ AArch64TargetLowering::AArch64TargetLowering(const TargetMachine &TM,
16631663 for (auto VT : {MVT::nxv2bf16, MVT::nxv4bf16, MVT::nxv8bf16}) {
16641664 setOperationAction(ISD::BITCAST, VT, Custom);
16651665 setOperationAction(ISD::CONCAT_VECTORS, VT, Custom);
1666+ setOperationAction(ISD::FABS, VT, Legal);
1667+ setOperationAction(ISD::FNEG, VT, Legal);
16661668 setOperationAction(ISD::FP_EXTEND, VT, Custom);
16671669 setOperationAction(ISD::FP_ROUND, VT, Custom);
16681670 setOperationAction(ISD::MLOAD, VT, Custom);
16691671 setOperationAction(ISD::INSERT_SUBVECTOR, VT, Custom);
16701672 setOperationAction(ISD::SPLAT_VECTOR, VT, Legal);
16711673 setOperationAction(ISD::VECTOR_SPLICE, VT, Custom);
1674+
1675+ if (Subtarget->hasSVEB16B16()) {
1676+ setOperationAction(ISD::FADD, VT, Legal);
1677+ setOperationAction(ISD::FMA, VT, Custom);
1678+ setOperationAction(ISD::FMAXIMUM, VT, Custom);
1679+ setOperationAction(ISD::FMAXNUM, VT, Custom);
1680+ setOperationAction(ISD::FMINIMUM, VT, Custom);
1681+ setOperationAction(ISD::FMINNUM, VT, Custom);
1682+ setOperationAction(ISD::FMUL, VT, Legal);
1683+ setOperationAction(ISD::FSUB, VT, Legal);
1684+ }
1685+ }
1686+
1687+ for (auto Opcode :
1688+ {ISD::FCEIL, ISD::FDIV, ISD::FFLOOR, ISD::FNEARBYINT, ISD::FRINT,
1689+ ISD::FROUND, ISD::FROUNDEVEN, ISD::FSQRT, ISD::FTRUNC}) {
1690+ setOperationPromotedToType(Opcode, MVT::nxv2bf16, MVT::nxv2f32);
1691+ setOperationPromotedToType(Opcode, MVT::nxv4bf16, MVT::nxv4f32);
1692+ setOperationAction(Opcode, MVT::nxv8bf16, Expand);
1693+ }
1694+
1695+ if (!Subtarget->hasSVEB16B16()) {
1696+ for (auto Opcode : {ISD::FADD, ISD::FMA, ISD::FMAXIMUM, ISD::FMAXNUM,
1697+ ISD::FMINIMUM, ISD::FMINNUM, ISD::FMUL, ISD::FSUB}) {
1698+ setOperationPromotedToType(Opcode, MVT::nxv2bf16, MVT::nxv2f32);
1699+ setOperationPromotedToType(Opcode, MVT::nxv4bf16, MVT::nxv4f32);
1700+ setOperationAction(Opcode, MVT::nxv8bf16, Expand);
1701+ }
16721702 }
16731703
16741704 setOperationAction(ISD::INTRINSIC_WO_CHAIN, MVT::i8, Custom);
0 commit comments