> >Fix port group mask generation in altivec, vec_any_eq returns >0 or 1 while port_groupx4 expects comparison mask result. > >Fixes: 2193b7467f7a ("examples/l3fwd: optimize packet processing on powerpc") >Cc: stable@dpdk.org > >Signed-off-by: Pavan Nikhilesh Acked-by: Shijith Thotton >--- > v5 Changes: > - Fix compilation errors. > > v4 Changes: > - Fix missing `rte_free`. > > v3 Changes: > - PPC optimize port mask generation. > - Fix aarch32 compilation. > > v2 Changes: > - Fix PPC, RISC-V, aarch32 compilation. > > examples/common/altivec/port_group.h | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > >diff --git a/examples/common/altivec/port_group.h >b/examples/common/altivec/port_group.h >index 5e209b02fa..1c05bc025a 100644 >--- a/examples/common/altivec/port_group.h >+++ b/examples/common/altivec/port_group.h >@@ -26,12 +26,17 @@ port_groupx4(uint16_t pn[FWDSTEP + 1], uint16_t *lp, > uint16_t u16[FWDSTEP + 1]; > uint64_t u64; > } *pnum = (void *)pn; >- >+ __vector unsigned long long result; >+ const __vector unsigned int perm_mask = {0x00204060, 0x80808080, >+ 0x80808080, 0x80808080}; > int32_t v; > >- v = vec_any_eq(dp1, dp2); >- >+ dp1 = (__vector unsigned short)vec_cmpeq(dp1, dp2); >+ dp1 = vec_mergeh(dp1, dp1); >+ result = (__vector unsigned long long)vec_vbpermq( >+ (__vector unsigned char)dp1, (__vector unsigned >char)perm_mask); > >+ v = result[1]; > /* update last port counter. */ > lp[0] += gptbl[v].lpv; > >-- >2.25.1