llvm-project/llvm/lib/Transforms/Vectorize
Sanjay Patel bef6e67e95 [VectorCombine] transform bitcasted shuffle to wider elements
bitcast (shuf V, MaskC) --> shuf (bitcast V), MaskC'

This is the widen shuffle elements enhancement to D76727.
It builds on the analysis and simplifications in
D77881 and rG6a7e958a423e.

The phase ordering tests show that we can simplify inverse
shuffles across a binop in both directions (widen/narrow or
narrow/widen) now.

There's another potential transform visible in some of the
remaining TODOs - move a bitcasted operand of a shuffle
after the shuffle.

Differential Revision: https://reviews.llvm.org/D78371
2020-04-19 08:24:38 -04:00
..
CMakeLists.txt [cmake] LLVMVectorize - add include/llvm/Transforms/Vectorize header path 2020-04-17 11:06:26 +01:00
LLVMBuild.txt Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
LoadStoreVectorizer.cpp [Alignment][NFC] Remove unused private functions 2020-04-03 09:16:20 +00:00
LoopVectorizationLegality.cpp [LV] Mark first-order recurrences as allowed exits 2020-04-18 23:54:21 +03:00
LoopVectorizationPlanner.h [VPlan] Introduce VPWidenSelectRecipe (NFC). 2020-04-13 08:35:28 +01:00
LoopVectorize.cpp [LV] Invalidate cost model decisions along with interleave groups. 2020-04-18 10:23:49 +01:00
SLPVectorizer.cpp Remove remaining callers of CreateShuffleVector with unsigned indices and mark it as deprecated 2020-04-19 11:48:28 +02:00
VPRecipeBuilder.h [VPlan] Move widening check for non-memory/non-calls to function (NFC). 2020-04-15 11:48:37 +01:00
VPlan.cpp [VPlan] Introduce VPWidenSelectRecipe (NFC). 2020-04-13 08:35:28 +01:00
VPlan.h [LV] Fix PR45525: Incorrect assert in blend recipe 2020-04-15 10:39:07 +03:00
VPlanDominatorTree.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
VPlanHCFGBuilder.cpp Hide two unused debugging methods, NFCI. 2019-03-01 17:15:21 +00:00
VPlanHCFGBuilder.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
VPlanLoopInfo.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
VPlanPredicator.cpp Update files that were mistakenly added with the old file header to the 2019-02-11 08:07:38 +00:00
VPlanPredicator.h Update files that were mistakenly added with the old file header to the 2019-02-11 08:07:38 +00:00
VPlanSLP.cpp [VPlanSLP] Don't dereference a cast_or_null<VPInstruction> result. NFCI. 2019-09-16 11:22:44 +00:00
VPlanTransforms.cpp [VPlan] Use one VPWidenRecipe per original IR instruction. (NFC). 2020-03-29 13:47:28 +01:00
VPlanTransforms.h [VPlan] Turn classes with all public members into structs (NFC). 2020-04-12 11:03:39 +01:00
VPlanValue.h [VPlan] Turn classes with all public members into structs (NFC). 2020-04-12 11:03:39 +01:00
VPlanVerifier.cpp Add missing includes needed to prune LLVMContext.h include, NFC 2019-11-14 15:23:15 -08:00
VPlanVerifier.h [VPlan] Turn classes with all public members into structs (NFC). 2020-04-12 11:03:39 +01:00
VectorCombine.cpp [VectorCombine] transform bitcasted shuffle to wider elements 2020-04-19 08:24:38 -04:00
Vectorize.cpp [VectorCombine] new IR transform pass for partial vector ops 2020-02-09 10:04:41 -05:00