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

[X64] [EgorBo] JIT: Bulk copy of byrefs #362

Open
MihuBot opened this issue May 1, 2024 · 2 comments
Open

[X64] [EgorBo] JIT: Bulk copy of byrefs #362

MihuBot opened this issue May 1, 2024 · 2 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented May 1, 2024

Build completed in 32 minutes.
dotnet/runtime#101761

Diffs

Diffs
Found 260 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 38861902
Total bytes of diff: 38856617
Total bytes of delta: -5285 (-0.01 % of base)
Total relative delta: Infinity
    diff is an improvement.
    relative diff is a regression.


Top file regressions (bytes):
          41 : System.Net.Sockets.dasm (0.02 % of base)

Top file improvements (bytes):
       -5315 : System.Collections.Immutable.dasm (-0.25 % of base)
         -11 : ILCompiler.Reflection.ReadyToRun.dasm (-0.00 % of base)

3 total files with Code Size differences (2 improved, 1 regressed), 253 unchanged.

Top method regressions (bytes):
          41 (Infinity of base) : System.Net.Sockets.dasm - System.Net.Sockets.SocketAsyncEngine:UnregisterSocket(long):this (FullOpts)

Top method improvements (bytes):
         -52 (-9.40 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts)
         -52 (-9.94 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -52 (-9.35 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:this (FullOpts)
         -52 (-8.87 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts)
         -52 (-9.35 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -52 (-9.67 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -52 (-9.47 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[System.Numerics.Vector`1[float]]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Numerics.Vector`1[float]]:this (FullOpts)
         -52 (-9.47 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -52 (-9.68 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.Numerics.Vector`1[float]]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Numerics.Vector`1[float]]:this (FullOpts)
         -52 (-9.68 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -51 (-5.34 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts)
         -51 (-5.73 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -51 (-5.69 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]]:this (FullOpts)
         -51 (-5.32 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts)
         -51 (-5.69 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -49 (-5.59 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -49 (-5.55 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (FullOpts)
         -49 (-5.55 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -49 (-5.79 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.__Canon]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (FullOpts)
         -49 (-5.79 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.__Canon]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-8.76 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[double,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts)
         -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[double,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-8.76 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[int,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts)
         -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[int,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-8.76 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[long,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts)
         -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[long,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-8.76 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[short,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts)
         -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[short,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-8.76 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts)
         -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-8.76 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[ubyte,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts)
         -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[ubyte,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[double,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:this (FullOpts)
         -48 (-8.54 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[double,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[double,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[int,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,System.Nullable`1[int]]]:this (FullOpts)
         -48 (-8.54 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[int,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[int,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[long,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[long,System.Nullable`1[int]]]:this (FullOpts)
         -48 (-8.54 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[long,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[long,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[short,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[short,System.Nullable`1[int]]]:this (FullOpts)
         -48 (-8.54 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[short,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[short,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.Nullable`1[int]]]:this (FullOpts)
         -48 (-8.54 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[ubyte,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[ubyte,System.Nullable`1[int]]]:this (FullOpts)
         -48 (-8.54 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[ubyte,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[ubyte,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[ubyte]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[double]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[double]:this (FullOpts)
         -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[int]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[int]:this (FullOpts)
         -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[long]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[long]:this (FullOpts)
         -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[short]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[short]:this (FullOpts)
         -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Nullable`1[int]]:this (FullOpts)
         -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[ubyte]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[ubyte]:this (FullOpts)
         -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[ubyte]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[double]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[double]:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[int]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[int]:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[long]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[long]:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[short]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[short]:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Nullable`1[int]]:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[ubyte]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[ubyte]:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[ubyte]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-7.10 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[System.__Canon]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[ubyte]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[double]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[double]:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[int]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[int]:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[long]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[long]:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[short]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[short]:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-5.83 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (FullOpts)
         -13 (-5.83 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Nullable`1[int]]:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)

Top method regressions (percentages):
          41 (Infinity of base) : System.Net.Sockets.dasm - System.Net.Sockets.SocketAsyncEngine:UnregisterSocket(long):this (FullOpts)

Top method improvements (percentages):
         -52 (-9.94 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[double]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[double]:this (FullOpts)
         -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[int]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[int]:this (FullOpts)
         -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[long]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[long]:this (FullOpts)
         -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[short]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[short]:this (FullOpts)
         -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Nullable`1[int]]:this (FullOpts)
         -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Numerics.Vector`1[float]]:this (FullOpts)
         -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[ubyte]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[ubyte]:this (FullOpts)
         -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[ubyte]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[ubyte]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -52 (-9.68 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.Numerics.Vector`1[float]]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Numerics.Vector`1[float]]:this (FullOpts)
         -52 (-9.68 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -52 (-9.67 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[double]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[double]:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[int]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[int]:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[long]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[long]:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[short]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[short]:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Nullable`1[int]]:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.Numerics.Vector`1[float]]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Numerics.Vector`1[float]]:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[ubyte]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[ubyte]:this (FullOpts)
         -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[ubyte]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -52 (-9.47 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[System.Numerics.Vector`1[float]]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Numerics.Vector`1[float]]:this (FullOpts)
         -52 (-9.47 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -52 (-9.40 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts)
         -52 (-9.35 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:this (FullOpts)
         -52 (-9.35 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[double,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[int,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[long,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[short,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[ubyte,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[double]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[double]:this (FullOpts)
         -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[int]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[int]:this (FullOpts)
         -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[long]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[long]:this (FullOpts)
         -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[short]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[short]:this (FullOpts)
         -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Nullable`1[int]]:this (FullOpts)
         -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.Numerics.Vector`1[float]]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Numerics.Vector`1[float]]:this (FullOpts)
         -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[ubyte]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[ubyte]:this (FullOpts)
         -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[ubyte]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[double]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[double]:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[int]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[int]:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[long]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[long]:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[short]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[short]:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Nullable`1[int]]:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[ubyte]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[ubyte]:this (FullOpts)
         -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[ubyte]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[ubyte]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[double,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[double,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[int,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,System.Nullable`1[int]]]:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[int,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[long,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[long,System.Nullable`1[int]]]:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[long,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[short,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[short,System.Nullable`1[int]]]:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[short,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.Nullable`1[int]]]:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[ubyte,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[ubyte,System.Nullable`1[int]]]:this (FullOpts)
         -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[ubyte,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -11 (-8.94 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -11 (-8.94 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -11 (-8.94 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -11 (-8.94 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -11 (-8.94 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -11 (-8.94 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)

219 total methods with Code Size differences (218 improved, 1 regressed), 240319 unchanged.

--------------------------------------------------------------------------------

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented May 1, 2024

Top method improvements

-52 (-9.40 % of base) - System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this
 ; Assembly listing for method System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 13 single block inlinees; 7 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T03] (  3,  3   )     ref  ->  rbx         this class-hnd single-def <System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]>
+;  V00 this         [V00,T04] (  3,  3   )     ref  ->  rbx         this class-hnd single-def <System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V02 tmp1         [V02,T01] (  3,  6   )     ref  ->  r15         class-hnd exact single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.Numerics.Vector`1[float],System.Nullable`1[int]]>
 ;  V03 tmp2         [V03,T02] (  3,  6   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.DictionaryEnumerator`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]>
 ;  V04 tmp3         [V04    ] (  4,  8   )  struct (160) [rbp-0xC0]  do-not-enreg[XSF] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.Numerics.Vector`1[float],System.Nullable`1[int]]>
 ;  V05 tmp4         [V05,T00] (  4,  7   )     ref  ->  rbx         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]>
 ;  V06 tmp5         [V06    ] ( 14, 20   )  struct (32) [rbp-0xE0]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]>
 ;* V07 tmp6         [V07    ] (  0,  0   )   byref  ->  zero-ref   
 ;* V08 tmp7         [V08    ] (  0,  0   )   byref  ->  zero-ref   
 ;* V09 tmp8         [V09    ] (  0,  0   )     int  ->  zero-ref   
 ;* V10 tmp9         [V10    ] (  0,  0   )  struct (32) zero-ref    do-not-enreg[S] "impAppendStmt" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]>
-;  V11 tmp10        [V11,T07] (  3,  3   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]>
-;  V12 tmp11        [V12,T05] (  2,  4   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]>
-;* V13 tmp12        [V13,T10] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;  V11 tmp10        [V11,T09] (  3,  3   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]>
+;  V12 tmp11        [V12,T06] (  2,  4   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]>
+;* V13 tmp12        [V13,T12] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V14 tmp13        [V14    ] (  0,  0   )  struct (32) zero-ref    ld-addr-op "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]>
-;  V15 tmp14        [V15,T08] (  2,  2   )     ref  ->  rdi         class-hnd exact single-def "impAppendStmt" <System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]>
+;  V15 tmp14        [V15,T10] (  2,  2   )     ref  ->  rdi         class-hnd exact single-def "impAppendStmt" <System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]>
 ;* V16 tmp15        [V16    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V17 tmp16        [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline return value spill temp" <System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]>
-;  V18 tmp17        [V18,T04] (  4,  4   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]>
+;  V18 tmp17        [V18,T05] (  4,  4   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]>
 ;* V19 tmp18        [V19    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]>
 ;* V20 tmp19        [V20    ] (  0,  0   )  struct (32) zero-ref    ld-addr-op "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]>
 ;* V21 tmp20        [V21    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V22 tmp21        [V22,T06] (  2,  4   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.Numerics.Vector`1[float],System.Nullable`1[int]]>
+;  V22 tmp21        [V22,T07] (  2,  4   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.Numerics.Vector`1[float],System.Nullable`1[int]]>
 ;  V23 tmp22        [V23    ] (  5,  5.50)     ref  ->  [rbp-0xE0]  do-not-enreg[X] addr-exposed "field V06._root (fldOffset=0x0)" P-DEP
 ;  V24 tmp23        [V24    ] (  7,  6   )     ref  ->  [rbp-0xD8]  do-not-enreg[X] addr-exposed "field V06._stack (fldOffset=0x8)" P-DEP
 ;  V25 tmp24        [V25    ] (  3,  4   )     ref  ->  [rbp-0xD0]  do-not-enreg[X] addr-exposed "field V06._current (fldOffset=0x10)" P-DEP
 ;  V26 tmp25        [V26    ] (  5,  5   )     int  ->  [rbp-0xC8]  do-not-enreg[X] addr-exposed "field V06._poolUserId (fldOffset=0x18)" P-DEP
 ;* V27 tmp26        [V27    ] (  0,  0   )     ref  ->  zero-ref    "field V14._root (fldOffset=0x0)" P-INDEP
 ;* V28 tmp27        [V28    ] (  0,  0   )     ref  ->  zero-ref    "field V14._stack (fldOffset=0x8)" P-INDEP
 ;* V29 tmp28        [V29    ] (  0,  0   )     ref  ->  zero-ref    "field V14._current (fldOffset=0x10)" P-INDEP
-;  V30 tmp29        [V30,T09] (  3,  1.50)     int  ->  r14         "field V14._poolUserId (fldOffset=0x18)" P-INDEP
+;  V30 tmp29        [V30,T11] (  3,  1.50)     int  ->  r14         "field V14._poolUserId (fldOffset=0x18)" P-INDEP
 ;* V31 tmp30        [V31    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V20._root (fldOffset=0x0)" P-INDEP
 ;* V32 tmp31        [V32    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V20._stack (fldOffset=0x8)" P-INDEP
 ;* V33 tmp32        [V33    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V20._current (fldOffset=0x10)" P-INDEP
 ;* V34 tmp33        [V34    ] (  0,  0   )     int  ->  zero-ref    "field V20._poolUserId (fldOffset=0x18)" P-INDEP
 ;* V35 tmp34        [V35    ] (  0,  0   )     ref  ->  zero-ref    single-def "V10.[000..008)"
 ;* V36 tmp35        [V36    ] (  0,  0   )     ref  ->  zero-ref    single-def "V10.[008..016)"
 ;* V37 tmp36        [V37    ] (  0,  0   )     ref  ->  zero-ref    single-def "V10.[016..024)"
-;  V38 tmp37        [V38,T11] (  2,  1   )     int  ->  r14         "V10.[024..028)"
+;  V38 tmp37        [V38,T13] (  2,  1   )     int  ->  r14         "V10.[024..028)"
+;  V39 rat0         [V39,T03] (  3,  6   )   byref  ->  rdi         "fgMakeTemp is creating a new local variable"
+;  V40 rat1         [V40,T08] (  2,  4   )   byref  ->  rdi         "argument with side effect"
 ;
 ; Lcl frame size = 192
 
 G_M46956_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        sub      rsp, 192
        lea      rbp, [rsp+0xE0]
        vxorps   xmm8, xmm8, xmm8
        mov      rax, -192
        vmovdqa  xmmword ptr [rbp+rax-0x20], xmm8
        vmovdqa  xmmword ptr [rbp+rax-0x10], xmm8
        vmovdqa  xmmword ptr [rax+rbp], xmm8
        add      rax, 48
        jne      SHORT  -5 instr
        mov      rbx, rdi
 						;; size=64 bbWeight=1 PerfScore 13.83
 G_M46956_IG02:
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.Numerics.Vector`1[float],System.Nullable`1[int]]
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      rbx, gword ptr [rbx+0x08]
        test     rbx, rbx
        je       G_M46956_IG09
        mov      gword ptr [rbp-0xE0], rbx
        xor      rax, rax
        mov      gword ptr [rbp-0xD0], rax
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.SecureObjectPool:NewId():int
        call     [rax]System.Collections.Immutable.SecureObjectPool:NewId():int
        mov      dword ptr [rbp-0xC8], eax
        xor      rsi, rsi
        mov      gword ptr [rbp-0xD8], rsi
        mov      rsi, gword ptr [rbp-0xE0]
        cmp      gword ptr [rsi+0x08], 0
        je       G_M46956_IG06
 						;; size=92 bbWeight=1 PerfScore 17.50
 G_M46956_IG03:
        mov      r14d, dword ptr [rbp-0xC8]
        cmp      r14d, -1
        je       SHORT G_M46956_IG04
        lea      rsi, [rbp-0xD8]
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Immutable.AllocFreeConcurrentStack`1[System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
        call     [rax]System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
        test     eax, eax
        je       SHORT G_M46956_IG04
        mov      rdi, gword ptr [rbp-0xD8]
        mov      dword ptr [rdi+0x10], r14d
        jmp      SHORT G_M46956_IG05
 						;; size=59 bbWeight=0.50 PerfScore 5.75
 G_M46956_IG04:
        xor      rdi, rdi
        mov      gword ptr [rbp-0xD8], rdi
        mov      r14d, dword ptr [rbp-0xC8]
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
        movzx    rsi, byte  ptr [rbx+0x1D]
        mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
        call     [rax]System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        lea      rdi, bword ptr [rbx+0x08]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        mov      dword ptr [rbx+0x10], r14d
        mov      gword ptr [rbp-0xD8], rbx
 						;; size=95 bbWeight=0.50 PerfScore 7.25
 G_M46956_IG05:
        lea      rdi, [rbp-0xE0]
        mov      rsi, gword ptr [rbp-0xE0]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]):this
        call     [rax]System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]):this
 						;; size=26 bbWeight=0.50 PerfScore 2.38
 G_M46956_IG06:
        vmovdqu  ymm0, ymmword ptr [rbp-0xE0]
        vmovdqu  ymmword ptr [rbp-0xB0], ymm0
 						;; size=16 bbWeight=1 PerfScore 5.00
 G_M46956_IG07:
        vxorps   ymm0, ymm0, ymm0
        vmovdqu  ymmword ptr [rbp-0x90], ymm0
        vmovdqu  ymmword ptr [rbp-0x70], ymm0
        vmovdqu  ymmword ptr [rbp-0x50], ymm0
        vmovdqu  xmmword ptr [rbp-0x30], xmm0
        mov      dword ptr [rbp-0xB8], -1
        lea      rdi, bword ptr [r15+0x08]
-       lea      rsi, bword ptr [rbp-0xC0]
-       call     CORINFO_HELP_ASSIGN_BYREF
-       movsq    
-       call     CORINFO_HELP_ASSIGN_BYREF
-       call     CORINFO_HELP_ASSIGN_BYREF
-       call     CORINFO_HELP_ASSIGN_BYREF
-       movsq    
-       movsq    
-       call     CORINFO_HELP_ASSIGN_BYREF
-       mov      ecx, 5
-       rep movsq 
-       call     CORINFO_HELP_ASSIGN_BYREF
-       call     CORINFO_HELP_ASSIGN_BYREF
-       call     CORINFO_HELP_ASSIGN_BYREF
-       call     CORINFO_HELP_ASSIGN_BYREF
-       movsq    
-       movsq    
-       movsq    
+       cmp      byte  ptr [rdi], dil
+       lea      rsi, [rbp-0xC0]
+       mov      edx, 72
+       call     CORINFO_HELP_ASSIGN_STRUCT
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Immutable.DictionaryEnumerator`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rsi, r15
        lea      rdi, bword ptr [rbx+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rax, rbx
-						;; size=146 bbWeight=1 PerfScore 50.08
+						;; size=94 bbWeight=1 PerfScore 14.08
 G_M46956_IG08:
        vzeroupper 
        add      rsp, 192
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=19 bbWeight=1 PerfScore 4.75
 G_M46956_IG09:
        mov      edi, 0x45F
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
        call     [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
        int3     
 						;; size=36 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 553, prolog size 61, PerfScore 106.54, instruction count 115, allocated bytes for code 553 (MethodHash=0c354893) for method System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts)
+; Total bytes of code 501, prolog size 61, PerfScore 70.54, instruction count 101, allocated bytes for code 501 (MethodHash=0c354893) for method System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts)
-52 (-9.94 % of base) - System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this
 ; Assembly listing for method System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 11 single block inlinees; 6 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T02] (  3,  3   )     ref  ->  rbx         this class-hnd single-def <System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]>
+;  V00 this         [V00,T03] (  3,  3   )     ref  ->  rbx         this class-hnd single-def <System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V02 tmp1         [V02,T01] (  3,  6   )     ref  ->  r15         class-hnd exact single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.Numerics.Vector`1[float],System.Nullable`1[int]]>
 ;  V03 tmp2         [V03    ] (  4,  8   )  struct (160) [rbp-0xC0]  do-not-enreg[XSF] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.Numerics.Vector`1[float],System.Nullable`1[int]]>
 ;  V04 tmp3         [V04,T00] (  4,  7   )     ref  ->  rbx         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]>
 ;  V05 tmp4         [V05    ] ( 14, 20   )  struct (32) [rbp-0xE0]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]>
 ;* V06 tmp5         [V06    ] (  0,  0   )   byref  ->  zero-ref   
 ;* V07 tmp6         [V07    ] (  0,  0   )   byref  ->  zero-ref   
 ;* V08 tmp7         [V08    ] (  0,  0   )     int  ->  zero-ref   
 ;* V09 tmp8         [V09    ] (  0,  0   )  struct (32) zero-ref    do-not-enreg[S] "impAppendStmt" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]>
-;  V10 tmp9         [V10,T05] (  3,  3   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]>
-;  V11 tmp10        [V11,T04] (  2,  4   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]>
-;* V12 tmp11        [V12,T08] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;  V10 tmp9         [V10,T07] (  3,  3   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]>
+;  V11 tmp10        [V11,T05] (  2,  4   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]>
+;* V12 tmp11        [V12,T10] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V13 tmp12        [V13    ] (  0,  0   )  struct (32) zero-ref    ld-addr-op "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]>
-;  V14 tmp13        [V14,T06] (  2,  2   )     ref  ->  rdi         class-hnd exact single-def "impAppendStmt" <System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]>
+;  V14 tmp13        [V14,T08] (  2,  2   )     ref  ->  rdi         class-hnd exact single-def "impAppendStmt" <System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]>
 ;* V15 tmp14        [V15    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V16 tmp15        [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline return value spill temp" <System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]>
-;  V17 tmp16        [V17,T03] (  4,  4   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]>
+;  V17 tmp16        [V17,T04] (  4,  4   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]>
 ;* V18 tmp17        [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]>
 ;* V19 tmp18        [V19    ] (  0,  0   )  struct (32) zero-ref    ld-addr-op "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]>
 ;* V20 tmp19        [V20    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;  V21 tmp20        [V21    ] (  5,  5.50)     ref  ->  [rbp-0xE0]  do-not-enreg[X] addr-exposed "field V05._root (fldOffset=0x0)" P-DEP
 ;  V22 tmp21        [V22    ] (  7,  6   )     ref  ->  [rbp-0xD8]  do-not-enreg[X] addr-exposed "field V05._stack (fldOffset=0x8)" P-DEP
 ;  V23 tmp22        [V23    ] (  3,  4   )     ref  ->  [rbp-0xD0]  do-not-enreg[X] addr-exposed "field V05._current (fldOffset=0x10)" P-DEP
 ;  V24 tmp23        [V24    ] (  5,  5   )     int  ->  [rbp-0xC8]  do-not-enreg[X] addr-exposed "field V05._poolUserId (fldOffset=0x18)" P-DEP
 ;* V25 tmp24        [V25    ] (  0,  0   )     ref  ->  zero-ref    "field V13._root (fldOffset=0x0)" P-INDEP
 ;* V26 tmp25        [V26    ] (  0,  0   )     ref  ->  zero-ref    "field V13._stack (fldOffset=0x8)" P-INDEP
 ;* V27 tmp26        [V27    ] (  0,  0   )     ref  ->  zero-ref    "field V13._current (fldOffset=0x10)" P-INDEP
-;  V28 tmp27        [V28,T07] (  3,  1.50)     int  ->  r14         "field V13._poolUserId (fldOffset=0x18)" P-INDEP
+;  V28 tmp27        [V28,T09] (  3,  1.50)     int  ->  r14         "field V13._poolUserId (fldOffset=0x18)" P-INDEP
 ;* V29 tmp28        [V29    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V19._root (fldOffset=0x0)" P-INDEP
 ;* V30 tmp29        [V30    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V19._stack (fldOffset=0x8)" P-INDEP
 ;* V31 tmp30        [V31    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V19._current (fldOffset=0x10)" P-INDEP
 ;* V32 tmp31        [V32    ] (  0,  0   )     int  ->  zero-ref    "field V19._poolUserId (fldOffset=0x18)" P-INDEP
 ;* V33 tmp32        [V33    ] (  0,  0   )     ref  ->  zero-ref    single-def "V09.[000..008)"
 ;* V34 tmp33        [V34    ] (  0,  0   )     ref  ->  zero-ref    single-def "V09.[008..016)"
 ;* V35 tmp34        [V35    ] (  0,  0   )     ref  ->  zero-ref    single-def "V09.[016..024)"
-;  V36 tmp35        [V36,T09] (  2,  1   )     int  ->  r14         "V09.[024..028)"
+;  V36 tmp35        [V36,T11] (  2,  1   )     int  ->  r14         "V09.[024..028)"
+;  V37 rat0         [V37,T02] (  3,  6   )   byref  ->  rdi         "fgMakeTemp is creating a new local variable"
+;  V38 rat1         [V38,T06] (  2,  4   )   byref  ->  rdi         "argument with side effect"
 ;
 ; Lcl frame size = 192
 
 G_M12866_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        sub      rsp, 192
        lea      rbp, [rsp+0xE0]
        vxorps   xmm8, xmm8, xmm8
        mov      rax, -192
        vmovdqa  xmmword ptr [rbp+rax-0x20], xmm8
        vmovdqa  xmmword ptr [rbp+rax-0x10], xmm8
        vmovdqa  xmmword ptr [rax+rbp], xmm8
        add      rax, 48
        jne      SHORT  -5 instr
        mov      rbx, rdi
 						;; size=64 bbWeight=1 PerfScore 13.83
 G_M12866_IG02:
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.Numerics.Vector`1[float],System.Nullable`1[int]]
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      rbx, gword ptr [rbx+0x08]
        test     rbx, rbx
        je       G_M12866_IG09
        mov      gword ptr [rbp-0xE0], rbx
        xor      rax, rax
        mov      gword ptr [rbp-0xD0], rax
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.SecureObjectPool:NewId():int
        call     [rax]System.Collections.Immutable.SecureObjectPool:NewId():int
        mov      dword ptr [rbp-0xC8], eax
        xor      rsi, rsi
        mov      gword ptr [rbp-0xD8], rsi
        mov      rsi, gword ptr [rbp-0xE0]
        cmp      gword ptr [rsi+0x08], 0
        je       G_M12866_IG06
 						;; size=92 bbWeight=1 PerfScore 17.50
 G_M12866_IG03:
        mov      r14d, dword ptr [rbp-0xC8]
        cmp      r14d, -1
        je       SHORT G_M12866_IG04
        lea      rsi, [rbp-0xD8]
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Immutable.AllocFreeConcurrentStack`1[System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
        call     [rax]System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
        test     eax, eax
        je       SHORT G_M12866_IG04
        mov      rdi, gword ptr [rbp-0xD8]
        mov      dword ptr [rdi+0x10], r14d
        jmp      SHORT G_M12866_IG05
 						;; size=59 bbWeight=0.50 PerfScore 5.75
 G_M12866_IG04:
        xor      rdi, rdi
        mov      gword ptr [rbp-0xD8], rdi
        mov      r14d, dword ptr [rbp-0xC8]
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
        movzx    rsi, byte  ptr [rbx+0x1D]
        mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
        call     [rax]System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        lea      rdi, bword ptr [rbx+0x08]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        mov      dword ptr [rbx+0x10], r14d
        mov      gword ptr [rbp-0xD8], rbx
 						;; size=95 bbWeight=0.50 PerfScore 7.25
 G_M12866_IG05:
        lea      rdi, [rbp-0xE0]
        mov      rsi, gword ptr [rbp-0xE0]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]):this
        call     [rax]System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]):this
 						;; size=26 bbWeight=0.50 PerfScore 2.38
 G_M12866_IG06:
        vmovdqu  ymm0, ymmword ptr [rbp-0xE0]
        vmovdqu  ymmword ptr [rbp-0xB0], ymm0
 						;; size=16 bbWeight=1 PerfScore 5.00
 G_M12866_IG07:
        vxorps   ymm0, ymm0, ymm0
        vmovdqu  ymmword ptr [rbp-0x90], ymm0
        vmovdqu  ymmword ptr [rbp-0x70], ymm0
        vmovdqu  ymmword ptr [rbp-0x50], ymm0
        vmovdqu  xmmword ptr [rbp-0x30], xmm0
        mov      dword ptr [rbp-0xB8], -1
        lea      rdi, bword ptr [r15+0x08]
-       lea      rsi, bword ptr [rbp-0xC0]
-       call     CORINFO_HELP_ASSIGN_BYREF
-       movsq    
-       call     CORINFO_HELP_ASSIGN_BYREF
-       call     CORINFO_HELP_ASSIGN_BYREF
-       call     CORINFO_HELP_ASSIGN_BYREF
-       movsq    
-       movsq    
-       call     CORINFO_HELP_ASSIGN_BYREF
-       mov      ecx, 5
-       rep movsq 
-       call     CORINFO_HELP_ASSIGN_BYREF
-       call     CORINFO_HELP_ASSIGN_BYREF
-       call     CORINFO_HELP_ASSIGN_BYREF
-       call     CORINFO_HELP_ASSIGN_BYREF
-       movsq    
-       movsq    
-       movsq    
+       cmp      byte  ptr [rdi], dil
+       lea      rsi, [rbp-0xC0]
+       mov      edx, 72
+       call     CORINFO_HELP_ASSIGN_STRUCT
        mov      rax, r15
-						;; size=116 bbWeight=1 PerfScore 46.83
+						;; size=64 bbWeight=1 PerfScore 10.83
 G_M12866_IG08:
        vzeroupper 
        add      rsp, 192
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=19 bbWeight=1 PerfScore 4.75
 G_M12866_IG09:
        mov      edi, 0x45F
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
        call     [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
        int3     
 						;; size=36 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 523, prolog size 61, PerfScore 103.29, instruction count 109, allocated bytes for code 523 (MethodHash=8ba9cdbd) for method System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
+; Total bytes of code 471, prolog size 61, PerfScore 67.29, instruction count 95, allocated bytes for code 471 (MethodHash=8ba9cdbd) for method System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
-52 (-9.35 % of base) - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:this
 ; Assembly listing for method System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  5,  5   )     ref  ->  rbx         this class-hnd single-def <System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Numerics.Vector`1[float],System.Nullable`1[int]]>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V02 tmp1         [V02,T02] (  3,  6   )     ref  ->  r15         class-hnd exact single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.Numerics.Vector`1[float],System.Nullable`1[int]]>
 ;  V03 tmp2         [V03    ] (  5, 10   )  struct (160) [rbp-0xC8]  do-not-enreg[XSF] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.Numerics.Vector`1[float],System.Nullable`1[int]]>
 ;  V04 tmp3         [V04,T01] (  4,  7   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]>
 ;  V05 tmp4         [V05    ] ( 14, 20   )  struct (32) [rbp-0xE8]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]>
 ;* V06 tmp5         [V06    ] (  0,  0   )   byref  ->  zero-ref   
-;  V07 tmp6         [V07,T06] (  2,  2   )   byref  ->  rcx         single-def
-;  V08 tmp7         [V08,T08] (  2,  2   )     int  ->  rdi        
+;  V07 tmp6         [V07,T08] (  2,  2   )   byref  ->  rdi         single-def
+;  V08 tmp7         [V08,T10] (  2,  2   )     int  ->  rsi        
 ;* V09 tmp8         [V09    ] (  0,  0   )  struct (32) zero-ref    do-not-enreg[S] "impAppendStmt" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]>
-;  V10 tmp9         [V10,T05] (  3,  3   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]>
-;  V11 tmp10        [V11,T04] (  2,  4   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]>
-;* V12 tmp11        [V12,T10] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;  V10 tmp9         [V10,T07] (  3,  3   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]>
+;  V11 tmp10        [V11,T05] (  2,  4   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]>
+;* V12 tmp11        [V12,T12] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V13 tmp12        [V13    ] (  0,  0   )  struct (32) zero-ref    ld-addr-op "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]>
-;  V14 tmp13        [V14,T07] (  2,  2   )     ref  ->  rdi         class-hnd exact single-def "impAppendStmt" <System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]>
+;  V14 tmp13        [V14,T09] (  2,  2   )     ref  ->  rdi         class-hnd exact single-def "impAppendStmt" <System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]>
 ;* V15 tmp14        [V15    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V16 tmp15        [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline return value spill temp" <System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]>
-;  V17 tmp16        [V17,T03] (  4,  4   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]>
+;  V17 tmp16        [V17,T04] (  4,  4   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]>
 ;* V18 tmp17        [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]>
 ;* V19 tmp18        [V19    ] (  0,  0   )  struct (32) zero-ref    ld-addr-op "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]>
 ;* V20 tmp19        [V20    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;  V21 tmp20        [V21    ] (  5,  5.50)     ref  ->  [rbp-0xE8]  do-not-enreg[X] addr-exposed "field V05._root (fldOffset=0x0)" P-DEP
 ;  V22 tmp21        [V22    ] (  7,  6   )     ref  ->  [rbp-0xE0]  do-not-enreg[X] addr-exposed "field V05._stack (fldOffset=0x8)" P-DEP
 ;  V23 tmp22        [V23    ] (  3,  4   )     ref  ->  [rbp-0xD8]  do-not-enreg[X] addr-exposed "field V05._current (fldOffset=0x10)" P-DEP
 ;  V24 tmp23        [V24    ] (  5,  5   )     int  ->  [rbp-0xD0]  do-not-enreg[X] addr-exposed "field V05._poolUserId (fldOffset=0x18)" P-DEP
 ;* V25 tmp24        [V25    ] (  0,  0   )     ref  ->  zero-ref    "field V13._root (fldOffset=0x0)" P-INDEP
 ;* V26 tmp25        [V26    ] (  0,  0   )     ref  ->  zero-ref    "field V13._stack (fldOffset=0x8)" P-INDEP
 ;* V27 tmp26        [V27    ] (  0,  0   )     ref  ->  zero-ref    "field V13._current (fldOffset=0x10)" P-INDEP
-;  V28 tmp27        [V28,T09] (  3,  1.50)     int  ->  r13         "field V13._poolUserId (fldOffset=0x18)" P-INDEP
+;  V28 tmp27        [V28,T11] (  3,  1.50)     int  ->  r13         "field V13._poolUserId (fldOffset=0x18)" P-INDEP
 ;* V29 tmp28        [V29    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V19._root (fldOffset=0x0)" P-INDEP
 ;* V30 tmp29        [V30    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V19._stack (fldOffset=0x8)" P-INDEP
 ;* V31 tmp30        [V31    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V19._current (fldOffset=0x10)" P-INDEP
 ;* V32 tmp31        [V32    ] (  0,  0   )     int  ->  zero-ref    "field V19._poolUserId (fldOffset=0x18)" P-INDEP
 ;* V33 tmp32        [V33    ] (  0,  0   )     ref  ->  zero-ref    single-def "V09.[000..008)"
 ;* V34 tmp33        [V34    ] (  0,  0   )     ref  ->  zero-ref    single-def "V09.[008..016)"
 ;* V35 tmp34        [V35    ] (  0,  0   )     ref  ->  zero-ref    single-def "V09.[016..024)"
-;  V36 tmp35        [V36,T11] (  2,  1   )     int  ->  r13         "V09.[024..028)"
+;  V36 tmp35        [V36,T13] (  2,  1   )     int  ->  r13         "V09.[024..028)"
+;  V37 rat0         [V37,T03] (  3,  6   )   byref  ->  rdi         "fgMakeTemp is creating a new local variable"
+;  V38 rat1         [V38,T06] (  2,  4   )   byref  ->  rdi         "argument with side effect"
 ;
 ; Lcl frame size = 200
 
 G_M25738_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 200
        lea      rbp, [rsp+0xF0]
        xor      eax, eax
        mov      qword ptr [rbp-0xE8], rax
        vxorps   xmm8, xmm8, xmm8
        vmovdqu  ymmword ptr [rbp-0xE0], ymm8
        vmovdqu  ymmword ptr [rbp-0xC0], ymm8
        vmovdqu  ymmword ptr [rbp-0xA0], ymm8
        vmovdqu  ymmword ptr [rbp-0x80], ymm8
        vmovdqu  ymmword ptr [rbp-0x60], ymm8
        vmovdqa  xmmword ptr [rbp-0x40], xmm8
        mov      qword ptr [rbp-0x30], rax
        mov      rbx, rdi
 						;; size=85 bbWeight=1 PerfScore 21.58
 G_M25738_IG02:
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.Numerics.Vector`1[float],System.Nullable`1[int]]
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      r14, gword ptr [rbx+0x08]
        mov      gword ptr [rbp-0xC8], rbx
        test     r14, r14
        je       G_M25738_IG09
        mov      gword ptr [rbp-0xE8], r14
        xor      rax, rax
        mov      gword ptr [rbp-0xD8], rax
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.SecureObjectPool:NewId():int
        call     [rax]System.Collections.Immutable.SecureObjectPool:NewId():int
        mov      dword ptr [rbp-0xD0], eax
        xor      rsi, rsi
        mov      gword ptr [rbp-0xE0], rsi
        mov      rsi, gword ptr [rbp-0xE8]
        cmp      gword ptr [rsi+0x08], 0
        je       G_M25738_IG06
 						;; size=99 bbWeight=1 PerfScore 18.50
 G_M25738_IG03:
        mov      r13d, dword ptr [rbp-0xD0]
        cmp      r13d, -1
        je       SHORT G_M25738_IG04
        lea      rsi, [rbp-0xE0]
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Immutable.AllocFreeConcurrentStack`1[System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
        call     [rax]System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte
        test     eax, eax
        je       SHORT G_M25738_IG04
        mov      rdi, gword ptr [rbp-0xE0]
        mov      dword ptr [rdi+0x10], r13d
        jmp      SHORT G_M25738_IG05
 						;; size=59 bbWeight=0.50 PerfScore 5.75
 G_M25738_IG04:
        xor      rdi, rdi
        mov      gword ptr [rbp-0xE0], rdi
        mov      r13d, dword ptr [rbp-0xD0]
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]
        call     CORINFO_HELP_NEWSFAST
        mov      r12, rax
        movzx    rsi, byte  ptr [r14+0x1D]
        mov      rdi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
        call     [rax]System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
        lea      rdi, bword ptr [r14+0x08]
        mov      rsi, r12
        call     CORINFO_HELP_ASSIGN_REF
        mov      dword ptr [r14+0x10], r13d
        mov      gword ptr [rbp-0xE0], r14
 						;; size=95 bbWeight=0.50 PerfScore 7.25
 G_M25738_IG05:
        lea      rdi, [rbp-0xE8]
        mov      rsi, gword ptr [rbp-0xE8]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]):this
        call     [rax]System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]):this
 						;; size=26 bbWeight=0.50 PerfScore 2.38
 G_M25738_IG06:
        vmovdqu  ymm0, ymmword ptr [rbp-0xE8]
        vmovdqu  ymmword ptr [rbp-0xB8], ymm0
 						;; size=16 bbWeight=1 PerfScore 5.00
 G_M25738_IG07:
        vxorps   ymm0, ymm0, ymm0
        vmovdqu  ymmword ptr [rbp-0x98], ymm0
        vmovdqu  ymmword ptr [rbp-0x78], ymm0
        vmovdqu  ymmword ptr [rbp-0x58], ymm0
        vmovdqu  xmmword ptr [rbp-0x38], xmm0
-       lea      rcx, bword ptr [rbp-0xC8]
-       mov      edi, dword ptr [rbx+0x2C]
-       mov      dword ptr [rcx+0x08], edi
+       lea      rdi, bword ptr [rbp-0xC8]
+       mov      esi, dword ptr [rbx+0x2C]
+       mov      dword ptr [rdi+0x08], esi
        lea      rdi, bword ptr [r15+0x08]
-       lea      rsi, bword ptr [rbp-0xC8]
-       call     CORINFO_HELP_ASSIGN_BYREF
-       movsq    
-       call     CORINFO_HELP_ASSIGN_BYREF
-       call     CORINFO_HELP_ASSIGN_BYREF
-       call     CORINFO_HELP_ASSIGN_BYREF
-       movsq    
-       movsq    
-       call     CORINFO_HELP_ASSIGN_BYREF
-       mov      ecx, 5
-       rep movsq 
-       call     CORINFO_HELP_ASSIGN_BYREF
-       call     CORINFO_HELP_ASSIGN_BYREF
-       call     CORINFO_HELP_ASSIGN_BYREF
-       call     CORINFO_HELP_ASSIGN_BYREF
-       movsq    
-       movsq    
-       movsq    
+       cmp      byte  ptr [rdi], dil
+       lea      rsi, [rbp-0xC8]
+       mov      edx, 72
+       call     CORINFO_HELP_ASSIGN_STRUCT
        mov      rax, r15
-						;; size=119 bbWeight=1 PerfScore 49.33
+						;; size=67 bbWeight=1 PerfScore 13.33
 G_M25738_IG08:
        vzeroupper 
        add      rsp, 200
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=21 bbWeight=1 PerfScore 5.25
 G_M25738_IG09:
        mov      edi, 0x45F
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
        call     [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String)
        int3     
 						;; size=36 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 556, prolog size 82, PerfScore 115.04, instruction count 117, allocated bytes for code 556 (MethodHash=b1859b75) for method System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:this (FullOpts)
+; Total bytes of code 504, prolog size 82, PerfScore 79.04, instruction count 103, allocated bytes for code 504 (MethodHash=b1859b75) for method System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:this (FullOpts)

Larger list of diffs: https://gist.github.com/MihuBot/9664169c61236544050564bd3af95e49

@MihuBot
Copy link
Owner Author

MihuBot commented May 1, 2024

@EgorBo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant