diff options
| author | Justin Lebar <jlebar@google.com> | 2016-07-20 22:11:36 +0000 |
|---|---|---|
| committer | Justin Lebar <jlebar@google.com> | 2016-07-20 22:11:36 +0000 |
| commit | cd564c6b4638e654edb68acf7f7d985c08edf468 (patch) | |
| tree | 1c60c763145919107077945c1df4643f81f45068 /llvm/lib/Target/NVPTX | |
| parent | 9835a815291c508aa2425c5c906339e328f89ed9 (diff) | |
| download | bcm5719-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.txt | 2 | ||||
| -rw-r--r-- | llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp | 10 |
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(); } |

