1717#include " llvm/ADT/SmallSet.h"
1818#include " llvm/Analysis/LoopAccessAnalysis.h"
1919#include " llvm/Analysis/TargetLibraryInfo.h"
20- #include " llvm/IR/IRBuilder.h"
2120#include " llvm/Support/CheckedArithmetic.h"
2221
2322namespace llvm {
@@ -254,6 +253,7 @@ template <typename T> class ArrayRef;
254253class DemandedBits ;
255254class GetElementPtrInst ;
256255template <typename InstTy> class InterleaveGroup ;
256+ class IRBuilderBase ;
257257class Loop ;
258258class ScalarEvolution ;
259259class TargetTransformInfo ;
@@ -394,7 +394,7 @@ Instruction *propagateMetadata(Instruction *I, ArrayRef<Value *> VL);
394394// / Note: The result is a mask of 0's and 1's, as opposed to the other
395395// / create[*]Mask() utilities which create a shuffle mask (mask that
396396// / consists of indices).
397- Constant *createBitMaskForGaps (IRBuilder<> &Builder, unsigned VF,
397+ Constant *createBitMaskForGaps (IRBuilderBase &Builder, unsigned VF,
398398 const InterleaveGroup<Instruction> &Group);
399399
400400// / Create a mask with replicated elements.
@@ -409,8 +409,8 @@ Constant *createBitMaskForGaps(IRBuilder<> &Builder, unsigned VF,
409409// / For example, the mask for \p ReplicationFactor=3 and \p VF=4 is:
410410// /
411411// / <0,0,0,1,1,1,2,2,2,3,3,3>
412- Constant *createReplicatedMask (IRBuilder<> &Builder, unsigned ReplicationFactor ,
413- unsigned VF);
412+ Constant *createReplicatedMask (IRBuilderBase &Builder,
413+ unsigned ReplicationFactor, unsigned VF);
414414
415415// / Create an interleave shuffle mask.
416416// /
@@ -423,7 +423,7 @@ Constant *createReplicatedMask(IRBuilder<> &Builder, unsigned ReplicationFactor,
423423// / For example, the mask for VF = 4 and NumVecs = 2 is:
424424// /
425425// / <0, 4, 1, 5, 2, 6, 3, 7>.
426- Constant *createInterleaveMask (IRBuilder<> &Builder, unsigned VF,
426+ Constant *createInterleaveMask (IRBuilderBase &Builder, unsigned VF,
427427 unsigned NumVecs);
428428
429429// / Create a stride shuffle mask.
@@ -438,7 +438,7 @@ Constant *createInterleaveMask(IRBuilder<> &Builder, unsigned VF,
438438// / For example, the mask for Start = 0, Stride = 2, and VF = 4 is:
439439// /
440440// / <0, 2, 4, 6>
441- Constant *createStrideMask (IRBuilder<> &Builder, unsigned Start,
441+ Constant *createStrideMask (IRBuilderBase &Builder, unsigned Start,
442442 unsigned Stride, unsigned VF);
443443
444444// / Create a sequential shuffle mask.
@@ -452,7 +452,7 @@ Constant *createStrideMask(IRBuilder<> &Builder, unsigned Start,
452452// / For example, the mask for Start = 0, NumInsts = 4, and NumUndefs = 4 is:
453453// /
454454// / <0, 1, 2, 3, undef, undef, undef, undef>
455- Constant *createSequentialMask (IRBuilder<> &Builder, unsigned Start,
455+ Constant *createSequentialMask (IRBuilderBase &Builder, unsigned Start,
456456 unsigned NumInts, unsigned NumUndefs);
457457
458458// / Concatenate a list of vectors.
@@ -462,7 +462,7 @@ Constant *createSequentialMask(IRBuilder<> &Builder, unsigned Start,
462462// / their element types should be the same. The number of elements in the
463463// / vectors should also be the same; however, if the last vector has fewer
464464// / elements, it will be padded with undefs.
465- Value *concatenateVectors (IRBuilder<> &Builder, ArrayRef<Value *> Vecs);
465+ Value *concatenateVectors (IRBuilderBase &Builder, ArrayRef<Value *> Vecs);
466466
467467// / Given a mask vector of the form <Y x i1>, Return true if all of the
468468// / elements of this predicate mask are false or undef. That is, return true
0 commit comments