diff options
author | Konstantin Zhuravlyov <kzhuravl_dev@outlook.com> | 2018-06-11 21:37:57 +0000 |
---|---|---|
committer | Konstantin Zhuravlyov <kzhuravl_dev@outlook.com> | 2018-06-11 21:37:57 +0000 |
commit | 3e5d66ac66cd2669976f316ff12c57f162416381 (patch) | |
tree | 17339b35a68a59002d80a56e8ba4e0aea7110a24 | |
parent | 808490138b8011bffb8ad327bf7e484062885d35 (diff) | |
download | bcm5719-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.h | 1 | ||||
-rw-r--r-- | llvm/lib/MC/MCExpr.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFObjectWriter.cpp | 2 | ||||
-rw-r--r-- | llvm/test/MC/AMDGPU/reloc.s | 6 |
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 |