#ifndef CPUID_H
#define CPUID_H
+#if defined(__i386__) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_X64)
+#define INTEL_AMD
+#endif
+
#define VENDOR_INTEL 1
#define VENDOR_UMC 2
#define VENDOR_AMD 3
#define FAMILY_PM 7
#define FAMILY_IA64 8
-#if defined(__i386__) || defined(__x86_64__)
+#ifdef INTEL_AMD
#define GET_EXFAMILY 1
#define GET_EXMODEL 2
#define GET_TYPE 3
#define CORE_ATOM 18
#define CORE_NANO 19
#define CORE_SANDYBRIDGE 20
-#define CORE_BOBCAT 21
-#define CORE_BULLDOZER CORE_BARCELONA
-#define CORE_PILEDRIVER CORE_BARCELONA
-#define CORE_HASWELL CORE_SANDYBRIDGE
+#define CORE_BOBCAT 21
+#define CORE_BULLDOZER 22
+#define CORE_PILEDRIVER 23
+#define CORE_HASWELL 24
+#define CORE_STEAMROLLER 25
+#define CORE_EXCAVATOR 26
+#define CORE_ZEN 27
#define HAVE_SSE (1 << 0)
#define HAVE_SSE2 (1 << 1)
#define CPUTYPE_NANO 43
#define CPUTYPE_SANDYBRIDGE 44
#define CPUTYPE_BOBCAT 45
-#define CPUTYPE_BULLDOZER CPUTYPE_BARCELONA
-#define CPUTYPE_PILEDRIVER CPUTYPE_BARCELONA
-// this define is because BLAS doesn't have haswell specific optimizations yet
-#define CPUTYPE_HASWELL CPUTYPE_SANDYBRIDGE
+#define CPUTYPE_BULLDOZER 46
+#define CPUTYPE_PILEDRIVER 47
+#define CPUTYPE_HASWELL 48
+#define CPUTYPE_STEAMROLLER 49
+#define CPUTYPE_EXCAVATOR 50
+#define CPUTYPE_ZEN 51
#endif