Skip to content
  1. May 17, 2013
    • Benjamin Kramer's avatar
      X86: Make shuffle -> shift conversion more aggressive about undefs. · fc33e1d9
      Benjamin Kramer authored
      Shuffles that only move an element into position 0 of the vector are common in
      the output of the loop vectorizer and often generate suboptimal code when SSSE3
      is not available. Lower them to vector shifts if possible.
      
      We still prefer palignr over psrldq because it has higher throughput on
      sandybridge.
      
      llvm-svn: 182102
      fc33e1d9
  2. May 05, 2013
  3. May 02, 2013
  4. Apr 20, 2013
  5. Apr 19, 2013
  6. Apr 18, 2013
  7. Apr 11, 2013
    • Michael Liao's avatar
      Optimize vector select from all 0s or all 1s · 55658d42
      Michael Liao authored
      As packed comparisons in AVX/SSE produce all 0s or all 1s in each SIMD lane,
      vector select could be simplified to AND/OR or removed if one or both values
      being selected is all 0s or all 1s.
      
      llvm-svn: 179267
      55658d42
    • Michael Liao's avatar
      Enhance bool simplifcation in X86 to handle more cases · f7bf8705
      Michael Liao authored
      This patch is revised based on patch from Victor Umansky
      <victor.umansky@intel.com>. More cases are handled in X86's bool
      simplification, i.e.
      - SETCC_CARRY
      - value is truncated to i1 with AND
      
      As a by-product, PR5443 is also fixed.
      
      llvm-svn: 179265
      f7bf8705
  8. Apr 10, 2013
  9. Apr 05, 2013
  10. Mar 31, 2013
  11. Mar 29, 2013
  12. Mar 28, 2013
  13. Mar 27, 2013
    • Preston Gurd's avatar
      · 663e6f95
      Preston Gurd authored
      For the current Atom processor, the fastest way to handle a call
      indirect through a memory address is to load the memory address into
      a register and then call indirect through the register.
      
      This patch implements this improvement by modifying SelectionDAG to
      force a function address which is a memory reference to be loaded
      into a virtual register.
      
      Patch by Sriram Murali.
      
      llvm-svn: 178171
      663e6f95
    • Hal Finkel's avatar
      Fix typo (common to both X86 and PPC) · 1996f3d8
      Hal Finkel authored
      Thanks to Bill Schmidt for pointing this out during code review!
      
      llvm-svn: 178170
      1996f3d8
  14. Mar 26, 2013
  15. Mar 20, 2013
  16. Mar 19, 2013
  17. Mar 18, 2013
    • Anton Korobeynikov's avatar
      TLS support for MinGW targets. · 3e7005f1
      Anton Korobeynikov authored
      MinGW is almost completely compatible to MSVC, with the exception of the _tls_array global not being available.
      
      Patch by David Nadlinger!
      
      llvm-svn: 177257
      3e7005f1
  18. Mar 14, 2013
  19. Mar 08, 2013
  20. Mar 07, 2013
  21. Mar 06, 2013
    • Michael Liao's avatar
      Fix PR15355 · da22b30b
      Michael Liao authored
      - Clear 'mayStore' flag when loading from the atomic variable before the
        spin loop
      - Clear kill flag from one use to multiple use in registers forming the
        address to that atomic variable
      - don't use a physical register as live-in register in BB (neither entry
        nor landing pad.) by copying it into virtual register
      
      (patch by Cameron Zwarich)
      
      llvm-svn: 176538
      da22b30b
  22. Mar 04, 2013
    • Preston Gurd's avatar
      Bypass Slow Divides · 485296d1
      Preston Gurd authored
      * Only apply divide bypass optimization when not optimizing for size. 
      * Fixed bug caused by constant for 0 value of type Int32,
        used dividend type to generate the constant instead.
      * For atom x86-64 apply the divide bypass to use 16-bit divides instead of
        64-bit divides when operand values are small enough.
      * Added lit tests for 64-bit divide bypass.
      
      Patch by Tyler Nowicki!
      
      llvm-svn: 176442
      485296d1
  23. Mar 01, 2013
    • Michael Liao's avatar
      Fix PR10475 · 6af16fc3
      Michael Liao authored
      - ISD::SHL/SRL/SRA must have either both scalar or both vector operands
        but TLI.getShiftAmountTy() so far only return scalar type. As a
        result, backend logic assuming that breaks.
      - Rename the original TLI.getShiftAmountTy() to
        TLI.getScalarShiftAmountTy() and re-define TLI.getShiftAmountTy() to
        return target-specificed scalar type or the same vector type as the
        1st operand.
      - Fix most TICG logic assuming TLI.getShiftAmountTy() a simple scalar
        type.
      
      llvm-svn: 176364
      6af16fc3
  24. Feb 26, 2013
  25. Feb 24, 2013
Loading