diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2019-01-19 10:01:25 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2019-01-19 10:01:25 +0000 |
| commit | d8e91e46262bc44006913e6796843909f1ac7bcd (patch) | |
| tree | 7d0c143d9b38190e0fa0180805389da22cd834c5 /lib/Target/NVPTX/NVVMReflect.cpp | |
| parent | b7eb8e35e481a74962664b63dfb09483b200209a (diff) | |
Notes
Diffstat (limited to 'lib/Target/NVPTX/NVVMReflect.cpp')
| -rw-r--r-- | lib/Target/NVPTX/NVVMReflect.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/Target/NVPTX/NVVMReflect.cpp b/lib/Target/NVPTX/NVVMReflect.cpp index 60971b48adfc..64c262664fda 100644 --- a/lib/Target/NVPTX/NVVMReflect.cpp +++ b/lib/Target/NVPTX/NVVMReflect.cpp @@ -50,7 +50,9 @@ namespace { class NVVMReflect : public FunctionPass { public: static char ID; - NVVMReflect() : FunctionPass(ID) { + unsigned int SmVersion; + NVVMReflect() : NVVMReflect(0) {} + explicit NVVMReflect(unsigned int Sm) : FunctionPass(ID), SmVersion(Sm) { initializeNVVMReflectPass(*PassRegistry::getPassRegistry()); } @@ -58,7 +60,9 @@ public: }; } -FunctionPass *llvm::createNVVMReflectPass() { return new NVVMReflect(); } +FunctionPass *llvm::createNVVMReflectPass(unsigned int SmVersion) { + return new NVVMReflect(SmVersion); +} static cl::opt<bool> NVVMReflectEnabled("nvvm-reflect-enable", cl::init(true), cl::Hidden, @@ -163,6 +167,8 @@ bool NVVMReflect::runOnFunction(Function &F) { if (auto *Flag = mdconst::extract_or_null<ConstantInt>( F.getParent()->getModuleFlag("nvvm-reflect-ftz"))) ReflectVal = Flag->getSExtValue(); + } else if (ReflectArg == "__CUDA_ARCH") { + ReflectVal = SmVersion * 10; } Call->replaceAllUsesWith(ConstantInt::get(Call->getType(), ReflectVal)); ToRemove.push_back(Call); |
