RFR(L): 8003854: PPC64 (part 115): Introduce lateExpand that expands nodes after register allocation.

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri Oct 4 11:29:53 PDT 2013

On 10/4/13 10:48 AM, Lindenmaier, Goetz wrote:
> Hi Christian,
> thanks for assigning that to me.  Can/may I change the title
> of the bug?  I would like to put in the 'PPC (part 115)' marker.

You don't need to ask permission for a bug you own :)
Try, if the system will not allow I will change it.


> Have fun reviewing ;)
> best regards,
>    Goetz.
> -----Original Message-----
> From: Christian Thalinger [mailto:christian.thalinger at oracle.com]
> Sent: Friday, October 04, 2013 12:02 AM
> To: Lindenmaier, Goetz
> Cc: hotspot-dev at openjdk.java.net; ppc-aix-port-dev at openjdk.java.net; Vladimir Kozlov
> Subject: Re: RFR(L): 8003854: PPC64 (part 115): Introduce lateExpand that expands nodes after register allocation.
> Before I start to review this I've assigned the bug to you, Goetz:
> https://bugs.openjdk.java.net/browse/JDK-8003854
> On Oct 2, 2013, at 6:49 AM, "Lindenmaier, Goetz" <goetz.lindenmaier at sap.com> wrote:
>> Hi,
>> we extended C2 by what we call lateExpand. LateExpand expands nodes
>> after register allocation.
>> http://cr.openjdk.java.net/~goetz/webrevs/8003854-lateExp/
>> Some nodes can not be expanded during matching. E.g., register
>> allocation might not be able to deal with the resulting pattern. To
>> allow better scheduling in such cases, we introduce lateExpand which
>> runs after register allocation. Whether and how nodes are expanded is
>> specified in the ad-file. See block.cpp for a detailed
>> documentation. We use this for some nodes on ppc, and extensively on
>> ia64.
>> For an example, see the webrev.
>> We added some utility functions in node.hpp and block.hpp used by
>> PhaseCFG::LateExpand() or the Node::lateExpand functions.  Also,
>> MachConstantBaseNode gets the two new functions, as we need to
>> late expand it.
>> To skip the walk over the IR if no lateExpand is needed, we use
>> Matcher::require_late_expand set in the ad file. This ends up in
>> ad_<cpu>.cpp, thus can not be evaluated by the C++ compiler.  If you
>> agree, I would use a "const bool EnableLateExpand" in
>> globalDefinitions_<cpu>.hpp.  (There is no suitable c2_<xxx>_<cpu>.hpp
>> file).
>> We allready mailed a webrev with this change after last year's
>> JavaOne, but there was no discussion on it.
>> Again, this change is 'L', but the code is not used on other
>> platforms than PPC64 (so far).  So the impact on those platforms
>> should be minimal.
>> Please review and test this change.
>> Thanks and best regards,
>>   Goetz.

More information about the hotspot-dev mailing list