[webkit-changes] [WebKit/WebKit] 8a0182: [SIMD] B3/OMG Support

Justin Michaud noreply at github.com
Wed Dec 14 10:31:22 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 8a018265fb90726b8b3e8e0fb88ec9238ee0255c
      https://github.com/WebKit/WebKit/commit/8a018265fb90726b8b3e8e0fb88ec9238ee0255c
  Author: Justin Michaud <justin_michaud at apple.com>
  Date:   2022-12-14 (Wed, 14 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/JavaScriptCore.xcodeproj/project.pbxproj
    M Source/JavaScriptCore/Sources.txt
    M Source/JavaScriptCore/assembler/MacroAssemblerARM64.h
    M Source/JavaScriptCore/assembler/MacroAssemblerRISCV64.h
    M Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h
    M Source/JavaScriptCore/b3/B3ArgumentRegValue.h
    A Source/JavaScriptCore/b3/B3Const128Value.cpp
    A Source/JavaScriptCore/b3/B3Const128Value.h
    M Source/JavaScriptCore/b3/B3LowerToAir.cpp
    M Source/JavaScriptCore/b3/B3Opcode.cpp
    M Source/JavaScriptCore/b3/B3Opcode.h
    M Source/JavaScriptCore/b3/B3Procedure.cpp
    M Source/JavaScriptCore/b3/B3Procedure.h
    A Source/JavaScriptCore/b3/B3SIMDValue.cpp
    A Source/JavaScriptCore/b3/B3SIMDValue.h
    M Source/JavaScriptCore/b3/B3Validate.cpp
    M Source/JavaScriptCore/b3/B3Value.cpp
    M Source/JavaScriptCore/b3/B3Value.h
    M Source/JavaScriptCore/b3/B3ValueInlines.h
    M Source/JavaScriptCore/b3/air/AirArg.cpp
    M Source/JavaScriptCore/b3/air/AirCode.cpp
    M Source/JavaScriptCore/b3/air/AirLowerStackArgs.cpp
    M Source/JavaScriptCore/b3/air/AirOpcode.opcodes
    M Source/JavaScriptCore/ftl/FTLState.cpp
    M Source/JavaScriptCore/runtime/Options.cpp
    A Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmAirIRGenerator64.cpp
    M Source/JavaScriptCore/wasm/WasmAirIRGeneratorBase.h
    M Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmFunctionParser.h
    M Source/JavaScriptCore/wasm/WasmSIMDOpcodes.h
    M Tools/Scripts/run-jsc-stress-tests

  Log Message:
  -----------
  [SIMD] B3/OMG Support
https://bugs.webkit.org/show_bug.cgi?id=246347

Reviewed by Mark Lam.

Support B3/ the OMG tier for SIMD functions.

We add SimdValue and Const128Value as two new B3 value types, plus
opcodes for every wasm simd op.

We also add extra testing modes to simd spec tests to ensure that
the OMG tier is being fully exercised. This should be a temporary
measure until SIMD no longer requires tiering up from LLInt to BBQ.

Finally, we work around a bug in register allocation for SIMD functions
by disabling the use of ARM64 fp callee-saves.

* Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::B3IRGenerator::notifyFunctionUsesSIMD):
(JSC::Wasm::B3IRGenerator::addConstant):
(JSC::Wasm::B3IRGenerator::addExtractLane):
(JSC::Wasm::B3IRGenerator::addReplaceLane):
(JSC::Wasm::B3IRGenerator::addSIMDI_V):
(JSC::Wasm::B3IRGenerator::addSIMDV_V):
(JSC::Wasm::B3IRGenerator::addSIMDBitwiseSelect):
(JSC::Wasm::B3IRGenerator::addSIMDRelOp):
(JSC::Wasm::B3IRGenerator::addSIMDSwizzle):
(JSC::Wasm::B3IRGenerator::addSIMDV_VV):
(JSC::Wasm::B3IRGenerator::addSIMDLoad):
(JSC::Wasm::B3IRGenerator::addSIMDStore):
(JSC::Wasm::B3IRGenerator::addSIMDSplat):
(JSC::Wasm::B3IRGenerator::addSIMDShift):
(JSC::Wasm::B3IRGenerator::addSIMDExtmul):
(JSC::Wasm::B3IRGenerator::addSIMDShuffle):
(JSC::Wasm::B3IRGenerator::addSIMDLoadSplat):
(JSC::Wasm::B3IRGenerator::addSIMDLoadLane):
(JSC::Wasm::B3IRGenerator::addSIMDStoreLane):
(JSC::Wasm::B3IRGenerator::addSIMDLoadExtend):
(JSC::Wasm::B3IRGenerator::addSIMDLoadPad):

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




More information about the webkit-changes mailing list