Skip to content
  1. May 14, 2009
    • Bob Wilson's avatar
      Revert a portion of Dan's change r71018 that I'm convinced is wrong. · 43f21dde
      Bob Wilson authored
      Dan was trying to catch the case where a basic block ends with a conditional
      branch to the fall-through block.  In this case, all the instructions have
      been moved out of FromBBI, leaving it empty.  It cannot end with a
      conditional branch.  As the existing comment indicates, it will always fall
      through to the next block.  If the block already had the next block (NBB)
      listed as a successor, the preceding loop has a check for that and does not
      remove it.  Thus, we need to check and add the successor only when it is
      not already listed.
      
      With Dan's change, the empty block often ends up with the fall-through
      successor listed twice.  This exposed the problem in pr4195, where
      CodePlacementOpt did not handle the same predecessor listed more than once.
      It is also at least partially responsible for pr4202 and probably a similar
      issue with Thumb branches being out of range.
      
      llvm-svn: 71742
      43f21dde
    • Bob Wilson's avatar
      Merge adjacent conditional. · 969bf71c
      Bob Wilson authored
      llvm-svn: 71741
      969bf71c
    • Bob Wilson's avatar
      Remove an unused variable. · 43467d7d
      Bob Wilson authored
      llvm-svn: 71740
      43467d7d
    • Bob Wilson's avatar
      Fix some typos and spelling and grammar, mostly in comments, but also one · 2371f4f7
      Bob Wilson authored
      field name.  No functional changes.
      
      llvm-svn: 71739
      2371f4f7
  2. May 05, 2009
  3. Nov 04, 2008
  4. Oct 21, 2008
    • Dan Gohman's avatar
      Optimized FCMP_OEQ and FCMP_UNE for x86. · 97d95d6d
      Dan Gohman authored
      Where previously LLVM might emit code like this:
      
              ucomisd %xmm1, %xmm0
              setne   %al
              setp    %cl
              orb     %al, %cl
              jne     .LBB4_2
      
      it now emits this:
      
              ucomisd %xmm1, %xmm0
              jne     .LBB4_2
              jp      .LBB4_2
      
      It has fewer instructions and uses fewer registers, but it does
      have more branches. And in the case that this code is followed by
      a non-fallthrough edge, it may be followed by a jmp instruction,
      resulting in three branch instructions in sequence. Some effort
      is made to avoid this situation.
      
      To achieve this, X86ISelLowering.cpp now recognizes FCMP_OEQ and
      FCMP_UNE in lowered form, and replace them with code that emits
      two branches, except in the case where it would require converting
      a fall-through edge to an explicit branch.
      
      Also, X86InstrInfo.cpp's branch analysis and transform code now
      knows now to handle blocks with multiple conditional branches. It
      uses loops instead of having fixed checks for up to two
      instructions. It can now analyze and transform code generated
      from FCMP_OEQ and FCMP_UNE.
      
      llvm-svn: 57873
      97d95d6d
  5. Sep 04, 2008
  6. Aug 22, 2008
  7. Aug 15, 2008
  8. Jul 08, 2008
    • Dan Gohman's avatar
      Pool-allocation for MachineInstrs, MachineBasicBlocks, and · 3b460303
      Dan Gohman authored
      MachineMemOperands. The pools are owned by MachineFunctions.
      
      This drastically reduces the number of calls to malloc/free made
      during the "Emit" phase of scheduling, as well as later phases
      in CodeGen. Combined with other changes, this speeds up the
      "instruction selection" phase of CodeGen by 10% in some cases.
      
      llvm-svn: 53212
      3b460303
  9. Jun 04, 2008
  10. Feb 28, 2008
  11. Feb 20, 2008
  12. Jan 29, 2008
  13. Jan 07, 2008
  14. Dec 29, 2007
  15. Jul 10, 2007
  16. Jul 07, 2007
  17. Jun 19, 2007
  18. Jun 18, 2007
  19. Jun 16, 2007
    • Evan Cheng's avatar
      Really turn if-converter loose: · 3a51c854
      Evan Cheng authored
      1. Consider all possible ifcvt cases at once. No longer restricted to bottom
         up iterative approach.
      2. Sort all possible cases based on a cost function. Perform the most profitable
         ones first invalidate others that target the same blocks.
      3. Fixed a number of bugs related to block duplication.
      
      llvm-svn: 37613
      3a51c854
  20. Jun 15, 2007
  21. Jun 14, 2007
  22. Jun 13, 2007
  23. Jun 12, 2007
  24. Jun 10, 2007
  25. Jun 09, 2007
Loading