FixedFunctionOpCPU.cpp gates the SVML _mm_pow_ps path on _MSC_VER >= 1920 alone. clang-cl
defines _MSC_VER (1951 for clang 22.1.8) but ships no SVML, so the build breaks whenever
OCIO_USE_AVX is on.
Minimal:
#include <immintrin.h>
__m128 f(__m128 x, __m128 e) { return _mm_pow_ps(x, e); }
> clang-cl -c -arch:AVX t.cpp
t.cpp(2,39): error: use of undeclared identifier '_mm_pow_ps'
Excluding the compiler in the gate is enough, and clang-cl then takes the existing ssePower() path
like any other non-MSVC compiler:
-#if (_MSC_VER >= 1920) && (OCIO_USE_AVX)
+#if (_MSC_VER >= 1920) && (OCIO_USE_AVX) && !defined(__clang__)
main has 2 such sites; 2.5.2 has 4, the extra two being the dispatch arms in
GetFixedFunctionCPURenderer.
clang 22.1.8, x86_64-pc-windows-msvc. Reproduced against 2.5.2 and main.
FixedFunctionOpCPU.cppgates the SVML_mm_pow_pspath on_MSC_VER >= 1920alone. clang-cldefines
_MSC_VER(1951 for clang 22.1.8) but ships no SVML, so the build breaks wheneverOCIO_USE_AVXis on.Minimal:
Excluding the compiler in the gate is enough, and clang-cl then takes the existing
ssePower()pathlike any other non-MSVC compiler:
main has 2 such sites; 2.5.2 has 4, the extra two being the dispatch arms in
GetFixedFunctionCPURenderer.clang 22.1.8, x86_64-pc-windows-msvc. Reproduced against 2.5.2 and main.