[clang] [llvm] [AMDGPU] Implement AsyncMark Stages (PR #220442)
Ryan Mitchell via cfe-commits
cfe-commits at lists.llvm.org
Wed Sep 2 13:51:05 PDT 2026
RyanRio wrote:
> ... I mean that, as a user, you _don't_ ever say "TENSOR"
>
> The user never says "these are the kinds of instructions that go in this stage" or has to pick from a menu
>
> The user just puts different kinds of instructions in differently-marked/differently-numbered stages and we figure it out.
>
> Or at least that's an API I'd argue can be made to work and keeps the spirit of asyncmark/asyncwait
I.e.
```
stream_x = create_async_stream()
stream_y = create_async_stream()
llvm.amdgcn.global.store.async.to.lds.b32(..., stream_x)
asyncmark(stream_x)
llvm.amdgcn.tensor.load.to.lds(..., stream_y)
async_mark(stream_y)
wait_asyncmark(stream_y)
...
```
I feel this is unnecessarily verbose or at minimum not an API the compiler should have to provide. All sane use-cases degrade to my proposed API. I.e. if you were to try to create two separate streams that both contained instructions from two of my stages, its nonsensical because to determine that either stream has completed you have to completely drain the counter.
https://github.com/llvm/llvm-project/pull/220442
More information about the cfe-commits
mailing list