Skip to content
  1. Mar 28, 2009
  2. Feb 09, 2009
  3. Feb 06, 2009
  4. Jan 20, 2009
  5. Jan 07, 2009
  6. Jan 05, 2009
  7. Dec 03, 2008
  8. Nov 26, 2008
  9. Nov 18, 2008
  10. Oct 27, 2008
  11. 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
  12. Oct 17, 2008
  13. Oct 16, 2008
  14. Oct 11, 2008
  15. Oct 03, 2008
  16. Sep 30, 2008
  17. Sep 23, 2008
  18. Aug 30, 2008
  19. Aug 29, 2008
  20. Aug 26, 2008
  21. Aug 15, 2008
  22. 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
  23. Jul 03, 2008
  24. Jun 28, 2008
  25. Jun 16, 2008
  26. May 14, 2008
  27. May 12, 2008
  28. Apr 16, 2008
  29. Mar 31, 2008
  30. Mar 25, 2008
  31. Mar 13, 2008
    • Christopher Lamb's avatar
      Get rid of a pseudo instruction and replace it with subreg based operation on... · dd55d3f1
      Christopher Lamb authored
      Get rid of a pseudo instruction and replace it with subreg based operation on real instructions, ridding the asm printers of the hack used to do this previously. In the process, update LowerSubregs to be careful about eliminating copies that have side affects. 
      
      Note: the coalescer will have to be careful about this too, when it starts coalescing insert_subreg nodes.
      llvm-svn: 48329
      dd55d3f1
  32. Mar 11, 2008
  33. Mar 10, 2008
  34. Mar 01, 2008
  35. Feb 10, 2008
  36. Feb 08, 2008
  37. Jan 11, 2008
    • Chris Lattner's avatar
      Simplify the side effect stuff a bit more and make licm/sinking · c8226f32
      Chris Lattner authored
      both work right according to the new flags.
      
      This removes the TII::isReallySideEffectFree predicate, and adds
      TII::isInvariantLoad. 
      
      It removes NeverHasSideEffects+MayHaveSideEffects and adds
      UnmodeledSideEffects as machine instr flags.  Now the clients
      can decide everything they need.
      
      I think isRematerializable can be implemented in terms of the
      flags we have now, though I will let others tackle that.
      
      llvm-svn: 45843
      c8226f32
  38. Jan 07, 2008
Loading