LLVM: llvm::SCEVDivision Struct Reference (original) (raw)
#include "[llvm/Analysis/ScalarEvolutionDivision.h](ScalarEvolutionDivision%5F8h%5Fsource.html)"
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:
- The condition Remainder < Denominator is NOT necessarily required.
- Division of constants is performed as signed.
- The multiplication of Quotient and Denominator may wrap.
- The addition of Quotient*Denominator and Remainder may wrap.
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:
- include/llvm/Analysis/ScalarEvolutionDivision.h
- lib/Analysis/ScalarEvolutionDivision.cpp