summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhigang Gong <zhigang.gong@intel.com>2015-04-02 13:54:04 +0800
committerZhigang Gong <zhigang.gong@intel.com>2015-04-02 13:54:04 +0800
commit41faaaff4fdee1bedad70b877cf3851c5b276e98 (patch)
treeaa57e08e3236a336e1a34c8ebb420d850778208d
parentc93a747ee468dc541ee8ab859f15d5467824b1f0 (diff)
draft.blender
Signed-off-by: Zhigang Gong <zhigang.gong@intel.com>
-rw-r--r--backend/src/llvm/llvm_to_gen.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/backend/src/llvm/llvm_to_gen.cpp b/backend/src/llvm/llvm_to_gen.cpp
index a4ce4a2b..767c3fa2 100644
--- a/backend/src/llvm/llvm_to_gen.cpp
+++ b/backend/src/llvm/llvm_to_gen.cpp
@@ -158,15 +158,16 @@ namespace gbe
MPM.add(createIndVarSimplifyPass()); // Canonicalize indvars
MPM.add(createLoopIdiomPass()); // Recognize idioms like memset.
MPM.add(createLoopDeletionPass()); // Delete dead loops
- MPM.add(createLoopUnrollPass()); //1024, 32, 1024, 512)); //Unroll loops
+// MPM.add(createLoopUnrollPass()); //1024, 32, 1024, 512)); //Unroll loops
if(optLevel > 0) {
- MPM.add(createSROAPass(/*RequiresDomTree*/ false));
- MPM.add(createGVNPass()); // Remove redundancies
+// MPM.add(createSROAPass(/*RequiresDomTree*/ false));
+// MPM.add(createGVNPass()); // Remove redundancies
}
#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5
// FIXME Workaround: we find that CustomLoopUnroll may increase register pressure greatly,
// and it may even make som cl kernel cannot compile because of limited scratch memory for spill.
// As we observe this under strict math. So we disable CustomLoopUnroll if strict math is enabled.
+#if 0
if (!strictMath) {
MPM.add(createCustomLoopUnrollPass()); //1024, 32, 1024, 512)); //Unroll loops
MPM.add(createLoopUnrollPass()); //1024, 32, 1024, 512)); //Unroll loops
@@ -176,6 +177,7 @@ namespace gbe
}
}
#endif
+#endif
MPM.add(createMemCpyOptPass()); // Remove memcpy / form memset
MPM.add(createSCCPPass()); // Constant prop with SCCP
@@ -224,7 +226,7 @@ namespace gbe
{
std::string errInfo;
std::unique_ptr<llvm::raw_fd_ostream> o = NULL;
- if (OCL_OUTPUT_LLVM_BEFORE_LINK || OCL_OUTPUT_LLVM_AFTER_LINK || OCL_OUTPUT_LLVM_AFTER_GEN)
+ //if (OCL_OUTPUT_LLVM_BEFORE_LINK || OCL_OUTPUT_LLVM_AFTER_LINK || OCL_OUTPUT_LLVM_AFTER_GEN)
o = std::unique_ptr<llvm::raw_fd_ostream>(new llvm::raw_fd_ostream(fileno(stdout), false));
// Get the module from its file
@@ -297,6 +299,7 @@ namespace gbe
passes.add(createCFGSimplificationPass()); // Merge & remove BBs
passes.add(createLowerSwitchPass()); // simplify cfg will generate switch-case instruction
passes.add(createScalarizePass()); // Expand all vector ops
+ passes.add(createPrintModulePass(*o));
if(OCL_OUTPUT_CFG)
passes.add(createCFGPrinterPass());