Skip to content
  1. Jan 15, 2009
  2. Jan 09, 2009
  3. Jan 07, 2009
  4. Jan 05, 2009
  5. Dec 23, 2008
  6. Dec 18, 2008
  7. Dec 05, 2008
    • Evan Cheng's avatar
      Reason #3 from 60595 doesn't hold true. If we can fold a PIC load from... · 43c08918
      Evan Cheng authored
      Reason #3 from 60595 doesn't hold true. If we can fold a PIC load from constpool into a use, the rewrite happens at time of spill (not in VirtRegMap). Later on, if the GlobalBaseReg is spilled, the spiller can see the use uses GlobalBaseReg and do the right thing.
      
      llvm-svn: 60596
      43c08918
    • Evan Cheng's avatar
      Effectively undo 60461 in PIC mode which simply transform V_SET0 /... · fd8c4d59
      Evan Cheng authored
      Effectively undo 60461 in PIC mode which simply transform V_SET0 / V_SETALLONES into a load from constpool in order to fold into restores. This is not safe to do when PIC base is being used for a number of reasons:
      1. GlobalBaseReg may have been spilled.
      2. It may not be live at the use.
      3. Spiller doesn't know this is happening so it won't prevent GlobalBaseReg from being spilled later (That by itself is a nasty hack. It's needed because we don't insert the reload until later).
      
      llvm-svn: 60595
      fd8c4d59
  8. Dec 03, 2008
  9. Dec 02, 2008
  10. Nov 26, 2008
  11. Nov 18, 2008
  12. Oct 27, 2008
  13. Oct 25, 2008
  14. 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
    • Dan Gohman's avatar
      When the coalescer is doing rematerializing, have it remove · c835458d
      Dan Gohman authored
      the copy instruction from the instruction list before asking the
      target to create the new instruction. This gets the old instruction
      out of the way so that it doesn't interfere with the target's
      rematerialization code. In the case of x86, this helps it find
      more cases where EFLAGS is not live.
      
      Also, in the X86InstrInfo.cpp, teach isSafeToClobberEFLAGS to check
      to see if it reached the end of the block after scanning each
      instruction, instead of just before. This lets it notice when the
      end of the block is only two instructions away, without doing any
      additional scanning.
      
      These changes allow rematerialization to clobber EFLAGS in more
      cases, for example using xor instead of mov to set the return value
      to zero in the included testcase.
      
      llvm-svn: 57872
      c835458d
  15. Oct 17, 2008
    • Dan Gohman's avatar
      Define patterns for shld and shrd that match immediate · a39b0a1f
      Dan Gohman authored
      shift counts, and patterns that match dynamic shift counts
      when the subtract is obscured by a truncate node.
      
      Add DAGCombiner support for recognizing rotate patterns
      when the shift counts are defined by truncate nodes.
      
      Fix and simplify the code for commuting shld and shrd
      instructions to work even when the given instruction doesn't
      have a parent, and when the caller needs a new instruction.
      
      These changes allow LLVM to use the shld, shrd, rol, and ror
      instructions on x86 to replace equivalent code using two
      shifts and an or in many more cases.
      
      llvm-svn: 57662
      a39b0a1f
  16. Oct 16, 2008
  17. Oct 12, 2008
  18. Oct 04, 2008
  19. Oct 03, 2008
  20. Sep 30, 2008
  21. Sep 26, 2008
  22. Sep 23, 2008
  23. Sep 13, 2008
    • Dan Gohman's avatar
      Remove isImm(), isReg(), and friends, in favor of · 38453eeb
      Dan Gohman authored
      isImmediate(), isRegister(), and friends, to avoid confusion
      about having two different names with the same meaning. I'm
      not attached to the longer names, and would be ok with
      changing to the shorter names if others prefer it.
      
      llvm-svn: 56189
      38453eeb
  24. Aug 30, 2008
  25. Aug 29, 2008
  26. Aug 26, 2008
  27. Aug 15, 2008
  28. Aug 08, 2008
Loading