crypton-2.1.8: cbits/mlkem/mlkem_native_asm.S
/*
* Copyright (c) The mlkem-native project authors
* SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT
*/
/*
* WARNING: This file is auto-generated from scripts/autogen
* in the mlkem-native repository.
* Do not modify it directly.
*/
/******************************************************************************
*
* Single assembly unit for fixed-level build of mlkem-native
*
* This assembly unit bundles together all assembly files for a build
* of mlkem-native for a fixed security level (MLKEM-512/768/1024).
*
* # Multi-level build
*
* If you want an SCU build of mlkem-native with support for multiple security
* levels, you should include this file once with
* MLK_CONFIG_MULTILEVEL_WITH_SHARED set.
*
* (You could also follow the same pattern as for mlkem_native.c
* and include it for every level, setting MLK_CONFIG_MULTILEVEL_NO_SHARED
* for all but one. For builds with MLK_CONFIG_MULTILEVEL_NO_SHARED, this
* file will then be ignored.)
*
* # Configuration
*
* The following options from the mlkem-native configuration are relevant:
*
* - MLK_CONFIG_FIPS202_CUSTOM_HEADER
* Set this option if you use a custom FIPS202 implementation.
*
* - MLK_CONFIG_USE_NATIVE_BACKEND_ARITH
* Set this option if you want to include the native arithmetic backends
* in your build.
*
* - MLK_CONFIG_USE_NATIVE_BACKEND_FIPS202
* Set this option if you want to include the native FIPS202 backends
* in your build.
*
* - MLK_CONFIG_MONOBUILD_KEEP_SHARED_HEADERS
* Set this option if you want to keep the directives defined in
* level-independent headers. This is needed for a multi-level build.
*/
/* If parts of the mlkem-native source tree are not used,
* consider reducing this header via `unifdef`.
*
* Example:
* ```bash
* unifdef -UMLK_CONFIG_USE_NATIVE_BACKEND_ARITH mlkem_native_asm.S
* ```
*/
#include "src/common.h"
#if defined(MLK_CONFIG_USE_NATIVE_BACKEND_ARITH)
#if defined(MLK_SYS_AARCH64)
#include "src/native/aarch64/src/mlkem_intt_aarch64_asm.S"
#include "src/native/aarch64/src/mlkem_ntt_aarch64_asm.S"
#include "src/native/aarch64/src/mlkem_poly_mulcache_compute_aarch64_asm.S"
#include "src/native/aarch64/src/mlkem_poly_reduce_aarch64_asm.S"
#include "src/native/aarch64/src/mlkem_poly_tobytes_aarch64_asm.S"
#include "src/native/aarch64/src/mlkem_poly_tomont_aarch64_asm.S"
#include "src/native/aarch64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S"
#include "src/native/aarch64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S"
#include "src/native/aarch64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S"
#include "src/native/aarch64/src/mlkem_rej_uniform_aarch64_asm.S"
#endif /* MLK_SYS_AARCH64 */
#if defined(MLK_SYS_X86_64)
#include "src/native/x86_64/src/mlkem_intt_avx2_asm.S"
#include "src/native/x86_64/src/mlkem_ntt_avx2_asm.S"
#include "src/native/x86_64/src/mlkem_nttfrombytes_avx2_asm.S"
#include "src/native/x86_64/src/mlkem_ntttobytes_avx2_asm.S"
#include "src/native/x86_64/src/mlkem_nttunpack_avx2_asm.S"
#include "src/native/x86_64/src/mlkem_poly_compress_d10_avx2_asm.S"
#include "src/native/x86_64/src/mlkem_poly_compress_d11_avx2_asm.S"
#include "src/native/x86_64/src/mlkem_poly_compress_d4_avx2_asm.S"
#include "src/native/x86_64/src/mlkem_poly_compress_d5_avx2_asm.S"
#include "src/native/x86_64/src/mlkem_poly_decompress_d10_avx2_asm.S"
#include "src/native/x86_64/src/mlkem_poly_decompress_d11_avx2_asm.S"
#include "src/native/x86_64/src/mlkem_poly_decompress_d4_avx2_asm.S"
#include "src/native/x86_64/src/mlkem_poly_decompress_d5_avx2_asm.S"
#include "src/native/x86_64/src/mlkem_poly_mulcache_compute_avx2_asm.S"
#include "src/native/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.S"
#include "src/native/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.S"
#include "src/native/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.S"
#include "src/native/x86_64/src/mlkem_reduce_avx2_asm.S"
#include "src/native/x86_64/src/mlkem_rej_uniform_avx2_asm.S"
#include "src/native/x86_64/src/mlkem_tomont_avx2_asm.S"
#endif /* MLK_SYS_X86_64 */
#if defined(MLK_SYS_RISCV64)
#endif
#if defined(MLK_SYS_PPC64LE)
#include "src/native/ppc64le/src/mlkem_intt_ppc_asm.S"
#include "src/native/ppc64le/src/mlkem_ntt_ppc_asm.S"
#include "src/native/ppc64le/src/mlkem_poly_tomont_ppc_asm.S"
#include "src/native/ppc64le/src/mlkem_reduce_ppc_asm.S"
#endif /* MLK_SYS_PPC64LE */
#endif /* MLK_CONFIG_USE_NATIVE_BACKEND_ARITH */
#if defined(MLK_CONFIG_USE_NATIVE_BACKEND_FIPS202)
#if defined(MLK_SYS_AARCH64)
#include "src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_aarch64_asm.S"
#include "src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_aarch64_asm.S"
#include "src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_aarch64_asm.S"
#include "src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S"
#include "src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S"
#endif /* MLK_SYS_AARCH64 */
#if defined(MLK_SYS_X86_64)
#include "src/fips202/native/x86_64/src/keccak_f1600_x4_avx2_asm.S"
#endif
#if defined(MLK_SYS_ARMV81M_MVE)
#include "src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S"
#include "src/fips202/native/armv81m/src/keccak_f1600_x4_state_extract_bytes_mve.S"
#include "src/fips202/native/armv81m/src/keccak_f1600_x4_state_xor_bytes_mve.S"
#endif
#endif /* MLK_CONFIG_USE_NATIVE_BACKEND_FIPS202 */
/* Macro #undef's
*
* The following undefines macros from headers
* included by the source files imported above.
*
* This is to allow building and linking multiple builds
* of mlkem-native for varying parameter sets through concatenation
* of this file, as if the files had been compiled separately.
* If this is not relevant to you, you may remove the following.
*
* NOTE: This is not needed for the assembly SCU since, at present,
* there is no need to include it multiple times.
* We keep it for uniformity with mlkem_native.c only.
*
* NOTE: To avoid having to distinguish between which headers are included
* from the assembly files, we #undef the same set of directives
* as in mlkem_native.c
*/
/*
* Undefine macros from MLK_CONFIG_PARAMETER_SET-specific files
*/
/* mlkem/mlkem_native.h */
#undef MLKEM1024_BYTES
#undef MLKEM1024_CIPHERTEXTBYTES
#undef MLKEM1024_PUBLICKEYBYTES
#undef MLKEM1024_SECRETKEYBYTES
#undef MLKEM1024_SYMBYTES
#undef MLKEM512_BYTES
#undef MLKEM512_CIPHERTEXTBYTES
#undef MLKEM512_PUBLICKEYBYTES
#undef MLKEM512_SECRETKEYBYTES
#undef MLKEM512_SYMBYTES
#undef MLKEM768_BYTES
#undef MLKEM768_CIPHERTEXTBYTES
#undef MLKEM768_PUBLICKEYBYTES
#undef MLKEM768_SECRETKEYBYTES
#undef MLKEM768_SYMBYTES
#undef MLKEM_BYTES
#undef MLKEM_CIPHERTEXTBYTES
#undef MLKEM_CIPHERTEXTBYTES_
#undef MLKEM_PUBLICKEYBYTES
#undef MLKEM_PUBLICKEYBYTES_
#undef MLKEM_SECRETKEYBYTES
#undef MLKEM_SECRETKEYBYTES_
#undef MLKEM_SYMBYTES
#undef MLK_API_CONCAT
#undef MLK_API_CONCAT_
#undef MLK_API_CONCAT_UNDERSCORE
#undef MLK_API_MUST_CHECK_RETURN_VALUE
#undef MLK_API_NAMESPACE
#undef MLK_API_NAMESPACE_PREFIX
#undef MLK_API_QUALIFIER
#undef MLK_ERR_FAIL
#undef MLK_ERR_INVALID_PK
#undef MLK_ERR_INVALID_SK
#undef MLK_ERR_OUT_OF_MEMORY
#undef MLK_ERR_PCT_FAIL
#undef MLK_ERR_RNG_FAIL
#undef MLK_H
#undef MLK_MAX3_
#undef MLK_TOTAL_ALLOC_1024
#undef MLK_TOTAL_ALLOC_1024_DECAPS
#undef MLK_TOTAL_ALLOC_1024_ENCAPS
#undef MLK_TOTAL_ALLOC_1024_KEYPAIR
#undef MLK_TOTAL_ALLOC_1024_KEYPAIR_NO_PCT
#undef MLK_TOTAL_ALLOC_1024_KEYPAIR_PCT
#undef MLK_TOTAL_ALLOC_512
#undef MLK_TOTAL_ALLOC_512_DECAPS
#undef MLK_TOTAL_ALLOC_512_ENCAPS
#undef MLK_TOTAL_ALLOC_512_KEYPAIR
#undef MLK_TOTAL_ALLOC_512_KEYPAIR_NO_PCT
#undef MLK_TOTAL_ALLOC_512_KEYPAIR_PCT
#undef MLK_TOTAL_ALLOC_768
#undef MLK_TOTAL_ALLOC_768_DECAPS
#undef MLK_TOTAL_ALLOC_768_ENCAPS
#undef MLK_TOTAL_ALLOC_768_KEYPAIR
#undef MLK_TOTAL_ALLOC_768_KEYPAIR_NO_PCT
#undef MLK_TOTAL_ALLOC_768_KEYPAIR_PCT
/* mlkem/src/common.h */
#undef MLK_ADD_PARAM_SET
#undef MLK_ALLOC
#undef MLK_APPLY
#undef MLK_ASM_FN_SIZE
#undef MLK_ASM_FN_SYMBOL
#undef MLK_ASM_NAMESPACE
#undef MLK_BUILD_INTERNAL
#undef MLK_COMMON_H
#undef MLK_CONCAT
#undef MLK_CONCAT_
#undef MLK_EMPTY_CU
#undef MLK_ERR_FAIL
#undef MLK_ERR_INVALID_PK
#undef MLK_ERR_INVALID_SK
#undef MLK_ERR_OUT_OF_MEMORY
#undef MLK_ERR_PCT_FAIL
#undef MLK_ERR_RNG_FAIL
#undef MLK_EXTERNAL_API
#undef MLK_FIPS202X4_HEADER_FILE
#undef MLK_FIPS202_HEADER_FILE
#undef MLK_FREE
#undef MLK_INTERNAL_API
#undef MLK_INTERNAL_DATA_DECLARATION
#undef MLK_INTERNAL_DATA_DEFINITION
#undef MLK_NAMESPACE
#undef MLK_NAMESPACE_K
#undef MLK_NAMESPACE_PREFIX
#undef MLK_NAMESPACE_PREFIX_K
#undef mlk_memcpy
#undef mlk_memset
/* mlkem/src/indcpa.h */
#undef MLK_INDCPA_H
#undef mlk_gen_matrix
#undef mlk_indcpa_dec
#undef mlk_indcpa_enc
#undef mlk_indcpa_keypair_derand
/* mlkem/src/kem.h */
#undef MLK_KEM_H
#undef mlk_kem_check_pk
#undef mlk_kem_check_sk
#undef mlk_kem_dec
#undef mlk_kem_enc
#undef mlk_kem_enc_derand
#undef mlk_kem_keypair
#undef mlk_kem_keypair_derand
/* mlkem/src/params.h */
#undef MLKEM_DU
#undef MLKEM_DV
#undef MLKEM_ETA1
#undef MLKEM_ETA2
#undef MLKEM_INDCCA_CIPHERTEXTBYTES
#undef MLKEM_INDCCA_PUBLICKEYBYTES
#undef MLKEM_INDCCA_SECRETKEYBYTES
#undef MLKEM_INDCPA_BYTES
#undef MLKEM_INDCPA_MSGBYTES
#undef MLKEM_INDCPA_PUBLICKEYBYTES
#undef MLKEM_INDCPA_SECRETKEYBYTES
#undef MLKEM_K
#undef MLKEM_N
#undef MLKEM_POLYBYTES
#undef MLKEM_POLYCOMPRESSEDBYTES_D10
#undef MLKEM_POLYCOMPRESSEDBYTES_D11
#undef MLKEM_POLYCOMPRESSEDBYTES_D4
#undef MLKEM_POLYCOMPRESSEDBYTES_D5
#undef MLKEM_POLYCOMPRESSEDBYTES_DU
#undef MLKEM_POLYCOMPRESSEDBYTES_DV
#undef MLKEM_POLYVECBYTES
#undef MLKEM_POLYVECCOMPRESSEDBYTES_DU
#undef MLKEM_Q
#undef MLKEM_Q_HALF
#undef MLKEM_SSBYTES
#undef MLKEM_SYMBYTES
#undef MLKEM_UINT12_LIMIT
#undef MLK_PARAMS_H
/* mlkem/src/poly_k.h */
#undef MLK_POLY_K_H
#undef mlk_poly_compress_du
#undef mlk_poly_compress_dv
#undef mlk_poly_decompress_du
#undef mlk_poly_decompress_dv
#undef mlk_poly_getnoise_eta1122_4x
#undef mlk_poly_getnoise_eta1_4x
#undef mlk_poly_getnoise_eta2
#undef mlk_poly_getnoise_eta2_4x
#undef mlk_polymat
#undef mlk_polyvec
#undef mlk_polyvec_add
#undef mlk_polyvec_basemul_acc_montgomery_cached
#undef mlk_polyvec_compress_du
#undef mlk_polyvec_decompress_du
#undef mlk_polyvec_frombytes
#undef mlk_polyvec_invntt_tomont
#undef mlk_polyvec_mulcache
#undef mlk_polyvec_mulcache_compute
#undef mlk_polyvec_ntt
#undef mlk_polyvec_reduce
#undef mlk_polyvec_tobytes
#undef mlk_polyvec_tomont
#if !defined(MLK_CONFIG_MONOBUILD_KEEP_SHARED_HEADERS)
/*
* Undefine macros from MLK_CONFIG_PARAMETER_SET-generic files
*/
/* mlkem/src/compress.h */
#undef MLK_COMPRESS_H
#undef mlk_poly_compress_d10
#undef mlk_poly_compress_d11
#undef mlk_poly_compress_d4
#undef mlk_poly_compress_d5
#undef mlk_poly_decompress_d10
#undef mlk_poly_decompress_d11
#undef mlk_poly_decompress_d4
#undef mlk_poly_decompress_d5
#undef mlk_poly_frombytes
#undef mlk_poly_frommsg
#undef mlk_poly_tobytes
#undef mlk_poly_tomsg
/* mlkem/src/context.h */
#undef MLK_CONTEXT_H
#undef MLK_CONTEXT_PARAMETERS_0
#undef MLK_CONTEXT_PARAMETERS_1
#undef MLK_CONTEXT_PARAMETERS_2
#undef MLK_CONTEXT_PARAMETERS_3
#undef MLK_CONTEXT_PARAMETERS_4
#undef MLK_CONTEXT_UNUSED
/* mlkem/src/debug.h */
#undef MLK_DEBUG_H
#undef mlk_assert
#undef mlk_assert_abs_bound
#undef mlk_assert_abs_bound_2d
#undef mlk_assert_bound
#undef mlk_assert_bound_2d
#undef mlk_debug_check_assert
#undef mlk_debug_check_bounds
/* mlkem/src/poly.h */
#undef MLK_INVNTT_BOUND
#undef MLK_NTT_BOUND
#undef MLK_POLY_H
#undef mlk_poly_add
#undef mlk_poly_invntt_tomont
#undef mlk_poly_mulcache_compute
#undef mlk_poly_ntt
#undef mlk_poly_reduce
#undef mlk_poly_sub
#undef mlk_poly_tomont
/* mlkem/src/randombytes.h */
#undef MLK_RANDOMBYTES_H
/* mlkem/src/sampling.h */
#undef MLK_SAMPLING_H
#undef mlk_poly_cbd2
#undef mlk_poly_cbd3
#undef mlk_poly_rej_uniform
#undef mlk_poly_rej_uniform_x4
/* mlkem/src/symmetric.h */
#undef MLK_SYMMETRIC_H
#undef MLK_XOF_RATE
#undef mlk_hash_g
#undef mlk_hash_h
#undef mlk_hash_j
#undef mlk_prf_eta
#undef mlk_prf_eta1
#undef mlk_prf_eta1_x4
#undef mlk_prf_eta2
#undef mlk_xof_absorb
#undef mlk_xof_ctx
#undef mlk_xof_init
#undef mlk_xof_release
#undef mlk_xof_squeezeblocks
#undef mlk_xof_x4_absorb
#undef mlk_xof_x4_ctx
#undef mlk_xof_x4_init
#undef mlk_xof_x4_release
#undef mlk_xof_x4_squeezeblocks
/* mlkem/src/sys.h */
#undef MLK_ALIGN
#undef MLK_ALIGN_UP
#undef MLK_ALWAYS_INLINE
#undef MLK_CET_ENDBR
#undef MLK_CT_TESTING_DECLASSIFY
#undef MLK_CT_TESTING_SECRET
#undef MLK_DEFAULT_ALIGN
#undef MLK_HAVE_INLINE_ASM
#undef MLK_INLINE
#undef MLK_MUST_CHECK_RETURN_VALUE
#undef MLK_NOINLINE
#undef MLK_RESTRICT
#undef MLK_STATIC_TESTABLE
#undef MLK_SYSV_ABI
#undef MLK_SYSV_ABI_SUPPORTED
#undef MLK_SYS_AARCH64
#undef MLK_SYS_AARCH64_EB
#undef MLK_SYS_AARCH64_NEON
#undef MLK_SYS_APPLE
#undef MLK_SYS_ARMV81M_MVE
#undef MLK_SYS_BIG_ENDIAN
#undef MLK_SYS_H
#undef MLK_SYS_LINUX
#undef MLK_SYS_LITTLE_ENDIAN
#undef MLK_SYS_PPC64LE
#undef MLK_SYS_RISCV32
#undef MLK_SYS_RISCV64
#undef MLK_SYS_RISCV64_RVV
#undef MLK_SYS_WINDOWS
#undef MLK_SYS_X86_64
#undef MLK_SYS_X86_64_AVX2
/* mlkem/src/verify.h */
#undef MLK_USE_ASM_VALUE_BARRIER
#undef MLK_VERIFY_H
#undef mlk_ct_opt_blocker_u64
/* mlkem/src/cbmc.h */
#undef MLK_CBMC_H
#undef __contract__
#undef __loop__
#if !defined(MLK_CONFIG_FIPS202_CUSTOM_HEADER)
/*
* Undefine macros from FIPS-202 files
*/
/* mlkem/src/fips202/fips202.h */
#undef FIPS202_X4_DEFAULT_IMPLEMENTATION
#undef MLK_FIPS202_FIPS202_H
#undef SHA3_256_HASHBYTES
#undef SHA3_256_RATE
#undef SHA3_384_RATE
#undef SHA3_512_HASHBYTES
#undef SHA3_512_RATE
#undef SHAKE128_RATE
#undef SHAKE256_RATE
#undef mlk_sha3_256
#undef mlk_sha3_512
#undef mlk_shake128_absorb_once
#undef mlk_shake128_init
#undef mlk_shake128_release
#undef mlk_shake128_squeezeblocks
#undef mlk_shake256
/* mlkem/src/fips202/fips202x4.h */
#undef MLK_FIPS202_FIPS202X4_H
#undef mlk_shake128x4_absorb_once
#undef mlk_shake128x4_init
#undef mlk_shake128x4_release
#undef mlk_shake128x4_squeezeblocks
#undef mlk_shake256x4
/* mlkem/src/fips202/keccakf1600.h */
#undef MLK_FIPS202_KECCAKF1600_H
#undef MLK_KECCAK_LANES
#undef MLK_KECCAK_WAY
#undef mlk_keccakf1600_extract_bytes
#undef mlk_keccakf1600_permute
#undef mlk_keccakf1600_xor_bytes
#undef mlk_keccakf1600x4_extract_bytes
#undef mlk_keccakf1600x4_permute
#undef mlk_keccakf1600x4_xor_bytes
#endif /* !MLK_CONFIG_FIPS202_CUSTOM_HEADER */
#if defined(MLK_CONFIG_USE_NATIVE_BACKEND_FIPS202)
/* mlkem/src/fips202/native/api.h */
#undef MLK_FIPS202_NATIVE_API_H
#undef MLK_NATIVE_FUNC_FALLBACK
#undef MLK_NATIVE_FUNC_SUCCESS
/* mlkem/src/fips202/native/auto.h */
#undef MLK_FIPS202_NATIVE_AUTO_H
#if defined(MLK_SYS_AARCH64)
/*
* Undefine macros from native code (FIPS202, AArch64)
*/
/* mlkem/src/fips202/native/aarch64/auto.h */
#undef MLK_FIPS202_NATIVE_AARCH64_AUTO_H
/* mlkem/src/fips202/native/aarch64/src/fips202_native_aarch64.h */
#undef MLK_FIPS202_NATIVE_AARCH64_SRC_FIPS202_NATIVE_AARCH64_H
#undef mlk_keccak_f1600_x1_scalar_aarch64_asm
#undef mlk_keccak_f1600_x1_v84a_aarch64_asm
#undef mlk_keccak_f1600_x2_v84a_aarch64_asm
#undef mlk_keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm
#undef mlk_keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm
#undef mlk_keccakf1600_round_constants
/* mlkem/src/fips202/native/aarch64/x1_scalar.h */
#undef MLK_FIPS202_AARCH64_NEED_X1_SCALAR
#undef MLK_FIPS202_NATIVE_AARCH64_X1_SCALAR_H
#undef MLK_USE_NATIVE_FIPS202_X1
/* mlkem/src/fips202/native/aarch64/x1_v84a.h */
#undef MLK_FIPS202_AARCH64_NEED_X1_V84A
#undef MLK_FIPS202_NATIVE_AARCH64_X1_V84A_H
#undef MLK_USE_NATIVE_FIPS202_X1
/* mlkem/src/fips202/native/aarch64/x2_v84a.h */
#undef MLK_FIPS202_AARCH64_NEED_X2_V84A
#undef MLK_FIPS202_NATIVE_AARCH64_X2_V84A_H
#undef MLK_USE_NATIVE_FIPS202_X4
/* mlkem/src/fips202/native/aarch64/x4_v8a_scalar.h */
#undef MLK_FIPS202_AARCH64_NEED_X4_V8A_SCALAR_HYBRID
#undef MLK_FIPS202_NATIVE_AARCH64_X4_V8A_SCALAR_H
#undef MLK_USE_NATIVE_FIPS202_X4
/* mlkem/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h */
#undef MLK_FIPS202_AARCH64_NEED_X4_V8A_V84A_SCALAR_HYBRID
#undef MLK_FIPS202_NATIVE_AARCH64_X4_V8A_V84A_SCALAR_H
#undef MLK_USE_NATIVE_FIPS202_X4
#endif /* MLK_SYS_AARCH64 */
#if defined(MLK_SYS_X86_64)
/*
* Undefine macros from native code (FIPS202, x86_64)
*/
/* mlkem/src/fips202/native/x86_64/keccak_f1600_x4_avx2.h */
#undef MLK_FIPS202_NATIVE_X86_64_KECCAK_F1600_X4_AVX2_H
#undef MLK_FIPS202_X86_64_NEED_X4_AVX2
#undef MLK_USE_NATIVE_FIPS202_X4
/* mlkem/src/fips202/native/x86_64/src/fips202_native_x86_64.h */
#undef MLK_FIPS202_NATIVE_X86_64_SRC_FIPS202_NATIVE_X86_64_H
#undef mlk_keccak_f1600_x4_avx2_asm
#undef mlk_keccak_rho56
#undef mlk_keccak_rho8
#undef mlk_keccakf1600_round_constants
#endif /* MLK_SYS_X86_64 */
#if defined(MLK_SYS_ARMV81M_MVE)
/*
* Undefine macros from native code (FIPS202, Armv8.1-M)
*/
/* mlkem/src/fips202/native/armv81m/mve.h */
#undef MLK_FIPS202_ARMV81M_NEED_X4
#undef MLK_FIPS202_NATIVE_ARMV81M
#undef MLK_FIPS202_NATIVE_ARMV81M_MVE_H
#undef MLK_USE_NATIVE_FIPS202_X4
#undef MLK_USE_NATIVE_FIPS202_X4_EXTRACT_BYTES
#undef MLK_USE_NATIVE_FIPS202_X4_XOR_BYTES
#undef mlk_keccak_f1600_x4_native_impl
/* mlkem/src/fips202/native/armv81m/src/fips202_native_armv81m.h */
#undef MLK_FIPS202_NATIVE_ARMV81M_SRC_FIPS202_NATIVE_ARMV81M_H
#undef mlk_keccak_f1600_x4_mve_asm
#undef mlk_keccak_f1600_x4_state_extract_bytes_asm
#undef mlk_keccak_f1600_x4_state_xor_bytes_asm
#undef mlk_keccakf1600_round_constants
#endif /* MLK_SYS_ARMV81M_MVE */
#endif /* MLK_CONFIG_USE_NATIVE_BACKEND_FIPS202 */
#if defined(MLK_CONFIG_USE_NATIVE_BACKEND_ARITH)
/* mlkem/src/native/api.h */
#undef MLK_INVNTT_BOUND
#undef MLK_NATIVE_API_H
#undef MLK_NATIVE_FUNC_FALLBACK
#undef MLK_NATIVE_FUNC_SUCCESS
#undef MLK_NTT_BOUND
/* mlkem/src/native/meta.h */
#undef MLK_NATIVE_META_H
#if defined(MLK_SYS_AARCH64)
/*
* Undefine macros from native code (Arith, AArch64)
*/
/* mlkem/src/native/aarch64/meta.h */
#undef MLK_ARITH_BACKEND_AARCH64
#undef MLK_NATIVE_AARCH64_META_H
#undef MLK_USE_NATIVE_INTT
#undef MLK_USE_NATIVE_NTT
#undef MLK_USE_NATIVE_POLYVEC_BASEMUL_ACC_MONTGOMERY_CACHED
#undef MLK_USE_NATIVE_POLY_MULCACHE_COMPUTE
#undef MLK_USE_NATIVE_POLY_REDUCE
#undef MLK_USE_NATIVE_POLY_TOBYTES
#undef MLK_USE_NATIVE_POLY_TOMONT
#undef MLK_USE_NATIVE_REJ_UNIFORM
/* mlkem/src/native/aarch64/src/arith_native_aarch64.h */
#undef MLK_NATIVE_AARCH64_SRC_ARITH_NATIVE_AARCH64_H
#undef mlk_aarch64_invntt_zetas_layer12345
#undef mlk_aarch64_invntt_zetas_layer67
#undef mlk_aarch64_ntt_zetas_layer12345
#undef mlk_aarch64_ntt_zetas_layer67
#undef mlk_aarch64_zetas_mulcache_native
#undef mlk_aarch64_zetas_mulcache_twisted_native
#undef mlk_intt_aarch64_asm
#undef mlk_ntt_aarch64_asm
#undef mlk_poly_mulcache_compute_aarch64_asm
#undef mlk_poly_reduce_aarch64_asm
#undef mlk_poly_tobytes_aarch64_asm
#undef mlk_poly_tomont_aarch64_asm
#undef mlk_polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm
#undef mlk_polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm
#undef mlk_polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm
#undef mlk_rej_uniform_aarch64_asm
#undef mlk_rej_uniform_table
#endif /* MLK_SYS_AARCH64 */
#if defined(MLK_SYS_X86_64)
/*
* Undefine macros from native code (Arith, X86_64)
*/
/* mlkem/src/native/x86_64/meta.h */
#undef MLK_ARITH_BACKEND_X86_64_DEFAULT
#undef MLK_NATIVE_X86_64_META_H
#undef MLK_USE_NATIVE_INTT
#undef MLK_USE_NATIVE_NTT
#undef MLK_USE_NATIVE_NTT_CUSTOM_ORDER
#undef MLK_USE_NATIVE_POLYVEC_BASEMUL_ACC_MONTGOMERY_CACHED
#undef MLK_USE_NATIVE_POLY_COMPRESS_D10
#undef MLK_USE_NATIVE_POLY_COMPRESS_D11
#undef MLK_USE_NATIVE_POLY_COMPRESS_D4
#undef MLK_USE_NATIVE_POLY_COMPRESS_D5
#undef MLK_USE_NATIVE_POLY_DECOMPRESS_D10
#undef MLK_USE_NATIVE_POLY_DECOMPRESS_D11
#undef MLK_USE_NATIVE_POLY_DECOMPRESS_D4
#undef MLK_USE_NATIVE_POLY_DECOMPRESS_D5
#undef MLK_USE_NATIVE_POLY_FROMBYTES
#undef MLK_USE_NATIVE_POLY_MULCACHE_COMPUTE
#undef MLK_USE_NATIVE_POLY_REDUCE
#undef MLK_USE_NATIVE_POLY_TOBYTES
#undef MLK_USE_NATIVE_POLY_TOMONT
#undef MLK_USE_NATIVE_REJ_UNIFORM
/* mlkem/src/native/x86_64/src/arith_native_x86_64.h */
#undef MLK_AVX2_REJ_UNIFORM_BUFLEN
#undef MLK_NATIVE_X86_64_SRC_ARITH_NATIVE_X86_64_H
#undef mlk_invntt_avx2_asm
#undef mlk_ntt_avx2_asm
#undef mlk_nttfrombytes_avx2_asm
#undef mlk_ntttobytes_avx2_asm
#undef mlk_nttunpack_avx2_asm
#undef mlk_poly_compress_d10_avx2_asm
#undef mlk_poly_compress_d11_avx2_asm
#undef mlk_poly_compress_d4_avx2_asm
#undef mlk_poly_compress_d5_avx2_asm
#undef mlk_poly_decompress_d10_avx2_asm
#undef mlk_poly_decompress_d11_avx2_asm
#undef mlk_poly_decompress_d4_avx2_asm
#undef mlk_poly_decompress_d5_avx2_asm
#undef mlk_poly_mulcache_compute_avx2_asm
#undef mlk_polyvec_basemul_acc_montgomery_cached_k2_avx2_asm
#undef mlk_polyvec_basemul_acc_montgomery_cached_k3_avx2_asm
#undef mlk_polyvec_basemul_acc_montgomery_cached_k4_avx2_asm
#undef mlk_reduce_avx2_asm
#undef mlk_rej_uniform_avx2_asm
#undef mlk_rej_uniform_table
#undef mlk_tomont_avx2_asm
/* mlkem/src/native/x86_64/src/compress_consts.h */
#undef MLK_NATIVE_X86_64_SRC_COMPRESS_CONSTS_H
#undef mlk_compress_d10_data
#undef mlk_compress_d11_data
#undef mlk_compress_d4_data
#undef mlk_compress_d5_data
#undef mlk_decompress_d10_data
#undef mlk_decompress_d11_data
#undef mlk_decompress_d4_data
#undef mlk_decompress_d5_data
/* mlkem/src/native/x86_64/src/consts.h */
#undef MLK_AVX2_BACKEND_DATA_OFFSET_MULCACHE_TWIDDLES
#undef MLK_AVX2_BACKEND_DATA_OFFSET_REVIDXB
#undef MLK_AVX2_BACKEND_DATA_OFFSET_REVIDXD
#undef MLK_AVX2_BACKEND_DATA_OFFSET_ZETAS_EXP
#undef MLK_NATIVE_X86_64_SRC_CONSTS_H
#undef mlk_qdata
#endif /* MLK_SYS_X86_64 */
#if defined(MLK_SYS_RISCV64)
/*
* Undefine macros from native code (Arith, RISC-V 64)
*/
/* mlkem/src/native/riscv64/meta.h */
#undef MLK_ARITH_BACKEND_RISCV64
#undef MLK_NATIVE_RISCV64_META_H
#undef MLK_USE_NATIVE_INTT
#undef MLK_USE_NATIVE_NTT
#undef MLK_USE_NATIVE_POLYVEC_BASEMUL_ACC_MONTGOMERY_CACHED
#undef MLK_USE_NATIVE_POLY_MULCACHE_COMPUTE
#undef MLK_USE_NATIVE_POLY_REDUCE
#undef MLK_USE_NATIVE_POLY_TOMONT
#undef MLK_USE_NATIVE_REJ_UNIFORM
/* mlkem/src/native/riscv64/src/arith_native_riscv64.h */
#undef MLK_NATIVE_RISCV64_SRC_ARITH_NATIVE_RISCV64_H
#undef mlk_rv64v_poly_add
#undef mlk_rv64v_poly_basemul_mont_add_k2
#undef mlk_rv64v_poly_basemul_mont_add_k3
#undef mlk_rv64v_poly_basemul_mont_add_k4
#undef mlk_rv64v_poly_invntt_tomont
#undef mlk_rv64v_poly_ntt
#undef mlk_rv64v_poly_reduce
#undef mlk_rv64v_poly_sub
#undef mlk_rv64v_poly_tomont
#undef mlk_rv64v_rej_uniform
/* mlkem/src/native/riscv64/src/rv64v_debug.h */
#undef MLK_NATIVE_RISCV64_SRC_RV64V_DEBUG_H
#undef mlk_assert_abs_bound_int16m1
#undef mlk_assert_abs_bound_int16m2
#undef mlk_assert_bound_int16m1
#undef mlk_assert_bound_int16m2
#undef mlk_debug_check_bounds_int16m1
#undef mlk_debug_check_bounds_int16m2
#endif /* MLK_SYS_RISCV64 */
#if defined(MLK_SYS_PPC64LE)
/*
* Undefine macros from native code (Arith, PPC64LE)
*/
/* mlkem/src/native/ppc64le/meta.h */
#undef MLK_ARITH_BACKEND_NAME
#undef MLK_ARITH_BACKEND_PPC64LE_DEFAULT
#undef MLK_NATIVE_PPC64LE_META_H
#undef MLK_USE_NATIVE_INTT
#undef MLK_USE_NATIVE_NTT
#undef MLK_USE_NATIVE_POLY_REDUCE
#undef MLK_USE_NATIVE_POLY_TOMONT
/* mlkem/src/native/ppc64le/src/arith_native_ppc64le.h */
#undef MLK_NATIVE_PPC64LE_SRC_ARITH_NATIVE_PPC64LE_H
#undef mlk_intt_ppc_asm
#undef mlk_ntt_ppc_asm
#undef mlk_poly_tomont_ppc_asm
#undef mlk_reduce_ppc_asm
/* mlkem/src/native/ppc64le/src/consts.h */
#undef MLK_NATIVE_PPC64LE_SRC_CONSTS_H
#undef MLK_PPC_C20159_OFFSET
#undef MLK_PPC_NQ_OFFSET
#undef MLK_PPC_N_INV_OFFSET
#undef MLK_PPC_N_INV_TW_OFFSET
#undef MLK_PPC_Q_OFFSET
#undef MLK_PPC_TOMONT_OFFSET
#undef MLK_PPC_TOMONT_TW_OFFSET
#undef MLK_PPC_ZETA_INTT_OFFSET
#undef MLK_PPC_ZETA_INTT_TW_OFFSET
#undef MLK_PPC_ZETA_NTT_OFFSET
#undef MLK_PPC_ZETA_NTT_TW_OFFSET
#undef mlk_ppc_qdata
#endif /* MLK_SYS_PPC64LE */
#endif /* MLK_CONFIG_USE_NATIVE_BACKEND_ARITH */
#endif /* !MLK_CONFIG_MONOBUILD_KEEP_SHARED_HEADERS */