Skip to content
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

Handle more than 64 registers - The finale #103387

Merged
merged 10 commits into from
Jun 14, 2024
Merged

Conversation

kunalspathak
Copy link
Member

@kunalspathak kunalspathak commented Jun 13, 2024

This PR removes the alias and adds the actual "predicate registers" for Arm64. Also includes some of the fixes that was uncovered when we started having dedicated predicate registers. I have not yet included the handling of callee save/trash of scalable/predicate registers in this PR, and will do it as a separate PR. Also, there are still some remaining TODO-SVE that were added until we add predicate registers support. I will remove them in a different PR.

Here is the list of previous PRs that went in:

Other misc. PRs:

Sample diff: https://www.diffchecker.com/QO4l4dhM/

Fixes: #99658

@dotnet-issue-labeler dotnet-issue-labeler bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jun 13, 2024
@kunalspathak kunalspathak requested a review from jakobbotsch June 13, 2024 00:47
@kunalspathak
Copy link
Member Author

@dotnet/jit-contrib @dotnet/arm64-contrib @jakobbotsch PTAL

cc: @dotnet/avx512-contrib

Copy link
Contributor

Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.

@kunalspathak
Copy link
Member Author

I am guessing most of the TP cost is coming from the fact that we have fewer bits to represent small constant in instrDesc and hence using large instrDesc. Will take a look.

image

@kunalspathak
Copy link
Member Author

I am guessing most of the TP cost is coming from the fact that we have fewer bits to represent small constant in instrDesc and hence using large instrDesc

Actually, this one is coming by enabling HAS_MORE_THAN_64_REGISTERS macro and not because of instrDesc. I had it ON by default in #102921, but turned it back OFF in #103146, where we regain those regressions and in this PR, we see them back.

Copy link
Member

@jakobbotsch jakobbotsch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, quite simple change.

@kunalspathak
Copy link
Member Author

currently gcc is failing and is being discussed in #101623 (comment)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
Projects
None yet
Development

Successfully merging this pull request may close these issues.

LSRA: Add support to track more than 64 registers
2 participants