Skip to content
  1. May 21, 2006
  2. May 20, 2006
  3. May 16, 2006
  4. May 12, 2006
  5. May 08, 2006
    • Evan Cheng's avatar
      Fixing truncate. Previously we were emitting truncate from r16 to r8 as · 9733bde7
      Evan Cheng authored
      movw. That is we promote the destination operand to r16. So
              %CH = TRUNC_R16_R8 %BP
      is emitted as
              movw %bp, %cx.
      
      This is incorrect. If %cl is live, it would be clobbered.
      Ideally we want to do the opposite, that is emitted it as
              movb ??, %ch
      But this is not possible since %bp does not have a r8 sub-register.
      
      We are now defining a new register class R16_ which is a subclass of R16
      containing only those 16-bit registers that have r8 sub-registers (i.e.
      AX - DX). We isel the truncate to two instructions, a MOV16to16_ to copy the
      value to the R16_ class, followed by a TRUNC_R16_R8.
      
      Due to bug 770, the register colaescer is not going to coalesce between R16 and
      R16_. That will be fixed later so we can eliminate the MOV16to16_. Right now, it
      can only be eliminated if we are lucky that source and destination registers are
      the same.
      
      llvm-svn: 28164
      9733bde7
  6. May 05, 2006
  7. Mar 25, 2006
  8. Mar 14, 2006
  9. Feb 28, 2006
  10. Feb 25, 2006
    • Evan Cheng's avatar
      * Cleaned up addressing mode matching code. · 77d86ff8
      Evan Cheng authored
      * Cleaned up and tweaked LEA cost analysis code. Removed some hacks.
      * Handle ADD $X, c to MOV32ri $X+c. These patterns cannot be autogen'd and
        they need to be matched before LEA.
      
      llvm-svn: 26376
      77d86ff8
  11. Feb 23, 2006
  12. Feb 18, 2006
  13. Feb 11, 2006
  14. Feb 10, 2006
  15. Feb 09, 2006
  16. Feb 06, 2006
  17. Feb 05, 2006
  18. Feb 04, 2006
  19. Jan 31, 2006
  20. Jan 27, 2006
  21. Jan 23, 2006
  22. Jan 19, 2006
  23. Jan 16, 2006
  24. Jan 15, 2006
  25. Jan 14, 2006
  26. Jan 11, 2006
Loading