From 7c66452886e3b0bdbff1818f79dd042e9421aaf1 Mon Sep 17 00:00:00 2001 From: Erik de Castro Lopo Date: Sat, 9 Aug 2014 12:47:20 +1000 Subject: [PATCH] include/share/endswap.h : Improvements to fallthrough ENDSWAP_*. According to patch author GCC can optimize expressions like "(a<<8)|(a>>8)", but has problems with "(a<<8)+(a>>8)". Patch-from: lvqcl --- include/share/endswap.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/share/endswap.h b/include/share/endswap.h index c3133335..86bf8572 100644 --- a/include/share/endswap.h +++ b/include/share/endswap.h @@ -58,8 +58,8 @@ static inline unsigned short __builtin_bswap16(unsigned short a) #else -#define ENDSWAP_16(x) ((((x) >> 8) & 0xFF) + (((x) & 0xFF) << 8)) -#define ENDSWAP_32(x) ((((x) >> 24) & 0xFF) + (((x) >> 8) & 0xFF00) + (((x) & 0xFF00) << 8) + (((x) & 0xFF) << 24)) +#define ENDSWAP_16(x) ((((x) >> 8) & 0xFF) | (((x) & 0xFF) << 8)) +#define ENDSWAP_32(x) ((((x) >> 24) & 0xFF) | (((x) >> 8) & 0xFF00) | (((x) & 0xFF00) << 8) | (((x) & 0xFF) << 24)) #endif