Add basic autodetection support for Fujitsu A64FX
This commit is contained in:
parent
b57acdf2d3
commit
3cb1ec2a96
|
@ -153,6 +153,15 @@ endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq (1, $(filter 1,$(GCCVERSIONGTEQ11) $(ISCLANG)))
|
||||||
|
ifeq ($(CORE), A64FX)
|
||||||
|
CCOMMON_OPT += -march=armv8.2-a -mtune=a64fx
|
||||||
|
ifneq ($(F_COMPILER), NAG)
|
||||||
|
FCOMMON_OPT += -march=armv8.2-a -mtune=a64fx
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
endif
|
endif
|
|
@ -55,6 +55,8 @@ size_t length64=sizeof(value64);
|
||||||
#define CPU_EMAG8180 10
|
#define CPU_EMAG8180 10
|
||||||
// Apple
|
// Apple
|
||||||
#define CPU_VORTEX 13
|
#define CPU_VORTEX 13
|
||||||
|
// Fujitsu
|
||||||
|
#define CPU_A64FX 14
|
||||||
|
|
||||||
static char *cpuname[] = {
|
static char *cpuname[] = {
|
||||||
"UNKNOWN",
|
"UNKNOWN",
|
||||||
|
@ -71,7 +73,8 @@ static char *cpuname[] = {
|
||||||
"NEOVERSEN1",
|
"NEOVERSEN1",
|
||||||
"THUNDERX3T110",
|
"THUNDERX3T110",
|
||||||
"VORTEX",
|
"VORTEX",
|
||||||
"CORTEXA55"
|
"CORTEXA55",
|
||||||
|
"A64FX"
|
||||||
};
|
};
|
||||||
|
|
||||||
static char *cpuname_lower[] = {
|
static char *cpuname_lower[] = {
|
||||||
|
@ -89,7 +92,8 @@ static char *cpuname_lower[] = {
|
||||||
"neoversen1",
|
"neoversen1",
|
||||||
"thunderx3t110",
|
"thunderx3t110",
|
||||||
"vortex",
|
"vortex",
|
||||||
"cortexa55"
|
"cortexa55",
|
||||||
|
"a64fx"
|
||||||
};
|
};
|
||||||
|
|
||||||
int get_feature(char *search)
|
int get_feature(char *search)
|
||||||
|
@ -185,6 +189,9 @@ int detect(void)
|
||||||
// Ampere
|
// Ampere
|
||||||
else if (strstr(cpu_implementer, "0x50") && strstr(cpu_part, "0x000"))
|
else if (strstr(cpu_implementer, "0x50") && strstr(cpu_part, "0x000"))
|
||||||
return CPU_EMAG8180;
|
return CPU_EMAG8180;
|
||||||
|
// Fujitsu
|
||||||
|
else if (strstr(cpu_implementer, "0x46") && strstr(cpu_part, "0x001"))
|
||||||
|
return CPU_A64FX;
|
||||||
}
|
}
|
||||||
|
|
||||||
p = (char *) NULL ;
|
p = (char *) NULL ;
|
||||||
|
@ -437,6 +444,16 @@ void get_cpuconfig(void)
|
||||||
printf("#define DTB_SIZE 4096 \n");
|
printf("#define DTB_SIZE 4096 \n");
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
case CPU_A64FX:
|
||||||
|
printf("#define A64FX\n");
|
||||||
|
printf("#define L1_CODE_SIZE 65535\n");
|
||||||
|
printf("#define L1_DATA_SIZE 65535\n");
|
||||||
|
printf("#define L1_DATA_LINESIZE 256\n");
|
||||||
|
printf("#define L2_SIZE 8388608\n");
|
||||||
|
printf("#define L2_LINESIZE 256\n");
|
||||||
|
printf("#define DTB_DEFAULT_ENTRIES 64\n");
|
||||||
|
printf("#define DTB_SIZE 4096\n");
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
get_cpucount();
|
get_cpucount();
|
||||||
}
|
}
|
||||||
|
|
67
getarch.c
67
getarch.c
|
@ -469,55 +469,6 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FORCE_SAPPHIRERAPIDS
|
|
||||||
#define FORCE
|
|
||||||
#define FORCE_INTEL
|
|
||||||
#define ARCHITECTURE "X86"
|
|
||||||
#ifdef NO_AVX512
|
|
||||||
#ifdef NO_AVX2
|
|
||||||
#ifdef NO_AVX
|
|
||||||
#define SUBARCHITECTURE "NEHALEM"
|
|
||||||
#define ARCHCONFIG "-DNEHALEM " \
|
|
||||||
"-DL1_DATA_SIZE=32768 -DL1_DATA_LINESIZE=64 " \
|
|
||||||
"-DL2_SIZE=262144 -DL2_LINESIZE=64 " \
|
|
||||||
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 " \
|
|
||||||
"-DHAVE_CMOV -DHAVE_MMX -DHAVE_SSE -DHAVE_SSE2 -DHAVE_SSE3 -DHAVE_SSSE3 -DHAVE_SSE4_1 -DHAVE_SSE4_2"
|
|
||||||
#define LIBNAME "nehalem"
|
|
||||||
#define CORENAME "NEHALEM"
|
|
||||||
#else
|
|
||||||
#define SUBARCHITECTURE "SANDYBRIDGE"
|
|
||||||
#define ARCHCONFIG "-DSANDYBRIDGE " \
|
|
||||||
"-DL1_DATA_SIZE=32768 -DL1_DATA_LINESIZE=64 " \
|
|
||||||
"-DL2_SIZE=262144 -DL2_LINESIZE=64 " \
|
|
||||||
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 " \
|
|
||||||
"-DHAVE_CMOV -DHAVE_MMX -DHAVE_SSE -DHAVE_SSE2 -DHAVE_SSE3 -DHAVE_SSSE3 -DHAVE_SSE4_1 -DHAVE_SSE4_2 -DHAVE_AVX"
|
|
||||||
#define LIBNAME "sandybridge"
|
|
||||||
#define CORENAME "SANDYBRIDGE"
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#define SUBARCHITECTURE "HASWELL"
|
|
||||||
#define ARCHCONFIG "-DHASWELL " \
|
|
||||||
"-DL1_DATA_SIZE=32768 -DL1_DATA_LINESIZE=64 " \
|
|
||||||
"-DL2_SIZE=262144 -DL2_LINESIZE=64 " \
|
|
||||||
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 " \
|
|
||||||
"-DHAVE_CMOV -DHAVE_MMX -DHAVE_SSE -DHAVE_SSE2 -DHAVE_SSE3 -DHAVE_SSSE3 -DHAVE_SSE4_1 -DHAVE_SSE4_2 -DHAVE_AVX " \
|
|
||||||
"-DHAVE_AVX2 -DHAVE_FMA3 -DFMA3"
|
|
||||||
#define LIBNAME "haswell"
|
|
||||||
#define CORENAME "HASWELL"
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#define SUBARCHITECTURE "SAPPHIRERAPIDS"
|
|
||||||
#define ARCHCONFIG "-DSAPPHIRERAPIDS " \
|
|
||||||
"-DL1_DATA_SIZE=32768 -DL1_DATA_LINESIZE=64 " \
|
|
||||||
"-DL2_SIZE=262144 -DL2_LINESIZE=64 " \
|
|
||||||
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 " \
|
|
||||||
"-DHAVE_CMOV -DHAVE_MMX -DHAVE_SSE -DHAVE_SSE2 -DHAVE_SSE3 -DHAVE_SSSE3 -DHAVE_SSE4_1 -DHAVE_SSE4_2 -DHAVE_AVX " \
|
|
||||||
"-DHAVE_AVX2 -DHAVE_FMA3 -DFMA3 -DHAVE_AVX512VL -DHAVE_AVX512BF16 -march=sapphirerapids"
|
|
||||||
#define LIBNAME "sapphirerapids"
|
|
||||||
#define CORENAME "SAPPHIRERAPIDS"
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef FORCE_ATOM
|
#ifdef FORCE_ATOM
|
||||||
#define FORCE
|
#define FORCE
|
||||||
#define FORCE_INTEL
|
#define FORCE_INTEL
|
||||||
|
@ -1424,6 +1375,24 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#define CORENAME "VORTEX"
|
#define CORENAME "VORTEX"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef FORCE_A64FX
|
||||||
|
#define ARMV8
|
||||||
|
#define FORCE
|
||||||
|
#define ARCHITECTURE "ARM64"
|
||||||
|
#define SUBARCHITECTURE "A64FX"
|
||||||
|
#define SUBDIRNAME "arm64"
|
||||||
|
#define ARCHCONFIG "-DA64FX " \
|
||||||
|
"-DL1_CODE_SIZE=65536 -DL1_CODE_LINESIZE=256 -DL1_CODE_ASSOCIATIVE=8 " \
|
||||||
|
"-DL1_DATA_SIZE=32768 -DL1_DATA_LINESIZE=256 -DL1_DATA_ASSOCIATIVE=8 " \
|
||||||
|
"-DL2_SIZE=8388608 -DL2_LINESIZE=256 -DL2_ASSOCIATIVE=8 " \
|
||||||
|
"-DL3_SIZE=0 -DL3_LINESIZE=0 -DL3_ASSOCIATIVE=0 " \
|
||||||
|
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 " \
|
||||||
|
"-DHAVE_VFPV4 -DHAVE_VFPV3 -DHAVE_VFP -DHAVE_NEON -DARMV8"
|
||||||
|
#define LIBNAME "a64fx"
|
||||||
|
#define CORENAME "A64FX"
|
||||||
|
#else
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef FORCE_ZARCH_GENERIC
|
#ifdef FORCE_ZARCH_GENERIC
|
||||||
#define FORCE
|
#define FORCE
|
||||||
#define ARCHITECTURE "ZARCH"
|
#define ARCHITECTURE "ZARCH"
|
||||||
|
|
Loading…
Reference in New Issue