diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2013-10-04 00:36:22 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2013-10-04 00:36:22 -0700 |
commit | 4eed3157327f8406921658442a11af7e9d84d603 (patch) | |
tree | e727a3017628ce840707d71998d4f6423a8fbde3 /m4/byteswap.m4 | |
parent | 157fec2e190a84345138a0cc69e35f177c4d4a56 (diff) | |
download | emacs-4eed3157327f8406921658442a11af7e9d84d603.tar.gz |
Use hardware support for byteswapping on glibc x86 etc.
On Fedora 19 x86-64, the new bswap_64 needs 1 instruction,
whereas the old swap64 needed 30.
* admin/merge-gnulib (GNULIB_MODULES): Add byteswap.
* lib/byteswap.in.h, m4/byteswap.m4: New files, copied from Gnulib.
* lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
* src/fringe.c (init_fringe_bitmap) [WORDS_BIGENDIAN]:
* src/sound.c (le2hl, le2hs, be2hl) [!WINDOWSNT]:
Use byteswap.h's macros to swap bytes.
* src/lisp.h (swap16, swap32, swap64): Remove.
All uses replaced by bswap_16, bswap_32, bswap_64.
Diffstat (limited to 'm4/byteswap.m4')
-rw-r--r-- | m4/byteswap.m4 | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/m4/byteswap.m4 b/m4/byteswap.m4 new file mode 100644 index 00000000000..7566903dc49 --- /dev/null +++ b/m4/byteswap.m4 @@ -0,0 +1,19 @@ +# byteswap.m4 serial 4 +dnl Copyright (C) 2005, 2007, 2009-2013 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Written by Oskar Liljeblad. + +AC_DEFUN([gl_BYTESWAP], +[ + dnl Prerequisites of lib/byteswap.in.h. + AC_CHECK_HEADERS([byteswap.h], [ + BYTESWAP_H='' + ], [ + BYTESWAP_H='byteswap.h' + ]) + AC_SUBST([BYTESWAP_H]) + AM_CONDITIONAL([GL_GENERATE_BYTESWAP_H], [test -n "$BYTESWAP_H"]) +]) |