Skip to content

Commit 3c2a7aa

Browse files
committed
[AMDGPU] Assert if stack grows downwards. (llvm#119888)
1 parent d8f7661 commit 3c2a7aa

File tree

2 files changed

+5
-6
lines changed

2 files changed

+5
-6
lines changed

llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1177,8 +1177,8 @@ bool AMDGPURegisterBankInfo::applyMappingDynStackAlloc(
11771177

11781178
// Guard in case the stack growth direction ever changes with scratch
11791179
// instructions.
1180-
if (TFI.getStackGrowthDirection() == TargetFrameLowering::StackGrowsDown)
1181-
return false;
1180+
assert(TFI.getStackGrowthDirection() == TargetFrameLowering::StackGrowsUp &&
1181+
"Stack grows upwards for AMDGPU");
11821182

11831183
Register Dst = MI.getOperand(0).getReg();
11841184
Register AllocSize = MI.getOperand(1).getReg();

llvm/lib/Target/AMDGPU/SIISelLowering.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4015,16 +4015,15 @@ SDValue SITargetLowering::lowerDYNAMIC_STACKALLOCImpl(
40154015
Chain = SP.getValue(1);
40164016
MaybeAlign Alignment = cast<ConstantSDNode>(Tmp3)->getMaybeAlignValue();
40174017
const TargetFrameLowering *TFL = Subtarget->getFrameLowering();
4018-
unsigned Opc =
4019-
TFL->getStackGrowthDirection() == TargetFrameLowering::StackGrowsUp ?
4020-
ISD::ADD : ISD::SUB;
4018+
assert(TFL->getStackGrowthDirection() == TargetFrameLowering::StackGrowsUp &&
4019+
"Stack grows upwards for AMDGPU");
40214020

40224021
SDValue ScaledSize = DAG.getNode(
40234022
ISD::SHL, dl, VT, Size,
40244023
DAG.getConstant(Subtarget->getWavefrontSizeLog2(), dl, MVT::i32));
40254024

40264025
Align StackAlign = TFL->getStackAlign();
4027-
Tmp1 = DAG.getNode(Opc, dl, VT, SP, ScaledSize); // Value
4026+
Tmp1 = DAG.getNode(ISD::ADD, dl, VT, SP, ScaledSize); // Value
40284027
if (Alignment && *Alignment > StackAlign) {
40294028
Tmp1 = DAG.getNode(ISD::AND, dl, VT, Tmp1,
40304029
DAG.getConstant(-(uint64_t)Alignment->value()

0 commit comments

Comments
 (0)