Skip to content
  1. Oct 21, 2006
  2. Oct 20, 2006
  3. Oct 19, 2006
  4. Oct 18, 2006
  5. Oct 17, 2006
  6. Oct 16, 2006
  7. Oct 14, 2006
  8. Oct 13, 2006
  9. Oct 12, 2006
    • Chris Lattner's avatar
      Lower X%C into X/C+stuff. This allows the 'division by a constant' logic to · d0620d27
      Chris Lattner authored
      apply to rems as well as divs.  This fixes PR945 and speeds up ReedSolomon
      from 14.57s to 10.90s (which is now faster than gcc).
      
      It compiles CodeGen/X86/rem.ll into:
      
      _test1:
              subl $4, %esp
              movl %esi, (%esp)
              movl $2155905153, %ecx
              movl 8(%esp), %esi
              movl %esi, %eax
              imull %ecx
              addl %esi, %edx
              movl %edx, %eax
              shrl $31, %eax
              sarl $7, %edx
              addl %eax, %edx
              imull $255, %edx, %eax
              subl %eax, %esi
              movl %esi, %eax
              movl (%esp), %esi
              addl $4, %esp
              ret
      _test2:
              movl 4(%esp), %eax
              movl %eax, %ecx
              sarl $31, %ecx
              shrl $24, %ecx
              addl %eax, %ecx
              andl $4294967040, %ecx
              subl %ecx, %eax
              ret
      _test3:
              subl $4, %esp
              movl %esi, (%esp)
              movl $2155905153, %ecx
              movl 8(%esp), %esi
              movl %esi, %eax
              mull %ecx
              shrl $7, %edx
              imull $255, %edx, %eax
              subl %eax, %esi
              movl %esi, %eax
              movl (%esp), %esi
              addl $4, %esp
              ret
      
      instead of div/idiv instructions.
      
      llvm-svn: 30920
      d0620d27
Loading