mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-21 12:02:58 +02:00
c9bf1bce58
This is mostly a preparation work for adding a limited support for select instructions. It proved to be difficult to do due to size and irregularity of Vectorizer::isConsecutiveAccess, this is fixed here I believe. It also turned out that these changes make it simpler to finish one of the TODOs and fix a number of other small issues, namely: 1. Looking through bitcasts to a type of a different size (requires careful tracking of the original load/store size and some math converting sizes in bytes to expected differences in indices of GEPs). 2. Reusing partial analysis of pointers done by first attempt in proving them consecutive instead of starting from scratch. This added limited support for nested GEPs co-existing with difficult sext/zext instructions. This also required a careful handling of negative differences between constant parts of offsets. 3. Handing a case where the first pointer index is not an add, but something else (a function parameter for instance). I observe an increased number of successful vectorizations on a large set of shader programs. Only few shaders are affected, but those that are affected sport >5% less loads and stores than before the patch. Reviewed By: rampitec Differential-Revision: https://reviews.llvm.org/D49342 llvm-svn: 337489 |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
LLVMBuild.txt | ||
LoadStoreVectorizer.cpp | ||
LoopVectorizationLegality.cpp | ||
LoopVectorizationPlanner.h | ||
LoopVectorize.cpp | ||
SLPVectorizer.cpp | ||
Vectorize.cpp | ||
VPlan.cpp | ||
VPlan.h | ||
VPlanHCFGBuilder.cpp | ||
VPlanHCFGBuilder.h | ||
VPlanHCFGTransforms.cpp | ||
VPlanHCFGTransforms.h | ||
VPlanValue.h | ||
VPlanVerifier.cpp | ||
VPlanVerifier.h | ||
VPRecipeBuilder.h |