LLVM  10.0.0svn
Classes | Namespaces | Functions
VectorUtils.h File Reference
#include "llvm/ADT/MapVector.h"
#include "llvm/Analysis/LoopAccessAnalysis.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/Support/CheckedArithmetic.h"
Include dependency graph for VectorUtils.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  llvm::ArrayRef< T >
 ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory), i.e. More...
 
class  llvm::InterleaveGroup< InstTy >
 The group of interleaved loads/stores sharing the same stride and close to each other. More...
 
class  llvm::InterleaveGroup< InstTy >
 The group of interleaved loads/stores sharing the same stride and close to each other. More...
 
class  llvm::InterleavedAccessInfo
 Drive the analysis of interleaved memory accesses in the loop. More...
 

Namespaces

 llvm
 This class represents lattice values for constants.
 
 llvm::Intrinsic
 This namespace contains an enum with a value for every intrinsic/builtin function known by LLVM.
 

Functions

bool llvm::isTriviallyVectorizable (Intrinsic::ID ID)
 Identify if the intrinsic is trivially vectorizable. More...
 
bool llvm::hasVectorInstrinsicScalarOpd (Intrinsic::ID ID, unsigned ScalarOpdIdx)
 Identifies if the vector form of the intrinsic has a scalar operand. More...
 
Intrinsic::ID llvm::getVectorIntrinsicIDForCall (const CallInst *CI, const TargetLibraryInfo *TLI)
 Returns intrinsic ID for call. More...
 
unsigned llvm::getGEPInductionOperand (const GetElementPtrInst *Gep)
 Find the operand of the GEP that should be checked for consecutive stores. More...
 
Valuellvm::stripGetElementPtr (Value *Ptr, ScalarEvolution *SE, Loop *Lp)
 If the argument is a GEP, then returns the operand identified by getGEPInductionOperand. More...
 
Valuellvm::getUniqueCastUse (Value *Ptr, Loop *Lp, Type *Ty)
 If a value has only one user that is a CastInst, return it. More...
 
Valuellvm::getStrideFromPointer (Value *Ptr, ScalarEvolution *SE, Loop *Lp)
 Get the stride of a pointer access in a loop. More...
 
Valuellvm::findScalarElement (Value *V, unsigned EltNo)
 Given a vector and an element number, see if the scalar value is already around as a register, for example if it were inserted then extracted from the vector. More...
 
const Valuellvm::getSplatValue (const Value *V)
 Get splat value if the input is a splat vector or return nullptr. More...
 
bool llvm::isSplatValue (const Value *V, unsigned Depth=0)
 Return true if the input value is known to be a vector with all identical elements (potentially including undefined elements). More...
 
MapVector< Instruction *, uint64_t > llvm::computeMinimumValueSizes (ArrayRef< BasicBlock *> Blocks, DemandedBits &DB, const TargetTransformInfo *TTI=nullptr)
 Compute a map of integer instructions to their minimum legal type size. More...
 
MDNodellvm::uniteAccessGroups (MDNode *AccGroups1, MDNode *AccGroups2)
 Compute the union of two access-group lists. More...
 
MDNodellvm::intersectAccessGroups (const Instruction *Inst1, const Instruction *Inst2)
 Compute the access-group list of access groups that Inst1 and Inst2 are both in. More...
 
Instructionllvm::propagateMetadata (Instruction *I, ArrayRef< Value *> VL)
 Specifically, let Kinds = [MD_tbaa, MD_alias_scope, MD_noalias, MD_fpmath, MD_nontemporal, MD_access_group]. More...
 
Constantllvm::createBitMaskForGaps (IRBuilder<> &Builder, unsigned VF, const InterleaveGroup< Instruction > &Group)
 Create a mask that filters the members of an interleave group where there are gaps. More...
 
Constantllvm::createReplicatedMask (IRBuilder<> &Builder, unsigned ReplicationFactor, unsigned VF)
 Create a mask with replicated elements. More...
 
Constantllvm::createInterleaveMask (IRBuilder<> &Builder, unsigned VF, unsigned NumVecs)
 Create an interleave shuffle mask. More...
 
Constantllvm::createStrideMask (IRBuilder<> &Builder, unsigned Start, unsigned Stride, unsigned VF)
 Create a stride shuffle mask. More...
 
Constantllvm::createSequentialMask (IRBuilder<> &Builder, unsigned Start, unsigned NumInts, unsigned NumUndefs)
 Create a sequential shuffle mask. More...
 
Valuellvm::concatenateVectors (IRBuilder<> &Builder, ArrayRef< Value *> Vecs)
 Concatenate a list of vectors. More...
 
bool llvm::maskIsAllZeroOrUndef (Value *Mask)
 Given a mask vector of the form <Y x="" i1>="">, Return true if all of the elements of this predicate mask are false or undef. More...
 
bool llvm::maskIsAllOneOrUndef (Value *Mask)
 Given a mask vector of the form <Y x="" i1>="">, Return true if all of the elements of this predicate mask are true or undef. More...
 
APInt llvm::possiblyDemandedEltsInMask (Value *Mask)
 Given a mask vector of the form <Y x="" i1>="">, return an APInt (of bitwidth Y) for each lane which may be active. More...