From fd3c208f3c51c5520dcd7150d8a521a61577a9d5 Mon Sep 17 00:00:00 2001 From: Ahmed El-Shafiey Date: Wed, 6 Aug 2014 16:57:40 -0800 Subject: Support for named bariers + bar.red + bar.arrive instructions [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 18452] --- src/abstract_hardware_model.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/abstract_hardware_model.cc') diff --git a/src/abstract_hardware_model.cc b/src/abstract_hardware_model.cc index cd4e8d7..84d165c 100644 --- a/src/abstract_hardware_model.cc +++ b/src/abstract_hardware_model.cc @@ -152,6 +152,7 @@ void warp_inst_t::do_atomic(bool forceDo) { do_atomic( m_warp_active_mask,forceDo ); } + void warp_inst_t::do_atomic( const active_mask_t& access_mask,bool forceDo ) { assert( m_isatomic && (!m_empty||forceDo) ); for( unsigned i=0; i < m_config->warp_size; i++ ) @@ -165,6 +166,20 @@ void warp_inst_t::do_atomic( const active_mask_t& access_mask,bool forceDo ) { } } +void warp_inst_t::broadcast_barrier_reduction(const active_mask_t& access_mask) +{ + for( unsigned i=0; i < m_config->warp_size; i++ ) + { + if( access_mask.test(i) ) + { + dram_callback_t &cb = m_per_scalar_thread[i].callback; + if( cb.thread ){ + cb.function(cb.instruction, cb.thread); + } + } + } +} + void warp_inst_t::generate_mem_accesses() { if( empty() || op == MEMORY_BARRIER_OP || m_mem_accesses_created ) -- cgit v1.3