[llvm] r326077 - [LoopInterchange] Loops with empty dependency matrix are safe.

Florian Hahn via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 26 02:45:25 PST 2018


Author: fhahn
Date: Mon Feb 26 02:45:25 2018
New Revision: 326077

URL: http://llvm.org/viewvc/llvm-project?rev=326077&view=rev
Log:
[LoopInterchange] Loops with empty dependency matrix are safe.

The dependency matrix is only empty if no conflicting load/store
instructions have been found. In that case, it is safe to interchange.

For the LLVM test-suite, after this change around 1900 loops are
interchanged, whereas it is 15 before this change. On cortex-a57,
this gives an improvement of -0.57% on the geomean execution
time of SPEC2006, SPEC2000 and the test-suite. There are a
few small perf regressions, but I think we can improve on those
by making the cost model better.

Reviewers: karthikthecool, mcrosier

Reviewed by: karthikthecool

Differential Revision: https://reviews.llvm.org/D43236

Modified:
    llvm/trunk/lib/Transforms/Scalar/LoopInterchange.cpp

Modified: llvm/trunk/lib/Transforms/Scalar/LoopInterchange.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoopInterchange.cpp?rev=326077&r1=326076&r2=326077&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/LoopInterchange.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/LoopInterchange.cpp Mon Feb 26 02:45:25 2018
@@ -173,9 +173,6 @@ static bool populateDependencyMatrix(Cha
     }
   }
 
-  // We don't have a DepMatrix to check legality return false.
-  if (DepMatrix.empty())
-    return false;
   return true;
 }
 




More information about the llvm-commits mailing list