struct VPlanTransforms
Declaration
struct VPlanTransforms { /* full declaration omitted */ };
Declared at: llvm/lib/Transforms/Vectorize/VPlanTransforms.h:27
Method Overview
- public static void VPInstructionsToVPRecipes(llvm::Loop * OrigLoop, llvm::VPlanPtr & Plan, function_ref<const llvm::InductionDescriptor *(llvm::PHINode *)> GetIntOrFpInductionDescriptor, SmallPtrSetImpl<llvm::Instruction *> & DeadInstructions, llvm::ScalarEvolution & SE)
- public static bool mergeReplicateRegions(llvm::VPlan & Plan)
- public static void optimizeInductions(llvm::VPlan & Plan, llvm::ScalarEvolution & SE)
- public static void removeDeadRecipes(llvm::VPlan & Plan)
- public static void removeRedundantCanonicalIVs(llvm::VPlan & Plan)
- public static void removeRedundantExpandSCEVRecipes(llvm::VPlan & Plan)
- public static void removeRedundantInductionCasts(llvm::VPlan & Plan)
- public static bool sinkScalarOperands(llvm::VPlan & Plan)
Methods
¶static void VPInstructionsToVPRecipes(
llvm::Loop* OrigLoop,
llvm::VPlanPtr& Plan,
function_ref<const llvm::InductionDescriptor*(
llvm::PHINode*)>
GetIntOrFpInductionDescriptor,
SmallPtrSetImpl<llvm::Instruction*>&
DeadInstructions,
llvm::ScalarEvolution& SE)
static void VPInstructionsToVPRecipes(
llvm::Loop* OrigLoop,
llvm::VPlanPtr& Plan,
function_ref<const llvm::InductionDescriptor*(
llvm::PHINode*)>
GetIntOrFpInductionDescriptor,
SmallPtrSetImpl<llvm::Instruction*>&
DeadInstructions,
llvm::ScalarEvolution& SE)
Description
Replaces the VPInstructions in \p Plan with corresponding widen recipes.
Declared at: llvm/lib/Transforms/Vectorize/VPlanTransforms.h:31
Parameters
- llvm::Loop* OrigLoop
- llvm::VPlanPtr& Plan
- function_ref<const llvm::InductionDescriptor*( llvm::PHINode*)> GetIntOrFpInductionDescriptor
- SmallPtrSetImpl<llvm::Instruction*>& DeadInstructions
- llvm::ScalarEvolution& SE
¶static bool mergeReplicateRegions(
llvm::VPlan& Plan)
static bool mergeReplicateRegions(
llvm::VPlan& Plan)
Declared at: llvm/lib/Transforms/Vectorize/VPlanTransforms.h:39
Parameters
- llvm::VPlan& Plan
¶static void optimizeInductions(
llvm::VPlan& Plan,
llvm::ScalarEvolution& SE)
static void optimizeInductions(
llvm::VPlan& Plan,
llvm::ScalarEvolution& SE)
Description
If any user of a VPWidenIntOrFpInductionRecipe needs scalar values, provide them by building scalar steps off of the canonical scalar IV and update the original IV's users. This is an optional optimization to reduce the needs of vector extracts.
Declared at: llvm/lib/Transforms/Vectorize/VPlanTransforms.h:59
Parameters
- llvm::VPlan& Plan
- llvm::ScalarEvolution& SE
¶static void removeDeadRecipes(llvm::VPlan& Plan)
static void removeDeadRecipes(llvm::VPlan& Plan)
Declared at: llvm/lib/Transforms/Vectorize/VPlanTransforms.h:53
Parameters
- llvm::VPlan& Plan
¶static void removeRedundantCanonicalIVs(
llvm::VPlan& Plan)
static void removeRedundantCanonicalIVs(
llvm::VPlan& Plan)
Description
Try to replace VPWidenCanonicalIVRecipes with a widened canonical IV recipe, if it exists.
Declared at: llvm/lib/Transforms/Vectorize/VPlanTransforms.h:51
Parameters
- llvm::VPlan& Plan
¶static void removeRedundantExpandSCEVRecipes(
llvm::VPlan& Plan)
static void removeRedundantExpandSCEVRecipes(
llvm::VPlan& Plan)
Description
Remove redundant EpxandSCEVRecipes in \p Plan's entry block by replacing them with already existing recipes expanding the same SCEV expression.
Declared at: llvm/lib/Transforms/Vectorize/VPlanTransforms.h:63
Parameters
- llvm::VPlan& Plan
¶static void removeRedundantInductionCasts(
llvm::VPlan& Plan)
static void removeRedundantInductionCasts(
llvm::VPlan& Plan)
Description
Remove redundant casts of inductions. Such redundant casts are casts of induction variables that can be ignored, because we already proved that the casted phi is equal to the uncasted phi in the vectorized loop. There is no need to vectorize the cast - the same value can be used for both the phi and casts in the vector loop.
Declared at: llvm/lib/Transforms/Vectorize/VPlanTransforms.h:47
Parameters
- llvm::VPlan& Plan
¶static bool sinkScalarOperands(llvm::VPlan& Plan)
static bool sinkScalarOperands(llvm::VPlan& Plan)
Declared at: llvm/lib/Transforms/Vectorize/VPlanTransforms.h:37
Parameters
- llvm::VPlan& Plan