From 61bbae3ac1a9e8c4399c9889af6b5533636c03c6 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sat, 18 Apr 2020 21:09:32 +0200 Subject: [PATCH 01/14] Handle MIPS24K like P5600 and allow enforcing TARGET=1004K as well (omission from earlier 1004K merge and later introduction of TARGET check) --- cpuid_mips.c | 20 +++++++++++++++++--- getarch.c | 28 ++++++++++++++++++++++++++++ param.h | 8 +++++++- 3 files changed, 52 insertions(+), 4 deletions(-) diff --git a/cpuid_mips.c b/cpuid_mips.c index 6f2932c94..df3541536 100644 --- a/cpuid_mips.c +++ b/cpuid_mips.c @@ -73,11 +73,13 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define CPU_UNKNOWN 0 #define CPU_P5600 1 #define CPU_1004K 2 +#define CPU_24K 3 static char *cpuname[] = { "UNKNOWN", "P5600", - "1004K" + "1004K", + "24K" }; int detect(void){ @@ -105,6 +107,8 @@ int detect(void){ return CPU_P5600; } else if (strstr(p, "1004K")) { return CPU_1004K; + } else if (strstr(p, " 24K")) { + return CPU_24K; } else return CPU_UNKNOWN; } @@ -121,7 +125,7 @@ void get_architecture(void){ } void get_subarchitecture(void){ - if(detect()==CPU_P5600|| detect()==CPU_1004K){ + if(detect()==CPU_P5600|| detect()==CPU_1004K|| detect()==CPU_24K){ printf("P5600"); }else{ printf("UNKNOWN"); @@ -146,7 +150,15 @@ void get_cpuconfig(void){ printf("#define MIPS1004K\n"); printf("#define L1_DATA_SIZE 32768\n"); printf("#define L1_DATA_LINESIZE 32\n"); - printf("#define L2_SIZE 26144\n"); + printf("#define L2_SIZE 262144\n"); + printf("#define DTB_DEFAULT_ENTRIES 8\n"); + printf("#define DTB_SIZE 4096\n"); + printf("#define L2_ASSOCIATIVE 4\n"); + } else if (detect()==CPU_24K) { + printf("#define MIPS24K\n"); + printf("#define L1_DATA_SIZE 32768\n"); + printf("#define L1_DATA_LINESIZE 32\n"); + printf("#define L2_SIZE 32768\n"); printf("#define DTB_DEFAULT_ENTRIES 8\n"); printf("#define DTB_SIZE 4096\n"); printf("#define L2_ASSOCIATIVE 4\n"); @@ -160,6 +172,8 @@ void get_libname(void){ printf("p5600\n"); } else if (detect()==CPU_1004K) { printf("1004K\n"); + } else if (detect()==CPU_24K) { + printf("24K\n"); }else{ printf("mips\n"); } diff --git a/getarch.c b/getarch.c index 145753bcc..8a6684975 100644 --- a/getarch.c +++ b/getarch.c @@ -812,6 +812,34 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #else #endif +#ifdef FORCE_1004K +#define FORCE +#define ARCHITECTURE "MIPS" +#define SUBARCHITECTURE "1004K" +#define SUBDIRNAME "mips" +#define ARCHCONFIG "-D1004K " \ + "-DL1_DATA_SIZE=32768 -DL1_DATA_LINESIZE=32 " \ + "-DL2_SIZE=262144 -DL2_LINESIZE=32 " \ + "-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8 " +#define LIBNAME "1004K" +#define CORENAME "1004K" +#else +#endif + +#ifdef FORCE_24K +#define FORCE +#define ARCHITECTURE "MIPS" +#define SUBARCHITECTURE "24K" +#define SUBDIRNAME "mips" +#define ARCHCONFIG "-D24K " \ + "-DL1_DATA_SIZE=32768 -DL1_DATA_LINESIZE=32 " \ + "-DL2_SIZE=32768 -DL2_LINESIZE=32 " \ + "-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8 " +#define LIBNAME "24K" +#define CORENAME "24K" +#else +#endif + #ifdef FORCE_I6500 #define FORCE #define ARCHITECTURE "MIPS" diff --git a/param.h b/param.h index d6cbe544a..2795947c5 100644 --- a/param.h +++ b/param.h @@ -72,6 +72,12 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef PARAM_H #define PARAM_H +#define SHGEMM_DEFAULT_UNROLL_N 4 +#define SHGEMM_DEFAULT_UNROLL_M 8 +#define SHGEMM_DEFAULT_UNROLL_MN 32 +#define SHGEMM_DEFAULT_P 256 +#define SHGEMM_DEFAULT_R 256 +#define SHGEMM_DEFAULT_Q 256 #ifdef OPTERON #define SNUMOPT 4 @@ -2468,7 +2474,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define SYMV_P 16 #endif -#if defined(P5600) || defined(MIPS1004K) || defined(I6400) || defined(P6600) || defined(I6500) +#if defined(P5600) || defined(MIPS1004K) defined(MIPS24K) || defined(I6400) || defined(P6600) || defined(I6500) #define SNUMOPT 2 #define DNUMOPT 2 From d712ea724cbf517fb8a40607cf5381dd453dbf92 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sat, 18 Apr 2020 21:10:18 +0200 Subject: [PATCH 02/14] Add MIPS24K support --- kernel/mips/KERNEL.24K | 1 + 1 file changed, 1 insertion(+) create mode 100644 kernel/mips/KERNEL.24K diff --git a/kernel/mips/KERNEL.24K b/kernel/mips/KERNEL.24K new file mode 100644 index 000000000..67135356e --- /dev/null +++ b/kernel/mips/KERNEL.24K @@ -0,0 +1 @@ +include $(KERNELDIR)/KERNEL.P5600 From 00172d440bfc7dedc8523a4cdad58b685801bb76 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sat, 18 Apr 2020 21:16:49 +0200 Subject: [PATCH 03/14] Typo fix in MIPS24K addition --- param.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/param.h b/param.h index 2795947c5..9fdf40fe2 100644 --- a/param.h +++ b/param.h @@ -2474,7 +2474,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define SYMV_P 16 #endif -#if defined(P5600) || defined(MIPS1004K) defined(MIPS24K) || defined(I6400) || defined(P6600) || defined(I6500) +#if defined(P5600) || defined(MIPS1004K) || defined(MIPS24K) || defined(I6400) || defined(P6600) || defined(I6500) #define SNUMOPT 2 #define DNUMOPT 2 From a1fc98dc57f896450c3a807814ad36f541eb112f Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sat, 18 Apr 2020 23:50:23 +0200 Subject: [PATCH 04/14] rename 1004K, 24K to MIPS1004K, MIPS24K to avoid identifier naming problem --- cpuid_mips.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cpuid_mips.c b/cpuid_mips.c index df3541536..3a2e12393 100644 --- a/cpuid_mips.c +++ b/cpuid_mips.c @@ -78,8 +78,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. static char *cpuname[] = { "UNKNOWN", "P5600", - "1004K", - "24K" + "MIPS1004K", + "MIPS24K" }; int detect(void){ @@ -171,9 +171,9 @@ void get_libname(void){ if(detect()==CPU_P5600) { printf("p5600\n"); } else if (detect()==CPU_1004K) { - printf("1004K\n"); + printf("mips1004K\n"); } else if (detect()==CPU_24K) { - printf("24K\n"); + printf("mips24K\n"); }else{ printf("mips\n"); } From b0b02a080d06f41d4132c75876c073fade5feb8b Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sun, 19 Apr 2020 06:50:51 +0200 Subject: [PATCH 05/14] Add compiler options for MIPS32 24K/1004K --- Makefile.prebuild | 6 +++++- Makefile.system | 9 ++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Makefile.prebuild b/Makefile.prebuild index b00f13368..48fb5e991 100644 --- a/Makefile.prebuild +++ b/Makefile.prebuild @@ -17,7 +17,11 @@ ifdef CPUIDEMU EXFLAGS = -DCPUIDEMU -DVENDOR=99 endif -ifeq ($(TARGET), 1004K) +ifeq ($(TARGET), MIPS24K) +TARGET_FLAGS = -mips32r2 +endif + +ifeq ($(TARGET), MIPS1004K) TARGET_FLAGS = -mips32r2 endif diff --git a/Makefile.system b/Makefile.system index 2998c0e6a..51bd1c4bd 100644 --- a/Makefile.system +++ b/Makefile.system @@ -690,7 +690,12 @@ CCOMMON_OPT += -march=mips64 FCOMMON_OPT += -march=mips64 endif -ifeq ($(CORE), 1004K) +ifeq ($(CORE), MIPS24K) +CCOMMON_OPT += -mips32r2 -mtune=24kc $(MSA_FLAGS) +FCOMMON_OPT += -mips32r2 -mtune=24kc $(MSA_FLAGS) +endif + +ifeq ($(CORE), MIPS1004K) CCOMMON_OPT += -mips32r2 $(MSA_FLAGS) FCOMMON_OPT += -mips32r2 $(MSA_FLAGS) endif @@ -1390,6 +1395,8 @@ export FUNCTION_PROFILE export TARGET_CORE export NO_AVX512 +export SHGEMM_UNROLL_M +export SHGEMM_UNROLL_N export SGEMM_UNROLL_M export SGEMM_UNROLL_N export DGEMM_UNROLL_M From 6721f2750eabc6b9839e1b4d1aef39fa46810bc7 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sun, 19 Apr 2020 06:51:57 +0200 Subject: [PATCH 06/14] Update TargetList.txt --- TargetList.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/TargetList.txt b/TargetList.txt index f4a40ed02..e2d2f4026 100644 --- a/TargetList.txt +++ b/TargetList.txt @@ -58,7 +58,8 @@ CELL 3.MIPS CPU: P5600 -1004K +MIPS1004K +MIPS24K 4.MIPS64 CPU: SICORTEX From 577c5d9f8fc3b1776bbaf5d6f15eabc3c0b8d170 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sun, 19 Apr 2020 06:54:52 +0200 Subject: [PATCH 07/14] Update README.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 61393bd8f..6dc3c7b42 100644 --- a/README.md +++ b/README.md @@ -122,6 +122,11 @@ Please read `GotoBLAS_01Readme.txt` for older CPU models already supported by th - **AMD STEAMROLLER**: Uses Bulldozer codes with some optimizations. - **AMD ZEN**: Uses Haswell codes with some optimizations. +#### MIPS32 + +- **MIPS 1004K**: uses P5600 codes +- **MIPS 24K**: uses P5600 codes + #### MIPS64 - **ICT Loongson 3A**: Optimized Level-3 BLAS and the part of Level-1,2. From 8792fc4d5f0dd69de1024963611304dd291e9792 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sun, 19 Apr 2020 07:21:48 +0200 Subject: [PATCH 08/14] Disable RPCC macro on MIPS24K --- common_mips.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/common_mips.h b/common_mips.h index 2cc923043..dd2f8d558 100644 --- a/common_mips.h +++ b/common_mips.h @@ -43,6 +43,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSEMBLER +#if !defined(MIPS24K) static inline unsigned int rpcc(void){ unsigned long ret; @@ -53,6 +54,7 @@ static inline unsigned int rpcc(void){ return ret; } #define RPCC_DEFINED +#endif static inline int blas_quickdivide(blasint x, blasint y){ return x / y; From 2f4a8e5bc4504c0ba9faca82e0ebfb4d50120a48 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sun, 19 Apr 2020 13:22:19 +0200 Subject: [PATCH 09/14] Rename the FORCE entries for 24K and 1004K to include the MIPS prefix --- getarch.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/getarch.c b/getarch.c index 8a6684975..6be006aee 100644 --- a/getarch.c +++ b/getarch.c @@ -812,7 +812,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #else #endif -#ifdef FORCE_1004K +#ifdef FORCE_MIPS1004K #define FORCE #define ARCHITECTURE "MIPS" #define SUBARCHITECTURE "1004K" @@ -826,7 +826,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #else #endif -#ifdef FORCE_24K +#ifdef FORCE_MIPS24K #define FORCE #define ARCHITECTURE "MIPS" #define SUBARCHITECTURE "24K" From 0d18f231fc4d5591a30e995c695c3b729b4178a5 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sun, 19 Apr 2020 13:52:58 +0200 Subject: [PATCH 10/14] Update getarch.c --- getarch.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/getarch.c b/getarch.c index 6be006aee..0bd5bc601 100644 --- a/getarch.c +++ b/getarch.c @@ -815,28 +815,28 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifdef FORCE_MIPS1004K #define FORCE #define ARCHITECTURE "MIPS" -#define SUBARCHITECTURE "1004K" +#define SUBARCHITECTURE "MIPS1004K" #define SUBDIRNAME "mips" #define ARCHCONFIG "-D1004K " \ "-DL1_DATA_SIZE=32768 -DL1_DATA_LINESIZE=32 " \ "-DL2_SIZE=262144 -DL2_LINESIZE=32 " \ "-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8 " -#define LIBNAME "1004K" -#define CORENAME "1004K" +#define LIBNAME "mips1004K" +#define CORENAME "MIPS1004K" #else #endif #ifdef FORCE_MIPS24K #define FORCE #define ARCHITECTURE "MIPS" -#define SUBARCHITECTURE "24K" +#define SUBARCHITECTURE "MIPS24K" #define SUBDIRNAME "mips" #define ARCHCONFIG "-D24K " \ "-DL1_DATA_SIZE=32768 -DL1_DATA_LINESIZE=32 " \ "-DL2_SIZE=32768 -DL2_LINESIZE=32 " \ "-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8 " -#define LIBNAME "24K" -#define CORENAME "24K" +#define LIBNAME "mips24K" +#define CORENAME "MIPS24K" #else #endif From 5afb66812f21406b290878388bc3a74dde455910 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sun, 19 Apr 2020 14:55:31 +0200 Subject: [PATCH 11/14] Update getarch.c --- getarch.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/getarch.c b/getarch.c index 0bd5bc601..e739d2de9 100644 --- a/getarch.c +++ b/getarch.c @@ -817,7 +817,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define ARCHITECTURE "MIPS" #define SUBARCHITECTURE "MIPS1004K" #define SUBDIRNAME "mips" -#define ARCHCONFIG "-D1004K " \ +#define ARCHCONFIG "-DMIPS1004K " \ "-DL1_DATA_SIZE=32768 -DL1_DATA_LINESIZE=32 " \ "-DL2_SIZE=262144 -DL2_LINESIZE=32 " \ "-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8 " @@ -831,7 +831,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define ARCHITECTURE "MIPS" #define SUBARCHITECTURE "MIPS24K" #define SUBDIRNAME "mips" -#define ARCHCONFIG "-D24K " \ +#define ARCHCONFIG "-DMIPS24K " \ "-DL1_DATA_SIZE=32768 -DL1_DATA_LINESIZE=32 " \ "-DL2_SIZE=32768 -DL2_LINESIZE=32 " \ "-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8 " From 6a04efb1227fc6afd2ba72987b1780344da9eae6 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sun, 19 Apr 2020 15:43:54 +0200 Subject: [PATCH 12/14] Rename KERNEL files to include MIPS prefix --- kernel/mips/KERNEL.MIPS1004K | 1 + kernel/mips/KERNEL.MIPS24K | 1 + 2 files changed, 2 insertions(+) create mode 100644 kernel/mips/KERNEL.MIPS1004K create mode 100644 kernel/mips/KERNEL.MIPS24K diff --git a/kernel/mips/KERNEL.MIPS1004K b/kernel/mips/KERNEL.MIPS1004K new file mode 100644 index 000000000..67135356e --- /dev/null +++ b/kernel/mips/KERNEL.MIPS1004K @@ -0,0 +1 @@ +include $(KERNELDIR)/KERNEL.P5600 diff --git a/kernel/mips/KERNEL.MIPS24K b/kernel/mips/KERNEL.MIPS24K new file mode 100644 index 000000000..67135356e --- /dev/null +++ b/kernel/mips/KERNEL.MIPS24K @@ -0,0 +1 @@ +include $(KERNELDIR)/KERNEL.P5600 From 7353ea5afc682d12944cfd97ca8a24daa83304a3 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sun, 19 Apr 2020 15:44:19 +0200 Subject: [PATCH 13/14] Delete KERNEL.24K --- kernel/mips/KERNEL.24K | 1 - 1 file changed, 1 deletion(-) delete mode 100644 kernel/mips/KERNEL.24K diff --git a/kernel/mips/KERNEL.24K b/kernel/mips/KERNEL.24K deleted file mode 100644 index 67135356e..000000000 --- a/kernel/mips/KERNEL.24K +++ /dev/null @@ -1 +0,0 @@ -include $(KERNELDIR)/KERNEL.P5600 From e55ec82bb92338d09ecd77357da3fcdfac0a7902 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sun, 19 Apr 2020 15:44:30 +0200 Subject: [PATCH 14/14] Delete KERNEL.1004K --- kernel/mips/KERNEL.1004K | 1 - 1 file changed, 1 deletion(-) delete mode 100644 kernel/mips/KERNEL.1004K diff --git a/kernel/mips/KERNEL.1004K b/kernel/mips/KERNEL.1004K deleted file mode 100644 index 67135356e..000000000 --- a/kernel/mips/KERNEL.1004K +++ /dev/null @@ -1 +0,0 @@ -include $(KERNELDIR)/KERNEL.P5600