-
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
Adding basic support for recognizing and handling SIMD intrinsics as HW intrinsics #35421
Merged
tannergooding
merged 40 commits into
dotnet:master
from
tannergooding:simd-as-hwintrinsic
May 5, 2020
Merged
Changes from 1 commit
Commits
Show all changes
40 commits
Select commit
Hold shift + click to select a range
703ab93
Adding basic support for recognizing and handling SIMD intrinsics as …
tannergooding 32209f3
Applying formatting patch
tannergooding a5ad01c
Fixing a preprocessor concatenation for non windows
tannergooding 3b5f8f4
Add a default case to workaround a compiler warning on FreeBSD
tannergooding 8744b7b
Fixing a noway_assert to include GT_HWINTRINSIC
tannergooding 4beacab
Fixing some asserts that were being triggered
tannergooding 3af99b2
Use getSIMDVectorRegisterByteLength
tannergooding e229ca0
Applying formatting patch
tannergooding 92ec83c
Fixing ARM64 to use the actual type size
tannergooding e9e7b89
Removing the [Intrinsic] attribute from some Vector2/3/4 methods whic…
tannergooding f788049
Updating SSE/SSE2 CompareGreaterThan and related functions to be tabl…
tannergooding 0cf2a0b
Fixing the SimdAsHWIntrinsic relational operations to match the GT_SI…
tannergooding 10e7235
Ensure that GT_HWINTRINSIC fixes the type for certain TYP_SIMD8
tannergooding 9022d94
Fixing the SimdAsHWIntrinsic Vector<int>.op_Multiply support to match…
tannergooding 16048cd
Fixing the SimdAsHWIntrinsic Vector2/3 Division to match the GT_SIMD …
tannergooding 82d646e
Porting Abs, Min, and Max to use the SimdAsHWIntrinsic support
tannergooding ed399c4
Minor fixups to the SSE2 codepath
tannergooding 1e57f6e
Applying formatting patch
tannergooding aaa9962
Fixing a check in lowering
tannergooding d22ecab
Mark SimdAsHWIntrinsic nodes so we can lookup the correct handle
tannergooding 5830101
Adding the 3 operand overload for gtNewSimdAsHWIntrinsicNode
tannergooding 4f02f57
Fixing BuildHWIntrinsic to properly take RMW into account
tannergooding 39f5086
Fixing the rationalize handling of GT_HWINTRINSIC to account for SIMD…
tannergooding fe969fd
Fixing the importer to not create SIMD nodes if featureSIMD is disabled
tannergooding bf291c5
Fixing the SSE4.2 implementation of CompareLessThan<long>
tannergooding ef4a77c
Preserve the base type for subtraction/addition operations
tannergooding e1b5acb
Applying formatting patch
tannergooding 1b837a6
Responding to PR feedback
tannergooding ac867ec
Fixing a copy/paste error under reinterpret cast
tannergooding 7482c49
Fixing abs to expect 1 argument
tannergooding c7ef80d
Adding method comment headers that were missing
tannergooding e569d25
Removing unused table entries from SimdAsHWIntrinsic for Vector2/3/4
tannergooding 991a838
Ensure we catch intrinsics from the Vector static class
tannergooding 017fe54
Fixing SSSE3_Abs and AVX2_Abs to get the base type from the first arg…
tannergooding 06bec3e
Ensure we adjust the class handle used for intrinsics from the Vector…
tannergooding bd6e87a
Ensure we populate the handle cache for clsHnd even if it isn't used
tannergooding 341aac8
Fix where we grab the base type from for the static Vector class
tannergooding b6494ee
Fixing ConditionalSelect and improving the messages used for impClone…
tannergooding 470f627
Ensure we clone the constVectorDup before using it
tannergooding 03840fa
Applying formatting patch
tannergooding File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
This was an existing bug exposed by this PR.
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.
Not related to this change, but I wonder if this optimization can be implemented without requiring to support SIMD types
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.
Probably not easily and I'm not sure the distinction is worthwhile. ARM64 already requires
supportSIMDTypes
due to the ABI and Unix x64 will likely be in a similar boat due to its ABI.