Skip to content
  1. Jan 29, 2008
  2. Jan 28, 2008
  3. Jan 27, 2008
    • Owen Anderson's avatar
      Reg alloc doesn't really need LiveVariables. · 9a8c890c
      Owen Anderson authored
      llvm-svn: 46420
      9a8c890c
    • 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
    • Chris Lattner's avatar
      For long double constants, print an approximation of their value to the .s... · f1a6c9fe
      Chris Lattner authored
      For long double constants, print an approximation of their value to the .s file to make it easier to read.
      
      llvm-svn: 46407
      f1a6c9fe
  4. Jan 26, 2008
  5. Jan 25, 2008
  6. Jan 24, 2008
  7. 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
    • Owen Anderson's avatar
      Fix an iterator invalidation issue. · 7fe0bb2b
      Owen Anderson authored
      llvm-svn: 46263
      7fe0bb2b
  8. Jan 22, 2008
  9. Jan 21, 2008
  10. Jan 20, 2008
  11. Jan 18, 2008
  12. 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
    • Chris Lattner's avatar
      code cleanups, no functionality change. · 7eabed35
      Chris Lattner authored
      llvm-svn: 46126
      7eabed35
    • Chris Lattner's avatar
      * Introduce a new SelectionDAG::getIntPtrConstant method · 72733e57
      Chris Lattner authored
        and switch various codegen pieces and the X86 backend over
        to using it.
      
      * Add some comments to SelectionDAGNodes.h
      
      * Introduce a second argument to FP_ROUND, which indicates
        whether the FP_ROUND changes the value of its input. If
        not it is safe to xform things like fp_extend(fp_round(x)) -> x.
      
      llvm-svn: 46125
      72733e57
    • Evan Cheng's avatar
      When a live virtual register is being clobbered by an implicit def, it is spilled · 54c20b55
      Evan Cheng authored
      and the spill is its kill. However, if the local allocator has determined the
      register has not been modified (possible when its value was reloaded), it would
      not issue a restore. In that case, mark the last use of the virtual register as
      kill.
      
      llvm-svn: 46111
      54c20b55
    • Evan Cheng's avatar
      Replace std::vector<bool> with BitVector. · dc5b4c57
      Evan Cheng authored
      llvm-svn: 46104
      dc5b4c57
Loading