Merge pull request #3875 from martin-frbg/issue3874
Make SVE-enabled ARM64 targets in DYNAMIC_ARCH builds depend on a relatively recent compiler
This commit is contained in:
commit
5d6fde58e3
|
@ -284,8 +284,10 @@ GETARCH_FLAGS += -DHAVE_GAS=$(HAVE_GAS)
|
||||||
# Generating Makefile.conf and config.h
|
# Generating Makefile.conf and config.h
|
||||||
DUMMY := $(shell $(MAKE) -C $(TOPDIR) -f Makefile.prebuild CC="$(CC)" FC="$(FC)" HOSTCC="$(HOSTCC)" HOST_CFLAGS="$(GETARCH_FLAGS)" CFLAGS="$(CFLAGS)" BINARY=$(BINARY) USE_OPENMP=$(USE_OPENMP) DYNAMIC_ARCH=$(DYNAMIC_ARCH) TARGET_CORE=$(TARGET_CORE) ONLY_CBLAS=$(ONLY_CBLAS) TARGET=$(TARGET) all)
|
DUMMY := $(shell $(MAKE) -C $(TOPDIR) -f Makefile.prebuild CC="$(CC)" FC="$(FC)" HOSTCC="$(HOSTCC)" HOST_CFLAGS="$(GETARCH_FLAGS)" CFLAGS="$(CFLAGS)" BINARY=$(BINARY) USE_OPENMP=$(USE_OPENMP) DYNAMIC_ARCH=$(DYNAMIC_ARCH) TARGET_CORE=$(TARGET_CORE) ONLY_CBLAS=$(ONLY_CBLAS) TARGET=$(TARGET) all)
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
ifndef TARGET_CORE
|
ifndef TARGET_CORE
|
||||||
include $(TOPDIR)/Makefile.conf
|
-include $(TOPDIR)/Makefile.conf
|
||||||
else
|
else
|
||||||
HAVE_NEON=
|
HAVE_NEON=
|
||||||
HAVE_VFP=
|
HAVE_VFP=
|
||||||
|
@ -306,7 +308,6 @@ HAVE_FMA3=
|
||||||
include $(TOPDIR)/Makefile_kernel.conf
|
include $(TOPDIR)/Makefile_kernel.conf
|
||||||
endif
|
endif
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifndef NUM_PARALLEL
|
ifndef NUM_PARALLEL
|
||||||
NUM_PARALLEL = 1
|
NUM_PARALLEL = 1
|
||||||
|
@ -664,8 +665,10 @@ DYNAMIC_CORE += CORTEXA57
|
||||||
DYNAMIC_CORE += CORTEXA72
|
DYNAMIC_CORE += CORTEXA72
|
||||||
DYNAMIC_CORE += CORTEXA73
|
DYNAMIC_CORE += CORTEXA73
|
||||||
DYNAMIC_CORE += NEOVERSEN1
|
DYNAMIC_CORE += NEOVERSEN1
|
||||||
|
ifneq ($(NO_SVE), 1)
|
||||||
DYNAMIC_CORE += NEOVERSEV1
|
DYNAMIC_CORE += NEOVERSEV1
|
||||||
DYNAMIC_CORE += NEOVERSEN2
|
DYNAMIC_CORE += NEOVERSEN2
|
||||||
|
endif
|
||||||
DYNAMIC_CORE += CORTEXA55
|
DYNAMIC_CORE += CORTEXA55
|
||||||
DYNAMIC_CORE += FALKOR
|
DYNAMIC_CORE += FALKOR
|
||||||
DYNAMIC_CORE += THUNDERX
|
DYNAMIC_CORE += THUNDERX
|
||||||
|
@ -1382,6 +1385,10 @@ ifeq ($(NO_AVX512), 1)
|
||||||
CCOMMON_OPT += -DNO_AVX512
|
CCOMMON_OPT += -DNO_AVX512
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(NO_SVE), 1)
|
||||||
|
CCOMMON_OPT += -DNO_SVE
|
||||||
|
endif
|
||||||
|
|
||||||
ifdef SMP
|
ifdef SMP
|
||||||
CCOMMON_OPT += -DSMP_SERVER
|
CCOMMON_OPT += -DSMP_SERVER
|
||||||
|
|
||||||
|
|
16
c_check
16
c_check
|
@ -240,6 +240,21 @@ if [ "$architecture" = "riscv64" ]; then
|
||||||
rm -rf "$tmpd"
|
rm -rf "$tmpd"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
no_sve=0
|
||||||
|
if [ "$architecture" = "arm64" ]; then
|
||||||
|
tmpd=`mktemp -d`
|
||||||
|
tmpf="$tmpd/a.c"
|
||||||
|
printf "#include <arm_sve.h>\n\n int main(void){}\n">> "$tmpf"
|
||||||
|
args=" -march=armv8-a+sve -c -o $tmpf.o $tmpf"
|
||||||
|
no_sve=0
|
||||||
|
{
|
||||||
|
$compiler_name $flags $args >/dev/null 2>&1
|
||||||
|
} || {
|
||||||
|
no_sve=1
|
||||||
|
}
|
||||||
|
rm -rf "$tmpd"
|
||||||
|
fi
|
||||||
|
|
||||||
c11_atomics=0
|
c11_atomics=0
|
||||||
case "$data" in
|
case "$data" in
|
||||||
*HAVE_C11*)
|
*HAVE_C11*)
|
||||||
|
@ -379,6 +394,7 @@ done
|
||||||
printf "HAVE_MSA=1\n"
|
printf "HAVE_MSA=1\n"
|
||||||
printf "MSA_FLAGS=%s\n" "$msa_flags"
|
printf "MSA_FLAGS=%s\n" "$msa_flags"
|
||||||
}
|
}
|
||||||
|
[ "$no_sve" -eq 1 ] && printf "NO_SVE=1\n"
|
||||||
[ "$no_rv64gv" -eq 1 ] && printf "NO_RV64GV=1\n"
|
[ "$no_rv64gv" -eq 1 ] && printf "NO_RV64GV=1\n"
|
||||||
[ "$no_avx512" -eq 1 ] && printf "NO_AVX512=1\n"
|
[ "$no_avx512" -eq 1 ] && printf "NO_AVX512=1\n"
|
||||||
[ "$no_avx2" -eq 1 ] && printf "NO_AVX2=1\n"
|
[ "$no_avx2" -eq 1 ] && printf "NO_AVX2=1\n"
|
||||||
|
|
|
@ -44,9 +44,12 @@ endif ()
|
||||||
|
|
||||||
if (DYNAMIC_ARCH)
|
if (DYNAMIC_ARCH)
|
||||||
if (ARM64)
|
if (ARM64)
|
||||||
set(DYNAMIC_CORE ARMV8 CORTEXA53 CORTEXA55 CORTEXA57 CORTEXA72 CORTEXA73 FALKOR THUNDERX THUNDERX2T99 TSV110 EMAG8180 NEOVERSEN1 NEOVERSEV1 NEOVERSEN2 THUNDERX3T110)
|
set(DYNAMIC_CORE ARMV8 CORTEXA53 CORTEXA55 CORTEXA57 CORTEXA72 CORTEXA73 FALKOR THUNDERX THUNDERX2T99 TSV110 EMAG8180 NEOVERSEN1 THUNDERX3T110)
|
||||||
|
if (${CMAKE_C_COMPILER_VERSION} VERSION_GREATER 9.99)
|
||||||
|
set(DYNAMIC_CORE "${DYNAMIC_CORE} NEOVERSEV1 NEOVERSEN2")
|
||||||
|
endif ()
|
||||||
if (DYNAMIC_LIST)
|
if (DYNAMIC_LIST)
|
||||||
set(DYNAMIC_CORE ARMV8 ${DYNAMIC_LIST})
|
set(DYNAMIC_CORE ARMV8 ${DYNAMIC_LIST})
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
|
@ -125,8 +125,13 @@ extern gotoblas_t gotoblas_THUNDERX2T99;
|
||||||
extern gotoblas_t gotoblas_TSV110;
|
extern gotoblas_t gotoblas_TSV110;
|
||||||
extern gotoblas_t gotoblas_EMAG8180;
|
extern gotoblas_t gotoblas_EMAG8180;
|
||||||
extern gotoblas_t gotoblas_NEOVERSEN1;
|
extern gotoblas_t gotoblas_NEOVERSEN1;
|
||||||
|
#ifndef NO_SVE
|
||||||
extern gotoblas_t gotoblas_NEOVERSEV1;
|
extern gotoblas_t gotoblas_NEOVERSEV1;
|
||||||
extern gotoblas_t gotoblas_NEOVERSEN2;
|
extern gotoblas_t gotoblas_NEOVERSEN2;
|
||||||
|
#else
|
||||||
|
#define gotoblas_NEOVERSEV1 gotoblas_ARMV8
|
||||||
|
#define gotoblas_NEOVERSEN2 gotoblas_ARMV8
|
||||||
|
#endif
|
||||||
extern gotoblas_t gotoblas_THUNDERX3T110;
|
extern gotoblas_t gotoblas_THUNDERX3T110;
|
||||||
extern gotoblas_t gotoblas_CORTEXA55;
|
extern gotoblas_t gotoblas_CORTEXA55;
|
||||||
#endif
|
#endif
|
||||||
|
@ -237,7 +242,7 @@ static gotoblas_t *get_coretype(void) {
|
||||||
p = (char *) NULL ;
|
p = (char *) NULL ;
|
||||||
infile = fopen("/sys/devices/system/cpu/cpu0/regs/identification/midr_el1","r");
|
infile = fopen("/sys/devices/system/cpu/cpu0/regs/identification/midr_el1","r");
|
||||||
if (!infile) return NULL;
|
if (!infile) return NULL;
|
||||||
fgets(buffer, sizeof(buffer), infile);
|
(void)fgets(buffer, sizeof(buffer), infile);
|
||||||
midr_el1=strtoul(buffer,NULL,16);
|
midr_el1=strtoul(buffer,NULL,16);
|
||||||
fclose(infile);
|
fclose(infile);
|
||||||
#else
|
#else
|
||||||
|
@ -274,10 +279,12 @@ static gotoblas_t *get_coretype(void) {
|
||||||
return &gotoblas_CORTEXA73;
|
return &gotoblas_CORTEXA73;
|
||||||
case 0xd0c: // Neoverse N1
|
case 0xd0c: // Neoverse N1
|
||||||
return &gotoblas_NEOVERSEN1;
|
return &gotoblas_NEOVERSEN1;
|
||||||
|
#ifndef NO_SVE
|
||||||
case 0xd49:
|
case 0xd49:
|
||||||
return &gotoblas_NEOVERSEN2;
|
return &gotoblas_NEOVERSEN2;
|
||||||
case 0xd40:
|
case 0xd40:
|
||||||
return &gotoblas_NEOVERSEV1;
|
return &gotoblas_NEOVERSEV1;
|
||||||
|
#endif
|
||||||
case 0xd05: // Cortex A55
|
case 0xd05: // Cortex A55
|
||||||
return &gotoblas_CORTEXA55;
|
return &gotoblas_CORTEXA55;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue