mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-24 22:24:54 +00:00
Optionally enable more-aggressive FMA formation in DAGCombine
The heuristic used by DAGCombine to form FMAs checks that the FMUL has only one use, but this is overly-conservative on some systems. Specifically, if the FMA and the FADD have the same latency (and the FMA does not compete for resources with the FMUL any more than the FADD does), there is no need for the restriction, and furthermore, forming the FMA leaving the FMUL can still allow for higher overall throughput and decreased critical-path length. Here we add a new TLI callback, enableAggressiveFMAFusion, false by default, to elide the hasOneUse check. This is enabled for PowerPC by default, as most PowerPC systems will benefit. Patch by Olivier Sallenave, thanks! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218120 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -268,6 +268,13 @@ public:
|
||||
return HasFloatingPointExceptions;
|
||||
}
|
||||
|
||||
/// Return true if target always beneficiates from combining into FMA for a
|
||||
/// given value type. This must typically return false on targets where FMA
|
||||
/// takes more cycles to execute than FADD.
|
||||
virtual bool enableAggressiveFMAFusion(EVT VT) const {
|
||||
return false;
|
||||
}
|
||||
|
||||
/// Return the ValueType of the result of SETCC operations. Also used to
|
||||
/// obtain the target's preferred type for the condition operand of SELECT and
|
||||
/// BRCOND nodes. In the case of BRCOND the argument passed is MVT::Other
|
||||
|
Reference in New Issue
Block a user