Pipeline Sync¶
These pto.* forms establish explicit producer-consumer ordering across PTO execution stages. They belong to the scalar and control instructions even when they coordinate vector-facing pipelines, because what they expose architecturally is dependency state rather than vector payload math.
Synchronization Hierarchy¶
The four synchronization modes form a containment hierarchy:
Event-based synchronization (set_flag / wait_flag)
↑
Buffer-token protocol (get_buf / rls_buf) — requires event-based under the hood
↑
Memory barrier (mem_bar) — may be used inside vector-visible scope
↑
Inter-core coordination (set_cross_core / wait_flag_dev / set_intra_block / wait_intra_core)
- Event-based (
set_flag/wait_flag): The foundational mode. Sets or waits on a named event signal between producer and consumer pipes. Used as the primitive for all higher-level modes. - Buffer-token (
get_buf/rls_buf): A protocol built on top of event-based synchronization for double-buffered execution.get_bufacquires a buffer token and implicitly sets an event;rls_bufreleases the token and implicitly sets a dependent event. - Memory barrier (
mem_bar): Enforces visibility of memory operations within a vector-visible execution scope. Does not establish cross-stage ordering on its own. - Inter-core (
set_cross_core/wait_flag_dev/set_intra_block/wait_intra_core): Coordinate between execution units or cores. These are profile-restricted and MAY NOT be available on all targets.
Programs MUST NOT assume that a higher-level mode (e.g., buffer-token) replaces the need for event-based ordering; the protocol requires event-based synchronization underneath.
What This Instruction Set Covers¶
- event-based synchronization between producer and consumer pipes
- buffer-token protocols for double-buffered execution
- explicit memory barriers inside vector-visible execution scope
- target-profile inter-core coordination forms
Per-Op Pages¶
- pto.set_flag
- pto.wait_flag
- pto.pipe_barrier
- pto.get_buf
- pto.rls_buf
- pto.mem_bar
- pto.set_cross_core
- pto.wait_flag_dev
- pto.set_intra_block
- pto.wait_intra_core