no longer limit automated BMI2 detection to x64
this was previously no triggered in x86 32-bit mode, due to a limitation in `bitstream.h`, that was fixed in #4248. Now, `bmi2` will be automatically detected and triggered at compilation time, if the corresponding instruction set is enabled, even in 32-bit mode. Also: updated library documentation, to feature STATIC_BMI2 build variable
This commit is contained in:
@@ -149,6 +149,13 @@ The file structure is designed to make this selection manually achievable for an
|
||||
will expose the deprecated `ZSTDMT` API exposed by `zstdmt_compress.h` in
|
||||
the shared library, which is now hidden by default.
|
||||
|
||||
- The build macro `STATIC_BMI2` can be set to 1 to force usage of `bmi2` instructions.
|
||||
It is generally not necessary to set this build macro,
|
||||
because `STATIC_BMI2` will be automatically set to 1
|
||||
on detecting the presence of the corresponding instruction set in the compilation target.
|
||||
It's nonetheless available as an optional manual toggle for better control,
|
||||
and can also be used to forcefully disable `bmi2` instructions by setting it to 0.
|
||||
|
||||
- The build macro `DYNAMIC_BMI2` can be set to 1 or 0 in order to generate binaries
|
||||
which can detect at runtime the presence of BMI2 instructions, and use them only if present.
|
||||
These instructions contribute to better performance, notably on the decoder side.
|
||||
|
||||
@@ -209,11 +209,11 @@
|
||||
|
||||
/* Like DYNAMIC_BMI2 but for compile time determination of BMI2 support */
|
||||
#ifndef STATIC_BMI2
|
||||
# if defined(_MSC_VER) && (defined(_M_X64) || defined(_M_I86))
|
||||
# if defined(_MSC_VER)
|
||||
# ifdef __AVX2__ /* MSVC does not have a BMI2 specific flag, but every CPU that supports AVX2 also supports BMI2 */
|
||||
# define STATIC_BMI2 1
|
||||
# endif
|
||||
# elif defined(__BMI2__) && defined(__x86_64__) && defined(__GNUC__)
|
||||
# elif defined(__BMI2__)
|
||||
# define STATIC_BMI2 1
|
||||
# endif
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user