dde0ca
---
dde0ca
 numpy/core/include/numpy/npy_cpu.h        | 3 +++
dde0ca
 numpy/core/include/numpy/npy_endian.h     | 3 ++-
dde0ca
 numpy/core/setup.py                       | 2 +-
dde0ca
 numpy/core/setup_common.py                | 4 ++++
dde0ca
 numpy/core/src/npymath/ieee754.c.src      | 3 ++-
dde0ca
 numpy/core/src/npymath/npy_math_private.h | 3 ++-
dde0ca
 numpy/core/src/private/npy_fpmath.h       | 5 ++++-
dde0ca
 7 files changed, 18 insertions(+), 5 deletions(-)
dde0ca
dde0ca
diff --git a/numpy/core/include/numpy/npy_cpu.h b/numpy/core/include/numpy/npy_cpu.h
dde0ca
index 9707a7a..321cc04 100644
dde0ca
--- a/numpy/core/include/numpy/npy_cpu.h
dde0ca
+++ b/numpy/core/include/numpy/npy_cpu.h
dde0ca
@@ -5,6 +5,7 @@
dde0ca
  *              NPY_CPU_AMD64
dde0ca
  *              NPY_CPU_PPC
dde0ca
  *              NPY_CPU_PPC64
dde0ca
+ *              NPY_CPU_PPC64LE
dde0ca
  *              NPY_CPU_SPARC
dde0ca
  *              NPY_CPU_S390
dde0ca
  *              NPY_CPU_IA64
dde0ca
@@ -41,6 +42,8 @@
dde0ca
      * _ARCH_PPC is used by at least gcc on AIX
dde0ca
      */
dde0ca
     #define NPY_CPU_PPC
dde0ca
+#elif defined(__ppc64le__)
dde0ca
+    #define NPY_CPU_PPC64LE
dde0ca
 #elif defined(__ppc64__)
dde0ca
     #define NPY_CPU_PPC64
dde0ca
 #elif defined(__sparc__) || defined(__sparc)
dde0ca
diff --git a/numpy/core/include/numpy/npy_endian.h b/numpy/core/include/numpy/npy_endian.h
dde0ca
index 4e3349f..d8af8b3 100644
dde0ca
--- a/numpy/core/include/numpy/npy_endian.h
dde0ca
+++ b/numpy/core/include/numpy/npy_endian.h
dde0ca
@@ -27,7 +27,8 @@
dde0ca
             || defined(NPY_CPU_ARMEL)   \
dde0ca
             || defined(NPY_CPU_AARCH64) \
dde0ca
             || defined(NPY_CPU_SH_LE)   \
dde0ca
-            || defined(NPY_CPU_MIPSEL)
dde0ca
+            || defined(NPY_CPU_MIPSEL)  \
dde0ca
+            || defined(NPY_CPU_PPC64LE)
dde0ca
         #define NPY_BYTE_ORDER NPY_LITTLE_ENDIAN
dde0ca
     #elif defined(NPY_CPU_PPC)          \
dde0ca
             || defined(NPY_CPU_SPARC)   \
dde0ca
diff --git a/numpy/core/setup.py b/numpy/core/setup.py
dde0ca
index a1000ae..36cec26 100644
dde0ca
--- a/numpy/core/setup.py
dde0ca
+++ b/numpy/core/setup.py
dde0ca
@@ -444,7 +444,7 @@ def configuration(parent_package='',top_path=None):
dde0ca
                            'INTEL_EXTENDED_16_BYTES_LE',
dde0ca
                            'IEEE_QUAD_LE', 'IEEE_QUAD_BE',
dde0ca
                            'IEEE_DOUBLE_LE', 'IEEE_DOUBLE_BE',
dde0ca
-                           'DOUBLE_DOUBLE_BE']:
dde0ca
+                           'DOUBLE_DOUBLE_BE', 'DOUBLE_DOUBLE_LE']:
dde0ca
                     moredefs.append(('HAVE_LDOUBLE_%s' % rep, 1))
dde0ca
                 else:
dde0ca
                     raise ValueError("Unrecognized long double format: %s" % rep)
