WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
115722
[sh4] Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT
https://bugs.webkit.org/show_bug.cgi?id=115722
Summary
[sh4] Take advantage of pre-decrement and post-increment opcodes for sh4 base...
Julien Brianceau
Reported
2013-05-07 05:12:08 PDT
Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT.
Attachments
Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT
(6.93 KB, patch)
2013-05-07 05:16 PDT
,
Julien Brianceau
no flags
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Julien Brianceau
Comment 1
2013-05-07 05:16:07 PDT
Created
attachment 200892
[details]
Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT
WebKit Commit Bot
Comment 2
2013-05-07 05:17:09 PDT
Attachment 200892
[details]
did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/assembler/MacroAssemblerSH4.h', u'Source/JavaScriptCore/assembler/SH4Assembler.h']" exit_code: 1 Source/JavaScriptCore/assembler/SH4Assembler.h:120: enum members should use InterCaps with an initial capital letter. [readability/enum_casing] [4] Total errors found: 1 in 3 files If any of these errors are false positives, please file a bug against check-webkit-style.
Julien Brianceau
Comment 3
2013-05-07 05:19:55 PDT
Comment on
attachment 200892
[details]
Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT View in context:
https://bugs.webkit.org/attachment.cgi?id=200892&action=review
>> Source/JavaScriptCore/assembler/SH4Assembler.h:120 >> + MOVW_READ_RMINC_OPCODE = 0x6005, > > enum members should use InterCaps with an initial capital letter. [readability/enum_casing] [4]
All other 100+ entries in this enum are in capital letters, so I think I'll leave it as it is.
Julien Brianceau
Comment 4
2013-05-07 05:30:07 PDT
I didn't see any regression when testing this patch with: - Tools/Scripts/run-javascriptcore-tests - Tools/Scripts/run-fast-jsc Very little speed improvement according to SunSpider with this patch: Rev 149664 without patch: ============================================ RESULTS (means and 95% confidence intervals) -------------------------------------------- Total: 13461.8ms +/- 0.3% -------------------------------------------- 3d: 2751.5ms +/- 0.2% cube: 838.5ms +/- 0.7% morph: 500.5ms +/- 0.2% raytrace: 1412.5ms +/- 0.4% access: 1948.0ms +/- 0.1% binary-trees: 136.5ms +/- 0.7% fannkuch: 1176.8ms +/- 0.4% nbody: 454.8ms +/- 1.2% nsieve: 180.0ms +/- 1.8% bitops: 1051.8ms +/- 0.5% 3bit-bits-in-byte: 94.8ms +/- 0.8% bits-in-byte: 122.0ms +/- 0.0% bitwise-and: 202.8ms +/- 2.7% nsieve-bits: 632.3ms +/- 0.8% controlflow: 105.5ms +/- 4.5% recursive: 105.5ms +/- 4.5% crypto: 1236.0ms +/- 0.2% aes: 725.0ms +/- 0.8% md5: 328.3ms +/- 1.0% sha1: 182.8ms +/- 0.4% date: 1983.0ms +/- 0.7% format-tofte: 927.3ms +/- 0.6% format-xparb: 1055.8ms +/- 1.8% math: 988.5ms +/- 2.1% cordic: 289.8ms +/- 2.0% partial-sums: 395.5ms +/- 1.5% spectral-norm: 303.3ms +/- 6.0% regexp: 563.3ms +/- 0.1% dna: 563.3ms +/- 0.1% string: 2834.3ms +/- 0.8% base64: 224.5ms +/- 3.3% fasta: 459.0ms +/- 9.8% tagcloud: 568.3ms +/- 0.9% unpack-code: 1242.5ms +/- 4.2% validate-input: 340.0ms +/- 2.5% Rev 149664 with patch: ============================================ RESULTS (means and 95% confidence intervals) -------------------------------------------- Total: 13311.0ms +/- 0.5% -------------------------------------------- 3d: 2599.8ms +/- 0.4% cube: 834.5ms +/- 0.4% morph: 446.3ms +/- 0.9% raytrace: 1319.0ms +/- 1.0% access: 1957.3ms +/- 0.5% binary-trees: 137.3ms +/- 3.7% fannkuch: 1180.0ms +/- 1.1% nbody: 456.5ms +/- 0.9% nsieve: 183.5ms +/- 0.5% bitops: 1059.3ms +/- 0.4% 3bit-bits-in-byte: 94.5ms +/- 1.7% bits-in-byte: 121.5ms +/- 0.8% bitwise-and: 202.0ms +/- 0.0% nsieve-bits: 641.3ms +/- 0.8% controlflow: 103.3ms +/- 0.8% recursive: 103.3ms +/- 0.8% crypto: 1236.3ms +/- 0.9% aes: 739.8ms +/- 1.1% md5: 313.5ms +/- 0.5% sha1: 183.0ms +/- 3.0% date: 2020.0ms +/- 1.5% format-tofte: 949.0ms +/- 1.6% format-xparb: 1071.0ms +/- 3.4% math: 987.0ms +/- 2.7% cordic: 293.0ms +/- 2.3% partial-sums: 410.8ms +/- 7.9% spectral-norm: 283.3ms +/- 0.3% regexp: 532.5ms +/- 1.2% dna: 532.5ms +/- 1.2% string: 2815.8ms +/- 1.1% base64: 213.8ms +/- 2.0% fasta: 452.5ms +/- 9.2% tagcloud: 588.8ms +/- 3.3% unpack-code: 1189.3ms +/- 4.8% validate-input: 371.5ms +/- 2.9%
Oliver Hunt
Comment 5
2013-05-07 08:54:16 PDT
Comment on
attachment 200892
[details]
Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT View in context:
https://bugs.webkit.org/attachment.cgi?id=200892&action=review
I had some war moments while reading this, so i'll hold off on r+ pending replies
> Source/JavaScriptCore/assembler/MacroAssemblerSH4.h:1043 > - m_assembler.loadConstant(address.offset, scr); > + m_assembler.loadConstant(address.offset + 8, scr);
wat?
> Source/JavaScriptCore/assembler/MacroAssemblerSH4.h:1057 > + add32(TrustedImm32(address.offset + 8), scr);
again wat?
> Source/JavaScriptCore/assembler/MacroAssemblerSH4.h:1170 > - m_assembler.ensureSpace(m_assembler.maxInstructionSize + 68, sizeof(uint32_t)); > + m_assembler.ensureSpace(m_assembler.maxInstructionSize + 58, sizeof(uint32_t));
This magic constant scares me, what is it?
>>> Source/JavaScriptCore/assembler/SH4Assembler.h:120 >>> + MOVW_READ_RMINC_OPCODE = 0x6005, >> >> enum members should use InterCaps with an initial capital letter. [readability/enum_casing] [4] > > All other 100+ entries in this enum are in capital letters, so I think I'll leave it as it is.
I think we just need to modify the style bot to ignore these
Julien Brianceau
Comment 6
2013-05-07 09:06:02 PDT
Comment on
attachment 200892
[details]
Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT View in context:
https://bugs.webkit.org/attachment.cgi?id=200892&action=review
>> Source/JavaScriptCore/assembler/MacroAssemblerSH4.h:1043 >> + m_assembler.loadConstant(address.offset + 8, scr); > > wat?
Before patch we had something like: 1. load effective address in scr 2. store first part of the double at address scr 3. add 4 to scr 4. store second part of the double at address scr With patch, I do this as it is in LLINT: 1. load effective address + 8 in scr 2. store the second part of the double at address scr with predecrement of scr (-4) 3. store the first part of the double at address scr with predecrement of scr (-4) Result is the same but we save one opcode.
>> Source/JavaScriptCore/assembler/MacroAssemblerSH4.h:1057 >> + add32(TrustedImm32(address.offset + 8), scr); > > again wat?
Same idea (and I removed the if, because this case is already checked in add32() function).
>> Source/JavaScriptCore/assembler/MacroAssemblerSH4.h:1170 >> + m_assembler.ensureSpace(m_assembler.maxInstructionSize + 58, sizeof(uint32_t)); > > This magic constant scares me, what is it?
It scares me too :/ From what I understand, it ensures that we'll have enough contiguous space in the instruction buffer (to be able to do relative short jumps for instance). I reduced the constant size from 10 because I removed 10 bytes of instructions, but I'm not very proud of this...
>>>> Source/JavaScriptCore/assembler/SH4Assembler.h:120 >>>> + MOVW_READ_RMINC_OPCODE = 0x6005, >>> >>> enum members should use InterCaps with an initial capital letter. [readability/enum_casing] [4] >> >> All other 100+ entries in this enum are in capital letters, so I think I'll leave it as it is. > > I think we just need to modify the style bot to ignore these
Ok
WebKit Commit Bot
Comment 7
2013-05-07 09:52:36 PDT
Comment on
attachment 200892
[details]
Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT Clearing flags on attachment: 200892 Committed
r149676
: <
http://trac.webkit.org/changeset/149676
>
WebKit Commit Bot
Comment 8
2013-05-07 09:52:38 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.
Top of Page
Format For Printing
XML
Clone This Bug