@@ -328,42 +328,57 @@ MLD_INTERNAL_API
328328void mld_polyvecl_pointwise_acc_montgomery (mld_poly * w , const mld_polyvecl * u ,
329329 const mld_polyvecl * v )
330330{
331- #if defined(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L4 ) && \
332- MLD_CONFIG_PARAMETER_SET == 44
333- /* TODO: proof */
331+ unsigned int i , j ;
334332 mld_assert_bound_2d (u -> vec , MLDSA_L , MLDSA_N , 0 , MLDSA_Q );
335333 mld_assert_abs_bound_2d (v -> vec , MLDSA_L , MLDSA_N , MLD_NTT_BOUND );
336- mld_polyvecl_pointwise_acc_montgomery_l4_native (
337- w -> coeffs , (const int32_t (* )[MLDSA_N ])u -> vec ,
338- (const int32_t (* )[MLDSA_N ])v -> vec );
339- mld_assert_abs_bound (w -> coeffs , MLDSA_N , MLDSA_Q );
334+ #if defined(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L4 ) && \
335+ MLD_CONFIG_PARAMETER_SET == 44
336+ {
337+ /* TODO: proof */
338+ int ret ;
339+ ret = mld_polyvecl_pointwise_acc_montgomery_l4_native (
340+ w -> coeffs , (const int32_t (* )[MLDSA_N ])u -> vec ,
341+ (const int32_t (* )[MLDSA_N ])v -> vec );
342+ if (ret == MLD_NATIVE_FUNC_SUCCESS )
343+ {
344+ mld_assert_abs_bound (w -> coeffs , MLDSA_N , MLDSA_Q );
345+ return ;
346+ }
347+ }
340348#elif defined(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L5 ) && \
341349 MLD_CONFIG_PARAMETER_SET == 65
342- /* TODO: proof */
343- mld_assert_bound_2d (u -> vec , MLDSA_L , MLDSA_N , 0 , MLDSA_Q );
344- mld_assert_abs_bound_2d (v -> vec , MLDSA_L , MLDSA_N , MLD_NTT_BOUND );
345- mld_polyvecl_pointwise_acc_montgomery_l5_native (
346- w -> coeffs , (const int32_t (* )[MLDSA_N ])u -> vec ,
347- (const int32_t (* )[MLDSA_N ])v -> vec );
348- mld_assert_abs_bound (w -> coeffs , MLDSA_N , MLDSA_Q );
350+ {
351+ /* TODO: proof */
352+ int ret ;
353+ ret = mld_polyvecl_pointwise_acc_montgomery_l5_native (
354+ w -> coeffs , (const int32_t (* )[MLDSA_N ])u -> vec ,
355+ (const int32_t (* )[MLDSA_N ])v -> vec );
356+ if (ret == MLD_NATIVE_FUNC_SUCCESS )
357+ {
358+ mld_assert_abs_bound (w -> coeffs , MLDSA_N , MLDSA_Q );
359+ return ;
360+ }
361+ }
349362#elif defined(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L7 ) && \
350363 MLD_CONFIG_PARAMETER_SET == 87
351- /* TODO: proof */
352- mld_assert_bound_2d (u -> vec , MLDSA_L , MLDSA_N , 0 , MLDSA_Q );
353- mld_assert_abs_bound_2d (v -> vec , MLDSA_L , MLDSA_N , MLD_NTT_BOUND );
354- mld_polyvecl_pointwise_acc_montgomery_l7_native (
355- w -> coeffs , (const int32_t (* )[MLDSA_N ])u -> vec ,
356- (const int32_t (* )[MLDSA_N ])v -> vec );
357- mld_assert_abs_bound (w -> coeffs , MLDSA_N , MLDSA_Q );
358- #else /* !(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L4 && \
364+ {
365+ /* TODO: proof */
366+ int ret ;
367+ ret = mld_polyvecl_pointwise_acc_montgomery_l7_native (
368+ w -> coeffs , (const int32_t (* )[MLDSA_N ])u -> vec ,
369+ (const int32_t (* )[MLDSA_N ])v -> vec );
370+ if (ret == MLD_NATIVE_FUNC_SUCCESS )
371+ {
372+ mld_assert_abs_bound (w -> coeffs , MLDSA_N , MLDSA_Q );
373+ return ;
374+ }
375+ }
376+ #endif /* !(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L4 && \
359377 MLD_CONFIG_PARAMETER_SET == 44) && \
360378 !(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L5 && \
361379 MLD_CONFIG_PARAMETER_SET == 65) && \
362380 MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L7 && \
363381 MLD_CONFIG_PARAMETER_SET == 87 */
364- unsigned int i , j ;
365- mld_assert_bound_2d (u -> vec , MLDSA_L , MLDSA_N , 0 , MLDSA_Q );
366- mld_assert_abs_bound_2d (v -> vec , MLDSA_L , MLDSA_N , MLD_NTT_BOUND );
367382 /* The first input is bounded by [0, Q-1] inclusive
368383 * The second input is bounded by [-9Q+1, 9Q-1] inclusive . Hence, we can
369384 * safely accumulate in 64-bits without intermediate reductions as
@@ -398,12 +413,6 @@ void mld_polyvecl_pointwise_acc_montgomery(mld_poly *w, const mld_polyvecl *u,
398413 }
399414
400415 mld_assert_abs_bound (w -> coeffs , MLDSA_N , MLDSA_Q );
401- #endif /* !(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L4 && \
402- MLD_CONFIG_PARAMETER_SET == 44) && \
403- !(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L5 && \
404- MLD_CONFIG_PARAMETER_SET == 65) && \
405- !(MLD_USE_NATIVE_POLYVECL_POINTWISE_ACC_MONTGOMERY_L7 && \
406- MLD_CONFIG_PARAMETER_SET == 87) */
407416}
408417
409418MLD_INTERNAL_API
0 commit comments