-
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
Fix some low-hanging HWIntrinsic issues #80626
Conversation
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch, @kunalspathak Issue DetailsThis fixes a few low-hanging issues:
|
For - ; Lcl frame size = 1112
+ ; Lcl frame size = 72 In the above code, the actual method body remains the same. We just no longer have a non-trivial amount of locals we couldn't determine were dead: G_M3734_IG02:
mov ecx, 66
call [System.ThrowHelper:ThrowNotSupportedException(int)]
int3 |
Likewise for |
36f2c26
to
9f53fd8
Compare
Really great improvement to size and TP. There are few small size regressions due to additional inlining that occurs in a few places now. The TP and size wins may be a little misrepresented since SPMI tests That being said, such paths do appear in practice almost anywhere we have On Windows x64
and
Will post Arm64 numbers once CI finishes. |
CC. @dotnet/jit-contrib. Fixing some low-hanging fruit giving a significant decrease to SPMI generated bytes and improvement to throughput for x64 |
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.
The diffs look great! The dead code elimination really helped out.
/azp run runtime-coreclr jitstress-isas-x86, runtime-coreclr jitstress-isas-arm, runtime-coreclr outerloop |
Azure Pipelines successfully started running 3 pipeline(s). |
Logged #80666 to track the jitstress/outerloop failures which are also occuring in main |
This fixes a few low-hanging issues:
WithElement
forVector64/128/256
isn't claiming to be a System.Numerics typeVector128.AsVector2
andVector128.AsVector3
are intrinsicVector2.AsVector128
andVector3.Vector128
are intrinsicAsNInt
andAsNUInt
forVector64/128/256
are intrinsicget_Count
andIsSupported
forVector64/128/256
andVector<T>
are intrinsic