-
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
(WIP) Arm64/SVE: Implemented AddRotateComplex
and AddSequentialAcross
#104258
Closed
Closed
Changes from all commits
Commits
Show all changes
39 commits
Select commit
Hold shift + click to select a range
c738b77
Added ConverToInt32 and ConvertToUInt32 for float inputs.
ebepho 35d39d9
Added flags to handle only low predicate registers.
ebepho 7a781e1
Fixed merge conflicts.
ebepho 1378d60
Fix whitespace
ebepho 10c7a15
Remove special codegen flag
ebepho 8004868
Added new test template for operations with different return types.
ebepho af7ccd4
Merge branch 'main' into ConvertToInt32
ebepho 8cb76da
Add new test template.
ebepho abe25fc
Added api for ConvertToInt32 and ConvertToUInt 32 for double.
ebepho 0f51f38
fix merge conflicts.
ebepho 7fabb91
Merge branch 'dotnet:main' into main
ebepho d5374ca
Merge branch 'main' of github.com:ebepho/runtime
ebepho 4aa224d
Merge branch 'main' of github.com:ebepho/runtime
ebepho 49a6c85
Round SVE intrinsics for floats.
ebepho bd2702d
Completed Round SVE fp apis.
ebepho 56601b4
Merge branch 'main' of github.com:ebepho/runtime
ebepho 6ba83c3
Merge branch 'main' into round
ebepho ba922e7
Completed sve apis for scale and sqrt, added a new test template for …
ebepho 04071a3
Merge branch 'main' of github.com:ebepho/runtime
ebepho 9863b7c
Merge branch 'main' into scale+sqrt
ebepho c7fbb4d
Started implementation for AddRotateComplex and AddSequentialAcross S…
ebepho ffcd267
Merge branch 'main' of github.com:ebepho/runtime
ebepho 5803fc2
modified test template for AddRotateComplex sve api.
ebepho 33626b3
Merge branch 'main' of github.com:ebepho/runtime
ebepho 6816686
AddRotateComplex helper for double variation.
ebepho da441d1
Merge branch 'main' of github.com:ebepho/runtime
ebepho 637f059
Merge branch 'main' into add
ebepho f98fd84
Merge branch 'main' of github.com:ebepho/runtime
ebepho 1e68ff6
Merge branch 'main' of github.com:ebepho/runtime
ebepho e6777ca
Merge branch 'main' into add
ebepho 214cd60
AddRotateComplex and AddSequentialAcross (WIP).
ebepho 44231c0
addrotatecomplex hwintrinsic tags
ebepho a35a74e
removed addroatecomplex from specialcodegen path
ebepho a5cad71
fixed path for addrotatecomplex
ebepho 33e925b
Merge branch 'main' of github.com:ebepho/runtime
ebepho 68b9204
fixed hwintrins tags for addseqacross
ebepho eb2822e
fixed instr(op1, op2, imm) test template naming
ebepho 94956b3
Merge branch 'main' into add
ebepho 3de605e
WIP addsequentialacross.
ebepho 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
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
Large diffs are not rendered by default.
Oops, something went wrong.
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
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
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
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
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
Oops, something went wrong.
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.
@kunalspathak at the API level, do we want users to pass the actual angle value (90, 180, etc) for the immediate? If so, we might have to do some awkward transformations throughout the JIT's phases to get this to work:
HWIntrinsicImmOpHelper
expects the immediates to be contiguous, like [0, 3]. If the possible values are 90, 180, etc., we'll need some special handling there to pass the correct immediates toemitIns_R_R_R_I
.FCADD
,emitIns_R_R_R_I
expects us to pass the immediate as an angle value; it then converts the value to its bitwise representation[0, 3]
internally. If we streamline this so we can just pass the immediate in its bitwise form toemitIns_R_R_R_I
, that might simplify the logic elsewhere in the JIT. For example, the bounds for this intrinsic inlookupImmBounds
would be[0, 3]
, and we'd just have to transform the user's input to this form somewhere in the JIT -- perhaps during importation.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 one is bit tricky. The only acceptable and valid values for FCADD is
90
or270
and that's what we expect user to pass. All the other values are invalid and we should probably throwArgumentOutOfRangeException
. Also, since the values are not contiguous, we might not be able to use the generic table generation logic. It is meant for the contiguous value. For this API, we want something like this:@tannergooding - I don't believe we have API that has such restriction about the input value, do we? For eg. I don't see we have implemented AdvSimd's FcAdd.
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.
Sorry, I meant to put a comment here, but spoke with @tannergooding offline and the right thing to do here is to handle the fallback in C# level, something like:
and then in rationalizer, make sure to the argument is indeed a constant and is "in bounds", before we rewrite it back to the call.
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.
@ebepho @amanasifkhalid - let me know if you need anything else to move this further.