[llvm] r365680 - Revert "[System Model] [TTI] Update cache and prefetch TTI interfaces"

David Greene via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 10 11:25:58 PDT 2019


Author: greened
Date: Wed Jul 10 11:25:58 2019
New Revision: 365680

URL: http://llvm.org/viewvc/llvm-project?rev=365680&view=rev
Log:
Revert "[System Model] [TTI] Update cache and prefetch TTI interfaces"

This broke some PPC prefetching tests.

This reverts commit 9fdfb045ae8bb643ab0d0455dcf9ecaea3b1eb3c.

Modified:
    llvm/trunk/include/llvm/Analysis/TargetTransformInfo.h
    llvm/trunk/include/llvm/Analysis/TargetTransformInfoImpl.h
    llvm/trunk/include/llvm/CodeGen/BasicTTIImpl.h
    llvm/trunk/include/llvm/MC/MCSubtargetInfo.h
    llvm/trunk/lib/MC/MCSubtargetInfo.cpp
    llvm/trunk/lib/Target/AArch64/AArch64Subtarget.h
    llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
    llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.h
    llvm/trunk/lib/Target/Hexagon/HexagonTargetTransformInfo.h
    llvm/trunk/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
    llvm/trunk/lib/Target/PowerPC/PPCTargetTransformInfo.h
    llvm/trunk/lib/Target/SystemZ/SystemZTargetTransformInfo.h

Modified: llvm/trunk/include/llvm/Analysis/TargetTransformInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/TargetTransformInfo.h?rev=365680&r1=365679&r2=365680&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/TargetTransformInfo.h (original)
+++ llvm/trunk/include/llvm/Analysis/TargetTransformInfo.h Wed Jul 10 11:25:58 2019
@@ -812,20 +812,18 @@ public:
   /// \return The associativity of the cache level, if available.
   llvm::Optional<unsigned> getCacheAssociativity(CacheLevel Level) const;
 
-  /// \return How much before a load we should place the prefetch
-  /// instruction.  This is currently measured in number of
-  /// instructions.
+  /// \return How much before a load we should place the prefetch instruction.
+  /// This is currently measured in number of instructions.
   unsigned getPrefetchDistance() const;
 
-  /// \return Some HW prefetchers can handle accesses up to a certain
-  /// constant stride.  This is the minimum stride in bytes where it
-  /// makes sense to start adding SW prefetches.  The default is 1,
-  /// i.e. prefetch with any stride.
+  /// \return Some HW prefetchers can handle accesses up to a certain constant
+  /// stride.  This is the minimum stride in bytes where it makes sense to start
+  /// adding SW prefetches.  The default is 1, i.e. prefetch with any stride.
   unsigned getMinPrefetchStride() const;
 
-  /// \return The maximum number of iterations to prefetch ahead.  If
-  /// the required number of iterations is more than this number, no
-  /// prefetching is performed.
+  /// \return The maximum number of iterations to prefetch ahead.  If the
+  /// required number of iterations is more than this number, no prefetching is
+  /// performed.
   unsigned getMaxPrefetchIterationsAhead() const;
 
   /// \return The maximum interleave factor that any transform should try to
@@ -1224,26 +1222,12 @@ public:
   virtual unsigned getMinimumVF(unsigned ElemWidth) const = 0;
   virtual bool shouldConsiderAddressTypePromotion(
       const Instruction &I, bool &AllowPromotionWithoutCommonHeader) = 0;
