Polly 19.0.0git
Public Member Functions | Private Attributes | List of all members
SCEVValidator Class Reference

Check if a SCEV is valid in a SCoP. More...

Inheritance diagram for SCEVValidator:
Inheritance graph
[legend]

Public Member Functions

 SCEVValidator (const Region *R, Loop *Scope, ScalarEvolution &SE, InvariantLoadsSetTy *ILS)
 
ValidatorResult visitConstant (const SCEVConstant *Constant)
 
ValidatorResult visitVScale (const SCEVVScale *VScale)
 
ValidatorResult visitZeroExtendOrTruncateExpr (const SCEV *Expr, const SCEV *Operand)
 
ValidatorResult visitPtrToIntExpr (const SCEVPtrToIntExpr *Expr)
 
ValidatorResult visitTruncateExpr (const SCEVTruncateExpr *Expr)
 
ValidatorResult visitZeroExtendExpr (const SCEVZeroExtendExpr *Expr)
 
ValidatorResult visitSignExtendExpr (const SCEVSignExtendExpr *Expr)
 
ValidatorResult visitAddExpr (const SCEVAddExpr *Expr)
 
ValidatorResult visitMulExpr (const SCEVMulExpr *Expr)
 
ValidatorResult visitAddRecExpr (const SCEVAddRecExpr *Expr)
 
ValidatorResult visitSMaxExpr (const SCEVSMaxExpr *Expr)
 
ValidatorResult visitSMinExpr (const SCEVSMinExpr *Expr)
 
ValidatorResult visitUMaxExpr (const SCEVUMaxExpr *Expr)
 
ValidatorResult visitUMinExpr (const SCEVUMinExpr *Expr)
 
ValidatorResult visitSequentialUMinExpr (const SCEVSequentialUMinExpr *Expr)
 
ValidatorResult visitGenericInst (Instruction *I, const SCEV *S)
 
ValidatorResult visitLoadInstruction (Instruction *I, const SCEV *S)
 
ValidatorResult visitDivision (const SCEV *Dividend, const SCEV *Divisor, const SCEV *DivExpr, Instruction *SDiv=nullptr)
 
ValidatorResult visitUDivExpr (const SCEVUDivExpr *Expr)
 
ValidatorResult visitSDivInstruction (Instruction *SDiv, const SCEV *Expr)
 
ValidatorResult visitSRemInstruction (Instruction *SRem, const SCEV *S)
 
ValidatorResult visitUnknown (const SCEVUnknown *Expr)
 

Private Attributes

const Region * R
 
Loop * Scope
 
ScalarEvolution & SE
 
InvariantLoadsSetTyILS
 

Detailed Description

Check if a SCEV is valid in a SCoP.

Definition at line 122 of file SCEVValidator.cpp.

Constructor & Destructor Documentation

◆ SCEVValidator()

SCEVValidator::SCEVValidator ( const Region *  R,
Loop *  Scope,
ScalarEvolution &  SE,
InvariantLoadsSetTy ILS 
)
inline

Definition at line 130 of file SCEVValidator.cpp.

Member Function Documentation

◆ visitAddExpr()

ValidatorResult SCEVValidator::visitAddExpr ( const SCEVAddExpr *  Expr)
inline

◆ visitAddRecExpr()

ValidatorResult SCEVValidator::visitAddRecExpr ( const SCEVAddRecExpr *  Expr)
inline

◆ visitConstant()

ValidatorResult SCEVValidator::visitConstant ( const SCEVConstant *  Constant)
inline

Definition at line 134 of file SCEVValidator.cpp.

References SCEVType::INT.

◆ visitDivision()

ValidatorResult SCEVValidator::visitDivision ( const SCEV *  Dividend,
const SCEV *  Divisor,
const SCEV *  DivExpr,
Instruction *  SDiv = nullptr 
)
inline

◆ visitGenericInst()

ValidatorResult SCEVValidator::visitGenericInst ( Instruction *  I,
const SCEV *  S 
)
inline

◆ visitLoadInstruction()

ValidatorResult SCEVValidator::visitLoadInstruction ( Instruction *  I,
const SCEV *  S 
)
inline

