@@ -1499,8 +1499,9 @@ HexagonTargetLowering::HexagonTargetLowering(const TargetMachine &TM,
14991499 // - indexed loads and stores (pre-/post-incremented),
15001500 // - ANY_EXTEND_VECTOR_INREG, ATOMIC_CMP_SWAP_WITH_SUCCESS, CONCAT_VECTORS,
15011501 // ConstantFP, FCEIL, FCOPYSIGN, FEXP, FEXP2, FFLOOR, FGETSIGN,
1502- // FLOG, FLOG2, FLOG10, FMAXNUM, FMINNUM, FNEARBYINT, FRINT, FROUND, TRAP,
1503- // FTRUNC, PREFETCH, SIGN_EXTEND_VECTOR_INREG, ZERO_EXTEND_VECTOR_INREG,
1502+ // FLOG, FLOG2, FLOG10, FMAXIMUMNUM, FMINIMUMNUM, FNEARBYINT, FRINT, FROUND,
1503+ // TRAP, FTRUNC, PREFETCH, SIGN_EXTEND_VECTOR_INREG,
1504+ // ZERO_EXTEND_VECTOR_INREG,
15041505 // which default to "expand" for at least one type.
15051506
15061507 // Misc operations.
@@ -1639,28 +1640,75 @@ HexagonTargetLowering::HexagonTargetLowering(const TargetMachine &TM,
16391640 // Set the action for vector operations to "expand", then override it with
16401641 // either "custom" or "legal" for specific cases.
16411642 static const unsigned VectExpOps[] = {
1642- // Integer arithmetic:
1643- ISD::ADD, ISD::SUB, ISD::MUL, ISD::SDIV, ISD::UDIV,
1644- ISD::SREM, ISD::UREM, ISD::SDIVREM, ISD::UDIVREM, ISD::SADDO,
1645- ISD::UADDO, ISD::SSUBO, ISD::USUBO, ISD::SMUL_LOHI, ISD::UMUL_LOHI,
1646- // Logical/bit:
1647- ISD::AND, ISD::OR, ISD::XOR, ISD::ROTL, ISD::ROTR,
1648- ISD::CTPOP, ISD::CTLZ, ISD::CTTZ, ISD::BSWAP, ISD::BITREVERSE,
1649- // Floating point arithmetic/math functions:
1650- ISD::FADD, ISD::FSUB, ISD::FMUL, ISD::FMA, ISD::FDIV,
1651- ISD::FREM, ISD::FNEG, ISD::FABS, ISD::FSQRT, ISD::FSIN,
1652- ISD::FCOS, ISD::FPOW, ISD::FLOG, ISD::FLOG2,
1653- ISD::FLOG10, ISD::FEXP, ISD::FEXP2, ISD::FCEIL, ISD::FTRUNC,
1654- ISD::FRINT, ISD::FNEARBYINT, ISD::FROUND, ISD::FFLOOR,
1655- ISD::FMINNUM, ISD::FMAXNUM, ISD::FSINCOS, ISD::FLDEXP,
1656- // Misc:
1657- ISD::BR_CC, ISD::SELECT_CC, ISD::ConstantPool,
1658- // Vector:
1659- ISD::BUILD_VECTOR, ISD::SCALAR_TO_VECTOR,
1660- ISD::EXTRACT_VECTOR_ELT, ISD::INSERT_VECTOR_ELT,
1661- ISD::EXTRACT_SUBVECTOR, ISD::INSERT_SUBVECTOR,
1662- ISD::CONCAT_VECTORS, ISD::VECTOR_SHUFFLE,
1663- ISD::SPLAT_VECTOR,
1643+ // Integer arithmetic:
1644+ ISD::ADD,
1645+ ISD::SUB,
1646+ ISD::MUL,
1647+ ISD::SDIV,
1648+ ISD::UDIV,
1649+ ISD::SREM,
1650+ ISD::UREM,
1651+ ISD::SDIVREM,
1652+ ISD::UDIVREM,
1653+ ISD::SADDO,
1654+ ISD::UADDO,
1655+ ISD::SSUBO,
1656+ ISD::USUBO,
1657+ ISD::SMUL_LOHI,
1658+ ISD::UMUL_LOHI,
1659+ // Logical/bit:
1660+ ISD::AND,
1661+ ISD::OR,
1662+ ISD::XOR,
1663+ ISD::ROTL,
1664+ ISD::ROTR,
1665+ ISD::CTPOP,
1666+ ISD::CTLZ,
1667+ ISD::CTTZ,
1668+ ISD::BSWAP,
1669+ ISD::BITREVERSE,
1670+ // Floating point arithmetic/math functions:
1671+ ISD::FADD,
1672+ ISD::FSUB,
1673+ ISD::FMUL,
1674+ ISD::FMA,
1675+ ISD::FDIV,
1676+ ISD::FREM,
1677+ ISD::FNEG,
1678+ ISD::FABS,
1679+ ISD::FSQRT,
1680+ ISD::FSIN,
1681+ ISD::FCOS,
1682+ ISD::FPOW,
1683+ ISD::FLOG,
1684+ ISD::FLOG2,
1685+ ISD::FLOG10,
1686+ ISD::FEXP,
1687+ ISD::FEXP2,
1688+ ISD::FCEIL,
1689+ ISD::FTRUNC,
1690+ ISD::FRINT,
1691+ ISD::FNEARBYINT,
1692+ ISD::FROUND,
1693+ ISD::FFLOOR,
1694+ ISD::FMINIMUMNUM,
1695+ ISD::FMAXIMUMNUM,
1696+ ISD::FSINCOS,
1697+ ISD::FLDEXP,
1698+ // Misc:
1699+ ISD::BR_CC,
1700+ ISD::SELECT_CC,
1701+ ISD::ConstantPool,
1702+ // Vector:
1703+ ISD::BUILD_VECTOR,
1704+ ISD::SCALAR_TO_VECTOR,
1705+ ISD::EXTRACT_VECTOR_ELT,
1706+ ISD::INSERT_VECTOR_ELT,
1707+ ISD::EXTRACT_SUBVECTOR,
1708+ ISD::INSERT_SUBVECTOR,
1709+ ISD::CONCAT_VECTORS,
1710+ ISD::VECTOR_SHUFFLE,
1711+ ISD::SPLAT_VECTOR,
16641712 };
16651713
16661714 for (MVT VT : MVT::fixedlen_vector_valuetypes ()) {
@@ -1784,8 +1832,8 @@ HexagonTargetLowering::HexagonTargetLowering(const TargetMachine &TM,
17841832 setOperationAction (ISD::FMUL, MVT::f64 , Expand);
17851833 setOperationAction (ISD::FDIV, MVT::f32 , Custom);
17861834
1787- setOperationAction (ISD::FMINNUM , MVT::f32 , Legal);
1788- setOperationAction (ISD::FMAXNUM , MVT::f32 , Legal);
1835+ setOperationAction (ISD::FMINIMUMNUM , MVT::f32 , Legal);
1836+ setOperationAction (ISD::FMAXIMUMNUM , MVT::f32 , Legal);
17891837
17901838 setOperationAction (ISD::FP_TO_UINT, MVT::i1, Promote);
17911839 setOperationAction (ISD::FP_TO_UINT, MVT::i8 , Promote);
@@ -1833,8 +1881,8 @@ HexagonTargetLowering::HexagonTargetLowering(const TargetMachine &TM,
18331881 setOperationAction (ISD::FSUB, MVT::f64 , Legal);
18341882 }
18351883 if (Subtarget.hasV67Ops ()) {
1836- setOperationAction (ISD::FMINNUM , MVT::f64 , Legal);
1837- setOperationAction (ISD::FMAXNUM , MVT::f64 , Legal);
1884+ setOperationAction (ISD::FMINIMUMNUM , MVT::f64 , Legal);
1885+ setOperationAction (ISD::FMAXIMUMNUM , MVT::f64 , Legal);
18381886 setOperationAction (ISD::FMUL, MVT::f64 , Legal);
18391887 }
18401888
0 commit comments