13#ifndef LLVM_ANALYSIS_SCALAREVOLUTIONDIVISION_H
14#define LLVM_ANALYSIS_SCALAREVOLUTIONDIVISION_H
24struct SCEVCouldNotCompute;
31 const SCEV *Denominator,
const SCEV **Quotient,
32 const SCEV **Remainder);
61 const SCEV *Denominator);
65 void cannotDivide(
const SCEV *Numerator);
68 const SCEV *Denominator, *Quotient, *Remainder, *Zero, *One;
This node represents an addition of some number of SCEVs.
This node represents a polynomial recurrence on the trip count of the specified loop.
This class represents a constant integer value.
This node represents multiplication of some number of SCEVs.
This class represents a cast from a pointer to a pointer-sized integer value.
This class represents a signed maximum selection.
This class represents a signed minimum selection.
This class represents a sequential/in-order unsigned minimum selection.
This class represents a sign extension of a small integer value to a larger integer value.
This class represents a truncation of an integer value to a smaller integer value.
This class represents a binary unsigned division operation.
This class represents an unsigned maximum selection.
This class represents an unsigned minimum selection.
This means that we are dealing with an entirely unknown SCEV value, and only represent it as its LLVM...
This class represents the value of vscale, as used when defining the length of a scalable vector or r...
This class represents a zero extension of a small integer value to a larger integer value.
This class represents an analyzed expression in the program.
The main scalar evolution driver.
This is an optimization pass for GlobalISel generic memory operations.
An object of this class is returned by queries that could not be answered.
void visitSequentialUMinExpr(const SCEVSequentialUMinExpr *Numerator)
static void divide(ScalarEvolution &SE, const SCEV *Numerator, const SCEV *Denominator, const SCEV **Quotient, const SCEV **Remainder)
void visitUMinExpr(const SCEVUMinExpr *Numerator)
void visitVScale(const SCEVVScale *Numerator)
void visitZeroExtendExpr(const SCEVZeroExtendExpr *Numerator)
void visitSignExtendExpr(const SCEVSignExtendExpr *Numerator)
void visitTruncateExpr(const SCEVTruncateExpr *Numerator)
void visitSMaxExpr(const SCEVSMaxExpr *Numerator)
void visitPtrToIntExpr(const SCEVPtrToIntExpr *Numerator)
void visitSMinExpr(const SCEVSMinExpr *Numerator)
void visitUMaxExpr(const SCEVUMaxExpr *Numerator)
void visitCouldNotCompute(const SCEVCouldNotCompute *Numerator)
void visitAddRecExpr(const SCEVAddRecExpr *Numerator)
void visitUnknown(const SCEVUnknown *Numerator)
void visitUDivExpr(const SCEVUDivExpr *Numerator)
void visitConstant(const SCEVConstant *Numerator)
void visitAddExpr(const SCEVAddExpr *Numerator)
void visitMulExpr(const SCEVMulExpr *Numerator)
This class defines a simple visitor class that may be used for various SCEV analysis purposes.