From 8d59181b80697dfc717abcd55da9c899e4cf0d07 Mon Sep 17 00:00:00 2001 From: Inderpreet Singh Date: Wed, 18 Jul 2012 23:17:29 -0800 Subject: Copied in Arun's SIMT stack fix for recursive calls (CL8574) [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 13410] --- src/cuda-sim/cuda-sim.cc | 17 +++++++++++++++++ src/cuda-sim/ptx_ir.cc | 13 +++++++++++++ 2 files changed, 30 insertions(+) (limited to 'src/cuda-sim') diff --git a/src/cuda-sim/cuda-sim.cc b/src/cuda-sim/cuda-sim.cc index 252b230..e17877b 100644 --- a/src/cuda-sim/cuda-sim.cc +++ b/src/cuda-sim/cuda-sim.cc @@ -499,6 +499,23 @@ void ptx_instruction::set_opcode_and_latency() case ATOM_OP: op = LOAD_OP; break; case BAR_OP: op = BARRIER_OP; break; case MEMBAR_OP: op = MEMORY_BARRIER_OP; break; + case CALL_OP: + { + if(m_is_printf) + op = ALU_OP; + else + op = CALL_OPS; + break; + } + case CALLP_OP: + { + if(m_is_printf) + op = ALU_OP; + else + op = CALL_OPS; + break; + } + case RET_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()){ diff --git a/src/cuda-sim/ptx_ir.cc b/src/cuda-sim/ptx_ir.cc index 102ae40..61b45e3 100644 --- a/src/cuda-sim/ptx_ir.cc +++ b/src/cuda-sim/ptx_ir.cc @@ -1162,6 +1162,19 @@ ptx_instruction::ptx_instruction( int opcode, m_source_file = file?file:""; m_source_line = line; m_source = source; + + if (opcode == CALL_OP) { + const operand_info &target = func_addr(); + assert( target.is_function_address() ); + const symbol *func_addr = target.get_symbol(); + const function_info *target_func = func_addr->get_pc(); + std::string fname = target_func->get_name(); + + if (fname =="vprintf"){ + m_is_printf = true; + } + + } } void ptx_instruction::print_insn() const -- cgit v1.3