aboutsummaryrefslogtreecommitdiff
path: root/m4/tuklib_integer.m4 (follow)
AgeCommit message (Collapse)AuthorFilesLines
2022-10-05tuklib_integer: Add 64-bit endianness-converting reads and writes.Lasse Collin1-4/+4
Also update the comment in liblzma's memcmplen.h. Thanks to Michał Górny for the original patch for the reads.
2020-02-21tuklib_integer.m4: Optimize the check order.Lasse Collin1-27/+29
The __builtin byteswapping is the preferred one so check for it first.
2019-12-31Revise tuklib_integer.h and .m4.Lasse Collin1-1/+45
Add a configure option --enable-unsafe-type-punning to get the old non-conforming memory access methods. It can be useful with old compilers or in some other less typical situations but shouldn't normally be used. Omit the packed struct trick for unaligned access. While it's best in some cases, this is simpler. If the memcpy trick doesn't work, one can request unsafe type punning from configure. Because CRC32/CRC64 code needs fast aligned reads, if no very safe way to do it is found, type punning is used as a fallback. This sucks but since it currently works in practice, it seems to be the least bad option. It's never needed with GCC >= 4.7 or Clang >= 3.6 since these support __builtin_assume_aligned and thus fast aligned access can be done with the memcpy trick. Other things: - Support GCC/Clang __builtin_bswapXX - Cleaner bswap fallback macros - Minor cleanups
2019-06-01tuklib_integer: Autodetect support for unaligned access on ARM.Lasse Collin1-0/+11
The result is used as the default for --enable-unaligned-access. The test should work with GCC and Clang.
2014-11-17Build: Replace obsolete AC_HELP_STRING with AS_HELP_STRING.Lasse Collin1-1/+1
2009-10-04Use a tuklib module for integer handling.Lasse Collin1-0/+74
This replaces bswap.h and integer.h. The tuklib module uses <byteswap.h> on GNU, <sys/endian.h> on *BSDs and <sys/byteorder.h> on Solaris, which may contain optimized code like inline assembly.