Skip to main content

add_mod_256

Function add_mod_256 

Source
pub unsafe fn add_mod_256(
    a: __m256i,
    b: __m256i,
    mod_vec: __m256i,
    sign: __m256i,
) -> __m256i
Examples found in repository?
crates/competitive/src/num/mint/montgomery.rs (line 278)
270    pub unsafe fn montgomery_mul_256_canon(
271        a: __m256i,
272        b: __m256i,
273        r_vec: __m256i,
274        mod_vec: __m256i,
275        sign: __m256i,
276    ) -> __m256i {
277        let x = montgomery_mul_256(a, b, r_vec, mod_vec);
278        add_mod_256(x, _mm256_setzero_si256(), mod_vec, sign)
279    }
More examples
Hide additional examples
crates/competitive/src/math/number_theoretic_transform.rs (line 355)
342    unsafe fn add_vec_avx2<M>(
343        a: __m256i,
344        b: __m256i,
345        mod_vec: __m256i,
346        mod2_vec: __m256i,
347        sign: __m256i,
348    ) -> __m256i
349    where
350        M: Montgomery32NttModulus,
351    {
352        if M::MOD < LAZY_THRESHOLD {
353            simd32::montgomery_add_256(a, b, mod2_vec, sign)
354        } else {
355            simd32::add_mod_256(a, b, mod_vec, sign)
356        }
357    }