Skip to content
  1. May 12, 2008
  2. May 05, 2008
  3. May 04, 2008
  4. Apr 30, 2008
    • Arnold Schwaighofer's avatar
      Tail call optimization improvements: · be0de34e
      Arnold Schwaighofer authored
      Move platform independent code (lowering of possibly overwritten
      arguments, check for tail call optimization eligibility) from
      target X86ISelectionLowering.cpp to TargetLowering.h and
      SelectionDAGISel.cpp.
      
      Initial PowerPC tail call implementation:
      
      Support ppc32 implemented and tested (passes my tests and
      test-suite llvm-test).  
      Support ppc64 implemented and half tested (passes my tests).
      On ppc tail call optimization is performed if 
        caller and callee are fastcc
        call is a tail call (in tail call position, call followed by ret)
        no variable argument lists or byval arguments
        option -tailcallopt is enabled
      Supported:
       * non pic tail calls on linux/darwin
       * module-local tail calls on linux(PIC/GOT)/darwin(PIC)
       * inter-module tail calls on darwin(PIC)
      If constraints are not met a normal call will be emitted.
      
      A test checking the argument lowering behaviour on x86-64 was added.
      
      llvm-svn: 50477
      be0de34e
  5. Apr 25, 2008
  6. Apr 19, 2008
  7. Apr 18, 2008
  8. Apr 17, 2008
  9. Apr 12, 2008
  10. Mar 27, 2008
  11. Mar 19, 2008
  12. Mar 15, 2008
  13. 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
  14. Mar 11, 2008
  15. Mar 10, 2008
  16. Mar 05, 2008
  17. Mar 04, 2008
  18. Mar 02, 2008
  19. Mar 01, 2008
  20. Feb 21, 2008
  21. Feb 20, 2008
  22. Feb 19, 2008
  23. 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
  24. Feb 03, 2008
  25. 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
  26. Jan 17, 2008
    • Chris Lattner's avatar
      This commit changes: · 1ea55cf8
      Chris Lattner authored
      1. Legalize now always promotes truncstore of i1 to i8. 
      2. Remove patterns and gunk related to truncstore i1 from targets.
      3. Rename the StoreXAction stuff to TruncStoreAction in TLI.
      4. Make the TLI TruncStoreAction table a 2d table to handle from/to conversions.
      5. Mark a wide variety of invalid truncstores as such in various targets, e.g.
         X86 currently doesn't support truncstore of any of its integer types.
      6. Add legalize support for truncstores with invalid value input types.
      7. Add a dag combine transform to turn store(truncate) into truncstore when
         safe.
      
      The later allows us to compile CodeGen/X86/storetrunc-fp.ll to:
      
      _foo:
      	fldt	20(%esp)
      	fldt	4(%esp)
      	faddp	%st(1)
      	movl	36(%esp), %eax
      	fstps	(%eax)
      	ret
      
      instead of:
      
      _foo:
      	subl	$4, %esp
      	fldt	24(%esp)
      	fldt	8(%esp)
      	faddp	%st(1)
      	fstps	(%esp)
      	movl	40(%esp), %eax
      	movss	(%esp), %xmm0
      	movss	%xmm0, (%eax)
      	addl	$4, %esp
      	ret
      
      llvm-svn: 46140
      1ea55cf8
  27. Jan 15, 2008
  28. Jan 11, 2008
  29. Jan 10, 2008
Loading