HomePhabricator

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

Description

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

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
jbhatejaSep 14 2017, 10:29 PM
Reviewer
lsaba
Differential Revision
D35014: [X86] Improvement in CodeGen instruction selection for LEAs.
Parents
rL313342: [sanitizer] Simplify checks in allow_user_segv.cc
Branches
Unknown
Tags
Unknown