files: # INTRINSICS - name: libcrux_intrinsics_avx2 library: true inline_static: true api: - [libcrux_intrinsics, avx2] # Constant time ops - name: libcrux_ct_ops inline_static: true api: - [libcrux_ml_kem, constant_time_ops] # SHA3 (no mention of libcrux_mlkem in this section, please) - name: libcrux_sha3_avx2 inline_static: true target: "avx2" # This is needed solely for the benchmarking test -- otherwise these would # all be private. Note that the order matters! So we put these first so that # they match immediately (and get promoted to internal), then the rest of # the behavior applies. api: patterns: - [libcrux_sha3, avx2, "*"] - [libcrux_sha3, simd, avx2, "*"] exact: - [libcrux_sha3, avx2, x4, incremental, KeccakState4] monomorphizations_exact: - [libcrux_sha3, avx2, x4, incremental, KeccakState4] - [libcrux_sha3, generic_keccak, absorb_final__core_core_arch_x86___m256i_4size_t_168size_t_31uint8_t ] - [libcrux_sha3, generic_keccak, squeeze_first_three_blocks__core_core_arch_x86___m256i_4size_t_168size_t ] - [libcrux_sha3, generic_keccak, "KeccakState__core_core_arch_x86___m256i_$4size_t"] monomorphizations_of: - [libcrux_sha3, avx2, "*"] - [libcrux_sha3, simd, avx2, "*"] monomorphizations_using: # Should this also include the monomorphizations using # core.arch.x86.__m256i? - [libcrux_sha3, avx2, "*"] - [libcrux_sha3, simd, avx2, "*"] include_in_h: - '"intrinsics/libcrux_intrinsics_avx2.h"' # Portable SHA3 - name: libcrux_sha3_portable inline_static: true api: patterns: - [libcrux_sha3, "*"] monomorphizations_of: - [libcrux_sha3, "*"] monomorphizations_using: - [libcrux_sha3, "*"] # MLKEM: MISC NON-ARCHITECTURE SPECIFIC HEADERS - name: libcrux_core inline_static: true private: monomorphizations_of: - [core, "*"] - [libcrux_ml_kem, types, "*"] - [libcrux_ml_kem, constant_time_ops, "*"] - [libcrux_ml_kem, utils, "*" ] monomorphizations_using: - [Eurydice, "*" ] - [libcrux_ml_kem, types, "*"] patterns: - [core, "*"] - [libcrux_ml_kem, types ] - [libcrux_ml_kem, constants ] - [libcrux_ml_kem, constant_time_ops, "*"] - [libcrux_ml_kem, utils, "*" ] api: - [Eurydice, "*"] # MLKEM-768 - name: libcrux_mlkem768_avx2 inline_static: true target: "avx2" api: patterns: - [libcrux_ml_kem, vector, avx2, "*"] - [libcrux_ml_kem, hash_functions, avx2, "*"] - [libcrux_ml_kem, mlkem768, avx2] - [libcrux_ml_kem, ind_cca, instantiations, avx2] monomorphizations_of: - [libcrux_ml_kem, vector, avx2, "*"] - [libcrux_ml_kem, hash_functions, avx2, "*"] - [libcrux_ml_kem, mlkem768, avx2] - [libcrux_ml_kem, ind_cca, instantiations, avx2] monomorphizations_using: - [libcrux_ml_kem, vector, avx2, "*"] - [libcrux_ml_kem, hash_functions, avx2, "*"] - name: libcrux_mlkem768_portable inline_static: true private: exact: - [ libcrux_ml_kem, ind_cca, MlKem ] - [ libcrux_ml_kem, ind_cca, Kyber ] api: patterns: - [libcrux_ml_kem, "*"] - [libcrux_ml_kem, vector, "*"] - [libcrux_ml_kem, hash_functions, portable, "*"] - [libcrux_ml_kem, mlkem768, portable, "*"] - [libcrux_ml_kem, ind_cca, instantiations, portable, "*"] monomorphizations_of: - [libcrux_ml_kem, polynomial, "*" ] - [libcrux_ml_kem, vector, "*"] - [libcrux_ml_kem, hash_functions, portable, "*"] - [libcrux_ml_kem, mlkem768, portable] - [libcrux_ml_kem, ind_cca, instantiations, portable, "*"] monomorphizations_using: - [libcrux_ml_kem, polynomial, "*" ] - [libcrux_ml_kem, vector, "*"] - [libcrux_ml_kem, hash_functions, portable, "*"] - [libcrux_ml_kem, ind_cca, instantiations, portable, "*"]