mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-16 11:24:39 +00:00
Reverted 230471 - gather scatter handling in table gen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230892 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1113,8 +1113,6 @@ static unsigned GetNumNodeResults(Record *Operator, CodeGenDAGPatterns &CDP) {
|
||||
|
||||
// FIXME: Should allow access to all the results here.
|
||||
unsigned NumDefsToAdd = InstInfo.Operands.NumDefs ? 1 : 0;
|
||||
if (InstInfo.hasTwoExplicitDefs)
|
||||
++NumDefsToAdd;
|
||||
|
||||
// Add on one implicit def if it has a resolvable type.
|
||||
if (InstInfo.HasOneImplicitDefWithKnownVT(CDP.getTargetInfo()) !=MVT::Other)
|
||||
@@ -1611,20 +1609,11 @@ bool TreePatternNode::ApplyTypeConstraints(TreePattern &TP, bool NotRegisters) {
|
||||
assert(getNumTypes() == 0 && "Set doesn't produce a value");
|
||||
assert(getNumChildren() >= 2 && "Missing RHS of a set?");
|
||||
unsigned NC = getNumChildren();
|
||||
unsigned NumOfSrcs = NC-1;
|
||||
|
||||
// destination
|
||||
TreePatternNode *SetVal = getChild(NC-1);
|
||||
bool MadeChange = SetVal->ApplyTypeConstraints(TP, NotRegisters);
|
||||
|
||||
// second explicit destination
|
||||
if (TP.getRecord()->getValueAsBit("hasTwoExplicitDefs")) {
|
||||
TreePatternNode *Set2Val = getChild(NC-2);
|
||||
MadeChange = Set2Val->ApplyTypeConstraints(TP, NotRegisters);
|
||||
NumOfSrcs --;
|
||||
}
|
||||
|
||||
for (unsigned i = 0; i < NumOfSrcs; ++i) {
|
||||
for (unsigned i = 0; i < NC-1; ++i) {
|
||||
TreePatternNode *Child = getChild(i);
|
||||
MadeChange |= Child->ApplyTypeConstraints(TP, NotRegisters);
|
||||
|
||||
@@ -2867,7 +2856,7 @@ const DAGInstruction &CodeGenDAGPatterns::parseInstructionPattern(
|
||||
|
||||
// Check that all of the results occur first in the list.
|
||||
std::vector<Record*> Results;
|
||||
SmallVector<TreePatternNode *, 2> ResNode;
|
||||
TreePatternNode *Res0Node = nullptr;
|
||||
for (unsigned i = 0; i != NumResults; ++i) {
|
||||
if (i == CGI.Operands.size())
|
||||
I->error("'" + InstResults.begin()->first +
|
||||
@@ -2879,7 +2868,8 @@ const DAGInstruction &CodeGenDAGPatterns::parseInstructionPattern(
|
||||
if (!RNode)
|
||||
I->error("Operand $" + OpName + " does not exist in operand list!");
|
||||
|
||||
ResNode.push_back(RNode);
|
||||
if (i == 0)
|
||||
Res0Node = RNode;
|
||||
Record *R = cast<DefInit>(RNode->getLeafValue())->getDef();
|
||||
if (!R)
|
||||
I->error("Operand $" + OpName + " should be a set destination: all "
|
||||
@@ -2956,7 +2946,7 @@ const DAGInstruction &CodeGenDAGPatterns::parseInstructionPattern(
|
||||
GetNumNodeResults(I->getRecord(), *this));
|
||||
// Copy fully inferred output node type to instruction result pattern.
|
||||
for (unsigned i = 0; i != NumResults; ++i)
|
||||
ResultPattern->setType(i, ResNode[i]->getExtType(0));
|
||||
ResultPattern->setType(i, Res0Node->getExtType(i));
|
||||
|
||||
// Create and insert the instruction.
|
||||
// FIXME: InstImpResults should not be part of DAGInstruction.
|
||||
|
Reference in New Issue
Block a user