[llvm] [AMDGPU] Folding imm offset in more cases for scratch access (PR #70634)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 30 01:48:06 PDT 2023
================
@@ -1146,10 +1146,23 @@ bool AMDGPUDAGToDAGISel::isDSOffset2Legal(SDValue Base, unsigned Offset0,
return CurDAG->SignBitIsZero(Base);
}
-bool AMDGPUDAGToDAGISel::isFlatScratchBaseLegal(SDValue Base,
+bool AMDGPUDAGToDAGISel::isFlatScratchBaseLegal(SDValue Addr, SDValue Base,
uint64_t FlatVariant) const {
if (FlatVariant != SIInstrFlags::FlatScratch)
return true;
+
+ if (Addr.getOpcode() == ISD::ADD) {
+ // For `nuw` addition, we should not have negative base address.
+ if (Addr->getFlags().hasNoUnsignedWrap())
+ return true;
+
+ auto *RHS = dyn_cast<ConstantSDNode>(Addr.getOperand(1));
+ // If the immediate offset is negative, we should not have the base being
+ // negative as well.
----------------
arsenm wrote:
Comment reads weird. How about
"If the immediate offset is negative, the base address cannot also be negative"
https://github.com/llvm/llvm-project/pull/70634
More information about the llvm-commits
mailing list