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