[NativeAOT-LLVM]: Outstanding tasks tracking issue
#1,828 opened on Jan 19, 2022
Repository metrics
- Stars
- (1,605 stars)
- PR merge metrics
- (PR metrics pending)
Description
If someone want to contribute to the NativeAOT-LLVM branch, its not obvious what tasks need doing. This issue is a checklist of tasks that can be picked up by whoever is interested. Hopefully this will encourage engagement by providing a list where the difficulty can be marked. The list is in a vague priority list, top items = higher priority, but that's just my own preference and not official. Feel free to pick anything you like.
-
Complete RyuJIT compilation. The LLVM compilation is currently in 2 modules, the old IL->LLVM module, and the new RyuJIT IR -> LLVM module. The latter offers the opportunity to take advantage of RyuJit's optimisations.
In progress RyuJIT IR instructions:-
CT_INDIRECThttps://github.com/dotnet/runtimelab/pull/1768 -
GT_INDEX/GT_INDEX_ADDRhttps://github.com/dotnet/runtimelab/pull/1824 -
GT_OBJ/GT_STORE_OBJhttps://github.com/dotnet/runtimelab/pull/1825 -
GT_NULLCHECK#1871 -
GT_STORE_BLK -
GT_ARR_LENGTH -
GT_SUB -
GT_FIELD_LISThttps://github.com/dotnet/runtimelab/pull/2007 - Other IR op codes that need implementing can be identified by placing a break point at https://github.com/dotnet/runtimelab/blob/d30559af2b063dcaacdd973d3c9a2107b36c08bb/src/coreclr/jit/llvm.cpp#L1573
-
-
Complete Helper functions
-
CORINFO_HELP_READYTORUN_GENERIC_HANDLE(and generics in general) -
CORINFO_HELP_READYTORUN_GENERIC_STATIC_BASE -
CORINFO_HELP_GVMLOOKUP_FOR_SLOT -
CORINFO_HELP_READYTORUN_DELEGATE_CTORSome early discussion in #1870
-
-
Merge latest from main/NativeAOT or at least move forward. Note https://github.com/dotnet/runtimelab/pull/1681#issuecomment-954335818
-
Release configuration compilation, i.e.
src\tests\build nativeaot Release wasm targetsNonWindows skipnative /p:SmokeTestsOnly=true /p:LibrariesConfiguration=Releaseandsrc\tests\run runnativeaottests Release wasmcurrently fails -
Threads
- Thread suspension: add GC Polls.
- Confirm atomics are created, for exmaple,
Interlocked.* - Update runtime code, e.g. where we have
#ifndef FEATURE_WASM_THREADS - Shadow stack management needs to be moved to
Thread(for stack walking non-current threads) (partially done in #2672, still to do is adding shadow stack top to the transition frame) - Library code - update for enabling threads.
- Create new packages, ones for single threaded and ones for multithreaded.
- Anything else not thought of, build intergration.
-
Linux build - see #2605
-
Mac build
-
Mechanism to allow imports and exports through the WebAssembly Canonical ABI (for more info https://github.com/bytecodealliance/wit-bindgen)
-
Wasm Exceptions . Probably have to wait until the RyuJIT compilation is complete as Wasm Exceptions are not compatible with c++ exceptions which are currently produced by the IL->LLVM module
-
Remove IL->LLVM module
-
Other Smoke tests