HomePhabricator

[X86FixupLEAs] Transform the sequence LEA/SUB to SUB/SUB

Authored by Carrot on May 18 2021, 6:02 PM.

Description

[X86FixupLEAs] 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/D101970