Invoking -mbmi
This commit is contained in:
parent
b5a2c41049
commit
90c881a3de
|
@ -54,7 +54,12 @@ static inline bool mul_overflow(uint64_t value1, uint64_t value2, uint64_t *re
|
||||||
|
|
||||||
/* result might be undefined when input_num is zero */
|
/* result might be undefined when input_num is zero */
|
||||||
static inline int trailingzeroes(uint64_t input_num) {
|
static inline int trailingzeroes(uint64_t input_num) {
|
||||||
return _tzcnt_u64(input_num); // for some reason, the Intel intrinsic _tzcnt_u64 may be missing
|
#ifdef __BMI__
|
||||||
|
return _tzcnt_u64(input_num);
|
||||||
|
#else
|
||||||
|
#warning "BMI is missing?"
|
||||||
|
return __builtin_ctzll(input_num);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* result might be undefined when input_num is zero */
|
/* result might be undefined when input_num is zero */
|
||||||
|
|
|
@ -16,7 +16,7 @@ endif()
|
||||||
|
|
||||||
# some compilers like clang do not automagically define __AVX2__ and __BMI2__ even when the hardware supports it
|
# some compilers like clang do not automagically define __AVX2__ and __BMI2__ even when the hardware supports it
|
||||||
if(NOT MSVC)
|
if(NOT MSVC)
|
||||||
set (OPT_FLAGS "${OPT_FLAGS} -mavx2 -mbmi2 -mpclmul")
|
set (OPT_FLAGS "${OPT_FLAGS} -mavx2 -mbmi -mbmi2 -mpclmul")
|
||||||
else()
|
else()
|
||||||
set (OPT_FLAGS "${OPT_FLAGS} /arch:AVX2 /std:c++latest")
|
set (OPT_FLAGS "${OPT_FLAGS} /arch:AVX2 /std:c++latest")
|
||||||
endif()
|
endif()
|
||||||
|
|
Loading…
Reference in New Issue