[llvm] [AMDGPU] Handle MachineOperandType global address in SIFoldOperands. (PR #135424)
Akhilesh Moorthy via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 25 18:41:09 PDT 2025
================
@@ -1161,6 +1161,10 @@ void SIFoldOperandsImpl::foldOperand(
if (OpToFold.isImm())
UseMI->getOperand(1).ChangeToImmediate(OpToFold.getImm());
+ else if (OpToFold.isGlobal())
+ UseMI->getOperand(1).ChangeToGA(OpToFold.getGlobal(),
+ OpToFold.getOffset(),
+ OpToFold.getTargetFlags());
else
UseMI->getOperand(1).ChangeToFrameIndex(OpToFold.getIndex());
----------------
isakhilesh wrote:
I can modify the patch to the first approach you mention here. Since we enter this block only in case `FoldingImmLike` is true and this variable is a bool for either immediate, frame index or global values. The if-else if-else conditions focus on only these 3 operands so there won't be any edge case for the else condition as we enter the block when it is one of the 3 operands.
But I'm not clear on how/where should I move the setDesc() to, since it is almost at the top of the block and the if-else if-else is immediately after it.
The structure is ->
if(FoldingImmLike){
if(execMaybeModifiedBeforeUse)
return;
UseMI->setDesc() // at the top of the block, in case the exec flag immediately above is false
if-else if-else block
UseMI->removeOperand(2)
return;
}
Where should I place setDesc() to avoid a side effect?
https://github.com/llvm/llvm-project/pull/135424
More information about the llvm-commits
mailing list