33#ifndef TCE_MACHINE_INSTR_DDG_HH
34#define TCE_MACHINE_INSTR_DDG_HH
49#include "llvm/CodeGen/TargetRegisterInfo.h"
50#include "llvm/CodeGen/TargetInstrInfo.h"
51#include "llvm/Target/TargetMachine.h"
54 class MachineFunction;
69 return other.
mi_ == this->
mi_;
81 const llvm::MachineInstr*
mi_;
118 std::string type =
"unknown";
149 llvm::MachineFunction& mf,
150 bool onlyTrueDeps=
true);
177 std::pair<MIDDGNode*, MIDDGNode*>
198 mutable std::map<int, std::list<MIDDGNode*> >
schedule_;
200 llvm::MachineFunction&
mf_;
#define IGNORE_COMPILER_WARNING(X)
#define POP_COMPILER_DIAGS
Node & node(const int index) const
std::set< MIDDGNode *, typename GraphNode::Comparator > NodeSet
void setPrintOnlyCriticalPath(bool flag)
std::map< Register, Register > RegisterMap
std::map< Register, NodeSet > UserMap
std::set< Register > RegisterSet
const llvm::TargetRegisterInfo * regInfo_
bool preceedingNodeUsesOrDefinesReg(const MIDDGNode &node, Register physReg) const
TCEString dotString() const
std::pair< MIDDGNode *, MIDDGNode * > createFalseDepEdge(Register vreg, Register physReg) const
int falseDepHeightDelta(Register vreg, Register physReg) const
llvm::MachineFunction & mf_
std::map< Register, MIDDGNode * > DefinerMap
void computeOptimalSchedule()
std::map< int, std::list< MIDDGNode * > > schedule_
std::map< Register, MIDDGNode * > lastPhysRegDefiners_
MIDDGNode * lastVregUser(Register vreg) const
std::set< MIDDGEdge * > edges_
virtual ~MachineInstrDDG()
RegisterMap regAssignments_
void assignPhysReg(Register vreg, Register physReg)
MIDDGNode * vregDefiner(Register vreg) const
std::map< Register, MIDDGNode * > lastPhysRegUsers_
RegisterSet allRegisters() const
bool printOnlyCriticalPath_
RegisterSet allRegisters_
unsigned char dependenceType_
TCEString toString() const
std::string typeAsString() const
TCEString dotString() const
MIDDGEdge(unsigned reg, DependenceType type)
int sequentialAddress() const
const llvm::MachineInstr * machineInstr() const
bool operator<(const MIDDGNode &other) const
TCEString osalOperationName() const
bool operator==(const MIDDGNode &other) const
MIDDGNode(const llvm::MachineInstr &mi, int sequentialAddress)
std::string dotString() const
void setOptimalCycle(int cycle)
const llvm::MachineInstr * mi_