Thanks to visit codestin.com
Credit goes to llvm.org

LLVM 22.0.0git
Delinearization.cpp File Reference

Go to the source code of this file.

Macros

#define DL_NAME   "delinearize"
#define DEBUG_TYPE   DL_NAME

Functions

static bool containsUndefs (const SCEV *S)
static bool findArrayDimensionsRec (ScalarEvolution &SE, SmallVectorImpl< const SCEV * > &Terms, SmallVectorImpl< const SCEV * > &Sizes)
static bool containsParameters (SmallVectorImpl< const SCEV * > &Terms)
static int numberOfTerms (const SCEV *S)
static const SCEVremoveConstantFactors (ScalarEvolution &SE, const SCEV *T)
static std::optional< APInttryIntoAPInt (const SCEV *S)
static bool collectConstantAbsSteps (ScalarEvolution &SE, const SCEV *Expr, SmallVectorImpl< uint64_t > &Steps, uint64_t ElementSize)
 Collects the absolute values of constant steps for all induction variables.

Variables

static cl::opt< boolUseFixedSizeArrayHeuristic ("delinearize-use-fixed-size-array-heuristic", cl::init(false), cl::Hidden, cl::desc("When printing analysis, use the heuristic for fixed-size arrays " "if the default delinearizetion fails."))

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   DL_NAME

Definition at line 34 of file Delinearization.cpp.

◆ DL_NAME

#define DL_NAME   "delinearize"

Definition at line 33 of file Delinearization.cpp.

Function Documentation

◆ collectConstantAbsSteps()

bool collectConstantAbsSteps ( ScalarEvolution & SE,
const SCEV * Expr,
SmallVectorImpl< uint64_t > & Steps,
uint64_t ElementSize )
static

Collects the absolute values of constant steps for all induction variables.

Returns true if we can prove that all step recurrences are constants and Expr is divisible by ElementSize. Each step recurrence is stored in Steps after divided by ElementSize.

Definition at line 491 of file Delinearization.cpp.

References collectConstantAbsSteps(), llvm::dyn_cast(), llvm::SCEVAddRecExpr::getStart(), llvm::SCEVAddRecExpr::getStepRecurrence(), llvm::SCEVAddRecExpr::isAffine(), Mod, llvm::SmallVectorTemplateBase< T, bool >::push_back(), tryIntoAPInt(), llvm::APInt::tryZExtValue(), and llvm::APInt::udivrem().

Referenced by collectConstantAbsSteps(), and llvm::findFixedSizeArrayDimensions().

◆ containsParameters()

bool containsParameters ( SmallVectorImpl< const SCEV * > & Terms)
inlinestatic

Definition at line 248 of file Delinearization.cpp.

References llvm::isa(), llvm::SCEVExprContains(), and T.

Referenced by llvm::findArrayDimensions().

◆ containsUndefs()

bool containsUndefs ( const SCEV * S)
inlinestatic

Definition at line 42 of file Delinearization.cpp.

References llvm::dyn_cast(), llvm::isa(), and llvm::SCEVExprContains().

◆ findArrayDimensionsRec()

◆ numberOfTerms()

int numberOfTerms ( const SCEV * S)
inlinestatic

Definition at line 257 of file Delinearization.cpp.

References llvm::dyn_cast().

Referenced by llvm::findArrayDimensions().

◆ removeConstantFactors()

◆ tryIntoAPInt()

std::optional< APInt > tryIntoAPInt ( const SCEV * S)
static

Definition at line 481 of file Delinearization.cpp.

References llvm::dyn_cast().

Referenced by collectConstantAbsSteps(), and llvm::findFixedSizeArrayDimensions().

Variable Documentation

◆ UseFixedSizeArrayHeuristic

cl::opt< bool > UseFixedSizeArrayHeuristic("delinearize-use-fixed-size-array-heuristic", cl::init(false), cl::Hidden, cl::desc("When printing analysis, use the heuristic for fixed-size arrays " "if the default delinearizetion fails.")) ( "delinearize-use-fixed-size-array-heuristic" ,
cl::init(false) ,
cl::Hidden ,
cl::desc("When printing analysis, use the heuristic for fixed-size arrays " "if the default delinearizetion fails.")  )
static