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.rs (
line 364)
358 pub unsafe fn montgomery_mul_512_canon(
359 a: __m512i,
360 b: __m512i,
361 r_vec: __m512i,
362 mod_vec: __m512i,
363 ) -> __m512i {
364 let x = montgomery_mul_512(a, b, r_vec, mod_vec);
365 add_mod_512(x, _mm512_setzero_si512(), mod_vec)
366 }
More examples
Hide additional examples
crates/competitive/src/math/number_theoretic_transform.rs (
line 430)
425 unsafe fn mul_vec_avx512<M>(a: __m512i, b: __m512i, r_vec: __m512i, mod_vec: __m512i) -> __m512i
426 where
427 M: Montgomery32NttModulus,
428 {
429 if M::MOD < LAZY_THRESHOLD {
430 simd32::montgomery_mul_512(a, b, r_vec, mod_vec)
431 } else {
432 simd32::montgomery_mul_512_canon(a, b, r_vec, mod_vec)
433 }
434 }