summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKonstantin Zhuravlyov <kzhuravl_dev@outlook.com>2018-06-11 21:37:57 +0000
committerKonstantin Zhuravlyov <kzhuravl_dev@outlook.com>2018-06-11 21:37:57 +0000
commit3e5d66ac66cd2669976f316ff12c57f162416381 (patch)
tree17339b35a68a59002d80a56e8ba4e0aea7110a24
parent808490138b8011bffb8ad327bf7e484062885d35 (diff)
downloadbcm5719-llvm-3e5d66ac66cd2669976f316ff12c57f162416381.tar.gz
bcm5719-llvm-3e5d66ac66cd2669976f316ff12c57f162416381.zip
AMDGPU: Add 64-bit relative variant kind
Differential Revision: https://reviews.llvm.org/D47601 llvm-svn: 334443
-rw-r--r--llvm/include/llvm/MC/MCExpr.h1
-rw-r--r--llvm/lib/MC/MCExpr.cpp2
-rw-r--r--llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFObjectWriter.cpp2
-rw-r--r--llvm/test/MC/AMDGPU/reloc.s6
4 files changed, 10 insertions, 1 deletions
diff --git a/llvm/include/llvm/MC/MCExpr.h b/llvm/include/llvm/MC/MCExpr.h
index 77e16862293..d7464969ead 100644
--- a/llvm/include/llvm/MC/MCExpr.h
+++ b/llvm/include/llvm/MC/MCExpr.h
@@ -286,6 +286,7 @@ public:
VK_AMDGPU_GOTPCREL32_HI, // symbol@gotpcrel32@hi
VK_AMDGPU_REL32_LO, // symbol@rel32@lo
VK_AMDGPU_REL32_HI, // symbol@rel32@hi
+ VK_AMDGPU_REL64, // symbol@rel64
VK_TPREL,
VK_DTPREL
diff --git a/llvm/lib/MC/MCExpr.cpp b/llvm/lib/MC/MCExpr.cpp
index d38127fe135..f2d078b23af 100644
--- a/llvm/lib/MC/MCExpr.cpp
+++ b/llvm/lib/MC/MCExpr.cpp
@@ -303,6 +303,7 @@ StringRef MCSymbolRefExpr::getVariantKindName(VariantKind Kind) {
case VK_AMDGPU_GOTPCREL32_HI: return "gotpcrel32@hi";
case VK_AMDGPU_REL32_LO: return "rel32@lo";
case VK_AMDGPU_REL32_HI: return "rel32@hi";
+ case VK_AMDGPU_REL64: return "rel64";
}
llvm_unreachable("Invalid variant kind");
}
@@ -410,6 +411,7 @@ MCSymbolRefExpr::getVariantKindForName(StringRef Name) {
.Case("gotpcrel32@hi", VK_AMDGPU_GOTPCREL32_HI)
.Case("rel32@lo", VK_AMDGPU_REL32_LO)
.Case("rel32@hi", VK_AMDGPU_REL32_HI)
+ .Case("rel64", VK_AMDGPU_REL64)
.Default(VK_Invalid);
}
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFObjectWriter.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFObjectWriter.cpp
index 113e6ba532c..07bef9103c0 100644
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFObjectWriter.cpp
+++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFObjectWriter.cpp
@@ -66,6 +66,8 @@ unsigned AMDGPUELFObjectWriter::getRelocType(MCContext &Ctx,
return ELF::R_AMDGPU_REL32_LO;
case MCSymbolRefExpr::VK_AMDGPU_REL32_HI:
return ELF::R_AMDGPU_REL32_HI;
+ case MCSymbolRefExpr::VK_AMDGPU_REL64:
+ return ELF::R_AMDGPU_REL64;
}
switch (Fixup.getKind()) {
diff --git a/llvm/test/MC/AMDGPU/reloc.s b/llvm/test/MC/AMDGPU/reloc.s
index d71089c9d16..e954933d0d6 100644
--- a/llvm/test/MC/AMDGPU/reloc.s
+++ b/llvm/test/MC/AMDGPU/reloc.s
@@ -13,6 +13,7 @@
// CHECK: }
// CHECK: .rel.data {
// CHECK: R_AMDGPU_ABS64 temp 0x0
+// CHECK: R_AMDGPU_REL64 temp 0x0
// CHECK: }
// CHECK: ]
@@ -36,12 +37,15 @@ kernel:
.section nonalloc, "w", @progbits
.long var, common_var
-
// 8 byte relocations
.type ptr,@object
.data
.globl ptr
+ .globl foo
.p2align 3
ptr:
.quad temp
.size ptr, 8
+foo:
+ .quad temp@rel64
+ .size foo, 8
OpenPOWER on IntegriCloud