-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Expose various floating-point intrinsics for Avx512F and Avx512DQ #85716
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
Conversation
|
Note regarding the This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change. |
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsThis exposes some instructions unique to the AVX512 family of instructions making progress towards completing:
There will be a separate PR to utilize some of these in our scalar math APIs. For example, Likewise
|
| case NI_SSE41_CeilingScalar: | ||
| case NI_AVX_Ceiling: | ||
| { | ||
| FALLTHROUGH; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: remove { FALLTHROUGH; }
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I had it split "explicitly" here to help visualize the groupings between Ceiling vs RoundToPositiveInfinity (and likewise Floor vs RoundToNegativeInfinity), particularly since Ceiling/Floor don't have AVX512 equivalents.
EgorBo
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
|
This PR is part of a regression I just filed: #85930 |
|
I wouldn't expect it, this was a zero spmi diffs change since it just added new APIs, it didn't update any existing paths to use them. |
This exposes some instructions unique to the AVX512 family of instructions making progress towards completing:
There will be a separate PR to utilize some of these in our scalar math APIs. For example,
vrangecan be used to implement a faster/correctMax/MaxMagnitude/MaxNumber/MaxNumberMagnitudeandMin/MinMagnitude/MinNumber/MinNumberMagnitude(where-as currently we can only accelerate on x86/x64 if one input is constant).Likewise
vfixupcan be used to handle many complex branching conditions where various edge cases are being handled.