pipeline: fix multiple emit pattern detection
Checks
Commit Message
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 | 3 +++
1 file changed, 3 insertions(+)
Comments
On Thu, Nov 12, 2020 at 3:50 PM Cristian Dumitrescu
<cristian.dumitrescu@intel.com> wrote:
>
> 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>
Applied, thanks.
@@ -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;