LLVM  7.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
[legend]
Collaboration diagram for llvm::VPBasicBlock:
Collaboration graph
[legend]

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 ()
 
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
 
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
 
VPBlockBasegetEnclosingBlockWithSuccessors ()
 An Enclosing Block of a block B is any block containing B, including B itself. More...
 
VPBlockBasegetEnclosingBlockWithPredecessors ()
 
const VPBlocksTygetHierarchicalSuccessors ()
 
VPBlockBasegetSingleHierarchicalSuccessor ()
 
const VPBlocksTygetHierarchicalPredecessors ()
 
VPBlockBasegetSingleHierarchicalPredecessor ()
 
VPBlockBasesetOneSuccessor (VPBlockBase *Successor)
 Sets a given VPBlockBase Successor as the single successor and. More...
 
void setTwoSuccessors (VPBlockBase *IfTrue, VPBlockBase *IfFalse)
 Sets two given VPBlockBases IfTrue and IfFalse to be the two successors. More...
 
void disconnectSuccessor (VPBlockBase *Successor)
 

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 862 of file VPlan.h.

Member Typedef Documentation

◆ const_iterator

Definition at line 881 of file VPlan.h.

◆ const_reverse_iterator

Definition at line 883 of file VPlan.h.

◆ iterator

Instruction iterators...

Definition at line 880 of file VPlan.h.

◆ RecipeListTy

Definition at line 864 of file VPlan.h.

◆ reverse_iterator

Definition at line 882 of file VPlan.h.

Constructor & Destructor Documentation

◆ VPBasicBlock()

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

Definition at line 871 of file VPlan.h.

◆ ~VPBasicBlock()

llvm::VPBasicBlock::~VPBasicBlock ( )
inlineoverride

Definition at line 877 of file VPlan.h.

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

Member Function Documentation

◆ appendRecipe()

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

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

Definition at line 924 of file VPlan.h.

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

Referenced by llvm::LoopVectorizationPlanner::buildVPlans().

◆ back() [1/2]

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

Definition at line 902 of file VPlan.h.

Referenced by llvm::LoopVectorizationPlanner::buildVPlans().

◆ back() [2/2]

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

Definition at line 903 of file VPlan.h.

◆ begin() [1/2]

iterator llvm::VPBasicBlock::begin ( )
inline

Recipe iterator methods.

Definition at line 888 of file VPlan.h.

◆ begin() [2/2]

const_iterator llvm::VPBasicBlock::begin ( ) const
inline

Definition at line 889 of file VPlan.h.

◆ classof()

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

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

Definition at line 911 of file VPlan.h.

References llvm::VPBlockBase::getVPBlockID().

◆ empty()

bool llvm::VPBasicBlock::empty ( ) const
inline

Definition at line 899 of file VPlan.h.

Referenced by llvm::LoopVectorizationPlanner::buildVPlans().

◆ end() [1/2]

iterator llvm::VPBasicBlock::end ( )
inline

Definition at line 890 of file VPlan.h.

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

◆ end() [2/2]

const_iterator llvm::VPBasicBlock::end ( ) const
inline

Definition at line 891 of file VPlan.h.

◆ execute()

void VPBasicBlock::execute ( struct VPTransformState State)
overridevirtual

◆ front() [1/2]

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

Definition at line 900 of file VPlan.h.

◆ front() [2/2]

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

Definition at line 901 of file VPlan.h.

◆ getSublistAccess()

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

Returns a pointer to a member of the recipe list.

Definition at line 906 of file VPlan.h.

◆ insert()

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

Definition at line 915 of file VPlan.h.

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

◆ rbegin() [1/2]

reverse_iterator llvm::VPBasicBlock::rbegin ( )
inline

Definition at line 893 of file VPlan.h.

◆ rbegin() [2/2]

const_reverse_iterator llvm::VPBasicBlock::rbegin ( ) const
inline

Definition at line 894 of file VPlan.h.

◆ rend() [1/2]

reverse_iterator llvm::VPBasicBlock::rend ( )
inline

Definition at line 895 of file VPlan.h.

◆ rend() [2/2]

const_reverse_iterator llvm::VPBasicBlock::rend ( ) const
inline

Definition at line 896 of file VPlan.h.

◆ size()

size_t llvm::VPBasicBlock::size ( ) const
inline

Definition at line 898 of file VPlan.h.


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