summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/NVPTX
diff options
context:
space:
mode:
authorJustin Lebar <jlebar@google.com>2016-07-20 22:11:36 +0000
committerJustin Lebar <jlebar@google.com>2016-07-20 22:11:36 +0000
commitcd564c6b4638e654edb68acf7f7d985c08edf468 (patch)
tree1c60c763145919107077945c1df4643f81f45068 /llvm/lib/Target/NVPTX
parent9835a815291c508aa2425c5c906339e328f89ed9 (diff)
downloadbcm5719-llvm-cd564c6b4638e654edb68acf7f7d985c08edf468.tar.gz
bcm5719-llvm-cd564c6b4638e654edb68acf7f7d985c08edf468.zip
[NVPTX] Enable the load-store vectorizer on nvptx.
Reviewers: tra Subscribers: jholewinski, arsenm, asbirlea Differential Revision: https://reviews.llvm.org/D22592 llvm-svn: 276196
Diffstat (limited to 'llvm/lib/Target/NVPTX')
-rw-r--r--llvm/lib/Target/NVPTX/LLVMBuild.txt2
-rw-r--r--llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp10
2 files changed, 11 insertions, 1 deletions
diff --git a/llvm/lib/Target/NVPTX/LLVMBuild.txt b/llvm/lib/Target/NVPTX/LLVMBuild.txt
index 6ea244a0a42..70a2de3441c 100644
--- a/llvm/lib/Target/NVPTX/LLVMBuild.txt
+++ b/llvm/lib/Target/NVPTX/LLVMBuild.txt
@@ -28,5 +28,5 @@ has_asmprinter = 1
type = Library
name = NVPTXCodeGen
parent = NVPTX
-required_libraries = Analysis AsmPrinter CodeGen Core MC NVPTXAsmPrinter NVPTXDesc NVPTXInfo Scalar SelectionDAG Support Target TransformUtils
+required_libraries = Analysis AsmPrinter CodeGen Core MC NVPTXAsmPrinter NVPTXDesc NVPTXInfo Scalar SelectionDAG Support Target TransformUtils Vectorize
add_to_library_groups = NVPTX
diff --git a/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp b/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
index 3dffc22b48d..d83154aa46d 100644
--- a/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
@@ -46,6 +46,7 @@
#include "llvm/Target/TargetSubtargetInfo.h"
#include "llvm/Transforms/Scalar.h"
#include "llvm/Transforms/Scalar/GVN.h"
+#include "llvm/Transforms/Vectorize.h"
using namespace llvm;
@@ -54,6 +55,13 @@ static cl::opt<bool> UseInferAddressSpaces(
cl::desc("Optimize address spaces using NVPTXInferAddressSpaces instead of "
"NVPTXFavorNonGenericAddrSpaces"));
+// LSV is still relatively new; this switch lets us turn it off in case we
+// encounter (or suspect) a bug.
+static cl::opt<bool>
+ DisableLoadStoreVectorizer("disable-nvptx-load-store-vectorizer",
+ cl::desc("Disable load/store vectorizer"),
+ cl::init(false), cl::Hidden);
+
namespace llvm {
void initializeNVVMIntrRangePass(PassRegistry&);
void initializeNVVMReflectPass(PassRegistry&);
@@ -258,6 +266,8 @@ void NVPTXPassConfig::addIRPasses() {
addPass(createNVPTXLowerArgsPass(&getNVPTXTargetMachine()));
if (getOptLevel() != CodeGenOpt::None) {
addAddressSpaceInferencePasses();
+ if (!DisableLoadStoreVectorizer)
+ addPass(createLoadStoreVectorizerPass());
addStraightLineScalarOptimizationPasses();
}
OpenPOWER on IntegriCloud