-
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
Allow shuffle and other hwintrinsic that require a constant to stay intrinsic if the operand becomes constant later #102827
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