[webkit-changes] [WebKit/WebKit] d73923: [JSC] Make double constant materialization better

Yusuke Suzuki noreply at github.com
Fri Sep 13 08:54:04 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d73923de96990ce46d3ed5fdde2fdf113a189443
      https://github.com/WebKit/WebKit/commit/d73923de96990ce46d3ed5fdde2fdf113a189443
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2024-09-13 (Fri, 13 Sep 2024)

  Changed paths:
    M Source/JavaScriptCore/assembler/ARM64Assembler.h
    M Source/JavaScriptCore/assembler/AbstractMacroAssembler.h
    M Source/JavaScriptCore/assembler/AssemblerCommon.h
    M Source/JavaScriptCore/assembler/MacroAssembler.h
    M Source/JavaScriptCore/assembler/MacroAssemblerARM64.h
    M Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h
    M Source/JavaScriptCore/assembler/MacroAssemblerRISCV64.h
    M Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h
    M Source/JavaScriptCore/b3/B3LowerToAir.cpp
    M Source/JavaScriptCore/b3/B3MoveConstants.cpp
    M Source/JavaScriptCore/b3/air/AirArg.cpp
    M Source/JavaScriptCore/b3/air/AirArg.h
    M Source/JavaScriptCore/b3/air/AirOpcode.opcodes
    M Source/JavaScriptCore/b3/air/opcode_generator.rb
    M Source/JavaScriptCore/b3/testb3.h
    M Source/JavaScriptCore/b3/testb3_1.cpp
    M Source/JavaScriptCore/b3/testb3_7.cpp
    M Source/JavaScriptCore/b3/testb3_8.cpp
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
    M Source/JavaScriptCore/jit/AssemblyHelpers.cpp
    M Source/JavaScriptCore/jit/ThunkGenerators.cpp
    M Source/JavaScriptCore/wasm/WasmBBQJIT64.cpp

  Log Message:
  -----------
  [JSC] Make double constant materialization better
https://bugs.webkit.org/show_bug.cgi?id=279615
rdar://135908300

Reviewed by Keith Miller.

This change is preparation for the further FP related optimizations, but
let's first clean up things to make them better. This patch makes double
constant materialization better for our CPUs.

* Source/JavaScriptCore/assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::canEncodeFPImm):
(JSC::ARM64Assembler::encodeFPImm):
* Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:
* Source/JavaScriptCore/assembler/AssemblerCommon.h:
(JSC::ARM64FPImmediate::create64):
(JSC::ARM64FPImmediate::isValid const):
(JSC::ARM64FPImmediate::value const):
(JSC::ARM64FPImmediate::ARM64FPImmediate):
* Source/JavaScriptCore/assembler/MacroAssembler.h:
(JSC::MacroAssembler::move32ToFloat):
(JSC::MacroAssembler::move64ToDouble):
* Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::move64ToDouble):
(JSC::MacroAssemblerARM64::move32ToFloat):
* Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:
(JSC::MacroAssemblerARMv7::move32ToFloat):
(JSC::MacroAssemblerARMv7::move64ToDouble):
* Source/JavaScriptCore/assembler/MacroAssemblerRISCV64.h:
(JSC::MacroAssemblerRISCV64::move32ToFloat):
(JSC::MacroAssemblerRISCV64::move64ToDouble):
* Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:
(JSC::MacroAssemblerX86_64::absDouble):
(JSC::MacroAssemblerX86_64::move32ToFloat):
(JSC::MacroAssemblerX86_64::move64ToDouble):
* Source/JavaScriptCore/b3/B3LowerToAir.cpp:
* Source/JavaScriptCore/b3/B3MoveConstants.cpp:
* Source/JavaScriptCore/b3/air/AirArg.cpp:
(JSC::B3::Air::Arg::jsHash const):
(JSC::B3::Air::Arg::dump const):
(WTF::printInternal):
* Source/JavaScriptCore/b3/air/AirArg.h:
(JSC::B3::Air::Arg::fpImm32):
(JSC::B3::Air::Arg::fpImm64):
(JSC::B3::Air::Arg::isFPImm32 const):
(JSC::B3::Air::Arg::isFPImm64 const):
(JSC::B3::Air::Arg::isSomeImm const):
(JSC::B3::Air::Arg::isGP const):
(JSC::B3::Air::Arg::isFP const):
(JSC::B3::Air::Arg::isValidFPImm32Form):
(JSC::B3::Air::Arg::isValidFPImm64Form):
(JSC::B3::Air::Arg::isValidForm const):
(JSC::B3::Air::Arg::asTrustedImm32 const):
(JSC::B3::Air::Arg::asTrustedImm64 const):
* Source/JavaScriptCore/b3/air/AirOpcode.opcodes:
* Source/JavaScriptCore/b3/air/opcode_generator.rb:
* Source/JavaScriptCore/b3/testb3.h:
* Source/JavaScriptCore/b3/testb3_1.cpp:
(run):
* Source/JavaScriptCore/b3/testb3_7.cpp:
(testSimpleTuplePairUnused):
* Source/JavaScriptCore/b3/testb3_8.cpp:
(testConstDoubleMove):
(testConstFloatMove):
* Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::silentFillImpl):
(JSC::DFG::SpeculativeJIT::compileDoubleRep):
(JSC::DFG::compileClampDoubleToByte):
* Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compileGetByVal):
(JSC::DFG::SpeculativeJIT::compileDateGet):
(JSC::DFG::SpeculativeJIT::compileDateSet):
* Source/JavaScriptCore/jit/AssemblyHelpers.cpp:
(JSC::AssemblyHelpers::purifyNaN):
* Source/JavaScriptCore/jit/ThunkGenerators.cpp:
(JSC::roundThunkGenerator):
* Source/JavaScriptCore/wasm/WasmBBQJIT64.cpp:
(JSC::Wasm::BBQJITImpl::BBQJIT::emitMoveConst):

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



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list