-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Allow shuffle and other hwintrinsic that require a constant to stay intrinsic if the operand becomes constant later #102827
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
Conversation
…ntrinsic if the operand becomes constant later
1f3d6d5 to
670404b
Compare
fbe37b6 to
9ff1e40
Compare
9ff1e40 to
6868301
Compare
c399228 to
bcdcf70
Compare
dea129f to
d3bc074
Compare
bd3fd7d to
f6ae608
Compare
f6ae608 to
c9282ca
Compare
2ff1a4f to
c804b38
Compare
03cf761 to
e96a244
Compare
e96a244 to
7da372f
Compare
|
CC. @dotnet/jit-contrib this should be ready for review. minopts size regressions are expected, but could be improved in a separate PR. Namely we don’t need to spill pass by value args and could avoid allocating a new local for the return buffer in some cases, since we know the intrinsic APIs aren’t going to do anything “bad” here. fullopts improvements are namely in tests but a few in production areas, as we can identify many more constants now and thus emit the actual intrinsic. As per the top post, this should unblock the PR that moves a large chunk of the xplat implementation into manage code and allow us to remove a significant chunk of complexity from the JIT |
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.
This builds on #102702 and updates the intrinsics that require a constant operand to check again in rationalization if the necessary input is constant. If the necessary input has since become a constant, we introduce the appropriate hwintrinsic node and otherwise we continue rewriting ourselves into a call.
This resolves #11062, resolves #11138, and resolves #9989
Scenario 1
Before
After
Scenario 2
Before
After