# and OS. However, the performance is low.
# NO_AVX = 1
+# Don't use Haswell optimizations if binutils is too old (e.g. RHEL6)
+# NO_AVX2 = 1
+
# Don't use parallel make.
# NO_PARALLEL_MAKE = 1
GETARCH_FLAGS += -DNO_AVX
endif
+ifeq ($(NO_AVX2), 1)
+GETARCH_FLAGS += -DNO_AVX2
+endif
+
ifeq ($(DEBUG), 1)
GETARCH_FLAGS += -g
endif
ifeq ($(ARCH), x86_64)
DYNAMIC_CORE = PRESCOTT CORE2 PENRYN DUNNINGTON NEHALEM OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO
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
CCOMMON_OPT += -DNO_AVX
endif
+ifeq ($(NO_AVX2), 1)
+CCOMMON_OPT += -DNO_AVX2
+endif
+
ifdef SMP
CCOMMON_OPT += -DSMP_SERVER
case 12:
case 15:
if(support_avx())
+#ifndef NO_AVX2
return CPUTYPE_HASWELL;
+#else
+ return CPUTYPE_SANDYBRIDGE;
+#endif
else
return CPUTYPE_NEHALEM;
}
case 5:
case 6:
if(support_avx())
+#ifndef NO_AVX2
return CPUTYPE_HASWELL;
+#else
+ return CPUTYPE_SANDYBRIDGE;
+#endif
else
return CPUTYPE_NEHALEM;
}
case 12:
case 15:
if(support_avx())
+#ifndef NO_AVX2
return CORE_HASWELL;
+#else
+ return CORE_SANDYBRIDGE;
+#endif
else
return CORE_NEHALEM;
}
case 5:
case 6:
if(support_avx())
+#ifndef NO_AVX2
return CORE_HASWELL;
+#else
+ return CORE_SANDYBRIDGE;
+#endif
else
return CORE_NEHALEM;
}
extern gotoblas_t gotoblas_SANDYBRIDGE;
extern gotoblas_t gotoblas_BULLDOZER;
extern gotoblas_t gotoblas_PILEDRIVER;
+#ifdef NO_AVX2
+#define gotoblas_HASWELL gotoblas_SANDYBRIDGE
+#else
extern gotoblas_t gotoblas_HASWELL;
+#endif
#else
//Use NEHALEM kernels for sandy bridge
#define gotoblas_SANDYBRIDGE gotoblas_NEHALEM