struct VPlanTransforms

Declaration

struct VPlanTransforms { /* full declaration omitted */ };

Declared at: llvm/lib/Transforms/Vectorize/VPlanTransforms.h:27

Method Overview

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)

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)

Declared at: llvm/lib/Transforms/Vectorize/VPlanTransforms.h:39

Parameters

llvm::VPlan& Plan

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)

Declared at: llvm/lib/Transforms/Vectorize/VPlanTransforms.h:53

Parameters

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)

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)

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)

Declared at: llvm/lib/Transforms/Vectorize/VPlanTransforms.h:37

Parameters

llvm::VPlan& Plan