RFR (S): 8058880: Introduce identifier TEMP_DEF for effects in adl.

Lindenmaier, Goetz goetz.lindenmaier at sap.com
Mon Sep 22 13:17:34 UTC 2014


Hi,

this change introduces a new identifier in adl:
http://cr.openjdk.java.net/~goetz/webrevs/8058880-tempDef/webrev.00/
https://bugs.openjdk.java.net/browse/JDK-8058880

Please review this change.  I please need a sponsor.

This effect is similar to USE_DEF, except that a TEMP node will be generated
that represents the USE.

With this effect one can express that the def'ed register must be
different from the used ones corresponding to ins. Currently this is
already possible by specifying effect TEMP for the operand with effect
DEF from the match rule.

Introducing this new identifier makes the code more readable and
allows to specify the effect for nodes without match rules.

An example is an optimized encode node, if the base of the compressed heap
is 35G aligned, i.e., the shifted narrow oop can be merged with the base by
an or instruction.
On PPC we can shift and or with a single instruction:

decodeN(dst, src):

mov    Rdst = Rbase
rldimi Rdst = Rdst || (Rsrc << 3)

As the move is off the critical path, this is superior to do a shift and an add.
Unfortunately we must guarantee that Rdst != Rsrc. which we do with a TEMP_DEF effect:

instruct decodeN(iRegPdst dst, iRegNsrc src) %{
  match(Set dst (DecodeN src));
  effect(TEMP_DEF dst);

As requested before, I fixed the syntax in the code around my change.

Thanks and best regards,
  Goetz.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20140922/4e523ff0/attachment.html>


More information about the hotspot-compiler-dev mailing list