x86 FMA intrinsic support design

Yudi Zheng yudi.zheng at oracle.com
Fri Mar 29 10:04:02 UTC 2019


Hi Jp,

Thanks in advance for the contribution!

> 1.       Add VexRVMOp class support in AMD64Assembler with the corresponding FMA instructions
>
> a.       It requires to add the VexOpAssertion.FMA and CPUFeature.FMA flags

We already have the CPUFeature.FMA flag. For adding the 
VexOpAssertion.FMA, you might refer to this commit [1] that adds BMI 
VexOpAssertion (with quite some refactoring which you can ignore).

> 2.       Add UseFMA flag from HotSpot flags in GraalHotSpotVMConfig.java
>
> 3.       Add a registerFMA method in AMD64GraphBuilderPlugins::registerMathPlugins
>
> a.       This requires to add a specific FMAIntrinsicNode, which will emit the corresponding FMA instructions.

Sounds good to me. Maybe the name of the node could be unabbreviated as 
FusedMultiplyAddNode? Before implementing it, you might take a look into 
the Math exact plugins, the corresponding nodes (e.g., 
IntegerAddExactNode), and how we handleArithmeticException caused by 
such invocations.

-Yudi

[1]: 
https://github.com/oracle/graal/commit/97af3a3e43e4818b7a6bb9d1f905f7ada3ea4319



More information about the graal-dev mailing list