Skip to content
  1. Jun 30, 2009
  2. Jun 29, 2009
    • David Goodwin's avatar
      Rename ARMcmpNZ to ARMcmpZ and use it to represent comparisons that set only... · dbf11ba8
      David Goodwin authored
      Rename ARMcmpNZ to ARMcmpZ and use it to represent comparisons that set only the Z flag (i.e. eq and ne). Make ARMcmpZ commutative.
      
      llvm-svn: 74423
      dbf11ba8
    • Evan Cheng's avatar
      Implement Thumb2 ldr. · b23b50d5
      Evan Cheng authored
      After much back and forth, I decided to deviate from ARM design and split LDR into 4 instructions (r + imm12, r + imm8, r + r << imm12, constantpool). The advantage of this is 1) it follows the latest ARM technical manual, and 2) makes it easier to reduce the width of the instruction later. The down side is this creates more inconsistency between the two sub-targets. We should split ARM LDR instruction in a similar fashion later. I've added a README entry for this.
      
      llvm-svn: 74420
      b23b50d5
  3. Jun 27, 2009
  4. Jun 26, 2009
  5. Jun 25, 2009
  6. Jun 23, 2009
  7. Jun 19, 2009
  8. Jun 12, 2009
  9. May 13, 2009
  10. Apr 07, 2009
    • Jim Grosbach's avatar
      PR2985 / <rdar://problem/6584986> · fde2110a
      Jim Grosbach authored
      When compiling in Thumb mode, only the low (R0-R7) registers are available
      for most instructions. Breaking the low registers into a new register class
      handles this. Uses of R12, SP, etc, are handled explicitly where needed
      with copies inserted to move results into low registers where the rest of
      the code generator can deal with them.
      
      llvm-svn: 68545
      fde2110a
  11. Mar 28, 2009
  12. Dec 03, 2008
  13. Sep 12, 2008
  14. Aug 29, 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
  16. Jan 10, 2008
  17. Jan 08, 2008
  18. Jan 07, 2008
  19. Jan 06, 2008
  20. Dec 29, 2007
  21. 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
  22. Sep 11, 2007
  23. Aug 07, 2007
  24. Jul 21, 2007
  25. 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
  26. Jul 10, 2007
  27. Jul 07, 2007
  28. Jul 05, 2007
  29. Jun 26, 2007
  30. Jun 19, 2007
  31. Jun 08, 2007
  32. Jun 06, 2007
  33. May 16, 2007
Loading