Hello community,

here is the log from the commit of package libatlas3 for openSUSE:Factory 
checked in at 2014-07-29 16:48:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libatlas3 (Old)
 and      /work/SRC/openSUSE:Factory/.libatlas3.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libatlas3"

Changes:
--------
--- /work/SRC/openSUSE:Factory/libatlas3/libatlas3.changes      2013-10-17 
17:40:17.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libatlas3.new/libatlas3.changes 2014-07-29 
16:49:15.000000000 +0200
@@ -1,0 +2,13 @@
+Thu Jun 26 23:23:09 UTC 2014 - [email protected]
+
+- Enable build for ppc and ppc64le
+ see http://sourceforge.net/p/math-atlas/mailman/message/32471499/
+ POWER332.tar.bz2
+ POWER764LEVSX.tar.bz2
+ libatlas.ppc64le-abiv2.patch
+ initialize_malloc_memory.invtrsm.wms.oct23.patch
+ xlf.command.not.found.patch
+ getdoublearr.stripwhite.patch
+  
+
+-------------------------------------------------------------------

New:
----
  POWER332.tar.bz2
  POWER764LEVSX.tar.bz2
  getdoublearr.stripwhite.patch
  initialize_malloc_memory.invtrsm.wms.oct23.patch
  libatlas.ppc64le-abiv2.patch
  xlf.command.not.found.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libatlas3.spec ++++++
--- /var/tmp/diff_new_pack.OxHFt9/_old  2014-07-29 16:49:16.000000000 +0200
+++ /var/tmp/diff_new_pack.OxHFt9/_new  2014-07-29 16:49:16.000000000 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package libatlas3
 #
-# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -26,10 +26,20 @@
 Group:          Development/Libraries/C and C++
 Url:            http://math-atlas.sourceforge.net/
 
-Source0:        atlas%{version}.tar.bz2
-Source1:        README.SuSE
+Source:         atlas%{version}.tar.bz2
+Source2:        README.SuSE
+Source3:        POWER332.tar.bz2
+Source4:        POWER764LEVSX.tar.bz2  
+Source5:        %name-rpmlintrc
 Patch0:         atlas-suse-shared.patch
 Patch1:         atlas-hack.patch
+# for ppc64le
+# http://sourceforge.net/p/math-atlas/mailman/message/32471499/
+Patch10:        getdoublearr.stripwhite.patch
+Patch11:        xlf.command.not.found.patch
+Patch12:        initialize_malloc_memory.invtrsm.wms.oct23.patch 
+Patch13:        libatlas.ppc64le-abiv2.patch 
+
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildRequires:  gcc-fortran
 BuildRequires:  lapack-devel
@@ -172,7 +182,7 @@
 %endif
 %endif
 
-%ifarch x86_64 ppc64
+%ifarch x86_64 ppc64 ppc64le
 %define mode 64
 %else
 %define mode 32
@@ -184,7 +194,15 @@
 %ifarch x86_64 i586
 %patch1
 %endif
-cp %{SOURCE1} doc
+%ifarch ppc64le
+%patch10 -p1
+%patch11 -p1
+%patch12 -p1
+%patch13 -p1
+%endif
+cp %{SOURCE2} doc
+
+cp %{SOURCE3} %{SOURCE4} CONFIG/ARCHS/
 
 %build
 for type in %{types}; do
@@ -211,6 +229,22 @@
        elif [ "$type" = "sse3" ]; then
                sed -i 's#ARCH =.*#ARCH = P4E32SSE3#' Make.inc
        fi
+%ifarch ppc
+       sed -i 's#ARCH =.*#ARCH = POWER332#' Make.inc
+       sed -i 's#-DATL_ARCH_POWER7#-DATL_ARCH_POWER3#g' Make.inc
+       sed -i 's#power7#power3#g' Make.inc
+       sed -i 's#-DATL_VSX##g' Make.inc
+       sed -i 's#-mvsx##g' Make.inc
+       sed -i 's#-DATL_AltiVec##g' Make.inc
+       sed -i 's#-m64#-m32#g' Make.inc
+%endif
+
+# use the provided archdef file for ppc64le
+# and force its usage in INSTFLAGS.
+%ifarch ppc64le
+       sed -i 's#\(ARCH = POWER.64\)VSX#\1LEVSX#' Make.inc
+       sed -i 's#\(INSTFLAGS =.*\) -a 0#\1 -a 1#' Make.inc
+%endif
        make build %{?_smp_mflags}
        cd lib
        make shared %{?_smp_mflags}

