summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSterling Augustine <saugustine@google.com>2024-03-15 14:33:40 -0700
committerSlava Zakharin <szakharin@nvidia.com>2024-03-15 14:33:40 -0700
commitabacadd4687d3cc9a93714ab24e5ab9b7218dd85 (patch)
tree365d8768910c35219b2e89d5d86ad1c16a2e35f6
parent200c194c17b372e69b17bcec9a65c1bdea0965e1 (diff)
parentd4a8e979e4bd6c282e2b3645353f84a189bb4a9a (diff)
Created using spr 1.3.4 [skip ci]
-rw-r--r--llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp16
-rw-r--r--llvm/test/CodeGen/NVPTX/common-linkage.ll26
-rw-r--r--llvm/test/CodeGen/NVPTX/weak-global.ll2
3 files changed, 8 insertions, 36 deletions
diff --git a/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp b/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
index a6df4b32fbb6..2219d9f6619a 100644
--- a/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
@@ -1019,6 +1019,7 @@ void NVPTXAsmPrinter::printModuleLevelGV(const GlobalVariable *GVar,
const DataLayout &DL = getDataLayout();
// GlobalVariables are always constant pointers themselves.
+ PointerType *PTy = GVar->getType();
Type *ETy = GVar->getValueType();
if (GVar->hasExternalLinkage()) {
@@ -1026,9 +1027,6 @@ void NVPTXAsmPrinter::printModuleLevelGV(const GlobalVariable *GVar,
O << ".visible ";
else
O << ".extern ";
- } else if (GVar->hasCommonLinkage() &&
- GVar->getAddressSpace() == ADDRESS_SPACE_GLOBAL) {
- O << ".common ";
} else if (GVar->hasLinkOnceLinkage() || GVar->hasWeakLinkage() ||
GVar->hasAvailableExternallyLinkage() ||
GVar->hasCommonLinkage()) {
@@ -1140,7 +1138,7 @@ void NVPTXAsmPrinter::printModuleLevelGV(const GlobalVariable *GVar,
}
O << ".";
- emitPTXAddressSpace(GVar->getAddressSpace(), O);
+ emitPTXAddressSpace(PTy->getAddressSpace(), O);
if (isManaged(*GVar)) {
if (STI.getPTXVersion() < 40 || STI.getSmVersion() < 30) {
@@ -1169,8 +1167,8 @@ void NVPTXAsmPrinter::printModuleLevelGV(const GlobalVariable *GVar,
// Ptx allows variable initilization only for constant and global state
// spaces.
if (GVar->hasInitializer()) {
- if ((GVar->getAddressSpace() == ADDRESS_SPACE_GLOBAL) ||
- (GVar->getAddressSpace() == ADDRESS_SPACE_CONST)) {
+ if ((PTy->getAddressSpace() == ADDRESS_SPACE_GLOBAL) ||
+ (PTy->getAddressSpace() == ADDRESS_SPACE_CONST)) {
const Constant *Initializer = GVar->getInitializer();
// 'undef' is treated as there is no value specified.
if (!Initializer->isNullValue() && !isa<UndefValue>(Initializer)) {
@@ -1185,7 +1183,7 @@ void NVPTXAsmPrinter::printModuleLevelGV(const GlobalVariable *GVar,
!isa<UndefValue>(GVar->getInitializer())) {
report_fatal_error("initial value of '" + GVar->getName() +
"' is not allowed in addrspace(" +
- Twine(GVar->getAddressSpace()) + ")");
+ Twine(PTy->getAddressSpace()) + ")");
}
}
}
@@ -1204,8 +1202,8 @@ void NVPTXAsmPrinter::printModuleLevelGV(const GlobalVariable *GVar,
ElementSize = DL.getTypeStoreSize(ETy);
// Ptx allows variable initilization only for constant and
// global state spaces.
- if (((GVar->getAddressSpace() == ADDRESS_SPACE_GLOBAL) ||
- (GVar->getAddressSpace() == ADDRESS_SPACE_CONST)) &&
+ if (((PTy->getAddressSpace() == ADDRESS_SPACE_GLOBAL) ||
+ (PTy->getAddressSpace() == ADDRESS_SPACE_CONST)) &&
GVar->hasInitializer()) {
const Constant *Initializer = GVar->getInitializer();
if (!isa<UndefValue>(Initializer) && !Initializer->isNullValue()) {
diff --git a/llvm/test/CodeGen/NVPTX/common-linkage.ll b/llvm/test/CodeGen/NVPTX/common-linkage.ll
deleted file mode 100644
index ac16d9a6d7c7..000000000000
--- a/llvm/test/CodeGen/NVPTX/common-linkage.ll
+++ /dev/null
@@ -1,26 +0,0 @@
-; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s
-; RUN: %if ptxas %{ llc < %s -march=nvptx64 -mcpu=sm_20 | %ptxas-verify %}
-
-; CHECK: .common .global .align 4 .u32 g
-@g = common addrspace(1) global i32 0, align 4
-
-; CHECK: .weak .const .align 4 .u32 c
-@c = common addrspace(4) global i32 0, align 4
-
-; CHECK: .weak .shared .align 4 .u32 s
-@s = common addrspace(3) global i32 0, align 4
-
-define i32 @f1() {
- %1 = load i32, ptr addrspace(1) @g
- ret i32 %1
-}
-
-define i32 @f4() {
- %1 = load i32, ptr addrspace(4) @c
- ret i32 %1
-}
-
-define i32 @f3() {
- %1 = load i32, ptr addrspace(3) @s
- ret i32 %1
-}
diff --git a/llvm/test/CodeGen/NVPTX/weak-global.ll b/llvm/test/CodeGen/NVPTX/weak-global.ll
index 781ecb9b1495..dd0160d1c0a6 100644
--- a/llvm/test/CodeGen/NVPTX/weak-global.ll
+++ b/llvm/test/CodeGen/NVPTX/weak-global.ll
@@ -1,7 +1,7 @@
; RUN: llc < %s -march=nvptx64 -mcpu=sm_20 | FileCheck %s
; RUN: %if ptxas %{ llc < %s -march=nvptx64 -mcpu=sm_20 | %ptxas-verify %}
-; CHECK: .common .global .align 4 .u32 g
+; CHECK: .weak .global .align 4 .u32 g
@g = common addrspace(1) global i32 zeroinitializer
define i32 @func0() {