summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/shader.cc
diff options
context:
space:
mode:
authorTor Aamodt <[email protected]>2010-10-22 14:22:21 -0800
committerTor Aamodt <[email protected]>2010-10-22 14:22:21 -0800
commit4da926e61569a069bac229e8ba649e600fc78a04 (patch)
treecdb7fb44f15cf844c587bf2c92b37d3d2412c152 /src/gpgpu-sim/shader.cc
parentdc93f319051a9a9936a02cd9c1f7843a382a2da0 (diff)
enables global loads/stores for ptxplus
passing CUDA 3.1 and ptxplus correlation correlation back to around 0.89 on ptxplus vs quadro fx5800 [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 7898]
Diffstat (limited to 'src/gpgpu-sim/shader.cc')
-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 5c73126..79665cc 100644
--- a/src/gpgpu-sim/shader.cc
+++ b/src/gpgpu-sim/shader.cc
@@ -684,6 +684,8 @@ bool ldst_unit::constant_cycle( warp_inst_t &inst, mem_stage_stall_type &rc_fail
{
if( inst.empty() || ((inst.space.get_type() != const_space) && (inst.space.get_type() != param_space_kernel)) )
return true;
+ if( inst.active_count() == 0 )
+ return true;
mem_stage_stall_type fail = process_memory_access_queue(m_L1C,inst);
if (fail != NO_RC_FAIL){
rc_fail = fail; //keep other fails if this didn't fail.
@@ -699,6 +701,8 @@ bool ldst_unit::texture_cycle( warp_inst_t &inst, mem_stage_stall_type &rc_fail,
{
if( inst.empty() || inst.space.get_type() != tex_space )
return true;
+ if( inst.active_count() == 0 )
+ return true;
mem_stage_stall_type fail = process_memory_access_queue(m_L1T,inst);
if (fail != NO_RC_FAIL){
rc_fail = fail; //keep other fails if this didn't fail.
@@ -714,6 +718,8 @@ bool ldst_unit::memory_cycle( warp_inst_t &inst, mem_stage_stall_type &stall_rea
(inst.space.get_type() != local_space) &&
(inst.space.get_type() != param_space_local)) )
return true;
+ if( inst.active_count() == 0 )
+ return true;
assert( !inst.accessq_empty() );
mem_stage_stall_type stall_cond = NO_RC_FAIL;
const mem_access_t &access = inst.accessq_back();