Skip to content

Commit 17a1936

Browse files
committed
[AArch64] NFC: Align addTypeForStreamingSVE and addTypeForFixedLengthSVE
This patch is NFC and just moves things around so their implementation is very similar.
1 parent 2d32a01 commit 17a1936

File tree

1 file changed

+73
-72
lines changed

1 file changed

+73
-72
lines changed

llvm/lib/Target/AArch64/AArch64ISelLowering.cpp

Lines changed: 73 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1666,92 +1666,95 @@ void AArch64TargetLowering::addTypeForStreamingSVE(MVT VT) {
16661666
for (unsigned Op = 0; Op < ISD::BUILTIN_OP_END; ++Op)
16671667
setOperationAction(Op, VT, Expand);
16681668

1669+
assert(VT.isFixedLengthVector() && "Expected fixed length vector type!");
1670+
1671+
if (VT.isFloatingPoint()) {
1672+
setCondCodeAction(ISD::SETO, VT, Expand);
1673+
setCondCodeAction(ISD::SETOLT, VT, Expand);
1674+
setCondCodeAction(ISD::SETOLE, VT, Expand);
1675+
setCondCodeAction(ISD::SETULT, VT, Expand);
1676+
setCondCodeAction(ISD::SETULE, VT, Expand);
1677+
setCondCodeAction(ISD::SETUGE, VT, Expand);
1678+
setCondCodeAction(ISD::SETUGT, VT, Expand);
1679+
setCondCodeAction(ISD::SETUEQ, VT, Expand);
1680+
setCondCodeAction(ISD::SETONE, VT, Expand);
1681+
}
1682+
16691683
// STORE, LOAD, SCALAR_TO_VECTOR and BITCAST are natively supported,
16701684
// so no need to Custom/Expand them.
16711685
setOperationAction(ISD::STORE, VT, Legal);
16721686
setOperationAction(ISD::LOAD, VT, Legal);
16731687
setOperationAction(ISD::SCALAR_TO_VECTOR, VT, Legal);
16741688
setOperationAction(ISD::BITCAST, VT, Legal);
16751689

1690+
setOperationAction(ISD::ABS, VT, Custom);
1691+
setOperationAction(ISD::ADD, VT, Custom);
1692+
setOperationAction(ISD::AND, VT, Custom);
1693+
setOperationAction(ISD::ANY_EXTEND, VT, Custom);
1694+
setOperationAction(ISD::BUILD_VECTOR, VT, Custom);
1695+
setOperationAction(ISD::CONCAT_VECTORS, VT, Custom);
1696+
setOperationAction(ISD::CTLZ, VT, Custom);
1697+
setOperationAction(ISD::CTPOP, VT, Custom);
16761698
setOperationAction(ISD::EXTRACT_SUBVECTOR, VT, Custom);
1699+
setOperationAction(ISD::EXTRACT_VECTOR_ELT, VT, Custom);
1700+
setOperationAction(ISD::FABS, VT, Custom);
1701+
setOperationAction(ISD::FADD, VT, Custom);
1702+
setOperationAction(ISD::FCEIL, VT, Custom);
1703+
setOperationAction(ISD::FCOPYSIGN, VT, Custom);
1704+
setOperationAction(ISD::FDIV, VT, Custom);
1705+
setOperationAction(ISD::FFLOOR, VT, Custom);
1706+
setOperationAction(ISD::FMA, VT, Custom);
1707+
setOperationAction(ISD::FMAXIMUM, VT, Custom);
1708+
setOperationAction(ISD::FMAXNUM, VT, Custom);
1709+
setOperationAction(ISD::FMINIMUM, VT, Custom);
1710+
setOperationAction(ISD::FMINNUM, VT, Custom);
1711+
setOperationAction(ISD::FMUL, VT, Custom);
1712+
setOperationAction(ISD::FNEARBYINT, VT, Custom);
1713+
setOperationAction(ISD::FNEG, VT, Custom);
1714+
setOperationAction(ISD::FP_ROUND, VT, Custom);
1715+
setOperationAction(ISD::FP_TO_SINT, VT, Custom);
1716+
setOperationAction(ISD::FP_TO_UINT, VT, Custom);
1717+
setOperationAction(ISD::FRINT, VT, Custom);
1718+
setOperationAction(ISD::FROUND, VT, Custom);
1719+
setOperationAction(ISD::FROUNDEVEN, VT, Custom);
1720+
setOperationAction(ISD::FSQRT, VT, Custom);
1721+
setOperationAction(ISD::FSUB, VT, Custom);
1722+
setOperationAction(ISD::FTRUNC, VT, Custom);
1723+
setOperationAction(ISD::INSERT_VECTOR_ELT, VT, Custom);
16771724
setOperationAction(ISD::MLOAD, VT, Custom);
16781725
setOperationAction(ISD::MSTORE, VT, Custom);
1679-
setOperationAction(ISD::EXTRACT_VECTOR_ELT, VT, Custom);
1680-
setOperationAction(ISD::VECTOR_SHUFFLE, VT, Custom);
1726+
setOperationAction(ISD::MUL, VT, Custom);
1727+
setOperationAction(ISD::MULHS, VT, Custom);
1728+
setOperationAction(ISD::MULHU, VT, Custom);
1729+
setOperationAction(ISD::OR, VT, Custom);
16811730
setOperationAction(ISD::SDIV, VT, Custom);
1731+
setOperationAction(ISD::SETCC, VT, Custom);
16821732
setOperationAction(ISD::SHL, VT, Custom);
1733+
setOperationAction(ISD::SIGN_EXTEND, VT, Custom);
1734+
setOperationAction(ISD::SINT_TO_FP, VT, Custom);
1735+
setOperationAction(ISD::SMAX, VT, Custom);
1736+
setOperationAction(ISD::SMIN, VT, Custom);
1737+
setOperationAction(ISD::SPLAT_VECTOR, VT, Custom);
16831738
setOperationAction(ISD::SRA, VT, Custom);
16841739
setOperationAction(ISD::SRL, VT, Custom);
1685-
setOperationAction(ISD::OR, VT, Custom);
1686-
setOperationAction(ISD::SETCC, VT, Custom);
1740+
setOperationAction(ISD::SUB, VT, Custom);
1741+
setOperationAction(ISD::TRUNCATE, VT, Custom);
16871742
setOperationAction(ISD::UDIV, VT, Custom);
1688-
setOperationAction(ISD::SINT_TO_FP, VT, Custom);
1689-
setOperationAction(ISD::FP_TO_SINT, VT, Custom);
1690-
setOperationAction(ISD::FP_TO_UINT, VT, Custom);
16911743
setOperationAction(ISD::UINT_TO_FP, VT, Custom);
1692-
setOperationAction(ISD::VECREDUCE_FMIN, VT, Custom);
1744+
setOperationAction(ISD::UMAX, VT, Custom);
1745+
setOperationAction(ISD::UMIN, VT, Custom);
1746+
setOperationAction(ISD::VECREDUCE_ADD, VT, Custom);
1747+
setOperationAction(ISD::VECREDUCE_FADD, VT, Custom);
16931748
setOperationAction(ISD::VECREDUCE_FMAX, VT, Custom);
1749+
setOperationAction(ISD::VECREDUCE_FMIN, VT, Custom);
16941750
setOperationAction(ISD::VECREDUCE_SEQ_FADD, VT, Custom);
1695-
setOperationAction(ISD::BUILD_VECTOR, VT, Custom);
1696-
setOperationAction(ISD::INSERT_VECTOR_ELT, VT, Custom);
1697-
setOperationAction(ISD::FCOPYSIGN, VT, Custom);
1698-
setOperationAction(ISD::ANY_EXTEND, VT, Custom);
1699-
setOperationAction(ISD::ZERO_EXTEND, VT, Custom);
1700-
setOperationAction(ISD::SIGN_EXTEND, VT, Custom);
1701-
setOperationAction(ISD::SPLAT_VECTOR, VT, Custom);
1702-
setOperationAction(ISD::CONCAT_VECTORS, VT, Custom);
1703-
setOperationAction(ISD::AND, VT, Custom);
1704-
setOperationAction(ISD::ADD, VT, Custom);
1705-
setOperationAction(ISD::SUB, VT, Custom);
1706-
setOperationAction(ISD::MUL, VT, Custom);
1707-
setOperationAction(ISD::MULHS, VT, Custom);
1708-
setOperationAction(ISD::MULHU, VT, Custom);
1709-
setOperationAction(ISD::ABS, VT, Custom);
1710-
setOperationAction(ISD::XOR, VT, Custom);
1711-
setOperationAction(ISD::TRUNCATE, VT, Custom);
1712-
setOperationAction(ISD::FMUL, VT, Custom);
1713-
setOperationAction(ISD::FADD, VT, Custom);
1714-
setOperationAction(ISD::FDIV, VT, Custom);
1715-
setOperationAction(ISD::FMA, VT, Custom);
1716-
setOperationAction(ISD::FNEG, VT, Custom);
1717-
setOperationAction(ISD::FSQRT, VT, Custom);
1718-
setOperationAction(ISD::FSUB, VT, Custom);
1719-
setOperationAction(ISD::FABS, VT, Custom);
1720-
setOperationAction(ISD::SMIN, VT, Custom);
1721-
setOperationAction(ISD::SMAX, VT, Custom);
1722-
setOperationAction(ISD::UMIN, VT, Custom);
1723-
setOperationAction(ISD::UMAX, VT, Custom);
1724-
setOperationAction(ISD::FMAXNUM, VT, Custom);
1725-
setOperationAction(ISD::FMINNUM, VT, Custom);
1726-
setOperationAction(ISD::FMAXIMUM, VT, Custom);
1727-
setOperationAction(ISD::FMINIMUM, VT, Custom);
17281751
setOperationAction(ISD::VECREDUCE_SMAX, VT, Custom);
17291752
setOperationAction(ISD::VECREDUCE_SMIN, VT, Custom);
17301753
setOperationAction(ISD::VECREDUCE_UMAX, VT, Custom);
17311754
setOperationAction(ISD::VECREDUCE_UMIN, VT, Custom);
1732-
setOperationAction(ISD::VECREDUCE_ADD, VT, Custom);
1733-
setOperationAction(ISD::VECREDUCE_FADD, VT, Custom);
1734-
setOperationAction(ISD::FP_ROUND, VT, Custom);
1735-
setOperationAction(ISD::FCEIL, VT, Custom);
1736-
setOperationAction(ISD::FFLOOR, VT, Custom);
1737-
setOperationAction(ISD::FNEARBYINT, VT, Custom);
1738-
setOperationAction(ISD::FRINT, VT, Custom);
1739-
setOperationAction(ISD::FROUND, VT, Custom);
1740-
setOperationAction(ISD::FROUNDEVEN, VT, Custom);
1741-
setOperationAction(ISD::FTRUNC, VT, Custom);
1742-
setOperationAction(ISD::CTLZ, VT, Custom);
1743-
setOperationAction(ISD::CTPOP, VT, Custom);
1744-
if (VT.isFloatingPoint()) {
1745-
setCondCodeAction(ISD::SETO, VT, Expand);
1746-
setCondCodeAction(ISD::SETOLT, VT, Expand);
1747-
setCondCodeAction(ISD::SETOLE, VT, Expand);
1748-
setCondCodeAction(ISD::SETULT, VT, Expand);
1749-
setCondCodeAction(ISD::SETULE, VT, Expand);
1750-
setCondCodeAction(ISD::SETUGE, VT, Expand);
1751-
setCondCodeAction(ISD::SETUGT, VT, Expand);
1752-
setCondCodeAction(ISD::SETUEQ, VT, Expand);
1753-
setCondCodeAction(ISD::SETONE, VT, Expand);
1754-
}
1755+
setOperationAction(ISD::VECTOR_SHUFFLE, VT, Custom);
1756+
setOperationAction(ISD::XOR, VT, Custom);
1757+
setOperationAction(ISD::ZERO_EXTEND, VT, Custom);
17551758
}
17561759

