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

[RyuJIT][CQ] LSRA: Investigate separating cross-block lclVars from intra-block lclVars #7992

Open
CarolEidt opened this issue May 2, 2017 · 5 comments
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI enhancement Product code improvement that does NOT require public API changes/additions JitThroughput CLR JIT issues regarding speed of JIT itself tenet-performance Performance related issue
Milestone

Comments

@CarolEidt
Copy link
Contributor

Much of LSRA work involves dealing with sets of vars that are live at block boundaries.
We could improve efficiency by ensuring that those sets are dense, and using a smaller set.
We would only need a larger set for the liveness set that's used during traversals.
This could be beneficial if 1) there are a large number of vars that are only live within a single block, and 2) the cost of the extra sorting and updating of the "current" copy of live vars doesn't adversely impact throughput.
Also, it may be possible to reuse tracked numbers for different basic blocks, to keep the sets small. The Intervals could still be different for the different lclNums with the same BB-local tracked var number.
category:throughput
theme:register-allocator
skill-level:expert
cost:large

@CarolEidt
Copy link
Contributor Author

In addition to ensuring that the sets of live lclVars at block boundaries are dense, we should ensure that non-register-candidates that are tracked (e.g. tracked structs that are not promoted) are not mixed in with the register candidates. Further, if the liveness info for non-register-candidates doesn't impact GC reporting, there is no reason to make those tracked after the optimization phases have completed.

@mikedn
Copy link
Contributor

mikedn commented Jun 1, 2017

Sort of related question: would it help LSRA to eliminate all SDSU intra-block lclvars?

@CarolEidt
Copy link
Contributor Author

Sort of related question: would it help LSRA to eliminate all SDSU intra-block lclvars?

Yes, I think it would help (at a minimum it would eliminate the extra RefPosition associated with assigning the value. The question would be whether eliminating them would be more cost than the potential benefit.

@msftgits msftgits transferred this issue from dotnet/coreclr Jan 31, 2020
@msftgits msftgits added this to the Future milestone Jan 31, 2020
@ghost
Copy link

ghost commented Feb 10, 2023

Due to lack of recent activity, this issue has been marked as a candidate for backlog cleanup. It will be closed if no further activity occurs within 14 more days. Any new comment (by anyone, not necessarily the author) will undo this process.

This process is part of our issue cleanup automation.

@ghost ghost added backlog-cleanup-candidate An inactive issue that has been marked for automated closure. no-recent-activity labels Feb 10, 2023
@ghost
Copy link

ghost commented Feb 24, 2023

This issue will now be closed since it had been marked no-recent-activity but received no further activity in the past 14 days. It is still possible to reopen or comment on the issue, but please note that the issue will be locked if it remains inactive for another 30 days.

@ghost ghost closed this as completed Feb 24, 2023
@ghost ghost locked as resolved and limited conversation to collaborators Mar 26, 2023
@jakobbotsch jakobbotsch removed no-recent-activity backlog-cleanup-candidate An inactive issue that has been marked for automated closure. labels Sep 12, 2023
@jakobbotsch jakobbotsch reopened this Sep 12, 2023
@dotnet dotnet unlocked this conversation Nov 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI enhancement Product code improvement that does NOT require public API changes/additions JitThroughput CLR JIT issues regarding speed of JIT itself tenet-performance Performance related issue
Projects
None yet
Development

No branches or pull requests

4 participants