LLVM  6.0.0svn
Macros | Functions | Variables
LoadStoreVectorizer.cpp File Reference
#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/PostOrderIterator.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/Triple.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/OrderedBasicBlock.h"
#include "llvm/Analysis/ScalarEvolution.h"
#include "llvm/Analysis/ScalarEvolutionExpressions.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/Analysis/VectorUtils.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Value.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/KnownBits.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Transforms/Utils/Local.h"
#include "llvm/Transforms/Vectorize.h"
Include dependency graph for LoadStoreVectorizer.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "load-store-vectorizer"
 

Functions

 STATISTIC (NumVectorInstructions, "Number of vector accesses generated")
 
 STATISTIC (NumScalarsVectorized, "Number of scalar accesses vectorized")
 
 INITIALIZE_PASS_BEGIN (LoadStoreVectorizer, DEBUG_TYPE, "Vectorize load and Store instructions", false, false) INITIALIZE_PASS_END(LoadStoreVectorizer
 
static void propagateMetadata (Instruction *I, ArrayRef< Instruction *> IL)
 

Variables

 DEBUG_TYPE
 
Vectorize load and store instructions
 
Vectorize load and store false
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "load-store-vectorizer"

Definition at line 40 of file LoadStoreVectorizer.cpp.

Function Documentation

◆ INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( LoadStoreVectorizer  ,
DEBUG_TYPE  ,
"Vectorize load and Store instructions ,
false  ,
false   
)

◆ propagateMetadata()

static void propagateMetadata ( Instruction I,
ArrayRef< Instruction *>  IL 
)
static

Definition at line 186 of file LoadStoreVectorizer.cpp.

References llvm::abs(), llvm::MCID::Add, llvm::all_of(), llvm::TargetTransformInfo::allowsMisalignedMemoryAccesses(), AS, assert(), B, llvm::SmallVectorTemplateCommon< T >::begin(), llvm::ArrayRef< T >::begin(), llvm::MCID::Bitcast, C, llvm::computeKnownBits(), llvm::SmallPtrSetImpl< PtrType >::count(), llvm::KnownBits::countMaxTrailingOnes(), llvm::IRBuilder< T, Inserter >::CreateBitCast(), llvm::IRBuilder< T, Inserter >::CreateBitOrPointerCast(), llvm::IRBuilder< T, Inserter >::CreateExtractElement(), llvm::IRBuilder< T, Inserter >::CreateInsertElement(), llvm::IRBuilder< T, Inserter >::CreateLoad(), llvm::IRBuilder< T, Inserter >::CreateStore(), llvm::dbgs(), DEBUG, llvm::OrderedBasicBlock::dominates(), llvm::Value::dump(), llvm::dyn_cast(), E, llvm::SmallVectorBase::empty(), llvm::ArrayRef< T >::empty(), llvm::ArrayRef< T >::end(), llvm::BasicBlock::end(), llvm::Instruction::eraseFromParent(), llvm::CallingConv::Fast, llvm::ArrayRef< T >::front(), GEP, llvm::MemoryLocation::get(), llvm::VectorType::get(), llvm::UndefValue::get(), llvm::ScalarEvolution::getAddExpr(), getAlignment(), llvm::ScalarEvolution::getConstant(), llvm::Module::getContext(), llvm::IRBuilderBase::getInt32(), llvm::Type::getIntNTy(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::TargetTransformInfo::getLoadStoreVecRegBitWidth(), llvm::TargetTransformInfo::getLoadVectorFactor(), llvm::Value::getName(), llvm::SequentialType::getNumElements(), llvm::User::getNumOperands(), llvm::Instruction::getOpcode(), llvm::User::getOperand(), llvm::getOrEnforceKnownAlignment(), llvm::Instruction::getParent(), llvm::GlobalValue::getParent(), getParent(), llvm::LoadInst::getPointerAddressSpace(), llvm::Type::getPointerAddressSpace(), llvm::StoreInst::getPointerAddressSpace(), llvm::Type::getPointerElementType(), getPointerOperand(), llvm::LoadInst::getPointerOperand(), llvm::StoreInst::getPointerOperand(), llvm::DataLayout::getPointerSizeInBits(), llvm::Type::getScalarType(), llvm::ScalarEvolution::getSCEV(), llvm::TargetTransformInfo::getStoreVectorFactor(), getType(), llvm::Value::getType(), llvm::DataLayout::getTypeSizeInBits(), llvm::DataLayout::getTypeStoreSize(), llvm::GetUnderlyingObject(), llvm::StoreInst::getValueOperand(), llvm::Function::hasFnAttribute(), I, llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::Instruction::insertBefore(), llvm::is_contained(), llvm::isConsecutiveAccess(), llvm::TargetTransformInfo::isLegalToVectorizeLoad(), llvm::TargetTransformInfo::isLegalToVectorizeLoadChain(), llvm::TargetTransformInfo::isLegalToVectorizeStore(), llvm::TargetTransformInfo::isLegalToVectorizeStoreChain(), llvm::AAResults::isNoAlias(), llvm::isPowerOf2_32(), llvm::LoadInst::isSimple(), llvm::StoreInst::isSimple(), llvm::VectorType::isValidElementType(), llvm::make_range(), llvm::Instruction::mayReadOrWriteMemory(), llvm::Instruction::mayThrow(), llvm::Instruction::mayWriteToMemory(), llvm::AArch64CC::NE, llvm::SmallVectorImpl< T >::pop_back_val(), llvm::post_order(), llvm::propagateMetadata(), llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), llvm::Instruction::removeFromParent(), llvm::Value::replaceAllUsesWith(), llvm::LoadInst::setAlignment(), llvm::StoreInst::setAlignment(), llvm::IRBuilderBase::SetInsertPoint(), Signed, llvm::SmallVectorTemplateCommon< T >::size(), llvm::ArrayRef< T >::size(), llvm::AMDGPU::CodeObject::Kernel::Arg::Key::Size, llvm::ArrayRef< T >::slice(), llvm::SPII::Store, llvm::Value::stripAndAccumulateInBoundsConstantOffsets(), llvm::Value::stripPointerCasts(), llvm::Value::use_empty(), users, llvm::Value::users(), and X.

◆ STATISTIC() [1/2]

STATISTIC ( NumVectorInstructions  ,
"Number of vector accesses generated"   
)

◆ STATISTIC() [2/2]

STATISTIC ( NumScalarsVectorized  ,
"Number of scalar accesses vectorized"   
)

Variable Documentation

◆ DEBUG_TYPE

DEBUG_TYPE

Definition at line 175 of file LoadStoreVectorizer.cpp.

◆ false

Vectorize load and store false

Definition at line 175 of file LoadStoreVectorizer.cpp.

◆ instructions

Vectorize load and store instructions

Definition at line 175 of file LoadStoreVectorizer.cpp.