llvm-project/llvm/lib/CodeGen/SelectionDAG
Craig Topper 96ec7a23e3 [SelectionDAGBuilder] Simplify creation of shufflevector DAG nodes where inputs are larger than the mask
Summary:
The current code loops over all elements to calculate a used range. Then a second short loop looks at the ranges and determines if they can be used in a extract and creates a properly aligned start index for the extract.

This range finding is unnecessary, we can just calculate a properly aligned start index for an extract for each input during the first loop. If we don't find the same start index for each indice we can't use an extract.

Reviewers: zvi, RKSimon

Reviewed By: zvi

Subscribers: llvm-commits

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

llvm-svn: 295152
2017-02-15 05:57:16 +00:00
..
CMakeLists.txt [CMake] NFC. Updating CMake dependency specifications 2016-11-17 04:36:50 +00:00
DAGCombiner.cpp [DAGCombiner] Teach DAG combine that inserting an extract_subvector result into the same location of a an undef vector can just use the original input to the extract. 2017-02-13 04:53:33 +00:00
FastISel.cpp [Analysis] Add LibFunc_ prefix to enums in TargetLibraryInfo. (NFC) 2017-01-23 23:16:46 +00:00
FunctionLoweringInfo.cpp Simplify FunctionLoweringInfo.cpp with range for loops 2016-12-30 00:21:38 +00:00
InstrEmitter.cpp Removing a redundant assignment 2017-02-14 14:44:01 +00:00
InstrEmitter.h Pass DebugLoc and SDLoc by const ref. 2016-06-12 15:39:02 +00:00
LLVMBuild.txt
LegalizeDAG.cpp Use SelectionDAG::getBuildVector helper function where possible. NFCI. 2017-01-30 18:53:45 +00:00
LegalizeFloatTypes.cpp [legalizetypes] Push fp16 -> fp32 extension node to worklist. 2017-02-01 13:01:33 +00:00
LegalizeIntegerTypes.cpp Remove unused CONVERT_RNDSAT intrinsics 2017-01-10 22:38:02 +00:00
LegalizeTypes.cpp [legalizetypes] Push fp16 -> fp32 extension node to worklist. 2017-02-01 13:01:33 +00:00
LegalizeTypes.h [legalizetypes] Push fp16 -> fp32 extension node to worklist. 2017-02-01 13:01:33 +00:00
LegalizeTypesGeneric.cpp Do not assume that FP vector operands are never legalized by expanding 2016-10-26 19:51:35 +00:00
LegalizeVectorOps.cpp Use SelectionDAG::getBuildVector/getSplatBuildVector helper functions where possible. NFCI. 2017-01-30 18:20:42 +00:00
LegalizeVectorTypes.cpp Use SelectionDAG::getBuildVector helper function where possible. NFCI. 2017-01-30 18:53:45 +00:00
ResourcePriorityQueue.cpp Add iterator_range<regclass_iterator> to {Target,MC}RegisterInfo, NFC 2017-01-25 19:29:04 +00:00
SDNodeDbgValue.h Apply clang-tidy's misc-move-constructor-init throughout LLVM. 2016-05-27 14:27:24 +00:00
ScheduleDAGFast.cpp
ScheduleDAGRRList.cpp Cleanup dump() functions. 2017-01-28 02:02:38 +00:00
ScheduleDAGSDNodes.cpp Cleanup dump() functions. 2017-01-28 02:02:38 +00:00
ScheduleDAGSDNodes.h [Target] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-11 01:45:03 +00:00
ScheduleDAGVLIW.cpp
SelectionDAG.cpp [DAGCombine] Allow vector constant folding of any value type before type legalization 2017-02-10 14:37:25 +00:00
SelectionDAGBuilder.cpp [SelectionDAGBuilder] Simplify creation of shufflevector DAG nodes where inputs are larger than the mask 2017-02-15 05:57:16 +00:00
SelectionDAGBuilder.h Add intrinsics for constrained floating point operations 2017-01-26 23:27:59 +00:00
SelectionDAGDumper.cpp Cleanup dump() functions. 2017-01-28 02:02:38 +00:00
SelectionDAGISel.cpp [Tablegen] Instrumenting table gen DAGGenISelDAG 2017-02-14 18:32:41 +00:00
SelectionDAGPrinter.cpp
SelectionDAGTargetInfo.cpp Rename TargetSelectionDAGInfo into SelectionDAGTargetInfo and move it to CodeGen/ 2016-01-27 16:32:26 +00:00
StatepointLowering.cpp [Statepoints] Reuse stack slots more than once within a basic block 2016-12-13 01:21:15 +00:00
StatepointLowering.h [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
TargetLowering.cpp [TargetLowering] fix SETCC SETLT folding with FP types 2017-02-12 23:07:52 +00:00