x86 registers passed to other ISA target assemblers

Christian Thalinger christian.thalinger at oracle.com
Fri Mar 15 18:23:46 PDT 2013


On Mar 14, 2013, at 6:18 AM, Thomas Wuerthinger <thomas.wuerthinger at oracle.com> wrote:

> Vasanth,
> 
> At the moment the register configuration is retrieved from the runtime in "Backend.newFrameMap". You could override this method in PTXBackend to pass in a different register configuration. We are currently in the process of restructuring the backend to fit the needs of PTX. I'll keep you updated - you can expect a new version by the end of next week.
> 
> The runtime is a singleton and represents the "host runtime" - i.e., it corresponds to the platform HotSpot itself is compiled with. This means you can still produce PTX code with PTX registers while the host runtime is AMD64.

Right.  I pointed that out some time ago (on this list?).  As long as you don't execute PTX or HSAIL code (and I guess you don't, yet) it doesn't matter what register allocation you have.

Thomas will make it work for us :-)

-- Chris

> 
> - thomas
> 
> On Mar 14, 2013, at 2:07 AM, "Venkatachalam, Vasanth" <Vasanth.Venkatachalam at amd.com> wrote:
> 
>> Hi,
>> 
>> I noticed that when running BasicPTXTest.java, the PTX assembler is getting passed AMD64 Registers. This became apparent when I hacked the assembler routines to print the names of the Register parameters passed.
>> 
>> After single stepping through the code to understand how AMD64 registers are coming into the picture, I found a routine AMD64HotspotGraalRuntime.makeInstance(), which is instantiating a new
>> new AMD64HotspotGraalRuntime(). It looks like this routine is getting called by graalVMToCompiler.cpp in the below lines:
>> 
>> Handle VMToCompiler::graalRuntime() {
>> if (JNIHandles::resolve(_graalRuntimePermObject) == NULL) {
>> #ifdef AMD64
>>   Symbol* name = vmSymbols::com_oracle_graal_hotspot_amd64_AMD64HotSpotGraalRuntime();
>> #endif
>>   KlassHandle klass = loadClass(name);
>> 
>>   JavaValue result(T_OBJECT);
>>   JavaCalls::call_static(&result, klass, vmSymbols::makeInstance_name(), vmSymbols::getInstance_signature(), Thread::current());
>> 
>>> From the above code, it looks like the VM is defaulting  to use the AMD64 runtime in cases where you are running on an AMD64 platform, even if we are running a test case for one of the other ISAs (BasicPTXTest) that simply prints out the code that is generated (without executing the code).
>> Am I correct in thinking this is why AMD64 registers are getting passed into the PTX Assembler?
>> 
>> 
>> Vasanth
> 



More information about the graal-dev mailing list