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

[JitDiff X64] [AndyAyersMS] unblock inlining of generics with static fields #756

Open
MihuBot opened this issue Oct 26, 2024 · 3 comments
Open

Comments

@MihuBot
Copy link
Owner

MihuBot commented Oct 26, 2024

Job completed in 18 minutes 56 seconds.
dotnet/runtime#109256

Diffs

Diffs
Found 296 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 39560127
Total bytes of diff: 39580016
Total bytes of delta: 19889 (0.05 % of base)
Total relative delta: 104.89
    diff is a regression.
    relative diff is a regression.


Top file regressions (bytes):
        8289 : System.Collections.Immutable.dasm (0.40 % of base)
        3589 : System.Linq.dasm (0.30 % of base)
        1295 : System.Private.CoreLib.dasm (0.02 % of base)
        1037 : System.Numerics.Tensors.dasm (0.06 % of base)
         946 : System.Threading.Tasks.Dataflow.dasm (0.08 % of base)
         741 : System.Collections.Concurrent.dasm (0.20 % of base)
         656 : System.Linq.Expressions.dasm (0.07 % of base)
         420 : System.Text.Json.dasm (0.03 % of base)
         417 : System.Threading.Channels.dasm (0.19 % of base)
         384 : System.Net.Http.Json.dasm (0.16 % of base)
         295 : System.ComponentModel.Composition.dasm (0.07 % of base)
         291 : System.Data.Common.dasm (0.02 % of base)
         251 : System.Private.Xml.dasm (0.01 % of base)
         206 : System.Collections.dasm (0.05 % of base)
         128 : Microsoft.Extensions.Caching.Abstractions.dasm (0.39 % of base)
         127 : System.Linq.Parallel.dasm (0.01 % of base)
         126 : System.Net.Http.dasm (0.02 % of base)
         113 : System.ServiceModel.Syndication.dasm (0.07 % of base)
          78 : System.Reflection.MetadataLoadContext.dasm (0.04 % of base)
          77 : System.ObjectModel.dasm (0.12 % of base)
          72 : System.Memory.dasm (0.02 % of base)
          51 : System.ComponentModel.TypeConverter.dasm (0.02 % of base)
          51 : System.Net.Security.dasm (0.02 % of base)
          44 : System.Private.Xml.Linq.dasm (0.02 % of base)
          39 : System.Reflection.Context.dasm (0.07 % of base)
          39 : System.Private.Uri.dasm (0.04 % of base)
          39 : System.Diagnostics.Process.dasm (0.04 % of base)
          36 : Microsoft.Extensions.Options.dasm (0.12 % of base)
          36 : System.Threading.RateLimiting.dasm (0.02 % of base)
          36 : System.Security.Cryptography.Pkcs.dasm (0.01 % of base)
          25 : Microsoft.CSharp.dasm (0.01 % of base)
          20 : System.Diagnostics.DiagnosticSource.dasm (0.01 % of base)
           6 : System.Text.RegularExpressions.dasm (0.00 % of base)

Top file improvements (bytes):
         -42 : System.Composition.TypedParts.dasm (-0.09 % of base)
         -15 : System.Runtime.Numerics.dasm (-0.01 % of base)
         -14 : System.Linq.Queryable.dasm (-0.00 % of base)

36 total files with Code Size differences (3 improved, 33 regressed), 223 unchanged.

