class VPRegionBlock

Declaration

class VPRegionBlock : public VPBlockBase { /* full declaration omitted */ };

Description

VPRegionBlock represents a collection of VPBasicBlocks and VPRegionBlocks which form a Single-Entry-Single-Exit subgraph of the output IR CFG. A VPRegionBlock may indicate that its contents are to be replicated several times. This is designed to support predicated scalarization, in which a scalar if-then code structure needs to be generated VF * UF times. Having this replication indicator helps to keep a single model for multiple candidate VF's. The actual replication takes place only once the desired VF and UF have been determined.

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

Inherits from: VPBlockBase

Method Overview

  • public VPRegionBlock(llvm::VPBlockBase * Entry, llvm::VPBlockBase * Exit, const std::string & Name = "", bool IsReplicator = false)
  • public VPRegionBlock(const std::string & Name = "", bool IsReplicator = false)
  • public static inline bool classof(const llvm::VPBlockBase * V)
  • public void execute(struct VPTransformState * State)
  • public llvm::VPBlockBase & front() const
  • public const llvm::VPBlockBase * getEntry() const
  • public llvm::VPBlockBase * getEntry()
  • public const llvm::VPBlockBase * getExit() const
  • public llvm::VPBlockBase * getExit()
  • public bool isReplicator() const
  • public void setEntry(llvm::VPBlockBase * EntryBlock)
  • public void setExit(llvm::VPBlockBase * ExitBlock)
  • public ~VPRegionBlock()

Inherited from VPBlockBase:

Methods

VPRegionBlock(llvm::VPBlockBase* Entry,
              llvm::VPBlockBase* Exit,
              const std::string& Name = "",
              bool IsReplicator = false)

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

Parameters

llvm::VPBlockBase* Entry
llvm::VPBlockBase* Exit
const std::string& Name = ""
bool IsReplicator = false

VPRegionBlock(const std::string& Name = "",
              bool IsReplicator = false)

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

Parameters

const std::string& Name = ""
bool IsReplicator = false

static inline bool classof(
    const llvm::VPBlockBase* V)

Description

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

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

Parameters

const llvm::VPBlockBase* V

void execute(struct VPTransformState* State)

Description

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

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

Parameters

struct VPTransformState* State

llvm::VPBlockBase& front() const

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

const llvm::VPBlockBase* getEntry() const

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

llvm::VPBlockBase* getEntry()

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

const llvm::VPBlockBase* getExit() const

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

llvm::VPBlockBase* getExit()

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

bool isReplicator() const

Description

An indicator whether this region is to generate multiple replicated instances of output IR corresponding to its VPBlockBases.

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

void setEntry(llvm::VPBlockBase* EntryBlock)

Description

Set \p EntryBlock as the entry VPBlockBase of this VPRegionBlock. \p EntryBlock must have no predecessors.

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

Parameters

llvm::VPBlockBase* EntryBlock

void setExit(llvm::VPBlockBase* ExitBlock)

Description

Set \p ExitBlock as the exit VPBlockBase of this VPRegionBlock. \p ExitBlock must have no successors.

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

Parameters

llvm::VPBlockBase* ExitBlock

~VPRegionBlock()

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