lpm: fix scalar version header for C++
rte_xmm_t is a union type which wraps around xmm_t and maps its contents to scalar structures. Since C++ has stricter type conversion rules than C, the rte_xmm_t::x has to be used instead of C-casting. The generated assembly is identical to the code without the fix (checked both on x86 and RISC-V). Fixes: 406937f89ffd ("lpm: add scalar version of lookupx4") Signed-off-by: Stanislaw Kardach <kda@semihalf.com> Reviewed-by: David Marchand <david.marchand@redhat.com>
This commit is contained in:
parent
93cba71bdc
commit
b13fb77583
@ -17,16 +17,17 @@ static inline void
|
||||
rte_lpm_lookupx4(const struct rte_lpm *lpm, xmm_t ip, uint32_t hop[4],
|
||||
uint32_t defv)
|
||||
{
|
||||
rte_xmm_t xip = { .x = ip };
|
||||
uint32_t nh;
|
||||
int ret;
|
||||
|
||||
ret = rte_lpm_lookup(lpm, ((rte_xmm_t)ip).u32[0], &nh);
|
||||
ret = rte_lpm_lookup(lpm, xip.u32[0], &nh);
|
||||
hop[0] = (ret == 0) ? nh : defv;
|
||||
ret = rte_lpm_lookup(lpm, ((rte_xmm_t)ip).u32[1], &nh);
|
||||
ret = rte_lpm_lookup(lpm, xip.u32[1], &nh);
|
||||
hop[1] = (ret == 0) ? nh : defv;
|
||||
ret = rte_lpm_lookup(lpm, ((rte_xmm_t)ip).u32[2], &nh);
|
||||
ret = rte_lpm_lookup(lpm, xip.u32[2], &nh);
|
||||
hop[2] = (ret == 0) ? nh : defv;
|
||||
ret = rte_lpm_lookup(lpm, ((rte_xmm_t)ip).u32[3], &nh);
|
||||
ret = rte_lpm_lookup(lpm, xip.u32[3], &nh);
|
||||
hop[3] = (ret == 0) ? nh : defv;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user