@@ -291,42 +291,57 @@ MLD_INTERNAL_API
291291void mld_polyvecl_pointwise_acc_montgomery (mld_poly * w , const mld_polyvecl * u ,
292292 const mld_polyvecl * v )
293293{
294- #if defined(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L4 ) && \
295- MLD_CONFIG_PARAMETER_SET == 44
296- /* TODO: proof */
294+ unsigned int i , j ;
297295 mld_assert_bound_2d (u -> vec , MLDSA_L , MLDSA_N , 0 , MLDSA_Q );
298296 mld_assert_abs_bound_2d (v -> vec , MLDSA_L , MLDSA_N , MLD_NTT_BOUND );
299- mld_polyvecl_pointwise_acc_montgomery_l4_native (
300- w -> coeffs , (const int32_t (* )[MLDSA_N ])u -> vec ,
301- (const int32_t (* )[MLDSA_N ])v -> vec );
302- mld_assert_abs_bound (w -> coeffs , MLDSA_N , MLDSA_Q );
297+ #if defined(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L4 ) && \
298+ MLD_CONFIG_PARAMETER_SET == 44
299+ {
300+ /* TODO: proof */
301+ int ret ;
302+ ret = mld_polyvecl_pointwise_acc_montgomery_l4_native (
303+ w -> coeffs , (const int32_t (* )[MLDSA_N ])u -> vec ,
304+ (const int32_t (* )[MLDSA_N ])v -> vec );
305+ if (ret == MLD_NATIVE_FUNC_SUCCESS )
306+ {
307+ mld_assert_abs_bound (w -> coeffs , MLDSA_N , MLDSA_Q );
308+ return ;
309+ }
310+ }
303311#elif defined(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L5 ) && \
304312 MLD_CONFIG_PARAMETER_SET == 65
305- /* TODO: proof */
306- mld_assert_bound_2d (u -> vec , MLDSA_L , MLDSA_N , 0 , MLDSA_Q );
307- mld_assert_abs_bound_2d (v -> vec , MLDSA_L , MLDSA_N , MLD_NTT_BOUND );
308- mld_polyvecl_pointwise_acc_montgomery_l5_native (
309- w -> coeffs , (const int32_t (* )[MLDSA_N ])u -> vec ,
310- (const int32_t (* )[MLDSA_N ])v -> vec );
311- mld_assert_abs_bound (w -> coeffs , MLDSA_N , MLDSA_Q );
313+ {
314+ /* TODO: proof */
315+ int ret ;
316+ ret = mld_polyvecl_pointwise_acc_montgomery_l5_native (
317+ w -> coeffs , (const int32_t (* )[MLDSA_N ])u -> vec ,
318+ (const int32_t (* )[MLDSA_N ])v -> vec );
319+ if (ret == MLD_NATIVE_FUNC_SUCCESS )
320+ {
321+ mld_assert_abs_bound (w -> coeffs , MLDSA_N , MLDSA_Q );
322+ return ;
323+ }
324+ }
312325#elif defined(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L7 ) && \
313326 MLD_CONFIG_PARAMETER_SET == 87
314- /* TODO: proof */
315- mld_assert_bound_2d (u -> vec , MLDSA_L , MLDSA_N , 0 , MLDSA_Q );
316- mld_assert_abs_bound_2d (v -> vec , MLDSA_L , MLDSA_N , MLD_NTT_BOUND );
317- mld_polyvecl_pointwise_acc_montgomery_l7_native (
318- w -> coeffs , (const int32_t (* )[MLDSA_N ])u -> vec ,
319- (const int32_t (* )[MLDSA_N ])v -> vec );
320- mld_assert_abs_bound (w -> coeffs , MLDSA_N , MLDSA_Q );
321- #else /* !(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L4 && \
327+ {
328+ /* TODO: proof */
329+ int ret ;
330+ ret = mld_polyvecl_pointwise_acc_montgomery_l7_native (
331+ w -> coeffs , (const int32_t (* )[MLDSA_N ])u -> vec ,
332+ (const int32_t (* )[MLDSA_N ])v -> vec );
333+ if (ret == MLD_NATIVE_FUNC_SUCCESS )
334+ {
335+ mld_assert_abs_bound (w -> coeffs , MLDSA_N , MLDSA_Q );
336+ return ;
337+ }
338+ }
339+ #endif /* !(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L4 && \
322340 MLD_CONFIG_PARAMETER_SET == 44) && \
323341 !(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L5 && \
324342 MLD_CONFIG_PARAMETER_SET == 65) && \
325343 MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L7 && \
326344 MLD_CONFIG_PARAMETER_SET == 87 */
327- unsigned int i , j ;
328- mld_assert_bound_2d (u -> vec , MLDSA_L , MLDSA_N , 0 , MLDSA_Q );
329- mld_assert_abs_bound_2d (v -> vec , MLDSA_L , MLDSA_N , MLD_NTT_BOUND );
330345 /* The first input is bounded by [0, Q-1] inclusive
331346 * The second input is bounded by [-9Q+1, 9Q-1] inclusive . Hence, we can
332347 * safely accumulate in 64-bits without intermediate reductions as
@@ -361,12 +376,6 @@ void mld_polyvecl_pointwise_acc_montgomery(mld_poly *w, const mld_polyvecl *u,
361376 }
362377
363378 mld_assert_abs_bound (w -> coeffs , MLDSA_N , MLDSA_Q );
364- #endif /* !(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L4 && \
365- MLD_CONFIG_PARAMETER_SET == 44) && \
366- !(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L5 && \
367- MLD_CONFIG_PARAMETER_SET == 65) && \
368- !(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L7 && \
369- MLD_CONFIG_PARAMETER_SET == 87) */
370379}
371380
372381MLD_INTERNAL_API
0 commit comments