use crate::declare_is_compatible;
use crate::x86_64::features::*;
declare_is_compatible!("nocona", "cmpxchg16b", "fxsr", "sse", "sse2", "sse3");
declare_is_compatible!(
"core2",
"cmpxchg16b",
"fxsr",
"sse",
"sse2",
"sse3",
"ssse3"
);
declare_is_compatible!(
"core_2_duo_ssse3",
"cmpxchg16b",
"fxsr",
"sse",
"sse2",
"sse3",
"ssse3"
);
declare_is_compatible!(
"penryn",
"cmpxchg16b",
"fxsr",
"sse",
"sse2",
"sse3",
"sse4_1",
"ssse3"
);
declare_is_compatible!(
"core_2_duo_sse4_1",
"cmpxchg16b",
"fxsr",
"sse",
"sse2",
"sse3",
"sse4_1",
"ssse3"
);
declare_is_compatible!(
"bonnell",
"cmpxchg16b",
"fxsr",
"movbe",
"sse",
"sse2",
"sse3",
"ssse3"
);
declare_is_compatible!(
"atom",
"cmpxchg16b",
"fxsr",
"movbe",
"sse",
"sse2",
"sse3",
"ssse3"
);
declare_is_compatible!(
"nehalem",
"cmpxchg16b",
"fxsr",
"popcnt",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3"
);
declare_is_compatible!(
"core_i7_sse4_2",
"cmpxchg16b",
"fxsr",
"popcnt",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3"
);
declare_is_compatible!(
"corei7",
"cmpxchg16b",
"fxsr",
"popcnt",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3"
);
declare_is_compatible!(
"westmere",
"cmpxchg16b",
"fxsr",
"pclmulqdq",
"popcnt",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3"
);
declare_is_compatible!(
"core_aes_pclmulqdq",
"cmpxchg16b",
"fxsr",
"pclmulqdq",
"popcnt",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3"
);
declare_is_compatible!(
"sandybridge",
"avx",
"cmpxchg16b",
"fxsr",
"pclmulqdq",
"popcnt",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsaveopt"
);
declare_is_compatible!(
"core_2nd_gen_avx",
"avx",
"cmpxchg16b",
"fxsr",
"pclmulqdq",
"popcnt",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsaveopt"
);
declare_is_compatible!(
"corei7_avx",
"avx",
"cmpxchg16b",
"fxsr",
"pclmulqdq",
"popcnt",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsaveopt"
);
declare_is_compatible!(
"ivybridge",
"avx",
"cmpxchg16b",
"f16c",
"fxsr",
"pclmulqdq",
"popcnt",
"rdrand",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsaveopt"
);
declare_is_compatible!(
"core_avx_i",
"avx",
"cmpxchg16b",
"f16c",
"fxsr",
"pclmulqdq",
"popcnt",
"rdrand",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsaveopt"
);
declare_is_compatible!(
"core_3rd_gen_avx",
"avx",
"cmpxchg16b",
"f16c",
"fxsr",
"pclmulqdq",
"popcnt",
"rdrand",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsaveopt"
);
declare_is_compatible!(
"silvermont",
"cmpxchg16b",
"fxsr",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3"
);
declare_is_compatible!(
"slm",
"cmpxchg16b",
"fxsr",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3"
);
declare_is_compatible!(
"atom_sse4_2",
"cmpxchg16b",
"fxsr",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3"
);
declare_is_compatible!(
"haswell",
"avx",
"avx2",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsaveopt"
);
declare_is_compatible!(
"core_avx2",
"avx",
"avx2",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsaveopt"
);
declare_is_compatible!(
"core_4th_gen_avx",
"avx",
"avx2",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsaveopt"
);
declare_is_compatible!(
"core_4th_gen_avx_tsx",
"avx",
"avx2",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsaveopt"
);
declare_is_compatible!(
"broadwell",
"adx",
"avx",
"avx2",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsaveopt"
);
declare_is_compatible!(
"core_5th_gen_avx",
"adx",
"avx",
"avx2",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsaveopt"
);
declare_is_compatible!(
"core_5th_gen_avx_tsx",
"adx",
"avx",
"avx2",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsaveopt"
);
declare_is_compatible!(
"skylake",
"adx",
"aes",
"avx",
"avx2",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"knl",
"adx",
"aes",
"avx",
"avx2",
"avx512cd",
"avx512f",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsaveopt"
);
declare_is_compatible!(
"mic_avx512",
"adx",
"aes",
"avx",
"avx2",
"avx512cd",
"avx512f",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsaveopt"
);
declare_is_compatible!(
"goldmont",
"aes",
"cmpxchg16b",
"fxsr",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"atom_sse4_2_movbe",
"aes",
"cmpxchg16b",
"fxsr",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"skylake_avx512",
"adx",
"aes",
"avx",
"avx2",
"avx512bw",
"avx512cd",
"avx512dq",
"avx512f",
"avx512vl",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"skx",
"adx",
"aes",
"avx",
"avx2",
"avx512bw",
"avx512cd",
"avx512dq",
"avx512f",
"avx512vl",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"goldmont_plus",
"aes",
"cmpxchg16b",
"fxsr",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"knm",
"adx",
"aes",
"avx",
"avx2",
"avx512cd",
"avx512f",
"avx512vpopcntdq",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsaveopt"
);
declare_is_compatible!(
"cannonlake",
"adx",
"aes",
"avx",
"avx2",
"avx512bw",
"avx512cd",
"avx512dq",
"avx512f",
"avx512ifma",
"avx512vbmi",
"avx512vl",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"cascadelake",
"adx",
"aes",
"avx",
"avx2",
"avx512bw",
"avx512cd",
"avx512dq",
"avx512f",
"avx512vl",
"avx512vnni",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"icelake_client",
"adx",
"aes",
"avx",
"avx2",
"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",
"ssse3",
"vaes",
"vpclmulqdq",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"tremont",
"aes",
"cmpxchg16b",
"fxsr",
"gfni",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"cooperlake",
"adx",
"aes",
"avx",
"avx2",
"avx512bf16",
"avx512bw",
"avx512cd",
"avx512dq",
"avx512f",
"avx512vl",
"avx512vnni",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"tigerlake",
"adx",
"aes",
"avx",
"avx2",
"avx512bitalg",
"avx512bw",
"avx512cd",
"avx512dq",
"avx512f",
"avx512ifma",
"avx512vbmi",
"avx512vbmi2",
"avx512vl",
"avx512vnni",
"avx512vp2intersect",
"avx512vpopcntdq",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"gfni",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"vaes",
"vpclmulqdq",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"rocketlake",
"adx",
"aes",
"avx",
"avx2",
"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",
"ssse3",
"vaes",
"vpclmulqdq",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"icelake_server",
"adx",
"aes",
"avx",
"avx2",
"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",
"ssse3",
"vaes",
"vpclmulqdq",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"alderlake",
"adx",
"aes",
"avx",
"avx2",
"avxvnni",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"gfni",
"kl",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"vaes",
"vpclmulqdq",
"widekl",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"gracemont",
"adx",
"aes",
"avx",
"avx2",
"avxvnni",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"gfni",
"kl",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"vaes",
"vpclmulqdq",
"widekl",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"raptorlake",
"adx",
"aes",
"avx",
"avx2",
"avxvnni",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"gfni",
"kl",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"vaes",
"vpclmulqdq",
"widekl",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"sapphirerapids",
"adx",
"aes",
"avx",
"avx2",
"avx512bf16",
"avx512bitalg",
"avx512bw",
"avx512cd",
"avx512dq",
"avx512f",
"avx512fp16",
"avx512ifma",
"avx512vbmi",
"avx512vbmi2",
"avx512vl",
"avx512vnni",
"avx512vpopcntdq",
"avxvnni",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"gfni",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"vaes",
"vpclmulqdq",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"meteorlake",
"adx",
"aes",
"avx",
"avx2",
"avxvnni",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"gfni",
"kl",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"vaes",
"vpclmulqdq",
"widekl",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"emeraldrapids",
"adx",
"aes",
"avx",
"avx2",
"avx512bf16",
"avx512bitalg",
"avx512bw",
"avx512cd",
"avx512dq",
"avx512f",
"avx512fp16",
"avx512ifma",
"avx512vbmi",
"avx512vbmi2",
"avx512vl",
"avx512vnni",
"avx512vpopcntdq",
"avxvnni",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"gfni",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"vaes",
"vpclmulqdq",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"grandridge",
"adx",
"aes",
"avx",
"avx2",
"avxifma",
"avxneconvert",
"avxvnni",
"avxvnniint8",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"gfni",
"kl",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"vaes",
"vpclmulqdq",
"widekl",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"sierraforest",
"adx",
"aes",
"avx",
"avx2",
"avxifma",
"avxneconvert",
"avxvnni",
"avxvnniint8",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"gfni",
"kl",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"vaes",
"vpclmulqdq",
"widekl",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"lunarlake",
"adx",
"aes",
"avx",
"avx2",
"avxifma",
"avxneconvert",
"avxvnni",
"avxvnniint16",
"avxvnniint8",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"gfni",
"kl",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sha512",
"sm3",
"sm4",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"vaes",
"vpclmulqdq",
"widekl",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"graniterapids",
"adx",
"aes",
"avx",
"avx2",
"avx512bf16",
"avx512bitalg",
"avx512bw",
"avx512cd",
"avx512dq",
"avx512f",
"avx512fp16",
"avx512ifma",
"avx512vbmi",
"avx512vbmi2",
"avx512vl",
"avx512vnni",
"avx512vpopcntdq",
"avxvnni",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"gfni",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"vaes",
"vpclmulqdq",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"arrowlake",
"adx",
"aes",
"avx",
"avx2",
"avxifma",
"avxneconvert",
"avxvnni",
"avxvnniint8",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"gfni",
"kl",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"vaes",
"vpclmulqdq",
"widekl",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"arrowlake_s",
"adx",
"aes",
"avx",
"avx2",
"avxifma",
"avxneconvert",
"avxvnni",
"avxvnniint16",
"avxvnniint8",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"gfni",
"kl",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sha512",
"sm3",
"sm4",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"vaes",
"vpclmulqdq",
"widekl",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"graniterapids_d",
"adx",
"aes",
"avx",
"avx2",
"avx512bf16",
"avx512bitalg",
"avx512bw",
"avx512cd",
"avx512dq",
"avx512f",
"avx512fp16",
"avx512ifma",
"avx512vbmi",
"avx512vbmi2",
"avx512vl",
"avx512vnni",
"avx512vpopcntdq",
"avxvnni",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"gfni",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"vaes",
"vpclmulqdq",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"pantherlake",
"adx",
"aes",
"avx",
"avx2",
"avxifma",
"avxneconvert",
"avxvnni",
"avxvnniint16",
"avxvnniint8",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"gfni",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sha512",
"sm3",
"sm4",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"vaes",
"vpclmulqdq",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"wildcatlake",
"adx",
"aes",
"avx",
"avx2",
"avxifma",
"avxneconvert",
"avxvnni",
"avxvnniint16",
"avxvnniint8",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"gfni",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sha512",
"sm3",
"sm4",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"vaes",
"vpclmulqdq",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"clearwaterforest",
"adx",
"aes",
"avx",
"avx2",
"avxifma",
"avxneconvert",
"avxvnni",
"avxvnniint16",
"avxvnniint8",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"gfni",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sha512",
"sm3",
"sm4",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"vaes",
"vpclmulqdq",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"novalake",
"adx",
"aes",
"avx",
"avx2",
"avx512bf16",
"avx512bitalg",
"avx512bw",
"avx512cd",
"avx512dq",
"avx512f",
"avx512fp16",
"avx512ifma",
"avx512vbmi",
"avx512vbmi2",
"avx512vl",
"avx512vnni",
"avx512vpopcntdq",
"avxifma",
"avxneconvert",
"avxvnni",
"avxvnniint16",
"avxvnniint8",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"gfni",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sha512",
"sm3",
"sm4",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"vaes",
"vpclmulqdq",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);
declare_is_compatible!(
"diamondrapids",
"adx",
"aes",
"avx",
"avx2",
"avx512bf16",
"avx512bitalg",
"avx512bw",
"avx512cd",
"avx512dq",
"avx512f",
"avx512fp16",
"avx512ifma",
"avx512vbmi",
"avx512vbmi2",
"avx512vl",
"avx512vnni",
"avx512vpopcntdq",
"avxifma",
"avxneconvert",
"avxvnni",
"avxvnniint16",
"avxvnniint8",
"bmi1",
"bmi2",
"cmpxchg16b",
"f16c",
"fma",
"fxsr",
"gfni",
"lzcnt",
"movbe",
"pclmulqdq",
"popcnt",
"rdrand",
"rdseed",
"sha",
"sha512",
"sm3",
"sm4",
"sse",
"sse2",
"sse3",
"sse4_1",
"sse4_2",
"ssse3",
"vaes",
"vpclmulqdq",
"xsave",
"xsavec",
"xsaveopt",
"xsaves"
);