Skip to content
  • Chris Lattner's avatar
    Upgrade the ugly darwin 64-bit bswap idiom (bswap %eax / bswap %edx / · 38084725
    Chris Lattner authored
    xchgl %eax, %edx) to llvm.bswap.i64.  This compiles:
    
    long long test2(long long A) {
      return _OSSwapInt64(A);
    }
    
    to:
    
    _test2:
            movl 8(%esp), %eax
            movl 4(%esp), %edx
            bswapl %eax
            bswapl %edx
            ret
    
    instead of:
    
    _test2:
            movl 8(%esp), %edx
            movl 4(%esp), %eax
            bswap   %eax
            bswap   %edx
            xchgl   %eax, %edx
            ret
    
    GCC manages (with -fomit-frame-pointer) the uglier:
    
    _test2:
            subl    $4, %esp
            movl    8(%esp), %eax
            movl    12(%esp), %edx
            bswap   %eax
            bswap   %edx
            xchgl   %eax, %edx
            addl    $4, %esp
            ret
    
    llvm-svn: 32001
    38084725
Loading