Polly 22.0.0git
SCEVValidator Class Reference

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

Inheritance diagram for SCEVValidator:
[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.

References ILS, R, Scope, and SE.

Member Function Documentation

◆ visitAddExpr()

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

◆ visitAddRecExpr()

◆ 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()

◆ 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 SCEVValidator(), and visitLoadInstruction().

◆ R

const Region* SCEVValidator::R
private

◆ Scope

Loop* SCEVValidator::Scope
private

Definition at line 125 of file SCEVValidator.cpp.

Referenced by SCEVValidator(), visitAddRecExpr(), and visitUnknown().

◆ SE

ScalarEvolution& SCEVValidator::SE
private

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