This is xnu-10002.1.13. See this file in:
/* Copyright (c) (2021) Apple Inc. All rights reserved.
 *
 * corecrypto is licensed under Apple Inc.’s Internal Use License Agreement (which
 * is contained in the License.txt file distributed with corecrypto) and only to
 * people who accept that license. IMPORTANT:  Any license rights granted to you by
 * Apple Inc. (if any) are limited to internal use within your organization only on
 * devices and computers you own or control, for the sole purpose of verifying the
 * security characteristics and correct functioning of the Apple Software.  You may
 * not, directly or indirectly, redistribute the Apple Software or any portions thereof.
 */

#ifndef _CORECRYPTO_CC_IMPL_H_
#define _CORECRYPTO_CC_IMPL_H_

#define CC_IMPL_LIST                                        \
    CC_IMPL_ITEM(UNKNOWN, 0)                                \
                                                            \
    CC_IMPL_ITEM(SHA256_LTC, 1)                             \
    CC_IMPL_ITEM(SHA256_VNG_ARM, 2)                         \
    CC_IMPL_ITEM(SHA256_VNG_ARM64_NEON, 3)                  \
    CC_IMPL_ITEM(SHA256_VNG_INTEL_SUPPLEMENTAL_SSE3, 4)     \
    CC_IMPL_ITEM(SHA256_VNG_INTEL_AVX1, 5)                  \
    CC_IMPL_ITEM(SHA256_VNG_INTEL_AVX2, 6)                  \
                                                            \
    CC_IMPL_ITEM(AES_ECB_LTC, 11)                           \
    CC_IMPL_ITEM(AES_ECB_ARM, 12)                           \
    CC_IMPL_ITEM(AES_ECB_INTEL_OPT, 13)                     \
    CC_IMPL_ITEM(AES_ECB_INTEL_AESNI, 14)                   \
    CC_IMPL_ITEM(AES_ECB_SKG, 15)                           \
    CC_IMPL_ITEM(AES_ECB_TRNG, 16)                          \
                                                            \
    CC_IMPL_ITEM(AES_XTS_GENERIC, 21)                       \
    CC_IMPL_ITEM(AES_XTS_ARM, 22)                           \
    CC_IMPL_ITEM(AES_XTS_INTEL_OPT, 23)                     \
    CC_IMPL_ITEM(AES_XTS_INTEL_AESNI, 24)                   \
                                                            \
    CC_IMPL_ITEM(SHA1_LTC, 31)                              \
    CC_IMPL_ITEM(SHA1_VNG_ARM, 32)                          \
    CC_IMPL_ITEM(SHA1_VNG_INTEL_SUPPLEMENTAL_SSE3, 33)      \
    CC_IMPL_ITEM(SHA1_VNG_INTEL_AVX1, 34)                   \
    CC_IMPL_ITEM(SHA1_VNG_INTEL_AVX2, 35)                   \
                                                            \
    CC_IMPL_ITEM(SHA384_LTC, 41)                            \
    CC_IMPL_ITEM(SHA384_VNG_ARM, 42)                        \
    CC_IMPL_ITEM(SHA384_VNG_INTEL_SUPPLEMENTAL_SSE3, 43)    \
    CC_IMPL_ITEM(SHA384_VNG_INTEL_AVX1, 44)                 \
    CC_IMPL_ITEM(SHA384_VNG_INTEL_AVX2, 45)                 \
                                                            \
    CC_IMPL_ITEM(SHA512_LTC, 51)                            \
    CC_IMPL_ITEM(SHA512_VNG_ARM, 52)                        \
    CC_IMPL_ITEM(SHA512_VNG_INTEL_SUPPLEMENTAL_SSE3, 53)    \
    CC_IMPL_ITEM(SHA512_VNG_INTEL_AVX1, 54)                 \
    CC_IMPL_ITEM(SHA512_VNG_INTEL_AVX2, 55)


#define CC_IMPL_ITEM(k, v)                      \
    CC_IMPL_##k = v,

typedef enum cc_impl {
    CC_IMPL_LIST
} cc_impl_t;

#undef CC_IMPL_ITEM

const char *cc_impl_name(cc_impl_t impl);

#endif /* _CORECRYPTO_CC_IMPL_H_ */