15#ifndef LLVM_IR_VECTORBUILDER_H
16#define LLVM_IR_VECTORBUILDER_H
45 Value *ExplicitVectorLength;
53 void handleError(
const char *ErrorMsg)
const;
54 template <
typename RetType>
55 RetType returnWithError(
const char *ErrorMsg)
const {
56 handleError(ErrorMsg);
61 Value *createVectorInstructionImpl(
Intrinsic::ID VPID, Type *ReturnTy,
62 ArrayRef<Value *> VecOpArray,
63 const Twine &
Name = Twine());
68 : Builder(Builder), ErrorHandling(ErrorHandling), Mask(nullptr),
69 ExplicitVectorLength(nullptr),
83 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)
Value * createSimpleReduction(Intrinsic::ID RdxID, Type *ValTy, ArrayRef< Value * > VecOpArray, const Twine &Name=Twine())
Emit a VP reduction intrinsic call for recurrence kind.
VectorBuilder & setEVL(Value *NewExplicitVectorLength)
Module & getModule() const
VectorBuilder & setMask(Value *NewMask)
Value * createVectorInstruction(unsigned Opcode, Type *ReturnTy, ArrayRef< Value * > VecOpArray, const Twine &Name=Twine())
This is an optimization pass for GlobalISel generic memory operations.