Jlm
Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
jlm::llvm::SCEVChainRecurrence Class Referencefinal

#include <ScalarEvolution.hpp>

Inheritance diagram for jlm::llvm::SCEVChainRecurrence:
Inheritance graph
[legend]
Collaboration diagram for jlm::llvm::SCEVChainRecurrence:
Collaboration graph
[legend]

Public Member Functions

 SCEVChainRecurrence (rvsdg::ThetaNode &theta, rvsdg::Output &output)
 
template<typename... Args>
 SCEVChainRecurrence (rvsdg::ThetaNode &theta, rvsdg::Output &output, Args &&... operands)
 
rvsdg::ThetaNodeGetLoop () const noexcept
 
rvsdg::OutputGetOutput () const noexcept
 
SCEVGetStartValue () const
 
std::optional< std::unique_ptr< SCEV > > GetStep () const
 
void AddOperandToFront (const std::unique_ptr< SCEV > &initScev)
 
std::string DebugString () const override
 
std::unique_ptr< SCEVClone () const override
 
- Public Member Functions inherited from jlm::llvm::SCEVNAryExpr
 SCEVNAryExpr ()
 
template<typename... Args>
 SCEVNAryExpr (Args &&... operands)
 
template<typename... Args>
void AddOperands (Args &&... operands)
 
void AddOperand (std::unique_ptr< SCEV > scev)
 
void ReplaceOperand (const size_t index, const std::unique_ptr< SCEV > &operand)
 
void RemoveOperand (const size_t index)
 
std::vector< SCEV * > GetOperands () const
 
SCEVGetOperand (const size_t index) const
 
size_t NumOperands () const
 
- Public Member Functions inherited from jlm::llvm::SCEV
virtual ~SCEV () noexcept=default
 

Static Public Member Functions

static bool IsConstant (const SCEVChainRecurrence &chrec)
 
static bool IsAffine (const SCEVChainRecurrence &chrec)
 
static bool IsQuadratic (const SCEVChainRecurrence &chrec)
 
static bool IsInvariantInLoop (const SCEVChainRecurrence &chrec, const rvsdg::ThetaNode &theta)
 
static std::unique_ptr< SCEVChainRecurrenceCreate (rvsdg::ThetaNode &loop, rvsdg::Output &output)
 
template<typename... Args>
static std::unique_ptr< SCEVChainRecurrenceCreate (rvsdg::ThetaNode &loop, rvsdg::Output &output, Args &&... operands)
 
- Static Public Member Functions inherited from jlm::llvm::SCEV
template<typename T >
static std::unique_ptr< T > CloneAs (const SCEV &scev)
 

Protected Attributes

rvsdg::ThetaNodeLoop_
 
rvsdg::OutputOutput_
 
- Protected Attributes inherited from jlm::llvm::SCEVNAryExpr
std::vector< std::unique_ptr< SCEV > > Operands_
 

Detailed Description

Definition at line 353 of file ScalarEvolution.hpp.

Constructor & Destructor Documentation

◆ SCEVChainRecurrence() [1/2]

jlm::llvm::SCEVChainRecurrence::SCEVChainRecurrence ( rvsdg::ThetaNode theta,
rvsdg::Output output 
)
inlineexplicit

Definition at line 356 of file ScalarEvolution.hpp.

◆ SCEVChainRecurrence() [2/2]

template<typename... Args>
jlm::llvm::SCEVChainRecurrence::SCEVChainRecurrence ( rvsdg::ThetaNode theta,
rvsdg::Output output,
Args &&...  operands 
)
inlineexplicit

Definition at line 363 of file ScalarEvolution.hpp.

Member Function Documentation

◆ AddOperandToFront()

void jlm::llvm::SCEVChainRecurrence::AddOperandToFront ( const std::unique_ptr< SCEV > &  initScev)
inline

Definition at line 430 of file ScalarEvolution.hpp.

◆ Clone()

std::unique_ptr<SCEV> jlm::llvm::SCEVChainRecurrence::Clone ( ) const
inlineoverridevirtual

Implements jlm::llvm::SCEV.

Definition at line 451 of file ScalarEvolution.hpp.

◆ Create() [1/2]

static std::unique_ptr<SCEVChainRecurrence> jlm::llvm::SCEVChainRecurrence::Create ( rvsdg::ThetaNode loop,
rvsdg::Output output 
)
inlinestatic

Definition at line 462 of file ScalarEvolution.hpp.

◆ Create() [2/2]

template<typename... Args>
static std::unique_ptr<SCEVChainRecurrence> jlm::llvm::SCEVChainRecurrence::Create ( rvsdg::ThetaNode loop,
rvsdg::Output output,
Args &&...  operands 
)
inlinestatic

Definition at line 469 of file ScalarEvolution.hpp.

◆ DebugString()

std::string jlm::llvm::SCEVChainRecurrence::DebugString ( ) const
inlineoverridevirtual

Implements jlm::llvm::SCEV.

Definition at line 436 of file ScalarEvolution.hpp.

◆ GetLoop()

rvsdg::ThetaNode& jlm::llvm::SCEVChainRecurrence::GetLoop ( ) const
inlinenoexcept

Definition at line 373 of file ScalarEvolution.hpp.

◆ GetOutput()

rvsdg::Output& jlm::llvm::SCEVChainRecurrence::GetOutput ( ) const
inlinenoexcept

Definition at line 379 of file ScalarEvolution.hpp.

◆ GetStartValue()

SCEV* jlm::llvm::SCEVChainRecurrence::GetStartValue ( ) const
inline

Definition at line 385 of file ScalarEvolution.hpp.

◆ GetStep()

std::optional<std::unique_ptr<SCEV> > jlm::llvm::SCEVChainRecurrence::GetStep ( ) const
inline

Definition at line 411 of file ScalarEvolution.hpp.

◆ IsAffine()

static bool jlm::llvm::SCEVChainRecurrence::IsAffine ( const SCEVChainRecurrence chrec)
inlinestatic

Definition at line 395 of file ScalarEvolution.hpp.

◆ IsConstant()

static bool jlm::llvm::SCEVChainRecurrence::IsConstant ( const SCEVChainRecurrence chrec)
inlinestatic

Definition at line 390 of file ScalarEvolution.hpp.

◆ IsInvariantInLoop()

static bool jlm::llvm::SCEVChainRecurrence::IsInvariantInLoop ( const SCEVChainRecurrence chrec,
const rvsdg::ThetaNode theta 
)
inlinestatic

Definition at line 405 of file ScalarEvolution.hpp.

◆ IsQuadratic()

static bool jlm::llvm::SCEVChainRecurrence::IsQuadratic ( const SCEVChainRecurrence chrec)
inlinestatic

Definition at line 400 of file ScalarEvolution.hpp.

Member Data Documentation

◆ Loop_

rvsdg::ThetaNode* jlm::llvm::SCEVChainRecurrence::Loop_
protected

Definition at line 475 of file ScalarEvolution.hpp.

◆ Output_

rvsdg::Output* jlm::llvm::SCEVChainRecurrence::Output_
protected

Definition at line 476 of file ScalarEvolution.hpp.


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