This issue describes planned improvements to Intel architecture (x86, x64) ISA support for .NET 9.
In .NET 8, AVX-512 ISA support was added (see #77034). In .NET 9, this support will be further improved and leveraged for improved performance, especially with expanded libraries utilization of the recently implemented AVX-512 support. Investigations and implementation will start to support the newly announced AVX10.
Libraries work
AVX10
AVX10 is a new set of vector ISA extensions, described here. We expect to begin preliminary work to support AVX10 in .NET 9, at least the parts that most directly map to the already supported AVX-512. An arch-avx10 GitHub label is defined to be added to all related PRs and issues: https://github.com/dotnet/runtime/labels/arch-avx10
RyuJIT feature work
RyuJIT optimization work
API design work
Future Work
Some of the planned work for .NET 9 have been pushed out to future work.
Libraries work
AVX10
RyuJIT feature work
Vector<T>
JCC erratum
Debugging / diagnostics work (@BruceForstall)
This issue describes planned improvements to Intel architecture (x86, x64) ISA support for .NET 9.
In .NET 8, AVX-512 ISA support was added (see #77034). In .NET 9, this support will be further improved and leveraged for improved performance, especially with expanded libraries utilization of the recently implemented AVX-512 support. Investigations and implementation will start to support the newly announced AVX10.
Libraries work
System.Numerics.Tensors.TensorPrimitivesclass #89639)AVX10
AVX10 is a new set of vector ISA extensions, described here. We expect to begin preliminary work to support AVX10 in .NET 9, at least the parts that most directly map to the already supported AVX-512. An
arch-avx10GitHub label is defined to be added to all related PRs and issues: https://github.com/dotnet/runtime/labels/arch-avx10Avx10v1to the runtime #99784AVX10converged vector ISA #98069-- The current avx512 optimizations is working for avx10 targets
-- @tannergooding has identified a set of tests and @khushal1996 has successfully completed all stress tests getting expected results.
RyuJIT feature work
uint32/uint64to/from packedfloat/double#80829Vector128/256/512<T>Finish Avx512 specific lightup for Vector128/256/512<T> #85207- All done except for Vector512.Dot, which will be pushed out to future item.
RyuJIT optimization work
float/doubletoulong. #89279API design work
Future Work
Some of the planned work for .NET 9 have been pushed out to future work.
Libraries work
Ascii.Utilitymethods withVector512code paths. #89280StoreAlignednotStorein WidenAsciiToUtf16 #89892AVX10
RyuJIT feature work
Vector512.Dot: AVX-512 specific light-up forVector512.DotFinish Avx512 specific lightup for Vector128/256/512<T> #85207Vector<T>Vector<T>expanding toVector512<T>, either automatically or opt-in. (@tannergooding plans to get back to it as a best effort.)JCC erratum
Debugging / diagnostics work (@BruceForstall)