#ifndef FUNCTION_VARIANT_FLAG
#error "FUNCTION_VARIANT_FLAG must be defined"
#endif

FUNCTION_VARIANT_FLAG(ARM64_DEFAULT     , 0  , "default"     )

FUNCTION_VARIANT_FLAG(ARM64_FLAGM       , 1  , "flagm"       )
FUNCTION_VARIANT_FLAG(ARM64_FLAGM2      , 2  , "flagm2"      )
FUNCTION_VARIANT_FLAG(ARM64_FHM         , 3  , "fhm"         )
FUNCTION_VARIANT_FLAG(ARM64_DOTPROD     , 4  , "dotprod"     )
FUNCTION_VARIANT_FLAG(ARM64_SHA3        , 5  , "sha3"        )
FUNCTION_VARIANT_FLAG(ARM64_RDM         , 6  , "rdm"         )
FUNCTION_VARIANT_FLAG(ARM64_LSE         , 7  , "lse"         )
FUNCTION_VARIANT_FLAG(ARM64_SHA256      , 8  , "sha256"      )
FUNCTION_VARIANT_FLAG(ARM64_SHA512      , 9  , "sha512"      )
FUNCTION_VARIANT_FLAG(ARM64_SHA1        , 10 , "sha1"        )
FUNCTION_VARIANT_FLAG(ARM64_AES         , 11 , "aes"         )
FUNCTION_VARIANT_FLAG(ARM64_PMULL       , 12 , "pmull"       )
FUNCTION_VARIANT_FLAG(ARM64_SPECRES     , 13 , "specres"     )
FUNCTION_VARIANT_FLAG(ARM64_SB          , 14 , "sb"          )
FUNCTION_VARIANT_FLAG(ARM64_FRINTTS     , 15 , "frintts"     )
FUNCTION_VARIANT_FLAG(ARM64_LRCPC       , 16 , "lrcpc"       )
FUNCTION_VARIANT_FLAG(ARM64_LRCPC2      , 17 , "lrcpc2"      )
FUNCTION_VARIANT_FLAG(ARM64_FCMA        , 18 , "fcma"        )
FUNCTION_VARIANT_FLAG(ARM64_JSCVT       , 19 , "jscvt"       )
FUNCTION_VARIANT_FLAG(ARM64_PAUTH       , 20 , "PAuth"       )
FUNCTION_VARIANT_FLAG(ARM64_PAUTH2      , 21 , "PAuth2"      )
FUNCTION_VARIANT_FLAG(ARM64_FPAC        , 22 , "fpac"        )
FUNCTION_VARIANT_FLAG(ARM64_DPB         , 23 , "dpb"         )
FUNCTION_VARIANT_FLAG(ARM64_DPB2        , 24 , "dpb2"        )
FUNCTION_VARIANT_FLAG(ARM64_BF16        , 25 , "bf16"        )
FUNCTION_VARIANT_FLAG(ARM64_I8MM        , 26 , "i8mm"        )
FUNCTION_VARIANT_FLAG(ARM64_WFXT        , 27 , "WFxT"        )
FUNCTION_VARIANT_FLAG(ARM64_RPRES       , 28 , "rpres"       )
FUNCTION_VARIANT_FLAG(ARM64_ECV         , 29 , "ecv"         )
FUNCTION_VARIANT_FLAG(ARM64_AFP         , 30 , "afp"         )
FUNCTION_VARIANT_FLAG(ARM64_LSE2        , 31 , "lse2"        )
FUNCTION_VARIANT_FLAG(ARM64_CSV2        , 32 , "csv2"        )
FUNCTION_VARIANT_FLAG(ARM64_CVS3        , 33 , "cvs3"        )
FUNCTION_VARIANT_FLAG(ARM64_DIT         , 34 , "dit"         )
FUNCTION_VARIANT_FLAG(ARM64_FP16        , 35 , "fp16"        )
FUNCTION_VARIANT_FLAG(ARM64_SSBS        , 36 , "ssbs"        )
FUNCTION_VARIANT_FLAG(ARM64_BTI         , 37 , "bti"         )
FUNCTION_VARIANT_FLAG(ARM64_SME         , 44 , "sme"         )
FUNCTION_VARIANT_FLAG(ARM64_SME2        , 45 , "sme2"        )
FUNCTION_VARIANT_FLAG(ARM64_SMEF64F64   , 46 , "smef64f64"   )
FUNCTION_VARIANT_FLAG(ARM64_SMEI16I64   , 47 , "smei16i64"   )
FUNCTION_VARIANT_FLAG(ARM64_SMEF32F32   , 48 , "smef32f32"   )
FUNCTION_VARIANT_FLAG(ARM64_SMEBI32I32  , 49 , "smebi32i32"  )
FUNCTION_VARIANT_FLAG(ARM64_SMEB16F32   , 50 , "smeb16f32"   )
FUNCTION_VARIANT_FLAG(ARM64_SMEF16F32   , 51 , "smef16f32"   )
FUNCTION_VARIANT_FLAG(ARM64_SMEI8I32    , 52 , "smei8i32"    )
FUNCTION_VARIANT_FLAG(ARM64_SMEI16I32   , 53 , "smei16i32"   )
FUNCTION_VARIANT_FLAG(ARM64_ADVSIMD     , 54 , "AdvSIMD"     )
FUNCTION_VARIANT_FLAG(ARM64_ADVSIMDHPFP , 55 , "AdvSIMDHpfp" )
FUNCTION_VARIANT_FLAG(ARM64_CRC32       , 56 , "crc32"       )
