• Benedikt Meurer's avatar
    [turbofan] Refactor the CheckedInt32Div/CheckedUint32Div lowering. · ce7ec6ef
    Benedikt Meurer authored
    Improve the lowering of CheckedInt32Div and CheckedUint32Div for the
    case that the right hand side is a known (positive) power of two, as
    in that case it's sufficient to just check the relevant bits on the
    left hand side and then shift by the appropriate amount of bits.
    
    This is significantly faster than what TurboFan is able to generate
    from the general lowering, even with all the MachineOperatorReducer
    magic (it even shows as a steady ~1.5% overall improvement on the
    Kraken crypto ccm benchmark).
    
    Also turn the general CheckedInt32Div lowering into readable code again,
    and make sure that all the bailout cases are properly covered by mjsunit
    tests (i.e. the "division by zero" bailout was not covered properly).
    
    Bug: v8:8015
    Change-Id: Ibfdd367a6ee5d70dcaa48801858042c5029b7004
    Reviewed-on: https://chromium-review.googlesource.com/1236954Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
    Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#56115}
    ce7ec6ef
Name
Last commit
Last update
benchmarks Loading commit data...
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...
.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...
ChangeLog Loading commit data...
DEPS 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...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...
snapshot_toolchain.gni Loading commit data...