From 27cc0779220d6ae689329a0cbddb893acf1f1cd1 Mon Sep 17 00:00:00 2001 From: Cristian Dumitrescu Date: Thu, 12 Nov 2020 14:50:13 +0000 Subject: [PATCH] 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 --- lib/librte_pipeline/rte_swx_pipeline.c | 3 +++ 1 file changed, 3 insertions(+) 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; -- 2.20.1