From 72055622e9c63f6ddae850e8382ea095effd2008 Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Fri, 28 Jun 2024 00:19:46 -0700 Subject: [PATCH] [Support] Fix xxh3_128bits for Win32 builds after #95863 `__emulu` is used without including `intrin.h`. Actually, it's better to rely on compiler optimizations. In this LLVM copy, we try to eliminate unneceeded workarounds for old compilers. Pull Request: https://github.com/llvm/llvm-project/pull/96931 --- llvm/lib/Support/xxhash.cpp | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/llvm/lib/Support/xxhash.cpp b/llvm/lib/Support/xxhash.cpp index a0803297555ce6..607789b391381f 100644 --- a/llvm/lib/Support/xxhash.cpp +++ b/llvm/lib/Support/xxhash.cpp @@ -453,18 +453,7 @@ uint64_t llvm::xxh3_64bits(ArrayRef data) { #define XXH_rotl64(x, r) (((x) << (r)) | ((x) >> (64 - (r)))) #endif -#if defined(_MSC_VER) && defined(_M_IX86) -#define XXH_mult32to64(x, y) __emulu((unsigned)(x), (unsigned)(y)) -#else -/* - * Downcast + upcast is usually better than masking on older compilers like - * GCC 4.2 (especially 32-bit ones), all without affecting newer compilers. - * - * The other method, (x & 0xFFFFFFFF) * (y & 0xFFFFFFFF), will AND both operands - * and perform a full 64x64 multiply -- entirely redundant on 32-bit. - */ #define XXH_mult32to64(x, y) ((uint64_t)(uint32_t)(x) * (uint64_t)(uint32_t)(y)) -#endif /*! * @brief Calculates a 64->128-bit long multiply.