[atlas/3.10.0-rc1] s390 patch partially accepted upstream

Frantisek Kluknavsky fkluknav at fedoraproject.org
Thu Mar 14 11:44:38 UTC 2013


commit d5dd440d85497fd05792370dec2830198ce38b4a
Author: Frantisek Kluknavsky <fkluknav at redhat.com>
Date:   Wed Mar 13 14:23:57 2013 +0100

    s390 patch partially accepted upstream

 atlas-s390port.patch |  258 +-------------------------------------------------
 atlas.spec           |    5 +-
 2 files changed, 5 insertions(+), 258 deletions(-)
---
diff --git a/atlas-s390port.patch b/atlas-s390port.patch
index 21503cf..b1d2507 100644
--- a/atlas-s390port.patch
+++ b/atlas-s390port.patch
@@ -1,234 +1,7 @@
 ---
- CONFIG/include/atlconf.h            |   18 +++++++-----
- CONFIG/src/Makefile                 |    5 +++
- CONFIG/src/SpewMakeInc.c            |    5 +++
- CONFIG/src/atlcomp.txt              |   50 ++++++++++++++++++++++++++++++++++++
- CONFIG/src/atlconf_misc.c           |    2 +
- CONFIG/src/backend/Make.ext         |    2 +
- CONFIG/src/backend/archinfo_linux.c |   12 ++++++++
  CONFIG/src/backend/probe_gas_s390.S |   13 +++++++++
- CONFIG/src/probe_comp.c             |    2 +
- include/atlas_prefetch.h            |    6 ++++
  10 files changed, 108 insertions(+), 7 deletions(-)
 
