From 16fe8bdd350346f1e940a1653ac485c5c8d8b9b9 Mon Sep 17 00:00:00 2001 From: Inderpreet Singh Date: Thu, 19 Jul 2012 12:12:40 -0800 Subject: Ptxplus fix for recrusive call handling in SIMT stack (CL13410). [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 13435] --- src/abstract_hardware_model.cc | 11 +++++++++++ src/abstract_hardware_model.h | 1 + src/cuda-sim/cuda-sim.cc | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) (limited to 'src') 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 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()){ -- cgit v1.3