1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 20:12:56 +02:00
llvm-mirror/lib/CodeGen/SelectionDAG
Nikolai Bozhenov 2540ce6c57 [X86] Heuristic to selectively build Newton-Raphson SQRT estimation
On modern Intel processors hardware SQRT in many cases is faster than RSQRT
followed by Newton-Raphson refinement. The patch introduces a simple heuristic
to choose between hardware SQRT instruction and Newton-Raphson software
estimation.

The patch treats scalars and vectors differently. The heuristic is that for
scalars the compiler should optimize for latency while for vectors it should
optimize for throughput. It is based on the assumption that throughput bound
code is likely to be vectorized.

Basically, the patch disables scalar NR for big cores and disables NR completely
for Skylake. Firstly, scalar SQRT has shorter latency than NR code in big cores.
Secondly, vector SQRT has been greatly improved in Skylake and has better
throughput compared to NR.

Differential Revision: https://reviews.llvm.org/D21379

llvm-svn: 277725
2016-08-04 12:47:28 +00:00
..
CMakeLists.txt Rename TargetSelectionDAGInfo into SelectionDAGTargetInfo and move it to CodeGen/ 2016-01-27 16:32:26 +00:00
DAGCombiner.cpp [X86] Heuristic to selectively build Newton-Raphson SQRT estimation 2016-08-04 12:47:28 +00:00
FastISel.cpp MachineFunction: Return reference for getFrameInfo(); NFC 2016-07-28 18:40:00 +00:00
FunctionLoweringInfo.cpp MachineFunction: Return reference for getFrameInfo(); NFC 2016-07-28 18:40:00 +00:00
InstrEmitter.cpp CodeGen: Use MachineInstr& in TargetLowering, NFC 2016-06-30 22:52:52 +00:00
InstrEmitter.h Pass DebugLoc and SDLoc by const ref. 2016-06-12 15:39:02 +00:00
LegalizeDAG.cpp Disable shrinking of SNaN constants 2016-08-03 15:09:21 +00:00
LegalizeFloatTypes.cpp [X86] Accept SELECT op code for x86-64 fp128 type 2016-07-18 17:20:09 +00:00
LegalizeIntegerTypes.cpp DAG: avoid duplicated truncating for sign extended operand 2016-07-29 23:33:48 +00:00
LegalizeTypes.cpp [SelectionDAG] Get rid of bool parameters in SelectionDAG::getLoad, getStore, and friends. 2016-07-15 18:27:10 +00:00
LegalizeTypes.h fix documentation comments; NFC 2016-07-09 18:52:07 +00:00
LegalizeTypesGeneric.cpp [SelectionDAG] Get rid of bool parameters in SelectionDAG::getLoad, getStore, and friends. 2016-07-15 18:27:10 +00:00
LegalizeVectorOps.cpp [SelectionDAG] Get rid of bool parameters in SelectionDAG::getLoad, getStore, and friends. 2016-07-15 18:27:10 +00:00
LegalizeVectorTypes.cpp [SelectionDAG] Get rid of bool parameters in SelectionDAG::getLoad, getStore, and friends. 2016-07-15 18:27:10 +00:00
LLVMBuild.txt
ResourcePriorityQueue.cpp Replace silly uses of 'signed' with 'int' 2016-06-21 05:10:24 +00:00
ScheduleDAGFast.cpp Replace uint16_t with the MCPhysReg typedef in many places. A lot of physical register arrays already use this typedef. 2015-12-05 07:13:35 +00:00
ScheduleDAGRRList.cpp rangify; NFCI 2016-02-03 22:44:14 +00:00
ScheduleDAGSDNodes.cpp SelectionDAG: Avoid implicit iterator conversions in ScheduleDAGSDNodes, NFC 2016-07-08 19:07:09 +00:00
ScheduleDAGSDNodes.h [SelectionDAG] Remove dead code. NFC. 2015-10-15 17:54:06 +00:00
ScheduleDAGVLIW.cpp
SDNodeDbgValue.h Apply clang-tidy's misc-move-constructor-init throughout LLVM. 2016-05-27 14:27:24 +00:00
SelectionDAG.cpp Cleanup TransferDbgValues 2016-07-29 11:49:32 +00:00
SelectionDAGBuilder.cpp Recommitting r275284: add support to inline __builtin_mempcpy 2016-07-29 18:23:18 +00:00
SelectionDAGBuilder.h Recommitting r275284: add support to inline __builtin_mempcpy 2016-07-29 18:23:18 +00:00
SelectionDAGDumper.cpp Indent consistently. 2016-06-19 12:37:52 +00:00
SelectionDAGISel.cpp MachineFunction: Return reference for getFrameInfo(); NFC 2016-07-28 18:40:00 +00:00
SelectionDAGPrinter.cpp Make the SelectionDAG graph printer use SDNode::PersistentId labels. 2015-10-27 23:09:03 +00:00
SelectionDAGTargetInfo.cpp Rename TargetSelectionDAGInfo into SelectionDAGTargetInfo and move it to CodeGen/ 2016-01-27 16:32:26 +00:00
StatepointLowering.cpp MachineFunction: Return reference for getFrameInfo(); NFC 2016-07-28 18:40:00 +00:00
StatepointLowering.h [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
TargetLowering.cpp [DAGCombine] Make sext(setcc) combine respect getBooleanContents 2016-08-01 19:39:49 +00:00