[all-commits] [llvm/llvm-project] dd3ca6: Sinking or hoisting instructions between loops bef...

aaronkintel via All-commits all-commits at lists.llvm.org
Wed Jul 27 03:57:03 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: dd3ca65c378f87524384c3a036bd6ed953c1a8c3
      https://github.com/llvm/llvm-project/commit/dd3ca65c378f87524384c3a036bd6ed953c1a8c3
  Author: Aaron Kogon <aaron.kogon at intel.com>
  Date:   2022-07-27 (Wed, 27 Jul 2022)

  Changed paths:
    M llvm/lib/Transforms/Scalar/LoopFuse.cpp
    A llvm/test/Transforms/LoopFusion/hoist_preheader.ll
    A llvm/test/Transforms/LoopFusion/no_sink_hoist.ll
    A llvm/test/Transforms/LoopFusion/no_sink_hoist_inner_barrier.ll
    A llvm/test/Transforms/LoopFusion/no_sink_hoist_store.ll
    A llvm/test/Transforms/LoopFusion/no_sink_hoist_unknown_function.ll
    M llvm/test/Transforms/LoopFusion/simple.ll
    A llvm/test/Transforms/LoopFusion/sink_preheader.ll

  Log Message:
  -----------
  Sinking or hoisting instructions between loops before fusion

Instructions between two adjacent loops will be hoisted above the first
loop, or sunk below the second to facilitate loop fusion. Hoisting will
be attempted for an instruction that dominates the first loop.
Otherwise, sinking this instructions will be attempted.

Instructions with side effects will not be considered for sinking or
hoisting. Hoisting/sinking of any instructions between loops will only
be performed if all the instructions can be moved. As well,
sinking/hoisting is considered for each instruction in isolation,
without taking into account sinking/hoisting decisions for other
instructions in the preheader.

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




More information about the All-commits mailing list