Skip to content
  1. Jan 10, 2005
  2. Jan 09, 2005
  3. Jan 08, 2005
  4. Jan 07, 2005
  5. Jan 06, 2005
  6. Jan 05, 2005
  7. Jan 03, 2005
  8. Jan 02, 2005
  9. Dec 17, 2004
  10. Dec 16, 2004
  11. Dec 13, 2004
  12. Dec 12, 2004
  13. Dec 03, 2004
  14. Dec 02, 2004
  15. Dec 01, 2004
  16. Nov 29, 2004
    • Chris Lattner's avatar
      Revamp long/ulong comparisons to use a much more efficient sequence (thanks · f9c5dc9f
      Chris Lattner authored
      to Brian and the Sun compiler for pointing out that the obvious works :)
      
      This also enables folding all long comparisons into setcc and branch
      instructions: before we could only do == and !=
      
      For example, for:
      void test(unsigned long long A, unsigned long long B) {
         if (A < B) foo();
       }
      
      We now generate:
      
      test:
              subl $4, %esp
              movl %esi, (%esp)
              movl 8(%esp), %eax
              movl 12(%esp), %ecx
              movl 16(%esp), %edx
              movl 20(%esp), %esi
              subl %edx, %eax
              sbbl %esi, %ecx
              jae .LBBtest_2  # UnifiedReturnBlock
      .LBBtest_1:     # then
              call foo
              movl (%esp), %esi
              addl $4, %esp
              ret
      .LBBtest_2:     # UnifiedReturnBlock
              movl (%esp), %esi
              addl $4, %esp
              ret
      
      Instead of:
      
      test:
              subl $12, %esp
              movl %esi, 8(%esp)
              movl %ebx, 4(%esp)
              movl 16(%esp), %eax
              movl 20(%esp), %ecx
              movl 24(%esp), %edx
              movl 28(%esp), %esi
              cmpl %edx, %eax
              setb %al
              cmpl %esi, %ecx
              setb %bl
              cmove %ax, %bx
              testb %bl, %bl
              je .LBBtest_2   # UnifiedReturnBlock
      .LBBtest_1:     # then
              call foo
              movl 4(%esp), %ebx
              movl 8(%esp), %esi
              addl $12, %esp
              ret
      .LBBtest_2:     # UnifiedReturnBlock
              movl 4(%esp), %ebx
              movl 8(%esp), %esi
              addl $12, %esp
              ret
      
      llvm-svn: 18330
      f9c5dc9f
  17. Nov 22, 2004
  18. Nov 21, 2004
Loading