From 720ec9b36fd396920aeded49c21163bcbaf3d189 Mon Sep 17 00:00:00 2001 From: Zhigang Gong Date: Thu, 27 Mar 2014 13:30:00 +0800 Subject: [PATCH] GBE: don't emit jmpi to next label. As the following if will do the same thing, don't need to add the jmpi instruction. Signed-off-by: Zhigang Gong Reviewed-by: "Yang, Rong R" Reviewed-by: "Song, Ruiling" --- backend/src/backend/gen_insn_selection.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/backend/src/backend/gen_insn_selection.cpp b/backend/src/backend/gen_insn_selection.cpp index 560d3dc..a7baf72 100644 --- a/backend/src/backend/gen_insn_selection.cpp +++ b/backend/src/backend/gen_insn_selection.cpp @@ -3045,7 +3045,11 @@ namespace gbe sel.pop(); } else { - if (sel.ctx.hasJIP(&insn)) { + if (sel.ctx.hasJIP(&insn) && + // If jump to next label and the endif offset is -1, then + // We don't need to add a jmpi here, as the following IF will do the same + // thing if all channels are disabled. + (jip != nextLabel || sel.block->endifOffset != -1)) { // If it is required, insert a JUMP to bypass the block sel.push(); if (simdWidth == 8) -- 2.7.4