[llvm] 745abbb - [CostModel] move early exit for free intrinsics

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 28 10:33:26 PDT 2020


Author: Sanjay Patel
Date: 2020-09-28T13:30:55-04:00
New Revision: 745abbbb852e3c0006f22b7beade820ac978252c

URL: https://github.com/llvm/llvm-project/commit/745abbbb852e3c0006f22b7beade820ac978252c
DIFF: https://github.com/llvm/llvm-project/commit/745abbbb852e3c0006f22b7beade820ac978252c.diff

LOG: [CostModel] move early exit for free intrinsics

This should be NFC unless some target was expecting that
some form of cttz/ctlz/memcpy is free in terms of size/latency
but not free in throughput cost.

Added: 
    

Modified: 
    llvm/include/llvm/CodeGen/BasicTTIImpl.h

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/CodeGen/BasicTTIImpl.h b/llvm/include/llvm/CodeGen/BasicTTIImpl.h
index d5c0b83ea6f7..ee755c7890a8 100644
--- a/llvm/include/llvm/CodeGen/BasicTTIImpl.h
+++ b/llvm/include/llvm/CodeGen/BasicTTIImpl.h
@@ -1121,9 +1121,12 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase<T> {
   /// Get intrinsic cost based on arguments.
   unsigned getIntrinsicInstrCost(const IntrinsicCostAttributes &ICA,
                                  TTI::TargetCostKind CostKind) {
-    Intrinsic::ID IID = ICA.getID();
+    // Check for generically free intrinsics.
+    if (BaseT::getIntrinsicInstrCost(ICA, CostKind) == 0)
+      return 0;
 
     // Special case some scalar intrinsics.
+    Intrinsic::ID IID = ICA.getID();
     if (CostKind != TTI::TCK_RecipThroughput) {
       switch (IID) {
       default:
@@ -1143,9 +1146,6 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase<T> {
       return BaseT::getIntrinsicInstrCost(ICA, CostKind);
     }
 
-    if (BaseT::getIntrinsicInstrCost(ICA, CostKind) == 0)
-      return 0;
-
     // TODO: Combine these two logic paths.
     if (ICA.isTypeBasedOnly())
       return getTypeBasedIntrinsicInstrCost(ICA, CostKind);


        


More information about the llvm-commits mailing list