cpudetect 0.2.0

Ergonomic helpers for CPU feature detection
Documentation
use crate::declare_is_compatible;
use crate::x86_64::features::*;

declare_is_compatible!("k8", "fxsr", "sse", "sse2");

declare_is_compatible!("opteron", "fxsr", "sse", "sse2");

declare_is_compatible!("athlon64", "fxsr", "sse", "sse2");

declare_is_compatible!("athlon_fx", "fxsr", "sse", "sse2");

declare_is_compatible!("k8_sse3", "cmpxchg16b", "fxsr", "sse", "sse2", "sse3");

declare_is_compatible!("opteron_sse3", "cmpxchg16b", "fxsr", "sse", "sse2", "sse3");

declare_is_compatible!("athlon64_sse3", "cmpxchg16b", "fxsr", "sse", "sse2", "sse3");

declare_is_compatible!(
    "amdfam10",
    "cmpxchg16b",
    "fxsr",
    "lzcnt",
    "popcnt",
    "sse",
    "sse2",
    "sse3",
    "sse4a"
);

declare_is_compatible!(
    "barcelona",
    "cmpxchg16b",
    "fxsr",
    "lzcnt",
    "popcnt",
    "sse",
    "sse2",
    "sse3",
    "sse4a"
);

declare_is_compatible!(
    "btver1",
    "cmpxchg16b",
    "fxsr",
    "lzcnt",
    "popcnt",
    "sse",
    "sse2",
    "sse3",
    "sse4a",
    "ssse3"
);

declare_is_compatible!(
    "bdver1",
    "aes",
    "avx",
    "cmpxchg16b",
    "fxsr",
    "lzcnt",
    "pclmulqdq",
    "popcnt",
    "sse",
    "sse2",
    "sse3",
    "sse4_1",
    "sse4_2",
    "sse4a",
    "ssse3",
    "xsave"
);

declare_is_compatible!(
    "bdver2",
    "aes",
    "avx",
    "bmi1",
    "cmpxchg16b",
    "f16c",
    "fma",
    "fxsr",
    "lzcnt",
    "pclmulqdq",
    "popcnt",
    "sse",
    "sse2",
    "sse3",
    "sse4_1",
    "sse4_2",
    "sse4a",
    "ssse3",
    "tbm",
    "xsave"
);

declare_is_compatible!(
    "btver2",
    "aes",
    "avx",
    "bmi1",
    "cmpxchg16b",
    "f16c",
    "fxsr",
    "lzcnt",
    "movbe",
    "pclmulqdq",
    "popcnt",
    "sse",
    "sse2",
    "sse3",
    "sse4_1",
    "sse4_2",
    "sse4a",
    "ssse3",
    "xsave",
    "xsaveopt"
);

declare_is_compatible!(
    "bdver3",
    "aes",
    "avx",
    "bmi1",
    "cmpxchg16b",
    "f16c",
    "fma",
    "fxsr",
    "lzcnt",
    "pclmulqdq",
    "popcnt",
    "sse",
    "sse2",
    "sse3",
    "sse4_1",
    "sse4_2",
    "sse4a",
    "ssse3",
    "tbm",
    "xsave",
    "xsaveopt"
);

declare_is_compatible!(
    "bdver4",
    "aes",
    "avx",
    "avx2",
    "bmi1",
    "bmi2",
    "cmpxchg16b",
    "f16c",
    "fma",
    "fxsr",
    "lzcnt",
    "movbe",
    "pclmulqdq",
    "popcnt",
    "rdrand",
    "sse",
    "sse2",
    "sse3",
    "sse4_1",
    "sse4_2",
    "sse4a",
    "ssse3",
    "tbm",
    "xsave",
    "xsaveopt"
);

declare_is_compatible!(
    "znver1",
    "adx",
    "aes",
    "avx",
    "avx2",
    "bmi1",
    "bmi2",
    "cmpxchg16b",
    "f16c",
    "fma",
    "fxsr",
    "lzcnt",
    "movbe",
    "pclmulqdq",
    "popcnt",
    "rdrand",
    "rdseed",
    "sha",
    "sse",
    "sse2",
    "sse3",
    "sse4_1",
    "sse4_2",
    "sse4a",
    "ssse3",
    "xsave",
    "xsavec",
    "xsaveopt",
    "xsaves"
);

declare_is_compatible!(
    "znver2",
    "adx",
    "aes",
    "avx",
    "avx2",
    "bmi1",
    "bmi2",
    "cmpxchg16b",
    "f16c",
    "fma",
    "fxsr",
    "lzcnt",
    "movbe",
    "pclmulqdq",
    "popcnt",
    "rdrand",
    "rdseed",
    "sha",
    "sse",
    "sse2",
    "sse3",
    "sse4_1",
    "sse4_2",
    "sse4a",
    "ssse3",
    "xsave",
    "xsavec",
    "xsaveopt",
    "xsaves"
);

declare_is_compatible!(
    "znver3",
    "adx",
    "aes",
    "avx",
    "avx2",
    "bmi1",
    "bmi2",
    "cmpxchg16b",
    "f16c",
    "fma",
    "fxsr",
    "lzcnt",
    "movbe",
    "pclmulqdq",
    "popcnt",
    "rdrand",
    "rdseed",
    "sha",
    "sse",
    "sse2",
    "sse3",
    "sse4_1",
    "sse4_2",
    "sse4a",
    "ssse3",
    "vaes",
    "vpclmulqdq",
    "xsave",
    "xsavec",
    "xsaveopt",
    "xsaves"
);

declare_is_compatible!(
    "znver4",
    "adx",
    "aes",
    "avx",
    "avx2",
    "avx512bf16",
    "avx512bitalg",
    "avx512bw",
    "avx512cd",
    "avx512dq",
    "avx512f",
    "avx512ifma",
    "avx512vbmi",
    "avx512vbmi2",
    "avx512vl",
    "avx512vnni",
    "avx512vpopcntdq",
    "bmi1",
    "bmi2",
    "cmpxchg16b",
    "f16c",
    "fma",
    "fxsr",
    "gfni",
    "lzcnt",
    "movbe",
    "pclmulqdq",
    "popcnt",
    "rdrand",
    "rdseed",
    "sha",
    "sse",
    "sse2",
    "sse3",
    "sse4_1",
    "sse4_2",
    "sse4a",
    "ssse3",
    "vaes",
    "vpclmulqdq",
    "xsave",
    "xsavec",
    "xsaveopt",
    "xsaves"
);

declare_is_compatible!(
    "znver5",
    "adx",
    "aes",
    "avx",
    "avx2",
    "avx512bf16",
    "avx512bitalg",
    "avx512bw",
    "avx512cd",
    "avx512dq",
    "avx512f",
    "avx512ifma",
    "avx512vbmi",
    "avx512vbmi2",
    "avx512vl",
    "avx512vnni",
    "avx512vp2intersect",
    "avx512vpopcntdq",
    "avxvnni",
    "bmi1",
    "bmi2",
    "cmpxchg16b",
    "f16c",
    "fma",
    "fxsr",
    "gfni",
    "lzcnt",
    "movbe",
    "pclmulqdq",
    "popcnt",
    "rdrand",
    "rdseed",
    "sha",
    "sse",
    "sse2",
    "sse3",
    "sse4_1",
    "sse4_2",
    "sse4a",
    "ssse3",
    "vaes",
    "vpclmulqdq",
    "xsave",
    "xsavec",
    "xsaveopt",
    "xsaves"
);