1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #ifndef __ASM_BITREV_H 3*4882a593Smuzhiyun #define __ASM_BITREV_H __arch_bitrev32(u32 x)4*4882a593Smuzhiyunstatic __always_inline __attribute_const__ u32 __arch_bitrev32(u32 x) 5*4882a593Smuzhiyun { 6*4882a593Smuzhiyun __asm__ ("rbit %w0, %w1" : "=r" (x) : "r" (x)); 7*4882a593Smuzhiyun return x; 8*4882a593Smuzhiyun } 9*4882a593Smuzhiyun __arch_bitrev16(u16 x)10*4882a593Smuzhiyunstatic __always_inline __attribute_const__ u16 __arch_bitrev16(u16 x) 11*4882a593Smuzhiyun { 12*4882a593Smuzhiyun return __arch_bitrev32((u32)x) >> 16; 13*4882a593Smuzhiyun } 14*4882a593Smuzhiyun __arch_bitrev8(u8 x)15*4882a593Smuzhiyunstatic __always_inline __attribute_const__ u8 __arch_bitrev8(u8 x) 16*4882a593Smuzhiyun { 17*4882a593Smuzhiyun return __arch_bitrev32((u32)x) >> 24; 18*4882a593Smuzhiyun } 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun #endif 21