From 8b3b5bbf710302ad3a835626477dc1bf2d317952 Mon Sep 17 00:00:00 2001 From: Davit Grigoryan Date: Sat, 11 Apr 2026 03:49:00 +0000 Subject: initial impl of mimd timing model --- src/abstract_hardware_model.cc | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/abstract_hardware_model.cc') diff --git a/src/abstract_hardware_model.cc b/src/abstract_hardware_model.cc index 316b02b..ed91a44 100644 --- a/src/abstract_hardware_model.cc +++ b/src/abstract_hardware_model.cc @@ -96,6 +96,33 @@ unsigned warp_inst_t::num_active_simd_sets() const { return count; } +void warp_inst_t::set_source_inst_on_sets(const inst_t *src) { + for (unsigned s = 0; s < m_simd_sets.size(); s++) { + if (m_simd_sets[s].valid) { + m_simd_sets[s].source_inst = src; + } + } +} + +void warp_inst_t::merge_simd_sets( + const std::vector &other_sets) { + assert(m_simd_sets.size() == other_sets.size()); + for (unsigned s = 0; s < other_sets.size(); s++) { + if (other_sets[s].valid && !m_simd_sets[s].valid) { + m_simd_sets[s] = other_sets[s]; + } + } +} + +bool warp_inst_t::simd_sets_overlap(const std::vector &a, + const std::vector &b) { + assert(a.size() == b.size()); + for (unsigned s = 0; s < a.size(); s++) { + if (a[s].valid && b[s].valid) return true; + } + return false; +} + checkpoint::checkpoint() { struct stat st = {0}; -- cgit v1.3