class VPBlockBase

Declaration

class VPBlockBase { /* full declaration omitted */ };

Description

VPBlockBase is the building block of the Hierarchical Control-Flow Graph. A VPBlockBase can be either a VPBasicBlock or a VPRegionBlock.

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:343

Method Overview

Methods

VPBlockBase(const unsigned char SC,
            const std::string& N)

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:395

Parameters

const unsigned char SC
const std::string& N

void clearPredecessors()

Description

Remove all the predecessor of this block.

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:543

void clearSuccessors()

Description

Remove all the successors of this block and set to null its condition bit

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:546

static void deleteCFG(llvm::VPBlockBase* Entry)

Description

Delete all blocks reachable from a given VPBlockBase, inclusive.

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:556

Parameters

llvm::VPBlockBase* Entry

virtual void execute(
    struct VPTransformState* State)

Description

The method which generates the output IR that correspond to this VPBlockBase, thereby "executing" the VPlan.

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:553

Parameters

struct VPTransformState* State

llvm::VPValue* getCondBit()

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:500

Returns

the condition bit selecting the successor.

const llvm::VPValue* getCondBit() const

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:502

llvm::VPBlockBase*
getEnclosingBlockWithPredecessors()

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:465

Returns

the root enclosing block if all enclosing blocks have no predecessors.

llvm::VPBlockBase*
getEnclosingBlockWithSuccessors()

Description

An Enclosing Block of a block B is any block containing B, including B itself.

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:460

Returns

the root enclosing block if all enclosing blocks have no successors.

const llvm::VPBasicBlock* getEntryBasicBlock()
    const

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:426

Returns

the VPBasicBlock that is the entry of this VPBlockBase, recursively, if the latter is a VPRegionBlock. Otherwise, if this VPBlockBase is a VPBasicBlock, it is returned.

llvm::VPBasicBlock* getEntryBasicBlock()

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:427

const llvm::VPBasicBlock* getExitBasicBlock()
    const

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:432

Returns

the VPBasicBlock that is the exit of this VPBlockBase, recursively, if the latter is a VPRegionBlock. Otherwise, if this VPBlockBase is a VPBasicBlock, it is returned.

llvm::VPBasicBlock* getExitBasicBlock()

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:433

const llvm::VPBlockBase::VPBlocksTy&
getHierarchicalPredecessors()

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:489

Returns

the predecessors either attached directly to this VPBlockBase or, if this VPBlockBase is the entry block of a VPRegionBlock and has no predecessors of its own, search recursively for the first enclosing VPRegionBlock that has predecessors and return them. If no such VPRegionBlock exists, return the (empty) predecessors of the topmost VPBlockBase reached.

const llvm::VPBlockBase::VPBlocksTy&
getHierarchicalSuccessors()

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:473

Returns

the successors either attached directly to this VPBlockBase or, if this VPBlockBase is the exit block of a VPRegionBlock and has no successors of its own, search recursively for the first enclosing VPRegionBlock that has successors and return them. If no such VPRegionBlock exists, return the (empty) successors of the topmost VPBlockBase reached.

const std::string& getName() const

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:409

size_t getNumPredecessors() const

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:454

size_t getNumSuccessors() const

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:453

const llvm::VPRegionBlock* getParent() const

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:419

llvm::VPRegionBlock* getParent()

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:418

llvm::VPBlockBase::VPBlocksTy& getPredecessors()

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:439

const llvm::VPBlockBase::VPBlocksTy&
getPredecessors() const

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:438

const llvm::VPValue* getPredicate() const

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:508

llvm::VPValue* getPredicate()

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:506

llvm::VPBlockBase*
getSingleHierarchicalPredecessor()

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:495

Returns

the hierarchical predecessor of this VPBlockBase if it has a single hierarchical predecessor. Otherwise return a null pointer.

llvm::VPBlockBase*
getSingleHierarchicalSuccessor()

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:479

Returns

the hierarchical successor of this VPBlockBase if it has a single hierarchical successor. Otherwise return a null pointer.

llvm::VPBlockBase* getSinglePredecessor() const

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:449

Returns

the predecessor of this VPBlockBase if it has a single predecessor. Otherwise return a null pointer.

llvm::VPBlockBase* getSingleSuccessor() const

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:443

Returns

the successor of this VPBlockBase if it has a single successor. Otherwise return a null pointer.

llvm::VPBlockBase::VPBlocksTy& getSuccessors()

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:436

const llvm::VPBlockBase::VPBlocksTy&
getSuccessors() const

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:435

unsigned int getVPBlockID() const

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:416

Returns

an ID for the concrete type of this object. This is used to implement the classof checks. This should not be used for any other purpose, as the values may change as LLVM evolves.

bool isLegalToHoistInto()

Description

Return true if it is legal to hoist instructions into this block.

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:569

void print(llvm::raw_ostream& OS) const

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:562

Parameters

llvm::raw_ostream& OS

void printAsOperand(llvm::raw_ostream& OS,
                    bool PrintType) const

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:558

Parameters

llvm::raw_ostream& OS
bool PrintType

void setCondBit(llvm::VPValue* CV)

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:504

Parameters

llvm::VPValue* CV

void setName(const llvm::Twine& newName)

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:411

Parameters

const llvm::Twine& newName

void setOneSuccessor(llvm::VPBlockBase* Successor)

Description

Set a given VPBlockBase \p Successor as the single successor of this VPBlockBase. This VPBlockBase is not added as predecessor of \p Successor. This VPBlockBase must have no successors.

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:515

Parameters

llvm::VPBlockBase* Successor

void setParent(llvm::VPRegionBlock* P)

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:421

Parameters

llvm::VPRegionBlock* P

void setPredecessors(
    ArrayRef<llvm::VPBlockBase*> NewPreds)

Description

Set each VPBasicBlock in \p NewPreds as predecessor of this VPBlockBase. This VPBlockBase must have no predecessors. This VPBlockBase is not added as successor of any VPBasicBlock in \p NewPreds.

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:536

Parameters

ArrayRef<llvm::VPBlockBase*> NewPreds

void setPredicate(llvm::VPValue* Pred)

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:510

Parameters

llvm::VPValue* Pred

void setTwoSuccessors(llvm::VPBlockBase* IfTrue,
                      llvm::VPBlockBase* IfFalse,
                      llvm::VPValue* Condition)

Description

Set two given VPBlockBases \p IfTrue and \p IfFalse to be the two successors of this VPBlockBase. \p Condition is set as the successor selector. This VPBlockBase is not added as predecessor of \p IfTrue or \p IfFalse. This VPBlockBase must have no successors.

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:524

Parameters

llvm::VPBlockBase* IfTrue
llvm::VPBlockBase* IfFalse
llvm::VPValue* Condition

virtual ~VPBlockBase()

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:407