MihuBot / runtime-utils

0 stars 0 forks source link

[JitDiff X64] xtqqczze/dotnet-runtime/MemoryExtensionsNullCheck #514

Open MihuBot opened 1 month ago

MihuBot commented 1 month ago

Job completed in 15 minutes.

Diffs

Diffs ``` Found 290 files with textual diffs. Summary of Code Size diffs: (Lower is better) Total bytes of base: 41785018 Total bytes of diff: 41785010 Total bytes of delta: -8 (-0.00 % of base) Total relative delta: -0.50 diff is an improvement. relative diff is an improvement. Top file regressions (bytes): 89 : System.Private.CoreLib.dasm (0.00 % of base) 78 : System.Diagnostics.DiagnosticSource.dasm (0.03 % of base) 45 : System.Security.Cryptography.Pkcs.dasm (0.01 % of base) 6 : System.Reflection.Metadata.dasm (0.00 % of base) 6 : System.Net.Security.dasm (0.00 % of base) 5 : Microsoft.Extensions.FileProviders.Physical.dasm (0.02 % of base) 2 : System.Data.Odbc.dasm (0.00 % of base) 2 : System.Private.Xml.dasm (0.00 % of base) 1 : System.Net.Ping.dasm (0.00 % of base) Top file improvements (bytes): -96 : System.Numerics.Tensors.dasm (-0.01 % of base) -62 : System.Text.Json.dasm (-0.00 % of base) -53 : System.Net.Http.dasm (-0.01 % of base) -28 : System.Security.Cryptography.Cose.dasm (-0.04 % of base) -3 : System.Security.Cryptography.dasm (-0.00 % of base) 14 total files with Code Size differences (5 improved, 9 regressed), 245 unchanged. Top method regressions (bytes): 38 (2.11 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.SignerInfo:PrepareDigest(ubyte):System.Security.Cryptography.IncrementalHash:this (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[double](double[]):System.Memory`1[double] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[int](int[]):System.Memory`1[int] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[long](long[]):System.Memory`1[long] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[short](short[]):System.Memory`1[short] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[System.Nullable`1[int]](System.Nullable`1[int][]):System.Memory`1[System.Nullable`1[int]] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][]):System.Memory`1[System.Numerics.Vector`1[float]] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[ubyte](ubyte[]):System.Memory`1[ubyte] (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[double]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[int]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[long]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[short]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[System.Numerics.Vector`1[float]]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[ubyte]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 7 (0.60 % of base) : System.Security.Cryptography.dasm - Internal.Cryptography.Helpers:AreSamePublicECParameters(System.Security.Cryptography.ECParameters,System.Security.Cryptography.ECParameters):ubyte (FullOpts) 7 (4.14 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.__Canon[]):System.Memory`1[System.__Canon] (FullOpts) 6 (1.17 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.SubjectIdentifier:MatchesCertificate(System.Security.Cryptography.X509Certificates.X509Certificate2):ubyte:this (FullOpts) 5 (6.76 % of base) : Microsoft.Extensions.FileProviders.Physical.dasm - Microsoft.Extensions.FileProviders.Physical.PollingWildCardChangeToken:ArrayEquals(ubyte[],ubyte[]):ubyte (FullOpts) 5 (3.88 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[]):System.Span`1[System.__Canon] (FullOpts) 3 (1.09 % of base) : System.Net.Security.dasm - System.Net.Security.SslApplicationProtocol:.ctor(ubyte[]):this (FullOpts) 3 (2.48 % of base) : System.Net.Security.dasm - System.Net.Security.SslSessionsCache+SslCredKey:Equals(System.Net.Security.SslSessionsCache+SslCredKey):ubyte:this (FullOpts) 3 (1.72 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.BlobWriter:WriteBytes(ubyte[]):this (FullOpts) 3 (0.49 % of base) : System.Reflection.Metadata.dasm - System.Reflection.PortableExecutable.PEBuilder:Sign(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Blob,System.Func`2[System.Collections.Generic.IEnumerable`1[System.Reflection.Metadata.Blob],ubyte[]]):this (FullOpts) 3 (1.74 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.Rfc2898DeriveBytes:set_Salt(ubyte[]):this (FullOpts) 2 (2.56 % of base) : System.Security.Cryptography.Pkcs.dasm - Internal.Cryptography.PkcsHelpers:AreByteArraysEqual(ubyte[],ubyte[]):ubyte (FullOpts) 2 (0.99 % of base) : System.Data.Odbc.dasm - System.Data.Odbc.OdbcHandle:GetDiagnosticField(byref):short:this (FullOpts) 2 (0.16 % of base) : System.Text.Json.dasm - System.Text.Json.JsonDocument+d__69:MoveNext():this (FullOpts) 2 (2.30 % of base) : System.Private.Xml.dasm - System.Xml.Schema.DatatypeImplementation:Compare(ubyte[],ubyte[]):int (FullOpts) 1 (0.03 % of base) : System.Net.Ping.dasm - System.Net.NetworkInformation.Ping+d__76:MoveNext():this (FullOpts) Top method improvements (bytes): -33 (-2.79 % of base) : System.Net.Http.dasm - System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts) -20 (-1.66 % of base) : System.Net.Http.dasm - System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts) -11 (-2.68 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -11 (-2.68 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[double](double[],System.Memory`1[double]) (FullOpts) -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[int](int[],System.Memory`1[int]) (FullOpts) -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[long](long[],System.Memory`1[long]) (FullOpts) -8 (-4.30 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[short](short[],System.Memory`1[short]) (FullOpts) -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Nullable`1[int]](System.Nullable`1[int][],System.Memory`1[System.Nullable`1[int]]) (FullOpts) -8 (-3.15 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromBytes(System.ReadOnlySpan`1[ubyte]):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts) -8 (-2.42 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromBytes(ubyte[]):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[double](double[]):System.Span`1[double] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[int](int[]):System.Span`1[int] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[long](long[]):System.Span`1[long] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[short](short[]):System.Span`1[short] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[System.Nullable`1[int]](System.Nullable`1[int][]):System.Span`1[System.Nullable`1[int]] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][]):System.Span`1[System.Numerics.Vector`1[float]] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[ubyte](ubyte[]):System.Span`1[ubyte] (FullOpts) -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[double](double[],System.Span`1[double]) (FullOpts) -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[int](int[],System.Span`1[int]) (FullOpts) -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[long](long[],System.Span`1[long]) (FullOpts) -6 (-9.23 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[short](short[],System.Span`1[short]) (FullOpts) -6 (-6.59 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Span`1[System.__Canon]) (FullOpts) -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Nullable`1[int]](System.Nullable`1[int][],System.Span`1[System.Nullable`1[int]]) (FullOpts) -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][],System.Span`1[System.Numerics.Vector`1[float]]) (FullOpts) -6 (-9.68 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[ubyte](ubyte[],System.Span`1[ubyte]) (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[double]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[double]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[int]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[int]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[long]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[long]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[short]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[short]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.__Canon]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.__Canon]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Nullable`1[int]]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Nullable`1[int]]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Numerics.Vector`1[float]]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Numerics.Vector`1[float]]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[ubyte]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[ubyte]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-1.26 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteUncompressedBasePoint(byref,System.Formats.Asn1.AsnWriter) (FullOpts) -6 (-1.25 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteUncompressedPublicKey(byref,System.Formats.Asn1.AsnWriter) (FullOpts) -4 (-1.97 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Memory`1[System.__Canon]) (FullOpts) -4 (-3.70 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:Encode(System.Formats.Cbor.CborWriter):System.ReadOnlyMemory`1[ubyte] (FullOpts) -4 (-1.67 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromInt32(int):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts) -4 (-1.27 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromString(System.String):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts) -3 (-1.58 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][],System.Memory`1[System.Numerics.Vector`1[float]]) (FullOpts) -3 (-1.65 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[ubyte](ubyte[],System.Memory`1[ubyte]) (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[double]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[int]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[long]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[short]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.Nullable`1[int]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.Numerics.Vector`1[float]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[ubyte]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[double]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[int]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[long]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[short]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.Nullable`1[int]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.Numerics.Vector`1[float]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[ubyte]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -1 (-0.06 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.PasswordBasedEncryption:Encrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.SymmetricAlgorithm,ubyte,System.Formats.Asn1.AsnWriter,System.Security.Cryptography.PbeParameters,System.ReadOnlySpan`1[ubyte],ubyte[],System.Span`1[ubyte]):int (FullOpts) -1 (-0.06 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PasswordBasedEncryption:Encrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.SymmetricAlgorithm,ubyte,System.Formats.Asn1.AsnWriter,System.Security.Cryptography.PbeParameters,System.ReadOnlySpan`1[ubyte],ubyte[],System.Span`1[ubyte]):int (FullOpts) Top method regressions (percentages): 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[double](double[]):System.Memory`1[double] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[int](int[]):System.Memory`1[int] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[long](long[]):System.Memory`1[long] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[short](short[]):System.Memory`1[short] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[System.Nullable`1[int]](System.Nullable`1[int][]):System.Memory`1[System.Nullable`1[int]] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][]):System.Memory`1[System.Numerics.Vector`1[float]] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[ubyte](ubyte[]):System.Memory`1[ubyte] (FullOpts) 5 (6.76 % of base) : Microsoft.Extensions.FileProviders.Physical.dasm - Microsoft.Extensions.FileProviders.Physical.PollingWildCardChangeToken:ArrayEquals(ubyte[],ubyte[]):ubyte (FullOpts) 7 (4.14 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.__Canon[]):System.Memory`1[System.__Canon] (FullOpts) 5 (3.88 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[]):System.Span`1[System.__Canon] (FullOpts) 2 (2.56 % of base) : System.Security.Cryptography.Pkcs.dasm - Internal.Cryptography.PkcsHelpers:AreByteArraysEqual(ubyte[],ubyte[]):ubyte (FullOpts) 3 (2.48 % of base) : System.Net.Security.dasm - System.Net.Security.SslSessionsCache+SslCredKey:Equals(System.Net.Security.SslSessionsCache+SslCredKey):ubyte:this (FullOpts) 2 (2.30 % of base) : System.Private.Xml.dasm - System.Xml.Schema.DatatypeImplementation:Compare(ubyte[],ubyte[]):int (FullOpts) 38 (2.11 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.SignerInfo:PrepareDigest(ubyte):System.Security.Cryptography.IncrementalHash:this (FullOpts) 3 (1.74 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.Rfc2898DeriveBytes:set_Salt(ubyte[]):this (FullOpts) 3 (1.72 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.BlobWriter:WriteBytes(ubyte[]):this (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[double]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[int]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[long]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[short]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[System.Numerics.Vector`1[float]]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[ubyte]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 6 (1.17 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.SubjectIdentifier:MatchesCertificate(System.Security.Cryptography.X509Certificates.X509Certificate2):ubyte:this (FullOpts) 3 (1.09 % of base) : System.Net.Security.dasm - System.Net.Security.SslApplicationProtocol:.ctor(ubyte[]):this (FullOpts) 2 (0.99 % of base) : System.Data.Odbc.dasm - System.Data.Odbc.OdbcHandle:GetDiagnosticField(byref):short:this (FullOpts) 7 (0.60 % of base) : System.Security.Cryptography.dasm - Internal.Cryptography.Helpers:AreSamePublicECParameters(System.Security.Cryptography.ECParameters,System.Security.Cryptography.ECParameters):ubyte (FullOpts) 3 (0.49 % of base) : System.Reflection.Metadata.dasm - System.Reflection.PortableExecutable.PEBuilder:Sign(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Blob,System.Func`2[System.Collections.Generic.IEnumerable`1[System.Reflection.Metadata.Blob],ubyte[]]):this (FullOpts) 2 (0.16 % of base) : System.Text.Json.dasm - System.Text.Json.JsonDocument+d__69:MoveNext():this (FullOpts) 1 (0.03 % of base) : System.Net.Ping.dasm - System.Net.NetworkInformation.Ping+d__76:MoveNext():this (FullOpts) Top method improvements (percentages): -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[double](double[]):System.Span`1[double] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[int](int[]):System.Span`1[int] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[long](long[]):System.Span`1[long] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[short](short[]):System.Span`1[short] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[System.Nullable`1[int]](System.Nullable`1[int][]):System.Span`1[System.Nullable`1[int]] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][]):System.Span`1[System.Numerics.Vector`1[float]] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[ubyte](ubyte[]):System.Span`1[ubyte] (FullOpts) -6 (-9.68 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[ubyte](ubyte[],System.Span`1[ubyte]) (FullOpts) -6 (-9.23 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[short](short[],System.Span`1[short]) (FullOpts) -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[double](double[],System.Span`1[double]) (FullOpts) -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[int](int[],System.Span`1[int]) (FullOpts) -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[long](long[],System.Span`1[long]) (FullOpts) -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Nullable`1[int]](System.Nullable`1[int][],System.Span`1[System.Nullable`1[int]]) (FullOpts) -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][],System.Span`1[System.Numerics.Vector`1[float]]) (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[double]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[double]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[int]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[int]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[long]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[long]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[short]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[short]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.__Canon]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.__Canon]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Nullable`1[int]]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Nullable`1[int]]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Numerics.Vector`1[float]]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Numerics.Vector`1[float]]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[ubyte]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[ubyte]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-6.59 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Span`1[System.__Canon]) (FullOpts) -8 (-4.30 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[short](short[],System.Memory`1[short]) (FullOpts) -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[double](double[],System.Memory`1[double]) (FullOpts) -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[int](int[],System.Memory`1[int]) (FullOpts) -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[long](long[],System.Memory`1[long]) (FullOpts) -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Nullable`1[int]](System.Nullable`1[int][],System.Memory`1[System.Nullable`1[int]]) (FullOpts) -4 (-3.70 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:Encode(System.Formats.Cbor.CborWriter):System.ReadOnlyMemory`1[ubyte] (FullOpts) -8 (-3.15 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromBytes(System.ReadOnlySpan`1[ubyte]):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts) -33 (-2.79 % of base) : System.Net.Http.dasm - System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts) -11 (-2.68 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -11 (-2.68 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -8 (-2.42 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromBytes(ubyte[]):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts) -4 (-1.97 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Memory`1[System.__Canon]) (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[double]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[int]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[long]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[short]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.Nullable`1[int]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.Numerics.Vector`1[float]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[ubyte]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[double]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[int]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[long]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[short]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.Nullable`1[int]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.Numerics.Vector`1[float]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -3 (-1.83 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[ubyte]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -4 (-1.67 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromInt32(int):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts) -20 (-1.66 % of base) : System.Net.Http.dasm - System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts) -3 (-1.65 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[ubyte](ubyte[],System.Memory`1[ubyte]) (FullOpts) -3 (-1.58 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][],System.Memory`1[System.Numerics.Vector`1[float]]) (FullOpts) -4 (-1.27 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromString(System.String):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts) -6 (-1.26 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteUncompressedBasePoint(byref,System.Formats.Asn1.AsnWriter) (FullOpts) -6 (-1.25 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteUncompressedPublicKey(byref,System.Formats.Asn1.AsnWriter) (FullOpts) -1 (-0.06 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PasswordBasedEncryption:Encrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.SymmetricAlgorithm,ubyte,System.Formats.Asn1.AsnWriter,System.Security.Cryptography.PbeParameters,System.ReadOnlySpan`1[ubyte],ubyte[],System.Span`1[ubyte]):int (FullOpts) -1 (-0.06 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.PasswordBasedEncryption:Encrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.SymmetricAlgorithm,ubyte,System.Formats.Asn1.AsnWriter,System.Security.Cryptography.PbeParameters,System.ReadOnlySpan`1[ubyte],ubyte[],System.Span`1[ubyte]):int (FullOpts) 95 total methods with Code Size differences (66 improved, 29 regressed), 255777 unchanged. -------------------------------------------------------------------------------- ```

Artifacts:

MihuBot commented 1 month ago

Top method regressions

38 (2.11 % of base) - System.Security.Cryptography.Pkcs.SignerInfo:PrepareDigest(ubyte):System.Security.Cryptography.IncrementalHash:this ```diff ; Assembly listing for method System.Security.Cryptography.Pkcs.SignerInfo:PrepareDigest(ubyte):System.Security.Cryptography.IncrementalHash:this (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; 37 single block inlinees; 17 inlinees without PGO data +; 0 inlinees with PGO data; 36 single block inlinees; 18 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T07] ( 11, 8.50) ref -> rbx this class-hnd single-def ; V01 arg1 [V01,T27] ( 5, 3.50) ubyte -> r15 single-def ;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def ; V03 loc1 [V03,T19] ( 15, 7.50) ref -> r14 class-hnd exact single-def ; V04 loc2 [V04,T37] ( 3, 3.50) ubyte -> r13 ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def ; V06 loc4 [V06,T58] ( 3, 1.50) byref -> rdx single-def ; V07 loc5 [V07,T66] ( 3, 1.50) struct (24) [rbp-0x40] do-not-enreg[SF] must-init ld-addr-op ; V08 loc6 [V08 ] ( 10, 5 ) struct (16) [rbp-0x50] do-not-enreg[SBR] multireg-ret must-init ld-addr-op single-def ; V09 loc7 [V09,T21] ( 4, 6.50) ref -> r12 class-hnd single-def ; V10 loc8 [V10,T20] ( 8, 7.50) ref -> [rbp-0xC8] class-hnd exact spill-single-def ;* V11 loc9 [V11,T77] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SA] multireg-arg ld-addr-op ; V12 loc10 [V12,T28] ( 3, 5 ) ref -> rbx class-hnd exact single-def ;* V13 loc11 [V13,T85] ( 0, 0 ) int -> zero-ref ; V14 loc12 [V14 ] ( 5, 16 ) struct (16) [rbp-0x60] do-not-enreg[XSA] multireg-arg must-init addr-exposed ld-addr-op ; V15 loc13 [V15,T11] ( 4, 8 ) ref -> r13 class-hnd exact ; V16 loc14 [V16,T51] ( 4, 2 ) ref -> rax class-hnd single-def ;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V18 tmp1 [V18 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ; V19 tmp2 [V19,T53] ( 3, 2 ) int -> rdi ; V20 tmp3 [V20,T87] ( 3, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" ; V21 tmp4 [V21,T42] ( 3, 3 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" ; V22 tmp5 [V22,T82] ( 1, 1 ) struct (32) [rbp-0x80] do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" ; V23 tmp6 [V23,T15] ( 2, 8 ) ref -> rax class-hnd exact "dup spill" ;* V24 tmp7 [V24 ] ( 0, 0 ) ref -> zero-ref ;* V25 tmp8 [V25 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" ;* V26 tmp9 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ; V27 tmp10 [V27,T88] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V28 tmp11 [V28,T89] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V29 tmp12 [V29,T83] ( 1, 1 ) struct (32) [rbp-0xA0] do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" ;* V30 tmp13 [V30 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret single-def "Return value temp for multireg return" ;* V31 tmp14 [V31 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V32 tmp15 [V32 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" ;* V33 tmp16 [V33 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ; V34 tmp17 [V34,T92] ( 2, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" ; V35 tmp18 [V35,T90] ( 3, 0 ) ref -> r15 class-hnd exact single-def "Single-def Box Helper" ; V36 tmp19 [V36,T93] ( 2, 0 ) ref -> r14 class-hnd exact single-def "impImportAndPushBox" ; V37 tmp20 [V37,T91] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" ;* V38 tmp21 [V38 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" ;* V39 tmp22 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V40 tmp23 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V41 tmp24 [V41,T43] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" ;* V42 tmp25 [V42 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ; V43 tmp26 [V43,T38] ( 6, 3 ) byref -> r13 "Inline stloc first use temp" ; V44 tmp27 [V44,T40] ( 6, 3 ) int -> rdx "Inline stloc first use temp" ;* V45 tmp28 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" ;* V46 tmp29 [V46 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" ;* V47 tmp30 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" ;* V48 tmp31 [V48 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" ;* V49 tmp32 [V49 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def "Inline stloc first use temp" ; V50 tmp33 [V50,T67] ( 3, 1.50) long -> rdi single-def "Inline stloc first use temp" ;* V51 tmp34 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ;* V52 tmp35 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" ;* V53 tmp36 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" ; V54 tmp37 [V54,T54] ( 2, 2 ) byref -> rdi single-def "Inlining Arg" ;* V55 tmp38 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V56 tmp39 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp40 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V58 tmp41 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V59 tmp42 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V60 tmp43 [V60 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ; V61 tmp44 [V61,T39] ( 6, 3 ) byref -> r12 "Inline stloc first use temp" ; V62 tmp45 [V62,T41] ( 6, 3 ) int -> rdx "Inline stloc first use temp" ; V63 tmp46 [V63,T30] ( 4, 4 ) byref -> r13 single-def "Inlining Arg" ; V64 tmp47 [V64,T35] ( 7, 3.50) ref -> rdi class-hnd single-def "Inline stloc first use temp" ;* V65 tmp48 [V65 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" ;* V66 tmp49 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" ;* V67 tmp50 [V67 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" ;* V68 tmp51 [V68 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def "Inline stloc first use temp" ; V69 tmp52 [V69,T68] ( 3, 1.50) long -> rdi single-def "Inline stloc first use temp" ; V70 tmp53 [V70,T69] ( 3, 1.50) int -> rsi single-def "Inline stloc first use temp" ;* V71 tmp54 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" ;* V72 tmp55 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" ; V73 tmp56 [V73,T55] ( 2, 2 ) byref -> rdx single-def "Inlining Arg" ;* V74 tmp57 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V75 tmp58 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V76 tmp59 [V76 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V77 tmp60 [V77,T00] ( 5, 26 ) ref -> rdi class-hnd exact "Inlining Arg" ;* V78 tmp61 [V78 ] ( 0, 0 ) ref -> zero-ref "spilling varStr" ; V79 tmp62 [V79,T05] ( 2, 8 ) int -> rdi "spilling unroll qmark" ;* V80 tmp63 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V81 tmp64 [V81,T16] ( 2, 8 ) ref -> rsi class-hnd "Inlining Arg" ;* V82 tmp65 [V82 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V83 tmp66 [V83,T17] ( 2, 8 ) ref -> rdi class-hnd "Inlining Arg" ;* V84 tmp67 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V85 tmp68 [V85 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" -; V86 tmp69 [V86,T18] ( 2, 8 ) ref -> rdx class-hnd "dup spill" -; V87 tmp70 [V87,T04] ( 6, 12 ) ref -> rdx -;* V88 tmp71 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" -;* V89 tmp72 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" -; V90 tmp73 [V90,T12] ( 4, 8 ) ref -> [rbp-0xD0] class-hnd "Inline return value spill temp" -; V91 tmp74 [V91,T02] ( 4, 16 ) ref -> rdi class-hnd "Inlining Arg" -;* V92 tmp75 [V92 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" -; V93 tmp76 [V93 ] ( 5, 20 ) struct (16) [rbp-0xB0] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" -;* V94 tmp77 [V94 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -; V95 tmp78 [V95,T31] ( 2, 4 ) ubyte -> rax "Inline return value spill temp" -;* V96 tmp79 [V96 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V97 tmp80 [V97 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V98 tmp81 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V99 tmp82 [V99 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V100 tmp83 [V100 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" +;* V85 tmp68 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" +;* V86 tmp69 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" +; V87 tmp70 [V87,T18] ( 2, 8 ) ref -> rdx class-hnd "dup spill" +; V88 tmp71 [V88,T04] ( 6, 12 ) ref -> rdx +;* V89 tmp72 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" +;* V90 tmp73 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" +; V91 tmp74 [V91,T12] ( 4, 8 ) ref -> [rbp-0xD0] class-hnd "Inline return value spill temp" +; V92 tmp75 [V92,T02] ( 4, 16 ) ref -> rdi class-hnd "Inlining Arg" +;* V93 tmp76 [V93 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +; V94 tmp77 [V94 ] ( 5, 20 ) struct (16) [rbp-0xB0] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" +;* V95 tmp78 [V95 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +; V96 tmp79 [V96,T31] ( 2, 4 ) ubyte -> rax "Inline return value spill temp" +;* V97 tmp80 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V98 tmp81 [V98 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V99 tmp82 [V99 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V100 tmp83 [V100 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V101 tmp84 [V101 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" -;* V102 tmp85 [V102 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V103 tmp86 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V104 tmp87 [V104 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V105 tmp88 [V105 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V106 tmp89 [V106 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] "stack allocated ref class temp" -; V107 tmp90 [V107,T52] ( 3, 2 ) ref -> [rbp-0xD8] do-not-enreg[H] EH-live "field V02._name (fldOffset=0x0)" P-INDEP -; V108 tmp91 [V108,T36] ( 7, 3.50) ref -> [rbp-0x50] do-not-enreg[] "field V08._object (fldOffset=0x0)" P-DEP -; V109 tmp92 [V109,T78] ( 2, 1 ) int -> [rbp-0x48] do-not-enreg[] "field V08._index (fldOffset=0x8)" P-DEP -; V110 tmp93 [V110,T70] ( 3, 1.50) int -> [rbp-0x44] do-not-enreg[] "field V08._length (fldOffset=0xc)" P-DEP -; V111 tmp94 [V111 ] ( 4, 14 ) ref -> [rbp-0x60] do-not-enreg[X] addr-exposed "field V14.AttrType (fldOffset=0x0)" P-DEP -; V112 tmp95 [V112 ] ( 3, 10 ) ref -> [rbp-0x58] do-not-enreg[X] addr-exposed "field V14.AttrValues (fldOffset=0x8)" P-DEP -;* V113 tmp96 [V113 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP -;* V114 tmp97 [V114 ] ( 0, 0 ) int -> zero-ref single-def "field V18._length (fldOffset=0x8)" P-INDEP -; V115 tmp98 [V115,T33] ( 2, 4 ) byref -> [rbp-0xE0] spill-single-def "field V25._reference (fldOffset=0x0)" P-INDEP -; V116 tmp99 [V116,T34] ( 2, 4 ) int -> [rbp-0xB4] spill-single-def "field V25._length (fldOffset=0x8)" P-INDEP -;* V117 tmp100 [V117 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-INDEP -;* V118 tmp101 [V118 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP -; V119 tmp102 [V119,T59] ( 3, 1.50) byref -> rax "field V30._reference (fldOffset=0x0)" P-INDEP -; V120 tmp103 [V120,T71] ( 3, 1.50) int -> rdx "field V30._length (fldOffset=0x8)" P-INDEP -;* V121 tmp104 [V121 ] ( 0, 0 ) ref -> zero-ref "field V31._object (fldOffset=0x0)" P-INDEP -;* V122 tmp105 [V122 ] ( 0, 0 ) int -> zero-ref "field V31._index (fldOffset=0x8)" P-INDEP -;* V123 tmp106 [V123 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0xc)" P-INDEP -;* V124 tmp107 [V124 ] ( 0, 0 ) byref -> zero-ref single-def "field V33._reference (fldOffset=0x0)" P-INDEP -;* V125 tmp108 [V125 ] ( 0, 0 ) int -> zero-ref single-def "field V33._length (fldOffset=0x8)" P-INDEP -;* V126 tmp109 [V126 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP -;* V127 tmp110 [V127 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP -; V128 tmp111 [V128,T60] ( 3, 1.50) byref -> rsi single-def "field V46._reference (fldOffset=0x0)" P-INDEP -; V129 tmp112 [V129,T72] ( 3, 1.50) int -> rdx single-def "field V46._length (fldOffset=0x8)" P-INDEP -;* V130 tmp113 [V130 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-DEP -;* V131 tmp114 [V131 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-DEP -; V132 tmp115 [V132,T74] ( 2, 1 ) byref -> r13 "field V49._reference (fldOffset=0x0)" P-INDEP -; V133 tmp116 [V133,T79] ( 2, 1 ) int -> rdx "field V49._length (fldOffset=0x8)" P-INDEP -;* V134 tmp117 [V134 ] ( 0, 0 ) byref -> zero-ref single-def "field V55._reference (fldOffset=0x0)" P-INDEP -;* V135 tmp118 [V135 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP -;* V136 tmp119 [V136 ] ( 0, 0 ) byref -> zero-ref "field V60._reference (fldOffset=0x0)" P-INDEP -;* V137 tmp120 [V137 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x8)" P-INDEP -; V138 tmp121 [V138,T61] ( 3, 1.50) byref -> rsi single-def "field V65._reference (fldOffset=0x0)" P-INDEP -; V139 tmp122 [V139,T73] ( 3, 1.50) int -> rdx single-def "field V65._length (fldOffset=0x8)" P-INDEP -;* V140 tmp123 [V140 ] ( 0, 0 ) byref -> zero-ref "field V67._reference (fldOffset=0x0)" P-DEP -;* V141 tmp124 [V141 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x8)" P-DEP -; V142 tmp125 [V142,T75] ( 2, 1 ) byref -> r12 "field V68._reference (fldOffset=0x0)" P-INDEP -; V143 tmp126 [V143,T80] ( 2, 1 ) int -> rdx "field V68._length (fldOffset=0x8)" P-INDEP -;* V144 tmp127 [V144 ] ( 0, 0 ) byref -> zero-ref single-def "field V74._reference (fldOffset=0x0)" P-INDEP -;* V145 tmp128 [V145 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP -; V146 tmp129 [V146,T22] ( 3, 6 ) byref -> rax "field V84._reference (fldOffset=0x0)" P-INDEP -; V147 tmp130 [V147,T25] ( 3, 6 ) int -> rcx "field V84._length (fldOffset=0x8)" P-INDEP -;* V148 tmp131 [V148 ] ( 0, 0 ) ref -> zero-ref "field V92._object (fldOffset=0x0)" P-INDEP -;* V149 tmp132 [V149 ] ( 0, 0 ) int -> zero-ref "field V92._index (fldOffset=0x8)" P-INDEP -;* V150 tmp133 [V150 ] ( 0, 0 ) int -> zero-ref "field V92._length (fldOffset=0xc)" P-INDEP -; V151 tmp134 [V151,T08] ( 3, 10 ) ref -> [rbp-0xB0] do-not-enreg[] "field V93._object (fldOffset=0x0)" P-DEP -; V152 tmp135 [V152,T09] ( 3, 10 ) int -> [rbp-0xA8] do-not-enreg[] "field V93._index (fldOffset=0x8)" P-DEP -; V153 tmp136 [V153,T10] ( 3, 10 ) int -> [rbp-0xA4] do-not-enreg[] "field V93._length (fldOffset=0xc)" P-DEP -; V154 tmp137 [V154,T23] ( 3, 6 ) byref -> rsi "field V94._reference (fldOffset=0x0)" P-INDEP -; V155 tmp138 [V155,T13] ( 4, 8 ) int -> rdi "field V94._length (fldOffset=0x8)" P-INDEP -;* V156 tmp139 [V156 ] ( 0, 0 ) byref -> zero-ref "field V96._reference (fldOffset=0x0)" P-INDEP -;* V157 tmp140 [V157 ] ( 0, 0 ) int -> zero-ref "field V96._length (fldOffset=0x8)" P-INDEP -;* V158 tmp141 [V158 ] ( 0, 0 ) byref -> zero-ref "field V98._reference (fldOffset=0x0)" P-INDEP -;* V159 tmp142 [V159 ] ( 0, 0 ) int -> zero-ref "field V98._length (fldOffset=0x8)" P-INDEP -;* V160 tmp143 [V160 ] ( 0, 0 ) byref -> zero-ref "field V102._reference (fldOffset=0x0)" P-INDEP -;* V161 tmp144 [V161 ] ( 0, 0 ) int -> zero-ref "field V102._length (fldOffset=0x8)" P-INDEP -;* V162 tmp145 [V162 ] ( 0, 0 ) byref -> zero-ref "field V103._reference (fldOffset=0x0)" P-INDEP -;* V163 tmp146 [V163 ] ( 0, 0 ) int -> zero-ref "field V103._length (fldOffset=0x8)" P-INDEP -;* V164 tmp147 [V164 ] ( 0, 0 ) byref -> zero-ref "field V104._reference (fldOffset=0x0)" P-INDEP -;* V165 tmp148 [V165 ] ( 0, 0 ) int -> zero-ref "field V104._length (fldOffset=0x8)" P-INDEP -;* V166 tmp149 [V166 ] ( 0, 0 ) byref -> zero-ref "field V105._reference (fldOffset=0x0)" P-INDEP -;* V167 tmp150 [V167 ] ( 0, 0 ) int -> zero-ref "field V105._length (fldOffset=0x8)" P-INDEP -; V168 tmp151 [V168,T81] ( 2, 1 ) ubyte -> rsi single-def "V07.[000..001)" -;* V169 tmp152 [V169 ] ( 0, 0 ) long -> zero-ref single-def "V106.[000..008)" -; V170 tmp153 [V170,T56] ( 2, 2 ) ref -> rdi single-def "V106.[008..016)" -;* V171 tmp154 [V171 ] ( 0, 0 ) ref -> zero-ref single-def "V106.[016..024)" -;* V172 tmp155 [V172 ] ( 0, 0 ) ubyte -> zero-ref single-def "V106.[028..029)" -; V173 tmp156 [V173,T44] ( 3, 3 ) byref -> rdi single-def "Spilling address for field-by-field copy" -; V174 tmp157 [V174,T94] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V175 tmp158 [V175,T76] ( 2, 1 ) ref -> r13 single-def "Field obj" -; V176 tmp159 [V176,T45] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V177 tmp160 [V177,T46] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V178 tmp161 [V178,T47] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V179 tmp162 [V179,T48] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V180 tmp163 [V180,T49] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V181 tmp164 [V181,T50] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V182 tmp165 [V182,T06] ( 3, 12 ) ref -> rdi "arr expr" -; V183 tmp166 [V183,T14] ( 3, 8 ) ref -> rsi "argument with side effect" -; V184 tmp167 [V184,T95] ( 2, 0 ) ref -> rsi "argument with side effect" -; V185 tmp168 [V185,T96] ( 2, 0 ) ref -> rsi "argument with side effect" -; V186 tmp169 [V186,T57] ( 2, 2 ) ref -> rsi single-def "argument with side effect" -; V187 tmp170 [V187,T97] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V188 PSPSym [V188,T84] ( 1, 1 ) long -> [rbp-0xF0] do-not-enreg[V] "PSPSym" -; V189 cse0 [V189,T24] ( 3, 6 ) ref -> rdi "CSE #10: moderate" -; V190 cse1 [V190,T26] ( 3, 6 ) int -> rsi "CSE #11: moderate" -; V191 cse2 [V191,T62] ( 3, 1.50) ref -> rdx "CSE #01: conservative" -; V192 cse3 [V192,T63] ( 3, 1.50) ref -> rdi "CSE #02: conservative" -; V193 cse4 [V193,T64] ( 3, 1.50) ref -> rdi "CSE #03: conservative" -; V194 cse5 [V194,T65] ( 3, 1.50) ref -> rdi "CSE #05: conservative" -; V195 cse6 [V195,T29] ( 3, 5 ) int -> [rbp-0xB8] spill-single-def "CSE #12: moderate" -; V196 rat0 [V196,T01] ( 5, 16.50) long -> [rbp-0xC0] "Widened IV V13" -; V197 rat1 [V197,T03] ( 4, 14 ) ref -> r13 "replacement local" -; V198 rat2 [V198,T32] ( 3, 4 ) long -> rdi "CSE for expectedClsNode" -; V199 rat3 [V199,T86] ( 3, 12 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable" +;* V102 tmp85 [V102 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" +;* V103 tmp86 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V104 tmp87 [V104 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V105 tmp88 [V105 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V106 tmp89 [V106 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V107 tmp90 [V107 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] "stack allocated ref class temp" +; V108 tmp91 [V108,T52] ( 3, 2 ) ref -> [rbp-0xD8] do-not-enreg[H] EH-live "field V02._name (fldOffset=0x0)" P-INDEP +; V109 tmp92 [V109,T36] ( 7, 3.50) ref -> [rbp-0x50] do-not-enreg[] "field V08._object (fldOffset=0x0)" P-DEP +; V110 tmp93 [V110,T78] ( 2, 1 ) int -> [rbp-0x48] do-not-enreg[] "field V08._index (fldOffset=0x8)" P-DEP +; V111 tmp94 [V111,T70] ( 3, 1.50) int -> [rbp-0x44] do-not-enreg[] "field V08._length (fldOffset=0xc)" P-DEP +; V112 tmp95 [V112 ] ( 4, 14 ) ref -> [rbp-0x60] do-not-enreg[X] addr-exposed "field V14.AttrType (fldOffset=0x0)" P-DEP +; V113 tmp96 [V113 ] ( 3, 10 ) ref -> [rbp-0x58] do-not-enreg[X] addr-exposed "field V14.AttrValues (fldOffset=0x8)" P-DEP +;* V114 tmp97 [V114 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP +;* V115 tmp98 [V115 ] ( 0, 0 ) int -> zero-ref single-def "field V18._length (fldOffset=0x8)" P-INDEP +; V116 tmp99 [V116,T22] ( 3, 6 ) byref -> [rbp-0xE0] "field V25._reference (fldOffset=0x0)" P-INDEP +; V117 tmp100 [V117,T25] ( 3, 6 ) int -> [rbp-0xB4] "field V25._length (fldOffset=0x8)" P-INDEP +;* V118 tmp101 [V118 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-INDEP +;* V119 tmp102 [V119 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP +; V120 tmp103 [V120,T59] ( 3, 1.50) byref -> rax "field V30._reference (fldOffset=0x0)" P-INDEP +; V121 tmp104 [V121,T71] ( 3, 1.50) int -> rdx "field V30._length (fldOffset=0x8)" P-INDEP +;* V122 tmp105 [V122 ] ( 0, 0 ) ref -> zero-ref "field V31._object (fldOffset=0x0)" P-INDEP +;* V123 tmp106 [V123 ] ( 0, 0 ) int -> zero-ref "field V31._index (fldOffset=0x8)" P-INDEP +;* V124 tmp107 [V124 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0xc)" P-INDEP +;* V125 tmp108 [V125 ] ( 0, 0 ) byref -> zero-ref single-def "field V33._reference (fldOffset=0x0)" P-INDEP +;* V126 tmp109 [V126 ] ( 0, 0 ) int -> zero-ref single-def "field V33._length (fldOffset=0x8)" P-INDEP +;* V127 tmp110 [V127 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP +;* V128 tmp111 [V128 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP +; V129 tmp112 [V129,T60] ( 3, 1.50) byref -> rsi single-def "field V46._reference (fldOffset=0x0)" P-INDEP +; V130 tmp113 [V130,T72] ( 3, 1.50) int -> rdx single-def "field V46._length (fldOffset=0x8)" P-INDEP +;* V131 tmp114 [V131 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-DEP +;* V132 tmp115 [V132 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-DEP +; V133 tmp116 [V133,T74] ( 2, 1 ) byref -> r13 "field V49._reference (fldOffset=0x0)" P-INDEP +; V134 tmp117 [V134,T79] ( 2, 1 ) int -> rdx "field V49._length (fldOffset=0x8)" P-INDEP +;* V135 tmp118 [V135 ] ( 0, 0 ) byref -> zero-ref single-def "field V55._reference (fldOffset=0x0)" P-INDEP +;* V136 tmp119 [V136 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP +;* V137 tmp120 [V137 ] ( 0, 0 ) byref -> zero-ref "field V60._reference (fldOffset=0x0)" P-INDEP +;* V138 tmp121 [V138 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x8)" P-INDEP +; V139 tmp122 [V139,T61] ( 3, 1.50) byref -> rsi single-def "field V65._reference (fldOffset=0x0)" P-INDEP +; V140 tmp123 [V140,T73] ( 3, 1.50) int -> rdx single-def "field V65._length (fldOffset=0x8)" P-INDEP +;* V141 tmp124 [V141 ] ( 0, 0 ) byref -> zero-ref "field V67._reference (fldOffset=0x0)" P-DEP +;* V142 tmp125 [V142 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x8)" P-DEP +; V143 tmp126 [V143,T75] ( 2, 1 ) byref -> r12 "field V68._reference (fldOffset=0x0)" P-INDEP +; V144 tmp127 [V144,T80] ( 2, 1 ) int -> rdx "field V68._length (fldOffset=0x8)" P-INDEP +;* V145 tmp128 [V145 ] ( 0, 0 ) byref -> zero-ref single-def "field V74._reference (fldOffset=0x0)" P-INDEP +;* V146 tmp129 [V146 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP +; V147 tmp130 [V147,T33] ( 2, 4 ) byref -> rax "field V84._reference (fldOffset=0x0)" P-INDEP +; V148 tmp131 [V148,T34] ( 2, 4 ) int -> rcx "field V84._length (fldOffset=0x8)" P-INDEP +;* V149 tmp132 [V149 ] ( 0, 0 ) byref -> zero-ref "field V85._reference (fldOffset=0x0)" P-INDEP +;* V150 tmp133 [V150 ] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x8)" P-INDEP +;* V151 tmp134 [V151 ] ( 0, 0 ) ref -> zero-ref "field V93._object (fldOffset=0x0)" P-INDEP +;* V152 tmp135 [V152 ] ( 0, 0 ) int -> zero-ref "field V93._index (fldOffset=0x8)" P-INDEP +;* V153 tmp136 [V153 ] ( 0, 0 ) int -> zero-ref "field V93._length (fldOffset=0xc)" P-INDEP +; V154 tmp137 [V154,T08] ( 3, 10 ) ref -> [rbp-0xB0] do-not-enreg[] "field V94._object (fldOffset=0x0)" P-DEP +; V155 tmp138 [V155,T09] ( 3, 10 ) int -> [rbp-0xA8] do-not-enreg[] "field V94._index (fldOffset=0x8)" P-DEP +; V156 tmp139 [V156,T10] ( 3, 10 ) int -> [rbp-0xA4] do-not-enreg[] "field V94._length (fldOffset=0xc)" P-DEP +; V157 tmp140 [V157,T23] ( 3, 6 ) byref -> rsi "field V95._reference (fldOffset=0x0)" P-INDEP +; V158 tmp141 [V158,T13] ( 4, 8 ) int -> rdi "field V95._length (fldOffset=0x8)" P-INDEP +;* V159 tmp142 [V159 ] ( 0, 0 ) byref -> zero-ref "field V97._reference (fldOffset=0x0)" P-INDEP +;* V160 tmp143 [V160 ] ( 0, 0 ) int -> zero-ref "field V97._length (fldOffset=0x8)" P-INDEP +;* V161 tmp144 [V161 ] ( 0, 0 ) byref -> zero-ref "field V99._reference (fldOffset=0x0)" P-INDEP +;* V162 tmp145 [V162 ] ( 0, 0 ) int -> zero-ref "field V99._length (fldOffset=0x8)" P-INDEP +;* V163 tmp146 [V163 ] ( 0, 0 ) byref -> zero-ref "field V103._reference (fldOffset=0x0)" P-INDEP +;* V164 tmp147 [V164 ] ( 0, 0 ) int -> zero-ref "field V103._length (fldOffset=0x8)" P-INDEP +;* V165 tmp148 [V165 ] ( 0, 0 ) byref -> zero-ref "field V104._reference (fldOffset=0x0)" P-INDEP +;* V166 tmp149 [V166 ] ( 0, 0 ) int -> zero-ref "field V104._length (fldOffset=0x8)" P-INDEP +;* V167 tmp150 [V167 ] ( 0, 0 ) byref -> zero-ref "field V105._reference (fldOffset=0x0)" P-INDEP +;* V168 tmp151 [V168 ] ( 0, 0 ) int -> zero-ref "field V105._length (fldOffset=0x8)" P-INDEP +;* V169 tmp152 [V169 ] ( 0, 0 ) byref -> zero-ref "field V106._reference (fldOffset=0x0)" P-INDEP +;* V170 tmp153 [V170 ] ( 0, 0 ) int -> zero-ref "field V106._length (fldOffset=0x8)" P-INDEP +; V171 tmp154 [V171,T81] ( 2, 1 ) ubyte -> rsi single-def "V07.[000..001)" +;* V172 tmp155 [V172 ] ( 0, 0 ) long -> zero-ref single-def "V107.[000..008)" +; V173 tmp156 [V173,T56] ( 2, 2 ) ref -> rdi single-def "V107.[008..016)" +;* V174 tmp157 [V174 ] ( 0, 0 ) ref -> zero-ref single-def "V107.[016..024)" +;* V175 tmp158 [V175 ] ( 0, 0 ) ubyte -> zero-ref single-def "V107.[028..029)" +; V176 tmp159 [V176,T44] ( 3, 3 ) byref -> rdi single-def "Spilling address for field-by-field copy" +; V177 tmp160 [V177,T94] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V178 tmp161 [V178,T76] ( 2, 1 ) ref -> r13 single-def "Field obj" +; V179 tmp162 [V179,T45] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V180 tmp163 [V180,T46] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V181 tmp164 [V181,T47] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V182 tmp165 [V182,T48] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V183 tmp166 [V183,T49] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V184 tmp167 [V184,T50] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V185 tmp168 [V185,T06] ( 3, 12 ) ref -> rdi "arr expr" +; V186 tmp169 [V186,T14] ( 3, 8 ) ref -> rsi "argument with side effect" +; V187 tmp170 [V187,T95] ( 2, 0 ) ref -> rsi "argument with side effect" +; V188 tmp171 [V188,T96] ( 2, 0 ) ref -> rsi "argument with side effect" +; V189 tmp172 [V189,T57] ( 2, 2 ) ref -> rsi single-def "argument with side effect" +; V190 tmp173 [V190,T97] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V191 PSPSym [V191,T84] ( 1, 1 ) long -> [rbp-0xF0] do-not-enreg[V] "PSPSym" +; V192 cse0 [V192,T24] ( 3, 6 ) ref -> rdi "CSE #10: moderate" +; V193 cse1 [V193,T26] ( 3, 6 ) int -> rsi "CSE #11: moderate" +; V194 cse2 [V194,T62] ( 3, 1.50) ref -> rdx "CSE #01: conservative" +; V195 cse3 [V195,T63] ( 3, 1.50) ref -> rdi "CSE #02: conservative" +; V196 cse4 [V196,T64] ( 3, 1.50) ref -> rdi "CSE #03: conservative" +; V197 cse5 [V197,T65] ( 3, 1.50) ref -> rdi "CSE #05: conservative" +; V198 cse6 [V198,T29] ( 3, 5 ) int -> [rbp-0xB8] spill-single-def "CSE #12: moderate" +; V199 rat0 [V199,T01] ( 5, 16.50) long -> [rbp-0xC0] "Widened IV V13" +; V200 rat1 [V200,T03] ( 4, 14 ) ref -> r13 "replacement local" +; V201 rat2 [V201,T32] ( 3, 4 ) long -> rdi "CSE for expectedClsNode" +; V202 rat3 [V202,T86] ( 3, 12 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 200 G_M28512_IG01: push rbp push r15 push r14 push r13 push r12 push rbx sub rsp, 200 lea rbp, [rsp+0xF0] vxorps xmm8, xmm8, xmm8 vmovdqu32 zmmword ptr [rbp-0xB0], zmm8 vmovdqu32 zmmword ptr [rbp-0x70], zmm8 xor eax, eax mov qword ptr [rbp-0x30], rax mov qword ptr [rbp-0xF0], rsp mov rbx, rdi mov r15d, esi ;; size=69 bbWeight=1 PerfScore 13.83 G_M28512_IG02: mov rdi, gword ptr [rbx+0x10] mov esi, 1 mov rax, 0xD1FFAB1E ; code for Internal.Cryptography.PkcsHelpers:GetDigestAlgorithm(System.String,ubyte):System.Security.Cryptography.HashAlgorithmName call [rax]Internal.Cryptography.PkcsHelpers:GetDigestAlgorithm(System.String,ubyte):System.Security.Cryptography.HashAlgorithmName mov gword ptr [rbp-0xD8], rax ;; size=28 bbWeight=1 PerfScore 6.50 G_M28512_IG03: mov rdi, gword ptr [rbp-0xD8] mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.IncrementalHash:CreateHash(System.Security.Cryptography.HashAlgorithmName):System.Security.Cryptography.IncrementalHash call [rax]System.Security.Cryptography.IncrementalHash:CreateHash(System.Security.Cryptography.HashAlgorithmName):System.Security.Cryptography.IncrementalHash mov r14, rax ;; size=22 bbWeight=1 PerfScore 4.50 G_M28512_IG04: cmp gword ptr [rbx+0x40], 0 jne G_M28512_IG08 ;; size=11 bbWeight=1 PerfScore 4.00 G_M28512_IG05: mov rdx, gword ptr [rbx+0x30] cmp byte ptr [rdx+0x22], 0 je G_M28512_IG17 cmp byte ptr [rdx], dl add rdx, 40 lea rdi, bword ptr [rdx+0x30] movzx rsi, byte ptr [rdi] ;; size=28 bbWeight=0.50 PerfScore 5.88 G_M28512_IG06: vmovdqu xmm0, xmmword ptr [rdi] vmovdqu xmmword ptr [rbp-0x40], xmm0 mov rax, qword ptr [rdi+0x10] mov qword ptr [rbp-0x30], rax ;; size=17 bbWeight=0.50 PerfScore 4.00 G_M28512_IG07: test esi, esi je G_M28512_IG17 mov rdi, gword ptr [rbp-0x38] mov rsi, qword ptr [rbp-0x30] mov rdx, gword ptr [rdx+0x28] mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.Pkcs.SignedCms:GetContent(System.ReadOnlyMemory`1[ubyte],System.String):System.ReadOnlyMemory`1[ubyte] call [rax]System.Security.Cryptography.Pkcs.SignedCms:GetContent(System.ReadOnlyMemory`1[ubyte],System.String):System.ReadOnlyMemory`1[ubyte] mov gword ptr [rbp-0x50], rax mov qword ptr [rbp-0x48], rdx xor r13, r13 xor edx, edx cmp gword ptr [rbp-0x50], 0 je G_M28512_IG15 mov rdx, gword ptr [rbp-0x50] mov rdi, qword ptr [rdx] test dword ptr [rdi], 0xD1FFAB1E je G_M28512_IG13 mov r13, gword ptr [rbp-0x50] add r13, 16 mov rdi, gword ptr [rbp-0x50] mov edx, dword ptr [rdi+0x08] jmp G_M28512_IG14 ;; size=95 bbWeight=0.50 PerfScore 13.62 G_M28512_IG08: mov r13, gword ptr [rbx+0x40] add r13, 144 xor r12, r12 xor edx, edx mov rdi, gword ptr [r13] test rdi, rdi je SHORT G_M28512_IG11 mov rdx, qword ptr [rdi] test dword ptr [rdx], 0xD1FFAB1E je SHORT G_M28512_IG09 lea r12, bword ptr [rdi+0x10] mov edx, dword ptr [rdi+0x08] jmp SHORT G_M28512_IG10 ;; size=45 bbWeight=0.50 PerfScore 8.25 G_M28512_IG09: mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x28]System.Buffers.MemoryManager`1[ubyte]:GetSpan():System.Span`1[ubyte]:this mov r12, rax ;; size=13 bbWeight=0.50 PerfScore 3.62 G_M28512_IG10: mov edi, dword ptr [r13+0x08] and edi, 0xD1FFAB1E mov esi, dword ptr [r13+0x0C] mov eax, esi add rax, rdi mov edx, edx cmp rax, rdx ja G_M28512_IG53 add r12, rdi mov edx, esi ;; size=35 bbWeight=0.50 PerfScore 3.38 G_M28512_IG11: mov rsi, r12 cmp byte ptr [r14+0x1C], 0 jne G_M28512_IG52 mov rdi, gword ptr [r14+0x08] test rdi, rdi je SHORT G_M28512_IG12 mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this jmp G_M28512_IG19 ;; size=38 bbWeight=0.50 PerfScore 8.25 G_M28512_IG12: mov rdi, gword ptr [r14+0x10] mov rdi, gword ptr [rdi+0x18] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this jmp G_M28512_IG19 ;; size=23 bbWeight=0.50 PerfScore 6.50 G_M28512_IG13: mov rdi, gword ptr [rbp-0x50] mov rax, gword ptr [rbp-0x50] mov rax, qword ptr [rax] mov rax, qword ptr [rax+0x40] call [rax+0x28]System.Buffers.MemoryManager`1[ubyte]:GetSpan():System.Span`1[ubyte]:this mov r13, rax ;; size=21 bbWeight=0.50 PerfScore 4.62 G_M28512_IG14: mov edi, dword ptr [rbp-0x48] and edi, 0xD1FFAB1E mov esi, dword ptr [rbp-0x44] add rsi, rdi mov edx, edx cmp rsi, rdx ja G_M28512_IG53 add r13, rdi mov edx, dword ptr [rbp-0x44] ;; size=32 bbWeight=0.50 PerfScore 2.62 G_M28512_IG15: mov rsi, r13 cmp byte ptr [r14+0x1C], 0 jne G_M28512_IG52 mov rdi, gword ptr [r14+0x08] test rdi, rdi je SHORT G_M28512_IG16 mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this jmp SHORT G_M28512_IG17 ;; size=35 bbWeight=0.50 PerfScore 8.25 G_M28512_IG16: mov rdi, gword ptr [r14+0x10] mov rdi, gword ptr [rdi+0x18] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this ;; size=18 bbWeight=0.50 PerfScore 5.50 G_M28512_IG17: mov rdi, gword ptr [rbx+0x30] mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.Pkcs.SignedCms:GetHashableContentSpan():System.ReadOnlySpan`1[ubyte]:this cmp dword ptr [rdi], edi call [rax]System.Security.Cryptography.Pkcs.SignedCms:GetHashableContentSpan():System.ReadOnlySpan`1[ubyte]:this cmp byte ptr [r14+0x1C], 0 jne G_M28512_IG52 mov rdi, gword ptr [r14+0x08] test rdi, rdi je SHORT G_M28512_IG18 mov rsi, rax mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this jmp SHORT G_M28512_IG19 ;; size=53 bbWeight=0.50 PerfScore 12.38 G_M28512_IG18: mov rdi, gword ptr [r14+0x10] mov rdi, gword ptr [rdi+0x18] mov rsi, rax mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this ;; size=21 bbWeight=0.50 PerfScore 5.62 G_M28512_IG19: cmp gword ptr [rbx+0x40], 0 jne SHORT G_M28512_IG21 ;; size=7 bbWeight=1 PerfScore 4.00 G_M28512_IG20: cmp gword ptr [rbx+0x18], 0 setne dil movzx rdi, dil jmp SHORT G_M28512_IG22 ;; size=15 bbWeight=0.50 PerfScore 3.12 G_M28512_IG21: mov edi, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M28512_IG22: movzx r13, dil cmp gword ptr [rbx+0x18], 0 je SHORT G_M28512_IG24 ;; size=11 bbWeight=1 PerfScore 4.25 G_M28512_IG23: mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.IncrementalHash:GetHashAndReset():ubyte[]:this call [rax]System.Security.Cryptography.IncrementalHash:GetHashAndReset():ubyte[]:this mov r12, rax mov rdi, 0xD1FFAB1E ; System.Formats.Asn1.AsnWriter call CORINFO_HELP_NEWSFAST mov dword ptr [rax+0x1C], 2 mov gword ptr [rbp-0xC8], rax test r15b, r15b je SHORT G_M28512_IG26 xor edx, edx xor ecx, ecx lea rsi, [rbp-0xA0] mov rdi, rax mov r8, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:PushSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this call [r8]System.Formats.Asn1.AsnWriter:PushSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this jmp SHORT G_M28512_IG27 ;; size=81 bbWeight=0.50 PerfScore 7.38 G_M28512_IG24: test r15b, r15b je G_M28512_IG45 xor rax, rax ;; size=11 bbWeight=0.50 PerfScore 0.75 G_M28512_IG25: vzeroupper add rsp, 200 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=21 bbWeight=0.50 PerfScore 2.62 G_M28512_IG26: xor edx, edx xor ecx, ecx lea rsi, [rbp-0x80] mov rdi, rax mov r8, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:PushSetOf(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this call [r8]System.Formats.Asn1.AsnWriter:PushSetOf(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this ;; size=24 bbWeight=0.50 PerfScore 2.25 G_M28512_IG27: mov rbx, gword ptr [rbx+0x18] xor eax, eax mov ecx, dword ptr [rbx+0x08] mov dword ptr [rbp-0xB8], ecx test ecx, ecx jle G_M28512_IG43 ;; size=23 bbWeight=0.50 PerfScore 3.25 G_M28512_IG28: mov qword ptr [rbp-0xC0], rax mov rdi, rax shl rdi, 4 ;; size=14 bbWeight=4 PerfScore 7.00 G_M28512_IG29: vmovdqu xmm0, xmmword ptr [rbx+rdi+0x10] vmovdqu xmmword ptr [rbp-0x60], xmm0 ;; size=11 bbWeight=4 PerfScore 20.00 G_M28512_IG30: lea rdi, [rbp-0x60] mov rsi, gword ptr [rbp-0xC8] mov rdx, 0xD1FFAB1E ; code for System.Security.Cryptography.Asn1.AttributeAsn:Encode(System.Formats.Asn1.AsnWriter):this call [rdx]System.Security.Cryptography.Asn1.AttributeAsn:Encode(System.Formats.Asn1.AsnWriter):this mov rdi, gword ptr [rbp-0x60] test rdi, rdi je G_M28512_IG42 ;; size=36 bbWeight=4 PerfScore 28.00 G_M28512_IG31: cmp dword ptr [rdi+0x08], 20 jne G_M28512_IG42 ;; size=10 bbWeight=1 PerfScore 4.00 G_M28512_IG32: vmovups ymm0, ymmword ptr [rdi+0x0C] vpxor ymm0, ymm0, ymmword ptr [reloc @RWD00] vmovups ymm1, ymmword ptr [rdi+0x14] vpternlogq ymm0, ymm1, ymmword ptr [reloc @RWD32], -10 vptest ymm0, ymm0 sete dil movzx rdi, dil test edi, edi je G_M28512_IG42 mov rdi, gword ptr [rbp-0x60] mov rsi, gword ptr [rbp-0x58] mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.Pkcs.SignerInfo:MakeAttribute(System.Security.Cryptography.Asn1.AttributeAsn):System.Security.Cryptography.CryptographicAttributeObject call [rax]System.Security.Cryptography.Pkcs.SignerInfo:MakeAttribute(System.Security.Cryptography.Asn1.AttributeAsn):System.Security.Cryptography.CryptographicAttributeObject mov rdi, gword ptr [rax+0x08] mov rdi, gword ptr [rdi+0x08] mov rsi, rdi mov esi, dword ptr [rsi+0x10] cmp esi, 1 jne G_M28512_IG51 test esi, esi je G_M28512_IG50 mov rdi, gword ptr [rdi+0x08] cmp dword ptr [rdi+0x08], 0 jbe G_M28512_IG54 mov rsi, gword ptr [rdi+0x10] mov r13, rsi test r13, r13 je SHORT G_M28512_IG34 ;; size=127 bbWeight=2 PerfScore 90.00 G_M28512_IG33: mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.Pkcs.Pkcs9MessageDigest cmp qword ptr [r13], rdi jne G_M28512_IG49 ;; size=20 bbWeight=1 PerfScore 4.25 G_M28512_IG34: test r12, r12 jne SHORT G_M28512_IG35 xor rax, rax xor ecx, ecx jmp SHORT G_M28512_IG36 ;; size=11 bbWeight=2 PerfScore 7.50 G_M28512_IG35: lea rax, bword ptr [r12+0x10] mov ecx, dword ptr [r12+0x08] - ;; size=10 bbWeight=2 PerfScore 5.00 -G_M28512_IG36: mov bword ptr [rbp-0xE0], rax mov dword ptr [rbp-0xB4], ecx + mov rax, bword ptr [rbp-0xE0] + mov ecx, dword ptr [rbp-0xB4] + ;; size=36 bbWeight=2 PerfScore 13.00 +G_M28512_IG36: mov rdx, gword ptr [r13+0x18] test rdx, rdx - mov rax, bword ptr [rbp-0xE0] - jne SHORT G_M28512_IG39 + jne G_M28512_IG39 mov rdi, gword ptr [r13+0x10] test rdi, rdi jne SHORT G_M28512_IG37 xor rdx, rdx + mov bword ptr [rbp-0xE0], rax + mov dword ptr [rbp-0xB4], ecx jmp SHORT G_M28512_IG38 - ;; size=42 bbWeight=2 PerfScore 23.50 + ;; size=39 bbWeight=2 PerfScore 21.50 G_M28512_IG37: + mov bword ptr [rbp-0xE0], rax + mov dword ptr [rbp-0xB4], ecx mov gword ptr [rbp-0xB0], rdi xor esi, esi mov dword ptr [rbp-0xA8], esi mov edi, dword ptr [rdi+0x08] mov dword ptr [rbp-0xA4], edi mov rdi, gword ptr [rbp-0xB0] mov rsi, qword ptr [rbp-0xA8] mov rdx, 0xD1FFAB1E ; code for Internal.Cryptography.PkcsHelpers:DecodeOctetString(System.ReadOnlyMemory`1[ubyte]):ubyte[] call [rdx]Internal.Cryptography.PkcsHelpers:DecodeOctetString(System.ReadOnlyMemory`1[ubyte]):ubyte[] mov rdx, rax - ;; size=53 bbWeight=2 PerfScore 21.50 + ;; size=66 bbWeight=2 PerfScore 25.50 G_M28512_IG38: lea rdi, bword ptr [r13+0x18] mov gword ptr [rbp-0xD0], rdx mov rsi, rdx call CORINFO_HELP_ASSIGN_REF mov r13, gword ptr [rbp-0xD0] mov rdx, r13 mov rax, bword ptr [rbp-0xE0] - ;; size=36 bbWeight=2 PerfScore 10.00 + mov ecx, dword ptr [rbp-0xB4] + ;; size=42 bbWeight=2 PerfScore 12.00 G_M28512_IG39: test rdx, rdx jne SHORT G_M28512_IG40 xor rsi, rsi xor edi, edi jmp SHORT G_M28512_IG41 ;; size=11 bbWeight=2 PerfScore 7.50 G_M28512_IG40: lea rsi, bword ptr [rdx+0x10] mov edi, dword ptr [rdx+0x08] ;; size=7 bbWeight=2 PerfScore 5.00 G_M28512_IG41: - cmp dword ptr [rbp-0xB4], edi + cmp ecx, edi jne G_M28512_IG48 mov edx, edi mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte call [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte test eax, eax je G_M28512_IG48 xor r13d, r13d - ;; size=40 bbWeight=2 PerfScore 16.50 + ;; size=36 bbWeight=2 PerfScore 13.00 G_M28512_IG42: mov rsi, qword ptr [rbp-0xC0] inc esi mov edx, dword ptr [rbp-0xB8] cmp edx, esi mov rax, rsi jg G_M28512_IG28 ;; size=26 bbWeight=4 PerfScore 15.00 G_M28512_IG43: test r15b, r15b je SHORT G_M28512_IG44 xor esi, esi xor edx, edx mov rdi, gword ptr [rbp-0xC8] mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:PopSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this call [rax]System.Formats.Asn1.AsnWriter:PopSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this mov rdi, gword ptr [rbp-0xC8] mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this call [rax]System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this cmp dword ptr [rax+0x08], 0 jbe G_M28512_IG54 mov byte ptr [rax+0x10], 49 mov rdi, r14 mov rsi, rax mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.IncrementalHash:AppendData(ubyte[]):this call [rax]System.Security.Cryptography.IncrementalHash:AppendData(ubyte[]):this jmp SHORT G_M28512_IG45 ;; size=81 bbWeight=0.50 PerfScore 10.50 G_M28512_IG44: xor esi, esi xor edx, edx mov rdi, gword ptr [rbp-0xC8] mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:PopSetOf(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this call [rax]System.Formats.Asn1.AsnWriter:PopSetOf(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this mov rdi, gword ptr [rbp-0xC8] mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this call [rax]System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this mov rsi, rax mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.IncrementalHash:AppendData(ubyte[]):this call [rax]System.Security.Cryptography.IncrementalHash:AppendData(ubyte[]):this ;; size=60 bbWeight=0.50 PerfScore 6.38 G_M28512_IG45: test r13d, r13d jne SHORT G_M28512_IG47 mov rax, r14 ;; size=8 bbWeight=0.50 PerfScore 0.75 G_M28512_IG46: vzeroupper add rsp, 200 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=21 bbWeight=0.50 PerfScore 2.62 G_M28512_IG47: mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.CryptographicException call CORINFO_HELP_NEWSFAST mov r14, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_Cryptography_Cms_MissingAuthenticatedAttribute():System.String call [rax]System.SR:get_Cryptography_Cms_MissingAuthenticatedAttribute():System.String mov rsi, rax mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptographicException:.ctor(System.String):this call [rax]System.Security.Cryptography.CryptographicException:.ctor(System.String):this mov rdi, r14 call CORINFO_HELP_THROW int3 ;; size=57 bbWeight=0 PerfScore 0.00 G_M28512_IG48: mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.CryptographicException call CORINFO_HELP_NEWSFAST mov rbx, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_Cryptography_BadHashValue():System.String call [rax]System.SR:get_Cryptography_BadHashValue():System.String mov rsi, rax mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptographicException:.ctor(System.String):this call [rax]System.Security.Cryptography.CryptographicException:.ctor(System.String):this mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=57 bbWeight=0 PerfScore 0.00 G_M28512_IG49: mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS call [rax]CORINFO_HELP_CHKCASTCLASS int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M28512_IG50: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() call [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M28512_IG51: mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.CryptographicException call CORINFO_HELP_NEWSFAST mov rbx, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_Cryptography_BadHashValue():System.String call [rax]System.SR:get_Cryptography_BadHashValue():System.String mov rsi, rax mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptographicException:.ctor(System.String):this call [rax]System.Security.Cryptography.CryptographicException:.ctor(System.String):this mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=57 bbWeight=0 PerfScore 0.00 G_M28512_IG52: mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowObjectDisposedException(System.Object) call [rax]System.ThrowHelper:ThrowObjectDisposedException(System.Object) int3 ;; size=16 bbWeight=0 PerfScore 0.00 G_M28512_IG53: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException() call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M28512_IG54: call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00 G_M28512_IG55: push rbp push r15 push r14 push r13 push r12 push rbx push rax mov rbp, qword ptr [rdi] mov qword ptr [rsp], rbp lea rbp, [rbp+0xF0] ;; size=25 bbWeight=0 PerfScore 0.00 G_M28512_IG56: mov rbx, rsi mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.HashAlgorithmName call CORINFO_HELP_NEWSFAST mov r15, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_Cryptography_UnknownHashAlgorithm():System.String call [rax]System.SR:get_Cryptography_UnknownHashAlgorithm():System.String mov r14, rax lea rdi, bword ptr [r15+0x08] mov rsi, gword ptr [rbp-0xD8] call CORINFO_HELP_ASSIGN_REF mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.CryptographicException call CORINFO_HELP_NEWSFAST mov r13, rax mov rsi, r15 mov rdi, r14 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, r13 mov rdx, rbx mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptographicException:.ctor(System.String,System.Exception):this call [rax]System.Security.Cryptography.CryptographicException:.ctor(System.String,System.Exception):this mov rdi, r13 call CORINFO_HELP_THROW int3 ;; size=118 bbWeight=0 PerfScore 0.00 RWD00 dq 002E0032002E0031h, 002E003000340038h, 0035003300310031h, 0031002E00390034h RWD32 dq 002E003000340038h, 0035003300310031h, 0031002E00390034h, 0034002E0039002Eh -; Total bytes of code 1801, prolog size 69, PerfScore 434.08, instruction count 434, allocated bytes for code 1801 (MethodHash=5b9d909f) for method System.Security.Cryptography.Pkcs.SignerInfo:PrepareDigest(ubyte):System.Security.Cryptography.IncrementalHash:this (FullOpts) +; Total bytes of code 1839, prolog size 69, PerfScore 442.58, instruction count 440, allocated bytes for code 1839 (MethodHash=5b9d909f) for method System.Security.Cryptography.Pkcs.SignerInfo:PrepareDigest(ubyte):System.Security.Cryptography.IncrementalHash:this (FullOpts) ```

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

MihuBot commented 1 month ago

Top method improvements

-33 (-2.79 % of base) - System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte ```diff ; Assembly listing for method System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[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; 20 single block inlinees; 18 inlinees without PGO data +; 0 inlinees with PGO data; 18 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,T09] ( 9, 26.50) ref -> r14 class-hnd single-def -; V02 arg2 [V02,T13] ( 11, 17 ) ref -> [rbp-0x80] class-hnd single-def +; V01 arg1 [V01,T31] ( 5, 6.50) ref -> [rbp-0x80] class-hnd single-def +; V02 arg2 [V02,T12] ( 11, 17 ) ref -> r12 class-hnd single-def ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def -; V04 arg4 [V04,T59] ( 4, 2 ) byref -> [rbp+0x10] single-def -; V05 loc0 [V05,T14] ( 8, 18 ) int -> [rbp-0x2C] +; V04 arg4 [V04,T64] ( 4, 2 ) byref -> [rbp+0x10] single-def +; V05 loc0 [V05,T13] ( 8, 18 ) int -> [rbp-0x2C] ; V06 loc1 [V06 ] ( 3, 1.50) int -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op ;* V07 loc2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V08 loc3 [V08,T03] ( 10, 33 ) int -> [rbp-0x3C] ;* V09 loc4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd ;* V10 loc5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd -; V11 loc6 [V11,T16] ( 8, 17.50) ref -> [rbp-0x88] class-hnd -;* V12 loc7 [V12,T78] ( 0, 0 ) int -> zero-ref -; V13 loc8 [V13,T15] ( 8, 18 ) int -> rax -;* V14 loc9 [V14,T79] ( 0, 0 ) int -> zero-ref +; V11 loc6 [V11,T15] ( 8, 17.50) ref -> [rbp-0x88] class-hnd +;* V12 loc7 [V12,T83] ( 0, 0 ) int -> zero-ref +; V13 loc8 [V13,T14] ( 8, 18 ) int -> rax +;* V14 loc9 [V14,T84] ( 0, 0 ) int -> zero-ref ;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V16 tmp1 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V17 tmp2 [V17 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" -; V18 tmp3 [V18,T52] ( 4, 4 ) int -> rsi "Inlining Arg" +; V18 tmp3 [V18,T55] ( 4, 4 ) int -> rsi "Inlining Arg" ;* V19 tmp4 [V19 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" -; V20 tmp5 [V20,T48] ( 5, 5 ) byref -> r15 single-def "Inlining Arg" -; V21 tmp6 [V21,T33] ( 8, 8 ) int -> rbx "Inlining Arg" -; V22 tmp7 [V22,T53] ( 4, 4 ) int -> r9 "Inlining Arg" +; V20 tmp5 [V20,T47] ( 5, 5 ) byref -> r15 single-def "Inlining Arg" +; V21 tmp6 [V21,T32] ( 8, 8 ) int -> rbx "Inlining Arg" +; V22 tmp7 [V22,T56] ( 4, 4 ) int -> r12 "Inlining Arg" ;* V23 tmp8 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -; V24 tmp9 [V24,T60] ( 2, 2 ) byref -> rdx single-def "Inlining Arg" -; V25 tmp10 [V25,T63] ( 2, 2 ) int -> rbx "Inlining Arg" +; V24 tmp9 [V24,T65] ( 2, 2 ) byref -> rdx single-def "Inlining Arg" +; V25 tmp10 [V25,T68] ( 2, 2 ) int -> rbx "Inlining Arg" ;* V26 tmp11 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V27 tmp12 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ;* V28 tmp13 [V28 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V29 tmp14 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V30 tmp15 [V30 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V31 tmp16 [V31 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V32 tmp17 [V32 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V33 tmp18 [V33,T05] ( 4, 32 ) int -> rdi "Inlining Arg" ;* V34 tmp19 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ; V35 tmp20 [V35,T04] ( 4, 32 ) byref -> r15 "Inlining Arg" ; V36 tmp21 [V36,T02] ( 5, 36 ) int -> rbx "Inlining Arg" ;* V37 tmp22 [V37 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V38 tmp23 [V38 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" ;* V39 tmp24 [V39 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" -; V40 tmp25 [V40,T80] ( 4, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" +; V40 tmp25 [V40,T85] ( 4, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" ;* V41 tmp26 [V41 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V42 tmp27 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V43 tmp28 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" -; V44 tmp29 [V44,T37] ( 2, 8 ) byref -> rdi "Inlining Arg" -; V45 tmp30 [V45,T44] ( 2, 8 ) int -> rsi "Inlining Arg" -; V46 tmp31 [V46,T35] ( 3, 8 ) int -> rax "Inline return value spill temp" +; V44 tmp29 [V44,T38] ( 2, 8 ) byref -> rdi "Inlining Arg" +; V45 tmp30 [V45,T43] ( 2, 8 ) int -> rsi "Inlining Arg" +; V46 tmp31 [V46,T34] ( 3, 8 ) int -> rax "Inline return value spill temp" ;* V47 tmp32 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V48 tmp33 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V49 tmp34 [V49,T29] ( 4, 12 ) long -> [rbp-0x48] "Inline stloc first use temp" -; V50 tmp35 [V50,T49] ( 3, 6 ) int -> [rbp-0x4C] "Inline stloc first use temp" +; V50 tmp35 [V50,T48] ( 3, 6 ) int -> [rbp-0x4C] "Inline stloc first use temp" ; V51 tmp36 [V51 ] ( 2, 8 ) byref -> [rbp-0x58] must-init pinned "Inline stloc first use temp" ; V52 tmp37 [V52 ] ( 2, 8 ) byref -> [rbp-0x60] must-init pinned "Inline stloc first use temp" ;* V53 tmp38 [V53 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V54 tmp39 [V54 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V55 tmp40 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V56 tmp41 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -; V57 tmp42 [V57,T81] ( 2, 0 ) ref -> r15 class-hnd exact "Inlining Arg" +; V57 tmp42 [V57,T86] ( 2, 0 ) ref -> r15 class-hnd exact "Inlining Arg" ; V58 tmp43 [V58,T06] ( 4, 32 ) int -> rax "Inlining Arg" ;* V59 tmp44 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -; V60 tmp45 [V60,T19] ( 2, 16 ) byref -> r15 "Inlining Arg" -; V61 tmp46 [V61,T22] ( 2, 16 ) int -> rbx "Inlining Arg" +; V60 tmp45 [V60,T18] ( 2, 16 ) byref -> r15 "Inlining Arg" +; V61 tmp46 [V61,T21] ( 2, 16 ) int -> rbx "Inlining Arg" ;* V62 tmp47 [V62 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" -; V63 tmp48 [V63,T51] ( 4, 4 ) ref -> r8 class-hnd single-def "Inlining Arg" +; V63 tmp48 [V63,T54] ( 4, 4 ) ref -> rcx class-hnd single-def "Inlining Arg" ;* V64 tmp49 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V65 tmp50 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" -; V66 tmp51 [V66,T61] ( 2, 2 ) byref -> rsi single-def "Inlining Arg" -; V67 tmp52 [V67,T64] ( 2, 2 ) int -> rdx "Inlining Arg" +; V66 tmp51 [V66,T66] ( 2, 2 ) byref -> rsi single-def "Inlining Arg" +; V67 tmp52 [V67,T69] ( 2, 2 ) int -> rdx "Inlining Arg" ;* V68 tmp53 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -; V69 tmp54 [V69,T62] ( 2, 2 ) byref -> r15 single-def "Inlining Arg" -; V70 tmp55 [V70,T65] ( 2, 2 ) int -> rbx "Inlining Arg" +; V69 tmp54 [V69,T67] ( 2, 2 ) byref -> r15 single-def "Inlining Arg" +; V70 tmp55 [V70,T70] ( 2, 2 ) int -> rbx "Inlining Arg" ;* V71 tmp56 [V71 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V72 tmp57 [V72 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ;* V73 tmp58 [V73 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V74 tmp59 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V75 tmp60 [V75 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V76 tmp61 [V76 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V77 tmp62 [V77 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V78 tmp63 [V78,T07] ( 4, 32 ) int -> rcx "Inlining Arg" ;* V79 tmp64 [V79 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" -; V80 tmp65 [V80,T20] ( 2, 16 ) byref -> r8 "Inlining Arg" +; V80 tmp65 [V80,T19] ( 2, 16 ) byref -> r8 "Inlining Arg" ; V81 tmp66 [V81,T08] ( 3, 24 ) int -> rsi "Inlining Arg" ;* V82 tmp67 [V82 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" -; V83 tmp68 [V83,T11] ( 4, 24 ) ref -> rcx class-hnd "Inlining Arg" +; V83 tmp68 [V83,T10] ( 4, 24 ) ref -> rcx class-hnd "Inlining Arg" ;* V84 tmp69 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V85 tmp70 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" -; V86 tmp71 [V86,T38] ( 2, 8 ) byref -> rdx "Inlining Arg" -; V87 tmp72 [V87,T45] ( 2, 8 ) int -> rdi "Inlining Arg" +; V86 tmp71 [V86,T39] ( 2, 8 ) byref -> rdx "Inlining Arg" +; V87 tmp72 [V87,T44] ( 2, 8 ) int -> rdi "Inlining Arg" ;* V88 tmp73 [V88 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -; V89 tmp74 [V89,T21] ( 2, 16 ) byref -> rdx "Inlining Arg" -; V90 tmp75 [V90,T23] ( 2, 16 ) int -> rbx "Inlining Arg" -; V91 tmp76 [V91,T12] ( 8, 18.50) byref -> r12 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V92 tmp77 [V92,T10] ( 12, 21 ) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V93 tmp78 [V93,T01] ( 17, 40.50) byref -> r15 "field V03._reference (fldOffset=0x0)" P-INDEP -; V94 tmp79 [V94,T00] ( 20, 49 ) int -> rbx "field V03._length (fldOffset=0x8)" P-INDEP -;* V95 tmp80 [V95,T68] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP -;* V96 tmp81 [V96,T72] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP +; V89 tmp74 [V89,T20] ( 2, 16 ) byref -> rdx "Inlining Arg" +; V90 tmp75 [V90,T22] ( 2, 16 ) int -> rbx "Inlining Arg" +; V91 tmp76 [V91,T11] ( 8, 18.50) byref -> r13 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V92 tmp77 [V92,T09] ( 12, 21 ) int -> r14 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V93 tmp78 [V93,T01] ( 17, 36.50) byref -> r15 "field V03._reference (fldOffset=0x0)" P-INDEP +; V94 tmp79 [V94,T00] ( 20, 45 ) int -> rbx "field V03._length (fldOffset=0x8)" P-INDEP +;* V95 tmp80 [V95,T73] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP +;* V96 tmp81 [V96,T77] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ;* V97 tmp82 [V97 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V98 tmp83 [V98 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V99 tmp84 [V99 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP ;* V100 tmp85 [V100 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP -;* V101 tmp86 [V101,T77] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP -; V102 tmp87 [V102,T73] ( 2, 1 ) int -> rsi "field V19._length (fldOffset=0x8)" P-INDEP -; V103 tmp88 [V103,T69] ( 2, 1 ) byref -> r15 single-def "field V23._reference (fldOffset=0x0)" P-INDEP -; V104 tmp89 [V104,T74] ( 2, 1 ) int -> rbx "field V23._length (fldOffset=0x8)" P-INDEP -; V105 tmp90 [V105,T39] ( 2, 8 ) byref -> rsi "field V26._reference (fldOffset=0x0)" P-INDEP -; V106 tmp91 [V106,T30] ( 3, 12 ) int -> rdx "field V26._length (fldOffset=0x8)" P-INDEP +;* V101 tmp86 [V101,T82] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP +; V102 tmp87 [V102,T78] ( 2, 1 ) int -> rsi "field V19._length (fldOffset=0x8)" P-INDEP +; V103 tmp88 [V103,T74] ( 2, 1 ) byref -> r15 single-def "field V23._reference (fldOffset=0x0)" P-INDEP +; V104 tmp89 [V104,T79] ( 2, 1 ) int -> rbx "field V23._length (fldOffset=0x8)" P-INDEP +; V105 tmp90 [V105,T49] ( 2, 6 ) byref -> rsi "field V26._reference (fldOffset=0x0)" P-INDEP +; V106 tmp91 [V106,T35] ( 3, 8 ) int -> r8 "field V26._length (fldOffset=0x8)" P-INDEP ;* V107 tmp92 [V107 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-INDEP ;* V108 tmp93 [V108 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP -;* V109 tmp94 [V109 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP -;* V110 tmp95 [V110 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP +; V109 tmp94 [V109,T50] ( 2, 6 ) byref -> rdi "field V28._reference (fldOffset=0x0)" P-INDEP +; V110 tmp95 [V110,T59] ( 2, 4 ) int -> rdx "field V28._length (fldOffset=0x8)" P-INDEP ;* V111 tmp96 [V111 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP ;* V112 tmp97 [V112 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP ;* V113 tmp98 [V113 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP ;* V114 tmp99 [V114 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP ;* V115 tmp100 [V115 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP ;* V116 tmp101 [V116 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP ;* V117 tmp102 [V117 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP ;* V118 tmp103 [V118 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP ; V119 tmp104 [V119,T28] ( 4, 12 ) byref -> rdi "field V41._reference (fldOffset=0x0)" P-INDEP -; V120 tmp105 [V120,T32] ( 4, 10 ) int -> rsi "field V41._length (fldOffset=0x8)" P-INDEP -; V121 tmp106 [V121,T54] ( 2, 4 ) byref -> rdi "field V42._reference (fldOffset=0x0)" P-INDEP -; V122 tmp107 [V122,T56] ( 2, 4 ) int -> rsi "field V42._length (fldOffset=0x8)" P-INDEP +; V120 tmp105 [V120,T30] ( 4, 10 ) int -> rsi "field V41._length (fldOffset=0x8)" P-INDEP +; V121 tmp106 [V121,T57] ( 2, 4 ) byref -> rdi "field V42._reference (fldOffset=0x0)" P-INDEP +; V122 tmp107 [V122,T60] ( 2, 4 ) int -> rsi "field V42._length (fldOffset=0x8)" P-INDEP ;* V123 tmp108 [V123 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP ;* V124 tmp109 [V124 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP ;* V125 tmp110 [V125 ] ( 0, 0 ) byref -> zero-ref "field V47._reference (fldOffset=0x0)" P-INDEP ;* V126 tmp111 [V126 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP ;* V127 tmp112 [V127 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-INDEP ;* V128 tmp113 [V128 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP ;* V129 tmp114 [V129 ] ( 0, 0 ) byref -> zero-ref "field V55._reference (fldOffset=0x0)" P-INDEP ;* V130 tmp115 [V130 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP ;* V131 tmp116 [V131 ] ( 0, 0 ) byref -> zero-ref "field V56._reference (fldOffset=0x0)" P-INDEP ;* V132 tmp117 [V132 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP ; V133 tmp118 [V133,T40] ( 2, 8 ) byref -> r15 "field V59._reference (fldOffset=0x0)" P-INDEP -; V134 tmp119 [V134,T46] ( 2, 8 ) int -> rbx "field V59._length (fldOffset=0x8)" P-INDEP -; V135 tmp120 [V135,T66] ( 3, 1.50) byref -> rsi "field V62._reference (fldOffset=0x0)" P-INDEP -; V136 tmp121 [V136,T67] ( 3, 1.50) int -> rdx "field V62._length (fldOffset=0x8)" P-INDEP -; V137 tmp122 [V137,T70] ( 2, 1 ) byref -> rsi single-def "field V64._reference (fldOffset=0x0)" P-INDEP -; V138 tmp123 [V138,T75] ( 2, 1 ) int -> rdx "field V64._length (fldOffset=0x8)" P-INDEP +; V134 tmp119 [V134,T45] ( 2, 8 ) int -> rbx "field V59._length (fldOffset=0x8)" P-INDEP +; V135 tmp120 [V135,T71] ( 3, 1.50) byref -> rsi "field V62._reference (fldOffset=0x0)" P-INDEP +; V136 tmp121 [V136,T72] ( 3, 1.50) int -> rdx "field V62._length (fldOffset=0x8)" P-INDEP +; V137 tmp122 [V137,T75] ( 2, 1 ) byref -> rsi single-def "field V64._reference (fldOffset=0x0)" P-INDEP +; V138 tmp123 [V138,T80] ( 2, 1 ) int -> rdx "field V64._length (fldOffset=0x8)" P-INDEP ;* V139 tmp124 [V139 ] ( 0, 0 ) byref -> zero-ref single-def "field V65._reference (fldOffset=0x0)" P-INDEP ;* V140 tmp125 [V140 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP -; V141 tmp126 [V141,T71] ( 2, 1 ) byref -> r15 single-def "field V68._reference (fldOffset=0x0)" P-INDEP -; V142 tmp127 [V142,T76] ( 2, 1 ) int -> rbx "field V68._length (fldOffset=0x8)" P-INDEP -; V143 tmp128 [V143,T41] ( 2, 8 ) byref -> rsi "field V71._reference (fldOffset=0x0)" P-INDEP -; V144 tmp129 [V144,T31] ( 3, 12 ) int -> rdx "field V71._length (fldOffset=0x8)" P-INDEP +; V141 tmp126 [V141,T76] ( 2, 1 ) byref -> r15 single-def "field V68._reference (fldOffset=0x0)" P-INDEP +; V142 tmp127 [V142,T81] ( 2, 1 ) int -> rbx "field V68._length (fldOffset=0x8)" P-INDEP +; V143 tmp128 [V143,T51] ( 2, 6 ) byref -> rsi "field V71._reference (fldOffset=0x0)" P-INDEP +; V144 tmp129 [V144,T36] ( 3, 8 ) int -> rax "field V71._length (fldOffset=0x8)" P-INDEP ;* V145 tmp130 [V145 ] ( 0, 0 ) byref -> zero-ref "field V72._reference (fldOffset=0x0)" P-INDEP ;* V146 tmp131 [V146 ] ( 0, 0 ) int -> zero-ref "field V72._length (fldOffset=0x8)" P-INDEP -;* V147 tmp132 [V147 ] ( 0, 0 ) byref -> zero-ref "field V73._reference (fldOffset=0x0)" P-INDEP -;* V148 tmp133 [V148 ] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0x8)" P-INDEP +; V147 tmp132 [V147,T52] ( 2, 6 ) byref -> rdi "field V73._reference (fldOffset=0x0)" P-INDEP +; V148 tmp133 [V148,T61] ( 2, 4 ) int -> rdx "field V73._length (fldOffset=0x8)" P-INDEP ;* V149 tmp134 [V149 ] ( 0, 0 ) byref -> zero-ref "field V74._reference (fldOffset=0x0)" P-INDEP ;* V150 tmp135 [V150 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP -; V151 tmp136 [V151,T42] ( 2, 8 ) byref -> r15 "field V79._reference (fldOffset=0x0)" P-INDEP -;* V152 tmp137 [V152,T58] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x8)" P-INDEP -; V153 tmp138 [V153,T34] ( 3, 8 ) byref -> rdx "field V82._reference (fldOffset=0x0)" P-INDEP -; V154 tmp139 [V154,T36] ( 3, 8 ) int -> rdi "field V82._length (fldOffset=0x8)" P-INDEP -; V155 tmp140 [V155,T55] ( 2, 4 ) byref -> rdx "field V84._reference (fldOffset=0x0)" P-INDEP -; V156 tmp141 [V156,T57] ( 2, 4 ) int -> rdi "field V84._length (fldOffset=0x8)" P-INDEP +; V151 tmp136 [V151,T41] ( 2, 8 ) byref -> r15 "field V79._reference (fldOffset=0x0)" P-INDEP +;* V152 tmp137 [V152,T63] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x8)" P-INDEP +; V153 tmp138 [V153,T33] ( 3, 8 ) byref -> rdx "field V82._reference (fldOffset=0x0)" P-INDEP +; V154 tmp139 [V154,T37] ( 3, 8 ) int -> rdi "field V82._length (fldOffset=0x8)" P-INDEP +; V155 tmp140 [V155,T58] ( 2, 4 ) byref -> rdx "field V84._reference (fldOffset=0x0)" P-INDEP +; V156 tmp141 [V156,T62] ( 2, 4 ) int -> rdi "field V84._length (fldOffset=0x8)" P-INDEP ;* V157 tmp142 [V157 ] ( 0, 0 ) byref -> zero-ref "field V85._reference (fldOffset=0x0)" P-INDEP ;* V158 tmp143 [V158 ] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x8)" P-INDEP -; V159 tmp144 [V159,T43] ( 2, 8 ) byref -> r15 "field V88._reference (fldOffset=0x0)" P-INDEP -; V160 tmp145 [V160,T47] ( 2, 8 ) int -> rbx "field V88._length (fldOffset=0x8)" P-INDEP -; V161 tmp146 [V161,T24] ( 2, 16 ) long -> rdi "Cast away GC" -; V162 tmp147 [V162,T25] ( 2, 16 ) long -> rsi "Cast away GC" -; V163 tmp148 [V163,T26] ( 2, 16 ) long -> rdi "argument with side effect" -; V164 tmp149 [V164,T27] ( 2, 16 ) long -> rsi "argument with side effect" -; V165 cse0 [V165,T50] ( 3, 5 ) long -> [rbp-0x68] spill-single-def "CSE #08: conservative" -; V166 rat0 [V166,T17] ( 5, 16.50) long -> [rbp-0x70] "Widened IV V14" -; V167 rat1 [V167,T18] ( 5, 16.50) long -> [rbp-0x78] "Widened IV V12" +; V159 tmp144 [V159,T42] ( 2, 8 ) byref -> r15 "field V88._reference (fldOffset=0x0)" P-INDEP +; V160 tmp145 [V160,T46] ( 2, 8 ) int -> rbx "field V88._length (fldOffset=0x8)" P-INDEP +; V161 tmp146 [V161,T23] ( 2, 16 ) long -> rdi "Cast away GC" +; V162 tmp147 [V162,T24] ( 2, 16 ) long -> rsi "Cast away GC" +; V163 tmp148 [V163,T25] ( 2, 16 ) long -> rdi "argument with side effect" +; V164 tmp149 [V164,T26] ( 2, 16 ) long -> rsi "argument with side effect" +; V165 cse0 [V165,T53] ( 3, 5 ) long -> [rbp-0x68] spill-single-def "CSE #08: conservative" +; V166 cse1 [V166,T27] ( 6, 13 ) int -> [rbp-0x6C] spill-single-def "CSE #01: moderate" +; V167 rat0 [V167,T16] ( 5, 16.50) long -> [rbp-0x78] "Widened IV V14" +; V168 rat1 [V168,T17] ( 5, 16.50) long -> r12 "Widened IV V12" ; ; Lcl frame size = 104 G_M6373_IG01: push rbp push r15 push r14 push r13 push r12 push rbx sub rsp, 104 lea rbp, [rsp+0x90] xor eax, eax mov qword ptr [rbp-0x58], rax mov qword ptr [rbp-0x60], rax - mov r12, rdi - mov r13d, esi - mov r14, rdx - mov rax, rcx + mov r13, rdi + mov r14d, esi + mov rax, rdx + mov r12, rcx mov r15, r8 mov ebx, r9d mov r9, bword ptr [rbp+0x10] ;; size=54 bbWeight=1 PerfScore 11.50 G_M6373_IG02: - cmp r13d, 1 + cmp r14d, 1 jne SHORT G_M6373_IG05 ;; size=6 bbWeight=1 PerfScore 1.25 G_M6373_IG03: mov rdx, r15 mov ecx, ebx - mov rdi, gword ptr [r12] - mov rsi, rax + mov rdi, gword ptr [r13] + mov rsi, r12 mov r8, r9 mov rax, 0xD1FFAB1E ; code for System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte call [rax]System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte nop ;; size=28 bbWeight=0.50 PerfScore 3.25 G_M6373_IG04: add rsp, 104 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12 G_M6373_IG05: - test r13d, r13d + test r14d, r14d jne SHORT G_M6373_IG07 mov rdx, r15 mov ecx, ebx mov r8, r9 mov rdi, 0xD1FFAB1E ; '' xor rsi, rsi mov rax, 0xD1FFAB1E ; code for System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte call [rax]System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte nop ;; size=38 bbWeight=0.50 PerfScore 3.00 G_M6373_IG06: add rsp, 104 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12 G_M6373_IG07: test ebx, ebx - jle G_M6373_IG23 - lea esi, [r13-0x01] - imul esi, dword ptr [r14+0x08] - test rax, rax + jle G_M6373_IG22 + mov gword ptr [rbp-0x80], rax + mov ecx, dword ptr [rax+0x08] + mov dword ptr [rbp-0x6C], ecx + lea esi, [r14-0x01] + imul esi, ecx + test r12, r12 je SHORT G_M6373_IG09 mov rdi, 0xD1FFAB1E ; global ptr test byte ptr [rdi], 1 - je G_M6373_IG46 - ;; size=41 bbWeight=0.50 PerfScore 6.12 + je G_M6373_IG47 + ;; size=49 bbWeight=0.50 PerfScore 6.62 G_M6373_IG08: mov rdi, 0xD1FFAB1E ; data for System.Text.Latin1Encoding:s_default - cmp rax, gword ptr [rdi] + cmp r12, gword ptr [rdi] jne SHORT G_M6373_IG13 ;; size=15 bbWeight=0.50 PerfScore 2.12 G_M6373_IG09: xor edi, edi - test r13d, r13d + test r14d, r14d jle SHORT G_M6373_IG12 - align [5 bytes for IG10] - ;; size=12 bbWeight=0.50 PerfScore 0.88 + align [0 bytes for IG10] + ;; size=7 bbWeight=0.50 PerfScore 0.75 G_M6373_IG10: - mov ecx, edi - mov rcx, gword ptr [r12+8*rcx] - add esi, dword ptr [rcx+0x08] + mov edx, edi + mov rdx, gword ptr [r13+8*rdx] + add esi, dword ptr [rdx+0x08] mov dword ptr [rbp-0x2C], esi inc edi - cmp edi, r13d + cmp edi, r14d mov esi, dword ptr [rbp-0x2C] jl SHORT G_M6373_IG10 - ;; size=22 bbWeight=4 PerfScore 35.00 + ;; size=23 bbWeight=4 PerfScore 35.00 G_M6373_IG11: - mov gword ptr [rbp-0x80], rax mov bword ptr [rbp+0x10], r9 jmp SHORT G_M6373_IG17 - ;; size=10 bbWeight=2 PerfScore 8.00 + ;; size=6 bbWeight=2 PerfScore 6.00 G_M6373_IG12: - mov gword ptr [rbp-0x80], rax mov bword ptr [rbp+0x10], r9 jmp SHORT G_M6373_IG17 - ;; size=10 bbWeight=0.25 PerfScore 1.00 + ;; size=6 bbWeight=0.25 PerfScore 0.75 G_M6373_IG13: xor edi, edi - xor ecx, ecx - test r13d, r13d + xor edx, edx + test r14d, r14d mov bword ptr [rbp+0x10], r9 - jle SHORT G_M6373_IG20 + jle SHORT G_M6373_IG17 ;; size=13 bbWeight=0.50 PerfScore 1.38 G_M6373_IG14: mov dword ptr [rbp-0x2C], esi ;; size=3 bbWeight=0.25 PerfScore 0.25 G_M6373_IG15: - mov dword ptr [rbp-0x3C], ecx - mov edi, ecx - mov rsi, gword ptr [r12+8*rdi] - mov rdi, rax - mov gword ptr [rbp-0x80], rax - mov rdx, qword ptr [rax] - mov rdx, qword ptr [rdx+0x50] - call [rdx+0x18]System.Text.Encoding:GetByteCount(System.String):int:this + mov dword ptr [rbp-0x3C], edx + mov edi, edx + mov rsi, gword ptr [r13+8*rdi] + mov rdi, r12 + mov r8, qword ptr [r12] + mov r8, qword ptr [r8+0x50] + call [r8+0x18]System.Text.Encoding:GetByteCount(System.String):int:this mov esi, eax add esi, dword ptr [rbp-0x2C] mov eax, esi mov edx, dword ptr [rbp-0x3C] inc edx - cmp edx, r13d - mov ecx, edx + cmp edx, r14d jl SHORT G_M6373_IG19 - ;; size=45 bbWeight=4 PerfScore 67.00 + ;; size=42 bbWeight=4 PerfScore 62.00 G_M6373_IG16: mov esi, eax ;; size=2 bbWeight=2 PerfScore 0.50 G_M6373_IG17: mov byte ptr [r15], 0 mov rdx, r15 mov ecx, ebx lea r8, [rbp-0x38] mov dword ptr [rbp-0x2C], esi mov edi, esi mov esi, 7 mov r10, 0xD1FFAB1E ; code for System.Net.Http.HPack.IntegerEncoder:Encode(int,int,System.Span`1[ubyte],byref):ubyte call [r10]System.Net.Http.HPack.IntegerEncoder:Encode(int,int,System.Span`1[ubyte],byref):ubyte test eax, eax je SHORT G_M6373_IG18 mov esi, dword ptr [rbp-0x38] cmp esi, ebx - jbe SHORT G_M6373_IG21 - jmp G_M6373_IG49 + jbe SHORT G_M6373_IG20 + jmp G_M6373_IG50 ;; size=52 bbWeight=0.50 PerfScore 6.12 G_M6373_IG18: mov r9, bword ptr [rbp+0x10] - jmp SHORT G_M6373_IG23 + jmp SHORT G_M6373_IG22 ;; size=6 bbWeight=0.25 PerfScore 0.75 G_M6373_IG19: mov dword ptr [rbp-0x2C], eax - mov rax, gword ptr [rbp-0x80] jmp SHORT G_M6373_IG15 - ;; size=9 bbWeight=2 PerfScore 8.00 + ;; size=5 bbWeight=2 PerfScore 6.00 G_M6373_IG20: - mov gword ptr [rbp-0x80], rax - jmp SHORT G_M6373_IG17 - ;; size=6 bbWeight=0.25 PerfScore 0.75 -G_M6373_IG21: mov eax, esi add r15, rax sub ebx, esi mov esi, ebx mov eax, dword ptr [rbp-0x2C] cmp esi, eax - jl SHORT G_M6373_IG22 - cmp gword ptr [rbp-0x80], 0 - jne SHORT G_M6373_IG25 - mov r8, gword ptr [r12] + jl SHORT G_M6373_IG21 + test r12, r12 + jne SHORT G_M6373_IG24 + mov r12, gword ptr [r13] mov rsi, r15 mov edx, ebx - mov gword ptr [rbp-0x88], r8 - mov rdi, r8 + mov rdi, r12 mov rcx, 0xD1FFAB1E ; code for System.Net.Http.QPack.QPackEncoder:EncodeValueStringPart(System.String,System.Span`1[ubyte]) call [rcx]System.Net.Http.QPack.QPackEncoder:EncodeValueStringPart(System.String,System.Span`1[ubyte]) - mov r9, gword ptr [rbp-0x88] - mov r9d, dword ptr [r9+0x08] - cmp r9d, ebx + mov r12d, dword ptr [r12+0x08] + cmp r12d, ebx jbe G_M6373_IG32 - jmp G_M6373_IG49 - ;; size=79 bbWeight=0.50 PerfScore 9.75 -G_M6373_IG22: + jmp G_M6373_IG50 + ;; size=64 bbWeight=0.50 PerfScore 7.88 +G_M6373_IG21: mov r9, bword ptr [rbp+0x10] ;; size=4 bbWeight=0.25 PerfScore 0.25 -G_M6373_IG23: +G_M6373_IG22: xor eax, eax mov dword ptr [r9], eax ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M6373_IG24: +G_M6373_IG23: add rsp, 104 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12 -G_M6373_IG25: - mov r8, gword ptr [r12] - test r8, r8 - jne SHORT G_M6373_IG26 +G_M6373_IG24: + mov rcx, gword ptr [r13] + test rcx, rcx + jne SHORT G_M6373_IG25 xor rsi, rsi xor edx, edx - jmp SHORT G_M6373_IG27 + jmp SHORT G_M6373_IG26 ;; size=15 bbWeight=0.50 PerfScore 2.88 +G_M6373_IG25: + lea rsi, bword ptr [rcx+0x0C] + mov edx, dword ptr [rcx+0x08] + ;; size=7 bbWeight=0.50 PerfScore 1.25 G_M6373_IG26: - lea rsi, bword ptr [r8+0x0C] - mov edx, dword ptr [r8+0x08] - ;; size=8 bbWeight=0.50 PerfScore 1.25 -G_M6373_IG27: mov rcx, r15 mov r8d, ebx - mov rdi, gword ptr [rbp-0x80] - mov gword ptr [rbp-0x80], rdi - mov r10, qword ptr [rdi] + mov rdi, r12 + mov r10, qword ptr [r12] mov r10, qword ptr [r10+0x58] mov qword ptr [rbp-0x68], r10 call [r10+0x28]System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this cmp eax, ebx - ja G_M6373_IG49 + ja G_M6373_IG50 mov edx, eax add r15, rdx sub ebx, eax - mov qword ptr [rbp-0x70], 1 - cmp r13d, 1 - jle G_M6373_IG44 - ;; size=62 bbWeight=0.50 PerfScore 7.38 -G_M6373_IG28: - lea rsi, bword ptr [r14+0x10] - mov edx, dword ptr [r14+0x08] - cmp edx, ebx - ja G_M6373_IG47 + mov qword ptr [rbp-0x78], 1 + cmp r14d, 1 + jle G_M6373_IG45 + ;; size=58 bbWeight=0.50 PerfScore 6.50 +G_M6373_IG27: mov rdi, r15 + mov edx, ebx + mov r8, gword ptr [rbp-0x80] + lea rsi, bword ptr [r8+0x10] + mov r9d, dword ptr [rbp-0x6C] + mov eax, r9d + cmp eax, edx + ja G_M6373_IG48 + ;; size=28 bbWeight=2 PerfScore 9.00 +G_M6373_IG28: + mov edx, eax mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong) call [rax]System.SpanHelpers:Memmove(byref,byref,ulong) - mov ecx, dword ptr [r14+0x08] + mov eax, dword ptr [rbp-0x6C] + mov ecx, eax cmp ecx, ebx - ja G_M6373_IG49 + ja G_M6373_IG50 mov r8d, ecx add r8, r15 mov esi, ebx sub esi, ecx mov r15, r8 mov ebx, esi - mov rax, qword ptr [rbp-0x70] - mov rcx, gword ptr [r12+8*rax] + mov r9, qword ptr [rbp-0x78] + mov rcx, gword ptr [r13+8*r9] test rcx, rcx jne SHORT G_M6373_IG30 - ;; size=71 bbWeight=4 PerfScore 65.00 + ;; size=56 bbWeight=4 PerfScore 47.00 G_M6373_IG29: xor rdx, rdx xor edi, edi jmp SHORT G_M6373_IG31 ;; size=6 bbWeight=2 PerfScore 5.00 G_M6373_IG30: lea rdx, bword ptr [rcx+0x0C] mov edi, dword ptr [rcx+0x08] ;; size=7 bbWeight=2 PerfScore 5.00 G_M6373_IG31: mov rcx, r15 mov r8d, esi mov rsi, rdx mov edx, edi - mov rdi, gword ptr [rbp-0x80] - mov r9, qword ptr [rbp-0x68] - call [r9+0x28]System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this + mov rdi, r12 + mov r10, qword ptr [rbp-0x68] + call [r10+0x28]System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this cmp eax, ebx - ja G_M6373_IG49 + ja G_M6373_IG50 mov edx, eax add rdx, r15 sub ebx, eax mov r15, rdx - mov rdx, qword ptr [rbp-0x70] + mov rdx, qword ptr [rbp-0x78] inc edx - cmp edx, r13d - mov qword ptr [rbp-0x70], rdx - jl G_M6373_IG28 - jmp G_M6373_IG44 - ;; size=65 bbWeight=4 PerfScore 55.00 + cmp edx, r14d + mov qword ptr [rbp-0x78], rdx + jl G_M6373_IG27 + jmp G_M6373_IG45 + ;; size=64 bbWeight=4 PerfScore 52.00 G_M6373_IG32: - mov edx, r9d + mov edx, r12d add rdx, r15 - sub ebx, r9d + sub ebx, r12d mov r15, rdx - mov qword ptr [rbp-0x78], 1 - cmp r13d, 1 - jle G_M6373_IG44 - ;; size=30 bbWeight=0.50 PerfScore 1.62 + mov r12d, 1 + cmp r14d, 1 + jle G_M6373_IG45 + ;; size=28 bbWeight=0.50 PerfScore 1.25 G_M6373_IG33: - lea rsi, bword ptr [r14+0x10] - mov edx, dword ptr [r14+0x08] - cmp edx, ebx - ja G_M6373_IG47 mov rdi, r15 - mov rcx, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong) - call [rcx]System.SpanHelpers:Memmove(byref,byref,ulong) - mov edi, dword ptr [r14+0x08] + mov edx, ebx + mov rax, gword ptr [rbp-0x80] + lea rsi, bword ptr [rax+0x10] + mov ecx, dword ptr [rbp-0x6C] + mov r8d, ecx + cmp r8d, edx + ja G_M6373_IG48 + ;; size=28 bbWeight=2 PerfScore 9.00 +G_M6373_IG34: + mov edx, r8d + mov r8, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong) + call [r8]System.SpanHelpers:Memmove(byref,byref,ulong) + mov eax, dword ptr [rbp-0x6C] + mov edi, eax cmp edi, ebx - ja G_M6373_IG49 - mov eax, edi - add r15, rax + ja G_M6373_IG50 + mov ecx, edi + add r15, rcx sub ebx, edi - mov rax, qword ptr [rbp-0x78] - mov r9, gword ptr [r12+8*rax] - mov rcx, r9 + mov rdi, gword ptr [r13+8*r12] + mov rcx, rdi test rcx, rcx - jne SHORT G_M6373_IG35 - ;; size=66 bbWeight=4 PerfScore 63.00 -G_M6373_IG34: + jne SHORT G_M6373_IG36 + ;; size=49 bbWeight=4 PerfScore 41.00 +G_M6373_IG35: xor rdi, rdi xor esi, esi - jmp SHORT G_M6373_IG36 + jmp SHORT G_M6373_IG37 ;; size=6 bbWeight=2 PerfScore 5.00 -G_M6373_IG35: +G_M6373_IG36: lea rdi, bword ptr [rcx+0x0C] mov gword ptr [rbp-0x88], rcx mov esi, dword ptr [rcx+0x08] mov rcx, gword ptr [rbp-0x88] ;; size=21 bbWeight=2 PerfScore 9.00 -G_M6373_IG36: +G_M6373_IG37: cmp esi, ebx - jg SHORT G_M6373_IG38 + jg SHORT G_M6373_IG39 ;; size=4 bbWeight=4 PerfScore 5.00 -G_M6373_IG37: +G_M6373_IG38: mov r8d, esi xor r9d, r9d mov gword ptr [rbp-0x88], rcx mov dword ptr [rbp-0x4C], r9d - jmp SHORT G_M6373_IG39 + jmp SHORT G_M6373_IG40 ;; size=19 bbWeight=2 PerfScore 9.00 -G_M6373_IG38: +G_M6373_IG39: mov r8d, ebx mov dword ptr [rbp-0x4C], 1 mov gword ptr [rbp-0x88], rcx ;; size=17 bbWeight=2 PerfScore 4.50 -G_M6373_IG39: +G_M6373_IG40: mov bword ptr [rbp-0x58], rdi mov bword ptr [rbp-0x60], r15 mov rsi, r15 mov qword ptr [rbp-0x48], r8 mov rdx, r8 mov r10, 0xD1FFAB1E ; code for System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong call [r10]System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong cmp rax, qword ptr [rbp-0x48] - je SHORT G_M6373_IG41 + je SHORT G_M6373_IG42 ;; size=37 bbWeight=4 PerfScore 39.00 -G_M6373_IG40: +G_M6373_IG41: mov eax, 3 - jmp SHORT G_M6373_IG42 + jmp SHORT G_M6373_IG43 ;; size=7 bbWeight=2 PerfScore 4.50 -G_M6373_IG41: +G_M6373_IG42: mov eax, dword ptr [rbp-0x4C] ;; size=3 bbWeight=2 PerfScore 2.00 -G_M6373_IG42: +G_M6373_IG43: xor rdi, rdi mov bword ptr [rbp-0x58], rdi ;; size=6 bbWeight=4 PerfScore 5.00 -G_M6373_IG43: +G_M6373_IG44: mov bword ptr [rbp-0x60], rdi cmp eax, 3 - je G_M6373_IG48 + je SHORT G_M6373_IG49 mov rax, gword ptr [rbp-0x88] mov eax, dword ptr [rax+0x08] cmp eax, ebx - ja G_M6373_IG49 + ja G_M6373_IG50 mov edi, eax add r15, rdi sub ebx, eax - mov rax, qword ptr [rbp-0x78] - inc eax - cmp eax, r13d - mov qword ptr [rbp-0x78], rax + inc r12d + cmp r12d, r14d jl G_M6373_IG33 - ;; size=57 bbWeight=4 PerfScore 43.00 -G_M6373_IG44: - mov ebx, dword ptr [rbp-0x2C] - mov eax, ebx + ;; size=46 bbWeight=4 PerfScore 35.00 +G_M6373_IG45: + mov r12d, dword ptr [rbp-0x2C] + mov eax, r12d add eax, dword ptr [rbp-0x38] mov rbx, bword ptr [rbp+0x10] mov dword ptr [rbx], eax mov eax, 1 - ;; size=19 bbWeight=0.50 PerfScore 2.75 -G_M6373_IG45: + ;; size=21 bbWeight=0.50 PerfScore 2.75 +G_M6373_IG46: add rsp, 104 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12 -G_M6373_IG46: - mov gword ptr [rbp-0x80], rax +G_M6373_IG47: mov dword ptr [rbp-0x2C], esi mov bword ptr [rbp+0x10], r9 mov rdi, 0xD1FFAB1E ; System.Text.Latin1Encoding call CORINFO_HELP_GET_GCSTATIC_BASE - mov rax, gword ptr [rbp-0x80] mov esi, dword ptr [rbp-0x2C] mov r9, bword ptr [rbp+0x10] jmp G_M6373_IG08 - ;; size=42 bbWeight=0 PerfScore 0.00 -G_M6373_IG47: + ;; size=34 bbWeight=0 PerfScore 0.00 +G_M6373_IG48: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort() call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort() int3 ;; size=13 bbWeight=0 PerfScore 0.00 -G_M6373_IG48: +G_M6373_IG49: mov rdi, 0xD1FFAB1E ; System.Net.Http.QPack.QPackEncodingException call CORINFO_HELP_NEWSFAST mov rbx, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_net_http_request_invalid_char_encoding():System.String call [rax]System.SR:get_net_http_request_invalid_char_encoding():System.String mov r15, rax mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Exception:.ctor():this call [rax]System.Exception:.ctor():this lea rdi, bword ptr [rbx+0x10] mov rsi, r15 call CORINFO_HELP_ASSIGN_REF mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=69 bbWeight=0 PerfScore 0.00 -G_M6373_IG49: +G_M6373_IG50: 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 1183, prolog size 54, PerfScore 510.88, instruction count 344, allocated bytes for code 1183 (MethodHash=9010e71a) for method System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts) +; Total bytes of code 1150, prolog size 54, PerfScore 465.12, instruction count 342, allocated bytes for code 1150 (MethodHash=9010e71a) for method System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts) ```

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

MihuBot commented 1 month ago

@xtqqczze