aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/InstrSched/SchedGraph.h
diff options
context:
space:
mode:
authorVikram S. Adve <vadve@cs.uiuc.edu>2001-11-12 18:53:43 +0000
committerVikram S. Adve <vadve@cs.uiuc.edu>2001-11-12 18:53:43 +0000
commit200a4359661e5ef8ec952a088ecc723d4581f606 (patch)
treed61d0d03d61f64d0b04093b98b496adc43635646 /lib/CodeGen/InstrSched/SchedGraph.h
parenta95c69997faa0422f135efad2f25281011d1cbf0 (diff)
Eliminate most uses of the machine instruction vector for each LLVM instr,
since some m. instr. may be generated by LLVM instrs. in other blocks. Handle non-SSA (anti and output) edges and true edges uniformly by working with machine instructions alone. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1269 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/InstrSched/SchedGraph.h')
-rw-r--r--lib/CodeGen/InstrSched/SchedGraph.h18
1 files changed, 8 insertions, 10 deletions
diff --git a/lib/CodeGen/InstrSched/SchedGraph.h b/lib/CodeGen/InstrSched/SchedGraph.h
index 1fec41e4ba..44d59a1aa5 100644
--- a/lib/CodeGen/InstrSched/SchedGraph.h
+++ b/lib/CodeGen/InstrSched/SchedGraph.h
@@ -56,7 +56,7 @@ const ResourceId MachineFPRegsRID = -4; // use +ve numbers for actual regs
class SchedGraphEdge: public NonCopyable {
public:
enum SchedGraphEdgeDepType {
- CtrlDep, MemoryDep, DefUseDep, MachineRegister, MachineResource
+ CtrlDep, MemoryDep, ValueDep, MachineRegister, MachineResource
};
enum DataDepOrderType {
TrueDep = 0x1, AntiDep=0x2, OutputDep=0x4, NonDataDep=0x8
@@ -82,21 +82,21 @@ public:
/*ctor*/ SchedGraphEdge(SchedGraphNode* _src,
SchedGraphNode* _sink,
SchedGraphEdgeDepType _depType,
- unsigned int _depOrderType =TrueDep,
+ unsigned int _depOrderType,
int _minDelay = -1);
- // constructor for explicit def-use or memory def-use edge
+ // constructor for explicit value dependence (may be true/anti/output)
/*ctor*/ SchedGraphEdge(SchedGraphNode* _src,
SchedGraphNode* _sink,
const Value* _val,
- unsigned int _depOrderType =TrueDep,
+ unsigned int _depOrderType,
int _minDelay = -1);
// constructor for machine register dependence
/*ctor*/ SchedGraphEdge(SchedGraphNode* _src,
SchedGraphNode* _sink,
unsigned int _regNum,
- unsigned int _depOrderType =TrueDep,
+ unsigned int _depOrderType,
int _minDelay = -1);
// constructor for any other machine resource dependences.
@@ -115,7 +115,7 @@ public:
SchedGraphEdgeDepType getDepType () const { return depType; }
const Value* getValue () const {
- assert(depType == DefUseDep || depType == MemoryDep); return val;
+ assert(depType == ValueDep); return val;
}
int getMachineReg () const {
assert(depType == MachineRegister); return machineRegNum;
@@ -335,12 +335,10 @@ private:
void addMachineRegEdges (RegToRefVecMap& regToRefVecMap,
const TargetMachine& target);
- void addSSAEdge (SchedGraphNode* node,
+ void addEdgesForValue (SchedGraphNode* refNode,
const RefVec& defVec,
const Value* defValue,
- const TargetMachine& target);
-
- void addNonSSAEdgesForValue (const Instruction* instr,
+ bool refNodeIsDef,
const TargetMachine& target);
void addDummyEdges ();