++++++ getdoublearr.stripwhite.patch ++++++
References: http://sourceforge.net/p/math-atlas/mailman/message/32471499/

Index: ATLAS/include/atlas_genparse.h
===================================================================
--- ATLAS.orig/include/atlas_genparse.h
+++ ATLAS/include/atlas_genparse.h
@@ -149,13 +149,24 @@ static int asmNames2bitfield(char *str)
 }
 
 /* procedure 7 */
-static int GetDoubleArr(char *str, int N, double *d)
+static int GetDoubleArr(char *callerstr, int N, double *d)
 /*
  * Reads in a list with form "%le,%le...,%le"; N-length d recieves doubles.
  * RETURNS: the number of doubles found, or N, whichever is less
  */
 {
-   int i=1;
+   int i;
+   char *dupstr = DupString(callerstr);
+   char *str = dupstr;
+   /* strip the string to end on first white space */
+   for (i=0; dupstr[i]; i++)
+   {
+       if (isspace(dupstr[i])) {
+               dupstr[i] = '\0';
+               break;
+       }
+   }
+   i = 1;
    assert(sscanf(str, "%le", d) == 1);
    while (i < N)
    {
@@ -166,6 +177,7 @@ static int GetDoubleArr(char *str, int N
       assert(sscanf(str, "%le", d+i) == 1);
       i++;
    }
+   free(dupstr);
    return(i);
 }
 
++++++ initialize_malloc_memory.invtrsm.wms.oct23.patch ++++++
From: Michel Normand <[email protected]>
Subject: initialize malloc memory.invtrsm.wms.oct23
Date: Mon, 14 Apr 2014 17:18:53 +0200
References: http://sourceforge.net/p/math-atlas/mailman/message/32471499/

initialize malloc memory invtrsm.c


Signed-off-by:  Will Schmidt <[email protected]>
Signed-off-by: Michel Normand <[email protected]>
---
 ATLAS/tune/blas/level3/invtrsm.c |    1 +
 1 file changed, 1 insertion(+)

Index: ATLAS/tune/blas/level3/invtrsm.c
===================================================================
--- ATLAS.orig/tune/blas/level3/invtrsm.c
+++ ATLAS/tune/blas/level3/invtrsm.c
@@ -525,6 +525,7 @@ static double RunTiming
    a = A = malloc(i * ATL_MulBySize(incA));
    if (A)
    {
+     memset(A,0,i*ATL_MulBySize(incA)); /* wms  (!!) malloc call above returns 
non-initialized memory. */
       if (Uplo == TestGE)
          for (i=0; i < k; i++)
             Mjoin(PATL,gegen)(N, N, A+i*incA, lda, N+lda);
++++++ libatlas.ppc64le-abiv2.patch ++++++
From: Michel Normand <[email protected]>
Subject: atlas.ppc64le abiv2
Date: Mon, 14 Apr 2014 18:03:06 +0200
References: http://sourceforge.net/p/math-atlas/mailman/message/32471499/

atlas.ppc64le abiv2
* do not use opd section for ABI V2
* define TOC in r2 in function call
  TODO: may be not required everywhere.
based on work of Guy and Thierry

TODO: still have to work on stack FSIZE

TODO: for ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x80_ppc.c
    need to better understand the change about ld pC0


Signed-off-by: Michel Normand <[email protected]>
---
 ATLAS/CONFIG/src/backend/probe_AltiVec.S       |    2 -
 ATLAS/CONFIG/src/backend/probe_VSX.S           |    2 -
 ATLAS/src/threads/ATL_DecAtomicCount_ppc.S     |    8 ++++++-
 ATLAS/src/threads/ATL_ResetAtomicCount_ppc.S   |    8 ++++++-
 ATLAS/tune/blas/gemm/CASES/ATL_cmm4x4x128_av.c |    8 ++++++-
 ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x2pf_av.c |   10 +++++++--
 ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x32_ppc.c |    8 ++++++-
 ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x80_ppc.c |   26 +++++++++++++++++++++++--
 ATLAS/tune/blas/gemm/CASES/ATL_smm4x4x128_av.c |    8 ++++++-
 9 files changed, 69 insertions(+), 11 deletions(-)

Index: ATLAS/CONFIG/src/backend/probe_AltiVec.S
===================================================================
--- ATLAS.orig/CONFIG/src/backend/probe_AltiVec.S
+++ ATLAS/CONFIG/src/backend/probe_AltiVec.S
@@ -6,7 +6,7 @@
  *
  */
 .text
-#if defined(ATL_USE64BITS) && defined (ATL_OS_Linux)
+#if defined(ATL_USE64BITS) && defined (ATL_OS_Linux) && _CALL_ELF != 2
         .align 2
         .globl  ATL_asmdecor(do_vsum)
         .section        ".opd","aw"
Index: ATLAS/CONFIG/src/backend/probe_VSX.S
===================================================================
--- ATLAS.orig/CONFIG/src/backend/probe_VSX.S
+++ ATLAS/CONFIG/src/backend/probe_VSX.S
@@ -6,7 +6,7 @@
  *
  */
 .text
-#if defined(ATL_USE64BITS) && defined (ATL_OS_Linux)
+#if defined(ATL_USE64BITS) && defined (ATL_OS_Linux) && _CALL_ELF != 2
         .align 2
         .globl  ATL_asmdecor(do_vsum)
         .section        ".opd","aw"
Index: ATLAS/src/threads/ATL_DecAtomicCount_ppc.S
===================================================================
--- ATLAS.orig/src/threads/ATL_DecAtomicCount_ppc.S
+++ ATLAS/src/threads/ATL_DecAtomicCount_ppc.S
@@ -4,7 +4,7 @@
    .globl _ATL_DecAtomicCount
    _ATL_DecAtomicCount:
 #else
-   #if defined(ATL_USE64BITS)
+   #if defined(ATL_USE64BITS) && _CALL_ELF != 2
 /*
  *      Official Program Descripter section, seg fault w/o it on Linux/PPC64
  */
@@ -22,6 +22,12 @@ ATL_DecAtomicCount:
    #else
        .globl  ATL_DecAtomicCount
 ATL_DecAtomicCount:
+   #if _CALL_ELF == 2
+       .type ATL_DecAtomicCount,@function
+0:     addis 2,12,.TOC.-0b@ha
+       addi 2,2,.TOC.-0b@l
+       .localentry ATL_DecAtomicCount, .-ATL_DecAtomicCount
+   #endif
    #endif
 #endif
 #error "Code is not reliable on PPC, don't know why"
Index: ATLAS/src/threads/ATL_ResetAtomicCount_ppc.S
===================================================================
--- ATLAS.orig/src/threads/ATL_ResetAtomicCount_ppc.S
+++ ATLAS/src/threads/ATL_ResetAtomicCount_ppc.S
@@ -4,7 +4,7 @@
    .globl _ATL_ResetAtomicCount
    _ATL_ResetAtomicCount:
 #else
-   #if defined(ATL_USE64BITS)
+   #if defined(ATL_USE64BITS) && _CALL_ELF != 2
 /*
  *      Official Program Descripter section, seg fault w/o it on Linux/PPC64
  */
@@ -22,6 +22,12 @@ ATL_ResetAtomicCount:
    #else
        .globl  ATL_ResetAtomicCount
 ATL_ResetAtomicCount:
+   #if _CALL_ELF == 2
+       .type ATL_ResetAtomicCount,@function
+0:     addis 2,12,.TOC.-0b@ha
+       addi 2,2,.TOC.-0b@l
+       .localentry ATL_ResetAtomicCount, .-ATL_ResetAtomicCount
+   #endif
    #endif
 #endif
 /* r3                                 r3       r4 */
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
@@ -181,7 +181,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
  */
@@ -199,6 +199,12 @@ Mjoin(.,ATL_USERMM):
    #else
        .globl  ATL_USERMM
 ATL_USERMM:
+   #if _CALL_ELF == 2
+       .type ATL_USERMM,@function
+0:     addis 2,12,.TOC.-0b@ha
+       addi 2,2,.TOC.-0b@l
+       .localentry ATL_USERMM, .-ATL_USERMM
+   #endif
    #endif
 #endif
 /*      Save regs */
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
@@ -279,7 +279,7 @@ void ATL_USERMM(const int M, const int N
 #endif
 .text
 #ifdef ATL_GAS_LINUX_PPC
-   #if defined(ATL_USE64BITS)
+   #if defined(ATL_USE64BITS) && _CALL_ELF != 2
 /*
  *       No idea what this does, but seg fault without it (I think it is
  *       partially resp for making code callable from both static & PIC code)
@@ -296,8 +296,14 @@ ATL_USERMM:
         .globl  Mjoin(.,ATL_USERMM)
 Mjoin(.,ATL_USERMM):
    #else
-.globl ATL_USERMM
+       .globl  ATL_USERMM
 ATL_USERMM:
+   #if _CALL_ELF == 2
+       .type ATL_USERMM,@function
+0:     addis 2,12,.TOC.-0b@ha
+       addi 2,2,.TOC.-0b@l
+       .localentry ATL_USERMM, .-ATL_USERMM
+   #endif
       #define IROFF 8
       #define FROFF IROFF+48
       #define FSIZE (((IROFF+FROFF+144+15)/16)*16)
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
  */
@@ -285,6 +285,12 @@ Mjoin(.,ATL_USERMM):
       #else
        .globl  ATL_USERMM
 ATL_USERMM:
+      #if _CALL_ELF == 2
+       .type ATL_USERMM,@function
+0:     addis 2,12,.TOC.-0b@ha
+       addi 2,2,.TOC.-0b@l
+       .localentry ATL_USERMM, .-ATL_USERMM
+      #endif
       #endif
    #endif
 #endif
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]
@@ -202,7 +210,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
  */
@@ -219,6 +227,12 @@ Mjoin(.,ATL_USERMM):
       #else
        .globl  ATL_USERMM
 ATL_USERMM:
+      #if _CALL_ELF == 2
+       .type ATL_USERMM,@function
+0:     addis 2,12,.TOC.-0b@ha
+       addi 2,2,.TOC.-0b@l
+       .localentry ATL_USERMM, .-ATL_USERMM
+      #endif
       #endif
    #endif
 #endif
@@ -257,9 +271,17 @@ ATL_USERMM:
    #endif
 #endif
 
+
 #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
@@ -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
  */
@@ -214,6 +214,12 @@ Mjoin(.,ATL_USERMM):
    #else
        .globl  ATL_USERMM
 ATL_USERMM:
+   #if _CALL_ELF == 2
+       .type ATL_USERMM,@function
+0:     addis 2,12,.TOC.-0b@ha
+       addi 2,2,.TOC.-0b@l
+       .localentry ATL_USERMM, .-ATL_USERMM
+   #endif
    #endif
 #endif
 /*
++++++ xlf.command.not.found.patch ++++++
Subject: xlf.command.not.found
From: Michel Normand <[email protected]>
References: http://sourceforge.net/p/math-atlas/mailman/message/32471499/

try to bypass error while building ppc64le
"make[2]: xlf: Command not found"

Signed-off-by: Michel Normand <[email protected]>
---
 ATLAS/CONFIG/src/atlcomp.txt |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: ATLAS/CONFIG/src/atlcomp.txt
===================================================================
--- ATLAS.orig/CONFIG/src/atlcomp.txt
+++ ATLAS/CONFIG/src/atlcomp.txt
@@ -199,7 +199,7 @@ MACH=POWER6 OS=ALL LVL=1010 COMPS=f77
 MACH=POWER5 OS=ALL LVL=1010 COMPS=f77
    'gfortran' '-mcpu=power5 -mtune=power5 -O3 -fno-schedule-insns 
-fno-rerun-loop-opt'
 MACH=POWER7 OS=ALL LVL=1010 COMPS=f77
-   'xlf' '-qtune=pwr7 -qarch=pwr7 -O3 -qmaxmem=-1 -qfloat=hsflt'
+   'gfortran' '-O2 -mvsx -mcpu=power7 -mtune=power7 -m64 -mvrsave 
-funroll-all-loops'
 MACH=POWER5 OS=ALL LVL=1010 COMPS=f77
    'xlf' '-qtune=pwr5 -qarch=pwr5 -O3 -qmaxmem=-1 -qfloat=hsflt'
 MACH=POWER4 OS=ALL LVL=1010 COMPS=icc,dmc,smc,dkc,skc,xcc,gcc
-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to