-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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 osx: support byte sizes from lowering to codegen. #43024
Conversation
3899ec9
to
14576d9
Compare
14576d9
to
96cf3c5
Compare
96cf3c5
to
4602f28
Compare
// Get the number of bytes that this argument is occupying on the stack. | ||
// Get the number of bytes that this argument is occupying on the stack, | ||
// including padding up to the target pointer size for platforms | ||
// where a stack argument can't take less. |
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.
it could be confusing when we have arguments that require more than a pointer size, for example:
call(arguments to occupy registers, byte a, struct with 16 bytes alignment b)
in this example we will have such offsets on arm64 not-apple:
a - offset 0, GetStackByteSize() = 8,
b - offset 16, GetStackByteSize() = 16.
so the space between offset 1 and 8 is padding for a, the space between 8 and 16 is an alignment for b.
if (!layout->HasGCPtr() && (size & (XMM_REGSIZE_BYTES - 1)) != 0) | ||
{ | ||
regMaskTP regMask = allRegs(TYP_INT); | ||
|
||
#ifdef TARGET_X86 | ||
if ((size % 2) != 0) |
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.
size was putArgStk->gtNumSlots * TARGET_POINTER_SIZE
where TARGET_POINTER_SIZE % 2 == 0
so that condition was always false.
4602f28
to
703636e
Compare
PTAL @dotnet/jit-contrib |
703636e
to
a394784
Compare
ping @dotnet/jit-contrib |
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.
It's been a while since I reviewed the previous change; I just have a few questions and comments for now.
/azp run runtime-coreclr outerloop |
Azure Pipelines successfully started running 1 pipeline(s). |
The PR was updated, the failures in stress modes are not relevant. |
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.
LGTM - it would be great if @echesakovMSFT could also re-review; there are a lot of somewhat tricky changes.
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.
Looks good, left some comments about code style
4e49956
to
5281a9d
Compare
Keep precise byte sizes and offsets for call arguments from lowering to codegen. It is a continuation of #42503.
Contributes to #41130.
No diffs.