-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Port SIMDIntrinsicGetItem and SIMDIntrinsicSetItem to be implemented via HWIntrinsics #52288
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
Port SIMDIntrinsicGetItem and SIMDIntrinsicSetItem to be implemented via HWIntrinsics #52288
Conversation
|
Framework diff is: The regression in I'm working on getting the PMI diffs for tests as well, but they take a while to run. |
|
CC. @echesakovMSFT |
5e62003 to
7c9380d
Compare
|
Diff for benchmarks: |
f8788e5 to
57576b9
Compare
…using SimdAsHWIntrinsic
57576b9 to
cc9c3dd
Compare
|
CC. @echesakovMSFT, @dotnet/jit-contrib |
echesakov
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.
Have some questions that I would like to get answered before approving?
echesakov
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
Thanks for the contribution @tannergooding !
Co-authored-by: Egor Chesakov <[email protected]>
|
Hello @tannergooding! Because this pull request has the p.s. you can customize the way I help with merging this pull request, such as holding this pull request until a specific person approves. Simply @mention me (
|
PR dotnet#52288 throws ArgumentOutOfRangeException instead of IndexOutOfRangeException. The test is not updated. It still use IndexOutOfRangeException.
This is a continuation of past PRs (#35421 and #37882) which ported the legacy
System.Numericscode to be implemented in terms of the newerSystem.Runtime.Intrinsicscode.In particular, this updates
SIMDIntrinsicGetItemandSIMDIntrinsicSetItemto be implemented via the corresponding HWIntrinsics functionality bringing along benefits to both codepaths. Namely, theSystem.Numericscodepath becomes VEX aware and has better instruction selection, while theSystem.Runtime.Intrinsicscodepath picked up an optimization for non-constant operands.Some example diffs are:
and: