RFR(M) JDK-8181809 PPC64: Leverage mtfprd/mffprd on POWER8
Doerr, Martin
martin.doerr at sap.com
Tue Jun 20 13:33:59 UTC 2017
Hi Matt,
thanks for providing this webrev. I had already thought about using these instructions for this purpose and your change matches pretty much what I'd do.
Here a couple of comments:
ppc.ad:
This was a lot of work. Thanks for doing it.
effect(DEF dst, USE src); is redundant if a match rule match(Set dst (MoveL2D src)); exists.
vm_version:
This part is in conflict with Michihiro's change which is already pushed in jdk10, but it's trivial to resolve. I'm ok with using has_vpmsumb() for has_mtfprd(). In the past, we sometimes had trouble with assuming that a certain Power processor supports all new instructions if it supports certain ones. We also use the hotspot code on as400 where certain instruction subsets were disabled while other Power 8 instructions were usable. Maybe you can double-check if there may exist configurations in which has_vpmsumb() doesn't match has_mtfprd().
C1:
It should also be possible to use the instructions in C1 compiler. Maybe you would like to take a look at it as well and see if it can be done with feasible effort.
Here are some hints:
The basic decisions are made in LIRGenerator::do_Convert. You could skip the force_to_spill or must_start_in_memory steps.
The final assembly code gets emitted in LIR_Assembler::emit_opConvert where you could replace the store instructions.
For testing, you can use -XX:TieredStopAtLevel=1, for example.
Thanks and best regards,
Martin
-----Original Message-----
From: hotspot-dev [mailto:hotspot-dev-bounces at openjdk.java.net] On Behalf Of Matthew Brandyberry
Sent: Montag, 19. Juni 2017 18:28
To: ppc-aix-port-dev at openjdk.java.net; hotspot-dev at openjdk.java.net
Subject: RFR(M) JDK-8181809 PPC64: Leverage mtfprd/mffprd on POWER8
This is a PPC-specific hotspot optimization that leverages the
mtfprd/mffprd instructions for for movement between general purpose and
floating point registers (rather than through memory). It yields a ~35%
improvement measured via a microbenchmark. Please review: Bug:
https://bugs.openjdk.java.net/browse/JDK-8181809 Webrev:
http://cr.openjdk.java.net/~gromero/8181809/v1/ Thanks, Matt
More information about the ppc-aix-port-dev
mailing list