WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
88314
Improve Math.round and Math.floor intrinsic
https://bugs.webkit.org/show_bug.cgi?id=88314
Summary
Improve Math.round and Math.floor intrinsic
Yuqiang Xian
Reported
2012-06-05 01:38:37 PDT
Currently we call a native function from the JIT code to complete the "round" and "floor" operations. We could inline some fast paths especially for those positive values on the platforms where floating point truncation is supported.
Attachments
patch
(5.18 KB, patch)
2012-06-05 01:52 PDT
,
Yuqiang Xian
fpizlo
: review+
Details
Formatted Diff
Diff
Performance result
(6.94 KB, text/plain)
2012-06-05 01:55 PDT
,
Yuqiang Xian
no flags
Details
View All
Add attachment
proposed patch, testcase, etc.
Yuqiang Xian
Comment 1
2012-06-05 01:52:18 PDT
Created
attachment 145729
[details]
patch
Yuqiang Xian
Comment 2
2012-06-05 01:55:00 PDT
Created
attachment 145730
[details]
Performance result ~3% improvement on Kraken (32% on audio-oscillator), and nearly 1% on SunSpider.
Yuqiang Xian
Comment 3
2012-06-05 01:58:30 PDT
(In reply to
comment #2
)
> Created an attachment (id=145730) [details] > Performance result > > ~3% improvement on Kraken (32% on audio-oscillator), and nearly 1% on SunSpider.
o... for clarification, overall SS improvement is not obvious, but definitely 9% on one case.
Filip Pizlo
Comment 4
2012-06-05 20:47:07 PDT
Comment on
attachment 145729
[details]
patch View in context:
https://bugs.webkit.org/attachment.cgi?id=145729&action=review
This looks right. I'm curious what your thoughts are about the comparing against neg zero. Maybe this code would work the same if you just used zero instead of neg zero, which would be faster, since regular zero is easier to load in SSE? Not marking cq+ just because I want to give you an opportunity to respond. But I think the code is correct so if there's nothing that needs changing then I'm fine with this being landed as-is.
> Source/JavaScriptCore/jit/ThunkGenerators.cpp:197 > + doubleResult.append(jit.branchDouble(MacroAssembler::DoubleEqual, SpecializedThunkJIT::fpRegT0, SpecializedThunkJIT::fpRegT1));
Is this right? Double equality has strange handling of zero. 0 == -0 for example.
Yuqiang Xian
Comment 5
2012-06-05 21:02:17 PDT
(In reply to
comment #4
)
> (From update of
attachment 145729
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=145729&action=review
> > This looks right. I'm curious what your thoughts are about the comparing against neg zero. Maybe this code would work the same if you just used zero instead of neg zero, which would be faster, since regular zero is easier to load in SSE? > > Not marking cq+ just because I want to give you an opportunity to respond. But I think the code is correct so if there's nothing that needs changing then I'm fine with this being landed as-is. > > > Source/JavaScriptCore/jit/ThunkGenerators.cpp:197 > > + doubleResult.append(jit.branchDouble(MacroAssembler::DoubleEqual, SpecializedThunkJIT::fpRegT0, SpecializedThunkJIT::fpRegT1)); > > Is this right? Double equality has strange handling of zero. 0 == -0 for example.
You're right. It should be 0.
Yuqiang Xian
Comment 6
2012-06-05 22:28:24 PDT
Landed with Filip's comments addressed:
http://trac.webkit.org/changeset/119558
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