mirror of https://git.tukaani.org/xz.git
Make fastpos.h use tuklib_integer.h instead of bsr.h
when --enable-small has been specified.
This commit is contained in:
parent
7ac3985d89
commit
0733f4c999
|
@ -8,7 +8,6 @@
|
||||||
liblzma_la_SOURCES += \
|
liblzma_la_SOURCES += \
|
||||||
common/common.c \
|
common/common.c \
|
||||||
common/common.h \
|
common/common.h \
|
||||||
common/bsr.h \
|
|
||||||
common/block_util.c \
|
common/block_util.c \
|
||||||
common/easy_preset.c \
|
common/easy_preset.c \
|
||||||
common/easy_preset.h \
|
common/easy_preset.h \
|
||||||
|
|
|
@ -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
|
|
|
@ -76,15 +76,12 @@
|
||||||
// slightly faster, but sometimes it is a lot slower.
|
// slightly faster, but sometimes it is a lot slower.
|
||||||
|
|
||||||
#ifdef HAVE_SMALL
|
#ifdef HAVE_SMALL
|
||||||
# include "bsr.h"
|
|
||||||
|
|
||||||
# define get_pos_slot(pos) ((pos) <= 4 ? (pos) : get_pos_slot_2(pos))
|
# define get_pos_slot(pos) ((pos) <= 4 ? (pos) : get_pos_slot_2(pos))
|
||||||
|
|
||||||
static inline uint32_t
|
static inline uint32_t
|
||||||
get_pos_slot_2(uint32_t pos)
|
get_pos_slot_2(uint32_t pos)
|
||||||
{
|
{
|
||||||
uint32_t i;
|
const uint32_t i = bsr32(pos);
|
||||||
lzma_bsr(i, pos);
|
|
||||||
return (i + i) + ((pos >> (i - 1)) & 1);
|
return (i + i) + ((pos >> (i - 1)) & 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue