LLVM  9.0.0svn
Public Types | Public Member Functions | Static Public Member Functions | List of all members
llvm::VPBasicBlock Class Reference

VPBasicBlock serves as the leaf of the Hierarchical Control-Flow Graph. More...

#include "Transforms/Vectorize/VPlan.h"

Inheritance diagram for llvm::VPBasicBlock:
Inheritance graph
Collaboration diagram for llvm::VPBasicBlock:
Collaboration graph

Public Types

using RecipeListTy = iplist< VPRecipeBase >
using iterator = RecipeListTy::iterator
 Instruction iterators... More...
using const_iterator = RecipeListTy::const_iterator
using reverse_iterator = RecipeListTy::reverse_iterator
using const_reverse_iterator = RecipeListTy::const_reverse_iterator
- Public Types inherited from llvm::VPBlockBase
using VPBlockTy = enum { VPBasicBlockSC, VPRegionBlockSC }
 An enumeration for keeping track of the concrete subclass of VPBlockBase that are actually instantiated. More...
using VPBlocksTy = SmallVectorImpl< VPBlockBase * >

Public Member Functions

 VPBasicBlock (const Twine &Name="", VPRecipeBase *Recipe=nullptr)
 ~VPBasicBlock () override
iterator begin ()
 Recipe iterator methods. More...
const_iterator begin () const
iterator end ()
const_iterator end () const
reverse_iterator rbegin ()
const_reverse_iterator rbegin () const
reverse_iterator rend ()
const_reverse_iterator rend () const
size_t size () const
bool empty () const
const VPRecipeBasefront () const
VPRecipeBasefront ()
const VPRecipeBaseback () const
VPRecipeBaseback ()
RecipeListTygetRecipeList ()
 Returns a reference to the list of recipes. More...
void insert (VPRecipeBase *Recipe, iterator InsertPt)
void appendRecipe (VPRecipeBase *Recipe)
 Augment the existing recipes of a VPBasicBlock with an additional Recipe as the last recipe. More...
void execute (struct VPTransformState *State) override
 The method which generates the output IR instructions that correspond to this VPBasicBlock, thereby "executing" the VPlan. More...
- Public Member Functions inherited from llvm::VPBlockBase
virtual ~VPBlockBase ()=default
const std::string & getName () const
void setName (const Twine &newName)
unsigned getVPBlockID () const
VPRegionBlockgetParent ()
const VPRegionBlockgetParent () const
void setParent (VPRegionBlock *P)
const VPBasicBlockgetEntryBasicBlock () const
VPBasicBlockgetEntryBasicBlock ()
const VPBasicBlockgetExitBasicBlock () const
VPBasicBlockgetExitBasicBlock ()
const VPBlocksTygetSuccessors () const
VPBlocksTygetSuccessors ()
const VPBlocksTygetPredecessors () const
VPBlocksTygetPredecessors ()
VPBlockBasegetSingleSuccessor () const
VPBlockBasegetSinglePredecessor () const
size_t getNumSuccessors () const
size_t getNumPredecessors () const
VPBlockBasegetEnclosingBlockWithSuccessors ()
 An Enclosing Block of a block B is any block containing B, including B itself. More...
VPBlockBasegetEnclosingBlockWithPredecessors ()
const VPBlocksTygetHierarchicalSuccessors ()
VPBlockBasegetSingleHierarchicalSuccessor ()
const VPBlocksTygetHierarchicalPredecessors ()
VPBlockBasegetSingleHierarchicalPredecessor ()
VPValuegetCondBit ()
const VPValuegetCondBit () const
void setCondBit (VPValue *CV)
VPValuegetPredicate ()
const VPValuegetPredicate () const
void setPredicate (VPValue *Pred)
void setOneSuccessor (VPBlockBase *Successor)
 Set a given VPBlockBase Successor as the single successor of this VPBlockBase. More...
void setTwoSuccessors (VPBlockBase *IfTrue, VPBlockBase *IfFalse, VPValue *Condition)
 Set two given VPBlockBases IfTrue and IfFalse to be the two successors of this VPBlockBase. More...
void setPredecessors (ArrayRef< VPBlockBase *> NewPreds)
 Set each VPBasicBlock in NewPreds as predecessor of this VPBlockBase. More...
void clearPredecessors ()
 Remove all the predecessor of this block. More...
void clearSuccessors ()
 Remove all the successors of this block and set to null its condition bit. More...
void printAsOperand (raw_ostream &OS, bool PrintType) const
void print (raw_ostream &OS) const
bool isLegalToHoistInto ()
 Return true if it is legal to hoist instructions into this block. More...

Static Public Member Functions

static RecipeListTy VPBasicBlock::* getSublistAccess (VPRecipeBase *)
 Returns a pointer to a member of the recipe list. More...
static bool classof (const VPBlockBase *V)
 Method to support type inquiry through isa, cast, and dyn_cast. More...
- Static Public Member Functions inherited from llvm::VPBlockBase
static void deleteCFG (VPBlockBase *Entry)
 Delete all blocks reachable from a given VPBlockBase, inclusive. More...

