Skip to content
  1. Aug 22, 2008
  2. Aug 20, 2008
  3. Aug 19, 2008
  4. Aug 07, 2008
    • Dan Gohman's avatar
      Re-enable elimination of unnecessary SUBREG_TO_REG instructions in · 527ca7e2
      Dan Gohman authored
      LowerSubregs, and fix an x86-64 isel bug that this exposed.
      
      SUBREG_TO_REG for x86-64 implicit zero extension is only safe for
      isel to generate when the source is known to always have zeros in
      the high 32 bits. The EXTRACT_SUBREG instruction does not clear
      the high 32 bits.
      
      llvm-svn: 54444
      527ca7e2
  5. Aug 06, 2008
  6. Jul 30, 2008
    • Dan Gohman's avatar
      Reapply r54147 with a constraint to only use the 8-bit · 86b06335
      Dan Gohman authored
      subreg form on x86-64, to avoid the problem with x86-32
      having GPRs that don't have 8-bit subregs.
      
      Also, change several 16-bit instructions to use 
      equivalent 32-bit instructions. These have a smaller
      encoding and avoid partial-register updates.
      
      llvm-svn: 54223
      86b06335
  7. Jul 29, 2008
  8. Jun 25, 2008
  9. May 30, 2008
  10. May 29, 2008
    • Dan Gohman's avatar
      Add patterns for CALL32m and CALL64m. They aren't matched in most · 96af4ddb
      Dan Gohman authored
      cases due to an isel deficiency already noted in
      lib/Target/X86/README.txt, but they can be matched in this fold-call.ll
      testcase, for example.
      
      This is interesting mainly because it exposes a tricky tblgen bug;
      tblgen was incorrectly computing the starting index for variable_ops
      in the case of a complex pattern.
      
      llvm-svn: 51706
      96af4ddb
  11. May 05, 2008
  12. May 04, 2008
  13. Apr 19, 2008
  14. Apr 18, 2008
  15. Mar 27, 2008
  16. Mar 19, 2008
  17. Mar 16, 2008
  18. Mar 15, 2008
  19. Mar 14, 2008
  20. 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
  21. Mar 10, 2008
  22. Mar 04, 2008
  23. Feb 27, 2008
    • Chris Lattner's avatar
      Compile x86-64-and-mask.ll into: · 3c7d3d57
      Chris Lattner authored
      _test:
      	movl	%edi, %eax
      	ret
      
      instead of:
      
      _test:
              movl    $4294967295, %ecx
              movq    %rdi, %rax
              andq    %rcx, %rax
              ret
      
      It would be great to write this as a Pat pattern that used subregs 
      instead of a 'pseudo' instruction, but I don't know how to do that
      in td files.
      
      llvm-svn: 47658
      3c7d3d57
  24. Feb 12, 2008
  25. Feb 07, 2008
    • Evan Cheng's avatar
      Fix a x86-64 codegen deficiency. Allow gv + offset when using rip addressing mode. · a20a7736
      Evan Cheng authored
      Before:
      _main:
              subq    $8, %rsp
              leaq    _X(%rip), %rax
              movsd   8(%rax), %xmm1
              movss   _X(%rip), %xmm0
              call    _t
              xorl    %ecx, %ecx
              movl    %ecx, %eax
              addq    $8, %rsp
              ret
      Now:
      _main:
              subq    $8, %rsp
              movsd   _X+8(%rip), %xmm1
              movss   _X(%rip), %xmm0
              call    _t
              xorl    %ecx, %ecx
              movl    %ecx, %eax
              addq    $8, %rsp
              ret
      
      Notice there is another idiotic codegen issue that needs to be fixed asap:
      xorl    %ecx, %ecx
      movl    %ecx, %eax
      
      llvm-svn: 46850
      a20a7736
  26. Feb 03, 2008
  27. Jan 29, 2008
    • Evan Cheng's avatar
      Work in progress. This patch *fixes* x86-64 calls which are modelled as... · 084a1cdc
      Evan Cheng authored
      Work in progress. This patch *fixes* x86-64 calls which are modelled as StructRet but really should be return in registers, e.g. _Complex long double, some 128-bit aggregates. This is a short term solution that is necessary only because llvm, for now, cannot model i128 nor call's with multiple results.
      Status: This only works for direct calls, and only the caller side is done. Disabled for now.
      
      llvm-svn: 46527
      084a1cdc
  28. Jan 23, 2008
    • Duncan Sands's avatar
      The last pieces needed for loading arbitrary · 95d46ef8
      Duncan Sands authored
      precision integers.  This won't actually work
      (and most of the code is dead) unless the new
      legalization machinery is turned on.  While
      there, I rationalized the handling of i1, and
      removed some bogus (and unused) sextload patterns.
      For i1, this could result in microscopically
      better code for some architectures (not X86).
      It might also result in worse code if annotating
      with AssertZExt nodes turns out to be more harmful
      than helpful.
      
      llvm-svn: 46280
      95d46ef8
  29. Jan 11, 2008
  30. Jan 10, 2008
    • Chris Lattner's avatar
      Start inferring side effect information more aggressively, and fix many bugs in the · 317332fc
      Chris Lattner authored
      x86 backend where instructions were not marked maystore/mayload, and perf issues where
      instructions were not marked neverHasSideEffects.  It would be really nice if we could
      write patterns for copy instructions.
      
      I have audited all the x86 instructions down to MOVDQAmr.  The flags on others and on
      other targets are probably not right in all cases, but no clients currently use this
      info that are enabled by default.
      
      llvm-svn: 45829
      317332fc
Loading