Than Ngo 13262e
From: Michel Normand <normand@linux.vnet.ibm.com>
Than Ngo 13262e
Subject: atlas.3.10.2 add power8 cpu
Than Ngo 13262e
Date: Thu, 18 Sep 2014 15:13:24 +0200
Than Ngo 13262e
Than Ngo 13262e
atlas.3.10.2 add Power8 cpu
Than Ngo 13262e
tracked upstream by issue 67
Than Ngo 13262e
https://sourceforge.net/p/math-atlas/patches/67/
Than Ngo 13262e
Than Ngo 13262e
Signed-off-by: Michel Normand <normand@linux.vnet.ibm.com>
Than Ngo 13262e
---
Than Ngo 13262e
 CONFIG/ARCHS/Make.ext               |    7 +++++++
Than Ngo 13262e
 CONFIG/include/atlconf.h            |    6 +++---
Than Ngo 13262e
 CONFIG/src/atlcomp.txt              |    6 ++++++
Than Ngo 13262e
 CONFIG/src/backend/archinfo_aix.c   |    2 ++
Than Ngo 13262e
 CONFIG/src/backend/archinfo_linux.c |    1 +
Than Ngo 13262e
 include/atlas_pca.h                 |    2 +-
Than Ngo 13262e
 6 files changed, 20 insertions(+), 4 deletions(-)
Than Ngo 13262e
Than Ngo 13262e
Index: ATLAS/CONFIG/ARCHS/Make.ext
Than Ngo 13262e
===================================================================
Than Ngo 13262e
--- ATLAS.orig/CONFIG/ARCHS/Make.ext
Than Ngo 13262e
+++ ATLAS/CONFIG/ARCHS/Make.ext
Than Ngo 13262e
@@ -33,6 +33,7 @@ files = AMD64K10h32SSE3.tar.bz2 AMD64K10
Than Ngo 13262e
         MIPSR1xK64.tar.bz2 Makefile P432SSE2.tar.bz2 P4E32SSE3.tar.bz2 \
Than Ngo 13262e
         P4E64SSE3.tar.bz2 PIII32SSE1.tar.bz2 POWER432.tar.bz2 \
Than Ngo 13262e
         POWER464.tar.bz2 POWER564.tar.bz2 POWER764VSX.tar.bz2 \
Than Ngo 13262e
+        POWER864VSX.tar.bz2 \
Than Ngo 13262e
         PPCG432AltiVec.tar.bz2 PPCG532AltiVec.tar.bz2 PPCG564AltiVec.tar.bz2 \
Than Ngo 13262e
         PPRO32.tar.bz2 USIII32.tar.bz2 USIII64.tar.bz2 USIV32.tar.bz2 \
Than Ngo 13262e
         USIV64.tar.bz2 UST232.tar.bz2 UST264.tar.bz2 atlas_test1.1.3.tar.bz2 \
Than Ngo 13262e
@@ -308,6 +309,12 @@ POWER764VSX.tar.bz2 : $(basdr)/POWER764V
Than Ngo 13262e
            /tmp/POWER764VSX.tar POWER764VSX
Than Ngo 13262e
 	bzip2 /tmp/POWER764VSX.tar
Than Ngo 13262e
 	mv /tmp/POWER764VSX.tar.bz2 ./.
Than Ngo 13262e
+POWER864VSX.tar.bz2 : $(basdr)/POWER864VSX
Than Ngo 13262e
+	- rm -f /tmp/POWER864VSX.tar /tmp/POWER864VSX.tar.bz2
Than Ngo 13262e
+	cd $(basdr) ; tar --dereference --exclude 'CVS' -c -f \
Than Ngo 13262e
+           /tmp/POWER864VSX.tar POWER864VSX
Than Ngo 13262e
+	bzip2 /tmp/POWER864VSX.tar
Than Ngo 13262e
+	mv /tmp/POWER864VSX.tar.bz2 ./.
Than Ngo 13262e
 IBMz1032.tar.bz2 : $(basdr)/IBMz1032
Than Ngo 13262e
 	- rm -f /tmp/IBMz1032.tar /tmp/IBMz1032.tar.bz2
Than Ngo 13262e
 	cd $(basdr) ; tar --dereference --exclude 'CVS' -c -f \
