[PATCH] D35210: [LoopInterchange] Change cost function to use bytes in cache line.

Florian Hahn via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 10 09:18:11 PDT 2017


fhahn added a reviewer: efriedma.
fhahn added a comment.

Ping. Any thoughts?

With the new cost function, 20 more loops are interchanged in SPEC2006. I manually checked the interchanged loops and all of them are expected to be interchanged due to the change. They don't look like hot loops though and there is no performance change either way in SPEC2k6:

  /benchspec/CPU2006/464.h264ref/src/decoder.c:131:7:
        remark: Loop interchanged with enclosing loop.
  /benchspec/CPU2006/464.h264ref/src/decoder.c:417:5:
        remark: Loop interchanged with enclosing loop.
  /benchspec/CPU2006/464.h264ref/src/decoder.c:51:5:
        remark: Loop interchanged with enclosing loop.
  /benchspec/CPU2006/464.h264ref/src/image.c:1838:5:
        remark: Loop interchanged with enclosing loop.
  /benchspec/CPU2006/464.h264ref/src/image.c:1838:5:
        remark: Loop interchanged with enclosing loop.
  /benchspec/CPU2006/464.h264ref/src/macroblock.c:527:7:
        remark: Loop interchanged with enclosing loop.
  /benchspec/CPU2006/464.h264ref/src/macroblock.c:527:7:
        remark: Loop interchanged with enclosing loop.
  /benchspec/CPU2006/464.h264ref/src/rdopt.c:1283:9:
        remark: Loop interchanged with enclosing loop.
  /benchspec/CPU2006/464.h264ref/src/rdopt.c:1324:9:
        remark: Loop interchanged with enclosing loop.
  /benchspec/CPU2006/464.h264ref/src/rdopt.c:1335:5:
        remark: Loop interchanged with enclosing loop.
  /benchspec/CPU2006/464.h264ref/src/rdopt.c:1347:7:
        remark: Loop interchanged with enclosing loop.
  /benchspec/CPU2006/464.h264ref/src/rdopt.c:1488:9:
        remark: Loop interchanged with enclosing loop.
  /benchspec/CPU2006/464.h264ref/src/rdopt.c:1499:9:
        remark: Loop interchanged with enclosing loop.
  /benchspec/CPU2006/464.h264ref/src/rdopt.c:1509:7:
        remark: Loop interchanged with enclosing loop.
  /benchspec/CPU2006/464.h264ref/src/rdopt.c:1521:9:
        remark: Loop interchanged with enclosing loop.
  /benchspec/CPU2006/464.h264ref/src/rdopt.c:2078:3:
        remark: Loop interchanged with enclosing loop.
  /benchspec/CPU2006/464.h264ref/src/rdopt.c:5013:5:
        remark: Loop interchanged with enclosing loop.
  /benchspec/CPU2006/464.h264ref/src/rdopt.c:5021:7:
        remark: Loop interchanged with enclosing loop.
  /benchspec/CPU2006/464.h264ref/src/transform8x8.c:593:5:
        remark: Loop interchanged with enclosing loop.
  /benchspec/CPU2006/464.h264ref/src/transform8x8.c:593:5:
        remark: Loop interchanged with enclosing loop.

A few noticable speedups with this cost function are in the test-suite and proprietary suites on AArch64. I suspect that more benefits become apparent when some of the limitations of the LoopInterchange pass have been removed.


https://reviews.llvm.org/D35210





More information about the llvm-commits mailing list