-  virtual unsigned getCacheLineSize() const = 0;
-  virtual llvm::Optional<unsigned> getCacheSize(CacheLevel Level) const = 0;
-  virtual llvm::Optional<unsigned> getCacheAssociativity(CacheLevel Level) const = 0;
-
-  /// \return How much before a load we should place the prefetch
-  /// instruction.  This is currently measured in number of
-  /// instructions.
-  virtual unsigned getPrefetchDistance() const = 0;
-
-  /// \return Some HW prefetchers can handle accesses up to a certain
-  /// constant stride.  This is the minimum stride in bytes where it
-  /// makes sense to start adding SW prefetches.  The default is 1,
-  /// i.e. prefetch with any stride.
-  virtual unsigned getMinPrefetchStride() const = 0;
-
-  /// \return The maximum number of iterations to prefetch ahead.  If
-  /// the required number of iterations is more than this number, no
-  /// prefetching is performed.
-  virtual unsigned getMaxPrefetchIterationsAhead() const = 0;
-
+  virtual unsigned getCacheLineSize() = 0;
+  virtual llvm::Optional<unsigned> getCacheSize(CacheLevel Level) = 0;
+  virtual llvm::Optional<unsigned> getCacheAssociativity(CacheLevel Level) = 0;
+  virtual unsigned getPrefetchDistance() = 0;
+  virtual unsigned getMinPrefetchStride() = 0;
+  virtual unsigned getMaxPrefetchIterationsAhead() = 0;
   virtual unsigned getMaxInterleaveFactor(unsigned VF) = 0;
   virtual unsigned
   getArithmeticInstrCost(unsigned Opcode, Type *Ty, OperandValueKind Opd1Info,
@@ -1583,36 +1567,22 @@ public:
     return Impl.shouldConsiderAddressTypePromotion(
         I, AllowPromotionWithoutCommonHeader);
   }
