[clang] [llvm] [AMDGPU] Introduce asyncmark/wait intrinsics (PR #173259)
Sameer Sahasrabuddhe via cfe-commits
cfe-commits at lists.llvm.org
Tue Jan 20 02:46:58 PST 2026
ssahasra wrote:
> I suspect there's an infinite loop due to how `mergeAsyncMarkers` works when the IR contains a loop that has an `asyncmark` intrinsic but no `wait.asyncmark`. What prevents the AsyncMarkers array from just growing indefinitely?
Nice catch! I discovered that they won't grow indefinitely in real life, because each visit of a backedge immediately computes the local fixed point. But with nested loops, it can grow large in pathological cases. So added a maximum limit; if there are more marks than the maximum, then the oldest marks are discarded. If marks were discarded (because the size is exactly at the limit), then we conservatively wait for the oldest mark remaining.
> It would generally be nice to have some additional tests where the asyncmarkers in control flow aren't balanced.
Done.
> BTW, I think it'd be fine to have tests that are a bit more bare-bone, e.g. always using the same pointer arguments for the load.lds. That would result in less "noise" in the assembly.
Done.
https://github.com/llvm/llvm-project/pull/173259
More information about the cfe-commits
mailing list