pipeline: fix endianness conversions
authorCristian Dumitrescu <cristian.dumitrescu@intel.com>
Sat, 3 Apr 2021 00:17:09 +0000 (01:17 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Tue, 20 Apr 2021 00:34:16 +0000 (02:34 +0200)
commit48ad58964cc3e42f3e79b5f19b8deee59e240572
treecb49e3b1b0cce9fab3fde91167084aa6ba16cdc0
parente8e22eb0ddb6736745ad80e337848860107c4aee
pipeline: fix endianness conversions

The SWX pipeline instructions work with operands of different types:
header fields (h.header.field), packet meta-data (m.field), extern
object mailbox field (e.obj.field), extern function (f.field), action
data read from table entries (t.field), or immediate values; hence the
HMEFTI acronym. The H operands are stored in network byte order (NBO),
while the MEFT operands are stored in host byte order (HBO), hence the
need to operate endianness conversions.

Some of the endianness conversion macros were not working correctly
for some cases such as operands of different sizes, and they are fixed
now. Affected instructions: mov, and, or, xor, jmpeq, jmpneq.

Fixes: 7210349d5baa ("pipeline: add SWX move instruction")
Fixes: 650195cf965a ("pipeline: introduce SWX and instruction")
Fixes: 8f796198dcda ("pipeline: introduce SWX or instruction")
Fixes: b4e607f9fd5e ("pipeline: introduce SWX XOR instruction")
Fixes: b3947e25bed4 ("pipeline: introduce SWX jump and return instructions")
Cc: stable@dpdk.org
Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
lib/librte_pipeline/rte_swx_pipeline.c