-Index: b/CONFIG/include/atlconf.h
-===================================================================
---- a/CONFIG/include/atlconf.h
-+++ b/CONFIG/include/atlconf.h
-@@ -14,9 +14,9 @@ enum OSTYPE {OSOther=0, OSLinux, OSSunOS
-              OSWin9x, OSWinNT, OSHPUX, OSFreeBSD, OSOSX};
- #define OSIsWin(OS_) (((OS_) == OSWinNT) || ((OS_) == OSWin9x))
- 
--enum ARCHFAM {AFOther=0, AFPPC, AFSPARC, AFALPHA, AFX86, AFIA64, AFMIPS};
-+enum ARCHFAM {AFOther=0, AFPPC, AFSPARC, AFALPHA, AFX86, AFIA64, AFMIPS, AFS390};
- 
--#define NMACH 37
-+#define NMACH 42
- static char *machnam[NMACH] =
-    {"UNKNOWN", "POWER3", "POWER4", "POWER5", "PPCG4", "PPCG5",
-     "POWER6", "POWER7",
-@@ -25,7 +25,8 @@ static char *machnam[NMACH] =
-     "Efficeon", "K7", "HAMMER", "AMD64K10h", "UNKNOWNx86",
-     "IA64Itan", "IA64Itan2",
-     "USI", "USII", "USIII", "USIV", "UST2", "UnknownUS",
--    "MIPSR1xK", "MIPSICE9"};
-+    "MIPSR1xK", "MIPSICE9",
-+    "IBMz900", "IBMz990", "IBMz9", "IBMz10", "IBMz196" };
- enum MACHTYPE {MACHOther, IbmPwr3, IbmPwr4, IbmPwr5, PPCG4, PPCG5,
-                IbmPwr6, IbmPwr7,
-                IntP5, IntP5MMX, IntPPRO, IntPII, IntPIII, IntPM, IntCoreS,
-@@ -34,7 +35,8 @@ enum MACHTYPE {MACHOther, IbmPwr3, IbmPw
-                IA64Itan, IA64Itan2,
-                SunUSI, SunUSII, SunUSIII, SunUSIV, SunUST2, SunUSX,
-                MIPSR1xK, /* includes R10K, R12K, R14K, R16K */
--               MIPSICE9   /* SiCortex ICE9 -- like MIPS5K */
-+               MIPSICE9,   /* SiCortex ICE9 -- like MIPS5K */
-+               IBMz900, IBMz990, IBMz9, IBMz10, IBMz196 /* s390(x) in Linux */
-                };
- #define MachIsX86(mach_) \
-    ( (mach_) >= IntP5 && (mach_) <= x86X )
-@@ -51,6 +53,8 @@ enum MACHTYPE {MACHOther, IbmPwr3, IbmPw
- #endif
- #define MachIsPPC(mach_) \
-    ( (mach_) >= PPCG4 && (mach_) <= PPCG5 )
-+#define MachIsS390(mach_) \
-+   ( (mach_) >= IBMz900 && (mach_) <= IBMz196 )
- 
- static char *f2c_namestr[5] = {"UNKNOWN","Add_", "Add__", "NoChange", "UpCase"};
- static char *f2c_intstr[5] =
-@@ -68,13 +72,13 @@ static char *ISAXNAM[NISA] =
-    {"", "AltiVec", "SSE3", "SSE2", "SSE1", "3DNow"};
- enum ISAEXT {ISA_None=0, ISA_AV, ISA_SSE3, ISA_SSE2, ISA_SSE1, ISA_3DNow};
- 
--#define NASMD 7
-+#define NASMD 8
- enum ASMDIA
-    {ASM_None=0, gas_x86_32, gas_x86_64, gas_sparc, gas_ppc, gas_parisc,
--    gas_mips};
-+    gas_mips, gas_s390};
- static char *ASMNAM[NASMD] =
-    {"",     "GAS_x8632", "GAS_x8664", "GAS_SPARC", "GAS_PPC", "GAS_PARISC",
--    "GAS_MIPS"};
-+    "GAS_MIPS", "GAS_S390"};
- 
- 
- /*
-Index: b/CONFIG/src/Makefile
-===================================================================
---- a/CONFIG/src/Makefile
-+++ b/CONFIG/src/Makefile
-@@ -177,6 +177,11 @@ IRun_GAS_x8632 :
- 	$(MAKE) $(atlrun) atldir=$(mydir) exe=xprobe_gas_x8632 args="$(args)" \
-                 redir=config0.out
- 	- cat config0.out
-+IRun_GAS_S390 :
-+	$(CC) $(CCFLAGS) -o xprobe_gas_s390 $(SRCdir)/backend/probe_this_asm.c $(SRCdir)/backend/probe_gas_s390.S
-+	$(MAKE) $(atlrun) atldir=$(mydir) exe=xprobe_gas_s390 args="$(args)" \
-+                redir=config0.out
-+	- cat config0.out
- 
- IRunC2C :
- 	- rm -f config0.out xc2c c2cslave.o
-Index: b/CONFIG/src/SpewMakeInc.c
-===================================================================
---- a/CONFIG/src/SpewMakeInc.c
-+++ b/CONFIG/src/SpewMakeInc.c
-@@ -342,6 +342,9 @@ char *GetPtrbitsFlag(enum OSTYPE OS, enu
-       return(sp);
-    if (MachIsMIPS(arch))
-       return((ptrbits == 64) ? "-mabi=64" : "-mabi=n32");
-+   if (MachIsS390(arch))
-+      return((ptrbits == 64) ? "-m64" : "-m31");
-+
-    if (!CompIsGcc(comp))
-    {
- /*
-@@ -671,6 +674,8 @@ main(int nargs, char **args)
-       if (OS == OSFreeBSD)
-          fprintf(fpout, "_fbsd");
-    }
-+   if (MachIsS390(mach))
-+      fprintf(fpout, ptrbits == 32 ? "-m31" : "-m64");
-    fprintf(fpout, "\n   F77SYSLIB = %s\n", f77lib ? f77lib : "");
-    fprintf(fpout, "   BC = $(ICC)\n");
-    fprintf(fpout, "   NCFLAGS = $(ICCFLAGS)\n");
-Index: b/CONFIG/src/atlcomp.txt
-===================================================================
---- a/CONFIG/src/atlcomp.txt
-+++ b/CONFIG/src/atlcomp.txt
-@@ -164,6 +164,56 @@ MACH=ALL OS=WinNT LVL=0 COMPS=f77
- MACH=P4,PM OS=WinNT LVL=0 COMPS=icc,dmc,smc,dkc,skc,xcc
-    'icl' '-QxN -O3 -Qprec -fp:extended -fp:except -nologo -Oy'
- #
-+# IBM System z or zEnterprise
-+#
-+
-+# z900 or z800
-+MACH=IBMz900 OS=ALL LVL=1000 COMPS=f77
-+   'gfortran' '-march=z900 -O3 -funroll-loops'
-+MACH=IBMz900 OS=ALL LVL=1000 COMPS=smc,dmc,skc,dkc,icc,xcc
-+   'gcc' '-march=z900 -O3 -funroll-loops'
-+
-+# z990 or z890
-+MACH=IBMz990 OS=ALL LVL=1000 COMPS=f77
-+   'gfortran' '-march=z990 -O3 -funroll-loops'
-+MACH=IBMz990 OS=ALL LVL=1000 COMPS=smc,dmc,skc,dkc,icc,xcc
-+   'gcc' '-march=z990 -O3 -funroll-loops'
-+
-+# z9-EC z9-BC or z9-109
-+MACH=IBMz9 OS=ALL LVL=1000 COMPS=f77
-+   'gfortran' '-march=z9-109 -O3 -funroll-loops'
-+MACH=IBMz9 OS=ALL LVL=1000 COMPS=smc,dmc,skc,dkc,icc,xcc
-+   'gcc' '-march=z9-109 -O3 -funroll-loops'
-+
-+# on z10 and z196 gcc emits prefetches which disturb cache size
-+# detection and optimization. Therefore, we use fno-prefetch-loop-arrays
-+# z10
-+MACH=IBMz10 OS=ALL LVL=1000 COMPS=f77
-+   'gfortran' '-march=z10 -O3 -funroll-loops -fno-prefetch-loop-arrays'
-+MACH=IBMz10 OS=ALL LVL=1000 COMPS=smc,dmc,skc,dkc,icc,xcc
-+   'gcc' '-march=z10 -O3 -funroll-loops -fno-prefetch-loop-arrays'
-+
-+# z196. we also try to fallback to z10 and z9 for older compilers
-+MACH=IBMz196 OS=ALL LVL=1000 COMPS=f77
-+   'gfortran' '-march=z196 -O3 -funroll-loops -fno-prefetch-loop-arrays'
-+MACH=IBMz196 OS=ALL LVL=800 COMPS=f77
-+   'gfortran' '-march=z10 -O3 -funroll-loops -fno-prefetch-loop-arrays'
-+MACH=IBMz196 OS=ALL LVL=600 COMPS=f77
-+   'gfortran' '-march=z9-109 -O3 -funroll-loops'
-+MACH=IBMz196 OS=ALL LVL=1000 COMPS=smc,dmc,skc,dkc,icc,xcc
-+   'gcc' '-march=z196 -O3 -funroll-loops -fno-prefetch-loop-arrays'
-+MACH=IBMz196 OS=ALL LVL=800 COMPS=smc,dmc,skc,dkc,icc,xcc
-+   'gcc' '-march=z10 -O3 -funroll-loops -fno-prefetch-loop-arrays'
-+MACH=IBMz196 OS=ALL LVL=600 COMPS=smc,dmc,skc,dkc,icc,xcc
-+   'gcc' '-march=z9-109 -O3 -funroll-loops'
-+
-+# ALL march options failed, go back to conservative defaults
-+MACH=IBMz900,IBMz990,IBMz9,IBMz10,IBMz196 OS=ALL LVL=500 COMPS=f77
-+   'gfortran' '-O3 -funroll-loops'
-+MACH=IBMz900,IBMz990,IBMz9,IBMz10,IBMz196 OS=ALL LVL=500 COMPS=smc,dmc,skc,dkc,icc,xcc
-+   'gcc' '-O3 -funroll-loops'
-+
-+#
- # Generic defaults
- #
- MACH=ALL OS=ALL LVL=5 COMPS=icc,smc,dmc,skc,dkc,xcc
-Index: b/CONFIG/src/atlconf_misc.c
-===================================================================
---- a/CONFIG/src/atlconf_misc.c
-+++ b/CONFIG/src/atlconf_misc.c
-@@ -480,6 +480,7 @@ enum ARCHFAM ProbeArchFam(char *targ)
-       else if (strstr(res, "alpha")) fam = AFALPHA;
-       else if (strstr(res, "ia64")) fam = AFIA64;
-       else if (strstr(res, "mips")) fam = AFMIPS;
-+      else if (strstr(res, "s390")) fam = AFS390;
-       else if ( strstr(res, "i686") || strstr(res, "i586") ||
-                 strstr(res, "i486") || strstr(res, "i386") ||
-                 strstr(res, "x86") || strstr(res, "x86_64") ) fam = AFX86;
-@@ -501,6 +502,7 @@ enum ARCHFAM ProbeArchFam(char *targ)
-                    strstr(res, "i486") || strstr(res, "i386") ||
-                    strstr(res, "x86_64") ) fam = AFX86;
-          else if (strstr(res, "mips")) fam = AFMIPS;
-+         else if (strstr(res, "s390")) fam = AFS390;
-       }
-    }
-    return(fam);
-Index: b/CONFIG/src/backend/Make.ext
-===================================================================
---- a/CONFIG/src/backend/Make.ext
-+++ b/CONFIG/src/backend/Make.ext
-@@ -43,6 +43,8 @@ probe_gas_parisc.S : $(basf)
- 	$(extC) -b $(basf) -o probe_gas_parisc.S rout=probe_gas_parisc.S
- probe_gas_mips.S : $(basf)
- 	$(extC) -b $(basf) -o probe_gas_mips.S rout=probe_gas_mips.S
-+probe_gas_s390.S : $(basf)
-+	$(extC) -b $(basf) -o probe_gas_s390.S rout=probe_gas_s390.S
- probe_SSE3.S : $(basf)
- 	$(extC) -b $(basf) -o probe_SSE3.S rout=probe_SSE3.S
- probe_SSE2.S : $(basf)
-Index: b/CONFIG/src/backend/archinfo_linux.c
-===================================================================
---- a/CONFIG/src/backend/archinfo_linux.c
-+++ b/CONFIG/src/backend/archinfo_linux.c
-@@ -193,6 +193,18 @@ enum MACHTYPE ProbeArch()
-       }
-       #endif
-       break;
-+   case AFS390:
-+      if ( !CmndOneLine(NULL, "cat /proc/cpuinfo | fgrep \"processor \"", res) )
-+      {
-+         if (strstr(res, "2064") || strstr(res, "2066")) mach = IBMz900;
-+         else if (strstr(res, "2084") || strstr(res, "2086")) mach = IBMz990;
-+         else if (strstr(res, "2094") || strstr(res, "2096")) mach = IBMz9;
-+         else if (strstr(res, "2097") || strstr(res, "2098")) mach = IBMz10;
-+         /* we consider anything else to be a z196 or later */
-+         else mach = IBMz196;
-+      }
-+      break;
-+
-    default:
- #if 0
-       if (!CmndOneLine(NULL, "fgrep 'cpu family' /proc/cpuinfo", res))
 Index: b/CONFIG/src/backend/probe_gas_s390.S
 ===================================================================
 --- /dev/null
