diff --git a/CMakeLists.txt b/CMakeLists.txt index 3c3b040c..deb948fa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -874,14 +874,14 @@ endif() # extensions # no-fp-contract = validate against the expected results from the C code when # floating point expression contraction is disabled (the -# default with Clang, with GCC when building for platforms -# that lack fused multiply-add [FMA] instructions, or when -# passing -ffp-contract=off to the compiler) +# default with Clang 13 and earlier, when building for +# platforms that lack fused multiply-add [FMA] instructions, +# or when passing -ffp-contract=off to GCC or Clang) # fp-contract = validate against the expected results from the C code when # floating point expression contraction is enabled (the default -# with GCC when building for platforms that have fused multiply- -# add [FMA] instructions or when passing -ffp-contract=fast to -# the compiler) +# with Clang 14 and later, with GCC when building for platforms +# that have fused multiply-add [FMA] instructions, or when +# passing -ffp-contract=fast to GCC or -ffp-contract=on to Clang) # 387 = validate against the expected results from the C code when the 387 FPU # is being used for floating point math (which is generally the default # with x86 compilers) @@ -1176,7 +1176,11 @@ foreach(libtype ${TEST_LIBTYPES}) set(MD5_PPM_3x2_FLOAT_NO_FP_CONTRACT ${MD5_PPM_3x2_FLOAT_SSE}) set(MD5_JPEG_3x2_FLOAT_PROG_FP_CONTRACT ${MD5_JPEG_3x2_FLOAT_PROG_NO_FP_CONTRACT}) - set(MD5_PPM_3x2_FLOAT_FP_CONTRACT ${MD5_PPM_3x2_FLOAT_SSE}) + if(CMAKE_C_COMPILER_ID STREQUAL "Clang") + set(MD5_PPM_3x2_FLOAT_FP_CONTRACT 2da9de6ae869e88b8372de815d366b03) + else() + set(MD5_PPM_3x2_FLOAT_FP_CONTRACT ${MD5_PPM_3x2_FLOAT_SSE}) + endif() set(MD5_JPEG_3x2_FLOAT_PROG_387 bc6dbbefac2872f6b9d6c4a0ae60c3c0) set(MD5_PPM_3x2_FLOAT_387 bcc5723c61560463ac60f772e742d092) set(MD5_JPEG_3x2_FLOAT_PROG_MSVC e27840755870fa849872e58aa0cd1400) @@ -1244,7 +1248,11 @@ foreach(libtype ${TEST_LIBTYPES}) set(MD5_PPM_3x2_FLOAT_NO_FP_CONTRACT f6bfab038438ed8f5522fbd33595dcdc) set(MD5_JPEG_3x2_FLOAT_PROG_FP_CONTRACT ${MD5_JPEG_3x2_FLOAT_PROG_NO_FP_CONTRACT}) - set(MD5_PPM_3x2_FLOAT_FP_CONTRACT 0e917a34193ef976b679a6b069b1be26) + if(CMAKE_C_COMPILER_ID STREQUAL "Clang") + set(MD5_PPM_3x2_FLOAT_FP_CONTRACT ${MD5_PPM_3x2_FLOAT_NO_FP_CONTRACT}) + else() + set(MD5_PPM_3x2_FLOAT_FP_CONTRACT 0e917a34193ef976b679a6b069b1be26) + endif() set(MD5_JPEG_3x2_FLOAT_PROG_387 1657664a410e0822c924b54f6f65e6e9) set(MD5_PPM_3x2_FLOAT_387 cb0a1f027f3d2917c902b5640214e025) set(MD5_JPEG_3x2_FLOAT_PROG_MSVC 7999ce9cd0ee9b6c7043b7351ab7639d)