Skip to content
  1. Jan 09, 2012
  2. Jan 08, 2012
  3. Jan 07, 2012
  4. Jan 06, 2012
  5. Jan 05, 2012
    • Craig Topper's avatar
      Mark scalar FMA4 instructions as ignoring the VEX.L bit. · 29b07374
      Craig Topper authored
      llvm-svn: 147602
      29b07374
    • Victor Umansky's avatar
      Peephole optimization of ptest-conditioned branch in X86 arch. Performs... · 9255b6d9
      Victor Umansky authored
      Peephole optimization of ptest-conditioned branch in X86 arch. Performs instruction combining of sequences generated by ptestz/ptestc intrinsics to ptest+jcc pair for SSE and AVX.
      
      Testing: passed 'make check' including LIT tests for all sequences being handled (both SSE and AVX)
      
      Reviewers: Evan Cheng, David Blaikie, Bruno Lopes, Elena Demikhovsky, Chad Rosier, Anton Korobeynikov
      llvm-svn: 147601
      9255b6d9
    • Bill Wendling's avatar
      Replace the uint64_t -> double convertion algorithm with one that's more efficient. · ac27f0c8
      Bill Wendling authored
      This small bit of ASM code is sufficient to do what the old algorithm did:
      
           movq       %rax,  %xmm0
           punpckldq  (c0),  %xmm0  // c0: (uint4){ 0x43300000U, 0x45300000U, 0U, 0U }
           subpd      (c1),  %xmm0  // c1: (double2){ 0x1.0p52, 0x1.0p52 * 0x1.0p32 }
         #ifdef __SSE3__
           haddpd   %xmm0, %xmm0          
         #else
           pshufd   $0x4e, %xmm0, %xmm1 
           addpd    %xmm1, %xmm0
         #endif
      
      It's arguably faster. One caveat, the 'haddpd' instruction isn't very fast on
      all processors.
      <rdar://problem/7719814>
      
      llvm-svn: 147593
      ac27f0c8
    • Jakob Stoklund Olesen's avatar
      Reapply r146997, "Heed spill slot alignment on ARM." · d110e2a8
      Jakob Stoklund Olesen authored
      Now that canRealignStack() understands frozen reserved registers, it is
      safe to use it for aligned spill instructions.
      
      It will only return true if the registers reserved at the beginning of
      register allocation allow for dynamic stack realignment.
      
      <rdar://problem/10625436>
      
      llvm-svn: 147579
      d110e2a8
    • Jakob Stoklund Olesen's avatar
      Avoid reserving an ARM base pointer during register allocation. · 9cb477db
      Jakob Stoklund Olesen authored
      Once register allocation has started the reserved registers are frozen.
      
      Fix the ARM canRealignStack() hook to respect the frozen register state.
      Now the hook returns false if register allocation was started with frame
      pointer elimination enabled.
      
      It also returns false if register allocation started without a reserved
      base pointer, and stack realignment would require a base pointer.  This
      bug was breaking oggenc on armv6.
      
      No test case, an upcoming patch will use this functionality to realign
      the stack for spill slots when possible.
      
      llvm-svn: 147578
      9cb477db
  6. Jan 04, 2012
  7. Jan 03, 2012
  8. Jan 02, 2012
    • Craig Topper's avatar
      Miscellaneous shuffle lowering cleanup. No functional changes. Primarily... · 5bacb7e9
      Craig Topper authored
      Miscellaneous shuffle lowering cleanup. No functional changes. Primarily converting the indexing loops to unsigned to be consistent across functions.
      
      llvm-svn: 147430
      5bacb7e9
    • Craig Topper's avatar
      Make CanXFormVExtractWithShuffleIntoLoad reject loads with multiple uses. Also... · 53d55964
      Craig Topper authored
      Make CanXFormVExtractWithShuffleIntoLoad reject loads with multiple uses. Also make it return false if there's not even a load at all. This makes the code better match the code in DAGCombiner that it tries to match. These two changes prevent some cases where vector_shuffles were making it to instruction selection and causing the older shuffle selection code to be triggered. Also needed to fix a bad pattern that this change exposed. This is the first step towards getting rid of the old shuffle selection support. No test cases yet because there's no way to tell whether a shuffle was handled in the legalize stage or at instruction selection.
      
      llvm-svn: 147428
      53d55964
    • Nadav Rotem's avatar
      · 6c7a0e6c
      Nadav Rotem authored
      Optimize the sequence blend(sign_extend(x)) to blend(shl(x)) since SSE blend instructions only look at the highest bit.
      
      llvm-svn: 147426
      6c7a0e6c
  9. Jan 01, 2012
Loading