From cd09961fb3d21bcda1f9fcea31b782cf408550d1 Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Wed, 24 Feb 2016 04:55:29 +0000 Subject: [PATCH] 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 --- llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp b/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp index 33af12e..21716be 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(N1); - if (isLegalMUBUFImmOffset(C1)) { - VAddr = N0; - ImmOffset = CurDAG->getTargetConstant(C1->getZExtValue(), DL, MVT::i16); - return true; - } + ConstantSDNode *C1 = cast(N1); + if (isLegalMUBUFImmOffset(C1) && CurDAG->SignBitIsZero(N0)) { + VAddr = N0; + ImmOffset = CurDAG->getTargetConstant(C1->getZExtValue(), DL, MVT::i16); + return true; } } -- 2.7.4