summaryrefslogtreecommitdiff
path: root/src/cuda-sim/cuda-sim.cc
diff options
context:
space:
mode:
authorTor Aamodt <[email protected]>2010-07-17 10:19:14 -0800
committerTor Aamodt <[email protected]>2010-07-17 10:19:14 -0800
commit9b43d5685c269331ea6d15fe3ed0dade063a798a (patch)
treef14fa0082783744e7d13e883cd3f1620377dc733 /src/cuda-sim/cuda-sim.cc
parentca7e2e58e7fd932d67c6d28477a5c15ed3b156b0 (diff)
- add support for ld/st with generic addresses
- add support for parsing cache operators (still need to pass to timing model) [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 6868]
Diffstat (limited to 'src/cuda-sim/cuda-sim.cc')
-rw-r--r--src/cuda-sim/cuda-sim.cc25
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;