Skip to content
  • Jatin Bhateja's avatar
    [X86] Improvement in CodeGen instruction selection for LEAs (re-applying post... · 3c29bacd
    Jatin Bhateja authored
    [X86] Improvement in CodeGen instruction selection for LEAs (re-applying post required revision changes.)
    
    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, jmolloy
    
    Reviewed By: lsaba
    
    Subscribers: jmolloy, spatel, igorb, llvm-commits
    
        Differential Revision: https://reviews.llvm.org/D35014
    
    llvm-svn: 314886
    3c29bacd
Loading