@@ -247,33 +20,4 @@ Index: b/CONFIG/src/backend/probe_gas_s390.S
 +	ar	r2,r3
 +	ar	r2,r3
 +	br	r14
-Index: b/CONFIG/src/probe_comp.c
-===================================================================
---- a/CONFIG/src/probe_comp.c
-+++ b/CONFIG/src/probe_comp.c
-@@ -509,6 +509,8 @@ char *GetPtrbitsFlag(enum OSTYPE OS, enu
-       return(sp);
-    if (MachIsMIPS(arch))
-       return((ptrbits == 64) ? "-mabi=64" : "-mabi=n32");
-+   if (MachIsS390(arch))
-+      return((ptrbits == 64) ? "-m64" : "-m31");
-    if (!CompIsGcc(comp))
-    {
- /*
-Index: b/include/atlas_prefetch.h
-===================================================================
---- a/include/atlas_prefetch.h
-+++ b/include/atlas_prefetch.h
-@@ -149,6 +149,12 @@
-    #define ATL_GOT_L1PREFETCH
-    #define ATL_L1LS 32
-    #define ATL_L2LS 64
-+#elif defined(ATL_ARCH_IBMz196) || defined(ATL_ARCH_IBMz10)
-+   #define ATL_pfl1R(mem) __builtin_prefetch(mem, 0, 3)
-+   #define ATL_pfl1W(mem) __builtin_prefetch(mem, 1, 3)
-+   #define ATL_GOT_L1PREFETCH
-+   #define ATL_L1LS 256
-+   #define ATL_L2LS 256
- #elif defined(__GNUC__)  /* last ditch, use gcc predefined func */
-    #define ATL_pfl1R(mem) __builtin_prefetch(mem, 0, 3)
-    #define ATL_pfl1W(mem) __builtin_prefetch(mem, 1, 3)
+
diff --git a/atlas.spec b/atlas.spec
index 2482e40..3e172d2 100644
--- a/atlas.spec
+++ b/atlas.spec
@@ -5,7 +5,7 @@ Version:        3.10.0
 %if "%{?enable_native_atlas}" != "0"
 %define dist .native
 %endif
-Release:        1%{?dist}
+Release:        2%{?dist}
 Summary:        Automatically Tuned Linear Algebra Software
 
 Group:          System Environment/Libraries
@@ -771,6 +771,9 @@ fi
 %endif
 
 %changelog
+* Wed Mar 13 2013 Frantisek Kluknavsky <fkluknav at redhat.com> - 3.10.0-2
+- s390 patch partially accepted upstream
+
 * Thu Nov 15 2012 Frantisek Kluknavsky <fkluknav at redhat.com> - 3.10.0-1
 - Rebase to 3.10.0
 - Dropped x86_64-SSE2, ix86-SSE1, ix86-3DNow (uncompilable).


More information about the scm-commits mailing list