Bug 184909

Summary: Disable usage of fused multiply-add instructions for JSC with compiler flag
Product: WebKit Reporter: Dominik Inführ <dominik.infuehr>
Component: New BugsAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: commit-queue, fpizlo, mark.lam, saam, webkit-bug-importer, ysuzuki
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch none

Description Dominik Inführ 2018-04-24 00:46:25 PDT
Disable usage of fused multiply-add instructions for JSC with compiler flag
Comment 1 Dominik Inführ 2018-04-24 00:59:09 PDT
Created attachment 338641 [details]
Patch
Comment 2 Yusuke Suzuki 2018-04-26 13:08:03 PDT
Comment on attachment 338641 [details]
Patch

Can you limit the scope of this change? If fused-multiply-add works well, we do not need this flag.
Comment 3 Filip Pizlo 2018-04-26 13:14:44 PDT
Fused multiply-add gives a precision boost that results in double math returning a result that does not match bit-for-bit what you would have gotten without the fusion. Based on this, I think it might be a good idea to disable it for all of JSC. 

I would definitely want to disable it if it’s free to disable it.
Comment 4 Yusuke Suzuki 2018-04-26 13:53:17 PDT
(In reply to Filip Pizlo from comment #3)
> Fused multiply-add gives a precision boost that results in double math
> returning a result that does not match bit-for-bit what you would have
> gotten without the fusion. Based on this, I think it might be a good idea to
> disable it for all of JSC. 
> 
> I would definitely want to disable it if it’s free to disable it.

Interesting. After considering about this, I think, in JSC, we do not have performance sensitive FMAs (I believe). So disabling is OK.
I'm a bit worried about disabling this in the entire WebKit tree due to,

1. performance reason. If we have a non-result-sensitive performance-sensitive FMAs, this can affect on that (like, implementing some graphic filters)
2. coordination with third party libraries.

what do you think of?
Comment 5 Filip Pizlo 2018-04-26 14:16:26 PDT
(In reply to Yusuke Suzuki from comment #4)
> (In reply to Filip Pizlo from comment #3)
> > Fused multiply-add gives a precision boost that results in double math
> > returning a result that does not match bit-for-bit what you would have
> > gotten without the fusion. Based on this, I think it might be a good idea to
> > disable it for all of JSC. 
> > 
> > I would definitely want to disable it if it’s free to disable it.
> 
> Interesting. After considering about this, I think, in JSC, we do not have
> performance sensitive FMAs (I believe). So disabling is OK.
> I'm a bit worried about disabling this in the entire WebKit tree due to,
> 
> 1. performance reason. If we have a non-result-sensitive
> performance-sensitive FMAs, this can affect on that (like, implementing some
> graphic filters)
> 2. coordination with third party libraries.
> 
> what do you think of?

Sounds like a good reason to only disable fused fma in JSC and leave it elsewhere.
Comment 6 Dominik Inführ 2018-05-03 02:47:25 PDT
The patch was already reviewed, is there anything for me left to do?
Comment 7 WebKit Commit Bot 2018-05-03 04:58:55 PDT
Comment on attachment 338641 [details]
Patch

Clearing flags on attachment: 338641

Committed r231301: <https://trac.webkit.org/changeset/231301>
Comment 8 WebKit Commit Bot 2018-05-03 04:58:57 PDT
All reviewed patches have been landed.  Closing bug.
Comment 9 Radar WebKit Bug Importer 2018-05-03 04:59:20 PDT
<rdar://problem/39938586>