summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorMicah Villmow <villmow@gmail.com>2012-09-13 15:24:43 +0000
committerMicah Villmow <villmow@gmail.com>2012-09-13 15:24:43 +0000
commit1cc19105e7ac0d2492d9128718f30e66e6d7a175 (patch)
tree214fd0ea0c61df57f42bbf6b05ca631162cefe42 /llvm
parent857186d5e45e057196cc7a520a19c3b338d00a03 (diff)
downloadbcm5719-llvm-1cc19105e7ac0d2492d9128718f30e66e6d7a175.tar.gz
bcm5719-llvm-1cc19105e7ac0d2492d9128718f30e66e6d7a175.zip
The current implementation does not allow more than 32 types to be properly handled with target lowering. This doubles the size to 64bit types and easily allows extension to more types.
llvm-svn: 163806
Diffstat (limited to 'llvm')
-rw-r--r--llvm/include/llvm/Target/TargetLowering.h12
1 files changed, 8 insertions, 4 deletions
diff --git a/llvm/include/llvm/Target/TargetLowering.h b/llvm/include/llvm/Target/TargetLowering.h
index ef634220fb3..5e9a26be6bf 100644
--- a/llvm/include/llvm/Target/TargetLowering.h
+++ b/llvm/include/llvm/Target/TargetLowering.h
@@ -497,7 +497,8 @@ public:
(unsigned)VT.getSimpleVT().SimpleTy < sizeof(CondCodeActions[0])*4 &&
"Table isn't big enough!");
LegalizeAction Action = (LegalizeAction)
- ((CondCodeActions[CC] >> (2*VT.getSimpleVT().SimpleTy)) & 3);
+ ((CondCodeActions[CC][VT.getSimpleVT().SimpleTy >> 5]
+ >> (2*(VT.getSimpleVT().SimpleTy & 0x1F))) & 3);
assert(Action != Promote && "Can't promote condition code!");
return Action;
}
@@ -554,6 +555,7 @@ public:
}
return EVT::getEVT(Ty, AllowUnknown);
}
+
/// getByValTypeAlignment - Return the desired alignment for ByVal aggregate
/// function arguments in the caller parameter area. This is the actual
@@ -1153,8 +1155,10 @@ protected:
assert(VT < MVT::LAST_VALUETYPE &&
(unsigned)CC < array_lengthof(CondCodeActions) &&
"Table isn't big enough!");
- CondCodeActions[(unsigned)CC] &= ~(uint64_t(3UL) << VT.SimpleTy*2);
- CondCodeActions[(unsigned)CC] |= (uint64_t)Action << VT.SimpleTy*2;
+ CondCodeActions[(unsigned)CC][VT.SimpleTy >> 5]
+ &= ~(uint64_t(3UL) << (VT.SimpleTy & 0x1F)*2);
+ CondCodeActions[(unsigned)CC][VT.SimpleTy >> 5]
+ |= (uint64_t)Action << (VT.SimpleTy & 0x1F)*2;
}
/// AddPromotedToType - If Opc/OrigVT is specified as being promoted, the
@@ -1933,7 +1937,7 @@ private:
/// CondCodeActions - For each condition code (ISD::CondCode) keep a
/// LegalizeAction that indicates how instruction selection should
/// deal with the condition code.
- uint64_t CondCodeActions[ISD::SETCC_INVALID];
+ uint64_t CondCodeActions[ISD::SETCC_INVALID][2];
ValueTypeActionImpl ValueTypeActions;
OpenPOWER on IntegriCloud