diff options
Diffstat (limited to 'src/cuda-sim/ptx_sim.cc')
| -rw-r--r-- | src/cuda-sim/ptx_sim.cc | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/src/cuda-sim/ptx_sim.cc b/src/cuda-sim/ptx_sim.cc index d551c43..8998466 100644 --- a/src/cuda-sim/ptx_sim.cc +++ b/src/cuda-sim/ptx_sim.cc @@ -235,12 +235,12 @@ ptx_thread_info::ptx_thread_info() m_hw_sid = -1; m_last_dram_callback.function = NULL; m_last_dram_callback.instruction = NULL; - m_regs.push_back( std::map<std::string,ptx_reg_t>() ); - m_debug_trace_regs_modified.push_back( std::map<std::string,ptx_reg_t>() ); + m_regs.push_back( reg_map_t() ); m_callstack.push_back( stack_entry() ); m_RPC = -1; m_RPC_updated = false; m_last_was_call = false; + m_enable_debug_trace = false; } const ptx_version &ptx_thread_info::get_ptx_version() const @@ -356,8 +356,7 @@ void ptx_thread_info::callstack_push( unsigned pc, unsigned rpc, const symbol *r m_RPC_updated = true; m_last_was_call = true; m_callstack.push_back( stack_entry(m_symbol_table,m_func_info,pc,rpc,return_var_src,return_var_dst,call_uid) ); - m_regs.push_back( std::map<std::string,ptx_reg_t>() ); - m_debug_trace_regs_modified.push_back( std::map<std::string,ptx_reg_t>() ); + m_regs.push_back( reg_map_t() ); } #define POST_DOMINATOR 1 /* must match definition in shader.h */ @@ -382,7 +381,6 @@ bool ptx_thread_info::callstack_pop() rval = get_operand_value(rv_src); m_callstack.pop_back(); m_regs.pop_back(); - m_debug_trace_regs_modified.pop_back(); if( rv_dst != NULL ) set_operand_value(rv_dst,rval); return m_callstack.empty(); @@ -391,13 +389,13 @@ bool ptx_thread_info::callstack_pop() void ptx_thread_info::dump_callstack() const { std::list<stack_entry>::const_iterator c=m_callstack.begin(); - std::list<std::map<std::string,ptx_reg_t> >::const_iterator r=m_regs.begin(); + std::list<reg_map_t>::const_iterator r=m_regs.begin(); printf("\n\n"); printf("Call stack for thread uid = %u (sc=%u, hwtid=%u)\n", m_uid, m_hw_sid, m_hw_tid ); while( c != m_callstack.end() && r != m_regs.end() ) { const stack_entry &c_e = *c; - const std::map<std::string,ptx_reg_t> ®s = *r; + const reg_map_t ®s = *r; if( !c_e.m_valid ) { printf(" <entry> #regs = %zu\n", regs.size() ); } else { @@ -427,9 +425,9 @@ std::string ptx_thread_info::get_location() const void ptx_thread_info::dump_regs() { printf("Register File Contents:\n"); - std::map<std::string,ptx_reg_t>::const_iterator r; + reg_map_t::const_iterator r; for ( r=m_regs.back().begin(); r != m_regs.back().end(); ++r ) { - std::string name = r->first; + std::string name = r->first->name(); ptx_reg_t value = r->second; print_reg(name,value); @@ -441,9 +439,9 @@ void ptx_thread_info::dump_modifiedregs() if( m_debug_trace_regs_modified.empty() ) return; printf("Modified Registers:\n"); - std::map<std::string,ptx_reg_t>::const_iterator r; - for ( r=m_debug_trace_regs_modified.back().begin(); r != m_debug_trace_regs_modified.back().end(); ++r ) { - std::string name = r->first; + reg_map_t::const_iterator r; + for ( r=m_debug_trace_regs_modified.begin(); r != m_debug_trace_regs_modified.end(); ++r ) { + std::string name = r->first->name(); ptx_reg_t value = r->second; print_reg(name,value); } |
