summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustin Holewinski <jholewinski@nvidia.com>2014-06-27 18:35:58 +0000
committerJustin Holewinski <jholewinski@nvidia.com>2014-06-27 18:35:58 +0000
commit773ca40f5dae7a47f3df463520a232692f51f0b0 (patch)
tree722cbf6ab3475a7bc29159c40fdeca10595f5de3
parentd73767a80a5e45a79ecdba3560beac775087a1e4 (diff)
downloadbcm5719-llvm-773ca40f5dae7a47f3df463520a232692f51f0b0.tar.gz
bcm5719-llvm-773ca40f5dae7a47f3df463520a232692f51f0b0.zip
[NVPTX] Add support for .managed variables for UVM
llvm-svn: 211942
-rw-r--r--llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp5
-rw-r--r--llvm/test/CodeGen/NVPTX/managed.ll11
2 files changed, 16 insertions, 0 deletions
diff --git a/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp b/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
index a174949b994..6774ea863e3 100644
--- a/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
@@ -1480,6 +1480,11 @@ void NVPTXAsmPrinter::printModuleLevelGV(const GlobalVariable *GVar,
O << ".";
emitPTXAddressSpace(PTy->getAddressSpace(), O);
+
+ if (isManaged(*GVar)) {
+ O << " .attribute(.managed)";
+ }
+
if (GVar->getAlignment() == 0)
O << " .align " << (int) TD->getPrefTypeAlignment(ETy);
else
diff --git a/llvm/test/CodeGen/NVPTX/managed.ll b/llvm/test/CodeGen/NVPTX/managed.ll
new file mode 100644
index 00000000000..4d7e7817f77
--- /dev/null
+++ b/llvm/test/CodeGen/NVPTX/managed.ll
@@ -0,0 +1,11 @@
+; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s
+
+
+; CHECK: .visible .global .align 4 .u32 device_g;
+@device_g = addrspace(1) global i32 zeroinitializer
+; CHECK: .visible .global .attribute(.managed) .align 4 .u32 managed_g;
+@managed_g = addrspace(1) global i32 zeroinitializer
+
+
+!nvvm.annotations = !{!0}
+!0 = metadata !{i32 addrspace(1)* @managed_g, metadata !"managed", i32 1}
OpenPOWER on IntegriCloud