Skip to content
  1. Nov 27, 2011
    • Chandler Carruth's avatar
      Prevent rotating the blocks of a loop (and thus getting a backedge to be · 4f567207
      Chandler Carruth authored
      fallthrough) in cases where we might fail to rotate an exit to an outer
      loop onto the end of the loop chain.
      
      Having *some* rotation, but not performing this rotation, is the primary
      fix of thep performance regression with -enable-block-placement for
      Olden/em3d (a whopping 30% regression). Still working on reducing the
      test case that actually exercises this and the new rotation strategy out
      of this code, but I want to check if this regresses other test cases
      first as that may indicate it isn't the correct fix.
      
      llvm-svn: 145195
      4f567207
    • Chandler Carruth's avatar
      Take two on rotating the block ordering of loops. My previous attempt · 03adbd46
      Chandler Carruth authored
      was centered around the premise of laying out a loop in a chain, and
      then rotating that chain. This is good for preserving contiguous layout,
      but bad for actually making sane rotations. In order to keep it safe,
      I had to essentially make it impossible to rotate deeply nested loops.
      The information needed to correctly reason about a deeply nested loop is
      actually available -- *before* we layout the loop. We know the inner
      loops are already fused into chains, etc. We lose information the moment
      we actually lay out the loop.
      
      The solution was the other alternative for this algorithm I discussed
      with Benjamin and some others: rather than rotating the loop
      after-the-fact, try to pick a profitable starting block for the loop's
      layout, and then use our existing layout logic. I was worried about the
      complexity of this "pick" step, but it turns out such complexity is
      needed to handle all the important cases I keep teasing out of benchmarks.
      
      This is, I'm afraid, a bit of a work-in-progress. It is still
      misbehaving on some likely important cases I'm investigating in Olden.
      It also isn't really tested. I'm going to try to craft some interesting
      nested-loop test cases, but it's likely to be extremely time consuming
      and I don't want to go there until I'm sure I'm testing the correct
      behavior. Sadly I can't come up with a way of getting simple, fine
      grained test cases for this logic. We need complex loop structures to
      even trigger much of it.
      
      llvm-svn: 145183
      03adbd46
    • Chandler Carruth's avatar
      Revert r145180 as it is causing test failures on all the bots. · 37ab257b
      Chandler Carruth authored
      Original commit message:
      Fixed ObjectFile functions:
      - getSymbolOffset() renamed as getSymbolFileOffset()
      - getSymbolFileOffset(), getSymbolAddress(), getRelocationAddress() returns same result for ELFObjectFile, MachOObjectFile and COFFObjectFile.
      - added getRelocationOffset()
      - fixed MachOObjectFile::getSymbolSize()
      - fixed MachOObjectFile::getSymbolSection()
      - fixed MachOObjectFile::getSymbolOffset() for symbols without section data.
      
      llvm-svn: 145182
      37ab257b
    • Chandler Carruth's avatar
      Fix an impressive type-o / spell-o Duncan noticed. · 9e466841
      Chandler Carruth authored
      llvm-svn: 145181
      9e466841
    • Danil Malyshev's avatar
      Fixed ObjectFile functions: · 2631f93f
      Danil Malyshev authored
      - getSymbolOffset() renamed as getSymbolFileOffset()
      - getSymbolFileOffset(), getSymbolAddress(), getRelocationAddress() returns same result for ELFObjectFile, MachOObjectFile and COFFObjectFile.
      - added getRelocationOffset()
      - fixed MachOObjectFile::getSymbolSize()
      - fixed MachOObjectFile::getSymbolSection()
      - fixed MachOObjectFile::getSymbolOffset() for symbols without section data.
      
      llvm-svn: 145180
      2631f93f
    • Chandler Carruth's avatar
      Rework a bit of the implementation of loop block rotation to not rely so · a0545809
      Chandler Carruth authored
      heavily on AnalyzeBranch. That routine doesn't behave as we want given
      that rotation occurs mid-way through re-ordering the function. Instead
      merely check that there are not unanalyzable branching constructs
      present, and then reason about the CFG via successor lists. This
      actually simplifies my mental model for all of this as well.
      
      The concrete result is that we now will rotate more loop chains. I've
      added a test case from Olden highlighting the effect. There is still
      a bit more to do here though in order to regain all of the performance
      in Olden.
      
      llvm-svn: 145179
      a0545809
    • Chris Lattner's avatar
      Eli managed to kill off llvm.membarrier in llvm 3.0 also, this means · 0bcbde46
      Chris Lattner authored
      that mainline needs no autoupgrade logic for intrinsics yet, woohoo!
      
      llvm-svn: 145178
      0bcbde46
    • Chris Lattner's avatar
      The llvm.atomic intrinsics *were* removed in LLVM 3.0 (in r141333), remove the · 410f3d7f
      Chris Lattner authored
      autoupgrade logic for 2.9 and before.
      
      llvm-svn: 145176
      410f3d7f
    • Chris Lattner's avatar
      remove autoupgrade support for old forms of llvm.prefetch and the old · ee471c48
      Chris Lattner authored
      trampoline forms.  Both of these were correct in LLVM 3.0, and we don't
      need to support LLVM 2.9 and earlier in mainline.
      
      llvm-svn: 145174
      ee471c48
    • Chris Lattner's avatar
      remove asmparsing and documentation support for "volatile load", which was... · bc639298
      Chris Lattner authored
      remove asmparsing and documentation support for "volatile load", which was only produced by LLVM 2.9 and earlier.  LLVM 3.0 and later prefers "load volatile".
      
      llvm-svn: 145172
      bc639298
    • Chris Lattner's avatar
      remove autoupgrade support for really old-style debug info intrinsics. · 90ef78c0
      Chris Lattner authored
      I think this is the last of autoupgrade that can be removed in 3.1.
      Can the atomic upgrade stuff also go?
      
      llvm-svn: 145169
      90ef78c0
    • Chris Lattner's avatar
      remove some old autoupgrade logic · 6aa6c0c3
      Chris Lattner authored
      llvm-svn: 145167
      6aa6c0c3
    • Chris Lattner's avatar
      remove autoupgrade support for LLVM 2.9 exception stuff. Mainline supports · db891539
      Chris Lattner authored
      LLVM 3.0 and later.
      
      llvm-svn: 145165
      db891539
    • Chris Lattner's avatar
    • Wesley Peck's avatar
      Add several new instructions supported by the latest MicroBlaze. · 97b3da54
      Wesley Peck authored
      These instructions are not generated by the backend yet, this will come in a later commit.
      
      llvm-svn: 145161
      97b3da54
    • Wesley Peck's avatar
      Optimize comparison against 0 in conditional instructions. · d2e2e178
      Wesley Peck authored
      Fix a couple of 80-column violations.
      
      llvm-svn: 145159
      d2e2e178
    • Chandler Carruth's avatar
      Introduce a loop block rotation optimization to the new block placement · 9ffb97e6
      Chandler Carruth authored
      pass. This is designed to achieve one of the important optimizations
      that the old code placement pass did, but more simply.
      
      This is a somewhat rough and *very* conservative version of the
      transform. We could get a lot fancier here if there are profitable cases
      to do so. In particular, this only looks for a single pattern, it
      insists that the loop backedge being rotated away is the last backedge
      in the chain, and it doesn't provide any means of doing better in-loop
      placement due to the rotation. However, it appears that it will handle
      the important loops I am finding in the LLVM test suite.
      
      llvm-svn: 145158
      9ffb97e6
    • Benjamin Kramer's avatar
      Move code into anonymous namespaces. · 7ba71be3
      Benjamin Kramer authored
      llvm-svn: 145154
      7ba71be3
  2. Nov 26, 2011
  3. Nov 25, 2011
  4. Nov 24, 2011
  5. Nov 23, 2011
Loading