MihuBot / runtime-utils

0 stars 0 forks source link

[JitDiff X64] MichalPetryka/runtime/bitwise-equality #542

Open MihuBot opened 1 month ago

MihuBot commented 1 month ago

Job completed in 16 minutes.

Diffs

Found 321 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 39216752
Total bytes of diff: 39217517
Total bytes of delta: 765 (0.00 % of base)
Total relative delta: 0.21
    diff is a regression.
    relative diff is a regression.

Top file regressions (bytes):
         529 : System.Numerics.Tensors.dasm (0.04 % of base)
         129 : System.Formats.Tar.dasm (0.10 % of base)
         118 : System.Security.Cryptography.dasm (0.01 % of base)
          32 : System.Private.Xml.dasm (0.00 % of base)
          16 : System.Private.Uri.dasm (0.02 % of base)
           3 : System.Runtime.Numerics.dasm (0.00 % of base)
           3 : Microsoft.Extensions.Primitives.dasm (0.01 % of base)
           1 : System.Reflection.Emit.dasm (0.00 % of base)

Top file improvements (bytes):
         -40 : System.Private.CoreLib.dasm (-0.00 % of base)
          -8 : System.Text.RegularExpressions.dasm (-0.00 % of base)
          -7 : System.Reflection.MetadataLoadContext.dasm (-0.00 % of base)
          -7 : System.Reflection.Metadata.dasm (-0.00 % of base)
          -3 : System.Text.Encoding.CodePages.dasm (-0.00 % of base)
          -1 : ILCompiler.Reflection.ReadyToRun.dasm (-0.00 % of base)

14 total files with Code Size differences (6 improved, 8 regressed), 245 unchanged.

