[RyuJit/WASM] Decide what the baseline ISA should be
- Dominant language
- C#
- Stars
- 18.3k
- Forks
- 5.6k
- PR merge metrics
- PR metrics pending
Description
I. e. what minimum set of [features](https://webassembly.org/features/) we will assume "always exists" and hence won't need to add ISA constants and `compOpportunisticallyDependsOn` checks (in the Jit). This is notably **not** about what the "default" target ISA should be.
Some things that will definitely be in the baseline:
1) https://github.com/WebAssembly/mutable-global (`global.set`).
Some things that should probably be in the baseline but have only minor impact on code generation (hence it wouldn't be hard to support excluding them):
1) https://github.com/WebAssembly/nontrapping-float-to-int-conversions (`trunc_sat` family of instructions).
2) https://github.com/WebAssembly/bulk-memory-operations (native `memmove`/`memset`).
Some things that would have major impact on code generation:
1) Exception handling
- Notably, this proposal has two versions: legacy and "new / exnref", which is relatively new.
- NAOT-LLVM supports turning exceptions off with 2 other unwinding schemes and it has been an often-used feature. However for R2R it may be acceptable to say "no exceptions -> interpreter only".
Part of: https://github.com/dotnet/runtime/issues/121208.
Contributor guide
Assessment
This issue has not been assessed yet.