Mercurial > hg > truffle
comparison src/share/vm/graal/graalCompilerToGPU.cpp @ 12743:f1a55428a8d7
more HSAIL support in the C++ layer for executing HSAIL code on the simulator
Contributed-by: Eric Caspole <eric.caspole@amd.com>
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Sun, 10 Nov 2013 13:18:09 +0100 |
parents | 1a7e7011a341 |
children | ca10e53c03ab |
comparison
equal
deleted
inserted
replaced
12742:40924dbc623b | 12743:f1a55428a8d7 |
---|---|
115 break; | 115 break; |
116 } | 116 } |
117 } | 117 } |
118 return JNIHandles::make_local(o); | 118 return JNIHandles::make_local(o); |
119 } | 119 } |
120 | |
121 C2V_END | 120 C2V_END |
122 | 121 |
123 C2V_VMENTRY(jobject, executeParallelMethodVarargs, (JNIEnv *env, | 122 C2V_VMENTRY(jobject, executeParallelMethodVarargs, (JNIEnv *env, |
124 jobject, | 123 jobject, |
125 jint dimX, jint dimY, jint dimZ, | 124 jint dimX, jint dimY, jint dimZ, |
137 Symbol* signature = mh->signature(); | 136 Symbol* signature = mh->signature(); |
138 | 137 |
139 // start value is the kernel | 138 // start value is the kernel |
140 jlong startValue = HotSpotInstalledCode::codeStart(hotspotInstalledCode); | 139 jlong startValue = HotSpotInstalledCode::codeStart(hotspotInstalledCode); |
141 | 140 |
141 if (UseHSAILSimulator) { | |
142 gpu::execute_kernel_void_1d((address)startValue, dimX, args, mh); | |
143 return NULL; | |
144 } | |
145 | |
142 PTXKernelArguments ptxka(signature, (arrayOop) JNIHandles::resolve(args), mh->is_static()); | 146 PTXKernelArguments ptxka(signature, (arrayOop) JNIHandles::resolve(args), mh->is_static()); |
143 JavaValue result(ptxka.get_ret_type()); | 147 JavaValue result(ptxka.get_ret_type()); |
144 if (!gpu::execute_warp(dimX, dimY, dimZ, (address)startValue, ptxka, result)) { | 148 if (!gpu::execute_warp(dimX, dimY, dimZ, (address) startValue, ptxka, result)) { |
145 return NULL; | 149 return NULL; |
146 } | 150 } |
147 | 151 |
148 if (ptxka.get_ret_type() == T_VOID) { | 152 if (ptxka.get_ret_type() == T_VOID) { |
149 return NULL; | 153 return NULL; |
167 break; | 171 break; |
168 } | 172 } |
169 } | 173 } |
170 return JNIHandles::make_local(o); | 174 return JNIHandles::make_local(o); |
171 } | 175 } |
172 | |
173 C2V_END | 176 C2V_END |
174 | 177 |
175 C2V_VMENTRY(jboolean, deviceInit, (JNIEnv *env, jobject)) | 178 C2V_VMENTRY(jboolean, deviceInit, (JNIEnv *env, jobject)) |
176 if (gpu::is_available() == false || gpu::has_gpu_linkage() == false) { | 179 if (gpu::is_available() == false || gpu::has_gpu_linkage() == false) { |
177 tty->print_cr("deviceInit - not available / no linkage"); | 180 tty->print_cr("deviceInit - not available / no linkage"); |