• Mike Stanton's avatar
    [turbofan] Masking/poisoning in codegen (optimized code, arm64) · 800daded
    Mike Stanton authored
    This introduces masking of loads with speculation bit during code generation.
    At the moment, this is done only under the
    --branch-load-poisoning flag, and this CL enlarges the set of supported
    platforms from {x64, arm} to {x64, arm, arm64}.
    
    Overview of changes:
    - new register configuration configuration with one register reserved for
      the speculation poison/mask (kSpeculationPoisonRegister).
    - in codegen, we introduce an update to the poison register at the starts
      of all successors of branches (and deopts) that are marked as safety
      branches (deopts).
    - in memory optimizer, we lower all field and element loads to PoisonedLoads.
    - poisoned loads are then masked in codegen with the poison register.
      * only integer loads are masked at the moment.
    
    Bug: chromium:798964
    Change-Id: Ie6bc9c3bdac9998b0ef81f050a9c844399ca3ae4
    Reviewed-on: https://chromium-review.googlesource.com/928724
    Commit-Queue: Michael Stanton <mvstanton@chromium.org>
    Reviewed-by: 's avatarMartyn Capewell <martyn.capewell@arm.com>
    Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
    Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#51576}
    800daded
Name
Last commit
Last update
..
assembler-arm64-inl.h Loading commit data...
assembler-arm64.cc Loading commit data...
assembler-arm64.h Loading commit data...
code-stubs-arm64.cc Loading commit data...
code-stubs-arm64.h Loading commit data...
codegen-arm64.cc Loading commit data...
constants-arm64.h Loading commit data...
cpu-arm64.cc Loading commit data...
decoder-arm64-inl.h Loading commit data...
decoder-arm64.cc Loading commit data...
decoder-arm64.h Loading commit data...
deoptimizer-arm64.cc Loading commit data...
disasm-arm64.cc Loading commit data...
disasm-arm64.h Loading commit data...
eh-frame-arm64.cc Loading commit data...
frame-constants-arm64.cc Loading commit data...
frame-constants-arm64.h Loading commit data...
instructions-arm64-constants.cc Loading commit data...
instructions-arm64.cc Loading commit data...
instructions-arm64.h Loading commit data...
instrument-arm64.cc Loading commit data...
instrument-arm64.h Loading commit data...
interface-descriptors-arm64.cc Loading commit data...
interface-descriptors-arm64.h Loading commit data...
macro-assembler-arm64-inl.h Loading commit data...
macro-assembler-arm64.cc Loading commit data...
macro-assembler-arm64.h Loading commit data...
simulator-arm64.cc Loading commit data...
simulator-arm64.h Loading commit data...
simulator-logic-arm64.cc Loading commit data...
utils-arm64.cc Loading commit data...
utils-arm64.h Loading commit data...