You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
5.5 KiB
134 lines
5.5 KiB
--- |
|
numpy/core/include/numpy/npy_cpu.h | 3 +++ |
|
numpy/core/include/numpy/npy_endian.h | 3 ++- |
|
numpy/core/setup.py | 2 +- |
|
numpy/core/setup_common.py | 4 ++++ |
|
numpy/core/src/npymath/ieee754.c.src | 3 ++- |
|
numpy/core/src/npymath/npy_math_private.h | 3 ++- |
|
numpy/core/src/private/npy_fpmath.h | 5 ++++- |
|
7 files changed, 18 insertions(+), 5 deletions(-) |
|
|
|
diff --git a/numpy/core/include/numpy/npy_cpu.h b/numpy/core/include/numpy/npy_cpu.h |
|
index 9707a7a..321cc04 100644 |
|
--- 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) |
|
diff --git a/numpy/core/include/numpy/npy_endian.h b/numpy/core/include/numpy/npy_endian.h |
|
index 4e3349f..d8af8b3 100644 |
|
--- 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) \ |
|
diff --git a/numpy/core/setup.py b/numpy/core/setup.py |
|
index a1000ae..36cec26 100644 |
|
--- a/numpy/core/setup.py |
|
+++ b/numpy/core/setup.py |
|
@@ -444,7 +444,7 @@ def configuration(parent_package='',top_path=None): |
|
'INTEL_EXTENDED_16_BYTES_LE', |
|
'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) |
|
diff --git a/numpy/core/setup_common.py b/numpy/core/setup_common.py |
|
index 58876a8..3289afe 100644 |
|
--- a/numpy/core/setup_common.py |
|
+++ b/numpy/core/setup_common.py |
|
@@ -221,6 +221,8 @@ _IEEE_QUAD_PREC_BE = ['300', '031', '326', '363', '105', '100', '000', '000', |
|
_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 |
|
@@ -258,6 +260,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' |
|
diff --git a/numpy/core/src/npymath/ieee754.c.src b/numpy/core/src/npymath/ieee754.c.src |
|
index 90bbf5f..bccb3c8 100644 |
|
--- 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 |
|
diff --git a/numpy/core/src/npymath/npy_math_private.h b/numpy/core/src/npymath/npy_math_private.h |
|
index 722d03f..b0ede48 100644 |
|
--- a/numpy/core/src/npymath/npy_math_private.h |
|
+++ b/numpy/core/src/npymath/npy_math_private.h |
|
@@ -398,7 +398,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) |
|
diff --git a/numpy/core/src/private/npy_fpmath.h b/numpy/core/src/private/npy_fpmath.h |
|
index 92338e4..f709d39 100644 |
|
--- 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 |
|
@@ -40,7 +42,8 @@ |
|
defined(HAVE_LDOUBLE_IEEE_DOUBLE_16_BYTES_BE) || \ |
|
defined(HAVE_LDOUBLE_INTEL_EXTENDED_16_BYTES_LE) || \ |
|
defined(HAVE_LDOUBLE_INTEL_EXTENDED_12_BYTES_LE) || \ |
|
- 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 |
|
|
|
-- |
|
1.9.3 |
|
|
|
|