diff --git a/llvm/include/llvm/Transforms/Utils/LoopUtils.h b/llvm/include/llvm/Transforms/Utils/LoopUtils.h index 31d17ebf0f650..ff9881d4989da 100644 --- a/llvm/include/llvm/Transforms/Utils/LoopUtils.h +++ b/llvm/include/llvm/Transforms/Utils/LoopUtils.h @@ -27,7 +27,6 @@ #include "llvm/Analysis/MustExecute.h" #include "llvm/Analysis/TargetTransformInfo.h" #include "llvm/IR/Dominators.h" -#include "llvm/IR/IRBuilder.h" #include "llvm/IR/InstrTypes.h" #include "llvm/IR/Operator.h" #include "llvm/IR/ValueHandle.h" @@ -39,6 +38,7 @@ class AliasSet; class AliasSetTracker; class BasicBlock; class DataLayout; +class IRBuilderBase; class Loop; class LoopInfo; class MemoryAccess; @@ -309,20 +309,20 @@ bool canSinkOrHoistInst(Instruction &I, AAResults *AA, DominatorTree *DT, OptimizationRemarkEmitter *ORE = nullptr); /// Returns a Min/Max operation corresponding to MinMaxRecurrenceKind. -Value *createMinMaxOp(IRBuilder<> &Builder, +Value *createMinMaxOp(IRBuilderBase &Builder, RecurrenceDescriptor::MinMaxRecurrenceKind RK, Value *Left, Value *Right); /// Generates an ordered vector reduction using extracts to reduce the value. Value * -getOrderedReduction(IRBuilder<> &Builder, Value *Acc, Value *Src, unsigned Op, +getOrderedReduction(IRBuilderBase &Builder, Value *Acc, Value *Src, unsigned Op, RecurrenceDescriptor::MinMaxRecurrenceKind MinMaxKind = RecurrenceDescriptor::MRK_Invalid, ArrayRef RedOps = None); /// Generates a vector reduction using shufflevectors to reduce the value. /// Fast-math-flags are propagated using the IRBuilder's setting. -Value *getShuffleReduction(IRBuilder<> &Builder, Value *Src, unsigned Op, +Value *getShuffleReduction(IRBuilderBase &Builder, Value *Src, unsigned Op, RecurrenceDescriptor::MinMaxRecurrenceKind MinMaxKind = RecurrenceDescriptor::MRK_Invalid, ArrayRef RedOps = None); @@ -333,7 +333,7 @@ Value *getShuffleReduction(IRBuilder<> &Builder, Value *Src, unsigned Op, /// The target is queried to determine if intrinsics or shuffle sequences are /// required to implement the reduction. /// Fast-math-flags are propagated using the IRBuilder's setting. -Value *createSimpleTargetReduction(IRBuilder<> &B, +Value *createSimpleTargetReduction(IRBuilderBase &B, const TargetTransformInfo *TTI, unsigned Opcode, Value *Src, TargetTransformInfo::ReductionFlags Flags = @@ -344,7 +344,7 @@ Value *createSimpleTargetReduction(IRBuilder<> &B, /// The target is queried to determine if intrinsics or shuffle sequences are /// required to implement the reduction. /// Fast-math-flags are propagated using the RecurrenceDescriptor. -Value *createTargetReduction(IRBuilder<> &B, const TargetTransformInfo *TTI, +Value *createTargetReduction(IRBuilderBase &B, const TargetTransformInfo *TTI, RecurrenceDescriptor &Desc, Value *Src, bool NoNaN = false); diff --git a/llvm/lib/Transforms/Utils/LoopUtils.cpp b/llvm/lib/Transforms/Utils/LoopUtils.cpp index d7789e443fc23..938852ded3eaf 100644 --- a/llvm/lib/Transforms/Utils/LoopUtils.cpp +++ b/llvm/lib/Transforms/Utils/LoopUtils.cpp @@ -824,7 +824,7 @@ bool llvm::hasIterationCountInvariantInParent(Loop *InnerLoop, return true; } -Value *llvm::createMinMaxOp(IRBuilder<> &Builder, +Value *llvm::createMinMaxOp(IRBuilderBase &Builder, RecurrenceDescriptor::MinMaxRecurrenceKind RK, Value *Left, Value *Right) { CmpInst::Predicate P = CmpInst::ICMP_NE; @@ -853,7 +853,7 @@ Value *llvm::createMinMaxOp(IRBuilder<> &Builder, // We only match FP sequences that are 'fast', so we can unconditionally // set it on any generated instructions. - IRBuilder<>::FastMathFlagGuard FMFG(Builder); + IRBuilderBase::FastMathFlagGuard FMFG(Builder); FastMathFlags FMF; FMF.setFast(); Builder.setFastMathFlags(FMF); @@ -871,7 +871,7 @@ Value *llvm::createMinMaxOp(IRBuilder<> &Builder, // Helper to generate an ordered reduction. Value * -llvm::getOrderedReduction(IRBuilder<> &Builder, Value *Acc, Value *Src, +llvm::getOrderedReduction(IRBuilderBase &Builder, Value *Acc, Value *Src, unsigned Op, RecurrenceDescriptor::MinMaxRecurrenceKind MinMaxKind, ArrayRef RedOps) { @@ -902,7 +902,7 @@ llvm::getOrderedReduction(IRBuilder<> &Builder, Value *Acc, Value *Src, // Helper to generate a log2 shuffle reduction. Value * -llvm::getShuffleReduction(IRBuilder<> &Builder, Value *Src, unsigned Op, +llvm::getShuffleReduction(IRBuilderBase &Builder, Value *Src, unsigned Op, RecurrenceDescriptor::MinMaxRecurrenceKind MinMaxKind, ArrayRef RedOps) { unsigned VF = Src->getType()->getVectorNumElements(); @@ -950,7 +950,7 @@ llvm::getShuffleReduction(IRBuilder<> &Builder, Value *Src, unsigned Op, /// Create a simple vector reduction specified by an opcode and some /// flags (if generating min/max reductions). Value *llvm::createSimpleTargetReduction( - IRBuilder<> &Builder, const TargetTransformInfo *TTI, unsigned Opcode, + IRBuilderBase &Builder, const TargetTransformInfo *TTI, unsigned Opcode, Value *Src, TargetTransformInfo::ReductionFlags Flags, ArrayRef RedOps) { assert(isa(Src->getType()) && "Type must be a vector"); @@ -1021,7 +1021,7 @@ Value *llvm::createSimpleTargetReduction( } /// Create a vector reduction using a given recurrence descriptor. -Value *llvm::createTargetReduction(IRBuilder<> &B, +Value *llvm::createTargetReduction(IRBuilderBase &B, const TargetTransformInfo *TTI, RecurrenceDescriptor &Desc, Value *Src, bool NoNaN) { @@ -1033,7 +1033,7 @@ Value *llvm::createTargetReduction(IRBuilder<> &B, // All ops in the reduction inherit fast-math-flags from the recurrence // descriptor. - IRBuilder<>::FastMathFlagGuard FMFGuard(B); + IRBuilderBase::FastMathFlagGuard FMFGuard(B); B.setFastMathFlags(Desc.getFastMathFlags()); switch (RecKind) {