• Mike Stanton's avatar
    Reland "[turbofan] Masking/poisoning in codegen (optimized code, arm64)" · 7c51c944
    Mike Stanton authored
    This is a reland of 800daded.
    
    Original change's description:
    > [turbofan] Masking/poisoning in codegen (optimized code, arm64)
    > 
    > 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: Martyn Capewell <martyn.capewell@arm.com>
    > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
    > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
    > Cr-Commit-Position: refs/heads/master@{#51576}
    
    Bug: chromium:798964
    Change-Id: I6c87d34c4e05fca0bd7f5447555133ecb0fb7a2e
    Reviewed-on: https://chromium-review.googlesource.com/939402Reviewed-by: 's avatarMartyn Capewell <martyn.capewell@arm.com>
    Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
    Commit-Queue: Michael Stanton <mvstanton@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#51602}
    7c51c944
instruction-selector-arm64.cc 118 KB