File: cmake-disable-simd-for-compatibility.patch

package info (click to toggle)
lua-torch-torch7 0~20170926-g89ede3b-6
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 2,336 kB
  • sloc: ansic: 19,550; makefile: 79; sh: 20
file content (56 lines) | stat: -rw-r--r-- 2,232 bytes parent folder | download
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()