File: ppc64el_cpu_config.patch

package info (click to toggle)
python-numpy 1%3A1.8.2-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 21,336 kB
  • ctags: 18,503
  • sloc: ansic: 149,662; python: 85,440; cpp: 968; makefile: 367; f90: 164; sh: 130; fortran: 125; perl: 58
file content (110 lines) | stat: -rw-r--r-- 4,437 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
Description: support ppc64el long double format
Origin: 2ba74c397a5d840665d07f4fc3b2fa00214d1fcd
Applied-Upstream: 1.9.0
--- a/numpy/core/include/numpy/npy_cpu.h
+++ b/numpy/core/include/numpy/npy_cpu.h
@@ -5,6 +5,7 @@
  *              NPY_CPU_AMD64
  *              NPY_CPU_PPC
  *              NPY_CPU_PPC64
+ *              NPY_CPU_PPC64LE
  *              NPY_CPU_SPARC
  *              NPY_CPU_S390
  *              NPY_CPU_IA64
@@ -41,6 +42,8 @@
      * _ARCH_PPC is used by at least gcc on AIX
      */
     #define NPY_CPU_PPC
+#elif defined(__ppc64le__)
+    #define NPY_CPU_PPC64LE
 #elif defined(__ppc64__)
     #define NPY_CPU_PPC64
 #elif defined(__sparc__) || defined(__sparc)
--- a/numpy/core/include/numpy/npy_endian.h
+++ b/numpy/core/include/numpy/npy_endian.h
@@ -27,7 +27,8 @@
             || defined(NPY_CPU_ARMEL)   \
             || defined(NPY_CPU_AARCH64) \
             || defined(NPY_CPU_SH_LE)   \
-            || defined(NPY_CPU_MIPSEL)
+            || defined(NPY_CPU_MIPSEL)  \
+            || defined(NPY_CPU_PPC64LE)
         #define NPY_BYTE_ORDER NPY_LITTLE_ENDIAN
     #elif defined(NPY_CPU_PPC)          \
             || defined(NPY_CPU_SPARC)   \
--- a/numpy/core/src/private/npy_fpmath.h
+++ b/numpy/core/src/private/npy_fpmath.h
@@ -29,6 +29,8 @@
             #define HAVE_LDOUBLE_INTEL_EXTENDED_16_BYTES_LE
         #elif defined(NPY_CPU_PPC) || defined(NPY_CPU_PPC64)
             #define HAVE_LDOUBLE_IEEE_DOUBLE_16_BYTES_BE
+        #elif defined(NPY_CPU_PPC64LE)
+            #define HAVE_LDOUBLE_IEEE_DOUBLE_16_BYTES_LE
         #endif
     #endif
 #endif
@@ -41,7 +43,8 @@
       defined(HAVE_LDOUBLE_INTEL_EXTENDED_16_BYTES_LE) || \
       defined(HAVE_LDOUBLE_INTEL_EXTENDED_12_BYTES_LE) || \
       defined(HAVE_LDOUBLE_MOTOROLA_EXTENDED_12_BYTES_BE) || \
-      defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_BE))
+      defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_BE) || \
+      defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_LE))
     #error No long double representation defined
 #endif
 
--- a/numpy/core/setup.py
+++ b/numpy/core/setup.py
@@ -466,7 +466,7 @@ def configuration(parent_package='',top_
                            'MOTOROLA_EXTENDED_12_BYTES_BE',
                            'IEEE_QUAD_LE', 'IEEE_QUAD_BE',
                            'IEEE_DOUBLE_LE', 'IEEE_DOUBLE_BE',
-                           'DOUBLE_DOUBLE_BE']:
+                           'DOUBLE_DOUBLE_BE', 'DOUBLE_DOUBLE_LE']:
                     moredefs.append(('HAVE_LDOUBLE_%s' % rep, 1))
                 else:
                     raise ValueError("Unrecognized long double format: %s" % rep)
--- a/numpy/core/setup_common.py
+++ b/numpy/core/setup_common.py
@@ -256,6 +256,8 @@ _IEEE_QUAD_PREC_BE = ['300', '031', '326
 _IEEE_QUAD_PREC_LE = _IEEE_QUAD_PREC_BE[::-1]
 _DOUBLE_DOUBLE_BE = ['301', '235', '157', '064', '124', '000', '000', '000'] + \
                     ['000'] * 8
+_DOUBLE_DOUBLE_LE = ['000', '000', '000', '124', '064', '157', '235', '301'] + \
+                    ['000'] * 8
 
 def long_double_representation(lines):
     """Given a binary dump as given by GNU od -b, look for long double
@@ -295,6 +297,8 @@ def long_double_representation(lines):
                         return 'IEEE_QUAD_LE'
                     elif read[8:-8] == _DOUBLE_DOUBLE_BE:
                         return 'DOUBLE_DOUBLE_BE'
+                    elif read[8:-8] == _DOUBLE_DOUBLE_LE:
+                        return 'DOUBLE_DOUBLE_LE'
                 elif read[:16] == _BEFORE_SEQ:
                     if read[16:-8] == _IEEE_DOUBLE_LE:
                         return 'IEEE_DOUBLE_LE'
--- a/numpy/core/src/npymath/ieee754.c.src
+++ b/numpy/core/src/npymath/ieee754.c.src
@@ -133,7 +133,8 @@ float _nextf(float x, int p)
     return x;
 }
 
-#ifdef HAVE_LDOUBLE_DOUBLE_DOUBLE_BE
+#if defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_BE) \
+    || defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_LE)
 
 /*
  * FIXME: this is ugly and untested. The asm part only works with gcc, and we
--- a/numpy/core/src/npymath/npy_math_private.h
+++ b/numpy/core/src/npymath/npy_math_private.h
@@ -435,7 +435,8 @@ do {
     typedef npy_uint32 ldouble_sign_t;
 #endif
 
-#ifndef HAVE_LDOUBLE_DOUBLE_DOUBLE_BE
+#if !defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_BE) \
+    && !defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_LE)
 /* Get the sign bit of x. x should be of type IEEEl2bitsrep */
 #define GET_LDOUBLE_SIGN(x) \
     (((x).a[LDBL_SIGN_INDEX] & LDBL_SIGN_MASK) >> LDBL_SIGN_SHIFT)