diff options
author | David Goodwin <david_goodwin@apple.com> | 2009-11-13 19:52:48 +0000 |
---|---|---|
committer | David Goodwin <david_goodwin@apple.com> | 2009-11-13 19:52:48 +0000 |
commit | 87d21b92fc42f6b3bd8567a83fc5b5191c1205e5 (patch) | |
tree | 9379a49fd55d087f15cd2fff180aefc2286bcafd /lib/CodeGen/AggressiveAntiDepBreaker.h | |
parent | a8173b934fdfdc7a3ca543a0734b7c8fa1969366 (diff) | |
download | llvm-87d21b92fc42f6b3bd8567a83fc5b5191c1205e5.tar.gz llvm-87d21b92fc42f6b3bd8567a83fc5b5191c1205e5.tar.bz2 llvm-87d21b92fc42f6b3bd8567a83fc5b5191c1205e5.tar.xz |
Allow target to specify regclass for which antideps will only be broken along the critical path.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88682 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/AggressiveAntiDepBreaker.h')
-rw-r--r-- | lib/CodeGen/AggressiveAntiDepBreaker.h | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/CodeGen/AggressiveAntiDepBreaker.h b/lib/CodeGen/AggressiveAntiDepBreaker.h index fb5b869fcb..e5c9a7bb3a 100644 --- a/lib/CodeGen/AggressiveAntiDepBreaker.h +++ b/lib/CodeGen/AggressiveAntiDepBreaker.h @@ -86,8 +86,11 @@ namespace llvm { unsigned GetGroup(unsigned Reg); // GetGroupRegs - Return a vector of the registers belonging to a - // group. - void GetGroupRegs(unsigned Group, std::vector<unsigned> &Regs); + // group. If RegRefs is non-NULL then only included referenced registers. + void GetGroupRegs( + unsigned Group, + std::vector<unsigned> &Regs, + std::multimap<unsigned, AggressiveAntiDepState::RegisterReference> *RegRefs); // UnionGroups - Union Reg1's and Reg2's groups to form a new // group. Return the index of the GroupNode representing the @@ -113,7 +116,11 @@ namespace llvm { /// AllocatableSet - The set of allocatable registers. /// We'll be ignoring anti-dependencies on non-allocatable registers, /// because they may not be safe to break. - BitVector AllocatableSet; + const BitVector AllocatableSet; + + /// CriticalPathSet - The set of registers that should only be + /// renamed if they are on the critical path. + BitVector CriticalPathSet; /// State - The state used to identify and rename anti-dependence /// registers. @@ -126,7 +133,7 @@ namespace llvm { public: AggressiveAntiDepBreaker(MachineFunction& MFi, - TargetSubtarget::ExcludedRCVector& ExcludedRCs); + TargetSubtarget::RegClassVector& CriticalPathRCs); ~AggressiveAntiDepBreaker(); /// GetMaxTrials - As anti-dependencies are broken, additional |