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

[MichalPetryka] Unify Default Comparer logic #73

Open
MihuBot opened this issue Jul 3, 2023 · 3 comments
Open

[MichalPetryka] Unify Default Comparer logic #73

MihuBot opened this issue Jul 3, 2023 · 3 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented Jul 3, 2023

Build completed in 2 hours 19 minutes.
dotnet/runtime#88006

CoreLib diffs

Found 2 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 6452667
Total bytes of diff: 6452880
Total bytes of delta: 213 (0.00 % of base)
Total relative delta: 2.67
    diff is a regression.
    relative diff is a regression.


Total byte diff includes -366 bytes from reconciling methods
	Base had    2 unique methods,      366 unique bytes
	Diff had    0 unique methods,        0 unique bytes

Top file regressions (bytes):
         213 : System.Private.CoreLib.dasm (0.00 % of base)

1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.

Top method regressions (bytes):
          84 (24.14 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
          67 (20.06 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
          50 (17.48 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
          49 (18.01 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
          38 (16.81 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,int):int (FullOpts)
          36 (16.67 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,int):int (FullOpts)
          23 (2.89 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSetEqualityComparer`1[System.__Canon]:Equals(System.Collections.Generic.HashSet`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):bool:this (FullOpts)
          23 (14.29 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:Equals(System.Threading.Tasks.ValueTask`1[System.__Canon]):bool:this (FullOpts)
          23 (16.43 % 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]):bool (FullOpts)
          23 (15.54 % 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]):bool (FullOpts)
          23 (18.11 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`1[System.__Canon]:Equals(System.Object):bool:this (FullOpts)
          23 (22.55 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`1[System.__Canon]:Equals(System.ValueTuple`1[System.__Canon]):bool:this (FullOpts)
          20 (3.43 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Remove(System.__Canon):bool:this (FullOpts)
          20 (8.16 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):int (FullOpts)
          18 (11.54 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,int):int (FullOpts)
          16 (10.67 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,int):int (FullOpts)
          16 (7.84 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):bool:this (FullOpts)
          16 (9.94 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:Equals(System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]):bool:this (FullOpts)
          10 (2.39 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultComparer(System.Type):System.Object (FullOpts)
          10 (4.72 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:Equals(System.Object):bool:this (FullOpts)
           3 (1.63 % of base) : System.Private.CoreLib.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
           2 (0.85 % of base) : System.Private.CoreLib.dasm - System.Array:LastIndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
           2 (2.25 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSetEqualityComparer`1[System.__Canon]:GetHashCode():int:this (FullOpts)
           2 (1.96 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`1[System.__Canon]:CompareTo(System.ValueTuple`1[System.__Canon]):int:this (FullOpts)
           2 (1.16 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`1[System.__Canon]:System.IComparable.CompareTo(System.Object):int:this (FullOpts)
           2 (1.14 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:CompareTo(System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]):int:this (FullOpts)
           2 (0.75 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:System.IComparable.CompareTo(System.Object):int:this (FullOpts)

Top method improvements (bytes):
        -183 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ComparerHelpers:TryCreateEnumComparer(System.RuntimeType):System.Object (FullOpts) (1 base, 0 diff methods)
        -183 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ComparerHelpers:TryCreateEnumEqualityComparer(System.RuntimeType):System.Object (FullOpts) (1 base, 0 diff methods)
         -24 (-4.79 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts)

Top method regressions (percentages):
          84 (24.14 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
          23 (22.55 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`1[System.__Canon]:Equals(System.ValueTuple`1[System.__Canon]):bool:this (FullOpts)
          67 (20.06 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
          23 (18.11 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`1[System.__Canon]:Equals(System.Object):bool:this (FullOpts)
          49 (18.01 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
          50 (17.48 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
          38 (16.81 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,int):int (FullOpts)
          36 (16.67 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,int):int (FullOpts)
          23 (16.43 % 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]):bool (FullOpts)
          23 (15.54 % 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]):bool (FullOpts)
          23 (14.29 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:Equals(System.Threading.Tasks.ValueTask`1[System.__Canon]):bool:this (FullOpts)
          18 (11.54 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,int):int (FullOpts)
          16 (10.67 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,int):int (FullOpts)
          16 (9.94 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:Equals(System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]):bool:this (FullOpts)
          20 (8.16 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):int (FullOpts)
          16 (7.84 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):bool:this (FullOpts)
          10 (4.72 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:Equals(System.Object):bool:this (FullOpts)
          20 (3.43 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Remove(System.__Canon):bool:this (FullOpts)
          23 (2.89 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSetEqualityComparer`1[System.__Canon]:Equals(System.Collections.Generic.HashSet`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):bool:this (FullOpts)
          10 (2.39 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultComparer(System.Type):System.Object (FullOpts)
           2 (2.25 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSetEqualityComparer`1[System.__Canon]:GetHashCode():int:this (FullOpts)
           2 (1.96 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`1[System.__Canon]:CompareTo(System.ValueTuple`1[System.__Canon]):int:this (FullOpts)
           3 (1.63 % of base) : System.Private.CoreLib.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
           2 (1.16 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`1[System.__Canon]:System.IComparable.CompareTo(System.Object):int:this (FullOpts)
           2 (1.14 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:CompareTo(System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]):int:this (FullOpts)
           2 (0.85 % of base) : System.Private.CoreLib.dasm - System.Array:LastIndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
           2 (0.75 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:System.IComparable.CompareTo(System.Object):int:this (FullOpts)

Top method improvements (percentages):
        -183 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ComparerHelpers:TryCreateEnumComparer(System.RuntimeType):System.Object (FullOpts) (1 base, 0 diff methods)
        -183 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ComparerHelpers:TryCreateEnumEqualityComparer(System.RuntimeType):System.Object (FullOpts) (1 base, 0 diff methods)
         -24 (-4.79 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts)

30 total methods with Code Size differences (3 improved, 27 regressed), 52365 unchanged.

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

Frameworks diffs

Diffs
Found 377 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 37841547
Total bytes of diff: 37843115
Total bytes of delta: 1568 (0.00 % of base)
Total relative delta: 11.84
    diff is a regression.
    relative diff is a regression.


Total byte diff includes -366 bytes from reconciling methods
	Base had    2 unique methods,      366 unique bytes
	Diff had    0 unique methods,        0 unique bytes

Top file regressions (bytes):
         609 : System.Collections.Immutable.dasm (0.03 % of base)
         249 : System.Composition.TypedParts.dasm (0.46 % of base)
         213 : System.Private.CoreLib.dasm (0.00 % of base)
         131 : System.Linq.Expressions.dasm (0.01 % of base)
         117 : Microsoft.NET.WebAssembly.Webcil.dasm (0.48 % of base)
          83 : System.Linq.Queryable.dasm (0.02 % of base)
          83 : System.Linq.dasm (0.01 % of base)
          39 : System.Text.RegularExpressions.dasm (0.01 % of base)
          32 : Microsoft.CSharp.dasm (0.01 % of base)
          12 : System.Collections.dasm (0.00 % of base)

10 total files with Code Size differences (0 improved, 10 regressed), 246 unchanged.

Top method regressions (bytes):
         260 (262.63 % 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)
         178 (156.14 % 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)
          84 (24.14 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
          74 (25.08 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.ValueTypeDefaultComparerFrozenSet`1[System.__Canon]:FindItemIndex(System.__Canon):int:this (FullOpts)
          70 (22.51 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.ValueTypeDefaultComparerFrozenDictionary`2[System.__Canon,System.Nullable`1[int]]:GetValueRefOrNullRefCore(System.__Canon):byref:this (FullOpts)
          67 (55.83 % of base) : System.Composition.TypedParts.dasm - <>f__AnonymousType0`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
          67 (55.83 % of base) : System.Linq.Queryable.dasm - <>f__AnonymousType0`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
          67 (55.83 % of base) : System.Composition.TypedParts.dasm - <>f__AnonymousType1`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
          67 (55.83 % of base) : System.Composition.TypedParts.dasm - <>f__AnonymousType2`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
          67 (20.06 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
          65 (19.64 % of base) : System.Linq.Expressions.dasm - System.Dynamic.Utils.CollectionExtensions:ListHashCode[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]):int (FullOpts)
          60 (23.26 % of base) : Microsoft.NET.WebAssembly.Webcil.dasm - Microsoft.NET.WebAssembly.Webcil.WebcilConverter+PEFileInfo:GetHashCode():int:this (FullOpts)
          57 (20.07 % of base) : Microsoft.NET.WebAssembly.Webcil.dasm - Microsoft.NET.WebAssembly.Webcil.WebcilConverter+WCFileInfo:GetHashCode():int:this (FullOpts)
          50 (17.48 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
          49 (18.01 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
          38 (16.81 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,int):int (FullOpts)
          36 (16.67 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,int):int (FullOpts)
          23 (2.89 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSetEqualityComparer`1[System.__Canon]:Equals(System.Collections.Generic.HashSet`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):bool:this (FullOpts)
          23 (8.52 % of base) : System.Linq.dasm - System.Linq.Enumerable+ListPartition`1[System.__Canon]:IndexOf(System.__Canon):int:this (FullOpts)
          23 (21.50 % of base) : System.Linq.dasm - System.Linq.Enumerable+RepeatIterator`1[System.__Canon]:Contains(System.__Canon):bool:this (FullOpts)
          23 (14.29 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:Equals(System.Threading.Tasks.ValueTask`1[System.__Canon]):bool:this (FullOpts)
          23 (16.43 % 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]):bool (FullOpts)
          23 (15.54 % 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]):bool (FullOpts)
          23 (18.11 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`1[System.__Canon]:Equals(System.Object):bool:this (FullOpts)
          23 (22.55 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`1[System.__Canon]:Equals(System.ValueTuple`1[System.__Canon]):bool:this (FullOpts)
          22 (7.75 % of base) : System.Linq.Expressions.dasm - System.Dynamic.Utils.CollectionExtensions:ListEquals[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon],System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]):bool (FullOpts)
          22 (6.98 % of base) : System.Linq.Expressions.dasm - System.Dynamic.Utils.Helpers:CommonNode[System.__Canon](System.__Canon,System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
          22 (18.18 % of base) : System.Linq.dasm - System.Linq.Enumerable+RepeatIterator`1[System.__Canon]:IndexOf(System.__Canon):int:this (FullOpts)
          22 (6.98 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.LabelInfo:CommonNode[System.__Canon](System.__Canon,System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
          20 (3.43 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Remove(System.__Canon):bool:this (FullOpts)
          20 (8.16 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):int (FullOpts)
          20 (14.49 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.CaptureCollection:System.Collections.Generic.IList<System.Text.RegularExpressions.Capture>.IndexOf(System.Text.RegularExpressions.Capture):int:this (FullOpts)
          19 (10.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.SmallValueTypeDefaultComparerFrozenSet`1[System.__Canon]:FindItemIndex(System.__Canon):int:this (FullOpts)
          19 (12.34 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.GroupCollection:System.Collections.Generic.IList<System.Text.RegularExpressions.Group>.IndexOf(System.Text.RegularExpressions.Group):int:this (FullOpts)
          18 (11.54 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,int):int (FullOpts)
          16 (7.37 % of base) : System.Composition.TypedParts.dasm - <>f__AnonymousType0`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):bool:this (FullOpts)
          16 (7.37 % of base) : System.Linq.Queryable.dasm - <>f__AnonymousType0`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):bool:this (FullOpts)
          16 (7.37 % of base) : System.Composition.TypedParts.dasm - <>f__AnonymousType1`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):bool:this (FullOpts)
          16 (7.37 % of base) : System.Composition.TypedParts.dasm - <>f__AnonymousType2`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):bool:this (FullOpts)
          16 (9.94 % 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]]):bool:this (FullOpts)
          16 (6.93 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):bool:this (FullOpts)
          16 (8.12 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.SmallValueTypeDefaultComparerFrozenDictionary`2[System.__Canon,System.Nullable`1[int]]:GetValueRefOrNullRefCore(System.__Canon):byref:this (FullOpts)
          16 (10.67 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,int):int (FullOpts)
          16 (7.84 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):bool:this (FullOpts)
          16 (9.94 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:Equals(System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]):bool:this (FullOpts)
          13 (1.80 % of base) : System.Linq.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):bool (FullOpts)
          10 (2.39 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultComparer(System.Type):System.Object (FullOpts)
          10 (4.72 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:Equals(System.Object):bool:this (FullOpts)
           5 (2.51 % of base) : System.Collections.dasm - System.Collections.Generic.LinkedList`1[System.__Canon]:Find(System.__Canon):System.Collections.Generic.LinkedListNode`1[System.__Canon]:this (FullOpts)
           5 (2.16 % of base) : System.Collections.dasm - System.Collections.Generic.LinkedList`1[System.__Canon]:FindLast(System.__Canon):System.Collections.Generic.LinkedListNode`1[System.__Canon]:this (FullOpts)
           4 (1.65 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.SmallValueTypeComparableFrozenDictionary`2[System.__Canon,System.Nullable`1[int]]:GetValueRefOrNullRefCore(System.__Canon):byref:this (FullOpts)
           4 (1.79 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.SmallValueTypeComparableFrozenSet`1[System.__Canon]:FindItemIndex(System.__Canon):int:this (FullOpts)
           3 (1.63 % of base) : System.Private.CoreLib.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
           2 (0.85 % of base) : System.Private.CoreLib.dasm - System.Array:LastIndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
           2 (2.25 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSetEqualityComparer`1[System.__Canon]:GetHashCode():int:this (FullOpts)
           2 (0.98 % of base) : System.Collections.dasm - System.Collections.StructuralComparer:Compare(System.Object,System.Object):int:this (FullOpts)
           2 (1.83 % of base) : System.Linq.dasm - System.Linq.OrderedImplicitlyStableEnumerable`1+<>c[System.__Canon]:<Sort>b__7_0(System.__Canon,System.__Canon):int:this (FullOpts)
           2 (1.96 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`1[System.__Canon]:CompareTo(System.ValueTuple`1[System.__Canon]):int:this (FullOpts)
           2 (1.16 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`1[System.__Canon]:System.IComparable.CompareTo(System.Object):int:this (FullOpts)
           2 (1.14 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:CompareTo(System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]):int:this (FullOpts)
           2 (0.75 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:System.IComparable.CompareTo(System.Object):int:this (FullOpts)

Top method improvements (bytes):
        -183 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ComparerHelpers:TryCreateEnumComparer(System.RuntimeType):System.Object (FullOpts) (1 base, 0 diff methods)
        -183 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ComparerHelpers:TryCreateEnumEqualityComparer(System.RuntimeType):System.Object (FullOpts) (1 base, 0 diff methods)
         -24 (-4.79 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts)
          -9 (-4.37 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[ubyte]:System.Collections.IList.Contains(System.Object):bool:this (FullOpts)
          -7 (-5.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[ubyte]:Contains(ubyte):bool:this (FullOpts)

Top method regressions (percentages):
         260 (262.63 % 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)
         178 (156.14 % 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)
          67 (55.83 % of base) : System.Composition.TypedParts.dasm - <>f__AnonymousType0`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
          67 (55.83 % of base) : System.Linq.Queryable.dasm - <>f__AnonymousType0`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
          67 (55.83 % of base) : System.Composition.TypedParts.dasm - <>f__AnonymousType1`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
          67 (55.83 % of base) : System.Composition.TypedParts.dasm - <>f__AnonymousType2`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
          74 (25.08 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.ValueTypeDefaultComparerFrozenSet`1[System.__Canon]:FindItemIndex(System.__Canon):int:this (FullOpts)
          84 (24.14 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
          60 (23.26 % of base) : Microsoft.NET.WebAssembly.Webcil.dasm - Microsoft.NET.WebAssembly.Webcil.WebcilConverter+PEFileInfo:GetHashCode():int:this (FullOpts)
          23 (22.55 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`1[System.__Canon]:Equals(System.ValueTuple`1[System.__Canon]):bool:this (FullOpts)
          70 (22.51 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.ValueTypeDefaultComparerFrozenDictionary`2[System.__Canon,System.Nullable`1[int]]:GetValueRefOrNullRefCore(System.__Canon):byref:this (FullOpts)
          23 (21.50 % of base) : System.Linq.dasm - System.Linq.Enumerable+RepeatIterator`1[System.__Canon]:Contains(System.__Canon):bool:this (FullOpts)
          57 (20.07 % of base) : Microsoft.NET.WebAssembly.Webcil.dasm - Microsoft.NET.WebAssembly.Webcil.WebcilConverter+WCFileInfo:GetHashCode():int:this (FullOpts)
          67 (20.06 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
          65 (19.64 % of base) : System.Linq.Expressions.dasm - System.Dynamic.Utils.CollectionExtensions:ListHashCode[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]):int (FullOpts)
          22 (18.18 % of base) : System.Linq.dasm - System.Linq.Enumerable+RepeatIterator`1[System.__Canon]:IndexOf(System.__Canon):int:this (FullOpts)
          23 (18.11 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`1[System.__Canon]:Equals(System.Object):bool:this (FullOpts)
          49 (18.01 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
          50 (17.48 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
          38 (16.81 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,int):int (FullOpts)
          36 (16.67 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,int):int (FullOpts)
          23 (16.43 % 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]):bool (FullOpts)
          23 (15.54 % 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]):bool (FullOpts)
          20 (14.49 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.CaptureCollection:System.Collections.Generic.IList<System.Text.RegularExpressions.Capture>.IndexOf(System.Text.RegularExpressions.Capture):int:this (FullOpts)
          23 (14.29 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:Equals(System.Threading.Tasks.ValueTask`1[System.__Canon]):bool:this (FullOpts)
          19 (12.34 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.GroupCollection:System.Collections.Generic.IList<System.Text.RegularExpressions.Group>.IndexOf(System.Text.RegularExpressions.Group):int:this (FullOpts)
          18 (11.54 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,int):int (FullOpts)
          16 (10.67 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,int):int (FullOpts)
          19 (10.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.SmallValueTypeDefaultComparerFrozenSet`1[System.__Canon]:FindItemIndex(System.__Canon):int:this (FullOpts)
          16 (9.94 % 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]]):bool:this (FullOpts)
          16 (9.94 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:Equals(System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]):bool:this (FullOpts)
          23 (8.52 % of base) : System.Linq.dasm - System.Linq.Enumerable+ListPartition`1[System.__Canon]:IndexOf(System.__Canon):int:this (FullOpts)
          20 (8.16 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):int (FullOpts)
          16 (8.12 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.SmallValueTypeDefaultComparerFrozenDictionary`2[System.__Canon,System.Nullable`1[int]]:GetValueRefOrNullRefCore(System.__Canon):byref:this (FullOpts)
          16 (7.84 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):bool:this (FullOpts)
          22 (7.75 % of base) : System.Linq.Expressions.dasm - System.Dynamic.Utils.CollectionExtensions:ListEquals[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon],System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]):bool (FullOpts)
          16 (7.37 % of base) : System.Composition.TypedParts.dasm - <>f__AnonymousType0`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):bool:this (FullOpts)
          16 (7.37 % of base) : System.Linq.Queryable.dasm - <>f__AnonymousType0`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):bool:this (FullOpts)
          16 (7.37 % of base) : System.Composition.TypedParts.dasm - <>f__AnonymousType1`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):bool:this (FullOpts)
          16 (7.37 % of base) : System.Composition.TypedParts.dasm - <>f__AnonymousType2`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):bool:this (FullOpts)
          22 (6.98 % of base) : System.Linq.Expressions.dasm - System.Dynamic.Utils.Helpers:CommonNode[System.__Canon](System.__Canon,System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
          22 (6.98 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.LabelInfo:CommonNode[System.__Canon](System.__Canon,System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
          16 (6.93 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):bool:this (FullOpts)
          10 (4.72 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:Equals(System.Object):bool:this (FullOpts)
          20 (3.43 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Remove(System.__Canon):bool:this (FullOpts)
          23 (2.89 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSetEqualityComparer`1[System.__Canon]:Equals(System.Collections.Generic.HashSet`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):bool:this (FullOpts)
           5 (2.51 % of base) : System.Collections.dasm - System.Collections.Generic.LinkedList`1[System.__Canon]:Find(System.__Canon):System.Collections.Generic.LinkedListNode`1[System.__Canon]:this (FullOpts)
          10 (2.39 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultComparer(System.Type):System.Object (FullOpts)
           2 (2.25 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSetEqualityComparer`1[System.__Canon]:GetHashCode():int:this (FullOpts)
           5 (2.16 % of base) : System.Collections.dasm - System.Collections.Generic.LinkedList`1[System.__Canon]:FindLast(System.__Canon):System.Collections.Generic.LinkedListNode`1[System.__Canon]:this (FullOpts)
           2 (1.96 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`1[System.__Canon]:CompareTo(System.ValueTuple`1[System.__Canon]):int:this (FullOpts)
           2 (1.83 % of base) : System.Linq.dasm - System.Linq.OrderedImplicitlyStableEnumerable`1+<>c[System.__Canon]:<Sort>b__7_0(System.__Canon,System.__Canon):int:this (FullOpts)
          13 (1.80 % of base) : System.Linq.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):bool (FullOpts)
           4 (1.79 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.SmallValueTypeComparableFrozenSet`1[System.__Canon]:FindItemIndex(System.__Canon):int:this (FullOpts)
           4 (1.65 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.SmallValueTypeComparableFrozenDictionary`2[System.__Canon,System.Nullable`1[int]]:GetValueRefOrNullRefCore(System.__Canon):byref:this (FullOpts)
           3 (1.63 % of base) : System.Private.CoreLib.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
           2 (1.16 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`1[System.__Canon]:System.IComparable.CompareTo(System.Object):int:this (FullOpts)
           2 (1.14 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:CompareTo(System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]):int:this (FullOpts)
           2 (0.98 % of base) : System.Collections.dasm - System.Collections.StructuralComparer:Compare(System.Object,System.Object):int:this (FullOpts)
           2 (0.85 % of base) : System.Private.CoreLib.dasm - System.Array:LastIndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
           2 (0.75 % of base) : System.Private.CoreLib.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:System.IComparable.CompareTo(System.Object):int:this (FullOpts)

Top method improvements (percentages):
        -183 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ComparerHelpers:TryCreateEnumComparer(System.RuntimeType):System.Object (FullOpts) (1 base, 0 diff methods)
        -183 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ComparerHelpers:TryCreateEnumEqualityComparer(System.RuntimeType):System.Object (FullOpts) (1 base, 0 diff methods)
          -7 (-5.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[ubyte]:Contains(ubyte):bool:this (FullOpts)
         -24 (-4.79 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts)
          -9 (-4.37 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[ubyte]:System.Collections.IList.Contains(System.Object):bool:this (FullOpts)

66 total methods with Code Size differences (5 improved, 61 regressed), 232863 unchanged.

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

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Jul 4, 2023

Top method regressions

84 (24.14 % 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; 0 single block inlinees; 4 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T09] (  5,  4.20)    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
-;  V03 arg2         [V03,T10] (  3,  4   )     ref  ->  r14         class-hnd single-def
-;  V04 arg3         [V04,T11] (  3,  4   )     ref  ->  r13         class-hnd single-def
-;  V05 arg4         [V05,T12] (  3,  4   )     ref  ->  r12         class-hnd single-def
-;  V06 arg5         [V06,T14] (  2,  5   )     int  ->  [rbp+10H]   single-def
-;  V07 loc0         [V07,T01] (  6, 17.50)     int  ->  [rbp-34H]  
-;  V08 loc1         [V08,T02] (  5, 14   )   byref  ->  [rbp-48H]   spill-single-def
+;  V00 TypeCtx      [V00,T16] (  5,  4.20)    long  ->  rdi         single-def
+;  V01 arg0         [V01,T15] (  3,  6   )   byref  ->  r12         single-def
+;  V02 arg1         [V02,T00] (  5, 22   )     ref  ->  rbx         class-hnd single-def
+;  V03 arg2         [V03,T01] (  5, 22   )     ref  ->  r15         class-hnd single-def
+;  V04 arg3         [V04,T02] (  5, 22   )     ref  ->  r14         class-hnd single-def
+;  V05 arg4         [V05,T03] (  5, 22   )     ref  ->  r13         class-hnd single-def
+;  V06 arg5         [V06,T18] (  2,  5   )     int  ->  [rbp+10H]   single-def
+;  V07 loc0         [V07,T05] (  6, 17.50)     int  ->  [rbp-34H]  
+;  V08 loc1         [V08,T09] (  5, 14   )   byref  ->  [rbp-48H]   spill-single-def
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [rsp+00H]   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, 11   )    long  ->  [rbp-40H]   spill-single-def "CSE - aggressive"
-;  V19 rat0         [V19,T15] (  3,  4   )    long  ->  registers   "runtime lookup"
-;  V20 rat1         [V20,T13] (  3,  5.60)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V14 tmp5         [V14,T10] (  2,  4   )    bool  ->  rax         "Inline return value spill temp"
+;  V15 tmp6         [V15,T04] (  4, 24   )     ref  ->  rdi         ld-addr-op class-hnd "Inlining Arg"
+;  V16 tmp7         [V16,T11] (  2,  4   )    bool  ->  rax         "Inline return value spill temp"
+;  V17 tmp8         [V17,T06] (  4, 16   )     ref  ->  rdi         ld-addr-op class-hnd "Inlining Arg"
+;  V18 tmp9         [V18,T12] (  2,  4   )    bool  ->  rax         "Inline return value spill temp"
+;  V19 tmp10        [V19,T07] (  4, 16   )     ref  ->  rdi         ld-addr-op class-hnd "Inlining Arg"
+;  V20 tmp11        [V20,T13] (  2,  4   )    bool  ->  rax         "Inline return value spill temp"
+;  V21 tmp12        [V21,T08] (  4, 16   )     ref  ->  rdi         ld-addr-op class-hnd "Inlining Arg"
+;  V22 cse0         [V22,T14] (  5, 11   )    long  ->  [rbp-40H]   spill-single-def "CSE - moderate"
+;  V23 rat0         [V23,T19] (  3,  4   )    long  ->  registers   "runtime lookup"
+;  V24 rat1         [V24,T17] (  3,  5.60)    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+50H]
        mov      qword ptr [rbp-30H], rdi
-       mov      rbx, rsi
-       mov      r15, rdx
-       mov      r14, rcx
-       mov      r13, r8
-       mov      r12, r9
+       mov      r12, rsi
+       mov      rbx, rdx
+       mov      r15, rcx
+       mov      r14, r8
+       mov      r13, r9
        mov      eax, dword ptr [rbp+10H]
 						;; size=41 bbWeight=1 PerfScore 10.00
 G_M17073_IG02:
        xor      ecx, ecx
        mov      dword ptr [rbp-34H], ecx
        mov      dword ptr [rbp+10H], eax
        test     eax, eax
-       jle      G_M17073_IG09
+       jle      G_M17073_IG26
        mov      rsi, qword ptr [rdi+10H]
        mov      rdx, qword ptr [rsi+10H]
        test     rdx, rdx
        je       SHORT G_M17073_IG04
 						;; size=29 bbWeight=1 PerfScore 8.75
 G_M17073_IG03:
        jmp      SHORT G_M17073_IG05
 						;; size=2 bbWeight=0.80 PerfScore 1.60
 G_M17073_IG04:
        mov      rsi, 0xD1FFAB1E      ; global ptr
        call     CORINFO_HELP_RUNTIMEHANDLE_METHOD
        mov      rdx, rax
 						;; size=18 bbWeight=0.20 PerfScore 0.30
 G_M17073_IG05:
        mov      qword ptr [rbp-40H], rdx
 						;; size=4 bbWeight=1 PerfScore 1.00
 G_M17073_IG06:
        movsxd   rdi, dword ptr [rbp-34H]
-       lea      rsi, bword ptr [rbx+8*rdi]
+       lea      rsi, bword ptr [r12+8*rdi]
        mov      bword ptr [rbp-48H], 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
-       mov      rcx, bword ptr [rbp-48H]
-       mov      rsi, gword ptr [rcx]
-       mov      rdx, r15
-       mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+40H]
-       call     [rax+20H]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this
-       test     eax, eax
-       jne      G_M17073_IG08
-						;; size=59 bbWeight=4 PerfScore 79.00
+       mov      rax, bword ptr [rbp-48H]
+       mov      rdi, gword ptr [rax]
+       test     rdi, rdi
+       je       SHORT G_M17073_IG08
+						;; size=40 bbWeight=4 PerfScore 49.00
 G_M17073_IG07:
+       test     rbx, rbx
+       je       SHORT G_M17073_IG11
+       mov      rsi, rbx
+       mov      rcx, qword ptr [rdi]
+       mov      rcx, qword ptr [rcx+40H]
+       call     [rcx+10H]System.Object:Equals(System.Object):bool:this
+       jmp      SHORT G_M17073_IG10
+						;; size=20 bbWeight=2 PerfScore 21.00
+G_M17073_IG08:
+       test     rbx, rbx
+       jne      SHORT G_M17073_IG11
+						;; size=5 bbWeight=16 PerfScore 20.00
+G_M17073_IG09:
+       jmp      G_M17073_IG25
+						;; size=5 bbWeight=2 PerfScore 4.00
+G_M17073_IG10:
+       test     eax, eax
+       jne      G_M17073_IG25
+						;; size=8 bbWeight=2 PerfScore 2.50
+G_M17073_IG11:
        mov      rdi, qword ptr [rbp-40H]
-       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      rcx, bword ptr [rbp-48H]
-       mov      rsi, gword ptr [rcx]
-       mov      rdx, r14
-       mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+40H]
-       call     [rax+20H]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this
+       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      rax, bword ptr [rbp-48H]
+       mov      rdi, gword ptr [rax]
+       test     rdi, rdi
+       je       SHORT G_M17073_IG12
+       test     r15, r15
+       je       SHORT G_M17073_IG15
+       mov      rsi, r15
+       mov      rcx, qword ptr [rdi]
+       mov      rcx, qword ptr [rcx+40H]
+       call     [rcx+10H]System.Object:Equals(System.Object):bool:this
+       jmp      SHORT G_M17073_IG14
+						;; size=48 bbWeight=2 PerfScore 38.00
+G_M17073_IG12:
+       test     r15, r15
+       jne      SHORT G_M17073_IG15
+						;; size=5 bbWeight=16 PerfScore 20.00
+G_M17073_IG13:
+       jmp      G_M17073_IG25
+						;; size=5 bbWeight=2 PerfScore 4.00
+G_M17073_IG14:
        test     eax, eax
-       jne      SHORT G_M17073_IG08
+       jne      G_M17073_IG25
+						;; size=8 bbWeight=2 PerfScore 2.50
+G_M17073_IG15:
        mov      rdi, qword ptr [rbp-40H]
-       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      rcx, bword ptr [rbp-48H]
-       mov      rsi, gword ptr [rcx]
-       mov      rdx, r13
-       mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+40H]
-       call     [rax+20H]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this
+       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      rax, bword ptr [rbp-48H]
+       mov      rdi, gword ptr [rax]
+       test     rdi, rdi
+       je       SHORT G_M17073_IG16
+       test     r14, r14
+       je       SHORT G_M17073_IG19
+       mov      rsi, r14
+       mov      rcx, qword ptr [rdi]
+       mov      rcx, qword ptr [rcx+40H]
+       call     [rcx+10H]System.Object:Equals(System.Object):bool:this
+       jmp      SHORT G_M17073_IG18
+						;; size=48 bbWeight=2 PerfScore 38.00
+G_M17073_IG16:
+       test     r14, r14
+       jne      SHORT G_M17073_IG19
+						;; size=5 bbWeight=16 PerfScore 20.00
+G_M17073_IG17:
+       jmp      SHORT G_M17073_IG25
+						;; size=2 bbWeight=2 PerfScore 4.00
+G_M17073_IG18:
        test     eax, eax
-       jne      SHORT G_M17073_IG08
+       jne      SHORT G_M17073_IG25
+						;; size=4 bbWeight=2 PerfScore 2.50
+G_M17073_IG19:
        mov      rdi, qword ptr [rbp-40H]
-       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      rsi, bword ptr [rbp-48H]
-       mov      rsi, gword ptr [rsi]
-       mov      rdx, r12
-       mov      rax, qword ptr [rax]
+       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, bword ptr [rbp-48H]
+       mov      rdi, gword ptr [rdi]
+       test     rdi, rdi
+       je       SHORT G_M17073_IG21
+       test     r13, r13
+       je       SHORT G_M17073_IG20
+       mov      rsi, r13
+       mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+40H]
-       call     [rax+20H]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this
+       call     [rax+10H]System.Object:Equals(System.Object):bool:this
+       jmp      SHORT G_M17073_IG24
+						;; size=48 bbWeight=2 PerfScore 38.00
+G_M17073_IG20:
+       mov      ecx, dword ptr [rbp-34H]
+       jmp      SHORT G_M17073_IG29
+						;; size=5 bbWeight=1 PerfScore 3.00
+G_M17073_IG21:
+       test     r13, r13
+       jne      SHORT G_M17073_IG23
+						;; size=5 bbWeight=16 PerfScore 20.00
+G_M17073_IG22:
+       jmp      SHORT G_M17073_IG25
+						;; size=2 bbWeight=2 PerfScore 4.00
+G_M17073_IG23:
+       mov      ecx, dword ptr [rbp-34H]
+       jmp      SHORT G_M17073_IG29
+						;; size=5 bbWeight=8 PerfScore 24.00
+G_M17073_IG24:
        test     eax, eax
-       je       SHORT G_M17073_IG11
-						;; size=129 bbWeight=2 PerfScore 96.00
-G_M17073_IG08:
+       je       SHORT G_M17073_IG28
+						;; size=4 bbWeight=2 PerfScore 2.50
+G_M17073_IG25:
        mov      ecx, dword ptr [rbp-34H]
        inc      ecx
        mov      eax, dword ptr [rbp+10H]
        cmp      ecx, eax
        mov      dword ptr [rbp-34H], ecx
        mov      dword ptr [rbp+10H], eax
        mov      rdx, qword ptr [rbp-40H]
        jl       G_M17073_IG06
 						;; size=26 bbWeight=4 PerfScore 26.00
-G_M17073_IG09:
+G_M17073_IG26:
        mov      eax, -1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M17073_IG10:
+G_M17073_IG27:
        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_IG11:
+G_M17073_IG28:
        mov      ecx, dword ptr [rbp-34H]
+						;; size=3 bbWeight=1 PerfScore 1.00
+G_M17073_IG29:
        mov      eax, ecx
-						;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M17073_IG12:
+						;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M17073_IG30:
        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 348, prolog size 23, PerfScore 262.45, instruction count 107, allocated bytes for code 348 (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 432, prolog size 23, PerfScore 413.35, instruction count 140, allocated bytes for code 432 (MethodHash=5d9ebd4e) for method System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
67 (20.06 % 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; 0 single block inlinees; 4 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T09] (  5,  4.20)    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
-;  V03 arg2         [V03,T10] (  3,  4   )     ref  ->  r14         class-hnd single-def
-;  V04 arg3         [V04,T11] (  3,  4   )     ref  ->  r13         class-hnd single-def
-;  V05 arg4         [V05,T12] (  3,  4   )     ref  ->  r12         class-hnd single-def
-;  V06 arg5         [V06,T15] (  1,  1   )     int  ->  [rbp+10H]   single-def
-;  V07 loc0         [V07,T01] (  7, 18.50)     int  ->  [rbp-34H]  
-;  V08 loc1         [V08,T02] (  5, 14   )   byref  ->  [rbp-48H]   spill-single-def
+;  V00 TypeCtx      [V00,T16] (  5,  4.20)    long  ->  rdi         single-def
+;  V01 arg0         [V01,T15] (  3,  6   )   byref  ->  r12         single-def
+;  V02 arg1         [V02,T00] (  5, 22   )     ref  ->  rbx         class-hnd single-def
+;  V03 arg2         [V03,T01] (  5, 22   )     ref  ->  r15         class-hnd single-def
+;  V04 arg3         [V04,T02] (  5, 22   )     ref  ->  r14         class-hnd single-def
+;  V05 arg4         [V05,T03] (  5, 22   )     ref  ->  r13         class-hnd single-def
+;  V06 arg5         [V06,T19] (  1,  1   )     int  ->  [rbp+10H]   single-def
+;  V07 loc0         [V07,T05] (  7, 18.50)     int  ->  [rbp-34H]  
+;  V08 loc1         [V08,T09] (  5, 14   )   byref  ->  [rbp-48H]   spill-single-def
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [rsp+00H]   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, 11   )    long  ->  [rbp-40H]   spill-single-def "CSE - aggressive"
-;  V19 rat0         [V19,T14] (  3,  4   )    long  ->  registers   "runtime lookup"
-;  V20 rat1         [V20,T13] (  3,  5.60)    long  ->  rcx         "fgMakeTemp is creating a new local variable"
+;  V14 tmp5         [V14,T10] (  2,  4   )    bool  ->  rax         "Inline return value spill temp"
+;  V15 tmp6         [V15,T04] (  4, 24   )     ref  ->  rdi         ld-addr-op class-hnd "Inlining Arg"
+;  V16 tmp7         [V16,T11] (  2,  4   )    bool  ->  rax         "Inline return value spill temp"
+;  V17 tmp8         [V17,T06] (  4, 16   )     ref  ->  rdi         ld-addr-op class-hnd "Inlining Arg"
+;  V18 tmp9         [V18,T12] (  2,  4   )    bool  ->  rax         "Inline return value spill temp"
+;  V19 tmp10        [V19,T07] (  4, 16   )     ref  ->  rdi         ld-addr-op class-hnd "Inlining Arg"
+;  V20 tmp11        [V20,T13] (  2,  4   )    bool  ->  rax         "Inline return value spill temp"
+;  V21 tmp12        [V21,T08] (  4, 16   )     ref  ->  rdi         ld-addr-op class-hnd "Inlining Arg"
+;  V22 cse0         [V22,T14] (  5, 11   )    long  ->  [rbp-40H]   spill-single-def "CSE - moderate"
+;  V23 rat0         [V23,T18] (  3,  4   )    long  ->  registers   "runtime lookup"
+;  V24 rat1         [V24,T17] (  3,  5.60)    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+50H]
        mov      qword ptr [rbp-30H], rdi
-       mov      rbx, rsi
-       mov      r15, rdx
-       mov      r14, rcx
-       mov      r13, r8
-       mov      r12, r9
+       mov      r12, rsi
+       mov      rbx, rdx
+       mov      r15, rcx
+       mov      r14, r8
+       mov      r13, r9
 						;; size=38 bbWeight=1 PerfScore 9.00
 G_M40251_IG02:
        mov      eax, dword ptr [rbp+10H]
        dec      eax
        mov      dword ptr [rbp-34H], eax
        test     eax, eax
-       jl       G_M40251_IG09
+       jl       G_M40251_IG24
        mov      rsi, qword ptr [rdi+10H]
        mov      rcx, qword ptr [rsi+10H]
        test     rcx, rcx
        je       SHORT G_M40251_IG04
 						;; size=29 bbWeight=1 PerfScore 8.75
 G_M40251_IG03:
        jmp      SHORT G_M40251_IG05
 						;; size=2 bbWeight=0.80 PerfScore 1.60
 G_M40251_IG04:
        mov      rsi, 0xD1FFAB1E      ; global ptr
        call     CORINFO_HELP_RUNTIMEHANDLE_METHOD
        mov      rcx, rax
 						;; size=18 bbWeight=0.20 PerfScore 0.30
 G_M40251_IG05:
        mov      qword ptr [rbp-40H], rcx
 						;; size=4 bbWeight=1 PerfScore 1.00
 G_M40251_IG06:
        movsxd   rdi, dword ptr [rbp-34H]
-       lea      rdx, bword ptr [rbx+8*rdi]
+       lea      rdx, bword ptr [r12+8*rdi]
        mov      bword ptr [rbp-48H], 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
-       mov      rcx, bword ptr [rbp-48H]
-       mov      rsi, gword ptr [rcx]
-       mov      rdx, r15
-       mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+40H]
-       call     [rax+20H]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this
-       test     eax, eax
-       jne      G_M40251_IG08
-						;; size=58 bbWeight=4 PerfScore 79.00
+       mov      rax, bword ptr [rbp-48H]
+       mov      rdi, gword ptr [rax]
+       test     rdi, rdi
+       je       SHORT G_M40251_IG08
+						;; size=39 bbWeight=4 PerfScore 49.00
 G_M40251_IG07:
+       test     rbx, rbx
+       je       SHORT G_M40251_IG11
+       mov      rsi, rbx
+       mov      rcx, qword ptr [rdi]
+       mov      rcx, qword ptr [rcx+40H]
+       call     [rcx+10H]System.Object:Equals(System.Object):bool:this
+       jmp      SHORT G_M40251_IG10
+						;; size=20 bbWeight=2 PerfScore 21.00
+G_M40251_IG08:
+       test     rbx, rbx
+       jne      SHORT G_M40251_IG11
+						;; size=5 bbWeight=16 PerfScore 20.00
+G_M40251_IG09:
+       jmp      G_M40251_IG23
+						;; size=5 bbWeight=2 PerfScore 4.00
+G_M40251_IG10:
+       test     eax, eax
+       jne      G_M40251_IG23
+						;; size=8 bbWeight=2 PerfScore 2.50
+G_M40251_IG11:
        mov      rdi, qword ptr [rbp-40H]
-       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      rcx, bword ptr [rbp-48H]
-       mov      rsi, gword ptr [rcx]
-       mov      rdx, r14
-       mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+40H]
-       call     [rax+20H]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this
+       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      rax, bword ptr [rbp-48H]
+       mov      rdi, gword ptr [rax]
+       test     rdi, rdi
+       je       SHORT G_M40251_IG12
+       test     r15, r15
+       je       SHORT G_M40251_IG15
+       mov      rsi, r15
+       mov      rcx, qword ptr [rdi]
+       mov      rcx, qword ptr [rcx+40H]
+       call     [rcx+10H]System.Object:Equals(System.Object):bool:this
+       jmp      SHORT G_M40251_IG14
+						;; size=48 bbWeight=2 PerfScore 38.00
+G_M40251_IG12:
+       test     r15, r15
+       jne      SHORT G_M40251_IG15
+						;; size=5 bbWeight=16 PerfScore 20.00
+G_M40251_IG13:
+       jmp      SHORT G_M40251_IG23
+						;; size=2 bbWeight=2 PerfScore 4.00
+G_M40251_IG14:
        test     eax, eax
-       jne      SHORT G_M40251_IG08
+       jne      SHORT G_M40251_IG23
+						;; size=4 bbWeight=2 PerfScore 2.50
+G_M40251_IG15:
        mov      rdi, qword ptr [rbp-40H]
-       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      rcx, bword ptr [rbp-48H]
-       mov      rsi, gword ptr [rcx]
-       mov      rdx, r13
-       mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+40H]
-       call     [rax+20H]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this
+       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      rax, bword ptr [rbp-48H]
+       mov      rdi, gword ptr [rax]
+       test     rdi, rdi
+       je       SHORT G_M40251_IG16
+       test     r14, r14
+       je       SHORT G_M40251_IG19
+       mov      rsi, r14
+       mov      rcx, qword ptr [rdi]
+       mov      rcx, qword ptr [rcx+40H]
+       call     [rcx+10H]System.Object:Equals(System.Object):bool:this
+       jmp      SHORT G_M40251_IG18
+						;; size=48 bbWeight=2 PerfScore 38.00
+G_M40251_IG16:
+       test     r14, r14
+       jne      SHORT G_M40251_IG19
+						;; size=5 bbWeight=16 PerfScore 20.00
+G_M40251_IG17:
+       jmp      SHORT G_M40251_IG23
+						;; size=2 bbWeight=2 PerfScore 4.00
+G_M40251_IG18:
        test     eax, eax
-       jne      SHORT G_M40251_IG08
+       jne      SHORT G_M40251_IG23
+						;; size=4 bbWeight=2 PerfScore 2.50
+G_M40251_IG19:
        mov      rdi, qword ptr [rbp-40H]
-       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      rsi, bword ptr [rbp-48H]
-       mov      rsi, gword ptr [rsi]
-       mov      rdx, r12
-       mov      rax, qword ptr [rax]
+       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, bword ptr [rbp-48H]
+       mov      rdi, gword ptr [rdi]
+       test     rdi, rdi
+       je       SHORT G_M40251_IG20
+       test     r13, r13
+       je       SHORT G_M40251_IG26
+       mov      rsi, r13
+       mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+40H]
-       call     [rax+20H]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this
+       call     [rax+10H]System.Object:Equals(System.Object):bool:this
+       jmp      SHORT G_M40251_IG22
+						;; size=48 bbWeight=2 PerfScore 38.00
+G_M40251_IG20:
+       test     r13, r13
+       jne      SHORT G_M40251_IG26
+						;; size=5 bbWeight=16 PerfScore 20.00
+G_M40251_IG21:
+       jmp      SHORT G_M40251_IG23
+						;; size=2 bbWeight=2 PerfScore 4.00
+G_M40251_IG22:
        test     eax, eax
-       je       SHORT G_M40251_IG11
-						;; size=129 bbWeight=2 PerfScore 96.00
-G_M40251_IG08:
+       je       SHORT G_M40251_IG26
+						;; size=4 bbWeight=2 PerfScore 2.50
+G_M40251_IG23:
        mov      eax, dword ptr [rbp-34H]
        dec      eax
        mov      dword ptr [rbp-34H], eax
        mov      rcx, qword ptr [rbp-40H]
        jns      G_M40251_IG06
 						;; size=18 bbWeight=4 PerfScore 17.00
-G_M40251_IG09:
+G_M40251_IG24:
        mov      eax, -1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M40251_IG10:
+G_M40251_IG25:
        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_IG11:
+G_M40251_IG26:
        mov      eax, dword ptr [rbp-34H]
 						;; size=3 bbWeight=0.50 PerfScore 0.50
-G_M40251_IG12:
+G_M40251_IG27:
        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 334, prolog size 23, PerfScore 250.93, instruction count 102, allocated bytes for code 334 (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 401, prolog size 23, PerfScore 372.63, instruction count 130, allocated bytes for code 401 (MethodHash=a15462c4) for method System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
50 (17.48 % 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; 0 single block inlinees; 3 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T09] (  5,  4.20)    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
-;  V03 arg2         [V03,T10] (  3,  4   )     ref  ->  r13         class-hnd single-def
-;  V04 arg3         [V04,T11] (  3,  4   )     ref  ->  r12         class-hnd single-def
-;  V05 arg4         [V05,T05] (  4,  7   )     int  ->  rbx         single-def
-;  V06 loc0         [V06,T01] (  6, 17.50)     int  ->  [rbp-34H]  
-;  V07 loc1         [V07,T02] (  4, 12   )   byref  ->  [rbp-48H]   spill-single-def
+;  V00 TypeCtx      [V00,T14] (  5,  4.20)    long  ->  rdi         single-def
+;  V01 arg0         [V01,T13] (  3,  6   )   byref  ->  r12         single-def
+;  V02 arg1         [V02,T00] (  5, 22   )     ref  ->  rbx         class-hnd single-def
+;  V03 arg2         [V03,T01] (  5, 22   )     ref  ->  r15         class-hnd single-def
+;  V04 arg3         [V04,T02] (  5, 22   )     ref  ->  r14         class-hnd single-def
+;  V05 arg4         [V05,T11] (  4,  7   )     int  ->  r13         single-def
+;  V06 loc0         [V06,T04] (  6, 17.50)     int  ->  [rbp-34H]  
+;  V07 loc1         [V07,T10] (  4, 12   )   byref  ->  [rbp-48H]   spill-single-def
 ;# V08 OutArgs      [V08    ] (  1,  1   )  struct ( 0) [rsp+00H]   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,  9   )    long  ->  [rbp-40H]   spill-single-def "CSE - aggressive"
-;  V16 rat0         [V16,T13] (  3,  4   )    long  ->  registers   "runtime lookup"
-;  V17 rat1         [V17,T12] (  3,  5.60)    long  ->  rcx         "fgMakeTemp is creating a new local variable"
+;  V12 tmp4         [V12,T07] (  2,  4   )    bool  ->  rax         "Inline return value spill temp"
+;  V13 tmp5         [V13,T03] (  4, 24   )     ref  ->  rdi         ld-addr-op class-hnd "Inlining Arg"
+;  V14 tmp6         [V14,T08] (  2,  4   )    bool  ->  rax         "Inline return value spill temp"
+;  V15 tmp7         [V15,T05] (  4, 16   )     ref  ->  rdi         ld-addr-op class-hnd "Inlining Arg"
+;  V16 tmp8         [V16,T09] (  2,  4   )    bool  ->  rax         "Inline return value spill temp"
+;  V17 tmp9         [V17,T06] (  4, 16   )     ref  ->  rdi         ld-addr-op class-hnd "Inlining Arg"
+;  V18 cse0         [V18,T12] (  4,  9   )    long  ->  [rbp-40H]   spill-single-def "CSE - moderate"
+;  V19 rat0         [V19,T16] (  3,  4   )    long  ->  registers   "runtime lookup"
+;  V20 rat1         [V20,T15] (  3,  5.60)    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+50H]
        mov      qword ptr [rbp-30H], rdi
-       mov      r15, rsi
-       mov      r14, rdx
-       mov      r13, rcx
-       mov      r12, r8
-       mov      ebx, r9d
+       mov      r12, rsi
+       mov      rbx, rdx
+       mov      r15, rcx
+       mov      r14, r8
+       mov      r13d, r9d
 						;; size=38 bbWeight=1 PerfScore 9.00
 G_M44859_IG02:
        xor      eax, eax
        mov      dword ptr [rbp-34H], eax
-       test     ebx, ebx
-       jle      G_M44859_IG09
+       test     r13d, r13d
+       jle      G_M44859_IG20
        mov      rsi, qword ptr [rdi+10H]
        mov      rcx, qword ptr [rsi+10H]
        test     rcx, rcx
        je       SHORT G_M44859_IG04
-						;; size=26 bbWeight=1 PerfScore 7.75
+						;; size=27 bbWeight=1 PerfScore 7.75
 G_M44859_IG03:
        jmp      SHORT G_M44859_IG05
 						;; size=2 bbWeight=0.80 PerfScore 1.60
 G_M44859_IG04:
        mov      rsi, 0xD1FFAB1E      ; global ptr
        call     CORINFO_HELP_RUNTIMEHANDLE_METHOD
        mov      rcx, rax
 						;; size=18 bbWeight=0.20 PerfScore 0.30
 G_M44859_IG05:
        mov      qword ptr [rbp-40H], rcx
 						;; size=4 bbWeight=1 PerfScore 1.00
 G_M44859_IG06:
        movsxd   rdi, dword ptr [rbp-34H]
-       lea      rdx, bword ptr [r15+8*rdi]
+       lea      rdx, bword ptr [r12+8*rdi]
        mov      bword ptr [rbp-48H], 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
-       mov      rcx, bword ptr [rbp-48H]
-       mov      rsi, gword ptr [rcx]
-       mov      rdx, r14
-       mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+40H]
-       call     [rax+20H]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this
-       test     eax, eax
-       jne      SHORT G_M44859_IG08
-						;; size=54 bbWeight=4 PerfScore 79.00
+       mov      rax, bword ptr [rbp-48H]
+       mov      rdi, gword ptr [rax]
+       test     rdi, rdi
+       je       SHORT G_M44859_IG08
+						;; size=39 bbWeight=4 PerfScore 49.00
 G_M44859_IG07:
+       test     rbx, rbx
+       je       SHORT G_M44859_IG11
+       mov      rsi, rbx
+       mov      rcx, qword ptr [rdi]
+       mov      rcx, qword ptr [rcx+40H]
+       call     [rcx+10H]System.Object:Equals(System.Object):bool:this
+       jmp      SHORT G_M44859_IG10
+						;; size=20 bbWeight=2 PerfScore 21.00
+G_M44859_IG08:
+       test     rbx, rbx
+       jne      SHORT G_M44859_IG11
+						;; size=5 bbWeight=16 PerfScore 20.00
+G_M44859_IG09:
+       jmp      SHORT G_M44859_IG19
+						;; size=2 bbWeight=2 PerfScore 4.00
+G_M44859_IG10:
+       test     eax, eax
+       jne      SHORT G_M44859_IG19
+						;; size=4 bbWeight=2 PerfScore 2.50
+G_M44859_IG11:
        mov      rdi, qword ptr [rbp-40H]
-       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      rcx, bword ptr [rbp-48H]
-       mov      rsi, gword ptr [rcx]
-       mov      rdx, r13
-       mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+40H]
-       call     [rax+20H]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this
+       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      rax, bword ptr [rbp-48H]
+       mov      rdi, gword ptr [rax]
+       test     rdi, rdi
+       je       SHORT G_M44859_IG12
+       test     r15, r15
+       je       SHORT G_M44859_IG15
+       mov      rsi, r15
+       mov      rcx, qword ptr [rdi]
+       mov      rcx, qword ptr [rcx+40H]
+       call     [rcx+10H]System.Object:Equals(System.Object):bool:this
+       jmp      SHORT G_M44859_IG14
+						;; size=48 bbWeight=2 PerfScore 38.00
+G_M44859_IG12:
+       test     r15, r15
+       jne      SHORT G_M44859_IG15
+						;; size=5 bbWeight=16 PerfScore 20.00
+G_M44859_IG13:
+       jmp      SHORT G_M44859_IG19
+						;; size=2 bbWeight=2 PerfScore 4.00
+G_M44859_IG14:
        test     eax, eax
-       jne      SHORT G_M44859_IG08
+       jne      SHORT G_M44859_IG19
+						;; size=4 bbWeight=2 PerfScore 2.50
+G_M44859_IG15:
        mov      rdi, qword ptr [rbp-40H]
-       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      rsi, bword ptr [rbp-48H]
-       mov      rsi, gword ptr [rsi]
-       mov      rdx, r12
-       mov      rax, qword ptr [rax]
+       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, bword ptr [rbp-48H]
+       mov      rdi, gword ptr [rdi]
+       test     rdi, rdi
+       je       SHORT G_M44859_IG16
+       test     r14, r14
+       je       SHORT G_M44859_IG22
+       mov      rsi, r14
+       mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+40H]
-       call     [rax+20H]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this
+       call     [rax+10H]System.Object:Equals(System.Object):bool:this
+       jmp      SHORT G_M44859_IG18
+						;; size=48 bbWeight=2 PerfScore 38.00
+G_M44859_IG16:
+       test     r14, r14
+       jne      SHORT G_M44859_IG22
+						;; size=5 bbWeight=16 PerfScore 20.00
+G_M44859_IG17:
+       jmp      SHORT G_M44859_IG19
+						;; size=2 bbWeight=2 PerfScore 4.00
+G_M44859_IG18:
        test     eax, eax
-       je       SHORT G_M44859_IG11
-						;; size=86 bbWeight=2 PerfScore 64.00
-G_M44859_IG08:
+       je       SHORT G_M44859_IG22
+						;; size=4 bbWeight=2 PerfScore 2.50
+G_M44859_IG19:
        mov      eax, dword ptr [rbp-34H]
        inc      eax
-       cmp      eax, ebx
+       cmp      eax, r13d
        mov      dword ptr [rbp-34H], eax
        mov      rcx, qword ptr [rbp-40H]
        jl       G_M44859_IG06
-						;; size=20 bbWeight=4 PerfScore 18.00
-G_M44859_IG09:
+						;; size=21 bbWeight=4 PerfScore 18.00
+G_M44859_IG20:
        mov      eax, -1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M44859_IG10:
+G_M44859_IG21:
        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_IG11:
+G_M44859_IG22:
        mov      eax, dword ptr [rbp-34H]
 						;; size=3 bbWeight=0.50 PerfScore 0.50
-G_M44859_IG12:
+G_M44859_IG23:
        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 286, prolog size 23, PerfScore 214.13, instruction count 90, allocated bytes for code 286 (MethodHash=3cab50c4) for method System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
+; Total bytes of code 336, prolog size 23, PerfScore 301.63, instruction count 111, allocated bytes for code 336 (MethodHash=3cab50c4) for method System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
49 (18.01 % 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; 0 single block inlinees; 3 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T08] (  5,  4.20)    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
-;  V03 arg2         [V03,T09] (  3,  4   )     ref  ->  r14         class-hnd single-def
-;  V04 arg3         [V04,T10] (  3,  4   )     ref  ->  r13         class-hnd single-def
-;  V05 arg4         [V05,T12] (  3,  3   )     int  ->   r9         single-def
-;  V06 loc0         [V06,T01] (  7, 18.50)     int  ->  r12        
-;  V07 loc1         [V07,T02] (  4, 12   )   byref  ->  [rbp-40H]   spill-single-def
+;  V00 TypeCtx      [V00,T13] (  5,  4.20)    long  ->  rdi         single-def
+;  V01 arg0         [V01,T12] (  3,  6   )   byref  ->  r13         single-def
+;  V02 arg1         [V02,T00] (  5, 22   )     ref  ->  rbx         class-hnd single-def
+;  V03 arg2         [V03,T01] (  5, 22   )     ref  ->  r15         class-hnd single-def
+;  V04 arg3         [V04,T02] (  5, 22   )     ref  ->  r14         class-hnd single-def
+;  V05 arg4         [V05,T15] (  3,  3   )     int  ->   r9         single-def
+;  V06 loc0         [V06,T04] (  7, 18.50)     int  ->  r12        
+;  V07 loc1         [V07,T10] (  4, 12   )   byref  ->  [rbp-40H]   spill-single-def
 ;# V08 OutArgs      [V08    ] (  1,  1   )  struct ( 0) [rsp+00H]   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,  9   )    long  ->  [rbp-38H]   spill-single-def "CSE - aggressive"
-;  V16 rat0         [V16,T13] (  3,  4   )    long  ->  rax         "runtime lookup"
-;  V17 rat1         [V17,T11] (  3,  5.60)    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V12 tmp4         [V12,T07] (  2,  4   )    bool  ->  rax         "Inline return value spill temp"
+;  V13 tmp5         [V13,T03] (  4, 24   )     ref  ->  rdi         ld-addr-op class-hnd "Inlining Arg"
+;  V14 tmp6         [V14,T08] (  2,  4   )    bool  ->  rax         "Inline return value spill temp"
+;  V15 tmp7         [V15,T05] (  4, 16   )     ref  ->  rdi         ld-addr-op class-hnd "Inlining Arg"
+;  V16 tmp8         [V16,T09] (  2,  4   )    bool  ->  rax         "Inline return value spill temp"
+;  V17 tmp9         [V17,T06] (  4, 16   )     ref  ->  rdi         ld-addr-op class-hnd "Inlining Arg"
+;  V18 cse0         [V18,T11] (  4,  9   )    long  ->  [rbp-38H]   spill-single-def "CSE - moderate"
+;  V19 rat0         [V19,T16] (  3,  4   )    long  ->  rax         "runtime lookup"
+;  V20 rat1         [V20,T14] (  3,  5.60)    long  ->  rax         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 24
 
 G_M41329_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 24
        lea      rbp, [rsp+40H]
        mov      qword ptr [rbp-30H], rdi
-       mov      rbx, rsi
-       mov      r15, rdx
-       mov      r14, rcx
-       mov      r13, r8
+       mov      r13, rsi
+       mov      rbx, rdx
+       mov      r15, rcx
+       mov      r14, r8
 						;; size=35 bbWeight=1 PerfScore 8.75
 G_M41329_IG02:
        lea      r12d, [r9-01H]
        test     r12d, r12d
-       jl       G_M41329_IG09
+       jl       G_M41329_IG20
        mov      rsi, qword ptr [rdi+10H]
        mov      rax, qword ptr [rsi+10H]
        test     rax, rax
        je       SHORT G_M41329_IG04
 						;; size=26 bbWeight=1 PerfScore 7.00
 G_M41329_IG03:
        jmp      SHORT G_M41329_IG05
 						;; size=2 bbWeight=0.80 PerfScore 1.60
 G_M41329_IG04:
        mov      rsi, 0xD1FFAB1E      ; global ptr
        call     CORINFO_HELP_RUNTIMEHANDLE_METHOD
 						;; size=15 bbWeight=0.20 PerfScore 0.25
 G_M41329_IG05:
        mov      qword ptr [rbp-38H], rax
 						;; size=4 bbWeight=1 PerfScore 1.00
 G_M41329_IG06:
        movsxd   rdi, r12d
-       lea      rcx, bword ptr [rbx+8*rdi]
+       lea      rcx, bword ptr [r13+8*rdi]
        mov      bword ptr [rbp-40H], 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
-       mov      rcx, bword ptr [rbp-40H]
-       mov      rsi, gword ptr [rcx]
-       mov      rdx, r15
-       mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+40H]
-       call     [rax+20H]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this
-       test     eax, eax
-       jne      SHORT G_M41329_IG08
-						;; size=53 bbWeight=4 PerfScore 68.00
+       mov      rax, bword ptr [rbp-40H]
+       mov      rdi, gword ptr [rax]
+       test     rdi, rdi
+       je       SHORT G_M41329_IG08
+						;; size=39 bbWeight=4 PerfScore 44.00
 G_M41329_IG07:
+       test     rbx, rbx
+       je       SHORT G_M41329_IG11
+       mov      rsi, rbx
+       mov      rcx, qword ptr [rdi]
+       mov      rcx, qword ptr [rcx+40H]
+       call     [rcx+10H]System.Object:Equals(System.Object):bool:this
+       jmp      SHORT G_M41329_IG10
+						;; size=20 bbWeight=2 PerfScore 21.00
+G_M41329_IG08:
+       test     rbx, rbx
+       jne      SHORT G_M41329_IG11
+						;; size=5 bbWeight=16 PerfScore 20.00
+G_M41329_IG09:
+       jmp      SHORT G_M41329_IG19
+						;; size=2 bbWeight=2 PerfScore 4.00
+G_M41329_IG10:
+       test     eax, eax
+       jne      SHORT G_M41329_IG19
+						;; size=4 bbWeight=2 PerfScore 2.50
+G_M41329_IG11:
        mov      rdi, qword ptr [rbp-38H]
-       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      rcx, bword ptr [rbp-40H]
-       mov      rsi, gword ptr [rcx]
-       mov      rdx, r14
-       mov      rax, qword ptr [rax]
-       mov      rax, qword ptr [rax+40H]
-       call     [rax+20H]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this
+       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      rax, bword ptr [rbp-40H]
+       mov      rdi, gword ptr [rax]
+       test     rdi, rdi
+       je       SHORT G_M41329_IG12
+       test     r15, r15
+       je       SHORT G_M41329_IG15
+       mov      rsi, r15
+       mov      rcx, qword ptr [rdi]
+       mov      rcx, qword ptr [rcx+40H]
+       call     [rcx+10H]System.Object:Equals(System.Object):bool:this
+       jmp      SHORT G_M41329_IG14
+						;; size=48 bbWeight=2 PerfScore 38.00
+G_M41329_IG12:
+       test     r15, r15
+       jne      SHORT G_M41329_IG15
+						;; size=5 bbWeight=16 PerfScore 20.00
+G_M41329_IG13:
+       jmp      SHORT G_M41329_IG19
+						;; size=2 bbWeight=2 PerfScore 4.00
+G_M41329_IG14:
        test     eax, eax
-       jne      SHORT G_M41329_IG08
+       jne      SHORT G_M41329_IG19
+						;; size=4 bbWeight=2 PerfScore 2.50
+G_M41329_IG15:
        mov      rdi, qword ptr [rbp-38H]
-       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      rsi, bword ptr [rbp-40H]
-       mov      rsi, gword ptr [rsi]
-       mov      rdx, r13
-       mov      rax, qword ptr [rax]
+       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, bword ptr [rbp-40H]
+       mov      rdi, gword ptr [rdi]
+       test     rdi, rdi
+       je       SHORT G_M41329_IG16
+       test     r14, r14
+       je       SHORT G_M41329_IG22
+       mov      rsi, r14
+       mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+40H]
-       call     [rax+20H]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):bool:this
+       call     [rax+10H]System.Object:Equals(System.Object):bool:this
+       jmp      SHORT G_M41329_IG18
+						;; size=48 bbWeight=2 PerfScore 38.00
+G_M41329_IG16:
+       test     r14, r14
+       jne      SHORT G_M41329_IG22
+						;; size=5 bbWeight=16 PerfScore 20.00
+G_M41329_IG17:
+       jmp      SHORT G_M41329_IG19
+						;; size=2 bbWeight=2 PerfScore 4.00
+G_M41329_IG18:
        test     eax, eax
-       je       SHORT G_M41329_IG11
-						;; size=86 bbWeight=2 PerfScore 64.00
-G_M41329_IG08:
+       je       SHORT G_M41329_IG22
+						;; size=4 bbWeight=2 PerfScore 2.50
+G_M41329_IG19:
        dec      r12d
        mov      rax, qword ptr [rbp-38H]
        jns      G_M41329_IG06
 						;; size=13 bbWeight=4 PerfScore 9.00
-G_M41329_IG09:
+G_M41329_IG20:
        mov      eax, -1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M41329_IG10:
+G_M41329_IG21:
        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_M41329_IG11:
+G_M41329_IG22:
        mov      eax, r12d
 						;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M41329_IG12:
+G_M41329_IG23:
        add      rsp, 24
        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 272, prolog size 23, PerfScore 191.30, instruction count 84, allocated bytes for code 272 (MethodHash=2fc85e8e) for method System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
+; Total bytes of code 321, prolog size 23, PerfScore 284.70, instruction count 105, allocated bytes for code 321 (MethodHash=2fc85e8e) for method System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)

@MihuBot
Copy link
Owner Author

MihuBot commented Jul 4, 2023

Top method improvements

-183 (-100.00 % of base) - System.Collections.Generic.ComparerHelpers:TryCreateEnumComparer(System.RuntimeType):System.Object
-; Assembly listing for method System.Collections.Generic.ComparerHelpers:TryCreateEnumComparer(System.RuntimeType):System.Object (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; 5 single block inlinees; 4 inlinees without PGO data
-; Final local variable assignments
-;
-;  V00 arg0         [V00,T00] (  8,  7.50)     ref  ->  rbx         class-hnd single-def
-;* V01 loc0         [V01    ] (  0,  0   )     int  ->  zero-ref   
-;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+00H]   do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T03] (  3,  2.50)     ref  ->  rdi         class-hnd single-def "Inline return value spill temp"
-;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt"
-;  V05 tmp3         [V05,T05] (  2,  2   )     ref  ->  rdi         class-hnd single-def "Inline stloc first use temp"
-;  V06 tmp4         [V06,T04] (  3,  2   )     int  ->  r15         "Inline return value spill temp"
-;* V07 tmp5         [V07    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V08 tmp6         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp"
-;* V09 tmp7         [V09    ] (  0,  0   )     ref  ->  zero-ref    "CASTCLASS eval op1"
-;* V10 tmp8         [V10    ] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V11 tmp9         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2"
-;* V12 tmp10        [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp"
-;* V13 tmp11        [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt"
-;* V14 tmp12        [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp"
-;  V15 tmp13        [V15,T02] (  2,  4   )     ref  ->  r15         single-def "arr expr"
-;  V16 tmp14        [V16,T01] (  3,  6   )     int  ->  rax         "index expr"
-;* V17 tmp15        [V17    ] (  0,  0   )     ref  ->  zero-ref    "arr expr"
-;* V18 tmp16        [V18    ] (  0,  0   )     int  ->  zero-ref    "index expr"
-;
-; Lcl frame size = 0
-
-G_M19464_IG01:
-       push     rbp
-       push     r15
-       push     rbx
-       lea      rbp, [rsp+10H]
-       mov      rbx, rdi
-						;; size=12 bbWeight=1 PerfScore 3.75
-G_M19464_IG02:
-       mov      rdi, rbx
-       mov      rsi, 0xD1FFAB1E      ; 'enumType'
-
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
-       call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
-       cmp      byte  ptr [rbx], bl
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:get_IsActualEnum():bool:this
-       call     [rax]System.RuntimeType:get_IsActualEnum():bool:this
-       test     eax, eax
-       je       SHORT G_M19464_IG10
-       mov      rdi, 0xD1FFAB1E      ; const ptr
-       mov      r15, gword ptr [rdi]
-       mov      rdi, qword ptr [rbx+18H]
-       call     System.Enum:InternalGetCorElementType(ulong):ubyte
-       cmp      eax, 26
-       jae      SHORT G_M19464_IG11
-       mov      edi, eax
-       mov      rdi, gword ptr [r15+8*rdi+10H]
-       test     rdi, rdi
-       jne      SHORT G_M19464_IG04
-						;; size=85 bbWeight=1 PerfScore 21.50
-G_M19464_IG03:
-       xor      r15d, r15d
-       jmp      SHORT G_M19464_IG05
-						;; size=5 bbWeight=0.50 PerfScore 1.12
-G_M19464_IG04:
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:GetTypeCodeImpl():int:this
-       call     [rax]System.RuntimeType:GetTypeCodeImpl():int:this
-       mov      r15d, eax
-						;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M19464_IG05:
-       add      r15d, -5
-       cmp      r15d, 7
-       ja       SHORT G_M19464_IG08
-						;; size=10 bbWeight=1 PerfScore 1.50
-G_M19464_IG06:
-       mov      rsi, rbx
-       mov      rdi, 0xD1FFAB1E      ; 'System.Collections.Generic.EnumComparer`1[T]'
-
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeTypeHandle:CreateInstanceForAnotherGenericParameter(System.RuntimeType,System.RuntimeType):System.Object
-						;; size=23 bbWeight=0.50 PerfScore 0.38
-G_M19464_IG07:
-       pop      rbx
-       pop      r15
-       pop      rbp
-       tail.jmp [rax]System.RuntimeTypeHandle:CreateInstanceForAnotherGenericParameter(System.RuntimeType,System.RuntimeType):System.Object
-						;; size=7 bbWeight=0.50 PerfScore 1.75
-G_M19464_IG08:
-       xor      rax, rax
-						;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M19464_IG09:
-       pop      rbx
-       pop      r15
-       pop      rbp
-       ret      
-						;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M19464_IG10:
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:ThrowMustBeEnum()
-       call     [rax]System.RuntimeType:ThrowMustBeEnum()
-       int3     
-						;; size=13 bbWeight=0 PerfScore 0.00
-G_M19464_IG11:
-       call     CORINFO_HELP_RNGCHKFAIL
-       int3     
-						;; size=6 bbWeight=0 PerfScore 0.00
-
-; Total bytes of code 183, prolog size 9, PerfScore 51.43, instruction count 50, allocated bytes for code 183 (MethodHash=5e08b3f7) for method System.Collections.Generic.ComparerHelpers:TryCreateEnumComparer(System.RuntimeType):System.Object (FullOpts)
-; ============================================================
-183 (-100.00 % of base) - System.Collections.Generic.ComparerHelpers:TryCreateEnumEqualityComparer(System.RuntimeType):System.Object
-; Assembly listing for method System.Collections.Generic.ComparerHelpers:TryCreateEnumEqualityComparer(System.RuntimeType):System.Object (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; 5 single block inlinees; 4 inlinees without PGO data
-; Final local variable assignments
-;
-;  V00 arg0         [V00,T00] (  8,  7.50)     ref  ->  rbx         class-hnd single-def
-;* V01 loc0         [V01    ] (  0,  0   )     int  ->  zero-ref   
-;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+00H]   do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T03] (  3,  2.50)     ref  ->  rdi         class-hnd single-def "Inline return value spill temp"
-;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt"
-;  V05 tmp3         [V05,T05] (  2,  2   )     ref  ->  rdi         class-hnd single-def "Inline stloc first use temp"
-;  V06 tmp4         [V06,T04] (  3,  2   )     int  ->  r15         "Inline return value spill temp"
-;* V07 tmp5         [V07    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V08 tmp6         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp"
-;* V09 tmp7         [V09    ] (  0,  0   )     ref  ->  zero-ref    "CASTCLASS eval op1"
-;* V10 tmp8         [V10    ] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V11 tmp9         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2"
-;* V12 tmp10        [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp"
-;* V13 tmp11        [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt"
-;* V14 tmp12        [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp"
-;  V15 tmp13        [V15,T02] (  2,  4   )     ref  ->  r15         single-def "arr expr"
-;  V16 tmp14        [V16,T01] (  3,  6   )     int  ->  rax         "index expr"
-;* V17 tmp15        [V17    ] (  0,  0   )     ref  ->  zero-ref    "arr expr"
-;* V18 tmp16        [V18    ] (  0,  0   )     int  ->  zero-ref    "index expr"
-;
-; Lcl frame size = 0
-
-G_M39904_IG01:
-       push     rbp
-       push     r15
-       push     rbx
-       lea      rbp, [rsp+10H]
-       mov      rbx, rdi
-						;; size=12 bbWeight=1 PerfScore 3.75
-G_M39904_IG02:
-       mov      rdi, rbx
-       mov      rsi, 0xD1FFAB1E      ; 'enumType'
-
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
-       call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
-       cmp      byte  ptr [rbx], bl
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:get_IsActualEnum():bool:this
-       call     [rax]System.RuntimeType:get_IsActualEnum():bool:this
-       test     eax, eax
-       je       SHORT G_M39904_IG10
-       mov      rdi, 0xD1FFAB1E      ; const ptr
-       mov      r15, gword ptr [rdi]
-       mov      rdi, qword ptr [rbx+18H]
-       call     System.Enum:InternalGetCorElementType(ulong):ubyte
-       cmp      eax, 26
-       jae      SHORT G_M39904_IG11
-       mov      edi, eax
-       mov      rdi, gword ptr [r15+8*rdi+10H]
-       test     rdi, rdi
-       jne      SHORT G_M39904_IG04
-						;; size=85 bbWeight=1 PerfScore 21.50
-G_M39904_IG03:
-       xor      r15d, r15d
-       jmp      SHORT G_M39904_IG05
-						;; size=5 bbWeight=0.50 PerfScore 1.12
-G_M39904_IG04:
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:GetTypeCodeImpl():int:this
-       call     [rax]System.RuntimeType:GetTypeCodeImpl():int:this
-       mov      r15d, eax
-						;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M39904_IG05:
-       add      r15d, -5
-       cmp      r15d, 7
-       ja       SHORT G_M39904_IG08
-						;; size=10 bbWeight=1 PerfScore 1.50
-G_M39904_IG06:
-       mov      rsi, rbx
-       mov      rdi, 0xD1FFAB1E      ; 'System.Collections.Generic.EnumEqualityComparer`1[T]'
-
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeTypeHandle:CreateInstanceForAnotherGenericParameter(System.RuntimeType,System.RuntimeType):System.Object
-						;; size=23 bbWeight=0.50 PerfScore 0.38
-G_M39904_IG07:
-       pop      rbx
-       pop      r15
-       pop      rbp
-       tail.jmp [rax]System.RuntimeTypeHandle:CreateInstanceForAnotherGenericParameter(System.RuntimeType,System.RuntimeType):System.Object
-						;; size=7 bbWeight=0.50 PerfScore 1.75
-G_M39904_IG08:
-       xor      rax, rax
-						;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M39904_IG09:
-       pop      rbx
-       pop      r15
-       pop      rbp
-       ret      
-						;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M39904_IG10:
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:ThrowMustBeEnum()
-       call     [rax]System.RuntimeType:ThrowMustBeEnum()
-       int3     
-						;; size=13 bbWeight=0 PerfScore 0.00
-G_M39904_IG11:
-       call     CORINFO_HELP_RNGCHKFAIL
-       int3     
-						;; size=6 bbWeight=0 PerfScore 0.00
-
-; Total bytes of code 183, prolog size 9, PerfScore 51.43, instruction count 50, allocated bytes for code 183 (MethodHash=013b641f) for method System.Collections.Generic.ComparerHelpers:TryCreateEnumEqualityComparer(System.RuntimeType):System.Object (FullOpts)
-; ============================================================
-24 (-4.79 % of base) - System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object
 ; Assembly listing for method System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (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; 6 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T01] (  5,  4   )     ref  ->  rbx         class-hnd single-def
-;  V01 loc0         [V01,T02] (  7,  4.50)     ref  ->  r15         class-hnd
-;  V02 loc1         [V02,T00] ( 16,  9   )     ref  ->  rbx         class-hnd single-def
+;  V01 loc0         [V01,T05] (  5,  3   )     ref  ->  r15         class-hnd
+;  V02 loc1         [V02,T00] ( 15,  8.50)     ref  ->  rbx         class-hnd single-def
 ;* V03 loc2         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+00H]   do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V05 tmp1         [V05,T12] (  3,  1   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
-;  V06 tmp2         [V06,T03] (  3,  4.50)     ref  ->  rdi         class-hnd "spilling QMark2"
+;  V06 tmp2         [V06,T02] (  3,  4.50)     ref  ->  rdi         class-hnd "spilling QMark2"
 ;  V07 tmp3         [V07,T06] (  3,  3   )     ref  ->  r14         class-hnd exact single-def "dup spill"
 ;* V08 tmp4         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "impAppendStmt"
-;  V09 tmp5         [V09,T08] (  3,  2.50)     ref  ->  rax         single-def
-;  V10 tmp6         [V10,T09] (  3,  2   )     ref  ->  rsi         single-def "CASTCLASS eval op1"
+;  V09 tmp5         [V09,T09] (  3,  1.50)     ref  ->  rax         single-def
+;  V10 tmp6         [V10,T08] (  3,  2   )     ref  ->  rsi         single-def "CASTCLASS eval op1"
 ;  V11 tmp7         [V11,T13] (  3,  1   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
-;  V12 tmp8         [V12,T05] (  4,  3.50)     ref  ->  rdi         class-hnd "spilling QMark2"
+;  V12 tmp8         [V12,T04] (  4,  3.50)     ref  ->  rdi         class-hnd "spilling QMark2"
 ;* V13 tmp9         [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp"
-;* V14 tmp10        [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp"
-;  V15 tmp11        [V15,T10] (  2,  1   )    bool  ->  rax         "Inline return value spill temp"
-;  V16 tmp12        [V16,T04] (  4,  4   )     ref  ->  rax         class-hnd single-def "Inlining Arg"
-;  V17 tmp13        [V17,T07] (  3,  3   )     ref  ->  rax         single-def "arr expr"
-;  V18 cse0         [V18,T11] (  3,  1.50)    long  ->  r14         "CSE - moderate"
+;  V14 tmp10        [V14,T10] (  2,  1   )    bool  ->  rax         "Inline return value spill temp"
+;  V15 tmp11        [V15,T03] (  4,  4   )     ref  ->  rax         class-hnd single-def "Inlining Arg"
+;  V16 tmp12        [V16,T07] (  3,  3   )     ref  ->  rax         single-def "arr expr"
+;  V17 cse0         [V17,T11] (  3,  1.50)    long  ->  r14         "CSE - moderate"
 ;
 ; Lcl frame size = 8
 
 G_M53179_IG01:
        push     rbp
        push     r15
        push     r14
        push     rbx
        push     rax
        lea      rbp, [rsp+20H]
        mov      rbx, rdi
 						;; size=15 bbWeight=1 PerfScore 5.75
 G_M53179_IG02:
        xor      r15, r15
        mov      rdi, rbx
        test     rdi, rdi
        je       SHORT G_M53179_IG04
 						;; size=11 bbWeight=1 PerfScore 1.75
 G_M53179_IG03:
        mov      rax, 0xD1FFAB1E      ; System.RuntimeType
        cmp      qword ptr [rdi], rax
-       jne      G_M53179_IG16
+       jne      G_M53179_IG15
 						;; size=19 bbWeight=0.25 PerfScore 1.06
 G_M53179_IG04:
-       mov      rdi, 0xD1FFAB1E      ; 'System.Byte'
-
-       cmp      rbx, rdi
-       jne      SHORT G_M53179_IG06
-						;; size=15 bbWeight=1 PerfScore 1.50
-G_M53179_IG05:
-       mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.ByteEqualityComparer
-       call     CORINFO_HELP_NEWSFAST
-       mov      r15, rax
-       jmp      G_M53179_IG12
-						;; size=23 bbWeight=0.50 PerfScore 1.75
-G_M53179_IG06:
        mov      rdi, 0xD1FFAB1E      ; 'System.String'
 
        cmp      rbx, rdi
        jne      SHORT G_M53179_IG07
+						;; size=15 bbWeight=1 PerfScore 1.50
+G_M53179_IG05:
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.GenericEqualityComparer`1[System.String]
        call     CORINFO_HELP_NEWSFAST
-       mov      r15, rax
-       jmp      G_M53179_IG12
-						;; size=38 bbWeight=0.50 PerfScore 2.50
+       nop      
+						;; size=16 bbWeight=0.50 PerfScore 0.75
+G_M53179_IG06:
+       add      rsp, 8
+       pop      rbx
+       pop      r14
+       pop      r15
+       pop      rbp
+       ret      
+						;; size=11 bbWeight=0.50 PerfScore 1.62
 G_M53179_IG07:
        mov      rdi, 0xD1FFAB1E      ; System.Type[]
        mov      esi, 1
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      r14, rax
        lea      rdi, bword ptr [r14+10H]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, r14
        mov      rdi, 0xD1FFAB1E      ; 'System.IEquatable`1[T]'
 
        mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this
        cmp      byte  ptr [rbx], bl
        test     rax, rax
        je       SHORT G_M53179_IG08
        mov      rdi, rax
        mov      rsi, rbx
        mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+B0H]
        call     [rax+20H]System.Type:IsAssignableFrom(System.Type):bool:this
        test     eax, eax
        je       SHORT G_M53179_IG08
        mov      rsi, rbx
        mov      rdi, 0xD1FFAB1E      ; 'System.Collections.Generic.GenericEqualityComparer`1[System.Str'
 
        mov      rax, 0xD1FFAB1E      ; code for System.RuntimeTypeHandle:CreateInstanceForAnotherGenericParameter(System.RuntimeType,System.RuntimeType):System.Object
        call     [rax]System.RuntimeTypeHandle:CreateInstanceForAnotherGenericParameter(System.RuntimeType,System.RuntimeType):System.Object
        mov      r15, rax
        jmp      G_M53179_IG12
 						;; size=125 bbWeight=0.50 PerfScore 14.62
 G_M53179_IG08:
        mov      rdi, rbx
        mov      rax, qword ptr [rbx]
        mov      rax, qword ptr [rax+60H]
        call     [rax+08H]System.Type:get_IsGenericType():bool:this
        test     eax, eax
        je       SHORT G_M53179_IG11
        mov      rdi, rbx
        mov      rax, qword ptr [rbx]
        mov      r14, qword ptr [rax+68H]
        call     [r14+18H]System.Type:GetGenericTypeDefinition():System.Type:this
        mov      rdi, 0xD1FFAB1E      ; 'System.Nullable`1[T]'
 
        cmp      rax, rdi
        jne      SHORT G_M53179_IG11
        mov      rdi, rbx
        call     [r14+28H]System.Type:GetGenericArguments():System.Type[]:this
        cmp      dword ptr [rax+08H], 0
-       jbe      G_M53179_IG18
+       jbe      G_M53179_IG17
        mov      rsi, gword ptr [rax+10H]
        mov      rdi, rsi
        test     rdi, rdi
        je       SHORT G_M53179_IG10
 						;; size=75 bbWeight=0.50 PerfScore 14.00
 G_M53179_IG09:
        mov      rax, 0xD1FFAB1E      ; System.RuntimeType
        cmp      qword ptr [rdi], rax
-       jne      G_M53179_IG17
+       jne      G_M53179_IG16
 						;; size=19 bbWeight=0.25 PerfScore 1.06
 G_M53179_IG10:
        mov      rsi, rdi
        mov      rdi, 0xD1FFAB1E      ; 'System.Collections.Generic.NullableEqualityComparer`1[System.In'
 
        mov      rax, 0xD1FFAB1E      ; code for System.RuntimeTypeHandle:CreateInstanceForAnotherGenericParameter(System.RuntimeType,System.RuntimeType):System.Object
        call     [rax]System.RuntimeTypeHandle:CreateInstanceForAnotherGenericParameter(System.RuntimeType,System.RuntimeType):System.Object
        mov      r15, rax
        jmp      SHORT G_M53179_IG12
 						;; size=30 bbWeight=0.50 PerfScore 3.00
 G_M53179_IG11:
        mov      rdi, rbx
        mov      rax, qword ptr [rbx]
        mov      rax, qword ptr [rax+70H]
        call     [rax+30H]System.Type:get_IsEnum():bool:this
        test     eax, eax
        je       SHORT G_M53179_IG12
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.ComparerHelpers:TryCreateEnumEqualityComparer(System.RuntimeType):System.Object
-       call     [rax]System.Collections.Generic.ComparerHelpers:TryCreateEnumEqualityComparer(System.RuntimeType):System.Object
+       mov      rsi, rbx
+       mov      rdi, 0xD1FFAB1E      ; 'System.Collections.Generic.EnumEqualityComparer`1[T]'
+
+       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeTypeHandle:CreateInstanceForAnotherGenericParameter(System.RuntimeType,System.RuntimeType):System.Object
+       call     [rax]System.RuntimeTypeHandle:CreateInstanceForAnotherGenericParameter(System.RuntimeType,System.RuntimeType):System.Object
        mov      r15, rax
-						;; size=35 bbWeight=0.50 PerfScore 6.12
+						;; size=45 bbWeight=0.50 PerfScore 6.25
 G_M53179_IG12:
        mov      rax, r15
        test     rax, rax
-       jne      SHORT G_M53179_IG15
-						;; size=8 bbWeight=1 PerfScore 1.50
-G_M53179_IG13:
+       jne      SHORT G_M53179_IG14
        mov      rsi, rbx
        mov      rdi, 0xD1FFAB1E      ; 'System.Collections.Generic.ObjectEqualityComparer`1[System.Obje'
 
        mov      rax, 0xD1FFAB1E      ; code for System.RuntimeTypeHandle:CreateInstanceForAnotherGenericParameter(System.RuntimeType,System.RuntimeType):System.Object
-						;; size=23 bbWeight=0.50 PerfScore 0.38
-G_M53179_IG14:
+						;; size=31 bbWeight=0.50 PerfScore 1.12
+G_M53179_IG13:
        add      rsp, 8
        pop      rbx
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.RuntimeTypeHandle:CreateInstanceForAnotherGenericParameter(System.RuntimeType,System.RuntimeType):System.Object
 						;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M53179_IG15:
+G_M53179_IG14:
        add      rsp, 8
        pop      rbx
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M53179_IG16:
+G_M53179_IG15:
        mov      rdi, rax
        mov      rsi, rbx
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
        call     [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
        int3     
 						;; size=19 bbWeight=0 PerfScore 0.00
-G_M53179_IG17:
+G_M53179_IG16:
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
        call     [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
        int3     
 						;; size=16 bbWeight=0 PerfScore 0.00
-G_M53179_IG18:
+G_M53179_IG17:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 501, prolog size 15, PerfScore 108.85, instruction count 125, allocated bytes for code 501 (MethodHash=6fa03044) for method System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts)
+; Total bytes of code 477, prolog size 12, PerfScore 103.95, instruction count 124, allocated bytes for code 477 (MethodHash=6fa03044) for method System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts)

@MihuBot
Copy link
Owner Author

MihuBot commented Jul 4, 2023

@MichalPetryka

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