From 9a050f3aae5e934e0f62c1a5cbb71ea079b32b66 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 20 Oct 2026 08:24:57 +0000 Subject: [PATCH 1/3] Guard assembly with its required CPU features Backend assembly is gated by backend and parameter-set macros. The ABI checker enables those macros for every kernel and adds CPU feature flags so the files assemble. It cannot simply use the platform's flags while unsupported files still contain instructions. Guard backend assembly with the architecture and feature macros for its instructions. Use `__ARM_FEATURE_SHA3` for the SHA3 kernels alongside `MLK_SYS_AARCH64_NEON`. Apply matching guards to the ABI stubs and generated checks. Define `MLK_SYS_ARMV81M_MVE` only when `__ARM_FEATURE_MVE` is present: Armv8.1-M architecture support alone does not enable MVE. GCC exposes the feature macro only with a softfp or hard float ABI, so use `-mfloat-abi=hard` when autogen regenerates MVE assembly. The AWS-LC importer replaces `common.h` with s2n-bignum headers after running `unifdef`. Add a pre-import patch that resolves the NEON and AVX2 guards for the selected assembly, so imported files do not depend on mlkem-native's system macros. Signed-off-by: Hanno Becker --- dev/aarch64_clean/src/mlkem_intt_aarch64_asm.S | 8 +++++--- dev/aarch64_clean/src/mlkem_ntt_aarch64_asm.S | 6 ++++-- .../mlkem_poly_mulcache_compute_aarch64_asm.S | 6 ++++-- .../src/mlkem_poly_reduce_aarch64_asm.S | 6 ++++-- .../src/mlkem_poly_tobytes_aarch64_asm.S | 8 +++++--- .../src/mlkem_poly_tomont_aarch64_asm.S | 7 ++++--- ...emul_acc_montgomery_cached_k2_aarch64_asm.S | 6 ++++-- ...emul_acc_montgomery_cached_k3_aarch64_asm.S | 6 ++++-- ...emul_acc_montgomery_cached_k4_aarch64_asm.S | 6 ++++-- .../src/mlkem_rej_uniform_aarch64_asm.S | 6 ++++-- dev/aarch64_opt/src/mlkem_intt_aarch64_asm.S | 8 +++++--- dev/aarch64_opt/src/mlkem_ntt_aarch64_asm.S | 6 ++++-- .../mlkem_poly_mulcache_compute_aarch64_asm.S | 6 ++++-- .../src/mlkem_poly_reduce_aarch64_asm.S | 6 ++++-- .../src/mlkem_poly_tobytes_aarch64_asm.S | 8 +++++--- .../src/mlkem_poly_tomont_aarch64_asm.S | 7 ++++--- ...emul_acc_montgomery_cached_k2_aarch64_asm.S | 6 ++++-- ...emul_acc_montgomery_cached_k3_aarch64_asm.S | 6 ++++-- ...emul_acc_montgomery_cached_k4_aarch64_asm.S | 6 ++++-- .../src/mlkem_rej_uniform_aarch64_asm.S | 6 ++++-- .../src/keccak_f1600_x1_scalar_aarch64_asm.S | 5 +++-- .../src/keccak_f1600_x1_v84a_aarch64_asm.S | 8 ++++---- .../src/keccak_f1600_x2_v84a_aarch64_asm.S | 8 ++++---- ...ak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S | 7 ++++--- ...600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S | 8 ++++---- .../keccak_f1600_x1_scalar_symbolic.S | 5 +++-- .../keccak_f1600_x4_v8a_scalar_hybrid_clean.S | 7 ++++--- ...cak_f1600_x4_v8a_v84a_scalar_hybrid_clean.S | 8 ++++---- dev/fips202/armv81m/src/keccak_f1600_x4_mve.S | 6 ++++-- .../keccak_f1600_x4_state_extract_bytes_mve.S | 6 ++++-- .../src/keccak_f1600_x4_state_xor_bytes_mve.S | 6 ++++-- .../x86_64/src/keccak_f1600_x4_avx2_asm.S | 6 ++++-- dev/ppc64le/src/mlkem_intt_ppc_asm.S | 8 +++++--- dev/ppc64le/src/mlkem_ntt_ppc_asm.S | 7 ++++--- dev/ppc64le/src/mlkem_poly_tomont_ppc_asm.S | 7 ++++--- dev/ppc64le/src/mlkem_reduce_ppc_asm.S | 7 ++++--- dev/x86_64/src/mlkem_intt_avx2_asm.S | 8 +++++--- dev/x86_64/src/mlkem_ntt_avx2_asm.S | 7 ++++--- dev/x86_64/src/mlkem_nttfrombytes_avx2_asm.S | 8 +++++--- dev/x86_64/src/mlkem_ntttobytes_avx2_asm.S | 8 +++++--- dev/x86_64/src/mlkem_nttunpack_avx2_asm.S | 7 ++++--- .../src/mlkem_poly_compress_d10_avx2_asm.S | 11 ++++++----- .../src/mlkem_poly_compress_d11_avx2_asm.S | 10 ++++++---- .../src/mlkem_poly_compress_d4_avx2_asm.S | 11 ++++++----- .../src/mlkem_poly_compress_d5_avx2_asm.S | 10 ++++++---- .../src/mlkem_poly_decompress_d10_avx2_asm.S | 10 ++++++---- .../src/mlkem_poly_decompress_d11_avx2_asm.S | 9 +++++---- .../src/mlkem_poly_decompress_d4_avx2_asm.S | 10 ++++++---- .../src/mlkem_poly_decompress_d5_avx2_asm.S | 9 +++++---- .../src/mlkem_poly_mulcache_compute_avx2_asm.S | 7 ++++--- ...basemul_acc_montgomery_cached_k2_avx2_asm.S | 8 +++++--- ...basemul_acc_montgomery_cached_k3_avx2_asm.S | 8 +++++--- ...basemul_acc_montgomery_cached_k4_avx2_asm.S | 8 +++++--- dev/x86_64/src/mlkem_reduce_avx2_asm.S | 7 ++++--- dev/x86_64/src/mlkem_rej_uniform_avx2_asm.S | 7 ++++--- dev/x86_64/src/mlkem_tomont_avx2_asm.S | 7 ++++--- integration/aws-lc/pre_import.patch | 13 +++++++++++++ .../src/keccak_f1600_x1_scalar_aarch64_asm.S | 5 +++-- .../src/keccak_f1600_x1_v84a_aarch64_asm.S | 8 ++++---- .../src/keccak_f1600_x2_v84a_aarch64_asm.S | 8 ++++---- ...ak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S | 7 ++++--- ...600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S | 8 ++++---- .../native/armv81m/src/keccak_f1600_x4_mve.S | 6 ++++-- .../keccak_f1600_x4_state_extract_bytes_mve.S | 6 ++++-- .../src/keccak_f1600_x4_state_xor_bytes_mve.S | 6 ++++-- .../x86_64/src/keccak_f1600_x4_avx2_asm.S | 6 ++++-- .../aarch64/src/mlkem_intt_aarch64_asm.S | 8 +++++--- .../native/aarch64/src/mlkem_ntt_aarch64_asm.S | 6 ++++-- .../mlkem_poly_mulcache_compute_aarch64_asm.S | 6 ++++-- .../src/mlkem_poly_reduce_aarch64_asm.S | 6 ++++-- .../src/mlkem_poly_tobytes_aarch64_asm.S | 8 +++++--- .../src/mlkem_poly_tomont_aarch64_asm.S | 7 ++++--- ...emul_acc_montgomery_cached_k2_aarch64_asm.S | 6 ++++-- ...emul_acc_montgomery_cached_k3_aarch64_asm.S | 6 ++++-- ...emul_acc_montgomery_cached_k4_aarch64_asm.S | 6 ++++-- .../src/mlkem_rej_uniform_aarch64_asm.S | 6 ++++-- .../native/ppc64le/src/mlkem_intt_ppc_asm.S | 8 +++++--- .../src/native/ppc64le/src/mlkem_ntt_ppc_asm.S | 7 ++++--- .../ppc64le/src/mlkem_poly_tomont_ppc_asm.S | 7 ++++--- .../native/ppc64le/src/mlkem_reduce_ppc_asm.S | 7 ++++--- .../native/x86_64/src/mlkem_intt_avx2_asm.S | 8 +++++--- .../src/native/x86_64/src/mlkem_ntt_avx2_asm.S | 7 ++++--- .../x86_64/src/mlkem_nttfrombytes_avx2_asm.S | 8 +++++--- .../x86_64/src/mlkem_ntttobytes_avx2_asm.S | 8 +++++--- .../x86_64/src/mlkem_nttunpack_avx2_asm.S | 7 ++++--- .../src/mlkem_poly_compress_d10_avx2_asm.S | 11 ++++++----- .../src/mlkem_poly_compress_d11_avx2_asm.S | 10 ++++++---- .../src/mlkem_poly_compress_d4_avx2_asm.S | 11 ++++++----- .../src/mlkem_poly_compress_d5_avx2_asm.S | 10 ++++++---- .../src/mlkem_poly_decompress_d10_avx2_asm.S | 10 ++++++---- .../src/mlkem_poly_decompress_d11_avx2_asm.S | 9 +++++---- .../src/mlkem_poly_decompress_d4_avx2_asm.S | 10 ++++++---- .../src/mlkem_poly_decompress_d5_avx2_asm.S | 9 +++++---- .../src/mlkem_poly_mulcache_compute_avx2_asm.S | 7 ++++--- ...basemul_acc_montgomery_cached_k2_avx2_asm.S | 8 +++++--- ...basemul_acc_montgomery_cached_k3_avx2_asm.S | 8 +++++--- ...basemul_acc_montgomery_cached_k4_avx2_asm.S | 8 +++++--- .../native/x86_64/src/mlkem_reduce_avx2_asm.S | 7 ++++--- .../x86_64/src/mlkem_rej_uniform_avx2_asm.S | 7 ++++--- .../native/x86_64/src/mlkem_tomont_avx2_asm.S | 7 ++++--- mlkem/src/sys.h | 5 +++-- scripts/autogen | 18 +++++++++++------- test/abicheck/aarch64/callstub_aarch64.S | 4 ++++ test/abicheck/aarch64/selftest_aarch64.S | 4 ++++ test/abicheck/armv81m/callstub_armv81m.S | 6 ++++++ .../checks/check_keccak_f1600_x4_mve_asm.c | 4 ++-- test/abicheck/armv81m/checks_armv81m_all.h | 4 ---- test/abicheck/armv81m/selftest_armv81m.S | 6 ++++++ test/abicheck/x86_64/callstub_x86_64.S | 6 ++++++ .../x86_64/checks/check_invntt_avx2_asm.c | 4 ++-- .../checks/check_keccak_f1600_x4_avx2_asm.c | 4 ++-- .../x86_64/checks/check_ntt_avx2_asm.c | 4 ++-- .../checks/check_nttfrombytes_avx2_asm.c | 4 ++-- .../x86_64/checks/check_ntttobytes_avx2_asm.c | 4 ++-- .../x86_64/checks/check_nttunpack_avx2_asm.c | 4 ++-- .../checks/check_poly_compress_d10_avx2_asm.c | 4 ++-- .../checks/check_poly_compress_d11_avx2_asm.c | 4 ++-- .../checks/check_poly_compress_d4_avx2_asm.c | 4 ++-- .../checks/check_poly_compress_d5_avx2_asm.c | 4 ++-- .../check_poly_decompress_d10_avx2_asm.c | 4 ++-- .../check_poly_decompress_d11_avx2_asm.c | 4 ++-- .../checks/check_poly_decompress_d4_avx2_asm.c | 4 ++-- .../checks/check_poly_decompress_d5_avx2_asm.c | 4 ++-- .../check_poly_mulcache_compute_avx2_asm.c | 4 ++-- ...basemul_acc_montgomery_cached_k2_avx2_asm.c | 4 ++-- ...basemul_acc_montgomery_cached_k3_avx2_asm.c | 4 ++-- ...basemul_acc_montgomery_cached_k4_avx2_asm.c | 4 ++-- .../x86_64/checks/check_reduce_avx2_asm.c | 4 ++-- .../x86_64/checks/check_rej_uniform_avx2_asm.c | 4 ++-- .../x86_64/checks/check_tomont_avx2_asm.c | 4 ++-- test/abicheck/x86_64/checks_x86_64_all.h | 8 ++++---- test/abicheck/x86_64/selftest_x86_64.S | 6 ++++++ 132 files changed, 548 insertions(+), 353 deletions(-) create mode 100644 integration/aws-lc/pre_import.patch diff --git a/dev/aarch64_clean/src/mlkem_intt_aarch64_asm.S b/dev/aarch64_clean/src/mlkem_intt_aarch64_asm.S index 2f74cf4cae..79de79e251 100644 --- a/dev/aarch64_clean/src/mlkem_intt_aarch64_asm.S +++ b/dev/aarch64_clean/src/mlkem_intt_aarch64_asm.S @@ -51,7 +51,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && \ +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (!defined(MLK_CONFIG_NO_ENCAPS_API) || \ !defined(MLK_CONFIG_NO_DECAPS_API)) @@ -402,5 +403,6 @@ mlk_intt_layer123_start: .unreq ninv_tw /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ - (!MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API) */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && (!MLK_CONFIG_NO_ENCAPS_API || \ + !MLK_CONFIG_NO_DECAPS_API) */ diff --git a/dev/aarch64_clean/src/mlkem_ntt_aarch64_asm.S b/dev/aarch64_clean/src/mlkem_ntt_aarch64_asm.S index 1217a31f38..b78a3402cf 100644 --- a/dev/aarch64_clean/src/mlkem_ntt_aarch64_asm.S +++ b/dev/aarch64_clean/src/mlkem_ntt_aarch64_asm.S @@ -51,7 +51,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && \ +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* simpasm: header-end */ @@ -341,4 +342,5 @@ mlk_ntt_layer4567_start: .unreq t3 /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/aarch64_clean/src/mlkem_poly_mulcache_compute_aarch64_asm.S b/dev/aarch64_clean/src/mlkem_poly_mulcache_compute_aarch64_asm.S index 7d59bf1ae3..266deee63f 100644 --- a/dev/aarch64_clean/src/mlkem_poly_mulcache_compute_aarch64_asm.S +++ b/dev/aarch64_clean/src/mlkem_poly_mulcache_compute_aarch64_asm.S @@ -40,7 +40,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && \ +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* simpasm: header-end */ @@ -129,4 +130,5 @@ mlk_poly_mulcache_compute_loop_start: .unreq modulus_twisted /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/aarch64_clean/src/mlkem_poly_reduce_aarch64_asm.S b/dev/aarch64_clean/src/mlkem_poly_reduce_aarch64_asm.S index 1d1847195c..b696069a17 100644 --- a/dev/aarch64_clean/src/mlkem_poly_reduce_aarch64_asm.S +++ b/dev/aarch64_clean/src/mlkem_poly_reduce_aarch64_asm.S @@ -22,7 +22,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && \ +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* simpasm: header-end */ @@ -106,4 +107,5 @@ mlk_poly_reduce_loop_start: .unreq modulus_twisted /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/aarch64_clean/src/mlkem_poly_tobytes_aarch64_asm.S b/dev/aarch64_clean/src/mlkem_poly_tobytes_aarch64_asm.S index ac28c822de..53eca53f76 100644 --- a/dev/aarch64_clean/src/mlkem_poly_tobytes_aarch64_asm.S +++ b/dev/aarch64_clean/src/mlkem_poly_tobytes_aarch64_asm.S @@ -28,7 +28,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && \ +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (!defined(MLK_CONFIG_NO_KEYPAIR_API) || \ !defined(MLK_CONFIG_NO_ENCAPS_API)) @@ -96,5 +97,6 @@ mlk_poly_tobytes_loop_start: .unreq count /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ - (!MLK_CONFIG_NO_KEYPAIR_API || !MLK_CONFIG_NO_ENCAPS_API) */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && (!MLK_CONFIG_NO_KEYPAIR_API || \ + !MLK_CONFIG_NO_ENCAPS_API) */ diff --git a/dev/aarch64_clean/src/mlkem_poly_tomont_aarch64_asm.S b/dev/aarch64_clean/src/mlkem_poly_tomont_aarch64_asm.S index cf050fff90..0f8894fbe5 100644 --- a/dev/aarch64_clean/src/mlkem_poly_tomont_aarch64_asm.S +++ b/dev/aarch64_clean/src/mlkem_poly_tomont_aarch64_asm.S @@ -22,7 +22,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && \ +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ !defined(MLK_CONFIG_NO_KEYPAIR_API) /* simpasm: header-end */ @@ -104,5 +105,5 @@ mlk_poly_tomont_loop: .unreq tmp0 /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ - !MLK_CONFIG_NO_KEYPAIR_API */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && !MLK_CONFIG_NO_KEYPAIR_API */ diff --git a/dev/aarch64_clean/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S b/dev/aarch64_clean/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S index 97b4ea1ad7..130a871c08 100644 --- a/dev/aarch64_clean/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S +++ b/dev/aarch64_clean/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S @@ -52,7 +52,8 @@ /* Re-implementation of asymmetric base multiplication following @[NeonNTT] */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && \ +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 2) /* simpasm: header-end */ @@ -256,5 +257,6 @@ mlk_polyvec_basemul_acc_montgomery_cached_k2_loop_start: /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2) */ diff --git a/dev/aarch64_clean/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S b/dev/aarch64_clean/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S index 26b4612bb7..cc2810742e 100644 --- a/dev/aarch64_clean/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S +++ b/dev/aarch64_clean/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S @@ -52,7 +52,8 @@ /* Re-implementation of asymmetric base multiplication following @[NeonNTT] */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && \ +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 3) /* simpasm: header-end */ @@ -259,5 +260,6 @@ mlk_polyvec_basemul_acc_montgomery_cached_k3_loop_start: .unreq t0 /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 3) */ diff --git a/dev/aarch64_clean/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S b/dev/aarch64_clean/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S index dfc09a075d..42e1bda725 100644 --- a/dev/aarch64_clean/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S +++ b/dev/aarch64_clean/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S @@ -52,7 +52,8 @@ /* Re-implementation of asymmetric base multiplication following @[NeonNTT] */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && \ +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 4) /* simpasm: header-end */ @@ -269,5 +270,6 @@ mlk_polyvec_basemul_acc_montgomery_cached_k4_loop_start: .unreq t0 /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */ diff --git a/dev/aarch64_clean/src/mlkem_rej_uniform_aarch64_asm.S b/dev/aarch64_clean/src/mlkem_rej_uniform_aarch64_asm.S index c0dd83ec77..159c6a83a9 100644 --- a/dev/aarch64_clean/src/mlkem_rej_uniform_aarch64_asm.S +++ b/dev/aarch64_clean/src/mlkem_rej_uniform_aarch64_asm.S @@ -40,7 +40,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && \ +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* simpasm: header-end */ @@ -461,4 +462,5 @@ mlk_rej_uniform_return: #undef STACK_SIZE /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/aarch64_opt/src/mlkem_intt_aarch64_asm.S b/dev/aarch64_opt/src/mlkem_intt_aarch64_asm.S index e24c0165e3..b613ec7a55 100644 --- a/dev/aarch64_opt/src/mlkem_intt_aarch64_asm.S +++ b/dev/aarch64_opt/src/mlkem_intt_aarch64_asm.S @@ -51,7 +51,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && \ +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (!defined(MLK_CONFIG_NO_ENCAPS_API) || \ !defined(MLK_CONFIG_NO_DECAPS_API)) @@ -1423,5 +1424,6 @@ mlk_intt_layer123_start: .unreq ninv_tw /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ - (!MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API) */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && (!MLK_CONFIG_NO_ENCAPS_API || \ + !MLK_CONFIG_NO_DECAPS_API) */ diff --git a/dev/aarch64_opt/src/mlkem_ntt_aarch64_asm.S b/dev/aarch64_opt/src/mlkem_ntt_aarch64_asm.S index 7ce1d5ac16..d30b23321c 100644 --- a/dev/aarch64_opt/src/mlkem_ntt_aarch64_asm.S +++ b/dev/aarch64_opt/src/mlkem_ntt_aarch64_asm.S @@ -51,7 +51,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* simpasm: header-end */ // Bounds: @@ -1270,4 +1271,5 @@ mlk_ntt_layer4567_start: .unreq t3 /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/aarch64_opt/src/mlkem_poly_mulcache_compute_aarch64_asm.S b/dev/aarch64_opt/src/mlkem_poly_mulcache_compute_aarch64_asm.S index 4143959118..209ad0e27a 100644 --- a/dev/aarch64_opt/src/mlkem_poly_mulcache_compute_aarch64_asm.S +++ b/dev/aarch64_opt/src/mlkem_poly_mulcache_compute_aarch64_asm.S @@ -40,7 +40,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* simpasm: header-end */ /* Montgomery multiplication, with precomputed Montgomery twist @@ -279,4 +280,5 @@ mlk_poly_mulcache_compute_loop_start: .unreq modulus_twisted /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/aarch64_opt/src/mlkem_poly_reduce_aarch64_asm.S b/dev/aarch64_opt/src/mlkem_poly_reduce_aarch64_asm.S index 7db0995d06..8c740e548f 100644 --- a/dev/aarch64_opt/src/mlkem_poly_reduce_aarch64_asm.S +++ b/dev/aarch64_opt/src/mlkem_poly_reduce_aarch64_asm.S @@ -22,7 +22,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* simpasm: header-end */ /* Barrett reduction */ @@ -332,4 +333,5 @@ mlk_poly_reduce_loop_start: .unreq modulus_twisted /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/aarch64_opt/src/mlkem_poly_tobytes_aarch64_asm.S b/dev/aarch64_opt/src/mlkem_poly_tobytes_aarch64_asm.S index ce4da552bf..3d44923005 100644 --- a/dev/aarch64_opt/src/mlkem_poly_tobytes_aarch64_asm.S +++ b/dev/aarch64_opt/src/mlkem_poly_tobytes_aarch64_asm.S @@ -28,7 +28,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && \ +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (!defined(MLK_CONFIG_NO_KEYPAIR_API) || \ !defined(MLK_CONFIG_NO_ENCAPS_API)) @@ -256,5 +257,6 @@ mlk_poly_tobytes_loop_start: .unreq count /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ - (!MLK_CONFIG_NO_KEYPAIR_API || !MLK_CONFIG_NO_ENCAPS_API) */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && (!MLK_CONFIG_NO_KEYPAIR_API || \ + !MLK_CONFIG_NO_ENCAPS_API) */ diff --git a/dev/aarch64_opt/src/mlkem_poly_tomont_aarch64_asm.S b/dev/aarch64_opt/src/mlkem_poly_tomont_aarch64_asm.S index 1dd22fb7af..951da09e18 100644 --- a/dev/aarch64_opt/src/mlkem_poly_tomont_aarch64_asm.S +++ b/dev/aarch64_opt/src/mlkem_poly_tomont_aarch64_asm.S @@ -22,7 +22,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && \ +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ !defined(MLK_CONFIG_NO_KEYPAIR_API) /* simpasm: header-end */ @@ -222,5 +223,5 @@ mlk_poly_tomont_loop: .unreq tmp0 /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ - !MLK_CONFIG_NO_KEYPAIR_API */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && !MLK_CONFIG_NO_KEYPAIR_API */ diff --git a/dev/aarch64_opt/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S b/dev/aarch64_opt/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S index 761ed5d0dc..a62d8e745f 100644 --- a/dev/aarch64_opt/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S +++ b/dev/aarch64_opt/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S @@ -52,7 +52,8 @@ /* Re-implementation of asymmetric base multiplication following @[NeonNTT] */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 2) +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 2) /* simpasm: header-end */ // Input: @@ -586,5 +587,6 @@ mlk_polyvec_basemul_acc_montgomery_cached_k2_loop_start: /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2) */ diff --git a/dev/aarch64_opt/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S b/dev/aarch64_opt/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S index 9294a30d37..306f828089 100644 --- a/dev/aarch64_opt/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S +++ b/dev/aarch64_opt/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S @@ -52,7 +52,8 @@ /* Re-implementation of asymmetric base multiplication following @[NeonNTT] */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 3) +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 3) /* simpasm: header-end */ // Input: @@ -689,5 +690,6 @@ mlk_polyvec_basemul_acc_montgomery_cached_k3_loop_start: .unreq t0 /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 3) */ diff --git a/dev/aarch64_opt/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S b/dev/aarch64_opt/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S index 00c947dca2..a2210aa9e2 100644 --- a/dev/aarch64_opt/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S +++ b/dev/aarch64_opt/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S @@ -52,7 +52,8 @@ /* Re-implementation of asymmetric base multiplication following @[NeonNTT] */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 4) +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 4) /* simpasm: header-end */ // Input: @@ -799,5 +800,6 @@ mlk_polyvec_basemul_acc_montgomery_cached_k4_loop_start: .unreq t0 /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */ diff --git a/dev/aarch64_opt/src/mlkem_rej_uniform_aarch64_asm.S b/dev/aarch64_opt/src/mlkem_rej_uniform_aarch64_asm.S index c0dd83ec77..159c6a83a9 100644 --- a/dev/aarch64_opt/src/mlkem_rej_uniform_aarch64_asm.S +++ b/dev/aarch64_opt/src/mlkem_rej_uniform_aarch64_asm.S @@ -40,7 +40,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && \ +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* simpasm: header-end */ @@ -461,4 +462,5 @@ mlk_rej_uniform_return: #undef STACK_SIZE /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/fips202/aarch64/src/keccak_f1600_x1_scalar_aarch64_asm.S b/dev/fips202/aarch64/src/keccak_f1600_x1_scalar_aarch64_asm.S index 8143a1e787..307e8bb22d 100644 --- a/dev/fips202/aarch64/src/keccak_f1600_x1_scalar_aarch64_asm.S +++ b/dev/fips202/aarch64/src/keccak_f1600_x1_scalar_aarch64_asm.S @@ -33,7 +33,8 @@ */ #include "../../../../common.h" -#if defined(MLK_FIPS202_AARCH64_NEED_X1_SCALAR) && \ +#if defined(MLK_SYS_AARCH64) && \ + defined(MLK_FIPS202_AARCH64_NEED_X1_SCALAR) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* simpasm: header-end */ @@ -470,5 +471,5 @@ mlk_keccak_f1600_x1_scalar_initial: #undef KECCAK_F1600_ROUNDS /* simpasm: footer-start */ -#endif /* MLK_FIPS202_AARCH64_NEED_X1_SCALAR && \ +#endif /* MLK_SYS_AARCH64 && MLK_FIPS202_AARCH64_NEED_X1_SCALAR && \ !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/fips202/aarch64/src/keccak_f1600_x1_v84a_aarch64_asm.S b/dev/fips202/aarch64/src/keccak_f1600_x1_v84a_aarch64_asm.S index 949fe79e9c..344300a4f7 100644 --- a/dev/fips202/aarch64/src/keccak_f1600_x1_v84a_aarch64_asm.S +++ b/dev/fips202/aarch64/src/keccak_f1600_x1_v84a_aarch64_asm.S @@ -49,10 +49,10 @@ // #include "../../../../common.h" -#if defined(MLK_FIPS202_AARCH64_NEED_X1_V84A) && \ +#if defined(MLK_SYS_AARCH64_NEON) && defined(__ARM_FEATURE_SHA3) && \ + defined(MLK_FIPS202_AARCH64_NEED_X1_V84A) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) -#if defined(__ARM_FEATURE_SHA3) /* simpasm: header-end */ /****************** REGISTER ALLOCATIONS *******************/ @@ -486,7 +486,7 @@ mlk_keccak_f1600_x1_v84a_loop: #undef KECCAK_F1600_ROUNDS /* simpasm: footer-start */ -#endif /* __ARM_FEATURE_SHA3 */ -#endif /* MLK_FIPS202_AARCH64_NEED_X1_V84A && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ +#endif /* MLK_SYS_AARCH64_NEON && __ARM_FEATURE_SHA3 && \ + MLK_FIPS202_AARCH64_NEED_X1_V84A && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ */ diff --git a/dev/fips202/aarch64/src/keccak_f1600_x2_v84a_aarch64_asm.S b/dev/fips202/aarch64/src/keccak_f1600_x2_v84a_aarch64_asm.S index fa288aa39c..4115cd898d 100644 --- a/dev/fips202/aarch64/src/keccak_f1600_x2_v84a_aarch64_asm.S +++ b/dev/fips202/aarch64/src/keccak_f1600_x2_v84a_aarch64_asm.S @@ -49,10 +49,10 @@ // #include "../../../../common.h" -#if defined(MLK_FIPS202_AARCH64_NEED_X2_V84A) && \ +#if defined(MLK_SYS_AARCH64_NEON) && defined(__ARM_FEATURE_SHA3) && \ + defined(MLK_FIPS202_AARCH64_NEED_X2_V84A) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) -#if defined(__ARM_FEATURE_SHA3) /* simpasm: header-end */ /****************** REGISTER ALLOCATIONS *******************/ @@ -432,7 +432,7 @@ mlk_keccak_f1600_x2_v84a_loop: #undef KECCAK_F1600_ROUNDS /* simpasm: footer-start */ -#endif /* __ARM_FEATURE_SHA3 */ -#endif /* MLK_FIPS202_AARCH64_NEED_X2_V84A && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ +#endif /* MLK_SYS_AARCH64_NEON && __ARM_FEATURE_SHA3 && \ + MLK_FIPS202_AARCH64_NEED_X2_V84A && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ */ diff --git a/dev/fips202/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S b/dev/fips202/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S index 9eee8c771d..738b9d5762 100644 --- a/dev/fips202/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S +++ b/dev/fips202/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S @@ -34,7 +34,8 @@ */ #include "../../../../common.h" -#if defined(MLK_FIPS202_AARCH64_NEED_X4_V8A_SCALAR_HYBRID) && \ +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_FIPS202_AARCH64_NEED_X4_V8A_SCALAR_HYBRID) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* simpasm: header-end */ @@ -2580,5 +2581,5 @@ mlk_keccak_f1600_x4_v8a_scalar_hybrid_done: #undef STACK_LOC_1 /* simpasm: footer-start */ -#endif /* MLK_FIPS202_AARCH64_NEED_X4_V8A_SCALAR_HYBRID && \ - !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_FIPS202_AARCH64_NEED_X4_V8A_SCALAR_HYBRID \ + && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/fips202/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S b/dev/fips202/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S index 20edd2d212..43a792db8e 100644 --- a/dev/fips202/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S +++ b/dev/fips202/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S @@ -34,10 +34,10 @@ */ #include "../../../../common.h" -#if defined(MLK_FIPS202_AARCH64_NEED_X4_V8A_V84A_SCALAR_HYBRID) && \ +#if defined(MLK_SYS_AARCH64_NEON) && defined(__ARM_FEATURE_SHA3) && \ + defined(MLK_FIPS202_AARCH64_NEED_X4_V8A_V84A_SCALAR_HYBRID) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) -#if defined(__ARM_FEATURE_SHA3) /* simpasm: header-end */ #define KECCAK_F1600_ROUNDS 24 @@ -2410,7 +2410,7 @@ mlk_keccak_f1600_x4_v8a_v84a_scalar_hybrid_done: #undef STACK_LOC_1 /* simpasm: footer-start */ -#endif /* __ARM_FEATURE_SHA3 */ -#endif /* MLK_FIPS202_AARCH64_NEED_X4_V8A_V84A_SCALAR_HYBRID && \ +#endif /* MLK_SYS_AARCH64_NEON && __ARM_FEATURE_SHA3 && \ + MLK_FIPS202_AARCH64_NEED_X4_V8A_V84A_SCALAR_HYBRID && \ !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/fips202/aarch64_symbolic/keccak_f1600_x1_scalar_symbolic.S b/dev/fips202/aarch64_symbolic/keccak_f1600_x1_scalar_symbolic.S index 3f5515b9d0..8fed88c665 100644 --- a/dev/fips202/aarch64_symbolic/keccak_f1600_x1_scalar_symbolic.S +++ b/dev/fips202/aarch64_symbolic/keccak_f1600_x1_scalar_symbolic.S @@ -35,7 +35,8 @@ */ #include "../../../../common.h" -#if defined(MLK_FIPS202_AARCH64_NEED_X1_SCALAR) && \ +#if defined(MLK_SYS_AARCH64) && \ + defined(MLK_FIPS202_AARCH64_NEED_X1_SCALAR) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* simpasm: header-end */ @@ -522,5 +523,5 @@ mlk_keccak_f1600_x1_scalar_end_final: #undef KECCAK_F1600_ROUNDS /* simpasm: footer-start */ -#endif /* MLK_FIPS202_AARCH64_NEED_X1_SCALAR && \ +#endif /* MLK_SYS_AARCH64 && MLK_FIPS202_AARCH64_NEED_X1_SCALAR && \ !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/fips202/aarch64_symbolic/keccak_f1600_x4_v8a_scalar_hybrid_clean.S b/dev/fips202/aarch64_symbolic/keccak_f1600_x4_v8a_scalar_hybrid_clean.S index dec2e7745a..271ca668ca 100644 --- a/dev/fips202/aarch64_symbolic/keccak_f1600_x4_v8a_scalar_hybrid_clean.S +++ b/dev/fips202/aarch64_symbolic/keccak_f1600_x4_v8a_scalar_hybrid_clean.S @@ -33,7 +33,8 @@ */ #include "../../../../common.h" -#if defined(MLK_FIPS202_AARCH64_NEED_X4_V8A_SCALAR_HYBRID) && \ +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_FIPS202_AARCH64_NEED_X4_V8A_SCALAR_HYBRID) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* simpasm: header-end */ @@ -1026,5 +1027,5 @@ mlk_keccak_f1600_x4_v8a_scalar_hybrid_done: #undef STACK_LOC_1 /* simpasm: footer-start */ -#endif /* MLK_FIPS202_AARCH64_NEED_X4_V8A_SCALAR_HYBRID && \ - !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_FIPS202_AARCH64_NEED_X4_V8A_SCALAR_HYBRID \ + && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/fips202/aarch64_symbolic/keccak_f1600_x4_v8a_v84a_scalar_hybrid_clean.S b/dev/fips202/aarch64_symbolic/keccak_f1600_x4_v8a_v84a_scalar_hybrid_clean.S index 0631163bb7..d6f3599278 100644 --- a/dev/fips202/aarch64_symbolic/keccak_f1600_x4_v8a_v84a_scalar_hybrid_clean.S +++ b/dev/fips202/aarch64_symbolic/keccak_f1600_x4_v8a_v84a_scalar_hybrid_clean.S @@ -34,10 +34,10 @@ */ #include "../../../../common.h" -#if defined(MLK_FIPS202_AARCH64_NEED_X4_V8A_V84A_SCALAR_HYBRID) && \ +#if defined(MLK_SYS_AARCH64_NEON) && defined(__ARM_FEATURE_SHA3) && \ + defined(MLK_FIPS202_AARCH64_NEED_X4_V8A_V84A_SCALAR_HYBRID) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) -#if defined(__ARM_FEATURE_SHA3) /* simpasm: header-end */ #define KECCAK_F1600_ROUNDS 24 @@ -1045,7 +1045,7 @@ mlk_keccak_f1600_x4_v8a_v84a_scalar_hybrid_done: #undef STACK_LOC_1 /* simpasm: footer-start */ -#endif /* __ARM_FEATURE_SHA3 */ -#endif /* MLK_FIPS202_AARCH64_NEED_X4_V8A_V84A_SCALAR_HYBRID && \ +#endif /* MLK_SYS_AARCH64_NEON && __ARM_FEATURE_SHA3 && \ + MLK_FIPS202_AARCH64_NEED_X4_V8A_V84A_SCALAR_HYBRID && \ !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/fips202/armv81m/src/keccak_f1600_x4_mve.S b/dev/fips202/armv81m/src/keccak_f1600_x4_mve.S index fdeab40d6f..de4254c937 100644 --- a/dev/fips202/armv81m/src/keccak_f1600_x4_mve.S +++ b/dev/fips202/armv81m/src/keccak_f1600_x4_mve.S @@ -66,7 +66,8 @@ // 784 S[0][24]_odd, S[1][24]_odd, S[2][24]_odd, S[3][24]_odd #include "../../../../common.h" -#if defined(MLK_FIPS202_ARMV81M_NEED_X4) && \ +#if defined(MLK_SYS_ARMV81M_MVE) && \ + defined(MLK_FIPS202_ARMV81M_NEED_X4) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* simpasm: header-end */ @@ -1637,4 +1638,5 @@ mlk_keccak_f1600_x4_mve_asm_roundend: .unreq qA20_l /* simpasm: footer-start */ -#endif /* MLK_FIPS202_ARMV81M_NEED_X4 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_ARMV81M_MVE && MLK_FIPS202_ARMV81M_NEED_X4 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/fips202/armv81m/src/keccak_f1600_x4_state_extract_bytes_mve.S b/dev/fips202/armv81m/src/keccak_f1600_x4_state_extract_bytes_mve.S index d36bae151d..b08f6c82d2 100644 --- a/dev/fips202/armv81m/src/keccak_f1600_x4_state_extract_bytes_mve.S +++ b/dev/fips202/armv81m/src/keccak_f1600_x4_state_extract_bytes_mve.S @@ -58,7 +58,8 @@ // Tail -- extract remaining <8 bytes via predicated byte stores. #include "../../../../common.h" -#if defined(MLK_FIPS202_ARMV81M_NEED_X4) && \ +#if defined(MLK_SYS_ARMV81M_MVE) && \ + defined(MLK_FIPS202_ARMV81M_NEED_X4) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* simpasm: header-end */ @@ -365,4 +366,5 @@ mlk_keccak_f1600_x4_state_extract_bytes_asm_exit: .unreq qd3 /* simpasm: footer-start */ -#endif /* MLK_FIPS202_ARMV81M_NEED_X4 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_ARMV81M_MVE && MLK_FIPS202_ARMV81M_NEED_X4 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/fips202/armv81m/src/keccak_f1600_x4_state_xor_bytes_mve.S b/dev/fips202/armv81m/src/keccak_f1600_x4_state_xor_bytes_mve.S index b2069960bf..09fbfc7fc3 100644 --- a/dev/fips202/armv81m/src/keccak_f1600_x4_state_xor_bytes_mve.S +++ b/dev/fips202/armv81m/src/keccak_f1600_x4_state_xor_bytes_mve.S @@ -57,7 +57,8 @@ // Tail -- absorb remaining <8 bytes via predicated byte loads. #include "../../../../common.h" -#if defined(MLK_FIPS202_ARMV81M_NEED_X4) && \ +#if defined(MLK_SYS_ARMV81M_MVE) && \ + defined(MLK_FIPS202_ARMV81M_NEED_X4) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* simpasm: header-end */ @@ -420,4 +421,5 @@ mlk_keccak_f1600_x4_state_xor_bytes_asm_exit: .unreq qS1 /* simpasm: footer-start */ -#endif /* MLK_FIPS202_ARMV81M_NEED_X4 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_ARMV81M_MVE && MLK_FIPS202_ARMV81M_NEED_X4 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/fips202/x86_64/src/keccak_f1600_x4_avx2_asm.S b/dev/fips202/x86_64/src/keccak_f1600_x4_avx2_asm.S index 235ba8e4f1..4be2b08020 100644 --- a/dev/fips202/x86_64/src/keccak_f1600_x4_avx2_asm.S +++ b/dev/fips202/x86_64/src/keccak_f1600_x4_avx2_asm.S @@ -4,7 +4,8 @@ */ #include "../../../../common.h" -#if defined(MLK_FIPS202_X86_64_NEED_X4_AVX2) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_FIPS202_X86_64_NEED_X4_AVX2) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /*yaml Name: keccak_f1600_x4_avx2_asm @@ -658,4 +659,5 @@ MLK_ASM_FN_SYMBOL(keccak_f1600_x4_avx2_asm) ret /* simpasm: footer-start */ -#endif /* MLK_FIPS202_X86_64_NEED_X4_AVX2 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_FIPS202_X86_64_NEED_X4_AVX2 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/ppc64le/src/mlkem_intt_ppc_asm.S b/dev/ppc64le/src/mlkem_intt_ppc_asm.S index c702a281dd..b02443d908 100644 --- a/dev/ppc64le/src/mlkem_intt_ppc_asm.S +++ b/dev/ppc64le/src/mlkem_intt_ppc_asm.S @@ -7,7 +7,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_PPC64LE_DEFAULT) && \ +#if defined(MLK_SYS_PPC64LE_POWER8_VECTOR) && \ + defined(MLK_ARITH_BACKEND_PPC64LE_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (!defined(MLK_CONFIG_NO_ENCAPS_API) || \ !defined(MLK_CONFIG_NO_DECAPS_API)) @@ -1003,5 +1004,6 @@ mlk_intt_ppc_asm_Loopf: #undef VS_26_STASH /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_PPC64LE_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && (!MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API) */ +#endif /* MLK_SYS_PPC64LE_POWER8_VECTOR && MLK_ARITH_BACKEND_PPC64LE_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && (!MLK_CONFIG_NO_ENCAPS_API || \ + !MLK_CONFIG_NO_DECAPS_API) */ diff --git a/dev/ppc64le/src/mlkem_ntt_ppc_asm.S b/dev/ppc64le/src/mlkem_ntt_ppc_asm.S index 0319d96bea..946918366b 100644 --- a/dev/ppc64le/src/mlkem_ntt_ppc_asm.S +++ b/dev/ppc64le/src/mlkem_ntt_ppc_asm.S @@ -7,7 +7,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_PPC64LE_DEFAULT) && \ +#if defined(MLK_SYS_PPC64LE_POWER8_VECTOR) && \ + defined(MLK_ARITH_BACKEND_PPC64LE_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /*yaml Name: ntt_ppc_asm @@ -766,5 +767,5 @@ MLK_ASM_FN_SYMBOL(ntt_ppc_asm) #undef b4_offset /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_PPC64LE_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - */ +#endif /* MLK_SYS_PPC64LE_POWER8_VECTOR && MLK_ARITH_BACKEND_PPC64LE_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/ppc64le/src/mlkem_poly_tomont_ppc_asm.S b/dev/ppc64le/src/mlkem_poly_tomont_ppc_asm.S index 13e427b4b1..090a80c750 100644 --- a/dev/ppc64le/src/mlkem_poly_tomont_ppc_asm.S +++ b/dev/ppc64le/src/mlkem_poly_tomont_ppc_asm.S @@ -14,7 +14,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_PPC64LE_DEFAULT) && \ +#if defined(MLK_SYS_PPC64LE_POWER8_VECTOR) && \ + defined(MLK_ARITH_BACKEND_PPC64LE_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ !defined(MLK_CONFIG_NO_KEYPAIR_API) /*yaml @@ -241,5 +242,5 @@ MLK_ASM_FN_SYMBOL(poly_tomont_ppc_asm) #undef vresult4 /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_PPC64LE_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && !MLK_CONFIG_NO_KEYPAIR_API */ +#endif /* MLK_SYS_PPC64LE_POWER8_VECTOR && MLK_ARITH_BACKEND_PPC64LE_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && !MLK_CONFIG_NO_KEYPAIR_API */ diff --git a/dev/ppc64le/src/mlkem_reduce_ppc_asm.S b/dev/ppc64le/src/mlkem_reduce_ppc_asm.S index 1b4e43fabb..8640c6525f 100644 --- a/dev/ppc64le/src/mlkem_reduce_ppc_asm.S +++ b/dev/ppc64le/src/mlkem_reduce_ppc_asm.S @@ -6,7 +6,8 @@ * Written by Danny Tsen */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_PPC64LE_DEFAULT) && \ +#if defined(MLK_SYS_PPC64LE_POWER8_VECTOR) && \ + defined(MLK_ARITH_BACKEND_PPC64LE_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /*yaml Name: reduce_ppc_asm @@ -462,5 +463,5 @@ MLK_ASM_FN_SYMBOL(reduce_ppc_asm) #undef vu_q /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_PPC64LE_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - */ +#endif /* MLK_SYS_PPC64LE_POWER8_VECTOR && MLK_ARITH_BACKEND_PPC64LE_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/x86_64/src/mlkem_intt_avx2_asm.S b/dev/x86_64/src/mlkem_intt_avx2_asm.S index 2103947a9c..c3e5307cd8 100644 --- a/dev/x86_64/src/mlkem_intt_avx2_asm.S +++ b/dev/x86_64/src/mlkem_intt_avx2_asm.S @@ -29,7 +29,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (!defined(MLK_CONFIG_NO_ENCAPS_API) || \ !defined(MLK_CONFIG_NO_DECAPS_API)) @@ -315,5 +316,6 @@ vzeroupper ret /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && (!MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && (!MLK_CONFIG_NO_ENCAPS_API || \ + !MLK_CONFIG_NO_DECAPS_API) */ diff --git a/dev/x86_64/src/mlkem_ntt_avx2_asm.S b/dev/x86_64/src/mlkem_ntt_avx2_asm.S index 44568b7d50..729506ca92 100644 --- a/dev/x86_64/src/mlkem_ntt_avx2_asm.S +++ b/dev/x86_64/src/mlkem_ntt_avx2_asm.S @@ -25,7 +25,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /*yaml Name: ntt_avx2_asm @@ -267,5 +268,5 @@ vzeroupper ret /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/x86_64/src/mlkem_nttfrombytes_avx2_asm.S b/dev/x86_64/src/mlkem_nttfrombytes_avx2_asm.S index 0eda6a7767..bbf59d43bb 100644 --- a/dev/x86_64/src/mlkem_nttfrombytes_avx2_asm.S +++ b/dev/x86_64/src/mlkem_nttfrombytes_avx2_asm.S @@ -19,7 +19,8 @@ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (!defined(MLK_CONFIG_NO_ENCAPS_API) || \ !defined(MLK_CONFIG_NO_DECAPS_API)) @@ -135,5 +136,6 @@ vzeroupper ret /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && (!MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && (!MLK_CONFIG_NO_ENCAPS_API || \ + !MLK_CONFIG_NO_DECAPS_API) */ diff --git a/dev/x86_64/src/mlkem_ntttobytes_avx2_asm.S b/dev/x86_64/src/mlkem_ntttobytes_avx2_asm.S index 0409dd864b..1b33ae274e 100644 --- a/dev/x86_64/src/mlkem_ntttobytes_avx2_asm.S +++ b/dev/x86_64/src/mlkem_ntttobytes_avx2_asm.S @@ -19,7 +19,8 @@ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (!defined(MLK_CONFIG_NO_KEYPAIR_API) || \ !defined(MLK_CONFIG_NO_ENCAPS_API)) @@ -130,5 +131,6 @@ vzeroupper ret /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && (!MLK_CONFIG_NO_KEYPAIR_API || !MLK_CONFIG_NO_ENCAPS_API) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && (!MLK_CONFIG_NO_KEYPAIR_API || \ + !MLK_CONFIG_NO_ENCAPS_API) */ diff --git a/dev/x86_64/src/mlkem_nttunpack_avx2_asm.S b/dev/x86_64/src/mlkem_nttunpack_avx2_asm.S index aee8f72f82..512148d855 100644 --- a/dev/x86_64/src/mlkem_nttunpack_avx2_asm.S +++ b/dev/x86_64/src/mlkem_nttunpack_avx2_asm.S @@ -19,7 +19,8 @@ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /*yaml Name: nttunpack_avx2_asm @@ -99,5 +100,5 @@ vzeroupper ret /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/x86_64/src/mlkem_poly_compress_d10_avx2_asm.S b/dev/x86_64/src/mlkem_poly_compress_d10_avx2_asm.S index 02fed45bd5..8b94763c89 100644 --- a/dev/x86_64/src/mlkem_poly_compress_d10_avx2_asm.S +++ b/dev/x86_64/src/mlkem_poly_compress_d10_avx2_asm.S @@ -29,7 +29,8 @@ **************************************************/ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (!defined(MLK_CONFIG_NO_ENCAPS_API) || \ !defined(MLK_CONFIG_NO_DECAPS_API)) && \ @@ -189,7 +190,7 @@ vzeroupper ret /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && (!MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API) && \ - (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2 || MLKEM_K == 3) \ - */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && (!MLK_CONFIG_NO_ENCAPS_API || \ + !MLK_CONFIG_NO_DECAPS_API) && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || \ + MLKEM_K == 2 || MLKEM_K == 3) */ diff --git a/dev/x86_64/src/mlkem_poly_compress_d11_avx2_asm.S b/dev/x86_64/src/mlkem_poly_compress_d11_avx2_asm.S index 4e86550354..f33a5b19f9 100644 --- a/dev/x86_64/src/mlkem_poly_compress_d11_avx2_asm.S +++ b/dev/x86_64/src/mlkem_poly_compress_d11_avx2_asm.S @@ -31,7 +31,8 @@ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (!defined(MLK_CONFIG_NO_ENCAPS_API) || \ !defined(MLK_CONFIG_NO_DECAPS_API)) && \ @@ -161,6 +162,7 @@ vzeroupper ret /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && (!MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API) && \ - (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && (!MLK_CONFIG_NO_ENCAPS_API || \ + !MLK_CONFIG_NO_DECAPS_API) && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || \ + MLKEM_K == 4) */ diff --git a/dev/x86_64/src/mlkem_poly_compress_d4_avx2_asm.S b/dev/x86_64/src/mlkem_poly_compress_d4_avx2_asm.S index 719b677de7..f8452af8d5 100644 --- a/dev/x86_64/src/mlkem_poly_compress_d4_avx2_asm.S +++ b/dev/x86_64/src/mlkem_poly_compress_d4_avx2_asm.S @@ -29,7 +29,8 @@ **************************************************/ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (!defined(MLK_CONFIG_NO_ENCAPS_API) || \ !defined(MLK_CONFIG_NO_DECAPS_API)) && \ @@ -148,7 +149,7 @@ vzeroupper ret /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && (!MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API) && \ - (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2 || MLKEM_K == 3) \ - */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && (!MLK_CONFIG_NO_ENCAPS_API || \ + !MLK_CONFIG_NO_DECAPS_API) && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || \ + MLKEM_K == 2 || MLKEM_K == 3) */ diff --git a/dev/x86_64/src/mlkem_poly_compress_d5_avx2_asm.S b/dev/x86_64/src/mlkem_poly_compress_d5_avx2_asm.S index d88f300df1..f2075583ac 100644 --- a/dev/x86_64/src/mlkem_poly_compress_d5_avx2_asm.S +++ b/dev/x86_64/src/mlkem_poly_compress_d5_avx2_asm.S @@ -29,7 +29,8 @@ **************************************************/ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (!defined(MLK_CONFIG_NO_ENCAPS_API) || \ !defined(MLK_CONFIG_NO_DECAPS_API)) && \ @@ -167,6 +168,7 @@ vzeroupper ret /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && (!MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API) && \ - (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && (!MLK_CONFIG_NO_ENCAPS_API || \ + !MLK_CONFIG_NO_DECAPS_API) && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || \ + MLKEM_K == 4) */ diff --git a/dev/x86_64/src/mlkem_poly_decompress_d10_avx2_asm.S b/dev/x86_64/src/mlkem_poly_decompress_d10_avx2_asm.S index 1dd99a596d..948ed28674 100644 --- a/dev/x86_64/src/mlkem_poly_decompress_d10_avx2_asm.S +++ b/dev/x86_64/src/mlkem_poly_decompress_d10_avx2_asm.S @@ -29,7 +29,8 @@ **************************************************/ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ !defined(MLK_CONFIG_NO_DECAPS_API) && \ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 2 || MLKEM_K == 3) @@ -124,6 +125,7 @@ vzeroupper ret /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && !MLK_CONFIG_NO_DECAPS_API && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || \ - MLKEM_K == 2 || MLKEM_K == 3) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && !MLK_CONFIG_NO_DECAPS_API && \ + (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2 || MLKEM_K == 3) \ + */ diff --git a/dev/x86_64/src/mlkem_poly_decompress_d11_avx2_asm.S b/dev/x86_64/src/mlkem_poly_decompress_d11_avx2_asm.S index 02119511b5..864df84839 100644 --- a/dev/x86_64/src/mlkem_poly_decompress_d11_avx2_asm.S +++ b/dev/x86_64/src/mlkem_poly_decompress_d11_avx2_asm.S @@ -31,7 +31,8 @@ **************************************************/ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ !defined(MLK_CONFIG_NO_DECAPS_API) && \ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 4) @@ -129,6 +130,6 @@ vzeroupper ret /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && !MLK_CONFIG_NO_DECAPS_API && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || \ - MLKEM_K == 4) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && !MLK_CONFIG_NO_DECAPS_API && \ + (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */ diff --git a/dev/x86_64/src/mlkem_poly_decompress_d4_avx2_asm.S b/dev/x86_64/src/mlkem_poly_decompress_d4_avx2_asm.S index 364179ee76..8d68ae981d 100644 --- a/dev/x86_64/src/mlkem_poly_decompress_d4_avx2_asm.S +++ b/dev/x86_64/src/mlkem_poly_decompress_d4_avx2_asm.S @@ -29,7 +29,8 @@ **************************************************/ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ !defined(MLK_CONFIG_NO_DECAPS_API) && \ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 2 || MLKEM_K == 3) @@ -121,6 +122,7 @@ vzeroupper ret /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && !MLK_CONFIG_NO_DECAPS_API && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || \ - MLKEM_K == 2 || MLKEM_K == 3) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && !MLK_CONFIG_NO_DECAPS_API && \ + (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2 || MLKEM_K == 3) \ + */ diff --git a/dev/x86_64/src/mlkem_poly_decompress_d5_avx2_asm.S b/dev/x86_64/src/mlkem_poly_decompress_d5_avx2_asm.S index 20581d89a4..0a0d2197f9 100644 --- a/dev/x86_64/src/mlkem_poly_decompress_d5_avx2_asm.S +++ b/dev/x86_64/src/mlkem_poly_decompress_d5_avx2_asm.S @@ -30,7 +30,8 @@ **************************************************/ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ !defined(MLK_CONFIG_NO_DECAPS_API) && \ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 4) @@ -116,6 +117,6 @@ vzeroupper ret /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && !MLK_CONFIG_NO_DECAPS_API && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || \ - MLKEM_K == 4) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && !MLK_CONFIG_NO_DECAPS_API && \ + (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */ diff --git a/dev/x86_64/src/mlkem_poly_mulcache_compute_avx2_asm.S b/dev/x86_64/src/mlkem_poly_mulcache_compute_avx2_asm.S index 16d4b0bd05..ba87773474 100644 --- a/dev/x86_64/src/mlkem_poly_mulcache_compute_avx2_asm.S +++ b/dev/x86_64/src/mlkem_poly_mulcache_compute_avx2_asm.S @@ -4,7 +4,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /*yaml Name: poly_mulcache_compute_avx2_asm @@ -80,5 +81,5 @@ vzeroupper ret /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.S b/dev/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.S index bf1ddff788..c5109eae78 100644 --- a/dev/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.S +++ b/dev/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.S @@ -4,7 +4,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 2) /*yaml @@ -58,5 +59,6 @@ vzeroupper ret /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ + (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2) */ diff --git a/dev/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.S b/dev/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.S index 6152956a57..d6be732c5a 100644 --- a/dev/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.S +++ b/dev/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.S @@ -4,7 +4,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 3) /*yaml @@ -58,5 +59,6 @@ vzeroupper ret /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 3) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ + (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 3) */ diff --git a/dev/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.S b/dev/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.S index d9538f6efa..68cec1562f 100644 --- a/dev/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.S +++ b/dev/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.S @@ -4,7 +4,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 4) /*yaml @@ -58,5 +59,6 @@ vzeroupper ret /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ + (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */ diff --git a/dev/x86_64/src/mlkem_reduce_avx2_asm.S b/dev/x86_64/src/mlkem_reduce_avx2_asm.S index af613b406d..17ed795b73 100644 --- a/dev/x86_64/src/mlkem_reduce_avx2_asm.S +++ b/dev/x86_64/src/mlkem_reduce_avx2_asm.S @@ -25,7 +25,8 @@ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /*yaml Name: reduce_avx2_asm @@ -110,5 +111,5 @@ vzeroupper ret /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/x86_64/src/mlkem_rej_uniform_avx2_asm.S b/dev/x86_64/src/mlkem_rej_uniform_avx2_asm.S index 00ee1b9428..9869e97f87 100644 --- a/dev/x86_64/src/mlkem_rej_uniform_avx2_asm.S +++ b/dev/x86_64/src/mlkem_rej_uniform_avx2_asm.S @@ -20,7 +20,8 @@ **************************************************/ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /*yaml Name: rej_uniform_avx2_asm @@ -209,5 +210,5 @@ mlk_rej_uniform_asm_end: #undef STACK_SIZE /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ diff --git a/dev/x86_64/src/mlkem_tomont_avx2_asm.S b/dev/x86_64/src/mlkem_tomont_avx2_asm.S index 78c359c10c..442635340a 100644 --- a/dev/x86_64/src/mlkem_tomont_avx2_asm.S +++ b/dev/x86_64/src/mlkem_tomont_avx2_asm.S @@ -23,7 +23,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ !defined(MLK_CONFIG_NO_KEYPAIR_API) /*yaml @@ -107,5 +108,5 @@ vzeroupper ret /* simpasm: footer-start */ -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && !MLK_CONFIG_NO_KEYPAIR_API */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && !MLK_CONFIG_NO_KEYPAIR_API */ diff --git a/integration/aws-lc/pre_import.patch b/integration/aws-lc/pre_import.patch new file mode 100644 index 0000000000..53715fca17 --- /dev/null +++ b/integration/aws-lc/pre_import.patch @@ -0,0 +1,13 @@ +diff --git a/crypto/fipsmodule/ml_kem/importer.sh b/crypto/fipsmodule/ml_kem/importer.sh +index 6263a90..d582b4c 100644 +--- a/crypto/fipsmodule/ml_kem/importer.sh ++++ b/crypto/fipsmodule/ml_kem/importer.sh +@@ -146,6 +146,8 @@ for file in $SRC/native/aarch64/src/*.S $SRC/native/x86_64/src/*.S; do + # guard collapses and the body is included unconditionally. + sed -e ':a' -e 'N' -e '$!ba' -e 's/\\\n/ /g' "$file" | \ + unifdef -D$backend_define \ ++ -DMLK_SYS_AARCH64_NEON \ ++ -DMLK_SYS_X86_64_AVX2 \ + -UMLK_CONFIG_MULTILEVEL_NO_SHARED \ + -DMLK_CONFIG_MULTILEVEL_WITH_SHARED \ + -UMLK_CONFIG_NO_KEYPAIR_API \ diff --git a/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_aarch64_asm.S b/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_aarch64_asm.S index 108e17f83f..8809fa03e5 100644 --- a/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_aarch64_asm.S +++ b/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_aarch64_asm.S @@ -33,7 +33,8 @@ */ #include "../../../../common.h" -#if defined(MLK_FIPS202_AARCH64_NEED_X1_SCALAR) && \ +#if defined(MLK_SYS_AARCH64) && \ + defined(MLK_FIPS202_AARCH64_NEED_X1_SCALAR) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* @@ -369,7 +370,7 @@ Lmlk_keccak_f1600_x1_scalar_loop: MLK_ASM_FN_SIZE(keccak_f1600_x1_scalar_aarch64_asm) -#endif /* MLK_FIPS202_AARCH64_NEED_X1_SCALAR && \ +#endif /* MLK_SYS_AARCH64 && MLK_FIPS202_AARCH64_NEED_X1_SCALAR && \ !MLK_CONFIG_MULTILEVEL_NO_SHARED */ #if defined(__ELF__) diff --git a/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_aarch64_asm.S b/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_aarch64_asm.S index cb27677691..4a375fc516 100644 --- a/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_aarch64_asm.S +++ b/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_aarch64_asm.S @@ -49,10 +49,10 @@ // #include "../../../../common.h" -#if defined(MLK_FIPS202_AARCH64_NEED_X1_V84A) && \ +#if defined(MLK_SYS_AARCH64_NEON) && defined(__ARM_FEATURE_SHA3) && \ + defined(MLK_FIPS202_AARCH64_NEED_X1_V84A) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) -#if defined(__ARM_FEATURE_SHA3) /* * WARNING: This file is auto-derived from the mlkem-native source file @@ -196,9 +196,9 @@ Lmlk_keccak_f1600_x1_v84a_loop: MLK_ASM_FN_SIZE(keccak_f1600_x1_v84a_aarch64_asm) -#endif /* __ARM_FEATURE_SHA3 */ -#endif /* MLK_FIPS202_AARCH64_NEED_X1_V84A && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ +#endif /* MLK_SYS_AARCH64_NEON && __ARM_FEATURE_SHA3 && \ + MLK_FIPS202_AARCH64_NEED_X1_V84A && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ */ #if defined(__ELF__) diff --git a/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_aarch64_asm.S b/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_aarch64_asm.S index 36ebe1d32f..b6a218e353 100644 --- a/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_aarch64_asm.S +++ b/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_aarch64_asm.S @@ -49,10 +49,10 @@ // #include "../../../../common.h" -#if defined(MLK_FIPS202_AARCH64_NEED_X2_V84A) && \ +#if defined(MLK_SYS_AARCH64_NEON) && defined(__ARM_FEATURE_SHA3) && \ + defined(MLK_FIPS202_AARCH64_NEED_X2_V84A) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) -#if defined(__ARM_FEATURE_SHA3) /* * WARNING: This file is auto-derived from the mlkem-native source file @@ -251,9 +251,9 @@ Lmlk_keccak_f1600_x2_v84a_loop: MLK_ASM_FN_SIZE(keccak_f1600_x2_v84a_aarch64_asm) -#endif /* __ARM_FEATURE_SHA3 */ -#endif /* MLK_FIPS202_AARCH64_NEED_X2_V84A && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ +#endif /* MLK_SYS_AARCH64_NEON && __ARM_FEATURE_SHA3 && \ + MLK_FIPS202_AARCH64_NEED_X2_V84A && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ */ #if defined(__ELF__) diff --git a/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S b/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S index 7f0f78b340..47cd29237e 100644 --- a/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S +++ b/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S @@ -34,7 +34,8 @@ */ #include "../../../../common.h" -#if defined(MLK_FIPS202_AARCH64_NEED_X4_V8A_SCALAR_HYBRID) && \ +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_FIPS202_AARCH64_NEED_X4_V8A_SCALAR_HYBRID) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* @@ -1071,8 +1072,8 @@ Lmlk_keccak_f1600_x4_v8a_scalar_hybrid_done: MLK_ASM_FN_SIZE(keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm) -#endif /* MLK_FIPS202_AARCH64_NEED_X4_V8A_SCALAR_HYBRID && \ - !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_FIPS202_AARCH64_NEED_X4_V8A_SCALAR_HYBRID \ + && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S b/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S index c17267c605..79d41f30b3 100644 --- a/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S +++ b/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S @@ -34,10 +34,10 @@ */ #include "../../../../common.h" -#if defined(MLK_FIPS202_AARCH64_NEED_X4_V8A_V84A_SCALAR_HYBRID) && \ +#if defined(MLK_SYS_AARCH64_NEON) && defined(__ARM_FEATURE_SHA3) && \ + defined(MLK_FIPS202_AARCH64_NEED_X4_V8A_V84A_SCALAR_HYBRID) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) -#if defined(__ARM_FEATURE_SHA3) /* * WARNING: This file is auto-derived from the mlkem-native source file @@ -979,9 +979,9 @@ Lmlk_keccak_f1600_x4_v8a_v84a_scalar_hybrid_done: MLK_ASM_FN_SIZE(keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm) -#endif /* __ARM_FEATURE_SHA3 */ -#endif /* MLK_FIPS202_AARCH64_NEED_X4_V8A_V84A_SCALAR_HYBRID && \ +#endif /* MLK_SYS_AARCH64_NEON && __ARM_FEATURE_SHA3 && \ + MLK_FIPS202_AARCH64_NEED_X4_V8A_V84A_SCALAR_HYBRID && \ !MLK_CONFIG_MULTILEVEL_NO_SHARED */ #if defined(__ELF__) diff --git a/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S b/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S index 2bf6c3ec18..2ed34e9ce1 100644 --- a/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +++ b/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S @@ -66,7 +66,8 @@ // 784 S[0][24]_odd, S[1][24]_odd, S[2][24]_odd, S[3][24]_odd #include "../../../../common.h" -#if defined(MLK_FIPS202_ARMV81M_NEED_X4) && \ +#if defined(MLK_SYS_ARMV81M_MVE) && \ + defined(MLK_FIPS202_ARMV81M_NEED_X4) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* @@ -709,7 +710,8 @@ Lmlk_keccak_f1600_x4_mve_asm_roundend: MLK_ASM_FN_SIZE(keccak_f1600_x4_mve_asm) -#endif /* MLK_FIPS202_ARMV81M_NEED_X4 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_ARMV81M_MVE && MLK_FIPS202_ARMV81M_NEED_X4 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_state_extract_bytes_mve.S b/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_state_extract_bytes_mve.S index 398f58f4d5..d495f8293d 100644 --- a/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_state_extract_bytes_mve.S +++ b/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_state_extract_bytes_mve.S @@ -58,7 +58,8 @@ // Tail -- extract remaining <8 bytes via predicated byte stores. #include "../../../../common.h" -#if defined(MLK_FIPS202_ARMV81M_NEED_X4) && \ +#if defined(MLK_SYS_ARMV81M_MVE) && \ + defined(MLK_FIPS202_ARMV81M_NEED_X4) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* @@ -343,7 +344,8 @@ Lmlk_keccak_f1600_x4_state_extract_bytes_asm_exit: MLK_ASM_FN_SIZE(keccak_f1600_x4_state_extract_bytes_asm) -#endif /* MLK_FIPS202_ARMV81M_NEED_X4 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_ARMV81M_MVE && MLK_FIPS202_ARMV81M_NEED_X4 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_state_xor_bytes_mve.S b/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_state_xor_bytes_mve.S index 3f1b852bbe..dbdabf53ff 100644 --- a/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_state_xor_bytes_mve.S +++ b/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_state_xor_bytes_mve.S @@ -57,7 +57,8 @@ // Tail -- absorb remaining <8 bytes via predicated byte loads. #include "../../../../common.h" -#if defined(MLK_FIPS202_ARMV81M_NEED_X4) && \ +#if defined(MLK_SYS_ARMV81M_MVE) && \ + defined(MLK_FIPS202_ARMV81M_NEED_X4) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* @@ -364,7 +365,8 @@ Lmlk_keccak_f1600_x4_state_xor_bytes_asm_exit: MLK_ASM_FN_SIZE(keccak_f1600_x4_state_xor_bytes_asm) -#endif /* MLK_FIPS202_ARMV81M_NEED_X4 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_ARMV81M_MVE && MLK_FIPS202_ARMV81M_NEED_X4 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/fips202/native/x86_64/src/keccak_f1600_x4_avx2_asm.S b/mlkem/src/fips202/native/x86_64/src/keccak_f1600_x4_avx2_asm.S index 6d1504bd5f..3d5ac10ef0 100644 --- a/mlkem/src/fips202/native/x86_64/src/keccak_f1600_x4_avx2_asm.S +++ b/mlkem/src/fips202/native/x86_64/src/keccak_f1600_x4_avx2_asm.S @@ -4,7 +4,8 @@ */ #include "../../../../common.h" -#if defined(MLK_FIPS202_X86_64_NEED_X4_AVX2) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_FIPS202_X86_64_NEED_X4_AVX2) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /*yaml Name: keccak_f1600_x4_avx2_asm @@ -481,7 +482,8 @@ LLmlk_keccak_f1600_x4_avx2: MLK_ASM_FN_SIZE(keccak_f1600_x4_avx2_asm) -#endif /* MLK_FIPS202_X86_64_NEED_X4_AVX2 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_FIPS202_X86_64_NEED_X4_AVX2 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/aarch64/src/mlkem_intt_aarch64_asm.S b/mlkem/src/native/aarch64/src/mlkem_intt_aarch64_asm.S index 0901957893..8edd07f134 100644 --- a/mlkem/src/native/aarch64/src/mlkem_intt_aarch64_asm.S +++ b/mlkem/src/native/aarch64/src/mlkem_intt_aarch64_asm.S @@ -51,7 +51,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && \ +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (!defined(MLK_CONFIG_NO_ENCAPS_API) || \ !defined(MLK_CONFIG_NO_DECAPS_API)) @@ -627,8 +628,9 @@ Lmlk_intt_layer123_start: MLK_ASM_FN_SIZE(intt_aarch64_asm) -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ - (!MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API) */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && (!MLK_CONFIG_NO_ENCAPS_API || \ + !MLK_CONFIG_NO_DECAPS_API) */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/aarch64/src/mlkem_ntt_aarch64_asm.S b/mlkem/src/native/aarch64/src/mlkem_ntt_aarch64_asm.S index 2383c0f05e..0b63ad0da2 100644 --- a/mlkem/src/native/aarch64/src/mlkem_ntt_aarch64_asm.S +++ b/mlkem/src/native/aarch64/src/mlkem_ntt_aarch64_asm.S @@ -51,7 +51,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* * WARNING: This file is auto-derived from the mlkem-native source file @@ -558,7 +559,8 @@ Lmlk_ntt_layer4567_start: MLK_ASM_FN_SIZE(ntt_aarch64_asm) -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/aarch64/src/mlkem_poly_mulcache_compute_aarch64_asm.S b/mlkem/src/native/aarch64/src/mlkem_poly_mulcache_compute_aarch64_asm.S index 4b869f8c92..91953e7c59 100644 --- a/mlkem/src/native/aarch64/src/mlkem_poly_mulcache_compute_aarch64_asm.S +++ b/mlkem/src/native/aarch64/src/mlkem_poly_mulcache_compute_aarch64_asm.S @@ -40,7 +40,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* * WARNING: This file is auto-derived from the mlkem-native source file @@ -123,7 +124,8 @@ Lmlk_poly_mulcache_compute_loop_start: MLK_ASM_FN_SIZE(poly_mulcache_compute_aarch64_asm) -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/aarch64/src/mlkem_poly_reduce_aarch64_asm.S b/mlkem/src/native/aarch64/src/mlkem_poly_reduce_aarch64_asm.S index 0244ac6af3..a348ff9907 100644 --- a/mlkem/src/native/aarch64/src/mlkem_poly_reduce_aarch64_asm.S +++ b/mlkem/src/native/aarch64/src/mlkem_poly_reduce_aarch64_asm.S @@ -22,7 +22,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* * WARNING: This file is auto-derived from the mlkem-native source file @@ -146,7 +147,8 @@ Lmlk_poly_reduce_loop_start: MLK_ASM_FN_SIZE(poly_reduce_aarch64_asm) -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/aarch64/src/mlkem_poly_tobytes_aarch64_asm.S b/mlkem/src/native/aarch64/src/mlkem_poly_tobytes_aarch64_asm.S index 57b798c171..8c30cc7506 100644 --- a/mlkem/src/native/aarch64/src/mlkem_poly_tobytes_aarch64_asm.S +++ b/mlkem/src/native/aarch64/src/mlkem_poly_tobytes_aarch64_asm.S @@ -28,7 +28,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && \ +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (!defined(MLK_CONFIG_NO_KEYPAIR_API) || \ !defined(MLK_CONFIG_NO_ENCAPS_API)) @@ -116,8 +117,9 @@ Lmlk_poly_tobytes_loop_start: MLK_ASM_FN_SIZE(poly_tobytes_aarch64_asm) -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ - (!MLK_CONFIG_NO_KEYPAIR_API || !MLK_CONFIG_NO_ENCAPS_API) */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && (!MLK_CONFIG_NO_KEYPAIR_API || \ + !MLK_CONFIG_NO_ENCAPS_API) */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/aarch64/src/mlkem_poly_tomont_aarch64_asm.S b/mlkem/src/native/aarch64/src/mlkem_poly_tomont_aarch64_asm.S index 9179e3ff94..5279ce74cc 100644 --- a/mlkem/src/native/aarch64/src/mlkem_poly_tomont_aarch64_asm.S +++ b/mlkem/src/native/aarch64/src/mlkem_poly_tomont_aarch64_asm.S @@ -22,7 +22,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && \ +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ !defined(MLK_CONFIG_NO_KEYPAIR_API) @@ -94,8 +95,8 @@ Lmlk_poly_tomont_loop: MLK_ASM_FN_SIZE(poly_tomont_aarch64_asm) -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ - !MLK_CONFIG_NO_KEYPAIR_API */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && !MLK_CONFIG_NO_KEYPAIR_API */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/aarch64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S b/mlkem/src/native/aarch64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S index 41bd1581ed..2003f18aaf 100644 --- a/mlkem/src/native/aarch64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S +++ b/mlkem/src/native/aarch64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S @@ -52,7 +52,8 @@ /* Re-implementation of asymmetric base multiplication following @[NeonNTT] */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 2) +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 2) /* * WARNING: This file is auto-derived from the mlkem-native source file @@ -256,7 +257,8 @@ Lmlk_polyvec_basemul_acc_montgomery_cached_k2_loop_start: MLK_ASM_FN_SIZE(polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm) -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2) */ #if defined(__ELF__) diff --git a/mlkem/src/native/aarch64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S b/mlkem/src/native/aarch64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S index 7dcc8aead2..2ccb14e77c 100644 --- a/mlkem/src/native/aarch64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S +++ b/mlkem/src/native/aarch64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S @@ -52,7 +52,8 @@ /* Re-implementation of asymmetric base multiplication following @[NeonNTT] */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 3) +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 3) /* * WARNING: This file is auto-derived from the mlkem-native source file @@ -309,7 +310,8 @@ Lmlk_polyvec_basemul_acc_montgomery_cached_k3_loop_start: MLK_ASM_FN_SIZE(polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm) -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 3) */ #if defined(__ELF__) diff --git a/mlkem/src/native/aarch64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S b/mlkem/src/native/aarch64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S index 5d1ff00e94..921749ec14 100644 --- a/mlkem/src/native/aarch64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S +++ b/mlkem/src/native/aarch64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S @@ -52,7 +52,8 @@ /* Re-implementation of asymmetric base multiplication following @[NeonNTT] */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 4) +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 4) /* * WARNING: This file is auto-derived from the mlkem-native source file @@ -363,7 +364,8 @@ Lmlk_polyvec_basemul_acc_montgomery_cached_k4_loop_start: MLK_ASM_FN_SIZE(polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm) -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */ #if defined(__ELF__) diff --git a/mlkem/src/native/aarch64/src/mlkem_rej_uniform_aarch64_asm.S b/mlkem/src/native/aarch64/src/mlkem_rej_uniform_aarch64_asm.S index 8ba4081485..45040f7249 100644 --- a/mlkem/src/native/aarch64/src/mlkem_rej_uniform_aarch64_asm.S +++ b/mlkem/src/native/aarch64/src/mlkem_rej_uniform_aarch64_asm.S @@ -40,7 +40,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_AARCH64) && \ +#if defined(MLK_SYS_AARCH64_NEON) && \ + defined(MLK_ARITH_BACKEND_AARCH64) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /* @@ -219,7 +220,8 @@ Lmlk_rej_uniform_return: MLK_ASM_FN_SIZE(rej_uniform_aarch64_asm) -#endif /* MLK_ARITH_BACKEND_AARCH64 && !MLK_CONFIG_MULTILEVEL_NO_SHARED */ +#endif /* MLK_SYS_AARCH64_NEON && MLK_ARITH_BACKEND_AARCH64 && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/ppc64le/src/mlkem_intt_ppc_asm.S b/mlkem/src/native/ppc64le/src/mlkem_intt_ppc_asm.S index e665bc0da2..a40b0e91a4 100644 --- a/mlkem/src/native/ppc64le/src/mlkem_intt_ppc_asm.S +++ b/mlkem/src/native/ppc64le/src/mlkem_intt_ppc_asm.S @@ -7,7 +7,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_PPC64LE_DEFAULT) && \ +#if defined(MLK_SYS_PPC64LE_POWER8_VECTOR) && \ + defined(MLK_ARITH_BACKEND_PPC64LE_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (!defined(MLK_CONFIG_NO_ENCAPS_API) || \ !defined(MLK_CONFIG_NO_DECAPS_API)) @@ -3237,8 +3238,9 @@ mlk_intt_ppc_asm_Loopf: MLK_ASM_FN_SIZE(intt_ppc_asm) -#endif /* MLK_ARITH_BACKEND_PPC64LE_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && (!MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API) */ +#endif /* MLK_SYS_PPC64LE_POWER8_VECTOR && MLK_ARITH_BACKEND_PPC64LE_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && (!MLK_CONFIG_NO_ENCAPS_API || \ + !MLK_CONFIG_NO_DECAPS_API) */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/ppc64le/src/mlkem_ntt_ppc_asm.S b/mlkem/src/native/ppc64le/src/mlkem_ntt_ppc_asm.S index cd9c7b810a..8ac59efce4 100644 --- a/mlkem/src/native/ppc64le/src/mlkem_ntt_ppc_asm.S +++ b/mlkem/src/native/ppc64le/src/mlkem_ntt_ppc_asm.S @@ -7,7 +7,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_PPC64LE_DEFAULT) && \ +#if defined(MLK_SYS_PPC64LE_POWER8_VECTOR) && \ + defined(MLK_ARITH_BACKEND_PPC64LE_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /*yaml Name: ntt_ppc_asm @@ -1664,8 +1665,8 @@ MLK_ASM_FN_SYMBOL(ntt_ppc_asm) MLK_ASM_FN_SIZE(ntt_ppc_asm) -#endif /* MLK_ARITH_BACKEND_PPC64LE_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - */ +#endif /* MLK_SYS_PPC64LE_POWER8_VECTOR && MLK_ARITH_BACKEND_PPC64LE_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/ppc64le/src/mlkem_poly_tomont_ppc_asm.S b/mlkem/src/native/ppc64le/src/mlkem_poly_tomont_ppc_asm.S index 7a9be58fa3..e80f99aa05 100644 --- a/mlkem/src/native/ppc64le/src/mlkem_poly_tomont_ppc_asm.S +++ b/mlkem/src/native/ppc64le/src/mlkem_poly_tomont_ppc_asm.S @@ -14,7 +14,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_PPC64LE_DEFAULT) && \ +#if defined(MLK_SYS_PPC64LE_POWER8_VECTOR) && \ + defined(MLK_ARITH_BACKEND_PPC64LE_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ !defined(MLK_CONFIG_NO_KEYPAIR_API) /*yaml @@ -308,8 +309,8 @@ MLK_ASM_FN_SYMBOL(poly_tomont_ppc_asm) MLK_ASM_FN_SIZE(poly_tomont_ppc_asm) -#endif /* MLK_ARITH_BACKEND_PPC64LE_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && !MLK_CONFIG_NO_KEYPAIR_API */ +#endif /* MLK_SYS_PPC64LE_POWER8_VECTOR && MLK_ARITH_BACKEND_PPC64LE_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && !MLK_CONFIG_NO_KEYPAIR_API */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/ppc64le/src/mlkem_reduce_ppc_asm.S b/mlkem/src/native/ppc64le/src/mlkem_reduce_ppc_asm.S index c3fffcf3f4..e690f65268 100644 --- a/mlkem/src/native/ppc64le/src/mlkem_reduce_ppc_asm.S +++ b/mlkem/src/native/ppc64le/src/mlkem_reduce_ppc_asm.S @@ -6,7 +6,8 @@ * Written by Danny Tsen */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_PPC64LE_DEFAULT) && \ +#if defined(MLK_SYS_PPC64LE_POWER8_VECTOR) && \ + defined(MLK_ARITH_BACKEND_PPC64LE_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /*yaml Name: reduce_ppc_asm @@ -723,8 +724,8 @@ MLK_ASM_FN_SYMBOL(reduce_ppc_asm) MLK_ASM_FN_SIZE(reduce_ppc_asm) -#endif /* MLK_ARITH_BACKEND_PPC64LE_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - */ +#endif /* MLK_SYS_PPC64LE_POWER8_VECTOR && MLK_ARITH_BACKEND_PPC64LE_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/x86_64/src/mlkem_intt_avx2_asm.S b/mlkem/src/native/x86_64/src/mlkem_intt_avx2_asm.S index a1b915d924..5bf514a194 100644 --- a/mlkem/src/native/x86_64/src/mlkem_intt_avx2_asm.S +++ b/mlkem/src/native/x86_64/src/mlkem_intt_avx2_asm.S @@ -29,7 +29,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (!defined(MLK_CONFIG_NO_ENCAPS_API) || \ !defined(MLK_CONFIG_NO_DECAPS_API)) @@ -736,8 +737,9 @@ MLK_ASM_FN_SYMBOL(invntt_avx2_asm) MLK_ASM_FN_SIZE(invntt_avx2_asm) -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && (!MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && (!MLK_CONFIG_NO_ENCAPS_API || \ + !MLK_CONFIG_NO_DECAPS_API) */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/x86_64/src/mlkem_ntt_avx2_asm.S b/mlkem/src/native/x86_64/src/mlkem_ntt_avx2_asm.S index 96897b8f90..921549b6b3 100644 --- a/mlkem/src/native/x86_64/src/mlkem_ntt_avx2_asm.S +++ b/mlkem/src/native/x86_64/src/mlkem_ntt_avx2_asm.S @@ -25,7 +25,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /*yaml Name: ntt_avx2_asm @@ -654,8 +655,8 @@ MLK_ASM_FN_SYMBOL(ntt_avx2_asm) MLK_ASM_FN_SIZE(ntt_avx2_asm) -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/x86_64/src/mlkem_nttfrombytes_avx2_asm.S b/mlkem/src/native/x86_64/src/mlkem_nttfrombytes_avx2_asm.S index 6e02c1a76a..69269e76d8 100644 --- a/mlkem/src/native/x86_64/src/mlkem_nttfrombytes_avx2_asm.S +++ b/mlkem/src/native/x86_64/src/mlkem_nttfrombytes_avx2_asm.S @@ -19,7 +19,8 @@ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (!defined(MLK_CONFIG_NO_ENCAPS_API) || \ !defined(MLK_CONFIG_NO_DECAPS_API)) @@ -210,8 +211,9 @@ MLK_ASM_FN_SYMBOL(nttfrombytes_avx2_asm) MLK_ASM_FN_SIZE(nttfrombytes_avx2_asm) -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && (!MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && (!MLK_CONFIG_NO_ENCAPS_API || \ + !MLK_CONFIG_NO_DECAPS_API) */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/x86_64/src/mlkem_ntttobytes_avx2_asm.S b/mlkem/src/native/x86_64/src/mlkem_ntttobytes_avx2_asm.S index 4755d236ad..c6a49f4e07 100644 --- a/mlkem/src/native/x86_64/src/mlkem_ntttobytes_avx2_asm.S +++ b/mlkem/src/native/x86_64/src/mlkem_ntttobytes_avx2_asm.S @@ -19,7 +19,8 @@ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (!defined(MLK_CONFIG_NO_KEYPAIR_API) || \ !defined(MLK_CONFIG_NO_ENCAPS_API)) @@ -198,8 +199,9 @@ MLK_ASM_FN_SYMBOL(ntttobytes_avx2_asm) MLK_ASM_FN_SIZE(ntttobytes_avx2_asm) -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && (!MLK_CONFIG_NO_KEYPAIR_API || !MLK_CONFIG_NO_ENCAPS_API) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && (!MLK_CONFIG_NO_KEYPAIR_API || \ + !MLK_CONFIG_NO_ENCAPS_API) */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/x86_64/src/mlkem_nttunpack_avx2_asm.S b/mlkem/src/native/x86_64/src/mlkem_nttunpack_avx2_asm.S index ff781ee505..c96d98fef9 100644 --- a/mlkem/src/native/x86_64/src/mlkem_nttunpack_avx2_asm.S +++ b/mlkem/src/native/x86_64/src/mlkem_nttunpack_avx2_asm.S @@ -19,7 +19,8 @@ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /*yaml Name: nttunpack_avx2_asm @@ -183,8 +184,8 @@ MLK_ASM_FN_SYMBOL(nttunpack_avx2_asm) MLK_ASM_FN_SIZE(nttunpack_avx2_asm) -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/x86_64/src/mlkem_poly_compress_d10_avx2_asm.S b/mlkem/src/native/x86_64/src/mlkem_poly_compress_d10_avx2_asm.S index a069501bdc..d733462799 100644 --- a/mlkem/src/native/x86_64/src/mlkem_poly_compress_d10_avx2_asm.S +++ b/mlkem/src/native/x86_64/src/mlkem_poly_compress_d10_avx2_asm.S @@ -29,7 +29,8 @@ **************************************************/ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (!defined(MLK_CONFIG_NO_ENCAPS_API) || \ !defined(MLK_CONFIG_NO_DECAPS_API)) && \ @@ -404,10 +405,10 @@ MLK_ASM_FN_SYMBOL(poly_compress_d10_avx2_asm) MLK_ASM_FN_SIZE(poly_compress_d10_avx2_asm) -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && (!MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API) && \ - (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2 || MLKEM_K == 3) \ - */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && (!MLK_CONFIG_NO_ENCAPS_API || \ + !MLK_CONFIG_NO_DECAPS_API) && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || \ + MLKEM_K == 2 || MLKEM_K == 3) */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/x86_64/src/mlkem_poly_compress_d11_avx2_asm.S b/mlkem/src/native/x86_64/src/mlkem_poly_compress_d11_avx2_asm.S index f78225b803..4ad822291e 100644 --- a/mlkem/src/native/x86_64/src/mlkem_poly_compress_d11_avx2_asm.S +++ b/mlkem/src/native/x86_64/src/mlkem_poly_compress_d11_avx2_asm.S @@ -31,7 +31,8 @@ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (!defined(MLK_CONFIG_NO_ENCAPS_API) || \ !defined(MLK_CONFIG_NO_DECAPS_API)) && \ @@ -471,9 +472,10 @@ MLK_ASM_FN_SYMBOL(poly_compress_d11_avx2_asm) MLK_ASM_FN_SIZE(poly_compress_d11_avx2_asm) -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && (!MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API) && \ - (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && (!MLK_CONFIG_NO_ENCAPS_API || \ + !MLK_CONFIG_NO_DECAPS_API) && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || \ + MLKEM_K == 4) */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/x86_64/src/mlkem_poly_compress_d4_avx2_asm.S b/mlkem/src/native/x86_64/src/mlkem_poly_compress_d4_avx2_asm.S index 1e509e129a..000947ae69 100644 --- a/mlkem/src/native/x86_64/src/mlkem_poly_compress_d4_avx2_asm.S +++ b/mlkem/src/native/x86_64/src/mlkem_poly_compress_d4_avx2_asm.S @@ -29,7 +29,8 @@ **************************************************/ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (!defined(MLK_CONFIG_NO_ENCAPS_API) || \ !defined(MLK_CONFIG_NO_DECAPS_API)) && \ @@ -185,10 +186,10 @@ MLK_ASM_FN_SYMBOL(poly_compress_d4_avx2_asm) MLK_ASM_FN_SIZE(poly_compress_d4_avx2_asm) -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && (!MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API) && \ - (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2 || MLKEM_K == 3) \ - */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && (!MLK_CONFIG_NO_ENCAPS_API || \ + !MLK_CONFIG_NO_DECAPS_API) && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || \ + MLKEM_K == 2 || MLKEM_K == 3) */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/x86_64/src/mlkem_poly_compress_d5_avx2_asm.S b/mlkem/src/native/x86_64/src/mlkem_poly_compress_d5_avx2_asm.S index e85fc1148c..5fc50b9a55 100644 --- a/mlkem/src/native/x86_64/src/mlkem_poly_compress_d5_avx2_asm.S +++ b/mlkem/src/native/x86_64/src/mlkem_poly_compress_d5_avx2_asm.S @@ -29,7 +29,8 @@ **************************************************/ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (!defined(MLK_CONFIG_NO_ENCAPS_API) || \ !defined(MLK_CONFIG_NO_DECAPS_API)) && \ @@ -243,9 +244,10 @@ MLK_ASM_FN_SYMBOL(poly_compress_d5_avx2_asm) MLK_ASM_FN_SIZE(poly_compress_d5_avx2_asm) -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && (!MLK_CONFIG_NO_ENCAPS_API || !MLK_CONFIG_NO_DECAPS_API) && \ - (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && (!MLK_CONFIG_NO_ENCAPS_API || \ + !MLK_CONFIG_NO_DECAPS_API) && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || \ + MLKEM_K == 4) */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/x86_64/src/mlkem_poly_decompress_d10_avx2_asm.S b/mlkem/src/native/x86_64/src/mlkem_poly_decompress_d10_avx2_asm.S index 6cfdc3ec0a..5b5a4b5ac6 100644 --- a/mlkem/src/native/x86_64/src/mlkem_poly_decompress_d10_avx2_asm.S +++ b/mlkem/src/native/x86_64/src/mlkem_poly_decompress_d10_avx2_asm.S @@ -29,7 +29,8 @@ **************************************************/ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ !defined(MLK_CONFIG_NO_DECAPS_API) && \ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 2 || MLKEM_K == 3) @@ -249,9 +250,10 @@ MLK_ASM_FN_SYMBOL(poly_decompress_d10_avx2_asm) MLK_ASM_FN_SIZE(poly_decompress_d10_avx2_asm) -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && !MLK_CONFIG_NO_DECAPS_API && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || \ - MLKEM_K == 2 || MLKEM_K == 3) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && !MLK_CONFIG_NO_DECAPS_API && \ + (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2 || MLKEM_K == 3) \ + */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/x86_64/src/mlkem_poly_decompress_d11_avx2_asm.S b/mlkem/src/native/x86_64/src/mlkem_poly_decompress_d11_avx2_asm.S index fe8d13d0ec..128696d5a5 100644 --- a/mlkem/src/native/x86_64/src/mlkem_poly_decompress_d11_avx2_asm.S +++ b/mlkem/src/native/x86_64/src/mlkem_poly_decompress_d11_avx2_asm.S @@ -31,7 +31,8 @@ **************************************************/ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ !defined(MLK_CONFIG_NO_DECAPS_API) && \ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 4) @@ -299,9 +300,9 @@ MLK_ASM_FN_SYMBOL(poly_decompress_d11_avx2_asm) MLK_ASM_FN_SIZE(poly_decompress_d11_avx2_asm) -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && !MLK_CONFIG_NO_DECAPS_API && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || \ - MLKEM_K == 4) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && !MLK_CONFIG_NO_DECAPS_API && \ + (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/x86_64/src/mlkem_poly_decompress_d4_avx2_asm.S b/mlkem/src/native/x86_64/src/mlkem_poly_decompress_d4_avx2_asm.S index 1e441c9b6a..0fbdf1b844 100644 --- a/mlkem/src/native/x86_64/src/mlkem_poly_decompress_d4_avx2_asm.S +++ b/mlkem/src/native/x86_64/src/mlkem_poly_decompress_d4_avx2_asm.S @@ -29,7 +29,8 @@ **************************************************/ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ !defined(MLK_CONFIG_NO_DECAPS_API) && \ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 2 || MLKEM_K == 3) @@ -201,9 +202,10 @@ MLK_ASM_FN_SYMBOL(poly_decompress_d4_avx2_asm) MLK_ASM_FN_SIZE(poly_decompress_d4_avx2_asm) -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && !MLK_CONFIG_NO_DECAPS_API && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || \ - MLKEM_K == 2 || MLKEM_K == 3) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && !MLK_CONFIG_NO_DECAPS_API && \ + (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2 || MLKEM_K == 3) \ + */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/x86_64/src/mlkem_poly_decompress_d5_avx2_asm.S b/mlkem/src/native/x86_64/src/mlkem_poly_decompress_d5_avx2_asm.S index fe2df3c1fe..4680c6401a 100644 --- a/mlkem/src/native/x86_64/src/mlkem_poly_decompress_d5_avx2_asm.S +++ b/mlkem/src/native/x86_64/src/mlkem_poly_decompress_d5_avx2_asm.S @@ -30,7 +30,8 @@ **************************************************/ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ !defined(MLK_CONFIG_NO_DECAPS_API) && \ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 4) @@ -214,9 +215,9 @@ MLK_ASM_FN_SYMBOL(poly_decompress_d5_avx2_asm) MLK_ASM_FN_SIZE(poly_decompress_d5_avx2_asm) -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && !MLK_CONFIG_NO_DECAPS_API && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || \ - MLKEM_K == 4) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && !MLK_CONFIG_NO_DECAPS_API && \ + (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/x86_64/src/mlkem_poly_mulcache_compute_avx2_asm.S b/mlkem/src/native/x86_64/src/mlkem_poly_mulcache_compute_avx2_asm.S index 42b331ef3f..a78e495158 100644 --- a/mlkem/src/native/x86_64/src/mlkem_poly_mulcache_compute_avx2_asm.S +++ b/mlkem/src/native/x86_64/src/mlkem_poly_mulcache_compute_avx2_asm.S @@ -4,7 +4,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /*yaml Name: poly_mulcache_compute_avx2_asm @@ -111,8 +112,8 @@ MLK_ASM_FN_SYMBOL(poly_mulcache_compute_avx2_asm) MLK_ASM_FN_SIZE(poly_mulcache_compute_avx2_asm) -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.S b/mlkem/src/native/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.S index 1e72e9ecca..e70acbb441 100644 --- a/mlkem/src/native/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.S +++ b/mlkem/src/native/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.S @@ -4,7 +4,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 2) /*yaml @@ -529,8 +530,9 @@ MLK_ASM_FN_SYMBOL(polyvec_basemul_acc_montgomery_cached_k2_avx2_asm) MLK_ASM_FN_SIZE(polyvec_basemul_acc_montgomery_cached_k2_avx2_asm) -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ + (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2) */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.S b/mlkem/src/native/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.S index 4cb8dc92d8..232e0d288c 100644 --- a/mlkem/src/native/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.S +++ b/mlkem/src/native/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.S @@ -4,7 +4,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 3) /*yaml @@ -777,8 +778,9 @@ MLK_ASM_FN_SYMBOL(polyvec_basemul_acc_montgomery_cached_k3_avx2_asm) MLK_ASM_FN_SIZE(polyvec_basemul_acc_montgomery_cached_k3_avx2_asm) -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 3) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ + (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 3) */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.S b/mlkem/src/native/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.S index a7aada7e5a..ebb48be2b3 100644 --- a/mlkem/src/native/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.S +++ b/mlkem/src/native/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.S @@ -4,7 +4,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 4) /*yaml @@ -1025,8 +1026,9 @@ MLK_ASM_FN_SYMBOL(polyvec_basemul_acc_montgomery_cached_k4_avx2_asm) MLK_ASM_FN_SIZE(polyvec_basemul_acc_montgomery_cached_k4_avx2_asm) -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && \ + (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/x86_64/src/mlkem_reduce_avx2_asm.S b/mlkem/src/native/x86_64/src/mlkem_reduce_avx2_asm.S index 29ea77e754..b540c059b7 100644 --- a/mlkem/src/native/x86_64/src/mlkem_reduce_avx2_asm.S +++ b/mlkem/src/native/x86_64/src/mlkem_reduce_avx2_asm.S @@ -25,7 +25,8 @@ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /*yaml Name: reduce_avx2_asm @@ -227,8 +228,8 @@ MLK_ASM_FN_SYMBOL(reduce_avx2_asm) MLK_ASM_FN_SIZE(reduce_avx2_asm) -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/x86_64/src/mlkem_rej_uniform_avx2_asm.S b/mlkem/src/native/x86_64/src/mlkem_rej_uniform_avx2_asm.S index 18ed1c8df1..a6ccf4aead 100644 --- a/mlkem/src/native/x86_64/src/mlkem_rej_uniform_avx2_asm.S +++ b/mlkem/src/native/x86_64/src/mlkem_rej_uniform_avx2_asm.S @@ -20,7 +20,8 @@ **************************************************/ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) /*yaml Name: rej_uniform_avx2_asm @@ -128,8 +129,8 @@ Lmlk_rej_uniform_asm_end: MLK_ASM_FN_SIZE(rej_uniform_avx2_asm) -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/native/x86_64/src/mlkem_tomont_avx2_asm.S b/mlkem/src/native/x86_64/src/mlkem_tomont_avx2_asm.S index 144c2218d9..710b6351da 100644 --- a/mlkem/src/native/x86_64/src/mlkem_tomont_avx2_asm.S +++ b/mlkem/src/native/x86_64/src/mlkem_tomont_avx2_asm.S @@ -23,7 +23,8 @@ */ #include "../../../common.h" -#if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ +#if defined(MLK_SYS_X86_64_AVX2) && \ + defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \ !defined(MLK_CONFIG_NO_KEYPAIR_API) /*yaml @@ -165,8 +166,8 @@ MLK_ASM_FN_SYMBOL(tomont_avx2_asm) MLK_ASM_FN_SIZE(tomont_avx2_asm) -#endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \ - && !MLK_CONFIG_NO_KEYPAIR_API */ +#endif /* MLK_SYS_X86_64_AVX2 && MLK_ARITH_BACKEND_X86_64_DEFAULT && \ + !MLK_CONFIG_MULTILEVEL_NO_SHARED && !MLK_CONFIG_NO_KEYPAIR_API */ #if defined(__ELF__) .section .note.GNU-stack,"",%progbits diff --git a/mlkem/src/sys.h b/mlkem/src/sys.h index 5b65630106..41a9420bbc 100644 --- a/mlkem/src/sys.h +++ b/mlkem/src/sys.h @@ -57,8 +57,9 @@ #define MLK_SYS_AARCH64_EB #endif -/* Check if we're running on an Armv8.1-M system with MVE */ -#if defined(__ARM_ARCH_8_1M_MAIN__) || defined(__ARM_FEATURE_MVE) +/* Check if the Armv8.1-M compilation target supports MVE. Armv8.1-M + * architecture support alone does not imply that MVE is enabled. */ +#if defined(__ARM_FEATURE_MVE) #define MLK_SYS_ARMV81M_MVE #endif diff --git a/scripts/autogen b/scripts/autogen index cf47c21a8e..e9d3e650ec 100755 --- a/scripts/autogen +++ b/scripts/autogen @@ -3788,13 +3788,15 @@ def synchronize_backends( # comparing the object code before and after simplification. cflags="-Idev/x86_64/src/ -Imlkem/src/native/x86_64/src/ -mavx2 -mbmi2 -msse4 -fcf-protection=none", ) + # GCC exposes __ARM_FEATURE_MVE only with a softfp or hard float ABI. + # The assembly feature guards must see MVE while regenerating kernels. synchronize_backend( "dev/fips202/armv81m/src", "mlkem/src/fips202/native/armv81m/src", delete=delete, force_cross=force_cross, no_simplify=no_simplify, - cflags="-Idev/fips202/armv81m/src -Imlkem/src/fips202/native/armv81m/src -march=armv8.1-m.main+mve -mthumb", + cflags="-Idev/fips202/armv81m/src -Imlkem/src/fips202/native/armv81m/src -march=armv8.1-m.main+mve -mthumb -mfloat-abi=hard", ) synchronize_backend( "dev/fips202/armv81m", @@ -3802,7 +3804,7 @@ def synchronize_backends( delete=delete, force_cross=force_cross, no_simplify=no_simplify, - cflags="-Idev/fips202/armv81m -Imlkem/src/fips202/native/armv81m -march=armv8.1-m.main+mve -mthumb", + cflags="-Idev/fips202/armv81m -Imlkem/src/fips202/native/armv81m -march=armv8.1-m.main+mve -mthumb -mfloat-abi=hard", ) synchronize_backend( "dev/fips202/x86_64/src", @@ -4879,7 +4881,7 @@ def extract_yaml_from_assembly(assembly_file): ABI_CAPS = { "AVX2": { "asm_subdir": "x86_64", - "guard": "__AVX2__", + "guard": "MLK_SYS_X86_64_AVX2", "syscap": "MLK_SYS_CAP_X86_64_AVX2", "description": "AVX2", "cflags": ["-mavx2", "-mbmi2"], @@ -4903,7 +4905,7 @@ ABI_CAPS = { }, "MVE": { "asm_subdir": "armv81m", - "guard": "__ARM_FEATURE_MVE", + "guard": "MLK_SYS_ARMV81M_MVE", "syscap": "MLK_SYS_CAP_ARMV81M_MVE", "description": "Armv8.1-M MVE", "cflags": ["-march=armv8.1-m.main+mve", "-mthumb"], @@ -5155,12 +5157,14 @@ def gen_abicheck(): features = kernel_features(yaml_data, dev_source) registers = kernel_registers(yaml_data, dev_source) # Compile-time guards derived from Features. Each capability with a - # 'guard' (e.g. __AVX2__ for AVX2, __ARM_FEATURE_SHA3 for SHA3) + # 'guard' (e.g. MLK_SYS_X86_64_AVX2 for AVX2) # contributes an #if term mirroring the backend's own compile-time # gate; runtime gating via mlk_sys_check_capability is # additional, not a replacement. feature_guards = [ - ABI_CAPS[f]["guard"] for f in features if ABI_CAPS[f]["guard"] + ABI_CAPS[f]["guard"] + for f in features + if ABI_CAPS[f]["guard"] and ABI_CAPS[f]["guard"] != arch_guard ] function_name = yaml_data.get("Name") @@ -5360,7 +5364,7 @@ def gen_abicheck(): # Emit one row per function, consolidating consecutive functions that # share the same feature_guards into a single #if/#endif block (rather # than one block per function). This collapses a uniform-feature group - # (e.g. x86_64, where every kernel is gated on __AVX2__) into a single + # (e.g. x86_64, where every kernel requires AVX2) into a single # block, while still splitting where guards differ (e.g. aarch64, where # SHA3 and non-SHA3 kernels are interleaved). def emit_feature_grouped(functions, render): diff --git a/test/abicheck/aarch64/callstub_aarch64.S b/test/abicheck/aarch64/callstub_aarch64.S index d3f8e81501..fa67994a97 100644 --- a/test/abicheck/aarch64/callstub_aarch64.S +++ b/test/abicheck/aarch64/callstub_aarch64.S @@ -5,6 +5,8 @@ #include "../../../mlkem/src/sys.h" +#if defined(MLK_SYS_AARCH64) + #if defined(__ELF__) .section .note.GNU-stack,"",@progbits #endif @@ -245,3 +247,5 @@ asm_call_stub_aarch64: .cfi_def_cfa_offset 0 ret .cfi_endproc + +#endif /* MLK_SYS_AARCH64 */ diff --git a/test/abicheck/aarch64/selftest_aarch64.S b/test/abicheck/aarch64/selftest_aarch64.S index 197fe67555..ef8c724fa7 100644 --- a/test/abicheck/aarch64/selftest_aarch64.S +++ b/test/abicheck/aarch64/selftest_aarch64.S @@ -5,6 +5,8 @@ #include "../../../mlkem/src/sys.h" +#if defined(MLK_SYS_AARCH64) + /* * AArch64 selftest stubs. * @@ -74,3 +76,5 @@ define_corrupter selftest_aarch64_corrupt_d13, "fneg d13, d13" define_corrupter selftest_aarch64_corrupt_d14, "fneg d14, d14" define_corrupter selftest_aarch64_corrupt_d15, "fneg d15, d15" #endif /* MLK_SYS_AARCH64_NEON */ + +#endif /* MLK_SYS_AARCH64 */ diff --git a/test/abicheck/armv81m/callstub_armv81m.S b/test/abicheck/armv81m/callstub_armv81m.S index 289edce8a9..6ae1267c55 100644 --- a/test/abicheck/armv81m/callstub_armv81m.S +++ b/test/abicheck/armv81m/callstub_armv81m.S @@ -3,6 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT */ +#include "../../../mlkem/src/sys.h" + +#if defined(MLK_SYS_ARMV81M_MVE) + #if defined(__ELF__) .section .note.GNU-stack,"",%progbits #endif @@ -181,3 +185,5 @@ asm_call_stub_armv81m: .cfi_adjust_cfa_offset -64 pop {r4-r12, pc} .cfi_endproc + +#endif /* MLK_SYS_ARMV81M_MVE */ diff --git a/test/abicheck/armv81m/checks/check_keccak_f1600_x4_mve_asm.c b/test/abicheck/armv81m/checks/check_keccak_f1600_x4_mve_asm.c index 3f84d6186a..2913e4f1d8 100644 --- a/test/abicheck/armv81m/checks/check_keccak_f1600_x4_mve_asm.c +++ b/test/abicheck/armv81m/checks/check_keccak_f1600_x4_mve_asm.c @@ -14,7 +14,7 @@ #include "../abicheck_armv81m.h" #include "../checks_armv81m_all.h" -#if defined(MLK_SYS_ARMV81M_MVE) && defined(__ARM_FEATURE_MVE) +#if defined(MLK_SYS_ARMV81M_MVE) #include "../../../notrandombytes/notrandombytes.h" @@ -76,4 +76,4 @@ int check_keccak_f1600_x4_mve_asm(void) return MLK_ABICHECK_PASSED; } -#endif /* MLK_SYS_ARMV81M_MVE && __ARM_FEATURE_MVE */ +#endif /* MLK_SYS_ARMV81M_MVE */ diff --git a/test/abicheck/armv81m/checks_armv81m_all.h b/test/abicheck/armv81m/checks_armv81m_all.h index 2f20ccaa71..2bb629310f 100644 --- a/test/abicheck/armv81m/checks_armv81m_all.h +++ b/test/abicheck/armv81m/checks_armv81m_all.h @@ -18,14 +18,10 @@ #if defined(MLK_SYS_ARMV81M_MVE) -#if defined(__ARM_FEATURE_MVE) int check_keccak_f1600_x4_mve_asm(void); -#endif static const abicheck_entry_t all_checks[] = { -#if defined(__ARM_FEATURE_MVE) {"keccak_f1600_x4_mve_asm", check_keccak_f1600_x4_mve_asm}, -#endif {NULL, NULL} /* Sentinel */ }; diff --git a/test/abicheck/armv81m/selftest_armv81m.S b/test/abicheck/armv81m/selftest_armv81m.S index e3f01c883e..8924706411 100644 --- a/test/abicheck/armv81m/selftest_armv81m.S +++ b/test/abicheck/armv81m/selftest_armv81m.S @@ -3,6 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT */ +#include "../../../mlkem/src/sys.h" + +#if defined(MLK_SYS_ARMV81M_MVE) + /* * Armv8.1-M (Thumb-2, AAPCS32+MVE) selftest stubs. * @@ -61,3 +65,5 @@ corrupt_q selftest_armv81m_corrupt_q4, q4 corrupt_q selftest_armv81m_corrupt_q5, q5 corrupt_q selftest_armv81m_corrupt_q6, q6 corrupt_q selftest_armv81m_corrupt_q7, q7 + +#endif /* MLK_SYS_ARMV81M_MVE */ diff --git a/test/abicheck/x86_64/callstub_x86_64.S b/test/abicheck/x86_64/callstub_x86_64.S index eed080aaee..cacf77e188 100644 --- a/test/abicheck/x86_64/callstub_x86_64.S +++ b/test/abicheck/x86_64/callstub_x86_64.S @@ -3,6 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT */ +#include "../../../mlkem/src/sys.h" + +#if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) + /* * Function: asm_call_stub_x86_64_sysv * Description: x86_64 System V ABI compliance testing stub @@ -147,3 +151,5 @@ asm_call_stub_x86_64_sysv: .cfi_restore %r15 ret .cfi_endproc + +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED */ diff --git a/test/abicheck/x86_64/checks/check_invntt_avx2_asm.c b/test/abicheck/x86_64/checks/check_invntt_avx2_asm.c index a7c6a0ffbf..2314ce78f6 100644 --- a/test/abicheck/x86_64/checks/check_invntt_avx2_asm.c +++ b/test/abicheck/x86_64/checks/check_invntt_avx2_asm.c @@ -15,7 +15,7 @@ #include "../checks_x86_64_all.h" #if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) && \ - defined(__AVX2__) + defined(MLK_SYS_X86_64_AVX2) #include "../../../notrandombytes/notrandombytes.h" @@ -72,4 +72,4 @@ int check_invntt_avx2_asm(void) return MLK_ABICHECK_PASSED; } -#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && __AVX2__ */ +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && MLK_SYS_X86_64_AVX2 */ diff --git a/test/abicheck/x86_64/checks/check_keccak_f1600_x4_avx2_asm.c b/test/abicheck/x86_64/checks/check_keccak_f1600_x4_avx2_asm.c index 33aa051e6d..3f8e3129a6 100644 --- a/test/abicheck/x86_64/checks/check_keccak_f1600_x4_avx2_asm.c +++ b/test/abicheck/x86_64/checks/check_keccak_f1600_x4_avx2_asm.c @@ -15,7 +15,7 @@ #include "../checks_x86_64_all.h" #if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) && \ - defined(__AVX2__) + defined(MLK_SYS_X86_64_AVX2) #include "../../../notrandombytes/notrandombytes.h" @@ -82,4 +82,4 @@ int check_keccak_f1600_x4_avx2_asm(void) return MLK_ABICHECK_PASSED; } -#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && __AVX2__ */ +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && MLK_SYS_X86_64_AVX2 */ diff --git a/test/abicheck/x86_64/checks/check_ntt_avx2_asm.c b/test/abicheck/x86_64/checks/check_ntt_avx2_asm.c index b2185c6019..bbebcaa525 100644 --- a/test/abicheck/x86_64/checks/check_ntt_avx2_asm.c +++ b/test/abicheck/x86_64/checks/check_ntt_avx2_asm.c @@ -15,7 +15,7 @@ #include "../checks_x86_64_all.h" #if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) && \ - defined(__AVX2__) + defined(MLK_SYS_X86_64_AVX2) #include "../../../notrandombytes/notrandombytes.h" @@ -72,4 +72,4 @@ int check_ntt_avx2_asm(void) return MLK_ABICHECK_PASSED; } -#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && __AVX2__ */ +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && MLK_SYS_X86_64_AVX2 */ diff --git a/test/abicheck/x86_64/checks/check_nttfrombytes_avx2_asm.c b/test/abicheck/x86_64/checks/check_nttfrombytes_avx2_asm.c index 90b9c29563..f9f16bd3f0 100644 --- a/test/abicheck/x86_64/checks/check_nttfrombytes_avx2_asm.c +++ b/test/abicheck/x86_64/checks/check_nttfrombytes_avx2_asm.c @@ -15,7 +15,7 @@ #include "../checks_x86_64_all.h" #if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) && \ - defined(__AVX2__) + defined(MLK_SYS_X86_64_AVX2) #include "../../../notrandombytes/notrandombytes.h" @@ -73,4 +73,4 @@ int check_nttfrombytes_avx2_asm(void) return MLK_ABICHECK_PASSED; } -#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && __AVX2__ */ +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && MLK_SYS_X86_64_AVX2 */ diff --git a/test/abicheck/x86_64/checks/check_ntttobytes_avx2_asm.c b/test/abicheck/x86_64/checks/check_ntttobytes_avx2_asm.c index 36ad2af817..5cdc2f2ad3 100644 --- a/test/abicheck/x86_64/checks/check_ntttobytes_avx2_asm.c +++ b/test/abicheck/x86_64/checks/check_ntttobytes_avx2_asm.c @@ -15,7 +15,7 @@ #include "../checks_x86_64_all.h" #if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) && \ - defined(__AVX2__) + defined(MLK_SYS_X86_64_AVX2) #include "../../../notrandombytes/notrandombytes.h" @@ -74,4 +74,4 @@ int check_ntttobytes_avx2_asm(void) return MLK_ABICHECK_PASSED; } -#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && __AVX2__ */ +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && MLK_SYS_X86_64_AVX2 */ diff --git a/test/abicheck/x86_64/checks/check_nttunpack_avx2_asm.c b/test/abicheck/x86_64/checks/check_nttunpack_avx2_asm.c index eaee811376..6a8e6a5643 100644 --- a/test/abicheck/x86_64/checks/check_nttunpack_avx2_asm.c +++ b/test/abicheck/x86_64/checks/check_nttunpack_avx2_asm.c @@ -15,7 +15,7 @@ #include "../checks_x86_64_all.h" #if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) && \ - defined(__AVX2__) + defined(MLK_SYS_X86_64_AVX2) #include "../../../notrandombytes/notrandombytes.h" @@ -70,4 +70,4 @@ int check_nttunpack_avx2_asm(void) return MLK_ABICHECK_PASSED; } -#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && __AVX2__ */ +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && MLK_SYS_X86_64_AVX2 */ diff --git a/test/abicheck/x86_64/checks/check_poly_compress_d10_avx2_asm.c b/test/abicheck/x86_64/checks/check_poly_compress_d10_avx2_asm.c index a30c040d04..063a3c89f8 100644 --- a/test/abicheck/x86_64/checks/check_poly_compress_d10_avx2_asm.c +++ b/test/abicheck/x86_64/checks/check_poly_compress_d10_avx2_asm.c @@ -15,7 +15,7 @@ #include "../checks_x86_64_all.h" #if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) && \ - defined(__AVX2__) + defined(MLK_SYS_X86_64_AVX2) #include "../../../notrandombytes/notrandombytes.h" @@ -78,4 +78,4 @@ int check_poly_compress_d10_avx2_asm(void) return MLK_ABICHECK_PASSED; } -#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && __AVX2__ */ +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && MLK_SYS_X86_64_AVX2 */ diff --git a/test/abicheck/x86_64/checks/check_poly_compress_d11_avx2_asm.c b/test/abicheck/x86_64/checks/check_poly_compress_d11_avx2_asm.c index 8fc598be22..ba6453e070 100644 --- a/test/abicheck/x86_64/checks/check_poly_compress_d11_avx2_asm.c +++ b/test/abicheck/x86_64/checks/check_poly_compress_d11_avx2_asm.c @@ -15,7 +15,7 @@ #include "../checks_x86_64_all.h" #if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) && \ - defined(__AVX2__) + defined(MLK_SYS_X86_64_AVX2) #include "../../../notrandombytes/notrandombytes.h" @@ -78,4 +78,4 @@ int check_poly_compress_d11_avx2_asm(void) return MLK_ABICHECK_PASSED; } -#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && __AVX2__ */ +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && MLK_SYS_X86_64_AVX2 */ diff --git a/test/abicheck/x86_64/checks/check_poly_compress_d4_avx2_asm.c b/test/abicheck/x86_64/checks/check_poly_compress_d4_avx2_asm.c index 5d819961be..74e290dfec 100644 --- a/test/abicheck/x86_64/checks/check_poly_compress_d4_avx2_asm.c +++ b/test/abicheck/x86_64/checks/check_poly_compress_d4_avx2_asm.c @@ -15,7 +15,7 @@ #include "../checks_x86_64_all.h" #if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) && \ - defined(__AVX2__) + defined(MLK_SYS_X86_64_AVX2) #include "../../../notrandombytes/notrandombytes.h" @@ -77,4 +77,4 @@ int check_poly_compress_d4_avx2_asm(void) return MLK_ABICHECK_PASSED; } -#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && __AVX2__ */ +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && MLK_SYS_X86_64_AVX2 */ diff --git a/test/abicheck/x86_64/checks/check_poly_compress_d5_avx2_asm.c b/test/abicheck/x86_64/checks/check_poly_compress_d5_avx2_asm.c index e64c7966c2..2c852fa9cc 100644 --- a/test/abicheck/x86_64/checks/check_poly_compress_d5_avx2_asm.c +++ b/test/abicheck/x86_64/checks/check_poly_compress_d5_avx2_asm.c @@ -15,7 +15,7 @@ #include "../checks_x86_64_all.h" #if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) && \ - defined(__AVX2__) + defined(MLK_SYS_X86_64_AVX2) #include "../../../notrandombytes/notrandombytes.h" @@ -77,4 +77,4 @@ int check_poly_compress_d5_avx2_asm(void) return MLK_ABICHECK_PASSED; } -#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && __AVX2__ */ +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && MLK_SYS_X86_64_AVX2 */ diff --git a/test/abicheck/x86_64/checks/check_poly_decompress_d10_avx2_asm.c b/test/abicheck/x86_64/checks/check_poly_decompress_d10_avx2_asm.c index c878ae7319..077fc33bc4 100644 --- a/test/abicheck/x86_64/checks/check_poly_decompress_d10_avx2_asm.c +++ b/test/abicheck/x86_64/checks/check_poly_decompress_d10_avx2_asm.c @@ -15,7 +15,7 @@ #include "../checks_x86_64_all.h" #if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) && \ - defined(__AVX2__) + defined(MLK_SYS_X86_64_AVX2) #include "../../../notrandombytes/notrandombytes.h" @@ -78,4 +78,4 @@ int check_poly_decompress_d10_avx2_asm(void) return MLK_ABICHECK_PASSED; } -#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && __AVX2__ */ +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && MLK_SYS_X86_64_AVX2 */ diff --git a/test/abicheck/x86_64/checks/check_poly_decompress_d11_avx2_asm.c b/test/abicheck/x86_64/checks/check_poly_decompress_d11_avx2_asm.c index 573a11b47e..896b1c0a54 100644 --- a/test/abicheck/x86_64/checks/check_poly_decompress_d11_avx2_asm.c +++ b/test/abicheck/x86_64/checks/check_poly_decompress_d11_avx2_asm.c @@ -15,7 +15,7 @@ #include "../checks_x86_64_all.h" #if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) && \ - defined(__AVX2__) + defined(MLK_SYS_X86_64_AVX2) #include "../../../notrandombytes/notrandombytes.h" @@ -78,4 +78,4 @@ int check_poly_decompress_d11_avx2_asm(void) return MLK_ABICHECK_PASSED; } -#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && __AVX2__ */ +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && MLK_SYS_X86_64_AVX2 */ diff --git a/test/abicheck/x86_64/checks/check_poly_decompress_d4_avx2_asm.c b/test/abicheck/x86_64/checks/check_poly_decompress_d4_avx2_asm.c index a27768ccf5..debbca9cfd 100644 --- a/test/abicheck/x86_64/checks/check_poly_decompress_d4_avx2_asm.c +++ b/test/abicheck/x86_64/checks/check_poly_decompress_d4_avx2_asm.c @@ -15,7 +15,7 @@ #include "../checks_x86_64_all.h" #if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) && \ - defined(__AVX2__) + defined(MLK_SYS_X86_64_AVX2) #include "../../../notrandombytes/notrandombytes.h" @@ -78,4 +78,4 @@ int check_poly_decompress_d4_avx2_asm(void) return MLK_ABICHECK_PASSED; } -#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && __AVX2__ */ +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && MLK_SYS_X86_64_AVX2 */ diff --git a/test/abicheck/x86_64/checks/check_poly_decompress_d5_avx2_asm.c b/test/abicheck/x86_64/checks/check_poly_decompress_d5_avx2_asm.c index bdc2d6e806..b7c94995b8 100644 --- a/test/abicheck/x86_64/checks/check_poly_decompress_d5_avx2_asm.c +++ b/test/abicheck/x86_64/checks/check_poly_decompress_d5_avx2_asm.c @@ -15,7 +15,7 @@ #include "../checks_x86_64_all.h" #if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) && \ - defined(__AVX2__) + defined(MLK_SYS_X86_64_AVX2) #include "../../../notrandombytes/notrandombytes.h" @@ -78,4 +78,4 @@ int check_poly_decompress_d5_avx2_asm(void) return MLK_ABICHECK_PASSED; } -#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && __AVX2__ */ +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && MLK_SYS_X86_64_AVX2 */ diff --git a/test/abicheck/x86_64/checks/check_poly_mulcache_compute_avx2_asm.c b/test/abicheck/x86_64/checks/check_poly_mulcache_compute_avx2_asm.c index 1bacb3b763..32921dc402 100644 --- a/test/abicheck/x86_64/checks/check_poly_mulcache_compute_avx2_asm.c +++ b/test/abicheck/x86_64/checks/check_poly_mulcache_compute_avx2_asm.c @@ -15,7 +15,7 @@ #include "../checks_x86_64_all.h" #if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) && \ - defined(__AVX2__) + defined(MLK_SYS_X86_64_AVX2) #include "../../../notrandombytes/notrandombytes.h" @@ -78,4 +78,4 @@ int check_poly_mulcache_compute_avx2_asm(void) return MLK_ABICHECK_PASSED; } -#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && __AVX2__ */ +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && MLK_SYS_X86_64_AVX2 */ diff --git a/test/abicheck/x86_64/checks/check_polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.c b/test/abicheck/x86_64/checks/check_polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.c index 9e31b942c7..72d87683b3 100644 --- a/test/abicheck/x86_64/checks/check_polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.c +++ b/test/abicheck/x86_64/checks/check_polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.c @@ -15,7 +15,7 @@ #include "../checks_x86_64_all.h" #if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) && \ - defined(__AVX2__) + defined(MLK_SYS_X86_64_AVX2) #include "../../../notrandombytes/notrandombytes.h" @@ -82,4 +82,4 @@ int check_polyvec_basemul_acc_montgomery_cached_k2_avx2_asm(void) return MLK_ABICHECK_PASSED; } -#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && __AVX2__ */ +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && MLK_SYS_X86_64_AVX2 */ diff --git a/test/abicheck/x86_64/checks/check_polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.c b/test/abicheck/x86_64/checks/check_polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.c index e1add85cbb..a7e58914d1 100644 --- a/test/abicheck/x86_64/checks/check_polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.c +++ b/test/abicheck/x86_64/checks/check_polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.c @@ -15,7 +15,7 @@ #include "../checks_x86_64_all.h" #if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) && \ - defined(__AVX2__) + defined(MLK_SYS_X86_64_AVX2) #include "../../../notrandombytes/notrandombytes.h" @@ -82,4 +82,4 @@ int check_polyvec_basemul_acc_montgomery_cached_k3_avx2_asm(void) return MLK_ABICHECK_PASSED; } -#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && __AVX2__ */ +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && MLK_SYS_X86_64_AVX2 */ diff --git a/test/abicheck/x86_64/checks/check_polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.c b/test/abicheck/x86_64/checks/check_polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.c index 7cdabca54c..f4b17626a4 100644 --- a/test/abicheck/x86_64/checks/check_polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.c +++ b/test/abicheck/x86_64/checks/check_polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.c @@ -15,7 +15,7 @@ #include "../checks_x86_64_all.h" #if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) && \ - defined(__AVX2__) + defined(MLK_SYS_X86_64_AVX2) #include "../../../notrandombytes/notrandombytes.h" @@ -82,4 +82,4 @@ int check_polyvec_basemul_acc_montgomery_cached_k4_avx2_asm(void) return MLK_ABICHECK_PASSED; } -#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && __AVX2__ */ +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && MLK_SYS_X86_64_AVX2 */ diff --git a/test/abicheck/x86_64/checks/check_reduce_avx2_asm.c b/test/abicheck/x86_64/checks/check_reduce_avx2_asm.c index 9e1ed6bb67..586838503e 100644 --- a/test/abicheck/x86_64/checks/check_reduce_avx2_asm.c +++ b/test/abicheck/x86_64/checks/check_reduce_avx2_asm.c @@ -15,7 +15,7 @@ #include "../checks_x86_64_all.h" #if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) && \ - defined(__AVX2__) + defined(MLK_SYS_X86_64_AVX2) #include "../../../notrandombytes/notrandombytes.h" @@ -69,4 +69,4 @@ int check_reduce_avx2_asm(void) return MLK_ABICHECK_PASSED; } -#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && __AVX2__ */ +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && MLK_SYS_X86_64_AVX2 */ diff --git a/test/abicheck/x86_64/checks/check_rej_uniform_avx2_asm.c b/test/abicheck/x86_64/checks/check_rej_uniform_avx2_asm.c index 3c65653861..2dcd60a715 100644 --- a/test/abicheck/x86_64/checks/check_rej_uniform_avx2_asm.c +++ b/test/abicheck/x86_64/checks/check_rej_uniform_avx2_asm.c @@ -15,7 +15,7 @@ #include "../checks_x86_64_all.h" #if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) && \ - defined(__AVX2__) + defined(MLK_SYS_X86_64_AVX2) #include "../../../notrandombytes/notrandombytes.h" @@ -78,4 +78,4 @@ int check_rej_uniform_avx2_asm(void) return MLK_ABICHECK_PASSED; } -#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && __AVX2__ */ +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && MLK_SYS_X86_64_AVX2 */ diff --git a/test/abicheck/x86_64/checks/check_tomont_avx2_asm.c b/test/abicheck/x86_64/checks/check_tomont_avx2_asm.c index 38db3122a2..ff4a6b3e91 100644 --- a/test/abicheck/x86_64/checks/check_tomont_avx2_asm.c +++ b/test/abicheck/x86_64/checks/check_tomont_avx2_asm.c @@ -15,7 +15,7 @@ #include "../checks_x86_64_all.h" #if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) && \ - defined(__AVX2__) + defined(MLK_SYS_X86_64_AVX2) #include "../../../notrandombytes/notrandombytes.h" @@ -69,4 +69,4 @@ int check_tomont_avx2_asm(void) return MLK_ABICHECK_PASSED; } -#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && __AVX2__ */ +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED && MLK_SYS_X86_64_AVX2 */ diff --git a/test/abicheck/x86_64/checks_x86_64_all.h b/test/abicheck/x86_64/checks_x86_64_all.h index b7fbadaafc..aaaff96f81 100644 --- a/test/abicheck/x86_64/checks_x86_64_all.h +++ b/test/abicheck/x86_64/checks_x86_64_all.h @@ -19,7 +19,7 @@ #if defined(MLK_SYS_X86_64) #if defined(MLK_SYSV_ABI_SUPPORTED) -#if defined(__AVX2__) +#if defined(MLK_SYS_X86_64_AVX2) int check_keccak_f1600_x4_avx2_asm(void); int check_invntt_avx2_asm(void); int check_ntt_avx2_asm(void); @@ -41,12 +41,12 @@ int check_polyvec_basemul_acc_montgomery_cached_k4_avx2_asm(void); int check_reduce_avx2_asm(void); int check_rej_uniform_avx2_asm(void); int check_tomont_avx2_asm(void); -#endif /* __AVX2__ */ +#endif /* MLK_SYS_X86_64_AVX2 */ #endif /* MLK_SYSV_ABI_SUPPORTED */ static const abicheck_entry_t all_checks[] = { #if defined(MLK_SYSV_ABI_SUPPORTED) -#if defined(__AVX2__) +#if defined(MLK_SYS_X86_64_AVX2) {"keccak_f1600_x4_avx2_asm", check_keccak_f1600_x4_avx2_asm}, {"invntt_avx2_asm", check_invntt_avx2_asm}, {"ntt_avx2_asm", check_ntt_avx2_asm}, @@ -71,7 +71,7 @@ static const abicheck_entry_t all_checks[] = { {"reduce_avx2_asm", check_reduce_avx2_asm}, {"rej_uniform_avx2_asm", check_rej_uniform_avx2_asm}, {"tomont_avx2_asm", check_tomont_avx2_asm}, -#endif /* __AVX2__ */ +#endif /* MLK_SYS_X86_64_AVX2 */ #endif /* MLK_SYSV_ABI_SUPPORTED */ {NULL, NULL} /* Sentinel */ }; diff --git a/test/abicheck/x86_64/selftest_x86_64.S b/test/abicheck/x86_64/selftest_x86_64.S index a9f1af0604..e12a9ce63e 100644 --- a/test/abicheck/x86_64/selftest_x86_64.S +++ b/test/abicheck/x86_64/selftest_x86_64.S @@ -3,6 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT */ +#include "../../../mlkem/src/sys.h" + +#if defined(MLK_SYS_X86_64) && defined(MLK_SYSV_ABI_SUPPORTED) + /* * x86_64 (System V) selftest stubs. * @@ -39,3 +43,5 @@ define_corrupter selftest_x86_64_corrupt_r12, "notq %r12" define_corrupter selftest_x86_64_corrupt_r13, "notq %r13" define_corrupter selftest_x86_64_corrupt_r14, "notq %r14" define_corrupter selftest_x86_64_corrupt_r15, "notq %r15" + +#endif /* MLK_SYS_X86_64 && MLK_SYSV_ABI_SUPPORTED */ From 300af7664566e334a1d0fcb454ae04105a23806c Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Sun, 11 Oct 2026 05:57:20 +0000 Subject: [PATCH 2/3] abicheck: Use the platform's CPU feature flags The ABI checker adds CPU feature flags to individual assembly objects. This can enable kernels which the platform disabled and leaves Make responsible for compiler capabilities that a custom build, such as Zephyr, determines itself. The preceding commit guards assembly with the same architecture and feature checks as the generated C tests. Compile the fixed source list with the platform's flags and let those guards omit unsupported kernels. Remove the generated feature makefiles and the separate SHA3 source filter. Signed-off-by: Hanno Becker --- scripts/autogen | 126 ---------------------- test/abicheck/README.md | 11 +- test/abicheck/aarch64/abicheck_aarch64.mk | 45 -------- test/abicheck/abicheck.mk | 14 --- test/abicheck/armv81m/abicheck_armv81m.mk | 27 ----- test/abicheck/ppc64le/abicheck_ppc64le.mk | 28 ----- test/abicheck/x86_64/abicheck_x86_64.mk | 43 -------- test/mk/components.mk | 16 +-- 8 files changed, 7 insertions(+), 303 deletions(-) delete mode 100644 test/abicheck/aarch64/abicheck_aarch64.mk delete mode 100644 test/abicheck/abicheck.mk delete mode 100644 test/abicheck/armv81m/abicheck_armv81m.mk delete mode 100644 test/abicheck/ppc64le/abicheck_ppc64le.mk delete mode 100644 test/abicheck/x86_64/abicheck_x86_64.mk diff --git a/scripts/autogen b/scripts/autogen index e9d3e650ec..32514d63a0 100755 --- a/scripts/autogen +++ b/scripts/autogen @@ -3358,25 +3358,6 @@ def gen_hol_light_asm_file(job): ) -# Map dev/ source directory to the corresponding upstream under mlkem/. -def upstream_src_dir_for_dev_dir(dev_dir): - if dev_dir.startswith("dev/fips202/"): - # dev/fips202//src -> mlkem/src/fips202/native//src - arch = dev_dir.split("/")[2] - return f"mlkem/src/fips202/native/{arch}/src" - if dev_dir.startswith("dev/aarch64_"): - # dev/aarch64_opt/src and dev/aarch64_clean/src map to the same tree - return "mlkem/src/native/aarch64/src" - if dev_dir.startswith("dev/x86_64/"): - return "mlkem/src/native/x86_64/src" - if dev_dir.startswith("dev/ppc64le/"): - return "mlkem/src/native/ppc64le/src" - raise ValueError( - f"Unrecognised dev/ source directory {dev_dir!r}; " - "extend upstream_src_dir_for_dev_dir() to map it to mlkem/src/..." - ) - - def hol_light_asm_joblist(): """Return the list of simpasm export jobs, each (basename, dev_dir, cflags, arch). Consumed by the HOL-Light assembly copies (gen_hol_light_asm) and, as @@ -4867,71 +4848,37 @@ def extract_yaml_from_assembly(assembly_file): # ABI checker capability table. # # Maps each `ABI.Features:` tag from the kernel YAMLs to: -# - 'asm_subdir': the arch this cap belongs to; selects the per-arch -# test/abicheck//abicheck_.mk it is -# emitted into. # - 'guard': if non-None, wrap the generated check in #if defined(...). # - 'syscap': runtime capability; check skips if the host lacks it. -# - 'cflags': for the autogeneration of the per-arch abicheck_.mk. # - 'description': shown when a check is skipped. -# - 'aux_files': extra .S files needing these CFLAGS though not generated -# kernel exports (hand-written abicheck stubs/selftests, and -# sources whose YAML doesn't list them as ABI-tested kernels -# but still need the per-cap toolchain flags). ABI_CAPS = { "AVX2": { - "asm_subdir": "x86_64", "guard": "MLK_SYS_X86_64_AVX2", "syscap": "MLK_SYS_CAP_X86_64_AVX2", "description": "AVX2", - "cflags": ["-mavx2", "-mbmi2"], - "aux_files": [], }, "NEON": { - "asm_subdir": "aarch64", "guard": "MLK_SYS_AARCH64_NEON", "syscap": "MLK_SYS_CAP_AARCH64_NEON", "description": "AArch64 NEON", - "cflags": ["-march=armv8-a+simd"], - "aux_files": [], }, "SHA3": { - "asm_subdir": "aarch64", "guard": "__ARM_FEATURE_SHA3", "syscap": "MLK_SYS_CAP_AARCH64_SHA3", "description": "Armv8.4-A SHA3 (eor3, rax1, xar, bcax)", - "cflags": ["-march=armv8.4-a+sha3"], - "aux_files": [], }, "MVE": { - "asm_subdir": "armv81m", "guard": "MLK_SYS_ARMV81M_MVE", "syscap": "MLK_SYS_CAP_ARMV81M_MVE", "description": "Armv8.1-M MVE", - "cflags": ["-march=armv8.1-m.main+mve", "-mthumb"], - "aux_files": [ - "test/abicheck/armv81m/callstub_armv81m.S", - "test/abicheck/armv81m/selftest_armv81m.S", - # Shipped MVE helpers pulled in by the abicheck wildcard but - # not registered as ABI-tested kernels - they still need MVE - # CFLAGS to assemble. - "mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_state_extract_bytes_mve.S", - "mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_state_xor_bytes_mve.S", - ], }, # NTT/INTT use the POWER8 vector merges vmrgew/vmrgow (ISA 2.07). # AltiVec predates POWER8, and VSX was introduced in POWER7. # All current PPC64 kernels and ABI stubs share the backend's guard. "POWER8_VECTOR": { - "asm_subdir": "ppc64le", "guard": "MLK_SYS_PPC64LE_POWER8_VECTOR", "syscap": "MLK_SYS_CAP_PPC64LE_POWER8_VECTOR", "description": "AltiVec/VSX and POWER8 vector extensions (Power ISA 2.07)", - "cflags": ["-mcpu=power8", "-maltivec", "-mvsx"], - "aux_files": [ - "test/abicheck/ppc64le/callstub_ppc64le.S", - "test/abicheck/ppc64le/selftest_ppc64le.S", - ], }, } @@ -5115,10 +5062,6 @@ def gen_abicheck(): # Bucket joblist entries by their YAML-declared (arch, calling) pair so a # single dev source file is fully self-describing. jobs_by_arch_calling = {key: [] for key in ARCH_CALLINGS} - # Map cap -> sorted list of .S files that require it. Drives the - # generated per-arch abicheck_.mk at the end of this function. - cap_to_files = {cap: [] for cap in ABI_CAPS} - for entry in sorted(joblist, key=lambda j: j[0]): assembly_basename, dev_src_dir, _cflags, joblist_arch = entry dev_source = f"{dev_src_dir}/{assembly_basename}" @@ -5130,9 +5073,6 @@ def gen_abicheck(): f"{dev_source}: YAML 'ABI.Architecture: {arch_calling[0]}' " f"disagrees with joblist arch {joblist_arch!r}" ) - upstream_src_dir = upstream_src_dir_for_dev_dir(dev_src_dir) - for cap in kernel_features(yaml_data, dev_source): - cap_to_files[cap].append(f"{upstream_src_dir}/{assembly_basename}") jobs_by_arch_calling[arch_calling].append((entry, yaml_data)) # Per-(arch, calling) generated metadata used to assemble checks_all.h: @@ -5429,72 +5369,6 @@ def gen_abicheck(): force_format=True, ) - # Emit per-capability CFLAGS injection for the build, split per arch: - # one test/abicheck//abicheck_.mk per arch with caps, plus a - # top-level test/abicheck/abicheck.mk that includes them all. Single source - # of truth alongside the C-time guard (arch_flags) and runtime cap check. - caps_by_subdir = {} - for cap in sorted(ABI_CAPS): - caps_by_subdir.setdefault(ABI_CAPS[cap]["asm_subdir"], []).append(cap) - - def gen_features_mk(asm_subdir, caps): - yield from gen_yaml_header() - yield from gen_yaml_autogen_warning() - yield "#" - yield "# Edit the YAML 'ABI.Features:' list in dev//src/.S" - yield "# and re-run scripts/autogen instead." - yield "#" - yield "# For each capability declared by a kernel's ABI.Features list, this" - yield "# file appends the capability's CFLAGS to that kernel's .S object" - yield "# under mlkem/src/." - yield "" - yield "# Default each cap's file list to empty so the unconditional appends" - yield "# below are safe even when a cap has no kernels on this arch." - for cap in caps: - yield f"ABICHECK_REQ_{cap}_FILES :=" - for cap in caps: - # Files needing this cap's CFLAGS are: the kernel exports declared - # by YAML, plus any always-on auxiliary files (callstub/selftest) - # listed in ABI_CAPS[cap]['aux_files']. - files = sorted( - set(cap_to_files[cap]) | set(ABI_CAPS[cap].get("aux_files", [])) - ) - if not files: - continue - cflags = " ".join(ABI_CAPS[cap]["cflags"]) - yield "" - yield f"# {cap}: {ABI_CAPS[cap]['description']}" - yield f"ABICHECK_REQ_{cap}_FILES := \\" - for i, f in enumerate(files): - sep = " \\" if i + 1 < len(files) else "" - yield f" {f}{sep}" - yield ( - f"ABICHECK_REQ_{cap}_OBJS := " - f"$(call MAKE_OBJS,$(ABICHECK_DIR),$(ABICHECK_REQ_{cap}_FILES))" - ) - if cflags: - yield f"$(ABICHECK_REQ_{cap}_OBJS): CFLAGS += {cflags}" - yield "" - - for asm_subdir, caps in caps_by_subdir.items(): - update_file( - f"test/abicheck/{asm_subdir}/abicheck_{asm_subdir}.mk", - "\n".join(gen_features_mk(asm_subdir, caps)), - ) - - def gen_abicheck_mk(): - yield from gen_yaml_header() - yield from gen_yaml_autogen_warning() - yield "#" - yield "# Includes the per-arch abicheck_.mk, each of which appends" - yield "# its capabilities' CFLAGS to the matching .S objects." - yield "" - for asm_subdir in sorted(caps_by_subdir): - yield f"include test/abicheck/{asm_subdir}/abicheck_{asm_subdir}.mk" - yield "" - - update_file("test/abicheck/abicheck.mk", "\n".join(gen_abicheck_mk())) - def _main(): slothy_choices = [ diff --git a/test/abicheck/README.md b/test/abicheck/README.md index c83e1a13f7..1b545ca2f7 100644 --- a/test/abicheck/README.md +++ b/test/abicheck/README.md @@ -31,8 +31,9 @@ Before trusting any verdict, `abicheck.c` runs a self-test: hand-written corrupters (`/selftest_.S`) that each clobber one callee-saved register, confirming the checker fires. -The `mlkem/src/.../*.S` sources are assembled directly. Compile-time feature -guards select which checks are registered; a check is skipped if +The `mlkem/src/.../*.S` sources are assembled directly with the build's CPU +flags. Their system capability guards omit code for unsupported features. Matching +compile-time guards select which checks are registered; a check is skipped if `mlk_sys_check_capability()` reports a required feature as unavailable. On unsupported architectures the registry is empty and the driver exits cleanly. @@ -40,10 +41,8 @@ On unsupported architectures the registry is empty and the driver exits cleanly. Each kernel's buffer sizes, calling convention, and required CPU features come from a `/*yaml ... */` block in its `dev/` assembly source. `scripts/autogen` -turns that into the per-kernel `check_.c`, the `checks__all.h` -registry, and the per-arch `abicheck_.mk` (CFLAGS per feature, e.g. -`-mavx2`), all included via `abicheck.mk` from `test/mk/components.mk`. Edit the -YAML, not the generated files. +turns that into the per-kernel `check_.c` and the `checks__all.h` +registry. Edit the YAML, not the generated files. [^AAPCS32]: Arm Limited: Procedure Call Standard for the Arm Architecture (AAPCS32), [https://github.com/ARM-software/abi-aa/blob/main/aapcs32/aapcs32.rst](https://github.com/ARM-software/abi-aa/blob/main/aapcs32/aapcs32.rst) diff --git a/test/abicheck/aarch64/abicheck_aarch64.mk b/test/abicheck/aarch64/abicheck_aarch64.mk deleted file mode 100644 index 18404e5e91..0000000000 --- a/test/abicheck/aarch64/abicheck_aarch64.mk +++ /dev/null @@ -1,45 +0,0 @@ -# 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. -# -# Edit the YAML 'ABI.Features:' list in dev//src/.S -# and re-run scripts/autogen instead. -# -# For each capability declared by a kernel's ABI.Features list, this -# file appends the capability's CFLAGS to that kernel's .S object -# under mlkem/src/. - -# Default each cap's file list to empty so the unconditional appends -# below are safe even when a cap has no kernels on this arch. -ABICHECK_REQ_NEON_FILES := -ABICHECK_REQ_SHA3_FILES := - -# NEON: AArch64 NEON -ABICHECK_REQ_NEON_FILES := \ - mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_aarch64_asm.S \ - mlkem/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_aarch64_asm.S \ - mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S \ - mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S \ - mlkem/src/native/aarch64/src/mlkem_intt_aarch64_asm.S \ - mlkem/src/native/aarch64/src/mlkem_ntt_aarch64_asm.S \ - mlkem/src/native/aarch64/src/mlkem_poly_mulcache_compute_aarch64_asm.S \ - mlkem/src/native/aarch64/src/mlkem_poly_reduce_aarch64_asm.S \ - mlkem/src/native/aarch64/src/mlkem_poly_tobytes_aarch64_asm.S \ - mlkem/src/native/aarch64/src/mlkem_poly_tomont_aarch64_asm.S \ - mlkem/src/native/aarch64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S \ - mlkem/src/native/aarch64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S \ - mlkem/src/native/aarch64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S \ - mlkem/src/native/aarch64/src/mlkem_rej_uniform_aarch64_asm.S -ABICHECK_REQ_NEON_OBJS := $(call MAKE_OBJS,$(ABICHECK_DIR),$(ABICHECK_REQ_NEON_FILES)) -$(ABICHECK_REQ_NEON_OBJS): CFLAGS += -march=armv8-a+simd - -# SHA3: Armv8.4-A SHA3 (eor3, rax1, xar, bcax) -ABICHECK_REQ_SHA3_FILES := \ - mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_aarch64_asm.S \ - mlkem/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_aarch64_asm.S \ - mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S -ABICHECK_REQ_SHA3_OBJS := $(call MAKE_OBJS,$(ABICHECK_DIR),$(ABICHECK_REQ_SHA3_FILES)) -$(ABICHECK_REQ_SHA3_OBJS): CFLAGS += -march=armv8.4-a+sha3 diff --git a/test/abicheck/abicheck.mk b/test/abicheck/abicheck.mk deleted file mode 100644 index 0204d07d52..0000000000 --- a/test/abicheck/abicheck.mk +++ /dev/null @@ -1,14 +0,0 @@ -# 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. -# -# Includes the per-arch abicheck_.mk, each of which appends -# its capabilities' CFLAGS to the matching .S objects. - -include test/abicheck/aarch64/abicheck_aarch64.mk -include test/abicheck/armv81m/abicheck_armv81m.mk -include test/abicheck/ppc64le/abicheck_ppc64le.mk -include test/abicheck/x86_64/abicheck_x86_64.mk diff --git a/test/abicheck/armv81m/abicheck_armv81m.mk b/test/abicheck/armv81m/abicheck_armv81m.mk deleted file mode 100644 index c6e8f058b4..0000000000 --- a/test/abicheck/armv81m/abicheck_armv81m.mk +++ /dev/null @@ -1,27 +0,0 @@ -# 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. -# -# Edit the YAML 'ABI.Features:' list in dev//src/.S -# and re-run scripts/autogen instead. -# -# For each capability declared by a kernel's ABI.Features list, this -# file appends the capability's CFLAGS to that kernel's .S object -# under mlkem/src/. - -# Default each cap's file list to empty so the unconditional appends -# below are safe even when a cap has no kernels on this arch. -ABICHECK_REQ_MVE_FILES := - -# MVE: Armv8.1-M MVE -ABICHECK_REQ_MVE_FILES := \ - mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S \ - mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_state_extract_bytes_mve.S \ - mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_state_xor_bytes_mve.S \ - test/abicheck/armv81m/callstub_armv81m.S \ - test/abicheck/armv81m/selftest_armv81m.S -ABICHECK_REQ_MVE_OBJS := $(call MAKE_OBJS,$(ABICHECK_DIR),$(ABICHECK_REQ_MVE_FILES)) -$(ABICHECK_REQ_MVE_OBJS): CFLAGS += -march=armv8.1-m.main+mve -mthumb diff --git a/test/abicheck/ppc64le/abicheck_ppc64le.mk b/test/abicheck/ppc64le/abicheck_ppc64le.mk deleted file mode 100644 index acc89c0360..0000000000 --- a/test/abicheck/ppc64le/abicheck_ppc64le.mk +++ /dev/null @@ -1,28 +0,0 @@ -# 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. -# -# Edit the YAML 'ABI.Features:' list in dev//src/.S -# and re-run scripts/autogen instead. -# -# For each capability declared by a kernel's ABI.Features list, this -# file appends the capability's CFLAGS to that kernel's .S object -# under mlkem/src/. - -# Default each cap's file list to empty so the unconditional appends -# below are safe even when a cap has no kernels on this arch. -ABICHECK_REQ_POWER8_VECTOR_FILES := - -# POWER8_VECTOR: AltiVec/VSX and POWER8 vector extensions (Power ISA 2.07) -ABICHECK_REQ_POWER8_VECTOR_FILES := \ - mlkem/src/native/ppc64le/src/mlkem_intt_ppc_asm.S \ - mlkem/src/native/ppc64le/src/mlkem_ntt_ppc_asm.S \ - mlkem/src/native/ppc64le/src/mlkem_poly_tomont_ppc_asm.S \ - mlkem/src/native/ppc64le/src/mlkem_reduce_ppc_asm.S \ - test/abicheck/ppc64le/callstub_ppc64le.S \ - test/abicheck/ppc64le/selftest_ppc64le.S -ABICHECK_REQ_POWER8_VECTOR_OBJS := $(call MAKE_OBJS,$(ABICHECK_DIR),$(ABICHECK_REQ_POWER8_VECTOR_FILES)) -$(ABICHECK_REQ_POWER8_VECTOR_OBJS): CFLAGS += -mcpu=power8 -maltivec -mvsx diff --git a/test/abicheck/x86_64/abicheck_x86_64.mk b/test/abicheck/x86_64/abicheck_x86_64.mk deleted file mode 100644 index 638f4491d6..0000000000 --- a/test/abicheck/x86_64/abicheck_x86_64.mk +++ /dev/null @@ -1,43 +0,0 @@ -# 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. -# -# Edit the YAML 'ABI.Features:' list in dev//src/.S -# and re-run scripts/autogen instead. -# -# For each capability declared by a kernel's ABI.Features list, this -# file appends the capability's CFLAGS to that kernel's .S object -# under mlkem/src/. - -# Default each cap's file list to empty so the unconditional appends -# below are safe even when a cap has no kernels on this arch. -ABICHECK_REQ_AVX2_FILES := - -# AVX2: AVX2 -ABICHECK_REQ_AVX2_FILES := \ - mlkem/src/fips202/native/x86_64/src/keccak_f1600_x4_avx2_asm.S \ - mlkem/src/native/x86_64/src/mlkem_intt_avx2_asm.S \ - mlkem/src/native/x86_64/src/mlkem_ntt_avx2_asm.S \ - mlkem/src/native/x86_64/src/mlkem_nttfrombytes_avx2_asm.S \ - mlkem/src/native/x86_64/src/mlkem_ntttobytes_avx2_asm.S \ - mlkem/src/native/x86_64/src/mlkem_nttunpack_avx2_asm.S \ - mlkem/src/native/x86_64/src/mlkem_poly_compress_d10_avx2_asm.S \ - mlkem/src/native/x86_64/src/mlkem_poly_compress_d11_avx2_asm.S \ - mlkem/src/native/x86_64/src/mlkem_poly_compress_d4_avx2_asm.S \ - mlkem/src/native/x86_64/src/mlkem_poly_compress_d5_avx2_asm.S \ - mlkem/src/native/x86_64/src/mlkem_poly_decompress_d10_avx2_asm.S \ - mlkem/src/native/x86_64/src/mlkem_poly_decompress_d11_avx2_asm.S \ - mlkem/src/native/x86_64/src/mlkem_poly_decompress_d4_avx2_asm.S \ - mlkem/src/native/x86_64/src/mlkem_poly_decompress_d5_avx2_asm.S \ - mlkem/src/native/x86_64/src/mlkem_poly_mulcache_compute_avx2_asm.S \ - mlkem/src/native/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.S \ - mlkem/src/native/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.S \ - mlkem/src/native/x86_64/src/mlkem_polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.S \ - mlkem/src/native/x86_64/src/mlkem_reduce_avx2_asm.S \ - mlkem/src/native/x86_64/src/mlkem_rej_uniform_avx2_asm.S \ - mlkem/src/native/x86_64/src/mlkem_tomont_avx2_asm.S -ABICHECK_REQ_AVX2_OBJS := $(call MAKE_OBJS,$(ABICHECK_DIR),$(ABICHECK_REQ_AVX2_FILES)) -$(ABICHECK_REQ_AVX2_OBJS): CFLAGS += -mavx2 -mbmi2 diff --git a/test/mk/components.mk b/test/mk/components.mk index 3059580dc9..5c5363665c 100644 --- a/test/mk/components.mk +++ b/test/mk/components.mk @@ -198,20 +198,8 @@ else ABICHECK_ASM_SOURCES := endif -# Per-capability CFLAGS injection (e.g. -march=armv8.4-a+sha3 for SHA3, -# -mavx2 -mbmi2 for AVX2), generated by scripts/autogen from each kernel's -# YAML 'ABI.Features:' list. abicheck.mk includes the per-arch abicheck_.mk. -include test/abicheck/abicheck.mk - -# SHA3-not-assemblable case: some aarch64 compilers do not support -# `-march=armv8.4-a+sha3`, in which case we cannot even assemble the SHA3 -# Keccak kernels. -ifeq ($(ARCH),aarch64) -ifneq ($(MK_COMPILER_SUPPORTS_SHA3),1) -ABICHECK_ASM_SOURCES := $(filter-out $(ABICHECK_REQ_SHA3_FILES),$(ABICHECK_ASM_SOURCES)) -endif -endif - +# Compile the fixed source list with the platform's CPU flags. Each assembly +# source uses the same system capability guards as the C checks. ABICHECK_ALL_SOURCES = $(ABICHECK_SOURCES) $(ABICHECK_ASM_SOURCES) ABICHECK_OBJS = $(call MAKE_OBJS,$(ABICHECK_DIR),$(ABICHECK_ALL_SOURCES)) From 9ff7f2e679549fd40fb016f20f12db8d7c49ec58 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 20 Oct 2026 09:27:54 +0000 Subject: [PATCH 3/3] CI: Enable ABI checks in the Zig 0.17 jobs The Zig 0.17 jobs skip ABI checks because the checker previously added AArch64 `-march` flags which Zig parses as CPU names. The checker now uses the platform's CPU flags, so that restriction no longer applies. Remove `--no-abicheck` from the Extended compiler matrix and the Linux and macOS legacy matrices. Drop the comments about the old `-march` flags. Signed-off-by: Hanno Becker --- .github/workflows/ci.yml | 4 ---- .github/workflows/legacy-compilers.yml | 5 ----- 2 files changed, 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 378c04b110..614ba34e33 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -292,9 +292,6 @@ jobs: # (https://github.com/ziglang/zig/issues/23576). We therefore # only test the C backend and exclude the native examples. # - 0.17 fixes this, so we test the native backends as well. - # - The ABI check is not supported with zig: on AArch64 it passes - # -march=armv8-a+simd and -march=armv8.4-a+sha3, which zig rejects - # since it parses -march as a CPU name. - family: zig version: "0.10" shell: zig0_10 @@ -322,7 +319,6 @@ jobs: darwin: True opt: all examples: True - extra_args: "--no-abicheck" runs-on: ${{ matrix.target.runner }} steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 diff --git a/.github/workflows/legacy-compilers.yml b/.github/workflows/legacy-compilers.yml index 2bc0d68616..16c8fc2e64 100644 --- a/.github/workflows/legacy-compilers.yml +++ b/.github/workflows/legacy-compilers.yml @@ -194,9 +194,6 @@ jobs: # (https://github.com/ziglang/zig/issues/23576). We therefore # only test the C backend and exclude the native examples. # - 0.17 fixes this, so we test the native backends as well. - # - The ABI check is not supported with zig: on AArch64 it passes - # -march=armv8-a+simd and -march=armv8.4-a+sha3, which zig rejects - # since it parses -march as a CPU name. - family: zig version: "0.10" shell: zig0_10 @@ -244,7 +241,6 @@ jobs: shell: zig0_17 opt: all examples: True - extra_args: "--no-abicheck" runs-on: ${{ matrix.target.runner }} steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -435,7 +431,6 @@ jobs: shell: zig0_17 opt: all examples: True - extra_args: "--no-abicheck" runs-on: macos-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1