summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorPiotr Sobczak <piotr.sobczak@amd.com>2019-01-02 09:47:41 +0000
committerPiotr Sobczak <piotr.sobczak@amd.com>2019-01-02 09:47:41 +0000
commit378131bae04e78062d4d2f158320b57804894ed8 (patch)
treedf4a3afb7f9fac8bda6d1ebe7f8d4c8dcf8cf437 /llvm/lib
parent176388c973c4104630cb612d00e3fb060d08551f (diff)
downloadbcm5719-llvm-378131bae04e78062d4d2f158320b57804894ed8.tar.gz
bcm5719-llvm-378131bae04e78062d4d2f158320b57804894ed8.zip
[AMDGPU] Handle OR as operand of raw load/store
Summary: Use isBaseWithConstantOffset() which handles OR as an operand to llvm.amdgcn.raw.buffer.load and llvm.amdgcn.raw.buffer.store. Change-Id: Ifefb9dc5ded8710d333df07ab1900b230e33539a Reviewers: nhaehnle, mareko, arsenm Reviewed By: arsenm Subscribers: arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, llvm-commits Differential Revision: https://reviews.llvm.org/D55999 llvm-svn: 350208
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/AMDGPU/SIISelLowering.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
index 12d0bc528ca..894806b9faa 100644
--- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
@@ -6005,11 +6005,13 @@ std::pair<SDValue, SDValue> SITargetLowering::splitBufferOffsets(
const unsigned MaxImm = 4095;
SDValue N0 = Offset;
ConstantSDNode *C1 = nullptr;
- if (N0.getOpcode() == ISD::ADD) {
- if ((C1 = dyn_cast<ConstantSDNode>(N0.getOperand(1))))
- N0 = N0.getOperand(0);
- } else if ((C1 = dyn_cast<ConstantSDNode>(N0)))
+
+ if ((C1 = dyn_cast<ConstantSDNode>(N0)))
N0 = SDValue();
+ else if (DAG.isBaseWithConstantOffset(N0)) {
+ C1 = cast<ConstantSDNode>(N0.getOperand(1));
+ N0 = N0.getOperand(0);
+ }
if (C1) {
unsigned ImmOffset = C1->getZExtValue();
OpenPOWER on IntegriCloud