Skip to content
  1. Sep 21, 2012
  2. Sep 20, 2012
  3. Sep 19, 2012
    • Jakob Stoklund Olesen's avatar
      Resolve conflicts involving dead vector lanes for -new-coalescer. · 7d3c9c0a
      Jakob Stoklund Olesen authored
      A common coalescing conflict in vector code is lane insertion:
      
        %dst = FOO
        %src = BAR
        %dst:ssub0 = COPY %src
      
      The live range of %src interferes with the ssub0 lane of %dst, but that
      lane is never read after %src would have clobbered it. That makes it
      safe to merge the live ranges and eliminate the COPY:
      
        %dst = FOO
        %dst:ssub0 = BAR
      
      This patch teaches the new coalescer to resolve conflicts where dead
      vector lanes would be clobbered, at least as long as the clobbered
      vector lanes don't escape the basic block.
      
      llvm-svn: 164250
      7d3c9c0a
    • Andrew Trick's avatar
      comment typo · 6a35f197
      Andrew Trick authored
      llvm-svn: 164180
      6a35f197
  4. Sep 18, 2012
  5. Sep 17, 2012
  6. Sep 16, 2012
    • Craig Topper's avatar
      Fix bad comment. No functional change. · 04b4e83c
      Craig Topper authored
      llvm-svn: 164000
      04b4e83c
    • Jakob Stoklund Olesen's avatar
      Add alternative coalescing algorithm under a flag. · 17e21855
      Jakob Stoklund Olesen authored
      The live range of an SSA value forms a sub-tree of the dominator tree.
      That means the live ranges of two values overlap if and only if the def
      of one value lies within the live range of the other.
      
      This can be used to simplify the interference checking a bit: Visit each
      def in the two registers about to be joined. Check for interference
      against the value that is live in the other register at the def point
      only. It is not necessary to scan the set of overlapping live ranges,
      this interference check can be done while computing the value mapping
      required for the final live range join.
      
      The new algorithm is prepared to handle more complicated conflict
      resolution - We can allow overlapping live ranges with different values
      as long as the differing lanes are undef or unused in the other
      register.
      
      The implementation in this patch doesn't do that yet, it creates code
      that is nearly identical to the old algorithm's, except:
      
      - The new stripCopies() function sees through multiple copies while
        the old RegistersDefinedFromSameValue() only can handle one.
      
      - There are a few rare cases where the new algorithm can erase an
        IMPLICIT_DEF instuction that RegistersDefinedFromSameValue() couldn't
        handle.
      
      llvm-svn: 163991
      17e21855
  7. Sep 15, 2012
  8. Sep 14, 2012
  9. Sep 13, 2012
    • Michael Liao's avatar
      Enhance type legalization on bitcast from vector to integer · 460fc46e
      Michael Liao authored
      - Find a legal vector type before casting and extracting element from it.
      - As the new vector type may have more than 2 elements, build the final
        hi/lo pair by BFS pairing them from bottom to top.
      
      llvm-svn: 163830
      460fc46e
    • Nadav Rotem's avatar
      Rename the flag which protects from escaped allocas, which may come from bugs... · 77a09ebb
      Nadav Rotem authored
      Rename the flag which protects from escaped allocas, which may come from bugs in user code or in the compiler. Also, dont assert if the protection is not enabled.
      
      llvm-svn: 163807
      77a09ebb
    • Nadav Rotem's avatar
      Fix a dagcombine optimization. The optimization attempts to optimize a bitcast of fneg to integers · 24a822a5
      Nadav Rotem authored
      by xoring the high-bit. This fails if the source operand is a vector because we need to negate
      each of the elements in the vector.
      
      Fix rdar://12281066 PR13813.
      
      llvm-svn: 163802
      24a822a5
    • Nadav Rotem's avatar
      Fix a typo. · 2bd25fed
      Nadav Rotem authored
      llvm-svn: 163801
      2bd25fed
    • Nadav Rotem's avatar
      · 4e9ad066
      Nadav Rotem authored
      Stack Coloring: We have code that checks that all of the uses of allocas
      are within the lifetime zone. Sometime legitimate usages of allocas are
      hoisted outside of the lifetime zone. For example, GEPS may calculate the
      address of a member of an allocated struct. This commit makes sure that
      we only check (abort regions or assert) for instructions that read and write
      memory using stack frames directly. Notice that by allowing legitimate
      usages outside the lifetime zone we also stop checking for instructions
      which use derivatives of allocas. We will catch less bugs in user code
      and in the compiler itself.
      
      llvm-svn: 163791
      4e9ad066
Loading