fn mul()

in src/backend/vector/avx2/field.rs [738:763]


    fn mul(self, scalars: (u32, u32, u32, u32)) -> FieldElement2625x4 {
        unsafe {
            use core::arch::x86_64::_mm256_mul_epu32;

            let consts = u32x8::new(scalars.0, 0, scalars.1, 0, scalars.2, 0, scalars.3, 0);

            let (b0, b1) = unpack_pair(self.0[0]);
            let (b2, b3) = unpack_pair(self.0[1]);
            let (b4, b5) = unpack_pair(self.0[2]);
            let (b6, b7) = unpack_pair(self.0[3]);
            let (b8, b9) = unpack_pair(self.0[4]);

            FieldElement2625x4::reduce64([
                _mm256_mul_epu32(b0.into_bits(), consts.into_bits()).into_bits(),
                _mm256_mul_epu32(b1.into_bits(), consts.into_bits()).into_bits(),
                _mm256_mul_epu32(b2.into_bits(), consts.into_bits()).into_bits(),
                _mm256_mul_epu32(b3.into_bits(), consts.into_bits()).into_bits(),
                _mm256_mul_epu32(b4.into_bits(), consts.into_bits()).into_bits(),
                _mm256_mul_epu32(b5.into_bits(), consts.into_bits()).into_bits(),
                _mm256_mul_epu32(b6.into_bits(), consts.into_bits()).into_bits(),
                _mm256_mul_epu32(b7.into_bits(), consts.into_bits()).into_bits(),
                _mm256_mul_epu32(b8.into_bits(), consts.into_bits()).into_bits(),
                _mm256_mul_epu32(b9.into_bits(), consts.into_bits()).into_bits(),
            ])
        }
    }