diff options
author | Vikram S. Adve <vadve@cs.uiuc.edu> | 2001-11-12 18:53:43 +0000 |
---|---|---|
committer | Vikram S. Adve <vadve@cs.uiuc.edu> | 2001-11-12 18:53:43 +0000 |
commit | 200a4359661e5ef8ec952a088ecc723d4581f606 (patch) | |
tree | d61d0d03d61f64d0b04093b98b496adc43635646 /lib/CodeGen/InstrSched/SchedGraph.h | |
parent | a95c69997faa0422f135efad2f25281011d1cbf0 (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.h | 18 |
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 (); |