llvm-project/llvm/lib/Transforms/Vectorize
Guozhi Wei d22d1b953d [SLPVectorizer] Don't ignore scalar extraction instructions of aggregate value
In SLPVectorizer, the vector build instructions (insertvalue for aggregate type) is passed to BoUpSLP.buildTree, it is treated as UserIgnoreList, so later in cost estimation, the cost of these instructions are not counted. 
For aggregate value, later usage are more likely to be done in scalar registers, either used as individual scalars or used as a whole for function call or return value. Ignore scalar extraction instructions may cause too aggressive vectorization for aggregate values, and slow down performance. So for vectorization of aggregate value, the scalar extraction instructions are required in cost estimation.

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

llvm-svn: 320736
2017-12-14 19:35:43 +00:00
..
CMakeLists.txt [LV] Fix PR34248 - recommit D32871 after revert r311304 2017-08-27 12:55:46 +00:00
LLVMBuild.txt
LoadStoreVectorizer.cpp Add an @llvm.sideeffect intrinsic 2017-11-08 21:59:51 +00:00
LoopVectorize.cpp [LV] Support efficient vectorization of an induction with redundant casts 2017-12-14 07:56:31 +00:00
SLPVectorizer.cpp [SLPVectorizer] Don't ignore scalar extraction instructions of aggregate value 2017-12-14 19:35:43 +00:00
VPlan.cpp [LV] Model masking in VPlan, introducing VPInstructions 2017-11-20 12:01:47 +00:00
VPlan.h [LV] Model masking in VPlan, introducing VPInstructions 2017-11-20 12:01:47 +00:00
VPlanBuilder.h [LV] Model masking in VPlan, introducing VPInstructions 2017-11-20 12:01:47 +00:00
VPlanValue.h [LV] Model masking in VPlan, introducing VPInstructions 2017-11-20 12:01:47 +00:00
Vectorize.cpp Remove redundant includes from lib/Transforms. 2017-12-13 21:31:01 +00:00