[webkit-changes] [WebKit/WebKit] 1fac77: [JSC] Add signExtend8To64 / signExtend16To64

Yusuke Suzuki noreply at github.com
Tue Mar 14 16:54:23 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1fac7761b9cd74db4ab8e3592ebe3ef068b0d351
      https://github.com/WebKit/WebKit/commit/1fac7761b9cd74db4ab8e3592ebe3ef068b0d351
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2023-03-14 (Tue, 14 Mar 2023)

  Changed paths:
    M Source/JavaScriptCore/assembler/MacroAssemblerARM64.h
    M Source/JavaScriptCore/assembler/MacroAssemblerRISCV64.h
    M Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h
    M Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h
    M Source/JavaScriptCore/assembler/X86Assembler.h
    M Source/JavaScriptCore/assembler/testmasm.cpp
    M Source/JavaScriptCore/b3/B3LowerToAir.cpp
    M Source/JavaScriptCore/b3/B3Opcode.cpp
    M Source/JavaScriptCore/b3/B3Opcode.h
    M Source/JavaScriptCore/b3/B3ReduceStrength.cpp
    M Source/JavaScriptCore/b3/B3Validate.cpp
    M Source/JavaScriptCore/b3/B3Value.cpp
    M Source/JavaScriptCore/b3/B3Value.h
    M Source/JavaScriptCore/b3/B3ValueInlines.h
    M Source/JavaScriptCore/b3/B3ValueKey.cpp
    M Source/JavaScriptCore/b3/air/AirOpcode.opcodes
    M Source/JavaScriptCore/wasm/WasmAirIRGenerator64.cpp
    M Source/JavaScriptCore/wasm/WasmAirIRGeneratorBase.h
    M Source/JavaScriptCore/wasm/WasmBBQJIT.cpp

  Log Message:
  -----------
  [JSC] Add signExtend8To64 / signExtend16To64
https://bugs.webkit.org/show_bug.cgi?id=152232
rdar://106574794

Reviewed by Mark Lam.

This patch adds signExtend8To64 and signExtend16To64. We add corresponding handling in
B3 / Air so that we can use it for wasm operations. Previously we are using two instructions
signExtend8To32 and signExtend32To64. But now we can do it in one instruction.
We also use signExtend32To64 instead of signExtend32ToPtr when necessary to make it explicit
that this is 64bit extension.

* Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::zeroExtend16To64):
(JSC::MacroAssemblerARM64::signExtend16To64):
(JSC::MacroAssemblerARM64::zeroExtend8To64):
(JSC::MacroAssemblerARM64::signExtend8To64):
(JSC::MacroAssemblerARM64::signExtend32To64):
(JSC::MacroAssemblerARM64::signExtend32ToPtr):
* Source/JavaScriptCore/assembler/MacroAssemblerRISCV64.h:
(JSC::MacroAssemblerRISCV64::zeroExtend8To64):
(JSC::MacroAssemblerRISCV64::zeroExtend16To64):
(JSC::MacroAssemblerRISCV64::signExtend8To64):
(JSC::MacroAssemblerRISCV64::signExtend16To64):
(JSC::MacroAssemblerRISCV64::signExtend32ToPtr):
(JSC::MacroAssemblerRISCV64::signExtend32To64):
* Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::signExtend32To64):
(JSC::MacroAssemblerX86Common::signExtend32ToPtr):
* Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:
(JSC::MacroAssemblerX86_64::zeroExtend8To64):
(JSC::MacroAssemblerX86_64::signExtend8To64):
(JSC::MacroAssemblerX86_64::zeroExtend16To64):
(JSC::MacroAssemblerX86_64::signExtend16To64):
* Source/JavaScriptCore/assembler/X86Assembler.h:
(JSC::X86Assembler::movsbq_rr):
(JSC::X86Assembler::movswq_rr):
* Source/JavaScriptCore/b3/B3LowerToAir.cpp:
* Source/JavaScriptCore/b3/B3Opcode.cpp:
(WTF::printInternal):
* Source/JavaScriptCore/b3/B3Opcode.h:
* Source/JavaScriptCore/b3/B3ReduceStrength.cpp:
* Source/JavaScriptCore/b3/B3Validate.cpp:
* Source/JavaScriptCore/b3/B3Value.cpp:
(JSC::B3::Value::effects const):
(JSC::B3::Value::key const):
(JSC::B3::Value::typeFor):
* Source/JavaScriptCore/b3/B3Value.h:
* Source/JavaScriptCore/b3/B3ValueInlines.h:
* Source/JavaScriptCore/b3/B3ValueKey.cpp:
(JSC::B3::ValueKey::materialize const):
* Source/JavaScriptCore/b3/air/AirOpcode.opcodes:
* Source/JavaScriptCore/wasm/WasmAirIRGenerator64.cpp:
(JSC::Wasm::AirIRGenerator64::emitLoadOp):
* Source/JavaScriptCore/wasm/WasmAirIRGeneratorBase.h:
(JSC::Wasm::ExpressionType>::addI64ExtendSI32):
(JSC::Wasm::ExpressionType>::addI64Extend8S):
(JSC::Wasm::ExpressionType>::addI64Extend16S):
(JSC::Wasm::ExpressionType>::addI64Extend32S):
* Source/JavaScriptCore/wasm/WasmBBQJIT.cpp:
(JSC::Wasm::BBQJIT::emitLoadOp):
(JSC::Wasm::BBQJIT::addI64Extend8S):
(JSC::Wasm::BBQJIT::addI64Extend16S):
(JSC::Wasm::BBQJIT::addI64Extend32S):
(JSC::Wasm::BBQJIT::addI64ExtendSI32):

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




More information about the webkit-changes mailing list