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

SVE: Add Z register aliases #95129

Closed
wants to merge 1 commit into from
Closed

Conversation

kunalspathak
Copy link
Member

Contributes to #94549

@ghost ghost assigned kunalspathak Nov 22, 2023
@kunalspathak kunalspathak added the arm-sve Work related to arm64 SVE/SVE2 support label Nov 22, 2023
@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 Nov 22, 2023
@kunalspathak
Copy link
Member Author

@a74nh @dotnet/jit-contrib

@ghost
Copy link

ghost commented Nov 22, 2023

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

Issue Details

Contributes to #94549

Author: kunalspathak
Assignees: kunalspathak
Labels:

area-CodeGen-coreclr, arch-arm64-sve

Milestone: -

@a74nh
Copy link
Contributor

a74nh commented Nov 22, 2023

LGTM.

@BruceForstall
Copy link
Member

Is this going to be more useful than confusing? I guess the Arm manual itself distinguishes V and Z registers, which seems odd, since V registers are also named Q, D, S, H, and B depending on size, and Z registers contain V registers.

It seems like this won't be helpful because you'll be able to use V instead of Z and vice-versa in the code, and there will be no checking.

@kunalspathak
Copy link
Member Author

It seems like this won't be helpful because you'll be able to use V instead of Z and vice-versa in the code, and there will be no checking.

Sure, V and Z are same registers, but I think while reading code, it will be helpful to know if the instruction operates on scalable "Z" register or a fixed-width "V" register specially around instructions that operates on both Z and V registers.

-theEmitter->emitIns_R_R_R(INS_sve_andqv, EA_8BYTE, REG_V0, REG_V0, REG_P0, INS_OPTS_SCALABLE_B);  // IF_SVE_AG_3A /* ANDQV   <Vd>.<T>, <Pg>, <Zn>.<Tb> */
+theEmitter->emitIns_R_R_R(INS_sve_andqv, EA_8BYTE, REG_V0, REG_Z0, REG_P0, INS_OPTS_SCALABLE_B);  // IF_SVE_AG_3A /* ANDQV   <Vd>.<T>, <Pg>, <Zn>.<Tb> */

To that matter, I don't think we use REG_V* explicitely anyway apart from unit test and few other places like unwind, where we can continue to use REG_V*.

@BruceForstall
Copy link
Member

I think while reading code, it will be helpful to know if the instruction operates on scalable "Z" register or a fixed-width "V" register specially around instructions that operates on both Z and V registers.

The problem is, if there is no correctness checking, then it's not going to be too useful, IMO.

@kunalspathak
Copy link
Member Author

To that matter, I don't think we use REG_V* explicitely anyway apart from unit test and few other places like unwind, where we can continue to use REG_V*.

Taking account of that and @BruceForstall POV, I will close this PR then.

@github-actions github-actions bot locked and limited conversation to collaborators Dec 23, 2023
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 arm-sve Work related to arm64 SVE/SVE2 support
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants