• 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
..
DIR_METADATA Loading commit data...
OWNERS Loading commit data...
test-c-wasm-entry.cc Loading commit data...
test-compilation-cache.cc Loading commit data...
test-gc.cc Loading commit data...
test-grow-memory.cc Loading commit data...
test-jump-table-assembler.cc Loading commit data...
test-liftoff-inspection.cc Loading commit data...
test-run-wasm-64.cc Loading commit data...
test-run-wasm-asmjs.cc Loading commit data...
test-run-wasm-atomics.cc Loading commit data...
test-run-wasm-atomics64.cc Loading commit data...
test-run-wasm-bulk-memory.cc Loading commit data...
test-run-wasm-exceptions.cc Loading commit data...
test-run-wasm-interpreter.cc Loading commit data...
test-run-wasm-js.cc Loading commit data...
test-run-wasm-memory64.cc Loading commit data...
test-run-wasm-module.cc Loading commit data...
test-run-wasm-sign-extension.cc Loading commit data...
test-run-wasm-simd-liftoff.cc Loading commit data...
test-run-wasm-simd-scalar-lowering.cc Loading commit data...
test-run-wasm-simd.cc Loading commit data...
test-run-wasm-wrappers.cc Loading commit data...
test-run-wasm.cc Loading commit data...
test-streaming-compilation.cc Loading commit data...
test-wasm-breakpoints.cc Loading commit data...
test-wasm-codegen.cc Loading commit data...
test-wasm-import-wrapper-cache.cc Loading commit data...
test-wasm-metrics.cc Loading commit data...
test-wasm-serialization.cc Loading commit data...
test-wasm-shared-engine.cc Loading commit data...
test-wasm-stack.cc Loading commit data...
test-wasm-trap-position.cc Loading commit data...
wasm-atomics-utils.h Loading commit data...
wasm-run-utils.cc Loading commit data...
wasm-run-utils.h Loading commit data...