Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: aa596dded063f62c79361988e85d561c4292842c
https://github.com/WebKit/WebKit/commit/aa596dded063f62c79361988e85d561c4292842c
Author: Yusuke Suzuki <[email protected]>
Date: 2026-01-28 (Wed, 28 Jan 2026)
Changed paths:
M Source/JavaScriptCore/assembler/AssemblerCommon.h
M Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h
M Source/JavaScriptCore/assembler/X86Assembler.h
M Source/JavaScriptCore/assembler/testmasm.cpp
M Source/JavaScriptCore/b3/air/AirArg.h
M Source/JavaScriptCore/b3/air/AirOpcode.opcodes
M Source/JavaScriptCore/wasm/WasmBBQJIT64.cpp
Log Message:
-----------
[JSC] Add constant materialization JIT code for x64
https://bugs.webkit.org/show_bug.cgi?id=305532
rdar://168193277
Reviewed by Sosuke Suzuki.
This patch adds more wide variety of constants for
move128ToVector / move64ToDouble / move32ToFloat in x64. This is a
preparation for SIMD optimization in x64 in YarrJIT where it needs these
constant materializations for masks.
Test: Source/JavaScriptCore/assembler/testmasm.cpp
* Source/JavaScriptCore/assembler/AssemblerCommon.h:
(JSC::X86ContiguousBitPattern32::create):
(JSC::X86ContiguousBitPattern32::isValid const):
(JSC::X86ContiguousBitPattern32::leftShift const):
(JSC::X86ContiguousBitPattern32::rightShift const):
(JSC::X86ContiguousBitPattern32::X86ContiguousBitPattern32):
(JSC::X86ContiguousBitPattern64::create):
(JSC::X86ContiguousBitPattern64::isValid const):
(JSC::X86ContiguousBitPattern64::leftShift const):
(JSC::X86ContiguousBitPattern64::rightShift const):
(JSC::X86ContiguousBitPattern64::X86ContiguousBitPattern64):
* Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:
(JSC::MacroAssemblerX86_64::moveAllOnesToVector):
(JSC::MacroAssemblerX86_64::move32ToFloat):
(JSC::MacroAssemblerX86_64::move64ToDouble):
(JSC::MacroAssemblerX86_64::move128ToVector):
* Source/JavaScriptCore/assembler/X86Assembler.h:
(JSC::X86Assembler::punpcklbw_rr):
(JSC::X86Assembler::punpcklwd_rr):
(JSC::X86Assembler::pcmpeqd_rr):
(JSC::X86Assembler::pcmpeqq_rr):
(JSC::X86Assembler::movlhps_rr):
(JSC::X86Assembler::vbroadcastss_rr):
(JSC::X86Assembler::vpbroadcastb_rr):
(JSC::X86Assembler::vpbroadcastw_rr):
(JSC::X86Assembler::vpbroadcastd_rr):
(JSC::X86Assembler::vpbroadcastq_rr):
* Source/JavaScriptCore/assembler/testmasm.cpp:
(JSC::testMove128ToVectorMovi):
(JSC::testMove32ToFloatComprehensive):
(JSC::testMove64ToDoubleComprehensive):
(JSC::testMove128ToVectorComprehensive):
(JSC::testFMovHalfPrecisionEncoding):
(JSC::testMove32ToFloatX64):
(JSC::testMove64ToDoubleX64):
* Source/JavaScriptCore/b3/air/AirArg.h:
(JSC::B3::Air::Arg::isValidFPImm32Form):
(JSC::B3::Air::Arg::isValidFPImm64Form):
(JSC::B3::Air::Arg::isValidFPImm128Form):
* Source/JavaScriptCore/b3/air/AirOpcode.opcodes:
* Source/JavaScriptCore/wasm/WasmBBQJIT64.cpp:
(JSC::Wasm::BBQJITImpl::BBQJIT::materializeVectorConstant):
Canonical link: https://commits.webkit.org/306399@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications