[webkit-changes] [WebKit/WebKit] 4ce45c: Remove uses of Options::useWebAssemblySIMD.

Justin Michaud noreply at github.com
Fri Dec 9 09:01:21 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4ce45cf323661a55744011f98077db15d65380fb
      https://github.com/WebKit/WebKit/commit/4ce45cf323661a55744011f98077db15d65380fb
  Author: Justin Michaud <justin_michaud at apple.com>
  Date:   2022-12-09 (Fri, 09 Dec 2022)

  Changed paths:
    M JSTests/wasm/stress/simd-const-spill.js
    M JSTests/wasm/stress/simd-const.js
    M JSTests/wasm/stress/simd-kitchen-sink.js
    M JSTests/wasm/stress/simd-load.js
    M JSTests/wasm/stress/simd-register-allocation.js
    M JSTests/wasm/stress/simd-return-value-alignment.js
    M JSTests/wasm/v8/exceptions-simd.js
    M JSTests/wasm/v8/liftoff-simd-params.js
    M JSTests/wasm/v8/multi-value-simd.js
    M JSTests/wasm/v8/regress/regress-10309.js
    M JSTests/wasm/v8/regress/regress-1054466.js
    M JSTests/wasm/v8/regress/regress-1065599.js
    M JSTests/wasm/v8/regress/regress-1070078.js
    M JSTests/wasm/v8/regress/regress-1081030.js
    M JSTests/wasm/v8/regress/regress-10831.js
    M JSTests/wasm/v8/regress/regress-1111522.js
    M JSTests/wasm/v8/regress/regress-1112124.js
    M JSTests/wasm/v8/regress/regress-1116019.js
    M JSTests/wasm/v8/regress/regress-1124885.js
    M JSTests/wasm/v8/regress/regress-1132461.js
    M JSTests/wasm/v8/regress/regress-1161555.js
    M JSTests/wasm/v8/regress/regress-1161654.js
    M JSTests/wasm/v8/regress/regress-1161954.js
    M JSTests/wasm/v8/regress/regress-1165966.js
    M JSTests/wasm/v8/regress/regress-1179182.js
    M JSTests/wasm/v8/regress/regress-1187831.js
    M JSTests/wasm/v8/regress/regress-1188975.js
    M JSTests/wasm/v8/regress/regress-1199662.js
    M JSTests/wasm/v8/regress/regress-1231950.js
    M JSTests/wasm/v8/regress/regress-1242300.js
    M JSTests/wasm/v8/regress/regress-1242689.js
    M JSTests/wasm/v8/regress/regress-1264462.js
    M JSTests/wasm/v8/regress/regress-1271244.js
    M JSTests/wasm/v8/regress/regress-1271456.js
    M JSTests/wasm/v8/regress/regress-1271538.js
    M JSTests/wasm/v8/regress/regress-1282224.js
    M JSTests/wasm/v8/regress/regress-1283042.js
    M JSTests/wasm/v8/regress/regress-1283395.js
    M JSTests/wasm/v8/regress/regress-1284980.js
    M JSTests/wasm/v8/regress/regress-1286253.js
    M JSTests/wasm/v8/regress/regress-1289678.js
    M JSTests/wasm/v8/regress/regress-1290079.js
    M JSTests/wasm/v8/regress/regress-9447.js
    M JSTests/wasm/v8/regress/regress-crbug-1338980.js
    M JSTests/wasm/v8/regress/regress-crbug-1355070.js
    M JSTests/wasm/v8/regress/regress-crbug-1356718.js
    M JSTests/wasm/v8/simd-call.js
    M JSTests/wasm/v8/simd-errors.js
    M JSTests/wasm/v8/simd-globals.js
    M JSTests/wasm/v8/simd-i64x2-mul.js
    M Source/JavaScriptCore/b3/B3PatchpointSpecial.cpp
    M Source/JavaScriptCore/b3/B3Procedure.h
    M Source/JavaScriptCore/b3/B3ValueRep.cpp
    M Source/JavaScriptCore/b3/B3ValueRep.h
    M Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp
    M Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackByLinearScan.cpp
    M Source/JavaScriptCore/b3/air/AirCCallSpecial.cpp
    M Source/JavaScriptCore/b3/air/AirCCallSpecial.h
    M Source/JavaScriptCore/b3/air/AirCode.cpp
    M Source/JavaScriptCore/b3/air/AirCode.h
    M Source/JavaScriptCore/b3/air/AirEmitShuffle.cpp
    M Source/JavaScriptCore/b3/air/AirLowerAfterRegAlloc.cpp
    M Source/JavaScriptCore/b3/air/AirRegLiveness.cpp
    M Source/JavaScriptCore/b3/air/AirTmpWidth.cpp
    M Source/JavaScriptCore/ftl/FTLJITCode.cpp
    M Source/JavaScriptCore/jit/ScratchRegisterAllocator.cpp
    M Source/JavaScriptCore/runtime/Options.cpp
    M Source/JavaScriptCore/runtime/OptionsList.h
    M Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmThunks.cpp
    M Source/JavaScriptCore/wasm/WasmThunks.h
    M Tools/Scripts/run-jsc-stress-tests

  Log Message:
  -----------
  Remove uses of Options::useWebAssemblySIMD.