dde0ca
diff --git a/numpy/core/setup_common.py b/numpy/core/setup_common.py
dde0ca
index 58876a8..3289afe 100644
dde0ca
--- a/numpy/core/setup_common.py
dde0ca
+++ b/numpy/core/setup_common.py
dde0ca
@@ -221,6 +221,8 @@ _IEEE_QUAD_PREC_BE = ['300', '031', '326', '363', '105', '100', '000', '000',
dde0ca
 _IEEE_QUAD_PREC_LE = _IEEE_QUAD_PREC_BE[::-1]
dde0ca
 _DOUBLE_DOUBLE_BE = ['301', '235', '157', '064', '124', '000', '000', '000'] + \
dde0ca
                     ['000'] * 8
dde0ca
+_DOUBLE_DOUBLE_LE = ['000', '000', '000', '124', '064', '157', '235', '301'] + \
dde0ca
+                    ['000'] * 8
dde0ca
 
dde0ca
 def long_double_representation(lines):
dde0ca
     """Given a binary dump as given by GNU od -b, look for long double
dde0ca
@@ -258,6 +260,8 @@ def long_double_representation(lines):
dde0ca
                         return 'IEEE_QUAD_LE'
dde0ca
                     elif read[8:-8] == _DOUBLE_DOUBLE_BE:
dde0ca
                         return 'DOUBLE_DOUBLE_BE'
dde0ca
+                    elif read[8:-8] == _DOUBLE_DOUBLE_LE:
dde0ca
+                        return 'DOUBLE_DOUBLE_LE'
dde0ca
                 elif read[:16] == _BEFORE_SEQ:
dde0ca
                     if read[16:-8] == _IEEE_DOUBLE_LE:
dde0ca
                         return 'IEEE_DOUBLE_LE'
dde0ca
diff --git a/numpy/core/src/npymath/ieee754.c.src b/numpy/core/src/npymath/ieee754.c.src
dde0ca
index 90bbf5f..bccb3c8 100644
dde0ca
--- a/numpy/core/src/npymath/ieee754.c.src
dde0ca
+++ b/numpy/core/src/npymath/ieee754.c.src
dde0ca
@@ -133,7 +133,8 @@ float _nextf(float x, int p)
dde0ca
     return x;
dde0ca
 }
dde0ca
 
dde0ca
-#ifdef HAVE_LDOUBLE_DOUBLE_DOUBLE_BE
dde0ca
+#if defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_BE) || \
dde0ca
+    defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_LE)
dde0ca
 
dde0ca
 /*
dde0ca
  * FIXME: this is ugly and untested. The asm part only works with gcc, and we
dde0ca
diff --git a/numpy/core/src/npymath/npy_math_private.h b/numpy/core/src/npymath/npy_math_private.h
dde0ca
index 722d03f..b0ede48 100644
dde0ca
--- a/numpy/core/src/npymath/npy_math_private.h
dde0ca
+++ b/numpy/core/src/npymath/npy_math_private.h
dde0ca
@@ -398,7 +398,8 @@ do {                                                            \
dde0ca
     typedef npy_uint32 ldouble_sign_t;
dde0ca
 #endif
dde0ca
 
dde0ca
-#ifndef HAVE_LDOUBLE_DOUBLE_DOUBLE_BE
dde0ca
+#if !defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_BE) && \
dde0ca
+    !defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_LE)
dde0ca
 /* Get the sign bit of x. x should be of type IEEEl2bitsrep */
dde0ca
 #define GET_LDOUBLE_SIGN(x) \
dde0ca
     (((x).a[LDBL_SIGN_INDEX] & LDBL_SIGN_MASK) >> LDBL_SIGN_SHIFT)
dde0ca
diff --git a/numpy/core/src/private/npy_fpmath.h b/numpy/core/src/private/npy_fpmath.h
dde0ca
index 92338e4..f709d39 100644
dde0ca
--- a/numpy/core/src/private/npy_fpmath.h
dde0ca
+++ b/numpy/core/src/private/npy_fpmath.h
dde0ca
@@ -29,6 +29,8 @@
dde0ca
             #define HAVE_LDOUBLE_INTEL_EXTENDED_16_BYTES_LE
dde0ca
         #elif defined(NPY_CPU_PPC) || defined(NPY_CPU_PPC64)
dde0ca
             #define HAVE_LDOUBLE_IEEE_DOUBLE_16_BYTES_BE
dde0ca
+        #elif defined(NPY_CPU_PPC64LE)
dde0ca
+            #define HAVE_LDOUBLE_IEEE_DOUBLE_16_BYTES_LE
dde0ca
         #endif
dde0ca
     #endif
dde0ca
 #endif
dde0ca
@@ -40,7 +42,8 @@
dde0ca
       defined(HAVE_LDOUBLE_IEEE_DOUBLE_16_BYTES_BE) || \
dde0ca
       defined(HAVE_LDOUBLE_INTEL_EXTENDED_16_BYTES_LE) || \
dde0ca
       defined(HAVE_LDOUBLE_INTEL_EXTENDED_12_BYTES_LE) || \
dde0ca
-      defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_BE))
dde0ca
+      defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_BE) || \
dde0ca
+      defined(HAVE_LDOUBLE_DOUBLE_DOUBLE_LE))
dde0ca
     #error No long double representation defined
dde0ca
 #endif
dde0ca
 
dde0ca
-- 
dde0ca
1.9.3
dde0ca