summaryrefslogtreecommitdiff
path: root/lib/CodeGen/AntiDepBreaker.h
diff options
context:
space:
mode:
authorDavid Goodwin <david_goodwin@apple.com>2009-11-03 20:57:50 +0000
committerDavid Goodwin <david_goodwin@apple.com>2009-11-03 20:57:50 +0000
commit4de099d8ca651e00fa5fac22bace4f4dba2d0292 (patch)
tree0a1c30be2310b064e895f5c841350c72773580a9 /lib/CodeGen/AntiDepBreaker.h
parentabf67ef548c257526d2f5f71521ddc8420784ac1 (diff)
downloadllvm-4de099d8ca651e00fa5fac22bace4f4dba2d0292.tar.gz
llvm-4de099d8ca651e00fa5fac22bace4f4dba2d0292.tar.bz2
llvm-4de099d8ca651e00fa5fac22bace4f4dba2d0292.tar.xz
Do a scheduling pass ignoring anti-dependencies to identify candidate registers that should be renamed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85939 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/AntiDepBreaker.h')
-rw-r--r--lib/CodeGen/AntiDepBreaker.h17
1 files changed, 14 insertions, 3 deletions
diff --git a/lib/CodeGen/AntiDepBreaker.h b/lib/CodeGen/AntiDepBreaker.h
index dac700076a..277508767e 100644
--- a/lib/CodeGen/AntiDepBreaker.h
+++ b/lib/CodeGen/AntiDepBreaker.h
@@ -21,6 +21,8 @@
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/ScheduleDAG.h"
#include "llvm/Target/TargetRegisterInfo.h"
+#include "llvm/ADT/SmallSet.h"
+#include "llvm/ADT/SmallVector.h"
namespace llvm {
@@ -29,12 +31,20 @@ namespace llvm {
/// anti-dependencies.
class AntiDepBreaker {
public:
+ typedef SmallSet<unsigned, 4> AntiDepRegSet;
+ typedef SmallVector<unsigned, 4> AntiDepRegVector;
+ typedef std::map<SUnit *, AntiDepRegVector> CandidateMap;
+
virtual ~AntiDepBreaker();
/// GetMaxTrials - Return the maximum number of anti-dependence
/// breaking attempts that will be made for a block.
virtual unsigned GetMaxTrials() =0;
+ /// NeedCandidates - Return true if the schedule must provide
+ /// candidates with BreakAntiDependencies().
+ virtual bool NeedCandidates() =0;
+
/// Start - Initialize anti-dep breaking for a new basic block.
virtual void StartBlock(MachineBasicBlock *BB) =0;
@@ -43,9 +53,10 @@ public:
/// the number of anti-dependencies broken.
///
virtual unsigned BreakAntiDependencies(std::vector<SUnit>& SUnits,
- MachineBasicBlock::iterator& Begin,
- MachineBasicBlock::iterator& End,
- unsigned InsertPosIndex) =0;
+ CandidateMap& Candidates,
+ MachineBasicBlock::iterator& Begin,
+ MachineBasicBlock::iterator& End,
+ unsigned InsertPosIndex) =0;
/// Observe - Update liveness information to account for the current
/// instruction, which will not be scheduled.