From 2e35f844aac74403fc3021682fab0231195a69d3 Mon Sep 17 00:00:00 2001 From: Davit Grigoryan Date: Fri, 1 May 2026 10:29:50 +0000 Subject: fix double sb from fifo rotations during intra coissue --- src/abstract_hardware_model.h | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/abstract_hardware_model.h') 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 ───────────────────────────────────────────────── -- cgit v1.3