Skip to content

Commit d9e4261

Browse files
sthaliknetkex
authored andcommitted
PR abseil#1617: fix MSVC 32-bit build with -arch:AVX
Imported from GitHub PR abseil#1617 The intrinsics used aren't available on `x86_64` processors while running in 32-bit mode. See: - list of 64-bit intrinsics (https://learn.microsoft.com/en-us/cpp/intrinsics/x64-amd64-intrinsics-list?view=msvc-170) - list of 32-bit intrinsics (https://learn.microsoft.com/en-us/cpp/intrinsics/x86-intrinsics-list?view=msvc-170) - list of predefined MSVC macros (https://learn.microsoft.com/en-us/cpp/preprocessor/predefined-macros?view=msvc-170) The error message in question: ```console F:\dev\opentrack-depends\onnxruntime-build\msvc\_deps\abseil_cpp-src\absl/crc/internal/crc32_x86_arm_combined_simd.h(145,32): error C3861: '_mm_crc32_u64': identifier not found return static_cast<uint32_t>(_mm_crc32_u64(crc, v)); ^ F:\dev\opentrack-depends\onnxruntime-build\msvc\_deps\abseil_cpp-src\absl/crc/internal/crc32_x86_arm_combined_simd.h(193,50): error C3861: '_mm_cvtsi128_si64': identifier not found inline int64_t V128_Low64(const V128 l) { return _mm_cvtsi128_si64(l); } ``` Merge 06f5832 into 797501d Merging this change closes abseil#1617 COPYBARA_INTEGRATE_REVIEW=abseil#1617 from sthalik:pr/fix-msvc-32-bit-avx 06f5832 PiperOrigin-RevId: 607483370 Change-Id: Id2a6f6dd33c2707fe7ffe134e7335916f3fb9da3
1 parent 88f011e commit d9e4261

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

absl/crc/internal/crc32_x86_arm_combined_simd.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,15 @@
3333
#include <x86intrin.h>
3434
#define ABSL_CRC_INTERNAL_HAVE_X86_SIMD
3535

36-
#elif defined(_MSC_VER) && !defined(__clang__) && defined(__AVX__)
36+
#elif defined(_MSC_VER) && !defined(__clang__) && defined(__AVX__) && \
37+
defined(_M_AMD64)
3738

3839
// MSVC AVX (/arch:AVX) implies SSE 4.2 and PCLMULQDQ.
3940
#include <intrin.h>
4041
#define ABSL_CRC_INTERNAL_HAVE_X86_SIMD
4142

42-
#elif defined(__aarch64__) && defined(__LITTLE_ENDIAN__) && \
43-
defined(__ARM_FEATURE_CRC32) && defined(ABSL_INTERNAL_HAVE_ARM_NEON) && \
43+
#elif defined(__aarch64__) && defined(__LITTLE_ENDIAN__) && \
44+
defined(__ARM_FEATURE_CRC32) && defined(ABSL_INTERNAL_HAVE_ARM_NEON) && \
4445
defined(__ARM_FEATURE_CRYPTO)
4546

4647
#include <arm_acle.h>

0 commit comments

Comments
 (0)