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

Reply via email to