From: Cristian Dumitrescu Date: Thu, 12 Nov 2020 14:50:13 +0000 (+0000) Subject: pipeline: fix multiple SWX emit pattern detection X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=27cc0779220d6ae689329a0cbddb893acf1f1cd1;p=dpdk.git pipeline: fix multiple SWX emit pattern detection Fix the detection of instruction pattern with multiple emits followed by TX. Once detected, this is one of the instruction patterns that is internally replaced with a single optimized instruction, as long as none of the instructions to be replaced is referenced by a jump instruction. The fix enforces this check for the TX instruction of the pattern. Fixes: 31035e87b207 ("pipeline: add SWX instruction optimizer") Signed-off-by: Cristian Dumitrescu --- diff --git a/lib/librte_pipeline/rte_swx_pipeline.c b/lib/librte_pipeline/rte_swx_pipeline.c index fe8bfc8b3a..eaaed7a0a9 100644 --- a/lib/librte_pipeline/rte_swx_pipeline.c +++ b/lib/librte_pipeline/rte_swx_pipeline.c @@ -5796,6 +5796,9 @@ instr_pattern_emit_many_tx_detect(struct instruction *instr, if (instr[i].type != INSTR_TX) return 0; + if (data[i].n_users) + return 0; + i++; *n_pattern_instr = i;