aboutsummaryrefslogtreecommitdiffstats
path: root/utils/TableGen/DAGISelMatcherEmitter.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-02-24 05:33:42 +0000
committerChris Lattner <sabre@nondot.org>2010-02-24 05:33:42 +0000
commit02f73585f7d018ea3ddcda88c8273ee4e5ea4de3 (patch)
tree5d2407fb803c6ee01369d5a82ad80516c792ff9b /utils/TableGen/DAGISelMatcherEmitter.cpp
parent91ff7f75f55a626eb41761f3ded9f3d13002980c (diff)
downloadexternal_llvm-02f73585f7d018ea3ddcda88c8273ee4e5ea4de3.zip
external_llvm-02f73585f7d018ea3ddcda88c8273ee4e5ea4de3.tar.gz
external_llvm-02f73585f7d018ea3ddcda88c8273ee4e5ea4de3.tar.bz2
The new isel was not properly handling patterns that covered
internal nodes with flag results. Record these with a new OPC_MarkFlagResults opcode and use this to update the interior nodes' flag results properly. This fixes CodeGen/X86/i256-add.ll with the new isel. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97021 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/DAGISelMatcherEmitter.cpp')
-rw-r--r--utils/TableGen/DAGISelMatcherEmitter.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/utils/TableGen/DAGISelMatcherEmitter.cpp b/utils/TableGen/DAGISelMatcherEmitter.cpp
index c316950..ecc75c8 100644
--- a/utils/TableGen/DAGISelMatcherEmitter.cpp
+++ b/utils/TableGen/DAGISelMatcherEmitter.cpp
@@ -337,6 +337,15 @@ EmitMatcher(const MatcherNode *N, unsigned Indent, formatted_raw_ostream &OS) {
OS << '\n';
return 6+EN->getNumVTs()+NumOperandBytes;
}
+ case MatcherNode::MarkFlagResults: {
+ const MarkFlagResultsMatcherNode *CFR = cast<MarkFlagResultsMatcherNode>(N);
+ OS << "OPC_MarkFlagResults, " << CFR->getNumNodes() << ", ";
+ unsigned NumOperandBytes = 0;
+ for (unsigned i = 0, e = CFR->getNumNodes(); i != e; ++i)
+ NumOperandBytes += EmitVBRValue(CFR->getNode(i), OS);
+ OS << '\n';
+ return 2+NumOperandBytes;
+ }
case MatcherNode::CompleteMatch: {
const CompleteMatchMatcherNode *CM = cast<CompleteMatchMatcherNode>(N);
OS << "OPC_CompleteMatch, " << CM->getNumResults() << ", ";