• Mike Stanton's avatar
    [turbofan] Masking/poisoning in codegen (optimized code, mips & mips64) · 46a3c772
    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, arm64} to {x64, arm, arm64, mips, mips64}.
    
    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: I211395b8305ed0ad9288d6da48fa159fa970c827
    Reviewed-on: https://chromium-review.googlesource.com/951382Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
    Reviewed-by: 's avatarIvica Bogosavljevic <ivica.bogosavljevic@mips.com>
    Commit-Queue: Ivica Bogosavljevic <ivica.bogosavljevic@mips.com>
    Cr-Commit-Position: refs/heads/master@{#52042}
    46a3c772
code-stubs-mips.cc 45.7 KB