From 6cd75fefce592e193ddb2cdc90842664682ff281 Mon Sep 17 00:00:00 2001 From: Tor Aamodt Date: Tue, 5 Oct 2010 21:57:01 -0800 Subject: bug fixes [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 7815] --- src/gpgpu-sim/shader.cc | 8 ++++---- src/gpgpu-sim/shader.h | 7 +------ 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/gpgpu-sim/shader.cc b/src/gpgpu-sim/shader.cc index 976671a..0d17be4 100644 --- a/src/gpgpu-sim/shader.cc +++ b/src/gpgpu-sim/shader.cc @@ -852,9 +852,7 @@ mshr_entry* mshr_shader_unit::add_mshr(mem_access_t &access, warp_inst_t* warp) // creates an mshr based on the access struct information mshr_entry* mshr = alloc_free_mshr(access.space == tex_space); mshr->init(access.addr,access.iswrite,access.space,warp->warp_id()); - assert(access.warp_indices.size()); //code assumes at least one instruction attached to mshr. - for (unsigned i = 0; i < access.warp_indices.size(); i++) - mshr->add_inst(warp[access.warp_indices[i]]); + mshr->add_inst(*warp); if( m_shader_config->gpgpu_interwarp_mshr_merge ) { mshr_entry* mergehit = m_mshr_lookup.shader_get_mergeable_mshr(mshr); if (mergehit) { @@ -1193,8 +1191,10 @@ void shader_core_ctx::writeback() mshr_entry *m = m_mshr_unit->return_head(); if( m ) m_mshr_unit->pop_return_head(); - if( !m_pipeline_reg[MM_WB]->empty() ) + if( !m_pipeline_reg[MM_WB]->empty() ) { m_scoreboard->releaseRegisters( m_pipeline_reg[MM_WB] ); + m_warp[m_pipeline_reg[MM_WB]->warp_id()].dec_inst_in_pipeline(); + } move_warp(m_pipeline_reg[WB_RT],m_pipeline_reg[MM_WB]); } diff --git a/src/gpgpu-sim/shader.h b/src/gpgpu-sim/shader.h index 7423025..d9a8825 100644 --- a/src/gpgpu-sim/shader.h +++ b/src/gpgpu-sim/shader.h @@ -889,12 +889,8 @@ class mshr_shader_unit { public: mshr_shader_unit( const shader_core_config *config ); - bool has_mshr(unsigned num) - { - return (num <= m_free_list.size()); - } + bool has_mshr(unsigned num) const { return (num <= m_free_list.size()); } - //return queue access; (includes texture pipeline return) mshr_entry* return_head(); //return queue pop; (includes texture pipeline return) @@ -1125,7 +1121,6 @@ private: ifetch_buffer_t m_inst_fetch_buffer; pdom_warp_ctx_t **m_pdom_warp; // pdom reconvergence context for each warp - class warp_tracker_pool *m_warp_tracker; warp_inst_t** m_pipeline_reg; Scoreboard *m_scoreboard; opndcoll_rfu_t m_operand_collector; -- cgit v1.3