You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When QuickJitForLoops=0 (current default) and the JIT sees a Tier0 method with
a loop, it will switch to optimizing the method instead.
When this happens we should also have set BBOPT so that the JIT will read and
incorporate PGO data for the method and/or its inliees. But we were not doing that.
When QuickJitForLoops=0 (current default) and the JIT sees a Tier0 method with
a loop, it will switch to optimizing the method instead.
When this happens we should also have set `BBOPT` so that the JIT will read and
incorporate PGO data for the method and/or its inliees. But we were not doing that.
This change sets `BBOPT`.
When QuickJitForLoops=0 (current default) and the JIT sees a Tier0 method with
a loop, it will switch to optimizing the method instead.
When this happens we should also have set BBOPT so that the JIT will read and
incorporate PGO data for the method and/or its inliees. But we were not doing that.
This has the potential to cause perf swings. Hopefully mostly for the better.
I know of at least one regression in microbenchmarks: in System.Numerics.Tests.Perf_BitOperations.PopCount_ulong we will stop aligning a loop because we no longer think the body is executed enough to warrant alignment. We may also see a regression in System.MathBenchmarks.Single.Min as the profile data there is oddly biased.
No SPMI diffs. Presumably because when we originally jitted all those methods we never asked for PGO data, so if we now start asking, there's none to be had, and we end up in the same place.
I'll run some PMI diffs locally and post the results.
When QuickJitForLoops=0 (current default) and the JIT sees a Tier0 method with
a loop, it will switch to optimizing the method instead.
When this happens we should also have set `BBOPT` so that the JIT will read and
incorporate PGO data for the method and/or its inliees. But we were not doing that.
This change sets `BBOPT`.
ghost
locked as resolved and limited conversation to collaborators
Apr 23, 2022
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Labels
area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
5 participants
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When QuickJitForLoops=0 (current default) and the JIT sees a Tier0 method with
a loop, it will switch to optimizing the method instead.
When this happens we should also have set
BBOPTso that the JIT will read andincorporate PGO data for the method and/or its inliees. But we were not doing that.
This change sets
BBOPT.