[all-commits] [llvm/llvm-project] b2b1a8: [LiveIntervals] Improve repair after convertToThre...

Jay Foad via All-commits all-commits at lists.llvm.org
Tue Sep 28 00:20:49 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: b2b1a8b833905e159fe445ba1d0baae427a118cc
      https://github.com/llvm/llvm-project/commit/b2b1a8b833905e159fe445ba1d0baae427a118cc
  Author: Jay Foad <jay.foad at amd.com>
  Date:   2021-09-28 (Tue, 28 Sep 2021)

  Changed paths:
    M llvm/lib/CodeGen/TwoAddressInstructionPass.cpp
    M llvm/test/CodeGen/X86/zext-trunc.ll

  Log Message:
  -----------
  [LiveIntervals] Improve repair after convertToThreeAddress

After TwoAddressInstructionPass calls
TargetInstrInfo::convertToThreeAddress, improve the LiveIntervals repair
to cope with convertToThreeAddress creating more than one new
instruction.

This mostly seems to benefit X86. For example in
test/CodeGen/X86/zext-trunc.ll it converts:

  %4:gr32 = ADD32rr %3:gr32(tied-def 0), %2:gr32, implicit-def dead $eflags

to:

  undef %6.sub_32bit:gr64 = COPY %3:gr32
  undef %7.sub_32bit:gr64_nosp = COPY %2:gr32
  %4:gr32 = LEA64_32r killed %6:gr64, 1, killed %7:gr64_nosp, 0, $noreg

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


  Commit: 20c02807333a47000879e0f673cdf2d6b07148dd
      https://github.com/llvm/llvm-project/commit/20c02807333a47000879e0f673cdf2d6b07148dd
  Author: Jay Foad <jay.foad at amd.com>
  Date:   2021-09-28 (Tue, 28 Sep 2021)

  Changed paths:
    M llvm/lib/CodeGen/TwoAddressInstructionPass.cpp
    M llvm/test/CodeGen/Hexagon/swp-vect-dotprod.ll
    M llvm/test/CodeGen/SystemZ/subregliveness-01.ll
    M llvm/test/CodeGen/Thumb2/mve-multivec-spill.ll

  Log Message:
  -----------
  [LiveIntervals] Repair subreg ranges in processTiedPairs

In TwoAddressInstructionPass::processTiedPairs, update subranges of the
live interval for RegB as well as the main range.

This is a small step towards switching TwoAddressInstructionPass over
from LiveVariables to LiveIntervals. Currently this path is only tested
if you explicitly enable -early-live-intervals.

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


Compare: https://github.com/llvm/llvm-project/compare/90babc86c3fe...20c02807333a


More information about the All-commits mailing list