//===- X86TargetParser.def - X86 target parsing defines ---------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file provides defines to build up the X86 target parser's logic.
//
//===----------------------------------------------------------------------===//

// NOTE: NO INCLUDE GUARD DESIRED!

#ifndef X86_VENDOR
#define X86_VENDOR(ENUM, STR)
#endif
X86_VENDOR(VENDOR_INTEL, "intel")
X86_VENDOR(VENDOR_AMD,   "amd")
#undef X86_VENDOR

// This macro is used to implement CPU types that have an alias. As of now
// there is only ever one alias.
#ifndef X86_CPU_TYPE_COMPAT_WITH_ALIAS
#define X86_CPU_TYPE_COMPAT_WITH_ALIAS(ARCHNAME, ENUM, STR, ALIAS) X86_CPU_TYPE_COMPAT(ARCHNAME, ENUM, STR)
#endif

// This macro is used for cpu types present in compiler-rt/libgcc.
#ifndef X86_CPU_TYPE_COMPAT
#define X86_CPU_TYPE_COMPAT(ARCHNAME, ENUM, STR) X86_CPU_TYPE(ARCHNAME, ENUM)
#endif

#ifndef X86_CPU_TYPE
#define X86_CPU_TYPE(ARCHNAME, ENUM)
#endif
X86_CPU_TYPE_COMPAT_WITH_ALIAS("bonnell",    INTEL_BONNELL,    "bonnell", "atom")
X86_CPU_TYPE_COMPAT           ("core2",      INTEL_CORE2,      "core2")
X86_CPU_TYPE_COMPAT           ("nehalem",    INTEL_COREI7,     "corei7")
X86_CPU_TYPE_COMPAT_WITH_ALIAS("amdfam10",   AMDFAM10H,        "amdfam10h", "amdfam10")
X86_CPU_TYPE_COMPAT_WITH_ALIAS("bdver1",     AMDFAM15H,        "amdfam15h", "amdfam15")
X86_CPU_TYPE_COMPAT_WITH_ALIAS("silvermont", INTEL_SILVERMONT, "silvermont", "slm")
X86_CPU_TYPE_COMPAT           ("knl",        INTEL_KNL,        "knl")
X86_CPU_TYPE_COMPAT           ("btver1",     AMD_BTVER1,       "btver1")
X86_CPU_TYPE_COMPAT           ("btver2",     AMD_BTVER2,       "btver2")
X86_CPU_TYPE_COMPAT           ("znver1",     AMDFAM17H,        "amdfam17h")
X86_CPU_TYPE_COMPAT           ("knm",        INTEL_KNM,        "knm")
// Entries below this are not in libgcc/compiler-rt.
X86_CPU_TYPE                  ("i386",        INTEL_i386)
X86_CPU_TYPE                  ("i486",        INTEL_i486)
X86_CPU_TYPE                  ("pentium",     INTEL_PENTIUM)
X86_CPU_TYPE                  ("pentium-mmx", INTEL_PENTIUM_MMX)
X86_CPU_TYPE                  ("pentiumpro",  INTEL_PENTIUM_PRO)
X86_CPU_TYPE                  ("pentium2",    INTEL_PENTIUM_II)
X86_CPU_TYPE                  ("pentium3",    INTEL_PENTIUM_III)
X86_CPU_TYPE                  ("pentium4",    INTEL_PENTIUM_IV)
X86_CPU_TYPE                  ("pentium-m",   INTEL_PENTIUM_M)
X86_CPU_TYPE                  ("yonah",       INTEL_CORE_DUO)
X86_CPU_TYPE                  ("nocona",      INTEL_NOCONA)
X86_CPU_TYPE                  ("prescott",    INTEL_PRESCOTT)
X86_CPU_TYPE                  ("i486",        AMD_i486)
X86_CPU_TYPE                  ("pentium",     AMDPENTIUM)
X86_CPU_TYPE                  ("athlon",      AMD_ATHLON)
X86_CPU_TYPE                  ("athlon-xp",   AMD_ATHLON_XP)
X86_CPU_TYPE                  ("k8",          AMD_K8)
X86_CPU_TYPE                  ("k8-sse3",     AMD_K8SSE3)
X86_CPU_TYPE                  ("goldmont",    INTEL_GOLDMONT)
X86_CPU_TYPE                  ("goldmont-plus", INTEL_GOLDMONT_PLUS)
X86_CPU_TYPE                  ("tremont",     INTEL_TREMONT)
#undef X86_CPU_TYPE_COMPAT_WITH_ALIAS
#undef X86_CPU_TYPE_COMPAT
#undef X86_CPU_TYPE

