-
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
Do not CSE constant operands for GT_SIMD
vector constructors
#71174
Conversation
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsDescription Acceptance Criteria
|
@dotnet/jit-contrib This is ready. Just will wait for CI to pass. The diffs that I got were some improvements, but this is going to help us tweak the double constant heuristic in #65176 since we do not want to hoist or CSE these kinds of constants. |
There is already a similar logic in that method that skips CSE for IMM-able arguments and also for Can you show some examples? I assume you target runtime/src/coreclr/jit/morph.cpp Lines 13923 to 13938 in df3bd55
|
An example of this is: new Vector3(1, 0, 0) I did see the existing logic there. Wanted to keep it separate but makes sense to combine them since they are so similar. |
GT_SIMD
GT_SIMD
vector constructors
@dotnet/jit-contrib This is ready again, diffs look pretty good. x64 has more improvements because we always CSE double constants in x64, except for positive zero. |
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
Description
If a
GT_SIMD
op contains all constants and is anInit
/InitN
, then mark each constant asDoNotCSE
. This logic already exists forGT_HWINTRINSIC
nodes when creating vectors.Acceptance Criteria
Diffs