Skip to content

Commit

Permalink
Init POWER8 kernels by POWER6.
Browse files Browse the repository at this point in the history
  • Loading branch information
xianyi committed Nov 3, 2015
1 parent be4e5fc commit 3e8d6ea
Show file tree
Hide file tree
Showing 14 changed files with 156 additions and 5 deletions.
6 changes: 5 additions & 1 deletion cpuid_power.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
#define CPUTYPE_POWER6 5
#define CPUTYPE_CELL 6
#define CPUTYPE_PPCG4 7
#define CPUTYPE_POWER8 8

char *cpuname[] = {
"UNKNOWN",
Expand All @@ -65,6 +66,7 @@ char *cpuname[] = {
"POWER6",
"CELL",
"PPCG4",
"POWER8",
};

char *lowercpuname[] = {
Expand All @@ -76,6 +78,7 @@ char *lowercpuname[] = {
"power6",
"cell",
"ppcg4",
"power8",
};

char *corename[] = {
Expand All @@ -87,6 +90,7 @@ char *corename[] = {
"POWER6",
"CELL",
"PPCG4",
"POWER8",
};

int detect(void){
Expand Down Expand Up @@ -115,7 +119,7 @@ int detect(void){
if (!strncasecmp(p, "POWER5", 6)) return CPUTYPE_POWER5;
if (!strncasecmp(p, "POWER6", 6)) return CPUTYPE_POWER6;
if (!strncasecmp(p, "POWER7", 6)) return CPUTYPE_POWER6;
if (!strncasecmp(p, "POWER8", 6)) return CPUTYPE_POWER6;
if (!strncasecmp(p, "POWER8", 6)) return CPUTYPE_POWER8;
if (!strncasecmp(p, "Cell", 4)) return CPUTYPE_CELL;
if (!strncasecmp(p, "7447", 4)) return CPUTYPE_PPCG4;

Expand Down
13 changes: 13 additions & 0 deletions getarch.c
Original file line number Diff line number Diff line change
Expand Up @@ -565,6 +565,19 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#define CORENAME "POWER6"
#endif

#if defined(FORCE_POWER8)
#define FORCE
#define ARCHITECTURE "POWER"
#define SUBARCHITECTURE "POWER8"
#define SUBDIRNAME "power"
#define ARCHCONFIG "-DPOWER8 " \
"-DL1_DATA_SIZE=65536 -DL1_DATA_LINESIZE=128 " \
"-DL2_SIZE=4194304 -DL2_LINESIZE=128 " \
"-DDTB_DEFAULT_ENTRIES=128 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8 "
#define LIBNAME "power8"
#define CORENAME "POWER8"
#endif

#ifdef FORCE_PPCG4
#define FORCE
#define ARCHITECTURE "POWER"
Expand Down
56 changes: 56 additions & 0 deletions kernel/power/KERNEL.POWER8
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
SGEMMKERNEL = gemm_kernel_power6.S
SGEMMINCOPY =
SGEMMITCOPY =
SGEMMONCOPY = gemm_ncopy_4.S
SGEMMOTCOPY = gemm_tcopy_4.S
SGEMMINCOPYOBJ =
SGEMMITCOPYOBJ =
SGEMMONCOPYOBJ = sgemm_oncopy$(TSUFFIX).$(SUFFIX)
SGEMMOTCOPYOBJ = sgemm_otcopy$(TSUFFIX).$(SUFFIX)
DGEMMKERNEL = gemm_kernel_power6.S
DGEMMINCOPY =
DGEMMITCOPY =
DGEMMONCOPY = gemm_ncopy_4.S
DGEMMOTCOPY = gemm_tcopy_4.S
DGEMMINCOPYOBJ =
DGEMMITCOPYOBJ =
DGEMMONCOPYOBJ = dgemm_oncopy$(TSUFFIX).$(SUFFIX)
DGEMMOTCOPYOBJ = dgemm_otcopy$(TSUFFIX).$(SUFFIX)
CGEMMKERNEL = zgemm_kernel_power6.S
CGEMMINCOPY = ../generic/zgemm_ncopy_2.c
CGEMMITCOPY = ../generic/zgemm_tcopy_2.c
CGEMMONCOPY = ../generic/zgemm_ncopy_4.c
CGEMMOTCOPY = ../generic/zgemm_tcopy_4.c
CGEMMINCOPYOBJ = cgemm_incopy$(TSUFFIX).$(SUFFIX)
CGEMMITCOPYOBJ = cgemm_itcopy$(TSUFFIX).$(SUFFIX)
CGEMMONCOPYOBJ = cgemm_oncopy$(TSUFFIX).$(SUFFIX)
CGEMMOTCOPYOBJ = cgemm_otcopy$(TSUFFIX).$(SUFFIX)
ZGEMMKERNEL = zgemm_kernel_power6.S
ZGEMMINCOPY = ../generic/zgemm_ncopy_2.c
ZGEMMITCOPY = ../generic/zgemm_tcopy_2.c
ZGEMMONCOPY = ../generic/zgemm_ncopy_4.c
ZGEMMOTCOPY = ../generic/zgemm_tcopy_4.c
ZGEMMINCOPYOBJ = zgemm_incopy$(TSUFFIX).$(SUFFIX)
ZGEMMITCOPYOBJ = zgemm_itcopy$(TSUFFIX).$(SUFFIX)
ZGEMMONCOPYOBJ = zgemm_oncopy$(TSUFFIX).$(SUFFIX)
ZGEMMOTCOPYOBJ = zgemm_otcopy$(TSUFFIX).$(SUFFIX)

STRSMKERNEL_LN = trsm_kernel_power6_LN.S
STRSMKERNEL_LT = trsm_kernel_power6_LT.S
STRSMKERNEL_RN = trsm_kernel_power6_LT.S
STRSMKERNEL_RT = trsm_kernel_power6_RT.S

DTRSMKERNEL_LN = trsm_kernel_power6_LN.S
DTRSMKERNEL_LT = trsm_kernel_power6_LT.S
DTRSMKERNEL_RN = trsm_kernel_power6_LT.S
DTRSMKERNEL_RT = trsm_kernel_power6_RT.S

CTRSMKERNEL_LN = ztrsm_kernel_power6_LN.S
CTRSMKERNEL_LT = ztrsm_kernel_power6_LT.S
CTRSMKERNEL_RN = ztrsm_kernel_power6_LT.S
CTRSMKERNEL_RT = ztrsm_kernel_power6_RT.S

ZTRSMKERNEL_LN = ztrsm_kernel_power6_LN.S
ZTRSMKERNEL_LT = ztrsm_kernel_power6_LT.S
ZTRSMKERNEL_RN = ztrsm_kernel_power6_LT.S
ZTRSMKERNEL_RT = ztrsm_kernel_power6_RT.S
5 changes: 5 additions & 0 deletions kernel/power/gemm_ncopy_4.S
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,11 @@
#define PREFETCHWSIZE 72
#endif

#ifdef POWER8
#define PREFETCHSIZE 16
#define PREFETCHWSIZE 72
#endif

#ifdef PPCG4
#define PREFETCHSIZE 16
#define PREFETCHWSIZE 72
Expand Down
5 changes: 5 additions & 0 deletions kernel/power/gemm_tcopy_4.S
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,11 @@
#define PREFETCHWSIZE 48
#endif

#ifdef POWER8
#define PREFETCHSIZE 16
#define PREFETCHWSIZE 48
#endif

#ifdef PPCG4
#define PREFETCHSIZE 16
#define PREFETCHWSIZE 48
Expand Down
5 changes: 5 additions & 0 deletions kernel/power/gemv_n.S
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,11 @@
#define PREFETCHSIZE_C 40
#endif

#ifdef POWER8
#define PREFETCHSIZE_A 96
#define PREFETCHSIZE_C 40
#endif

#ifndef NEEDPARAM

#ifndef __64BIT__
Expand Down
5 changes: 5 additions & 0 deletions kernel/power/gemv_t.S
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,11 @@
#define PREFETCHSIZE_C 8
#endif

#ifdef POWER8
#define PREFETCHSIZE_A 96
#define PREFETCHSIZE_C 8
#endif

#define y01 f0
#define y02 f1
#define y03 f2
Expand Down
6 changes: 5 additions & 1 deletion kernel/power/symv_L.S
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,11 @@
#define PREFETCHSIZE_A 40
#endif

#if defined(POWER4) || defined(POWER5) || defined(POWER6) || defined(PPC970)
#ifdef POWER8
#define PREFETCHSIZE_A 40
#endif

#if defined(POWER4) || defined(POWER5) || defined(POWER6) || defined(PPC970) || defined(POWER8)
#define NOP1
#define NOP2
#else
Expand Down
6 changes: 5 additions & 1 deletion kernel/power/symv_U.S
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,11 @@
#define PREFETCHSIZE_A 40
#endif

#if defined(POWER4) || defined(POWER5) || defined(POWER6) || defined(PPC970)
#ifdef POWER8
#define PREFETCHSIZE_A 40
#endif

#if defined(POWER4) || defined(POWER5) || defined(POWER6) || defined(PPC970) || defined(POWER8)
#define NOP1
#define NOP2
#else
Expand Down
5 changes: 5 additions & 0 deletions kernel/power/zgemv_n.S
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,11 @@
#define PREFETCHSIZE_C 24
#endif

#ifdef POWER8
#define PREFETCHSIZE_A 24
#define PREFETCHSIZE_C 24
#endif

#ifndef XCONJ
#define FMADDR FMADD
#define FMSUBR FNMSUB
Expand Down
5 changes: 5 additions & 0 deletions kernel/power/zgemv_t.S
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,11 @@
#define PREFETCHSIZE_C 8
#endif

#ifdef POWER8
#define PREFETCHSIZE_A 24
#define PREFETCHSIZE_C 8
#endif

#if !(defined(CONJ) && defined(XCONJ))
#define FMADDR FMADD
#define FMSUBR FNMSUB
Expand Down
6 changes: 5 additions & 1 deletion kernel/power/zsymv_L.S
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,11 @@
#define PREFETCHSIZE_A 112
#endif

#if defined(POWER4) || defined(POWER5) || defined(POWER6) || defined(PPC970)
#ifdef POWER8
#define PREFETCHSIZE_A 112
#endif

#if defined(POWER4) || defined(POWER5) || defined(POWER6) || defined(PPC970) || defined(POWER8)
#define NOP1
#define NOP2
#else
Expand Down
6 changes: 5 additions & 1 deletion kernel/power/zsymv_U.S
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,11 @@
#define PREFETCHSIZE_A 112
#endif

#if defined(POWER4) || defined(POWER5) || defined(POWER6) || defined(PPC970)
#ifdef POWER8
#define PREFETCHSIZE_A 112
#endif

#if defined(POWER4) || defined(POWER5) || defined(POWER6) || defined(PPC970) || defined(POWER8)
#define NOP1
#define NOP2
#else
Expand Down
32 changes: 32 additions & 0 deletions param.h
Original file line number Diff line number Diff line change
Expand Up @@ -1959,6 +1959,38 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#endif

#if defined(POWER8)

#define SNUMOPT 4
#define DNUMOPT 4

#define GEMM_DEFAULT_OFFSET_A 384
#define GEMM_DEFAULT_OFFSET_B 1024
#define GEMM_DEFAULT_ALIGN 0x03fffUL

#define SGEMM_DEFAULT_UNROLL_M 4
#define SGEMM_DEFAULT_UNROLL_N 4
#define DGEMM_DEFAULT_UNROLL_M 4
#define DGEMM_DEFAULT_UNROLL_N 4
#define CGEMM_DEFAULT_UNROLL_M 2
#define CGEMM_DEFAULT_UNROLL_N 4
#define ZGEMM_DEFAULT_UNROLL_M 2
#define ZGEMM_DEFAULT_UNROLL_N 4

#define SGEMM_DEFAULT_P 992
#define DGEMM_DEFAULT_P 480
#define CGEMM_DEFAULT_P 488
#define ZGEMM_DEFAULT_P 248

#define SGEMM_DEFAULT_Q 504
#define DGEMM_DEFAULT_Q 504
#define CGEMM_DEFAULT_Q 400
#define ZGEMM_DEFAULT_Q 400

#define SYMV_P 8

#endif

#if defined(SPARC) && defined(V7)

#define SNUMOPT 4
Expand Down

0 comments on commit 3e8d6ea

Please sign in to comment.