LLVM  6.0.0svn
Classes | Namespaces | Functions
VPlan.h File Reference

This file contains the declarations of the Vectorization Plan base classes: More...

#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/GraphTraits.h"
#include "llvm/ADT/Optional.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Twine.h"
#include "llvm/ADT/ilist.h"
#include "llvm/ADT/ilist_node.h"
#include "llvm/IR/IRBuilder.h"
#include <algorithm>
#include <cassert>
#include <cstddef>
#include <map>
#include <string>
Include dependency graph for VPlan.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  llvm::VPIteration
 In what follows, the term "input IR" refers to code that is fed into the vectorizer whereas the term "output IR" refers to code that is generated by the vectorizer. More...
 
struct  llvm::VectorizerValueMap
 This is a helper struct for maintaining vectorization state. More...
 
struct  llvm::VPTransformState
 VPTransformState holds information passed down when "executing" a VPlan, needed for generating the output IR. More...
 
struct  llvm::VPTransformState::CFGState
 Hold state information used when constructing the CFG of the output IR, traversing the VPBasicBlocks and generating corresponding IR BasicBlocks. More...
 
class  llvm::VPBlockBase
 VPBlockBase is the building block of the Hierarchical Control-Flow Graph. More...
 
class  llvm::VPRecipeBase
 VPRecipeBase is a base class modeling a sequence of one or more output IR instructions. More...
 
class  llvm::VPBasicBlock
 VPBasicBlock serves as the leaf of the Hierarchical Control-Flow Graph. More...
 
class  llvm::VPRegionBlock
 VPRegionBlock represents a collection of VPBasicBlocks and VPRegionBlocks which form a Single-Entry-Single-Exit subgraph of the output IR CFG. More...
 
class  llvm::VPlan
 VPlan models a candidate for vectorization, encoding various decisions take to produce efficient output IR, including which branches, basic-blocks and output IR instructions to generate, and their cost. More...
 
class  llvm::VPlanPrinter
 VPlanPrinter prints a given VPlan to a given output stream. More...
 
struct  llvm::VPlanIngredient
 
struct  llvm::GraphTraits< VPBlockBase * >
 
struct  llvm::GraphTraits< const VPBlockBase * >
 
struct  llvm::GraphTraits< Inverse< VPBlockBase * > >
 

Namespaces

 llvm
 Compute iterated dominance frontiers using a linear time algorithm.
 

Functions

raw_ostream & llvm::operator<< (raw_ostream &OS, const VPlanIngredient &I)
 
raw_ostream & llvm::operator<< (raw_ostream &OS, VPlan &Plan)
 

Detailed Description

This file contains the declarations of the Vectorization Plan base classes:

  1. VPBasicBlock and VPRegionBlock that inherit from a common pure virtual VPBlockBase, together implementing a Hierarchical CFG;
  2. Specializations of GraphTraits that allow VPBlockBase graphs to be treated as proper graphs for generic algorithms;
  3. Pure virtual VPRecipeBase serving as the base class for recipes contained within VPBasicBlocks;
  4. The VPlan class holding a candidate for vectorization;
  5. The VPlanPrinter class providing a way to print a plan in dot format. These are documented in docs/VectorizationPlan.rst.

Definition in file VPlan.h.