X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvppinfra%2Fbyte_order.h;h=9beb44706348e1cb03c62a7f6cbf6931c18f9f1f;hb=baa18701b9d54d8924771c25b96bd5d99472b7ad;hp=b263538c6fe4791d39c2b8c6076b338c27410f12;hpb=7cd468a3d7dee7d6c92f69a0bb7061ae208ec727;p=vpp.git diff --git a/src/vppinfra/byte_order.h b/src/vppinfra/byte_order.h index b263538c6fe..9beb4470634 100644 --- a/src/vppinfra/byte_order.h +++ b/src/vppinfra/byte_order.h @@ -56,7 +56,7 @@ always_inline u16 clib_byte_swap_u16 (u16 x) { - return (x >> 8) | (x << 8); + return __builtin_bswap16 (x); } always_inline i16 @@ -68,14 +68,7 @@ clib_byte_swap_i16 (i16 x) always_inline u32 clib_byte_swap_u32 (u32 x) { -#if defined (i386) || defined (__x86_64__) - if (!__builtin_constant_p (x)) - { - asm volatile ("bswap %0":"=r" (x):"0" (x)); - return x; - } -#endif - return ((x << 24) | ((x & 0xff00) << 8) | ((x >> 8) & 0xff00) | (x >> 24)); + return __builtin_bswap32 (x); } always_inline i32 @@ -87,19 +80,7 @@ clib_byte_swap_i32 (i32 x) always_inline u64 clib_byte_swap_u64 (u64 x) { -#if defined (__x86_64__) - if (!__builtin_constant_p (x)) - { - asm volatile ("bswapq %0":"=r" (x):"0" (x)); - return x; - } -#endif -#define _(x,n,i) \ - ((((x) >> (8*(i))) & 0xff) << (8*((n)-(i)-1))) - return (_(x, 8, 0) | _(x, 8, 1) - | _(x, 8, 2) | _(x, 8, 3) - | _(x, 8, 4) | _(x, 8, 5) | _(x, 8, 6) | _(x, 8, 7)); -#undef _ + return __builtin_bswap64 (x); } always_inline i64 @@ -191,6 +172,14 @@ _(i64); #undef _ +/* Dummy endian swap functions for IEEE floating-point numbers */ +/* *INDENT-OFF* */ +always_inline f64 clib_net_to_host_f64 (f64 x) { return x; } +always_inline f64 clib_host_to_net_f64 (f64 x) { return x; } +always_inline f32 clib_net_to_host_f32 (f32 x) { return x; } +always_inline f32 clib_host_to_net_f32 (f32 x) { return x; } +/* *INDENT-ON* */ + #endif /* included_clib_byte_order_h */ /*