[PATCH] D65673: [MBP] Disable aggressive loop rotate in plain mode

Danila Malyutin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 19 08:14:31 PST 2020


danilaml added a comment.
Herald added subscribers: kerbowa, luismarques, sameer.abuasal, pzheng, lenary, Jim.

@Carrot this seems to be reverted, but aggressive loop rotate still has mostly negative affect on performance in internal benchmarks that I've run.
Could you please elaborate on how branches taken was reduced from 2 to 1 (and how it was calculated) for the test case you mentioned in the https://reviews.llvm.org/D43256#1534855

      entry
        |
        V
  -->for.body
  |     |\
  |     | \
  |     |  \
  |     | if.then3
  |     |  /
  |     | /
  |     |/
  ---for.inc
        |
        V
  for.cond.cleanup

One of my benchmarks is very similar, however the aggressive transformation only introduces additional unconditional branches.
It seems that part of the reason for this is that the branches that the transformation was supposed to make fallthrough (i.e. for.inc -> for.body) are conditional and couldn't be eliminated even if the block is reordered, so previously fallthrough became unconditional branches, while no other branch was eliminated.

How is this transformation supposed to handle this?


Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D65673/new/

https://reviews.llvm.org/D65673





More information about the llvm-commits mailing list