summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/abstract_hardware_model.cc11
-rw-r--r--src/abstract_hardware_model.h1
-rw-r--r--src/cuda-sim/cuda-sim.cc2
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()){