-  unsigned getCacheLineSize() const override {
+  unsigned getCacheLineSize() override {
     return Impl.getCacheLineSize();
   }
-  llvm::Optional<unsigned> getCacheSize(CacheLevel Level) const override {
+  llvm::Optional<unsigned> getCacheSize(CacheLevel Level) override {
     return Impl.getCacheSize(Level);
   }
-  llvm::Optional<unsigned> getCacheAssociativity(CacheLevel Level) const override {
+  llvm::Optional<unsigned> getCacheAssociativity(CacheLevel Level) override {
     return Impl.getCacheAssociativity(Level);
   }
-
-  /// Return the preferred prefetch distance in terms of instructions.
-  ///
-  unsigned getPrefetchDistance() const override {
-    return Impl.getPrefetchDistance();
-  }
-
-  /// Return the minimum stride necessary to trigger software
-  /// prefetching.
-  ///
-  unsigned getMinPrefetchStride() const override {
+  unsigned getPrefetchDistance() override { return Impl.getPrefetchDistance(); }
+  unsigned getMinPrefetchStride() override {
     return Impl.getMinPrefetchStride();
   }
-
-  /// Return the maximum prefetch distance in terms of loop
-  /// iterations.
-  ///
-  unsigned getMaxPrefetchIterationsAhead() const override {
+  unsigned getMaxPrefetchIterationsAhead() override {
     return Impl.getMaxPrefetchIterationsAhead();
   }
-
   unsigned getMaxInterleaveFactor(unsigned VF) override {
     return Impl.getMaxInterleaveFactor(VF);
   }

Modified: llvm/trunk/include/llvm/Analysis/TargetTransformInfoImpl.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/TargetTransformInfoImpl.h?rev=365680&r1=365679&r2=365680&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/TargetTransformInfoImpl.h (original)
+++ llvm/trunk/include/llvm/Analysis/TargetTransformInfoImpl.h Wed Jul 10 11:25:58 2019
@@ -363,9 +363,9 @@ public:
     return false;
   }
 
-  unsigned getCacheLineSize() const { return 0; }
+  unsigned getCacheLineSize() { return 0; }
 
-  llvm::Optional<unsigned> getCacheSize(TargetTransformInfo::CacheLevel Level) const {
+  llvm::Optional<unsigned> getCacheSize(TargetTransformInfo::CacheLevel Level) {
     switch (Level) {
     case TargetTransformInfo::CacheLevel::L1D:
       LLVM_FALLTHROUGH;
@@ -377,7 +377,7 @@ public:
   }
 
   llvm::Optional<unsigned> getCacheAssociativity(
-    TargetTransformInfo::CacheLevel Level) const {
+    TargetTransformInfo::CacheLevel Level) {
     switch (Level) {
     case TargetTransformInfo::CacheLevel::L1D:
       LLVM_FALLTHROUGH;
@@ -388,11 +388,11 @@ public:
     llvm_unreachable("Unknown TargetTransformInfo::CacheLevel");
   }
 
-  unsigned getPrefetchDistance() const { return 0; }
+  unsigned getPrefetchDistance() { return 0; }
 
-  unsigned getMinPrefetchStride() const { return 1; }
+  unsigned getMinPrefetchStride() { return 1; }
 
-  unsigned getMaxPrefetchIterationsAhead() const { return UINT_MAX; }
+  unsigned getMaxPrefetchIterationsAhead() { return UINT_MAX; }
 
   unsigned getMaxInterleaveFactor(unsigned VF) { return 1; }
 

Modified: llvm/trunk/include/llvm/CodeGen/BasicTTIImpl.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/BasicTTIImpl.h?rev=365680&r1=365679&r2=365680&view=diff
==============================================================================
--- llvm/trunk/include/llvm/CodeGen/BasicTTIImpl.h (original)
+++ llvm/trunk/include/llvm/CodeGen/BasicTTIImpl.h Wed Jul 10 11:25:58 2019
@@ -506,34 +506,6 @@ public:
     return BaseT::getInstructionLatency(I);
   }
 
-  virtual Optional<unsigned>
-  getCacheSize(TargetTransformInfo::CacheLevel Level) const {
-    return Optional<unsigned>(
-      getST()->getCacheSize(static_cast<unsigned>(Level)));
-  }
-
-  virtual Optional<unsigned>
-  getCacheAssociativity(TargetTransformInfo::CacheLevel Level) const {
-    return Optional<unsigned>(
-      getST()->getCacheAssociativity(static_cast<unsigned>(Level)));
-  }
-
-  virtual unsigned getCacheLineSize() const {
-    return getST()->getCacheLineSize();
-  }
-
-  virtual unsigned getPrefetchDistance() const {
-    return getST()->getPrefetchDistance();
-  }
-
-  virtual unsigned getMinPrefetchStride() const {
-    return getST()->getMinPrefetchStride();
-  }
-
-  virtual unsigned getMaxPrefetchIterationsAhead() const {
-    return getST()->getMaxPrefetchIterationsAhead();
-  }
-
   /// @}
 
   /// \name Vector TTI Implementations

Modified: llvm/trunk/include/llvm/MC/MCSubtargetInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCSubtargetInfo.h?rev=365680&r1=365679&r2=365680&view=diff
==============================================================================
--- llvm/trunk/include/llvm/MC/MCSubtargetInfo.h (original)
+++ llvm/trunk/include/llvm/MC/MCSubtargetInfo.h Wed Jul 10 11:25:58 2019
@@ -221,50 +221,6 @@ public:
     auto Found = std::lower_bound(ProcDesc.begin(), ProcDesc.end(), CPU);
     return Found != ProcDesc.end() && StringRef(Found->Key) == CPU;
   }
-
-  /// Return the cache size in bytes for the given level of cache.
-  /// Level is zero-based, so a value of zero means the first level of
-  /// cache.
-  ///
-  virtual Optional<unsigned> getCacheSize(unsigned Level) const;
-
-  /// Return the cache associatvity for the given level of cache.
-  /// Level is zero-based, so a value of zero means the first level of
-  /// cache.
-  ///
-  virtual Optional<unsigned> getCacheAssociativity(unsigned Level) const;
-
-  /// Return the target cache line size in bytes at a given level.
-  ///
-  virtual Optional<unsigned> getCacheLineSize(unsigned Level) const;
-
-  /// Return the target cache line size in bytes.  By default, return
-  /// the line size for the bottom-most level of cache.  This provides
-  /// a more convenient interface for the common case where all cache
-  /// levels have the same line size.  Return zero if there is no
-  /// cache model.
-  ///
-  virtual unsigned getCacheLineSize() const {
-    Optional<unsigned> Size = getCacheLineSize(0);
-    if (Size)
-      return *Size;
-
-    return 0;
-  }
-
-  /// Return the preferred prefetch distance in terms of instructions.
-  ///
-  virtual unsigned getPrefetchDistance() const;
-
-  /// Return the maximum prefetch distance in terms of loop
-  /// iterations.
-  ///
-  virtual unsigned getMaxPrefetchIterationsAhead() const;
-
-  /// Return the minimum stride necessary to trigger software
-  /// prefetching.
-  ///
-  virtual unsigned getMinPrefetchStride() const;
 };
 
 } // end namespace llvm

Modified: llvm/trunk/lib/MC/MCSubtargetInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCSubtargetInfo.cpp?rev=365680&r1=365679&r2=365680&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCSubtargetInfo.cpp (original)
+++ llvm/trunk/lib/MC/MCSubtargetInfo.cpp Wed Jul 10 11:25:58 2019
@@ -315,28 +315,3 @@ void MCSubtargetInfo::initInstrItins(Ins
   InstrItins = InstrItineraryData(getSchedModel(), Stages, OperandCycles,
                                   ForwardingPaths);
 }
-
-Optional<unsigned> MCSubtargetInfo::getCacheSize(unsigned Level) const {
-  return Optional<unsigned>();
-}
-
-Optional<unsigned>
-MCSubtargetInfo::getCacheAssociativity(unsigned Level) const {
-  return Optional<unsigned>();
-}
-
-Optional<unsigned> MCSubtargetInfo::getCacheLineSize(unsigned Level) const {
-  return Optional<unsigned>();
-}
-
-unsigned MCSubtargetInfo::getPrefetchDistance() const {
-  return 0;
-}
-
-unsigned MCSubtargetInfo::getMaxPrefetchIterationsAhead() const {
-  return 0;
-}
-
-unsigned MCSubtargetInfo::getMinPrefetchStride() const {
-  return 0;
-}

Modified: llvm/trunk/lib/Target/AArch64/AArch64Subtarget.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64Subtarget.h?rev=365680&r1=365679&r2=365680&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AArch64/AArch64Subtarget.h (original)
+++ llvm/trunk/lib/Target/AArch64/AArch64Subtarget.h Wed Jul 10 11:25:58 2019
@@ -344,10 +344,10 @@ public:
   unsigned getVectorInsertExtractBaseCost() const {
     return VectorInsertExtractBaseCost;
   }
-  unsigned getCacheLineSize() const override { return CacheLineSize; }
-  unsigned getPrefetchDistance() const override { return PrefetchDistance; }
-  unsigned getMinPrefetchStride() const override { return MinPrefetchStride; }
-  unsigned getMaxPrefetchIterationsAhead() const override {
+  unsigned getCacheLineSize() const { return CacheLineSize; }
+  unsigned getPrefetchDistance() const { return PrefetchDistance; }
+  unsigned getMinPrefetchStride() const { return MinPrefetchStride; }
+  unsigned getMaxPrefetchIterationsAhead() const {
     return MaxPrefetchIterationsAhead;
   }
   unsigned getPrefFunctionAlignment() const { return PrefFunctionAlignment; }

Modified: llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.cpp?rev=365680&r1=365679&r2=365680&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.cpp (original)
+++ llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.cpp Wed Jul 10 11:25:58 2019
@@ -879,6 +879,22 @@ bool AArch64TTIImpl::shouldConsiderAddre
   return Considerable;
 }
 
+unsigned AArch64TTIImpl::getCacheLineSize() {
+  return ST->getCacheLineSize();
+}
+
+unsigned AArch64TTIImpl::getPrefetchDistance() {
+  return ST->getPrefetchDistance();
+}
+
+unsigned AArch64TTIImpl::getMinPrefetchStride() {
+  return ST->getMinPrefetchStride();
+}
+
+unsigned AArch64TTIImpl::getMaxPrefetchIterationsAhead() {
+  return ST->getMaxPrefetchIterationsAhead();
+}
+
 bool AArch64TTIImpl::useReductionIntrinsic(unsigned Opcode, Type *Ty,
                                            TTI::ReductionFlags Flags) const {
   assert(isa<VectorType>(Ty) && "Expected Ty to be a vector type");

Modified: llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.h?rev=365680&r1=365679&r2=365680&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.h (original)
+++ llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.h Wed Jul 10 11:25:58 2019
@@ -153,6 +153,14 @@ public:
   shouldConsiderAddressTypePromotion(const Instruction &I,
                                      bool &AllowPromotionWithoutCommonHeader);
 
+  unsigned getCacheLineSize();
+
+  unsigned getPrefetchDistance();
+
+  unsigned getMinPrefetchStride();
+
+  unsigned getMaxPrefetchIterationsAhead();
+
   bool shouldExpandReduction(const IntrinsicInst *II) const {
     return false;
   }

Modified: llvm/trunk/lib/Target/Hexagon/HexagonTargetTransformInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/HexagonTargetTransformInfo.h?rev=365680&r1=365679&r2=365680&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Hexagon/HexagonTargetTransformInfo.h (original)
+++ llvm/trunk/lib/Target/Hexagon/HexagonTargetTransformInfo.h Wed Jul 10 11:25:58 2019
@@ -68,8 +68,8 @@ public:
   bool shouldFavorPostInc() const;
 
   // L1 cache prefetch.
-  unsigned getPrefetchDistance() const override;
-  unsigned getCacheLineSize() const override;
+  unsigned getPrefetchDistance() const;
+  unsigned getCacheLineSize() const;
 
   /// @}
 

Modified: llvm/trunk/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCTargetTransformInfo.cpp?rev=365680&r1=365679&r2=365680&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PowerPC/PPCTargetTransformInfo.cpp (original)
+++ llvm/trunk/lib/Target/PowerPC/PPCTargetTransformInfo.cpp Wed Jul 10 11:25:58 2019
@@ -613,7 +613,7 @@ unsigned PPCTTIImpl::getRegisterBitWidth
 
 }
 
-unsigned PPCTTIImpl::getCacheLineSize() const {
+unsigned PPCTTIImpl::getCacheLineSize() {
   // Check first if the user specified a custom line size.
   if (CacheLineSize.getNumOccurrences() > 0)
     return CacheLineSize;
@@ -628,7 +628,7 @@ unsigned PPCTTIImpl::getCacheLineSize()
   return 64;
 }
 
-unsigned PPCTTIImpl::getPrefetchDistance() const {
+unsigned PPCTTIImpl::getPrefetchDistance() {
   // This seems like a reasonable default for the BG/Q (this pass is enabled, by
   // default, only on the BG/Q).
   return 300;

Modified: llvm/trunk/lib/Target/PowerPC/PPCTargetTransformInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCTargetTransformInfo.h?rev=365680&r1=365679&r2=365680&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PowerPC/PPCTargetTransformInfo.h (original)
+++ llvm/trunk/lib/Target/PowerPC/PPCTargetTransformInfo.h Wed Jul 10 11:25:58 2019
@@ -74,8 +74,8 @@ public:
   bool enableInterleavedAccessVectorization();
   unsigned getNumberOfRegisters(bool Vector);
   unsigned getRegisterBitWidth(bool Vector) const;
-  unsigned getCacheLineSize() const override;
-  unsigned getPrefetchDistance() const override;
+  unsigned getCacheLineSize();
+  unsigned getPrefetchDistance();
   unsigned getMaxInterleaveFactor(unsigned VF);
   int vectorCostAdjustment(int Cost, unsigned Opcode, Type *Ty1, Type *Ty2);
   int getArithmeticInstrCost(

Modified: llvm/trunk/lib/Target/SystemZ/SystemZTargetTransformInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/SystemZ/SystemZTargetTransformInfo.h?rev=365680&r1=365679&r2=365680&view=diff
==============================================================================
--- llvm/trunk/lib/Target/SystemZ/SystemZTargetTransformInfo.h (original)
+++ llvm/trunk/lib/Target/SystemZ/SystemZTargetTransformInfo.h Wed Jul 10 11:25:58 2019
@@ -59,9 +59,9 @@ public:
   unsigned getNumberOfRegisters(bool Vector);
   unsigned getRegisterBitWidth(bool Vector) const;
 
-  unsigned getCacheLineSize() const override { return 256; }
-  unsigned getPrefetchDistance() const override { return 2000; }
-  unsigned getMinPrefetchStride() const override { return 2048; }
+  unsigned getCacheLineSize() { return 256; }
+  unsigned getPrefetchDistance() { return 2000; }
+  unsigned getMinPrefetchStride() { return 2048; }
 
   bool hasDivRemOp(Type *DataType, bool IsSigned);
   bool prefersVectorizedAddressing() { return false; }




More information about the llvm-commits mailing list