[all-commits] [llvm/llvm-project] 5609c8: [X86FixupLEAs] Try again to transform the sequence...

weiguozhi via All-commits all-commits at lists.llvm.org
Fri Jul 16 10:19:12 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 5609c8b60730519eeb7bc95b61d2c09879dff44b
      https://github.com/llvm/llvm-project/commit/5609c8b60730519eeb7bc95b61d2c09879dff44b
  Author: Guozhi Wei <carrot at google.com>
  Date:   2021-07-16 (Fri, 16 Jul 2021)

  Changed paths:
    M llvm/include/llvm/CodeGen/TargetInstrInfo.h
    M llvm/lib/CodeGen/TwoAddressInstructionPass.cpp
    M llvm/lib/Target/X86/X86FixupLEAs.cpp
    M llvm/lib/Target/X86/X86InstrInfo.cpp
    M llvm/lib/Target/X86/X86InstrInfo.h
    M llvm/test/CodeGen/X86/2009-03-23-MultiUseSched.ll
    M llvm/test/CodeGen/X86/lea-opt2.ll
    M llvm/test/CodeGen/X86/vp2intersect_multiple_pairs.ll

  Log Message:
  -----------
  [X86FixupLEAs] Try again to transform the sequence LEA/SUB to SUB/SUB

This patch transforms the sequence
    lea (reg1, reg2), reg3
    sub reg3, reg4
to two sub instructions
    sub reg1, reg4
    sub reg2, reg4

Similar optimization can also be applied to LEA/ADD sequence.

The modifications to TwoAddressInstructionPass is to ensure the operands of ADD
instruction has expected order (the dest register of LEA should be src register
of ADD).

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




More information about the All-commits mailing list