# allow_cpu_features

Provides the ability for a function to use intrinsic functions and architecture specific functionality.

## Syntax

Windows* OS: __declspec(allow_cpu_features(featp1[,featp2]))

Linux* OS: __attribute__((allow_cpu_features(featp1[,featp2])))

## Arguments

`featp1` | Specifies features to allow for the function. Values are integral constant expressions that evaluate to the page one bitmask of permissible features from the libirc CPUID information. The evaluated type is an unsigned 64-bit integer which permits use of template-dependent code. Possible values are: `_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_AVX512DQ` `_FEATURE_PTWRITE` `_FEATURE_AVX512F` `_FEATURE_ADX` `_FEATURE_RDSEED` `_FEATURE_AVX512IFMA52` `_FEATURE_AVX512ER` `_FEATURE_AVX512PF` `_FEATURE_AVX512CD` `_FEATURE_SHA` `_FEATURE_MPX` `_FEATURE_AVX512BW` `_FEATURE_AVX512VL` `_FEATURE_AVX512VBMI` `_FEATURE_AVX512_4FMAPS` `_FEATURE_AVX512_4VNNIW` `_FEATURE_AVX512_VPOPCNTDQ` `_FEATURE_AVX512_BITALG` `_FEATURE_AVX512_VBMI2` `_FEATURE_GFNI` `_FEATURE_VAES` `_FEATURE_VPCLMULQDQ` `_FEATURE_AVX512_VNNI` `_FEATURE_CLWB` `_FEATURE_RDPID` `_FEATURE_IBT` `_FEATURE_SHSTK` `_FEATURE_SGX` `_FEATURE_WBNOINVD` `_FEATURE_PCONFIG` `_FEATURE_AXV512_VP2INTERSECT`
`featp2` | Optional. Specifies features to allow for the function. Values are integral constant expressions that evaluate to the page two bitmask of permissible features from the libirc CPUID information. The evaluated type is an unsigned 64-bit integer which permits use of template-dependent code. If only features from page two are desired, specify 0 for featp1. Possible values are: `_FEATURE_CLDEMOTE` `_FEATURE_MOVDIRI` `_FEATURE_MOVDIR64B` `_FEATURE_WAITPKG` `_FEATURE_AVX512_Bf16` `_FEATURE_ENQCMD` `_FEATURE_AVX_VNNI` `_FEATURE_AMX_TILE` `_FEATURE_AMX_INT8` `_FEATURE_AMX_BF16` `_FEATURE_KL` `_FEATURE_WIDE_KL`

## Description

This keyword can be added to a function to specify intrinsic functions and architecture specific functionality that the function is allowed to use. The function is generated as if the specified features are available.

Parent topic: Attributes