On Sat, Oct 07, 2023 at 03:36:34PM +0800, Jieqiang Wang wrote: > __mm_cmpeq_epi16 returns 0xFFFF if the corresponding 16-bit elements are > equal. In original SSE2 implementation for function compare_signatures, > it utilizes _mm_movemask_epi8 to create mask from the MSB of each 8-bit > element, while we should only care about the MSB of lower 8-bit in each > 16-bit element. > For example, if the comparison result is all equal, SSE2 path returns > 0xFFFF while NEON and default scalar path return 0x5555. > Although this bug is not causing any negative effects since the caller > function solely examines the trailing zeros of each match mask, we > recommend this fix to ensure consistency with NEON and default scalar > code behaviors. > > Fixes: c7d93df552c2 ("hash: use partial-key hashing") > Cc: sta...@dpdk.org > > v2: > 1. Utilize scalar mask instead of vector mask to save extra loads (Bruce) > > v3: > 1. Fix coding style warnings > > Signed-off-by: Feifei Wang <feifei.wa...@arm.com> > Signed-off-by: Jieqiang Wang <jieqiang.w...@arm.com> > Reviewed-by: Ruifeng Wang <ruifeng.w...@arm.com>
Acked-by: Bruce Richardson <bruce.richard...@intel.com>