Definition at line 368 of file SCEVValidator.cpp.

References ILS, SCEVType::PARAM, R, and visitGenericInst().

Referenced by visitUnknown().

◆ visitMulExpr()

ValidatorResult SCEVValidator::visitMulExpr ( const SCEVMulExpr *  Expr)
inline

◆ visitPtrToIntExpr()

ValidatorResult SCEVValidator::visitPtrToIntExpr ( const SCEVPtrToIntExpr *  Expr)
inline

Definition at line 159 of file SCEVValidator.cpp.

◆ visitSDivInstruction()

ValidatorResult SCEVValidator::visitSDivInstruction ( Instruction *  SDiv,
const SCEV *  Expr 
)
inline

Definition at line 411 of file SCEVValidator.cpp.

References assert, SE, and visitDivision().

Referenced by visitUnknown().

◆ visitSequentialUMinExpr()

ValidatorResult SCEVValidator::visitSequentialUMinExpr ( const SCEVSequentialUMinExpr *  Expr)
inline

◆ visitSignExtendExpr()

ValidatorResult SCEVValidator::visitSignExtendExpr ( const SCEVSignExtendExpr *  Expr)
inline

Definition at line 171 of file SCEVValidator.cpp.

◆ visitSMaxExpr()

ValidatorResult SCEVValidator::visitSMaxExpr ( const SCEVSMaxExpr *  Expr)
inline

◆ visitSMinExpr()

ValidatorResult SCEVValidator::visitSMinExpr ( const SCEVSMinExpr *  Expr)
inline

◆ visitSRemInstruction()

ValidatorResult SCEVValidator::visitSRemInstruction ( Instruction *  SRem,
const SCEV *  S 
)
inline

Definition at line 420 of file SCEVValidator.cpp.

References assert, SE, and visitGenericInst().

Referenced by visitUnknown().

◆ visitTruncateExpr()

ValidatorResult SCEVValidator::visitTruncateExpr ( const SCEVTruncateExpr *  Expr)
inline

Definition at line 163 of file SCEVValidator.cpp.

References visitZeroExtendOrTruncateExpr().

◆ visitUDivExpr()

ValidatorResult SCEVValidator::visitUDivExpr ( const SCEVUDivExpr *  Expr)
inline

◆ visitUMaxExpr()

ValidatorResult SCEVValidator::visitUMaxExpr ( const SCEVUMaxExpr *  Expr)
inline

◆ visitUMinExpr()

ValidatorResult SCEVValidator::visitUMinExpr ( const SCEVUMinExpr *  Expr)
inline

◆ visitUnknown()

ValidatorResult SCEVValidator::visitUnknown ( const SCEVUnknown *  Expr)
inline

◆ visitVScale()

ValidatorResult SCEVValidator::visitVScale ( const SCEVVScale *  VScale)
inline

Definition at line 138 of file SCEVValidator.cpp.

References SCEVType::INVALID, and POLLY_DEBUG.

◆ visitZeroExtendExpr()

ValidatorResult SCEVValidator::visitZeroExtendExpr ( const SCEVZeroExtendExpr *  Expr)
inline

Definition at line 167 of file SCEVValidator.cpp.

References visitZeroExtendOrTruncateExpr().

◆ visitZeroExtendOrTruncateExpr()

ValidatorResult SCEVValidator::visitZeroExtendOrTruncateExpr ( const SCEV *  Expr,
const SCEV *  Operand 
)
inline

Member Data Documentation

◆ ILS

InvariantLoadsSetTy* SCEVValidator::ILS
private

Definition at line 127 of file SCEVValidator.cpp.

Referenced by visitLoadInstruction().

◆ R

const Region* SCEVValidator::R
private

Definition at line 124 of file SCEVValidator.cpp.

Referenced by visitAddRecExpr(), visitGenericInst(), and visitLoadInstruction().

◆ Scope

Loop* SCEVValidator::Scope
private

Definition at line 125 of file SCEVValidator.cpp.

Referenced by visitAddRecExpr(), and visitUnknown().

◆ SE

ScalarEvolution& SCEVValidator::SE
private

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