[all-commits] [llvm/llvm-project] 63917e: [MachineLICM] Allow hoisting loads from invariant ...

Igor Kirillov via All-commits all-commits at lists.llvm.org
Thu Nov 16 03:12:23 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 63917e1975bd69ef4084f02d378b0b920046be3a
      https://github.com/llvm/llvm-project/commit/63917e1975bd69ef4084f02d378b0b920046be3a
  Author: Igor Kirillov <igor.kirillov at arm.com>
  Date:   2023-11-16 (Thu, 16 Nov 2023)

  Changed paths:
    M llvm/lib/CodeGen/MachineLICM.cpp
    A llvm/test/CodeGen/AArch64/machine-licm-hoist-load.ll
    M llvm/test/CodeGen/AArch64/ragreedy-local-interval-cost.ll
    M llvm/test/CodeGen/AArch64/sinksplat.ll
    M llvm/test/CodeGen/AArch64/zext-to-tbl.ll
    M llvm/test/CodeGen/Hexagon/reg-scavengebug-2.ll
    M llvm/test/CodeGen/Hexagon/swp-const-tc2.ll
    M llvm/test/CodeGen/Mips/lcb5.ll
    M llvm/test/CodeGen/RISCV/rvv/fold-scalar-load-crash.ll
    M llvm/test/CodeGen/X86/2009-04-25-CoalescerBug.ll
    M llvm/test/CodeGen/X86/block-placement.ll
    M llvm/test/CodeGen/X86/fma-commute-loop.ll
    M llvm/test/CodeGen/X86/pr49393.ll
    M llvm/test/CodeGen/X86/pr53842.ll

  Log Message:
  -----------
  [MachineLICM] Allow hoisting loads from invariant address (#70796)

Sometimes, loads can appear in a loop after the LICM pass is executed
the final time. For example, ExpandMemCmp pass creates loads in a loop,
and one of the operands may be an invariant address.
This patch extends the pre-regalloc stage MachineLICM by allowing to
hoist invariant loads from loops that don't have any stores or calls
and allows load reorderings.




More information about the All-commits mailing list