summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/AMDGPU/MCTargetDesc
diff options
context:
space:
mode:
authorNicolai Haehnle <nhaehnle@gmail.com>2019-06-16 17:43:37 +0000
committerNicolai Haehnle <nhaehnle@gmail.com>2019-06-16 17:43:37 +0000
commit41abf2766e26d4b38a68210cff3d9ebd819a0db4 (patch)
tree1f3af847e66377d322445ba04bcc07349ad6a1ef /llvm/lib/Target/AMDGPU/MCTargetDesc
parent6d71be4e67e121bae712b6f4e4b62849bb17f963 (diff)
downloadbcm5719-llvm-41abf2766e26d4b38a68210cff3d9ebd819a0db4.tar.gz
bcm5719-llvm-41abf2766e26d4b38a68210cff3d9ebd819a0db4.zip
AMDGPU: Prepare for explicit absolute relocations in code generation
Summary: We will use absolute relocations for LDS symbols. Change-Id: I9a32795ed0ea835e433a787129cfe3c57ee9a325 Reviewers: arsenm, rampitec Subscribers: kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D61492 llvm-svn: 363517
Diffstat (limited to 'llvm/lib/Target/AMDGPU/MCTargetDesc')
-rw-r--r--llvm/lib/Target/AMDGPU/MCTargetDesc/SIMCCodeEmitter.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/SIMCCodeEmitter.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/SIMCCodeEmitter.cpp
index 40da1875ee8..28ca47dce45 100644
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/SIMCCodeEmitter.cpp
+++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/SIMCCodeEmitter.cpp
@@ -399,8 +399,12 @@ SIMCCodeEmitter::getSDWAVopcDstEncoding(const MCInst &MI, unsigned OpNo,
static bool needsPCRel(const MCExpr *Expr) {
switch (Expr->getKind()) {
- case MCExpr::SymbolRef:
- return true;
+ case MCExpr::SymbolRef: {
+ auto *SE = cast<MCSymbolRefExpr>(Expr);
+ MCSymbolRefExpr::VariantKind Kind = SE->getKind();
+ return Kind != MCSymbolRefExpr::VK_AMDGPU_ABS32_LO &&
+ Kind != MCSymbolRefExpr::VK_AMDGPU_ABS32_HI;
+ }
case MCExpr::Binary: {
auto *BE = cast<MCBinaryExpr>(Expr);
if (BE->getOpcode() == MCBinaryExpr::Sub)
OpenPOWER on IntegriCloud