#define FALLBACK_BUILTINS_H
#if defined(_MSC_VER) && !defined(__clang__)
-#if defined(ARCH_X86) || defined(ARCH_IA64) || defined(ARCH_ARM)
#include <intrin.h>
*/
Z_FORCEINLINE static int __builtin_ctz(unsigned int value) {
Assert(value != 0, "Invalid input value: 0");
-# if defined(X86_FEATURES) && !(_MSC_VER < 1700)
+# if defined(X86_FEATURES) && !(_MSC_VER < 1700)
return (int)_tzcnt_u32(value);
-# else
+# else
unsigned long trailing_zero;
_BitScanForward(&trailing_zero, value);
return (int)trailing_zero;
-# endif
+# endif
}
-#define HAVE_BUILTIN_CTZ
+# define HAVE_BUILTIN_CTZ
-#ifdef ARCH_64BIT
+# ifdef ARCH_64BIT
/* This is not a general purpose replacement for __builtin_ctzll. The function expects that value is != 0.
* Because of that assumption trailing_zero is not initialized and the return value is not checked.
*/
Z_FORCEINLINE static int __builtin_ctzll(unsigned long long value) {
Assert(value != 0, "Invalid input value: 0");
-# if defined(X86_FEATURES) && !(_MSC_VER < 1700)
+# if defined(X86_FEATURES) && !(_MSC_VER < 1700)
return (int)_tzcnt_u64(value);
-# else
+# else
unsigned long trailing_zero;
_BitScanForward64(&trailing_zero, value);
return (int)trailing_zero;
-# endif
+# endif
}
-#define HAVE_BUILTIN_CTZLL
-#endif // ARCH_64BIT
+# define HAVE_BUILTIN_CTZLL
+# endif // ARCH_64BIT
-#endif // ARCH_X86 || ARCH_IA64 || ARCH_ARM
-#endif // _MSC_VER & !clang
+#endif // _MSC_VER && !__clang__
#ifndef HAVE_BUILTIN_BITREVERSE16
-#ifdef __loongarch__
+# ifdef __loongarch__
/* LoongArch bit reversal for 16-bit values */
Z_FORCEINLINE static uint16_t __builtin_bitreverse16(uint16_t value) {
uint32_t res;
__asm__ volatile("bitrev.w %0, %1" : "=r"(res) : "r"(value));
return (uint16_t)(res >> 16);
}
-#else
+# else
/* Bit reversal for 8-bit values using multiplication method */
-#define bitrev8(value) \
+# define bitrev8(value) \
(uint8_t)((((uint8_t)(value) * 0x80200802ULL) & 0x0884422110ULL) * 0x0101010101ULL >> 32)
/* General purpose bit reversal for 16-bit values */
Z_FORCEINLINE static uint16_t __builtin_bitreverse16(uint16_t value) {
return ((bitrev8(value >> 8) | (uint16_t)bitrev8(value) << 8));
}
-#undef bitrev8
-#endif
+# undef bitrev8
+# endif
#define HAVE_BUILTIN_BITREVERSE16
#endif