Skip to content
  1. Oct 23, 2011
    • Chandler Carruth's avatar
      Completely re-write the algorithm behind MachineBlockPlacement based on · bd1be4d0
      Chandler Carruth authored
      discussions with Andy. Fundamentally, the previous algorithm is both
      counter productive on several fronts and prioritizing things which
      aren't necessarily the most important: static branch prediction.
      
      The new algorithm uses the existing loop CFG structure information to
      walk through the CFG itself to layout blocks. It coalesces adjacent
      blocks within the loop where the CFG allows based on the most likely
      path taken. Finally, it topologically orders the block chains that have
      been formed. This allows it to choose a (mostly) topologically valid
      ordering which still priorizes fallthrough within the structural
      constraints.
      
      As a final twist in the algorithm, it does violate the CFG when it
      discovers a "hot" edge, that is an edge that is more than 4x hotter than
      the competing edges in the CFG. These are forcibly merged into
      a fallthrough chain.
      
      Future transformations that need te be added are rotation of loop exit
      conditions to be fallthrough, and better isolation of cold block chains.
      I'm also planning on adding statistics to model how well the algorithm
      does at laying out blocks based on the probabilities it receives.
      
      The old tests mostly still pass, and I have some new tests to add, but
      the nested loops are still behaving very strangely. This almost seems
      like working-as-intended as it rotated the exit branch to be
      fallthrough, but I'm not convinced this is actually the best layout. It
      is well supported by the probabilities for loops we currently get, but
      those are pretty broken for nested loops, so this may change later.
      
      llvm-svn: 142743
      bd1be4d0
    • Craig Topper's avatar
      Add X86 RORX instruction · 980d5983
      Craig Topper authored
      llvm-svn: 142741
      980d5983
    • Cameron Zwarich's avatar
      The element insertion code in scalar replacement doesn't handle incorrect · 057fbb1a
      Cameron Zwarich authored
      element types, even though the element extraction code does. It is surprising
      that this bug has been here for so long. Fixes <rdar://problem/10318778>.
      
      llvm-svn: 142740
      057fbb1a
    • Craig Topper's avatar
      Add X86 MULX instruction for disassembler. · e94d277d
      Craig Topper authored
      llvm-svn: 142738
      e94d277d
    • Craig Topper's avatar
  2. Oct 22, 2011
  3. Oct 21, 2011
  4. Oct 20, 2011
Loading