Skip to content

Commit 16b3157

Browse files
authored
Fix support for X86 32-bit (#1842)
Signed-off-by: Mark Reid <[email protected]>
1 parent caa20dd commit 16b3157

File tree

3 files changed

+12
-1
lines changed

3 files changed

+12
-1
lines changed

CMakeLists.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,11 @@ option(OCIO_USE_OIIO_FOR_APPS "Request OIIO to build apps (ociolutimage, ociocon
180180

181181

182182
if (NOT APPLE)
183-
if ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(AMD64|IA64|EM64T|X86|x86_64|i386|i686)")
183+
if ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(AMD64|IA64|EM64T|x86_64|X86|i386|i686)")
184184
# Intel-based architecture (not APPLE)
185+
if ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(X86|i386|i686)")
186+
set(OCIO_ARCH_X86_32 1)
187+
endif()
185188
set(OCIO_ARCH_X86 1)
186189
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE ON)
187190
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX ON)

src/OpenColorIO/CPUInfo.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,13 @@ static inline void cpuid(int index, int *data)
5050
{
5151
#if _MSC_VER
5252
__cpuid(data, index);
53+
#elif OCIO_ARCH_X86_32
54+
__asm__ volatile (
55+
"mov %%ebx, %%esi \n\t"
56+
"cpuid \n\t"
57+
"xchg %%ebx, %%esi"
58+
: "=a" (data[0]), "=S" (data[1]), "=c" (data[2]), "=d" (data[3])
59+
: "0" (index), "2"(0));
5360
#else
5461
__asm__ volatile (
5562
"mov %%rbx, %%rsi \n\t"

src/OpenColorIO/CPUInfoConfig.h.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44

55
#cmakedefine01 OCIO_ARCH_X86
6+
#cmakedefine01 OCIO_ARCH_X86_32
67

78
// Relevant only for arm64 architecture.
89
#if defined(__aarch64__)

0 commit comments

Comments
 (0)