X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Facl%2Facl_run_avx512_common.h;h=578eaa1d0cfce1c2705fe4d5acff4fa47b9ab7bd;hb=28dde5da503ed09f10cdfb295e390b114df7330a;hp=fafaf591e88e52f6ec3bd970a6882ae9d2c4d048;hpb=99a2dd955fba6e4cc23b77d590a033650ced9c45;p=dpdk.git diff --git a/lib/acl/acl_run_avx512_common.h b/lib/acl/acl_run_avx512_common.h index fafaf591e8..578eaa1d0c 100644 --- a/lib/acl/acl_run_avx512_common.h +++ b/lib/acl/acl_run_avx512_common.h @@ -303,6 +303,28 @@ _F_(match_check_process)(struct acl_flow_avx512 *flow, uint32_t fm[2], } } +static inline void +_F_(reset_flow_vars)(_T_simd di[2], _T_simd idx[2], _T_simd pdata[4], + _T_simd tr_lo[2], _T_simd tr_hi[2]) +{ + di[0] = _M_SI_(setzero)(); + di[1] = _M_SI_(setzero)(); + + idx[0] = _M_SI_(setzero)(); + idx[1] = _M_SI_(setzero)(); + + pdata[0] = _M_SI_(setzero)(); + pdata[1] = _M_SI_(setzero)(); + pdata[2] = _M_SI_(setzero)(); + pdata[3] = _M_SI_(setzero)(); + + tr_lo[0] = _M_SI_(setzero)(); + tr_lo[1] = _M_SI_(setzero)(); + + tr_hi[0] = _M_SI_(setzero)(); + tr_hi[1] = _M_SI_(setzero)(); +} + /* * Perform search for up to (2 * _N_) flows in parallel. * Use two sets of metadata, each serves _N_ flows max. @@ -313,6 +335,8 @@ _F_(search_trie)(struct acl_flow_avx512 *flow) uint32_t fm[2]; _T_simd di[2], idx[2], in[2], pdata[4], tr_lo[2], tr_hi[2]; + _F_(reset_flow_vars)(di, idx, pdata, tr_lo, tr_hi); + /* first 1B load */ _F_(start_flow)(flow, _SIMD_MASK_BIT_, _SIMD_MASK_MAX_, &pdata[0], &idx[0], &di[0]); @@ -369,8 +393,8 @@ static inline _T_simd _F_(resolve_match_idx)(_T_simd mi) { RTE_BUILD_BUG_ON(sizeof(struct rte_acl_match_results) != - 1 << (match_log + 2)); - return _M_I_(slli_epi32)(mi, match_log); + 1 << (ACL_MATCH_LOG + 2)); + return _M_I_(slli_epi32)(mi, ACL_MATCH_LOG); } /*