WebKit Bugzilla
Attachment 339289 Details for
Bug 185188
: [JSC] Add MacroAssembler::and16 and store16
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-185188-20180502170502.patch (text/plain), 5.13 KB, created by
Yusuke Suzuki
on 2018-05-02 01:05:03 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Yusuke Suzuki
Created:
2018-05-02 01:05:03 PDT
Size:
5.13 KB
patch
obsolete
>Subversion Revision: 231226 >diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog >index 4a1162741a4ea0721993ac2a4fcb300b9910b63e..28cfda2063218aee583af5150743c40fdd8ce8cc 100644 >--- a/Source/JavaScriptCore/ChangeLog >+++ b/Source/JavaScriptCore/ChangeLog >@@ -1,3 +1,23 @@ >+2018-05-02 Yusuke Suzuki <utatane.tea@gmail.com> >+ >+ [JSC] Add MacroAssembler::and16 and store16 >+ https://bugs.webkit.org/show_bug.cgi?id=185188 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ r231129 requires and16(ImplicitAddress, RegisterID) and store16(RegisterID, ImplicitAddress) implementations. >+ But only ARM64 and X86 families have them. This patch adds these methods for ARM, ARMv7, and MIPS. >+ >+ * assembler/MacroAssemblerARM.h: >+ (JSC::MacroAssemblerARM::and16): >+ (JSC::MacroAssemblerARM::store16): >+ * assembler/MacroAssemblerARMv7.h: >+ (JSC::MacroAssemblerARMv7::and16): >+ (JSC::MacroAssemblerARMv7::store16): >+ * assembler/MacroAssemblerMIPS.h: >+ (JSC::MacroAssemblerMIPS::and16): >+ (JSC::MacroAssemblerMIPS::store16): >+ > 2018-05-01 Yusuke Suzuki <utatane.tea@gmail.com> > > [JSC] Add SameValue DFG node >diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerARM.h b/Source/JavaScriptCore/assembler/MacroAssemblerARM.h >index e144ac4ec72e227d0700570c89d93fc8aecd585e..266a818f570943b4cd9ff5d3e0ccf2ee2a6a9018 100644 >--- a/Source/JavaScriptCore/assembler/MacroAssemblerARM.h >+++ b/Source/JavaScriptCore/assembler/MacroAssemblerARM.h >@@ -176,6 +176,12 @@ class MacroAssemblerARM : public AbstractMacroAssembler<Assembler> { > and32(dataTempRegister, dest); > } > >+ void and16(Address src, RegisterID dest) >+ { >+ load16(src, dataTempRegister); >+ and32(dataTempRegister, dest); >+ } >+ > void lshift32(RegisterID shiftAmount, RegisterID dest) > { > lshift32(dest, shiftAmount, dest); >@@ -563,6 +569,11 @@ class MacroAssemblerARM : public AbstractMacroAssembler<Assembler> { > m_assembler.baseIndexTransfer16(ARMAssembler::StoreUint16, src, address.base, address.index, static_cast<int>(address.scale), address.offset); > } > >+ void store16(RegisterID src, ImplicitAddress address) >+ { >+ m_assembler.dataTransfer16(ARMAssembler::StoreUint16, src, address.base, address.offset); >+ } >+ > void store32(RegisterID src, ImplicitAddress address) > { > m_assembler.dataTransfer32(ARMAssembler::StoreUint32, src, address.base, address.offset); >diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h b/Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h >index cd104590c499f1d9342322e4239c572aaeaf6e4c..3d41783f7ac75e27c46357071612285f7a2560e1 100644 >--- a/Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h >+++ b/Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h >@@ -299,6 +299,12 @@ class MacroAssemblerARMv7 : public AbstractMacroAssembler<Assembler> { > and32(dataTempRegister, dest); > } > >+ void and16(Address src, RegisterID dest) >+ { >+ load16(src, dataTempRegister); >+ and32(dataTempRegister, dest); >+ } >+ > void countLeadingZeros32(RegisterID src, RegisterID dest) > { > m_assembler.clz(dest, src); >@@ -868,6 +874,11 @@ class MacroAssemblerARMv7 : public AbstractMacroAssembler<Assembler> { > move(imm8, dataTempRegister); > store8(dataTempRegister, address); > } >+ >+ void store16(RegisterID src, ImplicitAddress address) >+ { >+ store16(src, setupArmAddress(address)); >+ } > > void store16(RegisterID src, BaseIndex address) > { >diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h b/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h >index 524e550c289c831011fc207d754309c420b0b7bb..0142f9045842e3bb08b6186c5946fd564bc531f8 100644 >--- a/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h >+++ b/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h >@@ -362,6 +362,12 @@ class MacroAssemblerMIPS : public AbstractMacroAssembler<Assembler> { > } > } > >+ void and16(Address src, RegisterID dest) >+ { >+ load16(src, dataTempRegister); >+ and32(dataTempRegister, dest); >+ } >+ > void countLeadingZeros32(RegisterID src, RegisterID dest) > { > #if WTF_MIPS_ISA_AT_LEAST(32) >@@ -1359,6 +1365,23 @@ class MacroAssemblerMIPS : public AbstractMacroAssembler<Assembler> { > } > } > >+ void store16(RegisterID src, ImplicitAddress address) >+ { >+ if (address.offset >= -32768 && address.offset <= 32767 >+ && !m_fixedWidth) >+ m_assembler.sh(src, address.base, address.offset); >+ else { >+ /* >+ lui addrTemp, (offset + 0x8000) >> 16 >+ addu addrTemp, addrTemp, base >+ sh src, (offset & 0xffff)(addrTemp) >+ */ >+ m_assembler.lui(addrTempRegister, (address.offset + 0x8000) >> 16); >+ m_assembler.addu(addrTempRegister, addrTempRegister, address.base); >+ m_assembler.sh(src, addrTempRegister, address.offset); >+ } >+ } >+ > void store16(RegisterID src, BaseIndex address) > { > if (address.offset >= -32768 && address.offset <= 32767
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
mark.lam
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 185188
: 339289