cpudetect 0.2.0

Ergonomic helpers for CPU feature detection
Documentation
//! Provides a stable interface for detecting and activating these,
//! since they are not supported as target features on stable Rust.

use crate::aarch64::features::*;
use crate::declare_is_compatible;

// Support ARM v8.1a architecture.
declare_is_compatible!("arm_v8_1a", "crc", "lse", "rdm");

// Support ARM v8.2a architecture.
declare_is_compatible!("arm_v8_2a", "neon", "crc", "lse", "rdm", "dpb");

// Support ARM v8.3a architecture.
declare_is_compatible!(
    "arm_v8_3a",
    "neon",
    "crc",
    "lse",
    "rdm",
    "dpb",
    "rcpc",
    "paca",
    "pacg",
    "jsconv"
);

// Support ARM v8.4a architecture.
declare_is_compatible!(
    "arm_v8_4a",
    "neon",
    "crc",
    "lse",
    "rdm",
    "dpb",
    "rcpc",
    "paca",
    "pacg",
    "jsconv",
    "dotprod",
    "dit",
    "flagm"
);

// Support ARM v8.5a architecture.
declare_is_compatible!(
    "arm_v8_5a",
    "neon",
    "crc",
    "lse",
    "rdm",
    "dpb",
    "rcpc",
    "paca",
    "pacg",
    "jsconv",
    "dotprod",
    "dit",
    "flagm",
    "ssbs",
    "sb",
    "dpb2",
    "bti"
);

// Support ARM v8.6a architecture.
declare_is_compatible!(
    "arm_v8_6a",
    "neon",
    "crc",
    "lse",
    "rdm",
    "dpb",
    "rcpc",
    "paca",
    "pacg",
    "jsconv",
    "dotprod",
    "dit",
    "flagm",
    "ssbs",
    "sb",
    "dpb2",
    "bti",
    "bf16",
    "i8mm"
);

// Support ARM v8.7a architecture.
declare_is_compatible!(
    "arm_v8_7a",
    "neon",
    "crc",
    "lse",
    "rdm",
    "dpb",
    "rcpc",
    "paca",
    "pacg",
    "jsconv",
    "dotprod",
    "dit",
    "flagm",
    "ssbs",
    "sb",
    "dpb2",
    "bti",
    "bf16",
    "i8mm",
    // "wfxt" - Unstable
);

// Support ARM v8.8a architecture.
declare_is_compatible!(
    "arm_v8_8a",
    "neon",
    "lse",
    "rdm",
    "dpb",
    "rcpc",
    "paca",
    "pacg",
    "jsconv",
    "dotprod",
    "dit",
    "flagm",
    "ssbs",
    "sb",
    "dpb2",
    "bti",
    "bf16",
    "i8mm",
    // "wfxt", - Unstable
    // "hbc", - Unstable
    // "mops" - Unstable
);

// Support ARM v8.9a architecture.
declare_is_compatible!(
    "arm_v8_9a",
    "neon",
    "lse",
    "rdm",
    "dpb",
    "rcpc",
    "paca",
    "pacg",
    "jsconv",
    "dotprod",
    "dit",
    "flagm",
    "ssbs",
    "sb",
    "dpb2",
    "bti",
    "bf16",
    "i8mm",
    // "wfxt", - Unstable
    // "hbc", - Unstable
    // "mops", - Unstable
    // "cssc" - Unstable
);

// Support ARM v9a architecture.
declare_is_compatible!(
    "arm_v9a", "neon", "sve2", "crc", "lse", "rdm", "dpb", "rcpc", "paca", "pacg", "jsconv",
    "dotprod", "dit", "flagm", "ssbs", "sb", "dpb2", "bti"
);

// Support ARM v9.1a architecture.
declare_is_compatible!(
    "arm_v9_1a",
    "neon",
    "sve2",
    "crc",
    "lse",
    "rdm",
    "dpb",
    "rcpc",
    "paca",
    "pacg",
    "jsconv",
    "dotprod",
    "dit",
    "flagm",
    "ssbs",
    "sb",
    "dpb2",
    "bti",
    "bf16",
    "i8mm",
    // "wfxt" - Unstable
);

// Support ARM v9.2a architecture.
declare_is_compatible!(
    "arm_v9_2a",
    "neon",
    "sve2",
    "lse",
    "rdm",
    "dpb",
    "rcpc",
    "paca",
    "pacg",
    "jsconv",
    "dotprod",
    "dit",
    "flagm",
    "ssbs",
    "sb",
    "dpb2",
    "bti",
    "bf16",
    "i8mm",
    // "wfxt", - Unstable
    // "hbc", - Unstable
    // "mops" - Unstable
);

// Support ARM v9.3a architecture.
declare_is_compatible!(
    "arm_v9_3a",
    "neon",
    "sve2",
    "lse",
    "rdm",
    "dpb",
    "rcpc",
    "paca",
    "pacg",
    "jsconv",
    "dotprod",
    "dit",
    "flagm",
    "ssbs",
    "sb",
    "dpb2",
    "bti",
    "bf16",
    "i8mm",
    // "wfxt", - Unstable
    // "hbc", - Unstable
    // "mops", - Unstable
    // "cssc" - Unstable
);

// Support ARM v9.4a architecture.
declare_is_compatible!(
    "arm_v9_4a",
    "neon",
    "sve2",
    "lse",
    "rdm",
    "dpb",
    "rcpc",
    "paca",
    "pacg",
    "jsconv",
    "dotprod",
    "dit",
    "flagm",
    "ssbs",
    "sb",
    "dpb2",
    "bti",
    "bf16",
    "i8mm",
    // "wfxt", - Unstable
    // "hbc", - Unstable
    // "mops", - Unstable
    // "cssc" - Unstable
);

// Support ARM v9.5a architecture.
declare_is_compatible!(
    "arm_v9_5a",
    "neon",
    "sve2",
    "lse",
    "rdm",
    "dpb",
    "rcpc",
    "paca",
    "pacg",
    "jsconv",
    "dotprod",
    "dit",
    "flagm",
    "ssbs",
    "sb",
    "dpb2",
    "bti",
    "bf16",
    "i8mm",
    // "wfxt", - Unstable
    // "hbc", - Unstable
    // "mops", - Unstable
    // "cssc" - Unstable
);