177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao//===------- bswapdi2 - Implement bswapdi2 ---------------------------------===// 277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// 377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// The LLVM Compiler Infrastructure 477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// 577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// This file is distributed under the University of Illinois Open Source 677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// License. See LICENSE.TXT for details. 777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// 877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao//===----------------------------------------------------------------------===// 977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 1077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#include "../assembly.h" 1177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 1277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// 1377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// extern uint64_t __bswapdi2(uint64_t); 1477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// 1577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// Reverse all the bytes in a 64-bit integer. 1677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// 1777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei LiaoDEFINE_COMPILERRT_FUNCTION(__bswapdi2) 1877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao rev r2, r1 // reverse bytes in high 32-bits into temp2 1977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao rev r3, r0 // reverse bytes in low 32-bit into temp3 2077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao mov r0, r2 // set low 32-bits of result to temp2 2177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao mov r1, r3 // set high 32-bits of result to temp3 2277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao bx lr 23