llvm-6502/lib/CodeGen/SelectionDAG
Simon Pilgrim 87d1836793 [X86][SSE] Improve support for 128-bit vector sign extension
This patch improves support for sign extension of the lower lanes of vectors of integers by making use of the SSE41 pmovsx* sign extension instructions where possible, and optimizing the sign extension by shifts on pre-SSE41 targets (avoiding the use of i64 arithmetic shifts which require scalarization).

It converts SIGN_EXTEND nodes to SIGN_EXTEND_VECTOR_INREG where necessary, that more closely matches the pmovsx* instruction than the default approach of using SIGN_EXTEND_INREG which splits the operation (into an ANY_EXTEND lowered to a shuffle followed by shifts) making instruction matching difficult during lowering. Necessary support for SIGN_EXTEND_VECTOR_INREG has been added to the DAGCombiner.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237885 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-21 10:05:03 +00:00
..
CMakeLists.txt
DAGCombiner.cpp [X86][SSE] Improve support for 128-bit vector sign extension 2015-05-21 10:05:03 +00:00
FastISel.cpp [Fast-ISel] Don't mark the first use of a remat constant as killed. 2015-05-09 00:51:03 +00:00
FunctionLoweringInfo.cpp Fix build warning 2015-05-20 23:28:03 +00:00
InstrEmitter.cpp IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
InstrEmitter.h
LegalizeDAG.cpp Add SDNodes for umin, umax, smin and smax. 2015-05-15 09:03:15 +00:00
LegalizeFloatTypes.cpp Reapply r235977 "[DebugInfo] Add debug locations to constant SD nodes" 2015-04-28 14:05:47 +00:00
LegalizeIntegerTypes.cpp Add SDNodes for umin, umax, smin and smax. 2015-05-15 09:03:15 +00:00
LegalizeTypes.cpp Reapply r235977 "[DebugInfo] Add debug locations to constant SD nodes" 2015-04-28 14:05:47 +00:00
LegalizeTypes.h Masked gather and scatter intrinsics - enabled codegen for KNL. 2015-05-03 07:12:25 +00:00
LegalizeTypesGeneric.cpp Reapply r235977 "[DebugInfo] Add debug locations to constant SD nodes" 2015-04-28 14:05:47 +00:00
LegalizeVectorOps.cpp Add SDNodes for umin, umax, smin and smax. 2015-05-15 09:03:15 +00:00
LegalizeVectorTypes.cpp Add SDNodes for umin, umax, smin and smax. 2015-05-15 09:03:15 +00:00
LLVMBuild.txt
Makefile
ResourcePriorityQueue.cpp unique_ptrify ResourcePriorityQueue::ResourceModel 2015-03-03 20:49:08 +00:00
ScheduleDAGFast.cpp
ScheduleDAGRRList.cpp Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
ScheduleDAGSDNodes.cpp Prefer SmallVector::append/insert over push_back loops. 2015-02-17 15:29:18 +00:00
ScheduleDAGSDNodes.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
ScheduleDAGVLIW.cpp Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
SDNodeDbgValue.h
SelectionDAG.cpp [X86][SSE] Improve support for 128-bit vector sign extension 2015-05-21 10:05:03 +00:00
SelectionDAGBuilder.cpp Change Function::getIntrinsicID() to return an Intrinsic::ID. NFC. 2015-05-20 17:16:39 +00:00
SelectionDAGBuilder.h [SelectionDAG] Delete SelectionDAGBuilder::removeValue. NFC. 2015-05-06 18:02:10 +00:00
SelectionDAGDumper.cpp Add SDNodes for umin, umax, smin and smax. 2015-05-15 09:03:15 +00:00
SelectionDAGISel.cpp Preserve the order of READ_REGISTER and WRITE_REGISTER 2015-05-18 16:42:10 +00:00
SelectionDAGPrinter.cpp
StatepointLowering.cpp [StatepointLowering] Support of the gc.relocates for invoke statepoints. 2015-05-20 11:37:25 +00:00
StatepointLowering.h [StatepointLowering] Support of the gc.relocates for invoke statepoints. 2015-05-20 11:37:25 +00:00
TargetLowering.cpp DAGCombiner: Continue combining if FoldConstantArithmetic() fails. 2015-05-20 18:54:02 +00:00
TargetSelectionDAGInfo.cpp