* [PATCH] include/qemu: Use builtins for bswap
@ 2021-07-08 18:17 Richard Henderson
2021-08-04 21:07 ` Philippe Mathieu-Daudé
0 siblings, 1 reply; 2+ messages in thread
From: Richard Henderson @ 2021-07-08 18:17 UTC (permalink / raw)
To: qemu-devel
All supported compilers have builtins for this.
Drop all of the complicated system detection stuff.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
meson.build | 6 -----
include/qemu/bswap.h | 53 +++-----------------------------------------
2 files changed, 3 insertions(+), 56 deletions(-)
diff --git a/meson.build b/meson.build
index 7e12de01be..6024f2d6fb 100644
--- a/meson.build
+++ b/meson.build
@@ -1290,8 +1290,6 @@ config_host_data.set('HAVE_STRCHRNUL', cc.has_function('strchrnul'))
config_host_data.set('HAVE_SYSTEM_FUNCTION', cc.has_function('system', prefix: '#include <stdlib.h>'))
# has_header_symbol
-config_host_data.set('CONFIG_BYTESWAP_H',
- cc.has_header_symbol('byteswap.h', 'bswap_32'))
config_host_data.set('CONFIG_EPOLL_CREATE1',
cc.has_header_symbol('sys/epoll.h', 'epoll_create1'))
config_host_data.set('CONFIG_HAS_ENVIRON',
@@ -1311,10 +1309,6 @@ config_host_data.set('CONFIG_INOTIFY',
cc.has_header_symbol('sys/inotify.h', 'inotify_init'))
config_host_data.set('CONFIG_INOTIFY1',
cc.has_header_symbol('sys/inotify.h', 'inotify_init1'))
-config_host_data.set('CONFIG_MACHINE_BSWAP_H',
- cc.has_header_symbol('machine/bswap.h', 'bswap32',
- prefix: '''#include <sys/endian.h>
- #include <sys/types.h>'''))
config_host_data.set('CONFIG_PRCTL_PR_SET_TIMERSLACK',
cc.has_header_symbol('sys/prctl.h', 'PR_SET_TIMERSLACK'))
config_host_data.set('CONFIG_RTNETLINK',
diff --git a/include/qemu/bswap.h b/include/qemu/bswap.h
index 2d3bb8bbed..9e12bd8073 100644
--- a/include/qemu/bswap.h
+++ b/include/qemu/bswap.h
@@ -1,73 +1,26 @@
#ifndef BSWAP_H
#define BSWAP_H
-#ifdef CONFIG_MACHINE_BSWAP_H
-# include <sys/endian.h>
-# include <machine/bswap.h>
-#elif defined(__FreeBSD__)
-# include <sys/endian.h>
-#elif defined(__HAIKU__)
-# include <endian.h>
-#elif defined(CONFIG_BYTESWAP_H)
-# include <byteswap.h>
-#define BSWAP_FROM_BYTESWAP
-# else
-#define BSWAP_FROM_FALLBACKS
-#endif /* ! CONFIG_MACHINE_BSWAP_H */
-
#ifdef __cplusplus
extern "C" {
#endif
#include "fpu/softfloat-types.h"
-#ifdef BSWAP_FROM_BYTESWAP
static inline uint16_t bswap16(uint16_t x)
{
- return bswap_16(x);
+ return __builtin_bswap16(x);
}
static inline uint32_t bswap32(uint32_t x)
{
- return bswap_32(x);
+ return __builtin_bswap32(x);
}
static inline uint64_t bswap64(uint64_t x)
{
- return bswap_64(x);
+ return __builtin_bswap64(x);
}
-#endif
-
-#ifdef BSWAP_FROM_FALLBACKS
-static inline uint16_t bswap16(uint16_t x)
-{
- return (((x & 0x00ff) << 8) |
- ((x & 0xff00) >> 8));
-}
-
-static inline uint32_t bswap32(uint32_t x)
-{
- return (((x & 0x000000ffU) << 24) |
- ((x & 0x0000ff00U) << 8) |
- ((x & 0x00ff0000U) >> 8) |
- ((x & 0xff000000U) >> 24));
-}
-
-static inline uint64_t bswap64(uint64_t x)
-{
- return (((x & 0x00000000000000ffULL) << 56) |
- ((x & 0x000000000000ff00ULL) << 40) |
- ((x & 0x0000000000ff0000ULL) << 24) |
- ((x & 0x00000000ff000000ULL) << 8) |
- ((x & 0x000000ff00000000ULL) >> 8) |
- ((x & 0x0000ff0000000000ULL) >> 24) |
- ((x & 0x00ff000000000000ULL) >> 40) |
- ((x & 0xff00000000000000ULL) >> 56));
-}
-#endif
-
-#undef BSWAP_FROM_BYTESWAP
-#undef BSWAP_FROM_FALLBACKS
static inline void bswap16s(uint16_t *s)
{
--
2.25.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] include/qemu: Use builtins for bswap
2021-07-08 18:17 [PATCH] include/qemu: Use builtins for bswap Richard Henderson
@ 2021-08-04 21:07 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 2+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-08-04 21:07 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Paolo Bonzini, Daniel P . Berrange, Eric Blake
On 7/8/21 8:17 PM, Richard Henderson wrote:
> All supported compilers have builtins for this.
> Drop all of the complicated system detection stuff.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> meson.build | 6 -----
> include/qemu/bswap.h | 53 +++-----------------------------------------
> 2 files changed, 3 insertions(+), 56 deletions(-)
>
> diff --git a/meson.build b/meson.build
> index 7e12de01be..6024f2d6fb 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1290,8 +1290,6 @@ config_host_data.set('HAVE_STRCHRNUL', cc.has_function('strchrnul'))
> config_host_data.set('HAVE_SYSTEM_FUNCTION', cc.has_function('system', prefix: '#include <stdlib.h>'))
>
> # has_header_symbol
> -config_host_data.set('CONFIG_BYTESWAP_H',
> - cc.has_header_symbol('byteswap.h', 'bswap_32'))
> config_host_data.set('CONFIG_EPOLL_CREATE1',
> cc.has_header_symbol('sys/epoll.h', 'epoll_create1'))
> config_host_data.set('CONFIG_HAS_ENVIRON',
> @@ -1311,10 +1309,6 @@ config_host_data.set('CONFIG_INOTIFY',
> cc.has_header_symbol('sys/inotify.h', 'inotify_init'))
> config_host_data.set('CONFIG_INOTIFY1',
> cc.has_header_symbol('sys/inotify.h', 'inotify_init1'))
> -config_host_data.set('CONFIG_MACHINE_BSWAP_H',
> - cc.has_header_symbol('machine/bswap.h', 'bswap32',
> - prefix: '''#include <sys/endian.h>
> - #include <sys/types.h>'''))
> config_host_data.set('CONFIG_PRCTL_PR_SET_TIMERSLACK',
> cc.has_header_symbol('sys/prctl.h', 'PR_SET_TIMERSLACK'))
> config_host_data.set('CONFIG_RTNETLINK',
> diff --git a/include/qemu/bswap.h b/include/qemu/bswap.h
> index 2d3bb8bbed..9e12bd8073 100644
> --- a/include/qemu/bswap.h
> +++ b/include/qemu/bswap.h
> @@ -1,73 +1,26 @@
> #ifndef BSWAP_H
> #define BSWAP_H
>
> -#ifdef CONFIG_MACHINE_BSWAP_H
> -# include <sys/endian.h>
> -# include <machine/bswap.h>
> -#elif defined(__FreeBSD__)
> -# include <sys/endian.h>
> -#elif defined(__HAIKU__)
> -# include <endian.h>
> -#elif defined(CONFIG_BYTESWAP_H)
> -# include <byteswap.h>
> -#define BSWAP_FROM_BYTESWAP
> -# else
> -#define BSWAP_FROM_FALLBACKS
> -#endif /* ! CONFIG_MACHINE_BSWAP_H */
> -
> #ifdef __cplusplus
> extern "C" {
> #endif
>
> #include "fpu/softfloat-types.h"
>
> -#ifdef BSWAP_FROM_BYTESWAP
> static inline uint16_t bswap16(uint16_t x)
> {
> - return bswap_16(x);
> + return __builtin_bswap16(x);
> }
>
> static inline uint32_t bswap32(uint32_t x)
> {
> - return bswap_32(x);
> + return __builtin_bswap32(x);
> }
>
> static inline uint64_t bswap64(uint64_t x)
> {
> - return bswap_64(x);
> + return __builtin_bswap64(x);
> }
> -#endif
> -
> -#ifdef BSWAP_FROM_FALLBACKS
> -static inline uint16_t bswap16(uint16_t x)
> -{
> - return (((x & 0x00ff) << 8) |
> - ((x & 0xff00) >> 8));
> -}
> -
> -static inline uint32_t bswap32(uint32_t x)
> -{
> - return (((x & 0x000000ffU) << 24) |
> - ((x & 0x0000ff00U) << 8) |
> - ((x & 0x00ff0000U) >> 8) |
> - ((x & 0xff000000U) >> 24));
> -}
> -
> -static inline uint64_t bswap64(uint64_t x)
> -{
> - return (((x & 0x00000000000000ffULL) << 56) |
> - ((x & 0x000000000000ff00ULL) << 40) |
> - ((x & 0x0000000000ff0000ULL) << 24) |
> - ((x & 0x00000000ff000000ULL) << 8) |
> - ((x & 0x000000ff00000000ULL) >> 8) |
> - ((x & 0x0000ff0000000000ULL) >> 24) |
> - ((x & 0x00ff000000000000ULL) >> 40) |
> - ((x & 0xff00000000000000ULL) >> 56));
> -}
> -#endif
> -
> -#undef BSWAP_FROM_BYTESWAP
> -#undef BSWAP_FROM_FALLBACKS
>
> static inline void bswap16s(uint16_t *s)
> {
>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-08-04 21:08 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-08 18:17 [PATCH] include/qemu: Use builtins for bswap Richard Henderson
2021-08-04 21:07 ` Philippe Mathieu-Daudé
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.