diff options
Diffstat (limited to 'src/cuda-sim/cuda-sim.cc')
| -rw-r--r-- | src/cuda-sim/cuda-sim.cc | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/cuda-sim/cuda-sim.cc b/src/cuda-sim/cuda-sim.cc index f8a8db0..705a80a 100644 --- a/src/cuda-sim/cuda-sim.cc +++ b/src/cuda-sim/cuda-sim.cc @@ -294,6 +294,7 @@ ptx_instruction::ptx_instruction( int opcode, m_lo = false; m_uni = false; m_to_option = false; + m_cache_option = 0; m_rounding_mode = RN_OPTION; m_compare_op = -1; m_saturation_mode = 0; @@ -405,6 +406,9 @@ ptx_instruction::ptx_instruction( int opcode, case TO_OPTION: m_to_option = true; break; + case CA_OPTION: case CG_OPTION: case CS_OPTION: case LU_OPTION: case CV_OPTION: + m_cache_option = last_ptx_inst_option; + break; default: assert(0); @@ -655,6 +659,11 @@ addr_t shared_to_generic( unsigned smid, addr_t addr ) return SHARED_GENERIC_START + smid*SHARED_MEM_SIZE_MAX + addr; } +addr_t global_to_generic( addr_t addr ) +{ + return addr; +} + bool isspace_shared( unsigned smid, addr_t addr ) { addr_t start = SHARED_GENERIC_START + smid*SHARED_MEM_SIZE_MAX; @@ -669,6 +678,17 @@ bool isspace_global( addr_t addr ) return (addr > GLOBAL_HEAP_START) || (addr < STATIC_ALLOC_LIMIT); } +unsigned whichspace( addr_t addr ) +{ + if( (addr > GLOBAL_HEAP_START) || (addr < STATIC_ALLOC_LIMIT) ) { + return GLOBAL_DIRECTIVE; + } else if( addr > SHARED_GENERIC_START ) { + return SHARED_DIRECTIVE; + } else { + return LOCAL_DIRECTIVE; + } +} + addr_t generic_to_shared( unsigned smid, addr_t addr ) { assert(isspace_shared(smid,addr)); @@ -696,6 +716,11 @@ addr_t generic_to_local( unsigned smid, unsigned hwtid, addr_t addr ) return addr - (LOCAL_GENERIC_START + (TOTAL_LOCAL_MEM_PER_SM * smid) + (LOCAL_MEM_SIZE_MAX * hwtid)); } +addr_t generic_to_global( addr_t addr ) +{ + return addr; +} + unsigned long long g_dev_malloc=GLOBAL_HEAP_START; |
