[webkit-changes] [WebKit/WebKit] cef394: [SIMD] Intel support for swizzle and shuffle and f...

Yijia Huang noreply at github.com
Tue Dec 6 01:31:17 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: cef394ff577b74bcaebdd6d3494aaef7bf78760b
      https://github.com/WebKit/WebKit/commit/cef394ff577b74bcaebdd6d3494aaef7bf78760b
  Author: Yijia Huang <hyjorc1 at gmail.com>
  Date:   2022-12-06 (Tue, 06 Dec 2022)

  Changed paths:
    M Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h
    M Source/JavaScriptCore/assembler/X86Assembler.h
    M Source/JavaScriptCore/b3/air/AirOpcode.opcodes
    M Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp

  Log Message:
  -----------
  [SIMD] Intel support for swizzle and shuffle and fix extract_lane and replace_lane
https://bugs.webkit.org/show_bug.cgi?id=248728
rdar://102942396

Reviewed by Yusuke Suzuki.

This patch aims for three tasks:

    1. Add WASM SIMD operations `swizzle` and `shuffle`.
    https://github.com/WebAssembly/simd/blob/main/proposals/simd/SIMD.md#shuffling-using-immediate-indices

    2. Refactor MacroAssemblerX86_64.h and X86Assembler.h for `pinsr` and `pextr`,
    where X86Assembler should do simple instruction emission only. And MacroAssemblerX86
    should select the instruction.

    3. Fix WASM SIMD operation `replace_lane`. Previously, the operation is
    implemented with instruction `pinsr` in AVX format but only passing three parameters
    which is wrong.
        https://www.felixcloutier.com/x86/pinsrb:pinsrd:pinsrq
        https://www.felixcloutier.com/x86/pinsrw
        https://www.officedaytime.com/simd512e/simdimg/si.php?f=pinsrb
        https://www.officedaytime.com/simd512e/simdimg/si.php?f=pinsrw
        https://www.officedaytime.com/simd512e/simdimg/si.php?f=pinsrd
        https://www.officedaytime.com/simd512e/simdimg/si.php?f=pinsrq

* Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:
(JSC::MacroAssemblerX86_64::vectorReplaceLane):
(JSC::MacroAssemblerX86_64::vectorExtractLane):
(JSC::MacroAssemblerX86_64::vectorSwizzle):
* Source/JavaScriptCore/assembler/X86Assembler.h:
(JSC::X86Assembler::pinsrb):
(JSC::X86Assembler::pinsrw):
(JSC::X86Assembler::pinsrd):
(JSC::X86Assembler::pinsrq):
(JSC::X86Assembler::insertps):
(JSC::X86Assembler::unpcklpd):
(JSC::X86Assembler::vpextrb):
(JSC::X86Assembler::vpextrw):
(JSC::X86Assembler::vpextrd):
(JSC::X86Assembler::vpextrq):
(JSC::X86Assembler::X86InstructionFormatter::SingleInstructionBufferWriter::memoryModRM):
(JSC::X86Assembler::pinsr): Deleted.
(JSC::X86Assembler::pextr): Deleted.
(JSC::X86Assembler::vextractps): Deleted.
* Source/JavaScriptCore/b3/air/AirOpcode.opcodes:
* Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp:
(JSC::Wasm::AirIRGenerator::addReplaceLane):

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




More information about the webkit-changes mailing list