Skip to content
  1. Feb 01, 2008
  2. Jan 31, 2008
  3. Jan 30, 2008
  4. Jan 29, 2008
  5. Jan 28, 2008
  6. Jan 27, 2008
    • Chris Lattner's avatar
      Implement some dag combines that allow doing fneg/fabs/fcopysign in integer · 888560d6
      Chris Lattner authored
      registers if used by a bitconvert or using a bitconvert.  This allows us to
      avoid constant pool loads and use cheaper integer instructions when the
      values come from or end up in integer regs anyway.  For example, we now 
      compile CodeGen/X86/fp-in-intregs.ll to:
      
      _test1:
      	movl	$2147483648, %eax
      	xorl	4(%esp), %eax
      	ret
      _test2:
      	movl	$1065353216, %eax
      	orl	4(%esp), %eax
      	andl	$3212836864, %eax
      	ret
      
      Instead of:
      _test1:
      	movss	4(%esp), %xmm0
      	xorps	LCPI2_0, %xmm0
      	movd	%xmm0, %eax
      	ret
      _test2:
      	movss	4(%esp), %xmm0
      	andps	LCPI3_0, %xmm0
      	movss	LCPI3_1, %xmm1
      	andps	LCPI3_2, %xmm1
      	orps	%xmm0, %xmm1
      	movd	%xmm1, %eax
      	ret
      
      bitconverts can happen due to various calling conventions that require
      fp values to passed in integer regs in some cases, e.g. when returning
      a complex.
      
      llvm-svn: 46414
      888560d6
  7. Jan 26, 2008
  8. Jan 25, 2008
  9. Jan 24, 2008
  10. 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
  11. Jan 22, 2008
  12. Jan 21, 2008
  13. Jan 20, 2008
  14. Jan 18, 2008
  15. 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
Loading