7#ifndef _RTE_LPM_SCALAR_H_
8#define _RTE_LPM_SCALAR_H_
17__rte_lpm_lookupx4_hop(
const struct rte_lpm *lpm, uint32_t tbl_entry,
18 uint32_t ip, uint32_t defv)
20 if (
unlikely((tbl_entry & RTE_LPM_VALID_EXT_ENTRY_BITMASK) ==
21 RTE_LPM_VALID_EXT_ENTRY_BITMASK)) {
22 const uint32_t *tbl8 = (
const uint32_t *)lpm->tbl8;
24 tbl_entry = tbl8[(uint8_t)ip + (tbl_entry & 0x00FFFFFF) *
25 RTE_LPM_TBL8_GROUP_NUM_ENTRIES];
29 (tbl_entry & 0x00FFFFFF) : defv;
36 rte_xmm_t xip = { .x = ip };
37 const uint32_t *tbl24 = (
const uint32_t *)lpm->tbl24;
38 uint32_t tbl0, tbl1, tbl2, tbl3;
41 tbl0 = tbl24[xip.u32[0] >> 8];
42 tbl1 = tbl24[xip.u32[1] >> 8];
43 tbl2 = tbl24[xip.u32[2] >> 8];
44 tbl3 = tbl24[xip.u32[3] >> 8];
46 hop[0] = __rte_lpm_lookupx4_hop(lpm, tbl0, xip.u32[0], defv);
47 hop[1] = __rte_lpm_lookupx4_hop(lpm, tbl1, xip.u32[1], defv);
48 hop[2] = __rte_lpm_lookupx4_hop(lpm, tbl2, xip.u32[2], defv);
49 hop[3] = __rte_lpm_lookupx4_hop(lpm, tbl3, xip.u32[3], defv);
static void rte_lpm_lookupx4(const struct rte_lpm *lpm, xmm_t ip, uint32_t hop[4], uint32_t defv)
#define RTE_LPM_LOOKUP_SUCCESS