class SCEVWrapPredicate
Declaration
class SCEVWrapPredicate : public SCEVPredicate { /* full declaration omitted */ };
Description
This class represents an assumption made on an AddRec expression. Given an affine AddRec expression {a,+,b}, we assume that it has the nssw or nusw flags (defined below) in the first X iterations of the loop, where X is a SCEV expression returned by getPredicatedBackedgeTakenCount). Note that this does not imply that X is equal to the backedge taken count. This means that if we have a nusw predicate for i32 {0,+,1} with a predicated backedge taken count of X, we only guarantee that {0,+,1} has nusw in the first X iterations. {0,+,1} may still wrap in the loop if we have more than X iterations.
Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:302
Inherits from: SCEVPredicate
Member Variables
Inherited from SCEVPredicate:
Method Overview
- public SCEVWrapPredicate(const llvm::FoldingSetNodeIDRef ID, const llvm::SCEVAddRecExpr * AR, llvm::SCEVWrapPredicate::IncrementWrapFlags Flags)
- public static bool classof(const llvm::SCEVPredicate * P)
- public static SCEVWrapPredicate::IncrementWrapFlags clearFlags(SCEVWrapPredicate::IncrementWrapFlags Flags, SCEVWrapPredicate::IncrementWrapFlags OffFlags)
- public const llvm::SCEV * getExpr() const
- public llvm::SCEVWrapPredicate::IncrementWrapFlags getFlags() const
- public static SCEVWrapPredicate::IncrementWrapFlags getImpliedFlags(const llvm::SCEVAddRecExpr * AR, llvm::ScalarEvolution & SE)
- public bool implies(const llvm::SCEVPredicate * N) const
- public bool isAlwaysTrue() const
- public static SCEVWrapPredicate::IncrementWrapFlags maskFlags(SCEVWrapPredicate::IncrementWrapFlags Flags, int Mask)
- public void print(llvm::raw_ostream & OS, unsigned int Depth = 0) const
- public static SCEVWrapPredicate::IncrementWrapFlags setFlags(SCEVWrapPredicate::IncrementWrapFlags Flags, SCEVWrapPredicate::IncrementWrapFlags OnFlags)
Inherited from SCEVPredicate:
Inherited from FoldingSetBase::Node:
Methods
¶SCEVWrapPredicate(
const llvm::FoldingSetNodeIDRef ID,
const llvm::SCEVAddRecExpr* AR,
llvm::SCEVWrapPredicate::IncrementWrapFlags
Flags)
SCEVWrapPredicate(
const llvm::FoldingSetNodeIDRef ID,
const llvm::SCEVAddRecExpr* AR,
llvm::SCEVWrapPredicate::IncrementWrapFlags
Flags)
Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:372
Parameters
- const llvm::FoldingSetNodeIDRef ID
- const llvm::SCEVAddRecExpr* AR
- llvm::SCEVWrapPredicate::IncrementWrapFlags Flags
¶static bool classof(const llvm::SCEVPredicate* P)
static bool classof(const llvm::SCEVPredicate* P)
Description
Methods for support type inquiry through isa, cast, and dyn_cast:
Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:386
Parameters
- const llvm::SCEVPredicate* P
¶static SCEVWrapPredicate::IncrementWrapFlags
clearFlags(
SCEVWrapPredicate::IncrementWrapFlags Flags,
SCEVWrapPredicate::IncrementWrapFlags
OffFlags)
static SCEVWrapPredicate::IncrementWrapFlags
clearFlags(
SCEVWrapPredicate::IncrementWrapFlags Flags,
SCEVWrapPredicate::IncrementWrapFlags
OffFlags)
Description
Convenient IncrementWrapFlags manipulation methods.
Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:336
Parameters
- SCEVWrapPredicate::IncrementWrapFlags Flags
- SCEVWrapPredicate::IncrementWrapFlags OffFlags
¶const llvm::SCEV* getExpr() const
const llvm::SCEV* getExpr() const
Description
Implementation of the SCEVPredicate interface
Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:380
¶llvm::SCEVWrapPredicate::IncrementWrapFlags
getFlags() const
llvm::SCEVWrapPredicate::IncrementWrapFlags
getFlags() const
Description
Returns the set assumed no overflow flags.
Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:377
¶static SCEVWrapPredicate::IncrementWrapFlags
getImpliedFlags(const llvm::SCEVAddRecExpr* AR,
llvm::ScalarEvolution& SE)
static SCEVWrapPredicate::IncrementWrapFlags
getImpliedFlags(const llvm::SCEVAddRecExpr* AR,
llvm::ScalarEvolution& SE)
Description
Returns the set of SCEVWrapPredicate no wrap flags implied by a SCEVAddRecExpr.
Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:365
Parameters
- const llvm::SCEVAddRecExpr* AR
- llvm::ScalarEvolution& SE
¶bool implies(const llvm::SCEVPredicate* N) const
bool implies(const llvm::SCEVPredicate* N) const
Description
Returns true if this predicate implies \p N.
Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:381
Parameters
- const llvm::SCEVPredicate* N
¶bool isAlwaysTrue() const
bool isAlwaysTrue() const
Description
Returns true if the predicate is always true. This means that no assumptions were made and nothing needs to be checked at run-time.
Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:383
¶static SCEVWrapPredicate::IncrementWrapFlags
maskFlags(
SCEVWrapPredicate::IncrementWrapFlags Flags,
int Mask)
static SCEVWrapPredicate::IncrementWrapFlags
maskFlags(
SCEVWrapPredicate::IncrementWrapFlags Flags,
int Mask)
Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:345
Parameters
- SCEVWrapPredicate::IncrementWrapFlags Flags
- int Mask
¶void print(llvm::raw_ostream& OS,
unsigned int Depth = 0) const
void print(llvm::raw_ostream& OS,
unsigned int Depth = 0) const
Description
Prints a textual representation of this predicate with an indentation of\p Depth.
Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:382
Parameters
- llvm::raw_ostream& OS
- unsigned int Depth = 0
¶static SCEVWrapPredicate::IncrementWrapFlags
setFlags(
SCEVWrapPredicate::IncrementWrapFlags Flags,
SCEVWrapPredicate::IncrementWrapFlags OnFlags)
static SCEVWrapPredicate::IncrementWrapFlags
setFlags(
SCEVWrapPredicate::IncrementWrapFlags Flags,
SCEVWrapPredicate::IncrementWrapFlags OnFlags)
Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:353
Parameters
- SCEVWrapPredicate::IncrementWrapFlags Flags
- SCEVWrapPredicate::IncrementWrapFlags OnFlags