[wasm][turbofan] Implement loop unrolling for wasm
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: Clemens Backes <clemensb@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> Cr-Commit-Position: refs/heads/master@{#73009}
Showing
Please
register
or
sign in
to comment