RESOLVED FIXED Bug 97243
MIPS store8 functions
https://bugs.webkit.org/show_bug.cgi?id=97243
Summary MIPS store8 functions
Balazs Kilvady
Reported 2012-09-20 11:53:28 PDT
store8 functions added to MacroAssemblerMIPS.h and low level operations to MIPSAssembler.h. To be able to compile the master branch for MIPS the or32 patch from Chao-Ying Fu (https://bugs.webkit.org/show_bug.cgi?id=97157) also must be applied.
Attachments
MIPS store8 functions (4.49 KB, text/plain)
2012-09-20 11:58 PDT, Balazs Kilvady
barraclough: review+
webkit.review.bot: commit-queue-
MIPS store8 functions (5.63 KB, text/plain)
2012-09-21 02:07 PDT, Balazs Kilvady
no flags
MIPS store8 functions (5.45 KB, patch)
2012-09-21 02:15 PDT, Balazs Kilvady
no flags
Balazs Kilvady
Comment 1 2012-09-20 11:58:33 PDT
Created attachment 164959 [details] MIPS store8 functions
WebKit Review Bot
Comment 2 2012-09-21 00:55:05 PDT
Comment on attachment 164959 [details] MIPS store8 functions Rejecting attachment 164959 [details] from commit-queue. Failed to run "['/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch', '--status-host=queues.webkit.org', '-..." exit_code: 2 Last 500 characters of output: Kit/chromium/third_party/yasm/source/patched-yasm --revision 154708 --non-interactive --force --accept theirs-conflict --ignore-externals' in '/mnt/git/webkit-commit-queue/Source/WebKit/chromium' 51>At revision 154708. ________ running '/usr/bin/python tools/clang/scripts/update.py --mac-only' in '/mnt/git/webkit-commit-queue/Source/WebKit/chromium' ________ running '/usr/bin/python gyp_webkit' in '/mnt/git/webkit-commit-queue/Source/WebKit/chromium' Updating webkit projects from gyp files... Full output: http://queues.webkit.org/results/13948513
Balazs Kilvady
Comment 3 2012-09-21 02:05:57 PDT
Comment on attachment 164959 [details] MIPS store8 functions >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
Balazs Kilvady
Comment 4 2012-09-21 02:07:38 PDT
Created attachment 165082 [details] MIPS store8 functions
Balazs Kilvady
Comment 5 2012-09-21 02:15:45 PDT
Created attachment 165085 [details] MIPS store8 functions
Simon Hausmann
Comment 6 2012-09-24 05:31:55 PDT
Holger, do you know a bit of MIPS assembler to review this? :)
WebKit Review Bot
Comment 7 2012-09-24 08:05:06 PDT
Comment on attachment 165085 [details] MIPS store8 functions Clearing flags on attachment: 165085 Committed r129367: <http://trac.webkit.org/changeset/129367>
WebKit Review Bot
Comment 8 2012-09-24 08:05:10 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.