[llvm] [AMDGPU] Update base addr of dyn alloca considering GrowingUp stack (PR #119822)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 12 22:55:33 PST 2024
================
@@ -4023,10 +4024,20 @@ SDValue SITargetLowering::lowerDYNAMIC_STACKALLOCImpl(SDValue Op,
Chain = DAG.getCALLSEQ_START(Chain, 0, 0, dl);
SDValue Size = Tmp2.getOperand(1);
- SDValue SP = DAG.getCopyFromReg(Chain, dl, SPReg, VT);
- Chain = SP.getValue(1);
+ SDValue SPOld = DAG.getCopyFromReg(Chain, dl, SPReg, VT);
+ Chain = SPOld.getValue(1);
MaybeAlign Alignment = cast<ConstantSDNode>(Tmp3)->getMaybeAlignValue();
const TargetFrameLowering *TFL = Subtarget->getFrameLowering();
+ Align StackAlign = TFL->getStackAlign();
+ if (Alignment && *Alignment > StackAlign) {
+ SDValue ScaledAlignment = DAG.getSignedConstant(
+ (uint64_t)Alignment->value() << Subtarget->getWavefrontSizeLog2(), dl,
+ VT);
+ SDValue StackAlignMask = DAG.getNode(ISD::SUB, dl, VT, ScaledAlignment,
+ DAG.getConstant(1, dl, VT));
----------------
arsenm wrote:
This is all one constant, directly compute the final value without going through getNode
https://github.com/llvm/llvm-project/pull/119822
More information about the llvm-commits
mailing list