diff options
| author | J <[email protected]> | 2018-08-07 15:12:52 -0700 |
|---|---|---|
| committer | J <[email protected]> | 2018-08-07 15:12:52 -0700 |
| commit | a9af79ac84b69fa18dd395349b88f0d984f0a505 (patch) | |
| tree | ac5840210a3a713a0e5f38e18ca243aabca6b566 /src/gpgpu-sim | |
| parent | bd9a49ef576bfbbaf2be1d163eb99b7316f7bd20 (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.cc | 6 |
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 { |
