RFR: 8146843: aarch64: add scheduling support for FP and vector instructions

Edward Nevill edward.nevill at gmail.com
Wed Jan 13 11:40:06 UTC 2016


Please review the following webrev


This adds support for OptoScheduling of FP & Vector (Neon) instructions on aarch64 (aarch64 already has support for scheduling of scalar instructions).

The following table shows the performance difference of this change.


Note that the pipeline scheduling used in this change is based on partner C hardware because that is the only hardware I have the micro architecture details for.

Unsurprisingly the performance difference is most noticeable for the in order cores (B & D).

In a few cases the performance is worse. This seems to be due to it mis-scheduling data processing instructions at the cost of load store instructions on out of order cores.

However I think that the overall performance improvement makes this change worthwhile.

It may be possible in a future change to predicate individual pipeline classes on the core it is being run on, however this could rapidly lead to explosion in the size of aarch64.ad. Alternatively we could do some coarser predication on In Order vs Out of Order.

I have tested the change with jtreg hotspot and langtools with the following results.


Hotspot: Test results: passed: 1,066; failed: 15; error: 18
Langtools: Test results: passed: 3,358; failed: 1; error: 4


Hotspot: Test results: passed: 1,073; failed: 11; error: 15
Langtools: Test results: passed: 3,358; failed: 1; error: 4

Thanks for the review,

More information about the hotspot-compiler-dev mailing list