HomePhabricator

Revert r313343 "[X86] PR32755 : Improvement in CodeGen instruction selection…

Description

Revert r313343 "[X86] PR32755 : Improvement in CodeGen instruction selection for LEAs."

This caused PR34629: asserts firing when building Chromium. It also broke some
buildbots building test-suite as reported on the commit thread.

Summary:

1/  Operand folding during complex pattern matching for LEAs has been
    extended, such that it promotes Scale to accommodate similar operand
    appearing in the DAG.
    e.g.
       T1 = A + B
       T2 = T1 + 10
       T3 = T2 + A
    For above DAG rooted at T3, X86AddressMode will no look like
       Base = B , Index = A , Scale = 2 , Disp = 10

2/  During OptimizeLEAPass down the pipeline factorization is now performed over LEAs
    so that if there is an opportunity then complex LEAs (having 3 operands)
    could be factored out.
    e.g.
       leal 1(%rax,%rcx,1), %rdx
       leal 1(%rax,%rcx,2), %rcx
    will be factored as following
       leal 1(%rax,%rcx,1), %rdx
       leal (%rdx,%rcx)   , %edx

3/ Aggressive operand folding for AM based selection for LEAs is sensitive to loops,
   thus avoiding creation of any complex LEAs within a loop.

Reviewers: lsaba, RKSimon, craig.topper, qcolombet

Reviewed By: lsaba

Subscribers: spatel, igorb, llvm-commits

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

Details

Committed
hansSep 15 2017, 11:40 AM
Parents
rL313375: Fix indentation.
Branches
Unknown
Tags
Unknown