diff options
| author | Inderpreet Singh <[email protected]> | 2012-07-19 12:12:40 -0800 |
|---|---|---|
| committer | Andrew Boktor <[email protected]> | 2014-08-14 13:47:33 -0700 |
| commit | 16fe8bdd350346f1e940a1653ac485c5c8d8b9b9 (patch) | |
| tree | 6e4546c647cf6edb59ae3f716a1645828974ace9 /src | |
| parent | b939dbd8142d3ef8c5e598dbfcd004f02089329f (diff) | |
Ptxplus fix for recrusive call handling in SIMT stack (CL13410).
[git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 13435]
Diffstat (limited to 'src')
| -rw-r--r-- | src/abstract_hardware_model.cc | 11 | ||||
| -rw-r--r-- | src/abstract_hardware_model.h | 1 | ||||
| -rw-r--r-- | src/cuda-sim/cuda-sim.cc | 2 |
3 files changed, 13 insertions, 1 deletions
diff --git a/src/abstract_hardware_model.cc b/src/abstract_hardware_model.cc index b86e750..c6862ef 100644 --- a/src/abstract_hardware_model.cc +++ b/src/abstract_hardware_model.cc @@ -545,6 +545,16 @@ simt_stack::simt_stack( unsigned wid, unsigned warpSize) reset(); } +simt_stack::~simt_stack() +{ + free(m_pc); + free(m_calldepth); + delete m_active_mask; + free(m_recvg_pc); + free(m_branch_div_cycle); + free(m_type); +} + void simt_stack::reset() { m_stack_top = 0; @@ -653,6 +663,7 @@ void simt_stack::update( simt_mask_t &thread_done, addr_vector_t &next_pc, addre stack_top += 1; m_active_mask[stack_top] = tmp_active_mask; + m_pc[stack_top]=tmp_next_pc; m_type[stack_top]= CALL; m_recvg_pc[stack_top] = -1; diff --git a/src/abstract_hardware_model.h b/src/abstract_hardware_model.h index 4cde89a..428b5fc 100644 --- a/src/abstract_hardware_model.h +++ b/src/abstract_hardware_model.h @@ -244,6 +244,7 @@ typedef std::vector<address_type> addr_vector_t; class simt_stack { public: simt_stack( unsigned wid, unsigned warpSize); + ~simt_stack(); void reset(); void launch( address_type start_pc, const simt_mask_t &active_mask ); diff --git a/src/cuda-sim/cuda-sim.cc b/src/cuda-sim/cuda-sim.cc index e17877b..16bc653 100644 --- a/src/cuda-sim/cuda-sim.cc +++ b/src/cuda-sim/cuda-sim.cc @@ -515,7 +515,7 @@ void ptx_instruction::set_opcode_and_latency() op = CALL_OPS; break; } - case RET_OP: op = RET_OPS;break; + case RET_OP: case RETP_OP: op = RET_OPS;break; case ADD_OP: case ADDP_OP: case ADDC_OP: case SUB_OP: case SUBC_OP: //ADD,SUB latency switch(get_type()){ |
