Skip to content
  1. May 29, 2012
  2. 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
  3. May 27, 2012
  4. May 26, 2012
  5. May 25, 2012
  6. May 24, 2012
  7. May 23, 2012
  8. May 22, 2012
  9. May 21, 2012
    • Chad Rosier's avatar
      Typo. · 5d1f5d2b
      Chad Rosier authored
      llvm-svn: 157195
      5d1f5d2b
    • Jakob Stoklund Olesen's avatar
      Give a small negative bias to giant edge bundles. · 29268b50
      Jakob Stoklund Olesen authored
      This helps compile time when the greedy register allocator splits live
      ranges in giant functions. Without the bias, we would try to grow
      regions through the giant edge bundles, usually to find out that the
      region became too big and expensive.
      
      If a live range has many uses in blocks near the giant bundle, the small
      negative bias doesn't make a big difference, and we still consider
      regions including the giant edge bundle.
      
      Giant edge bundles are usually connected to landing pads or indirect
      branches.
      
      llvm-svn: 157174
      29268b50
  10. May 20, 2012
Loading