Additional Inherited Members

- Protected Member Functions inherited from llvm::VPBlockBase
 VPBlockBase (const unsigned char SC, const std::string &N)

Detailed Description

VPBasicBlock serves as the leaf of the Hierarchical Control-Flow Graph.

It holds a sequence of zero or more VPRecipe's each representing a sequence of output IR instructions.

Definition at line 982 of file VPlan.h.

Member Typedef Documentation

◆ const_iterator

Definition at line 1001 of file VPlan.h.

◆ const_reverse_iterator

Definition at line 1003 of file VPlan.h.

◆ iterator

Instruction iterators...

Definition at line 1000 of file VPlan.h.

◆ RecipeListTy

Definition at line 984 of file VPlan.h.

◆ reverse_iterator

Definition at line 1002 of file VPlan.h.

Constructor & Destructor Documentation

◆ VPBasicBlock()

llvm::VPBasicBlock::VPBasicBlock ( const Twine Name = "",
VPRecipeBase Recipe = nullptr 

Definition at line 991 of file VPlan.h.

◆ ~VPBasicBlock()

llvm::VPBasicBlock::~VPBasicBlock ( )

Definition at line 997 of file VPlan.h.

References llvm::iplist_impl< IntrusiveListT, TraitsT >::clear().

Member Function Documentation

◆ appendRecipe()

void llvm::VPBasicBlock::appendRecipe ( VPRecipeBase Recipe)

Augment the existing recipes of a VPBasicBlock with an additional Recipe as the last recipe.

Definition at line 1047 of file VPlan.h.

References CFG, and llvm::sys::path::end().

Referenced by llvm::VPRecipeBuilder::handleReplication(), llvm::VPRecipeBuilder::tryToCreateRecipe(), and llvm::VPRecipeBuilder::tryToWiden().

◆ back() [1/2]

const VPRecipeBase& llvm::VPBasicBlock::back ( ) const

Definition at line 1022 of file VPlan.h.

Referenced by llvm::VPRecipeBuilder::tryToWiden().

◆ back() [2/2]

VPRecipeBase& llvm::VPBasicBlock::back ( )

Definition at line 1023 of file VPlan.h.

◆ begin() [1/2]

iterator llvm::VPBasicBlock::begin ( )

Recipe iterator methods.

Definition at line 1008 of file VPlan.h.

Referenced by llvm::VPlanHCFGTransforms::VPInstructionsToVPRecipes().

◆ begin() [2/2]

const_iterator llvm::VPBasicBlock::begin ( ) const

Definition at line 1009 of file VPlan.h.

◆ classof()

static bool llvm::VPBasicBlock::classof ( const VPBlockBase V)

Method to support type inquiry through isa, cast, and dyn_cast.

Definition at line 1034 of file VPlan.h.

References llvm::VPBlockBase::getVPBlockID().

◆ empty()

bool llvm::VPBasicBlock::empty ( ) const

◆ end() [1/2]

iterator llvm::VPBasicBlock::end ( )

◆ end() [2/2]

const_iterator llvm::VPBasicBlock::end ( ) const

Definition at line 1011 of file VPlan.h.

◆ execute()

void VPBasicBlock::execute ( struct VPTransformState State)

◆ front() [1/2]

const VPRecipeBase& llvm::VPBasicBlock::front ( ) const

Definition at line 1020 of file VPlan.h.

◆ front() [2/2]

VPRecipeBase& llvm::VPBasicBlock::front ( )

Definition at line 1021 of file VPlan.h.

◆ getRecipeList()

RecipeListTy& llvm::VPBasicBlock::getRecipeList ( )

Returns a reference to the list of recipes.

Definition at line 1026 of file VPlan.h.

◆ getSublistAccess()

static RecipeListTy VPBasicBlock::* llvm::VPBasicBlock::getSublistAccess ( VPRecipeBase )

Returns a pointer to a member of the recipe list.

Definition at line 1029 of file VPlan.h.

◆ insert()

void llvm::VPBasicBlock::insert ( VPRecipeBase Recipe,
iterator  InsertPt 

Definition at line 1038 of file VPlan.h.

References assert(), and llvm::iplist_impl< IntrusiveListT, TraitsT >::insert().

Referenced by llvm::VPBuilder::insert().

◆ rbegin() [1/2]

reverse_iterator llvm::VPBasicBlock::rbegin ( )

Definition at line 1013 of file VPlan.h.

◆ rbegin() [2/2]

const_reverse_iterator llvm::VPBasicBlock::rbegin ( ) const

Definition at line 1014 of file VPlan.h.

◆ rend() [1/2]

reverse_iterator llvm::VPBasicBlock::rend ( )

Definition at line 1015 of file VPlan.h.

◆ rend() [2/2]

const_reverse_iterator llvm::VPBasicBlock::rend ( ) const

Definition at line 1016 of file VPlan.h.

◆ size()

size_t llvm::VPBasicBlock::size ( ) const

Definition at line 1018 of file VPlan.h.

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