// This macro is used for cpu subtypes present in compiler-rt/libgcc.
#ifndef X86_CPU_SUBTYPE_COMPAT
#define X86_CPU_SUBTYPE_COMPAT(ARCHNAME, ENUM, STR) X86_CPU_SUBTYPE(ARCHNAME, ENUM)
#endif

#ifndef X86_CPU_SUBTYPE
#define X86_CPU_SUBTYPE(ARCHNAME, ENUM)
#endif

X86_CPU_SUBTYPE_COMPAT("nehalem",        INTEL_COREI7_NEHALEM,        "nehalem")
X86_CPU_SUBTYPE_COMPAT("westmere",       INTEL_COREI7_WESTMERE,       "westmere")
X86_CPU_SUBTYPE_COMPAT("sandybridge",    INTEL_COREI7_SANDYBRIDGE,    "sandybridge")
X86_CPU_SUBTYPE_COMPAT("amdfam10",       AMDFAM10H_BARCELONA,         "barcelona")
X86_CPU_SUBTYPE_COMPAT("amdfam10",       AMDFAM10H_SHANGHAI,          "shanghai")
X86_CPU_SUBTYPE_COMPAT("amdfam10",       AMDFAM10H_ISTANBUL,          "istanbul")
X86_CPU_SUBTYPE_COMPAT("bdver1",         AMDFAM15H_BDVER1,            "bdver1")
X86_CPU_SUBTYPE_COMPAT("bdver2",         AMDFAM15H_BDVER2,            "bdver2")
X86_CPU_SUBTYPE_COMPAT("bdver3",         AMDFAM15H_BDVER3,            "bdver3")
X86_CPU_SUBTYPE_COMPAT("bdver4",         AMDFAM15H_BDVER4,            "bdver4")
X86_CPU_SUBTYPE_COMPAT("znver1",         AMDFAM17H_ZNVER1,            "znver1")
X86_CPU_SUBTYPE_COMPAT("ivybridge",      INTEL_COREI7_IVYBRIDGE,      "ivybridge")
X86_CPU_SUBTYPE_COMPAT("haswell",        INTEL_COREI7_HASWELL,        "haswell")
X86_CPU_SUBTYPE_COMPAT("broadwell",      INTEL_COREI7_BROADWELL,      "broadwell")
X86_CPU_SUBTYPE_COMPAT("skylake",        INTEL_COREI7_SKYLAKE,        "skylake")
X86_CPU_SUBTYPE_COMPAT("skylake-avx512", INTEL_COREI7_SKYLAKE_AVX512, "skylake-avx512")
X86_CPU_SUBTYPE_COMPAT("cannonlake",     INTEL_COREI7_CANNONLAKE,     "cannonlake")
// Entries below this are not in libgcc/compiler-rt.
X86_CPU_SUBTYPE       ("core2",          INTEL_CORE2_65)
X86_CPU_SUBTYPE       ("penryn",         INTEL_CORE2_45)
X86_CPU_SUBTYPE       ("k6",             AMDPENTIUM_K6)
X86_CPU_SUBTYPE       ("k6-2",           AMDPENTIUM_K62)
X86_CPU_SUBTYPE       ("k6-3",           AMDPENTIUM_K63)
X86_CPU_SUBTYPE       ("geode",          AMDPENTIUM_GEODE)
#undef X86_CPU_SUBTYPE_COMPAT
#undef X86_CPU_SUBTYPE


