RFR: 8189107 - AARCH64: create intrinsic for pow

Dmitrij Pochepko dmitrij.pochepko at bell-sw.com
Tue Aug 14 16:24:51 UTC 2018


Hi all,

please review patch for 8189107 - AARCH64: create intrinsic for pow

This patch implements Math.pow intrinsic using same algorithm as 
original libm. There are few optimizations:

- polynomial calculations are vectorized where possible

- branches are organized to have shorter execution path for 
non-corner-case values

- FP constants are loaded from separate tables (mostly loaded in vector 
form)

- instructions are organized to reduce register dependencies and also to 
have FP loads in parallel with ALU instruction where possible


Benchmarks:

I created benchmark to measure Math.pow: 
http://cr.openjdk.java.net/~dpochepk/8189107/MathBench.java

Improvement per platform (rounded):

ThunderX2: 26%

ThunderX: 10%

Cortex A53: 22%

Cortex A72: 24%


Detailed results table is here: 
http://cr.openjdk.java.net/~dpochepk/8189107/math.pow.xls


This patch depends on 8209439: C2 library_call can potentially ignore 
Math.pow intrinsic or use null pointer


webrev: http://cr.openjdk.java.net/~dpochepk/8189107/webrev.01/

CR: https://bugs.openjdk.java.net/browse/JDK-8189107


Testing: I ran jtreg test for pow and pow JCK tests. All passed.


Thanks,

Dmitrij



More information about the hotspot-compiler-dev mailing list