Top method regressions (bytes):
         741 (903.66 % of base) : System.Linq.dasm - System.Linq.Enumerable:OrderDescending[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Linq.IOrderedEnumerable`1[System.__Canon] (FullOpts)
         738 (900.00 % of base) : System.Linq.dasm - System.Linq.Enumerable:Order[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Linq.IOrderedEnumerable`1[System.__Canon] (FullOpts)
         628 (436.11 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.__Canon[]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (FullOpts)
         611 (28.08 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:this (FullOpts)
         509 (302.98 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:CreateBuilder[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon] (FullOpts)
         469 (87.83 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:Union(System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:this (FullOpts)
         387 (45.37 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock:ReceiveCore[System.__Canon](System.Threading.Tasks.Dataflow.ISourceBlock`1[System.__Canon],ubyte,System.TimeSpan,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
         378 (28.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]:Add(System.__Canon,System.Nullable`1[int],System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]],int,byref):System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
         370 (62.93 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (FullOpts)
         352 (37.41 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:Intersect(System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:this (FullOpts)
         259 (43.09 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.SourceCore`1[System.__Canon]:LinkTo(System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.DataflowLinkOptions):System.IDisposable:this (FullOpts)
         253 (51.21 % of base) : System.Linq.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Range):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         251 (58.78 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (FullOpts)
         241 (97.57 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:.cctor() (FullOpts)
         225 (87.89 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:WithComparer(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:this (FullOpts)
         224 (76.71 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Clear():System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:this (FullOpts)
         224 (65.12 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Union(System.Collections.Generic.IEnumerable`1[System.__Canon],ubyte):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:this (FullOpts)
         223 (55.20 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:WithComparers(System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
         223 (67.78 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.__Canon):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (FullOpts)
         223 (67.78 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:CreateRange[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (FullOpts)
         220 (73.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (FullOpts)
         211 (26.08 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:GetTaskForValueTaskSource(System.Threading.Tasks.Sources.IValueTaskSource`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (FullOpts)
         187 (32.58 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[System.__Canon,System.Nullable`1[int]](byref,System.__Canon,System.Func`2[System.__Canon,System.Nullable`1[int]],System.Func`3[System.__Canon,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         187 (36.17 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[System.__Canon,System.Nullable`1[int]](byref,System.__Canon,System.Nullable`1[int],System.Func`3[System.__Canon,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         166 (39.34 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.__Canon,System.Nullable`1[int]](byref,System.__Canon,System.Nullable`1[int]):System.Nullable`1[int] (FullOpts)
         166 (39.81 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryAdd[System.__Canon,System.Nullable`1[int]](byref,System.__Canon,System.Nullable`1[int]):ubyte (FullOpts)
         166 (35.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryUpdate[System.__Canon,System.Nullable`1[int]](byref,System.__Canon,System.Nullable`1[int],System.Nullable`1[int]):ubyte (FullOpts)
         165 (151.38 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
         156 (113.87 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.__Canon[]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (FullOpts)
         149 (215.94 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2[System.__Canon,System.Nullable`1[int]]:.cctor() (FullOpts)
         146 (14.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+OrderedIterator`1[System.__Canon]:ToList(int,int):System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
         134 (9.49 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task:WhenAll[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
         129 (12.75 % of base) : System.Threading.Channels.dasm - System.Threading.Channels.BoundedChannel`1[System.__Canon]:.ctor(int,int,ubyte,System.Action`1[System.__Canon]):this (FullOpts)
         128 (11.71 % of base) : Microsoft.Extensions.Caching.Abstractions.dasm - Microsoft.Extensions.Caching.Memory.CacheExtensions+<GetOrCreateAsync>d__11`1[System.__Canon]:MoveNext():this (FullOpts)
         128 (3.55 % of base) : System.Net.Http.Json.dasm - System.Net.Http.Json.HttpClientJsonExtensions+<<FromJsonAsyncCore>g__Core|12_0>d`2[System.__Canon,System.Nullable`1[int]]:MoveNext():this (FullOpts)
         128 (5.15 % of base) : System.Net.Http.Json.dasm - System.Net.Http.Json.HttpContentJsonExtensions+<ReadFromJsonAsyncCore>d__12`1[System.__Canon]:MoveNext():this (FullOpts)
         128 (5.34 % of base) : System.Net.Http.Json.dasm - System.Net.Http.Json.HttpContentJsonExtensions+<ReadFromJsonAsyncCore>d__16`1[System.__Canon]:MoveNext():this (FullOpts)
         128 (60.38 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:AsTask():System.Threading.Tasks.Task`1[System.__Canon]:this (FullOpts)
         126 (188.06 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:.cctor() (FullOpts)
         125 (30.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:.cctor() (FullOpts)
         125 (87.41 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:SetResult(System.__Canon):this (FullOpts)
         124 (40.66 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentBag`1[System.__Canon]:CreateWorkStealingQueueForCurrentThread():System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[System.__Canon]:this (FullOpts)
         124 (24.46 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataReader:GetFieldValueAsync[System.__Canon](int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.__Canon]:this (FullOpts)
         117 (13.70 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Union(System.ReadOnlySpan`1[System.__Canon],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon] (FullOpts)
         114 (5.48 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:FindAll(System.Predicate`1[System.__Canon]):System.Collections.Immutable.ImmutableList`1[System.__Canon]:this (FullOpts)
         110 (7.39 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Union(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon] (FullOpts)
         108 (19.18 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.Partitioner+DynamicPartitionerForIEnumerable`1[System.__Canon]:GetOrderablePartitions(int):System.Collections.Generic.IList`1[System.__Canon]:this (FullOpts)
          97 (646.67 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.Partitioner+DynamicPartitionerForArray`1+InternalPartitionEnumerator[System.__Canon]:.ctor(System.__Canon[],System.Collections.Concurrent.Partitioner+SharedLong):this (FullOpts)
          97 (646.67 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.Partitioner+DynamicPartitionerForIList`1+InternalPartitionEnumerator[System.__Canon]:.ctor(System.Collections.Generic.IList`1[System.__Canon],System.Collections.Concurrent.Partitioner+SharedLong):this (FullOpts)
          96 (92.31 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.Partitioner+DynamicPartitionerForIEnumerable`1+InternalPartitionEnumerator[System.__Canon]:.ctor(System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Concurrent.Partitioner+SharedLong,System.Collections.Concurrent.Partitioner+SharedBool,System.Collections.Concurrent.Partitioner+SharedInt,System.Collections.Concurrent.Partitioner+DynamicPartitionerForIEnumerable`1+InternalPartitionEnumerable[System.__Canon],ubyte):this (FullOpts)
          96 (13.33 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Add(System.__Canon,System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon] (FullOpts)
          95 (15.32 % of base) : System.Linq.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
          90 (23.50 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]:Remove(System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]:this (FullOpts)
          90 (6.94 % of base) : System.Net.Http.dasm - System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<WaitWithCancellationAsync>d__1[System.__Canon]:MoveNext():this (FullOpts)
          89 (18.05 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]:Remove(System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]],byref):System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
          87 (4.00 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:LazyBroadcast[System.__Canon](System.Numerics.Tensors.Tensor`1[System.__Canon],System.ReadOnlySpan`1[long]):System.Numerics.Tensors.Tensor`1[System.__Canon] (FullOpts)
          86 (57.72 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadLocal`1[System.__Canon]:.ctor(System.Func`1[System.__Canon]):this (FullOpts)
          85 (8.99 % of base) : System.Threading.Channels.dasm - System.Threading.Channels.ChannelReader`1+<<ReadAsync>g__ReadAsyncCore|11_0>d[System.__Canon]:MoveNext():this (FullOpts)
          80 (25.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]:Add(System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]:this (FullOpts)
          80 (70.80 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadLocal`1[System.__Canon]:.ctor():this (FullOpts)
          79 (4.56 % of base) : System.Text.Json.dasm - System.Text.Json.JsonHelpers:TraverseGraphWithTopologicalSort[System.__Canon](System.__Canon,System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.__Canon[] (FullOpts)
          79 (8.20 % of base) : System.Threading.Channels.dasm - System.Threading.Channels.UnboundedPrioritizedChannel`1[System.__Canon]:.ctor(ubyte,System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
          77 (27.80 % of base) : System.Private.CoreLib.dasm - System.Array:FindAll[System.__Canon](System.__Canon[],System.Predicate`1[System.__Canon]):System.__Canon[] (FullOpts)
          76 (584.62 % of base) : System.Private.Xml.dasm - MS.Internal.Xml.XPath.ClonableStack`1[System.__Canon]:.ctor():this (FullOpts)
          76 (17.47 % of base) : System.Linq.dasm - System.Linq.Enumerable+IListSkipTakeIterator`1[System.__Canon]:ToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
          74 (51.39 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet:Create[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[]):System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon] (FullOpts)
          74 (4.46 % of base) : System.Linq.dasm - System.Linq.Enumerable+IEnumerableSkipTakeIterator`1[System.__Canon]:ToArray():System.__Canon[]:this (FullOpts)
          74 (59.20 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadLocal`1[System.__Canon]:.ctor(ubyte):this (FullOpts)
          73 (169.77 % of base) : System.Linq.Expressions.dasm - System.Runtime.CompilerServices.CallSite`1[System.__Canon]:.ctor(System.Runtime.CompilerServices.CallSiteBinder):this (FullOpts)
          69 (246.43 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.Partitioner+DynamicPartitionEnumerator_Abstract`2[System.__Canon,System.Nullable`1[int]]:.ctor(System.Nullable`1[int],System.Collections.Concurrent.Partitioner+SharedLong):this (FullOpts)
          69 (246.43 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.Partitioner+DynamicPartitionEnumeratorForIndexRange_Abstract`2[System.__Canon,System.Nullable`1[int]]:.ctor(System.Nullable`1[int],System.Collections.Concurrent.Partitioner+SharedLong):this (FullOpts)
          69 (41.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary:CreateBuilder[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]] (FullOpts)
          68 (29.44 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],ubyte,System.Data.DataTable):this (FullOpts)
          66 (52.80 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:this (FullOpts)
          66 (9.51 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.SourceCore`1[System.__Canon]:TryReceiveAll(byref):ubyte:this (FullOpts)
          65 (35.91 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentStack`1[System.__Canon]:ToList(System.Collections.Concurrent.ConcurrentStack`1+Node[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
          65 (16.62 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1[System.__Canon]:.ctor(System.Data.EnumerableRowCollection`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):this (FullOpts)
          65 (27.43 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadLocal`1[System.__Canon]:GetValuesAsList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
          64 (47.76 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:EmptyWithComparers(System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.Nullable`1[int]]):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
          64 (25.91 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[System.__Canon]:ToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
          63 (36.21 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary:CreateBuilder[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]):System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]] (FullOpts)
          63 (33.33 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.Nullable`1[int]],int):this (FullOpts)
          63 (36.21 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedDictionary:CreateBuilder[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]):System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]] (FullOpts)
          63 (10.81 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.BatchedJoinBlock`2[System.__Canon,System.Nullable`1[int]]:<.ctor>b__6_1():this (FullOpts)
          62 (21.09 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.List`1[System.__Canon]:FindAll(System.Predicate`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
          62 (13.54 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[System.__Canon]:Clear():this (FullOpts)
          62 (4.97 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.Hosting.ExportProvider:GetExportedValuesCore[System.__Canon](System.String):System.Collections.ObjectModel.Collection`1[System.__Canon]:this (FullOpts)
          62 (5.39 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.Hosting.ExportProvider:GetExportsCore[System.__Canon,System.Nullable`1[int]](System.String):System.Collections.ObjectModel.Collection`1[System.__Canon]:this (FullOpts)
          62 (5.39 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.Hosting.ExportProvider:GetExportsCore[System.__Canon](System.String):System.Collections.ObjectModel.Collection`1[System.__Canon]:this (FullOpts)
          62 (20.33 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1[System.__Canon]:.ctor(System.Data.DataTable):this (FullOpts)
          62 (4.60 % of base) : System.ServiceModel.Syndication.dasm - System.ServiceModel.Syndication.SyndicationElementExtensionCollection:ReadExtensions[System.__Canon](System.String,System.String,System.Runtime.Serialization.XmlObjectSerializer,System.Xml.Serialization.XmlSerializer):System.Collections.ObjectModel.Collection`1[System.__Canon]:this (FullOpts)
          61 (93.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[System.__Canon]:.cctor() (FullOpts)
          61 (36.31 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedDictionary:CreateBuilder[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IComparer`1[System.__Canon]):System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]] (FullOpts)
          61 (31.94 % of base) : System.Linq.Expressions.dasm - System.Runtime.CompilerServices.CallSite`1[System.__Canon]:Create(System.Runtime.CompilerServices.CallSiteBinder):System.Runtime.CompilerServices.CallSite`1[System.__Canon] (FullOpts)
          61 (29.61 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.IlGen.UniqueList`1[System.__Canon]:.ctor():this (FullOpts)
          60 (17.09 % of base) : System.Linq.dasm - System.Linq.Enumerable:DistinctBy[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
          60 (15.58 % of base) : System.Linq.dasm - System.Linq.Enumerable:GroupBy[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
          60 (3.29 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo`1+<DeserializeAsync>d__1[System.__Canon]:MoveNext():this (FullOpts)
          59 (35.12 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet:CreateBuilder[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon]):System.Collections.Immutable.ImmutableSortedSet`1+Builder[System.__Canon] (FullOpts)
          59 (11.13 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.ReverseQueryOperator`1+ReverseQueryOperatorEnumerator`1[System.__Canon,System.Nullable`1[int]]:MoveNext(byref,byref):ubyte:this (FullOpts)

Top method improvements (bytes):
        -215 (-5.78 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon] (FullOpts)
         -41 (-11.20 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
         -40 (-11.36 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
         -31 (-2.70 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary:GetExistingFrozenOrNewDictionary[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
         -31 (-9.78 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.ValueTypeDefaultComparerFrozenSet`1[System.__Canon]:FindItemIndex(System.__Canon):int:this (FullOpts)
         -30 (-3.48 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenSet:GetExistingFrozenOrNewSet[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenSet`1[System.__Canon] (FullOpts)
         -29 (-9.54 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
         -29 (-10.00 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
         -28 (-7.29 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableQueue:Create[System.__Canon](System.ReadOnlySpan`1[System.__Canon]):System.Collections.Immutable.ImmutableQueue`1[System.__Canon] (FullOpts)
         -27 (-10.63 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.SmallValueTypeComparableFrozenDictionary`2[System.__Canon,System.Nullable`1[int]]:GetValueRefOrNullRefCore(System.__Canon):byref:this (FullOpts)
         -26 (-6.53 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:TryGetArray[System.__Canon](System.ReadOnlyMemory`1[System.__Canon],byref):ubyte (FullOpts)
         -25 (-14.12 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableQueue`1[System.__Canon]:.cctor() (FullOpts)
         -22 (-9.52 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.SmallValueTypeComparableFrozenSet`1[System.__Canon]:FindItemIndex(System.__Canon):int:this (FullOpts)
         -21 (-10.50 % of base) : System.Private.CoreLib.dasm - System.ArraySegment`1[System.__Canon]:ToArray():System.__Canon[]:this (FullOpts)
         -21 (-10.29 % of base) : System.Collections.dasm - System.Collections.Generic.LinkedList`1[System.__Canon]:Find(System.__Canon):System.Collections.Generic.LinkedListNode`1[System.__Canon]:this (FullOpts)
         -21 (-2.14 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableQueue:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableQueue`1[System.__Canon] (FullOpts)
         -20 (-8.51 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:CreateSetComparer():System.Collections.Generic.IEqualityComparer`1[System.__Canon] (FullOpts)
         -19 (-5.81 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.ValueTypeDefaultComparerFrozenDictionary`2[System.__Canon,System.Nullable`1[int]]:GetValueRefOrNullRefCore(System.__Canon):byref:this (FullOpts)
         -19 (-12.58 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:System.Collections.Immutable.IImmutableList<T>.Clear():System.Collections.Immutable.IImmutableList`1[System.__Canon]:this (FullOpts)
         -18 (-3.04 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
         -18 (-3.05 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:LastIndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
         -18 (-5.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList:IndexOf[System.__Canon](System.Collections.Immutable.IImmutableList`1[System.__Canon],System.__Canon,int):int (FullOpts)
         -18 (-2.03 % of base) : System.Linq.dasm - System.Linq.Enumerable:Order[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):System.Linq.IOrderedEnumerable`1[System.__Canon] (FullOpts)
         -18 (-2.03 % of base) : System.Linq.dasm - System.Linq.Enumerable:OrderDescending[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):System.Linq.IOrderedEnumerable`1[System.__Canon] (FullOpts)
         -17 (-7.08 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,int):int (FullOpts)
         -16 (-14.68 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.DiagLinkedList`1[System.__Canon]:GetEnumerator():System.Diagnostics.DiagEnumerator`1[System.__Canon]:this (FullOpts)
         -16 (-6.96 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,int):int (FullOpts)
         -15 (-5.45 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.IntersectQueryOperator`1+OrderedIntersectQueryOperatorEnumerator`1[System.__Canon,System.Nullable`1[int]]:.ctor(System.Linq.Parallel.QueryOperatorEnumerator`2[System.Linq.Parallel.Pair`2[System.__Canon,System.Linq.Parallel.NoKeyMemoizationRequired],System.Nullable`1[int]],System.Linq.Parallel.QueryOperatorEnumerator`2[System.Linq.Parallel.Pair`2[System.__Canon,System.Linq.Parallel.NoKeyMemoizationRequired],int],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.Collections.Generic.IComparer`1[System.Nullable`1[int]],System.Threading.CancellationToken):this (FullOpts)
         -14 (-7.45 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:EffectiveEqualityComparersAreEqual(System.Collections.Generic.HashSet`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):ubyte (FullOpts)
         -14 (-2.79 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:EqualityComparersAreEqual(System.Collections.Generic.HashSet`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):ubyte (FullOpts)
         -14 (-5.67 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:CreateSetComparer(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEqualityComparer`1[System.__Canon] (FullOpts)
         -14 (-7.29 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSetEqualityComparer`1[System.__Canon]:.ctor(System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
         -14 (-7.45 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSetEqualityComparer`1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
         -14 (-2.38 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
         -14 (-2.37 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:LastIndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
         -14 (-3.37 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableQueue`1[System.__Canon]:Enqueue(System.__Canon):System.Collections.Immutable.ImmutableQueue`1[System.__Canon]:this (FullOpts)
         -14 (-7.14 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.Nullable`1[int]]:.ctor():this (FullOpts)
         -14 (-0.70 % of base) : System.Linq.dasm - System.Linq.Enumerable:SequenceEqual[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
         -14 (-2.31 % of base) : System.Linq.dasm - System.Linq.Enumerable+ImplicitlyStableOrderedIterator`1[System.__Canon]:GetComparer(System.Linq.Enumerable+CachingComparer`1[System.__Canon]):System.Linq.Enumerable+CachingComparer`1[System.__Canon]:this (FullOpts)
         -14 (-2.10 % of base) : System.Linq.dasm - System.Linq.Enumerable+ImplicitlyStableOrderedIterator`1[System.__Canon]:Sort(System.Span`1[System.__Canon],ubyte) (FullOpts)
         -14 (-1.15 % of base) : System.Linq.dasm - System.Linq.Enumerable+ImplicitlyStableOrderedIterator`1[System.__Canon]:TryGetFirstOrLast(byref,ubyte):System.__Canon:this (FullOpts)
         -13 (-4.58 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValuePrimitive`1[System.__Canon]:DeepEqualsCore(System.Text.Json.Nodes.JsonNode):ubyte:this (FullOpts)
         -13 (-1.32 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SourceObservable`1+ObserversState[System.__Canon]:NotifyObserversOfCompletion(System.Exception):this (FullOpts)
         -12 (-2.38 % of base) : System.Runtime.Numerics.dasm - System.Collections.Generic.ValueListBuilder`1[System.__Canon]:Grow(int):this (FullOpts)
         -12 (-2.38 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ValueListBuilder`1[System.__Canon]:Grow(int):this (FullOpts)
         -12 (-2.38 % of base) : System.Text.RegularExpressions.dasm - System.Collections.Generic.ValueListBuilder`1[System.__Canon]:Grow(int):this (FullOpts)
         -12 (-4.76 % of base) : System.Text.RegularExpressions.dasm - System.Text.StructListBuilder`1[System.__Canon]:GrowAndAdd(System.__Canon):this (FullOpts)
         -11 (-4.55 % of base) : System.Private.CoreLib.dasm - System.Array:LastIndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
         -11 (-4.00 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
         -11 (-5.26 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:LastIndexOf(System.__Canon,int):int:this (FullOpts)
         -11 (-4.17 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.Nullable`1[int]]):this (FullOpts)
         -11 (-2.93 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableQueue`1[System.__Canon]:Dequeue():System.Collections.Immutable.ImmutableQueue`1[System.__Canon]:this (FullOpts)
         -11 (-3.41 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon],int):this (FullOpts)
         -11 (-2.74 % of base) : System.Linq.Expressions.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
         -11 (-2.02 % of base) : System.Linq.dasm - System.Linq.Lookup`2[System.__Canon,System.Nullable`1[int]]:Create(System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]],System.Func`2[System.Nullable`1[int],System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
         -11 (-1.91 % of base) : System.Linq.dasm - System.Linq.Lookup`2[System.__Canon,System.Nullable`1[int]]:Create[double](System.Collections.Generic.IEnumerable`1[double],System.Func`2[double,System.__Canon],System.Func`2[double,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
         -11 (-1.91 % of base) : System.Linq.dasm - System.Linq.Lookup`2[System.__Canon,System.Nullable`1[int]]:Create[int](System.Collections.Generic.IEnumerable`1[int],System.Func`2[int,System.__Canon],System.Func`2[int,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
         -11 (-1.91 % of base) : System.Linq.dasm - System.Linq.Lookup`2[System.__Canon,System.Nullable`1[int]]:Create[long](System.Collections.Generic.IEnumerable`1[long],System.Func`2[long,System.__Canon],System.Func`2[long,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
         -11 (-1.91 % of base) : System.Linq.dasm - System.Linq.Lookup`2[System.__Canon,System.Nullable`1[int]]:Create[short](System.Collections.Generic.IEnumerable`1[short],System.Func`2[short,System.__Canon],System.Func`2[short,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
         -11 (-1.89 % of base) : System.Linq.dasm - System.Linq.Lookup`2[System.__Canon,System.Nullable`1[int]]:Create[System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]],System.Func`2[System.Nullable`1[int],System.__Canon],System.Func`2[System.Nullable`1[int],System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
         -11 (-1.83 % of base) : System.Linq.dasm - System.Linq.Lookup`2[System.__Canon,System.Nullable`1[int]]:Create[System.Numerics.Vector`1[float]](System.Collections.Generic.IEnumerable`1[System.Numerics.Vector`1[float]],System.Func`2[System.Numerics.Vector`1[float],System.__Canon],System.Func`2[System.Numerics.Vector`1[float],System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
         -11 (-1.91 % of base) : System.Linq.dasm - System.Linq.Lookup`2[System.__Canon,System.Nullable`1[int]]:Create[ubyte](System.Collections.Generic.IEnumerable`1[ubyte],System.Func`2[ubyte,System.__Canon],System.Func`2[ubyte,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
         -11 (-1.99 % of base) : System.Linq.dasm - System.Linq.Lookup`2[System.__Canon,System.Nullable`1[int]]:CreateForJoin(System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]],System.Func`2[System.Nullable`1[int],System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
         -11 (-3.74 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
         -10 (-3.22 % of base) : System.Private.CoreLib.dasm - System.Array:BinarySearch[System.__Canon](System.__Canon[],int,int,System.__Canon,System.Collections.Generic.IComparer`1[System.__Canon]):int (FullOpts)
         -10 (-2.08 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.Nullable`1[int]]:GetKeys():System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]:this (FullOpts)
         -10 (-3.89 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.Nullable`1[int]]:.ctor(int):this (FullOpts)
         -10 (-3.29 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList:LastIndexOf[System.__Canon](System.Collections.Immutable.IImmutableList`1[System.__Canon],System.__Canon,int):int (FullOpts)
         -10 (-4.78 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]):this (FullOpts)
         -10 (-4.98 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1[double]:AddSortExpression[System.__Canon](System.Func`2[double,System.__Canon],ubyte,ubyte):this (FullOpts)
         -10 (-4.98 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1[int]:AddSortExpression[System.__Canon](System.Func`2[int,System.__Canon],ubyte,ubyte):this (FullOpts)
         -10 (-4.98 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1[long]:AddSortExpression[System.__Canon](System.Func`2[long,System.__Canon],ubyte,ubyte):this (FullOpts)
         -10 (-4.98 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1[short]:AddSortExpression[System.__Canon](System.Func`2[short,System.__Canon],ubyte,ubyte):this (FullOpts)
         -10 (-4.98 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1[System.__Canon]:AddSortExpression[System.__Canon](System.Func`2[System.__Canon,System.__Canon],ubyte,ubyte):this (FullOpts)
         -10 (-4.98 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1[System.Nullable`1[int]]:AddSortExpression[System.__Canon](System.Func`2[System.Nullable`1[int],System.__Canon],ubyte,ubyte):this (FullOpts)
         -10 (-4.98 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1[System.Numerics.Vector`1[float]]:AddSortExpression[System.__Canon](System.Func`2[System.Numerics.Vector`1[float],System.__Canon],ubyte,ubyte):this (FullOpts)
         -10 (-4.98 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1[ubyte]:AddSortExpression[System.__Canon](System.Func`2[ubyte,System.__Canon],ubyte,ubyte):this (FullOpts)
         -10 (-5.10 % of base) : System.Linq.dasm - System.Linq.Utilities:AreEqualityComparersEqual[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
         -10 (-4.83 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:Sort[System.__Canon](System.Span`1[System.__Canon]) (FullOpts)
         -10 (-2.04 % of base) : System.Text.Json.dasm - System.Text.Json.JsonHelpers:StableSortByKey[System.__Canon,long](System.Collections.Generic.List`1[System.__Canon],System.Func`2[System.__Canon,long]) (FullOpts)
         -10 (-1.23 % of base) : System.Threading.Channels.dasm - System.Threading.Channels.UnboundedPrioritizedChannel`1+UnboundedPrioritizedChannelWriter[System.__Canon]:TryWrite(System.__Canon):ubyte:this (FullOpts)
          -9 (-1.43 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenSet:Create[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):System.Collections.Frozen.FrozenSet`1[System.__Canon] (FullOpts)
          -8 (-0.83 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(int,int,ubyte,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
          -7 (-3.21 % of base) : System.Composition.TypedParts.dasm - <>f__AnonymousType0`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
          -7 (-3.21 % of base) : System.Linq.Queryable.dasm - <>f__AnonymousType0`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
          -7 (-5.51 % of base) : System.Composition.TypedParts.dasm - <>f__AnonymousType0`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
          -7 (-5.51 % of base) : System.Linq.Queryable.dasm - <>f__AnonymousType0`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
          -7 (-3.21 % of base) : System.Composition.TypedParts.dasm - <>f__AnonymousType1`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
          -7 (-5.51 % of base) : System.Composition.TypedParts.dasm - <>f__AnonymousType1`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
          -7 (-3.21 % of base) : System.Composition.TypedParts.dasm - <>f__AnonymousType2`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
          -7 (-5.51 % of base) : System.Composition.TypedParts.dasm - <>f__AnonymousType2`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
          -7 (-4.14 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[System.__Canon,System.Nullable`1[int]]:Equals(Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[System.__Canon,System.Nullable`1[int]]):ubyte:this (FullOpts)
          -7 (-3.35 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
          -7 (-3.59 % of base) : System.Private.CoreLib.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
          -7 (-1.64 % of base) : System.Private.CoreLib.dasm - System.Array:Sort[System.__Canon,System.Nullable`1[int]](System.__Canon[],System.Nullable`1[int][],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
          -7 (-2.51 % of base) : System.Private.CoreLib.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
          -7 (-3.47 % of base) : System.Private.CoreLib.dasm - System.Array:Sort[System.__Canon](System.__Canon[]) (FullOpts)
          -7 (-0.37 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.Dictionary`2[System.__Canon,System.Nullable`1[int]]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
          -7 (-3.95 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.Nullable`1[int]]:.cctor() (FullOpts)
          -7 (-0.39 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenSet:CreateFromSet[System.__Canon](System.Collections.Generic.HashSet`1[System.__Canon]):System.Collections.Frozen.FrozenSet`1[System.__Canon] (FullOpts)

Top method regressions (percentages):
         741 (903.66 % of base) : System.Linq.dasm - System.Linq.Enumerable:OrderDescending[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Linq.IOrderedEnumerable`1[System.__Canon] (FullOpts)
         738 (900.00 % of base) : System.Linq.dasm - System.Linq.Enumerable:Order[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Linq.IOrderedEnumerable`1[System.__Canon] (FullOpts)
          97 (646.67 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.Partitioner+DynamicPartitionerForArray`1+InternalPartitionEnumerator[System.__Canon]:.ctor(System.__Canon[],System.Collections.Concurrent.Partitioner+SharedLong):this (FullOpts)
          97 (646.67 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.Partitioner+DynamicPartitionerForIList`1+InternalPartitionEnumerator[System.__Canon]:.ctor(System.Collections.Generic.IList`1[System.__Canon],System.Collections.Concurrent.Partitioner+SharedLong):this (FullOpts)
          76 (584.62 % of base) : System.Private.Xml.dasm - MS.Internal.Xml.XPath.ClonableStack`1[System.__Canon]:.ctor():this (FullOpts)
         628 (436.11 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.__Canon[]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (FullOpts)
         509 (302.98 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:CreateBuilder[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon] (FullOpts)
          69 (246.43 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.Partitioner+DynamicPartitionEnumerator_Abstract`2[System.__Canon,System.Nullable`1[int]]:.ctor(System.Nullable`1[int],System.Collections.Concurrent.Partitioner+SharedLong):this (FullOpts)
          69 (246.43 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.Partitioner+DynamicPartitionEnumeratorForIndexRange_Abstract`2[System.__Canon,System.Nullable`1[int]]:.ctor(System.Nullable`1[int],System.Collections.Concurrent.Partitioner+SharedLong):this (FullOpts)
         149 (215.94 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2[System.__Canon,System.Nullable`1[int]]:.cctor() (FullOpts)
         126 (188.06 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:.cctor() (FullOpts)
          73 (169.77 % of base) : System.Linq.Expressions.dasm - System.Runtime.CompilerServices.CallSite`1[System.__Canon]:.ctor(System.Runtime.CompilerServices.CallSiteBinder):this (FullOpts)
         165 (151.38 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
         156 (113.87 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.__Canon[]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (FullOpts)
         241 (97.57 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:.cctor() (FullOpts)
          61 (93.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[System.__Canon]:.cctor() (FullOpts)
          96 (92.31 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.Partitioner+DynamicPartitionerForIEnumerable`1+InternalPartitionEnumerator[System.__Canon]:.ctor(System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Concurrent.Partitioner+SharedLong,System.Collections.Concurrent.Partitioner+SharedBool,System.Collections.Concurrent.Partitioner+SharedInt,System.Collections.Concurrent.Partitioner+DynamicPartitionerForIEnumerable`1+InternalPartitionEnumerable[System.__Canon],ubyte):this (FullOpts)
         225 (87.89 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:WithComparer(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:this (FullOpts)
         469 (87.83 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:Union(System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:this (FullOpts)
         125 (87.41 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:SetResult(System.__Canon):this (FullOpts)
         224 (76.71 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Clear():System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:this (FullOpts)
         220 (73.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (FullOpts)
          80 (70.80 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadLocal`1[System.__Canon]:.ctor():this (FullOpts)
         223 (67.78 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.__Canon):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (FullOpts)
         223 (67.78 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:CreateRange[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (FullOpts)
         224 (65.12 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Union(System.Collections.Generic.IEnumerable`1[System.__Canon],ubyte):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:this (FullOpts)
         370 (62.93 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (FullOpts)
         128 (60.38 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:AsTask():System.Threading.Tasks.Task`1[System.__Canon]:this (FullOpts)
          74 (59.20 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadLocal`1[System.__Canon]:.ctor(ubyte):this (FullOpts)
         251 (58.78 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (FullOpts)
          86 (57.72 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadLocal`1[System.__Canon]:.ctor(System.Func`1[System.__Canon]):this (FullOpts)
         223 (55.20 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:WithComparers(System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
          66 (52.80 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:this (FullOpts)
          39 (52.00 % of base) : System.Linq.dasm - System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
          39 (52.00 % of base) : System.Reflection.Context.dasm - System.Reflection.Context.CollectionServices:Empty[System.__Canon]():System.__Canon[] (FullOpts)
          74 (51.39 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet:Create[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[]):System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon] (FullOpts)
         253 (51.21 % of base) : System.Linq.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Range):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
          51 (49.04 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer+<>c__92`1[System.__Canon]:<DeserializeAsyncEnumerableCore>b__92_3():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
          64 (47.76 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:EmptyWithComparers(System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.Nullable`1[int]]):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
          39 (46.43 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.EmptyFrozenDictionary`2[System.__Canon,System.Nullable`1[int]]:get_KeysCore():System.__Canon[]:this (FullOpts)
          39 (46.43 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.EmptyFrozenSet`1[System.__Canon]:get_ItemsCore():System.__Canon[]:this (FullOpts)
         387 (45.37 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock:ReceiveCore[System.__Canon](System.Threading.Tasks.Dataflow.ISourceBlock`1[System.__Canon],ubyte,System.TimeSpan,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
          51 (44.74 % of base) : System.Private.CoreLib.dasm - System.Collections.ObjectModel.Collection`1[System.__Canon]:.ctor():this (FullOpts)
          51 (44.74 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.ObservableCollection`1[System.__Canon]:.ctor():this (FullOpts)
          51 (44.74 % of base) : System.ServiceModel.Syndication.dasm - System.ServiceModel.Syndication.NullNotAllowedCollection`1[System.__Canon]:.ctor():this (FullOpts)
          39 (43.82 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.EmptyFrozenSet`1[System.__Canon]:GetEnumeratorCore():System.Collections.Frozen.FrozenSet`1+Enumerator[System.__Canon]:this (FullOpts)
          51 (43.59 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:EnsureInitialized[System.__Canon](byref):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
         259 (43.09 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.SourceCore`1[System.__Canon]:LinkTo(System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.DataflowLinkOptions):System.IDisposable:this (FullOpts)
          51 (42.15 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.BatchedJoinBlockTarget`1[System.__Canon]:GetAndEmptyMessages():System.Collections.Generic.IList`1[System.__Canon]:this (FullOpts)
          57 (41.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList:Create[System.__Canon](System.__Canon[]):System.Collections.Immutable.ImmutableList`1[System.__Canon] (FullOpts)
          57 (41.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet:Create[System.__Canon](System.__Canon[]):System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon] (FullOpts)
          69 (41.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary:CreateBuilder[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]] (FullOpts)
          51 (40.80 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:CreateCollection(byref,byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          51 (40.80 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:CreateCollection(byref,byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
         124 (40.66 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentBag`1[System.__Canon]:CreateWorkStealingQueueForCurrentThread():System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[System.__Canon]:this (FullOpts)
         166 (39.81 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryAdd[System.__Canon,System.Nullable`1[int]](byref,System.__Canon,System.Nullable`1[int]):ubyte (FullOpts)
         166 (39.34 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.__Canon,System.Nullable`1[int]](byref,System.__Canon,System.Nullable`1[int]):System.Nullable`1[int] (FullOpts)
          51 (38.35 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.BatchedJoinBlockTarget`1[System.__Canon]:.ctor(System.Threading.Tasks.Dataflow.Internal.BatchedJoinBlockTargetSharedResources):this (FullOpts)
          36 (37.50 % of base) : System.Threading.Channels.dasm - System.Collections.Generic.Deque`1[System.__Canon]:.ctor():this (FullOpts)
          36 (37.50 % of base) : System.Threading.RateLimiting.dasm - System.Collections.Generic.Deque`1[System.__Canon]:.ctor():this (FullOpts)
          36 (37.50 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Queue`1[System.__Canon]:.ctor():this (FullOpts)
          36 (37.50 % of base) : System.Collections.dasm - System.Collections.Generic.Stack`1[System.__Canon]:.ctor():this (FullOpts)
          36 (37.50 % of base) : System.Linq.Expressions.dasm - System.Runtime.CompilerServices.ReadOnlyCollectionBuilder`1[System.__Canon]:.ctor():this (FullOpts)
         352 (37.41 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:Intersect(System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:this (FullOpts)
          36 (37.11 % of base) : System.Text.RegularExpressions.dasm - System.Text.StructListBuilder`1[System.__Canon]:.ctor():this (FullOpts)
          61 (36.31 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedDictionary:CreateBuilder[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IComparer`1[System.__Canon]):System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]] (FullOpts)
          63 (36.21 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary:CreateBuilder[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]):System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]] (FullOpts)
          63 (36.21 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedDictionary:CreateBuilder[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]):System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]] (FullOpts)
         187 (36.17 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[System.__Canon,System.Nullable`1[int]](byref,System.__Canon,System.Nullable`1[int],System.Func`3[System.__Canon,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
          36 (36.00 % of base) : System.Memory.dasm - System.Buffers.ArrayBufferWriter`1[System.__Canon]:.ctor():this (FullOpts)
          65 (35.91 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentStack`1[System.__Canon]:ToList(System.Collections.Concurrent.ConcurrentStack`1+Node[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
         166 (35.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryUpdate[System.__Canon,System.Nullable`1[int]](byref,System.__Canon,System.Nullable`1[int],System.Nullable`1[int]):ubyte (FullOpts)
          52 (35.14 % of base) : System.Data.Common.dasm - System.Data.Listeners`1[System.__Canon]:.ctor(int,System.Data.Listeners`1+Func`2[System.__Canon,System.__Canon,ubyte]):this (FullOpts)
          59 (35.12 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet:CreateBuilder[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon]):System.Collections.Immutable.ImmutableSortedSet`1+Builder[System.__Canon] (FullOpts)
          63 (33.33 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.Nullable`1[int]],int):this (FullOpts)
          51 (32.69 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[System.__Canon]:.ctor():this (FullOpts)
         187 (32.58 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[System.__Canon,System.Nullable`1[int]](byref,System.__Canon,System.Func`2[System.__Canon,System.Nullable`1[int]],System.Func`3[System.__Canon,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
          61 (31.94 % of base) : System.Linq.Expressions.dasm - System.Runtime.CompilerServices.CallSite`1[System.__Canon]:Create(System.Runtime.CompilerServices.CallSiteBinder):System.Runtime.CompilerServices.CallSite`1[System.__Canon] (FullOpts)
         125 (30.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:.cctor() (FullOpts)
          51 (30.18 % of base) : System.ComponentModel.Composition.dasm - Microsoft.Internal.Collections.CollectionServices:FastAppendToListAllowNulls[System.__Canon](System.Collections.Generic.List`1[System.__Canon],System.__Canon):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
          36 (29.75 % of base) : Microsoft.Extensions.Options.dasm - Microsoft.Extensions.Options.OptionsFactory`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
          61 (29.61 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.IlGen.UniqueList`1[System.__Canon]:.ctor():this (FullOpts)
          68 (29.44 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],ubyte,System.Data.DataTable):this (FullOpts)
          36 (29.27 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.SynchronizedList`1[System.__Canon]:.ctor():this (FullOpts)
          36 (29.27 % of base) : System.Linq.Expressions.dasm - System.Runtime.CompilerServices.RuleCache`1[System.__Canon]:.ctor():this (FullOpts)
         378 (28.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]:Add(System.__Canon,System.Nullable`1[int],System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]],int,byref):System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
          43 (28.67 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray:CreateBuilder[System.__Canon]():System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon] (FullOpts)
         611 (28.08 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:this (FullOpts)
          43 (27.92 % of base) : System.Linq.dasm - System.Linq.Enumerable:<TakeRangeIterator>g__TakeIteratorRange|33_0[System.__Canon](System.Linq.Enumerable+Iterator`1[System.__Canon],int,int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
          77 (27.80 % of base) : System.Private.CoreLib.dasm - System.Array:FindAll[System.__Canon](System.__Canon[],System.Predicate`1[System.__Canon]):System.__Canon[] (FullOpts)
          55 (27.50 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.ConfigurationList`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
          65 (27.43 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadLocal`1[System.__Canon]:GetValuesAsList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
          39 (26.53 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
          36 (26.47 % of base) : System.Collections.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.Nullable`1[int]]:.ctor():this (FullOpts)
         211 (26.08 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:GetTaskForValueTaskSource(System.Threading.Tasks.Sources.IValueTaskSource`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (FullOpts)
          64 (25.91 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[System.__Canon]:ToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
          80 (25.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]:Add(System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]:this (FullOpts)
          58 (25.00 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.ReadOnlyObservableCollection`1[System.__Canon]:.cctor() (FullOpts)
          42 (24.56 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[System.__Canon]:.cctor() (FullOpts)
         124 (24.46 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataReader:GetFieldValueAsync[System.__Canon](int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.__Canon]:this (FullOpts)

Top method improvements (percentages):
         -16 (-14.68 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.DiagLinkedList`1[System.__Canon]:GetEnumerator():System.Diagnostics.DiagEnumerator`1[System.__Canon]:this (FullOpts)
         -25 (-14.12 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableQueue`1[System.__Canon]:.cctor() (FullOpts)
         -19 (-12.58 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:System.Collections.Immutable.IImmutableList<T>.Clear():System.Collections.Immutable.IImmutableList`1[System.__Canon]:this (FullOpts)
          -4 (-11.76 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableQueue`1[System.__Canon]:Clear():System.Collections.Immutable.ImmutableQueue`1[System.__Canon]:this (FullOpts)
          -4 (-11.76 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableStack`1[System.__Canon]:Clear():System.Collections.Immutable.ImmutableStack`1[System.__Canon]:this (FullOpts)
         -40 (-11.36 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
         -41 (-11.20 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
         -27 (-10.63 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.SmallValueTypeComparableFrozenDictionary`2[System.__Canon,System.Nullable`1[int]]:GetValueRefOrNullRefCore(System.__Canon):byref:this (FullOpts)
         -21 (-10.50 % of base) : System.Private.CoreLib.dasm - System.ArraySegment`1[System.__Canon]:ToArray():System.__Canon[]:this (FullOpts)
         -21 (-10.29 % of base) : System.Collections.dasm - System.Collections.Generic.LinkedList`1[System.__Canon]:Find(System.__Canon):System.Collections.Generic.LinkedListNode`1[System.__Canon]:this (FullOpts)
         -29 (-10.00 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
         -31 (-9.78 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.ValueTypeDefaultComparerFrozenSet`1[System.__Canon]:FindItemIndex(System.__Canon):int:this (FullOpts)
         -29 (-9.54 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
         -22 (-9.52 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.SmallValueTypeComparableFrozenSet`1[System.__Canon]:FindItemIndex(System.__Canon):int:this (FullOpts)
         -20 (-8.51 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:CreateSetComparer():System.Collections.Generic.IEqualityComparer`1[System.__Canon] (FullOpts)
         -14 (-7.45 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:EffectiveEqualityComparersAreEqual(System.Collections.Generic.HashSet`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):ubyte (FullOpts)
         -14 (-7.45 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSetEqualityComparer`1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
          -7 (-7.29 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSetEqualityComparer`1[System.__Canon]:GetHashCode():int:this (FullOpts)
          -7 (-7.29 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor():this (FullOpts)
         -14 (-7.29 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSetEqualityComparer`1[System.__Canon]:.ctor(System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
          -7 (-7.29 % of base) : System.Collections.dasm - System.Collections.Generic.TreeSet`1[System.__Canon]:.ctor():this (FullOpts)
         -28 (-7.29 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableQueue:Create[System.__Canon](System.ReadOnlySpan`1[System.__Canon]):System.Collections.Immutable.ImmutableQueue`1[System.__Canon] (FullOpts)
          -7 (-7.22 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableQueue:Create[System.__Canon](System.__Canon):System.Collections.Immutable.ImmutableQueue`1[System.__Canon] (FullOpts)
         -14 (-7.14 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.Nullable`1[int]]:.ctor():this (FullOpts)
         -17 (-7.08 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,int):int (FullOpts)
          -7 (-7.00 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.WrapperEqualityComparer`1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
         -16 (-6.96 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,int):int (FullOpts)
          -7 (-6.93 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
          -7 (-6.93 % of base) : System.Collections.dasm - System.Collections.Generic.TreeSet`1[System.__Canon]:.ctor(System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
          -7 (-6.86 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2+KeyValuePairComparer[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
          -7 (-6.60 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:Sort():System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:this (FullOpts)
          -5 (-6.58 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.Util:GetDefaultComparer[System.__Canon]():System.Collections.Generic.Comparer`1[System.__Canon] (FullOpts)
         -26 (-6.53 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:TryGetArray[System.__Canon](System.ReadOnlyMemory`1[System.__Canon],byref):ubyte (FullOpts)
          -7 (-6.42 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`1[System.__Canon]:CompareTo(System.ValueTuple`1[System.__Canon]):int:this (FullOpts)
          -7 (-6.42 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`1[System.__Canon]:Equals(System.ValueTuple`1[System.__Canon]):ubyte:this (FullOpts)
          -7 (-6.14 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
          -7 (-6.14 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:RemoveRange(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
          -7 (-6.14 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[System.__Canon]:RemoveRange(System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableList`1[System.__Canon]:this (FullOpts)
          -7 (-6.14 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon]:RemoveRange(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
          -7 (-6.03 % of base) : System.Linq.dasm - System.Linq.Enumerable+ImplicitlyStableOrderedIterator`1+<>c[System.__Canon]:<Sort>b__13_0(System.__Canon,System.__Canon):int:this (FullOpts)
          -7 (-5.93 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:RemoveRange(System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
         -18 (-5.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList:IndexOf[System.__Canon](System.Collections.Immutable.IImmutableList`1[System.__Canon],System.__Canon,int):int (FullOpts)
         -19 (-5.81 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.ValueTypeDefaultComparerFrozenDictionary`2[System.__Canon,System.Nullable`1[int]]:GetValueRefOrNullRefCore(System.__Canon):byref:this (FullOpts)
          -7 (-5.79 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[System.__Canon]:Replace(System.__Canon,System.__Canon):System.Collections.Immutable.ImmutableList`1[System.__Canon]:this (FullOpts)
          -7 (-5.79 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon]:Replace(System.__Canon,System.__Canon):this (FullOpts)
        -215 (-5.78 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon] (FullOpts)
         -14 (-5.67 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:CreateSetComparer(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEqualityComparer`1[System.__Canon] (FullOpts)
          -7 (-5.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableStack:Create[System.__Canon](System.__Canon):System.Collections.Immutable.ImmutableStack`1[System.__Canon] (FullOpts)
          -7 (-5.51 % of base) : System.Composition.TypedParts.dasm - <>f__AnonymousType0`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
          -7 (-5.51 % of base) : System.Linq.Queryable.dasm - <>f__AnonymousType0`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
          -7 (-5.51 % of base) : System.Composition.TypedParts.dasm - <>f__AnonymousType1`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
          -7 (-5.51 % of base) : System.Composition.TypedParts.dasm - <>f__AnonymousType2`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
          -7 (-5.47 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:op_Equality(System.Threading.Tasks.ValueTask`1[System.__Canon],System.Threading.Tasks.ValueTask`1[System.__Canon]):ubyte (FullOpts)
         -15 (-5.45 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.IntersectQueryOperator`1+OrderedIntersectQueryOperatorEnumerator`1[System.__Canon,System.Nullable`1[int]]:.ctor(System.Linq.Parallel.QueryOperatorEnumerator`2[System.Linq.Parallel.Pair`2[System.__Canon,System.Linq.Parallel.NoKeyMemoizationRequired],System.Nullable`1[int]],System.Linq.Parallel.QueryOperatorEnumerator`2[System.Linq.Parallel.Pair`2[System.__Canon,System.Linq.Parallel.NoKeyMemoizationRequired],int],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.Collections.Generic.IComparer`1[System.Nullable`1[int]],System.Threading.CancellationToken):this (FullOpts)
          -5 (-5.38 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:get_EffectiveComparer():System.Collections.Generic.IEqualityComparer`1[System.__Canon]:this (FullOpts)
          -7 (-5.34 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`1[System.__Canon]:Equals(System.Object):ubyte:this (FullOpts)
          -4 (-5.33 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableQueue:Create[System.__Canon]():System.Collections.Immutable.ImmutableQueue`1[System.__Canon] (FullOpts)
          -4 (-5.33 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableStack:Create[System.__Canon]():System.Collections.Immutable.ImmutableStack`1[System.__Canon] (FullOpts)
         -11 (-5.26 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:LastIndexOf(System.__Canon,int):int:this (FullOpts)
          -7 (-5.22 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:IndexOf(System.__Canon,int,int):int:this (FullOpts)
          -7 (-5.22 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:LastIndexOf(System.__Canon,int,int):int:this (FullOpts)
          -7 (-5.15 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[System.__Canon]:Sort():System.Collections.Immutable.ImmutableList`1[System.__Canon]:this (FullOpts)
          -4 (-5.13 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:GetHashBucketEqualityComparer(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]] (FullOpts)
         -10 (-5.10 % of base) : System.Linq.dasm - System.Linq.Utilities:AreEqualityComparersEqual[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
          -7 (-5.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:IndexOf(System.__Canon,int,int):int:this (FullOpts)
          -7 (-5.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:LastIndexOf(System.__Canon,int,int):int:this (FullOpts)
          -7 (-5.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:IndexOf(System.__Canon,int):int:this (FullOpts)
          -7 (-5.04 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:Sort():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
         -10 (-4.98 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1[double]:AddSortExpression[System.__Canon](System.Func`2[double,System.__Canon],ubyte,ubyte):this (FullOpts)
         -10 (-4.98 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1[int]:AddSortExpression[System.__Canon](System.Func`2[int,System.__Canon],ubyte,ubyte):this (FullOpts)
         -10 (-4.98 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1[long]:AddSortExpression[System.__Canon](System.Func`2[long,System.__Canon],ubyte,ubyte):this (FullOpts)
         -10 (-4.98 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1[short]:AddSortExpression[System.__Canon](System.Func`2[short,System.__Canon],ubyte,ubyte):this (FullOpts)
         -10 (-4.98 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1[System.__Canon]:AddSortExpression[System.__Canon](System.Func`2[System.__Canon,System.__Canon],ubyte,ubyte):this (FullOpts)
         -10 (-4.98 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1[System.Nullable`1[int]]:AddSortExpression[System.__Canon](System.Func`2[System.Nullable`1[int],System.__Canon],ubyte,ubyte):this (FullOpts)
         -10 (-4.98 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1[System.Numerics.Vector`1[float]]:AddSortExpression[System.__Canon](System.Func`2[System.Numerics.Vector`1[float],System.__Canon],ubyte,ubyte):this (FullOpts)
         -10 (-4.98 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1[ubyte]:AddSortExpression[System.__Canon](System.Func`2[ubyte,System.__Canon],ubyte,ubyte):this (FullOpts)
          -7 (-4.96 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon]:IndexOf(System.__Canon,int,int):int:this (FullOpts)
          -7 (-4.96 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon]:LastIndexOf(System.__Canon,int,int):int:this (FullOpts)
          -7 (-4.90 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:Contains(System.__Canon):ubyte:this (FullOpts)
         -10 (-4.83 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:Sort[System.__Canon](System.Span`1[System.__Canon]) (FullOpts)
          -7 (-4.83 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon]:Sort():this (FullOpts)
          -7 (-4.79 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:IndexOf(System.__Canon):int:this (FullOpts)
          -7 (-4.79 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:op_Inequality(System.Threading.Tasks.ValueTask`1[System.__Canon],System.Threading.Tasks.ValueTask`1[System.__Canon]):ubyte (FullOpts)
         -10 (-4.78 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]):this (FullOpts)
         -12 (-4.76 % of base) : System.Text.RegularExpressions.dasm - System.Text.StructListBuilder`1[System.__Canon]:GrowAndAdd(System.__Canon):this (FullOpts)
          -7 (-4.73 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon]:IndexOf(System.__Canon,int):int:this (FullOpts)
          -7 (-4.67 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:Replace(System.__Canon,System.__Canon):this (FullOpts)
          -7 (-4.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableStack`1[System.__Canon]:Reverse():System.Collections.Immutable.ImmutableStack`1[System.__Canon]:this (FullOpts)
          -7 (-4.61 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:Equals(System.Threading.Tasks.ValueTask`1[System.__Canon]):ubyte:this (FullOpts)
         -13 (-4.58 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValuePrimitive`1[System.__Canon]:DeepEqualsCore(System.Text.Json.Nodes.JsonNode):ubyte:this (FullOpts)
          -7 (-4.58 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[System.__Canon]:Remove(System.__Canon):System.Collections.Immutable.ImmutableList`1[System.__Canon]:this (FullOpts)
         -11 (-4.55 % of base) : System.Private.CoreLib.dasm - System.Array:LastIndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
          -7 (-4.46 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:IndexOf(System.__Canon,int):int:this (FullOpts)
          -7 (-4.46 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,int):int (FullOpts)
          -7 (-4.40 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:LastIndexOf(System.__Canon):int:this (FullOpts)
          -7 (-4.40 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask[System.__Canon]:.ctor(System.Threading.Tasks.Sources.IValueTaskSource`1[System.__Canon],short):this (FullOpts)
          -7 (-4.29 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,int):int (FullOpts)
          -7 (-4.19 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:RemoveRange(System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
         -11 (-4.17 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.Nullable`1[int]]):this (FullOpts)
          -7 (-4.17 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon]:LastIndexOf(System.__Canon,int):int:this (FullOpts)

563 total methods with Code Size differences (288 improved, 275 regressed), 232094 unchanged.

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

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Oct 26, 2024

Top method regressions

741 (903.66 % of base) - System.Linq.Enumerable:OrderDescending[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Linq.IOrderedEnumerable`1[System.__Canon]
 ; Assembly listing for method System.Linq.Enumerable:OrderDescending[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Linq.IOrderedEnumerable`1[System.__Canon] (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
-; fully interruptible
+; partially interruptible
 ; No PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 3 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T00] (  5,  4.20)    long  ->  rdi         single-def
-;  V01 arg0         [V01,T02] (  3,  3   )     ref  ->  rbx         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+;  V00 TypeCtx      [V00,T03] (  5,  4.20)    long  ->  rdi         single-def
+;  V01 arg0         [V01,T06] (  5,  3.50)     ref  ->  rbx         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V03 tmp1         [V03    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V04 tmp2         [V04,T04] (  2,  4   )    long  ->  rdi         "argument with side effect"
-;  V05 rat0         [V05,T03] (  3,  4   )    long  ->  rdi         "runtime lookup"
-;  V06 rat1         [V06,T01] (  3,  5.60)    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V04 tmp2         [V04,T17] (  3,  2   )     ref  ->  r14         class-hnd "Inline return value spill temp" <System.Linq.IOrderedEnumerable`1[System.__Canon]>
+;  V05 tmp3         [V05,T01] ( 10,  8   )    long  ->  r15         "Inlining Arg"
+;* V06 tmp4         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;  V07 tmp5         [V07,T18] (  3,  2   )    long  ->  r14         "spilling helperCall"
+;* V08 tmp6         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;  V09 tmp7         [V09,T08] (  3,  3   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+ImplicitlyStableOrderedIterator`1[System.__Canon]>
+;* V10 tmp8         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V11 tmp9         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <System.Linq.Enumerable+ImplicitlyStableOrderedIterator`1[System.__Canon]>
+;* V12 tmp10        [V12,T23] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V13 tmp11        [V13    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V14 tmp12        [V14,T00] ( 15,  8.50)     ref  ->  rax         class-hnd single-def "Inline stloc first use temp" <System.Type>
+;  V15 tmp13        [V15,T09] (  3,  3   )     ref  ->  r15         class-hnd single-def "Inlining Arg" <System.Func`2[System.__Canon,System.__Canon]>
+;  V16 tmp14        [V16,T02] (  8,  8   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+OrderedIterator`2[System.__Canon,System.__Canon]>
+;  V17 tmp15        [V17,T15] (  4,  2.20)    long  ->  r13         "Inlining Arg"
+;* V18 tmp16        [V18    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V19 tmp17        [V19    ] (  0,  0   )     ref  ->  zero-ref    single-def
+;* V20 tmp18        [V20    ] (  0,  0   )     ref  ->  zero-ref   
+;* V21 tmp19        [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V22 tmp20        [V22    ] (  0,  0   )     ref  ->  zero-ref    single-def
+;  V23 tmp21        [V23,T22] (  2,  1   )     ref  ->  rsi         single-def
+;  V24 tmp22        [V24,T19] (  3,  2   )    long  ->  rsi         "Inlining Arg"
+;  V25 rat0         [V25,T04] (  3,  5.60)    long  ->  r15         "fgMakeTemp is creating a new local variable"
+;  V26 rat1         [V26,T07] (  3,  4   )    long  ->  rax         "runtime lookup"
+;  V27 rat2         [V27,T05] (  3,  5.60)    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V28 rat3         [V28,T10] (  3,  2.80)    long  ->  r14         "fgMakeTemp is creating a new local variable"
+;  V29 rat4         [V29,T11] (  3,  2.80)    long  ->  r13         "fgMakeTemp is creating a new local variable"
+;  V30 rat5         [V30,T20] (  3,  2   )    long  ->  rdi         "runtime lookup"
+;  V31 rat6         [V31,T12] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
+;  V32 rat7         [V32,T16] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V33 rat8         [V33,T13] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;  V34 rat9         [V34,T21] (  3,  2   )    long  ->  rdi         "runtime lookup"
+;  V35 rat10        [V35,T14] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M48149_IG01:
        push     rbp
+       push     r15
+       push     r14
+       push     r13
        push     rbx
-       push     rax
-       lea      rbp, [rsp+0x10]
-       mov      qword ptr [rbp-0x10], rdi
+       sub      rsp, 16
+       lea      rbp, [rsp+0x30]
+       mov      qword ptr [rbp-0x28], rdi
        mov      rbx, rsi
-						;; size=15 bbWeight=1 PerfScore 4.75
+						;; size=24 bbWeight=1 PerfScore 7.00
 G_M48149_IG02:
        mov      rsi, qword ptr [rdi+0x18]
-       mov      rax, qword ptr [rsi+0x10]
-       test     rax, rax
-       je       SHORT G_M48149_IG06
-						;; size=13 bbWeight=1 PerfScore 5.25
+       mov      r15, qword ptr [rsi+0x10]
+       test     r15, r15
+       je       G_M48149_IG10
+						;; size=17 bbWeight=1 PerfScore 5.25
 G_M48149_IG03:
-       mov      rdi, rax
-						;; size=3 bbWeight=0.80 PerfScore 0.20
+       mov      rdi, qword ptr [r15+0x18]
+       mov      rax, qword ptr [rdi+0x10]
+       test     rax, rax
+       je       G_M48149_IG11
+						;; size=17 bbWeight=1 PerfScore 5.25
 G_M48149_IG04:
-       mov      rsi, rbx
-       xor      rdx, rdx
-       mov      rax, 0xD1FFAB1E      ; code for System.Linq.Enumerable:OrderDescending[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):System.Linq.IOrderedEnumerable`1[System.__Canon]
-						;; size=15 bbWeight=1 PerfScore 0.75
+       mov      rdi, qword ptr [rax+0x18]
+       mov      rdi, qword ptr [rdi]
+       call     CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
+       mov      rdi, 0xD1FFAB1E      ; 'System.SByte'
+       cmp      rax, rdi
+       je       G_M48149_IG12
+						;; size=31 bbWeight=1 PerfScore 6.50
 G_M48149_IG05:
-       add      rsp, 8
-       pop      rbx
-       pop      rbp
-       tail.jmp [rax]System.Linq.Enumerable:OrderDescending[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):System.Linq.IOrderedEnumerable`1[System.__Canon]
-						;; size=9 bbWeight=1 PerfScore 3.25
+       mov      rdi, 0xD1FFAB1E      ; 'System.Byte'
+       cmp      rax, rdi
+       je       G_M48149_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.Boolean'
+       cmp      rax, rdi
+       je       G_M48149_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.Int16'
+       cmp      rax, rdi
+       je       G_M48149_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.UInt16'
+       cmp      rax, rdi
+       je       G_M48149_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.Char'
+       cmp      rax, rdi
+       je       G_M48149_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.Int32'
+       cmp      rax, rdi
+       je       G_M48149_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.UInt32'
+       cmp      rax, rdi
+       je       G_M48149_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.Int64'
+       cmp      rax, rdi
+       je       G_M48149_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.UInt64'
+       cmp      rax, rdi
+       je       G_M48149_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.Int128'
+       cmp      rax, rdi
+       je       G_M48149_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.UInt128'
+       cmp      rax, rdi
+       je       G_M48149_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.IntPtr'
+       cmp      rax, rdi
+       je       G_M48149_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.UIntPtr'
+       cmp      rax, rdi
+       je       G_M48149_IG12
+       mov      rdi, qword ptr [r15+0x18]
+       mov      r14, qword ptr [rdi+0x18]
+       test     r14, r14
+						;; size=258 bbWeight=0.50 PerfScore 11.88
 G_M48149_IG06:
+       je       G_M48149_IG15
+						;; size=6 bbWeight=0.50 PerfScore 0.50
+G_M48149_IG07:
+       mov      rdi, qword ptr [r15+0x18]
+       mov      r13, qword ptr [rdi+0x20]
+       test     r13, r13
+       je       G_M48149_IG16
+						;; size=17 bbWeight=0.50 PerfScore 2.62
+G_M48149_IG08:
+       mov      rdi, r14
+       call     CORINFO_HELP_GET_GCSTATIC_BASE
+       mov      r15, gword ptr [rax]
+       mov      rdi, qword ptr [r13+0x18]
+       mov      rdi, qword ptr [rdi+0x18]
+       test     rdi, rdi
+       je       G_M48149_IG17
+						;; size=28 bbWeight=0.50 PerfScore 4.25
+G_M48149_IG09:
+       call     CORINFO_HELP_NEWSFAST
+       mov      r14, rax
+       mov      rdi, r14
+       mov      rsi, rbx
+       mov      rax, 0xD1FFAB1E      ; code for System.Linq.Enumerable+OrderedIterator`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this
+       call     [rax]System.Linq.Enumerable+OrderedIterator`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this
+       test     rbx, rbx
+       jne      G_M48149_IG18
+       jmp      G_M48149_IG24
+						;; size=40 bbWeight=0.50 PerfScore 4.12
+G_M48149_IG10:
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       mov      r15, rax
+       jmp      G_M48149_IG03
+						;; size=30 bbWeight=0.20 PerfScore 1.15
+G_M48149_IG11:
+       mov      rdi, r15
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       jmp      G_M48149_IG04
+						;; size=30 bbWeight=0.20 PerfScore 1.15
+G_M48149_IG12:
+       mov      rdi, qword ptr [r15+0x18]
+       mov      rdi, qword ptr [rdi+0x28]
+       test     rdi, rdi
+       je       SHORT G_M48149_IG14
+						;; size=13 bbWeight=0.50 PerfScore 2.62
+G_M48149_IG13:
+       call     CORINFO_HELP_NEWSFAST
+       mov      r14, rax
+       mov      rdi, r14
+       mov      rsi, rbx
+       mov      edx, 1
+       mov      rax, 0xD1FFAB1E      ; code for System.Linq.Enumerable+ImplicitlyStableOrderedIterator`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],ubyte):this
+       call     [rax]System.Linq.Enumerable+ImplicitlyStableOrderedIterator`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],ubyte):this
+       jmp      G_M48149_IG20
+						;; size=36 bbWeight=0.50 PerfScore 3.62
+G_M48149_IG14:
+       mov      rdi, r15
        mov      rsi, 0xD1FFAB1E      ; global ptr
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
        call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
        mov      rdi, rax
-       jmp      SHORT G_M48149_IG04
-						;; size=27 bbWeight=0.20 PerfScore 1.15
+       jmp      SHORT G_M48149_IG13
+						;; size=30 bbWeight=0.10 PerfScore 0.60
+G_M48149_IG15:
+       mov      rdi, r15
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       mov      r14, rax
+       jmp      G_M48149_IG07
+						;; size=33 bbWeight=0.10 PerfScore 0.60
+G_M48149_IG16:
+       mov      rdi, r15
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       mov      r13, rax
+       jmp      G_M48149_IG08
+						;; size=33 bbWeight=0.10 PerfScore 0.60
+G_M48149_IG17:
+       mov      rdi, r13
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       mov      rdi, rax
+       jmp      G_M48149_IG09
+						;; size=33 bbWeight=0.10 PerfScore 0.60
+G_M48149_IG18:
+       test     r15, r15
+       je       SHORT G_M48149_IG23
+       xor      rdi, rdi
+       mov      gword ptr [r14+0x20], rdi
+       lea      rdi, bword ptr [r14+0x28]
+       mov      rsi, r15
+       call     CORINFO_HELP_ASSIGN_REF
+       mov      rdi, qword ptr [r14]
+       mov      rsi, qword ptr [rdi+0x30]
+       mov      rsi, qword ptr [rsi+0x10]
+       mov      rsi, qword ptr [rsi+0x18]
+       test     rsi, rsi
+       je       SHORT G_M48149_IG22
+						;; size=43 bbWeight=0.50 PerfScore 6.75
+G_M48149_IG19:
+       mov      rdi, rsi
+       call     CORINFO_HELP_GET_GCSTATIC_BASE
+       mov      rsi, gword ptr [rax]
+       lea      rdi, bword ptr [r14+0x30]
+       call     CORINFO_HELP_ASSIGN_REF
+       mov      byte  ptr [r14+0x48], 1
+						;; size=25 bbWeight=0.50 PerfScore 2.88
+G_M48149_IG20:
+       mov      rax, r14
+						;; size=3 bbWeight=1 PerfScore 0.25
+G_M48149_IG21:
+       add      rsp, 16
+       pop      rbx
+       pop      r13
+       pop      r14
+       pop      r15
+       pop      rbp
+       ret      
+						;; size=13 bbWeight=1 PerfScore 3.75
+G_M48149_IG22:
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
+       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
+       mov      rsi, rax
+       jmp      SHORT G_M48149_IG19
+						;; size=27 bbWeight=0.10 PerfScore 0.58
+G_M48149_IG23:
+       mov      edi, 9
+       mov      rax, 0xD1FFAB1E      ; code for System.Linq.ThrowHelper:ThrowArgumentNullException(int)
+       call     [rax]System.Linq.ThrowHelper:ThrowArgumentNullException(int)
+       int3     
+						;; size=18 bbWeight=0 PerfScore 0.00
+G_M48149_IG24:
+       mov      edi, 17
+       mov      rax, 0xD1FFAB1E      ; code for System.Linq.ThrowHelper:ThrowArgumentNullException(int)
+       call     [rax]System.Linq.ThrowHelper:ThrowArgumentNullException(int)
+       int3     
+						;; size=18 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 82, prolog size 15, PerfScore 15.35, instruction count 23, allocated bytes for code 82 (MethodHash=dd8243ea) for method System.Linq.Enumerable:OrderDescending[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Linq.IOrderedEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 823, prolog size 21, PerfScore 72.52, instruction count 172, allocated bytes for code 823 (MethodHash=dd8243ea) for method System.Linq.Enumerable:OrderDescending[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Linq.IOrderedEnumerable`1[System.__Canon] (FullOpts)
 ; ============================================================
738 (900.00 % of base) - System.Linq.Enumerable:Order[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Linq.IOrderedEnumerable`1[System.__Canon]
 ; Assembly listing for method System.Linq.Enumerable:Order[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Linq.IOrderedEnumerable`1[System.__Canon] (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
-; fully interruptible
+; partially interruptible
 ; No PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 3 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T00] (  5,  4.20)    long  ->  rdi         single-def
-;  V01 arg0         [V01,T02] (  3,  3   )     ref  ->  rbx         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+;  V00 TypeCtx      [V00,T03] (  5,  4.20)    long  ->  rdi         single-def
+;  V01 arg0         [V01,T06] (  5,  3.50)     ref  ->  rbx         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V03 tmp1         [V03    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V04 tmp2         [V04,T04] (  2,  4   )    long  ->  rdi         "argument with side effect"
-;  V05 rat0         [V05,T03] (  3,  4   )    long  ->  rdi         "runtime lookup"
-;  V06 rat1         [V06,T01] (  3,  5.60)    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V04 tmp2         [V04,T17] (  3,  2   )     ref  ->  r14         class-hnd "Inline return value spill temp" <System.Linq.IOrderedEnumerable`1[System.__Canon]>
+;  V05 tmp3         [V05,T01] ( 10,  8   )    long  ->  r15         "Inlining Arg"
+;* V06 tmp4         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;  V07 tmp5         [V07,T18] (  3,  2   )    long  ->  r14         "spilling helperCall"
+;* V08 tmp6         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;  V09 tmp7         [V09,T08] (  3,  3   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+ImplicitlyStableOrderedIterator`1[System.__Canon]>
+;* V10 tmp8         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V11 tmp9         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <System.Linq.Enumerable+ImplicitlyStableOrderedIterator`1[System.__Canon]>
+;* V12 tmp10        [V12,T23] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V13 tmp11        [V13    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V14 tmp12        [V14,T00] ( 15,  8.50)     ref  ->  rax         class-hnd single-def "Inline stloc first use temp" <System.Type>
+;  V15 tmp13        [V15,T09] (  3,  3   )     ref  ->  r15         class-hnd single-def "Inlining Arg" <System.Func`2[System.__Canon,System.__Canon]>
+;  V16 tmp14        [V16,T02] (  8,  8   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+OrderedIterator`2[System.__Canon,System.__Canon]>
+;  V17 tmp15        [V17,T15] (  4,  2.20)    long  ->  r13         "Inlining Arg"
+;* V18 tmp16        [V18    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V19 tmp17        [V19    ] (  0,  0   )     ref  ->  zero-ref    single-def
+;* V20 tmp18        [V20    ] (  0,  0   )     ref  ->  zero-ref   
+;* V21 tmp19        [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V22 tmp20        [V22    ] (  0,  0   )     ref  ->  zero-ref    single-def
+;  V23 tmp21        [V23,T22] (  2,  1   )     ref  ->  rsi         single-def
+;  V24 tmp22        [V24,T19] (  3,  2   )    long  ->  rsi         "Inlining Arg"
+;  V25 rat0         [V25,T04] (  3,  5.60)    long  ->  r15         "fgMakeTemp is creating a new local variable"
+;  V26 rat1         [V26,T07] (  3,  4   )    long  ->  rax         "runtime lookup"
+;  V27 rat2         [V27,T05] (  3,  5.60)    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V28 rat3         [V28,T10] (  3,  2.80)    long  ->  r14         "fgMakeTemp is creating a new local variable"
+;  V29 rat4         [V29,T11] (  3,  2.80)    long  ->  r13         "fgMakeTemp is creating a new local variable"
+;  V30 rat5         [V30,T20] (  3,  2   )    long  ->  rdi         "runtime lookup"
+;  V31 rat6         [V31,T12] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
+;  V32 rat7         [V32,T16] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V33 rat8         [V33,T13] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;  V34 rat9         [V34,T21] (  3,  2   )    long  ->  rdi         "runtime lookup"
+;  V35 rat10        [V35,T14] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M52843_IG01:
        push     rbp
+       push     r15
+       push     r14
+       push     r13
        push     rbx
-       push     rax
-       lea      rbp, [rsp+0x10]
-       mov      qword ptr [rbp-0x10], rdi
+       sub      rsp, 16
+       lea      rbp, [rsp+0x30]
+       mov      qword ptr [rbp-0x28], rdi
        mov      rbx, rsi
-						;; size=15 bbWeight=1 PerfScore 4.75
+						;; size=24 bbWeight=1 PerfScore 7.00
 G_M52843_IG02:
        mov      rsi, qword ptr [rdi+0x18]
-       mov      rax, qword ptr [rsi+0x10]
-       test     rax, rax
-       je       SHORT G_M52843_IG06
-						;; size=13 bbWeight=1 PerfScore 5.25
+       mov      r15, qword ptr [rsi+0x10]
+       test     r15, r15
+       je       G_M52843_IG10
+						;; size=17 bbWeight=1 PerfScore 5.25
 G_M52843_IG03:
-       mov      rdi, rax
-						;; size=3 bbWeight=0.80 PerfScore 0.20
+       mov      rdi, qword ptr [r15+0x18]
+       mov      rax, qword ptr [rdi+0x10]
+       test     rax, rax
+       je       G_M52843_IG11
+						;; size=17 bbWeight=1 PerfScore 5.25
 G_M52843_IG04:
-       mov      rsi, rbx
-       xor      rdx, rdx
-       mov      rax, 0xD1FFAB1E      ; code for System.Linq.Enumerable:Order[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):System.Linq.IOrderedEnumerable`1[System.__Canon]
-						;; size=15 bbWeight=1 PerfScore 0.75
+       mov      rdi, qword ptr [rax+0x18]
+       mov      rdi, qword ptr [rdi]
+       call     CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
+       mov      rdi, 0xD1FFAB1E      ; 'System.SByte'
+       cmp      rax, rdi
+       je       G_M52843_IG12
+						;; size=31 bbWeight=1 PerfScore 6.50
 G_M52843_IG05:
-       add      rsp, 8
-       pop      rbx
-       pop      rbp
-       tail.jmp [rax]System.Linq.Enumerable:Order[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):System.Linq.IOrderedEnumerable`1[System.__Canon]
-						;; size=9 bbWeight=1 PerfScore 3.25
+       mov      rdi, 0xD1FFAB1E      ; 'System.Byte'
+       cmp      rax, rdi
+       je       G_M52843_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.Boolean'
+       cmp      rax, rdi
+       je       G_M52843_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.Int16'
+       cmp      rax, rdi
+       je       G_M52843_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.UInt16'
+       cmp      rax, rdi
+       je       G_M52843_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.Char'
+       cmp      rax, rdi
+       je       G_M52843_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.Int32'
+       cmp      rax, rdi
+       je       G_M52843_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.UInt32'
+       cmp      rax, rdi
+       je       G_M52843_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.Int64'
+       cmp      rax, rdi
+       je       G_M52843_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.UInt64'
+       cmp      rax, rdi
+       je       G_M52843_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.Int128'
+       cmp      rax, rdi
+       je       G_M52843_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.UInt128'
+       cmp      rax, rdi
+       je       G_M52843_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.IntPtr'
+       cmp      rax, rdi
+       je       G_M52843_IG12
+       mov      rdi, 0xD1FFAB1E      ; 'System.UIntPtr'
+       cmp      rax, rdi
+       je       G_M52843_IG12
+       mov      rdi, qword ptr [r15+0x18]
+       mov      r14, qword ptr [rdi+0x18]
+       test     r14, r14
+						;; size=258 bbWeight=0.50 PerfScore 11.88
 G_M52843_IG06:
+       je       G_M52843_IG15
+						;; size=6 bbWeight=0.50 PerfScore 0.50
+G_M52843_IG07:
+       mov      rdi, qword ptr [r15+0x18]
+       mov      r13, qword ptr [rdi+0x20]
+       test     r13, r13
+       je       G_M52843_IG16
+						;; size=17 bbWeight=0.50 PerfScore 2.62
+G_M52843_IG08:
+       mov      rdi, r14
+       call     CORINFO_HELP_GET_GCSTATIC_BASE
+       mov      r15, gword ptr [rax]
+       mov      rdi, qword ptr [r13+0x18]
+       mov      rdi, qword ptr [rdi+0x18]
+       test     rdi, rdi
+       je       G_M52843_IG17
+						;; size=28 bbWeight=0.50 PerfScore 4.25
+G_M52843_IG09:
+       call     CORINFO_HELP_NEWSFAST
+       mov      r14, rax
+       mov      rdi, r14
+       mov      rsi, rbx
+       mov      rax, 0xD1FFAB1E      ; code for System.Linq.Enumerable+OrderedIterator`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this
+       call     [rax]System.Linq.Enumerable+OrderedIterator`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this
+       test     rbx, rbx
+       jne      G_M52843_IG18
+       jmp      G_M52843_IG24
+						;; size=40 bbWeight=0.50 PerfScore 4.12
+G_M52843_IG10:
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       mov      r15, rax
+       jmp      G_M52843_IG03
+						;; size=30 bbWeight=0.20 PerfScore 1.15
+G_M52843_IG11:
+       mov      rdi, r15
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       jmp      G_M52843_IG04
+						;; size=30 bbWeight=0.20 PerfScore 1.15
+G_M52843_IG12:
+       mov      rdi, qword ptr [r15+0x18]
+       mov      rdi, qword ptr [rdi+0x28]
+       test     rdi, rdi
+       je       SHORT G_M52843_IG14
+						;; size=13 bbWeight=0.50 PerfScore 2.62
+G_M52843_IG13:
+       call     CORINFO_HELP_NEWSFAST
+       mov      r14, rax
+       mov      rdi, r14
+       mov      rsi, rbx
+       xor      edx, edx
+       mov      rax, 0xD1FFAB1E      ; code for System.Linq.Enumerable+ImplicitlyStableOrderedIterator`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],ubyte):this
+       call     [rax]System.Linq.Enumerable+ImplicitlyStableOrderedIterator`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],ubyte):this
+       jmp      G_M52843_IG20
+						;; size=33 bbWeight=0.50 PerfScore 3.62
+G_M52843_IG14:
+       mov      rdi, r15
        mov      rsi, 0xD1FFAB1E      ; global ptr
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
        call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
        mov      rdi, rax
-       jmp      SHORT G_M52843_IG04
-						;; size=27 bbWeight=0.20 PerfScore 1.15
+       jmp      SHORT G_M52843_IG13
+						;; size=30 bbWeight=0.10 PerfScore 0.60
+G_M52843_IG15:
+       mov      rdi, r15
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       mov      r14, rax
+       jmp      G_M52843_IG07
+						;; size=33 bbWeight=0.10 PerfScore 0.60
+G_M52843_IG16:
+       mov      rdi, r15
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       mov      r13, rax
+       jmp      G_M52843_IG08
+						;; size=33 bbWeight=0.10 PerfScore 0.60
+G_M52843_IG17:
+       mov      rdi, r13
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       mov      rdi, rax
+       jmp      G_M52843_IG09
+						;; size=33 bbWeight=0.10 PerfScore 0.60
+G_M52843_IG18:
+       test     r15, r15
+       je       SHORT G_M52843_IG23
+       xor      rdi, rdi
+       mov      gword ptr [r14+0x20], rdi
+       lea      rdi, bword ptr [r14+0x28]
+       mov      rsi, r15
+       call     CORINFO_HELP_ASSIGN_REF
+       mov      rdi, qword ptr [r14]
+       mov      rsi, qword ptr [rdi+0x30]
+       mov      rsi, qword ptr [rsi+0x10]
+       mov      rsi, qword ptr [rsi+0x18]
+       test     rsi, rsi
+       je       SHORT G_M52843_IG22
+						;; size=43 bbWeight=0.50 PerfScore 6.75
+G_M52843_IG19:
+       mov      rdi, rsi
+       call     CORINFO_HELP_GET_GCSTATIC_BASE
+       mov      rsi, gword ptr [rax]
+       lea      rdi, bword ptr [r14+0x30]
+       call     CORINFO_HELP_ASSIGN_REF
+       mov      byte  ptr [r14+0x48], 0
+						;; size=25 bbWeight=0.50 PerfScore 2.88
+G_M52843_IG20:
+       mov      rax, r14
+						;; size=3 bbWeight=1 PerfScore 0.25
+G_M52843_IG21:
+       add      rsp, 16
+       pop      rbx
+       pop      r13
+       pop      r14
+       pop      r15
+       pop      rbp
+       ret      
+						;; size=13 bbWeight=1 PerfScore 3.75
+G_M52843_IG22:
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
+       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
+       mov      rsi, rax
+       jmp      SHORT G_M52843_IG19
+						;; size=27 bbWeight=0.10 PerfScore 0.58
+G_M52843_IG23:
+       mov      edi, 9
+       mov      rax, 0xD1FFAB1E      ; code for System.Linq.ThrowHelper:ThrowArgumentNullException(int)
+       call     [rax]System.Linq.ThrowHelper:ThrowArgumentNullException(int)
+       int3     
+						;; size=18 bbWeight=0 PerfScore 0.00
+G_M52843_IG24:
+       mov      edi, 17
+       mov      rax, 0xD1FFAB1E      ; code for System.Linq.ThrowHelper:ThrowArgumentNullException(int)
+       call     [rax]System.Linq.ThrowHelper:ThrowArgumentNullException(int)
+       int3     
+						;; size=18 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 82, prolog size 15, PerfScore 15.35, instruction count 23, allocated bytes for code 82 (MethodHash=17ce3194) for method System.Linq.Enumerable:Order[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Linq.IOrderedEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 820, prolog size 21, PerfScore 72.52, instruction count 172, allocated bytes for code 820 (MethodHash=17ce3194) for method System.Linq.Enumerable:Order[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Linq.IOrderedEnumerable`1[System.__Canon] (FullOpts)
 ; ============================================================
628 (436.11 % of base) - System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.__Canon[]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]
 ; Assembly listing for method System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.__Canon[]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (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; 1 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 19 single block inlinees; 13 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T01] (  5,  4.20)    long  ->  rdi         single-def
-;  V01 arg0         [V01,T03] (  3,  3   )     ref  ->  rbx         class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
-;  V02 arg1         [V02,T00] (  5,  5   )     ref  ->  rdx         class-hnd single-def <System.__Canon[]>
-;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;  V00 TypeCtx      [V00,T05] (  5,  4.20)    long  ->  rdi         single-def
+;  V01 arg0         [V01,T08] (  3,  3   )     ref  ->  rbx         class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+;  V02 arg1         [V02,T04] (  5,  5   )     ref  ->  rdx         class-hnd single-def <System.__Canon[]>
+;  V03 OutArgs      [V03    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V05 tmp2         [V05    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V06 tmp3         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;  V06 tmp3         [V06,T09] (  4,  4.40)    long  ->  rsi         "spilling helperCall"
 ;* V07 tmp4         [V07    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[System.__Canon]>
 ;* V08 tmp5         [V08    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.__Canon]>
 ;* V09 tmp6         [V09    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V10 tmp7         [V10    ] (  0,  0   )   byref  ->  zero-ref    "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V11 tmp8         [V11    ] (  0,  0   )     int  ->  zero-ref    "field V07._length (fldOffset=0x8)" P-INDEP
-;  V12 tmp9         [V12,T06] (  2,  2   )   byref  ->  r15         single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-;  V13 tmp10        [V13,T07] (  2,  2   )     int  ->  r14         "field V08._length (fldOffset=0x8)" P-INDEP
-;  V14 tmp11        [V14,T05] (  2,  4   )    long  ->  rdi         "argument with side effect"
-;  V15 rat0         [V15,T04] (  3,  4   )    long  ->  rdi         "runtime lookup"
-;  V16 rat1         [V16,T02] (  3,  5.60)    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;* V10 tmp7         [V10    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V11 tmp8         [V11    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;  V12 tmp9         [V12,T03] (  9,  7.50)     ref  ->  rbx         class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]>
+;  V13 tmp10        [V13,T01] (  7, 10   )     ref  ->  rbx         class-hnd "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+;  V14 tmp11        [V14,T02] (  7, 10   )     ref  ->  r13         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]>
+;  V15 tmp12        [V15,T00] ( 12, 12   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]>
+;* V16 tmp13        [V16    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V17 tmp14        [V17    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V18 tmp15        [V18    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;  V19 tmp16        [V19,T10] (  4,  4   )     ref  ->  [rbp-0x60]  class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]>
+;* V20 tmp17        [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V21 tmp18        [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V22 tmp19        [V22    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]>
+;* V23 tmp20        [V23    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V24 tmp21        [V24    ] (  0,  0   )  struct (32) zero-ref    do-not-enreg[S] "spilled call-like call argument" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]>
+;* V25 tmp22        [V25    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon]>
+;  V26 tmp23        [V26    ] (  5,  2.50)  struct (16) [rbp-0x40]  do-not-enreg[SBR] multireg-ret must-init ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon]>
+;* V27 tmp24        [V27    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V28 tmp25        [V28    ] (  0,  0   )  struct (32) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]>
+;* V29 tmp26        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V30 tmp27        [V30    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V31 tmp28        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V32 tmp29        [V32    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V33 tmp30        [V33    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;  V34 tmp31        [V34,T30] (  3,  1.50)     int  ->  rdx         "Inline stloc first use temp"
+;* V35 tmp32        [V35    ] (  0,  0   )  struct (32) zero-ref    do-not-enreg[S] "spilled call-like call argument" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]>
+;* V36 tmp33        [V36    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon]>
+;  V37 tmp34        [V37    ] (  5,  4.50)  struct (16) [rbp-0x50]  do-not-enreg[SBR] multireg-ret must-init ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon]>
+;* V38 tmp35        [V38    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V39 tmp36        [V39    ] (  0,  0   )  struct (32) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]>
+;* V40 tmp37        [V40    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V41 tmp38        [V41    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V42 tmp39        [V42    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V43 tmp40        [V43    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V44 tmp41        [V44    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;  V45 tmp42        [V45,T15] (  3,  2.50)     int  ->  rdx         "Inline stloc first use temp"
+;* V46 tmp43        [V46    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V47 tmp44        [V47    ] (  0,  0   )     int  ->  zero-ref    "field V07._length (fldOffset=0x8)" P-INDEP
+;  V48 tmp45        [V48,T21] (  2,  2   )   byref  ->  r15         single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+;  V49 tmp46        [V49,T27] (  2,  2   )     int  ->  r14         "field V08._length (fldOffset=0x8)" P-INDEP
+;  V50 tmp47        [V50,T32] (  2,  1   )     ref  ->  [rbp-0x40]  do-not-enreg[] "field V26._root (fldOffset=0x0)" P-DEP
+;  V51 tmp48        [V51,T31] (  3,  1.50)     int  ->  [rbp-0x38]  do-not-enreg[] "field V26._count (fldOffset=0x8)" P-DEP
+;  V52 tmp49        [V52,T36] (  2,  1   )     int  ->  [rbp-0x34]  do-not-enreg[] "field V26._countType (fldOffset=0xc)" P-DEP
+;  V53 tmp50        [V53,T33] (  2,  1   )     ref  ->  rdi         single-def "field V28._root (fldOffset=0x0)" P-INDEP
+;  V54 tmp51        [V54,T34] (  2,  1   )     ref  ->  rsi         single-def "field V28._equalityComparer (fldOffset=0x8)" P-INDEP
+;  V55 tmp52        [V55,T35] (  2,  1   )     ref  ->  rcx         single-def "field V28._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
+;  V56 tmp53        [V56,T37] (  2,  1   )     int  ->  rax         "field V28._count (fldOffset=0x18)" P-INDEP
+;  V57 tmp54        [V57,T22] (  2,  2   )     ref  ->  [rbp-0x50]  do-not-enreg[] "field V37._root (fldOffset=0x0)" P-DEP
+;  V58 tmp55        [V58,T16] (  3,  2.50)     int  ->  [rbp-0x48]  do-not-enreg[] "field V37._count (fldOffset=0x8)" P-DEP
+;  V59 tmp56        [V59,T28] (  2,  2   )     int  ->  [rbp-0x44]  do-not-enreg[] "field V37._countType (fldOffset=0xc)" P-DEP
+;  V60 tmp57        [V60,T23] (  2,  2   )     ref  ->  rsi         single-def "field V39._root (fldOffset=0x0)" P-INDEP
+;  V61 tmp58        [V61,T24] (  2,  2   )     ref  ->  rdx         single-def "field V39._equalityComparer (fldOffset=0x8)" P-INDEP
+;  V62 tmp59        [V62,T25] (  2,  2   )     ref  ->  rax         single-def "field V39._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
+;  V63 tmp60        [V63,T29] (  2,  2   )     int  ->  rdi         "field V39._count (fldOffset=0x18)" P-INDEP
+;  V64 tmp61        [V64,T26] (  2,  2   )     ref  ->  rsi         single-def "argument with side effect"
+;* V65 tmp62        [V65    ] (  0,  0   )    long  ->  zero-ref    "argument with side effect"
+;* V66 tmp63        [V66    ] (  0,  0   )    long  ->  zero-ref    "argument with side effect"
+;  V67 cse0         [V67,T14] (  5,  2.50)    long  ->  [rbp-0x58]  spill-single-def "CSE #02: moderate"
+;  V68 rat0         [V68,T06] (  3,  5.60)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;  V69 rat1         [V69,T11] (  3,  4   )    long  ->  rdi         "runtime lookup"
+;  V70 rat2         [V70,T07] (  3,  5.60)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
+;  V71 rat3         [V71,T17] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V72 rat4         [V72,T19] (  3,  2   )    long  ->  rsi         "runtime lookup"
+;  V73 rat5         [V73,T12] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;  V74 rat6         [V74,T18] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V75 rat7         [V75,T20] (  3,  2   )    long  ->  rsi         "runtime lookup"
+;  V76 rat8         [V76,T13] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 88
 
 G_M20152_IG01:
        push     rbp
        push     r15
        push     r14
+       push     r13
+       push     r12
        push     rbx
-       push     rax
-       lea      rbp, [rsp+0x20]
-       mov      qword ptr [rbp-0x20], rdi
+       sub      rsp, 88
+       lea      rbp, [rsp+0x80]
+       vxorps   xmm8, xmm8, xmm8
+       vmovdqu  ymmword ptr [rbp-0x50], ymm8
+       mov      qword ptr [rbp-0x30], rdi
        mov      rbx, rsi
-						;; size=19 bbWeight=1 PerfScore 6.75
+						;; size=39 bbWeight=1 PerfScore 10.33
 G_M20152_IG02:
        test     rdx, rdx
-       je       SHORT G_M20152_IG07
+       je       G_M20152_IG23
        lea      r15, bword ptr [rdx+0x10]
        mov      r14d, dword ptr [rdx+0x08]
        mov      rsi, qword ptr [rdi+0x18]
-       mov      rax, qword ptr [rsi+0x20]
-       test     rax, rax
-       je       SHORT G_M20152_IG06
-						;; size=26 bbWeight=1 PerfScore 9.00
+       mov      rsi, qword ptr [rsi+0x20]
+       test     rsi, rsi
+       je       G_M20152_IG13
+						;; size=34 bbWeight=1 PerfScore 9.00
 G_M20152_IG03:
-       mov      rdi, rax
-						;; size=3 bbWeight=0.80 PerfScore 0.20
+       mov      rdi, qword ptr [rsi+0x18]
+       mov      rdi, qword ptr [rdi+0x10]
+       test     rdi, rdi
+       je       G_M20152_IG14
+						;; size=17 bbWeight=1 PerfScore 5.25
 G_M20152_IG04:
-       mov      rdx, r15
-       mov      ecx, r14d
-       mov      rsi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]
-       call     [rax]System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]
-       nop      
-						;; size=22 bbWeight=1 PerfScore 4.25
+       call     CORINFO_HELP_GET_GCSTATIC_BASE
+       mov      r13, gword ptr [rax]
+       cmp      byte  ptr [r13], r13b
+       test     rbx, rbx
+       jne      SHORT G_M20152_IG07
+						;; size=17 bbWeight=1 PerfScore 7.25
 G_M20152_IG05:
-       add      rsp, 8
+       mov      rdi, qword ptr [r13]
+       mov      rsi, qword ptr [rdi+0x30]
+       mov      rsi, qword ptr [rsi]
+       mov      rsi, qword ptr [rsi+0x18]
+       test     rsi, rsi
+       je       G_M20152_IG15
+						;; size=24 bbWeight=0.50 PerfScore 4.62
+G_M20152_IG06:
+       mov      rdi, rsi
+       call     CORINFO_HELP_GET_GCSTATIC_BASE
+       mov      rbx, gword ptr [rax]
+						;; size=11 bbWeight=0.50 PerfScore 1.62
+G_M20152_IG07:
+       cmp      rbx, gword ptr [r13+0x08]
+       jne      G_M20152_IG16
+						;; size=10 bbWeight=1 PerfScore 4.00
+G_M20152_IG08:
+       mov      rbx, r13
+						;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M20152_IG09:
+       mov      rsi, gword ptr [rbx+0x10]
+       mov      rdx, gword ptr [rbx+0x08]
+       mov      edi, dword ptr [rbx+0x20]
+       mov      rax, gword ptr [rbx+0x18]
+       mov      gword ptr [rsp], rsi
+       mov      gword ptr [rsp+0x08], rdx
+       mov      gword ptr [rsp+0x10], rax
+       mov      dword ptr [rsp+0x18], edi
+       mov      rsi, r15
+       mov      edx, r14d
+       mov      rdi, qword ptr [rbx]
+       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Union(System.ReadOnlySpan`1[System.__Canon],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon]
+       call     [rax]System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Union(System.ReadOnlySpan`1[System.__Canon],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon]
+       mov      gword ptr [rbp-0x50], rax
+       mov      qword ptr [rbp-0x48], rdx
+       mov      edx, dword ptr [rbp-0x48]
+       cmp      dword ptr [rbp-0x44], 0
+       jne      SHORT G_M20152_IG11
+						;; size=71 bbWeight=1 PerfScore 23.75
+G_M20152_IG10:
+       mov      edx, dword ptr [rbp-0x48]
+       add      edx, dword ptr [rbx+0x20]
+						;; size=6 bbWeight=0.50 PerfScore 2.00
+G_M20152_IG11:
+       mov      rdi, rbx
+       mov      rsi, gword ptr [rbp-0x50]
+       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Wrap(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],int):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:this
+       call     [rax]System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Wrap(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],int):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:this
+       nop      
+						;; size=20 bbWeight=1 PerfScore 4.75
+G_M20152_IG12:
+       add      rsp, 88
        pop      rbx
+       pop      r12
+       pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=11 bbWeight=1 PerfScore 3.25
-G_M20152_IG06:
+						;; size=15 bbWeight=1 PerfScore 4.25
+G_M20152_IG13:
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
+       mov      rsi, rax
+       jmp      G_M20152_IG03
+						;; size=30 bbWeight=0.20 PerfScore 1.15
+G_M20152_IG14:
+       mov      rdi, rsi
        mov      rsi, 0xD1FFAB1E      ; global ptr
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
        call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
        mov      rdi, rax
-       jmp      SHORT G_M20152_IG04
-						;; size=27 bbWeight=0.20 PerfScore 1.15
-G_M20152_IG07:
+       jmp      G_M20152_IG04
+						;; size=33 bbWeight=0.20 PerfScore 1.20
+G_M20152_IG15:
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
+       call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
+       mov      rsi, rax
+       jmp      G_M20152_IG06
+						;; size=30 bbWeight=0.10 PerfScore 0.58
+G_M20152_IG16:
+       mov      rdi, qword ptr [r13]
+       call     CORINFO_HELP_NEWSFAST
+       mov      r12, rax
+       mov      rax, qword ptr [r12]
+       mov      qword ptr [rbp-0x58], rax
+       mov      rdi, rax
+       mov      rsi, qword ptr [rdi+0x30]
+       mov      rsi, qword ptr [rsi]
+       mov      rsi, qword ptr [rsi+0x10]
+       test     rsi, rsi
+       je       SHORT G_M20152_IG18
+						;; size=39 bbWeight=0.50 PerfScore 6.88
+G_M20152_IG17:
+       mov      rdi, rsi
+       call     CORINFO_HELP_GET_GCSTATIC_BASE
+       mov      rax, gword ptr [rax]
+       mov      gword ptr [rbp-0x60], rax
+       test     rax, rax
+       jne      SHORT G_M20152_IG19
+       jmp      G_M20152_IG22
+						;; size=25 bbWeight=0.50 PerfScore 3.75
+G_M20152_IG18:
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       mov      rcx, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
+       call     [rcx]CORINFO_HELP_RUNTIMEHANDLE_CLASS
+       mov      rsi, rax
+       jmp      SHORT G_M20152_IG17
+						;; size=27 bbWeight=0.10 PerfScore 0.58
+G_M20152_IG19:
+       test     rbx, rbx
+       je       G_M20152_IG21
+       mov      rdi, qword ptr [rbp-0x58]
+       call     CORINFO_HELP_GET_GCSTATIC_BASE
+       mov      rsi, gword ptr [rax+0x08]
+       mov      rdi, gword ptr [rbp-0x60]
+       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]:Freeze(System.Action`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]]):this
+       call     [rax]System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]:Freeze(System.Action`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]]):this
+       lea      rdi, bword ptr [r12+0x10]
+       mov      rsi, gword ptr [rbp-0x60]
+       call     CORINFO_HELP_ASSIGN_REF
+       xor      edi, edi
+       mov      dword ptr [r12+0x20], edi
+       lea      rdi, bword ptr [r12+0x08]
+       mov      rsi, rbx
+       call     CORINFO_HELP_ASSIGN_REF
+       mov      rdi, qword ptr [rbp-0x58]
+       mov      rsi, rbx
+       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:GetHashBucketEqualityComparer(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]
+       call     [rax]System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:GetHashBucketEqualityComparer(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]
+       lea      rdi, bword ptr [r12+0x18]
+       mov      rsi, rax
+       call     CORINFO_HELP_ASSIGN_REF
+       mov      rdi, gword ptr [r12+0x10]
+       mov      rsi, gword ptr [r12+0x08]
+       mov      eax, dword ptr [r12+0x20]
+       mov      rcx, gword ptr [r12+0x18]
+       mov      gword ptr [rsp], rdi
+       mov      gword ptr [rsp+0x08], rsi
+       mov      gword ptr [rsp+0x10], rcx
+       mov      dword ptr [rsp+0x18], eax
+       mov      rdi, qword ptr [rbp-0x58]
+       mov      rsi, r13
+       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Union(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon]
+       call     [rax]System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Union(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.__Canon]
+       mov      gword ptr [rbp-0x40], rax
+       mov      qword ptr [rbp-0x38], rdx
+       mov      edx, dword ptr [rbp-0x38]
+       cmp      dword ptr [rbp-0x34], 0
+       jne      SHORT G_M20152_IG20
+       mov      edx, dword ptr [rbp-0x38]
+       add      edx, dword ptr [r12+0x20]
+						;; size=186 bbWeight=0.50 PerfScore 23.88
+G_M20152_IG20:
+       mov      rdi, r12
+       mov      rsi, gword ptr [rbp-0x40]
+       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Wrap(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],int):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:this
+       call     [rax]System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Wrap(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]],int):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:this
+       mov      rbx, rax
+       jmp      G_M20152_IG09
+						;; size=27 bbWeight=0.50 PerfScore 3.38
+G_M20152_IG21:
+       mov      edi, 0x4B5
+       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
+G_M20152_IG22:
+       mov      edi, 0x4AB
+       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
+G_M20152_IG23:
        mov      edi, 0x40B
        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 144, prolog size 16, PerfScore 24.60, instruction count 41, allocated bytes for code 144 (MethodHash=4adab147) for method System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.__Canon[]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (FullOpts)
+; Total bytes of code 772, prolog size 36, PerfScore 118.33, instruction count 182, allocated bytes for code 772 (MethodHash=4adab147) for method System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.__Canon[]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (FullOpts)
 ; ============================================================

Note: some changes were skipped as they were too large to fit into a comment.

Larger list of diffs: https://gist.github.com/MihuBot/3985328231b1fd12da402a26855ff432

@MihuBot
Copy link
Owner Author

MihuBot commented Oct 26, 2024

Top method improvements

-41 (-11.20 % of base) - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int
 ; Assembly listing for method System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (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; 4 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 TypeCtx      [V00,T12] (  5,  3.30)    long  ->  rdi         single-def
 ;  V01 arg0         [V01,T07] (  3,  6   )   byref  ->  rbx         single-def
 ;  V02 arg1         [V02,T08] (  3,  6   )     ref  ->  r15         class-hnd single-def <System.__Canon>
 ;  V03 arg2         [V03,T09] (  3,  4   )     ref  ->  r14         class-hnd single-def <System.__Canon>
 ;  V04 arg3         [V04,T10] (  3,  4   )     ref  ->  r13         class-hnd single-def <System.__Canon>
 ;  V05 arg4         [V05,T11] (  3,  4   )     ref  ->  r12         class-hnd single-def <System.__Canon>
 ;  V06 arg5         [V06,T13] (  2,  5   )     int  ->  [rbp+0x10]  single-def
 ;  V07 loc0         [V07,T01] (  6, 17.50)     int  ->  [rbp-0x34] 
 ;  V08 loc1         [V08,T02] (  5, 14   )   byref  ->  [rbp-0x48]  spill-single-def
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V10 tmp1         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V11 tmp2         [V11    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V12 tmp3         [V12    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V13 tmp4         [V13    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V14 tmp5         [V14,T00] (  3, 24   )     ref  ->  rax         "argument with side effect"
-;  V15 tmp6         [V15,T03] (  3, 12   )     ref  ->  rax         "argument with side effect"
-;  V16 tmp7         [V16,T04] (  3, 12   )     ref  ->  rax         "argument with side effect"
-;  V17 tmp8         [V17,T05] (  3, 12   )     ref  ->  rax         "argument with side effect"
-;  V18 cse0         [V18,T06] (  5, 10.25)    long  ->  [rbp-0x40]  spill-single-def hoist "CSE #01: aggressive"
-;  V19 rat0         [V19,T15] (  3,  1   )    long  ->  rdx         "runtime lookup"
-;  V20 rat1         [V20,T14] (  3,  1.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;* V14 tmp5         [V14    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V15 tmp6         [V15    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V16 tmp7         [V16    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V17 tmp8         [V17    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V18 tmp9         [V18,T00] (  3, 24   )     ref  ->  rdi         "argument with side effect"
+;  V19 tmp10        [V19,T04] (  3, 12   )     ref  ->  rdi         "argument with side effect"
+;  V20 tmp11        [V20,T05] (  3, 12   )     ref  ->  rdi         "argument with side effect"
+;  V21 tmp12        [V21,T06] (  3, 12   )     ref  ->  rdi         "argument with side effect"
+;  V22 cse0         [V22,T03] (  5, 14   )   byref  ->  [rbp-0x50]  spill-single-def "CSE #02: aggressive"
+;  V23 cse1         [V23,T14] (  2,  4.25)    long  ->  [rbp-0x40]  spill-single-def hoist "CSE #01: moderate"
+;  V24 rat0         [V24,T16] (  3,  1   )    long  ->  rdx         "runtime lookup"
+;  V25 rat1         [V25,T15] (  3,  1.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 40
 
 G_M17073_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 40
        lea      rbp, [rsp+0x50]
        mov      qword ptr [rbp-0x30], rdi
        mov      rbx, rsi
        mov      r15, rdx
        mov      r14, rcx
        mov      r13, r8
        mov      r12, r9
        mov      eax, dword ptr [rbp+0x10]
 						;; size=41 bbWeight=1 PerfScore 10.00
 G_M17073_IG02:
        xor      ecx, ecx
        mov      dword ptr [rbp-0x34], ecx
        mov      dword ptr [rbp+0x10], eax
        test     eax, eax
        jle      G_M17073_IG11
 						;; size=16 bbWeight=1 PerfScore 3.50
 G_M17073_IG03:
        mov      rsi, qword ptr [rdi+0x18]
        mov      rdx, qword ptr [rsi+0x10]
        test     rdx, rdx
        je       G_M17073_IG09
 						;; size=17 bbWeight=0.25 PerfScore 1.31
 G_M17073_IG04:
        mov      qword ptr [rbp-0x40], rdx
 						;; size=4 bbWeight=0.25 PerfScore 0.25
 G_M17073_IG05:
        movsxd   rdi, dword ptr [rbp-0x34]
        lea      rsi, bword ptr [rbx+8*rdi]
        mov      bword ptr [rbp-0x48], rsi
        mov      rdi, rdx
-       mov      r8, 0xD1FFAB1E      ; code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       call     [r8]System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       mov      rdi, rax
+       call     CORINFO_HELP_GET_GCSTATIC_BASE
+       mov      bword ptr [rbp-0x50], rax
+       mov      rdi, gword ptr [rax]
        mov      rcx, bword ptr [rbp-0x48]
        mov      rsi, gword ptr [rcx]
        mov      rdx, r15
-       mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+0x40]
-       call     [rax+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
+       mov      r8, qword ptr [rdi]
+       mov      r8, qword ptr [r8+0x40]
+       call     [r8+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
        test     eax, eax
        jne      G_M17073_IG10
-						;; size=59 bbWeight=4 PerfScore 79.00
+						;; size=56 bbWeight=4 PerfScore 81.00
 G_M17073_IG06:
-       mov      rdi, qword ptr [rbp-0x40]
-       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       call     [rax]System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       mov      rdi, rax
+       mov      rax, bword ptr [rbp-0x50]
+       mov      rdi, gword ptr [rax]
        mov      rcx, bword ptr [rbp-0x48]
        mov      rsi, gword ptr [rcx]
        mov      rdx, r14
-       mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+0x40]
-       call     [rax+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
+       mov      r8, qword ptr [rdi]
+       mov      r8, qword ptr [r8+0x40]
+       call     [r8+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
        test     eax, eax
-       jne      G_M17073_IG10
-       mov      rdi, qword ptr [rbp-0x40]
-       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       call     [rax]System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       mov      rdi, rax
+       jne      SHORT G_M17073_IG10
+       mov      rax, bword ptr [rbp-0x50]
+       mov      rdi, gword ptr [rax]
        mov      rcx, bword ptr [rbp-0x48]
        mov      rsi, gword ptr [rcx]
        mov      rdx, r13
-       mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+0x40]
-       call     [rax+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
+       mov      r8, qword ptr [rdi]
+       mov      r8, qword ptr [r8+0x40]
+       call     [r8+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
        test     eax, eax
        jne      SHORT G_M17073_IG10
-       mov      rdi, qword ptr [rbp-0x40]
-       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       call     [rax]System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       mov      rdi, rax
+       mov      rdi, bword ptr [rbp-0x50]
+       mov      rdi, gword ptr [rdi]
        mov      rsi, bword ptr [rbp-0x48]
        mov      rsi, gword ptr [rsi]
        mov      rdx, r12
-       mov      rax, qword ptr [rax]
+       mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
        test     eax, eax
        jne      SHORT G_M17073_IG10
-						;; size=133 bbWeight=2 PerfScore 96.00
+						;; size=95 bbWeight=2 PerfScore 87.00
 G_M17073_IG07:
        mov      ecx, dword ptr [rbp-0x34]
        mov      eax, ecx
 						;; size=5 bbWeight=0.50 PerfScore 0.62
 G_M17073_IG08:
        add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M17073_IG09:
        mov      rsi, 0xD1FFAB1E      ; global ptr
        mov      rdx, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
        call     [rdx]CORINFO_HELP_RUNTIMEHANDLE_METHOD
        mov      rdx, rax
        jmp      G_M17073_IG04
 						;; size=30 bbWeight=0.05 PerfScore 0.29
 G_M17073_IG10:
        mov      ecx, dword ptr [rbp-0x34]
        inc      ecx
        mov      eax, dword ptr [rbp+0x10]
        cmp      ecx, eax
        mov      dword ptr [rbp-0x34], ecx
        mov      dword ptr [rbp+0x10], eax
        mov      rdx, qword ptr [rbp-0x40]
        jl       G_M17073_IG05
 						;; size=26 bbWeight=4 PerfScore 26.00
 G_M17073_IG11:
        mov      eax, -1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
 G_M17073_IG12:
        add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 
-; Total bytes of code 366, prolog size 23, PerfScore 221.35, instruction count 108, allocated bytes for code 366 (MethodHash=5d9ebd4e) for method System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
+; Total bytes of code 325, prolog size 23, PerfScore 214.35, instruction count 102, allocated bytes for code 325 (MethodHash=5d9ebd4e) for method System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
 ; ============================================================
-40 (-11.36 % of base) - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int
 ; Assembly listing for method System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (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; 4 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 TypeCtx      [V00,T12] (  5,  3.30)    long  ->  rdi         single-def
 ;  V01 arg0         [V01,T07] (  3,  6   )   byref  ->  rbx         single-def
 ;  V02 arg1         [V02,T08] (  3,  6   )     ref  ->  r15         class-hnd single-def <System.__Canon>
 ;  V03 arg2         [V03,T09] (  3,  4   )     ref  ->  r14         class-hnd single-def <System.__Canon>
 ;  V04 arg3         [V04,T10] (  3,  4   )     ref  ->  r13         class-hnd single-def <System.__Canon>
 ;  V05 arg4         [V05,T11] (  3,  4   )     ref  ->  r12         class-hnd single-def <System.__Canon>
-;  V06 arg5         [V06,T15] (  1,  1   )     int  ->  [rbp+0x10]  single-def
+;  V06 arg5         [V06,T16] (  1,  1   )     int  ->  [rbp+0x10]  single-def
 ;  V07 loc0         [V07,T01] (  7, 18.50)     int  ->  [rbp-0x34] 
 ;  V08 loc1         [V08,T02] (  5, 14   )   byref  ->  [rbp-0x48]  spill-single-def
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V10 tmp1         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V11 tmp2         [V11    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V12 tmp3         [V12    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V13 tmp4         [V13    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V14 tmp5         [V14,T00] (  3, 24   )     ref  ->  rax         "argument with side effect"
-;  V15 tmp6         [V15,T03] (  3, 12   )     ref  ->  rax         "argument with side effect"
-;  V16 tmp7         [V16,T04] (  3, 12   )     ref  ->  rax         "argument with side effect"
-;  V17 tmp8         [V17,T05] (  3, 12   )     ref  ->  rax         "argument with side effect"
-;  V18 cse0         [V18,T06] (  5, 10.25)    long  ->  [rbp-0x40]  spill-single-def hoist "CSE #01: aggressive"
-;  V19 rat0         [V19,T14] (  3,  1   )    long  ->  rcx         "runtime lookup"
-;  V20 rat1         [V20,T13] (  3,  1.40)    long  ->  rcx         "fgMakeTemp is creating a new local variable"
+;* V14 tmp5         [V14    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V15 tmp6         [V15    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V16 tmp7         [V16    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V17 tmp8         [V17    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V18 tmp9         [V18,T00] (  3, 24   )     ref  ->  rdi         "argument with side effect"
+;  V19 tmp10        [V19,T04] (  3, 12   )     ref  ->  rdi         "argument with side effect"
+;  V20 tmp11        [V20,T05] (  3, 12   )     ref  ->  rdi         "argument with side effect"
+;  V21 tmp12        [V21,T06] (  3, 12   )     ref  ->  rdi         "argument with side effect"
+;  V22 cse0         [V22,T03] (  5, 14   )   byref  ->  [rbp-0x50]  spill-single-def "CSE #02: aggressive"
+;  V23 cse1         [V23,T13] (  2,  4.25)    long  ->  [rbp-0x40]  spill-single-def hoist "CSE #01: moderate"
+;  V24 rat0         [V24,T15] (  3,  1   )    long  ->  rcx         "runtime lookup"
+;  V25 rat1         [V25,T14] (  3,  1.40)    long  ->  rcx         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 40
 
 G_M40251_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 40
        lea      rbp, [rsp+0x50]
        mov      qword ptr [rbp-0x30], rdi
        mov      rbx, rsi
        mov      r15, rdx
        mov      r14, rcx
        mov      r13, r8
        mov      r12, r9
 						;; size=38 bbWeight=1 PerfScore 9.00
 G_M40251_IG02:
        mov      eax, dword ptr [rbp+0x10]
        dec      eax
        mov      dword ptr [rbp-0x34], eax
        test     eax, eax
        jl       G_M40251_IG11
 						;; size=16 bbWeight=1 PerfScore 3.50
 G_M40251_IG03:
        mov      rsi, qword ptr [rdi+0x18]
        mov      rcx, qword ptr [rsi+0x10]
        test     rcx, rcx
        je       G_M40251_IG09
 						;; size=17 bbWeight=0.25 PerfScore 1.31
 G_M40251_IG04:
        mov      qword ptr [rbp-0x40], rcx
 						;; size=4 bbWeight=0.25 PerfScore 0.25
 G_M40251_IG05:
        movsxd   rdi, dword ptr [rbp-0x34]
        lea      rdx, bword ptr [rbx+8*rdi]
        mov      bword ptr [rbp-0x48], rdx
        mov      rdi, rcx
-       mov      rsi, 0xD1FFAB1E      ; code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       call     [rsi]System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       mov      rdi, rax
+       call     CORINFO_HELP_GET_GCSTATIC_BASE
+       mov      bword ptr [rbp-0x50], rax
+       mov      rdi, gword ptr [rax]
        mov      rcx, bword ptr [rbp-0x48]
        mov      rsi, gword ptr [rcx]
        mov      rdx, r15
-       mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+0x40]
-       call     [rax+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
+       mov      r8, qword ptr [rdi]
+       mov      r8, qword ptr [r8+0x40]
+       call     [r8+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
        test     eax, eax
        jne      G_M40251_IG10
-						;; size=58 bbWeight=4 PerfScore 79.00
+						;; size=56 bbWeight=4 PerfScore 81.00
 G_M40251_IG06:
-       mov      rdi, qword ptr [rbp-0x40]
-       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       call     [rax]System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       mov      rdi, rax
+       mov      rax, bword ptr [rbp-0x50]
+       mov      rdi, gword ptr [rax]
        mov      rcx, bword ptr [rbp-0x48]
        mov      rsi, gword ptr [rcx]
        mov      rdx, r14
-       mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+0x40]
-       call     [rax+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
+       mov      r8, qword ptr [rdi]
+       mov      r8, qword ptr [r8+0x40]
+       call     [r8+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
        test     eax, eax
-       jne      G_M40251_IG10
-       mov      rdi, qword ptr [rbp-0x40]
-       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       call     [rax]System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       mov      rdi, rax
+       jne      SHORT G_M40251_IG10
+       mov      rax, bword ptr [rbp-0x50]
+       mov      rdi, gword ptr [rax]
        mov      rcx, bword ptr [rbp-0x48]
        mov      rsi, gword ptr [rcx]
        mov      rdx, r13
-       mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+0x40]
-       call     [rax+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
+       mov      r8, qword ptr [rdi]
+       mov      r8, qword ptr [r8+0x40]
+       call     [r8+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
        test     eax, eax
        jne      SHORT G_M40251_IG10
-       mov      rdi, qword ptr [rbp-0x40]
-       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       call     [rax]System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       mov      rdi, rax
+       mov      rdi, bword ptr [rbp-0x50]
+       mov      rdi, gword ptr [rdi]
        mov      rsi, bword ptr [rbp-0x48]
        mov      rsi, gword ptr [rsi]
        mov      rdx, r12
-       mov      rax, qword ptr [rax]
+       mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
        test     eax, eax
        jne      SHORT G_M40251_IG10
-						;; size=133 bbWeight=2 PerfScore 96.00
+						;; size=95 bbWeight=2 PerfScore 87.00
 G_M40251_IG07:
        mov      eax, dword ptr [rbp-0x34]
 						;; size=3 bbWeight=0.50 PerfScore 0.50
 G_M40251_IG08:
        add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M40251_IG09:
        mov      rsi, 0xD1FFAB1E      ; global ptr
        mov      rcx, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
        call     [rcx]CORINFO_HELP_RUNTIMEHANDLE_METHOD
        mov      rcx, rax
        jmp      G_M40251_IG04
 						;; size=30 bbWeight=0.05 PerfScore 0.29
 G_M40251_IG10:
        mov      eax, dword ptr [rbp-0x34]
        dec      eax
        mov      dword ptr [rbp-0x34], eax
        mov      rcx, qword ptr [rbp-0x40]
        jns      G_M40251_IG05
 						;; size=18 bbWeight=4 PerfScore 17.00
 G_M40251_IG11:
        mov      eax, -1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
 G_M40251_IG12:
        add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 
-; Total bytes of code 352, prolog size 23, PerfScore 211.22, instruction count 103, allocated bytes for code 352 (MethodHash=a15462c4) for method System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
+; Total bytes of code 312, prolog size 23, PerfScore 204.22, instruction count 97, allocated bytes for code 312 (MethodHash=a15462c4) for method System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
 ; ============================================================
-31 (-9.78 % of base) - System.Collections.Frozen.ValueTypeDefaultComparerFrozenSet`1[System.__Canon]:FindItemIndex(System.__Canon):int:this
 ; Assembly listing for method System.Collections.Frozen.ValueTypeDefaultComparerFrozenSet`1[System.__Canon]:FindItemIndex(System.__Canon):int:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T02] (  6, 10   )     ref  ->  rbx         this class-hnd single-def <System.Collections.Frozen.ValueTypeDefaultComparerFrozenSet`1[System.__Canon]>
 ;  V01 arg1         [V01,T06] (  4,  5   )     ref  ->  r15         class-hnd single-def <System.__Canon>
 ;  V02 loc0         [V02,T09] (  3,  6   )     int  ->  r13        
 ;  V03 loc1         [V03,T16] (  4,  3   )     int  ->  rax         ld-addr-op
 ;  V04 loc2         [V04,T10] (  3,  6   )     int  ->  [rbp-0x34]  ld-addr-op spill-single-def
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V06 tmp1         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V07 tmp2         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V08 tmp3         [V08,T07] (  3,  6   )   byref  ->  rdi         single-def "Inlining Arg"
-;  V09 tmp4         [V09,T17] (  3,  3   )     ref  ->  rax         class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Frozen.FrozenHashTable+Bucket[]>
-;  V10 tmp5         [V10,T18] (  3,  3   )   byref  ->  rdi         single-def "Inline stloc first use temp"
-;* V11 tmp6         [V11    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V12 tmp7         [V12    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V13 tmp8         [V13    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
-;  V14 tmp9         [V14,T08] (  3,  6   )     ref  ->  rax         single-def "argument with side effect"
-;  V15 tmp10        [V15,T11] (  3,  6   )     int  ->  rcx         "index expr"
-;  V16 tmp11        [V16,T01] (  3, 24   )     ref  ->  rdi         "arr expr"
-;  V17 tmp12        [V17,T03] (  3, 12   )     ref  ->  rdi         "arr expr"
-;  V18 tmp13        [V18,T04] (  3, 12   )     ref  ->  rax         "argument with side effect"
-;  V19 tmp14        [V19,T05] (  2,  8   )     ref  ->  rdx         "argument with side effect"
-;  V20 cse0         [V20,T14] (  3,  4   )    long  ->  r14         "CSE #03: moderate"
-;  V21 cse1         [V21,T19] (  3,  3   )     int  ->  rdi         "CSE #01: moderate"
-;  V22 rat0         [V22,T00] ( 10, 26.50)    long  ->  r12         "Widened IV V03"
-;  V23 rat1         [V23,T13] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
-;  V24 rat2         [V24,T15] (  3,  4   )    long  ->  r14         "runtime lookup"
-;  V25 rat3         [V25,T12] (  3,  5.60)    long  ->  r14         "fgMakeTemp is creating a new local variable"
+;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V09 tmp4         [V09,T07] (  3,  6   )   byref  ->  rdi         single-def "Inlining Arg"
+;  V10 tmp5         [V10,T17] (  3,  3   )     ref  ->  rdx         class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Frozen.FrozenHashTable+Bucket[]>
+;  V11 tmp6         [V11,T18] (  3,  3   )   byref  ->  rdi         single-def "Inline stloc first use temp"
+;* V12 tmp7         [V12    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V13 tmp8         [V13    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;* V14 tmp9         [V14    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
+;* V15 tmp10        [V15    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V16 tmp11        [V16,T08] (  3,  6   )     ref  ->  rdi         single-def "argument with side effect"
+;  V17 tmp12        [V17,T11] (  3,  6   )     int  ->  rsi         "index expr"
+;  V18 tmp13        [V18,T01] (  3, 24   )     ref  ->  rdi         "arr expr"
+;  V19 tmp14        [V19,T03] (  3, 12   )     ref  ->  rdx         "arr expr"
+;  V20 tmp15        [V20,T04] (  3, 12   )     ref  ->  rdi         "argument with side effect"
+;  V21 tmp16        [V21,T05] (  2,  8   )     ref  ->  rdx         "argument with side effect"
+;  V22 cse0         [V22,T14] (  3,  4   )   byref  ->  r14         "CSE #04: moderate"
+;  V23 cse1         [V23,T19] (  3,  3   )     int  ->  rdi         "CSE #01: moderate"
+;  V24 rat0         [V24,T00] ( 10, 26.50)    long  ->  r12         "Widened IV V03"
+;  V25 rat1         [V25,T13] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
+;  V26 rat2         [V26,T15] (  3,  4   )    long  ->  rsi         "runtime lookup"
+;  V27 rat3         [V27,T12] (  3,  5.60)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 24
 
 G_M16044_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 24
        lea      rbp, [rsp+0x40]
        mov      qword ptr [rbp-0x30], rdi
        mov      rbx, rdi
        mov      r15, rsi
 						;; size=29 bbWeight=1 PerfScore 8.25
 G_M16044_IG02:
        mov      rdi, qword ptr [rbx]
        mov      rsi, qword ptr [rdi+0x30]
        mov      rsi, qword ptr [rsi+0x18]
-       mov      r14, qword ptr [rsi+0x10]
-       test     r14, r14
+       mov      rsi, qword ptr [rsi+0x10]
+       test     rsi, rsi
        je       G_M16044_IG08
 						;; size=24 bbWeight=1 PerfScore 9.25
 G_M16044_IG03:
-       mov      rdi, r14
-       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       call     [rax]System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       mov      rdi, rax
+       mov      rdi, rsi
+       call     CORINFO_HELP_GET_GCSTATIC_BASE
+       mov      r14, rax
+       mov      rdi, gword ptr [r14]
        mov      rsi, r15
-       mov      rax, qword ptr [rax]
+       mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.Collections.Generic.EqualityComparer`1[System.__Canon]:GetHashCode(System.__Canon):int:this
        mov      r13d, eax
        lea      rdi, bword ptr [rbx+0x20]
-       mov      rax, gword ptr [rdi]
-       mov      ecx, r13d
-       imul     rcx, qword ptr [rdi+0x10]
-       shr      rcx, 32
-       inc      rcx
-       mov      edi, dword ptr [rax+0x08]
-       mov      edx, edi
-       imul     rcx, rdx
-       shr      rcx, 32
-       cmp      ecx, edi
+       mov      rdx, gword ptr [rdi]
+       mov      esi, r13d
+       imul     rsi, qword ptr [rdi+0x10]
+       shr      rsi, 32
+       inc      rsi
+       mov      edi, dword ptr [rdx+0x08]
+       mov      eax, edi
+       imul     rsi, rax
+       shr      rsi, 32
+       cmp      esi, edi
        jae      G_M16044_IG12
-       mov      edi, ecx
-       lea      rdi, bword ptr [rax+8*rdi+0x10]
+       mov      edi, esi
+       lea      rdi, bword ptr [rdx+8*rdi+0x10]
        mov      eax, dword ptr [rdi]
        mov      r12d, eax
        mov      eax, dword ptr [rdi+0x04]
        mov      dword ptr [rbp-0x34], eax
        cmp      r12d, eax
-       jg       G_M16044_IG10
-						;; size=104 bbWeight=1 PerfScore 33.50
+       jg       SHORT G_M16044_IG10
+						;; size=96 bbWeight=1 PerfScore 33.25
 G_M16044_IG04:
        mov      rdi, gword ptr [rbx+0x28]
        cmp      r12d, dword ptr [rdi+0x08]
-       jae      G_M16044_IG12
+       jae      SHORT G_M16044_IG12
        cmp      dword ptr [rdi+4*r12+0x10], r13d
        jne      SHORT G_M16044_IG09
-						;; size=21 bbWeight=4 PerfScore 40.00
+						;; size=17 bbWeight=4 PerfScore 40.00
 G_M16044_IG05:
-       mov      rdi, r14
-       mov      rcx, 0xD1FFAB1E      ; code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       call     [rcx]System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       mov      rdi, gword ptr [rbx+0x18]
-       cmp      r12d, dword ptr [rdi+0x08]
+       mov      rdi, gword ptr [r14]
+       mov      rdx, gword ptr [rbx+0x18]
+       cmp      r12d, dword ptr [rdx+0x08]
        jae      SHORT G_M16044_IG12
-       mov      rdx, gword ptr [rdi+8*r12+0x10]
-       mov      rdi, rax
+       mov      rdx, gword ptr [rdx+8*r12+0x10]
        mov      rsi, r15
-       mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+0x40]
-       call     [rax+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
+       mov      rcx, qword ptr [rdi]
+       mov      rcx, qword ptr [rcx+0x40]
+       call     [rcx+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
        test     eax, eax
        je       SHORT G_M16044_IG09
-						;; size=50 bbWeight=2 PerfScore 40.50
+						;; size=35 bbWeight=2 PerfScore 37.00
 G_M16044_IG06:
        mov      eax, r12d
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M16044_IG07:
        add      rsp, 24
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M16044_IG08:
        mov      rsi, 0xD1FFAB1E      ; global ptr
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
        call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       mov      r14, rax
+       mov      rsi, rax
        jmp      G_M16044_IG03
 						;; size=30 bbWeight=0.20 PerfScore 1.15
 G_M16044_IG09:
        inc      r12d
        mov      eax, dword ptr [rbp-0x34]
        cmp      r12d, eax
-       jle      G_M16044_IG04
-						;; size=15 bbWeight=4 PerfScore 10.00
+       jle      SHORT G_M16044_IG04
+						;; size=11 bbWeight=4 PerfScore 10.00
 G_M16044_IG10:
        mov      eax, -1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
 G_M16044_IG11:
        add      rsp, 24
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M16044_IG12:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 317, prolog size 29, PerfScore 147.15, instruction count 94, allocated bytes for code 317 (MethodHash=3d76c153) for method System.Collections.Frozen.ValueTypeDefaultComparerFrozenSet`1[System.__Canon]:FindItemIndex(System.__Canon):int:this (FullOpts)
+; Total bytes of code 286, prolog size 29, PerfScore 143.40, instruction count 91, allocated bytes for code 286 (MethodHash=3d76c153) for method System.Collections.Frozen.ValueTypeDefaultComparerFrozenSet`1[System.__Canon]:FindItemIndex(System.__Canon):int:this (FullOpts)
 ; ============================================================
-29 (-9.54 % of base) - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int
 ; Assembly listing for method System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (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; 3 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 TypeCtx      [V00,T11] (  5,  3.30)    long  ->  rdi         single-def
 ;  V01 arg0         [V01,T07] (  3,  6   )   byref  ->  r15         single-def
 ;  V02 arg1         [V02,T08] (  3,  6   )     ref  ->  r14         class-hnd single-def <System.__Canon>
 ;  V03 arg2         [V03,T09] (  3,  4   )     ref  ->  r13         class-hnd single-def <System.__Canon>
 ;  V04 arg3         [V04,T10] (  3,  4   )     ref  ->  r12         class-hnd single-def <System.__Canon>
-;  V05 arg4         [V05,T05] (  4,  7   )     int  ->  rbx         single-def
+;  V05 arg4         [V05,T06] (  4,  7   )     int  ->  rbx         single-def
 ;  V06 loc0         [V06,T01] (  6, 17.50)     int  ->  [rbp-0x34] 
 ;  V07 loc1         [V07,T02] (  4, 12   )   byref  ->  [rbp-0x48]  spill-single-def
 ;# V08 OutArgs      [V08    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V09 tmp1         [V09    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V10 tmp2         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V11 tmp3         [V11    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V12 tmp4         [V12,T00] (  3, 24   )     ref  ->  rax         "argument with side effect"
-;  V13 tmp5         [V13,T03] (  3, 12   )     ref  ->  rax         "argument with side effect"
-;  V14 tmp6         [V14,T04] (  3, 12   )     ref  ->  rax         "argument with side effect"
-;  V15 cse0         [V15,T06] (  4,  8.25)    long  ->  [rbp-0x40]  spill-single-def hoist "CSE #01: aggressive"
-;  V16 rat0         [V16,T13] (  3,  1   )    long  ->  rcx         "runtime lookup"
-;  V17 rat1         [V17,T12] (  3,  1.40)    long  ->  rcx         "fgMakeTemp is creating a new local variable"
+;* V12 tmp4         [V12    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V13 tmp5         [V13    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V14 tmp6         [V14    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V15 tmp7         [V15,T00] (  3, 24   )     ref  ->  rdi         "argument with side effect"
+;  V16 tmp8         [V16,T04] (  3, 12   )     ref  ->  rdi         "argument with side effect"
+;  V17 tmp9         [V17,T05] (  3, 12   )     ref  ->  rdi         "argument with side effect"
+;  V18 cse0         [V18,T03] (  4, 12   )   byref  ->  [rbp-0x50]  spill-single-def "CSE #02: aggressive"
+;  V19 cse1         [V19,T12] (  2,  4.25)    long  ->  [rbp-0x40]  spill-single-def hoist "CSE #01: moderate"
+;  V20 rat0         [V20,T14] (  3,  1   )    long  ->  rcx         "runtime lookup"
+;  V21 rat1         [V21,T13] (  3,  1.40)    long  ->  rcx         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 40
 
 G_M44859_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 40
        lea      rbp, [rsp+0x50]
        mov      qword ptr [rbp-0x30], rdi
        mov      r15, rsi
        mov      r14, rdx
        mov      r13, rcx
        mov      r12, r8
        mov      ebx, r9d
 						;; size=38 bbWeight=1 PerfScore 9.00
 G_M44859_IG02:
        xor      eax, eax
        mov      dword ptr [rbp-0x34], eax
        test     ebx, ebx
        jle      G_M44859_IG11
 						;; size=13 bbWeight=1 PerfScore 2.50
 G_M44859_IG03:
        mov      rsi, qword ptr [rdi+0x18]
        mov      rcx, qword ptr [rsi+0x10]
        test     rcx, rcx
        je       G_M44859_IG09
 						;; size=17 bbWeight=0.25 PerfScore 1.31
 G_M44859_IG04:
        mov      qword ptr [rbp-0x40], rcx
 						;; size=4 bbWeight=0.25 PerfScore 0.25
 G_M44859_IG05:
        movsxd   rdi, dword ptr [rbp-0x34]
        lea      rdx, bword ptr [r15+8*rdi]
        mov      bword ptr [rbp-0x48], rdx
        mov      rdi, rcx
-       mov      rsi, 0xD1FFAB1E      ; code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       call     [rsi]System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       mov      rdi, rax
+       call     CORINFO_HELP_GET_GCSTATIC_BASE
+       mov      bword ptr [rbp-0x50], rax
+       mov      rdi, gword ptr [rax]
        mov      rcx, bword ptr [rbp-0x48]
        mov      rsi, gword ptr [rcx]
        mov      rdx, r14
-       mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+0x40]
-       call     [rax+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
+       mov      r8, qword ptr [rdi]
+       mov      r8, qword ptr [r8+0x40]
+       call     [r8+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
        test     eax, eax
-       jne      G_M44859_IG10
-						;; size=58 bbWeight=4 PerfScore 79.00
+       jne      SHORT G_M44859_IG10
+						;; size=52 bbWeight=4 PerfScore 81.00
 G_M44859_IG06:
-       mov      rdi, qword ptr [rbp-0x40]
-       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       call     [rax]System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       mov      rdi, rax
+       mov      rax, bword ptr [rbp-0x50]
+       mov      rdi, gword ptr [rax]
        mov      rcx, bword ptr [rbp-0x48]
        mov      rsi, gword ptr [rcx]
        mov      rdx, r13
-       mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+0x40]
-       call     [rax+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
+       mov      r8, qword ptr [rdi]
+       mov      r8, qword ptr [r8+0x40]
+       call     [r8+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
        test     eax, eax
        jne      SHORT G_M44859_IG10
-       mov      rdi, qword ptr [rbp-0x40]
-       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       call     [rax]System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       mov      rdi, rax
+       mov      rdi, bword ptr [rbp-0x50]
+       mov      rdi, gword ptr [rdi]
        mov      rsi, bword ptr [rbp-0x48]
        mov      rsi, gword ptr [rsi]
        mov      rdx, r12
-       mov      rax, qword ptr [rax]
+       mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
        test     eax, eax
        jne      SHORT G_M44859_IG10
-						;; size=86 bbWeight=2 PerfScore 64.00
+						;; size=63 bbWeight=2 PerfScore 58.00
 G_M44859_IG07:
        mov      eax, dword ptr [rbp-0x34]
 						;; size=3 bbWeight=0.50 PerfScore 0.50
 G_M44859_IG08:
        add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M44859_IG09:
        mov      rsi, 0xD1FFAB1E      ; global ptr
        mov      rcx, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
        call     [rcx]CORINFO_HELP_RUNTIMEHANDLE_METHOD
        mov      rcx, rax
        jmp      G_M44859_IG04
 						;; size=30 bbWeight=0.05 PerfScore 0.29
 G_M44859_IG10:
        mov      eax, dword ptr [rbp-0x34]
        inc      eax
        cmp      eax, ebx
        mov      dword ptr [rbp-0x34], eax
        mov      rcx, qword ptr [rbp-0x40]
        jl       G_M44859_IG05
 						;; size=20 bbWeight=4 PerfScore 18.00
 G_M44859_IG11:
        mov      eax, -1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
 G_M44859_IG12:
        add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 
-; Total bytes of code 304, prolog size 23, PerfScore 179.22, instruction count 91, allocated bytes for code 304 (MethodHash=3cab50c4) for method System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
+; Total bytes of code 275, prolog size 23, PerfScore 175.22, instruction count 87, allocated bytes for code 275 (MethodHash=3cab50c4) for method System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
 ; ============================================================
-29 (-10.00 % of base) - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int
 ; Assembly listing for method System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (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; 3 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 TypeCtx      [V00,T10] (  5,  3.30)    long  ->  rdi         single-def
 ;  V01 arg0         [V01,T06] (  3,  6   )   byref  ->  rbx         single-def
 ;  V02 arg1         [V02,T07] (  3,  6   )     ref  ->  r15         class-hnd single-def <System.__Canon>
 ;  V03 arg2         [V03,T08] (  3,  4   )     ref  ->  r14         class-hnd single-def <System.__Canon>
 ;  V04 arg3         [V04,T09] (  3,  4   )     ref  ->  r13         class-hnd single-def <System.__Canon>
 ;  V05 arg4         [V05,T11] (  3,  3   )     int  ->   r9         single-def
 ;  V06 loc0         [V06,T01] (  7, 18.50)     int  ->  r12        
 ;  V07 loc1         [V07,T02] (  4, 12   )   byref  ->  [rbp-0x40]  spill-single-def
 ;# V08 OutArgs      [V08    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V09 tmp1         [V09    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V10 tmp2         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V11 tmp3         [V11    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V12 tmp4         [V12,T00] (  3, 24   )     ref  ->  rax         "argument with side effect"
-;  V13 tmp5         [V13,T03] (  3, 12   )     ref  ->  rax         "argument with side effect"
-;  V14 tmp6         [V14,T04] (  3, 12   )     ref  ->  rax         "argument with side effect"
-;  V15 cse0         [V15,T05] (  4,  8.25)    long  ->  [rbp-0x38]  spill-single-def hoist "CSE #01: aggressive"
-;  V16 rat0         [V16,T13] (  3,  1   )    long  ->  rax         "runtime lookup"
-;  V17 rat1         [V17,T12] (  3,  1.40)    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;* V12 tmp4         [V12    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V13 tmp5         [V13    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V14 tmp6         [V14    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V15 tmp7         [V15,T00] (  3, 24   )     ref  ->  rdi         "argument with side effect"
+;  V16 tmp8         [V16,T04] (  3, 12   )     ref  ->  rdi         "argument with side effect"
+;  V17 tmp9         [V17,T05] (  3, 12   )     ref  ->  rdi         "argument with side effect"
+;  V18 cse0         [V18,T03] (  4, 12   )   byref  ->  [rbp-0x48]  spill-single-def "CSE #02: aggressive"
+;  V19 cse1         [V19,T12] (  2,  4.25)    long  ->  [rbp-0x38]  spill-single-def hoist "CSE #01: moderate"
+;  V20 rat0         [V20,T14] (  3,  1   )    long  ->  rax         "runtime lookup"
+;  V21 rat1         [V21,T13] (  3,  1.40)    long  ->  rax         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 24
+; Lcl frame size = 40
 
 G_M41329_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 24
-       lea      rbp, [rsp+0x40]
+       sub      rsp, 40
+       lea      rbp, [rsp+0x50]
        mov      qword ptr [rbp-0x30], rdi
        mov      rbx, rsi
        mov      r15, rdx
        mov      r14, rcx
        mov      r13, r8
 						;; size=35 bbWeight=1 PerfScore 8.75
 G_M41329_IG02:
        lea      r12d, [r9-0x01]
        test     r12d, r12d
        jl       G_M41329_IG11
 						;; size=13 bbWeight=1 PerfScore 1.75
 G_M41329_IG03:
        mov      rsi, qword ptr [rdi+0x18]
        mov      rax, qword ptr [rsi+0x10]
        test     rax, rax
        je       G_M41329_IG09
 						;; size=17 bbWeight=0.25 PerfScore 1.31
 G_M41329_IG04:
        mov      qword ptr [rbp-0x38], rax
 						;; size=4 bbWeight=0.25 PerfScore 0.25
 G_M41329_IG05:
        movsxd   rdi, r12d
        lea      rcx, bword ptr [rbx+8*rdi]
        mov      bword ptr [rbp-0x40], rcx
        mov      rdi, rax
-       mov      rdx, 0xD1FFAB1E      ; code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       call     [rdx]System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       mov      rdi, rax
+       call     CORINFO_HELP_GET_GCSTATIC_BASE
+       mov      bword ptr [rbp-0x48], rax
+       mov      rdi, gword ptr [rax]
        mov      rcx, bword ptr [rbp-0x40]
        mov      rsi, gword ptr [rcx]
        mov      rdx, r15
-       mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+0x40]
-       call     [rax+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
+       mov      r8, qword ptr [rdi]
+       mov      r8, qword ptr [r8+0x40]
+       call     [r8+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
        test     eax, eax
-       jne      G_M41329_IG10
-						;; size=57 bbWeight=4 PerfScore 68.00
+       jne      SHORT G_M41329_IG10
+						;; size=51 bbWeight=4 PerfScore 70.00
 G_M41329_IG06:
-       mov      rdi, qword ptr [rbp-0x38]
-       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       call     [rax]System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       mov      rdi, rax
+       mov      rax, bword ptr [rbp-0x48]
+       mov      rdi, gword ptr [rax]
        mov      rcx, bword ptr [rbp-0x40]
        mov      rsi, gword ptr [rcx]
        mov      rdx, r14
-       mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+0x40]
-       call     [rax+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
+       mov      r8, qword ptr [rdi]
+       mov      r8, qword ptr [r8+0x40]
+       call     [r8+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
        test     eax, eax
        jne      SHORT G_M41329_IG10
-       mov      rdi, qword ptr [rbp-0x38]
-       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       call     [rax]System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
-       mov      rdi, rax
+       mov      rdi, bword ptr [rbp-0x48]
+       mov      rdi, gword ptr [rdi]
        mov      rsi, bword ptr [rbp-0x40]
        mov      rsi, gword ptr [rsi]
        mov      rdx, r13
-       mov      rax, qword ptr [rax]
+       mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
        test     eax, eax
        jne      SHORT G_M41329_IG10
-						;; size=86 bbWeight=2 PerfScore 64.00
+						;; size=63 bbWeight=2 PerfScore 58.00
 G_M41329_IG07:
        mov      eax, r12d
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M41329_IG08:
-       add      rsp, 24
+       add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M41329_IG09:
        mov      rsi, 0xD1FFAB1E      ; global ptr
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_METHOD
        call     [rax]CORINFO_HELP_RUNTIMEHANDLE_METHOD
        jmp      G_M41329_IG04
 						;; size=27 bbWeight=0.05 PerfScore 0.28
 G_M41329_IG10:
        dec      r12d
        mov      rax, qword ptr [rbp-0x38]
        jns      G_M41329_IG05
 						;; size=13 bbWeight=4 PerfScore 9.00
 G_M41329_IG11:
        mov      eax, -1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
 G_M41329_IG12:
-       add      rsp, 24
+       add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 
-; Total bytes of code 290, prolog size 23, PerfScore 157.84, instruction count 85, allocated bytes for code 290 (MethodHash=2fc85e8e) for method System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
+; Total bytes of code 261, prolog size 23, PerfScore 153.84, instruction count 81, allocated bytes for code 261 (MethodHash=2fc85e8e) for method System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
 ; ============================================================
-25 (-14.12 % of base) - System.Collections.Immutable.ImmutableQueue`1[System.__Canon]:.cctor()
 ; Assembly listing for method System.Collections.Immutable.ImmutableQueue`1[System.__Canon]:.cctor() (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; 2 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 TypeCtx      [V00,T00] (  7,  6.20)    long  ->  rbx         single-def
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1         [V02,T08] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V03 tmp2         [V03,T02] (  3,  6   )    long  ->  r15         "spilling helperCall"
-;  V04 tmp3         [V04,T05] (  2,  4   )     ref  ->  r14         class-hnd exact single-def "impAppendStmt" <System.Collections.Immutable.ImmutableStack`1[System.__Canon]>
+;* V02 tmp1         [V02    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;  V03 tmp2         [V03,T06] (  2,  4   )    long  ->  rdi         "spilling helperCall"
+;  V04 tmp3         [V04,T04] (  2,  4   )     ref  ->  r14         class-hnd exact single-def "impAppendStmt" <System.Collections.Immutable.ImmutableStack`1[System.__Canon]>
 ;  V05 tmp4         [V05,T01] (  4,  8   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableQueue`1[System.__Canon]>
-;  V06 tmp5         [V06,T06] (  2,  4   )     ref  ->  r15         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableStack`1[System.__Canon]>
-;  V07 cse0         [V07,T07] (  2,  2   )    long  ->  r15         "CSE #01: aggressive"
-;  V08 rat0         [V08,T04] (  3,  4   )    long  ->  r15         "runtime lookup"
-;  V09 rat1         [V09,T03] (  3,  5.60)    long  ->  r15         "fgMakeTemp is creating a new local variable"
+;* V06 tmp5         [V06,T09] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V07 tmp6         [V07    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V08 tmp7         [V08,T05] (  2,  4   )     ref  ->  r15         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableStack`1[System.__Canon]>
+;  V09 cse0         [V09,T08] (  2,  2   )    long  ->  rdi         "CSE #01: aggressive"
+;  V10 cse1         [V10,T07] (  3,  3   )   byref  ->  r15         "CSE #02: aggressive"
+;  V11 rat0         [V11,T03] (  3,  4   )    long  ->  rdi         "runtime lookup"
+;  V12 rat1         [V12,T02] (  3,  5.60)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 16
 
 G_M33448_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        sub      rsp, 16
        lea      rbp, [rsp+0x30]
        mov      qword ptr [rbp-0x28], rdi
        mov      rbx, rdi
 						;; size=24 bbWeight=1 PerfScore 7.00
 G_M33448_IG02:
        mov      rdi, qword ptr [rbx+0x30]
        mov      rdi, qword ptr [rdi]
-       mov      r15, qword ptr [rdi+0x10]
-       test     r15, r15
+       mov      rdi, qword ptr [rdi+0x10]
+       test     rdi, rdi
        je       SHORT G_M33448_IG05
 						;; size=16 bbWeight=1 PerfScore 7.25
 G_M33448_IG03:
-       mov      rdi, r15
-       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableStack`1[System.__Canon]:get_Empty():System.Collections.Immutable.ImmutableStack`1[System.__Canon]
-       call     [rax]System.Collections.Immutable.ImmutableStack`1[System.__Canon]:get_Empty():System.Collections.Immutable.ImmutableStack`1[System.__Canon]
-       mov      r14, rax
+       call     CORINFO_HELP_GET_GCSTATIC_BASE
+       mov      r15, rax
+       mov      r14, gword ptr [r15]
        mov      rdi, rbx
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
-       mov      rdi, r15
-       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableStack`1[System.__Canon]:get_Empty():System.Collections.Immutable.ImmutableStack`1[System.__Canon]
-       call     [rax]System.Collections.Immutable.ImmutableStack`1[System.__Canon]:get_Empty():System.Collections.Immutable.ImmutableStack`1[System.__Canon]
-       mov      r15, rax
+       mov      r15, gword ptr [r15]
        lea      rdi, bword ptr [r13+0x10]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [r13+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, rbx
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        mov      rdi, rax
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        nop      
-						;; size=91 bbWeight=1 PerfScore 15.50
+						;; size=69 bbWeight=1 PerfScore 13.25
 G_M33448_IG04:
        add      rsp, 16
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=13 bbWeight=1 PerfScore 3.75
 G_M33448_IG05:
        mov      rdi, rbx
        mov      rsi, 0xD1FFAB1E      ; global ptr
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
        call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       mov      r15, rax
-       jmp      G_M33448_IG03
-						;; size=33 bbWeight=0.20 PerfScore 1.20
+       mov      rdi, rax
+       jmp      SHORT G_M33448_IG03
+						;; size=30 bbWeight=0.20 PerfScore 1.20
 
-; Total bytes of code 177, prolog size 21, PerfScore 34.70, instruction count 50, allocated bytes for code 177 (MethodHash=54ae7d57) for method System.Collections.Immutable.ImmutableQueue`1[System.__Canon]:.cctor() (FullOpts)
+; Total bytes of code 152, prolog size 21, PerfScore 32.45, instruction count 46, allocated bytes for code 152 (MethodHash=54ae7d57) for method System.Collections.Immutable.ImmutableQueue`1[System.__Canon]:.cctor() (FullOpts)
 ; ============================================================

Note: some changes were skipped as they were too large to fit into a comment.

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

@MihuBot
Copy link
Owner Author

MihuBot commented Oct 26, 2024

@AndyAyersMS

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