Go to the documentation of this file.
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_;
TCEString osalOperationName() const
const llvm::MachineInstr * mi_
std::map< Register, MIDDGNode * > lastPhysRegUsers_
Node & node(const int index) const
MIDDGEdge(unsigned reg, DependenceType type)
std::map< Register, NodeSet > UserMap
RegisterSet allRegisters() const
std::set< MIDDGNode *, typename MIDDGNode ::Comparator > NodeSet
std::map< Register, MIDDGNode * > DefinerMap
bool operator<(const MIDDGNode &other) const
std::map< Register, MIDDGNode * > lastPhysRegDefiners_
MIDDGNode(const llvm::MachineInstr &mi, int sequentialAddress)
std::string typeAsString() const
void assignPhysReg(Register vreg, Register physReg)
const llvm::TargetRegisterInfo * regInfo_
unsigned char dependenceType_
RegisterSet allRegisters_
TCEString toString() const
std::map< int, std::list< MIDDGNode * > > schedule_
void setOptimalCycle(int cycle)
std::set< Register > RegisterSet
std::pair< MIDDGNode *, MIDDGNode * > createFalseDepEdge(Register vreg, Register physReg) const
MIDDGNode * lastVregUser(Register vreg) const
std::map< Register, Register > RegisterMap
bool preceedingNodeUsesOrDefinesReg(const MIDDGNode &node, Register physReg) const
TCEString dotString() const
std::string dotString() const
bool operator==(const MIDDGNode &other) const
virtual ~MachineInstrDDG()
TCEString dotString() const
#define IGNORE_COMPILER_WARNING(X)
void computeOptimalSchedule()
void setPrintOnlyCriticalPath(bool flag)
#define POP_COMPILER_DIAGS
std::set< MIDDGEdge * > edges_
int falseDepHeightDelta(Register vreg, Register physReg) const
bool printOnlyCriticalPath_
MIDDGNode * vregDefiner(Register vreg) const
int sequentialAddress() const
const llvm::MachineInstr * machineInstr() const
RegisterMap regAssignments_
MachineInstrDDG(const MachineInstrDDG &parent)
llvm::MachineFunction & mf_