1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef __MIPS_ASM_BITREV_H__
3#define __MIPS_ASM_BITREV_H__
4
5#include <linux/swab.h>
6
7static __always_inline __attribute_const__ u32 __arch_bitrev32(u32 x)
8{
9	u32 ret;
10
11	asm("bitswap	%0, %1" : "=r"(ret) : "r"(__swab32(x)));
12	return ret;
13}
14
15static __always_inline __attribute_const__ u16 __arch_bitrev16(u16 x)
16{
17	u16 ret;
18
19	asm("bitswap	%0, %1" : "=r"(ret) : "r"(__swab16(x)));
20	return ret;
21}
22
23static __always_inline __attribute_const__ u8 __arch_bitrev8(u8 x)
24{
25	u8 ret;
26
27	asm("bitswap	%0, %1" : "=r"(ret) : "r"(x));
28	return ret;
29}
30
31#endif /* __MIPS_ASM_BITREV_H__ */
32