mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-18 12:09:38 +00:00
[CodeGen] Use MVT iterator_ranges in legality loops. NFC intended.
A few loops do trickier things than just iterating on an MVT subset, so I'll leave them be for now. Follow-up of r225387. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225392 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c83d4c6a1b
commit
8065738154
@ -748,37 +748,32 @@ void TargetLoweringBase::initActions() {
|
||||
memset(TargetDAGCombineArray, 0, array_lengthof(TargetDAGCombineArray));
|
||||
|
||||
// Set default actions for various operations.
|
||||
for (unsigned VT = 0; VT != (unsigned)MVT::LAST_VALUETYPE; ++VT) {
|
||||
for (MVT VT : MVT::all_valuetypes()) {
|
||||
// Default all indexed load / store to expand.
|
||||
for (unsigned IM = (unsigned)ISD::PRE_INC;
|
||||
IM != (unsigned)ISD::LAST_INDEXED_MODE; ++IM) {
|
||||
setIndexedLoadAction(IM, (MVT::SimpleValueType)VT, Expand);
|
||||
setIndexedStoreAction(IM, (MVT::SimpleValueType)VT, Expand);
|
||||
setIndexedLoadAction(IM, VT, Expand);
|
||||
setIndexedStoreAction(IM, VT, Expand);
|
||||
}
|
||||
|
||||
// Most backends expect to see the node which just returns the value loaded.
|
||||
setOperationAction(ISD::ATOMIC_CMP_SWAP_WITH_SUCCESS,
|
||||
(MVT::SimpleValueType)VT, Expand);
|
||||
setOperationAction(ISD::ATOMIC_CMP_SWAP_WITH_SUCCESS, VT, Expand);
|
||||
|
||||
// These operations default to expand.
|
||||
setOperationAction(ISD::FGETSIGN, (MVT::SimpleValueType)VT, Expand);
|
||||
setOperationAction(ISD::CONCAT_VECTORS, (MVT::SimpleValueType)VT, Expand);
|
||||
setOperationAction(ISD::FMINNUM, (MVT::SimpleValueType)VT, Expand);
|
||||
setOperationAction(ISD::FMAXNUM, (MVT::SimpleValueType)VT, Expand);
|
||||
setOperationAction(ISD::FGETSIGN, VT, Expand);
|
||||
setOperationAction(ISD::CONCAT_VECTORS, VT, Expand);
|
||||
setOperationAction(ISD::FMINNUM, VT, Expand);
|
||||
setOperationAction(ISD::FMAXNUM, VT, Expand);
|
||||
|
||||
// These library functions default to expand.
|
||||
setOperationAction(ISD::FROUND, (MVT::SimpleValueType)VT, Expand);
|
||||
setOperationAction(ISD::FROUND, VT, Expand);
|
||||
|
||||
// These operations default to expand for vector types.
|
||||
if (VT >= MVT::FIRST_VECTOR_VALUETYPE &&
|
||||
VT <= MVT::LAST_VECTOR_VALUETYPE) {
|
||||
setOperationAction(ISD::FCOPYSIGN, (MVT::SimpleValueType)VT, Expand);
|
||||
setOperationAction(ISD::ANY_EXTEND_VECTOR_INREG,
|
||||
(MVT::SimpleValueType)VT, Expand);
|
||||
setOperationAction(ISD::SIGN_EXTEND_VECTOR_INREG,
|
||||
(MVT::SimpleValueType)VT, Expand);
|
||||
setOperationAction(ISD::ZERO_EXTEND_VECTOR_INREG,
|
||||
(MVT::SimpleValueType)VT, Expand);
|
||||
if (VT.isVector()) {
|
||||
setOperationAction(ISD::FCOPYSIGN, VT, Expand);
|
||||
setOperationAction(ISD::ANY_EXTEND_VECTOR_INREG, VT, Expand);
|
||||
setOperationAction(ISD::SIGN_EXTEND_VECTOR_INREG, VT, Expand);
|
||||
setOperationAction(ISD::ZERO_EXTEND_VECTOR_INREG, VT, Expand);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -539,26 +539,21 @@ AArch64TargetLowering::AArch64TargetLowering(const TargetMachine &TM)
|
||||
setTruncStoreAction(MVT::v2i32, MVT::v2i16, Expand);
|
||||
// Likewise, narrowing and extending vector loads/stores aren't handled
|
||||
// directly.
|
||||
for (unsigned VT = (unsigned)MVT::FIRST_VECTOR_VALUETYPE;
|
||||
VT <= (unsigned)MVT::LAST_VECTOR_VALUETYPE; ++VT) {
|
||||
for (MVT VT : MVT::vector_valuetypes()) {
|
||||
setOperationAction(ISD::SIGN_EXTEND_INREG, VT, Expand);
|
||||
|
||||
setOperationAction(ISD::SIGN_EXTEND_INREG, (MVT::SimpleValueType)VT,
|
||||
Expand);
|
||||
setOperationAction(ISD::MULHS, VT, Expand);
|
||||
setOperationAction(ISD::SMUL_LOHI, VT, Expand);
|
||||
setOperationAction(ISD::MULHU, VT, Expand);
|
||||
setOperationAction(ISD::UMUL_LOHI, VT, Expand);
|
||||
|
||||
setOperationAction(ISD::MULHS, (MVT::SimpleValueType)VT, Expand);
|
||||
setOperationAction(ISD::SMUL_LOHI, (MVT::SimpleValueType)VT, Expand);
|
||||
setOperationAction(ISD::MULHU, (MVT::SimpleValueType)VT, Expand);
|
||||
setOperationAction(ISD::UMUL_LOHI, (MVT::SimpleValueType)VT, Expand);
|
||||
setOperationAction(ISD::BSWAP, VT, Expand);
|
||||
|
||||
setOperationAction(ISD::BSWAP, (MVT::SimpleValueType)VT, Expand);
|
||||
|
||||
for (unsigned InnerVT = (unsigned)MVT::FIRST_VECTOR_VALUETYPE;
|
||||
InnerVT <= (unsigned)MVT::LAST_VECTOR_VALUETYPE; ++InnerVT)
|
||||
setTruncStoreAction((MVT::SimpleValueType)VT,
|
||||
(MVT::SimpleValueType)InnerVT, Expand);
|
||||
setLoadExtAction(ISD::SEXTLOAD, (MVT::SimpleValueType)VT, Expand);
|
||||
setLoadExtAction(ISD::ZEXTLOAD, (MVT::SimpleValueType)VT, Expand);
|
||||
setLoadExtAction(ISD::EXTLOAD, (MVT::SimpleValueType)VT, Expand);
|
||||
for (MVT InnerVT : MVT::vector_valuetypes())
|
||||
setTruncStoreAction(VT, InnerVT, Expand);
|
||||
setLoadExtAction(ISD::SEXTLOAD, VT, Expand);
|
||||
setLoadExtAction(ISD::ZEXTLOAD, VT, Expand);
|
||||
setLoadExtAction(ISD::EXTLOAD, VT, Expand);
|
||||
}
|
||||
|
||||
// AArch64 has implementations of a lot of rounding-like FP operations.
|
||||
|
@ -404,22 +404,19 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM)
|
||||
addRegisterClass(MVT::f64, &ARM::DPRRegClass);
|
||||
}
|
||||
|
||||
for (unsigned VT = (unsigned)MVT::FIRST_VECTOR_VALUETYPE;
|
||||
VT <= (unsigned)MVT::LAST_VECTOR_VALUETYPE; ++VT) {
|
||||
for (unsigned InnerVT = (unsigned)MVT::FIRST_VECTOR_VALUETYPE;
|
||||
InnerVT <= (unsigned)MVT::LAST_VECTOR_VALUETYPE; ++InnerVT)
|
||||
setTruncStoreAction((MVT::SimpleValueType)VT,
|
||||
(MVT::SimpleValueType)InnerVT, Expand);
|
||||
setLoadExtAction(ISD::SEXTLOAD, (MVT::SimpleValueType)VT, Expand);
|
||||
setLoadExtAction(ISD::ZEXTLOAD, (MVT::SimpleValueType)VT, Expand);
|
||||
setLoadExtAction(ISD::EXTLOAD, (MVT::SimpleValueType)VT, Expand);
|
||||
for (MVT VT : MVT::vector_valuetypes()) {
|
||||
for (MVT InnerVT : MVT::vector_valuetypes())
|
||||
setTruncStoreAction(VT, InnerVT, Expand);
|
||||
setLoadExtAction(ISD::SEXTLOAD, VT, Expand);
|
||||
setLoadExtAction(ISD::ZEXTLOAD, VT, Expand);
|
||||
setLoadExtAction(ISD::EXTLOAD, VT, Expand);
|
||||
|
||||
setOperationAction(ISD::MULHS, (MVT::SimpleValueType)VT, Expand);
|
||||
setOperationAction(ISD::SMUL_LOHI, (MVT::SimpleValueType)VT, Expand);
|
||||
setOperationAction(ISD::MULHU, (MVT::SimpleValueType)VT, Expand);
|
||||
setOperationAction(ISD::UMUL_LOHI, (MVT::SimpleValueType)VT, Expand);
|
||||
setOperationAction(ISD::MULHS, VT, Expand);
|
||||
setOperationAction(ISD::SMUL_LOHI, VT, Expand);
|
||||
setOperationAction(ISD::MULHU, VT, Expand);
|
||||
setOperationAction(ISD::UMUL_LOHI, VT, Expand);
|
||||
|
||||
setOperationAction(ISD::BSWAP, (MVT::SimpleValueType)VT, Expand);
|
||||
setOperationAction(ISD::BSWAP, VT, Expand);
|
||||
}
|
||||
|
||||
setOperationAction(ISD::ConstantFP, MVT::f32, Custom);
|
||||
@ -9253,9 +9250,7 @@ static SDValue PerformSTORECombine(SDNode *N,
|
||||
|
||||
// Find the largest store unit
|
||||
MVT StoreType = MVT::i8;
|
||||
for (unsigned tp = MVT::FIRST_INTEGER_VALUETYPE;
|
||||
tp < MVT::LAST_INTEGER_VALUETYPE; ++tp) {
|
||||
MVT Tp = (MVT::SimpleValueType)tp;
|
||||
for (MVT Tp : MVT::integer_valuetypes()) {
|
||||
if (TLI.isTypeLegal(Tp) && Tp.getSizeInBits() <= NumElems * ToEltSz)
|
||||
StoreType = Tp;
|
||||
}
|
||||
|
@ -46,17 +46,13 @@ MipsSETargetLowering::MipsSETargetLowering(const MipsTargetMachine &TM,
|
||||
|
||||
if (Subtarget.hasDSP() || Subtarget.hasMSA()) {
|
||||
// Expand all truncating stores and extending loads.
|
||||
unsigned FirstVT = (unsigned)MVT::FIRST_VECTOR_VALUETYPE;
|
||||
unsigned LastVT = (unsigned)MVT::LAST_VECTOR_VALUETYPE;
|
||||
for (MVT VT0 : MVT::vector_valuetypes()) {
|
||||
for (MVT VT1 : MVT::vector_valuetypes())
|
||||
setTruncStoreAction(VT0, VT1, Expand);
|
||||
|
||||
for (unsigned VT0 = FirstVT; VT0 <= LastVT; ++VT0) {
|
||||
for (unsigned VT1 = FirstVT; VT1 <= LastVT; ++VT1)
|
||||
setTruncStoreAction((MVT::SimpleValueType)VT0,
|
||||
(MVT::SimpleValueType)VT1, Expand);
|
||||
|
||||
setLoadExtAction(ISD::SEXTLOAD, (MVT::SimpleValueType)VT0, Expand);
|
||||
setLoadExtAction(ISD::ZEXTLOAD, (MVT::SimpleValueType)VT0, Expand);
|
||||
setLoadExtAction(ISD::EXTLOAD, (MVT::SimpleValueType)VT0, Expand);
|
||||
setLoadExtAction(ISD::SEXTLOAD, VT0, Expand);
|
||||
setLoadExtAction(ISD::ZEXTLOAD, VT0, Expand);
|
||||
setLoadExtAction(ISD::EXTLOAD, VT0, Expand);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -232,9 +232,7 @@ NVPTXTargetLowering::NVPTXTargetLowering(const NVPTXTargetMachine &TM)
|
||||
setOperationAction(ISD::ADDE, MVT::i64, Expand);
|
||||
|
||||
// Register custom handling for vector loads/stores
|
||||
for (int i = MVT::FIRST_VECTOR_VALUETYPE; i <= MVT::LAST_VECTOR_VALUETYPE;
|
||||
++i) {
|
||||
MVT VT = (MVT::SimpleValueType) i;
|
||||
for (MVT VT : MVT::vector_valuetypes()) {
|
||||
if (IsPTXVectorType(VT)) {
|
||||
setOperationAction(ISD::LOAD, VT, Custom);
|
||||
setOperationAction(ISD::STORE, VT, Custom);
|
||||
|
@ -394,10 +394,7 @@ PPCTargetLowering::PPCTargetLowering(const PPCTargetMachine &TM)
|
||||
if (Subtarget.hasAltivec()) {
|
||||
// First set operation action for all vector types to expand. Then we
|
||||
// will selectively turn on ones that can be effectively codegen'd.
|
||||
for (unsigned i = (unsigned)MVT::FIRST_VECTOR_VALUETYPE;
|
||||
i <= (unsigned)MVT::LAST_VECTOR_VALUETYPE; ++i) {
|
||||
MVT::SimpleValueType VT = (MVT::SimpleValueType)i;
|
||||
|
||||
for (MVT VT : MVT::vector_valuetypes()) {
|
||||
// add/sub are legal for all supported vector VT's.
|
||||
setOperationAction(ISD::ADD , VT, Legal);
|
||||
setOperationAction(ISD::SUB , VT, Legal);
|
||||
@ -464,11 +461,8 @@ PPCTargetLowering::PPCTargetLowering(const PPCTargetMachine &TM)
|
||||
setOperationAction(ISD::VSELECT, VT, Expand);
|
||||
setOperationAction(ISD::SIGN_EXTEND_INREG, VT, Expand);
|
||||
|
||||
for (unsigned j = (unsigned)MVT::FIRST_VECTOR_VALUETYPE;
|
||||
j <= (unsigned)MVT::LAST_VECTOR_VALUETYPE; ++j) {
|
||||
MVT::SimpleValueType InnerVT = (MVT::SimpleValueType)j;
|
||||
for (MVT InnerVT : MVT::vector_valuetypes())
|
||||
setTruncStoreAction(VT, InnerVT, Expand);
|
||||
}
|
||||
setLoadExtAction(ISD::SEXTLOAD, VT, Expand);
|
||||
setLoadExtAction(ISD::ZEXTLOAD, VT, Expand);
|
||||
setLoadExtAction(ISD::EXTLOAD, VT, Expand);
|
||||
|
@ -801,9 +801,7 @@ void X86TargetLowering::resetOperationActions() {
|
||||
// First set operation action for all vector types to either promote
|
||||
// (for widening) or expand (for scalarization). Then we will selectively
|
||||
// turn on ones that can be effectively codegen'd.
|
||||
for (int i = MVT::FIRST_VECTOR_VALUETYPE;
|
||||
i <= MVT::LAST_VECTOR_VALUETYPE; ++i) {
|
||||
MVT VT = (MVT::SimpleValueType)i;
|
||||
for (MVT VT : MVT::vector_valuetypes()) {
|
||||
setOperationAction(ISD::ADD , VT, Expand);
|
||||
setOperationAction(ISD::SUB , VT, Expand);
|
||||
setOperationAction(ISD::FADD, VT, Expand);
|
||||
@ -872,10 +870,8 @@ void X86TargetLowering::resetOperationActions() {
|
||||
setOperationAction(ISD::ANY_EXTEND, VT, Expand);
|
||||
setOperationAction(ISD::VSELECT, VT, Expand);
|
||||
setOperationAction(ISD::SELECT_CC, VT, Expand);
|
||||
for (int InnerVT = MVT::FIRST_VECTOR_VALUETYPE;
|
||||
InnerVT <= MVT::LAST_VECTOR_VALUETYPE; ++InnerVT)
|
||||
setTruncStoreAction(VT,
|
||||
(MVT::SimpleValueType)InnerVT, Expand);
|
||||
for (MVT InnerVT : MVT::vector_valuetypes())
|
||||
setTruncStoreAction(VT, InnerVT, Expand);
|
||||
setLoadExtAction(ISD::SEXTLOAD, VT, Expand);
|
||||
setLoadExtAction(ISD::ZEXTLOAD, VT, Expand);
|
||||
|
||||
@ -1328,10 +1324,7 @@ void X86TargetLowering::resetOperationActions() {
|
||||
setOperationAction(ISD::SRA, MVT::v8i32, Custom);
|
||||
|
||||
// Custom lower several nodes for 256-bit types.
|
||||
for (int i = MVT::FIRST_VECTOR_VALUETYPE;
|
||||
i <= MVT::LAST_VECTOR_VALUETYPE; ++i) {
|
||||
MVT VT = (MVT::SimpleValueType)i;
|
||||
|
||||
for (MVT VT : MVT::vector_valuetypes()) {
|
||||
if (VT.getScalarSizeInBits() >= 32) {
|
||||
setOperationAction(ISD::MLOAD, VT, Legal);
|
||||
setOperationAction(ISD::MSTORE, VT, Legal);
|
||||
@ -1504,10 +1497,7 @@ void X86TargetLowering::resetOperationActions() {
|
||||
}
|
||||
|
||||
// Custom lower several nodes.
|
||||
for (int i = MVT::FIRST_VECTOR_VALUETYPE;
|
||||
i <= MVT::LAST_VECTOR_VALUETYPE; ++i) {
|
||||
MVT VT = (MVT::SimpleValueType)i;
|
||||
|
||||
for (MVT VT : MVT::vector_valuetypes()) {
|
||||
unsigned EltSize = VT.getVectorElementType().getSizeInBits();
|
||||
// Extract subvector is special because the value type
|
||||
// (result) is 256/128-bit but the source is 512-bit wide.
|
||||
@ -1596,11 +1586,8 @@ void X86TargetLowering::resetOperationActions() {
|
||||
|
||||
// SIGN_EXTEND_INREGs are evaluated by the extend type. Handle the expansion
|
||||
// of this type with custom code.
|
||||
for (int VT = MVT::FIRST_VECTOR_VALUETYPE;
|
||||
VT != MVT::LAST_VECTOR_VALUETYPE; VT++) {
|
||||
setOperationAction(ISD::SIGN_EXTEND_INREG, (MVT::SimpleValueType)VT,
|
||||
Custom);
|
||||
}
|
||||
for (MVT VT : MVT::vector_valuetypes())
|
||||
setOperationAction(ISD::SIGN_EXTEND_INREG, VT, Custom);
|
||||
|
||||
// We want to custom lower some of our intrinsics.
|
||||
setOperationAction(ISD::INTRINSIC_WO_CHAIN, MVT::Other, Custom);
|
||||
@ -16009,9 +15996,7 @@ static SDValue LowerExtendedLoad(SDValue Op, const X86Subtarget *Subtarget,
|
||||
// Attempt to load the original value using scalar loads.
|
||||
// Find the largest scalar type that divides the total loaded size.
|
||||
MVT SclrLoadTy = MVT::i8;
|
||||
for (unsigned tp = MVT::FIRST_INTEGER_VALUETYPE;
|
||||
tp < MVT::LAST_INTEGER_VALUETYPE; ++tp) {
|
||||
MVT Tp = (MVT::SimpleValueType)tp;
|
||||
for (MVT Tp : MVT::integer_valuetypes()) {
|
||||
if (TLI.isTypeLegal(Tp) && ((MemSz % Tp.getSizeInBits()) == 0)) {
|
||||
SclrLoadTy = Tp;
|
||||
}
|
||||
@ -24689,9 +24674,7 @@ static SDValue PerformSTORECombine(SDNode *N, SelectionDAG &DAG,
|
||||
|
||||
// Find the largest store unit
|
||||
MVT StoreType = MVT::i8;
|
||||
for (unsigned tp = MVT::FIRST_INTEGER_VALUETYPE;
|
||||
tp < MVT::LAST_INTEGER_VALUETYPE; ++tp) {
|
||||
MVT Tp = (MVT::SimpleValueType)tp;
|
||||
for (MVT Tp : MVT::integer_valuetypes()) {
|
||||
if (TLI.isTypeLegal(Tp) && Tp.getSizeInBits() <= NumElems * ToSz)
|
||||
StoreType = Tp;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user