From 47dfddedfd6bcc546b4fde9660c36652021807a8 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Tue, 16 Jun 2020 18:19:05 +0200 Subject: [PATCH] Use tzcnt instead of bsf. --- server/tracy_robin_hood.h | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/server/tracy_robin_hood.h b/server/tracy_robin_hood.h index 3dca7466..553e386c 100644 --- a/server/tracy_robin_hood.h +++ b/server/tracy_robin_hood.h @@ -128,7 +128,23 @@ static Counts& counts() { #endif // count leading/trailing bits -#ifdef _MSC_VER +#if defined __i386 || defined _M_IX86 || defined __x86_64__ || defined _M_X64 +# ifdef _MSC_VER +# include +# else +# include +# endif +# if ROBIN_HOOD(BITNESS) == 32 +# define ROBIN_HOOD_PRIVATE_DEFINITION_CTZ() _tzcnt_u32 +# else +# define ROBIN_HOOD_PRIVATE_DEFINITION_CTZ() _tzcnt_u64 +# endif +# ifdef __AVX2__ +# define ROBIN_HOOD_COUNT_TRAILING_ZEROES(x) ROBIN_HOOD(CTZ)(x) +# else +# define ROBIN_HOOD_COUNT_TRAILING_ZEROES(x) ((x) ? ROBIN_HOOD(CTZ)(x) : ROBIN_HOOD(BITNESS)) +# endif +#elif defined _MSC_VER # if ROBIN_HOOD(BITNESS) == 32 # define ROBIN_HOOD_PRIVATE_DEFINITION_BITSCANFORWARD() _BitScanForward # else