• Ng Zhi An's avatar
    [wasm-simd][liftoff][arm64] Check offset fits in str immediate · c92e74fa
    Ng Zhi An authored
    When filling stack slots, the start offset can be too large to fit into
    the immediate of a str instruction (which is used to handle remainders
    after stp). For example, a function with 32 i64 params will require 256
    bytes reserved for the params, so the offset starts at 256 + 16
    (instance) = 272. This does not fit into a int9, so we hit an
    UNREACHABLE case when emitting str.
    
    The fix here checks that start can fit in an unscaled immediate, and if
    it doesn't fallback to the general case. We could use the Str
    from macro-asesmbler, but that uses another instruction, so we are not
    saving anything.
    
    A check for IsImmLSUnscaled(-start-12) is sufficient because 12 is the
    largest possible value for remainder. So if -start-12 fits, everything
    else will fit.
    
    Bug: v8:10645
    Change-Id: I1c415499ada3a807d5f3889f091150bfefdf471d
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2267369
    Commit-Queue: Zhi An Ng <zhin@chromium.org>
    Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#68594}
    c92e74fa
Name
Last commit
Last update
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...
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...