summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-02-24 07:06:50 +0000
committerChris Lattner <sabre@nondot.org>2010-02-24 07:06:50 +0000
commit91c6a822baaba3cb2def94224115e57b84805347 (patch)
treef4dc2be05accba1ccf02ff1c0f3bbf4c7ac26f45 /utils
parent95b6b9ae75bce23eb3e536f37a3e1b84fbedc9bb (diff)
downloadllvm-91c6a822baaba3cb2def94224115e57b84805347.tar.gz
llvm-91c6a822baaba3cb2def94224115e57b84805347.tar.bz2
llvm-91c6a822baaba3cb2def94224115e57b84805347.tar.xz
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')
-rw-r--r--utils/TableGen/CMakeLists.txt1
-rw-r--r--utils/TableGen/DAGISelEmitter.cpp10
-rw-r--r--utils/TableGen/DAGISelMatcher.h2
-rw-r--r--utils/TableGen/DAGISelMatcherOpt.cpp19
4 files changed, 29 insertions, 3 deletions
diff --git a/utils/TableGen/CMakeLists.txt b/utils/TableGen/CMakeLists.txt
index a2678a29f7..881b50a01f 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 b9ef3da5ca..2d2ab3e707 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 469a2807ff..4dcbc8f55f 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 0000000000..7859f36eef
--- /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.
+}