-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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
Enable AVX2, SSE42 HW intrinsics: remove unimplemented API surface and mark ISAs as fully implemented #25581
Comments
Agreed. We should remove any APIs that are not implemented in 2.1, and then return |
Working on it |
@4creators, are you working on just the CoreFX side? @fiigii, @CarolEidt: Now that dotnet/coreclr#17030 is merged, we need one more CoreCLR change that marks all ISAs as |
@tannergooding I am starting in coreclr and will change corefx once it will appear in dogfooding update. |
Will fix it as well. |
I don't believe we need (or want) to remove the methods from System.Private.Corelib. (@eerhardt or @CarolEidt might be able to confirm) |
OK waiting for answer. IMO argument in favor of removing this APIs is that it is possible by using Roslyn without SDK to reference System.Private.CorLIB directly and use any method which is exposed there. |
In which case they will get a The reason to keep it is so that work can continue happening to implement the remaining intrinsics (as we can also just directly reference S.P.Corelib from the CoreCLR tests). |
My understanding is that development work will be done in
It's not that bad but neither not that good. |
Yes, I guess the changes (corefx and coreclr both) should be pull requests to the branch 2.1-release instead of master. @eerhardt could you confirm?
Yes, I prefer to retain the APIs in System.Private.Corelib and just remove the unimplemented ones from the corefx package if we can. |
Agree |
I agree; I think that's the approach we should use.
@eerhardt can confirm WRT corefx, but I don't think we need to change coreclr. With regard to getting a |
There are 2 PRs to the branch |
Sorry, I didn't get back to this sooner - I've been super swamped. As I've replied on the PRs - they should both target I agree that we can leave the unimplemented APIs in |
Decision to disable not fully implemented Intel HW intrinsics was made due to the fact that corefx already exposed full ISA API while RyuJIT only partially supported them what would interfere with proper use of
ISA.IsSupported
check see issue: https://github.com/dotnet/coreclr/issues/14930 and PR resolving it dotnet/coreclr#15514.AVX2 and SSE42 intrinsics are partially implemented with many useful instructions already exposed. IMO it would be very helpful if we would expose in
System.Runtime.Intrinsics.Experimental
assembly all already supported intrinsics including partially implemented ISAs. To avoid false negative reporting byISA.IsSupported
check we should remove all unimplemented APIs and mark AVX2 and SSE42 ISAs as fully implemented.In future APIs could be expanded as new functionality is added to RyuJIT.
@CarolEidt @eerhardt @fiigii @jkotas @tannergooding
The text was updated successfully, but these errors were encountered: