webrev for Graal HSAIL backend

Venkatachalam, Vasanth Vasanth.Venkatachalam at amd.com
Tue Jun 11 15:16:02 PDT 2013


The AMD Sumatra team has submitted a webrev (http://cr.openjdk.java.net/~ecaspole/graal_hsail/) that adds HSAIL code generation support for Graal, allowing Java programs to be compiled and executed on HSAIL-enabled GPU/APU devices. While this work is a prototype, we have included several working unit test cases, including Mandelbrot and NBody.


Arithmetic operations for integers, longs, doubles, and floats
Loads, stores and move operations
Min/max/rem/carry operations for integers and longs
Conversion operations - (currently support conversions between integers and floats, integers and doubles, integers and longs, floats and doubles).
Some math library operations (e.g., square root).
Support for JDK8 lambda constructs.

Known Issues

-The logic to handle register spilling is work-in-progress, so not all test cases that induce spilling are guaranteed to work.
-X86 register encodings are being passed to the HSAIL backend. The calling convention returned by getCallingConvention() currently returns an x86 calling convention
-Function call support has yet to be implemented.

For a detailed list of unsupported features, refer to the routines that are emitting "NYI" in HSAILLIRGenerator.java

The test cases (except for BasicHSAILTest) require an HSAIL simulator or hardware to execute, but in lieu of a simulator or hardware they will output the HSAIL code generated, which is useful for debugging. Moreover, BasicHSAILTest provides a template for adding Java code snippets and viewing the HSAIL generated code without executing the code.

We encourage the community to support this new backend and extend it with additional features.


More information about the graal-dev mailing list