From d52a3292002fc0b6b37773ef03ca9b4ba5847c13 Mon Sep 17 00:00:00 2001 From: arun Date: Thu, 28 Jul 2011 02:19:39 -0800 Subject: Fixes for atomic callbacks [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 9901] --- src/abstract_hardware_model.h | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'src/abstract_hardware_model.h') diff --git a/src/abstract_hardware_model.h b/src/abstract_hardware_model.h index 9cb96f4..9ca747e 100644 --- a/src/abstract_hardware_model.h +++ b/src/abstract_hardware_model.h @@ -655,12 +655,16 @@ public: void do_atomic() { assert( m_isatomic && !m_empty ); - std::vector::iterator t; - for( t=m_per_scalar_thread.begin(); t != m_per_scalar_thread.end(); ++t ) { - dram_callback_t &cb = t->callback; - if( cb.thread ) - cb.function(cb.instruction, cb.thread); - } + for( unsigned i=0; i < m_config->warp_size; i++ ) + { + if( m_warp_active_mask.test(i) ) + { + dram_callback_t &cb = m_per_scalar_thread[i].callback; + if( cb.thread ) + cb.function(cb.instruction, cb.thread); + } + } + } void clear() { -- cgit v1.3