// Copyright 2018 The Fuchsia Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef ZIRCON_FEATURES_H_ #define ZIRCON_FEATURES_H_ // clang-format off // types of features that can be retrieved via |zx_system_get_features| #define ZX_FEATURE_KIND_CPU ((uint32_t)0) // arch-independent CPU features #define ZX_HAS_CPU_FEATURES ((uint32_t)(1u << 0)) #if defined(__x86_64__) // x86-64 CPU features // None; use cpuid instead #elif defined(__aarch64__) // arm64 CPU features #define ZX_ARM64_FEATURE_ISA_FP ((uint32_t)(1u << 1)) #define ZX_ARM64_FEATURE_ISA_ASIMD ((uint32_t)(1u << 2)) #define ZX_ARM64_FEATURE_ISA_AES ((uint32_t)(1u << 3)) #define ZX_ARM64_FEATURE_ISA_PMULL ((uint32_t)(1u << 4)) #define ZX_ARM64_FEATURE_ISA_SHA1 ((uint32_t)(1u << 5)) #define ZX_ARM64_FEATURE_ISA_SHA2 ((uint32_t)(1u << 6)) #define ZX_ARM64_FEATURE_ISA_CRC32 ((uint32_t)(1u << 7)) #define ZX_ARM64_FEATURE_ISA_ATOMICS ((uint32_t)(1u << 8)) #define ZX_ARM64_FEATURE_ISA_RDM ((uint32_t)(1u << 9)) #define ZX_ARM64_FEATURE_ISA_SHA3 ((uint32_t)(1u << 10)) #define ZX_ARM64_FEATURE_ISA_SM3 ((uint32_t)(1u << 11)) #define ZX_ARM64_FEATURE_ISA_SM4 ((uint32_t)(1u << 12)) #define ZX_ARM64_FEATURE_ISA_DP ((uint32_t)(1u << 13)) #define ZX_ARM64_FEATURE_ISA_DPB ((uint32_t)(1u << 14)) #else #error what architecture? #endif #endif // ZIRCON_FEATURES_H_