mirror of
https://github.com/facebook/zstd.git
synced 2025-12-17 00:03:34 -05:00
Merge pull request #3080 from TocarIP/tokarip/static_bmi2
Enable STATIC_BMI2 for gcc/clang
This commit is contained in:
commit
e8448a3d61
@ -37,8 +37,8 @@ extern "C" {
|
|||||||
* Target specific
|
* Target specific
|
||||||
=========================================*/
|
=========================================*/
|
||||||
#ifndef ZSTD_NO_INTRINSICS
|
#ifndef ZSTD_NO_INTRINSICS
|
||||||
# if defined(__BMI__) && defined(__GNUC__)
|
# if (defined(__BMI__) || defined(__BMI2__)) && defined(__GNUC__)
|
||||||
# include <immintrin.h> /* support for bextr (experimental) */
|
# include <immintrin.h> /* support for bextr (experimental)/bzhi */
|
||||||
# elif defined(__ICCARM__)
|
# elif defined(__ICCARM__)
|
||||||
# include <intrinsics.h>
|
# include <intrinsics.h>
|
||||||
# endif
|
# endif
|
||||||
@ -164,7 +164,7 @@ MEM_STATIC size_t BIT_initCStream(BIT_CStream_t* bitC,
|
|||||||
|
|
||||||
MEM_STATIC FORCE_INLINE_ATTR size_t BIT_getLowerBits(size_t bitContainer, U32 const nbBits)
|
MEM_STATIC FORCE_INLINE_ATTR size_t BIT_getLowerBits(size_t bitContainer, U32 const nbBits)
|
||||||
{
|
{
|
||||||
#if defined(STATIC_BMI2) && STATIC_BMI2 == 1
|
#if defined(STATIC_BMI2) && STATIC_BMI2 == 1 && !defined(ZSTD_NO_INTRINSICS)
|
||||||
return _bzhi_u64(bitContainer, nbBits);
|
return _bzhi_u64(bitContainer, nbBits);
|
||||||
#else
|
#else
|
||||||
assert(nbBits < BIT_MASK_SIZE);
|
assert(nbBits < BIT_MASK_SIZE);
|
||||||
|
|||||||
@ -181,6 +181,8 @@
|
|||||||
# ifdef __AVX2__ //MSVC does not have a BMI2 specific flag, but every CPU that supports AVX2 also supports BMI2
|
# ifdef __AVX2__ //MSVC does not have a BMI2 specific flag, but every CPU that supports AVX2 also supports BMI2
|
||||||
# define STATIC_BMI2 1
|
# define STATIC_BMI2 1
|
||||||
# endif
|
# endif
|
||||||
|
# elif defined(__BMI2__) && defined(__x86_64__) && defined(__GNUC__)
|
||||||
|
# define STATIC_BMI2 1
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user