diff options
| author | Tor Aamodt <[email protected]> | 2010-07-18 13:31:02 -0800 |
|---|---|---|
| committer | Tor Aamodt <[email protected]> | 2010-07-18 13:31:02 -0800 |
| commit | de305b7d6871110ad72037fb5e0a274c047838f3 (patch) | |
| tree | 9ff56f02dff12f6a0b90900dee86a08886d789b8 /src/cuda-sim/ptx_sim.cc | |
| parent | 00425f48461fa05aa17aef3e6e3a68ccae48a5e2 (diff) | |
refactoring call/return ABI code (want unified interface for call/return reg/param)
[git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 6883]
Diffstat (limited to 'src/cuda-sim/ptx_sim.cc')
| -rw-r--r-- | src/cuda-sim/ptx_sim.cc | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/cuda-sim/ptx_sim.cc b/src/cuda-sim/ptx_sim.cc index dffc128..cf0236a 100644 --- a/src/cuda-sim/ptx_sim.cc +++ b/src/cuda-sim/ptx_sim.cc @@ -370,8 +370,6 @@ bool ptx_thread_info::callstack_pop() { assert( !m_callstack.empty() ); assert( m_local_mem_stack_pointer >= m_func_info->local_mem_framesize() ); - m_func_info = m_callstack.back().m_func_info; - m_local_mem_stack_pointer -= m_func_info->local_mem_framesize(); m_symbol_table = m_callstack.back().m_symbol_table; m_NPC = m_callstack.back().m_PC; m_RPC_updated = true; @@ -380,13 +378,21 @@ bool ptx_thread_info::callstack_pop() const symbol *rv_src = m_callstack.back().m_return_var_src; const symbol *rv_dst = m_callstack.back().m_return_var_dst; assert( !((rv_src != NULL) ^ (rv_dst != NULL)) ); + + // TODO: read param local memory source ptx_reg_t rval; if( rv_src != NULL ) rval = get_operand_value(rv_src); + + m_func_info = m_callstack.back().m_func_info; + m_local_mem_stack_pointer -= m_func_info->local_mem_framesize(); m_callstack.pop_back(); m_regs.pop_back(); + + // TODO: write param local memory destination if( rv_dst != NULL ) set_operand_value(rv_dst,rval); + return m_callstack.empty(); } |
