Skip to content
  1. Apr 16, 2007
  2. Apr 14, 2007
  3. Apr 13, 2007
  4. Apr 12, 2007
  5. Apr 11, 2007
    • Chris Lattner's avatar
      fix an infinite loop compiling ldecod, notice by JeffC. · 18e4ac41
      Chris Lattner authored
      llvm-svn: 35910
      18e4ac41
    • Chris Lattner's avatar
      Fix this harder. · a083ffca
      Chris Lattner authored
      llvm-svn: 35888
      a083ffca
    • Chris Lattner's avatar
      c5f85d37
    • Chris Lattner's avatar
      Teach the codegen to turn [aez]ext (setcc) -> selectcc of 1/0, which often · 65786b07
      Chris Lattner authored
      allows other simplifications.  For example, this compiles:
      int isnegative(unsigned int X) {
         return !(X < 2147483648U);
      }
      
      Into this code:
      
      x86:
              movl 4(%esp), %eax
              shrl $31, %eax
              ret
      arm:
              mov r0, r0, lsr #31
              bx lr
      thumb:
              lsr r0, r0, #31
              bx lr
      
      instead of:
      
      x86:
              cmpl $0, 4(%esp)
              sets %al
              movzbl %al, %eax
              ret
      
      arm:
              mov r3, #0
              cmp r0, #0
              movlt r3, #1
              mov r0, r3
              bx lr
      
      thumb:
              mov r2, #1
              mov r1, #0
              cmp r0, #0
              blt LBB1_2      @entry
      LBB1_1: @entry
              cpy r2, r1
      LBB1_2: @entry
              cpy r0, r2
              bx lr
      
      Testcase here: test/CodeGen/Generic/ispositive.ll
      
      llvm-svn: 35883
      65786b07
    • Chris Lattner's avatar
      Codegen integer abs more efficiently using the trick from the PPC CWG. This · 41189c63
      Chris Lattner authored
      improves codegen on many architectures.  Tests committed as CodeGen/*/iabs.ll
      
      X86 Old:			X86 New:
      _test:				_test:
         movl 4(%esp), %ecx		   movl 4(%esp), %eax
         movl %ecx, %eax		   movl %eax, %ecx
         negl %eax			   sarl $31, %ecx
         testl %ecx, %ecx		   addl %ecx, %eax
         cmovns %ecx, %eax		   xorl %ecx, %eax
         ret				   ret
      
      PPC Old:			PPC New:
      _test:				_test:
         cmpwi cr0, r3, -1		   srawi r2, r3, 31
         neg r2, r3			   add r3, r3, r2
         bgt cr0, LBB1_2 ;		   xor r3, r3, r2
      LBB1_1: ;			   blr
         mr r3, r2
      LBB1_2: ;
         blr
      
      ARM Old:			ARM New:
      _test:				_test:
         rsb r3, r0, #0		   add r3, r0, r0, asr #31
         cmp r0, #0			   eor r0, r3, r0, asr #31
         movge r3, r0			   bx lr
         mov r0, r3
         bx lr
      
      Thumb Old:			Thumb New:
      _test:				_test:
         neg r2, r0			   asr r2, r0, #31
         cmp r0, #0			   add r0, r0, r2
         bge LBB1_2			   eor r0, r2
      LBB1_1: @			   bx lr
         cpy r0, r2
      LBB1_2: @
         bx lr
      
      
      Sparc Old:			Sparc New:
      test:				test:
         save -96, %o6, %o6		   save -96, %o6, %o6
         sethi 0, %l0			   sra %i0, 31, %l0
         sub %l0, %i0, %l0		   add %i0, %l0, %l1
         subcc %i0, -1, %l1		   xor %l1, %l0, %i0
         bg .BB1_2			   restore %g0, %g0, %g0
         nop				   retl
      .BB1_1:				   nop
         or %g0, %l0, %i0
      .BB1_2:
         restore %g0, %g0, %g0
         retl
         nop
      
      It also helps alpha/ia64 :)
      
      llvm-svn: 35881
      41189c63
    • Reid Spencer's avatar
      For PR1146: · a472f66d
      Reid Spencer authored
      Put the parameter attributes in their own ParamAttr name space. Adjust the
      rest of llvm as a result.
      
      llvm-svn: 35877
      a472f66d
  6. Apr 10, 2007
  7. Apr 09, 2007
  8. Apr 06, 2007
  9. Apr 05, 2007
  10. Apr 04, 2007
  11. Apr 03, 2007
  12. Apr 02, 2007
    • Scott Michel's avatar
      1. Insert custom lowering hooks for ISD::ROTR and ISD::ROTL. · 16627a54
      Scott Michel authored
      2. Help DAGCombiner recognize zero/sign/any-extended versions of ROTR and ROTL
      patterns. This was motivated by the X86/rotate.ll testcase, which should now
      generate code for other platforms (and soon-to-come platforms.) Rewrote code
      slightly to make it easier to read.
      
      llvm-svn: 35605
      16627a54
Loading