1214152Sed//===------- bswapsi2 - Implement bswapsi2 --------------------------------===// 2214152Sed// 3214152Sed// The LLVM Compiler Infrastructure 4214152Sed// 5222656Sed// This file is dual licensed under the MIT and the University of Illinois Open 6222656Sed// Source Licenses. See LICENSE.TXT for details. 7214152Sed// 8214152Sed//===----------------------------------------------------------------------===// 9214152Sed 10214152Sed#include "../assembly.h" 11214152Sed 12214152Sed// 13214152Sed// extern uint32_t __bswapsi2(uint32_t); 14214152Sed// 15214152Sed// Reverse all the bytes in a 32-bit integer. 16214152Sed// 17214152Sed.align 2 18214152SedDEFINE_COMPILERRT_FUNCTION(__bswapsi2) 19214152Sed#if __ARM_ARCH_5TEJ__ || __ARM_ARCH_4T__ 20214152Sed // before armv6 does not have "rev" instruction 21214152Sed eor r1, r0, r0, ror #16 22214152Sed bic r1, r1, #0xff0000 23214152Sed mov r1, r1, lsr #8 24214152Sed eor r0, r1, r0, ror #8 25214152Sed#else 26214152Sed rev r0, r0 27214152Sed#endif 28214152Sed bx lr 29