mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-26 12:20:42 +00:00
add a new Push2 opcode for targets (like cellspu) which have
ridiculously ginormous patterns and need more than one byte of displacement for encodings. This fixes CellSPU/fdiv.ll. SPU is still doing something else ridiculous though. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96833 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -201,7 +201,7 @@ GetInt8(const unsigned char *MatcherTable, unsigned &Idx) {
|
||||
}
|
||||
|
||||
enum BuiltinOpcodes {
|
||||
OPC_Push,
|
||||
OPC_Push, OPC_Push2,
|
||||
OPC_RecordNode,
|
||||
OPC_RecordMemRef,
|
||||
OPC_CaptureFlagInput,
|
||||
@@ -359,6 +359,19 @@ SDNode *SelectCodeCommon(SDNode *NodeToMatch, const unsigned char *MatcherTable,
|
||||
MatchScopes.push_back(NewEntry);
|
||||
continue;
|
||||
}
|
||||
case OPC_Push2: {
|
||||
unsigned NumToSkip = GetInt2(MatcherTable, MatcherIndex);
|
||||
MatchScope NewEntry;
|
||||
NewEntry.FailIndex = MatcherIndex+NumToSkip;
|
||||
NewEntry.NodeStackSize = NodeStack.size();
|
||||
NewEntry.NumRecordedNodes = RecordedNodes.size();
|
||||
NewEntry.NumMatchedMemRefs = MatchedMemRefs.size();
|
||||
NewEntry.InputChain = InputChain;
|
||||
NewEntry.InputFlag = InputFlag;
|
||||
NewEntry.HasChainNodesMatched = !ChainNodesMatched.empty();
|
||||
MatchScopes.push_back(NewEntry);
|
||||
continue;
|
||||
}
|
||||
case OPC_RecordNode:
|
||||
// Remember this node, it may end up being an operand in the pattern.
|
||||
RecordedNodes.push_back(N);
|
||||
|
||||
Reference in New Issue
Block a user