diff options
Diffstat (limited to 'src/abstract_hardware_model.h')
| -rw-r--r-- | src/abstract_hardware_model.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/abstract_hardware_model.h b/src/abstract_hardware_model.h index 09d59f9..8d1e0e8 100644 --- a/src/abstract_hardware_model.h +++ b/src/abstract_hardware_model.h @@ -1934,6 +1934,16 @@ class simt_tables { return m_simt_splits_table->move_split_to_front(split_id); } + // Mode 2 (slot-pinned scoreboard) cross-slot drain gate. Set by + // simt_tables::update() when the FIFO membership changes due to actual + // divergence (num_divergent_paths > 1) or reconvergence (active mask + // grows on RPC merge). NOT set by co-issue's move_split_to_front + // (FIFO ordering change without membership change). Cleared by the + // fetch-stage gate once both slot scoreboards are observed clean. + bool div_recv_drain_pending() const { return m_div_recv_drain_pending; } + void set_div_recv_drain_pending() { m_div_recv_drain_pending = true; } + void clear_div_recv_drain_pending() { m_div_recv_drain_pending = false; } + private: unsigned m_warp_id; unsigned m_warp_size; @@ -1942,6 +1952,7 @@ class simt_tables { const shader_core_config *m_config; const struct memory_config *m_mem_config; shader_core_ctx *m_shader; + bool m_div_recv_drain_pending = false; }; // ── End ITS data structures ───────────────────────────────────────────────── |
