pipeline: fix multiple SWX emit pattern detection
authorCristian Dumitrescu <cristian.dumitrescu@intel.com>
Thu, 12 Nov 2020 14:50:13 +0000 (14:50 +0000)
committerDavid Marchand <david.marchand@redhat.com>
Sun, 15 Nov 2020 15:46:37 +0000 (16:46 +0100)
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 <cristian.dumitrescu@intel.com>
lib/librte_pipeline/rte_swx_pipeline.c

index fe8bfc8..eaaed7a 100644 (file)
@@ -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;