Top method regressions (bytes):
         129 (9.45 % of base) : System.Formats.Tar.dasm - System.Formats.Tar.TarHeader:TryReadCommonAttributes(System.ReadOnlySpan`1[ubyte],int):System.Formats.Tar.TarHeader (FullOpts)
         110 (8.40 % of base) : System.Security.Cryptography.dasm - Internal.Cryptography.Helpers:AreSamePublicECParameters(System.Security.Cryptography.ECParameters,System.Security.Cryptography.ECParameters):ubyte (FullOpts)
          88 (2.28 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:TensorPrimitivesHelperTwoSpanInSpanOut[double](byref,byref,byref,System.Numerics.Tensors.Tensor+PerformCalculationTwoSpanInSpanOut`1[double]):byref (FullOpts)
          88 (2.28 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:TensorPrimitivesHelperTwoSpanInSpanOut[long](byref,byref,byref,System.Numerics.Tensors.Tensor+PerformCalculationTwoSpanInSpanOut`1[long]):byref (FullOpts)
          88 (2.28 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:TensorPrimitivesHelperTwoSpanInSpanOut[System.Nullable`1[int]](byref,byref,byref,System.Numerics.Tensors.Tensor+PerformCalculationTwoSpanInSpanOut`1[System.Nullable`1[int]]):byref (FullOpts)
          81 (2.10 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:TensorPrimitivesHelperTwoSpanInSpanOut[int](byref,byref,byref,System.Numerics.Tensors.Tensor+PerformCalculationTwoSpanInSpanOut`1[int]):byref (FullOpts)
          72 (1.86 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:TensorPrimitivesHelperTwoSpanInSpanOut[short](byref,byref,byref,System.Numerics.Tensors.Tensor+PerformCalculationTwoSpanInSpanOut`1[short]):byref (FullOpts)
          72 (1.85 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:TensorPrimitivesHelperTwoSpanInSpanOut[System.Numerics.Vector`1[float]](byref,byref,byref,System.Numerics.Tensors.Tensor+PerformCalculationTwoSpanInSpanOut`1[System.Numerics.Vector`1[float]]):byref (FullOpts)
          72 (1.87 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:TensorPrimitivesHelperTwoSpanInSpanOut[ubyte](byref,byref,byref,System.Numerics.Tensors.Tensor+PerformCalculationTwoSpanInSpanOut`1[ubyte]):byref (FullOpts)
          64 (1.47 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:TensorPrimitivesHelperTwoSpanInSpanOut[System.__Canon](byref,byref,byref,System.Numerics.Tensors.Tensor+PerformCalculationTwoSpanInSpanOut`1[System.__Canon]):byref (FullOpts)
          32 (1.66 % of base) : System.Private.Xml.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F5DBCD576063A52A48740E994A2C48F667E1B98C82EF9C1B34EEE82235FE0D730__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
          16 (2.63 % of base) : System.Private.Uri.dasm - System.DomainNameHelper:IsValid(System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
          13 (0.23 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse:ProcessTerminal_HM_S_D(byref,ubyte,byref):ubyte (FullOpts)
           8 (0.55 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509CertificateLoader+CertKeyMatcher:PublicKeyMatches(System.Security.Cryptography.X509Certificates.ICertificatePalCore,byref):ubyte (FullOpts)
           3 (1.50 % of base) : Microsoft.Extensions.Primitives.dasm - Microsoft.Extensions.Primitives.StringSegment:Equals(System.String):ubyte:this (FullOpts)
           3 (0.51 % of base) : System.Runtime.Numerics.dasm - System.Numerics.BigInteger:.ctor(System.Span`1[uint]):this (FullOpts)
           1 (0.07 % of base) : System.Reflection.Emit.dasm - System.Reflection.Emit.ModuleBuilderImpl:GetImportScopeHandle(System.Collections.Generic.List`1[System.String],System.Reflection.Metadata.ImportScopeHandle):System.Reflection.Metadata.ImportScopeHandle:this (FullOpts)

Top method improvements (bytes):
         -32 (-0.97 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:ElementwiseEqual[double](byref,byref,byref):byref (FullOpts)
         -16 (-0.49 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:ElementwiseEqual[int](byref,byref,byref):byref (FullOpts)
         -16 (-0.49 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:ElementwiseEqual[long](byref,byref,byref):byref (FullOpts)
         -16 (-0.49 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:ElementwiseEqual[short](byref,byref,byref):byref (FullOpts)
         -16 (-0.49 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:ElementwiseEqual[ubyte](byref,byref,byref):byref (FullOpts)
          -9 (-3.49 % of base) : System.Private.CoreLib.dasm - System.SByte:System.Numerics.IBinaryInteger<System.SByte>.TryReadBigEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte (FullOpts)
          -8 (-0.07 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (FullOpts) (2 methods)
          -5 (-1.07 % of base) : System.Private.CoreLib.dasm - System.Int128:System.Numerics.IBinaryInteger<System.Int128>.TryReadBigEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte (FullOpts)
          -5 (-0.87 % of base) : System.Private.CoreLib.dasm - System.Int128:System.Numerics.IBinaryInteger<System.Int128>.TryReadLittleEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte (FullOpts)
          -5 (-1.63 % of base) : System.Private.CoreLib.dasm - System.Int16:System.Numerics.IBinaryInteger<System.Int16>.TryReadBigEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte (FullOpts)
          -5 (-1.64 % of base) : System.Private.CoreLib.dasm - System.Int16:System.Numerics.IBinaryInteger<System.Int16>.TryReadLittleEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte (FullOpts)
          -5 (-0.61 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:IndexOfAny[short](System.Span`1[short],System.ReadOnlySpan`1[short]):int (FullOpts)
          -5 (-0.22 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.Ecma.EcmaAssembly:ComputeAssemblyReferences():System.Reflection.TypeLoading.AssemblyNameData[]:this (FullOpts)
          -5 (-1.96 % of base) : System.Private.CoreLib.dasm - System.SByte:System.Numerics.IBinaryInteger<System.SByte>.TryReadLittleEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte (FullOpts)
          -3 (-0.16 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse:ProcessTerminal_HM(byref,ubyte,byref):ubyte (FullOpts)
          -3 (-0.40 % of base) : System.Private.CoreLib.dasm - System.String:IndexOfAny(ushort[]):int:this (FullOpts)
          -3 (-0.47 % of base) : System.Text.Encoding.CodePages.dasm - System.Text.EncodingTable:GetNameFromCodePage(int,System.String,System.ReadOnlySpan`1[int],System.Collections.Generic.Dictionary`2[int,System.String]):System.String (FullOpts)
          -2 (-0.83 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:SequenceEqual[int](System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],System.Collections.Generic.IEqualityComparer`1[int]):ubyte (FullOpts)
          -2 (-0.83 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:SequenceEqual[long](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long],System.Collections.Generic.IEqualityComparer`1[long]):ubyte (FullOpts)
          -2 (-0.83 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:SequenceEqual[short](System.ReadOnlySpan`1[short],System.ReadOnlySpan`1[short],System.Collections.Generic.IEqualityComparer`1[short]):ubyte (FullOpts)
          -2 (-0.84 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:SequenceEqual[ubyte](System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IEqualityComparer`1[ubyte]):ubyte (FullOpts)
          -2 (-0.13 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.Ecma335.NamespaceCache:PopulateTableWithExportedTypes(System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.NamespaceDefinitionHandle,System.Reflection.Metadata.Ecma335.NamespaceCache+NamespaceDataBuilder]):this (FullOpts)
          -2 (-0.13 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.Ecma335.NamespaceCache:PopulateTableWithTypeDefinitions(System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.NamespaceDefinitionHandle,System.Reflection.Metadata.Ecma335.NamespaceCache+NamespaceDataBuilder]):this (FullOpts)
          -1 (-0.15 % of base) : ILCompiler.Reflection.ReadyToRun.dasm - ILCompiler.Reflection.ReadyToRun.ReadyToRunReader:EnsureManifestReferenceAssemblies():this (FullOpts)
          -1 (-0.30 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Internal.MemoryBlock:Utf8NullTerminatedEquals(int,System.String,System.Reflection.Metadata.MetadataStringDecoder,ushort,ubyte):ubyte:this (FullOpts)
          -1 (-0.28 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Internal.MemoryBlock:Utf8NullTerminatedStartsWith(int,System.String,System.Reflection.Metadata.MetadataStringDecoder,ushort,ubyte):ubyte:this (FullOpts)
          -1 (-0.21 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.Ecma335.StringHeap:Equals(System.Reflection.Metadata.StringHandle,System.String,System.Reflection.Metadata.MetadataStringDecoder,ubyte):ubyte:this (FullOpts)
          -1 (-0.19 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.Ecma.EcmaAssembly:GetManifestResourceNames():System.String[]:this (FullOpts)
          -1 (-0.04 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.Ecma.EcmaModule:GetInternalManifestResourceInfo(System.String):System.Reflection.TypeLoading.Ecma.InternalManifestResourceInfo:this (FullOpts)

Top method regressions (percentages):
         129 (9.45 % of base) : System.Formats.Tar.dasm - System.Formats.Tar.TarHeader:TryReadCommonAttributes(System.ReadOnlySpan`1[ubyte],int):System.Formats.Tar.TarHeader (FullOpts)
         110 (8.40 % of base) : System.Security.Cryptography.dasm - Internal.Cryptography.Helpers:AreSamePublicECParameters(System.Security.Cryptography.ECParameters,System.Security.Cryptography.ECParameters):ubyte (FullOpts)
          16 (2.63 % of base) : System.Private.Uri.dasm - System.DomainNameHelper:IsValid(System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
          88 (2.28 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:TensorPrimitivesHelperTwoSpanInSpanOut[double](byref,byref,byref,System.Numerics.Tensors.Tensor+PerformCalculationTwoSpanInSpanOut`1[double]):byref (FullOpts)
          88 (2.28 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:TensorPrimitivesHelperTwoSpanInSpanOut[long](byref,byref,byref,System.Numerics.Tensors.Tensor+PerformCalculationTwoSpanInSpanOut`1[long]):byref (FullOpts)
          88 (2.28 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:TensorPrimitivesHelperTwoSpanInSpanOut[System.Nullable`1[int]](byref,byref,byref,System.Numerics.Tensors.Tensor+PerformCalculationTwoSpanInSpanOut`1[System.Nullable`1[int]]):byref (FullOpts)
          81 (2.10 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:TensorPrimitivesHelperTwoSpanInSpanOut[int](byref,byref,byref,System.Numerics.Tensors.Tensor+PerformCalculationTwoSpanInSpanOut`1[int]):byref (FullOpts)
          72 (1.87 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:TensorPrimitivesHelperTwoSpanInSpanOut[ubyte](byref,byref,byref,System.Numerics.Tensors.Tensor+PerformCalculationTwoSpanInSpanOut`1[ubyte]):byref (FullOpts)
          72 (1.86 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:TensorPrimitivesHelperTwoSpanInSpanOut[short](byref,byref,byref,System.Numerics.Tensors.Tensor+PerformCalculationTwoSpanInSpanOut`1[short]):byref (FullOpts)
          72 (1.85 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:TensorPrimitivesHelperTwoSpanInSpanOut[System.Numerics.Vector`1[float]](byref,byref,byref,System.Numerics.Tensors.Tensor+PerformCalculationTwoSpanInSpanOut`1[System.Numerics.Vector`1[float]]):byref (FullOpts)
          32 (1.66 % of base) : System.Private.Xml.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F5DBCD576063A52A48740E994A2C48F667E1B98C82EF9C1B34EEE82235FE0D730__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
           3 (1.50 % of base) : Microsoft.Extensions.Primitives.dasm - Microsoft.Extensions.Primitives.StringSegment:Equals(System.String):ubyte:this (FullOpts)
          64 (1.47 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:TensorPrimitivesHelperTwoSpanInSpanOut[System.__Canon](byref,byref,byref,System.Numerics.Tensors.Tensor+PerformCalculationTwoSpanInSpanOut`1[System.__Canon]):byref (FullOpts)
           8 (0.55 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509CertificateLoader+CertKeyMatcher:PublicKeyMatches(System.Security.Cryptography.X509Certificates.ICertificatePalCore,byref):ubyte (FullOpts)
           3 (0.51 % of base) : System.Runtime.Numerics.dasm - System.Numerics.BigInteger:.ctor(System.Span`1[uint]):this (FullOpts)
          13 (0.23 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse:ProcessTerminal_HM_S_D(byref,ubyte,byref):ubyte (FullOpts)
           1 (0.07 % of base) : System.Reflection.Emit.dasm - System.Reflection.Emit.ModuleBuilderImpl:GetImportScopeHandle(System.Collections.Generic.List`1[System.String],System.Reflection.Metadata.ImportScopeHandle):System.Reflection.Metadata.ImportScopeHandle:this (FullOpts)

Top method improvements (percentages):
          -9 (-3.49 % of base) : System.Private.CoreLib.dasm - System.SByte:System.Numerics.IBinaryInteger<System.SByte>.TryReadBigEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte (FullOpts)
          -5 (-1.96 % of base) : System.Private.CoreLib.dasm - System.SByte:System.Numerics.IBinaryInteger<System.SByte>.TryReadLittleEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte (FullOpts)
          -5 (-1.64 % of base) : System.Private.CoreLib.dasm - System.Int16:System.Numerics.IBinaryInteger<System.Int16>.TryReadLittleEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte (FullOpts)
          -5 (-1.63 % of base) : System.Private.CoreLib.dasm - System.Int16:System.Numerics.IBinaryInteger<System.Int16>.TryReadBigEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte (FullOpts)
          -5 (-1.07 % of base) : System.Private.CoreLib.dasm - System.Int128:System.Numerics.IBinaryInteger<System.Int128>.TryReadBigEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte (FullOpts)
         -32 (-0.97 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:ElementwiseEqual[double](byref,byref,byref):byref (FullOpts)
          -5 (-0.87 % of base) : System.Private.CoreLib.dasm - System.Int128:System.Numerics.IBinaryInteger<System.Int128>.TryReadLittleEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte (FullOpts)
          -2 (-0.84 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:SequenceEqual[ubyte](System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IEqualityComparer`1[ubyte]):ubyte (FullOpts)
          -2 (-0.83 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:SequenceEqual[int](System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],System.Collections.Generic.IEqualityComparer`1[int]):ubyte (FullOpts)
          -2 (-0.83 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:SequenceEqual[long](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long],System.Collections.Generic.IEqualityComparer`1[long]):ubyte (FullOpts)
          -2 (-0.83 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:SequenceEqual[short](System.ReadOnlySpan`1[short],System.ReadOnlySpan`1[short],System.Collections.Generic.IEqualityComparer`1[short]):ubyte (FullOpts)
          -5 (-0.61 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:IndexOfAny[short](System.Span`1[short],System.ReadOnlySpan`1[short]):int (FullOpts)
         -16 (-0.49 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:ElementwiseEqual[int](byref,byref,byref):byref (FullOpts)
         -16 (-0.49 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:ElementwiseEqual[long](byref,byref,byref):byref (FullOpts)
         -16 (-0.49 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:ElementwiseEqual[short](byref,byref,byref):byref (FullOpts)
         -16 (-0.49 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor:ElementwiseEqual[ubyte](byref,byref,byref):byref (FullOpts)
          -3 (-0.47 % of base) : System.Text.Encoding.CodePages.dasm - System.Text.EncodingTable:GetNameFromCodePage(int,System.String,System.ReadOnlySpan`1[int],System.Collections.Generic.Dictionary`2[int,System.String]):System.String (FullOpts)
          -3 (-0.40 % of base) : System.Private.CoreLib.dasm - System.String:IndexOfAny(ushort[]):int:this (FullOpts)
          -1 (-0.30 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Internal.MemoryBlock:Utf8NullTerminatedEquals(int,System.String,System.Reflection.Metadata.MetadataStringDecoder,ushort,ubyte):ubyte:this (FullOpts)
          -1 (-0.28 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Internal.MemoryBlock:Utf8NullTerminatedStartsWith(int,System.String,System.Reflection.Metadata.MetadataStringDecoder,ushort,ubyte):ubyte:this (FullOpts)
          -5 (-0.22 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.Ecma.EcmaAssembly:ComputeAssemblyReferences():System.Reflection.TypeLoading.AssemblyNameData[]:this (FullOpts)
          -1 (-0.21 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.Ecma335.StringHeap:Equals(System.Reflection.Metadata.StringHandle,System.String,System.Reflection.Metadata.MetadataStringDecoder,ubyte):ubyte:this (FullOpts)
          -1 (-0.19 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.Ecma.EcmaAssembly:GetManifestResourceNames():System.String[]:this (FullOpts)
          -3 (-0.16 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse:ProcessTerminal_HM(byref,ubyte,byref):ubyte (FullOpts)
          -1 (-0.15 % of base) : ILCompiler.Reflection.ReadyToRun.dasm - ILCompiler.Reflection.ReadyToRun.ReadyToRunReader:EnsureManifestReferenceAssemblies():this (FullOpts)
          -2 (-0.13 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.Ecma335.NamespaceCache:PopulateTableWithTypeDefinitions(System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.NamespaceDefinitionHandle,System.Reflection.Metadata.Ecma335.NamespaceCache+NamespaceDataBuilder]):this (FullOpts)
          -2 (-0.13 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.Ecma335.NamespaceCache:PopulateTableWithExportedTypes(System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.NamespaceDefinitionHandle,System.Reflection.Metadata.Ecma335.NamespaceCache+NamespaceDataBuilder]):this (FullOpts)
          -8 (-0.07 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (FullOpts) (2 methods)
          -1 (-0.04 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.Ecma.EcmaModule:GetInternalManifestResourceInfo(System.String):System.Reflection.TypeLoading.Ecma.InternalManifestResourceInfo:this (FullOpts)

46 total methods with Code Size differences (29 improved, 17 regressed), 230691 unchanged.

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

Artifacts:

MihuBot commented 1 month ago

Top method regressions

129 (9.45 % of base) - System.Formats.Tar.TarHeader:TryReadCommonAttributes(System.ReadOnlySpan`1[ubyte],int):System.Formats.Tar.TarHeader ```diff ; Assembly listing for method System.Formats.Tar.TarHeader:TryReadCommonAttributes(System.ReadOnlySpan`1[ubyte],int):System.Formats.Tar.TarHeader (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; 28 single block inlinees; 18 inlinees without PGO data +; 0 inlinees with PGO data; 25 single block inlinees; 20 inlinees without PGO data ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def ; V01 arg1 [V01,T03] ( 5, 3.50) int -> r14 single-def ;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref -; V03 loc1 [V03,T31] ( 3, 1.50) int -> r13 -; V04 loc2 [V04,T32] ( 3, 1.50) long -> r12 +; V03 loc1 [V03,T33] ( 3, 1.50) int -> r13 +;* V04 loc2 [V04 ] ( 0, 0 ) long -> zero-ref ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def -; V07 loc5 [V07,T11] ( 5, 2.50) int -> rdi +; V07 loc5 [V07,T12] ( 5, 2.50) int -> rdi ; V08 loc6 [V08,T04] ( 10, 5 ) ubyte -> rdi ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V10 tmp1 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V11 tmp2 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V12 tmp3 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" ;* V13 tmp4 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" -; V14 tmp5 [V14,T17] ( 2, 2 ) int -> [rbp-0x2C] spill-single-def "impAppendStmt" +; V14 tmp5 [V14,T20] ( 2, 2 ) int -> [rbp-0x2C] spill-single-def "impAppendStmt" ;* V15 tmp6 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" -; V16 tmp7 [V16,T00] ( 19, 18 ) ref -> [rbp-0x88] class-hnd exact spill-single-def "NewObj constructor temp" +; V16 tmp7 [V16,T00] ( 19, 18 ) ref -> [rbp-0x98] class-hnd exact spill-single-def "NewObj constructor temp" ;* V17 tmp8 [V17 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "spilled call-like call argument" ;* V18 tmp9 [V18 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V19 tmp10 [V19 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V20 tmp11 [V20 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" -; V21 tmp12 [V21,T42] ( 2, 1 ) int -> rdi -; V22 tmp13 [V22,T54] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Single-def Box Helper" -; V23 tmp14 [V23,T57] ( 2, 0 ) ref -> r15 class-hnd exact single-def "impImportAndPushBox" -; V24 tmp15 [V24,T55] ( 3, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" -; V25 tmp16 [V25,T58] ( 2, 0 ) ref -> rbx class-hnd exact single-def "impAppendStmt" -; V26 tmp17 [V26,T56] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" +; V21 tmp12 [V21,T44] ( 2, 1 ) int -> rdi +; V22 tmp13 [V22,T57] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Single-def Box Helper" +; V23 tmp14 [V23,T60] ( 2, 0 ) ref -> r15 class-hnd exact single-def "impImportAndPushBox" +; V24 tmp15 [V24,T58] ( 3, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" +; V25 tmp16 [V25,T61] ( 2, 0 ) ref -> rbx class-hnd exact single-def "impAppendStmt" +; V26 tmp17 [V26,T59] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" ;* V27 tmp18 [V27 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" ;* V28 tmp19 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V29 tmp20 [V29,T18] ( 2, 2 ) int -> rax "Inline return value spill temp" +;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V30 tmp21 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V31 tmp22 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V32 tmp23 [V32 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V35 tmp26 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V39 tmp30 [V39 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -;* V40 tmp31 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V41 tmp32 [V41 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inlining Arg" -;* V42 tmp33 [V42 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" -;* V43 tmp34 [V43 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -;* V44 tmp35 [V44 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" -;* V45 tmp36 [V45 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V46 tmp37 [V46,T24] ( 3, 1.50) ref -> [rbp-0x90] class-hnd "Inline return value spill temp" -;* V47 tmp38 [V47 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inlining Arg" -; V48 tmp39 [V48,T07] ( 3, 3 ) ref -> [rbp-0x98] class-hnd exact spill-single-def "Inlining Arg" -;* V49 tmp40 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline return value spill temp" -;* V50 tmp41 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -; V51 tmp42 [V51 ] ( 2, 1 ) byref -> [rbp-0x38] must-init pinned "Inline stloc first use temp" -; V52 tmp43 [V52,T25] ( 3, 1.50) byref -> rax "Inline return value spill temp" +;* V35 tmp26 [V35 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V36 tmp27 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +; V37 tmp28 [V37,T13] ( 5, 2.50) long -> r12 "Inline return value spill temp" +;* V38 tmp29 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +; V39 tmp30 [V39,T34] ( 3, 1.50) ubyte -> r12 "Inline stloc first use temp" +;* V40 tmp31 [V40 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V41 tmp32 [V41 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" +; V42 tmp33 [V42 ] ( 2, 1 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +;* V43 tmp34 [V43 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +; V44 tmp35 [V44,T19] ( 2, 2 ) byref -> rdi single-def "Inlining Arg" +;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V46 tmp37 [V46 ] ( 2, 1 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +;* V47 tmp38 [V47 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V48 tmp39 [V48 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +; V49 tmp40 [V49,T26] ( 3, 1.50) ref -> [rbp-0xA0] class-hnd "Inline return value spill temp" +;* V50 tmp41 [V50 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inlining Arg" +; V51 tmp42 [V51,T07] ( 3, 3 ) ref -> [rbp-0xA8] class-hnd exact spill-single-def "Inlining Arg" +;* V52 tmp43 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline return value spill temp" ;* V53 tmp44 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -; V54 tmp45 [V54,T26] ( 3, 1.50) ref -> registers class-hnd "Inline return value spill temp" -;* V55 tmp46 [V55 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V56 tmp47 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V57 tmp48 [V57,T13] ( 4, 2 ) int -> [rbp-0x3C] spill-single-def "Inline stloc first use temp" -; V58 tmp49 [V58,T05] ( 4, 4 ) ref -> [rbp-0xA0] class-hnd exact spill-single-def "dup spill" -; V59 tmp50 [V59 ] ( 4, 2 ) byref -> [rbp-0x48] must-init pinned "Inline stloc first use temp" -;* V60 tmp51 [V60 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" -;* V61 tmp52 [V61 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" -;* V62 tmp53 [V62 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -;* V63 tmp54 [V63 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" -;* V64 tmp55 [V64 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V65 tmp56 [V65,T19] ( 2, 2 ) ubyte -> [rbp-0x4C] spill-single-def "Inlining Arg" +; V54 tmp45 [V54 ] ( 2, 1 ) byref -> [rbp-0x48] must-init pinned "Inline stloc first use temp" +; V55 tmp46 [V55,T27] ( 3, 1.50) byref -> rax "Inline return value spill temp" +;* V56 tmp47 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +; V57 tmp48 [V57,T28] ( 3, 1.50) ref -> registers class-hnd "Inline return value spill temp" +;* V58 tmp49 [V58 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V59 tmp50 [V59 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V60 tmp51 [V60,T15] ( 4, 2 ) int -> [rbp-0x4C] spill-single-def "Inline stloc first use temp" +; V61 tmp52 [V61,T05] ( 4, 4 ) ref -> [rbp-0xB0] class-hnd exact spill-single-def "dup spill" +; V62 tmp53 [V62 ] ( 4, 2 ) byref -> [rbp-0x58] must-init pinned "Inline stloc first use temp" +;* V63 tmp54 [V63 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" +;* V64 tmp55 [V64 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V65 tmp56 [V65 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V66 tmp57 [V66 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" ;* V67 tmp58 [V67 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -;* V68 tmp59 [V68 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" -;* V69 tmp60 [V69 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -;* V70 tmp61 [V70 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" -;* V71 tmp62 [V71 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V72 tmp63 [V72,T27] ( 3, 1.50) ref -> rsi class-hnd "Inline return value spill temp" -;* V73 tmp64 [V73 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inlining Arg" -; V74 tmp65 [V74,T08] ( 3, 3 ) ref -> rbx class-hnd exact single-def "Inlining Arg" -;* V75 tmp66 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline return value spill temp" -;* V76 tmp67 [V76 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -; V77 tmp68 [V77 ] ( 2, 1 ) byref -> [rbp-0x58] must-init pinned "Inline stloc first use temp" -; V78 tmp69 [V78,T28] ( 3, 1.50) byref -> r13 "Inline return value spill temp" +; V68 tmp59 [V68,T21] ( 2, 2 ) ubyte -> [rbp-0x5C] spill-single-def "Inlining Arg" +;* V69 tmp60 [V69 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V70 tmp61 [V70 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V71 tmp62 [V71 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V72 tmp63 [V72 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V73 tmp64 [V73 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V74 tmp65 [V74 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +; V75 tmp66 [V75,T29] ( 3, 1.50) ref -> rsi class-hnd "Inline return value spill temp" +;* V76 tmp67 [V76 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inlining Arg" +; V77 tmp68 [V77,T08] ( 3, 3 ) ref -> rbx class-hnd exact single-def "Inlining Arg" +;* V78 tmp69 [V78 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline return value spill temp" ;* V79 tmp70 [V79 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -; V80 tmp71 [V80,T29] ( 3, 1.50) ref -> rsi class-hnd "Inline return value spill temp" -;* V81 tmp72 [V81 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V82 tmp73 [V82 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V83 tmp74 [V83,T14] ( 4, 2 ) int -> r12 "Inline stloc first use temp" -; V84 tmp75 [V84,T06] ( 4, 4 ) ref -> [rbp-0xA8] class-hnd exact spill-single-def "dup spill" -; V85 tmp76 [V85 ] ( 4, 2 ) byref -> [rbp-0x60] must-init pinned "Inline stloc first use temp" -;* V86 tmp77 [V86 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" -; V87 tmp78 [V87,T01] ( 10, 6 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V88 tmp79 [V88,T02] ( 10, 6 ) int -> r15 single-def "field V00._length (fldOffset=0x8)" P-INDEP -;* V89 tmp80 [V89 ] ( 0, 0 ) byref -> zero-ref single-def "field V02._reference (fldOffset=0x0)" P-INDEP -;* V90 tmp81 [V90 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP -;* V91 tmp82 [V91 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP -;* V92 tmp83 [V92 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP -;* V93 tmp84 [V93 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP -;* V94 tmp85 [V94 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP -;* V95 tmp86 [V95 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP -;* V96 tmp87 [V96 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP -;* V97 tmp88 [V97 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP -;* V98 tmp89 [V98 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP -; V99 tmp90 [V99,T43] ( 2, 1 ) short -> [rbp-0x64] spill-single-def "field V17._offsetMinutes (fldOffset=0x0)" P-INDEP -; V100 tmp91 [V100,T44] ( 2, 1 ) long -> [rbp-0x70] spill-single-def "field V17._dateTime (fldOffset=0x8)" P-INDEP -;* V101 tmp92 [V101 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP -;* V102 tmp93 [V102 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP -;* V103 tmp94 [V103 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP -;* V104 tmp95 [V104 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP -;* V105 tmp96 [V105 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP -;* V106 tmp97 [V106 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP -; V107 tmp98 [V107,T12] ( 3, 2.50) byref -> r13 single-def "field V27._reference (fldOffset=0x0)" P-INDEP -;* V108 tmp99 [V108,T45] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP -;* V109 tmp100 [V109 ] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP -;* V110 tmp101 [V110 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP -;* V111 tmp102 [V111 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP -;* V112 tmp103 [V112 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP -;* V113 tmp104 [V113 ] ( 0, 0 ) byref -> zero-ref "field V35._reference (fldOffset=0x0)" P-INDEP -;* V114 tmp105 [V114 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP -; V115 tmp106 [V115,T34] ( 2, 1 ) byref -> rdi single-def "field V42._reference (fldOffset=0x0)" P-INDEP -;* V116 tmp107 [V116,T47] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP -;* V117 tmp108 [V117,T46] ( 0, 0 ) byref -> zero-ref single-def "field V44._reference (fldOffset=0x0)" P-INDEP -;* V118 tmp109 [V118,T48] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x8)" P-INDEP -; V119 tmp110 [V119,T35] ( 2, 1 ) byref -> rax single-def "field V47._reference (fldOffset=0x0)" P-INDEP -; V120 tmp111 [V120,T15] ( 4, 2 ) int -> [rbp-0x74] spill-single-def "field V47._length (fldOffset=0x8)" P-INDEP -;* V121 tmp112 [V121 ] ( 0, 0 ) byref -> zero-ref single-def "field V50._reference (fldOffset=0x0)" P-INDEP -;* V122 tmp113 [V122 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x8)" P-INDEP -;* V123 tmp114 [V123 ] ( 0, 0 ) byref -> zero-ref single-def "field V53._reference (fldOffset=0x0)" P-INDEP -;* V124 tmp115 [V124 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP -; V125 tmp116 [V125,T36] ( 2, 1 ) byref -> rdi single-def "field V61._reference (fldOffset=0x0)" P-INDEP -;* V126 tmp117 [V126,T49] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x8)" P-INDEP -; V127 tmp118 [V127,T37] ( 2, 1 ) byref -> [rbp-0xB0] spill-single-def "field V63._reference (fldOffset=0x0)" P-INDEP -;* V128 tmp119 [V128,T50] ( 0, 0 ) int -> zero-ref "field V63._length (fldOffset=0x8)" P-INDEP -; V129 tmp120 [V129,T38] ( 2, 1 ) byref -> rdi single-def "field V66._reference (fldOffset=0x0)" P-INDEP -;* V130 tmp121 [V130,T51] ( 0, 0 ) int -> zero-ref "field V66._length (fldOffset=0x8)" P-INDEP -; V131 tmp122 [V131,T39] ( 2, 1 ) byref -> rdi single-def "field V68._reference (fldOffset=0x0)" P-INDEP -;* V132 tmp123 [V132,T52] ( 0, 0 ) int -> zero-ref "field V68._length (fldOffset=0x8)" P-INDEP -; V133 tmp124 [V133,T40] ( 2, 1 ) byref -> rdi single-def "field V70._reference (fldOffset=0x0)" P-INDEP -;* V134 tmp125 [V134,T53] ( 0, 0 ) int -> zero-ref "field V70._length (fldOffset=0x8)" P-INDEP -; V135 tmp126 [V135,T41] ( 2, 1 ) byref -> rax single-def "field V73._reference (fldOffset=0x0)" P-INDEP -; V136 tmp127 [V136,T16] ( 4, 2 ) int -> r15 "field V73._length (fldOffset=0x8)" P-INDEP -;* V137 tmp128 [V137 ] ( 0, 0 ) byref -> zero-ref single-def "field V76._reference (fldOffset=0x0)" P-INDEP -;* V138 tmp129 [V138 ] ( 0, 0 ) int -> zero-ref "field V76._length (fldOffset=0x8)" P-INDEP -;* V139 tmp130 [V139 ] ( 0, 0 ) byref -> zero-ref single-def "field V79._reference (fldOffset=0x0)" P-INDEP -;* V140 tmp131 [V140 ] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x8)" P-INDEP -; V141 tmp132 [V141,T09] ( 3, 3 ) long -> [rbp-0x80] spill-single-def "Cast away GC" -; V142 tmp133 [V142,T20] ( 2, 2 ) long -> rsi "Cast away GC" -; V143 tmp134 [V143,T21] ( 2, 2 ) long -> rsi "argument with side effect" -; V144 tmp135 [V144,T59] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V145 tmp136 [V145,T60] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V146 tmp137 [V146,T10] ( 3, 3 ) long -> r13 "Cast away GC" -; V147 tmp138 [V147,T22] ( 2, 2 ) long -> rcx "Cast away GC" -; V148 tmp139 [V148,T23] ( 2, 2 ) long -> rcx "argument with side effect" -; V149 tmp140 [V149,T61] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V150 cse0 [V150,T30] ( 3, 1.50) ref -> [rbp-0xB8] spill-single-def "CSE #02: conservative" -; V151 cse1 [V151,T33] ( 3, 1.50) int -> rax "CSE #03: conservative" +; V80 tmp71 [V80 ] ( 2, 1 ) byref -> [rbp-0x68] must-init pinned "Inline stloc first use temp" +; V81 tmp72 [V81,T30] ( 3, 1.50) byref -> r13 "Inline return value spill temp" +;* V82 tmp73 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +; V83 tmp74 [V83,T31] ( 3, 1.50) ref -> rsi class-hnd "Inline return value spill temp" +;* V84 tmp75 [V84 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V85 tmp76 [V85 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V86 tmp77 [V86,T16] ( 4, 2 ) int -> r12 "Inline stloc first use temp" +; V87 tmp78 [V87,T06] ( 4, 4 ) ref -> [rbp-0xB8] class-hnd exact spill-single-def "dup spill" +; V88 tmp79 [V88 ] ( 4, 2 ) byref -> [rbp-0x70] must-init pinned "Inline stloc first use temp" +;* V89 tmp80 [V89 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" +; V90 tmp81 [V90,T01] ( 10, 6 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V91 tmp82 [V91,T02] ( 10, 6 ) int -> r15 single-def "field V00._length (fldOffset=0x8)" P-INDEP +;* V92 tmp83 [V92 ] ( 0, 0 ) byref -> zero-ref single-def "field V02._reference (fldOffset=0x0)" P-INDEP +;* V93 tmp84 [V93 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP +;* V94 tmp85 [V94 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP +;* V95 tmp86 [V95 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP +;* V96 tmp87 [V96 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP +;* V97 tmp88 [V97 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP +;* V98 tmp89 [V98 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP +;* V99 tmp90 [V99 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP +;* V100 tmp91 [V100 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP +;* V101 tmp92 [V101 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP +; V102 tmp93 [V102,T45] ( 2, 1 ) short -> [rbp-0x74] spill-single-def "field V17._offsetMinutes (fldOffset=0x0)" P-INDEP +; V103 tmp94 [V103,T46] ( 2, 1 ) long -> [rbp-0x80] spill-single-def "field V17._dateTime (fldOffset=0x8)" P-INDEP +;* V104 tmp95 [V104 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP +;* V105 tmp96 [V105 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP +;* V106 tmp97 [V106 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP +;* V107 tmp98 [V107 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP +;* V108 tmp99 [V108 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP +;* V109 tmp100 [V109 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP +; V110 tmp101 [V110,T14] ( 3, 2.50) byref -> r13 single-def "field V27._reference (fldOffset=0x0)" P-INDEP +;* V111 tmp102 [V111,T47] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP +;* V112 tmp103 [V112 ] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP +;* V113 tmp104 [V113 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP +;* V114 tmp105 [V114 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP +;* V115 tmp106 [V115 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP +; V116 tmp107 [V116,T11] ( 5, 2.50) byref -> rdi single-def "field V35._reference (fldOffset=0x0)" P-INDEP +;* V117 tmp108 [V117,T49] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP +;* V118 tmp109 [V118 ] ( 0, 0 ) byref -> zero-ref single-def "field V38._reference (fldOffset=0x0)" P-INDEP +;* V119 tmp110 [V119 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP +;* V120 tmp111 [V120 ] ( 0, 0 ) byref -> zero-ref "field V40._reference (fldOffset=0x0)" P-INDEP +;* V121 tmp112 [V121 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP +;* V122 tmp113 [V122 ] ( 0, 0 ) byref -> zero-ref "field V41._reference (fldOffset=0x0)" P-INDEP +;* V123 tmp114 [V123 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP +; V124 tmp115 [V124,T36] ( 2, 1 ) byref -> rdi single-def "field V43._reference (fldOffset=0x0)" P-INDEP +;* V125 tmp116 [V125,T50] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP +;* V126 tmp117 [V126,T48] ( 0, 0 ) byref -> zero-ref single-def "field V47._reference (fldOffset=0x0)" P-INDEP +;* V127 tmp118 [V127,T51] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP +; V128 tmp119 [V128,T37] ( 2, 1 ) byref -> rax single-def "field V50._reference (fldOffset=0x0)" P-INDEP +; V129 tmp120 [V129,T17] ( 4, 2 ) int -> [rbp-0x84] spill-single-def "field V50._length (fldOffset=0x8)" P-INDEP +;* V130 tmp121 [V130 ] ( 0, 0 ) byref -> zero-ref single-def "field V53._reference (fldOffset=0x0)" P-INDEP +;* V131 tmp122 [V131 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP +;* V132 tmp123 [V132 ] ( 0, 0 ) byref -> zero-ref single-def "field V56._reference (fldOffset=0x0)" P-INDEP +;* V133 tmp124 [V133 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP +; V134 tmp125 [V134,T38] ( 2, 1 ) byref -> rdi single-def "field V64._reference (fldOffset=0x0)" P-INDEP +;* V135 tmp126 [V135,T52] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x8)" P-INDEP +; V136 tmp127 [V136,T39] ( 2, 1 ) byref -> [rbp-0xC0] spill-single-def "field V66._reference (fldOffset=0x0)" P-INDEP +;* V137 tmp128 [V137,T53] ( 0, 0 ) int -> zero-ref "field V66._length (fldOffset=0x8)" P-INDEP +; V138 tmp129 [V138,T40] ( 2, 1 ) byref -> rdi single-def "field V69._reference (fldOffset=0x0)" P-INDEP +;* V139 tmp130 [V139,T54] ( 0, 0 ) int -> zero-ref "field V69._length (fldOffset=0x8)" P-INDEP +; V140 tmp131 [V140,T41] ( 2, 1 ) byref -> rdi single-def "field V71._reference (fldOffset=0x0)" P-INDEP +;* V141 tmp132 [V141,T55] ( 0, 0 ) int -> zero-ref "field V71._length (fldOffset=0x8)" P-INDEP +; V142 tmp133 [V142,T42] ( 2, 1 ) byref -> rdi single-def "field V73._reference (fldOffset=0x0)" P-INDEP +;* V143 tmp134 [V143,T56] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0x8)" P-INDEP +; V144 tmp135 [V144,T43] ( 2, 1 ) byref -> rax single-def "field V76._reference (fldOffset=0x0)" P-INDEP +; V145 tmp136 [V145,T18] ( 4, 2 ) int -> r15 "field V76._length (fldOffset=0x8)" P-INDEP +;* V146 tmp137 [V146 ] ( 0, 0 ) byref -> zero-ref single-def "field V79._reference (fldOffset=0x0)" P-INDEP +;* V147 tmp138 [V147 ] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x8)" P-INDEP +;* V148 tmp139 [V148 ] ( 0, 0 ) byref -> zero-ref single-def "field V82._reference (fldOffset=0x0)" P-INDEP +;* V149 tmp140 [V149 ] ( 0, 0 ) int -> zero-ref "field V82._length (fldOffset=0x8)" P-INDEP +; V150 tmp141 [V150,T09] ( 3, 3 ) long -> [rbp-0x90] spill-single-def "Cast away GC" +; V151 tmp142 [V151,T22] ( 2, 2 ) long -> rsi "Cast away GC" +; V152 tmp143 [V152,T23] ( 2, 2 ) long -> rsi "argument with side effect" +; V153 tmp144 [V153,T62] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V154 tmp145 [V154,T63] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V155 tmp146 [V155,T10] ( 3, 3 ) long -> r13 "Cast away GC" +; V156 tmp147 [V156,T24] ( 2, 2 ) long -> rcx "Cast away GC" +; V157 tmp148 [V157,T25] ( 2, 2 ) long -> rcx "argument with side effect" +; V158 tmp149 [V158,T64] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V159 cse0 [V159,T32] ( 3, 1.50) ref -> [rbp-0xC8] spill-single-def "CSE #02: conservative" +; V160 cse1 [V160,T35] ( 3, 1.50) int -> rax "CSE #03: conservative" ; -; Lcl frame size = 152 +; Lcl frame size = 168 G_M46274_IG01: push rbp push r15 push r14 push r13 push r12 push rbx - sub rsp, 152 - lea rbp, [rsp+0xC0] + sub rsp, 168 + lea rbp, [rsp+0xD0] vxorps xmm8, xmm8, xmm8 - vmovdqu ymmword ptr [rbp-0x60], ymm8 - vmovdqa xmmword ptr [rbp-0x40], xmm8 + vmovdqu ymmword ptr [rbp-0x70], ymm8 + vmovdqa xmmword ptr [rbp-0x50], xmm8 mov rbx, rdi mov r15d, esi mov r14d, edx ;; size=49 bbWeight=1 PerfScore 11.83 G_M46274_IG02: cmp r15d, 156 - jb G_M46274_IG29 + jb G_M46274_IG35 lea r13, bword ptr [rbx+0x94] mov rdi, r13 xor esi, esi mov edx, 8 mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:NonPackedIndexOfValueType[ubyte,System.SpanHelpers+Negate`1[ubyte]](byref,ubyte,int):int call [rax]System.SpanHelpers:NonPackedIndexOfValueType[ubyte,System.SpanHelpers+Negate`1[ubyte]](byref,ubyte,int):int test eax, eax jge SHORT G_M46274_IG05 ;; size=46 bbWeight=1 PerfScore 7.00 G_M46274_IG03: xor rax, rax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M46274_IG04: - add rsp, 152 + add rsp, 168 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=18 bbWeight=0.50 PerfScore 2.12 G_M46274_IG05: mov rdi, r13 mov esi, 8 mov rax, 0xD1FFAB1E ; code for System.Formats.Tar.TarHelpers:ParseOctal[uint](System.ReadOnlySpan`1[ubyte]):uint call [rax]System.Formats.Tar.TarHelpers:ParseOctal[uint](System.ReadOnlySpan`1[ubyte]):uint mov r13d, eax test r13d, r13d je SHORT G_M46274_IG03 cmp r15d, 136 - jb G_M46274_IG29 + jb G_M46274_IG35 lea rdi, bword ptr [rbx+0x7C] + movzx r12, byte ptr [rdi] + cmp r12d, 255 + jne SHORT G_M46274_IG06 mov esi, 12 - mov rax, 0xD1FFAB1E ; code for System.Formats.Tar.TarHelpers:ParseNumeric[long](System.ReadOnlySpan`1[ubyte]):long - call [rax]System.Formats.Tar.TarHelpers:ParseNumeric[long](System.ReadOnlySpan`1[ubyte]):long + lea rcx, [rbp-0x38] + xor edx, edx + mov rax, 0xD1FFAB1E ; code for System.Int64:System.Numerics.IBinaryInteger.TryReadBigEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte + call [rax]System.Int64:System.Numerics.IBinaryInteger.TryReadBigEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte + test eax, eax + jne SHORT G_M46274_IG09 + jmp G_M46274_IG34 + ;; size=90 bbWeight=0.50 PerfScore 8.88 +G_M46274_IG06: + cmp r12d, 128 + jne SHORT G_M46274_IG07 + inc rdi + mov esi, 11 + lea rcx, [rbp-0x40] + mov edx, 1 + mov rax, 0xD1FFAB1E ; code for System.Int64:System.Numerics.IBinaryInteger.TryReadBigEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte + call [rax]System.Int64:System.Numerics.IBinaryInteger.TryReadBigEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte + test eax, eax + jne SHORT G_M46274_IG08 + jmp G_M46274_IG34 + ;; size=47 bbWeight=0.50 PerfScore 4.50 +G_M46274_IG07: + mov esi, 12 + mov rax, 0xD1FFAB1E ; code for System.Formats.Tar.TarHelpers:ParseOctal[long](System.ReadOnlySpan`1[ubyte]):long + call [rax]System.Formats.Tar.TarHelpers:ParseOctal[long](System.ReadOnlySpan`1[ubyte]):long mov r12, rax + jmp SHORT G_M46274_IG10 + ;; size=22 bbWeight=0.50 PerfScore 2.88 +G_M46274_IG08: + mov r12, qword ptr [rbp-0x40] + jmp SHORT G_M46274_IG10 + ;; size=6 bbWeight=0.50 PerfScore 1.50 +G_M46274_IG09: + mov r12, qword ptr [rbp-0x38] + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M46274_IG10: test r12, r12 - jl G_M46274_IG28 + jl G_M46274_IG33 cmp r15d, 100 - jb G_M46274_IG29 + jb G_M46274_IG35 mov rdi, 0xD1FFAB1E ; const ptr mov rax, gword ptr [rdi] - mov gword ptr [rbp-0xB8], rax - mov gword ptr [rbp-0x98], rax + mov gword ptr [rbp-0xC8], rax + mov gword ptr [rbp-0xA8], rax mov rdi, rbx mov esi, 100 mov rdx, 0xD1FFAB1E ; code for System.Formats.Tar.TarHelpers:TrimEndingNullsAndSpaces(System.ReadOnlySpan`1[ubyte]):System.ReadOnlySpan`1[ubyte] call [rdx]System.Formats.Tar.TarHelpers:TrimEndingNullsAndSpaces(System.ReadOnlySpan`1[ubyte]):System.ReadOnlySpan`1[ubyte] mov ecx, edx - mov dword ptr [rbp-0x74], edx + mov dword ptr [rbp-0x84], edx test ecx, ecx - je SHORT G_M46274_IG06 - mov bword ptr [rbp-0x38], rax - mov qword ptr [rbp-0x80], rax - mov rdi, gword ptr [rbp-0x98] + je SHORT G_M46274_IG11 + mov bword ptr [rbp-0x48], rax + mov qword ptr [rbp-0x90], rax + mov rdi, gword ptr [rbp-0xA8] mov rsi, rax mov edx, ecx mov r8, 0xD1FFAB1E ; code for System.Text.UTF8Encoding:GetCharCount(ulong,int):int:this call [r8]System.Text.UTF8Encoding:GetCharCount(ulong,int):int:this - mov dword ptr [rbp-0x3C], eax + mov dword ptr [rbp-0x4C], eax test eax, eax - jne SHORT G_M46274_IG07 + jne SHORT G_M46274_IG12 mov rcx, 0xD1FFAB1E ; '' - jmp SHORT G_M46274_IG08 - ;; size=192 bbWeight=0.50 PerfScore 17.50 -G_M46274_IG06: + jmp SHORT G_M46274_IG13 + ;; size=133 bbWeight=0.50 PerfScore 12.12 +G_M46274_IG11: mov rdx, 0xD1FFAB1E ; '' - jmp SHORT G_M46274_IG10 + jmp SHORT G_M46274_IG15 ;; size=12 bbWeight=0.50 PerfScore 1.12 -G_M46274_IG07: +G_M46274_IG12: mov edi, eax call System.String:FastAllocateString(int):System.String mov rcx, rax - mov gword ptr [rbp-0xA0], rcx + mov gword ptr [rbp-0xB0], rcx cmp byte ptr [rcx], cl lea rsi, bword ptr [rcx+0x0C] - mov bword ptr [rbp-0x48], rsi - mov rsi, bword ptr [rbp-0x48] + mov bword ptr [rbp-0x58], rsi + mov rsi, bword ptr [rbp-0x58] mov rcx, rsi - mov rsi, qword ptr [rbp-0x80] - mov edx, dword ptr [rbp-0x74] - mov rdi, gword ptr [rbp-0x98] - mov r8d, dword ptr [rbp-0x3C] + mov rsi, qword ptr [rbp-0x90] + mov edx, dword ptr [rbp-0x84] + mov rdi, gword ptr [rbp-0xA8] + mov r8d, dword ptr [rbp-0x4C] mov rax, 0xD1FFAB1E ; code for System.Text.UTF8Encoding:GetChars(ulong,int,ulong,int):int:this call [rax]System.Text.UTF8Encoding:GetChars(ulong,int,ulong,int):int:this xor edi, edi - mov bword ptr [rbp-0x48], rdi - mov rcx, gword ptr [rbp-0xA0] + mov bword ptr [rbp-0x58], rdi + mov rcx, gword ptr [rbp-0xB0] mov rdx, rcx mov rcx, rdx - ;; size=83 bbWeight=0.50 PerfScore 9.12 -G_M46274_IG08: + ;; size=89 bbWeight=0.50 PerfScore 9.12 +G_M46274_IG13: xor rdi, rdi - mov bword ptr [rbp-0x48], rdi + mov bword ptr [rbp-0x58], rdi ;; size=6 bbWeight=0.50 PerfScore 0.62 -G_M46274_IG09: - mov bword ptr [rbp-0x38], rdi - mov gword ptr [rbp-0x90], rcx - mov rdx, gword ptr [rbp-0x90] +G_M46274_IG14: + mov bword ptr [rbp-0x48], rdi + mov gword ptr [rbp-0xA0], rcx + mov rdx, gword ptr [rbp-0xA0] ;; size=18 bbWeight=0.50 PerfScore 1.50 -G_M46274_IG10: +G_M46274_IG15: cmp r15d, 108 - mov gword ptr [rbp-0x90], rdx - jb G_M46274_IG29 + mov gword ptr [rbp-0xA0], rdx + jb G_M46274_IG35 lea rdi, bword ptr [rbx+0x64] mov esi, 8 mov rax, 0xD1FFAB1E ; code for System.Formats.Tar.TarHelpers:ParseNumeric[int](System.ReadOnlySpan`1[ubyte]):int call [rax]System.Formats.Tar.TarHelpers:ParseNumeric[int](System.ReadOnlySpan`1[ubyte]):int mov dword ptr [rbp-0x2C], eax cmp r15d, 148 - jb G_M46274_IG29 + jb G_M46274_IG35 lea rcx, bword ptr [rbx+0x88] - mov bword ptr [rbp-0xB0], rcx + mov bword ptr [rbp-0xC0], rcx mov rdi, 0xD1FFAB1E ; System.Formats.Tar.TarHeader call CORINFO_HELP_NEWSFAST - mov gword ptr [rbp-0x88], rax - mov rdi, bword ptr [rbp-0xB0] + mov gword ptr [rbp-0x98], rax + mov rdi, bword ptr [rbp-0xC0] mov esi, 12 mov rcx, 0xD1FFAB1E ; code for System.Formats.Tar.TarHelpers:ParseNumeric[long](System.ReadOnlySpan`1[ubyte]):long call [rcx]System.Formats.Tar.TarHelpers:ParseNumeric[long](System.ReadOnlySpan`1[ubyte]):long mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.Formats.Tar.TarHelpers:GetDateTimeOffsetFromSecondsSinceEpoch(long):System.DateTimeOffset call [rax]System.Formats.Tar.TarHelpers:GetDateTimeOffsetFromSecondsSinceEpoch(long):System.DateTimeOffset - mov word ptr [rbp-0x64], ax - mov qword ptr [rbp-0x70], rdx + mov word ptr [rbp-0x74], ax + mov qword ptr [rbp-0x80], rdx cmp r15d, 156 - jbe G_M46274_IG30 + jbe G_M46274_IG36 movzx rdx, byte ptr [rbx+0x9C] - mov dword ptr [rbp-0x4C], edx - mov r8, gword ptr [rbp-0x88] + mov dword ptr [rbp-0x5C], edx + mov r8, gword ptr [rbp-0x98] mov dword ptr [r8+0x68], r14d lea rdi, bword ptr [r8+0x10] - mov rsi, gword ptr [rbp-0x90] + mov rsi, gword ptr [rbp-0xA0] call CORINFO_HELP_ASSIGN_REF - mov rax, gword ptr [rbp-0x88] + mov rax, gword ptr [rbp-0x98] mov edi, dword ptr [rbp-0x2C] mov dword ptr [rax+0x6C], edi - movsx rdi, word ptr [rbp-0x64] + movsx rdi, word ptr [rbp-0x74] mov word ptr [rax+0x88], di - mov rdi, qword ptr [rbp-0x70] + mov rdi, qword ptr [rbp-0x80] mov qword ptr [rax+0x90], rdi - mov edi, dword ptr [rbp-0x4C] + mov edi, dword ptr [rbp-0x5C] mov byte ptr [rax+0x84], dil mov edi, r14d mov rcx, 0xD1FFAB1E ; code for System.Formats.Tar.TarHeader:GetMagicForFormat(int):System.String call [rcx]System.Formats.Tar.TarHeader:GetMagicForFormat(int):System.String ;; size=248 bbWeight=0.50 PerfScore 22.75 -G_M46274_IG11: - mov rcx, gword ptr [rbp-0x88] +G_M46274_IG16: + mov rcx, gword ptr [rbp-0x98] lea rdi, bword ptr [rcx+0x20] mov rsi, rax call CORINFO_HELP_ASSIGN_REF mov edi, r14d mov rax, 0xD1FFAB1E ; code for System.Formats.Tar.TarHeader:GetVersionForFormat(int):System.String call [rax]System.Formats.Tar.TarHeader:GetVersionForFormat(int):System.String - mov r14, gword ptr [rbp-0x88] + mov r14, gword ptr [rbp-0x98] lea rdi, bword ptr [r14+0x28] mov rsi, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [r14+0x78], r13d mov qword ptr [r14+0x60], r12 cmp r15d, 116 - jb G_M46274_IG29 + jb G_M46274_IG35 lea rdi, bword ptr [rbx+0x6C] mov esi, 8 mov rax, 0xD1FFAB1E ; code for System.Formats.Tar.TarHelpers:ParseNumeric[int](System.ReadOnlySpan`1[ubyte]):int call [rax]System.Formats.Tar.TarHelpers:ParseNumeric[int](System.ReadOnlySpan`1[ubyte]):int mov dword ptr [r14+0x70], eax cmp r15d, 124 - jb G_M46274_IG29 + jb G_M46274_IG35 lea rdi, bword ptr [rbx+0x74] mov esi, 8 mov rax, 0xD1FFAB1E ; code for System.Formats.Tar.TarHelpers:ParseNumeric[int](System.ReadOnlySpan`1[ubyte]):int call [rax]System.Formats.Tar.TarHelpers:ParseNumeric[int](System.ReadOnlySpan`1[ubyte]):int mov dword ptr [r14+0x74], eax cmp r15d, 257 - jb G_M46274_IG29 + jb G_M46274_IG35 lea rdi, bword ptr [rbx+0x9D] - mov rbx, gword ptr [rbp-0xB8] + mov rbx, gword ptr [rbp-0xC8] mov esi, 100 mov rax, 0xD1FFAB1E ; code for System.Formats.Tar.TarHelpers:TrimEndingNullsAndSpaces(System.ReadOnlySpan`1[ubyte]):System.ReadOnlySpan`1[ubyte] call [rax]System.Formats.Tar.TarHelpers:TrimEndingNullsAndSpaces(System.ReadOnlySpan`1[ubyte]):System.ReadOnlySpan`1[ubyte] mov r15d, edx test r15d, r15d - je SHORT G_M46274_IG13 + je SHORT G_M46274_IG18 mov r13, rax - mov bword ptr [rbp-0x58], r13 + mov bword ptr [rbp-0x68], r13 mov rdi, rbx mov rsi, r13 mov edx, r15d mov rax, 0xD1FFAB1E ; code for System.Text.UTF8Encoding:GetCharCount(ulong,int):int:this call [rax]System.Text.UTF8Encoding:GetCharCount(ulong,int):int:this mov r12d, eax ;; size=214 bbWeight=0.50 PerfScore 18.38 -G_M46274_IG12: +G_M46274_IG17: test r12d, r12d - jne SHORT G_M46274_IG14 + jne SHORT G_M46274_IG19 mov rsi, 0xD1FFAB1E ; '' - jmp SHORT G_M46274_IG15 + jmp SHORT G_M46274_IG20 ;; size=17 bbWeight=0.50 PerfScore 1.75 -G_M46274_IG13: +G_M46274_IG18: mov rsi, 0xD1FFAB1E ; '' - jmp SHORT G_M46274_IG17 + jmp SHORT G_M46274_IG22 ;; size=12 bbWeight=0.50 PerfScore 1.12 -G_M46274_IG14: +G_M46274_IG19: mov edi, r12d call System.String:FastAllocateString(int):System.String mov rsi, rax - mov gword ptr [rbp-0xA8], rsi + mov gword ptr [rbp-0xB8], rsi cmp byte ptr [rsi], sil lea rcx, bword ptr [rsi+0x0C] - mov bword ptr [rbp-0x60], rcx - mov rcx, bword ptr [rbp-0x60] + mov bword ptr [rbp-0x70], rcx + mov rcx, bword ptr [rbp-0x70] mov rsi, r13 mov edx, r15d mov rdi, rbx mov r8d, r12d mov rax, 0xD1FFAB1E ; code for System.Text.UTF8Encoding:GetChars(ulong,int,ulong,int):int:this call [rax]System.Text.UTF8Encoding:GetChars(ulong,int,ulong,int):int:this xor edi, edi - mov bword ptr [rbp-0x60], rdi - mov rbx, gword ptr [rbp-0xA8] + mov bword ptr [rbp-0x70], rdi + mov rbx, gword ptr [rbp-0xB8] mov rsi, rbx ;; size=73 bbWeight=0.50 PerfScore 7.38 -G_M46274_IG15: +G_M46274_IG20: xor rdi, rdi - mov bword ptr [rbp-0x60], rdi + mov bword ptr [rbp-0x70], rdi ;; size=6 bbWeight=0.50 PerfScore 0.62 -G_M46274_IG16: - mov bword ptr [rbp-0x58], rdi +G_M46274_IG21: + mov bword ptr [rbp-0x68], rdi ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M46274_IG17: +G_M46274_IG22: lea rdi, bword ptr [r14+0x18] call CORINFO_HELP_ASSIGN_REF cmp dword ptr [r14+0x68], 0 - jne SHORT G_M46274_IG25 + jne SHORT G_M46274_IG30 movzx rax, byte ptr [r14+0x84] mov edi, eax cmp edi, 78 - ja SHORT G_M46274_IG19 + ja SHORT G_M46274_IG24 test edi, edi - je SHORT G_M46274_IG23 + je SHORT G_M46274_IG28 cmp edi, 68 - je SHORT G_M46274_IG20 + je SHORT G_M46274_IG25 add edi, -75 cmp edi, 3 - jbe SHORT G_M46274_IG20 + jbe SHORT G_M46274_IG25 ;; size=48 bbWeight=0.50 PerfScore 6.50 -G_M46274_IG18: +G_M46274_IG23: mov edi, 2 mov ecx, 1 cmp eax, 48 cmovne edi, ecx - jmp SHORT G_M46274_IG24 + jmp SHORT G_M46274_IG29 ;; size=18 bbWeight=0.50 PerfScore 1.50 -G_M46274_IG19: +G_M46274_IG24: cmp edi, 86 - ja SHORT G_M46274_IG21 + ja SHORT G_M46274_IG26 cmp edi, 83 - je SHORT G_M46274_IG27 + je SHORT G_M46274_IG32 cmp edi, 86 - jne SHORT G_M46274_IG18 + jne SHORT G_M46274_IG23 ;; size=15 bbWeight=0.50 PerfScore 1.88 -G_M46274_IG20: +G_M46274_IG25: mov edi, 4 - jmp SHORT G_M46274_IG24 + jmp SHORT G_M46274_IG29 ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M46274_IG21: +G_M46274_IG26: cmp edi, 103 - je SHORT G_M46274_IG22 + je SHORT G_M46274_IG27 cmp edi, 120 - jne SHORT G_M46274_IG18 + jne SHORT G_M46274_IG23 ;; size=10 bbWeight=0.50 PerfScore 1.25 -G_M46274_IG22: +G_M46274_IG27: mov edi, 3 - jmp SHORT G_M46274_IG24 + jmp SHORT G_M46274_IG29 ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M46274_IG23: +G_M46274_IG28: mov edi, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M46274_IG24: +G_M46274_IG29: mov dword ptr [r14+0x68], edi ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M46274_IG25: +G_M46274_IG30: mov rax, r14 ;; size=3 bbWeight=0.50 PerfScore 0.12 -G_M46274_IG26: - add rsp, 152 +G_M46274_IG31: + add rsp, 168 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=18 bbWeight=0.50 PerfScore 2.12 -G_M46274_IG27: +G_M46274_IG32: mov rdi, 0xD1FFAB1E ; System.Formats.Tar.TarEntryType call CORINFO_HELP_NEWSFAST mov rbx, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_TarEntryTypeNotSupported():System.String call [rax]System.SR:get_TarEntryTypeNotSupported():System.String mov r15, rax movzx rdi, byte ptr [r14+0x84] mov byte ptr [rbx+0x08], dil mov rdi, 0xD1FFAB1E ; System.NotSupportedException call CORINFO_HELP_NEWSFAST mov r14, rax mov rsi, rbx mov rdi, r15 mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object):System.String call [rax]System.SR:Format(System.String,System.Object):System.String mov rsi, rax mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.NotSupportedException:.ctor(System.String):this call [rax]System.NotSupportedException:.ctor(System.String):this mov rdi, r14 call CORINFO_HELP_THROW int3 ;; size=108 bbWeight=0 PerfScore 0.00 -G_M46274_IG28: +G_M46274_IG33: mov rax, 0xD1FFAB1E ; code for System.SR:get_TarSizeFieldNegative():System.String call [rax]System.SR:get_TarSizeFieldNegative():System.String mov rbx, rax mov rdi, 0xD1FFAB1E ; System.IO.InvalidDataException call CORINFO_HELP_NEWSFAST mov r15, rax mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[System.Object] call CORINFO_HELP_GET_GCSTATIC_BASE mov rsi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[System.Object]:Value mov rsi, gword ptr [rsi] mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object[]):System.String call [rax]System.SR:Format(System.String,System.Object[]):System.String mov rsi, rax mov rdi, r15 mov rax, 0xD1FFAB1E ; code for System.IO.InvalidDataException:.ctor(System.String):this call [rax]System.IO.InvalidDataException:.ctor(System.String):this mov rdi, r15 call CORINFO_HELP_THROW int3 ;; size=103 bbWeight=0 PerfScore 0.00 -G_M46274_IG29: +G_M46274_IG34: + mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowOverflowException() + call [rax]System.ThrowHelper:ThrowOverflowException() + int3 + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M46274_IG35: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException() call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 -G_M46274_IG30: +G_M46274_IG36: call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00 -; Total bytes of code 1365, prolog size 40, PerfScore 119.71, instruction count 311, allocated bytes for code 1365 (MethodHash=bab94b3d) for method System.Formats.Tar.TarHeader:TryReadCommonAttributes(System.ReadOnlySpan`1[ubyte],int):System.Formats.Tar.TarHeader (FullOpts) +; Total bytes of code 1494, prolog size 40, PerfScore 132.58, instruction count 340, allocated bytes for code 1494 (MethodHash=bab94b3d) for method System.Formats.Tar.TarHeader:TryReadCommonAttributes(System.ReadOnlySpan`1[ubyte],int):System.Formats.Tar.TarHeader (FullOpts) ```

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

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

MihuBot commented 1 month ago

Top method improvements

-9 (-3.49 % of base) - System.SByte:System.Numerics.IBinaryInteger.TryReadBigEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte ```diff ; Assembly listing for method System.SByte:System.Numerics.IBinaryInteger.TryReadBigEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte (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; 12 single block inlinees; 5 inlinees without PGO data +; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00 ] ( 14, 9.50) struct (16) [rbp-0x28] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ; V01 arg1 [V01,T03] ( 6, 4 ) ubyte -> r15 ; V02 arg2 [V02,T02] ( 6, 4 ) byref -> rbx single-def ; V03 loc0 [V03,T06] ( 3, 2 ) byte -> r14 -; V04 loc1 [V04,T05] ( 4, 2 ) byte -> rdi +; V04 loc1 [V04,T05] ( 4, 2 ) byte -> rsi ;* V05 loc2 [V05 ] ( 0, 0 ) byref -> zero-ref ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ; V08 tmp2 [V08,T07] ( 2, 2 ) int -> rax "Span.get_Item index" ; V09 tmp3 [V09,T04] ( 3, 3 ) int -> rdx "Inlining Arg" ;* V10 tmp4 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V11 tmp5 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V12 tmp6 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V13 tmp7 [V13,T10] ( 2, 1 ) int -> rax "Inline return value spill temp" +;* V13 tmp7 [V13 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V14 tmp8 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -; V15 tmp9 [V15,T08] ( 2, 2 ) ubyte -> rax "Inlining Arg" +;* V15 tmp9 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp10 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V17 tmp11 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -;* V18 tmp12 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V19 tmp13 [V19 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V20 tmp14 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V21 tmp15 [V21 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V22 tmp16 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V23 tmp17 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V24 tmp18 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -;* V25 tmp19 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V26 tmp20 [V26 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inlining Arg" -;* V27 tmp21 [V27 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" -;* V28 tmp22 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -; V29 tmp23 [V29,T01] ( 9, 6 ) byref -> [rbp-0x28] do-not-enreg[] single-def "field V00._reference (fldOffset=0x0)" P-DEP -; V30 tmp24 [V30,T00] ( 10, 7 ) int -> [rbp-0x20] do-not-enreg[] single-def "field V00._length (fldOffset=0x8)" P-DEP -;* V31 tmp25 [V31 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP -;* V32 tmp26 [V32 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP -; V33 tmp27 [V33,T09] ( 2, 1 ) byref -> rsi single-def "field V10._reference (fldOffset=0x0)" P-INDEP -;* V34 tmp28 [V34 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP -;* V35 tmp29 [V35 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP -;* V36 tmp30 [V36 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP -;* V37 tmp31 [V37 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP -;* V38 tmp32 [V38 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP -;* V39 tmp33 [V39 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP -;* V40 tmp34 [V40 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP -;* V41 tmp35 [V41 ] ( 0, 0 ) byref -> zero-ref single-def "field V28._reference (fldOffset=0x0)" P-INDEP -;* V42 tmp36 [V42 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP +;* V18 tmp12 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V19 tmp13 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V20 tmp14 [V20 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V21 tmp15 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V22 tmp16 [V22 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" +;* V23 tmp17 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +; V24 tmp18 [V24,T01] ( 9, 6 ) byref -> [rbp-0x28] do-not-enreg[] single-def "field V00._reference (fldOffset=0x0)" P-DEP +; V25 tmp19 [V25,T00] ( 10, 7 ) int -> [rbp-0x20] do-not-enreg[] single-def "field V00._length (fldOffset=0x8)" P-DEP +;* V26 tmp20 [V26 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP +;* V27 tmp21 [V27 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP +; V28 tmp22 [V28,T08] ( 2, 1 ) byref -> rdi single-def "field V10._reference (fldOffset=0x0)" P-INDEP +;* V29 tmp23 [V29 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP +;* V30 tmp24 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP +;* V31 tmp25 [V31 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP +;* V32 tmp26 [V32 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP +;* V33 tmp27 [V33 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP +;* V34 tmp28 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP +;* V35 tmp29 [V35 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP ; ; Lcl frame size = 24 G_M2049_IG01: push rbp push r15 push r14 push rbx sub rsp, 24 lea rbp, [rsp+0x30] mov bword ptr [rbp-0x28], rdi mov qword ptr [rbp-0x20], rsi mov r15d, edx mov rbx, rcx ;; size=29 bbWeight=1 PerfScore 7.25 G_M2049_IG02: xor r14d, r14d cmp dword ptr [rbp-0x20], 0 je G_M2049_IG10 ;; size=13 bbWeight=1 PerfScore 3.25 G_M2049_IG03: mov rax, bword ptr [rbp-0x28] movzx rax, byte ptr [rax] movsx rax, al sar eax, 31 - movsx rdi, al + movsx rsi, al movzx r15, r15b - test edi, edi + test esi, esi sete al movzx rax, al or r15d, eax test r15b, r15b je SHORT G_M2049_IG05 - test edi, edi + test esi, esi jge SHORT G_M2049_IG05 mov byte ptr [rbx], 0 xor eax, eax ;; size=47 bbWeight=0.50 PerfScore 4.88 G_M2049_IG04: add rsp, 24 pop rbx pop r14 pop r15 pop rbp ret ;; size=11 bbWeight=0.50 PerfScore 1.62 G_M2049_IG05: cmp dword ptr [rbp-0x20], 1 jle SHORT G_M2049_IG09 mov edx, dword ptr [rbp-0x20] dec edx cmp edx, dword ptr [rbp-0x20] - ja G_M2049_IG12 - mov rsi, bword ptr [rbp-0x28] - movzx rax, dil - mov rdi, rsi - mov esi, eax + ja SHORT G_M2049_IG12 + mov rdi, bword ptr [rbp-0x28] + movzx rsi, sil mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:NonPackedIndexOfValueType[ubyte,System.SpanHelpers+Negate`1[ubyte]](byref,ubyte,int):int call [rax]System.SpanHelpers:NonPackedIndexOfValueType[ubyte,System.SpanHelpers+Negate`1[ubyte]](byref,ubyte,int):int test eax, eax jl SHORT G_M2049_IG07 mov byte ptr [rbx], 0 xor eax, eax - ;; size=54 bbWeight=0.50 PerfScore 7.38 + ;; size=45 bbWeight=0.50 PerfScore 7.12 G_M2049_IG06: add rsp, 24 pop rbx pop r14 pop r15 pop rbp ret ;; size=11 bbWeight=0.50 PerfScore 1.62 G_M2049_IG07: mov eax, dword ptr [rbp-0x20] dec eax mov rcx, bword ptr [rbp-0x28] movzx rax, byte ptr [rcx+rax] movsx rax, al shr eax, 31 movzx rcx, r15b cmp eax, ecx jne SHORT G_M2049_IG09 mov byte ptr [rbx], 0 xor eax, eax ;; size=33 bbWeight=0.50 PerfScore 3.88 G_M2049_IG08: add rsp, 24 pop rbx pop r14 pop r15 pop rbp ret ;; size=11 bbWeight=0.50 PerfScore 1.62 G_M2049_IG09: mov rax, bword ptr [rbp-0x28] mov ecx, dword ptr [rbp-0x20] dec ecx movsxd rcx, ecx movsx r14, byte ptr [rax+rcx] ;; size=17 bbWeight=0.50 PerfScore 3.25 G_M2049_IG10: mov byte ptr [rbx], r14b mov eax, 1 ;; size=8 bbWeight=0.50 PerfScore 0.62 G_M2049_IG11: add rsp, 24 pop rbx pop r14 pop r15 pop rbp ret ;; size=11 bbWeight=0.50 PerfScore 1.62 G_M2049_IG12: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException() call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 -; Total bytes of code 258, prolog size 15, PerfScore 37.00, instruction count 90, allocated bytes for code 258 (MethodHash=b761f7fe) for method System.SByte:System.Numerics.IBinaryInteger.TryReadBigEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte (FullOpts) +; Total bytes of code 249, prolog size 15, PerfScore 36.75, instruction count 88, allocated bytes for code 249 (MethodHash=b761f7fe) for method System.SByte:System.Numerics.IBinaryInteger.TryReadBigEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte (FullOpts) ```
-5 (-1.07 % of base) - System.Int128:System.Numerics.IBinaryInteger.TryReadBigEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte ```diff ; Assembly listing for method System.Int128:System.Numerics.IBinaryInteger.TryReadBigEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data -; 0 inlinees with PGO data; 30 single block inlinees; 8 inlinees without PGO data +; 0 inlinees with PGO data; 26 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00 ] ( 20, 16 ) struct (16) [rbp-0x30] do-not-enreg[SFA] multireg-arg ld-addr-op single-def ; V01 arg1 [V01,T14] ( 5, 3.50) ubyte -> rdx ; V02 arg2 [V02,T12] ( 7, 4.50) byref -> rbx single-def ;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op -; V04 loc1 [V04,T18] ( 4, 2 ) byte -> rdi +; V04 loc1 [V04,T18] ( 4, 2 ) byte -> rsi ; V05 loc2 [V05,T15] ( 2, 4.50) byref -> rax single-def ;* V06 loc3 [V06 ] ( 0, 0 ) byref -> zero-ref ; V07 loc4 [V07,T00] ( 5, 16.50) int -> rcx ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" ;* V10 tmp2 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V11 tmp3 [V11 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" ;* V12 tmp4 [V12 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V13 tmp5 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V14 tmp6 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V15 tmp7 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ; V16 tmp8 [V16,T22] ( 2, 2 ) int -> rax "Span.get_Item index" ; V17 tmp9 [V17,T17] ( 3, 3 ) int -> rdx "Inlining Arg" ;* V18 tmp10 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V19 tmp11 [V19 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V20 tmp12 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V21 tmp13 [V21,T26] ( 2, 1 ) int -> rax "Inline return value spill temp" +;* V21 tmp13 [V21 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V22 tmp14 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -; V23 tmp15 [V23,T23] ( 2, 2 ) ubyte -> rax "Inlining Arg" +;* V23 tmp15 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp16 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V25 tmp17 [V25 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -;* V26 tmp18 [V26 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V27 tmp19 [V27 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V28 tmp20 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V29 tmp21 [V29 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V30 tmp22 [V30 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V31 tmp23 [V31 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V32 tmp24 [V32 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -;* V33 tmp25 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V34 tmp26 [V34 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inlining Arg" -;* V35 tmp27 [V35 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" -;* V36 tmp28 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V37 tmp29 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -; V38 tmp30 [V38,T24] ( 2, 2 ) long -> r14 "impAppendStmt" -;* V39 tmp31 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V40 tmp32 [V40 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V41 tmp33 [V41 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" -;* V42 tmp34 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V43 tmp35 [V43 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" -;* V44 tmp36 [V44 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" +;* V26 tmp18 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V27 tmp19 [V27 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V28 tmp20 [V28 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V29 tmp21 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V30 tmp22 [V30 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" +;* V31 tmp23 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V32 tmp24 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +; V33 tmp25 [V33,T23] ( 2, 2 ) long -> r14 "impAppendStmt" +;* V34 tmp26 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V35 tmp27 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V36 tmp28 [V36 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" +;* V37 tmp29 [V37 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V38 tmp30 [V38 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" +;* V39 tmp31 [V39 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" +;* V40 tmp32 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V41 tmp33 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V42 tmp34 [V42 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V43 tmp35 [V43 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V44 tmp36 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V45 tmp37 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V46 tmp38 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V47 tmp39 [V47 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V46 tmp38 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V47 tmp39 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V48 tmp40 [V48 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V49 tmp41 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V49 tmp41 [V49 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V50 tmp42 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V51 tmp43 [V51 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V52 tmp44 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V53 tmp45 [V53 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V54 tmp46 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V51 tmp43 [V51 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" +;* V52 tmp44 [V52 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V53 tmp45 [V53 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" +;* V54 tmp46 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V55 tmp47 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V56 tmp48 [V56 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" -;* V57 tmp49 [V57 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V58 tmp50 [V58 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" -;* V59 tmp51 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V60 tmp52 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V61 tmp53 [V61 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V62 tmp54 [V62 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V63 tmp55 [V63 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" -; V64 tmp56 [V64,T13] ( 6, 6 ) int -> rax "Inlining Arg" -;* V65 tmp57 [V65 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" +;* V56 tmp48 [V56 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V57 tmp49 [V57 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V58 tmp50 [V58 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" +; V59 tmp51 [V59,T13] ( 6, 6 ) int -> rax "Inlining Arg" +;* V60 tmp52 [V60 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" +;* V61 tmp53 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V62 tmp54 [V62 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" +;* V63 tmp55 [V63 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V64 tmp56 [V64 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V65 tmp57 [V65 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V66 tmp58 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V67 tmp59 [V67 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" -;* V68 tmp60 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V69 tmp61 [V69 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V70 tmp62 [V70 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V71 tmp63 [V71 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V72 tmp64 [V72 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V73 tmp65 [V73 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -; V74 tmp66 [V74,T04] ( 10, 6.50) byref -> [rbp-0x30] do-not-enreg[] single-def "field V00._reference (fldOffset=0x0)" P-DEP -; V75 tmp67 [V75,T01] ( 15, 13 ) int -> [rbp-0x28] do-not-enreg[] single-def "field V00._length (fldOffset=0x8)" P-DEP -; V76 tmp68 [V76,T02] ( 8, 15 ) long -> r15 "field V03._lower (fldOffset=0x0)" P-INDEP -; V77 tmp69 [V77,T03] ( 7, 11 ) long -> r14 "field V03._upper (fldOffset=0x8)" P-INDEP -;* V78 tmp70 [V78 ] ( 0, 0 ) long -> zero-ref "field V09._lower (fldOffset=0x0)" P-INDEP -;* V79 tmp71 [V79 ] ( 0, 0 ) long -> zero-ref "field V09._upper (fldOffset=0x8)" P-INDEP -;* V80 tmp72 [V80 ] ( 0, 0 ) long -> zero-ref "field V10._lower (fldOffset=0x0)" P-INDEP -;* V81 tmp73 [V81 ] ( 0, 0 ) long -> zero-ref "field V10._upper (fldOffset=0x8)" P-INDEP -; V82 tmp74 [V82,T27] ( 2, 1 ) long -> r15 "field V11._lower (fldOffset=0x0)" P-INDEP -; V83 tmp75 [V83,T28] ( 2, 1 ) long -> r14 "field V11._upper (fldOffset=0x8)" P-INDEP -;* V84 tmp76 [V84 ] ( 0, 0 ) long -> zero-ref "field V12._lower (fldOffset=0x0)" P-INDEP -;* V85 tmp77 [V85 ] ( 0, 0 ) long -> zero-ref "field V12._upper (fldOffset=0x8)" P-INDEP -;* V86 tmp78 [V86 ] ( 0, 0 ) long -> zero-ref "field V13._lower (fldOffset=0x0)" P-INDEP -;* V87 tmp79 [V87 ] ( 0, 0 ) long -> zero-ref "field V13._upper (fldOffset=0x8)" P-INDEP -;* V88 tmp80 [V88 ] ( 0, 0 ) long -> zero-ref "field V14._lower (fldOffset=0x0)" P-INDEP -;* V89 tmp81 [V89 ] ( 0, 0 ) long -> zero-ref "field V14._upper (fldOffset=0x8)" P-INDEP -;* V90 tmp82 [V90 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP -;* V91 tmp83 [V91 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP -; V92 tmp84 [V92,T25] ( 2, 1 ) byref -> rsi single-def "field V18._reference (fldOffset=0x0)" P-INDEP -;* V93 tmp85 [V93 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP -;* V94 tmp86 [V94 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP -;* V95 tmp87 [V95 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP -;* V96 tmp88 [V96 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP -;* V97 tmp89 [V97 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP -;* V98 tmp90 [V98 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP -;* V99 tmp91 [V99 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP -;* V100 tmp92 [V100 ] ( 0, 0 ) byref -> zero-ref single-def "field V36._reference (fldOffset=0x0)" P-INDEP -;* V101 tmp93 [V101 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP -; V102 tmp94 [V102,T29] ( 2, 1 ) long -> rcx "field V37._lower (fldOffset=0x0)" P-INDEP -; V103 tmp95 [V103,T30] ( 2, 1 ) long -> rax "field V37._upper (fldOffset=0x8)" P-INDEP -; V104 tmp96 [V104,T31] ( 2, 1 ) long -> r15 "field V39._lower (fldOffset=0x0)" P-INDEP -; V105 tmp97 [V105,T32] ( 2, 1 ) long -> r14 "field V39._upper (fldOffset=0x8)" P-INDEP -; V106 tmp98 [V106,T05] ( 2, 8 ) long -> rdx "field V41._lower (fldOffset=0x0)" P-INDEP -; V107 tmp99 [V107,T06] ( 2, 8 ) long -> r14 "field V41._upper (fldOffset=0x8)" P-INDEP -;* V108 tmp100 [V108 ] ( 0, 0 ) long -> zero-ref "field V43._lower (fldOffset=0x0)" P-INDEP -;* V109 tmp101 [V109 ] ( 0, 0 ) long -> zero-ref "field V43._upper (fldOffset=0x8)" P-INDEP -; V110 tmp102 [V110,T07] ( 2, 8 ) long -> rdx "field V45._lower (fldOffset=0x0)" P-INDEP -; V111 tmp103 [V111,T08] ( 2, 8 ) long -> r14 "field V45._upper (fldOffset=0x8)" P-INDEP -;* V112 tmp104 [V112 ] ( 0, 0 ) long -> zero-ref "field V46._lower (fldOffset=0x0)" P-INDEP -;* V113 tmp105 [V113 ] ( 0, 0 ) long -> zero-ref "field V46._upper (fldOffset=0x8)" P-INDEP -; V114 tmp106 [V114,T09] ( 2, 8 ) long -> r15 "field V50._lower (fldOffset=0x0)" P-INDEP -;* V115 tmp107 [V115 ] ( 0, 0 ) long -> zero-ref "field V50._upper (fldOffset=0x8)" P-INDEP -; V116 tmp108 [V116,T10] ( 2, 8 ) long -> r15 "field V52._lower (fldOffset=0x0)" P-INDEP -; V117 tmp109 [V117,T11] ( 2, 8 ) long -> r14 "field V52._upper (fldOffset=0x8)" P-INDEP -;* V118 tmp110 [V118 ] ( 0, 0 ) long -> zero-ref "field V55._lower (fldOffset=0x0)" P-INDEP -;* V119 tmp111 [V119 ] ( 0, 0 ) long -> zero-ref "field V55._upper (fldOffset=0x8)" P-INDEP -;* V120 tmp112 [V120,T39] ( 0, 0 ) long -> zero-ref "field V56._lower (fldOffset=0x0)" P-INDEP -;* V121 tmp113 [V121,T40] ( 0, 0 ) long -> zero-ref "field V56._upper (fldOffset=0x8)" P-INDEP -;* V122 tmp114 [V122 ] ( 0, 0 ) long -> zero-ref "field V59._lower (fldOffset=0x0)" P-INDEP -;* V123 tmp115 [V123 ] ( 0, 0 ) long -> zero-ref "field V59._upper (fldOffset=0x8)" P-INDEP -;* V124 tmp116 [V124,T41] ( 0, 0 ) long -> zero-ref "field V60._lower (fldOffset=0x0)" P-INDEP -;* V125 tmp117 [V125,T42] ( 0, 0 ) long -> zero-ref "field V60._upper (fldOffset=0x8)" P-INDEP -; V126 tmp118 [V126,T19] ( 4, 2 ) long -> rcx "field V63._lower (fldOffset=0x0)" P-INDEP -; V127 tmp119 [V127,T20] ( 4, 2 ) long -> rdx "field V63._upper (fldOffset=0x8)" P-INDEP -; V128 tmp120 [V128,T33] ( 2, 1 ) long -> rcx "field V66._lower (fldOffset=0x0)" P-INDEP -; V129 tmp121 [V129,T34] ( 2, 1 ) long -> rdx "field V66._upper (fldOffset=0x8)" P-INDEP -; V130 tmp122 [V130,T35] ( 2, 1 ) long -> rcx "field V68._lower (fldOffset=0x0)" P-INDEP -;* V131 tmp123 [V131,T43] ( 0, 0 ) long -> zero-ref "field V68._upper (fldOffset=0x8)" P-INDEP -; V132 tmp124 [V132,T36] ( 2, 1 ) long -> r15 "field V71._lower (fldOffset=0x0)" P-INDEP -; V133 tmp125 [V133,T37] ( 2, 1 ) long -> r14 "field V71._upper (fldOffset=0x8)" P-INDEP -; V134 tmp126 [V134,T16] ( 3, 3 ) byref -> rax single-def "BlockOp address local" -; V135 cse0 [V135,T38] ( 2, 1 ) long -> rcx "CSE #04: moderate" -; V136 cse1 [V136,T21] ( 4, 2 ) int -> r13 "CSE #01: moderate" +;* V67 tmp59 [V67 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V68 tmp60 [V68 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +; V69 tmp61 [V69,T04] ( 10, 6.50) byref -> [rbp-0x30] do-not-enreg[] single-def "field V00._reference (fldOffset=0x0)" P-DEP +; V70 tmp62 [V70,T01] ( 15, 13 ) int -> [rbp-0x28] do-not-enreg[] single-def "field V00._length (fldOffset=0x8)" P-DEP +; V71 tmp63 [V71,T02] ( 8, 15 ) long -> r15 "field V03._lower (fldOffset=0x0)" P-INDEP +; V72 tmp64 [V72,T03] ( 7, 11 ) long -> r14 "field V03._upper (fldOffset=0x8)" P-INDEP +;* V73 tmp65 [V73 ] ( 0, 0 ) long -> zero-ref "field V09._lower (fldOffset=0x0)" P-INDEP +;* V74 tmp66 [V74 ] ( 0, 0 ) long -> zero-ref "field V09._upper (fldOffset=0x8)" P-INDEP +;* V75 tmp67 [V75 ] ( 0, 0 ) long -> zero-ref "field V10._lower (fldOffset=0x0)" P-INDEP +;* V76 tmp68 [V76 ] ( 0, 0 ) long -> zero-ref "field V10._upper (fldOffset=0x8)" P-INDEP +; V77 tmp69 [V77,T25] ( 2, 1 ) long -> r15 "field V11._lower (fldOffset=0x0)" P-INDEP +; V78 tmp70 [V78,T26] ( 2, 1 ) long -> r14 "field V11._upper (fldOffset=0x8)" P-INDEP +;* V79 tmp71 [V79 ] ( 0, 0 ) long -> zero-ref "field V12._lower (fldOffset=0x0)" P-INDEP +;* V80 tmp72 [V80 ] ( 0, 0 ) long -> zero-ref "field V12._upper (fldOffset=0x8)" P-INDEP +;* V81 tmp73 [V81 ] ( 0, 0 ) long -> zero-ref "field V13._lower (fldOffset=0x0)" P-INDEP +;* V82 tmp74 [V82 ] ( 0, 0 ) long -> zero-ref "field V13._upper (fldOffset=0x8)" P-INDEP +;* V83 tmp75 [V83 ] ( 0, 0 ) long -> zero-ref "field V14._lower (fldOffset=0x0)" P-INDEP +;* V84 tmp76 [V84 ] ( 0, 0 ) long -> zero-ref "field V14._upper (fldOffset=0x8)" P-INDEP +;* V85 tmp77 [V85 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP +;* V86 tmp78 [V86 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP +; V87 tmp79 [V87,T24] ( 2, 1 ) byref -> rdi single-def "field V18._reference (fldOffset=0x0)" P-INDEP +;* V88 tmp80 [V88 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP +;* V89 tmp81 [V89 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP +;* V90 tmp82 [V90 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP +;* V91 tmp83 [V91 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP +;* V92 tmp84 [V92 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP +;* V93 tmp85 [V93 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP +;* V94 tmp86 [V94 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP +; V95 tmp87 [V95,T27] ( 2, 1 ) long -> rcx "field V32._lower (fldOffset=0x0)" P-INDEP +; V96 tmp88 [V96,T28] ( 2, 1 ) long -> rax "field V32._upper (fldOffset=0x8)" P-INDEP +; V97 tmp89 [V97,T29] ( 2, 1 ) long -> r15 "field V34._lower (fldOffset=0x0)" P-INDEP +; V98 tmp90 [V98,T30] ( 2, 1 ) long -> r14 "field V34._upper (fldOffset=0x8)" P-INDEP +; V99 tmp91 [V99,T05] ( 2, 8 ) long -> rdx "field V36._lower (fldOffset=0x0)" P-INDEP +; V100 tmp92 [V100,T06] ( 2, 8 ) long -> r14 "field V36._upper (fldOffset=0x8)" P-INDEP +;* V101 tmp93 [V101 ] ( 0, 0 ) long -> zero-ref "field V38._lower (fldOffset=0x0)" P-INDEP +;* V102 tmp94 [V102 ] ( 0, 0 ) long -> zero-ref "field V38._upper (fldOffset=0x8)" P-INDEP +; V103 tmp95 [V103,T07] ( 2, 8 ) long -> rdx "field V40._lower (fldOffset=0x0)" P-INDEP +; V104 tmp96 [V104,T08] ( 2, 8 ) long -> r14 "field V40._upper (fldOffset=0x8)" P-INDEP +;* V105 tmp97 [V105 ] ( 0, 0 ) long -> zero-ref "field V41._lower (fldOffset=0x0)" P-INDEP +;* V106 tmp98 [V106 ] ( 0, 0 ) long -> zero-ref "field V41._upper (fldOffset=0x8)" P-INDEP +; V107 tmp99 [V107,T09] ( 2, 8 ) long -> r15 "field V45._lower (fldOffset=0x0)" P-INDEP +;* V108 tmp100 [V108 ] ( 0, 0 ) long -> zero-ref "field V45._upper (fldOffset=0x8)" P-INDEP +; V109 tmp101 [V109,T10] ( 2, 8 ) long -> r15 "field V47._lower (fldOffset=0x0)" P-INDEP +; V110 tmp102 [V110,T11] ( 2, 8 ) long -> r14 "field V47._upper (fldOffset=0x8)" P-INDEP +;* V111 tmp103 [V111 ] ( 0, 0 ) long -> zero-ref "field V50._lower (fldOffset=0x0)" P-INDEP +;* V112 tmp104 [V112 ] ( 0, 0 ) long -> zero-ref "field V50._upper (fldOffset=0x8)" P-INDEP +;* V113 tmp105 [V113,T37] ( 0, 0 ) long -> zero-ref "field V51._lower (fldOffset=0x0)" P-INDEP +;* V114 tmp106 [V114,T38] ( 0, 0 ) long -> zero-ref "field V51._upper (fldOffset=0x8)" P-INDEP +;* V115 tmp107 [V115 ] ( 0, 0 ) long -> zero-ref "field V54._lower (fldOffset=0x0)" P-INDEP +;* V116 tmp108 [V116 ] ( 0, 0 ) long -> zero-ref "field V54._upper (fldOffset=0x8)" P-INDEP +;* V117 tmp109 [V117,T39] ( 0, 0 ) long -> zero-ref "field V55._lower (fldOffset=0x0)" P-INDEP +;* V118 tmp110 [V118,T40] ( 0, 0 ) long -> zero-ref "field V55._upper (fldOffset=0x8)" P-INDEP +; V119 tmp111 [V119,T19] ( 4, 2 ) long -> rcx "field V58._lower (fldOffset=0x0)" P-INDEP +; V120 tmp112 [V120,T20] ( 4, 2 ) long -> rdx "field V58._upper (fldOffset=0x8)" P-INDEP +; V121 tmp113 [V121,T31] ( 2, 1 ) long -> rcx "field V61._lower (fldOffset=0x0)" P-INDEP +; V122 tmp114 [V122,T32] ( 2, 1 ) long -> rdx "field V61._upper (fldOffset=0x8)" P-INDEP +; V123 tmp115 [V123,T33] ( 2, 1 ) long -> rcx "field V63._lower (fldOffset=0x0)" P-INDEP +;* V124 tmp116 [V124,T41] ( 0, 0 ) long -> zero-ref "field V63._upper (fldOffset=0x8)" P-INDEP +; V125 tmp117 [V125,T34] ( 2, 1 ) long -> r15 "field V66._lower (fldOffset=0x0)" P-INDEP +; V126 tmp118 [V126,T35] ( 2, 1 ) long -> r14 "field V66._upper (fldOffset=0x8)" P-INDEP +; V127 tmp119 [V127,T16] ( 3, 3 ) byref -> rax single-def "BlockOp address local" +; V128 cse0 [V128,T36] ( 2, 1 ) long -> rcx "CSE #04: moderate" +; V129 cse1 [V129,T21] ( 4, 2 ) int -> r13 "CSE #01: moderate" ; ; Lcl frame size = 16 G_M54465_IG01: push rbp push r15 push r14 push r13 push rbx sub rsp, 16 lea rbp, [rsp+0x30] mov bword ptr [rbp-0x30], rdi mov qword ptr [rbp-0x28], rsi mov rbx, rcx ;; size=28 bbWeight=1 PerfScore 8.00 G_M54465_IG02: xor r15d, r15d xor r14d, r14d cmp dword ptr [rbp-0x28], 0 je G_M54465_IG16 ;; size=16 bbWeight=1 PerfScore 3.50 G_M54465_IG03: mov rax, bword ptr [rbp-0x30] movzx rax, byte ptr [rax] movsx rax, al sar eax, 31 - movsx rdi, al + movsx rsi, al movzx rdx, dl - test edi, edi + test esi, esi sete al movzx rax, al or edx, eax movzx r13, dl test r13d, r13d je SHORT G_M54465_IG05 - test edi, edi + test esi, esi jge SHORT G_M54465_IG05 cmp dword ptr [rbp-0x28], 16 jl SHORT G_M54465_IG05 vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [rbx], xmm0 xor eax, eax ;; size=60 bbWeight=0.50 PerfScore 7.17 G_M54465_IG04: add rsp, 16 pop rbx pop r13 pop r14 pop r15 pop rbp ret ;; size=13 bbWeight=0.50 PerfScore 1.88 G_M54465_IG05: cmp dword ptr [rbp-0x28], 16 jle SHORT G_M54465_IG09 mov edx, dword ptr [rbp-0x28] add edx, -16 cmp edx, dword ptr [rbp-0x28] ja G_M54465_IG18 - mov rsi, bword ptr [rbp-0x30] - movzx rax, dil - mov rdi, rsi - mov esi, eax + mov rdi, bword ptr [rbp-0x30] + movzx rsi, sil mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:NonPackedIndexOfValueType[ubyte,System.SpanHelpers+Negate`1[ubyte]](byref,ubyte,int):int call [rax]System.SpanHelpers:NonPackedIndexOfValueType[ubyte,System.SpanHelpers+Negate`1[ubyte]](byref,ubyte,int):int test eax, eax jl SHORT G_M54465_IG07 vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [rbx], xmm0 xor eax, eax - ;; size=60 bbWeight=0.50 PerfScore 8.04 + ;; size=55 bbWeight=0.50 PerfScore 7.79 G_M54465_IG06: add rsp, 16 pop rbx pop r13 pop r14 pop r15 pop rbp ret ;; size=13 bbWeight=0.50 PerfScore 1.88 G_M54465_IG07: mov eax, dword ptr [rbp-0x28] add eax, -16 mov rcx, bword ptr [rbp-0x30] movzx rax, byte ptr [rcx+rax] movsx rax, al shr eax, 31 cmp eax, r13d jne SHORT G_M54465_IG09 vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [rbx], xmm0 xor eax, eax ;; size=36 bbWeight=0.50 PerfScore 4.42 G_M54465_IG08: add rsp, 16 pop rbx pop r13 pop r14 pop r15 pop rbp ret ;; size=13 bbWeight=0.50 PerfScore 1.88 G_M54465_IG09: mov rax, bword ptr [rbp-0x30] cmp dword ptr [rbp-0x28], 16 jl SHORT G_M54465_IG10 mov eax, dword ptr [rbp-0x28] add eax, -16 cdqe add rax, bword ptr [rbp-0x30] mov rcx, qword ptr [rax] mov rax, qword ptr [rax+0x08] mov r14, rcx bswap r14 mov r15, rax bswap r15 jmp G_M54465_IG16 align [0 bytes for IG11] ;; size=46 bbWeight=0.50 PerfScore 8.00 G_M54465_IG10: xor ecx, ecx cmp dword ptr [rbp-0x28], 0 jle SHORT G_M54465_IG12 ;; size=8 bbWeight=0.50 PerfScore 1.62 G_M54465_IG11: mov rdx, r15 shl rdx, 8 shl r14, 8 shr r15, 56 or r14, r15 movsxd rdi, ecx movzx r15, byte ptr [rax+rdi] or r15, rdx inc ecx cmp ecx, dword ptr [rbp-0x28] jl SHORT G_M54465_IG11 ;; size=36 bbWeight=4 PerfScore 31.00 G_M54465_IG12: test r13d, r13d jne SHORT G_M54465_IG16 mov eax, dword ptr [rbp-0x28] neg eax lea eax, [8*rax+0x7F] and eax, 127 test al, 64 je SHORT G_M54465_IG13 mov rcx, 0xD1FFAB1E sarx rcx, rcx, rax mov rdx, -1 jmp SHORT G_M54465_IG15 ;; size=51 bbWeight=0.50 PerfScore 3.75 G_M54465_IG13: test eax, eax je SHORT G_M54465_IG14 mov ecx, eax neg ecx add ecx, 64 mov rdx, 0xD1FFAB1E shlx rcx, rdx, rcx sarx rdx, rdx, rax jmp SHORT G_M54465_IG15 ;; size=33 bbWeight=0.50 PerfScore 2.62 G_M54465_IG14: xor ecx, ecx mov rdx, 0xD1FFAB1E ;; size=12 bbWeight=0.50 PerfScore 0.25 G_M54465_IG15: or r15, rcx or r14, rdx ;; size=6 bbWeight=0.50 PerfScore 0.25 G_M54465_IG16: mov qword ptr [rbx], r15 mov qword ptr [rbx+0x08], r14 mov eax, 1 ;; size=12 bbWeight=0.50 PerfScore 1.12 G_M54465_IG17: add rsp, 16 pop rbx pop r13 pop r14 pop r15 pop rbp ret ;; size=13 bbWeight=0.50 PerfScore 1.88 G_M54465_IG18: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException() call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 -; Total bytes of code 469, prolog size 28, PerfScore 87.25, instruction count 150, allocated bytes for code 469 (MethodHash=cdea2b3e) for method System.Int128:System.Numerics.IBinaryInteger.TryReadBigEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte (FullOpts) +; Total bytes of code 464, prolog size 28, PerfScore 87.00, instruction count 148, allocated bytes for code 464 (MethodHash=cdea2b3e) for method System.Int128:System.Numerics.IBinaryInteger.TryReadBigEndian(System.ReadOnlySpan`1[ubyte],ubyte,byref):ubyte (FullOpts) ```

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

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

MihuBot commented 1 month ago

@MichalPetryka