OpenASIP 2.2
|
#include <OffsetAliasAnalyzer.hh>
Classes | |
struct | OffsetData |
Public Member Functions | |
virtual bool | isAddressTraceable (DataDependenceGraph &ddg, const ProgramOperation &pop) |
virtual AliasingResult | analyze (DataDependenceGraph &ddg, const ProgramOperation &pop1, const ProgramOperation &pop2, MoveNodeUse::BBRelation bbRelation) |
OffsetAliasAnalyzer (const TCEString &sp) | |
~OffsetAliasAnalyzer () | |
![]() | |
virtual void | initProcedure (TTAProgram::Procedure &) |
virtual | ~MemoryAliasAnalyzer () |
Private Member Functions | |
bool | analyzeLoopPtrIncrease (const DataDependenceGraph &ddg, const MoveNode &mn, long &offset) |
bool | sameLoopAndPrevSources (const DataDependenceGraph &ddg, const MoveNode &anc1, const MoveNode &anc2) |
Private Attributes | |
std::map< int, OffsetData > | offsetData_ |
TCEString | sp_ |
Additional Inherited Members | |
![]() | |
enum | AliasingResult { ALIAS_FALSE = 0 , ALIAS_TRUE = 1 , ALIAS_UNKNOWN = 2 , ALIAS_PARTIAL = 3 } |
![]() | |
AliasingResult | compareIndeces (int index1, int index2, const ProgramOperation &pop1, const ProgramOperation &pop2) |
![]() | |
static const MoveNode * | addressOperandMove (const ProgramOperation &po) |
static TwoPartAddressOperandDetection | findTwoPartAddressOperands (const ProgramOperation &po) |
static const MoveNode * | searchLoopIndexBasedIncrement (DataDependenceGraph &ddg, const MoveNode &mn, long &loopIncrement) |
static const MoveNode * | findIncrement (const MoveNode &mn, long &increment) |
static const MoveNode * | detectConstantScale (const MoveNode &mn, int &shiftAmount) |
Definition at line 46 of file OffsetAliasAnalyzer.hh.
OffsetAliasAnalyzer::OffsetAliasAnalyzer | ( | const TCEString & | sp | ) |
Definition at line 492 of file OffsetAliasAnalyzer.cc.
OffsetAliasAnalyzer::~OffsetAliasAnalyzer | ( | ) |
Definition at line 490 of file OffsetAliasAnalyzer.cc.
|
virtual |
Analyzes aliasing of two memory adderesses.
Checks if they are stack offsets and compares the offsets.
ddg | ddg where they belong. |
node1 | first node to compare |
another | anpther node to compare |
Implements MemoryAliasAnalyzer.
Definition at line 166 of file OffsetAliasAnalyzer.cc.
References MemoryAliasAnalyzer::addressOperandMove(), MemoryAliasAnalyzer::ALIAS_UNKNOWN, analyzeLoopPtrIncrease(), MoveNodeSet::at(), MemoryAliasAnalyzer::compareIndeces(), MoveNodeSet::count(), MemoryAliasAnalyzer::findTwoPartAddressOperands(), ProgramOperation::inputNode(), SimValue::intValue(), TTAProgram::Terminal::isGPR(), TTAProgram::Terminal::isImmediate(), MoveNode::isSourceConstant(), MoveNode::isSourceOperation(), MoveNodeUse::LOOP, MoveNode::move(), Operation::name(), offsetData_, MemoryAliasAnalyzer::TwoPartAddressOperandDetection::offsetOperation, DataDependenceGraph::onlyRegisterRawAncestor(), MemoryAliasAnalyzer::TwoPartAddressOperandDetection::operand1, MemoryAliasAnalyzer::TwoPartAddressOperandDetection::operand2, ProgramOperation::operation(), ProgramOperation::poId(), DataDependenceGraph::regRawSuccessorCount(), sameLoopAndPrevSources(), TTAProgram::Move::source(), MoveNode::sourceOperation(), sp_, and TTAProgram::Terminal::value().
|
private |
Definition at line 495 of file OffsetAliasAnalyzer.cc.
References MemoryAliasAnalyzer::findIncrement(), and DataDependenceGraph::onlyRegisterRawSource().
Referenced by analyze().
|
virtual |
Checks if the node contains an adress that is an offset.
ddg | DDG where to analyze from |
mn | the node being checked |
Implements MemoryAliasAnalyzer.
Definition at line 59 of file OffsetAliasAnalyzer.cc.
References MemoryAliasAnalyzer::addressOperandMove(), MoveNodeSet::at(), MoveNodeSet::count(), MemoryAliasAnalyzer::findTwoPartAddressOperands(), ProgramOperation::inputNode(), TTAProgram::Terminal::isGPR(), TTAProgram::Terminal::isImmediate(), MoveNode::isSourceOperation(), MoveNode::move(), Operation::name(), offsetData_, MemoryAliasAnalyzer::TwoPartAddressOperandDetection::offsetOperation, DataDependenceGraph::onlyRegisterRawAncestor(), MemoryAliasAnalyzer::TwoPartAddressOperandDetection::operand1, MemoryAliasAnalyzer::TwoPartAddressOperandDetection::operand2, ProgramOperation::operation(), ProgramOperation::poId(), DataDependenceGraph::regRawSuccessorCount(), TTAProgram::Move::source(), MoveNode::sourceOperation(), and sp_.
|
private |
Definition at line 478 of file OffsetAliasAnalyzer.cc.
References DataDependenceGraph::onlyRegisterRawSource().
Referenced by analyze().
|
private |
Definition at line 69 of file OffsetAliasAnalyzer.hh.
Referenced by analyze(), and isAddressTraceable().
|
private |
Definition at line 71 of file OffsetAliasAnalyzer.hh.
Referenced by analyze(), and isAddressTraceable().