Skip to content
  1. Jan 25, 2008
  2. Jan 24, 2008
  3. 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
  4. Jan 22, 2008
  5. Jan 21, 2008
  6. Jan 20, 2008
  7. Jan 18, 2008
  8. 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
    • Evan Cheng's avatar
      Fixes a nasty dag combiner bug that causes a bunch of tests to fail at -O0. · 7be15280
      Evan Cheng authored
      It's not safe to use the two value CombineTo variant to combine away a dead load.
      e.g. 
      v1, chain2 = load chain1, loc
      v2, chain3 = load chain2, loc
      v3         = add v2, c 
      Now we replace use of v1 with undef, use of chain2 with chain1.
      ReplaceAllUsesWith() will iterate through uses of the first load and update operands:
      v1, chain2 = load chain1, loc
      v2, chain3 = load chain1, loc
      v3         = add v2, c 
      Now the second load is the same as the first load, SelectionDAG cse will ensure
      the use of second load is replaced with the first load.
      v1, chain2 = load chain1, loc
      v3         = add v1, c
      Then v1 is replaced with undef and bad things happen.
      
      llvm-svn: 46099
      7be15280
  9. Jan 16, 2008
  10. Jan 15, 2008
  11. Jan 14, 2008
Loading