LLVM  15.0.0git
Static Public Member Functions | List of all members
llvm::VPlanTransforms Struct Reference

#include "Transforms/Vectorize/VPlanTransforms.h"

Static Public Member Functions

static void VPInstructionsToVPRecipes (Loop *OrigLoop, VPlanPtr &Plan, function_ref< const InductionDescriptor *(PHINode *)> GetIntOrFpInductionDescriptor, SmallPtrSetImpl< Instruction * > &DeadInstructions, ScalarEvolution &SE)
 Replaces the VPInstructions in Plan with corresponding widen recipes. More...
static bool sinkScalarOperands (VPlan &Plan)
static bool mergeReplicateRegions (VPlan &Plan)
static void removeRedundantInductionCasts (VPlan &Plan)
 Remove redundant casts of inductions. More...
static void removeRedundantCanonicalIVs (VPlan &Plan)
 Try to replace VPWidenCanonicalIVRecipes with a widened canonical IV recipe, if it exists. More...
static void removeDeadRecipes (VPlan &Plan)
static void optimizeInductions (VPlan &Plan, ScalarEvolution &SE)
 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. More...
static void removeRedundantExpandSCEVRecipes (VPlan &Plan)
 Remove redundant EpxandSCEVRecipes in Plan's entry block by replacing them with already existing recipes expanding the same SCEV expression. More...

Detailed Description

Definition at line 27 of file VPlanTransforms.h.

Member Function Documentation

◆ mergeReplicateRegions()

bool VPlanTransforms::mergeReplicateRegions ( VPlan Plan)

◆ optimizeInductions()

void VPlanTransforms::optimizeInductions ( VPlan Plan,
ScalarEvolution SE 

◆ removeDeadRecipes()

void VPlanTransforms::removeDeadRecipes ( VPlan Plan)

◆ removeRedundantCanonicalIVs()

void VPlanTransforms::removeRedundantCanonicalIVs ( VPlan Plan)

◆ removeRedundantExpandSCEVRecipes()

void VPlanTransforms::removeRedundantExpandSCEVRecipes ( VPlan Plan)

◆ removeRedundantInductionCasts()

void VPlanTransforms::removeRedundantInductionCasts ( VPlan Plan)

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.

Definition at line 299 of file VPlanTransforms.cpp.

References llvm::VPBlockBase::getEntryBasicBlock(), llvm::VPlan::getVectorLoopRegion(), llvm::VPDef::getVPSingleValue(), IV, llvm::VPBasicBlock::phis(), llvm::VPValue::replaceAllUsesWith(), llvm::reverse(), and llvm::VPValue::users().

◆ sinkScalarOperands()

bool VPlanTransforms::sinkScalarOperands ( VPlan Plan)

◆ VPInstructionsToVPRecipes()

void VPlanTransforms::VPInstructionsToVPRecipes ( Loop OrigLoop,
VPlanPtr Plan,
function_ref< const InductionDescriptor *(PHINode *)>  GetIntOrFpInductionDescriptor,
SmallPtrSetImpl< Instruction * > &  DeadInstructions,
ScalarEvolution SE 

The documentation for this struct was generated from the following files: