================ @@ -49,9 +104,9 @@ not related in *program-order* with any other operations from that thread. But the thread can use an asyncmark to ensure that the async operation is *completed-at* some later operation. -An async operation `A` *initiated-by* an instruction `I` is *completed-at* some -`wait.asyncmark()` operation `Y` if there exists an `asyncmark()` operation `X` -such that: +An async operation `A`, *initiated-by* an instruction `I` is *completed-at* some +`wait.asyncmark()` operation `Y` if there exists an `asyncmark()` operation `X`: + ---------------- RyanRio wrote:
``` An async operation `A`, *initiated-by* an instruction `I` is *completed-at* some `wait.asyncmark()` operation `Y` with stage mask `B` if there exists an `asyncmark()` operation `X` with mask `C`: - `I` is *program-ordered* before `X`, and - `I` belongs to a stage in `C`, and - `X` is *completed-at* `Y`. ``` The stage mask `B` since that part is handled by completion of asyncmarks, and `X` completed-at `Y`. > We may later move to a world where one instruction starts a sequence of > operations corresponding to different stages. We should ensure that the > current text is explicitly consistent with the one-stage assumption. Yeah... this gets interesting, something along, we could say something like "all stages of `I` are present in `C`", but obviously we want to be able to only wait for individual parts of `I`, if the hardware exists for it. Anyhow, out of the scope of this PR. https://github.com/llvm/llvm-project/pull/220442 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
