RFR (S): 8058880: Introduce identifier TEMP_DEF for effects in adl.
Vladimir Kozlov
vladimir.kozlov at oracle.com
Tue Sep 23 01:13:43 UTC 2014
Seems fine to me.
Thanks,
Vladimir
On 9/22/14 6:17 AM, Lindenmaier, Goetz wrote:
> 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.
>
More information about the hotspot-compiler-dev
mailing list