MihuBot / runtime-utils

0 stars 0 forks source link

[MichalPetryka] Unify Default Comparer logic #71

Open MihuBot opened 1 year ago

MihuBot commented 1 year ago

Build completed in 1 hour 50 minutes.

CoreLib diffs

Found 2 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 6958666
Total bytes of diff: 6958879
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: 38375490 Total bytes of diff: 38377058 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.dasm (0.01 % of base) 83 : System.Linq.Queryable.dasm (0.02 % 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.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.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]: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.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.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]: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), 232862 unchanged. -------------------------------------------------------------------------------- ```

Artifacts:

MihuBot commented 1 year ago

Top method regressions

84 (24.14 % of base) - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int ```diff ; 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 AVX512 - 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 ```diff ; 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 AVX512 - 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 ```diff ; 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 AVX512 - 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 ```diff ; 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 AVX512 - 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 commented 1 year ago

Top method improvements

-183 (-100.00 % of base) - System.Collections.Generic.ComparerHelpers:TryCreateEnumComparer(System.RuntimeType):System.Object ```diff -; Assembly listing for method System.Collections.Generic.ComparerHelpers:TryCreateEnumComparer(System.RuntimeType):System.Object (FullOpts) -; Emitting BLENDED_CODE for X64 with AVX512 - 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 ```diff -; Assembly listing for method System.Collections.Generic.ComparerHelpers:TryCreateEnumEqualityComparer(System.RuntimeType):System.Object (FullOpts) -; Emitting BLENDED_CODE for X64 with AVX512 - 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 ```diff ; Assembly listing for method System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - 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) ```