use crate::aarch64::features::*;
use crate::declare_is_compatible;
declare_is_compatible!("cortex_a53", "aes", "crc", "neon", "sha2");
declare_is_compatible!("cortex_a57", "aes", "crc", "neon", "sha2");
declare_is_compatible!("cortex_a72", "aes", "crc", "neon", "sha2");
declare_is_compatible!("cortex_a35", "aes", "crc", "neon", "sha2");
declare_is_compatible!("cortex_a73", "aes", "crc", "neon", "sha2");
declare_is_compatible!(
"cortex_a55",
"aes",
"crc",
"dotprod",
"dpb",
"fp16",
"lse",
"neon",
"rcpc",
"rdm",
"sha2"
);
declare_is_compatible!(
"cortex_a75",
"aes",
"crc",
"dotprod",
"dpb",
"fp16",
"lse",
"neon",
"rcpc",
"rdm",
"sha2"
);
declare_is_compatible!(
"cortex_a76",
"aes",
"crc",
"dotprod",
"dpb",
"fp16",
"lse",
"neon",
"rcpc",
"rdm",
"sha2",
"ssbs"
);
declare_is_compatible!(
"cortex_a76ae",
"aes",
"crc",
"dotprod",
"dpb",
"fp16",
"lse",
"neon",
"rcpc",
"rdm",
"sha2",
"ssbs"
);
declare_is_compatible!(
"cortex_a65",
"aes",
"crc",
"dotprod",
"dpb",
"fp16",
"lse",
"neon",
"rcpc",
"rdm",
"sha2",
"ssbs"
);
declare_is_compatible!(
"cortex_a65ae",
"aes",
"crc",
"dotprod",
"dpb",
"fp16",
"lse",
"neon",
"rcpc",
"rdm",
"sha2",
"ssbs"
);
declare_is_compatible!(
"neoverse_e1",
"aes",
"crc",
"dotprod",
"dpb",
"fp16",
"lse",
"neon",
"rcpc",
"rdm",
"sha2",
"ssbs"
);
declare_is_compatible!(
"neoverse_n1",
"aes",
"crc",
"dotprod",
"dpb",
"fp16",
"lse",
"neon",
"rcpc",
"rdm",
"sha2",
"ssbs"
);
declare_is_compatible!(
"cortex_a77",
"aes",
"crc",
"dotprod",
"dpb",
"fp16",
"lse",
"neon",
"rcpc",
"rdm",
"sha2",
"ssbs"
);
declare_is_compatible!("cortex_a34", "aes", "crc", "neon", "sha2");
declare_is_compatible!(
"cortex_a78",
"aes",
"crc",
"dotprod",
"dpb",
"fp16",
"lse",
"neon",
"rcpc",
"rdm",
"sha2",
"ssbs"
);
declare_is_compatible!(
"cortex_x1",
"aes",
"crc",
"dotprod",
"dpb",
"fp16",
"lse",
"neon",
"rcpc",
"rdm",
"sha2",
"ssbs"
);
declare_is_compatible!(
"cortex_r82",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"jsconv",
"lse",
"neon",
"paca",
"pacg",
"rcpc",
"rcpc2",
"rdm",
"sb",
"ssbs"
);
declare_is_compatible!(
"cortex_a78ae",
"aes",
"crc",
"dotprod",
"dpb",
"fp16",
"lse",
"neon",
"rcpc",
"rdm",
"sha2",
"ssbs"
);
declare_is_compatible!(
"cortex_a78c",
"aes",
"crc",
"dotprod",
"dpb",
"flagm",
"fp16",
"lse",
"neon",
"paca",
"pacg",
"rcpc",
"rdm",
"sha2",
"ssbs"
);
declare_is_compatible!(
"neoverse_v1",
"aes",
"bf16",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"i8mm",
"jsconv",
"lse",
"neon",
"paca",
"pacg",
"rand",
"rcpc",
"rcpc2",
"rdm",
"sha2",
"sha3",
"sm4",
"ssbs",
"sve"
);
declare_is_compatible!(
"cortex_a510",
"bf16",
"bti",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"frintts",
"i8mm",
"jsconv",
"lse",
"mte",
"neon",
"paca",
"pacg",
"rcpc",
"rcpc2",
"rdm",
"sb",
"ssbs",
"sve",
"sve2"
);
declare_is_compatible!(
"cortex_a710",
"bf16",
"bti",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"frintts",
"i8mm",
"jsconv",
"lse",
"mte",
"neon",
"paca",
"pacg",
"rcpc",
"rcpc2",
"rdm",
"sb",
"ssbs",
"sve",
"sve2"
);
declare_is_compatible!(
"cortex_x2",
"bf16",
"bti",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"frintts",
"i8mm",
"jsconv",
"lse",
"mte",
"neon",
"paca",
"pacg",
"rcpc",
"rcpc2",
"rdm",
"sb",
"ssbs",
"sve",
"sve2"
);
declare_is_compatible!(
"neoverse_512tvb",
"aes",
"bf16",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"i8mm",
"jsconv",
"lse",
"neon",
"paca",
"pacg",
"rand",
"rcpc",
"rcpc2",
"rdm",
"sha2",
"sha3",
"sm4",
"ssbs",
"sve"
);
declare_is_compatible!(
"neoverse_n2",
"bf16",
"bti",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"frintts",
"i8mm",
"jsconv",
"lse",
"mte",
"neon",
"paca",
"pacg",
"rcpc",
"rcpc2",
"rdm",
"sb",
"ssbs",
"sve",
"sve2"
);
declare_is_compatible!(
"cortex_x1c",
"aes",
"crc",
"dotprod",
"dpb",
"flagm",
"fp16",
"lse",
"neon",
"paca",
"pacg",
"rcpc",
"rcpc2",
"rdm",
"sha2",
"ssbs"
);
declare_is_compatible!(
"cortex_a715",
"bf16",
"bti",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"frintts",
"i8mm",
"jsconv",
"lse",
"mte",
"neon",
"paca",
"pacg",
"rcpc",
"rcpc2",
"rdm",
"sb",
"ssbs",
"sve",
"sve2"
);
declare_is_compatible!(
"cortex_x3",
"bf16",
"bti",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"frintts",
"i8mm",
"jsconv",
"lse",
"mte",
"neon",
"paca",
"pacg",
"rcpc",
"rcpc2",
"rdm",
"sb",
"ssbs",
"sve",
"sve2"
);
declare_is_compatible!(
"neoverse_v2",
"bf16",
"bti",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"frintts",
"i8mm",
"jsconv",
"lse",
"mte",
"neon",
"paca",
"pacg",
"rand",
"rcpc",
"rcpc2",
"rdm",
"sb",
"ssbs",
"sve",
"sve2"
);
declare_is_compatible!(
"cortex_a520",
"bf16",
"bti",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"frintts",
"i8mm",
"jsconv",
"lse",
"mte",
"neon",
"paca",
"pacg",
"rcpc",
"rcpc2",
"rdm",
"sb",
"ssbs",
"sve",
"sve2"
);
declare_is_compatible!(
"cortex_a720",
"bf16",
"bti",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"frintts",
"i8mm",
"jsconv",
"lse",
"mte",
"neon",
"paca",
"pacg",
"rcpc",
"rcpc2",
"rdm",
"sb",
"ssbs",
"sve",
"sve2"
);
declare_is_compatible!(
"cortex_x4",
"bf16",
"bti",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"frintts",
"i8mm",
"jsconv",
"lse",
"mte",
"neon",
"paca",
"pacg",
"rcpc",
"rcpc2",
"rdm",
"sb",
"ssbs",
"sve",
"sve2"
);
declare_is_compatible!(
"neoverse_n3",
"bf16",
"bti",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"frintts",
"i8mm",
"jsconv",
"lse",
"mte",
"neon",
"paca",
"pacg",
"rand",
"rcpc",
"rcpc2",
"rdm",
"sb",
"ssbs",
"sve",
"sve2"
);
declare_is_compatible!(
"neoverse_v3",
"bf16",
"bti",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"frintts",
"i8mm",
"jsconv",
"lse",
"mte",
"neon",
"paca",
"pacg",
"rand",
"rcpc",
"rcpc2",
"rdm",
"sb",
"ssbs",
"sve",
"sve2"
);
declare_is_compatible!(
"cortex_r82ae",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"jsconv",
"lse",
"neon",
"paca",
"pacg",
"rcpc",
"rcpc2",
"rdm",
"sb",
"ssbs"
);
declare_is_compatible!(
"cortex_a520ae",
"bf16",
"bti",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"frintts",
"i8mm",
"jsconv",
"lse",
"mte",
"neon",
"paca",
"pacg",
"rcpc",
"rcpc2",
"rdm",
"sb",
"ssbs",
"sve",
"sve2"
);
declare_is_compatible!(
"cortex_a720ae",
"bf16",
"bti",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"frintts",
"i8mm",
"jsconv",
"lse",
"mte",
"neon",
"paca",
"pacg",
"rcpc",
"rcpc2",
"rdm",
"sb",
"ssbs",
"sve",
"sve2"
);
declare_is_compatible!(
"cortex_a725",
"bf16",
"bti",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"frintts",
"i8mm",
"jsconv",
"lse",
"mte",
"neon",
"paca",
"pacg",
"rcpc",
"rcpc2",
"rdm",
"sb",
"ssbs",
"sve",
"sve2"
);
declare_is_compatible!(
"cortex_x925",
"bf16",
"bti",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"frintts",
"i8mm",
"jsconv",
"lse",
"mte",
"neon",
"paca",
"pacg",
"rcpc",
"rcpc2",
"rdm",
"sb",
"ssbs",
"sve",
"sve2"
);
declare_is_compatible!(
"neoverse_v3ae",
"bf16",
"bti",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"frintts",
"i8mm",
"jsconv",
"lse",
"mte",
"neon",
"paca",
"pacg",
"rand",
"rcpc",
"rcpc2",
"rdm",
"sb",
"ssbs",
"sve",
"sve2"
);
declare_is_compatible!(
"cortex_a320",
"bf16",
"bti",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"frintts",
"i8mm",
"jsconv",
"lse",
"mte",
"neon",
"paca",
"pacg",
"rcpc",
"rcpc2",
"rdm",
"sb",
"ssbs",
"sve",
"sve2"
);
declare_is_compatible!(
"c1_nano", "bf16", "bti", "crc", "dit", "dotprod", "dpb", "dpb2", "fcma", "fhm", "flagm",
"fp16", "frintts", "i8mm", "jsconv", "lse", "mte", "neon", "paca", "pacg", "rcpc", "rcpc2",
"rdm", "sb", "ssbs", "sve", "sve2"
);
declare_is_compatible!(
"c1_pro", "bf16", "bti", "crc", "dit", "dotprod", "dpb", "dpb2", "fcma", "fhm", "flagm",
"fp16", "frintts", "i8mm", "jsconv", "lse", "mte", "neon", "paca", "pacg", "rcpc", "rcpc2",
"rdm", "sb", "ssbs", "sve", "sve2"
);
declare_is_compatible!(
"c1_premium",
"bf16",
"bti",
"crc",
"dit",
"dotprod",
"dpb",
"dpb2",
"fcma",
"fhm",
"flagm",
"fp16",
"frintts",
"i8mm",
"jsconv",
"lse",
"mte",
"neon",
"paca",
"pacg",
"rcpc",
"rcpc2",
"rdm",
"sb",
"ssbs",
"sve",
"sve2"
);
declare_is_compatible!(
"c1_ultra", "bf16", "bti", "crc", "dit", "dotprod", "dpb", "dpb2", "fcma", "fhm", "flagm",
"fp16", "frintts", "i8mm", "jsconv", "lse", "mte", "neon", "paca", "pacg", "rcpc", "rcpc2",
"rdm", "sb", "ssbs", "sve", "sve2"
);