-
Notifications
You must be signed in to change notification settings - Fork 156
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add design/#986 (non-trapping float-to-int) to agenda #3
Conversation
(I'm not sure if this is the process for adding something to the agenda; let's see :) This issue has been coming up a lot lately; this seems like a quick fix we could make that could have immediate improvements in usability and performance.
This would fit under performance, though having numbers and proposed semantics would be helpful. Who's championing this? Should we explore other non-trapping things, or just this one? |
I propose these semantics:
Key question: should the existing
Float->int conversion is the only trapping operator that has gotten such attention at this point. There aren't yet any observed performance problems. While there were reports about slowdowns, those were due to Emscripten using calls to imported JS functions. The code in Emscripten has since been changed, and I'm not aware of any reports since. The main immediate concerns I'm aware of are:
|
Hardware ISA survey:
|
Relaxing the existing instructions sounds attractive. Especially since your hardware survey seems to imply that it would actually make them faster on some platforms, in which case I doubt that any producer would still want to use the trapping ones? |
That was my impression as well. Renaming seems like a good idea in case later it makes sense, for some other instruction, to have both trapping/saturating variants of the same logical operation. |
So are we good to add this to the agenda (merge)? |
I'd still like to know who's championing it, and will present. At the meeting I'll ask for performance numbers, and which other operations should have the same treatment. I'm OK merging the topic in with the understanding that these questions should be answered in the presentation. |
I think @sunfishcode volunteered :) |
On the topic of perf measurements: I think the high-order bit here is removing a source of unnecessary developer pain and for that we do have the "numbers" in the form of many independent people hitting this as Jukka was describing in design/#986. As long as it doesn't regress perf, we should do it; that it should improve perf by some indeterminate amount is just a cherry on top. |
Was the original pitch. So it's not a performance proposal? I'd rather keep the meeting focused on performance TBH. Do you think this needs to happen soon, or could we wait until the subsequent meeting? With only 2 days I'm confident we can get through threads but am not sure SIMD will be done. |
Yes, this should happen soon, especially if the conclusion is to change semantics. This is one of the few unnecessary problems many people seem to hit when switching from asm.js to wasm or using wasm for the first time. Also, there seems to already be some amount of consensus. |
So, can we add this to the agenda? I don't expect it will take much time and it doesn't seem necessary to restrict the meeting to exclusively performance issues. |
OK let's add this to the agenda. Can we timebox to 30 min or 1h between threads and SIMD? Can you update the PR accordingly? |
rgr, PTAL |
On 18 May 2017 at 15:38, Luke Wagner ***@***.***> wrote:
Renaming seems like a good idea in case later it makes sense, for some
other instruction, to have both trapping/saturating variants of the same
logical operation.
Hm, renaming existing instructions would in fact be a breaking change (of
the text format) at this point. Better not do that.
|
Would it break anyone in practice, though? |
(I'm not sure if this is the process for adding something to the agenda; let's see :)
This issue has been coming up a lot lately; this seems like a quick fix we could make that could yield immediate improvements in usability and performance.