[PATCH] D157495: [WIP] Run SimplifyCFG from Atomic-Expand on CAS loop blocks.
Pravin Jagtap via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 21 06:55:34 PDT 2023
pravinjagtap added inline comments.
================
Comment at: llvm/lib/CodeGen/AtomicExpandPass.cpp:1524
BB->splitBasicBlock(Builder.GetInsertPoint(), "atomicrmw.end");
+ CmpXchgLoopBlocks.push_back(ExitBB);
BasicBlock *LoopBB = BasicBlock::Create(Ctx, "atomicrmw.start", F, ExitBB);
----------------
rovka wrote:
> Why are we only keeping track of these blocks? There seem to be lots of other places in this file that split blocks and create new ones. Shouldn't we call simplifyCFG for all of them?
> Why are we only keeping track of these blocks? There seem to be lots of other places in this file that split blocks and create new ones. Shouldn't we call simplifyCFG for all of them?
Targets can configure this simplification using separate pass run e.g. Aarch64 is running simplifyCFG after atomic expand pass https://github.com/llvm/llvm-project/blob/57c090b2ea03937e7c6a08a594532788d01bb813/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp#L557
We think, having separate pass run will be expensive, therefore, for AMDGPU usecase, we are interested in running it on local changes done by atomic-expand. Do you think, calling `simplifyCFG` on entire functions makes much more sense ?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D157495/new/
https://reviews.llvm.org/D157495
More information about the llvm-commits
mailing list