1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-26 06:22:56 +02:00
llvm-mirror/lib/CodeGen/SelectionDAG
Sanjay Patel 160a5b1a73 [DAG] Remove redundant FMUL in Newton-Raphson SQRT code
When calculating a square root using Newton-Raphson with two constants,
a naive implementation is to use five multiplications (four muls to calculate
reciprocal square root and another one to calculate the square root itself).
However, after some reassociation and CSE the same result can be obtained
with only four multiplications. Unfortunately, there's no reliable way to do
such a reassociation in the back-end. So, the patch modifies NR code itself
so that it directly builds optimal code for SQRT and doesn't rely on any
further reassociation.

Patch by Nikolai Bozhenov!

Differential Revision: http://reviews.llvm.org/D21127

llvm-svn: 272920
2016-06-16 16:58:54 +00:00
..
CMakeLists.txt
DAGCombiner.cpp [DAG] Remove redundant FMUL in Newton-Raphson SQRT code 2016-06-16 16:58:54 +00:00
FastISel.cpp Pass DebugLoc and SDLoc by const ref. 2016-06-12 15:39:02 +00:00
FunctionLoweringInfo.cpp Swift Calling Convention: swifterror target-independent change. 2016-04-05 18:13:16 +00:00
InstrEmitter.cpp Pass DebugLoc and SDLoc by const ref. 2016-06-12 15:39:02 +00:00
InstrEmitter.h Pass DebugLoc and SDLoc by const ref. 2016-06-12 15:39:02 +00:00
LegalizeDAG.cpp Revert "Preserve DebugInfo when replacing values in DAGCombiner" 2016-06-15 16:08:50 +00:00
LegalizeFloatTypes.cpp This patch fixes handling long double type when it is 2016-06-13 10:29:29 +00:00
LegalizeIntegerTypes.cpp Pass DebugLoc and SDLoc by const ref. 2016-06-12 15:39:02 +00:00
LegalizeTypes.cpp Unify XDEBUG and EXPENSIVE_CHECKS (into the latter), and add an option to the cmake build to enable them. 2016-04-29 15:22:48 +00:00
LegalizeTypes.h Pass DebugLoc and SDLoc by const ref. 2016-06-12 15:39:02 +00:00
LegalizeTypesGeneric.cpp
LegalizeVectorOps.cpp [SelectionDAG] Attempt to split BITREVERSE vector legalization into BSWAP and BITREVERSE stages 2016-05-12 13:09:49 +00:00
LegalizeVectorTypes.cpp [X86] Reduce the width of multiplification when its operands are extended from i8 or i16 2016-06-14 18:53:20 +00:00
LLVMBuild.txt
ResourcePriorityQueue.cpp
ScheduleDAGFast.cpp
ScheduleDAGRRList.cpp
ScheduleDAGSDNodes.cpp
ScheduleDAGSDNodes.h
ScheduleDAGVLIW.cpp
SDNodeDbgValue.h Apply clang-tidy's misc-move-constructor-init throughout LLVM. 2016-05-27 14:27:24 +00:00
SelectionDAG.cpp Revert "Preserve DebugInfo when replacing values in DAGCombiner" 2016-06-15 16:08:50 +00:00
SelectionDAGBuilder.cpp [SelectionDAG] Remove exit-on-error flag from test (PR27765) 2016-06-14 07:30:20 +00:00
SelectionDAGBuilder.h Pass DebugLoc and SDLoc by const ref. 2016-06-12 15:39:02 +00:00
SelectionDAGDumper.cpp AMDGPU: Implement canonicalize 2016-04-14 01:42:16 +00:00
SelectionDAGISel.cpp Pass DebugLoc and SDLoc by const ref. 2016-06-12 15:39:02 +00:00
SelectionDAGPrinter.cpp
SelectionDAGTargetInfo.cpp
StatepointLowering.cpp Introduce an GCRelocateInst class [NFC] 2016-04-12 18:05:10 +00:00
StatepointLowering.h [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
TargetLowering.cpp Pass DebugLoc and SDLoc by const ref. 2016-06-12 15:39:02 +00:00