LLVM 20.0.0git
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
llvm::SCEVPredicate Class Referenceabstract

This class represents an assumption made using SCEV expressions which can be checked at run-time. More...

#include "llvm/Analysis/ScalarEvolution.h"

Inheritance diagram for llvm::SCEVPredicate:
Inheritance graph
[legend]

Public Types

enum  SCEVPredicateKind { P_Union , P_Compare , P_Wrap }
 

Public Member Functions

 SCEVPredicate (const FoldingSetNodeIDRef ID, SCEVPredicateKind Kind)
 SCEV predicates.
 
SCEVPredicateKind getKind () const
 
virtual unsigned getComplexity () const
 Returns the estimated complexity of this predicate.
 
virtual bool isAlwaysTrue () const =0
 Returns true if the predicate is always true.
 
virtual bool implies (const SCEVPredicate *N, ScalarEvolution &SE) const =0
 Returns true if this predicate implies N.
 
virtual void print (raw_ostream &OS, unsigned Depth=0) const =0
 Prints a textual representation of this predicate with an indentation of Depth.
 
- Public Member Functions inherited from llvm::FoldingSetBase::Node
 Node ()=default
 
void * getNextInBucket () const
 
void SetNextInBucket (void *N)
 

Protected Member Functions

 ~SCEVPredicate ()=default
 
 SCEVPredicate (const SCEVPredicate &)=default
 
SCEVPredicateoperator= (const SCEVPredicate &)=default
 

Protected Attributes

SCEVPredicateKind Kind
 

Friends

struct FoldingSetTrait< SCEVPredicate >
 

Detailed Description

This class represents an assumption made using SCEV expressions which can be checked at run-time.

Definition at line 214 of file ScalarEvolution.h.

Member Enumeration Documentation

◆ SCEVPredicateKind

Enumerator
P_Union 
P_Compare 
P_Wrap 

Definition at line 222 of file ScalarEvolution.h.

Constructor & Destructor Documentation

◆ ~SCEVPredicate()

llvm::SCEVPredicate::~SCEVPredicate ( )
protecteddefault

◆ SCEVPredicate() [1/2]

llvm::SCEVPredicate::SCEVPredicate ( const SCEVPredicate )
protecteddefault

◆ SCEVPredicate() [2/2]

SCEVPredicate::SCEVPredicate ( const FoldingSetNodeIDRef  ID,
SCEVPredicateKind  Kind 
)

SCEV predicates.

Definition at line 14925 of file ScalarEvolution.cpp.

Member Function Documentation

◆ getComplexity()

virtual unsigned llvm::SCEVPredicate::getComplexity ( ) const
inlinevirtual

Returns the estimated complexity of this predicate.

This is roughly measured in the number of run-time checks required.

Reimplemented in llvm::SCEVUnionPredicate.

Definition at line 237 of file ScalarEvolution.h.

Referenced by llvm::LoopVectorizationLegality::canVectorize().

◆ getKind()

SCEVPredicateKind llvm::SCEVPredicate::getKind ( ) const
inline

Definition at line 233 of file ScalarEvolution.h.

References Kind.

Referenced by llvm::SCEVExpander::expandCodeForPredicate().

◆ implies()

virtual bool llvm::SCEVPredicate::implies ( const SCEVPredicate N,
ScalarEvolution SE 
) const
pure virtual

Returns true if this predicate implies N.

Implemented in llvm::SCEVComparePredicate, llvm::SCEVWrapPredicate, and llvm::SCEVUnionPredicate.

◆ isAlwaysTrue()

virtual bool llvm::SCEVPredicate::isAlwaysTrue ( ) const
pure virtual

Returns true if the predicate is always true.

This means that no assumptions were made and nothing needs to be checked at run-time.

Implemented in llvm::SCEVComparePredicate, llvm::SCEVWrapPredicate, and llvm::SCEVUnionPredicate.

Referenced by llvm::LoopVectorizationCostModel::runtimeChecksRequired().

◆ operator=()

SCEVPredicate & llvm::SCEVPredicate::operator= ( const SCEVPredicate )
protecteddefault

◆ print()

virtual void llvm::SCEVPredicate::print ( raw_ostream OS,
unsigned  Depth = 0 
) const
pure virtual

Prints a textual representation of this predicate with an indentation of Depth.

Implemented in llvm::SCEVUnionPredicate, llvm::SCEVComparePredicate, and llvm::SCEVWrapPredicate.

Referenced by llvm::SCEVUnionPredicate::print(), and llvm::LoopAccessInfo::print().

Friends And Related Function Documentation

◆ FoldingSetTrait< SCEVPredicate >

friend struct FoldingSetTrait< SCEVPredicate >
friend

Definition at line 209 of file ScalarEvolution.h.

Member Data Documentation

◆ Kind

SCEVPredicateKind llvm::SCEVPredicate::Kind
protected

Definition at line 225 of file ScalarEvolution.h.

Referenced by getKind().


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