Skip to main content

montgomery_mul_512

Function montgomery_mul_512 

Source
pub unsafe fn montgomery_mul_512(
    a: __m512i,
    b: __m512i,
    r_vec: __m512i,
    mod_vec: __m512i,
) -> __m512i
Examples found in repository?
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}