diff options
author | Micah Villmow <villmow@gmail.com> | 2012-09-14 15:36:50 +0000 |
---|---|---|
committer | Micah Villmow <villmow@gmail.com> | 2012-09-14 15:36:50 +0000 |
commit | d15e6576903b3dc33a5418153aa7078a61ae6f04 (patch) | |
tree | 28ca44b73fb64e2513867d85336414198a212ea6 /include/llvm | |
parent | c6a6660c6271d3309379ff439f66eb0e6ad48e3a (diff) |
Add in comments that explain what the indexing and the size of the arrays is about.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163904 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm')
-rw-r--r-- | include/llvm/Target/TargetLowering.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/include/llvm/Target/TargetLowering.h b/include/llvm/Target/TargetLowering.h index 5e9a26be6b..d8c9122b8d 100644 --- a/include/llvm/Target/TargetLowering.h +++ b/include/llvm/Target/TargetLowering.h @@ -496,6 +496,9 @@ public: assert((unsigned)CC < array_lengthof(CondCodeActions) && (unsigned)VT.getSimpleVT().SimpleTy < sizeof(CondCodeActions[0])*4 && "Table isn't big enough!"); + /// The lower 5 bits of the SimpleTy index into Nth 2bit set from the 64bit + /// value and the upper 27 bits index into the second dimension of the + /// array to select what 64bit value to use. LegalizeAction Action = (LegalizeAction) ((CondCodeActions[CC][VT.getSimpleVT().SimpleTy >> 5] >> (2*(VT.getSimpleVT().SimpleTy & 0x1F))) & 3); @@ -1155,6 +1158,9 @@ protected: assert(VT < MVT::LAST_VALUETYPE && (unsigned)CC < array_lengthof(CondCodeActions) && "Table isn't big enough!"); + /// The lower 5 bits of the SimpleTy index into Nth 2bit set from the 64bit + /// value and the upper 27 bits index into the second dimension of the + /// array to select what 64bit value to use. CondCodeActions[(unsigned)CC][VT.SimpleTy >> 5] &= ~(uint64_t(3UL) << (VT.SimpleTy & 0x1F)*2); CondCodeActions[(unsigned)CC][VT.SimpleTy >> 5] @@ -1937,7 +1943,10 @@ 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][2]; + /// Because each CC action takes up 2 bits, we need to have the array size + /// be large enough to fit all of the value types. This can be done by + /// dividing the MVT::LAST_VALUETYPE by 32 and adding one. + uint64_t CondCodeActions[ISD::SETCC_INVALID][(MVT::LAST_VALUETYPE / 32) + 1]; ValueTypeActionImpl ValueTypeActions; |