summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim
diff options
context:
space:
mode:
authorJ <[email protected]>2018-08-07 15:12:52 -0700
committerJ <[email protected]>2018-08-07 15:12:52 -0700
commita9af79ac84b69fa18dd395349b88f0d984f0a505 (patch)
treeac5840210a3a713a0e5f38e18ca243aabca6b566 /src/gpgpu-sim
parentbd9a49ef576bfbbaf2be1d163eb99b7316f7bd20 (diff)
working fix for deadlock due to operand collector, parser changes to support culaunchkernel
Diffstat (limited to 'src/gpgpu-sim')
-rw-r--r--src/gpgpu-sim/shader.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/gpgpu-sim/shader.cc b/src/gpgpu-sim/shader.cc
index 4640d65..da85bae 100644
--- a/src/gpgpu-sim/shader.cc
+++ b/src/gpgpu-sim/shader.cc
@@ -3034,6 +3034,12 @@ bool opndcoll_rfu_t::writeback( const warp_inst_t &inst )
for( r=regs.begin(); r!=regs.end();r++,n++ ) {
unsigned reg = *r;
unsigned bank = register_bank(reg,inst.warp_id(),m_num_banks,m_bank_warp_shift);
+ unsigned count = 0;
+ while( !m_arbiter.bank_idle(bank) ) {
+ assert((++count)<m_num_banks);
+ bank++;
+ bank %= m_num_banks;
+ }
if( m_arbiter.bank_idle(bank) ) {
m_arbiter.allocate_bank_for_write(bank,op_t(&inst,reg,m_num_banks,m_bank_warp_shift));
} else {