OSDN Git Service

[LoopInterchange] Loops with empty dependency matrix are safe.
authorFlorian Hahn <florian.hahn@arm.com>
Mon, 26 Feb 2018 10:45:25 +0000 (10:45 +0000)
committerFlorian Hahn <florian.hahn@arm.com>
Mon, 26 Feb 2018 10:45:25 +0000 (10:45 +0000)
commitae9a8b01c3aa2e0b7829f5a01efb718be289697f
treef7c241a4bc5de4517e8a0358ff96c3707edf6342
parent07ea57a569f14ec2025d39b2e46dbb06f5164afd
[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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@326077 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Scalar/LoopInterchange.cpp