From d3de2b551875c18ab2569e702d41b779072a41d2 Mon Sep 17 00:00:00 2001 From: Jakub Nabaglo Date: Fri, 17 Sep 2021 10:04:05 -0700 Subject: [PATCH] Fix alignment assumptions in AVX2 Poseidon --- src/hash/poseidon_avx2.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/hash/poseidon_avx2.rs b/src/hash/poseidon_avx2.rs index cc4a3d1d..c2ab1ac4 100644 --- a/src/hash/poseidon_avx2.rs +++ b/src/hash/poseidon_avx2.rs @@ -214,10 +214,10 @@ pub unsafe fn crandall_poseidon_const_avx2( round_constants: [u64; 4 * PACKED_WIDTH], ) { let packed_state = PackedCrandallAVX2::pack_slice_mut(state); - let packed_round_constants = - std::slice::from_raw_parts((&round_constants).as_ptr().cast::<__m256i>(), PACKED_WIDTH); for i in 0..PACKED_WIDTH { - packed_state[i] = packed_state[i].add_canonical_u64(packed_round_constants[i]); + let constants_ptr = (&round_constants[4 * i..4 * i + 4]).as_ptr(); + let packed_constants = _mm256_loadu_si256(constants_ptr.cast::<__m256i>()); + packed_state[i] = packed_state[i].add_canonical_u64(packed_constants); } }