Skip to content

Commit e3d5823

Browse files
committed
wip: wip
Signed-off-by: willieyz <[email protected]>
1 parent d52cc2a commit e3d5823

File tree

6 files changed

+36
-17
lines changed

6 files changed

+36
-17
lines changed

dev/aarch64_clean/meta.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,11 @@ static MLD_INLINE int mld_ntt_native(int32_t data[MLDSA_N])
4242
return MLD_NATIVE_FUNC_SUCCESS;
4343
}
4444

45-
static MLD_INLINE void mld_intt_native(int32_t data[MLDSA_N])
45+
static MLD_INLINE int mld_intt_native(int32_t data[MLDSA_N])
4646
{
4747
mld_intt_asm(data, mld_aarch64_intt_zetas_layer78,
4848
mld_aarch64_intt_zetas_layer123456);
49+
return MLD_NATIVE_FUNC_SUCCESS;
4950
}
5051

5152
static MLD_INLINE int mld_rej_uniform_native(int32_t *r, unsigned len,

dev/x86_64/meta.h

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@
3838

3939
static MLD_INLINE void mld_poly_permute_bitrev_to_custom(int32_t data[MLDSA_N])
4040
{
41-
mld_nttunpack_avx2((__m256i *)(data));
41+
if (mld_sys_check_capability(MLD_SYS_CAP_AVX2))
42+
{
43+
mld_nttunpack_avx2((__m256i *)(data));
44+
}
4245
}
4346

4447
static MLD_INLINE int mld_ntt_native(int32_t data[MLDSA_N])
@@ -51,9 +54,14 @@ static MLD_INLINE int mld_ntt_native(int32_t data[MLDSA_N])
5154
mld_ntt_avx2((__m256i *)data, mld_qdata.vec);
5255
return MLD_NATIVE_FUNC_SUCCESS;
5356
}
54-
static MLD_INLINE void mld_intt_native(int32_t data[MLDSA_N])
57+
static MLD_INLINE int mld_intt_native(int32_t data[MLDSA_N])
5558
{
59+
if (!mld_sys_check_capability(MLD_SYS_CAP_AVX2))
60+
{
61+
return MLD_NATIVE_FUNC_FALLBACK;
62+
}
5663
mld_invntt_avx2((__m256i *)data, mld_qdata.vec);
64+
return MLD_NATIVE_FUNC_SUCCESS;
5765
}
5866

5967
static MLD_INLINE int mld_rej_uniform_native(int32_t *r, unsigned len,

mldsa/src/native/aarch64/meta.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,11 @@ static MLD_INLINE int mld_ntt_native(int32_t data[MLDSA_N])
4242
return MLD_NATIVE_FUNC_SUCCESS;
4343
}
4444

45-
static MLD_INLINE void mld_intt_native(int32_t data[MLDSA_N])
45+
static MLD_INLINE int mld_intt_native(int32_t data[MLDSA_N])
4646
{
4747
mld_intt_asm(data, mld_aarch64_intt_zetas_layer78,
4848
mld_aarch64_intt_zetas_layer123456);
49+
return MLD_NATIVE_FUNC_SUCCESS;
4950
}
5051

5152
static MLD_INLINE int mld_rej_uniform_native(int32_t *r, unsigned len,

mldsa/src/native/api.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ static MLD_INLINE void mld_poly_permute_bitrev_to_custom(int32_t p[MLDSA_N]);
104104
*
105105
* Arguments: - uint32_t p[MLDSA_N]: pointer to in/output polynomial
106106
**************************************************/
107-
static MLD_INLINE void mld_intt_native(int32_t p[MLDSA_N]);
107+
static MLD_INLINE int mld_intt_native(int32_t p[MLDSA_N]);
108108
#endif /* MLD_USE_NATIVE_INTT */
109109

110110
#if defined(MLD_USE_NATIVE_REJ_UNIFORM)

mldsa/src/native/x86_64/meta.h

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@
3838

3939
static MLD_INLINE void mld_poly_permute_bitrev_to_custom(int32_t data[MLDSA_N])
4040
{
41-
mld_nttunpack_avx2((__m256i *)(data));
41+
if (mld_sys_check_capability(MLD_SYS_CAP_AVX2))
42+
{
43+
mld_nttunpack_avx2((__m256i *)(data));
44+
}
4245
}
4346

4447
static MLD_INLINE int mld_ntt_native(int32_t data[MLDSA_N])
@@ -51,9 +54,14 @@ static MLD_INLINE int mld_ntt_native(int32_t data[MLDSA_N])
5154
mld_ntt_avx2((__m256i *)data, mld_qdata.vec);
5255
return MLD_NATIVE_FUNC_SUCCESS;
5356
}
54-
static MLD_INLINE void mld_intt_native(int32_t data[MLDSA_N])
57+
static MLD_INLINE int mld_intt_native(int32_t data[MLDSA_N])
5558
{
59+
if (!mld_sys_check_capability(MLD_SYS_CAP_AVX2))
60+
{
61+
return MLD_NATIVE_FUNC_FALLBACK;
62+
}
5663
mld_invntt_avx2((__m256i *)data, mld_qdata.vec);
64+
return MLD_NATIVE_FUNC_SUCCESS;
5765
}
5866

5967
static MLD_INLINE int mld_rej_uniform_native(int32_t *r, unsigned len,

mldsa/src/poly.c

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -161,23 +161,24 @@ void mld_poly_ntt(mld_poly *a)
161161
mld_assert_abs_bound(a->coeffs, MLDSA_N, MLD_NTT_BOUND);
162162
}
163163

164-
#if !defined(MLD_USE_NATIVE_INTT)
165164
MLD_INTERNAL_API
166165
void mld_poly_invntt_tomont(mld_poly *a)
167166
{
168167
mld_assert_abs_bound(a->coeffs, MLDSA_N, MLDSA_Q);
168+
#if defined(MLD_USE_NATIVE_INTT)
169+
{
170+
int ret;
171+
ret = mld_intt_native(a->coeffs);
172+
if (ret == MLD_NATIVE_FUNC_SUCCESS)
173+
{
174+
mld_assert_abs_bound(a->coeffs, MLDSA_N, MLD_INTT_BOUND);
175+
return;
176+
}
177+
}
178+
#endif /* MLD_USE_NATIVE_INTT */
169179
mld_invntt_tomont(a->coeffs);
170180
mld_assert_abs_bound(a->coeffs, MLDSA_N, MLD_INTT_BOUND);
171181
}
172-
#else /* !MLD_USE_NATIVE_INTT */
173-
MLD_INTERNAL_API
174-
void mld_poly_invntt_tomont(mld_poly *a)
175-
{
176-
mld_assert_abs_bound(a->coeffs, MLDSA_N, MLDSA_Q);
177-
mld_intt_native(a->coeffs);
178-
mld_assert_abs_bound(a->coeffs, MLDSA_N, MLD_INTT_BOUND);
179-
}
180-
#endif /* MLD_USE_NATIVE_INTT */
181182

182183
MLD_INTERNAL_API
183184
void mld_poly_pointwise_montgomery(mld_poly *c, const mld_poly *a,

0 commit comments

Comments
 (0)