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

Arm64 multireg passing: keep in regs #53956

Open
sandreenko opened this issue Jun 9, 2021 · 0 comments
Open

Arm64 multireg passing: keep in regs #53956

sandreenko opened this issue Jun 9, 2021 · 0 comments
Assignees
Labels
arch-arm64 area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI optimization
Milestone

Comments

@sandreenko
Copy link
Contributor

sandreenko commented Jun 9, 2021

For such code:

struct Struct
{
    int i1;
    int i2;
    int i3;
    int i4;
}

[MethodImpl(MethodImplOptions.NoInlining)]
static void Caller(Struct s)
{
    Callee(s);
}

we currently generate

IN0004: 000000      stp     fp, lr, [sp,#-32]!
IN0005: 000004      mov     fp, sp
N0006: 000008      str     x0, [fp,#16]
IN0007: 00000C      str     x1, [fp,#24]
IN0001: 000010      ldr     x0, [fp,#16]
IN0002: 000014      ldr     x1, [fp,#24]
IN0003: 000018      bl      Runtime_52320.C:Callee(Struct)
IN0008: 00001C      ldp     fp, lr, [sp],#32
IN0009: 000020      ret     lr

when, of course, we want something like:

IN0004: 000000      stp     fp, lr, [sp,#-32]!
IN0005: 000004      mov     fp, sp
IN0003: 000018      bl      Runtime_52320.C:Callee(Struct)
IN0008: 00001C      ldp     fp, lr, [sp],#32
IN0009: 000020      ret     lr

not a major thing but lets keep track of it and see if we can support it with the new morph logic.

category:cq
theme:register-allocator

@sandreenko sandreenko added arch-arm64 area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI optimization labels Jun 9, 2021
@sandreenko sandreenko added this to the 7.0.0 milestone Jun 9, 2021
@sandreenko sandreenko self-assigned this Jun 9, 2021
@dotnet-issue-labeler dotnet-issue-labeler bot added the untriaged New issue has not been triaged by the area owner label Jun 9, 2021
@JulieLeeMSFT JulieLeeMSFT removed the untriaged New issue has not been triaged by the area owner label Jun 10, 2021
@kunalspathak kunalspathak modified the milestones: 7.0.0, Future May 31, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
arch-arm64 area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI optimization
Projects
None yet
Development

No branches or pull requests

3 participants