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:318

Inherits from: SCEVPredicate

Member Variables

private const llvm::SCEVAddRecExpr* AR
private llvm::SCEVWrapPredicate::IncrementWrapFlags Flags

Inherited from SCEVPredicate:

protected Kind

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::SCEVAddRecExpr * 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)

Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:388

Parameters

const llvm::FoldingSetNodeIDRef ID
const llvm::SCEVAddRecExpr* AR
llvm::SCEVWrapPredicate::IncrementWrapFlags Flags

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:402

Parameters

const llvm::SCEVPredicate* P

static SCEVWrapPredicate::IncrementWrapFlags
clearFlags(
    SCEVWrapPredicate::IncrementWrapFlags Flags,
    SCEVWrapPredicate::IncrementWrapFlags
        OffFlags)

Description

Convenient IncrementWrapFlags manipulation methods.

Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:352

Parameters

SCEVWrapPredicate::IncrementWrapFlags Flags
SCEVWrapPredicate::IncrementWrapFlags OffFlags

const llvm::SCEVAddRecExpr* getExpr() const

Description

Implementation of the SCEVPredicate interface

Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:396

llvm::SCEVWrapPredicate::IncrementWrapFlags
getFlags() const

Description

Returns the set assumed no overflow flags.

Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:393

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:381

Parameters

const llvm::SCEVAddRecExpr* AR
llvm::ScalarEvolution& SE

bool implies(const llvm::SCEVPredicate* N) const

Description

Returns true if this predicate implies \p N.

Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:397

Parameters

const llvm::SCEVPredicate* N

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:399

static SCEVWrapPredicate::IncrementWrapFlags
maskFlags(
    SCEVWrapPredicate::IncrementWrapFlags Flags,
    int Mask)

Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:361

Parameters

SCEVWrapPredicate::IncrementWrapFlags Flags
int Mask

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:398

Parameters

llvm::raw_ostream& OS
unsigned int Depth = 0

static SCEVWrapPredicate::IncrementWrapFlags
setFlags(
    SCEVWrapPredicate::IncrementWrapFlags Flags,
    SCEVWrapPredicate::IncrementWrapFlags OnFlags)

Declared at: llvm/include/llvm/Analysis/ScalarEvolution.h:369

Parameters

SCEVWrapPredicate::IncrementWrapFlags Flags
SCEVWrapPredicate::IncrementWrapFlags OnFlags