Skip to content
  1. May 31, 2012
    • Manman Ren's avatar
      X86: replace SUB with CMP if possible · 9bccb64e
      Manman Ren authored
      This patch will optimize the following
              movq    %rdi, %rax
              subq    %rsi, %rax
              cmovsq  %rsi, %rdi
              movq    %rdi, %rax
      to
              cmpq    %rsi, %rdi
              cmovsq  %rsi, %rdi
              movq    %rdi, %rax
      
      Perform this optimization if the actual result of SUB is not used.
      
      rdar: 11540023
      llvm-svn: 157755
      9bccb64e
  2. May 30, 2012
  3. May 29, 2012
  4. May 28, 2012
    • Peter Collingbourne's avatar
      Add llvm.fabs intrinsic. · 913869be
      Peter Collingbourne authored
      llvm-svn: 157594
      913869be
    • Stepan Dyatkovskiy's avatar
      PR1255: Case Ranges · e3e19cbb
      Stepan Dyatkovskiy authored
      Implemented IntItem - the wrapper around APInt. Why not to use APInt item directly right now?
      1. It will very difficult to implement case ranges as series of small patches. We got several large and heavy patches. Each patch will about 90-120 kb. If you replace ConstantInt with APInt in SwitchInst you will need to changes at the same time all Readers,Writers and absolutely all passes that uses SwitchInst.
      2. We can implement APInt pool inside and save memory space. E.g. we use several switches that works with 256 bit items (switch on signatures, or strings). We can avoid value duplicates in this case.
      3. IntItem can be easyly easily replaced with APInt.
      4. Currenly we can interpret IntItem both as ConstantInt and as APInt. It allows to provide SwitchInst methods that works with ConstantInt for non-updated passes.
      
      Why I need it right now? Currently I need to update SimplifyCFG pass (EqualityComparisons). I need to work with APInts directly a lot, so peaces of code
      ConstantInt *V = ...;
      if (V->getValue().ugt(AnotherV->getValue()) {
        ...
      }
      will look awful. Much more better this way:
      IntItem V = ConstantIntVal->getValue();
      if (AnotherV < V) {
      }
      
      Of course any reviews are welcome.
      
      P.S.: I'm also going to rename ConstantRangesSet to IntegersSubset, and CRSBuilder to IntegersSubsetMapping (allows to map individual subsets of integers to the BasicBlocks).
      Since in future these classes will founded on APInt, it will possible to use them in more generic ways.
      
      llvm-svn: 157576
      e3e19cbb
  5. May 27, 2012
  6. May 26, 2012
  7. May 25, 2012
  8. May 24, 2012
  9. May 23, 2012
    • Jakob Stoklund Olesen's avatar
      Correctly deal with identity copies in RegisterCoalescer. · 5b8f4760
      Jakob Stoklund Olesen authored
      Now that the coalescer keeps live intervals and machine code in sync at
      all times, it needs to deal with identity copies differently.
      
      When merging two virtual registers, all identity copies are removed
      right away. This means that other identity copies must come from
      somewhere else, and they are going to have a value number.
      
      Deal with such copies by merging the value numbers before erasing the
      copy instruction. Otherwise, we leave dangling value numbers in the live
      interval.
      
      This fixes PR12927.
      
      llvm-svn: 157340
      5b8f4760
    • Patrik Hägglund's avatar
      Small fix for the debug output from PBQP (PR12822). · 94537c2a
      Patrik Hägglund authored
      llvm-svn: 157319
      94537c2a
Loading