15#ifndef LLVM_IR_VECTORBUILDER_H
16#define LLVM_IR_VECTORBUILDER_H
46 Value *ExplicitVectorLength;
54 void handleError(
const char *ErrorMsg)
const;
55 template <
typename RetType>
56 RetType returnWithError(
const char *ErrorMsg)
const {
57 handleError(ErrorMsg);
62 Value *createVectorInstructionImpl(
Intrinsic::ID VPID, Type *ReturnTy,
63 ArrayRef<Value *> VecOpArray,
64 const Twine &
Name = Twine());
69 : Builder(Builder), ErrorHandling(ErrorHandling), Mask(nullptr),
70 ExplicitVectorLength(nullptr),
84 ExplicitVectorLength = NewExplicitVectorLength;
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
static constexpr ElementCount getFixed(ScalarTy MinVal)
Common base class shared among various IRBuilders.
LLVMContext & getContext() const
This is an important class for using LLVM in a threaded context.
A Module instance is used to store all the information related to an LLVM module.
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
The instances of the Type class are immutable: once they are created, they are never changed.
LLVM Value Representation.
LLVMContext & getContext() const
VectorBuilder(IRBuilderBase &Builder, Behavior ErrorHandling=Behavior::ReportAndAbort)
VectorBuilder & setStaticVL(unsigned NewFixedVL)
VectorBuilder & setEVL(Value *NewExplicitVectorLength)
Module & getModule() const
VectorBuilder & setMask(Value *NewMask)
Value * createSimpleTargetReduction(RecurKind Kind, Type *ValTy, ArrayRef< Value * > VecOpArray, const Twine &Name=Twine())
Emit a VP reduction intrinsic call for recurrence kind.
Value * createVectorInstruction(unsigned Opcode, Type *ReturnTy, ArrayRef< Value * > VecOpArray, const Twine &Name=Twine())
This is an optimization pass for GlobalISel generic memory operations.
RecurKind
These are the kinds of recurrences that we support.