LLVM  4.0.0
Macros | Functions | Variables
CostModel.cpp File Reference
#include "llvm/ADT/STLExtras.h"
#include "llvm/Analysis/Passes.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/Analysis/VectorUtils.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Value.h"
#include "llvm/Pass.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
Include dependency graph for CostModel.cpp:

Go to the source code of this file.

Macros

#define CM_NAME   "cost-model"
 
#define DEBUG_TYPE   CM_NAME
 

Functions

static bool isReverseVectorMask (ArrayRef< int > Mask)
 
static bool isSingleSourceVectorMask (ArrayRef< int > Mask)
 
static bool isZeroEltBroadcastVectorMask (ArrayRef< int > Mask)
 
static bool isAlternateVectorMask (ArrayRef< int > Mask)
 
static
TargetTransformInfo::OperandValueKind 
getOperandInfo (Value *V)
 
static bool matchPairwiseShuffleMask (ShuffleVectorInst *SI, bool IsLeft, unsigned Level)
 
static bool matchPairwiseReductionAtLevel (const BinaryOperator *BinOp, unsigned Level, unsigned NumLevels)
 
static bool matchPairwiseReduction (const ExtractElementInst *ReduxRoot, unsigned &Opcode, Type *&Ty)
 
static std::pair< Value
*, ShuffleVectorInst * > 
getShuffleAndOtherOprd (BinaryOperator *B)
 
static bool matchVectorSplittingReduction (const ExtractElementInst *ReduxRoot, unsigned &Opcode, Type *&Ty)
 

Variables

static cl::opt< boolEnableReduxCost ("costmodel-reduxcost", cl::init(false), cl::Hidden, cl::desc("Recognize reduction patterns."))
 
static const char cm_name [] = "Cost Model Analysis"
 

Macro Definition Documentation

#define CM_NAME   "cost-model"

Definition at line 34 of file CostModel.cpp.

#define DEBUG_TYPE   CM_NAME

Definition at line 35 of file CostModel.cpp.

Function Documentation

static TargetTransformInfo::OperandValueKind getOperandInfo ( Value V)
static
static std::pair<Value *, ShuffleVectorInst *> getShuffleAndOtherOprd ( BinaryOperator B)
static

Definition at line 317 of file CostModel.cpp.

References llvm::dyn_cast(), llvm::User::getOperand(), and L.

Referenced by matchVectorSplittingReduction().

static bool isAlternateVectorMask ( ArrayRef< int >  Mask)
static

Definition at line 121 of file CostModel.cpp.

References i, and llvm::ArrayRef< T >::size().

static bool isReverseVectorMask ( ArrayRef< int >  Mask)
static

Definition at line 93 of file CostModel.cpp.

References i, and llvm::ArrayRef< T >::size().

static bool isSingleSourceVectorMask ( ArrayRef< int >  Mask)
static

Definition at line 100 of file CostModel.cpp.

References i, and llvm::ArrayRef< T >::size().

static bool isZeroEltBroadcastVectorMask ( ArrayRef< int >  Mask)
static

Definition at line 114 of file CostModel.cpp.

References i, and llvm::ArrayRef< T >::size().

static bool matchPairwiseReduction ( const ExtractElementInst ReduxRoot,
unsigned Opcode,
Type *&  Ty 
)
static
static bool matchPairwiseReductionAtLevel ( const BinaryOperator BinOp,
unsigned  Level,
unsigned  NumLevels 
)
static
static bool matchPairwiseShuffleMask ( ShuffleVectorInst SI,
bool  IsLeft,
unsigned  Level 
)
static
static bool matchVectorSplittingReduction ( const ExtractElementInst ReduxRoot,
unsigned Opcode,
Type *&  Ty 
)
static

Variable Documentation

const char cm_name[] = "Cost Model Analysis"
static

Definition at line 71 of file CostModel.cpp.

cl::opt<bool> EnableReduxCost("costmodel-reduxcost", cl::init(false), cl::Hidden, cl::desc("Recognize reduction patterns."))
static