17571760
void AArch64TargetLowering::addTypeForFixedLengthSVE(MVT VT) {
@@ -1761,9 +1764,6 @@ void AArch64TargetLowering::addTypeForFixedLengthSVE(MVT VT) {
17611764
for (unsigned Op = 0; Op < ISD::BUILTIN_OP_END; ++Op)
17621765
setOperationAction(Op, VT, Expand);
17631766

1764-
// We use EXTRACT_SUBVECTOR to "cast" a scalable vector to a fixed length one.
1765-
setOperationAction(ISD::EXTRACT_SUBVECTOR, VT, Custom);
1766-
17671767
if (VT.isFloatingPoint()) {
17681768
setCondCodeAction(ISD::SETO, VT, Expand);
17691769
setCondCodeAction(ISD::SETOLT, VT, Expand);
@@ -1807,15 +1807,16 @@ void AArch64TargetLowering::addTypeForFixedLengthSVE(MVT VT) {
18071807
setOperationAction(ISD::ANY_EXTEND, VT, Custom);
18081808
setOperationAction(ISD::BITCAST, VT, Custom);
18091809
setOperationAction(ISD::BITREVERSE, VT, Custom);
1810-
setOperationAction(ISD::BUILD_VECTOR, VT, Custom);
18111810
setOperationAction(ISD::BSWAP, VT, Custom);
1811+
setOperationAction(ISD::BUILD_VECTOR, VT, Custom);
18121812
setOperationAction(ISD::CONCAT_VECTORS, VT, Custom);
18131813
setOperationAction(ISD::CTLZ, VT, Custom);
18141814
setOperationAction(ISD::CTPOP, VT, Custom);
18151815
setOperationAction(ISD::CTTZ, VT, Custom);
1816+
setOperationAction(ISD::EXTRACT_SUBVECTOR, VT, Custom);
1817+
setOperationAction(ISD::EXTRACT_VECTOR_ELT, VT, Custom);
18161818
setOperationAction(ISD::FABS, VT, Custom);
18171819
setOperationAction(ISD::FADD, VT, Custom);
1818-
setOperationAction(ISD::EXTRACT_VECTOR_ELT, VT, Custom);
18191820
setOperationAction(ISD::FCEIL, VT, Custom);
18201821
setOperationAction(ISD::FCOPYSIGN, VT, Custom);
18211822
setOperationAction(ISD::FDIV, VT, Custom);
@@ -1838,6 +1839,7 @@ void AArch64TargetLowering::addTypeForFixedLengthSVE(MVT VT) {
18381839
setOperationAction(ISD::FSQRT, VT, Custom);
18391840
setOperationAction(ISD::FSUB, VT, Custom);
18401841
setOperationAction(ISD::FTRUNC, VT, Custom);
1842+
setOperationAction(ISD::INSERT_VECTOR_ELT, VT, Custom);
18411843
setOperationAction(ISD::LOAD, VT, Custom);
18421844
setOperationAction(ISD::MGATHER, VT, Custom);
18431845
setOperationAction(ISD::MLOAD, VT, Custom);
@@ -1857,7 +1859,6 @@ void AArch64TargetLowering::addTypeForFixedLengthSVE(MVT VT) {
18571859
setOperationAction(ISD::SMAX, VT, Custom);
18581860
setOperationAction(ISD::SMIN, VT, Custom);
18591861
setOperationAction(ISD::SPLAT_VECTOR, VT, Custom);
1860-
setOperationAction(ISD::VECTOR_SPLICE, VT, Custom);
18611862
setOperationAction(ISD::SRA, VT, Custom);
18621863
setOperationAction(ISD::SRL, VT, Custom);
18631864
setOperationAction(ISD::STORE, VT, Custom);
@@ -1870,17 +1871,17 @@ void AArch64TargetLowering::addTypeForFixedLengthSVE(MVT VT) {
18701871
setOperationAction(ISD::VECREDUCE_ADD, VT, Custom);
18711872
setOperationAction(ISD::VECREDUCE_AND, VT, Custom);
18721873
setOperationAction(ISD::VECREDUCE_FADD, VT, Custom);
1873-
setOperationAction(ISD::VECREDUCE_SEQ_FADD, VT, Custom);
18741874
setOperationAction(ISD::VECREDUCE_FMAX, VT, Custom);
18751875
setOperationAction(ISD::VECREDUCE_FMIN, VT, Custom);
18761876
setOperationAction(ISD::VECREDUCE_OR, VT, Custom);
1877-
setOperationAction(ISD::INSERT_VECTOR_ELT, VT, Custom);
1877+
setOperationAction(ISD::VECREDUCE_SEQ_FADD, VT, Custom);
18781878
setOperationAction(ISD::VECREDUCE_SMAX, VT, Custom);
18791879
setOperationAction(ISD::VECREDUCE_SMIN, VT, Custom);
18801880
setOperationAction(ISD::VECREDUCE_UMAX, VT, Custom);
18811881
setOperationAction(ISD::VECREDUCE_UMIN, VT, Custom);
18821882
setOperationAction(ISD::VECREDUCE_XOR, VT, Custom);
18831883
setOperationAction(ISD::VECTOR_SHUFFLE, VT, Custom);
1884+
setOperationAction(ISD::VECTOR_SPLICE, VT, Custom);
18841885
setOperationAction(ISD::VSELECT, VT, Custom);
18851886
setOperationAction(ISD::XOR, VT, Custom);
18861887
setOperationAction(ISD::ZERO_EXTEND, VT, Custom);

0 commit comments

Comments
 (0)