1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
Purpose: Disable new SIMD instruction sets on amd64 and i386, for sake of
better compatibility with old x86 machines.
Note: Turn DEBIAN_AMD64 or DEBIAN_I386 flag on to disable those ISAs.
If none of them are specified, nothing will be changed.
Author: Zhou Mo
Forward: No. Debian specific patch.
diff --git a/lib/TH/cmake/FindSSE.cmake b/lib/TH/cmake/FindSSE.cmake
index f84ce89..75eafde 100644
--- a/lib/TH/cmake/FindSSE.cmake
+++ b/lib/TH/cmake/FindSSE.cmake
@@ -108,18 +108,29 @@ MACRO(CHECK_SSE lang type flags)
ENDMACRO()
-CHECK_SSE(C "SSE1" " ;-msse;/arch:SSE")
-CHECK_SSE(C "SSE2" " ;-msse2;/arch:SSE2")
-CHECK_SSE(C "SSE3" " ;-msse3;/arch:SSE3")
-CHECK_SSE(C "SSE4_1" " ;-msse4.1;-msse4;/arch:SSE4")
-CHECK_SSE(C "SSE4_2" " ;-msse4.2;-msse4;/arch:SSE4")
-CHECK_SSE(C "AVX" " ;-mavx;/arch:AVX")
-CHECK_SSE(C "AVX2" " ;-mavx2 -mfma;/arch:AVX2")
-
-CHECK_SSE(CXX "SSE1" " ;-msse;/arch:SSE")
-CHECK_SSE(CXX "SSE2" " ;-msse2;/arch:SSE2")
-CHECK_SSE(CXX "SSE3" " ;-msse3;/arch:SSE3")
-CHECK_SSE(CXX "SSE4_1" " ;-msse4.1;-msse4;/arch:SSE4")
-CHECK_SSE(CXX "SSE4_2" " ;-msse4.2;-msse4;/arch:SSE4")
-CHECK_SSE(CXX "AVX" " ;-mavx;/arch:AVX")
-CHECK_SSE(CXX "AVX2" " ;-mavx2 -mfma;/arch:AVX2")
+IF(DEBIAN_I386)
+ # no SSE at all for i386
+ELSEIF(DEBIAN_AMD64)
+ # nothing higher than SSE2, no AVX. (Debian)
+ CHECK_SSE(C "SSE1" " ;-msse;/arch:SSE")
+ CHECK_SSE(C "SSE2" " ;-msse2;/arch:SSE2")
+ CHECK_SSE(CXX "SSE1" " ;-msse;/arch:SSE")
+ CHECK_SSE(CXX "SSE2" " ;-msse2;/arch:SSE2")
+ELSE()
+ # Upstream
+ CHECK_SSE(C "SSE1" " ;-msse;/arch:SSE")
+ CHECK_SSE(C "SSE2" " ;-msse2;/arch:SSE2")
+ CHECK_SSE(C "SSE3" " ;-msse3;/arch:SSE3")
+ CHECK_SSE(C "SSE4_1" " ;-msse4.1;-msse4;/arch:SSE4")
+ CHECK_SSE(C "SSE4_2" " ;-msse4.2;-msse4;/arch:SSE4")
+ CHECK_SSE(C "AVX" " ;-mavx;/arch:AVX")
+ CHECK_SSE(C "AVX2" " ;-mavx2 -mfma;/arch:AVX2")
+
+ CHECK_SSE(CXX "SSE1" " ;-msse;/arch:SSE")
+ CHECK_SSE(CXX "SSE2" " ;-msse2;/arch:SSE2")
+ CHECK_SSE(CXX "SSE3" " ;-msse3;/arch:SSE3")
+ CHECK_SSE(CXX "SSE4_1" " ;-msse4.1;-msse4;/arch:SSE4")
+ CHECK_SSE(CXX "SSE4_2" " ;-msse4.2;-msse4;/arch:SSE4")
+ CHECK_SSE(CXX "AVX" " ;-mavx;/arch:AVX")
+ CHECK_SSE(CXX "AVX2" " ;-mavx2 -mfma;/arch:AVX2")
+ENDIF()
|