-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement AVX-512 support #77034
Comments
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsThis issue will track work being done to support the AVX-512 ISA extensions in RyuJIT. A GitHub project also exists to do this tracking: https://github.com/orgs/dotnet/projects/157 We will alter how we track this work based on experience with both mechanisms. Planned for .NET 8
|
I'm rather interested to know what the conceptual idea will be to use the mask registers. Will it be just an intrinsic-approach? Or will there also be some logic built around? I'm asking this as the mask registers k0-k7 are directly set into EVEX and there is no way to provide a constant. This would either mean we specifically use a register, like k3, and apply this to AVX512 instructions. Or, we request a k-register which is encapsulated in a helper-class which we then provide to AVX512 instructions. How will JIT ensure integrity thru sub-function calls? |
@hopperpl You may be interested in reading dotnet/designs#268. |
This issue will track work being done to support the AVX-512 ISA extensions in .NET.
A GitHub project also exists to do this tracking: https://github.com/orgs/dotnet/projects/157
GitHub query for all issues and pull requests tagged
arch-avx512
: https://github.com/dotnet/runtime/labels/arch-avx512We will alter how we track this work based on experience with both mechanisms.
The following work is all planned for .NET 8. If we determine work will not make .NET 8, it will be noted.
RyuJIT feature work
lsraRegOrder
andbuildPhysRegRecords
to skip non-AVX512 registers if AVX512 not available #81847ExtractMostSignificantBits
forVector512
#80820Vector512
hardware accelerated lowering in the JIT #80811Vector512<T>
API surface forVector512
hardware acceleration #80814uint
/ulong
tofloat
/double
. #89277System.Runtime.Intrinsics.X86.Avx512F
lowerings in JIT. #80865System.Runtime.Intrinsics.X86.Avx512F.VL
lowerings in JIT #80867System.Runtime.Intrinsics.X86.Avx512BW
lowerings in JIT. #80868System.Runtime.Intrinsics.X86.Avx512CD
lowerings in JIT. #80869System.Runtime.Intrinsics.X86.Avx512DQ
lowerings in JIT. #80870RyuJIT optimization work
CI/testing work
runtime-coreclr jitstress-isas-avx512
pipeline on Linux #79417Test performance in ASP.NET performance labVM work
Debugging / diagnostics work
Libraries work
Span
withVector512
code paths. #80824, Upgrading SpanHelpers with Vector512 #86655Ascii.Utility
methods withVector512
code paths. #89280API design work
Note: all API implementation work that has been planned for .NET 8 has been completed. There are a few remaining "esoteric" APIs that still need to be completed, and that work has been moved to .NET 9. The linked issues will not be closed until the entire API surface area is complete, due to API design issue tracking rules.
Related work
Future work
The following work items for work that did not get implemented for .NET 8 will be considered for .NET 9.
RyuJIT feature work
uint32
/uint64
to/from packedfloat
/double
#80829RyuJIT optimization work
float
/double
toulong
. #89279CI/testing work
VM work
Debugging / diagnostics work
Libraries work
API design work
The text was updated successfully, but these errors were encountered: