llvm-6502/lib/CodeGen/SelectionDAG
Lang Hames d693cafcfb Add DAG-combines for aggressive FMA formation.
This patch adds DAG combines to form FMAs from pairs of FADD + FMUL or
FSUB + FMUL. The combines are performed when:
(a) Either
      AllowExcessFPPrecision option (-enable-excess-fp-precision for llc)
        OR
      UnsafeFPMath option (-enable-unsafe-fp-math)
    are set, and
(b) TargetLoweringInfo::isFMAFasterThanMulAndAdd(VT) is true for the type of
    the FADD/FSUB, and
(c) The FMUL only has one user (the FADD/FSUB).

If your target has fast FMA instructions you can make use of these combines by
overriding TargetLoweringInfo::isFMAFasterThanMulAndAdd(VT) to return true for
types supported by your FMA instruction, and adding patterns to match ISD::FMA
to your FMA instructions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158757 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-19 22:51:23 +00:00
..
CMakeLists.txt
DAGCombiner.cpp Add DAG-combines for aggressive FMA formation. 2012-06-19 22:51:23 +00:00
FastISel.cpp ARM: properly handle alignment for struct byval. 2012-06-01 19:33:18 +00:00
FunctionLoweringInfo.cpp
InstrEmitter.cpp
InstrEmitter.h
LegalizeDAG.cpp Fix a bug in the code which custom-lowers truncating stores in LegalizeDAG. 2012-06-02 01:10:34 +00:00
LegalizeFloatTypes.cpp
LegalizeIntegerTypes.cpp Change interface for TargetLowering::LowerCallTo and TargetLowering::LowerCall 2012-05-25 16:35:28 +00:00
LegalizeTypes.cpp Change interface for TargetLowering::LowerCallTo and TargetLowering::LowerCall 2012-05-25 16:35:28 +00:00
LegalizeTypes.h Fix a thinko in DisintegrateMERGE_VALUES. Patch by Xiaoyi Guo. 2012-05-16 07:57:18 +00:00
LegalizeTypesGeneric.cpp
LegalizeVectorOps.cpp
LegalizeVectorTypes.cpp
LLVMBuild.txt
Makefile
ResourcePriorityQueue.cpp misched: Added MultiIssueItineraries. 2012-06-05 03:44:40 +00:00
ScheduleDAGFast.cpp Simplify some more getAliasSet callers. 2012-06-01 22:38:17 +00:00
ScheduleDAGRRList.cpp sdsched: Use the right heuristics when -mcpu is not provided and we have no itinerary. 2012-06-05 03:44:34 +00:00
ScheduleDAGSDNodes.cpp
ScheduleDAGSDNodes.h misched: API for minimum vs. expected latency. 2012-06-05 21:11:27 +00:00
ScheduleDAGVLIW.cpp
SDNodeDbgValue.h
SDNodeOrdering.h
SelectionDAG.cpp Change interface for TargetLowering::LowerCallTo and TargetLowering::LowerCall 2012-05-25 16:35:28 +00:00
SelectionDAGBuilder.cpp Add a new intrinsic: llvm.fmuladd. This intrinsic represents a multiply-add 2012-06-05 19:07:46 +00:00
SelectionDAGBuilder.h Fix typos found by http://github.com/lyda/misspell-check 2012-06-02 10:20:22 +00:00
SelectionDAGDumper.cpp Rename @llvm.debugger to @llvm.debugtrap. 2012-05-14 18:58:10 +00:00
SelectionDAGISel.cpp
SelectionDAGPrinter.cpp
TargetLowering.cpp Remove the "-promote-elements" flag. This flag is now enabled by default. 2012-06-04 11:27:21 +00:00
TargetSelectionDAGInfo.cpp