WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
MIPS store8 functions
mips_assembler.diff (text/plain), 4.49 KB, created by
Balazs Kilvady
on 2012-09-20 11:58:33 PDT
(
hide
)
Description:
MIPS store8 functions
Filename:
MIME Type:
Creator:
Balazs Kilvady
Created:
2012-09-20 11:58:33 PDT
Size:
4.49 KB
patch
obsolete
>diff --git a/Source/JavaScriptCore/assembler/MIPSAssembler.h b/Source/JavaScriptCore/assembler/MIPSAssembler.h >index 65307d9..d3f8af9 100644 >--- a/Source/JavaScriptCore/assembler/MIPSAssembler.h >+++ b/Source/JavaScriptCore/assembler/MIPSAssembler.h >@@ -405,6 +405,18 @@ public: > loadDelayNop(); > } > >+ void sb(RegisterID rt, RegisterID rs, int offset) >+ { >+ emitInst(0xa0000000 | (rt << OP_SH_RT) | (rs << OP_SH_RS) >+ | (offset & 0xffff)); >+ } >+ >+ void sh(RegisterID rt, RegisterID rs, int offset) >+ { >+ emitInst(0xa4000000 | (rt << OP_SH_RT) | (rs << OP_SH_RS) >+ | (offset & 0xffff)); >+ } >+ > void sw(RegisterID rt, RegisterID rs, int offset) > { > emitInst(0xac000000 | (rt << OP_SH_RT) | (rs << OP_SH_RS) >diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h b/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h >index 8b3ce9f..cfd6a64 100644 >--- a/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h >+++ b/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h >@@ -779,6 +779,81 @@ public: > return dataLabel; > } > >+ void store8(RegisterID src, BaseIndex address) >+ { >+ if (address.offset >= -32768 && address.offset <= 32767 >+ && !m_fixedWidth) { >+ /* >+ sll addrTemp, address.index, address.scale >+ addu addrTemp, addrTemp, address.base >+ sb src, address.offset(addrTemp) >+ */ >+ m_assembler.sll(addrTempRegister, address.index, address.scale); >+ m_assembler.addu(addrTempRegister, addrTempRegister, address.base); >+ m_assembler.sb(src, addrTempRegister, address.offset); >+ } else { >+ /* >+ sll addrTemp, address.index, address.scale >+ addu addrTemp, addrTemp, address.base >+ lui immTemp, (address.offset + 0x8000) >> 16 >+ addu addrTemp, addrTemp, immTemp >+ sb src, (address.offset & 0xffff)(at) >+ */ >+ m_assembler.sll(addrTempRegister, address.index, address.scale); >+ m_assembler.addu(addrTempRegister, addrTempRegister, address.base); >+ m_assembler.lui(immTempRegister, (address.offset + 0x8000) >> 16); >+ m_assembler.addu(addrTempRegister, addrTempRegister, >+ immTempRegister); >+ m_assembler.sb(src, addrTempRegister, address.offset); >+ } >+ } >+ >+ void store8(TrustedImm32 imm, void* address) >+ { >+ /* >+ li immTemp, imm >+ li addrTemp, address >+ sb src, 0(addrTemp) >+ */ >+ if (!imm.m_value && !m_fixedWidth) { >+ move(TrustedImmPtr(address), addrTempRegister); >+ m_assembler.sb(MIPSRegisters::zero, addrTempRegister, 0); >+ } else { >+ move(imm, immTempRegister); >+ move(TrustedImmPtr(address), addrTempRegister); >+ m_assembler.sb(immTempRegister, addrTempRegister, 0); >+ } >+ } >+ >+ void store16(RegisterID src, BaseIndex address) >+ { >+ if (address.offset >= -32768 && address.offset <= 32767 >+ && !m_fixedWidth) { >+ /* >+ sll addrTemp, address.index, address.scale >+ addu addrTemp, addrTemp, address.base >+ sh src, address.offset(addrTemp) >+ */ >+ m_assembler.sll(addrTempRegister, address.index, address.scale); >+ m_assembler.addu(addrTempRegister, addrTempRegister, address.base); >+ m_assembler.sh(src, addrTempRegister, address.offset); >+ } else { >+ /* >+ sll addrTemp, address.index, address.scale >+ addu addrTemp, addrTemp, address.base >+ lui immTemp, (address.offset + 0x8000) >> 16 >+ addu addrTemp, addrTemp, immTemp >+ sh src, (address.offset & 0xffff)(at) >+ */ >+ m_assembler.sll(addrTempRegister, address.index, address.scale); >+ m_assembler.addu(addrTempRegister, addrTempRegister, address.base); >+ m_assembler.lui(immTempRegister, (address.offset + 0x8000) >> 16); >+ m_assembler.addu(addrTempRegister, addrTempRegister, >+ immTempRegister); >+ m_assembler.sh(src, addrTempRegister, address.offset); >+ } >+ } >+ > void store32(RegisterID src, ImplicitAddress 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 Raw
Flags:
barraclough
:
review+
webkit.review.bot
:
commit-queue-
Actions:
View
Attachments on
bug 97243
:
164959
|
165082
|
165085