• Clemens Backes's avatar
    [Liftoff] Merge i32.eqz and br_if instructions · 5c20da07
    Clemens Backes authored
    We currently generate code for both separately, resulting in five
    instructions (three for the i32_eqz, two for the br_if):
      test rax,rax
      seteq dl
      movzxb rdx,rdx
      test rdx,rdx
      jz <label>
    
    After this CL, we just generate two instructions:
      test rax, rax
      jnz <label>
    
    This is implemented by a look-ahead in the {kExprI32Eqz} handler. If the
    opcode is followed by {kExprBrIf}, no code is emitted. Instead, a flag in
    the {LiftoffCompiler} is set to signal to the {kExprBrIf} handler that
    the previous instruction was not processed yet.
    Note that this mechanism is designed to be reusable for more similar
    improvements. For the single instance implemented in this CL, it is not
    needed.
    
    Plus some drive-by cleanup.
    
    R=jkummerow@chromium.org
    
    Bug: v8:9831
    Change-Id: I47495fe763b7db7cef41aa207c88a2f1b74bf1a9
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1862557
    Commit-Queue: Clemens Backes <clemensb@chromium.org>
    Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#64292}
    5c20da07
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
custom_deps Loading commit data...
docs Loading commit data...
gni Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.clang-tidy Loading commit data...
.editorconfig Loading commit data...
.flake8 Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.vpython Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
COMMON_OWNERS Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
ENG_REVIEW_OWNERS Loading commit data...
INFRA_OWNERS Loading commit data...
INTL_OWNERS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
MIPS_OWNERS Loading commit data...
OWNERS Loading commit data...
PPC_OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
S390_OWNERS Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...