dotnet / dotnet/runtime

[RyuJit/WASM] Decide what the baseline ISA should be

Open
#122,309 2 comments 0 reactions 1 assignee Claimed by @SingleAccretion View on GitHub
arch-wasm area-CodeGen-coreclr
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.