Skip to content
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

JIT: Improve strength reduction's prediction of loop reversal #104800

Merged
merged 5 commits into from
Jul 17, 2024

Conversation

jakobbotsch
Copy link
Member

@jakobbotsch jakobbotsch commented Jul 12, 2024

The current goal is to make sure strength reduction does not introduce new primary IVs. To do so we rely on the downwards-loop transformation to get rid of uses of the primary IV in the loop test.
This PR refines the checks that strength reduction was using to predict whether a use of the primary IV in a loop test will be removed. It should now be the exact same checks as the downwards-transformation uses.

Additionally, it means we can remove CursorInfo::IsInsideExitTest; we now just avoid creating the cursor in the first place if we know the use will be removable.

These primary IVs are not going to be removed by the downwards loop
transformation, so if we do this we introduce additional primary IVs
which (for now) it is the goal not to.
@dotnet-issue-labeler dotnet-issue-labeler bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jul 12, 2024
Copy link
Contributor

Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.

@jakobbotsch jakobbotsch changed the title JIT: Avoid strength reducing IVs that are live out of a loop JIT: Improve strength reduction's prediction of loop reversal Jul 17, 2024
@jakobbotsch
Copy link
Member Author

/azp run runtime-coreclr jitstress, runtime-coreclr libraries-jitstress

Copy link

Azure Pipelines successfully started running 2 pipeline(s).

@jakobbotsch
Copy link
Member Author

Stress failures are #104449 and #102706.

cc @dotnet/jit-contrib PTAL @AndyAyersMS

Diffs with strength reduction enabled (mainly improvements because we strength reduce less...)

@jakobbotsch jakobbotsch marked this pull request as ready for review July 17, 2024 18:00
@jakobbotsch jakobbotsch merged commit 57f870f into dotnet:main Jul 17, 2024
127 of 132 checks passed
@jakobbotsch jakobbotsch deleted the live-exit-iv branch July 17, 2024 19:24
@github-actions github-actions bot locked and limited conversation to collaborators Aug 17, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants