diff mbox series

include/qemu: Use builtins for bswap

Message ID 20210708181743.750220-1-richard.henderson@linaro.org
State Superseded
Headers show
Series include/qemu: Use builtins for bswap | expand

Commit Message

Richard Henderson July 8, 2021, 6:17 p.m. UTC
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(-)

-- 
2.25.1

Comments

Philippe Mathieu-Daudé Aug. 4, 2021, 9:07 p.m. UTC | #1
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>
diff mbox series

Patch

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)
 {