Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 32161b38e4240ea9cb156663b61eb4924f3984a8
https://github.com/WebKit/WebKit/commit/32161b38e4240ea9cb156663b61eb4924f3984a8
Author: Yusuke Suzuki <[email protected]>
Date: 2026-04-13 (Mon, 13 Apr 2026)
Changed paths:
A JSTests/wasm/ipint-tests/ipint-test-simd-memory.js
A JSTests/wasm/ipint-tests/ipint-test-simd-multi-byte-leb.js
M Source/JavaScriptCore/llint/InPlaceInterpreter64.asm
M Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.cpp
M Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.h
M Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp
M Source/JavaScriptCore/wasm/WasmIPIntGenerator.h
Log Message:
-----------
[JSC] Remove IPInt metadata from SIMD instructions
https://bugs.webkit.org/show_bug.cgi?id=312068
rdar://174580874
Reviewed by Marcus Plutowski.
This patch removes IPInt metadata from all SIMD instructions. This also
fixes some semantic bugs in SIMD instructions in IPInt.
1. As we use `t4` consistently as a cursor in PC, we can continue using
this in SIMD instructions and we do not need to have a metadata for
skipping to the next PC.
2. Previously we had some SIMD instructions using PC, but this was
wrong, because SIMD ext opcode is VarUInt32, thus size is variable
and we cannot get information from the fixed offset with PC. We can
just use `t4` offered from simd_prefix dispatch, and then issue gets
fixed. We add tests for these patterns.
3. We drop SIMDMemoryAccessMetadata and use the pattern similar to what
we have in normal memory load / store.
4. Clean up popMemoryIndex to shrink its size.
Tests: JSTests/wasm/ipint-tests/ipint-test-simd-memory.js
JSTests/wasm/ipint-tests/ipint-test-simd-multi-byte-leb.js
* JSTests/wasm/ipint-tests/ipint-test-simd-memory.js: Added.
(v128.store32_lane.func.export.string_appeared_here.result.i32.v128.store32_lane.0.i32.const.28.v128.const.i32x4.0xDEADBEEF.0.0.0.i32.load.i32.const.28.async
test):
* JSTests/wasm/ipint-tests/ipint-test-simd-multi-byte-leb.js: Added.
(import.as.assert.from.string_appeared_here.buildModule):
(uleb128):
(paddedSIMDOp):
(v128ConstI32x4):
(v128ConstI32x4Padded):
(i32Const):
(instantiateAndRun):
(return.inst.exports.f):
(assert.eq):
* Source/JavaScriptCore/llint/InPlaceInterpreter64.asm:
* Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.cpp:
(JSC::Wasm::FunctionIPIntMetadataGenerator::addSIMDMemoryAccess): Deleted.
* Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.h:
* Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp:
(JSC::Wasm::IPIntGenerator::addSIMDLoad):
(JSC::Wasm::IPIntGenerator::addSIMDStore):
(JSC::Wasm::IPIntGenerator::addSIMDSplat):
(JSC::Wasm::IPIntGenerator::addSIMDShuffle):
(JSC::Wasm::IPIntGenerator::addSIMDShift):
(JSC::Wasm::IPIntGenerator::addSIMDExtmul):
(JSC::Wasm::IPIntGenerator::addSIMDLoadLane):
(JSC::Wasm::IPIntGenerator::addSIMDStoreLane):
(JSC::Wasm::IPIntGenerator::addSIMDConstant):
(JSC::Wasm::IPIntGenerator::addSIMDExtractLane):
(JSC::Wasm::IPIntGenerator::addSIMDReplaceLane):
(JSC::Wasm::IPIntGenerator::addSIMDI_V):
(JSC::Wasm::IPIntGenerator::addSIMDV_V):
(JSC::Wasm::IPIntGenerator::addSIMDBitwiseSelect):
(JSC::Wasm::IPIntGenerator::addSIMDRelOp):
(JSC::Wasm::IPIntGenerator::addSIMDV_VV):
* Source/JavaScriptCore/wasm/WasmIPIntGenerator.h:
Canonical link: https://commits.webkit.org/311143@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications