llvm/lib/CodeGen/SelectionDAG
Stephen Lin e54885af9b AArch64/PowerPC/SystemZ/X86: This patch fixes the interface, usage, and all
in-tree implementations of TargetLoweringBase::isFMAFasterThanMulAndAdd in
order to resolve the following issues with fmuladd (i.e. optional FMA)
intrinsics:

1. On X86(-64) targets, ISD::FMA nodes are formed when lowering fmuladd
intrinsics even if the subtarget does not support FMA instructions, leading
to laughably bad code generation in some situations.

2. On AArch64 targets, ISD::FMA nodes are formed for operations on fp128,
resulting in a call to a software fp128 FMA implementation.

3. On PowerPC targets, FMAs are not generated from fmuladd intrinsics on types
like v2f32, v8f32, v4f64, etc., even though they promote, split, scalarize,
etc. to types that support hardware FMAs.

The function has also been slightly renamed for consistency and to force a
merge/build conflict for any out-of-tree target implementing it. To resolve,
see comments and fixed in-tree examples.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185956 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-09 18:16:56 +00:00
..
CMakeLists.txt llvm/lib: [CMake] Add explicit dependency to intrinsics_gen. 2012-06-24 13:32:01 +00:00
DAGCombiner.cpp AArch64/PowerPC/SystemZ/X86: This patch fixes the interface, usage, and all 2013-07-09 18:16:56 +00:00
FastISel.cpp Remove trailing whitespace from SelectionDAG/*.cpp 2013-07-08 00:37:03 +00:00
FunctionLoweringInfo.cpp Debug Info: clean up usage of Verify. 2013-06-28 05:43:10 +00:00
InstrEmitter.cpp Debug Info: Simplify Frame Index handling in DBG_VALUE Machine Instructions 2013-06-16 20:34:15 +00:00
InstrEmitter.h Use MachineInstrBuilder in InstrEmitter. 2012-12-20 18:08:09 +00:00
LegalizeDAG.cpp Remove trailing whitespace from SelectionDAG/*.cpp 2013-07-08 00:37:03 +00:00
LegalizeFloatTypes.cpp Remove trailing whitespace from SelectionDAG/*.cpp 2013-07-08 00:37:03 +00:00
LegalizeIntegerTypes.cpp Improve the comment from r185794 (re: PromoteIntRes_BUILD_VECTOR) 2013-07-08 14:40:04 +00:00
LegalizeTypes.cpp Remove double semicolons. 2013-05-28 16:31:26 +00:00
LegalizeTypes.h Track IR ordering of SelectionDAG nodes 2/4. 2013-05-25 02:42:55 +00:00
LegalizeTypesGeneric.cpp Remove trailing whitespace from SelectionDAG/*.cpp 2013-07-08 00:37:03 +00:00
LegalizeVectorOps.cpp Remove trailing whitespace from SelectionDAG/*.cpp 2013-07-08 00:37:03 +00:00
LegalizeVectorTypes.cpp Introduce getSelect usage and use more getSelectCC 2013-06-14 22:04:37 +00:00
LLVMBuild.txt LLVMBuild: Remove trailing newline, which irked me. 2011-12-12 19:48:00 +00:00
Makefile make -fno-rtti the default unless a directory builds with REQUIRES_RTTI. 2010-01-24 20:43:08 +00:00
ResourcePriorityQueue.cpp Cache the TargetLowering info object as a pointer. 2013-06-06 00:43:09 +00:00
ScheduleDAGFast.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
ScheduleDAGRRList.cpp Cache the TargetLowering info object as a pointer. 2013-06-06 00:43:09 +00:00
ScheduleDAGSDNodes.cpp Fix PR16143: Insert DEBUG_VALUE before terminator. 2013-05-26 08:58:50 +00:00
ScheduleDAGSDNodes.h Fix #includes, so we include only what we really need. 2013-02-20 00:26:25 +00:00
ScheduleDAGVLIW.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
SDNodeDbgValue.h Sort includes for all of the .h files under the 'lib' tree. These were 2012-12-04 07:12:27 +00:00
SelectionDAG.cpp Remove trailing whitespace from SelectionDAG/*.cpp 2013-07-08 00:37:03 +00:00
SelectionDAGBuilder.cpp AArch64/PowerPC/SystemZ/X86: This patch fixes the interface, usage, and all 2013-07-09 18:16:56 +00:00
SelectionDAGBuilder.h Added c++ mode selector to head of SelectionDAGBuilder.h so editors open it in c++ mode instead of c mode. 2013-07-01 16:53:41 +00:00
SelectionDAGDumper.cpp Remove the EXCEPTIONADDR, EHSELECTION, and LSDAADDR ISD opcodes. 2013-07-04 13:54:20 +00:00
SelectionDAGISel.cpp Simplify landing pad lowering. 2013-07-04 04:53:45 +00:00
SelectionDAGPrinter.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
TargetLowering.cpp Remove trailing whitespace from SelectionDAG/*.cpp 2013-07-08 00:37:03 +00:00
TargetSelectionDAGInfo.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00