Skip to main content

montgomery_mul_256

Function montgomery_mul_256 

Source
pub unsafe fn montgomery_mul_256(
    a: __m256i,
    b: __m256i,
    r_vec: __m256i,
    mod_vec: __m256i,
) -> __m256i
Examples found in repository?
crates/competitive/src/num/mint/montgomery.rs (line 277)
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 387)
376    unsafe fn mul_vec_avx2<M>(
377        a: __m256i,
378        b: __m256i,
379        r_vec: __m256i,
380        mod_vec: __m256i,
381        sign: __m256i,
382    ) -> __m256i
383    where
384        M: Montgomery32NttModulus,
385    {
386        if M::MOD < LAZY_THRESHOLD {
387            simd32::montgomery_mul_256(a, b, r_vec, mod_vec)
388        } else {
389            simd32::montgomery_mul_256_canon(a, b, r_vec, mod_vec, sign)
390        }
391    }