Skip to content
  • Jatin Bhateja's avatar
    [X86] Improvement in CodeGen instruction selection for LEAs. · 328199ec
    Jatin Bhateja authored
    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 now 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.
    
    4/ Simplify LEA converts (lea (BASE,1,INDEX,0)  --> add (BASE, INDEX) which offers better through put.
    
    PR32755 will be taken care of by this pathc.
    
    Previous patch revisions : r313343 , r314886
    
    Reviewers: lsaba, RKSimon, craig.topper, qcolombet, jmolloy, jbhateja
    
    Reviewed By: lsaba, RKSimon, jbhateja
    
    Subscribers: jmolloy, spatel, igorb, llvm-commits
    
    Differential Revision: https://reviews.llvm.org/D35014
    
    llvm-svn: 319543
    328199ec
Loading