-
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
ARM64: Use SIMD to copy nongc gaps in blocks with gc pointers #99140
Conversation
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue Detailsstruct MyStruct
{
long a;
long b;
long c;
long d;
string a1;
long e;
long f;
long j;
long k;
}
MyStruct Test(MyStruct ms) => ms; Codegen diff for ; Assembly listing for method Prog:Test(Prog+MyStruct):Prog+MyStruct:this
stp fp, lr, [sp, #-0x10]!
mov fp, sp
mov x14, x8
mov x13, x1
bl CORINFO_HELP_ASSIGN_BYREF
- ldp x12, x15, [x13], #0x10
- stp x12, x15, [x14], #0x10
- ldp x12, x15, [x13], #0x10
- stp x12, x15, [x14], #0x10
- ldp x12, x15, [x13], #0x10
- stp x12, x15, [x14], #0x10
- ldp x12, x15, [x13], #0x10
- stp x12, x15, [x14], #0x10
+ ldp q16, q17, [x13], #0x20
+ stp q16, q17, [x14], #0x20
+ ldp q16, q17, [x13], #0x20
+ stp q16, q17, [x14], #0x20
ldp fp, lr, [sp], #0x10
ret lr
; Total bytes of code 60
|
@dotnet/jit-contrib PTAL, simple change, diffs. |
@kunalspathak @TIHan please take a look |
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 seems to be always there on xarch and was just not present on arm64. LGTM. Thanks!
Codegen diff for
Test
on arm64:x64 in the same code path uses
rep movsq
(it can't use SIMD due to atomicity guarantees)