-
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
JIT: enable edge checks throughout #99628
Conversation
Fix the last remaining issues for edge likelihoods. Main challenge here was switch lowering, particularly the expansions of switches into a series of tests. The adjustments here are similar to those for multi-guess GDV and type tests -- as we test possibilities one-by-one we have to adjust and scale up likelihoods of remining possibilities. But for switches things are more complex as edges may have dup counts, and we may eventually reach the point where the remaining tests had zero initial likelihood. Contributes to dotnet#93020.
@amanasifkhalid PTAL At long last, edge has likelihood and likelihood sum checks are enabled throughout. Some diffs expected as the new block weights for switch expansions impact LSRA ordering. |
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, just a few small nits. Also, I've run into JitStress issues with some of the switch lowering paths during previous flowgraph refactors, so it might be a good idea to run some of the outerloop pipelines on this.
Looks like I don't even need to go to outerloop... issues on arm to sort out. |
There is a complication with dup edges, not sure how to fix just yet. We have a switch
So cases 0 and 2 are dup'd to BB04. We split BB02 into BB02->def, and new BB115 for the switch. We expand the switch as series of tests; case 0 decides it can reuse BB115. We add ref BB115->BB04, this does not create a new edge but shares the existing one; later this messes up likelihood because we assume that the BB115->BB04 edge is new and not shared. |
Likely we should modify |
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 if CI passes -- thanks!
/azp run runtime-coreclr jitstress, runtime-coreclr libraries-jitstress |
Azure Pipelines successfully started running 2 pipeline(s). |
One libraries jitstress failure to sort out. |
#99740 should have fixed the libraries stress issue. Going to merge up and retest. |
/azp run runtime-coreclr jitstress, runtime-coreclr libraries-jitstress |
Azure Pipelines successfully started running 2 pipeline(s). |
Runtime failures are known to build analysis (not sure why the didn't get linked here). |
Fix the last remaining issues for edge likelihoods.
Main challenge here was switch lowering, particularly the expansions of switches into a series of tests. The adjustments here are similar to those for multi-guess GDV and type tests -- as we test possibilities one-by-one we have to adjust and scale up likelihoods of remining possibilities. But for switches things are more complex as edges may have dup counts, and we may eventually reach the point where the remaining tests had zero initial likelihood.
Contributes to #93020.