https://bugs.webkit.org/show_bug.cgi?id=248917

Reviewed by Yusuke Suzuki.

This patch removes useWebAssemblySIMD everywhere except for when we are
parsing WASM functions.

Using vectors throughout our code causes a 7% JS2 regression, so we need
to gate conservative vector behaviour behind a flag. Previously, this was
the global feature flag. Now, we check per-function if SIMD instructions
are used.

We also enable the B3 JIT, since SIMD functions already should not be
tiering up.

A subsequent patch should hopefully turn on this option by default without
regressing non-simd code. In preparation for that, we also ensure that we
are not reducing test coverage by enabling SIMD.

* JSTests/wasm/stress/simd-const-spill.js:
* JSTests/wasm/stress/simd-const.js:
* JSTests/wasm/stress/simd-kitchen-sink.js:
* JSTests/wasm/stress/simd-load.js:
* JSTests/wasm/stress/simd-register-allocation.js:
* JSTests/wasm/stress/simd-return-value-alignment.js:
* JSTests/wasm/v8/exceptions-simd.js:
* JSTests/wasm/v8/liftoff-simd-params.js:
* JSTests/wasm/v8/multi-value-simd.js:
* JSTests/wasm/v8/regress/regress-10309.js:
* JSTests/wasm/v8/regress/regress-1054466.js:
* JSTests/wasm/v8/regress/regress-1065599.js:
* JSTests/wasm/v8/regress/regress-1070078.js:
* JSTests/wasm/v8/regress/regress-1081030.js:
* JSTests/wasm/v8/regress/regress-10831.js:
* JSTests/wasm/v8/regress/regress-1111522.js:
* JSTests/wasm/v8/regress/regress-1112124.js:
* JSTests/wasm/v8/regress/regress-1116019.js:
* JSTests/wasm/v8/regress/regress-1124885.js:
* JSTests/wasm/v8/regress/regress-1132461.js:
* JSTests/wasm/v8/regress/regress-1161555.js:
* JSTests/wasm/v8/regress/regress-1161654.js:
* JSTests/wasm/v8/regress/regress-1161954.js:
* JSTests/wasm/v8/regress/regress-1165966.js:
* JSTests/wasm/v8/regress/regress-1179182.js:
* JSTests/wasm/v8/regress/regress-1187831.js:
* JSTests/wasm/v8/regress/regress-1188975.js:
* JSTests/wasm/v8/regress/regress-1199662.js:
* JSTests/wasm/v8/regress/regress-1231950.js:
* JSTests/wasm/v8/regress/regress-1242300.js:
* JSTests/wasm/v8/regress/regress-1242689.js:
* JSTests/wasm/v8/regress/regress-1264462.js:
* JSTests/wasm/v8/regress/regress-1271244.js:
* JSTests/wasm/v8/regress/regress-1271456.js:
* JSTests/wasm/v8/regress/regress-1271538.js:
* JSTests/wasm/v8/regress/regress-1282224.js:
* JSTests/wasm/v8/regress/regress-1283042.js:
* JSTests/wasm/v8/regress/regress-1283395.js:
* JSTests/wasm/v8/regress/regress-1284980.js:
* JSTests/wasm/v8/regress/regress-1286253.js:
* JSTests/wasm/v8/regress/regress-1289678.js:
* JSTests/wasm/v8/regress/regress-1290079.js:
* JSTests/wasm/v8/regress/regress-9447.js:
* JSTests/wasm/v8/regress/regress-crbug-1338980.js:
* JSTests/wasm/v8/regress/regress-crbug-1355070.js:
* JSTests/wasm/v8/regress/regress-crbug-1356718.js:
* JSTests/wasm/v8/simd-call.js:
* JSTests/wasm/v8/simd-errors.js:
* JSTests/wasm/v8/simd-globals.js:
* JSTests/wasm/v8/simd-i64x2-mul.js:
* Source/JavaScriptCore/b3/B3PatchpointSpecial.cpp:
(JSC::B3::PatchpointSpecial::forEachArg):
* Source/JavaScriptCore/b3/B3Procedure.h:
(JSC::B3::Procedure::setIsSIMD):
(JSC::B3::Procedure::isSIMD const):
* Source/JavaScriptCore/b3/B3ValueRep.cpp:
(JSC::B3::ValueRep::addUsedRegistersTo const):
(JSC::B3::ValueRep::usedRegisters const):
* Source/JavaScriptCore/b3/B3ValueRep.h:
(JSC::B3::ValueRep::usedRegisters):
* Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:
(JSC::B3::Air::GenerateAndAllocateRegisters::flush):
(JSC::B3::Air::GenerateAndAllocateRegisters::alloc):
(JSC::B3::Air::GenerateAndAllocateRegisters::prepareForGeneration):
(JSC::B3::Air::GenerateAndAllocateRegisters::generate):
* Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackByLinearScan.cpp:
* Source/JavaScriptCore/b3/air/AirCCallSpecial.cpp:
(JSC::B3::Air::CCallSpecial::CCallSpecial):
(JSC::B3::Air::CCallSpecial::forEachArg):
* Source/JavaScriptCore/b3/air/AirCCallSpecial.h:
* Source/JavaScriptCore/b3/air/AirCode.cpp:
(JSC::B3::Air::Code::cCallSpecial):
(JSC::B3::Air::Code::isSIMD const):
* Source/JavaScriptCore/b3/air/AirCode.h:
* Source/JavaScriptCore/b3/air/AirEmitShuffle.cpp:
(JSC::B3::Air::emitShuffle):
* Source/JavaScriptCore/b3/air/AirLowerAfterRegAlloc.cpp:
(JSC::B3::Air::lowerAfterRegAlloc):
* Source/JavaScriptCore/b3/air/AirRegLiveness.cpp:
(JSC::B3::Air::RegLiveness::LocalCalcForUnifiedTmpLiveness::LocalCalcForUnifiedTmpLiveness):
(JSC::B3::Air::RegLiveness::LocalCalcForUnifiedTmpLiveness::execute):
* Source/JavaScriptCore/b3/air/AirTmpWidth.cpp:
(JSC::B3::Air::TmpWidth::recompute):
* Source/JavaScriptCore/ftl/FTLJITCode.cpp:
(JSC::FTL::JITCode::liveRegistersToPreserveAtExceptionHandlingCallSite):
* Source/JavaScriptCore/jit/ScratchRegisterAllocator.cpp:
(JSC::ScratchRegisterAllocator::allocateScratch):
(JSC::ScratchRegisterAllocator::preserveReusedRegistersByPushing):
(JSC::ScratchRegisterAllocator::restoreReusedRegistersByPopping):
* Source/JavaScriptCore/runtime/Options.cpp:
(JSC::Options::notifyOptionsChanged):
* Source/JavaScriptCore/runtime/OptionsList.h:
* Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp:
(JSC::Wasm::AirIRGenerator::emitEntryTierUpCheck):
(JSC::Wasm::AirIRGenerator::emitCatchImpl):
(JSC::Wasm::AirIRGenerator::addThrow):
(JSC::Wasm::AirIRGenerator::addRethrow):
(JSC::Wasm::AirIRGenerator::emitCallPatchpoint):
(JSC::Wasm::parseAndCompileAir):
* Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::B3IRGenerator::emitEntryTierUpCheck):
(JSC::Wasm::parseAndCompileB3):
* Source/JavaScriptCore/wasm/WasmThunks.cpp:
(JSC::Wasm::triggerOMGEntryTierUpThunkGeneratorImpl):
(JSC::Wasm::triggerOMGEntryTierUpThunkGeneratorSIMD):
(JSC::Wasm::triggerOMGEntryTierUpThunkGeneratorNoSIMD):
(JSC::Wasm::triggerOMGEntryTierUpThunkGenerator): Deleted.
* Source/JavaScriptCore/wasm/WasmThunks.h:
(JSC::Wasm::triggerOMGEntryTierUpThunkGenerator):
* Tools/Scripts/run-jsc-stress-tests:

Canonical link: https://commits.webkit.org/257632@main




More information about the webkit-changes mailing list