summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2016-02-24 04:55:29 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2016-02-24 04:55:29 +0000
commitcd09961fb3d21bcda1f9fcea31b782cf408550d1 (patch)
treed64582ae8a30f0085d1dc9bd04773d7a6675f025 /llvm/lib
parent89307aa3e9fce213a55b64c042a001458d3ba41c (diff)
downloadbcm5719-llvm-cd09961fb3d21bcda1f9fcea31b782cf408550d1.tar.gz
bcm5719-llvm-cd09961fb3d21bcda1f9fcea31b782cf408550d1.zip
AMDGPU: Check cheaper condition before SignBitIsZero
Don't do an expensive computeKnownBits call when we can do the cheap check for legal offsets first. llvm-svn: 261720
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp b/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
index 33af12e7934..21716be7f24 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
@@ -1063,14 +1063,13 @@ bool AMDGPUDAGToDAGISel::SelectMUBUFScratch(SDValue Addr, SDValue &Rsrc,
if (CurDAG->isBaseWithConstantOffset(Addr)) {
SDValue N0 = Addr.getOperand(0);
SDValue N1 = Addr.getOperand(1);
+
// Offsets in vaddr must be positive.
- if (CurDAG->SignBitIsZero(N0)) {
- ConstantSDNode *C1 = cast<ConstantSDNode>(N1);
- if (isLegalMUBUFImmOffset(C1)) {
- VAddr = N0;
- ImmOffset = CurDAG->getTargetConstant(C1->getZExtValue(), DL, MVT::i16);
- return true;
- }
+ ConstantSDNode *C1 = cast<ConstantSDNode>(N1);
+ if (isLegalMUBUFImmOffset(C1) && CurDAG->SignBitIsZero(N0)) {
+ VAddr = N0;
+ ImmOffset = CurDAG->getTargetConstant(C1->getZExtValue(), DL, MVT::i16);
+ return true;
}
}
OpenPOWER on IntegriCloud