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_buf acquires a buffer token and implicitly sets an event; rls_buf releases 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