From 20835cff272e2096a57aa5de53f6923f24a42049 Mon Sep 17 00:00:00 2001 From: Sjoerd Meijer Date: Tue, 9 Jun 2020 17:19:57 +0100 Subject: [PATCH] [TTI] Refactor emitGetActiveLaneMask Refactor TTI hook emitGetActiveLaneMask and remove the unused arguments as suggested in D79100. --- llvm/include/llvm/Analysis/TargetTransformInfo.h | 13 +++++-------- llvm/include/llvm/Analysis/TargetTransformInfoImpl.h | 3 +-- llvm/include/llvm/CodeGen/BasicTTIImpl.h | 5 ++--- llvm/lib/Analysis/TargetTransformInfo.cpp | 5 ++--- llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp | 14 ++++++++------ llvm/lib/Target/ARM/ARMTargetTransformInfo.h | 3 +-- 6 files changed, 19 insertions(+), 24 deletions(-) diff --git a/llvm/include/llvm/Analysis/TargetTransformInfo.h b/llvm/include/llvm/Analysis/TargetTransformInfo.h index 247b8a6..52da77d 100644 --- a/llvm/include/llvm/Analysis/TargetTransformInfo.h +++ b/llvm/include/llvm/Analysis/TargetTransformInfo.h @@ -529,9 +529,8 @@ public: const LoopAccessInfo *LAI) const; /// Query the target whether lowering of the llvm.get.active.lane.mask - /// intrinsic is supported and if emitting it is desired for this loop. - bool emitGetActiveLaneMask(Loop *L, LoopInfo *LI, ScalarEvolution &SE, - bool TailFolded) const; + /// intrinsic is supported. + bool emitGetActiveLaneMask() const; /// @} @@ -1290,8 +1289,7 @@ public: preferPredicateOverEpilogue(Loop *L, LoopInfo *LI, ScalarEvolution &SE, AssumptionCache &AC, TargetLibraryInfo *TLI, DominatorTree *DT, const LoopAccessInfo *LAI) = 0; - virtual bool emitGetActiveLaneMask(Loop *L, LoopInfo *LI, ScalarEvolution &SE, - bool TailFolded) = 0; + virtual bool emitGetActiveLaneMask() = 0; virtual bool isLegalAddImmediate(int64_t Imm) = 0; virtual bool isLegalICmpImmediate(int64_t Imm) = 0; virtual bool isLegalAddressingMode(Type *Ty, GlobalValue *BaseGV, @@ -1571,9 +1569,8 @@ public: const LoopAccessInfo *LAI) override { return Impl.preferPredicateOverEpilogue(L, LI, SE, AC, TLI, DT, LAI); } - bool emitGetActiveLaneMask(Loop *L, LoopInfo *LI, ScalarEvolution &SE, - bool TailFolded) override { - return Impl.emitGetActiveLaneMask(L, LI, SE, TailFolded); + bool emitGetActiveLaneMask() override { + return Impl.emitGetActiveLaneMask(); } bool isLegalAddImmediate(int64_t Imm) override { return Impl.isLegalAddImmediate(Imm); diff --git a/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h b/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h index f8bfc4b..2f6faa7 100644 --- a/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h +++ b/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h @@ -141,8 +141,7 @@ public: return false; } - bool emitGetActiveLaneMask(Loop *L, LoopInfo *LI, ScalarEvolution &SE, - bool TailFold) const { + bool emitGetActiveLaneMask() const { return false; } diff --git a/llvm/include/llvm/CodeGen/BasicTTIImpl.h b/llvm/include/llvm/CodeGen/BasicTTIImpl.h index 1e36aae..3e190a0 100644 --- a/llvm/include/llvm/CodeGen/BasicTTIImpl.h +++ b/llvm/include/llvm/CodeGen/BasicTTIImpl.h @@ -462,9 +462,8 @@ public: return BaseT::preferPredicateOverEpilogue(L, LI, SE, AC, TLI, DT, LAI); } - bool emitGetActiveLaneMask(Loop *L, LoopInfo *LI, ScalarEvolution &SE, - bool TailFold) { - return BaseT::emitGetActiveLaneMask(L, LI, SE, TailFold); + bool emitGetActiveLaneMask() { + return BaseT::emitGetActiveLaneMask(); } int getInstructionLatency(const Instruction *I) { diff --git a/llvm/lib/Analysis/TargetTransformInfo.cpp b/llvm/lib/Analysis/TargetTransformInfo.cpp index 116ff5a..642c15e 100644 --- a/llvm/lib/Analysis/TargetTransformInfo.cpp +++ b/llvm/lib/Analysis/TargetTransformInfo.cpp @@ -313,9 +313,8 @@ bool TargetTransformInfo::preferPredicateOverEpilogue( return TTIImpl->preferPredicateOverEpilogue(L, LI, SE, AC, TLI, DT, LAI); } -bool TargetTransformInfo::emitGetActiveLaneMask(Loop *L, LoopInfo *LI, - ScalarEvolution &SE, bool TailFolded) const { - return TTIImpl->emitGetActiveLaneMask(L, LI, SE, TailFolded); +bool TargetTransformInfo::emitGetActiveLaneMask() const { + return TTIImpl->emitGetActiveLaneMask(); } void TargetTransformInfo::getUnrollingPreferences( diff --git a/llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp b/llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp index df84246..6d7a190 100644 --- a/llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp +++ b/llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp @@ -1412,12 +1412,14 @@ bool ARMTTIImpl::preferPredicateOverEpilogue(Loop *L, LoopInfo *LI, return canTailPredicateLoop(L, LI, SE, DL, LAI); } -bool ARMTTIImpl::emitGetActiveLaneMask(Loop *L, LoopInfo *LI, - ScalarEvolution &SE, bool TailFolded) const { - // TODO: if this loop is tail-folded, we want to emit the - // llvm.get.active.lane.mask intrinsic so that this can be picked up in the - // MVETailPredication pass that needs to know the number of elements - // processed by this vector loop. +bool ARMTTIImpl::emitGetActiveLaneMask() const { + if (!ST->hasMVEIntegerOps()) + return false; + + // TODO: Intrinsic @llvm.get.active.lane.mask is supported. + // It is used in the MVETailPredication pass, which requires the number of + // elements processed by this vector loop to setup the tail-predicated + // loop. return false; } void ARMTTIImpl::getUnrollingPreferences(Loop *L, ScalarEvolution &SE, diff --git a/llvm/lib/Target/ARM/ARMTargetTransformInfo.h b/llvm/lib/Target/ARM/ARMTargetTransformInfo.h index 72243ef..d319aa8 100644 --- a/llvm/lib/Target/ARM/ARMTargetTransformInfo.h +++ b/llvm/lib/Target/ARM/ARMTargetTransformInfo.h @@ -250,8 +250,7 @@ public: void getUnrollingPreferences(Loop *L, ScalarEvolution &SE, TTI::UnrollingPreferences &UP); - bool emitGetActiveLaneMask(Loop *L, LoopInfo *LI, ScalarEvolution &SE, - bool TailFolded) const; + bool emitGetActiveLaneMask() const; bool shouldBuildLookupTablesForConstant(Constant *C) const { // In the ROPI and RWPI relocation models we can't have pointers to global -- 2.7.4