diff options
author | Zeyi (Rice) Fan <zeyi@fb.com> | 2021-08-06 17:38:43 (GMT) |
---|---|---|
committer | Zeyi (Rice) Fan <zeyi@fb.com> | 2021-08-09 18:30:02 (GMT) |
commit | 1a2e8f4e3077cdafbaf15278bfe393c64263215c (patch) | |
tree | 60a489083908abaca6842b165485b2112185ca17 | |
parent | aeac6227d20f485adde5874fb37d2d3be94d8c10 (diff) | |
download | lz4-1a2e8f4e3077cdafbaf15278bfe393c64263215c.zip lz4-1a2e8f4e3077cdafbaf15278bfe393c64263215c.tar.gz lz4-1a2e8f4e3077cdafbaf15278bfe393c64263215c.tar.bz2 |
fix clang-cl _tzcnt_u64 not defined issue
-rw-r--r-- | lib/lz4.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -516,8 +516,14 @@ static unsigned LZ4_NbCommonBytes (reg_t val) if (LZ4_isLittleEndian()) { if (sizeof(val) == 8) { # if defined(_MSC_VER) && (_MSC_VER >= 1800) && defined(_M_AMD64) && !defined(LZ4_FORCE_SW_BITCOUNT) +# if defined(__clang__) && (__clang_major__ < 10) + /* Avoid undefined clang-cl intrinics issue. + * See https://github.com/lz4/lz4/pull/1017 for details. */ + return (unsigned)__builtin_ia32_tzcnt_u64(val) >> 3; +# else /* x64 CPUS without BMI support interpret `TZCNT` as `REP BSF` */ return (unsigned)_tzcnt_u64(val) >> 3; +# endif # elif defined(_MSC_VER) && defined(_WIN64) && !defined(LZ4_FORCE_SW_BITCOUNT) unsigned long r = 0; _BitScanForward64(&r, (U64)val); |