summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Aamodt <[email protected]>2010-10-05 21:57:01 -0800
committerTor Aamodt <[email protected]>2010-10-05 21:57:01 -0800
commit6cd75fefce592e193ddb2cdc90842664682ff281 (patch)
tree302a9731b8d78a6ac55f7ddafff92a15c8a65c76
parente0f1b4359832ba2952ddcff3a400cd7e1e3d02b5 (diff)
bug fixes
[git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 7815]
-rw-r--r--src/gpgpu-sim/shader.cc8
-rw-r--r--src/gpgpu-sim/shader.h7
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;