diff options
author | Lasse Collin <lasse.collin@tukaani.org> | 2009-11-22 11:55:03 +0200 |
---|---|---|
committer | Lasse Collin <lasse.collin@tukaani.org> | 2009-11-22 11:55:03 +0200 |
commit | 0733f4c9994db696420a405810d5f02c79ebc404 (patch) | |
tree | 467ab8c4b568c12c597eb8792836745f2a085300 /src/liblzma/common | |
parent | Update tuklib_integer.h with bit scan functions. (diff) | |
download | xz-0733f4c9994db696420a405810d5f02c79ebc404.tar.xz |
Make fastpos.h use tuklib_integer.h instead of bsr.h
when --enable-small has been specified.
Diffstat (limited to 'src/liblzma/common')
-rw-r--r-- | src/liblzma/common/Makefile.inc | 1 | ||||
-rw-r--r-- | src/liblzma/common/bsr.h | 60 |
2 files changed, 0 insertions, 61 deletions
diff --git a/src/liblzma/common/Makefile.inc b/src/liblzma/common/Makefile.inc index 29f43ff1..f154f82f 100644 --- a/src/liblzma/common/Makefile.inc +++ b/src/liblzma/common/Makefile.inc @@ -8,7 +8,6 @@ liblzma_la_SOURCES += \ common/common.c \ common/common.h \ - common/bsr.h \ common/block_util.c \ common/easy_preset.c \ common/easy_preset.h \ diff --git a/src/liblzma/common/bsr.h b/src/liblzma/common/bsr.h deleted file mode 100644 index bef8641f..00000000 --- a/src/liblzma/common/bsr.h +++ /dev/null @@ -1,60 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// -/// \file bsr.h -/// \brief Bit scan reverse -// -// Author: Lasse Collin -// -// This file has been put into the public domain. -// You can do whatever you want with this file. -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef LZMA_BSR_H -#define LZMA_BSR_H - -// NOTE: Both input and output variables for lzma_bsr must be uint32_t. - -#if defined(__GNUC__) && (defined (HAVE_ASM_X86) || defined(HAVE_ASM_X86_64)) -# define lzma_bsr(dest, n) \ - __asm__("bsrl %1, %0" : "=r" (dest) : "rm" (n)) - -#else -# define lzma_bsr(dest, n) dest = lzma_bsr_helper(n) - -static inline uint32_t -lzma_bsr_helper(uint32_t n) -{ - assert(n != 0); - - uint32_t i = 31; - - if ((n & UINT32_C(0xFFFF0000)) == 0) { - n <<= 16; - i = 15; - } - - if ((n & UINT32_C(0xFF000000)) == 0) { - n <<= 8; - i -= 8; - } - - if ((n & UINT32_C(0xF0000000)) == 0) { - n <<= 4; - i -= 4; - } - - if ((n & UINT32_C(0xC0000000)) == 0) { - n <<= 2; - i -= 2; - } - - if ((n & UINT32_C(0x80000000)) == 0) - --i; - - return i; -} - -#endif - -#endif |