61 #ifndef OPENSSL_HEADER_CPU_H
62 #define OPENSSL_HEADER_CPU_H
66 #if defined(__cplusplus)
74 #if defined(OPENSSL_X86) || defined(OPENSSL_X86_64)
96 #if defined(BORINGSSL_FIPS) && !defined(BORINGSSL_SHARED_LIBRARY)
97 const uint32_t *OPENSSL_ia32cap_get(
void);
106 #if defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)
108 #if defined(OPENSSL_APPLE)
110 #define OPENSSL_STATIC_ARMCAP
113 #if !defined(OPENSSL_STATIC_ARMCAP)
121 int CRYPTO_is_ARMv8_AES_capable_at_runtime(
void);
125 int CRYPTO_is_ARMv8_PMULL_capable_at_runtime(
void);
127 #if defined(OPENSSL_ARM)
136 #endif // !OPENSSL_STATIC_ARMCAP
141 #if defined(__ARM_NEON__) || defined(__ARM_NEON) || \
142 defined(OPENSSL_STATIC_ARMCAP_NEON)
144 #elif defined(OPENSSL_STATIC_ARMCAP)
147 return CRYPTO_is_NEON_capable_at_runtime();
152 #if defined(OPENSSL_STATIC_ARMCAP_AES) || defined(__ARM_FEATURE_CRYPTO)
154 #elif defined(OPENSSL_STATIC_ARMCAP)
157 return CRYPTO_is_ARMv8_AES_capable_at_runtime();
162 #if defined(OPENSSL_STATIC_ARMCAP_PMULL) || defined(__ARM_FEATURE_CRYPTO)
164 #elif defined(OPENSSL_STATIC_ARMCAP)
167 return CRYPTO_is_ARMv8_PMULL_capable_at_runtime();
171 #endif // OPENSSL_ARM || OPENSSL_AARCH64
173 #if defined(OPENSSL_PPC64LE)
177 int CRYPTO_is_PPC64LE_vcrypto_capable(
void);
179 extern unsigned long OPENSSL_ppc64le_hwcap2;
181 #endif // OPENSSL_PPC64LE
183 #if defined(BORINGSSL_DISPATCH_TEST)
195 #endif // BORINGSSL_DISPATCH_TEST
198 #if defined(__cplusplus)
202 #endif // OPENSSL_HEADER_CPU_H