diff --git a/.atlas.metadata b/.atlas.metadata new file mode 100644 index 0000000..9eaf6d0 --- /dev/null +++ b/.atlas.metadata @@ -0,0 +1,11 @@ +0e11ec19a521973eaa551954debd112c21479e9c SOURCES/ARMa732.tar.bz2 +9398518fe55b4a544278237bc639656e04543c50 SOURCES/ARMv732NEON.tar.bz2 +d2f7a62aacdc5091aaa673a311a23f521e5c6486 SOURCES/IBMz1264.tar.bz2 +042c0b9df85a9a469e20cf0801f83b03ec40425d SOURCES/IBMz1364VXZ.tar.bz2 +352e057319fa7503cd74a0ab81055dc286cc1c45 SOURCES/IBMz1464VXZ2.tar.bz2 +0abb8f638b8ffdc13994d533d8a4febcab364f2f SOURCES/IBMz1564VXZ2.tar.bz2 +b3ee9bca1510b11c6aa671ba5ba7dff8918ce0cf SOURCES/IBMz932.tar.bz2 +43f8d8eaf8cc62bc4665df3550b77e95f3dced22 SOURCES/IBMz964.tar.bz2 +c47ac6f00d7bf4ab882e71fa1ab894cc551c77b7 SOURCES/POWER332.tar.bz2 +85c00d3190abbe250d46472824b17d9164e3dfc2 SOURCES/PPRO32.tgz +337eef1167030a9440ea645ce0037abfd4b0be4e SOURCES/atlas3.10.3.tar.bz2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b749620 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +SOURCES/ARMa732.tar.bz2 +SOURCES/ARMv732NEON.tar.bz2 +SOURCES/IBMz1264.tar.bz2 +SOURCES/IBMz1364VXZ.tar.bz2 +SOURCES/IBMz1464VXZ2.tar.bz2 +SOURCES/IBMz1564VXZ2.tar.bz2 +SOURCES/IBMz932.tar.bz2 +SOURCES/IBMz964.tar.bz2 +SOURCES/POWER332.tar.bz2 +SOURCES/PPRO32.tgz +SOURCES/atlas3.10.3.tar.bz2 diff --git a/SOURCES/0001-Avoid-c99-standard-compiler.patch b/SOURCES/0001-Avoid-c99-standard-compiler.patch new file mode 100644 index 0000000..c9c0c0e --- /dev/null +++ b/SOURCES/0001-Avoid-c99-standard-compiler.patch @@ -0,0 +1,30 @@ +From 036562b66fa607152c6c54f0d6d030cd19bfcb7f Mon Sep 17 00:00:00 2001 +From: Andreas Arnez +Date: Tue, 19 Feb 2019 19:03:52 +0100 +Subject: [PATCH 1/8] Avoid c99 standard compiler + +When probing for a usable GCC, the existing code already dropped path +names that contained "c89" or "c90", because these compilers don't have +the GCC extensions enabled. This patch also drops names with "c99" in +them. +--- + CONFIG/src/atlconf_misc.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/CONFIG/src/atlconf_misc.c b/CONFIG/src/atlconf_misc.c +index 63cb1ef..fb62214 100644 +--- a/CONFIG/src/atlconf_misc.c ++++ b/CONFIG/src/atlconf_misc.c +@@ -824,7 +824,8 @@ int CompIsGcc(char *comp) + int i; + + cmpname = NameWithoutPath(comp); +- if (strstr(cmpname, "c89") || strstr(cmpname, "c90")) ++ if (strstr(cmpname, "c89") || strstr(cmpname, "c90") || ++ strstr(cmpname, "c99")) + { + free(cmpname); + return(0); +-- +2.23.0 + diff --git a/SOURCES/0002-Fix-rpath-link-command-line-options.patch b/SOURCES/0002-Fix-rpath-link-command-line-options.patch new file mode 100644 index 0000000..25c5e4c --- /dev/null +++ b/SOURCES/0002-Fix-rpath-link-command-line-options.patch @@ -0,0 +1,38 @@ +From a8611f5dc19e2c31b810fd2baa31b9cb5fd30d2a Mon Sep 17 00:00:00 2001 +From: Andreas Arnez +Date: Tue, 19 Feb 2019 19:20:19 +0100 +Subject: [PATCH 2/8] Fix -rpath-link command line options + +The "-rpath-link" command line options were written in the wrong syntax, +causing errors in the build. This is fixed. +--- + makes/Make.lib | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/makes/Make.lib b/makes/Make.lib +index 4ceff02..b322a32 100644 +--- a/makes/Make.lib ++++ b/makes/Make.lib +@@ -47,11 +47,11 @@ cshared : fat_cshared + # + LDTRY_WIN: + $(LD) $(LDFLAGS) -shared -soname $(LIBINSTdir)/$(outso) -o $(outso) \ +- -rpath-link $(LIBINSTdir) --output-def=$(outdef) \ ++ -rpath-link=$(LIBINSTdir) --output-def=$(outdef) \ + --whole-archive $(libas) --no-whole-archive $(LIBS) + GCCTRY_WIN: + $(GOODGCC) -shared -o $(outso) -Wl,--output-def=$(outdef) \ +- -Wl,"-rpath-link $(LIBINSTdir)" \ ++ -Wl,"-rpath-link=$(LIBINSTdir)" \ + -Wl,--whole-archive $(libas) -Wl,--no-whole-archive $(LIBS) + GCCTRY_norp_WIN: + $(GOODGCC) -shared -o $(outso) -Wl,--output-def=$(outdef) \ +@@ -113,7 +113,7 @@ TRYALL_WIN : + # + LDTRY: + $(LD) $(LDFLAGS) -shared -soname $(LIBINSTdir)/$(outso) -o $(outso) \ +- -rpath-link $(LIBINSTdir) \ ++ -rpath-link=$(LIBINSTdir) \ + --whole-archive $(libas) --no-whole-archive $(LIBS) + GCCTRY: + $(GOODGCC) -shared -o $(outso).$(so_ver) \ diff --git a/SOURCES/0003-Fix-SIMD-support-on-IBM-z13.patch b/SOURCES/0003-Fix-SIMD-support-on-IBM-z13.patch new file mode 100644 index 0000000..0330ef3 --- /dev/null +++ b/SOURCES/0003-Fix-SIMD-support-on-IBM-z13.patch @@ -0,0 +1,55 @@ +From 999efd5370b33e8b02d9370eda3d454e08fc9d15 Mon Sep 17 00:00:00 2001 +From: Andreas Arnez +Date: Wed, 5 Dec 2018 18:59:15 +0100 +Subject: [PATCH 3/8] Fix SIMD support on IBM z13 + +The header file atlas_simd.h contained a syntax error and a few functional +errors that affected IBM z13. It prevented any SIMD kernels from being +compiled successfully for that platform. This is fixed. The macro +vec_madd is avoided, because some GCC versions don't implement it +correctly; the equivalent GCC builtin __builtin_s390_vec_madd is used +instead. +--- + include/atlas_simd.h | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/include/atlas_simd.h b/include/atlas_simd.h +index baee6b1..68daf79 100644 +--- a/include/atlas_simd.h ++++ b/include/atlas_simd.h +@@ -69,7 +69,7 @@ + #define ATL_FRCGNUVEC + #endif + #elif defined(ATL_VXZ) +- #if ATL_VLEN != 2; ++ #if ATL_VLEN != 2 + #define ATL_FRCGNUVEC + #endif + #elif defined(ATL_NEON) +@@ -390,19 +390,19 @@ + #define ATL_vld(v_, p_) v_ = vec_ld2f(p_); + #define ATL_vst(p_, v_) vec_st2f(v_, p_); + #endif +- #define ATL_vzero(v_) v_ = vec_splats((TYPE)0.0) ++ #define ATL_vzero(v_) v_ = vec_splats((double)0.0) + #define ATL_vcopy(d_, s_) d_ = s_ +- #define ATL_vbcast(v_, p_) v_ = vec_splats(*((TYPE*)(p_))) ++ #define ATL_vbcast(v_, p_) v_ = vec_splats((double)*((TYPE*)(p_))) + #define ATL_vuld(v_, p_) ATL_vld(v_, p_) + #define ATL_vust(p_, v_) ATL_vst(p_, v_) + #define ATL_vadd(d_, s1_, s2_) d_ = s1_ + s2_ + #define ATL_vsub(d_, s1_, s2_) d_ = s1_ - s2_ + #define ATL_vmul(d_, s1_, s2_) d_ = s1_ * s2_ +- #define ATL_vmac(d_, s1_, s2_) d_ = vec_madd(s1_, s2_, d_) ++ #define ATL_vmac(d_, s1_, s2_) d_ = __builtin_s390_vec_madd(s1_, s2_, d_) + #define ATL_vvrsum1(s0_) \ + { ATL_VTYPE t_;\ + t_ = vec_splat(s0_, 1); \ +- s0 += t_; \ ++ s0_ += t_; \ + } + #define ATL_vsplat0(d_, s_) d_ = vec_splat(s_, 0) + #define ATL_vsplat1(d_, s_) d_ = vec_splat(s_, 1) +-- +2.23.0 + diff --git a/SOURCES/0004-Read-L1-data-cache-size-from-sysconf-if-possible.patch b/SOURCES/0004-Read-L1-data-cache-size-from-sysconf-if-possible.patch new file mode 100644 index 0000000..1d6ffb3 --- /dev/null +++ b/SOURCES/0004-Read-L1-data-cache-size-from-sysconf-if-possible.patch @@ -0,0 +1,46 @@ +From a45cebf11522b3112fba3d682224a232ae5e2e98 Mon Sep 17 00:00:00 2001 +From: Andreas Arnez +Date: Wed, 12 Dec 2018 19:44:32 +0100 +Subject: [PATCH 4/8] Read L1 data cache size from sysconf if possible + +The probing of the L1 data cache size is sometimes not reliable. This can +cause the tuning to yield varying, sub-obtimal results. But on Linux the +L1 data cache size can usually be retrieved with sysconf instead, which is +faster and more reliable. Do this whenever possible. +--- + tune/sysinfo/L1CacheSize.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +diff --git a/tune/sysinfo/L1CacheSize.c b/tune/sysinfo/L1CacheSize.c +index e62a273..dffa76e 100644 +--- a/tune/sysinfo/L1CacheSize.c ++++ b/tune/sysinfo/L1CacheSize.c +@@ -30,6 +30,7 @@ + + #include + #include ++#include + + #define REPS 4096 + +@@ -276,7 +277,16 @@ int main(int nargs, char *args[]) + exit(-1); + } + if (nargs > 1) MaxSize = atoi(args[1]); +- L1Size = GetL1Size(MaxSize, 1.08); ++ ++#ifdef _SC_LEVEL1_DCACHE_SIZE ++ { ++ long res = sysconf(_SC_LEVEL1_DCACHE_SIZE); ++ L1Size = res > 0 ? (int) (res / 1024) : 0; ++ } ++#endif ++ ++ if (!L1Size) ++ L1Size = GetL1Size(MaxSize, 1.08); + if (!L1Size) + L1Size = GetL1Size(MaxSize, 1.08); + if (!L1Size) +-- +2.23.0 + diff --git a/SOURCES/0005-Optimizations-for-IBM-z13.patch b/SOURCES/0005-Optimizations-for-IBM-z13.patch new file mode 100644 index 0000000..e7fef5a --- /dev/null +++ b/SOURCES/0005-Optimizations-for-IBM-z13.patch @@ -0,0 +1,68 @@ +From ad278554860b0da7d5848262a7bf35e058266cb1 Mon Sep 17 00:00:00 2001 +From: Andreas Arnez +Date: Wed, 12 Dec 2018 20:06:27 +0100 +Subject: [PATCH 5/8] Optimizations for IBM z13 + +Perform some optimizations for IBM z13: +- Compile with -O2 instead of -O. +- Streamline vector loads/stores. +- Define the vvrsum2 macro. + +Also, use the compile option -march=z13 instead of -march=native. +--- + CONFIG/src/atlcomp.txt | 8 +++----- + include/atlas_simd.h | 11 +++++------ + 2 files changed, 8 insertions(+), 11 deletions(-) + +diff --git a/CONFIG/src/atlcomp.txt b/CONFIG/src/atlcomp.txt +index aa31604..2ac71cf 100644 +--- a/CONFIG/src/atlcomp.txt ++++ b/CONFIG/src/atlcomp.txt +@@ -246,12 +246,10 @@ MACH=IBMz9,IBMz10,IBMz196 OS=ALL LVL=500 COMPS=f77 + 'gfortran' '-O3 -funroll-loops' + MACH=IBMz9,IBMz10,IBMz196,IBMz12 OS=ALL LVL=500 COMPS=smc,dmc,skc,dkc,icc,xcc,gcc + 'gcc' '-O3 -funroll-loops' +-MACH=IBMz13 OS=ALL LVL=1000 COMPS=dmc,skc,dkc,icc,xcc,gcc +- 'gcc' '-march=native -O -mvx -mzvector' +-MACH=IBMz13 OS=ALL LVL=1000 COMPS=smc +- 'gcc' '-march=native -O -mvx -mzvector -fno-peephole -fno-peephole2' ++MACH=IBMz13 OS=ALL LVL=1000 COMPS=smc,dmc,skc,dkc,icc,xcc,gcc ++ 'gcc' '-march=z13 -mtune=z13 -O2' + MACH=IBMz13 OS=ALL LVL=1000 COMPS=f77 +- 'gfortran' '-march=native -O -mvx -mzvector' ++ 'gfortran' '-march=z13 -mtune=z13 -O2' + # + # Windows defaults ; need to make SSE/SSE2 arch dep. + # +diff --git a/include/atlas_simd.h b/include/atlas_simd.h +index 68daf79..f171933 100644 +--- a/include/atlas_simd.h ++++ b/include/atlas_simd.h +@@ -384,8 +384,8 @@ + #endif + #define ATL_VTYPE vector double + #if (defined(DREAL) || defined(DCPLX)) +- #define ATL_vld(v_, p_) {v_[0] = *(p_); v_[1] = (p_)[1]; } +- #define ATL_vst(p_, v_) {*(p_) = v_[0]; (p_)[1] = v_[1];} ++ #define ATL_vld(v_, p_) v_ = *(ATL_VTYPE *)(p_) ++ #define ATL_vst(p_, v_) *(ATL_VTYPE *)(p_) = v_ + #else + #define ATL_vld(v_, p_) v_ = vec_ld2f(p_); + #define ATL_vst(p_, v_) vec_st2f(v_, p_); +@@ -400,10 +400,9 @@ + #define ATL_vmul(d_, s1_, s2_) d_ = s1_ * s2_ + #define ATL_vmac(d_, s1_, s2_) d_ = __builtin_s390_vec_madd(s1_, s2_, d_) + #define ATL_vvrsum1(s0_) \ +- { ATL_VTYPE t_;\ +- t_ = vec_splat(s0_, 1); \ +- s0_ += t_; \ +- } ++ { s0_ = vec_mergeh(s0_, s0_) + vec_mergel(s0_, s0_); } ++ #define ATL_vvrsum2(s0_, s1_) \ ++ { s0_ = vec_mergeh(s0_, s1_) + vec_mergel(s0_, s1_); } + #define ATL_vsplat0(d_, s_) d_ = vec_splat(s_, 0) + #define ATL_vsplat1(d_, s_) d_ = vec_splat(s_, 1) + #elif defined(ATL_NEON) && (defined(SREAL) || defined(SCPLX)) +-- +2.23.0 + diff --git a/SOURCES/0006-Add-IBM-z14-support.patch b/SOURCES/0006-Add-IBM-z14-support.patch new file mode 100644 index 0000000..b00761b --- /dev/null +++ b/SOURCES/0006-Add-IBM-z14-support.patch @@ -0,0 +1,276 @@ +From dce732e9fe47b44d1a985d10a0eb97aac6afa28e Mon Sep 17 00:00:00 2001 +From: Andreas Arnez +Date: Wed, 25 Mar 2020 20:11:19 +0100 +Subject: [PATCH 6/8] Add IBM z14 support + +Add general support for IBM z14. Also detect and handle the vector +enhancements facility 1, which specifically adds single-precision FP +arithmetic for vectors. +--- + CONFIG/include/atlconf.h | 14 ++++---- + CONFIG/src/Makefile | 6 ++++ + CONFIG/src/atlcomp.txt | 4 +++ + CONFIG/src/backend/Make.ext | 4 ++- + CONFIG/src/backend/archinfo_linux.c | 3 +- + CONFIG/src/backend/probe_vxz2.c | 12 +++++++ + CONFIG/src/probe_comp.c | 3 +- + include/atlas_prefetch.h | 3 +- + include/atlas_simd.h | 53 +++++++++++++++++++++++++++++ + 9 files changed, 91 insertions(+), 11 deletions(-) + create mode 100644 CONFIG/src/backend/probe_vxz2.c + +diff --git a/CONFIG/include/atlconf.h b/CONFIG/include/atlconf.h +index e51d56d..3828fdb 100644 +--- a/CONFIG/include/atlconf.h ++++ b/CONFIG/include/atlconf.h +@@ -25,11 +25,11 @@ enum ARCHFAM {AFOther=0, AFPPC, AFSPARC, AFALPHA, AFX86, AFIA64, AFMIPS, + * Corei3EP: v3 Haswell, E5-26XX + * Corei4: skylake + */ +-#define NMACH 62 ++#define NMACH 63 + static char *machnam[NMACH] = + {"UNKNOWN", "PPCG4", "PPCG5", "POWER3", "POWER4", "POWER5", + "POWER6", "POWER7", "POWER8", "POWERe6500", +- "IBMz9", "IBMz10", "IBMz196", "IBMz12", "IBMz13", ++ "IBMz9", "IBMz10", "IBMz196", "IBMz12", "IBMz13", "IBMz14", + "x86x87", "x86SSE1", "x86SSE2", "x86SSE3", + "P5", "P5MMX", "PPRO", "PII", "PIII", "PM", "CoreSolo", + "CoreDuo", "Core2Solo", "Core2", "Corei1", "Corei2", "Corei3", +@@ -42,7 +42,7 @@ static char *machnam[NMACH] = + "ARM64xgene1", "ARM64a53", "ARM64a57"}; + enum MACHTYPE {MACHOther, PPCG4, PPCG5, IbmPwr3, IbmPwr4, IbmPwr5, + IbmPwr6, IbmPwr7, IbmPwr8, Pwre6500, +- IbmZ9, IbmZ10, IbmZ196, IbmZ12, IbmZ13, /* s390(x) in Linux */ ++ IbmZ9, IbmZ10, IbmZ196, IbmZ12, IbmZ13, IbmZ14, /* s390(x) */ + x86x87, x86SSE1, x86SSE2, x86SSE3, /* generic targets */ + IntP5, IntP5MMX, IntPPRO, IntPII, IntPIII, IntPM, IntCoreS, + IntCoreDuo, IntCore2Solo, IntCore2, IntCorei1, IntCorei2, +@@ -82,7 +82,7 @@ enum MACHTYPE {MACHOther, PPCG4, PPCG5, IbmPwr3, IbmPwr4, IbmPwr5, + #define MachIsARM64(mach_) \ + ( (mach_) >= ARM64xg && || (mach_) <= ARM64a57) + #define MachIsS390(mach_) \ +- ( (mach_) >= IbmZ9 && (mach_) <= IbmZ13 ) ++ ( (mach_) >= IbmZ9 && (mach_) <= IbmZ14 ) + + + static char *f2c_namestr[5] = {"UNKNOWN","Add_", "Add__", "NoChange", "UpCase"}; +@@ -96,13 +96,13 @@ enum F2CNAME {f2c_NamErr=0, f2c_Add_, f2c_Add__, f2c_NoChange, f2c_UpCase}; + enum F2CINT {f2c_IntErr=0, FintCint, FintClong, FintClonglong, FintCshort}; + enum F2CSTRING {f2c_StrErr=0, fstrSun, fstrCray, fstrStructVal, fstrStructPtr}; + +-#define NISA 15 ++#define NISA 16 + static char *ISAXNAM[NISA] = +- {"", "VSX", "VXZ", "AltiVec", ++ {"", "VSX", "VXZ2", "VXZ", "AltiVec", + "AVXMAC", "AVXFMA4", "AVX", "SSE3", "SSE2", "SSE1", "3DNow", + "FPV3D2MACNEON", "FPV3D16MACNEON", "FPV3D32MAC", "FPV3D16MAC"}; + enum ISAEXT +- {ISA_None=0, ISA_VSX, ISA_VXZ, ISA_AV, ++ {ISA_None=0, ISA_VSX, ISA_VXZ2, ISA_VXZ, ISA_AV, + ISA_AVXMAC, ISA_AVXFMA4, ISA_AVX, ISA_SSE3, ISA_SSE2, ISA_SSE1, ISA_3DNow, + ISA_NEON, ISA_NEON16, ISA_VFP3D32MAC, ISA_VFP3D16MAC}; + +diff --git a/CONFIG/src/Makefile b/CONFIG/src/Makefile +index 212b9d7..782a4cf 100644 +--- a/CONFIG/src/Makefile ++++ b/CONFIG/src/Makefile +@@ -158,6 +158,12 @@ IRun_NEON : + $(MAKE) $(atlrun) atldir=$(mydir) exe=xprobe_neon args="$(args)" \ + redir=config0.out + - cat config0.out ++IRun_VXZ2 : ++ $(CC) $(CCFLAGS) -march=native -mvx -mzvector -o xprobe_vxz2 \ ++ $(SRCdir)/backend/probe_svec.c $(SRCdir)/backend/probe_vxz2.c ++ $(MAKE) $(atlrun) atldir=$(mydir) exe=xprobe_vxz2 args="$(args)" \ ++ redir=config0.out ++ - cat config0.out + IRun_VXZ : + $(CC) $(CCFLAGS) -march=native -mvx -mzvector -o xprobe_vxz \ + $(SRCdir)/backend/probe_dvec.c $(SRCdir)/backend/probe_vxz.c +diff --git a/CONFIG/src/atlcomp.txt b/CONFIG/src/atlcomp.txt +index 2ac71cf..2cfacc2 100644 +--- a/CONFIG/src/atlcomp.txt ++++ b/CONFIG/src/atlcomp.txt +@@ -250,6 +250,10 @@ MACH=IBMz13 OS=ALL LVL=1000 COMPS=smc,dmc,skc,dkc,icc,xcc,gcc + 'gcc' '-march=z13 -mtune=z13 -O2' + MACH=IBMz13 OS=ALL LVL=1000 COMPS=f77 + 'gfortran' '-march=z13 -mtune=z13 -O2' ++MACH=IBMz14 OS=ALL LVL=1000 COMPS=smc,dmc,skc,dkc,icc,xcc,gcc ++ 'gcc' '-march=z14 -mtune=z14 -O2' ++MACH=IBMz14 OS=ALL LVL=1000 COMPS=f77 ++ 'gfortran' '-march=z14 -mtune=z14 -O2' + # + # Windows defaults ; need to make SSE/SSE2 arch dep. + # +diff --git a/CONFIG/src/backend/Make.ext b/CONFIG/src/backend/Make.ext +index 4743353..794babf 100644 +--- a/CONFIG/src/backend/Make.ext ++++ b/CONFIG/src/backend/Make.ext +@@ -39,7 +39,7 @@ files = archinfo_aix.c archinfo_freebsd.c archinfo_irix.c archinfo_linux.c \ + probe_gas_mips.S probe_gas_parisc.S probe_gas_ppc.S probe_gas_s390.S \ + probe_gas_sparc.S probe_gas_wow64.S probe_gas_x8632.S \ + probe_gas_x8664.S probe_smac.c probe_svec.c probe_this_asm.c \ +- probe_vxz.c ++ probe_vxz2.c probe_vxz.c + + all : $(files) + +@@ -107,6 +107,8 @@ flibchkF.f : $(basf) + $(extF) -b $(basf) -o flibchkF.f rout=flibchkF.f + probe_arm32_FPABI.c : $(basf) + $(extC) -b $(basf) -o probe_arm32_FPABI.c rout=probe_arm32_FPABI ++probe_vxz2.c : $(basf) ++ $(extC) -b $(basf) -o probe_vxz2.c rout=probe_vxz2 + probe_vxz.c : $(basf) + $(extC) -b $(basf) -o probe_vxz.c rout=probe_vxz + probe_aff_SETAFFNP.c : $(basf) +diff --git a/CONFIG/src/backend/archinfo_linux.c b/CONFIG/src/backend/archinfo_linux.c +index cdcee92..ed6f476 100644 +--- a/CONFIG/src/backend/archinfo_linux.c ++++ b/CONFIG/src/backend/archinfo_linux.c +@@ -336,7 +336,8 @@ enum MACHTYPE ProbeArch() + else if (strstr(res, "2817") || strstr(res, "2818")) mach = IbmZ196; + else if (strstr(res, "2827") || strstr(res, "2828")) mach = IbmZ12; + else if (strstr(res, "2964") || strstr(res, "2965")) mach = IbmZ13; +- else mach = IbmZ13; /* looks risky to me, but IBM folks did it */ ++ else if (strstr(res, "3906") || strstr(res, "3907")) mach = IbmZ14; ++ else mach = IbmZ14; /* looks risky to me, but IBM folks did it */ + free(res); + } + break; +diff --git a/CONFIG/src/backend/probe_vxz2.c b/CONFIG/src/backend/probe_vxz2.c +new file mode 100644 +index 0000000..a69d92d +--- /dev/null ++++ b/CONFIG/src/backend/probe_vxz2.c +@@ -0,0 +1,12 @@ ++#include ++void do_vsum(float *z, float *x, float *y) // RETURNS: z = x + y ++{ ++ vector float vx, vy; ++ vx = (vector float) {x[0], x[1], x[2], x[3]}; ++ vy = (vector float) {y[0], y[1], y[2], y[3]}; ++ vy += vx; ++ z[0] = vy[0]; ++ z[1] = vy[1]; ++ z[2] = vy[2]; ++ z[3] = vy[3]; ++} +diff --git a/CONFIG/src/probe_comp.c b/CONFIG/src/probe_comp.c +index 1652e24..857ea82 100644 +--- a/CONFIG/src/probe_comp.c ++++ b/CONFIG/src/probe_comp.c +@@ -452,7 +452,7 @@ COMPNODE **GetDefaultComps(enum OSTYPE OS, enum MACHTYPE arch, int verb, + vp = "-mavx2 -mfma"; + else if (vecexts & (1< ++ ++ #define ATL_VPERMI(s_, t_, i_) \ ++ ((ATL_VTYPE) vec_permi((vector double) s_, (vector double) t_, i_)) ++ ++ #if defined(SREAL) || defined(SCPLX) ++ #define ATL_VTYPE vector float ++ #if ATL_VLEN != 4 ++ #error "VSXZ2 supports only VLEN = 4 for floats!" ++ #endif ++ #define ATL_vvrsum4(s0_, s1_, s2_, s3_) \ ++ { ATL_VTYPE t0_, t1_; \ ++ t0_ = vec_mergeh(s0_, s1_) + vec_mergel(s0_, s1_); \ ++ t1_ = vec_mergeh(s2_, s3_) + vec_mergel(s2_, s3_); \ ++ s0_ = ATL_VPERMI(t0_, t1_, 0) + ATL_VPERMI(t0_, t1_, 3); \ ++ } ++ #define ATL_vsplat2(d_, s_) d_ = vec_splat(s_, 2) ++ #define ATL_vsplat3(d_, s_) d_ = vec_splat(s_, 3) ++ #else /* double precision */ ++ #define ATL_VTYPE vector double ++ #if ATL_VLEN != 2 ++ #error "VSXZ2 supports only VLEN = 2 for doubles!" ++ #endif ++ #define ATL_vvrsum1(s0_) \ ++ { s0_ = vec_mergeh(s0_, s0_) + vec_mergel(s0_, s0_); } ++ #define ATL_vvrsum2(s0_, s1_) \ ++ { s0_ = vec_mergeh(s0_, s1_) + vec_mergel(s0_, s1_); } ++ #endif ++ #define ATL_vld(v_, p_) v_ = *(ATL_VTYPE *)(p_) ++ #define ATL_vst(p_, v_) *(ATL_VTYPE *)(p_) = v_ ++ #define ATL_vzero(v_) v_ = vec_splats((TYPE)0.0) ++ #define ATL_vcopy(d_, s_) d_ = s_ ++ #define ATL_vbcast(v_, p_) v_ = vec_splats(*((TYPE*)(p_))) ++ #define ATL_vuld(v_, p_) v_ = vec_xl(0, (TYPE *)(p_)) ++ #define ATL_vust(p_, v_) vec_xst(v_, 0, (TYPE *)(p_)) ++ #define ATL_vadd(d_, s1_, s2_) d_ = s1_ + s2_ ++ #define ATL_vsub(d_, s1_, s2_) d_ = s1_ - s2_ ++ #define ATL_vmul(d_, s1_, s2_) d_ = s1_ * s2_ ++ #define ATL_vmac(d_, s1_, s2_) d_ = __builtin_s390_vec_madd(s1_, s2_, d_) ++ #define ATL_vsplat0(d_, s_) d_ = vec_splat(s_, 0) ++ #define ATL_vsplat1(d_, s_) d_ = vec_splat(s_, 1) + #elif defined(ATL_VXZ) + #include + +-- +2.23.0 + diff --git a/SOURCES/0007-Enable-cross-compile.patch b/SOURCES/0007-Enable-cross-compile.patch new file mode 100644 index 0000000..9ab7d29 --- /dev/null +++ b/SOURCES/0007-Enable-cross-compile.patch @@ -0,0 +1,265 @@ +From 14e717c4367c04570863220c3faf5ce41dabbf05 Mon Sep 17 00:00:00 2001 +From: Andreas Arnez +Date: Wed, 29 May 2019 17:51:34 +0200 +Subject: [PATCH 7/8] Enable "cross-compile" + +This adds support for building ATLAS without running any target code. In +order for this to work, the archdefs must contain some additional files +that would otherwise be built during various tuning steps; see the new +targets extra_get and extra_put in "CONFIG/ARCHS/Makefile". + +Even if the archdefs contain these additional files, cross compilation +is *not* automatically enabled. To activate it and disable tuning at +build time, add the option "-Si archdef 2" when running "configure". +--- + CONFIG/ARCHS/Makefile | 24 ++++++++++++++++++++++++ + bin/atlas_install.c | 2 ++ + makes/Make.aux | 10 +++++----- + makes/Make.bin | 22 ++++++++++++++++++++++ + makes/Make.l3tune | 6 ++++++ + makes/Make.sysinfo | 8 +++++++- + 6 files changed, 66 insertions(+), 6 deletions(-) + +diff --git a/CONFIG/ARCHS/Makefile b/CONFIG/ARCHS/Makefile +index 321e05c..e61b5a0 100644 +--- a/CONFIG/ARCHS/Makefile ++++ b/CONFIG/ARCHS/Makefile +@@ -211,3 +211,27 @@ ArchNew : $(mach) xnegflt + - cp $(BLDdir)/bin/INSTALL_LOG/?PerfSumm.txt $(adefd)/. + rm -f xnegflt + archput : sys_put kern_put gemm_put la_put ++ ++ifdef ATL_NOTUNE ++ ++# To avoid tuning, some extra files are needed. ++ ++extra_get : ++ - cp $(INCAdir)/atlas_type.h $(adefd)/kern/ ++ - cp $(INCAdir)/atlas_[sdcz]sysinfo.h $(adefd)/kern/ ++ - cp $(INCAdir)/atlas_[sd]lamch.h $(adefd)/kern/ ++ - cp $(INCAdir)/atlas_[sdcz]trsmXover.h $(adefd)/kern/ ++ - cp $(INCAdir)/atlas_[sdcz]syr*NX.h $(adefd)/kern/ ++ ++extra_put : ++ - cp $(adefd)/kern/atlas_type.h $(INCAdir)/. ++ - cp $(adefd)/kern/atlas_[sdcz]sysinfo.h $(INCAdir)/. ++ - cp $(adefd)/kern/atlas_[sd]lamch.h $(INCAdir)/. ++ - cp $(adefd)/kern/atlas_[sdcz]trsmXover.h $(INCAdir)/. ++ - cp $(adefd)/kern/atlas_[sdcz]syr*NX.h $(INCAdir)/. ++ ++ArchNew : extra_get ++ ++archput : extra_put ++ ++endif +diff --git a/bin/atlas_install.c b/bin/atlas_install.c +index de3eb3a..3c811e6 100644 +--- a/bin/atlas_install.c ++++ b/bin/atlas_install.c +@@ -697,6 +697,8 @@ void GoToTown(int ARCHDEF, int L1DEF, int TuneLA) + ATL_Cassert(system("make IBozoL1.grd\n")==0, + "USING BOZO L1 DEFAULTS", NULL); + } ++ if (ARCHDEF >= 2) ++ setenv("ATL_NOTUNE", "1", 1); + if (ARCHDEF) + DefInstall = !system("make IArchDef.grd\n"); + +diff --git a/makes/Make.aux b/makes/Make.aux +index 1f769c8..c793028 100644 +--- a/makes/Make.aux ++++ b/makes/Make.aux +@@ -113,23 +113,23 @@ clean : + + $(ATLFWAIT) : + cd $(BINdir) ; $(MAKE) xatlas_waitfile +-$(INCAdir)/atlas_type.h : $(ATLFWAIT) ++$(INCAdir)/atlas_type.h : | $(ATLFWAIT) + cd $(SYSdir) ; $(MAKE) $(INCAdir)/atlas_type.h + $(ATLFWAIT) -f $(INCAdir)/atlas_type.h + sINCdep = $(INCAdir)/atlas_ssysinfo.h $(INCAdir)/atlas_type.h +-$(INCAdir)/atlas_ssysinfo.h : $(ATLFWAIT) ++$(INCAdir)/atlas_ssysinfo.h : | $(ATLFWAIT) + cd $(SYSdir) ; $(MAKE) $(INCAdir)/atlas_ssysinfo.h + $(ATLFWAIT) -f $(INCAdir)/atlas_ssysinfo.h + dINCdep = $(INCAdir)/atlas_dsysinfo.h $(INCAdir)/atlas_type.h +-$(INCAdir)/atlas_dsysinfo.h : $(ATLFWAIT) ++$(INCAdir)/atlas_dsysinfo.h : | $(ATLFWAIT) + cd $(SYSdir) ; $(MAKE) $(INCAdir)/atlas_dsysinfo.h + $(ATLFWAIT) -f $(INCAdir)/atlas_dsysinfo.h + cINCdep = $(INCAdir)/atlas_csysinfo.h $(INCAdir)/atlas_type.h +-$(INCAdir)/atlas_csysinfo.h : $(ATLFWAIT) ++$(INCAdir)/atlas_csysinfo.h : | $(ATLFWAIT) + cd $(SYSdir) ; $(MAKE) $(INCAdir)/atlas_csysinfo.h + $(ATLFWAIT) -f $(INCAdir)/atlas_csysinfo.h + zINCdep = $(INCAdir)/atlas_zsysinfo.h $(INCAdir)/atlas_type.h +-$(INCAdir)/atlas_zsysinfo.h : $(ATLFWAIT) ++$(INCAdir)/atlas_zsysinfo.h : | $(ATLFWAIT) + cd $(SYSdir) ; $(MAKE) $(INCAdir)/atlas_zsysinfo.h + $(ATLFWAIT) -f $(INCAdir)/atlas_zsysinfo.h + +diff --git a/makes/Make.bin b/makes/Make.bin +index 1035cb9..acad578 100644 +--- a/makes/Make.bin ++++ b/makes/Make.bin +@@ -163,7 +163,9 @@ IRunMADef : + cd $(SYSdir) ; $(MAKE) RunMADef pre=$(pre) + + IRunMMDef : ++ifndef ATL_NOTUNE + cd $(MMTdir) ; $(MAKE) RunMMDef pre=$(pre) ++endif + cd $(MMTdir) ; ./xemit_mm -p $(pre) -R -2 + cd $(MMTdir) ; $(MAKE) install pre=$(pre) + IKillL1 : force_build +@@ -303,22 +305,42 @@ INSTALL_LOG/$(pre)bestTT_$(nb)x$(nb)x$(nb) : \ + cp $(MMTdir)/res/$(pre)bestTT_$(nb)x$(nb)x$(nb) INSTALL_LOG/. + + $(R1Tdir)/res/$(pre)R2K.sum : $(R1Tdir)/res/$(pre)R1K.sum force_build ++ifdef ATL_NOTUNE ++ cd $(R1Tdir) ; $(MAKE) $(pre)r2install ++else + cd $(R1Tdir) ; $(MAKE) res/$(pre)R2K.sum pre=$(pre) ++endif + $(R1Tdir)/res/$(pre)R1K.sum : force_build ++ifdef ATL_NOTUNE ++ cd $(R1Tdir) ; $(MAKE) $(pre)r1install ++else + cd $(R1Tdir) ; $(MAKE) res/$(pre)R1K.sum pre=$(pre) ++endif + INSTALL_LOG/$(pre)R1K.sum : $(R1Tdir)/res/$(pre)R1K.sum + cp $(R1Tdir)/res/$(pre)R1K.sum INSTALL_LOG/. + INSTALL_LOG/$(pre)R2K.sum : INSTALL_LOG/$(pre)R1K.sum \ + $(R1Tdir)/res/$(pre)R2K.sum + cp $(R1Tdir)/res/$(pre)R2K.sum INSTALL_LOG/. ++ifndef ATL_NOTUNE + cd $(R1Tdir) ; $(MAKE) $(pre)nxtune ++else ++ cd $(BLDdir)/src/blas/reference/level2 ; make $(pre)lib ++endif + + $(MVTdir)/res/$(pre)MVNK.sum : force_build ++ifdef ATL_NOTUNE ++ cd $(MVTdir) ; $(MAKE) $(pre)mvninstall ++else + cd $(MVTdir) ; $(MAKE) res/$(pre)MVNK.sum pre=$(pre) ++endif + INSTALL_LOG/$(pre)MVNK.sum : $(MVTdir)/res/$(pre)MVNK.sum + cp $(MVTdir)/res/$(pre)MVNK.sum INSTALL_LOG/. + $(MVTdir)/res/$(pre)MVTK.sum : force_build ++ifdef ATL_NOTUNE ++ cd $(MVTdir) ; $(MAKE) $(pre)mvtinstall ++else + cd $(MVTdir) ; $(MAKE) res/$(pre)MVTK.sum pre=$(pre) ++endif + INSTALL_LOG/$(pre)MVTK.sum : $(MVTdir)/res/$(pre)MVTK.sum + cp $(MVTdir)/res/$(pre)MVTK.sum INSTALL_LOG/. + +diff --git a/makes/Make.l3tune b/makes/Make.l3tune +index eaf7d7d..cd7f5f1 100644 +--- a/makes/Make.l3tune ++++ b/makes/Make.l3tune +@@ -118,6 +118,7 @@ res/atlas_strsmXover.h : + cp $(strsmXover) res/. + + stsmfc : ++ifndef ATL_NOTUNE + rm -f $(strsmXover) + cd $(L3Bdir) ; $(MAKE) slib + $(MAKE) xstsmfc2 pre=s typ=SREAL side=$(side) uplo=Upper_ \ +@@ -128,6 +129,7 @@ stsmfc : + tran=NoTranspose_ diag=$(diag) + $(MAKE) xstsmfc2 pre=s typ=SREAL side=$(side) uplo=Lower_ \ + tran=Transpose_ diag=$(diag) ++endif + cd $(L3Bdir) ; $(MAKE) slib + dtrsmXover = $(INCAdir)/atlas_dtrsmXover.h + +@@ -138,6 +140,7 @@ res/atlas_dtrsmXover.h : + cp $(dtrsmXover) res/. + + dtsmfc : ++ifndef ATL_NOTUNE + rm -f $(dtrsmXover) + cd $(L3Bdir) ; $(MAKE) dlib + $(MAKE) xdtsmfc2 pre=d typ=DREAL side=$(side) uplo=Upper_ \ +@@ -148,6 +151,7 @@ dtsmfc : + tran=NoTranspose_ diag=$(diag) + $(MAKE) xdtsmfc2 pre=d typ=DREAL side=$(side) uplo=Lower_ \ + tran=Transpose_ diag=$(diag) ++endif + cd $(L3Bdir) ; $(MAKE) dlib + qtrsmXover = $(INCAdir)/atlas_qtrsmXover.h + +@@ -158,6 +162,7 @@ res/atlas_qtrsmXover.h : + cp $(qtrsmXover) res/. + + qtsmfc : ++ifndef ATL_NOTUNE + rm -f $(qtrsmXover) + cd $(L3Bdir) ; $(MAKE) qlib + $(MAKE) xqtsmfc2 pre=q typ=QREAL side=$(side) uplo=Upper_ \ +@@ -168,6 +173,7 @@ qtsmfc : + tran=NoTranspose_ diag=$(diag) + $(MAKE) xqtsmfc2 pre=q typ=QREAL side=$(side) uplo=Lower_ \ + tran=Transpose_ diag=$(diag) ++endif + cd $(L3Bdir) ; $(MAKE) qlib + + $(pre)tsmfc.o : force_build +diff --git a/makes/Make.sysinfo b/makes/Make.sysinfo +index 2b7dfdc..8e5dab2 100644 +--- a/makes/Make.sysinfo ++++ b/makes/Make.sysinfo +@@ -5,6 +5,7 @@ maxlat=6 + mflop=200 + flags= + ++ifndef ATL_NOTUNE + sTestFlags : force_build + $(MAKE) srbob `cat res/sBEST` pre='s' type=float + +@@ -85,12 +86,14 @@ RunLamch : xemit_lamch + cp res/atlas_?lamch.h $(INCAdir)/. + RunTyp: xemit_typ + $(ATLRUN) $(SYSdir) xemit_typ > $(INCAdir)/atlas_type.h ++endif + + xemit_buildinfo : emit_buildinfo.o + $(XCC) $(XCCFLAGS) -o $@ emit_buildinfo.o + xsyssum : GetSysSum.o + $(XCC) $(XCCFLAGS) -o $@ GetSysSum.o + ++ifndef ATL_NOTUNE + xL1 : time.o L1CacheSize.o + $(KC) $(KCFLAGS) -o $@ L1CacheSize.o time.o + +@@ -125,6 +128,7 @@ smatime.o : $(mySRCdir)/matime.c + $(KC) -c $(KCFLAGS) -DSREAL $(mySRCdir)/matime.c + xmasrch : $(mySRCdir)/masrch.c + $(XCC) $(XCCFLAGS) -o $@ $(mySRCdir)/masrch.c ++endif + + ATL_cputime.c : + cp $(mySRCdir)/ATL_cputime.c . +@@ -143,6 +147,8 @@ emit_buildinfo.o : $(mySRCdir)/emit_buildinfo.c + $(XCC) -c $(XCCFLAGS) $(mySRCdir)/emit_buildinfo.c + GetSysSum.o : $(INCAdir)/atlas_type.h $(mySRCdir)/GetSysSum.c + $(XCC) -c $(XCCFLAGS) $(mySRCdir)/GetSysSum.c ++ ++ifndef ATL_NOTUNE + time.o : $(mySRCdir)/time.c + $(KC) -c $(KCFLAGS) -I./ $(mySRCdir)/time.c + emit_lamch.o : $(mySRCdir)/emit_lamch.c +@@ -155,7 +161,7 @@ findNT.o : $(mySRCdir)/findNT.c + $(KC) -c $(KCFLAGS) $(mySRCdir)/findNT.c + tlb.o : $(mySRCdir)/tlb.c + $(KC) -c $(KCFLAGS) $(mySRCdir)/tlb.c +- ++endif + + + force_build : +-- +2.23.0 + diff --git a/SOURCES/0008-Add-IBM-z15-support.patch b/SOURCES/0008-Add-IBM-z15-support.patch new file mode 100644 index 0000000..526a039 --- /dev/null +++ b/SOURCES/0008-Add-IBM-z15-support.patch @@ -0,0 +1,105 @@ +From d249a8128806d08285eeda00b2a35b62a22236f4 Mon Sep 17 00:00:00 2001 +From: Andreas Arnez +Date: Thu, 26 Mar 2020 17:14:49 +0100 +Subject: [PATCH 8/8] Add IBM z15 support + +Add support for specifying "IBMz15" as target architecture. +--- + CONFIG/include/atlconf.h | 8 ++++---- + CONFIG/src/atlcomp.txt | 4 ++++ + CONFIG/src/backend/archinfo_linux.c | 1 + + CONFIG/src/probe_comp.c | 1 + + include/atlas_prefetch.h | 2 +- + 5 files changed, 11 insertions(+), 5 deletions(-) + +diff --git a/CONFIG/include/atlconf.h b/CONFIG/include/atlconf.h +index 3828fdb..382601f 100644 +--- a/CONFIG/include/atlconf.h ++++ b/CONFIG/include/atlconf.h +@@ -25,11 +25,11 @@ enum ARCHFAM {AFOther=0, AFPPC, AFSPARC, AFALPHA, AFX86, AFIA64, AFMIPS, + * Corei3EP: v3 Haswell, E5-26XX + * Corei4: skylake + */ +-#define NMACH 63 ++#define NMACH 64 + static char *machnam[NMACH] = + {"UNKNOWN", "PPCG4", "PPCG5", "POWER3", "POWER4", "POWER5", + "POWER6", "POWER7", "POWER8", "POWERe6500", +- "IBMz9", "IBMz10", "IBMz196", "IBMz12", "IBMz13", "IBMz14", ++ "IBMz9", "IBMz10", "IBMz196", "IBMz12", "IBMz13", "IBMz14", "IBMz15", + "x86x87", "x86SSE1", "x86SSE2", "x86SSE3", + "P5", "P5MMX", "PPRO", "PII", "PIII", "PM", "CoreSolo", + "CoreDuo", "Core2Solo", "Core2", "Corei1", "Corei2", "Corei3", +@@ -42,7 +42,7 @@ static char *machnam[NMACH] = + "ARM64xgene1", "ARM64a53", "ARM64a57"}; + enum MACHTYPE {MACHOther, PPCG4, PPCG5, IbmPwr3, IbmPwr4, IbmPwr5, + IbmPwr6, IbmPwr7, IbmPwr8, Pwre6500, +- IbmZ9, IbmZ10, IbmZ196, IbmZ12, IbmZ13, IbmZ14, /* s390(x) */ ++ IbmZ9, IbmZ10, IbmZ196, IbmZ12, IbmZ13, IbmZ14, IbmZ15, + x86x87, x86SSE1, x86SSE2, x86SSE3, /* generic targets */ + IntP5, IntP5MMX, IntPPRO, IntPII, IntPIII, IntPM, IntCoreS, + IntCoreDuo, IntCore2Solo, IntCore2, IntCorei1, IntCorei2, +@@ -82,7 +82,7 @@ enum MACHTYPE {MACHOther, PPCG4, PPCG5, IbmPwr3, IbmPwr4, IbmPwr5, + #define MachIsARM64(mach_) \ + ( (mach_) >= ARM64xg && || (mach_) <= ARM64a57) + #define MachIsS390(mach_) \ +- ( (mach_) >= IbmZ9 && (mach_) <= IbmZ14 ) ++ ( (mach_) >= IbmZ9 && (mach_) <= IbmZ15 ) + + + static char *f2c_namestr[5] = {"UNKNOWN","Add_", "Add__", "NoChange", "UpCase"}; +diff --git a/CONFIG/src/atlcomp.txt b/CONFIG/src/atlcomp.txt +index 2cfacc2..acb2c83 100644 +--- a/CONFIG/src/atlcomp.txt ++++ b/CONFIG/src/atlcomp.txt +@@ -254,6 +254,10 @@ MACH=IBMz14 OS=ALL LVL=1000 COMPS=smc,dmc,skc,dkc,icc,xcc,gcc + 'gcc' '-march=z14 -mtune=z14 -O2' + MACH=IBMz14 OS=ALL LVL=1000 COMPS=f77 + 'gfortran' '-march=z14 -mtune=z14 -O2' ++MACH=IBMz15 OS=ALL LVL=1000 COMPS=smc,dmc,skc,dkc,icc,xcc,gcc ++ 'gcc' '-march=arch13 -mtune=arch13 -O2' ++MACH=IBMz15 OS=ALL LVL=1000 COMPS=f77 ++ 'gfortran' '-march=arch13 -mtune=arch13 -O2' + # + # Windows defaults ; need to make SSE/SSE2 arch dep. + # +diff --git a/CONFIG/src/backend/archinfo_linux.c b/CONFIG/src/backend/archinfo_linux.c +index ed6f476..934a005 100644 +--- a/CONFIG/src/backend/archinfo_linux.c ++++ b/CONFIG/src/backend/archinfo_linux.c +@@ -337,6 +337,7 @@ enum MACHTYPE ProbeArch() + else if (strstr(res, "2827") || strstr(res, "2828")) mach = IbmZ12; + else if (strstr(res, "2964") || strstr(res, "2965")) mach = IbmZ13; + else if (strstr(res, "3906") || strstr(res, "3907")) mach = IbmZ14; ++ else if (strstr(res, "8561") || strstr(res, "8562")) mach = IbmZ15; + else mach = IbmZ14; /* looks risky to me, but IBM folks did it */ + free(res); + } +diff --git a/CONFIG/src/probe_comp.c b/CONFIG/src/probe_comp.c +index 857ea82..88bb25e 100644 +--- a/CONFIG/src/probe_comp.c ++++ b/CONFIG/src/probe_comp.c +@@ -1208,6 +1208,7 @@ void GetBestGccVers(enum OSTYPE OS, enum MACHTYPE arch, + case IbmZ12: + case IbmZ13: + case IbmZ14: ++ case IbmZ15: + case IntCorei3: + case IntCorei4: + case IntCorei2: +diff --git a/include/atlas_prefetch.h b/include/atlas_prefetch.h +index fa426ac..583f19d 100644 +--- a/include/atlas_prefetch.h ++++ b/include/atlas_prefetch.h +@@ -156,7 +156,7 @@ + #define ATL_L2LS 64 + #elif defined(ATL_ARCH_IBMz196) || defined(ATL_ARCH_IBMz10) || \ + defined(ATL_ARCH_IBMzEC12) || defined(ATL_ARCH_IBMz13) || \ +- defined(ATL_ARCH_IbmZ14) ++ defined(ATL_ARCH_IbmZ14) || defined(ATL_ARCH_IbmZ15) + #define ATL_pfl1R(mem) __builtin_prefetch(mem, 0, 3) + #define ATL_pfl1W(mem) __builtin_prefetch(mem, 1, 3) + #define ATL_GOT_L1PREFETCH +-- +2.23.0 + diff --git a/SOURCES/README.dist b/SOURCES/README.dist new file mode 100644 index 0000000..5d60a7b --- /dev/null +++ b/SOURCES/README.dist @@ -0,0 +1,47 @@ +Notes on the packaged version of ATLAS + +by Quentin Spencer +updated: October 4, 2005 + +updated by Deji Akingunola +October 15, 2008 + +updated by Deji Akingunola +June 15, 2011 + +updated by Frantisek Kluknavsky +Nov 20, 2012 + +Because ATLAS relies on compile-time optimizations to obtain improved +performance over BLAS and LAPACK, the resulting binaries are closely +tied to the hardware on which they are compiled, and can likely result +in very poor performance on other hardware. For this reason, +including a package like ATLAS in Fedora requires some compromises. +Optimizing ATLAS for the most modern hardware can result in +significant performance penalties for users using the same package on +older hardware. A binary ATLAS package must perform reasonably well on the +entire range of hardware on which it could potentially be installed. + +The result is a set of libraries that will not +necessarily achieve optimal performance on any given hardware but +should still offer significant performance gains over the reference +BLAS and LAPACK libraries on most hardware. + +In addition to the base 32bit build, subpackages are built for SSE, SSE2, +and SSE3 ix86 extensions. + +On 64bit x86 systems the default atlas package was built with SSE3 +optimization. + +This packaging allows multiple installation of different atlas sub-packages +at the same time. The alternatives system (read 'man alternatives' for usage) +is used in the -devel subpackages to select the appropriate location for the +architectural dependent header files. + +For users who want optimal performance on +particular hardware, custom RPMs can be built from the source package +by setting the RPM macro "enable_native_atlas" to a value of 1. This +can be done from the command line as in the following example: + +rpmbuild -D "enable_native_atlas 1" --rebuild atlas-3.8.3-1.src.rpm + diff --git a/SOURCES/atlas-gcc10.patch b/SOURCES/atlas-gcc10.patch new file mode 100644 index 0000000..6d6eb4e --- /dev/null +++ b/SOURCES/atlas-gcc10.patch @@ -0,0 +1,49 @@ +From 9a3e640a517926c47b5655ba0033d4f56df4a66e Mon Sep 17 00:00:00 2001 +From: Jakub Martisko +Date: Wed, 22 Jan 2020 14:24:46 +0100 +Subject: [PATCH] test + +--- + interfaces/blas/C/testing/c_dblat1.f | 4 ++-- + interfaces/blas/C/testing/c_sblat1.f | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/interfaces/blas/C/testing/c_dblat1.f b/interfaces/blas/C/testing/c_dblat1.f +index 55ea989..7269601 100644 +--- a/interfaces/blas/C/testing/c_dblat1.f ++++ b/interfaces/blas/C/testing/c_dblat1.f +@@ -247,11 +247,11 @@ + IF (ICASE.EQ.7) THEN + * .. DNRM2TEST .. + STEMP(1) = DTRUE1(NP1) +- CALL STEST1(DNRM2TEST(N,SX,INCX),STEMP,STEMP,SFAC) ++ CALL STEST1(DNRM2TEST(N,SX,INCX),STEMP(1),STEMP,SFAC) + ELSE IF (ICASE.EQ.8) THEN + * .. DASUMTEST .. + STEMP(1) = DTRUE3(NP1) +- CALL STEST1(DASUMTEST(N,SX,INCX),STEMP,STEMP,SFAC) ++ CALL STEST1(DASUMTEST(N,SX,INCX),STEMP(1),STEMP,SFAC) + ELSE IF (ICASE.EQ.9) THEN + * .. DSCALTEST .. + CALL DSCALTEST(N,SA((INCX-1)*5+NP1),SX,INCX) +diff --git a/interfaces/blas/C/testing/c_sblat1.f b/interfaces/blas/C/testing/c_sblat1.f +index 1fc6dce..b97ed0b 100644 +--- a/interfaces/blas/C/testing/c_sblat1.f ++++ b/interfaces/blas/C/testing/c_sblat1.f +@@ -247,11 +247,11 @@ + IF (ICASE.EQ.7) THEN + * .. SNRM2TEST .. + STEMP(1) = DTRUE1(NP1) +- CALL STEST1(SNRM2TEST(N,SX,INCX),STEMP,STEMP,SFAC) ++ CALL STEST1(SNRM2TEST(N,SX,INCX),STEMP(1),STEMP,SFAC) + ELSE IF (ICASE.EQ.8) THEN + * .. SASUMTEST .. + STEMP(1) = DTRUE3(NP1) +- CALL STEST1(SASUMTEST(N,SX,INCX),STEMP,STEMP,SFAC) ++ CALL STEST1(SASUMTEST(N,SX,INCX),STEMP(1),STEMP,SFAC) + ELSE IF (ICASE.EQ.9) THEN + * .. SSCALTEST .. + CALL SSCALTEST(N,SA((INCX-1)*5+NP1),SX,INCX) +-- +2.24.1 + diff --git a/SOURCES/atlas-genparse.patch b/SOURCES/atlas-genparse.patch new file mode 100644 index 0000000..218768d --- /dev/null +++ b/SOURCES/atlas-genparse.patch @@ -0,0 +1,14 @@ +diff --git a/include/atlas_genparse.h b/include/atlas_genparse.h +index 909a38e..1e6d153 100644 +--- a/include/atlas_genparse.h ++++ b/include/atlas_genparse.h +@@ -163,7 +163,8 @@ static int GetDoubleArr(char *str, int N, double *d) + if (!str) + break; + str++; +- assert(sscanf(str, "%le", d+i) == 1); ++ if (sscanf(str, "%le", d+i) != 1) ++ break; + i++; + } + return(i); diff --git a/SOURCES/atlas-getri.patch b/SOURCES/atlas-getri.patch new file mode 100644 index 0000000..d4659a8 --- /dev/null +++ b/SOURCES/atlas-getri.patch @@ -0,0 +1,12 @@ +diff --git a/src/testing/ATL_f77getri.c b/src/testing/ATL_f77getri.c +index 2cc576c..7ff8eba 100644 +--- a/src/testing/ATL_f77getri.c ++++ b/src/testing/ATL_f77getri.c +@@ -97,7 +97,6 @@ int f77getri(const enum ATLAS_ORDER Order, const int N, TYPE *A, const int lda, + #ifdef ATL_FunkyInts + *lwork = F77lwork; + for (i=0; i < MN; i++) ipiv[i] = F77ipiv[i] + 1; +- free(F77ipiv); + #else + for (i=0; i < MN; i++) ipiv[i]++; + #endif diff --git a/SOURCES/atlas-melf.patch b/SOURCES/atlas-melf.patch new file mode 100644 index 0000000..a4fb926 --- /dev/null +++ b/SOURCES/atlas-melf.patch @@ -0,0 +1,16 @@ +diff --git a/CONFIG/src/SpewMakeInc.c b/CONFIG/src/SpewMakeInc.c +index eed259e..65d68a1 100644 +--- a/CONFIG/src/SpewMakeInc.c ++++ b/CONFIG/src/SpewMakeInc.c +@@ -764,9 +764,9 @@ int main(int nargs, char **args) + else + { + if (ptrbits == 32) +- fprintf(fpout, " -melf_i386"); ++ fprintf(fpout, " -Wl,-melf_i386"); + else if (ptrbits == 64) +- fprintf(fpout, " -melf_x86_64"); ++ fprintf(fpout, " -Wl,-melf_x86_64"); + if (OS == OSFreeBSD) + fprintf(fpout, "_fbsd"); + } diff --git a/SOURCES/atlas-shared_libraries.patch b/SOURCES/atlas-shared_libraries.patch new file mode 100644 index 0000000..3c7e9d8 --- /dev/null +++ b/SOURCES/atlas-shared_libraries.patch @@ -0,0 +1,40 @@ +From 3119c671c566761a79ac98405cb619892acde3e8 Mon Sep 17 00:00:00 2001 +From: Lukas Slebodnik +Date: Fri, 20 Sep 2013 09:26:58 +0200 +Subject: [PATCH] atlas-shared_libraries + +--- + ATLAS/makes/Make.lib | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/ATLAS/makes/Make.lib b/ATLAS/makes/Make.lib +index ab1eb9963d36678972a0a410905169aaa563dc64..27c6e316b442e09b0f46afac7940aaa11e25e45c 100644 +--- a/ATLAS/makes/Make.lib ++++ b/ATLAS/makes/Make.lib +@@ -4,6 +4,8 @@ mySRCdir = $(SRCdir)/lib + # + # override with libatlas.so only when atlas is built to one lib + # ++so_ver_major=3 ++so_ver = $(so_ver_major).10 + DYNlibs = liblapack.so libf77blas.so libcblas.so libatlas.so + PTDYNlibs = liblapack.so libptf77blas.so libptcblas.so libatlas.so + CDYNlibs = liblapack.so libcblas.so libatlas.so +@@ -116,9 +116,12 @@ LDTRY: + -rpath-link $(LIBINSTdir) \ + --whole-archive $(libas) --no-whole-archive $(LIBS) + GCCTRY: +- $(GOODGCC) -shared -o $(outso) \ +- -Wl,"-rpath-link $(LIBINSTdir)" \ ++ $(GOODGCC) -shared -o $(outso).$(so_ver) \ ++ \ ++ -Wl,-soname,"$(outso).$(so_ver_major)" \ + -Wl,--whole-archive $(libas) -Wl,--no-whole-archive $(LIBS) ++ ln -s $(outso).$(so_ver) $(outso).$(so_ver_major) ++ ln -s $(outso).$(so_ver) $(outso) + GCCTRY_norp: + $(GOODGCC) -shared -o $(outso) \ + -Wl,--whole-archive $(libas) -Wl,--no-whole-archive $(LIBS) +-- +1.8.3.1 + diff --git a/SOURCES/atlas-throttling.patch b/SOURCES/atlas-throttling.patch new file mode 100644 index 0000000..45c862e --- /dev/null +++ b/SOURCES/atlas-throttling.patch @@ -0,0 +1,12 @@ +diff -up ATLAS/CONFIG/src/config.c.zaloha ATLAS/CONFIG/src/config.c +--- ATLAS/CONFIG/src/config.c.zaloha 2012-10-25 11:29:02.495425989 +0200 ++++ ATLAS/CONFIG/src/config.c 2012-10-25 11:42:10.218216957 +0200 +@@ -711,6 +711,8 @@ int ProbePtrbits(int verb, char *targarg + + int ProbeCPUThrottle(int verb, char *targarg, enum OSTYPE OS, enum ASMDIA asmb) + { ++ return 0; /* impossible to turn off cpu throttling => ignore */ ++ /* this undermines performance of compiled library */ + int i, iret; + char *ln; + i = strlen(targarg) + 22 + 12; diff --git a/SOURCES/atlas.3.10.1-unbundle.patch b/SOURCES/atlas.3.10.1-unbundle.patch new file mode 100644 index 0000000..962a9e9 --- /dev/null +++ b/SOURCES/atlas.3.10.1-unbundle.patch @@ -0,0 +1,17 @@ +diff -up wrk/makes/Make.lib.wrk wrk/makes/Make.lib +--- wrk/makes/Make.lib.wrk 2015-01-23 21:14:46.465494411 +0100 ++++ wrk/makes/Make.lib 2015-01-23 22:48:39.632479588 +0100 +@@ -185,11 +185,11 @@ TRYALL : + # + fat_ptshared : # threaded target + $(MAKE) TRYALL outso=libtatlas.so \ +- libas="libptlapack.a libptf77blas.a libptcblas.a libatlas.a" \ ++ libas="libptlapack.a libptf77blas.a libptcblas.a libatlas.a $(SLAPACKlib)" \ + LIBINSTdir="$(LIBINSTdir)" + fat_shared : # serial target + $(MAKE) TRYALL outso=libsatlas.so \ +- libas="liblapack.a libf77blas.a libcblas.a libatlas.a" \ ++ libas="liblapack.a libf77blas.a libcblas.a libatlas.a $(SLAPACKlib)" \ + LIBINSTdir="$(LIBINSTdir)" + # + # Builds shared lib, not include fortran codes from LAPACK diff --git a/SPECS/atlas.spec b/SPECS/atlas.spec new file mode 100644 index 0000000..4929fcf --- /dev/null +++ b/SPECS/atlas.spec @@ -0,0 +1,1137 @@ +%define enable_native_atlas 0 + +Name: atlas +Version: 3.10.3 +%if "%{?enable_native_atlas}" != "0" +%define dist .native +%endif +Release: 17%{?dist} +Summary: Automatically Tuned Linear Algebra Software + +License: BSD +URL: http://math-atlas.sourceforge.net/ +Source0: http://downloads.sourceforge.net/math-atlas/%{name}%{version}.tar.bz2 +Source1: PPRO32.tgz +Source2: README.dist +#archdefs taken from debian: +Source3: POWER332.tar.bz2 +Source4: IBMz932.tar.bz2 +Source5: IBMz964.tar.bz2 +#upstream arm uses softfp abi, fedora arm uses hard +Source6: ARMv732NEON.tar.bz2 +#again, taken from debian +Source7: IBMz1264.tar.bz2 +Source8: ARMa732.tar.bz2 + +#Provided By IBM +Source9: IBMz1364VXZ.tar.bz2 +Source10: IBMz1464VXZ2.tar.bz2 +Source11: IBMz1564VXZ2.tar.bz2 + +# Properly pass -melf_* to the linker with -Wl, fixes FTBFS bug 817552 +# https://sourceforge.net/tracker/?func=detail&atid=379484&aid=3555789&group_id=23725 +Patch1: atlas-melf.patch +Patch2: atlas-throttling.patch + +#credits Lukas Slebodnik +Patch3: atlas-shared_libraries.patch + +Patch4: atlas-genparse.patch + +# Unbundle LAPACK (BZ #1181369) +Patch5: atlas.3.10.1-unbundle.patch +Patch6: atlas-gcc10.patch + + +#patches dealing with z{13,14,15}, provided by IBM +Patch7: 0001-Avoid-c99-standard-compiler.patch +Patch8: 0002-Fix-rpath-link-command-line-options.patch +Patch9: 0003-Fix-SIMD-support-on-IBM-z13.patch +Patch10: 0004-Read-L1-data-cache-size-from-sysconf-if-possible.patch +Patch11: 0005-Optimizations-for-IBM-z13.patch +Patch12: 0006-Add-IBM-z14-support.patch +Patch13: 0007-Enable-cross-compile.patch +Patch14: 0008-Add-IBM-z15-support.patch + +#Covscan +Patch101: atlas-getri.patch + +BuildRequires: make +BuildRequires: gcc-gfortran, lapack-static, gcc + +%ifarch x86_64 +Obsoletes: atlas-sse3 < 3.10.3-1 +%endif + +%ifarch %{ix86} +Obsoletes: atlas-3dnow < 3.10.3-1 +Obsoletes: atlas-sse < 3.10.3-1 +Obsoletes: atlas-sse2 < 3.10.3-1 +Obsoletes: atlas-sse3 < 3.10.3-1 +%endif + +%ifarch s390 s390x +Obsoletes: atlas-z10 < 3.10.3-11 +Obsoletes: atlas-z196 < 3.10.3-11 +%endif + + +%description +The ATLAS (Automatically Tuned Linear Algebra Software) project is an +ongoing research effort f(ocusing on applying empirical techniques in +order to provide portable performance. At present, it provides C and +Fortran77 interfaces to a portably efficient BLAS implementation, as +well as a few routines from LAPACK. + +The performance improvements in ATLAS are obtained largely via +compile-time optimizations and tend to be specific to a given hardware +configuration. In order to package ATLAS some compromises +are necessary so that good performance can be obtained on a variety +of hardware. This set of ATLAS binary packages is therefore not +necessarily optimal for any specific hardware configuration. However, +the source package can be used to compile customized ATLAS packages; +see the documentation for information. + +%package devel +Summary: Development libraries for ATLAS +Requires: %{name} = %{version}-%{release} +Obsoletes: %name-header <= %version-%release +Requires(posttrans): /usr/sbin/alternatives +Requires(postun): /usr/sbin/alternatives + +%ifarch x86_64 +Obsoletes: atlas-sse3-devel < 3.10.3-1 +%endif + +%ifarch %{ix86} +Obsoletes: atlas-3dnow-devel < 3.10.3-1 +Obsoletes: atlas-sse-devel < 3.10.3-1 +Obsoletes: atlas-sse2-devel < 3.10.3-1 +Obsoletes: atlas-sse3-devel < 3.10.3-1 +%endif + +%ifarch s390 s390x +Obsoletes: atlas-z10-devel < 3.10.3-11 +Obsoletes: atlas-z196-devel < 3.10.3-11 +%endif + +%description devel +This package contains headers for development with ATLAS +(Automatically Tuned Linear Algebra Software). + +%package static +Summary: Static libraries for ATLAS +Requires: %{name}-devel = %{version}-%{release} +Requires(posttrans): /usr/sbin/alternatives +Requires(postun): /usr/sbin/alternatives + +%ifarch x86_64 +Obsoletes: atlas-sse3-static < 3.10.3-1 +%endif + +%ifarch %{ix86} +Obsoletes: atlas-3dnow-static < 3.10.3-1 +Obsoletes: atlas-sse-static < 3.10.3-1 +Obsoletes: atlas-sse2-static < 3.10.3-1 +Obsoletes: atlas-sse3-static < 3.10.3-1 +%endif + +%ifarch s390 s390x +Obsoletes: atlas-z10-static < 3.10.3-11 +Obsoletes: atlas-z196-static < 3.10.3-11 +%endif + +%description static +This package contains static version of ATLAS (Automatically Tuned +Linear Algebra Software). + + +%define types base + +%if "%{?enable_native_atlas}" == "0" +############## Subpackages for architecture extensions ################# +# +%ifarch x86_64 +%define types base corei2 + +%package corei2-static +Summary: ATLAS libraries for Corei2 (Ivy/Sandy bridge) CPUs + +%description corei2-static +This package contains the ATLAS (Automatically Tuned Linear Algebra +Software) static libraries compiled with optimizations for the Corei2 (Ivy/Sandy bridge) +CPUs. The base ATLAS builds for the x86_64 architecture are made for the hammer64 CPUs. + +%package corei2 +Summary: ATLAS libraries for Corei2 (Ivy/Sandy bridge) CPUs + +%description corei2 +This package contains the ATLAS (Automatically Tuned Linear Algebra +Software) libraries compiled with optimizations for the Corei2 (Ivy/Sandy bridge) +CPUs. The base ATLAS builds for the x86_64 architecture are made for the hammer64 CPUs. + +%package corei2-devel +Summary: Development libraries for ATLAS for Corei2 (Ivy/Sandy bridge) CPUs +Requires: %{name}-corei2 = %{version}-%{release} +Obsoletes: %name-header <= %version-%release +Requires(posttrans): /usr/sbin/alternatives +Requires(postun): /usr/sbin/alternatives + +%description corei2-devel +This package contains shared and static versions of the ATLAS +(Automatically Tuned Linear Algebra Software) libraries compiled with +optimizations for the corei2 (Ivy/Sandy bridge) CPUs. +%endif + +%ifarch %{ix86} +%define types base + +%endif + +%ifarch s390 s390x +%define types base z14 z15 + +%package z14 +Summary: ATLAS libraries for z14 +Group: System Environment/Libraries + +%description z14 +This package contains ATLAS (Automatically Tuned Linear Algebra Software) +shared libraries compiled with optimizations for the z14 CPUs. + +%package z14-devel +Summary: Development libraries for ATLAS for z14 +Group: Development/Libraries +Requires: %{name}-z14 = %{version}-%{release} +Obsoletes: %name-header <= %version-%release +Requires(posttrans): chkconfig +Requires(postun): chkconfig + +%description z14-devel +This package contains shared and static versions of the ATLAS +(Automatically Tuned Linear Algebra Software) libraries compiled with +optimizations for the z14 CPUs. + +%package z14-static +Summary: Static libraries for ATLAS for z14 +Group: Development/Libraries +Requires: %{name}-z14-devel = %{version}-%{release} +Requires(posttrans): chkconfig +Requires(postun): chkconfig + +%description z14-static +This package contains the ATLAS (Automatically Tuned Linear Algebra +Software) static libraries compiled with optimizations for the z14 +CPUs. + + +%package z15 +Summary: ATLAS libraries for z15 +Group: System Environment/Libraries + +%description z15 +This package contains ATLAS (Automatically Tuned Linear Algebra Software) +shared libraries compiled with optimizations for the z15 CPUs. + +%package z15-devel +Summary: Development libraries for ATLAS for z15 +Group: Development/Libraries +Requires: %{name}-z15 = %{version}-%{release} +Obsoletes: %name-header <= %version-%release +Requires(posttrans): chkconfig +Requires(postun): chkconfig + +%description z15-devel +This package contains shared and static versions of the ATLAS +(Automatically Tuned Linear Algebra Software) libraries compiled with +optimizations for the z15 CPUs. + +%package z15-static +Summary: Static libraries for ATLAS for z15 +Group: Development/Libraries +Requires: %{name}-z15-devel = %{version}-%{release} +Requires(posttrans): chkconfig +Requires(postun): chkconfig + +%description z15-static +This package contains the ATLAS (Automatically Tuned Linear Algebra +Software) static libraries compiled with optimizations for the z15 +CPUs. +%endif + + +%ifarch ppc64 +%define types base power7 power8 + +%package power8 +Summary: ATLAS libraries for Power 8 + +%description power8 +This package contains ATLAS (Automatically Tuned Linear Algebra Software) +shared libraries compiled with optimizations for the Power 8 CPUs. +The base ATLAS builds for the ppc64 architecture are made for Power 5 CPUs. + +%package power8-devel +Summary: Development libraries for ATLAS for Power 8 +Requires: %{name}-power8 = %{version}-%{release} +Obsoletes: %name-header <= %version-%release +Requires(posttrans): /usr/sbin/alternatives +Requires(postun): /usr/sbin/alternatives + +%description power8-devel +This package contains shared and static versions of the ATLAS +(Automatically Tuned Linear Algebra Software) libraries compiled with +optimizations for the Power 8 CPUs. + +%package power8-static +Summary: Static libraries for ATLAS for Power 8 +Requires: %{name}-power8-devel = %{version}-%{release} +Requires(posttrans): /usr/sbin/alternatives +Requires(postun): /usr/sbin/alternatives + +%description power8-static +This package contains the ATLAS (Automatically Tuned Linear Algebra +Software) static libraries compiled with optimizations for the Power 8 +CPUs. The base ATLAS builds for the ppc64 architecture are made for the Power 5 CPUs. + +%package power7 +Summary: ATLAS libraries for Power 7 + +%description power7 +This package contains ATLAS (Automatically Tuned Linear Algebra Software) +shared libraries compiled with optimizations for the Power 7 CPUs. +The base ATLAS builds for the ppc64 architecture are made for Power 5 CPUs. + +%package power7-devel +Summary: Development libraries for ATLAS for Power 7 +Requires: %{name}-power7 = %{version}-%{release} +Obsoletes: %name-header <= %version-%release +Requires(posttrans): /usr/sbin/alternatives +Requires(postun): /usr/sbin/alternatives + +%description power7-devel +This package contains shared and static versions of the ATLAS +(Automatically Tuned Linear Algebra Software) libraries compiled with +optimizations for the Power 7 CPUs. + +%package power7-static +Summary: Static libraries for ATLAS for Power 7 +Requires: %{name}-power7-devel = %{version}-%{release} +Requires(posttrans): /usr/sbin/alternatives +Requires(postun): /usr/sbin/alternatives + +%description power7-static +This package contains the ATLAS (Automatically Tuned Linear Algebra +Software) static libraries compiled with optimizations for the Power 7 +CPUs. The base ATLAS builds for the ppc64 architecture are made for the Power 5 CPUs. + +%endif +#end of enable_native_atlas if +%endif + +%prep +#cat /proc/cpuinfo +%setup -q -n ATLAS + + +%patch1 -p1 +%patch2 -p1 +%patch3 -p2 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 + +%patch7 -p1 +%patch8 -p1 +%patch10 -p1 + +%ifarch s390x s390 +%patch9 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 +%patch14 -p1 +%endif + +%patch101 -p1 + +cp %{SOURCE1} CONFIG/ARCHS/ +cp %{SOURCE2} doc +cp %{SOURCE3} CONFIG/ARCHS/ +cp %{SOURCE4} CONFIG/ARCHS/ +cp %{SOURCE5} CONFIG/ARCHS/ +cp %{SOURCE6} CONFIG/ARCHS/ +cp %{SOURCE7} CONFIG/ARCHS/ +cp %{SOURCE8} CONFIG/ARCHS/ +cp %{SOURCE9} CONFIG/ARCHS/ +cp %{SOURCE10} CONFIG/ARCHS/ +cp %{SOURCE11} CONFIG/ARCHS/ + +%ifarch %{arm} +sed -i -e 's,-mfloat-abi=softfp,-mfloat-abi=hard,' CONFIG/src/atlcomp.txt +%endif + +# Generate lapack library +mkdir lapacklib +cd lapacklib +ar x %{_libdir}/liblapack_pic.a +# Remove functions that have ATLAS implementations +rm -f cgelqf.o cgels.o cgeqlf.o cgeqrf.o cgerqf.o cgesv.o cgetrf.o cgetri.o cgetrs.o clarfb.o clarft.o clauum.o cposv.o cpotrf.o cpotri.o cpotrs.o ctrtri.o dgelqf.o dgels.o dgeqlf.o dgeqrf.o dgerqf.o dgesv.o dgetrf.o dgetri.o dgetrs.o dlamch.o dlarfb.o dlarft.o dlauum.o dposv.o dpotrf.o dpotri.o dpotrs.o dtrtri.o ieeeck.o ilaenv.o lsame.o sgelqf.o sgels.o sgeqlf.o sgeqrf.o sgerqf.o sgesv.o sgetrf.o sgetri.o sgetrs.o slamch.o slarfb.o slarft.o slauum.o sposv.o spotrf.o spotri.o spotrs.o strtri.o xerbla.o zgelqf.o zgels.o zgeqlf.o zgeqrf.o zgerqf.o zgesv.o zgetrf.o zgetri.o zgetrs.o zlarfb.o zlarft.o zlauum.o zposv.o zpotrf.o zpotri.o zpotrs.o ztrtri.o +# Create new library +ar rcs ../liblapack_pic_pruned.a *.o +cd .. + + +%build +p=$(pwd) +%undefine _strict_symbol_defs_build +%ifarch %{arm} +%global mode %{nil} +%else +%global mode -b %{__isa_bits} +%endif + +%define arg_options %{nil} +%define flags %{nil} +%define threads_option "-t 2" + +#Target architectures for the 'base' versions +%ifarch s390x +%define flags %{nil} +%define base_options "-A IBMz12 -V 1" +#%define base_options "-A IBMz13 -V 8 -Si archdef 2" +%endif + +%ifarch x86_64 +%define flags %{nil} +%define base_options "-A HAMMER -V 896" +%endif + +%ifarch %ix86 +%define flags %{nil} +%define base_options "-A PIII -V 512" +%endif + +%ifarch ppc +%define flags %{nil} +%define base_options "-A POWER5 -V 1" +%endif + +%ifarch ppc64 +%define flags %{nil} +%define base_options "-A POWER5 -V 1" +%endif + +%ifarch ppc64le +%define flags %{nil} +%define base_options "-A POWER8 -V 1" +%endif + +%ifarch %{arm} +%define flags "-DATL_ARM_HARDFP=1" +%define base_options "-A ARMa7 -V 1" +%endif + +%ifarch aarch64 +%define flags %{nil} +%define base_options "-A ARM64a53 -V 1" +%endif + +%if "%{?enable_native_atlas}" != "0" +%define threads_option %{nil} +%define base_options %{nil} +%define flags %{nil} +%endif + +for type in %{types}; do + if [ "$type" = "base" ]; then + libname=atlas + arg_options=%{base_options} + thread_options=%{threads_option} + %define pr_base %(echo $((%{__isa_bits}+0))) + else + libname=atlas-${type} + if [ "$type" = "corei2" ]; then + thread_options="-t 4" + arg_options="-A Corei2 -V 896" + %define pr_corei2 %(echo $((%{__isa_bits}+2))) + elif [ "$type" = "corei1" ]; then + arg_options="-A Corei1 -V 896" + %define pr_corei1 %(echo $((%{__isa_bits}+2))) + elif [ "$type" = "z14" ]; then + thread_options="-t 4" + arg_options="-A IBMz14 -V 4 -Si archdef 2" + %define pr_z14 %(echo $((%{__isa_bits}+2))) + elif [ "$type" = "z15" ]; then + thread_options="-t 4" + arg_options="-A IBMz15 -V 4 -Si archdef 2" + %define pr_z15 %(echo $((%{__isa_bits}+4))) + elif [ "$type" = "power7" ]; then + thread_options="-t 4" + arg_options="-A POWER7 -V 1" + %define pr_power7 %(echo $((%{__isa_bits}+2))) + elif [ "$type" = "power8" ]; then + thread_options="-t 4" + arg_options="-A POWER8 -V 1" + %define pr_power8 %(echo $((%{__isa_bits}+4))) + fi + fi + mkdir -p %{_arch}_${type} + pushd %{_arch}_${type} + ../configure %{mode} $thread_options $arg_options -D c -DWALL -F xc ' ' -Fa alg '%{flags} -D_FORTIFY_SOURCE=2 -g -Wa,--noexecstack,--generate-missing-build-notes=yes -fstack-protector-strong -fstack-clash-protection -fPIC -fplugin=annobin -Wl,-z,now'\ + --prefix=%{buildroot}%{_prefix} \ + --incdir=%{buildroot}%{_includedir} \ + --libdir=%{buildroot}%{_libdir}/${libname} + #--with-netlib-lapack-tarfile=%{SOURCE10} + + #matches both SLAPACK and SSLAPACK + sed -i "s#SLAPACKlib.*#SLAPACKlib = ${p}/liblapack_pic_pruned.a#" Make.inc + cat Make.inc +%if "%{?enable_native_atlas}" == "0" + +%ifarch ppc64 + #Use big endian + sed -i 's#ARCH = POWER564LE#ARCH = POWER564#' Make.inc + sed -i 's#ARCH = POWER764LE#ARCH = POWER764#' Make.inc + sed -i 's#ARCH = POWER864LE#ARCH = POWER864#' Make.inc +%endif + +%endif + + make build + cd lib + make shared + make ptshared + popd +done + +%install +for type in %{types}; do + pushd %{_arch}_${type} + make DESTDIR=%{buildroot} install + mv %{buildroot}%{_includedir}/atlas %{buildroot}%{_includedir}/atlas-%{_arch}-${type} + if [ "$type" = "base" ]; then + cp -pr lib/*.so* %{buildroot}%{_libdir}/atlas/ + rm -f %{buildroot}%{_libdir}/atlas/*.a + cp -pr lib/libcblas.a lib/libatlas.a lib/libf77blas.a lib/liblapack.a %{buildroot}%{_libdir}/atlas/ + else + cp -pr lib/*.so* %{buildroot}%{_libdir}/atlas-${type}/ + rm -f %{buildroot}%{_libdir}/atlas-${type}/*.a + cp -pr lib/libcblas.a lib/libatlas.a lib/libf77blas.a lib/liblapack.a %{buildroot}%{_libdir}/atlas-${type}/ + fi + popd + + mkdir -p %{buildroot}/etc/ld.so.conf.d + if [ "$type" = "base" ]; then + echo "%{_libdir}/atlas" \ + > %{buildroot}/etc/ld.so.conf.d/atlas-%{_arch}.conf + else + echo "%{_libdir}/atlas-${type}" \ + > %{buildroot}/etc/ld.so.conf.d/atlas-%{_arch}-${type}.conf + fi +done + +#create pkgconfig file +mkdir -p $RPM_BUILD_ROOT%{_libdir}/pkgconfig/ +cat > $RPM_BUILD_ROOT%{_libdir}/pkgconfig/atlas.pc << DATA +Name: %{name} +Version: %{version} +Description: %{summary} +Cflags: -I%{_includedir}/atlas/ +Libs: -L%{_libdir}/atlas/ -lsatlas +DATA + + +mkdir -p %{buildroot}%{_includedir}/atlas + + +%check +for type in %{types}; do + if [ "$type" = "z14" ] || [ "$type" = "z15" ]; then + # skip the tests (may fail due to illegal instructions). + echo "Skipping tests for the $type subpackage" + else + pushd %{_arch}_${type} + make check ptcheck + popd + fi +done +#%endif + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%posttrans devel +/usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ + %{_includedir}/atlas-%{_arch}-base %{pr_base} + +%postun devel +if [ $1 -ge 0 ] ; then +/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-base +fi + +%if "%{?enable_native_atlas}" == "0" +%ifarch x86_64 + +%post -n atlas-corei2 -p /sbin/ldconfig + +%postun -n atlas-corei2 -p /sbin/ldconfig + +%posttrans corei2-devel + /usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ + %{_includedir}/atlas-%{_arch}-corei2 %{pr_corei2} + +%postun corei2-devel +if [ $1 -ge 0 ] ; then + /usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-corei2 +fi + +%endif + +%ifarch %{ix86} +# No arch specific packages +%endif + +%ifarch s390 s390x + +%post -n atlas-z14 -p /sbin/ldconfig + +%postun -n atlas-z14 -p /sbin/ldconfig + +%posttrans z14-devel +/usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ + %{_includedir}/atlas-%{_arch}-z14 %{pr_z14} + +%postun z14-devel +if [ $1 -ge 0 ] ; then + /usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-z14 +fi + +%post -n atlas-z15 -p /sbin/ldconfig + +%postun -n atlas-z15 -p /sbin/ldconfig + +%posttrans z15-devel +/usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ + %{_includedir}/atlas-%{_arch}-z15 %{pr_z15} + +%postun z15-devel +if [ $1 -ge 0 ] ; then + /usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-z15 +fi + +%endif + +%ifarch ppc64 + +%post -n atlas-power7 -p /sbin/ldconfig + +%postun -n atlas-power7 -p /sbin/ldconfig + +%posttrans power7-devel + /usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ + %{_includedir}/atlas-%{_arch}-power7 %{pr_power7} + +%postun power7-devel +if [ $1 -ge 0 ] ; then + /usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-power7 +fi + +%post -n atlas-ppc8 -p /sbin/ldconfig + +%postun -n atlas-ppc8 -p /sbin/ldconfig + +%posttrans ppc8-devel + /usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ + %{_includedir}/atlas-%{_arch}-ppc8 %{pr_ppc8} + +%postun ppc8-devel +if [ $1 -ge 0 ] ; then + /usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-ppc8 +fi + +%endif +#enable_native_atlas +%endif +%files +%doc doc/README.dist +%dir %{_libdir}/atlas +%{_libdir}/atlas/*.so.* +%config(noreplace) /etc/ld.so.conf.d/atlas-%{_arch}.conf + +%files devel +%doc doc +%{_libdir}/atlas/*.so +%{_includedir}/atlas-%{_arch}-base/ +%{_includedir}/*.h +%ghost %{_includedir}/atlas +%{_libdir}/pkgconfig/atlas.pc + +%files static +%{_libdir}/atlas/*.a + +%if "%{?enable_native_atlas}" == "0" + +%ifarch x86_64 + +%files corei2 +%doc doc/README.dist +%dir %{_libdir}/atlas-corei2 +%{_libdir}/atlas-corei2/*.so.* +%config(noreplace) /etc/ld.so.conf.d/atlas-%{_arch}-corei2.conf + +%files corei2-devel +%doc doc +%{_libdir}/atlas-corei2/*.so +%{_includedir}/atlas-%{_arch}-corei2/ +%{_includedir}/*.h +%ghost %{_includedir}/atlas + +%files corei2-static +%{_libdir}/atlas-corei2/*.a +%endif + +%ifarch ppc64 + + +%files power8 +%doc doc/README.dist +%dir %{_libdir}/atlas-power8 +%{_libdir}/atlas-power8/*.so.* +%config(noreplace) /etc/ld.so.conf.d/atlas-%{_arch}-power8.conf + +%files power8-devel +%doc doc +%{_libdir}/atlas-power8/*.so +%{_includedir}/atlas-%{_arch}-power8/ +%{_includedir}/*.h +%ghost %{_includedir}/atlas + +%files power8-static +%{_libdir}/atlas-power8/*.a + +%files power7 +%doc doc/README.dist +%dir %{_libdir}/atlas-power7 +%{_libdir}/atlas-power7/*.so.* +%config(noreplace) /etc/ld.so.conf.d/atlas-%{_arch}-power7.conf + +%files power7-devel +%doc doc +%{_libdir}/atlas-power7/*.so +%{_includedir}/atlas-%{_arch}-power7/ +%{_includedir}/*.h +%ghost %{_includedir}/atlas + +%files power7-static +%{_libdir}/atlas-power7/*.a +%endif + +%ifarch s390 s390x + +%files z14 +%doc doc/README.dist +%dir %{_libdir}/atlas-z14 +%{_libdir}/atlas-z14/*.so.* +%config(noreplace) /etc/ld.so.conf.d/atlas-%{_arch}-z14.conf + +%files z14-devel +%doc doc +%{_libdir}/atlas-z14/*.so +%{_includedir}/atlas-%{_arch}-z14/ +%{_includedir}/*.h +%ghost %{_includedir}/atlas + +%files z14-static +%{_libdir}/atlas-z14/*.a + + +%files z15 +%doc doc/README.dist +%dir %{_libdir}/atlas-z15 +%{_libdir}/atlas-z15/*.so.* +%config(noreplace) /etc/ld.so.conf.d/atlas-%{_arch}-z15.conf + +%files z15-devel +%doc doc +%{_libdir}/atlas-z15/*.so +%{_includedir}/atlas-%{_arch}-z15/ +%{_includedir}/*.h +%ghost %{_includedir}/atlas + +%files z15-static +%{_libdir}/atlas-z15/*.a + +%endif + + +#enable_native_atlas if +%endif + +%changelog +* Mon Aug 09 2021 Mohan Boddu - 3.10.3-17 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Thu Apr 15 2021 Mohan Boddu - 3.10.3-16 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Mon Feb 22 2021 Jakub Martisko - 3.10.3-15 +- Remove unused scriptlets + +* Mon Feb 22 2021 Jakub Martisko - 3.10.3-14 +- Fix the messed scriptlets +Resolves: #1929845 + +* Tue Jan 26 2021 Fedora Release Engineering - 3.10.3-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Thu Aug 27 2020 Jakub Martisko - 3.10.3.13 +- Sync with rhel 8.3 + cleanup +- Add new subpackages - z{14,15} +- Unlike in rhel8, the base subpackage still needs to be build for z12. +- Covscan related bugfixes +- Spec and git cleanup (remove unused patches/sources) + +* Mon Jul 27 2020 Fedora Release Engineering - 3.10.3-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Thu Feb 13 2020 Jakub Martisko - 3.10.3-11 +- Drop IBM z10 and z196 subpackages +- s390 is now optimized for z12 +Related: #1780286 + +* Mon Jan 27 2020 Jakub Martisko - 3.10.3-10 +- Fix compatibility with gcc 10 +- Sync compiler/linker flags with RHEL + +* Wed Jul 24 2019 Fedora Release Engineering - 3.10.3-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu Jan 31 2019 Fedora Release Engineering - 3.10.3-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Sun Oct 14 2018 Peter Robinson 3.10.3-7 +- Update requires for alternatives + +* Thu Jul 12 2018 Fedora Release Engineering - 3.10.3-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Apr 11 2018 Jakub Martisko - 3.10.3-5 +- Pass RPM_LD_FLAGS to linker + +* Thu Mar 01 2018 Jakub Martisko - 3.10.3-4 +- Add gcc to buildrequires + +* Wed Feb 07 2018 Fedora Release Engineering - 3.10.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Jan 30 2018 Björn Esser - 3.10.3-2 +- Rebuilt for GCC8 + +* Thu Aug 17 2017 Jakub Martisko - 3.10.3-1 +- Update to new 3.10.3 stable version. +- Remove ppc64/ppc64le related patches. +- All packages now use -A option to specify the target CPU/Architecture instead of +sed substitutions and auto detection. The packages should now be less dependant on the +builder machine used. +- Base package for each architecture should now be configured to be compatible with the +most basic machine of given type. +- In addittion to base package, added some optimized packages for more advanced CPUs for +most architectures. +- Dropped sse2/sse3 subpackages for ix86 + +* Wed Aug 16 2017 Tom Callaway - 3.10.2-20 +- rebuild again for fixed lapack + +* Wed Feb 03 2016 Fedora Release Engineering - 3.10.2-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Sun Nov 29 2015 Zbigniew Jędrzejewski-Szmek - 3.10.2-11 +- Rebuild for updated lapack + +* Thu Nov 26 2015 Than Ngo 3.10.2-10 +- backport upstream patch for power8 support + +* Fri Nov 13 2015 Than Ngo 3.10.2-9 +- add correct assembler option for ppc64 + +* Wed Nov 04 2015 Than Ngo - 3.10.2-8 +- add correct machine type for ppc64 -> fix build failure on ppc64 + +* Wed Oct 28 2015 Susi Lehtola - 3.10.2-7 +- Drop bundled(lapack) which was already fixed in atlas-3.10.1-18. + +* Thu Jul 09 2015 Than Ngo 3.10.2-6 +- fix ppc64le patch + +* Wed Jun 17 2015 Fedora Release Engineering - 3.10.2-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Wed Jun 10 2015 Marcin Juszkiewicz - 3.10.2-4 +- Refreshed AArch64 patch + +* Fri Jun 05 2015 Dan Horák - 3.10.2-3 +- drop upstreamed s390 patch + +* Wed May 20 2015 Frantisek Kluknavsky - 3.10.2-2 +- include all single-threaded wrapper libraries in -static subpackage +- bz#1222079 + +* Thu May 14 2015 Orion Poplawski - 3.10.2-1 +- Update to 3.10.2 (bug #1118596) +- Autodetect arm arch +- Add arch_option for ppc64le + +* Thu Mar 05 2015 Frantisek Kluknavsky - 3.10.1-22 +- lapack bundled again, mark this. + +* Sat Feb 07 2015 Susi Lehtola - 3.10.1-21 +- Devel packages don't need to require lapack-devel anymore. + +* Fri Jan 30 2015 Susi Lehtola - 3.10.1-20 +- Link statically to system LAPACK as in earlier versions of Fedora and as + in OpenBLAS (BZ #1181369). + +* Wed Jan 28 2015 Frantisek Kluknavsky - 3.10.1-19 +- updated chkconfig and dependencies of atlas-devel after unbundling + +* Fri Jan 23 2015 Frantisek Kluknavsky - 3.10.1-18 +- unbundled lapack (only a few modified routines shipped with atlas sources are supposed to stay) + +* Thu Oct 30 2014 Jaromir Capik - 3.10.1-17 +- patching for Power8 to pass performance tunings and tests on P8 builders + +* Fri Oct 24 2014 Orion Poplawski - 3.10.1-16 +- Fix alternatives install + +* Thu Oct 23 2014 Frantisek Kluknavsky - 3.10.1-15 +- added pkgconfig file + +* Fri Aug 15 2014 Fedora Release Engineering - 3.10.1-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 3.10.1-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Mon Feb 24 2014 Peter Robinson 3.10.1-12 +- Don't fail build on make check on aarch64 due to issues with tests + +* Sun Feb 16 2014 Marcin Juszkiewicz - 3.10.1-11 +- Unbreak AArch64 build. +- ARMv8 is different from ARMv7 so should not be treated as such. Otherwise + atlas tries to do some crazy ARMv764 build and fail. + +* Wed Nov 20 2013 Frantisek Kluknavsky - 3.10.1-10 +- updated lapack to 3.5.0 + +* Wed Nov 13 2013 Frantisek Kluknavsky - 3.10.1-9 +- updated subpackage description + +* Tue Nov 05 2013 Frantisek Kluknavsky - 3.10.1-8 +- patch for aarch64 from https://bugzilla.redhat.com/attachment.cgi?id=755555 + +* Wed Oct 16 2013 Frantisek Kluknavsky - 3.10.1-7 +- Provides: bundled(lapack) + +* Thu Oct 10 2013 Frantisek Kluknavsky - 3.10.1-6 +- make check on arm enabled - seems to work + +* Wed Oct 2 2013 Orion Poplawski - 3.10.1-5 +- Add -DATL_ARM_HARDFP=1 for arm build +- Rework how arm flags are set + +* Mon Sep 30 2013 Frantisek Kluknavsky - 3.10.1-4 +- disable tests on arm to allow update for x86 + +* Tue Sep 24 2013 Frantisek Kluknavsky - 3.10.1-3 +- disable affinity to prevent crash on systems with fewer cpus + +* Mon Sep 23 2013 Orion Poplawski - 3.10.1-2 +- Add %%check section + +* Fri Sep 20 2013 Frantisek Kluknavsky - 3.10.1-1 +- Rebase to 3.10.1 +- Dropped x86_64-SSE2, ix86-SSE1, ix86-3DNow, z10, z196 (uncompilable). +- Modified incompatible patches. +- Added armv7neon support, modified archdef from softfp abi to hard abi. +- Modified Make.lib to include build-id, soname, versioned library name and symlinks. +- Now builds monolithic libsatlas (serial) and libtatlas (threaded) + libraries with lapack and blas included. +- Lapack source tarball needed instead of static library. +- Disabled cpu throttling detection again (sorry, could not work on atlas + otherwise, feel free to enable yet again - atlas-throttling.patch). +- Removed mentions of "Fedora" to promote redistribution. +- Modified parts of atlas.spec sometimes left in place, work still in progress, + cleanup needed. + + +* Sat Aug 03 2013 Fedora Release Engineering - 3.8.4-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Sun Jan 27 2013 Peter Robinson 3.8.4-8 +- Rebuild for ARM glibc/binutils issues + +* Fri Sep 07 2012 Orion Poplawski - 3.8.4-7 +- Rebuild with lapack 3.4.1 + +* Thu Aug 09 2012 Orion Poplawski - 3.8.4-6 +- Add patch to properly pass -melf_* to the linker with -Wl (bug 817552) + +* Wed Jul 18 2012 Fedora Release Engineering - 3.8.4-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Thu Jan 12 2012 Fedora Release Engineering - 3.8.4-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Thu Sep 01 2011 Deji Akingunola - 3.8.4-3 +- Apply patch to enable arm build (Patch provided by Jitesh Shah ) +- Stop turning off throttle checking, upstream frown at it (seems O.K. for Koji) + +* Mon Jun 20 2011 Dan Horák - 3.8.4-2 +- Use -march=z10 for z196 optimised build because the builder is a z10 + (Christian Bornträger) + +* Tue Jun 14 2011 Deji Akingunola - 3.8.4-1 +- Update to 3.8.4 +- Build the default package for SSE2 and add a SSE3 subpackage on x86_64 +- Apply patch (and arch defs.) to build on s390 and s390x (Dan Horák) +- Fix-up build on s390 and s390x (Christian Bornträger) + +* Mon Feb 07 2011 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Mon Jul 26 2010 Deji Akingunola - 3.8.3-18 +- Create a subpackage for SSE2 on x86_64 + +* Sat Jul 17 2010 Dan Horák - 3.8.3-17 +- rebuild against fixed lapack libraries + +* Thu Jul 15 2010 Dan Horák - 3.8.3-16 +- fix build on s390 (patch by Karsten Hopp) + +* Wed Feb 10 2010 Deji Akingunola - 3.8.3-15 +- Disable the problematic sparc patch +- Change lapack-devel BR to lapack-static, where liblapack_pic.a now resides. + +* Wed Feb 03 2010 Dennis Gilmore - 3.8.3-14 +- fix sparc build + +* Fri Jan 29 2010 Deji Akingunola - 3.8.3-13 +- Remove static libraries. +- Fix typo in SSE3 subpackage's summary. + +* Sat Oct 24 2009 Deji Akingunola - 3.8.3-12 +- Use alternatives to workaround multilib conflicts (BZ#508565). + +* Tue Sep 29 2009 Deji Akingunola - 3.8.3-11 +- Obsolete the -header subpackage properly. + +* Sat Sep 26 2009 Deji Akingunola - 3.8.3-10 +- Use the new arch. default for Pentium PRO (Fedora bug #510498) +- (Re-)Introduce 3dNow subpackage + +* Sun Sep 6 2009 Alex Lancaster - 3.8.3-9 +- Rebuild against fixed lapack (see #520518) + +* Thu Aug 13 2009 Deji Akingunola - 3.8.3-8 +- Revert the last change, it doesn't solve the problem. + +* Tue Aug 04 2009 Deji Akingunola - 3.8.3-7 +- Create a -header subpackage to avoid multilib conflicts (BZ#508565). + +* Tue Aug 04 2009 Deji Akingunola - 3.8.3-6 +- Add '-g' to build flag to allow proper genration of debuginfo subpackages (Fedora bug #509813) +- Build for F12 + +* Fri Jul 24 2009 Fedora Release Engineering - 3.8.3-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Sat May 02 2009 Deji Akingunola - 3.8.3-4 +- Use the right -msse* option for the -sse* subpackages (Fedora bug #498715) + +* Tue Apr 21 2009 Karsten Hopp 3.8.3-3.1 +- add s390x to 64 bit archs + +* Fri Feb 27 2009 Deji Akingunola - 3.8.3-3 +- Rebuild + +* Mon Feb 23 2009 Fedora Release Engineering - 3.8.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Sun Feb 22 2009 Deji Akingunola - 3.8.3-1 +- Update to version 3.8.3 + +* Sun Dec 21 2008 Deji Akingunola - 3.8.2-5 +- Link in appropriate libs when creating shared libs, reported by Orcan 'oget' Ogetbil (BZ#475411) + +* Tue Dec 16 2008 Deji Akingunola - 3.8.2-4 +- Don't symlink the atlas libdir on i386, cause upgrade issue (BZ#476787) +- Fix options passed to gcc when making shared libs + +* Tue Dec 16 2008 Deji Akingunola - 3.8.2-3 +- Use 'gcc -shared' to build shared libs instead of stock 'ld' + +* Sat Dec 13 2008 Deji Akingunola - 3.8.2-2 +- Properly obsolete/provide older subpackages that are no longer packaged. + +* Mon Sep 01 2008 Deji Akingunola - 3.8.2-1 +- Upgrade to ver 3.8.2 with refined build procedures. + +* Thu Feb 28 2008 Quentin Spencer 3.6.0-15 +- Disable altivec package--it is causing illegal instructions during build. + +* Thu Feb 28 2008 Quentin Spencer 3.6.0-14 +- Enable compilation on alpha (bug 426086). +- Patch for compilation on ia64 (bug 432744). + +* Tue Feb 19 2008 Fedora Release Engineering - 3.6.0-13 +- Autorebuild for GCC 4.3 + +* Mon Jun 4 2007 Orion Poplawski 3.6.0-12 +- Rebuild for ppc64 + +* Fri Sep 8 2006 Quentin Spencer 3.6.0-11 +- Rebuild for FC6. +- Remove outdated comments from spec file. + +* Mon Feb 13 2006 Quentin Spencer 3.6.0-10 +- Rebuild for Fedora Extras 5. +- Add --noexecstack to compilation of assembly kernels. These were + previously marked executable, which caused problems with selinux. + +* Mon Dec 19 2005 Quentin Spencer 3.6.0-9 +- Rebuild for gcc 4.1. + +* Mon Oct 10 2005 Quentin Spencer 3.6.0-8 +- Make all devel subpackages depend on their non-devel counterparts. +- Add /etc/ld.so.conf.d files for -sse and -3dnow, because they don't + seem to get picked up automatically. + +* Wed Oct 05 2005 Quentin Spencer 3.6.0-7 +- Forgot to add the new patch to sources. + +* Tue Oct 04 2005 Quentin Spencer 3.6.0-6 +- Use new Debian patch, and enable shared libs (they previously failed + to build on gcc 4). +- Minor updates to description and README.Fedora file. +- Fix buildroot name to match FE preferred form. +- Fixes for custom optimized builds. +- Add dist tag. + +* Wed Sep 28 2005 Quentin Spencer 3.6.0-5 +- fix files lists. + +* Mon Sep 26 2005 Quentin Spencer 3.6.0-4 +- generate library symlinks earlier for the benefit of later linking steps. + +* Wed Sep 14 2005 Quentin Spencer 3.6.0-3 +- Change lapack dependency to lapack-devel, and use lapack_pic.a for + building liblapack.so. + +* Wed Sep 14 2005 Quentin Spencer 3.6.0-2 +- Add "bit" macro to correctly build on x86_64. + +* Tue Aug 16 2005 Quentin Spencer 3.6.0-1 +- Initial version.