Skip to content
Snippets Groups Projects
  • Jatin Bhateja's avatar
    [X86] PR32755 : Improvement in CodeGen instruction selection for LEAs. · 908c8b37
    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 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
    
    llvm-svn: 313343
    908c8b37