1 --- openexr-3.2.0/src/lib/OpenEXR/ImfSystemSpecific.cpp.orig 2023-08-28 19:56:26.000000000 +0200
2 +++ openexr-3.2.0/src/lib/OpenEXR/ImfSystemSpecific.cpp 2023-09-02 09:30:06.458371741 +0200
4 #if defined(IMF_HAVE_SSE2) && defined(__GNUC__) && !defined(__e2k__)
6 // Helper functions for gcc + SSE enabled
11 -cpuid (int n, int& eax, int& ebx, int& ecx, int& edx)
12 +cpuid (unsigned int n, unsigned int& eax, unsigned int& ebx, unsigned int& ecx, unsigned int& edx)
14 - __asm__ __volatile__(
16 - : /* Output */ "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx)
17 - : /* Input */ "a"(n)
19 + __get_cpuid(n, &eax, &ebx, &ecx, &edx);
22 #elif defined(_MSC_VER) && ( defined(_M_IX86) || ( defined(_M_AMD64) && !defined(_M_ARM64EC) ) )
24 // Helper functions for MSVC
26 -cpuid (int n, int& eax, int& ebx, int& ecx, int& edx)
27 +cpuid (unsigned int n, unsigned int& eax, unsigned int& ebx, unsigned int& ecx, unsigned int& edx)
29 - int cpuInfo[4] = { -1 };
30 + unsigned int cpuInfo[4] = { -1 };
36 // Helper functions for generic compiler - all disabled
38 -cpuid (int n, int& eax, int& ebx, int& ecx, int& edx)
39 +cpuid (unsigned int n, unsigned int& eax, unsigned int& ebx, unsigned int& ecx, unsigned int& edx)
41 eax = ebx = ecx = edx = 0;
44 #ifdef IMF_HAVE_GCC_INLINEASM_X86
47 -xgetbv (int n, int& eax, int& edx)
48 +xgetbv (unsigned int n, unsigned int& eax, unsigned int& edx)
50 __asm__ __volatile__("xgetbv"
51 : /* Output */ "=a"(eax), "=d"(edx)
53 #else // IMF_HAVE_GCC_INLINEASM_X86
56 -xgetbv (int n, int& eax, int& edx)
57 +xgetbv (unsigned int n, unsigned int& eax, unsigned int& edx)
66 - int eax, ebx, ecx, edx;
67 + unsigned int max = 0;
68 + unsigned int eax, ebx, ecx, edx;
70 cpuid (0, max, ebx, ecx, edx);