• pierre.langlois's avatar
    [turbofan] ARM64: Match 64 bit compare with zero and branch · 27bd1747
    pierre.langlois authored
    This patch enables the following transformations in the instruction
    selector:
    
    | Before           | After                  |
    |------------------+------------------------|
    | and x3, x1, #0x1 | tb{,n}z w1, #0, #+0x78 |
    | cmp x3, #0x0     |                        |
    | b.{eq,ne} #+0x80 |                        |
    |------------------+------------------------|
    | cmp x0, #0x0     | cb{,n}z x0, #+0x48     |
    | b.{eq,ne} #+0x4c |                        |
    
    I have not seen these patterns beeing generated by turbofan, however the
    stubs hit these cases frequently. A particular reason is that we are
    turning operations that check for a Smi into a single `tbz`.
    
    As a concequence, the interpreter is affected thanks to inlining
    turbofan stubs into it's bytecode handlers. I have noticed the size of
    the interpreter was reduced by 200 instructions.
    
    BUG=
    
    Review-Url: https://codereview.chromium.org/2022073002
    Cr-Commit-Position: refs/heads/master@{#36632}
    27bd1747
Name
Last commit
Last update
..
platform Loading commit data...
utils Loading commit data...
DEPS Loading commit data...
OWNERS Loading commit data...
accounting-allocator.cc Loading commit data...
accounting-allocator.h Loading commit data...
adapters.h Loading commit data...
atomic-utils.h Loading commit data...
atomicops.h Loading commit data...
atomicops_internals_arm64_gcc.h Loading commit data...
atomicops_internals_arm_gcc.h Loading commit data...
atomicops_internals_atomicword_compat.h Loading commit data...
atomicops_internals_mac.h Loading commit data...
atomicops_internals_mips64_gcc.h Loading commit data...
atomicops_internals_mips_gcc.h Loading commit data...
atomicops_internals_portable.h Loading commit data...
atomicops_internals_ppc_gcc.h Loading commit data...
atomicops_internals_s390_gcc.h Loading commit data...
atomicops_internals_tsan.h Loading commit data...
atomicops_internals_x86_gcc.cc Loading commit data...
atomicops_internals_x86_gcc.h Loading commit data...
atomicops_internals_x86_msvc.h Loading commit data...
bits.cc Loading commit data...
bits.h Loading commit data...
build_config.h Loading commit data...
compiler-specific.h Loading commit data...
cpu.cc Loading commit data...
cpu.h Loading commit data...
division-by-constant.cc Loading commit data...
division-by-constant.h Loading commit data...
flags.h Loading commit data...
format-macros.h Loading commit data...
functional.cc Loading commit data...
functional.h Loading commit data...
iterator.h Loading commit data...
lazy-instance.h Loading commit data...
logging.cc Loading commit data...
logging.h Loading commit data...
macros.h Loading commit data...
once.cc Loading commit data...
once.h Loading commit data...
qnx-math.h Loading commit data...
safe_conversions.h Loading commit data...
safe_conversions_impl.h Loading commit data...
safe_math.h Loading commit data...
safe_math_impl.h Loading commit data...
smart-pointers.h Loading commit data...
sys-info.cc Loading commit data...
sys-info.h Loading commit data...
win32-headers.h Loading commit data...