Hello community, here is the log from the commit of package libatlas3 for openSUSE:Factory checked in at 2015-08-13 18:10:35 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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 2015-08-11 08:26:23.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.libatlas3.new/libatlas3.changes 2015-08-13 18:10:50.000000000 +0200 @@ -1,0 +2,13 @@ +Tue Aug 11 10:41:43 UTC 2015 - norm...@linux.vnet.ibm.com + +- For ppc64/ppc64le architectures: + Update the related patches to new version 3.10.2 + deleted patches: + issue_64.patch is embeded in 3.10.2 + atlas.3.10.1-ppc64le_abiv2.patch + atlas.3.10.1-add_power8_cpu.patch + new patches: + atlas.3.10.2-ppc64le_abiv2.patch + atlas.3.10.2-add_power8_cpu.patch + +------------------------------------------------------------------- Old: ---- atlas.3.10.1-add_power8_cpu.patch atlas.3.10.1-ppc64le_abiv2.patch issue_64.patch New: ---- atlas.3.10.2-add_power8_cpu.patch atlas.3.10.2-ppc64le_abiv2.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libatlas3.spec ++++++ --- /var/tmp/diff_new_pack.IRQYry/_old 2015-08-13 18:10:52.000000000 +0200 +++ /var/tmp/diff_new_pack.IRQYry/_new 2015-08-13 18:10:52.000000000 +0200 @@ -1,7 +1,7 @@ # # spec file for package libatlas3 # -# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2015 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 @@ -36,11 +36,11 @@ # for ppc64 ppc64le # https://bugzilla.redhat.com/show_bug.cgi?id=1080073#c40 Patch10: getdoublearr.stripwhite.patch -Patch11: issue_64.patch +#atch11: issue_64.patch Patch12: initialize_malloc_memory.invtrsm.wms.oct23.patch -Patch13: atlas.3.10.1-ppc64le_abiv2.patch +Patch13: atlas.3.10.2-ppc64le_abiv2.patch Patch14: atlas-new_archdef_for_ppc64le.patch -Patch15: atlas.3.10.1-add_power8_cpu.patch +Patch15: atlas.3.10.2-add_power8_cpu.patch # for ppc64le tempo patch Patch16: atlas.3.10.2-ppc64le_do_not_use_files_with_lvx.patch @@ -200,7 +200,7 @@ %endif %ifarch ppc64le ppc64 %patch10 -p1 -%patch11 -p1 +#patch11 -p1 %patch12 -p1 %patch13 -p1 %patch14 -p1 ++++++ atlas.3.10.1-add_power8_cpu.patch -> atlas.3.10.2-add_power8_cpu.patch ++++++ --- /work/SRC/openSUSE:Factory/libatlas3/atlas.3.10.1-add_power8_cpu.patch 2015-08-11 08:26:23.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.libatlas3.new/atlas.3.10.2-add_power8_cpu.patch 2015-08-13 18:10:50.000000000 +0200 @@ -1,8 +1,8 @@ From: Michel Normand <norm...@linux.vnet.ibm.com> -Subject: atlas.3.10.1 add power8 cpu +Subject: atlas.3.10.2 add power8 cpu Date: Thu, 18 Sep 2014 15:13:24 +0200 -atlas.3.10.1 add Power8 cpu +atlas.3.10.2 add Power8 cpu tracked upstream by issue 67 https://sourceforge.net/p/math-atlas/patches/67/ @@ -28,7 +28,7 @@ PPCG432AltiVec.tar.bz2 PPCG532AltiVec.tar.bz2 PPCG564AltiVec.tar.bz2 \ PPRO32.tar.bz2 USIII32.tar.bz2 USIII64.tar.bz2 USIV32.tar.bz2 \ USIV64.tar.bz2 UST232.tar.bz2 UST264.tar.bz2 atlas_test1.1.3.tar.bz2 \ -@@ -302,6 +303,12 @@ POWER764VSX.tar.bz2 : $(basdr)/POWER764V +@@ -308,6 +309,12 @@ POWER764VSX.tar.bz2 : $(basdr)/POWER764V /tmp/POWER764VSX.tar POWER764VSX bzip2 /tmp/POWER764VSX.tar mv /tmp/POWER764VSX.tar.bz2 ./. @@ -49,21 +49,21 @@ enum ARCHFAM {AFOther=0, AFPPC, AFSPARC, AFALPHA, AFX86, AFIA64, AFMIPS, AFARM, AFS390}; --#define NMACH 47 -+#define NMACH 48 +-#define NMACH 52 ++#define NMACH 53 static char *machnam[NMACH] = {"UNKNOWN", "POWER3", "POWER4", "POWER5", "PPCG4", "PPCG5", -- "POWER6", "POWER7", "IBMz9", "IBMz10", "IBMz196", -+ "POWER6", "POWER7", "POWER8", "IBMz9", "IBMz10", "IBMz196", +- "POWER6", "POWER7", "POWERe6500", "IBMz9", "IBMz10", "IBMz196", ++ "POWER6", "POWER7", "POWER8", "POWERe6500", "IBMz9", "IBMz10", "IBMz196", "x86x87", "x86SSE1", "x86SSE2", "x86SSE3", "P5", "P5MMX", "PPRO", "PII", "PIII", "PM", "CoreSolo", - "CoreDuo", "Core2Solo", "Core2", "Corei1", "Corei2", "Atom", "P4", "P4E", -@@ -30,7 +30,7 @@ static char *machnam[NMACH] = - "USI", "USII", "USIII", "USIV", "UST2", "UnknownUS", + "CoreDuo", "Core2Solo", "Core2", "Corei1", "Corei2", "Corei3", +@@ -31,7 +31,7 @@ static char *machnam[NMACH] = + "USI", "USII", "USIII", "USIV", "UST1", "UST2", "UnknownUS", "MIPSR1xK", "MIPSICE9", "ARMv7"}; enum MACHTYPE {MACHOther, IbmPwr3, IbmPwr4, IbmPwr5, PPCG4, PPCG5, -- IbmPwr6, IbmPwr7, -+ IbmPwr6, IbmPwr7, IbmPwr8, +- IbmPwr6, IbmPwr7, Pwre6500, ++ IbmPwr6, IbmPwr7, IbmPwr8, Pwre6500, IbmZ9, IbmZ10, IbmZ196, /* s390(x) in Linux */ x86x87, x86SSE1, x86SSE2, x86SSE3, /* generic targets */ IntP5, IntP5MMX, IntPPRO, IntPII, IntPIII, IntPM, IntCoreS, @@ -71,7 +71,7 @@ =================================================================== --- ATLAS.orig/CONFIG/src/atlcomp.txt +++ ATLAS/CONFIG/src/atlcomp.txt -@@ -186,6 +186,10 @@ MACH=PPCG5 OS=ALL LVL=1000 COMPS=dmc,icc +@@ -190,6 +190,10 @@ MACH=PPCG5 OS=ALL LVL=1000 COMPS=dmc,icc 'gcc' '-mpowerpc64 -maltivec -mabi=altivec -mcpu=970 -mtune=970 -O2' MACH=PPCG5 OS=ALL LVL=1000 COMPS=skc 'gcc' '-mpowerpc64 -maltivec -mabi=altivec -mcpu=970 -mtune=970 -O2 -mvrsave' @@ -82,7 +82,7 @@ MACH=POWER7 OS=ALL LVL=1010 COMPS=icc,smc,dmc,skc,dkc,xcc,gcc 'gcc' '-O2 -mvsx -mcpu=power7 -mtune=power7 -m64 -mvrsave -funroll-all-loops' MACH=POWER7 OS=ALL LVL=1010 COMPS=f77 -@@ -206,6 +210,8 @@ MACH=POWER4 OS=ALL LVL=1010 COMPS=icc,dm +@@ -210,6 +214,8 @@ MACH=POWER4 OS=ALL LVL=1010 COMPS=icc,dm 'gcc' '-mcpu=power4 -mtune=power4 -O3 -fno-schedule-insns -fno-rerun-loop-opt' MACH=POWER4 OS=ALL LVL=1010 COMPS=f77 'xlf' '-qtune=pwr4 -qarch=pwr4 -O3 -qmaxmem=-1 -qfloat=hsflt' ++++++ atlas.3.10.1-ppc64le_abiv2.patch -> atlas.3.10.2-ppc64le_abiv2.patch ++++++ --- /work/SRC/openSUSE:Factory/libatlas3/atlas.3.10.1-ppc64le_abiv2.patch 2015-08-11 08:26:23.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.libatlas3.new/atlas.3.10.2-ppc64le_abiv2.patch 2015-08-13 18:10:50.000000000 +0200 @@ -1,143 +1,39 @@ From: Michel Normand <norm...@linux.vnet.ibm.com> -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 +Subject: atlas.3.10.2 ppc64le abiv2 patch +Date: Mon, 28 Jul 2014 04:29:05 -0400 +atlas.3.10.2 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 + +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 <norm...@linux.vnet.ibm.com> --- - CONFIG/src/backend/probe_AltiVec.S | 2 +- - CONFIG/src/backend/probe_VSX.S | 2 +- - src/threads/ATL_DecAtomicCount_ppc.S | 2 +- - src/threads/ATL_ResetAtomicCount_ppc.S | 2 +- - tune/blas/gemm/CASES/ATL_cmm4x4x128_av.c | 9 ++++++++- - tune/blas/gemm/CASES/ATL_dmm4x4x2pf_av.c | 9 ++++++++- + 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 | 9 ++++++++- tune/blas/gemm/CASES/ATL_dmm4x4x80_ppc.c | 20 ++++++++++++++++++-- tune/blas/gemm/CASES/ATL_smm4x4x128_av.c | 23 ++++++++++++++++++++++- - 9 files changed, 68 insertions(+), 10 deletions(-) + 5 files changed, 62 insertions(+), 4 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 - */ -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 - */ -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 - */ -@@ -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) -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) -@@ -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 @@ -282,3 +178,43 @@ #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) +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