Than Ngo 13262e
Index: ATLAS/CONFIG/include/atlconf.h
Than Ngo 13262e
===================================================================
Than Ngo 13262e
--- ATLAS.orig/CONFIG/include/atlconf.h
Than Ngo 13262e
+++ ATLAS/CONFIG/include/atlconf.h
Than Ngo 13262e
@@ -18,10 +18,10 @@ enum OSTYPE {OSOther=0, OSLinux, OSSunOS
Than Ngo 13262e
 enum ARCHFAM {AFOther=0, AFPPC, AFSPARC, AFALPHA, AFX86, AFIA64, AFMIPS,
Than Ngo 13262e
               AFARM, AFS390};
Than Ngo 13262e
 
Than Ngo 13262e
-#define NMACH 52
Than Ngo 13262e
+#define NMACH 53
Than Ngo 13262e
 static char *machnam[NMACH] =
Than Ngo 13262e
    {"UNKNOWN", "POWER3", "POWER4", "POWER5", "PPCG4", "PPCG5",
Than Ngo 13262e
-    "POWER6", "POWER7", "POWERe6500", "IBMz9", "IBMz10", "IBMz196",
Than Ngo 13262e
+    "POWER6", "POWER7", "POWER8", "POWERe6500", "IBMz9", "IBMz10", "IBMz196",
Than Ngo 13262e
     "x86x87", "x86SSE1", "x86SSE2", "x86SSE3",
Than Ngo 13262e
     "P5", "P5MMX", "PPRO", "PII", "PIII", "PM", "CoreSolo",
Than Ngo 13262e
     "CoreDuo", "Core2Solo", "Core2", "Corei1", "Corei2", "Corei3",
Than Ngo 13262e
@@ -31,7 +31,7 @@ static char *machnam[NMACH] =
Than Ngo 13262e
     "USI", "USII", "USIII", "USIV", "UST1", "UST2", "UnknownUS",
Than Ngo 13262e
     "MIPSR1xK", "MIPSICE9", "ARMv7"};
Than Ngo 13262e
 enum MACHTYPE {MACHOther, IbmPwr3, IbmPwr4, IbmPwr5, PPCG4, PPCG5,
Than Ngo 13262e
-               IbmPwr6, IbmPwr7, Pwre6500,
Than Ngo 13262e
+               IbmPwr6, IbmPwr7, IbmPwr8, Pwre6500,
Than Ngo 13262e
                IbmZ9, IbmZ10, IbmZ196,  /* s390(x) in Linux */
Than Ngo 13262e
                x86x87, x86SSE1, x86SSE2, x86SSE3, /* generic targets */
Than Ngo 13262e
                IntP5, IntP5MMX, IntPPRO, IntPII, IntPIII, IntPM, IntCoreS,
Than Ngo 13262e
Index: ATLAS/CONFIG/src/atlcomp.txt
Than Ngo 13262e
===================================================================
Than Ngo 13262e
--- ATLAS.orig/CONFIG/src/atlcomp.txt
Than Ngo 13262e
+++ ATLAS/CONFIG/src/atlcomp.txt
Than Ngo 13262e
@@ -190,6 +190,10 @@ MACH=PPCG5 OS=ALL LVL=1000 COMPS=dmc,icc
Than Ngo 13262e
    'gcc' '-mpowerpc64 -maltivec -mabi=altivec -mcpu=970 -mtune=970 -O2'
Than Ngo 13262e
 MACH=PPCG5 OS=ALL LVL=1000 COMPS=skc
Than Ngo 13262e
    'gcc' '-mpowerpc64 -maltivec -mabi=altivec -mcpu=970 -mtune=970 -O2 -mvrsave'
Than Ngo 13262e
+MACH=POWER8 OS=ALL LVL=1010 COMPS=icc,smc,dmc,skc,dkc,xcc,gcc
Than Ngo 13262e
+   'gcc' '-O2 -mvsx -mcpu=power8 -mtune=power8 -m64 -mvrsave -funroll-all-loops'
Than Ngo 13262e
+MACH=POWER8 OS=ALL LVL=1010 COMPS=f77
Than Ngo 13262e
+   'gfortran' '-O2 -mvsx -mcpu=power8 -mtune=power8 -m64 -mvrsave -funroll-all-loops'
Than Ngo 13262e
 MACH=POWER7 OS=ALL LVL=1010 COMPS=icc,smc,dmc,skc,dkc,xcc,gcc
Than Ngo 13262e
    'gcc' '-O2 -mvsx -mcpu=power7 -mtune=power7 -m64 -mvrsave -funroll-all-loops'
Than Ngo 13262e
 MACH=POWER7 OS=ALL LVL=1010 COMPS=f77
Than Ngo 13262e
@@ -210,6 +214,8 @@ MACH=POWER4 OS=ALL LVL=1010 COMPS=icc,dm
Than Ngo 13262e
    'gcc' '-mcpu=power4 -mtune=power4 -O3 -fno-schedule-insns -fno-rerun-loop-opt'
Than Ngo 13262e
 MACH=POWER4 OS=ALL LVL=1010 COMPS=f77
Than Ngo 13262e
    'xlf' '-qtune=pwr4 -qarch=pwr4 -O3 -qmaxmem=-1 -qfloat=hsflt'
Than Ngo 13262e
+MACH=POWER8 OS=ALL LVL=1010 COMPS=f77
Than Ngo 13262e
+   'xlf' '-qtune=pwr8 -qarch=pwr8 -O3 -qmaxmem=-1 -qfloat=hsflt'
Than Ngo 13262e
 #
Than Ngo 13262e
 # IBM System z or zEnterprise.
Than Ngo 13262e
 # These compiler flags given by IBM; -O3 -funroll-loops are chosen because
Than Ngo 13262e
Index: ATLAS/CONFIG/src/backend/archinfo_linux.c
Than Ngo 13262e
===================================================================
Than Ngo 13262e
--- ATLAS.orig/CONFIG/src/backend/archinfo_linux.c
Than Ngo 13262e
+++ ATLAS/CONFIG/src/backend/archinfo_linux.c
Than Ngo 13262e
@@ -77,6 +77,7 @@ enum MACHTYPE ProbeArch()
Than Ngo 13262e
          else if (strstr(res, "7455")) mach = PPCG4;
Than Ngo 13262e
          else if (strstr(res, "PPC970FX")) mach = PPCG5;
Than Ngo 13262e
          else if (strstr(res, "PPC970MP")) mach = PPCG5;
Than Ngo 13262e
+         else if (strstr(res, "POWER8")) mach = IbmPwr8;
Than Ngo 13262e
          else if (strstr(res, "POWER7")) mach = IbmPwr7;
Than Ngo 13262e
          else if (strstr(res, "POWER6")) mach = IbmPwr6;
Than Ngo 13262e
          else if (strstr(res, "POWER5")) mach = IbmPwr5;
Than Ngo 13262e
Index: ATLAS/include/atlas_pca.h
Than Ngo 13262e
===================================================================
Than Ngo 13262e
--- ATLAS.orig/include/atlas_pca.h
Than Ngo 13262e
+++ ATLAS/include/atlas_pca.h
Than Ngo 13262e
@@ -26,7 +26,7 @@
Than Ngo 13262e
    #endif
Than Ngo 13262e
 #elif defined(ATL_ARCH_POWER3) || defined(ATL_ARCH_POWER4) || \
Than Ngo 13262e
       defined(ATL_ARCH_POWER5) || defined(ATL_ARCH_POWER6) || \
Than Ngo 13262e
-      defined(ATL_ARCH_POWER7)
Than Ngo 13262e
+      defined(ATL_ARCH_POWER7) || defined(ATL_ARCH_POWER8)
Than Ngo 13262e
    #ifdef __GNUC__
Than Ngo 13262e
       #define ATL_membarrier __asm__ __volatile__ ("dcs")
Than Ngo 13262e
 /*      #define ATL_USEPCA 1 */
Than Ngo 13262e
Index: ATLAS/CONFIG/src/backend/archinfo_aix.c
Than Ngo 13262e
===================================================================
Than Ngo 13262e
--- ATLAS.orig/CONFIG/src/backend/archinfo_aix.c
Than Ngo 13262e
+++ ATLAS/CONFIG/src/backend/archinfo_aix.c
Than Ngo 13262e
@@ -67,6 +67,8 @@ enum MACHTYPE ProbeArch()
Than Ngo 13262e
       {
Than Ngo 13262e
          if (strstr(res, "PowerPC_POWER5"))
Than Ngo 13262e
             mach = IbmPwr5;
Than Ngo 13262e
+         else if (strstr(res, "PowerPC_POWER8"))
Than Ngo 13262e
+            mach = IbmPwr8;
Than Ngo 13262e
          else if (strstr(res, "PowerPC_POWER7"))
Than Ngo 13262e
             mach = IbmPwr7;
Than Ngo 13262e
          else if (strstr(res, "PowerPC_POWER6"))