Skip to content
  1. Apr 18, 2007
  2. Apr 17, 2007
  3. Apr 16, 2007
  4. Apr 14, 2007
  5. Apr 13, 2007
  6. Apr 12, 2007
  7. 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
  8. Apr 10, 2007
  9. Apr 09, 2007
  10. Apr 06, 2007
Loading