Bug#766695: atlas: add ppc64el support
Mauricio Faria de Oliveira
mauricfo at linux.vnet.ibm.com
Tue Oct 28 12:10:48 UTC 2014
Hi Sébastien,
Please disregard the previous e-mails. I believe your point below
is now addressed.
On 10/25/2014 03:39 PM, Sébastien Villemot wrote:
> Also, I really dislike the kludge consisting in modifying the quilt
> series file. Isn't it rather possible to use a standard patch (applied
> on all arches) based on #ifdefs?
Yes. The attached patch now does that. Is it in a better position for
starting a conversation w/ the Release Team?
I reviewed the patches, and all - except for one - were using cpp
conditionals (#if/#else/#endif) properly. Their changes are trivial
and small, well localized to the minimal changes required to powerpc.
1)
++ #if defined(__powerpc64__) && (__BYTE_ORDER__ ==
__ORDER_LITTLE_ENDIAN__)
++ ...
++ #endif
2)
+- #if defined(ATL_USE64BITS)
++ #if defined(ATL_USE64BITS) && _CALL_ELF != 2
3)
++ #if _CALL_ELF == 2
++ /* ABIv2 */
++ ...
++ #else
++ /* ABIv1 */
+ ...
++ #endif
That exception was a patch removing some optimized cases from lists.
I replaced it with another patch that uses #if/#else/#endif per-arch,
leaving the original source code as-is on non-ppc64el arches.
4)
++#if defined(__powerpc64__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
++/* FIXME: port to little-endian powerpc64. */
++#else
++
+ ...
++
++#endif /* little-endian powerpc64 */
That said, AFAICT, the changes do not pose any problem to other
powerpc-based ports.
I could successfully build atlas on ppc64el with it, and will
perform/report of builds on powerpc and ppc64 shortly.
--
Mauricio Faria de Oliveira
IBM Linux Technology Center
-------------- next part --------------
diff -Nru atlas-3.10.2/debian/archdefs/README atlas-3.10.2/debian/archdefs/README
--- atlas-3.10.2/debian/archdefs/README 2014-07-12 07:23:26.000000000 -0300
+++ atlas-3.10.2/debian/archdefs/README 2014-10-28 07:46:40.000000000 -0200
@@ -16,5 +16,6 @@
- mips: ATLAS 3.10.1 / gabrielli.debian.org / sid / 2013-07-27
- mipsel: ATLAS 3.10.1 / eder.debian.org / sid / 2013-06-07
- powerpc: ATLAS 3.10.1 / partch.debian.org / sid / 2013-06-06
+- ppc64el: ATLAS 3.10.2 / pastel.debian.net / sid / 2014-10-24
- s390x: ATLAS 3.10.1 / zelenka.debian.org / sid / 2013-06-06
- sparc: ATLAS 3.10.1 / smetana.debian.org / wheezy / 2013-06-06
diff -Nru atlas-3.10.2/debian/changelog atlas-3.10.2/debian/changelog
--- atlas-3.10.2/debian/changelog 2014-10-15 16:35:41.000000000 -0300
+++ atlas-3.10.2/debian/changelog 2014-10-28 09:28:17.000000000 -0200
@@ -1,3 +1,17 @@
+atlas (3.10.2-4ppc64el2) UNRELEASED; urgency=medium
+
+ * Add ppc64el support (work in progress)
+ - debian/patches/ (thanks, Michael Normand et al).
+ - atlas-new_archdef_for_ppc64le.patch
+ - atlas.3.10.2-ppc64le_abiv2_step2.patch
+ - atlas.3.10.2-ppc64le_abiv2_step3.patch
+ - atlas.3.10.2-ppc64le_ifdef_files_with_lvx.patch
+ - debian/archdefs/ppc64el/GENERIC64LE.tar.bz2: archdefs/timings,
+ currently the same file for POWER7, POWER7+ and POWER8 systems.
+ - debian/archdefs/README: updated accordingly.
+
+ -- Mauricio Faria de Oliveira <mauricfo at linux.vnet.ibm.com> Thu, 28 Oct 2014 09:28:00 -0200
+
atlas (3.10.2-4) unstable; urgency=medium
[ Alastair McKinstry ]
diff -Nru atlas-3.10.2/debian/patches/atlas-new_archdef_for_ppc64le.patch atlas-3.10.2/debian/patches/atlas-new_archdef_for_ppc64le.patch
--- atlas-3.10.2/debian/patches/atlas-new_archdef_for_ppc64le.patch 1969-12-31 21:00:00.000000000 -0300
+++ atlas-3.10.2/debian/patches/atlas-new_archdef_for_ppc64le.patch 2014-10-28 07:46:40.000000000 -0200
@@ -0,0 +1,38 @@
+Origin: https://bugzilla.redhat.com/show_bug.cgi?id=1080073#c43
+Forwarded: http://sourceforge.net/p/math-atlas/patches/66/
+Description: Append 'LE' to archdef on little-endian PowerPC64
+ For more details, see:
+ https://bugzilla.redhat.com/show_bug.cgi?id=1080073#c40
+Last-Update: 2014-10-24
+Subject: atlas new archdef for ppc64le
+From: Michel Normand <normand at linux.vnet.ibm.com>
+Date: Sun, 13 Jun 2014 18:02:47 +0200
+
+Need to define different archdef names
+for ppc64 (that is Big Endian) and ppc64le (that is Little Endian).
+This is already done upstream in atlas 3.11.30 with issue
+https://sourceforge.net/p/math-atlas/patches/66/
+
+Required at least as long as I need the bypass of
+atlas.3.10.2-ppc64le_do_not_use_files_with_lvx.patch
+
+Signed-off-by: Michel Normand <normand at linux.vnet.ibm.com>
+---
+ CONFIG/src/SpewMakeInc.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+Index: ATLAS/CONFIG/src/SpewMakeInc.c
+===================================================================
+--- ATLAS.orig/CONFIG/src/SpewMakeInc.c
++++ ATLAS/CONFIG/src/SpewMakeInc.c
+@@ -542,6 +542,10 @@ int main(int nargs, char **args)
+ fprintf(fpout, "# -------------------------------------------------\n");
+ fprintf(fpout, " ARCH = %s", machnam[mach]);
+ fprintf(fpout, "%d", ptrbits);
++ /* for ppc64le archi add 'LE' characters */
++ #if defined(__powerpc64__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
++ fprintf(fpout, "%s", "LE");
++ #endif
+ if (ISAX)
+ fprintf(fpout, "%s", ISAXNAM[ISAX]);
+ if (!USEIEEE)
diff -Nru atlas-3.10.2/debian/patches/atlas.3.10.2-ppc64le_abiv2_step2.patch atlas-3.10.2/debian/patches/atlas.3.10.2-ppc64le_abiv2_step2.patch
--- atlas-3.10.2/debian/patches/atlas.3.10.2-ppc64le_abiv2_step2.patch 1969-12-31 21:00:00.000000000 -0300
+++ atlas-3.10.2/debian/patches/atlas.3.10.2-ppc64le_abiv2_step2.patch 2014-10-28 07:46:40.000000000 -0200
@@ -0,0 +1,70 @@
+Origin: http://sourceforge.net/p/math-atlas/patches/65/#3cb1
+Forwarded: http://sourceforge.net/p/math-atlas/patches/65/
+Description: ELFv2 ABI changes (2/3)
+ For more details, see:
+ https://bugzilla.redhat.com/show_bug.cgi?id=1080073#c40
+Last-Update: 2014-10-24
+From: Michel Normand <normand at linux.vnet.ibm.com>
+Subject: atlas.3.10.2 ppc64le abiv2 step2 patch
+Date: Mon, 28 Jul 2014 04:29:05 -0400
+
+atlas.ppc64le abiv2 step2 complete the changes already present in atlas 3.10.2
+* still some files with opd ABI V1 to be disabled for ABI V2
+ tune/blas/gemm/CASES/ATL_dmm4x4x32_ppc.c
+ tune/blas/gemm/CASES/ATL_dmm4x4x80_ppc.c
+ tune/blas/gemm/CASES/ATL_smm4x4x128_av.c
+
+Signed-off-by: Michel Normand <normand at linux.vnet.ibm.com>
+---
+ tune/blas/gemm/CASES/ATL_dmm4x4x32_ppc.c | 2 +-
+ tune/blas/gemm/CASES/ATL_dmm4x4x80_ppc.c | 3 ++-
+ tune/blas/gemm/CASES/ATL_smm4x4x128_av.c | 2 +-
+ 3 files changed, 4 insertions(+), 3 deletions(-)
+
+Index: ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x32_ppc.c
+===================================================================
+--- ATLAS.orig/tune/blas/gemm/CASES/ATL_dmm4x4x32_ppc.c
++++ ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x32_ppc.c
+@@ -268,7 +268,7 @@ Mjoin(.,ATL_USERMM):
+ .globl Mjoin(_,ATL_USERMM)
+ Mjoin(_,ATL_USERMM):
+ #else
+- #if defined(ATL_USE64BITS)
++ #if defined(ATL_USE64BITS) && _CALL_ELF != 2
+ /*
+ * Official Program Descripter section, seg fault w/o it on Linux/PPC64
+ */
+Index: ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x80_ppc.c
+===================================================================
+--- ATLAS.orig/tune/blas/gemm/CASES/ATL_dmm4x4x80_ppc.c
++++ ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x80_ppc.c
+@@ -202,7 +202,7 @@ Mjoin(.,ATL_USERMM):
+ .globl Mjoin(_,ATL_USERMM)
+ Mjoin(_,ATL_USERMM):
+ #else
+- #if defined(ATL_USE64BITS)
++ #if defined(ATL_USE64BITS) && _CALL_ELF != 2
+ /*
+ * Official Program Descripter section, seg fault w/o it on Linux/PPC64
+ */
+@@ -257,6 +257,7 @@ ATL_USERMM:
+ #endif
+ #endif
+
++
+ #if defined (ATL_USE64BITS)
+ ld pC0, 120(r1)
+ ld incCn, 128(r1)
+Index: ATLAS/tune/blas/gemm/CASES/ATL_smm4x4x128_av.c
+===================================================================
+--- ATLAS.orig/tune/blas/gemm/CASES/ATL_smm4x4x128_av.c
++++ ATLAS/tune/blas/gemm/CASES/ATL_smm4x4x128_av.c
+@@ -196,7 +196,7 @@ void ATL_USERMM(const int M, const int N
+ .globl Mjoin(_,ATL_USERMM)
+ Mjoin(_,ATL_USERMM):
+ #else
+- #if defined(ATL_USE64BITS)
++ #if defined(ATL_USE64BITS) && _CALL_ELF != 2
+ /*
+ * Official Program Descripter section, seg fault w/o it on Linux/PPC64
+ */
diff -Nru atlas-3.10.2/debian/patches/atlas.3.10.2-ppc64le_abiv2_step3.patch atlas-3.10.2/debian/patches/atlas.3.10.2-ppc64le_abiv2_step3.patch
--- atlas-3.10.2/debian/patches/atlas.3.10.2-ppc64le_abiv2_step3.patch 1969-12-31 21:00:00.000000000 -0300
+++ atlas-3.10.2/debian/patches/atlas.3.10.2-ppc64le_abiv2_step3.patch 2014-10-28 07:46:40.000000000 -0200
@@ -0,0 +1,191 @@
+Origin: http://sourceforge.net/p/math-atlas/patches/65/#3cb1
+Forwarded: http://sourceforge.net/p/math-atlas/patches/65/
+Description: ELFv2 ABI changes (3/3)
+ For more details, see:
+ https://bugzilla.redhat.com/show_bug.cgi?id=1080073#c40
+Last-Update: 2014-10-24
+From: Michel Normand <normand at linux.vnet.ibm.com>
+Subject: atlas.3.10.2 ppc64le abiv2 step3
+Date: Tue, 29 Jul 2014 15:33:18 +0200
+
+atlas.3.10.2 ppc64le abiv2 step3
+* change offsets of parameters read from stack to avoid some segfaults.
+ (values changes 120 => 104 and 128 => 112 identified by gdb investigation)
+
+Despite this step3 patch there are two Remaining problems for ppc64le archi:
+* TODO: still have seg-faults in console during build/check
+but is not critical (without make check) and rpm are generated on fedora.
+unable to investigate because of problem tracked by issue 950
+https://sourceforge.net/p/math-atlas/support-requests/950/
+
+* TODO: make check failure because xsslvtst execution failure
+related to vector assembly code that assumes big-endian env
+as written in ATL_cmm4x4x128_av.c and ATL_smm4x4x128_av.c.
+Would need significant work to support little-endian as per
+endianess comments of all PowerPC vector instructions in:
+https://www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/FBFA164F824370F987256D6A006F424D/$file/vector_simd_pem.ppc.2005AUG23.pdf
+
+Signed-off-by: Michel Normand <normand at linux.vnet.ibm.com>
+---
+ tune/blas/gemm/CASES/ATL_cmm4x4x128_av.c | 7 +++++++
+ tune/blas/gemm/CASES/ATL_dmm4x4x2pf_av.c | 7 +++++++
+ tune/blas/gemm/CASES/ATL_dmm4x4x32_ppc.c | 7 +++++++
+ tune/blas/gemm/CASES/ATL_dmm4x4x80_ppc.c | 17 ++++++++++++++++-
+ tune/blas/gemm/CASES/ATL_smm4x4x128_av.c | 21 +++++++++++++++++++++
+ 5 files changed, 58 insertions(+), 1 deletion(-)
+
+Index: ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x2pf_av.c
+===================================================================
+--- ATLAS.orig/tune/blas/gemm/CASES/ATL_dmm4x4x2pf_av.c
++++ ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x2pf_av.c
+@@ -405,8 +405,15 @@ Mjoin(_,ATL_USERMM):
+ */
+ #ifdef ATL_GAS_LINUX_PPC
+ #ifdef ATL_USE64BITS
++ #if _CALL_ELF == 2
++ /* ABIv2 */
++ ld pC0, 104(r1)
++ ld incCn, 112(r1)
++ #else
++ /* ABIv1 */
+ ld pC0, 120(r1)
+ ld incCn, 128(r1)
++ #endif
+ #else
+ lwz incCn, FSIZE+8(r1)
+ #endif
+Index: ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x32_ppc.c
+===================================================================
+--- ATLAS.orig/tune/blas/gemm/CASES/ATL_dmm4x4x32_ppc.c
++++ ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x32_ppc.c
+@@ -324,8 +324,15 @@ ATL_USERMM:
+ #endif
+
+ #ifdef ATL_USE64BITS
++#if _CALL_ELF == 2
++/* ABIv2 */
++ ld pC0, 104(r1)
++ ld incCn, 112(r1)
++#else
++/* ABIv1 */
+ ld pC0, 120(r1)
+ ld incCn, 128(r1)
++#endif
+ #elif defined(ATL_AS_OSX_PPC) || defined(ATL_AS_AIX_PPC)
+ lwz pC0, 68(r1)
+ lwz incCn, 72(r1)
+Index: ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x80_ppc.c
+===================================================================
+--- ATLAS.orig/tune/blas/gemm/CASES/ATL_dmm4x4x80_ppc.c
++++ ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x80_ppc.c
+@@ -170,13 +170,21 @@ void ATL_USERMM(const int M, const int N
+ const TYPE beta, TYPE *C, const int ldc)
+ (r10) 8(r1)
+ *******************************************************************************
+-64 bit ABIs:
++64 bit ABIv1s:
+ r3 r4 r5 r6/f1
+ void ATL_USERMM(const int M, const int N, const int K, const TYPE alpha,
+ r7 r8 r9 r10
+ const TYPE *A, const int lda, const TYPE *B, const int ldb,
+ f2 120(r1) 128(r1)
+ const TYPE beta, TYPE *C, const int ldc)
++
++64 bit ABIv2s:
++ r3 r4 r5 r6/f1
++void ATL_USERMM(const int M, const int N, const int K, const TYPE alpha,
++ r7 r8 r9 r10
++ const TYPE *A, const int lda, const TYPE *B, const int ldb,
++ f2 104(r1) 112(r1)
++ const TYPE beta, TYPE *C, const int ldc)
+ #endif
+ #ifdef ATL_AS_AIX_PPC
+ .csect .text[PR]
+@@ -259,8 +267,15 @@ ATL_USERMM:
+
+
+ #if defined (ATL_USE64BITS)
++#if _CALL_ELF == 2
++/* ABIv2 */
++ ld pC0, 104(r1)
++ ld incCn, 112(r1)
++#else
++/* ABIv1 */
+ ld pC0, 120(r1)
+ ld incCn, 128(r1)
++#endif
+ #elif defined(ATL_AS_OSX_PPC) || defined(ATL_AS_AIX_PPC)
+ lwz pC0, 68(r1)
+ lwz incCn, 72(r1)
+Index: ATLAS/tune/blas/gemm/CASES/ATL_smm4x4x128_av.c
+===================================================================
+--- ATLAS.orig/tune/blas/gemm/CASES/ATL_smm4x4x128_av.c
++++ ATLAS/tune/blas/gemm/CASES/ATL_smm4x4x128_av.c
+@@ -221,8 +221,15 @@ ATL_USERMM:
+ * kernel instead
+ */
+ #if defined (ATL_USE64BITS)
++#if _CALL_ELF == 2
++/* ABIv2 */
++ ld r10, 104(r1)
++ ld r5, 112(r1)
++#else
++/* ABIv1 */
+ ld r10, 120(r1)
+ ld r5, 128(r1)
++#endif
+ #elif defined(ATL_AS_OSX_PPC)
+ lwz r10, 60(r1)
+ lwz r5, 64(r1)
+@@ -285,8 +292,15 @@ ATL_USERMM:
+ eqv r0, r0, r0 /* all 1s */
+ ATL_WriteVRSAVE(r0) /* signal we use all vector regs */
+ #if defined (ATL_USE64BITS)
++#if _CALL_ELF == 2
++ /* ABIv2 */
++ ld pC0, FSIZE+104(r1)
++ ld ldc, FSIZE+112(r1)
++#else
++ /* ABIv1 */
+ ld pC0, FSIZE+120(r1)
+ ld ldc, FSIZE+128(r1)
++#endif
+ #elif defined(ATL_AS_OSX_PPC)
+ lwz pC0, FSIZE+60(r1)
+ lwz ldc, FSIZE+64(r1)
+@@ -4258,8 +4272,15 @@ UNALIGNED_C:
+ eqv r0, r0, r0 /* all 1s */
+ ATL_WriteVRSAVE(r0) /* signal we use all vector regs */
+ #if defined (ATL_USE64BITS)
++#if _CALL_ELF == 2
++ /* ABIv2 */
++ ld pC0, FSIZE+104(r1)
++ ld ldc, FSIZE+112(r1)
++#else
++ /* ABIv1 */
+ ld pC0, FSIZE+120(r1)
+ ld ldc, FSIZE+128(r1)
++#endif
+ #elif defined(ATL_AS_OSX_PPC)
+ lwz pC0, FSIZE+60(r1)
+ lwz ldc, FSIZE+64(r1)
+Index: ATLAS/tune/blas/gemm/CASES/ATL_cmm4x4x128_av.c
+===================================================================
+--- ATLAS.orig/tune/blas/gemm/CASES/ATL_cmm4x4x128_av.c
++++ ATLAS/tune/blas/gemm/CASES/ATL_cmm4x4x128_av.c
+@@ -258,8 +258,15 @@ ATL_USERMM:
+ eqv r0, r0, r0 /* all 1s */
+ ATL_WriteVRSAVE(r0) /* signal we use all vector regs */
+ #if defined (ATL_USE64BITS)
++#if _CALL_ELF == 2
++/* ABIv2 */
++ ld pC0, FSIZE+104(r1)
++ ld ldc, FSIZE+112(r1)
++#else
++/* ABIv1 */
+ ld pC0, FSIZE+120(r1)
+ ld ldc, FSIZE+128(r1)
++#endif
+ #elif defined(ATL_AS_OSX_PPC)
+ lwz pC0, FSIZE+60(r1)
+ lwz ldc, FSIZE+64(r1)
diff -Nru atlas-3.10.2/debian/patches/atlas.3.10.2-ppc64le_ifdef_files_with_lvx.patch atlas-3.10.2/debian/patches/atlas.3.10.2-ppc64le_ifdef_files_with_lvx.patch
--- atlas-3.10.2/debian/patches/atlas.3.10.2-ppc64le_ifdef_files_with_lvx.patch 1969-12-31 21:00:00.000000000 -0300
+++ atlas-3.10.2/debian/patches/atlas.3.10.2-ppc64le_ifdef_files_with_lvx.patch 2014-10-28 09:24:53.000000000 -0200
@@ -0,0 +1,123 @@
+Description: Skip optimizations for big-endian PowerPC.
+ Some of the existing optimized files/cases for PowerPC
+ contain assembly instructions with implicit big-endian
+ behavior - thus incorrect for the little-endian mode -
+ incurring tests failures during the build (i.e., FTBFS).
+ This is being worked on; this is the workaround for now.
+ .
+ Note: this is an alternative for Michael Normand's patch
+ 'atlas.3.10.2-ppc64le_do_not_use_files_with_lvx.patch',
+ in order not to touch file lists/indexes, but only C
+ source code, so the C preprocessor can avoid code per-arch.
+ .
+ For more details, see:
+ https://bugzilla.redhat.com/show_bug.cgi?id=1080073#c40
+Author: Mauricio Faria de Oliveira <mauricfo at linux.vnet.ibm.com>
+Forwarded: http://sourceforge.net/p/math-atlas/patches/65/
+Last-Update: 2014-10-28
+
+Index: atlas-3.10.2/tune/blas/gemm/CASES/ATL_cmm4x4x128_av.c
+===================================================================
+--- atlas-3.10.2.orig/tune/blas/gemm/CASES/ATL_cmm4x4x128_av.c
++++ atlas-3.10.2/tune/blas/gemm/CASES/ATL_cmm4x4x128_av.c
+@@ -7,6 +7,11 @@
+ * meaning that this kernel will do an extra store of vector C to memory
+ * for load by the scalar FPU.
+ */
++
++#if defined(__powerpc64__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
++/* FIXME: port to little-endian powerpc64. */
++#else
++
+ #include "atlas_asm.h"
+
+ #if !defined(ATL_AS_OSX_PPC) && !defined(ATL_GAS_LINUX_PPC)
+@@ -4264,3 +4269,5 @@ MPEELEDU:
+ ld r3, FST(r1)
+ addi r1, r1, FSIZE
+ blr
++
++#endif /* little-endian powerpc64 */
+Index: atlas-3.10.2/tune/blas/gemm/CASES/ATL_dmm4x4x80_ppc.c
+===================================================================
+--- atlas-3.10.2.orig/tune/blas/gemm/CASES/ATL_dmm4x4x80_ppc.c
++++ atlas-3.10.2/tune/blas/gemm/CASES/ATL_dmm4x4x80_ppc.c
+@@ -28,6 +28,10 @@
+ *
+ */
+
++#if defined(__powerpc64__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
++/* FIXME: port to little-endian powerpc64. */
++#else
++
+ #include "atlas_asm.h"
+ /*
+ * NOTE: this kernel written by R. Clint Whaley, but it uses two key ideas
+@@ -7502,3 +7506,5 @@ DONE:
+ addi r1, r1, FSIZE
+ #endif
+ blr
++
++#endif /* little-endian powerpc64 */
+Index: atlas-3.10.2/tune/blas/gemm/CASES/ATL_dmm8x4x2_vsx.c
+===================================================================
+--- atlas-3.10.2.orig/tune/blas/gemm/CASES/ATL_dmm8x4x2_vsx.c
++++ atlas-3.10.2/tune/blas/gemm/CASES/ATL_dmm8x4x2_vsx.c
+@@ -27,6 +27,10 @@
+ *
+ */
+
++#if defined(__powerpc64__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
++/* FIXME: port to little-endian powerpc64. */
++#else
++
+ #include <altivec.h>
+ #include "atlas_misc.h"
+ #include "atlas_prefetch.h" /* ATL_pfl1R, ATL_pfl1W */
+@@ -651,3 +655,5 @@ void ATL_USERMM
+ }
+ }
+ }
++
++#endif /* little-endian powerpc64 */
+Index: atlas-3.10.2/tune/blas/gemm/CASES/ATL_smm4x4x128_av.c
+===================================================================
+--- atlas-3.10.2.orig/tune/blas/gemm/CASES/ATL_smm4x4x128_av.c
++++ atlas-3.10.2/tune/blas/gemm/CASES/ATL_smm4x4x128_av.c
+@@ -28,6 +28,9 @@
+ *
+ */
+
++#if defined(__powerpc64__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
++/* FIXME: port to little-endian powerpc64. */
++#else
+
+ #include "atlas_asm.h"
+
+@@ -8361,3 +8364,5 @@ MPEELEDU:
+ ld r3, FST(r1)
+ addi r1, r1, FSIZE
+ blr
++
++#endif /* little-endian powerpc64 */
+Index: atlas-3.10.2/tune/blas/gemm/CASES/ATL_smm8x2x4_av.c
+===================================================================
+--- atlas-3.10.2.orig/tune/blas/gemm/CASES/ATL_smm8x2x4_av.c
++++ atlas-3.10.2/tune/blas/gemm/CASES/ATL_smm8x2x4_av.c
+@@ -27,6 +27,10 @@
+ *
+ */
+
++#if defined(__powerpc64__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
++/* FIXME: port to little-endian powerpc64. */
++#else
++
+ #include <altivec.h>
+ #include "atlas_misc.h"
+ #include "atlas_prefetch.h" /* ATL_pfl1R, ATL_pfl1W */
+@@ -326,3 +330,5 @@ void ATL_USERMM
+ }
+ }
+ }
++
++#endif /* little-endian powerpc64 */
diff -Nru atlas-3.10.2/debian/patches/series atlas-3.10.2/debian/patches/series
--- atlas-3.10.2/debian/patches/series 2014-07-12 07:47:33.000000000 -0300
+++ atlas-3.10.2/debian/patches/series 2014-10-28 09:24:37.000000000 -0200
@@ -13,3 +13,7 @@
armhf.diff
cpu-throttling-check.diff
generic.diff
+atlas-new_archdef_for_ppc64le.patch
+atlas.3.10.2-ppc64le_abiv2_step2.patch
+atlas.3.10.2-ppc64le_abiv2_step3.patch
+atlas.3.10.2-ppc64le_ifdef_files_with_lvx.patch
diff -Nru atlas-3.10.2/debian/source/include-binaries atlas-3.10.2/debian/source/include-binaries
--- atlas-3.10.2/debian/source/include-binaries 2014-07-12 07:23:26.000000000 -0300
+++ atlas-3.10.2/debian/source/include-binaries 2014-10-28 07:46:40.000000000 -0200
@@ -6,5 +6,6 @@
debian/archdefs/mips/GENERIC32.tar.bz2
debian/archdefs/mipsel/GENERIC32.tar.bz2
debian/archdefs/powerpc/GENERIC32.tar.bz2
+debian/archdefs/ppc64el/GENERIC64LE.tar.bz2
debian/archdefs/s390x/IBMz964.tar.bz2
debian/archdefs/sparc/USI32.tar.bz2
More information about the debian-science-maintainers
mailing list