diff options
author | Craig Topper <craig.topper@gmail.com> | 2016-05-02 01:53:30 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2016-05-02 01:53:30 +0000 |
commit | e3c1e225d7581a15a8c1ef766ef958386b24c850 (patch) | |
tree | 8f0aa4f6a2c7fd9ddc0677d38fa5777f3561c648 /llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | |
parent | 6eec8d6c6f2c179ecea70087bf5f5dff3052dd4b (diff) | |
download | bcm5719-llvm-e3c1e225d7581a15a8c1ef766ef958386b24c850.tar.gz bcm5719-llvm-e3c1e225d7581a15a8c1ef766ef958386b24c850.zip |
[CodeGen] Add OPC_MoveChild0-OPC_MoveChild7 opcodes to isel matching tables to optimize table size. Shaves about 12K off the X86 matcher table.
llvm-svn: 268209
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index 3996645e3da..016dd28a179 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -2971,6 +2971,18 @@ SelectCodeCommon(SDNode *NodeToMatch, const unsigned char *MatcherTable, continue; } + case OPC_MoveChild0: case OPC_MoveChild1: + case OPC_MoveChild2: case OPC_MoveChild3: + case OPC_MoveChild4: case OPC_MoveChild5: + case OPC_MoveChild6: case OPC_MoveChild7: { + unsigned ChildNo = Opcode-OPC_MoveChild0; + if (ChildNo >= N.getNumOperands()) + break; // Match fails if out of range child #. + N = N.getOperand(ChildNo); + NodeStack.push_back(N); + continue; + } + case OPC_MoveParent: // Pop the current node off the NodeStack. NodeStack.pop_back(); |