对于x86/x64,Intel提供了一个名为_may_i_use_cpu_feature
的内部函数。您可以在Intel Intrinsics Guide页面的常规支持类别下找到它。以下是英特尔文档的翻版。
海湾合作委员会似乎跟随英特尔的内在关系,所以它应该可以在海湾合作委员会。我不清楚微软是否提供它,因为它们提供了大部分(但不是全部)的英特尔内核。
我不知道ARM的任何内容。据我所知,在ARM下没有__builtin_cpu_supports("neon")
,__builtin_cpu_supports("crc32")
,__builtin_cpu_supports("aes")
,__builtin_cpu_supports("pmull")
,__builtin_cpu_supports("sha")
等。对于ARM,您必须执行CPU feature probing。
Synopsis
int _may_i_use_cpu_feature (unsigned __int64 a)
#include "immintrin.h"
Description
Dynamically query the processor to determine if the processor-specific feature(s) specified
in a are available, and return true or false (1 or 0) if the set of features is
available. Multiple features may be OR'd together. This intrinsic does not check the
processor vendor. See the valid feature flags below:
Operation
_FEATURE_GENERIC_IA32
_FEATURE_FPU
_FEATURE_CMOV
_FEATURE_MMX
_FEATURE_FXSAVE
_FEATURE_SSE
_FEATURE_SSE2
_FEATURE_SSE3
_FEATURE_SSSE3
_FEATURE_SSE4_1
_FEATURE_SSE4_2
_FEATURE_MOVBE
_FEATURE_POPCNT
_FEATURE_PCLMULQDQ
_FEATURE_AES
_FEATURE_F16C
_FEATURE_AVX
_FEATURE_RDRND
_FEATURE_FMA
_FEATURE_BMI
_FEATURE_LZCNT
_FEATURE_HLE
_FEATURE_RTM
_FEATURE_AVX2
_FEATURE_KNCNI
_FEATURE_AVX512F
_FEATURE_ADX
_FEATURE_RDSEED
_FEATURE_AVX512ER
_FEATURE_AVX512PF
_FEATURE_AVX512CD
_FEATURE_SHA
_FEATURE_MPX
来源
2017-07-25 18:19:58
jww
锵有一个集成的汇编,其对英特尔的风格装配支撑位在时间参差不齐。它不能在英特尔风格下生成一个简单的“negate(neg)”。 – jww