aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/SparcV9/InstrSched/SchedGraph.h
diff options
context:
space:
mode:
authorVikram S. Adve <vadve@cs.uiuc.edu>2001-10-28 21:45:02 +0000
committerVikram S. Adve <vadve@cs.uiuc.edu>2001-10-28 21:45:02 +0000
commitd0d79c01b4e1f625c0b8d725626b2123dcae9c77 (patch)
tree99d19009e358f4586969d08e37c12feb28827da1 /lib/Target/SparcV9/InstrSched/SchedGraph.h
parenta93bbac606cef2c5895a92b9630639d2209c16cf (diff)
Allow combinations of True/Anti/Output flags for each edge to
support, e.g., dependences on Call instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1009 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/SparcV9/InstrSched/SchedGraph.h')
-rw-r--r--lib/Target/SparcV9/InstrSched/SchedGraph.h23
1 files changed, 16 insertions, 7 deletions
diff --git a/lib/Target/SparcV9/InstrSched/SchedGraph.h b/lib/Target/SparcV9/InstrSched/SchedGraph.h
index 538590dccb..27014ad21d 100644
--- a/lib/Target/SparcV9/InstrSched/SchedGraph.h
+++ b/lib/Target/SparcV9/InstrSched/SchedGraph.h
@@ -35,11 +35,16 @@ class SchedGraphNode;
class SchedGraph;
class RegToRefVecMap;
class MachineInstr;
+class MachineCodeForBasicBlock;
+
/******************** Exported Data Types and Constants ********************/
typedef int ResourceId;
-const ResourceId InvalidResourceId = -1;
+const ResourceId InvalidRID = -1;
+const ResourceId MachineCCRegsRID = -2; // use +ve numbers for actual regs
+const ResourceId MachineIntRegsRID = -3; // use +ve numbers for actual regs
+const ResourceId MachineFPRegsRID = -4; // use +ve numbers for actual regs
//*********************** Public Class Declarations ************************/
@@ -50,14 +55,14 @@ public:
CtrlDep, MemoryDep, DefUseDep, MachineRegister, MachineResource
};
enum DataDepOrderType {
- TrueDep, AntiDep, OutputDep, NonDataDep
+ TrueDep = 0x1, AntiDep=0x2, OutputDep=0x4, NonDataDep=0x8
};
protected:
SchedGraphNode* src;
SchedGraphNode* sink;
SchedGraphEdgeDepType depType;
- DataDepOrderType depOrderType;
+ unsigned int depOrderType;
int minDelay; // cached latency (assumes fixed target arch)
union {
@@ -73,21 +78,21 @@ public:
/*ctor*/ SchedGraphEdge(SchedGraphNode* _src,
SchedGraphNode* _sink,
SchedGraphEdgeDepType _depType,
- DataDepOrderType _depOrderType =TrueDep,
+ unsigned int _depOrderType =TrueDep,
int _minDelay = -1);
// constructor for explicit def-use or memory def-use edge
/*ctor*/ SchedGraphEdge(SchedGraphNode* _src,
SchedGraphNode* _sink,
const Value* _val,
- DataDepOrderType _depOrderType =TrueDep,
+ unsigned int _depOrderType =TrueDep,
int _minDelay = -1);
// constructor for machine register dependence
/*ctor*/ SchedGraphEdge(SchedGraphNode* _src,
SchedGraphNode* _sink,
unsigned int _regNum,
- DataDepOrderType _depOrderType =TrueDep,
+ unsigned int _depOrderType =TrueDep,
int _minDelay = -1);
// constructor for any other machine resource dependences.
@@ -291,7 +296,7 @@ private:
//
// Graph builder
//
- void buildGraph (const TargetMachine& target);
+ void buildGraph (const TargetMachine& target);
void buildNodesforVMInstr (const TargetMachine& target,
const Instruction* instr);
@@ -306,6 +311,10 @@ private:
void addMemEdges (const vector<const Instruction*>& memVec,
const TargetMachine& target);
+ void addCallCCEdges (const vector<const Instruction*>& memVec,
+ MachineCodeForBasicBlock& bbMvec,
+ const TargetMachine& target);
+
void addMachineRegEdges (RegToRefVecMap& regToRefVecMap,
const TargetMachine& target);