LLVM: llvm::SCEVDivision Struct Reference (original) (raw)

#include "[llvm/Analysis/ScalarEvolutionDivision.h](ScalarEvolutionDivision%5F8h%5Fsource.html)"

Public Member Functions
void visitPtrToIntExpr (const SCEVPtrToIntExpr *Numerator)
void visitTruncateExpr (const SCEVTruncateExpr *Numerator)
void visitZeroExtendExpr (const SCEVZeroExtendExpr *Numerator)
void visitSignExtendExpr (const SCEVSignExtendExpr *Numerator)
void visitUDivExpr (const SCEVUDivExpr *Numerator)
void visitSMaxExpr (const SCEVSMaxExpr *Numerator)
void visitUMaxExpr (const SCEVUMaxExpr *Numerator)
void visitSMinExpr (const SCEVSMinExpr *Numerator)
void visitUMinExpr (const SCEVUMinExpr *Numerator)
void visitSequentialUMinExpr (const SCEVSequentialUMinExpr *Numerator)
void visitUnknown (const SCEVUnknown *Numerator)
void visitCouldNotCompute (const SCEVCouldNotCompute *Numerator)
void visitConstant (const SCEVConstant *Numerator)
void visitVScale (const SCEVVScale *Numerator)
void visitAddRecExpr (const SCEVAddRecExpr *Numerator)
void visitAddExpr (const SCEVAddExpr *Numerator)
void visitMulExpr (const SCEVMulExpr *Numerator)
Public Member Functions inherited from llvm::SCEVVisitor< SCEVDivision, void >
void visit (const SCEV *S)
void visitCouldNotCompute (const SCEVCouldNotCompute *S)

Definition at line 26 of file ScalarEvolutionDivision.h.

divide()

Computes the Quotient and Remainder of the division of Numerator by Denominator.

We are not actually performing the division here. Instead, we are trying to find SCEV expressions Quotient and Remainder that satisfy:

Numerator = Denominator * Quotient + Remainder

There may be multiple valid answers for Quotient and Remainder. This function finds one of them. Especially, there is always a trivial solution: (Quotient, Remainder) = (0, Numerator).

Note the following:

Definition at line 55 of file ScalarEvolutionDivision.cpp.

References assert(), D(), divide(), llvm::dyn_cast(), llvm::SCEV::isZero(), and T.

Referenced by llvm::computeAccessFunctions(), divide(), llvm::findArrayDimensions(), findArrayDimensionsRec(), visitAddExpr(), visitAddRecExpr(), and visitMulExpr().

visitAddExpr()

visitAddRecExpr()

visitConstant()

visitCouldNotCompute()

visitMulExpr()

Definition at line 176 of file ScalarEvolutionDivision.cpp.

References llvm::cast(), divide(), llvm::SCEV::getType(), llvm::isa(), llvm::SCEVNAryExpr::operands(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SCEVParameterRewriter::rewrite(), llvm::SmallVectorTemplateCommon< T, typename >::size(), and sizeOfSCEV().

visitPtrToIntExpr()

visitSequentialUMinExpr()

visitSignExtendExpr()

visitSMaxExpr()

visitSMinExpr()

visitTruncateExpr()

visitUDivExpr()

visitUMaxExpr()

visitUMinExpr()

visitUnknown()

visitVScale()

visitZeroExtendExpr()


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