Function montgomery_mul_512
Source pub unsafe fn montgomery_mul_512(
a: __m512i,
b: __m512i,
r_vec: __m512i,
mod_vec: __m512i,
) -> __m512i
crates/competitive/src/num/mint/montgomery_simd.rs (
line 122)
116pub unsafe fn montgomery_mul_512_canon(
117 a: __m512i,
118 b: __m512i,
119 r_vec: __m512i,
120 mod_vec: __m512i,
121) -> __m512i {
122 let x = montgomery_mul_512(a, b, r_vec, mod_vec);
123 _mm512_min_epu32(x, _mm512_sub_epi32(x, mod_vec))
124}
More examples
Hide additional examples
crates/competitive/src/math/number_theoretic_transform/ntt_simd/ntt_avx512.rs (
line 49)
44unsafe fn mul_vec_avx512<M>(a: __m512i, b: __m512i, r_vec: __m512i, mod_vec: __m512i) -> __m512i
45where
46 M: Montgomery32NttModulus,
47{
48 if M::MOD < LAZY_THRESHOLD {
49 montgomery_simd::montgomery_mul_512(a, b, r_vec, mod_vec)
50 } else {
51 montgomery_simd::montgomery_mul_512_canon(a, b, r_vec, mod_vec)
52 }
53}