Thanks for you comments! I am also planning to update the memory initialization scheme to use wait and notify so that it works with racing modules instead of requiring the runtime to ensure that no module is called into before the main module is finished initializing. In a web context the runtime will have to ensure the main thread wins this race because it is not allowed to wait, but this is still strictly more general than the current scheme. Does that sound good to you?
Thu, Aug 22
Fri, Aug 16
Wed, Aug 14
Tue, Aug 13
Wed, Aug 7
@tlively Another thing we could consider is adding WebAssemblyISD opcodes for zero extending extract vector element - similar to what X86ISD does with PEXTRW/PEXTRB - this would avoid the need for the (and, extract_element(v, c), 0xFFFF) pattern that is causing all the problems.
Tue, Aug 6
It would be good to add a test here, too ;)
Sounds good; I'm happy to help out.
Mon, Aug 5
Oops it would be good to have a test, too ;)
I have mixed feelings about this. One one hand I understand that this file is huge and cross-cutting changes could cause a lot of manual updating work, but on the other hand each individual test was very readable and succinct. The auto-generated version would certainly be less work to maintain, but its enormous amount of irrelevant information and repetition is unfortunate. @aheejin, what do you think about this?
LGTM with a small test format change.
Wed, Jul 31
I like this approach. I prefer the option 2 among the three options you described: 1 is redundantly doing what ISel is already doing, and 3 makes LLVM-backend generated code incorrect so we have to rely on the other tool to fix it, which seems not very desirable. As you said, having to add an extra argument to the interface of CanLowerReturn is a bit sad but I don't really mind that if others are OK with it.
Tue, Jul 30
This looks great! The code is straightforward and I like the extra information in the text format. We will have to do a little more work to support return_call_indirect, but it looks like doing so should be fairly straightforward on top of this base.
Mon, Jul 29
- Update documentation
Jul 26 2019
- Do not allow varargs tail calls
- Address comments, add a few more tests
- Record proper return types for indirect tail calls as well
Jul 24 2019
Jul 23 2019
Jul 19 2019
Jul 18 2019
- Simplify flags logic
LGTM modulo a test!
Jul 16 2019
LGTM apart from one last comment
Jul 15 2019
Jul 12 2019
Jul 11 2019
- and other comment
- Update comment
- Add mutable-globals
Jul 8 2019
Jul 3 2019
Yeah this looks great. Thanks!
Jul 2 2019
LGTM with a quick explanatory comment!
Jun 28 2019
@sbc100 it's been a long time but there is nothing blocking this change any more, so PTAL!
- Remove extraneous braces
Change to use explicit flags instead of depending on shared
memory. This means this change is a nop in existing
toolchains. Emscripten can be taught to use the new flags explicitly
without requiring a manual double roll.
Jun 26 2019
Jun 20 2019
Jun 19 2019
This CL does not provide a mechanism for enforcing that the lanes of a floating point vector are constant, and it doesn't look like clang supports that kind of check. That makes this CL a half-baked solution, so I'm not sure we should actually go in this direction.
Jun 18 2019
That was simple! Thank you!
Jun 12 2019
- Address comments
Jun 9 2019
Jun 7 2019
- Restore previous logic, add tests for strange ABIs and prototype mismatches
Jun 6 2019
- Add TODO in FastISel, add isReturn attribute, integrate into existing logic flow
Jun 5 2019
- Fix formatting and error message, add documentation and notail tests