• Manos Koukoutos's avatar
    [wasm][turbofan] Implement loop unrolling for wasm · 40ebe845
    Manos Koukoutos authored
    Design doc: https://docs.google.com/document/d/1AsUCqslMUB6fLdnGq0ZoPk2kn50jIJAWAL77lKXXP5g/
    
    Currently, wasm loop unrolling is disabled by default. We intend to
    further investigate its compilation time cost and running time benefits
    before enabling it.
    
    Additional changes:
    - Introduce LoopFinder::FindUnnestedLoopFromHeader() as a lightweight
      loop analysis.
    - Move EliminateLoopExit into LoopPeeling and expose it.
    - Introduce loop_info_ field into WasmGraphBuildingInterface, fill it
      up in Loop().
    - Break after encountering the first loop in BuildNestedLoopExits.
    - Introduce struct WasmLoopInfo. A WasmLoopInfo vector is instantiated
      in ExecuteTurbofanWasmCompilation, passed to BuildGraphForWasmFunction
      to be filled up by WasmGraphBuildingInterface, and then passed to
      GenerateCodeForWasmFunction to be used in WasmLoopUnrollingPhase.
    - Introduce WasmLoopUnrollingPhase and insert it into the wasm
      compilation pipeline.
    - Fix an issue where exception values were not wrapped in
      WasmGraphBuilderInterface.
    - Update --wasm-loop-unrolling flag description.
    
    Bug: v8:11298
    Change-Id: I4b57cf2ea8520931f60769f843ffd57b3ca6399b
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2697349
    Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
    Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
    Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
    Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#73009}
    40ebe845
Name
Last commit
Last update
.github 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...
.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...
DIR_METADATA 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...
MIPS_OWNERS Loading commit data...
OWNERS Loading commit data...
PPC_OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
RISCV_OWNERS Loading commit data...
S390_OWNERS Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...