Refs #401. Added NO_AVX2 flag for old binutils (e.g. RHEL6)

This commit is contained in:
Zhang Xianyi 2014-07-16 08:37:55 +08:00
parent 3dd094f17a
commit c94762bb56
4 changed files with 35 additions and 1 deletions

View File

@ -99,6 +99,9 @@ NO_AFFINITY = 1
# and OS. However, the performance is low. # and OS. However, the performance is low.
# NO_AVX = 1 # NO_AVX = 1
# Don't use Haswell optimizations if binutils is too old (e.g. RHEL6)
# NO_AVX2 = 1
# Don't use parallel make. # Don't use parallel make.
# NO_PARALLEL_MAKE = 1 # NO_PARALLEL_MAKE = 1

View File

@ -109,6 +109,10 @@ ifeq ($(BINARY), 32)
GETARCH_FLAGS += -DNO_AVX GETARCH_FLAGS += -DNO_AVX
endif endif
ifeq ($(NO_AVX2), 1)
GETARCH_FLAGS += -DNO_AVX2
endif
ifeq ($(DEBUG), 1) ifeq ($(DEBUG), 1)
GETARCH_FLAGS += -g GETARCH_FLAGS += -g
endif endif
@ -385,7 +389,10 @@ endif
ifeq ($(ARCH), x86_64) ifeq ($(ARCH), x86_64)
DYNAMIC_CORE = PRESCOTT CORE2 PENRYN DUNNINGTON NEHALEM OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO DYNAMIC_CORE = PRESCOTT CORE2 PENRYN DUNNINGTON NEHALEM OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO
ifneq ($(NO_AVX), 1) ifneq ($(NO_AVX), 1)
DYNAMIC_CORE += SANDYBRIDGE BULLDOZER PILEDRIVER HASWELL DYNAMIC_CORE += SANDYBRIDGE BULLDOZER PILEDRIVER
endif
ifneq ($(NO_AVX2), 1)
DYNAMIC_CORE += HASWELL
endif endif
endif endif
@ -777,6 +784,10 @@ ifeq ($(BINARY), 32)
CCOMMON_OPT += -DNO_AVX CCOMMON_OPT += -DNO_AVX
endif endif
ifeq ($(NO_AVX2), 1)
CCOMMON_OPT += -DNO_AVX2
endif
ifdef SMP ifdef SMP
CCOMMON_OPT += -DSMP_SERVER CCOMMON_OPT += -DSMP_SERVER

View File

@ -1062,7 +1062,11 @@ int get_cpuname(void){
case 12: case 12:
case 15: case 15:
if(support_avx()) if(support_avx())
#ifndef NO_AVX2
return CPUTYPE_HASWELL; return CPUTYPE_HASWELL;
#else
return CPUTYPE_SANDYBRIDGE;
#endif
else else
return CPUTYPE_NEHALEM; return CPUTYPE_NEHALEM;
} }
@ -1072,7 +1076,11 @@ int get_cpuname(void){
case 5: case 5:
case 6: case 6:
if(support_avx()) if(support_avx())
#ifndef NO_AVX2
return CPUTYPE_HASWELL; return CPUTYPE_HASWELL;
#else
return CPUTYPE_SANDYBRIDGE;
#endif
else else
return CPUTYPE_NEHALEM; return CPUTYPE_NEHALEM;
} }
@ -1471,7 +1479,11 @@ int get_coretype(void){
case 12: case 12:
case 15: case 15:
if(support_avx()) if(support_avx())
#ifndef NO_AVX2
return CORE_HASWELL; return CORE_HASWELL;
#else
return CORE_SANDYBRIDGE;
#endif
else else
return CORE_NEHALEM; return CORE_NEHALEM;
} }
@ -1481,7 +1493,11 @@ int get_coretype(void){
case 5: case 5:
case 6: case 6:
if(support_avx()) if(support_avx())
#ifndef NO_AVX2
return CORE_HASWELL; return CORE_HASWELL;
#else
return CORE_SANDYBRIDGE;
#endif
else else
return CORE_NEHALEM; return CORE_NEHALEM;
} }

View File

@ -66,7 +66,11 @@ extern gotoblas_t gotoblas_BOBCAT;
extern gotoblas_t gotoblas_SANDYBRIDGE; extern gotoblas_t gotoblas_SANDYBRIDGE;
extern gotoblas_t gotoblas_BULLDOZER; extern gotoblas_t gotoblas_BULLDOZER;
extern gotoblas_t gotoblas_PILEDRIVER; extern gotoblas_t gotoblas_PILEDRIVER;
#ifdef NO_AVX2
#define gotoblas_HASWELL gotoblas_SANDYBRIDGE
#else
extern gotoblas_t gotoblas_HASWELL; extern gotoblas_t gotoblas_HASWELL;
#endif
#else #else
//Use NEHALEM kernels for sandy bridge //Use NEHALEM kernels for sandy bridge
#define gotoblas_SANDYBRIDGE gotoblas_NEHALEM #define gotoblas_SANDYBRIDGE gotoblas_NEHALEM