-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Expose various floating-point intrinsics for Avx512F and Avx512DQ #85716
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
|
@@ -534,21 +534,27 @@ struct HWIntrinsicInfo | |||
|
|||
case NI_SSE41_Ceiling: | |||
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.
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,
vrange
can be used to implement a faster/correctMax
/MaxMagnitude
/MaxNumber
/MaxNumberMagnitude
andMin
/MinMagnitude
/MinNumber
/MinNumberMagnitude
(where-as currently we can only accelerate on x86/x64 if one input is constant).Likewise
vfixup
can be used to handle many complex branching conditions where various edge cases are being handled.