diff options
author | Chris Lattner <sabre@nondot.org> | 2010-02-24 07:06:50 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-02-24 07:06:50 +0000 |
commit | 91c6a822baaba3cb2def94224115e57b84805347 (patch) | |
tree | f4dc2be05accba1ccf02ff1c0f3bbf4c7ac26f45 /utils/TableGen | |
parent | 95b6b9ae75bce23eb3e536f37a3e1b84fbedc9bb (diff) | |
download | external_llvm-91c6a822baaba3cb2def94224115e57b84805347.zip external_llvm-91c6a822baaba3cb2def94224115e57b84805347.tar.gz external_llvm-91c6a822baaba3cb2def94224115e57b84805347.tar.bz2 |
The new isel passes all tests, time to start making it go fast.
Also add an easy macro at the top of DAGISelEmitter.cpp to enable
it. Lets see if I can avoid accidentally turning it on :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97029 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen')
-rw-r--r-- | utils/TableGen/CMakeLists.txt | 1 | ||||
-rw-r--r-- | utils/TableGen/DAGISelEmitter.cpp | 10 | ||||
-rw-r--r-- | utils/TableGen/DAGISelMatcher.h | 2 | ||||
-rw-r--r-- | utils/TableGen/DAGISelMatcherOpt.cpp | 19 |
4 files changed, 29 insertions, 3 deletions
diff --git a/utils/TableGen/CMakeLists.txt b/utils/TableGen/CMakeLists.txt index a2678a2..881b50a 100644 --- a/utils/TableGen/CMakeLists.txt +++ b/utils/TableGen/CMakeLists.txt @@ -11,6 +11,7 @@ add_executable(tblgen DAGISelEmitter.cpp DAGISelMatcherEmitter.cpp DAGISelMatcherGen.cpp + DAGISelMatcherOpt.cpp DAGISelMatcher.cpp DisassemblerEmitter.cpp EDEmitter.cpp diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp index b9ef3da..2d2ab3e 100644 --- a/utils/TableGen/DAGISelEmitter.cpp +++ b/utils/TableGen/DAGISelEmitter.cpp @@ -24,6 +24,9 @@ #include <iostream> using namespace llvm; +//#define ENABLE_NEW_ISEL + + static cl::opt<bool> GenDebug("gen-debug", cl::desc("Generate debug code"), cl::init(false)); @@ -1791,6 +1794,9 @@ void DAGISelEmitter::EmitInstructionSelector(raw_ostream &OS) { OS << "// The main instruction selector code.\n" << "SDNode *SelectCode(SDNode *N) {\n" +#ifdef ENABLE_NEW_ISEL + << " return SelectCode2(N);\n" +#endif << " MVT::SimpleValueType NVT = N->getValueType(0).getSimpleVT().SimpleTy;\n" << " switch (N->getOpcode()) {\n" << " default:\n" @@ -1946,7 +1952,7 @@ void DAGISelEmitter::run(raw_ostream &OS) { // definitions. Emit the resultant instruction selector. EmitInstructionSelector(OS); -#if 0 +#ifdef ENABLE_NEW_ISEL MatcherNode *Matcher = 0; // Add all the patterns to a temporary list so we can sort them. @@ -1977,7 +1983,7 @@ void DAGISelEmitter::run(raw_ostream &OS) { Matcher = new PushMatcherNode(N, Matcher); } - // OptimizeMatcher(Matcher); + OptimizeMatcher(Matcher); //Matcher->dump(); EmitMatcherTable(Matcher, OS); delete Matcher; diff --git a/utils/TableGen/DAGISelMatcher.h b/utils/TableGen/DAGISelMatcher.h index 469a280..4dcbc8f 100644 --- a/utils/TableGen/DAGISelMatcher.h +++ b/utils/TableGen/DAGISelMatcher.h @@ -26,7 +26,7 @@ namespace llvm { MatcherNode *ConvertPatternToMatcher(const PatternToMatch &Pattern, const CodeGenDAGPatterns &CGP); - +void OptimizeMatcher(const MatcherNode *Matcher); void EmitMatcherTable(const MatcherNode *Matcher, raw_ostream &OS); diff --git a/utils/TableGen/DAGISelMatcherOpt.cpp b/utils/TableGen/DAGISelMatcherOpt.cpp new file mode 100644 index 0000000..7859f36 --- /dev/null +++ b/utils/TableGen/DAGISelMatcherOpt.cpp @@ -0,0 +1,19 @@ +//===- DAGISelMatcherOpt.cpp - Optimize a DAG Matcher ---------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file implements the DAG Matcher optimizer. +// +//===----------------------------------------------------------------------===// + +#include "DAGISelMatcher.h" +using namespace llvm; + +void llvm::OptimizeMatcher(const MatcherNode *Matcher) { + // Nothing yet. +} |