mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-15 07:34:33 +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:
parent
13c6a1740c
commit
e4af7b5a57
@ -320,8 +320,7 @@ void DAGTypeLegalizer::GetExpandedOp(SDOperand Op, SDOperand &Lo,
|
||||
Hi = Entry.second;
|
||||
}
|
||||
|
||||
void DAGTypeLegalizer::SetExpandedOp(SDOperand Op, SDOperand Lo,
|
||||
SDOperand Hi) {
|
||||
void DAGTypeLegalizer::SetExpandedOp(SDOperand Op, SDOperand Lo, SDOperand Hi) {
|
||||
// Remember that this is the result of the node.
|
||||
std::pair<SDOperand, SDOperand> &Entry = ExpandedNodes[Op];
|
||||
assert(Entry.first.Val == 0 && "Node already expanded");
|
||||
@ -335,6 +334,30 @@ void DAGTypeLegalizer::SetExpandedOp(SDOperand Op, SDOperand Lo,
|
||||
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,
|
||||
MVT::ValueType DestVT) {
|
||||
// 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
|
||||
/// scalar value of type 'ty' to use.
|
||||
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,
|
||||
/// indicates the replacement node to use.
|
||||
|
Loading…
x
Reference in New Issue
Block a user