Skip to content
  1. Aug 29, 2008
  2. 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
  3. Jan 10, 2008
  4. Jan 08, 2008
  5. Jan 07, 2008
  6. Jan 06, 2008
  7. Dec 29, 2007
  8. Nov 13, 2007
    • Bill Wendling's avatar
      Unify CALLSEQ_{START,END}. They take 4 parameters: the chain, two stack · f359fed9
      Bill Wendling authored
      adjustment fields, and an optional flag. If there is a "dynamic_stackalloc" in
      the code, make sure that it's bracketed by CALLSEQ_START and CALLSEQ_END. If
      not, then there is the potential for the stack to be changed while the stack's
      being used by another instruction (like a call).
      
      This can only result in tears...
      
      llvm-svn: 44037
      f359fed9
  9. Sep 11, 2007
  10. Aug 07, 2007
  11. Jul 21, 2007
  12. Jul 19, 2007
    • Evan Cheng's avatar
      Change instruction description to split OperandList into OutOperandList and · 94b5a80b
      Evan Cheng authored
      InOperandList. This gives one piece of important information: # of results
      produced by an instruction.
      An example of the change:
      def ADD32rr  : I<0x01, MRMDestReg, (ops GR32:$dst, GR32:$src1, GR32:$src2),
                       "add{l} {$src2, $dst|$dst, $src2}",
                       [(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>;
      =>
      def ADD32rr  : I<0x01, MRMDestReg, (outs GR32:$dst), (ins GR32:$src1, GR32:$src2),
                       "add{l} {$src2, $dst|$dst, $src2}",
                       [(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>;
      
      llvm-svn: 40033
      94b5a80b
  13. Jul 10, 2007
  14. Jul 07, 2007
  15. Jul 05, 2007
  16. Jun 26, 2007
  17. Jun 19, 2007
  18. Jun 08, 2007
  19. Jun 06, 2007
  20. May 16, 2007
  21. May 15, 2007
  22. May 08, 2007
  23. May 01, 2007
  24. Apr 27, 2007
  25. Apr 02, 2007
  26. Mar 29, 2007
  27. Mar 27, 2007
  28. Mar 20, 2007
  29. Mar 19, 2007
  30. Feb 07, 2007
  31. Feb 01, 2007
  32. Jan 31, 2007
  33. Jan 30, 2007
    • Evan Cheng's avatar
      - Fix codegen for pc relative constant (e.g. JT) in thumb mode: · 83f35170
      Evan Cheng authored
              .set PCRELV0, (LJTI1_0_0-(LPCRELL0+4))
      LPCRELL0:
              add r1, pc, #PCRELV0
      This is not legal since add r1, pc, #c requires the constant be a multiple of 4.
      Do the following instead:
              .set PCRELV0, (LJTI1_0_0-(LPCRELL0+4))
      LPCRELL0:
              mov r1, #PCRELV0
              add r1, pc
      
      - In thumb mode, it's not possible to use .set generate a pc relative stub
        address. The stub is ARM code which is in a different section from the thumb
        code. Load the value from a constpool instead.
      - Some asm printing clean up.
      
      llvm-svn: 33664
      83f35170
Loading