patch for additional graal HSAIL backend functionality

Deneau, Tom tom.deneau at
Fri Jul 12 16:26:57 PDT 2013

Please review the following webrev.  This webrev adds some new
features to the HSAIL backend, which are listed below:

-- Tom

* stackslot mapping was incorrect when combinations of 32-bit and
  64-bit stores were generated.  StackSlot alignment in
  HSAILTargetDescription set to 8.

* compressedOops support in various heap size configurations (with or
  without either of shift or heap base).  So we don't need
  XX:-UseCompressedOops anymore.

* some support for unsigned shifts, long shifts, logical ops for long

* a new GraalOption, InlineEverything.  Some HSAIL targets are not
  able to handle HSAIL function calls yet, plus we are still working
  on emitting HSAIL function calls in the compiler.

* hack for emitForeignCall special cases of createOutOfBoundsException
  or createNullPointerException.  (We just emit a comment.  Real
  exception handling still pending).  These nodes came about when we
  more aggressively inlined, although this has not been explained yet.

* support HSAILAddressValues as operands for arithmetic ops.  Use
  HSAIL lda instruction to get address into a register.  Used in
  particular for USHR for card-marking.

* Added some new junit tests. (some ported from their lambda versions)

   * StaticNBodyCallTest which would fail with default inlining (since
     we don't yet generate HSAIL calls).  It uses junit.assumeTrue and
     tests whether InlineEverything is set.  It (and also some
     lambda-based junit tests not part of this webrev) do pass nicely
     when InlineEverything is set true.

   * tests for storing an object, which test being able to handle the
     card-marking logic, as well as the encoding and decoding of a
     compressed oop.

   * some 2D matrix tests that showed a problem before the stackslot
     change above.  (have a mixture of 32-bit and 64-bit stackslot

More information about the graal-dev mailing list