std_detect: Support detecting lse/dotprod/jsconv/rcpc on aarch64 Windows
This commit is contained in:
parent
6e5b949ee7
commit
505d4e8d48
1 changed files with 20 additions and 0 deletions
|
|
@ -14,6 +14,10 @@ pub(crate) fn detect_features() -> cache::Initializer {
|
|||
const PF_ARM_NEON_INSTRUCTIONS_AVAILABLE: u32 = 19;
|
||||
const PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE: u32 = 30;
|
||||
const PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE: u32 = 31;
|
||||
const PF_ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE: u32 = 34;
|
||||
const PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE: u32 = 43;
|
||||
const PF_ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE: u32 = 44;
|
||||
const PF_ARM_V83_LRCPC_INSTRUCTIONS_AVAILABLE: u32 = 45;
|
||||
|
||||
extern "system" {
|
||||
pub fn IsProcessorFeaturePresent(ProcessorFeature: DWORD) -> BOOL;
|
||||
|
|
@ -39,6 +43,22 @@ pub(crate) fn detect_features() -> cache::Initializer {
|
|||
Feature::crc,
|
||||
IsProcessorFeaturePresent(PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE) != FALSE,
|
||||
);
|
||||
enable_feature(
|
||||
Feature::lse,
|
||||
IsProcessorFeaturePresent(PF_ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE) != FALSE,
|
||||
);
|
||||
enable_feature(
|
||||
Feature::dotprod,
|
||||
IsProcessorFeaturePresent(PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE) != FALSE,
|
||||
);
|
||||
enable_feature(
|
||||
Feature::jsconv,
|
||||
IsProcessorFeaturePresent(PF_ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE) != FALSE,
|
||||
);
|
||||
enable_feature(
|
||||
Feature::rcpc,
|
||||
IsProcessorFeaturePresent(PF_ARM_V83_LRCPC_INSTRUCTIONS_AVAILABLE) != FALSE,
|
||||
);
|
||||
// PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE means aes, sha1, sha2 and
|
||||
// pmull support
|
||||
enable_feature(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue