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