// This macro is used for cpu types present in compiler-rt/libgcc.
#ifndef X86_FEATURE_COMPAT
#define X86_FEATURE_COMPAT(VAL, ENUM, STR) X86_FEATURE(VAL, ENUM)
#endif

#ifndef X86_FEATURE
#define X86_FEATURE(VAL, ENUM)
#endif
X86_FEATURE_COMPAT( 0, FEATURE_CMOV,            "cmov")
X86_FEATURE_COMPAT( 1, FEATURE_MMX,             "mmx")
X86_FEATURE_COMPAT( 2, FEATURE_POPCNT,          "popcnt")
X86_FEATURE_COMPAT( 3, FEATURE_SSE,             "sse")
X86_FEATURE_COMPAT( 4, FEATURE_SSE2,            "sse2")
X86_FEATURE_COMPAT( 5, FEATURE_SSE3,            "sse3")
X86_FEATURE_COMPAT( 6, FEATURE_SSSE3,           "ssse3")
X86_FEATURE_COMPAT( 7, FEATURE_SSE4_1,          "sse4.1")
X86_FEATURE_COMPAT( 8, FEATURE_SSE4_2,          "sse4.2")
X86_FEATURE_COMPAT( 9, FEATURE_AVX,             "avx")
X86_FEATURE_COMPAT(10, FEATURE_AVX2,            "avx2")
X86_FEATURE_COMPAT(11, FEATURE_SSE4_A,          "sse4a")
X86_FEATURE_COMPAT(12, FEATURE_FMA4,            "fma4")
X86_FEATURE_COMPAT(13, FEATURE_XOP,             "xop")
X86_FEATURE_COMPAT(14, FEATURE_FMA,             "fma")
X86_FEATURE_COMPAT(15, FEATURE_AVX512F,         "avx512f")
X86_FEATURE_COMPAT(16, FEATURE_BMI,             "bmi")
X86_FEATURE_COMPAT(17, FEATURE_BMI2,            "bmi2")
X86_FEATURE_COMPAT(18, FEATURE_AES,             "aes")
X86_FEATURE_COMPAT(19, FEATURE_PCLMUL,          "pclmul")
X86_FEATURE_COMPAT(20, FEATURE_AVX512VL,        "avx512vl")
X86_FEATURE_COMPAT(21, FEATURE_AVX512BW,        "avx512bw")
X86_FEATURE_COMPAT(22, FEATURE_AVX512DQ,        "avx512dq")
X86_FEATURE_COMPAT(23, FEATURE_AVX512CD,        "avx512cd")
X86_FEATURE_COMPAT(24, FEATURE_AVX512ER,        "avx512er")
X86_FEATURE_COMPAT(25, FEATURE_AVX512PF,        "avx512pf")
X86_FEATURE_COMPAT(26, FEATURE_AVX512VBMI,      "avx512vbmi")
X86_FEATURE_COMPAT(27, FEATURE_AVX512IFMA,      "avx512ifma")
X86_FEATURE_COMPAT(28, FEATURE_AVX5124VNNIW,    "avx5124vnniw")
X86_FEATURE_COMPAT(29, FEATURE_AVX5124FMAPS,    "avx5124fmaps")
X86_FEATURE_COMPAT(30, FEATURE_AVX512VPOPCNTDQ, "avx512vpopcntdq")
// Features below here are not in libgcc/compiler-rt.
X86_FEATURE       (32, FEATURE_MOVBE)
X86_FEATURE       (33, FEATURE_ADX)
X86_FEATURE       (34, FEATURE_EM64T)
X86_FEATURE       (35, FEATURE_CLFLUSHOPT)
X86_FEATURE       (36, FEATURE_SHA)
#undef X86_FEATURE_COMPAT
#undef X86_FEATURE
