-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
Forward-substitute long calls on 32 bit targets #74502
Conversation
The multi-reg restrictions do not apply to them.
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsThe multi-reg restrictions do not apply to them.
|
#if defined(TARGET_X86) || defined(TARGET_ARM) | ||
if (fwdSubNode->TypeGet() == TYP_LONG) | ||
{ | ||
JITDUMP(" TYP_LONG fwd sub node, target is x86/arm\n"); | ||
return false; | ||
} | ||
#endif // defined(TARGET_X86) || defined(TARGET_ARM) | ||
|
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.
Just a question. Why do we delete this code that skips TYP_LONG forward substitute node on x86 and arm target?
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 should not be necessary.
The restriction on substituting multi-reg nodes stems from the fact the backend (LSRA and codegen) can only handle a few select forms of uses for them:
STORE_LCL_VAR(multi-reg node)
RETURN(matching multi-reg call | LCL_VAR)
For structs, these restrictions are enforced by the frontend (mainly importer). For LONG
s - by decomposition, which means we don't need to worry about them here.
@dotnet/jit-contrib |
Thanks again for all your hard work. |
The multi-reg restrictions do not apply to them.
Diffs - a few improvements as expected.