From 875653658abcb6091fa6a17bd4859fb66e8a1187 Mon Sep 17 00:00:00 2001 From: Ozkan Sezer Date: Sun, 31 Aug 2025 03:20:20 +0300 Subject: [PATCH] cmake: revert commit 5d1bbd9 and change sse4.2 test clang doesn't support -mcrc32 until version 14.0, therefore drop -mcrc32 use in sse 4.2 test, and change it to check _mm_cmpgt_epi64() instead of _mm_crc32_u32(). without this, sse4.2 check was failing with clang <= 13 Fixes https://github.com/libsdl-org/SDL/pull/12223 --- CMakeLists.txt | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a20e64645a..e7ae6f26ed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -786,19 +786,14 @@ if(SDL_ASSEMBLY) if(SDL_SSE4_2) cmake_push_check_state() if(USE_GCC OR USE_CLANG OR USE_INTELCC) - string(APPEND CMAKE_REQUIRED_FLAGS " -msse4.2 -mcrc32") + string(APPEND CMAKE_REQUIRED_FLAGS " -msse4.2") endif() check_c_source_compiles(" #include - unsigned calc_crc32c(const char *text, unsigned len) { - unsigned crc32c = ~0; - for (; len >= 4; len -= 4, text += 4) { - crc32c = (unsigned)_mm_crc32_u32(crc32c, *(unsigned*)text); - } - return crc32c; - } + __m128i bitmask; + char data[16]; int main(int argc, char **argv) { - calc_crc32c(\"SDL_SSE4\",8); + bitmask = _mm_cmpgt_epi64(_mm_set1_epi64x(0), _mm_loadu_si128((void*)data)); return 0; }" COMPILER_SUPPORTS_SSE4_2) cmake_pop_check_state()