diff --git a/src/avx2/verify.rs b/src/avx2/verify.rs index af87fa9..0005484 100644 --- a/src/avx2/verify.rs +++ b/src/avx2/verify.rs @@ -23,8 +23,9 @@ pub fn verify(a: &[u8], b: &[u8], mut len: usize) -> u8 { pub fn cmov(r: &mut [u8], x: &[u8], mut len: usize, mut b: u8) { let (mut xvec, mut rvec); + b = b.wrapping_neg(); unsafe { - let bvec = _mm256_set1_epi64x(b as i64); + let bvec = _mm256_set1_epi8(b as i8); for i in 0..(len / 32) { rvec = _mm256_loadu_si256(r[32 * i..].as_ptr() as *const __m256i); xvec = _mm256_loadu_si256(x[32 * i..].as_ptr() as *const __m256i); @@ -34,7 +35,6 @@ pub fn cmov(r: &mut [u8], x: &[u8], mut len: usize, mut b: u8) { } let idx = 32 * (len / 32); len -= idx; - b = b.wrapping_neg(); for i in 0..len { r[idx + i] ^= b & (x[idx + i] ^ r[idx + i]); }