RFR(M): 8196402: AARCH64: create intrinsic for Math.log

Dmitrij Pochepko dmitrij.pochepko at bell-sw.com
Mon May 21 13:55:33 UTC 2018


Hi all,

please review patch for 8196402: AARCH64: create intrinsic for Math.log

This patch adds Math.log intrinsic to AARCH64. Algorithm is based on a 
table-based search logic such as described in paper [1]. Algorithm 
splits argument in 2 parts (exponent-based and mantissa-based), 
calculate reciprocal estimate of mantissa part and finds reduced 
argument value using pregenerated table, then calculates final value 
using 7th degree polynomial of reduced argument.

This patch heavily uses vector calculations. Few previously 
unimplemented vector instructions are added to support it.


Performance results:

I created separate JMH benchmark: 
http://cr.openjdk.java.net/~dpochepk/8196402/MathBench.java

Benchmark results for logarithm (intrinsic vs without intrinsics (shared 
runtime)):

ThunderX: x1.37 improvement

ThunderX2: x1.33 improvement

Cortex A73: x1.2 improvement

Cortex A53: x1.6 improvement

Detailed results can be checked here: 
http://cr.openjdk.java.net/~dpochepk/8196402/math-log.xls


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

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

Testing: I launched jtreg jdk tests for Math.log: jdk/java/lang/Math/Log*

I also launched jck tests for Math.log:

All tests were launched both in Xcomp and Xmixed modes, using release 
and fastdebug builds.

No failures found.

Additional tests are not required because the algorithm is already 
present in hotspot for x86.


Thanks,

Dmitrij


[1] Table-driven implementation of the logarithm function in IEEE 
floating-point arithmetic (https://dl.acm.org/citation.cfm?doid=98267.98294)



More information about the hotspot-compiler-dev mailing list