[PATCH] D114643: [AMDGPU] Aggressively fold immediates in SIFoldOperands

Sebastian Neubauer via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed May 18 03:21:25 PDT 2022


sebastian-ne added inline comments.


================
Comment at: llvm/lib/Target/AMDGPU/SIFoldOperands.cpp:1246-1249
+  SmallVector<MachineOperand *, 4> UsesToProcess;
+  for (auto &Use : MRI->use_nodbg_operands(Dst.getReg()))
+    UsesToProcess.push_back(&Use);
+  for (auto U : UsesToProcess) {
----------------
foad wrote:
> arsenm wrote:
> > foad wrote:
> > > sebastian-ne wrote:
> > > > Can this use `make_early_inc_range` instead of caching the small vector like in the if-case? (if so, this probably makes more sense as an NFC patch afterwards)
> > > Not sure. I can try that as a follow-up.
> > The iterators in this pass are kind of a mess. I've wanted to rewrite this pass to work more like how PeepholeOpt works, collecting defs, visiting uses and looking for collected defs. 
> I tried this, but it seems to get stuck in infinite loops in several lit tests. Not sure why:
> ```
> diff --git a/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp b/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
> index 99aa8a60b04f..3159693a2b6e 100644
> --- a/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
> +++ b/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
> @@ -1243,12 +1243,9 @@ bool SIFoldOperands::foldInstOperand(MachineInstr &MI,
>      }
>    }
>  
> -  SmallVector<MachineOperand *, 4> UsesToProcess;
> -  for (auto &Use : MRI->use_nodbg_operands(Dst.getReg()))
> -    UsesToProcess.push_back(&Use);
> -  for (auto U : UsesToProcess) {
> -    MachineInstr *UseMI = U->getParent();
> -    foldOperand(OpToFold, UseMI, UseMI->getOperandNo(U), FoldList,
> +  for (auto &U : make_early_inc_range(MRI->use_nodbg_operands(Dst.getReg()))) {
> +    MachineInstr *UseMI = U.getParent();
> +    foldOperand(OpToFold, UseMI, UseMI->getOperandNo(&U), FoldList,
>                  CopiesToReplace);
>    }
>  
> ```
Ok, thanks for trying!


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D114643/new/

https://reviews.llvm.org/D114643



More information about the llvm-commits mailing list