HomePhabricator

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

Authored by Carrot on Jun 1 2021, 10:31 AM.

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