LLVM 24.0.0git
llvm::VPSCEVExpander Class Reference

Lightweight SCEV-to-VPlan expander. More...

#include "Transforms/Vectorize/VPlanUtils.h"

Public Member Functions

 VPSCEVExpander (VPBuilder &Builder, ScalarEvolution &SE, DebugLoc DL, const Loop *HoistOutOf=nullptr)
VPValue * expand (const SCEV *S)
 Expand S into recipes and live-ins using the builder.
VPValue * expand (VPExpandSCEVRecipe &R)
 Expand the expression of R, or return R if it must be expanded in IR.

Detailed Description

Lightweight SCEV-to-VPlan expander.

Converts SCEV expressions into VPInstructions and live-ins. Canonical IVs and non-affine SCEVAddRecExprs are wrapped in a VPExpandSCEVRecipe to be expanded to IR later. Expansions are reused across calls to expand(), so the builder's insert point must only move to positions dominated by all earlier insert points.

Definition at line 276 of file VPlanUtils.h.

Constructor & Destructor Documentation

◆ VPSCEVExpander()

llvm::VPSCEVExpander::VPSCEVExpander ( VPBuilder & Builder,
ScalarEvolution & SE,
DebugLoc DL,
const Loop * HoistOutOf = nullptr )
inline

Definition at line 303 of file VPlanUtils.h.

Member Function Documentation

◆ expand() [1/2]

◆ expand() [2/2]

VPValue * llvm::VPSCEVExpander::expand ( VPExpandSCEVRecipe & R)
inline

Expand the expression of R, or return R if it must be expanded in IR.

Definition at line 312 of file VPlanUtils.h.

References expand().


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