Skip to content
  1. Sep 15, 2017
    • 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
  2. Sep 14, 2017
  3. Sep 13, 2017
  4. Sep 11, 2017
  5. Sep 08, 2017
  6. Sep 07, 2017
    • Matt Arsenault's avatar
      DAG: Allow creating extract_vector_elt post-legalize · 61ec738b
      Matt Arsenault authored
      Fixes some combine issues for AMDGPU where we weren't
      getting the many extract_vector_elt combines expected
      in a future patch.
      
      This should really be checking isOperationLegalOrCustom on
      the extract. That improves a number of x86 lit tests, but
      a few get stuck in an infinite loop from one place
      where a similar looking extract is created. I have a
      different workaround in the backend for that which
      keeps many of those improvements, but also adds a few
      regressions.
      
      llvm-svn: 312730
      61ec738b
  7. Sep 06, 2017
  8. Sep 05, 2017
    • Reid Kleckner's avatar
      Add llvm.codeview.annotation to implement MSVC __annotation · e33c94f1
      Reid Kleckner authored
      Summary:
      This intrinsic represents a label with a list of associated metadata
      strings. It is modelled as reading and writing inaccessible memory so
      that it won't be removed as dead code. I think the intention is that the
      annotation strings should appear at most once in the debug info, so I
      marked it noduplicate. We are allowed to inline code with annotations as
      long as we strip the annotation, but that can be done later.
      
      Reviewers: majnemer
      
      Subscribers: eraman, llvm-commits, hiraditya
      
      Differential Revision: https://reviews.llvm.org/D36904
      
      llvm-svn: 312569
      e33c94f1
  9. Sep 03, 2017
  10. Aug 31, 2017
  11. Aug 30, 2017
  12. Aug 29, 2017
    • Hans Wennborg's avatar
      [DAG] Bound loop dependence check in merge optimization. · e7becd7e
      Hans Wennborg authored
      The loop dependence check looks for dependencies between store merge
      candidates not captured by the chain sub-DAG doing a check of
      predecessors which may be very large. Conservatively bound number of
      nodes checked for compilation time. (Resolves PR34326).
      
      Landing on behalf of Nirav Dave to unblock the 5.0.0 release.
      
      Differential Revision: https://reviews.llvm.org/D37220
      
      llvm-svn: 312022
      e7becd7e
  13. Aug 28, 2017
  14. Aug 27, 2017
  15. Aug 26, 2017
  16. Aug 25, 2017
    • Sanjay Patel's avatar
      [DAG] convert vector select-of-constants to logic/math · e404cbff
      Sanjay Patel authored
      This goes back to a discussion about IR canonicalization. We'd like to preserve and convert
      more IR to 'select' than we currently do because that's likely the best choice in IR:
      http://lists.llvm.org/pipermail/llvm-dev/2016-September/105335.html
      ...but that's often not true for codegen, so we need to account for this pattern coming in
      to the backend and transform it to better DAG ops.
      
      Steps in this patch:
      
        1. Add an EVT param to the existing convertSelectOfConstantsToMath() TLI hook to more finely
           enable this transform. Other targets will probably want that anyway to distinguish scalars
           from vectors. We're using that here to exclude AVX512 targets, but it may not be necessary.
      
        2. Convert a vselect to ext+add. This eliminates a constant load/materialization, and the
           vector ext is often free.
      
      Implementing a more general fold using xor+and can be a follow-up for targets that don't have
      a legal vselect. It's also possible that we can remove the TLI hook for the special case fold
      implemented here because we're eliminating a constant, but it needs to be tested on other
      targets.
      
      Differential Revision: https://reviews.llvm.org/D36840
      
      llvm-svn: 311731
      e404cbff
  17. Aug 24, 2017
  18. Aug 23, 2017
  19. Aug 22, 2017
  20. Aug 20, 2017
  21. Aug 19, 2017
  22. Aug 18, 2017
  23. Aug 17, 2017
Loading