LLVM 22.0.0git
llvm::sandboxir::Region Class Reference

The main job of the Region is to point to new instructions generated by vectorization passes. More...

#include "llvm/SandboxIR/Region.h"

Public Types

using iterator = decltype(Insts.begin())

Public Member Functions

LLVM_ABI Region (Context &Ctx, TargetTransformInfo &TTI)
LLVM_ABI ~Region ()
ContextgetContext () const
bool contains (Instruction *I) const
 Returns true if I is in the Region.
bool empty () const
 Returns true if the Region has no instructions.
LLVM_ABI void setAux (ArrayRef< Instruction * > Aux)
 Set the auxiliary vector.
const SmallVector< Instruction * > & getAux () const
 \Returns the auxiliary vector.
LLVM_ABI void clearAux ()
 Clears all auxiliary data.
iterator begin ()
iterator end ()
iterator_range< iteratorinsts ()
const ScoreBoardgetScoreboard () const
 \Returns the ScoreBoard data structure that keeps track of instr costs.
bool operator== (const Region &Other) const
 This is an expensive check, meant for testing.
bool operator!= (const Region &other) const
void dump (raw_ostream &OS) const
void dump () const

Static Public Member Functions

static LLVM_ABI SmallVector< std::unique_ptr< Region > > createRegionsFromMD (Function &F, TargetTransformInfo &TTI)

Friends

class Context
class RegionInternalsAttorney
class RegionsFromBBs
raw_ostreamoperator<< (raw_ostream &OS, const Region &Rgn)

Detailed Description

The main job of the Region is to point to new instructions generated by vectorization passes.

It is the unit that RegionPasses operate on with their runOnRegion() function.

The region allows us to stack transformations horizontally, meaning that each transformation operates on a single region and the resulting region is the input to the next transformation, as opposed to vertically, which is the common way of applying a transformation across the whole function. This enables us to check for profitability and decide whether we accept or rollback at a region granularity, which is much better than doing this at the function level.

Definition at line 96 of file Region.h.

Member Typedef Documentation

◆ iterator

using llvm::sandboxir::Region::iterator = decltype(Insts.begin())

Definition at line 160 of file Region.h.

Constructor & Destructor Documentation

◆ Region()

llvm::sandboxir::Region::Region ( Context & Ctx,
TargetTransformInfo & TTI )

◆ ~Region()

llvm::sandboxir::Region::~Region ( )

Definition at line 49 of file Region.cpp.

Member Function Documentation

◆ begin()

iterator llvm::sandboxir::Region::begin ( )
inline

Definition at line 161 of file Region.h.

Referenced by insts().

◆ clearAux()

void llvm::sandboxir::Region::clearAux ( )

Clears all auxiliary data.

Definition at line 107 of file Region.cpp.

References llvm::seq().

Referenced by llvm::sandboxir::SeedCollection::runOnFunction().

◆ contains()

bool llvm::sandboxir::Region::contains ( Instruction * I) const
inline

Returns true if I is in the Region.

Definition at line 150 of file Region.h.

References I.

◆ createRegionsFromMD()

◆ dump() [1/2]

void llvm::sandboxir::Region::dump ( ) const

Definition at line 145 of file Region.cpp.

References llvm::dbgs(), and dump().

Referenced by dump().

◆ dump() [2/2]

void llvm::sandboxir::Region::dump ( raw_ostream & OS) const

Definition at line 131 of file Region.cpp.

References I.

Referenced by operator<<.

◆ empty()

bool llvm::sandboxir::Region::empty ( ) const
inline

Returns true if the Region has no instructions.

Definition at line 152 of file Region.h.

Referenced by llvm::sandboxir::PackReuse::runOnRegion().

◆ end()

iterator llvm::sandboxir::Region::end ( )
inline

Definition at line 162 of file Region.h.

Referenced by insts().

◆ getAux()

const SmallVector< Instruction * > & llvm::sandboxir::Region::getAux ( ) const
inline

\Returns the auxiliary vector.

Definition at line 156 of file Region.h.

Referenced by llvm::sandboxir::BottomUpVec::runOnRegion().

◆ getContext()

Context & llvm::sandboxir::Region::getContext ( ) const
inline

◆ getScoreboard()

const ScoreBoard & llvm::sandboxir::Region::getScoreboard ( ) const
inline

\Returns the ScoreBoard data structure that keeps track of instr costs.

Definition at line 168 of file Region.h.

Referenced by llvm::sandboxir::TransactionAcceptOrRevert::runOnRegion().

◆ insts()

iterator_range< iterator > llvm::sandboxir::Region::insts ( )
inline

Definition at line 163 of file Region.h.

References begin(), end(), and llvm::make_range().

◆ operator!=()

bool llvm::sandboxir::Region::operator!= ( const Region & other) const
inline

Definition at line 173 of file Region.h.

References Region().

◆ operator==()

bool llvm::sandboxir::Region::operator== ( const Region & Other) const

This is an expensive check, meant for testing.

Definition at line 123 of file Region.cpp.

References llvm::Other, and Region().

◆ setAux()

void llvm::sandboxir::Region::setAux ( ArrayRef< Instruction * > Aux)

◆ Context

friend class Context
friend

Definition at line 132 of file Region.h.

References Context.

Referenced by Context, getContext(), Region(), and RegionsFromBBs.

◆ operator<<

raw_ostream & operator<< ( raw_ostream & OS,
const Region & Rgn )
friend

Definition at line 177 of file Region.h.

References dump(), and Region().

◆ RegionInternalsAttorney

friend class RegionInternalsAttorney
friend

Definition at line 133 of file Region.h.

References RegionInternalsAttorney.

Referenced by RegionInternalsAttorney.

◆ RegionsFromBBs

friend class RegionsFromBBs
friend

Definition at line 134 of file Region.h.

References Context, I, LLVM_ABI, and RegionsFromBBs.

Referenced by RegionsFromBBs.


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