summaryrefslogtreecommitdiff
path: root/src/cuda-sim/ptx_sim.cc
diff options
context:
space:
mode:
authorHadi Jooybar <[email protected]>2012-11-05 19:35:21 -0800
committerAndrew Boktor <[email protected]>2014-08-14 13:49:21 -0700
commit0b5efbc556621998ac42e96024163fae05beaf85 (patch)
treeae17e55c4103b246597e6dd2ad1981cee90e0b7a /src/cuda-sim/ptx_sim.cc
parent9af6f86d0f06c2ca1b117d358009b91a646b0e83 (diff)
OpenCL newer diver fix
[git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 14554]
Diffstat (limited to 'src/cuda-sim/ptx_sim.cc')
-rw-r--r--src/cuda-sim/ptx_sim.cc31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/cuda-sim/ptx_sim.cc b/src/cuda-sim/ptx_sim.cc
index b0393fa..29351a0 100644
--- a/src/cuda-sim/ptx_sim.cc
+++ b/src/cuda-sim/ptx_sim.cc
@@ -207,7 +207,36 @@ unsigned ptx_thread_info::get_builtin( int builtin_id, unsigned dim_mod )
if( dim_mod == 2 ) return m_ctaid.z;
abort();
break;
- case ENVREG_REG: feature_not_implemented( "%envreg" ); return 0;
+ case ENVREG_REG:{
+ int index = builtin_id >> 16;
+ dim3 gdim = this->get_core()->get_kernel_info()->get_grid_dim();
+ switch(index){
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ return 0;
+ break;
+ case 6:
+ return gdim.x;
+ case 7:
+ return gdim.y;
+ case 8:
+ return gdim.z;
+ case 9:
+ if(gdim.z == 1 && gdim.y == 1)
+ return 1;
+ else if(gdim.z == 1)
+ return 2;
+ else
+ return 3;
+ break;
+ default:
+ break;
+ }
+ }
case GRIDID_REG:
return m_gridid;
case LANEID_REG: feature_not_implemented( "%laneid" ); return 0;