mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-10 02:25:47 +00:00
implement some methods.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44723 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -320,8 +320,7 @@ void DAGTypeLegalizer::GetExpandedOp(SDOperand Op, SDOperand &Lo,
|
|||||||
Hi = Entry.second;
|
Hi = Entry.second;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DAGTypeLegalizer::SetExpandedOp(SDOperand Op, SDOperand Lo,
|
void DAGTypeLegalizer::SetExpandedOp(SDOperand Op, SDOperand Lo, SDOperand Hi) {
|
||||||
SDOperand Hi) {
|
|
||||||
// Remember that this is the result of the node.
|
// Remember that this is the result of the node.
|
||||||
std::pair<SDOperand, SDOperand> &Entry = ExpandedNodes[Op];
|
std::pair<SDOperand, SDOperand> &Entry = ExpandedNodes[Op];
|
||||||
assert(Entry.first.Val == 0 && "Node already expanded");
|
assert(Entry.first.Val == 0 && "Node already expanded");
|
||||||
@@ -335,6 +334,30 @@ void DAGTypeLegalizer::SetExpandedOp(SDOperand Op, SDOperand Lo,
|
|||||||
MarkNewNodes(Hi.Val);
|
MarkNewNodes(Hi.Val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DAGTypeLegalizer::GetSplitOp(SDOperand Op, SDOperand &Lo, SDOperand &Hi) {
|
||||||
|
std::pair<SDOperand, SDOperand> &Entry = SplitNodes[Op];
|
||||||
|
RemapNode(Entry.first);
|
||||||
|
RemapNode(Entry.second);
|
||||||
|
assert(Entry.first.Val && "Operand isn't split");
|
||||||
|
Lo = Entry.first;
|
||||||
|
Hi = Entry.second;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DAGTypeLegalizer::SetSplitOp(SDOperand Op, SDOperand Lo, SDOperand Hi) {
|
||||||
|
// Remember that this is the result of the node.
|
||||||
|
std::pair<SDOperand, SDOperand> &Entry = SplitNodes[Op];
|
||||||
|
assert(Entry.first.Val == 0 && "Node already split");
|
||||||
|
Entry.first = Lo;
|
||||||
|
Entry.second = Hi;
|
||||||
|
|
||||||
|
// Lo/Hi may have been newly allocated, if so, add nodeid's as relevant.
|
||||||
|
if (Lo.Val->getNodeId() == NewNode)
|
||||||
|
MarkNewNodes(Lo.Val);
|
||||||
|
if (Hi.Val->getNodeId() == NewNode)
|
||||||
|
MarkNewNodes(Hi.Val);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SDOperand DAGTypeLegalizer::CreateStackStoreLoad(SDOperand Op,
|
SDOperand DAGTypeLegalizer::CreateStackStoreLoad(SDOperand Op,
|
||||||
MVT::ValueType DestVT) {
|
MVT::ValueType DestVT) {
|
||||||
// Create the stack frame object.
|
// Create the stack frame object.
|
||||||
|
@@ -97,6 +97,10 @@ class VISIBILITY_HIDDEN DAGTypeLegalizer {
|
|||||||
/// ScalarizedNodes - For nodes that are <1 x ty>, this map indicates the
|
/// ScalarizedNodes - For nodes that are <1 x ty>, this map indicates the
|
||||||
/// scalar value of type 'ty' to use.
|
/// scalar value of type 'ty' to use.
|
||||||
DenseMap<SDOperand, SDOperand> ScalarizedNodes;
|
DenseMap<SDOperand, SDOperand> ScalarizedNodes;
|
||||||
|
|
||||||
|
/// SplitNodes - For nodes that need to be split this map indicates
|
||||||
|
/// which operands are the expanded version of the input.
|
||||||
|
DenseMap<SDOperand, std::pair<SDOperand, SDOperand> > SplitNodes;
|
||||||
|
|
||||||
/// ReplacedNodes - For nodes that have been replaced with another,
|
/// ReplacedNodes - For nodes that have been replaced with another,
|
||||||
/// indicates the replacement node to use.
|
/// indicates the replacement node to use.
|
||||||
|
Reference in New Issue
Block a user