JDK-8154122 : Intrinsify fused mac operations on x86
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 9
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2016-04-13
  • Updated: 2017-06-05
  • Resolved: 2016-09-14
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
9 b140Fixed
Related Reports
Blocks :  
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Sub Tasks
JDK-8174062 :  
Once the fused mac operation has library support (JDK-4851642), it is a natural candidate to be intrinsified since many processors now include fused mac floating-point instructions, especially after the 2008 update to the IEEE 754 floating-point standard included fused mac.
FC Extension Request: Justification: significant speedup of Java's math libraries the fma (fused multiply-accumulate) functions. Risk: Low. Under the flag UseFMA. Proposed Integration Date: September 16, 2016 (immediately after approval) Remaining work: Already reviewed (see webrev link) and tested (no failures).

The attached matrix multiplication micro-benchmark MatMult.java ran with -XX:+UseFMA and -XX:-UseFMA and showed significant speed up of 2500x with FMA instructions.

Final Hotspot webrev used in testing: http://cr.openjdk.java.net/~kvn/8154122/webrev.03/

Updated webrev: hotspot: http://cr.openjdk.java.net/~vdeshpande/FMA/8154122/hotspot/webrev.02/ jdk: http://cr.openjdk.java.net/~vdeshpande/FMA/8154122/jdk/webrev.01/

x86 Intrinsic support for fma operations: hotspot changes: http://cr.openjdk.java.net/~vdeshpande/FMA/8154122/hotspot/webrev.00/ jdk changes: http://cr.openjdk.java.net/~vdeshpande/FMA/8154122/jdk/webrev.00/