Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[JitDiff X64] [EgorBo] JIT: Improve codegen around unsigned comparisons #559

Open
MihuBot opened this issue Jul 28, 2024 · 3 comments
Open

Comments

@MihuBot
Copy link
Owner

MihuBot commented Jul 28, 2024

Job completed in 15 minutes.
dotnet/runtime#105593

Diffs

Diffs
Found 336 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 39661353
Total bytes of diff: 39656811
Total bytes of delta: -4542 (-0.01 % of base)
Total relative delta: -16.40
    diff is an improvement.
    relative diff is an improvement.


Top file regressions (bytes):
          33 : System.Data.Odbc.dasm (0.01 % of base)
          16 : System.Text.RegularExpressions.dasm (0.00 % of base)
           1 : System.ComponentModel.TypeConverter.dasm (0.00 % of base)

Top file improvements (bytes):
        -945 : System.Private.CoreLib.dasm (-0.01 % of base)
        -860 : System.Private.Xml.dasm (-0.02 % of base)
        -368 : System.Text.Json.dasm (-0.03 % of base)
        -357 : System.IO.Hashing.dasm (-1.41 % of base)
        -261 : System.Formats.Asn1.dasm (-0.31 % of base)
        -227 : System.Memory.dasm (-0.08 % of base)
        -213 : System.Security.Cryptography.dasm (-0.02 % of base)
        -197 : System.Net.Security.dasm (-0.09 % of base)
        -130 : System.Data.Common.dasm (-0.01 % of base)
         -92 : System.Net.Http.dasm (-0.01 % of base)
         -90 : System.Numerics.Tensors.dasm (-0.01 % of base)
         -75 : System.Runtime.Numerics.dasm (-0.06 % of base)
         -73 : System.Runtime.Serialization.Schema.dasm (-0.13 % of base)
         -69 : System.Drawing.Primitives.dasm (-0.18 % of base)
         -63 : System.Security.Cryptography.Pkcs.dasm (-0.02 % of base)
         -57 : System.Transactions.Local.dasm (-0.04 % of base)
         -57 : System.Private.DataContractSerialization.dasm (-0.01 % of base)
         -41 : runincontext.dasm (-0.26 % of base)
         -37 : System.Resources.Writer.dasm (-0.41 % of base)
         -37 : System.Resources.Extensions.dasm (-0.08 % of base)
         -34 : System.Reflection.Metadata.dasm (-0.01 % of base)
         -32 : System.Formats.Cbor.dasm (-0.07 % of base)
         -31 : System.Text.Encodings.Web.dasm (-0.13 % of base)
         -30 : Microsoft.VisualBasic.Core.dasm (-0.01 % of base)
         -30 : System.ComponentModel.Composition.dasm (-0.01 % of base)
         -30 : System.Configuration.ConfigurationManager.dasm (-0.01 % of base)
         -29 : System.Net.Mail.dasm (-0.02 % of base)
         -23 : System.Collections.dasm (-0.01 % of base)
         -23 : System.Net.Primitives.dasm (-0.03 % of base)
         -18 : System.IO.Pipelines.dasm (-0.02 % of base)
         -18 : System.Formats.Nrbf.dasm (-0.04 % of base)
         -17 : ILCompiler.Reflection.ReadyToRun.dasm (-0.01 % of base)
         -14 : System.Net.Quic.dasm (-0.01 % of base)
          -8 : System.Collections.Specialized.dasm (-0.06 % of base)
          -4 : System.Private.Uri.dasm (-0.00 % of base)
          -2 : System.Runtime.Caching.dasm (-0.00 % of base)

39 total files with Code Size differences (36 improved, 3 regressed), 220 unchanged.

Top method regressions (bytes):
          22 (3.08 % of base) : System.Private.CoreLib.dasm - System.Globalization.TextInfo:ChangeCaseCommon[double](System.String):System.String:this (FullOpts)
          22 (3.08 % of base) : System.Private.CoreLib.dasm - System.Globalization.TextInfo:ChangeCaseCommon[int](System.String):System.String:this (FullOpts)
          22 (3.08 % of base) : System.Private.CoreLib.dasm - System.Globalization.TextInfo:ChangeCaseCommon[long](System.String):System.String:this (FullOpts)
          22 (3.08 % of base) : System.Private.CoreLib.dasm - System.Globalization.TextInfo:ChangeCaseCommon[short](System.String):System.String:this (FullOpts)
          22 (3.08 % of base) : System.Private.CoreLib.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](System.String):System.String:this (FullOpts)
          22 (3.05 % of base) : System.Private.CoreLib.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (FullOpts)
          22 (3.08 % of base) : System.Private.CoreLib.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Numerics.Vector`1[float]](System.String):System.String:this (FullOpts)
          22 (3.08 % of base) : System.Private.CoreLib.dasm - System.Globalization.TextInfo:ChangeCaseCommon[ubyte](System.String):System.String:this (FullOpts)
          21 (10.00 % of base) : System.Private.Xml.dasm - System.Xml.XmlEntityReference+<>c:<ConstructBaseURI>b__27_0(System.Span`1[ushort],System.ValueTuple`2[System.String,System.String]):this (FullOpts)
          20 (8.93 % of base) : System.Data.Odbc.dasm - System.Data.Common.DbConnectionOptions:GetKeyValue(System.Text.StringBuilder,ubyte):System.String (FullOpts)
          20 (8.93 % of base) : System.Data.Common.dasm - System.Data.Common.DbConnectionOptions:GetKeyValue(System.Text.StringBuilder,ubyte):System.String (FullOpts)
          16 (2.45 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexReplacement+<>c:<ReplaceSimpleText>b__17_1(System.Span`1[ushort],System.ValueTuple`3[long,System.String,System.String]):this (FullOpts) (2 methods)
          14 (4.76 % of base) : System.Private.CoreLib.dasm - System.Buffers.AhoCorasickNode:OptimizeChildren():this (FullOpts)
          13 (6.37 % of base) : System.Data.Odbc.dasm - System.Data.Common.DbConnectionOptions:GetKeyName(System.Text.StringBuilder):System.String (FullOpts)
          13 (7.83 % of base) : System.Data.Common.dasm - System.Data.Common.DbConnectionOptions:GetKeyName(System.Text.StringBuilder):System.String (FullOpts)
           9 (1.08 % of base) : System.Private.CoreLib.dasm - System.Enum:TryFormatFlagNames[double](System.Enum+EnumInfo`1[double],double,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
           9 (1.20 % of base) : System.Private.CoreLib.dasm - System.Enum:TryFormatFlagNames[int](System.Enum+EnumInfo`1[int],int,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
           9 (1.20 % of base) : System.Private.CoreLib.dasm - System.Enum:TryFormatFlagNames[long](System.Enum+EnumInfo`1[long],long,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
           9 (1.18 % of base) : System.Private.CoreLib.dasm - System.Enum:TryFormatFlagNames[short](System.Enum+EnumInfo`1[short],short,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
           9 (1.18 % of base) : System.Private.CoreLib.dasm - System.Enum:TryFormatFlagNames[ubyte](System.Enum+EnumInfo`1[ubyte],ubyte,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
           8 (1.13 % of base) : System.Private.CoreLib.dasm - System.Enum:FormatFlagNames[double](System.Enum+EnumInfo`1[double],double):System.String (FullOpts)
           8 (1.29 % of base) : System.Private.CoreLib.dasm - System.Enum:FormatFlagNames[int](System.Enum+EnumInfo`1[int],int):System.String (FullOpts)
           8 (1.26 % of base) : System.Private.CoreLib.dasm - System.Enum:FormatFlagNames[long](System.Enum+EnumInfo`1[long],long):System.String (FullOpts)
           8 (1.25 % of base) : System.Private.CoreLib.dasm - System.Enum:FormatFlagNames[short](System.Enum+EnumInfo`1[short],short):System.String (FullOpts)
           8 (1.26 % of base) : System.Private.CoreLib.dasm - System.Enum:FormatFlagNames[ubyte](System.Enum+EnumInfo`1[ubyte],ubyte):System.String (FullOpts)
           3 (1.08 % of base) : System.Private.CoreLib.dasm - System.Enum:WriteMultipleFoundFlagsNames(System.String[],System.ReadOnlySpan`1[int],System.Span`1[ushort]) (FullOpts)
           1 (0.12 % of base) : System.Drawing.Primitives.dasm - System.Drawing.ColorConverterCommon:IntFromString(System.ReadOnlySpan`1[ushort],System.Globalization.CultureInfo):int (FullOpts)
           1 (0.12 % of base) : System.ComponentModel.TypeConverter.dasm - System.Drawing.ColorConverterCommon:IntFromString(System.ReadOnlySpan`1[ushort],System.Globalization.CultureInfo):int (FullOpts)

Top method improvements (bytes):
        -280 (-4.18 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Xslt.QilGenerator:PrecompileProtoTemplatesHeaders():this (FullOpts)
        -196 (-5.57 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[] (FullOpts)
        -111 (-14.02 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Xslt.QilGenerator:AddCurrentPositionLast(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
         -73 (-1.88 % of base) : System.Formats.Asn1.dasm - System.Formats.Asn1.AsnDecoder:ParseGeneralizedTime(int,System.ReadOnlySpan`1[ubyte]):System.DateTimeOffset (FullOpts)
         -70 (-4.19 % of base) : System.Drawing.Primitives.dasm - System.Drawing.ColorTranslator:FromHtml(System.String):System.Drawing.Color (FullOpts)
         -68 (-2.72 % of base) : System.Data.Common.dasm - System.Data.XmlTreeGen:HandleColumn(System.Data.DataColumn,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
         -66 (-14.54 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteBase64Minimized(System.ReadOnlySpan`1[ubyte]):this (FullOpts)
         -62 (-2.95 % of base) : System.Formats.Asn1.dasm - System.Formats.Asn1.AsnWriter:WriteGeneralizedTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset,ubyte):this (FullOpts)
         -61 (-2.42 % of base) : System.Text.Json.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (FullOpts)
         -59 (-3.27 % of base) : System.Formats.Asn1.dasm - System.Formats.Asn1.AsnWriter:WriteUtcTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset):this (FullOpts)
         -55 (-10.58 % of base) : System.Private.CoreLib.dasm - System.Buffers.Text.Utf8Parser:TryParseGuidN(System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (FullOpts)
         -50 (-32.89 % of base) : System.Data.Common.dasm - System.Data.SqlTypes.SqlDecimal:op_Explicit(System.Data.SqlTypes.SqlBoolean):System.Data.SqlTypes.SqlDecimal (FullOpts)
         -47 (-2.57 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Xslt.QilGenerator:CompileApplyTemplates(System.Xml.Xsl.Xslt.XslNodeEx):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
         -45 (-6.20 % of base) : System.Data.Common.dasm - System.Data.XSDSchema:SetExtProperties(System.Object,System.Xml.XmlAttribute[]) (FullOpts)
         -45 (-6.88 % of base) : System.Private.Xml.dasm - System.Xml.XmlSqlBinaryReader:AddQName():this (FullOpts)
         -43 (-31.16 % of base) : System.IO.Hashing.dasm - System.IO.Hashing.Crc64:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte (FullOpts)
         -43 (-39.81 % of base) : System.IO.Hashing.dasm - System.IO.Hashing.XxHash32:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,int):ubyte (FullOpts)
         -43 (-39.45 % of base) : System.IO.Hashing.dasm - System.IO.Hashing.XxHash64:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,long):ubyte (FullOpts)
         -43 (-6.24 % of base) : System.Runtime.Serialization.Schema.dasm - System.Runtime.Serialization.CodeExporter:GetClrNamespace(System.String):System.String (FullOpts)
         -42 (-14.05 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.ManifestBuilder:GetLocalizedMessage(System.String,System.Globalization.CultureInfo,ubyte):System.String:this (FullOpts)
         -42 (-18.92 % of base) : System.IO.Hashing.dasm - System.IO.Hashing.XxHash32+State:Complete(int,System.ReadOnlySpan`1[ubyte]):uint:this (FullOpts)
         -41 (-1.27 % of base) : runincontext.dasm - ArgInput:.ctor(System.String[]):this (FullOpts)
         -41 (-36.61 % of base) : System.Runtime.Numerics.dasm - System.Numerics.BigIntegerCalculator:Reduce(System.Span`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -41 (-1.81 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteSourceEnd(System.String,System.Type,System.Type):this (FullOpts)
         -40 (-15.21 % of base) : System.Private.CoreLib.dasm - System.Reflection.AssemblyNameHelpers:IsValidPublicKey(ubyte[]):ubyte (FullOpts)
         -38 (-12.22 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int (FullOpts)
         -38 (-7.10 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.XmlSerializationILGen:ILGenLoad(System.String,System.Type):this (FullOpts)
         -37 (-17.70 % of base) : System.IO.Hashing.dasm - System.IO.Hashing.Crc32:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte (FullOpts)
         -37 (-3.59 % of base) : System.Resources.Extensions.dasm - System.Resources.Extensions.PreserializedResourceWriter:FindTypeCode(System.Object,System.Collections.Generic.List`1[System.String]):int (FullOpts)
         -37 (-3.61 % of base) : System.Resources.Writer.dasm - System.Resources.ResourceWriter:FindTypeCode(System.Object,System.Collections.Generic.List`1[System.String]):int (FullOpts)
         -37 (-14.51 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Xslt.QilGenerator:AddDebugVariable(System.Xml.Xsl.Qil.QilName,System.Xml.Xsl.Qil.QilNode,System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
         -37 (-9.02 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Xslt.QilGenerator:CreateGlobalVarPar(System.Xml.Xsl.Xslt.VarPar):this (FullOpts)
         -37 (-6.94 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Xslt.QilGenerator:SetDebugNs(System.Xml.Xsl.Qil.QilNode,System.Xml.Xsl.Qil.QilList):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
         -36 (-12.77 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,long]:FromManaged(System.ReadOnlySpan`1[System.__Canon],System.Span`1[long]):this (FullOpts) (2 methods)
         -36 (-25.71 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.Pkcs.Pkcs12Kdf:CircularCopy(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]) (FullOpts)
         -36 (-25.71 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.Pkcs12Kdf:CircularCopy(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]) (FullOpts)
         -35 (-11.08 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[System.Numerics.Vector`1[float]](System.ReadOnlySpan`1[System.Numerics.Vector`1[float]],System.ReadOnlySpan`1[System.Numerics.Vector`1[float]],System.Collections.Generic.IEqualityComparer`1[System.Numerics.Vector`1[float]]):int (FullOpts)
         -34 (-12.10 % of base) : System.Private.CoreLib.dasm - System.Environment:get_CpuUsage():System.Environment+ProcessCpuUsage (FullOpts)
         -34 (-12.23 % of base) : System.Transactions.Local.dasm - System.Transactions.TransactionsEtwProvider:SetActivityId(System.String) (FullOpts)
         -34 (-1.25 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteArray(System.String,System.String,System.Xml.Serialization.ArrayMapping,ubyte,ubyte,int):this (FullOpts)
         -33 (-25.78 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Qil.QilReference:set_DebugName(System.String):this (FullOpts)
         -33 (-14.04 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Xslt.QilGenerator:CreateXslParam(System.Xml.Xsl.Qil.QilName,System.Xml.Xsl.XmlQueryType):System.Xml.Xsl.Qil.QilParameter:this (FullOpts)
         -31 (-16.67 % of base) : System.IO.Hashing.dasm - System.IO.Hashing.Crc32:Hash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
         -31 (-8.56 % of base) : System.IO.Hashing.dasm - System.IO.Hashing.XxHash64+State:Complete(long,System.ReadOnlySpan`1[ubyte]):ulong:this (FullOpts)
         -31 (-13.72 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):int (FullOpts)
         -31 (-0.97 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Xslt.QilGenerator:CompileInstructions(System.Collections.Generic.IList`1[System.Xml.Xsl.Xslt.XslNode],int,System.Xml.Xsl.Qil.QilList):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
         -31 (-1.40 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Xslt.QilGenerator:CompileKeys():this (FullOpts)
         -30 (-3.27 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.FileIO.FileSystem:CopyOrMoveDirectory(int,System.String,System.String,ubyte,int,int) (FullOpts)
         -30 (-14.63 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.ReflectionModel.ReflectionProperty:get_Name():System.String:this (FullOpts)
         -30 (-12.35 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.ClientConfigPaths:Validate(System.String,ubyte):System.String (FullOpts)
         -30 (-14.49 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.DataContract:GetDataContractNamespaceFromUri(System.String):System.String (FullOpts)
         -30 (-14.49 % of base) : System.Runtime.Serialization.Schema.dasm - System.Runtime.Serialization.SchemaImportHelper:GetDataContractNamespaceFromUri(System.String):System.String (FullOpts)
         -29 (-6.16 % of base) : System.Net.Mail.dasm - System.Net.Mime.SmtpDateTime:ValidateAndGetTimeZoneOffsetValues(System.String,byref,byref,byref) (FullOpts)
         -27 (-9.93 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[double](System.ReadOnlySpan`1[double],System.ReadOnlySpan`1[double],System.Collections.Generic.IEqualityComparer`1[double]):int (FullOpts)
         -27 (-10.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[short](System.ReadOnlySpan`1[short],System.ReadOnlySpan`1[short],System.Collections.Generic.IEqualityComparer`1[short]):int (FullOpts)
         -27 (-12.86 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson:TruncateDefaultDataContractNamespace(System.String):System.String (FullOpts)
         -27 (-1.48 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.Pkcs.Pkcs12Kdf:Derive(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.HashAlgorithmName,int,ubyte,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]) (FullOpts)
         -27 (-1.46 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.Pkcs12Kdf:Derive(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.HashAlgorithmName,int,ubyte,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]) (FullOpts)
         -27 (-2.36 % of base) : System.Text.Json.dasm - System.Text.Json.JsonHelpers:TryParseDateTimeOffset(System.ReadOnlySpan`1[ubyte],byref):ubyte (FullOpts)
         -27 (-4.58 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.XmlSerializationWriter:ListUsedPrefixes(System.Xml.Serialization.XmlSerializerNamespaces,System.String):System.Collections.Generic.HashSet`1[int] (FullOpts)
         -26 (-4.04 % of base) : System.Net.Security.dasm - System.Net.Security.TlsFrameHelper:TryParseHelloExtensions(System.ReadOnlySpan`1[ubyte],byref,int,System.Net.Security.TlsFrameHelper+HelloExtensionCallback):ubyte (FullOpts)
         -25 (-29.41 % of base) : System.IO.Hashing.dasm - System.IO.Hashing.XxHash32:Hash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int):int (FullOpts)
         -24 (-20.87 % of base) : System.IO.Hashing.dasm - System.IO.Hashing.Crc64:Hash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
         -24 (-27.91 % of base) : System.IO.Hashing.dasm - System.IO.Hashing.XxHash64:Hash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],long):int (FullOpts)
         -23 (-7.85 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:Write[System.__Canon](System.Buffers.IBufferWriter`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]) (FullOpts)
         -23 (-2.83 % of base) : System.Collections.dasm - System.Collections.BitArray:.ctor(ubyte[]):this (FullOpts) (2 methods)
         -23 (-8.71 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[int](System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],System.Collections.Generic.IEqualityComparer`1[int]):int (FullOpts)
         -23 (-8.71 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[long](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long],System.Collections.Generic.IEqualityComparer`1[long]):int (FullOpts)
         -23 (-8.71 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[System.Nullable`1[int]](System.ReadOnlySpan`1[System.Nullable`1[int]],System.ReadOnlySpan`1[System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]):int (FullOpts)
         -23 (-8.68 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[ubyte](System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IEqualityComparer`1[ubyte]):int (FullOpts)
         -23 (-1.12 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:.ctor(System.Net.Http.HttpConnectionPoolManager,ubyte,System.String,int,System.String,System.Uri):this (FullOpts)
         -23 (-20.72 % of base) : System.Net.Primitives.dasm - System.Net.IPAddress:TryWriteBytes(System.Span`1[ubyte],byref):ubyte:this (FullOpts)
         -23 (-6.67 % of base) : System.Net.Security.dasm - System.Net.Security.TlsFrameHelper:TryGetFrameInfo(System.ReadOnlySpan`1[ubyte],byref,int,System.Net.Security.TlsFrameHelper+HelloExtensionCallback):ubyte (FullOpts)
         -23 (-17.29 % of base) : System.Text.Encodings.Web.dasm - System.Text.Encodings.Web.AllowedBmpCodePointsBitmap:ForbidUndefinedCharacters():this (FullOpts)
         -23 (-6.41 % of base) : System.Text.Json.dasm - System.Text.Json.JsonHelpers:StableSortByKey[double,long](System.Collections.Generic.List`1[double],System.Func`2[double,long]) (FullOpts)
         -23 (-6.44 % of base) : System.Text.Json.dasm - System.Text.Json.JsonHelpers:StableSortByKey[int,long](System.Collections.Generic.List`1[int],System.Func`2[int,long]) (FullOpts)
         -23 (-6.44 % of base) : System.Text.Json.dasm - System.Text.Json.JsonHelpers:StableSortByKey[long,long](System.Collections.Generic.List`1[long],System.Func`2[long,long]) (FullOpts)
         -23 (-6.42 % of base) : System.Text.Json.dasm - System.Text.Json.JsonHelpers:StableSortByKey[short,long](System.Collections.Generic.List`1[short],System.Func`2[short,long]) (FullOpts)
         -23 (-4.77 % of base) : System.Text.Json.dasm - System.Text.Json.JsonHelpers:StableSortByKey[System.__Canon,long](System.Collections.Generic.List`1[System.__Canon],System.Func`2[System.__Canon,long]) (FullOpts)
         -23 (-6.44 % of base) : System.Text.Json.dasm - System.Text.Json.JsonHelpers:StableSortByKey[System.Nullable`1[int],long](System.Collections.Generic.List`1[System.Nullable`1[int]],System.Func`2[System.Nullable`1[int],long]) (FullOpts)
         -23 (-6.18 % of base) : System.Text.Json.dasm - System.Text.Json.JsonHelpers:StableSortByKey[System.Numerics.Vector`1[float],long](System.Collections.Generic.List`1[System.Numerics.Vector`1[float]],System.Func`2[System.Numerics.Vector`1[float],long]) (FullOpts)
         -23 (-6.42 % of base) : System.Text.Json.dasm - System.Text.Json.JsonHelpers:StableSortByKey[ubyte,long](System.Collections.Generic.List`1[ubyte],System.Func`2[ubyte,long]) (FullOpts)
         -23 (-3.36 % of base) : System.Transactions.Local.dasm - System.Transactions.TransactionInterop:GetTransactionFromTransmitterPropagationToken(ubyte[]):System.Transactions.Transaction (FullOpts)
         -22 (-2.63 % of base) : System.Formats.Asn1.dasm - System.Formats.Asn1.AsnDecoder:TryReadBitString(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,byref,byref,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):ubyte (FullOpts)
         -22 (-9.05 % of base) : System.Private.CoreLib.dasm - System.Guid:TryParseHex(System.ReadOnlySpan`1[ushort],byref,byref):ubyte (FullOpts) (2 methods)
         -22 (-6.47 % of base) : System.Net.Security.dasm - System.Net.NegotiateAuthenticationPal+ManagedNtlmNegotiateAuthenticationPal:Unwrap(System.ReadOnlySpan`1[ubyte],System.Buffers.IBufferWriter`1[ubyte],byref):int:this (FullOpts)
         -22 (-3.79 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryHashData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,byref):ubyte:this (FullOpts)
         -21 (-32.81 % of base) : System.Private.CoreLib.dasm - System.Boolean:System.IConvertible.ToDecimal(System.IFormatProvider):System.Decimal:this (FullOpts)
         -21 (-20.19 % of base) : System.Private.CoreLib.dasm - System.Convert:ToDecimal(ubyte):System.Decimal (FullOpts) (2 methods)
         -21 (-20.19 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[double](System.ReadOnlySpan`1[double],System.ReadOnlySpan`1[double]):int (FullOpts)
         -21 (-17.21 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[System.Nullable`1[int]](System.ReadOnlySpan`1[System.Nullable`1[int]],System.ReadOnlySpan`1[System.Nullable`1[int]]):int (FullOpts)
         -21 (-15.67 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[System.Numerics.Vector`1[float]](System.ReadOnlySpan`1[System.Numerics.Vector`1[float]],System.ReadOnlySpan`1[System.Numerics.Vector`1[float]]):int (FullOpts)
         -21 (-5.12 % of base) : System.Net.Security.dasm - System.Net.NegotiateAuthenticationPal+UnixNegotiateAuthenticationPal:GetMIC(System.ReadOnlySpan`1[ubyte],System.Buffers.IBufferWriter`1[ubyte]):this (FullOpts)
         -21 (-1.60 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PasswordDeriveBytes:ComputeBytes(int):ubyte[]:this (FullOpts)
         -20 (-12.35 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.TensorPrimitives:ConvertChecked[long,long](System.ReadOnlySpan`1[long],System.Span`1[long]) (FullOpts)
         -20 (-12.35 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.TensorPrimitives:ConvertSaturating[long,long](System.ReadOnlySpan`1[long],System.Span`1[long]) (FullOpts)
         -20 (-12.35 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.TensorPrimitives:ConvertTruncating[long,long](System.ReadOnlySpan`1[long],System.Span`1[long]) (FullOpts)
         -20 (-12.05 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.TensorPrimitives:TryConvertUniversal[long,long](System.ReadOnlySpan`1[long],System.Span`1[long]):ubyte (FullOpts)
         -19 (-4.52 % of base) : System.Formats.Asn1.dasm - System.Formats.Asn1.AsnDecoder:TryReadCharacterStringBytesCore(System.ReadOnlySpan`1[ubyte],int,System.Formats.Asn1.Asn1Tag,int,System.Span`1[ubyte],byref,byref):ubyte (FullOpts)
         -19 (-10.38 % of base) : System.Net.Security.dasm - System.Net.Security.TlsFrameHelper:TryParseServerHello(System.ReadOnlySpan`1[ubyte],byref,int,System.Net.Security.TlsFrameHelper+HelloExtensionCallback):ubyte (FullOpts)

Top method regressions (percentages):
          21 (10.00 % of base) : System.Private.Xml.dasm - System.Xml.XmlEntityReference+<>c:<ConstructBaseURI>b__27_0(System.Span`1[ushort],System.ValueTuple`2[System.String,System.String]):this (FullOpts)
          20 (8.93 % of base) : System.Data.Odbc.dasm - System.Data.Common.DbConnectionOptions:GetKeyValue(System.Text.StringBuilder,ubyte):System.String (FullOpts)
          20 (8.93 % of base) : System.Data.Common.dasm - System.Data.Common.DbConnectionOptions:GetKeyValue(System.Text.StringBuilder,ubyte):System.String (FullOpts)
          13 (7.83 % of base) : System.Data.Common.dasm - System.Data.Common.DbConnectionOptions:GetKeyName(System.Text.StringBuilder):System.String (FullOpts)
          13 (6.37 % of base) : System.Data.Odbc.dasm - System.Data.Common.DbConnectionOptions:GetKeyName(System.Text.StringBuilder):System.String (FullOpts)
          14 (4.76 % of base) : System.Private.CoreLib.dasm - System.Buffers.AhoCorasickNode:OptimizeChildren():this (FullOpts)
          22 (3.08 % of base) : System.Private.CoreLib.dasm - System.Globalization.TextInfo:ChangeCaseCommon[double](System.String):System.String:this (FullOpts)
          22 (3.08 % of base) : System.Private.CoreLib.dasm - System.Globalization.TextInfo:ChangeCaseCommon[int](System.String):System.String:this (FullOpts)
          22 (3.08 % of base) : System.Private.CoreLib.dasm - System.Globalization.TextInfo:ChangeCaseCommon[long](System.String):System.String:this (FullOpts)
          22 (3.08 % of base) : System.Private.CoreLib.dasm - System.Globalization.TextInfo:ChangeCaseCommon[short](System.String):System.String:this (FullOpts)
          22 (3.08 % of base) : System.Private.CoreLib.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](System.String):System.String:this (FullOpts)
          22 (3.08 % of base) : System.Private.CoreLib.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Numerics.Vector`1[float]](System.String):System.String:this (FullOpts)
          22 (3.08 % of base) : System.Private.CoreLib.dasm - System.Globalization.TextInfo:ChangeCaseCommon[ubyte](System.String):System.String:this (FullOpts)
          22 (3.05 % of base) : System.Private.CoreLib.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (FullOpts)
          16 (2.45 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexReplacement+<>c:<ReplaceSimpleText>b__17_1(System.Span`1[ushort],System.ValueTuple`3[long,System.String,System.String]):this (FullOpts) (2 methods)
           8 (1.29 % of base) : System.Private.CoreLib.dasm - System.Enum:FormatFlagNames[int](System.Enum+EnumInfo`1[int],int):System.String (FullOpts)
           8 (1.26 % of base) : System.Private.CoreLib.dasm - System.Enum:FormatFlagNames[long](System.Enum+EnumInfo`1[long],long):System.String (FullOpts)
           8 (1.26 % of base) : System.Private.CoreLib.dasm - System.Enum:FormatFlagNames[ubyte](System.Enum+EnumInfo`1[ubyte],ubyte):System.String (FullOpts)
           8 (1.25 % of base) : System.Private.CoreLib.dasm - System.Enum:FormatFlagNames[short](System.Enum+EnumInfo`1[short],short):System.String (FullOpts)
           9 (1.20 % of base) : System.Private.CoreLib.dasm - System.Enum:TryFormatFlagNames[int](System.Enum+EnumInfo`1[int],int,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
           9 (1.20 % of base) : System.Private.CoreLib.dasm - System.Enum:TryFormatFlagNames[long](System.Enum+EnumInfo`1[long],long,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
           9 (1.18 % of base) : System.Private.CoreLib.dasm - System.Enum:TryFormatFlagNames[ubyte](System.Enum+EnumInfo`1[ubyte],ubyte,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
           9 (1.18 % of base) : System.Private.CoreLib.dasm - System.Enum:TryFormatFlagNames[short](System.Enum+EnumInfo`1[short],short,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
           8 (1.13 % of base) : System.Private.CoreLib.dasm - System.Enum:FormatFlagNames[double](System.Enum+EnumInfo`1[double],double):System.String (FullOpts)
           9 (1.08 % of base) : System.Private.CoreLib.dasm - System.Enum:TryFormatFlagNames[double](System.Enum+EnumInfo`1[double],double,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
           3 (1.08 % of base) : System.Private.CoreLib.dasm - System.Enum:WriteMultipleFoundFlagsNames(System.String[],System.ReadOnlySpan`1[int],System.Span`1[ushort]) (FullOpts)
           1 (0.12 % of base) : System.Drawing.Primitives.dasm - System.Drawing.ColorConverterCommon:IntFromString(System.ReadOnlySpan`1[ushort],System.Globalization.CultureInfo):int (FullOpts)
           1 (0.12 % of base) : System.ComponentModel.TypeConverter.dasm - System.Drawing.ColorConverterCommon:IntFromString(System.ReadOnlySpan`1[ushort],System.Globalization.CultureInfo):int (FullOpts)

Top method improvements (percentages):
         -43 (-39.81 % of base) : System.IO.Hashing.dasm - System.IO.Hashing.XxHash32:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,int):ubyte (FullOpts)
         -43 (-39.45 % of base) : System.IO.Hashing.dasm - System.IO.Hashing.XxHash64:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,long):ubyte (FullOpts)
         -41 (-36.61 % of base) : System.Runtime.Numerics.dasm - System.Numerics.BigIntegerCalculator:Reduce(System.Span`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -11 (-33.33 % of base) : System.Private.CoreLib.dasm - System.Guid:TryWriteBytes(System.Span`1[ubyte]):ubyte:this (FullOpts)
         -50 (-32.89 % of base) : System.Data.Common.dasm - System.Data.SqlTypes.SqlDecimal:op_Explicit(System.Data.SqlTypes.SqlBoolean):System.Data.SqlTypes.SqlDecimal (FullOpts)
         -21 (-32.81 % of base) : System.Private.CoreLib.dasm - System.Boolean:System.IConvertible.ToDecimal(System.IFormatProvider):System.Decimal:this (FullOpts)
         -43 (-31.16 % of base) : System.IO.Hashing.dasm - System.IO.Hashing.Crc64:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte (FullOpts)
         -25 (-29.41 % of base) : System.IO.Hashing.dasm - System.IO.Hashing.XxHash32:Hash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int):int (FullOpts)
         -18 (-28.12 % of base) : System.Formats.Nrbf.dasm - System.Formats.Nrbf.NrbfDecoder:StartsWithPayloadHeader(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
         -24 (-27.91 % of base) : System.IO.Hashing.dasm - System.IO.Hashing.XxHash64:Hash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],long):int (FullOpts)
         -33 (-25.78 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Qil.QilReference:set_DebugName(System.String):this (FullOpts)
         -36 (-25.71 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.Pkcs.Pkcs12Kdf:CircularCopy(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]) (FullOpts)
         -36 (-25.71 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.Pkcs12Kdf:CircularCopy(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]) (FullOpts)
         -24 (-20.87 % of base) : System.IO.Hashing.dasm - System.IO.Hashing.Crc64:Hash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
         -23 (-20.72 % of base) : System.Net.Primitives.dasm - System.Net.IPAddress:TryWriteBytes(System.Span`1[ubyte],byref):ubyte:this (FullOpts)
         -18 (-20.22 % of base) : System.Net.Security.dasm - System.Net.Security.TlsFrameHelper:GetSniFromHostNameStruct(System.ReadOnlySpan`1[ubyte],byref):System.String (FullOpts)
         -21 (-20.19 % of base) : System.Private.CoreLib.dasm - System.Convert:ToDecimal(ubyte):System.Decimal (FullOpts) (2 methods)
         -21 (-20.19 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[double](System.ReadOnlySpan`1[double],System.ReadOnlySpan`1[double]):int (FullOpts)
         -42 (-18.92 % of base) : System.IO.Hashing.dasm - System.IO.Hashing.XxHash32+State:Complete(int,System.ReadOnlySpan`1[ubyte]):uint:this (FullOpts)
         -17 (-18.68 % of base) : System.Net.Http.dasm - System.Net.Http.HPack.HPackEncoder:EncodeLiteralHeaderFieldWithoutIndexingNewName(System.String,System.Span`1[ubyte],byref):ubyte (FullOpts)
         -37 (-17.70 % of base) : System.IO.Hashing.dasm - System.IO.Hashing.Crc32:TryHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte (FullOpts)
         -23 (-17.29 % of base) : System.Text.Encodings.Web.dasm - System.Text.Encodings.Web.AllowedBmpCodePointsBitmap:ForbidUndefinedCharacters():this (FullOpts)
         -21 (-17.21 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[System.Nullable`1[int]](System.ReadOnlySpan`1[System.Nullable`1[int]],System.ReadOnlySpan`1[System.Nullable`1[int]]):int (FullOpts)
         -31 (-16.67 % of base) : System.IO.Hashing.dasm - System.IO.Hashing.Crc32:Hash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
         -18 (-16.22 % of base) : System.Formats.Cbor.dasm - System.Formats.Cbor.CborWriter:TryEncode(System.Span`1[ubyte],byref):ubyte:this (FullOpts)
         -21 (-15.67 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[System.Numerics.Vector`1[float]](System.ReadOnlySpan`1[System.Numerics.Vector`1[float]],System.ReadOnlySpan`1[System.Numerics.Vector`1[float]]):int (FullOpts)
         -40 (-15.21 % of base) : System.Private.CoreLib.dasm - System.Reflection.AssemblyNameHelpers:IsValidPublicKey(ubyte[]):ubyte (FullOpts)
         -30 (-14.63 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.ReflectionModel.ReflectionProperty:get_Name():System.String:this (FullOpts)
         -66 (-14.54 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteBase64Minimized(System.ReadOnlySpan`1[ubyte]):this (FullOpts)
         -37 (-14.51 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Xslt.QilGenerator:AddDebugVariable(System.Xml.Xsl.Qil.QilName,System.Xml.Xsl.Qil.QilNode,System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
         -30 (-14.49 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.DataContract:GetDataContractNamespaceFromUri(System.String):System.String (FullOpts)
         -30 (-14.49 % of base) : System.Runtime.Serialization.Schema.dasm - System.Runtime.Serialization.SchemaImportHelper:GetDataContractNamespaceFromUri(System.String):System.String (FullOpts)
         -42 (-14.05 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.ManifestBuilder:GetLocalizedMessage(System.String,System.Globalization.CultureInfo,ubyte):System.String:this (FullOpts)
         -33 (-14.04 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Xslt.QilGenerator:CreateXslParam(System.Xml.Xsl.Qil.QilName,System.Xml.Xsl.XmlQueryType):System.Xml.Xsl.Qil.QilParameter:this (FullOpts)
        -111 (-14.02 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Xslt.QilGenerator:AddCurrentPositionLast(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
         -31 (-13.72 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):int (FullOpts)
         -27 (-12.86 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson:TruncateDefaultDataContractNamespace(System.String):System.String (FullOpts)
         -18 (-12.77 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[double,long]:FromManaged(System.ReadOnlySpan`1[double],System.Span`1[long]):this (FullOpts)
         -18 (-12.77 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[int,long]:FromManaged(System.ReadOnlySpan`1[int],System.Span`1[long]):this (FullOpts)
         -18 (-12.77 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[long,long]:FromManaged(System.ReadOnlySpan`1[long],System.Span`1[long]):this (FullOpts)
         -18 (-12.77 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[short,long]:FromManaged(System.ReadOnlySpan`1[short],System.Span`1[long]):this (FullOpts)
         -36 (-12.77 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,long]:FromManaged(System.ReadOnlySpan`1[System.__Canon],System.Span`1[long]):this (FullOpts) (2 methods)
         -18 (-12.77 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.Nullable`1[int],long]:FromManaged(System.ReadOnlySpan`1[System.Nullable`1[int]],System.Span`1[long]):this (FullOpts)
         -18 (-12.77 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.Numerics.Vector`1[float],long]:FromManaged(System.ReadOnlySpan`1[System.Numerics.Vector`1[float]],System.Span`1[long]):this (FullOpts)
         -18 (-12.77 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[ubyte,long]:FromManaged(System.ReadOnlySpan`1[ubyte],System.Span`1[long]):this (FullOpts)
         -18 (-12.77 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.SpanMarshaller`2+ManagedToUnmanagedIn[double,long]:FromManaged(System.Span`1[double],System.Span`1[long]):this (FullOpts)
         -18 (-12.77 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.SpanMarshaller`2+ManagedToUnmanagedIn[int,long]:FromManaged(System.Span`1[int],System.Span`1[long]):this (FullOpts)
         -18 (-12.77 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.SpanMarshaller`2+ManagedToUnmanagedIn[long,long]:FromManaged(System.Span`1[long],System.Span`1[long]):this (FullOpts)
         -18 (-12.77 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.SpanMarshaller`2+ManagedToUnmanagedIn[short,long]:FromManaged(System.Span`1[short],System.Span`1[long]):this (FullOpts)
         -18 (-12.77 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.SpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,long]:FromManaged(System.Span`1[System.__Canon],System.Span`1[long]):this (FullOpts)
         -18 (-12.77 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.SpanMarshaller`2+ManagedToUnmanagedIn[System.Nullable`1[int],long]:FromManaged(System.Span`1[System.Nullable`1[int]],System.Span`1[long]):this (FullOpts)
         -18 (-12.77 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.SpanMarshaller`2+ManagedToUnmanagedIn[System.Numerics.Vector`1[float],long]:FromManaged(System.Span`1[System.Numerics.Vector`1[float]],System.Span`1[long]):this (FullOpts)
         -18 (-12.77 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.SpanMarshaller`2+ManagedToUnmanagedIn[ubyte,long]:FromManaged(System.Span`1[ubyte],System.Span`1[long]):this (FullOpts)
         -18 (-12.50 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:Write[ubyte](System.Buffers.IBufferWriter`1[ubyte],System.ReadOnlySpan`1[ubyte]) (FullOpts)
         -30 (-12.35 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.ClientConfigPaths:Validate(System.String,ubyte):System.String (FullOpts)
         -20 (-12.35 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.TensorPrimitives:ConvertChecked[long,long](System.ReadOnlySpan`1[long],System.Span`1[long]) (FullOpts)
         -20 (-12.35 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.TensorPrimitives:ConvertSaturating[long,long](System.ReadOnlySpan`1[long],System.Span`1[long]) (FullOpts)
         -20 (-12.35 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.TensorPrimitives:ConvertTruncating[long,long](System.ReadOnlySpan`1[long],System.Span`1[long]) (FullOpts)
         -18 (-12.24 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:Write[short](System.Buffers.IBufferWriter`1[short],System.ReadOnlySpan`1[short]) (FullOpts)
         -18 (-12.24 % of base) : System.Text.Json.dasm - System.Text.Json.JsonHelpers:<TryParseDateTimeOffset>g__ParseOffset|32_0(byref,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
         -34 (-12.23 % of base) : System.Transactions.Local.dasm - System.Transactions.TransactionsEtwProvider:SetActivityId(System.String) (FullOpts)
         -38 (-12.22 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int (FullOpts)
         -16 (-12.21 % of base) : System.Runtime.Numerics.dasm - System.Numerics.BigIntegerCalculator:Overwrite(System.Span`1[uint],ulong):int (FullOpts)
         -18 (-12.16 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:Write[double](System.Buffers.IBufferWriter`1[double],System.ReadOnlySpan`1[double]) (FullOpts)
         -18 (-12.16 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:Write[int](System.Buffers.IBufferWriter`1[int],System.ReadOnlySpan`1[int]) (FullOpts)
         -18 (-12.16 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:Write[long](System.Buffers.IBufferWriter`1[long],System.ReadOnlySpan`1[long]) (FullOpts)
         -18 (-12.16 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:Write[System.Nullable`1[int]](System.Buffers.IBufferWriter`1[System.Nullable`1[int]],System.ReadOnlySpan`1[System.Nullable`1[int]]) (FullOpts)
         -18 (-12.16 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:Write[System.Numerics.Vector`1[float]](System.Buffers.IBufferWriter`1[System.Numerics.Vector`1[float]],System.ReadOnlySpan`1[System.Numerics.Vector`1[float]]) (FullOpts)
         -34 (-12.10 % of base) : System.Private.CoreLib.dasm - System.Environment:get_CpuUsage():System.Environment+ProcessCpuUsage (FullOpts)
         -20 (-12.05 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.TensorPrimitives:TryConvertUniversal[long,long](System.ReadOnlySpan`1[long],System.Span`1[long]):ubyte (FullOpts)
         -12 (-11.43 % of base) : System.Private.CoreLib.dasm - System.Guid:TryWriteBytes(System.Span`1[ubyte],ubyte,byref):ubyte:this (FullOpts)
         -35 (-11.08 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[System.Numerics.Vector`1[float]](System.ReadOnlySpan`1[System.Numerics.Vector`1[float]],System.ReadOnlySpan`1[System.Numerics.Vector`1[float]],System.Collections.Generic.IEqualityComparer`1[System.Numerics.Vector`1[float]]):int (FullOpts)
         -55 (-10.58 % of base) : System.Private.CoreLib.dasm - System.Buffers.Text.Utf8Parser:TryParseGuidN(System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (FullOpts)
         -19 (-10.38 % of base) : System.Net.Security.dasm - System.Net.Security.TlsFrameHelper:TryParseServerHello(System.ReadOnlySpan`1[ubyte],byref,int,System.Net.Security.TlsFrameHelper+HelloExtensionCallback):ubyte (FullOpts)
         -27 (-10.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[short](System.ReadOnlySpan`1[short],System.ReadOnlySpan`1[short],System.Collections.Generic.IEqualityComparer`1[short]):int (FullOpts)
         -19 (-10.00 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:ParseOid(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
         -27 (-9.93 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[double](System.ReadOnlySpan`1[double],System.ReadOnlySpan`1[double],System.Collections.Generic.IEqualityComparer`1[double]):int (FullOpts)
         -22 (-9.05 % of base) : System.Private.CoreLib.dasm - System.Guid:TryParseHex(System.ReadOnlySpan`1[ushort],byref,byref):ubyte (FullOpts) (2 methods)
         -37 (-9.02 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Xslt.QilGenerator:CreateGlobalVarPar(System.Xml.Xsl.Xslt.VarPar):this (FullOpts)
         -23 (-8.71 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[int](System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],System.Collections.Generic.IEqualityComparer`1[int]):int (FullOpts)
         -23 (-8.71 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[long](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long],System.Collections.Generic.IEqualityComparer`1[long]):int (FullOpts)
         -23 (-8.71 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[System.Nullable`1[int]](System.ReadOnlySpan`1[System.Nullable`1[int]],System.ReadOnlySpan`1[System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]):int (FullOpts)
         -23 (-8.68 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CommonPrefixLength[ubyte](System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IEqualityComparer`1[ubyte]):int (FullOpts)
         -31 (-8.56 % of base) : System.IO.Hashing.dasm - System.IO.Hashing.XxHash64+State:Complete(long,System.ReadOnlySpan`1[ubyte]):ulong:this (FullOpts)
         -14 (-8.24 % of base) : System.Formats.Cbor.dasm - System.Formats.Cbor.CborWriter:Encode(System.Span`1[ubyte]):int:this (FullOpts)
         -23 (-7.85 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:Write[System.__Canon](System.Buffers.IBufferWriter`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]) (FullOpts)
         -17 (-7.83 % of base) : System.Private.CoreLib.dasm - System.AppDomain:get_MonitoringTotalProcessorTime():System.TimeSpan:this (FullOpts)
         -18 (-7.14 % of base) : System.Net.Security.dasm - System.Net.NegotiateAuthenticationPal+ManagedNtlmNegotiateAuthenticationPal:UnwrapInPlace(System.Span`1[ubyte],byref,byref,byref):int:this (FullOpts)
         -18 (-7.14 % of base) : System.Net.Security.dasm - System.Net.Security.TlsFrameHelper:TryParseClientHello(System.ReadOnlySpan`1[ubyte],byref,int,System.Net.Security.TlsFrameHelper+HelloExtensionCallback):ubyte (FullOpts)
         -38 (-7.10 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.XmlSerializationILGen:ILGenLoad(System.String,System.Type):this (FullOpts)
         -37 (-6.94 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Xslt.QilGenerator:SetDebugNs(System.Xml.Xsl.Qil.QilNode,System.Xml.Xsl.Qil.QilList):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
         -45 (-6.88 % of base) : System.Private.Xml.dasm - System.Xml.XmlSqlBinaryReader:AddQName():this (FullOpts)
         -23 (-6.67 % of base) : System.Net.Security.dasm - System.Net.Security.TlsFrameHelper:TryGetFrameInfo(System.ReadOnlySpan`1[ubyte],byref,int,System.Net.Security.TlsFrameHelper+HelloExtensionCallback):ubyte (FullOpts)
         -22 (-6.47 % of base) : System.Net.Security.dasm - System.Net.NegotiateAuthenticationPal+ManagedNtlmNegotiateAuthenticationPal:Unwrap(System.ReadOnlySpan`1[ubyte],System.Buffers.IBufferWriter`1[ubyte],byref):int:this (FullOpts)
         -23 (-6.44 % of base) : System.Text.Json.dasm - System.Text.Json.JsonHelpers:StableSortByKey[int,long](System.Collections.Generic.List`1[int],System.Func`2[int,long]) (FullOpts)
         -23 (-6.44 % of base) : System.Text.Json.dasm - System.Text.Json.JsonHelpers:StableSortByKey[long,long](System.Collections.Generic.List`1[long],System.Func`2[long,long]) (FullOpts)
         -23 (-6.44 % of base) : System.Text.Json.dasm - System.Text.Json.JsonHelpers:StableSortByKey[System.Nullable`1[int],long](System.Collections.Generic.List`1[System.Nullable`1[int]],System.Func`2[System.Nullable`1[int],long]) (FullOpts)
         -23 (-6.42 % of base) : System.Text.Json.dasm - System.Text.Json.JsonHelpers:StableSortByKey[short,long](System.Collections.Generic.List`1[short],System.Func`2[short,long]) (FullOpts)
         -23 (-6.42 % of base) : System.Text.Json.dasm - System.Text.Json.JsonHelpers:StableSortByKey[ubyte,long](System.Collections.Generic.List`1[ubyte],System.Func`2[ubyte,long]) (FullOpts)
         -23 (-6.41 % of base) : System.Text.Json.dasm - System.Text.Json.JsonHelpers:StableSortByKey[double,long](System.Collections.Generic.List`1[double],System.Func`2[double,long]) (FullOpts)

228 total methods with Code Size differences (200 improved, 28 regressed), 231211 unchanged.

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

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Jul 28, 2024

Top method regressions

22 (3.08 % of base) - System.Globalization.TextInfo:ChangeCaseCommon[double](System.String):System.String:this
 ; Assembly listing for method System.Globalization.TextInfo:ChangeCaseCommon[double](System.String):System.String: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; 27 single block inlinees; 17 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T02] ( 10,  6   )     ref  ->  rbx         this class-hnd single-def <System.Globalization.TextInfo>
 ;  V01 arg1         [V01,T03] (  8,  5.50)     ref  ->  r15         class-hnd single-def <System.String>
 ;* V02 loc0         [V02,T60] (  0,  0   )   ubyte  ->  zero-ref   
 ;  V03 loc1         [V03,T05] (  4,  5.50)    long  ->  r13        
 ;  V04 loc2         [V04    ] (  2,  1   )   byref  ->  [rbp-0x30]  must-init pinned single-def
 ;  V05 loc3         [V05,T00] ( 15, 21.50)    long  ->  r12        
 ;  V06 loc4         [V06,T06] (  2,  4.50)    long  ->  rdi        
 ;  V07 loc5         [V07,T01] (  4, 12   )     int  ->  rax        
-;  V08 loc6         [V08,T34] (  3,  1.50)     int  ->  rax        
-;  V09 loc7         [V09,T14] (  4,  2   )     ref  ->  r13         class-hnd exact single-def <System.String>
+;  V08 loc6         [V08,T35] (  3,  1.50)     int  ->  rax        
+;  V09 loc7         [V09,T15] (  4,  2   )     ref  ->  r13         class-hnd exact single-def <System.String>
 ;* V10 loc8         [V10    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Span`1[ushort]>
 ;* V11 loc9         [V11    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.ReadOnlySpan`1[ushort]>
 ;  V12 loc10        [V12,T07] (  7,  3.50)     ref  ->  [rbp-0x68]  class-hnd exact spill-single-def <System.String>
 ;* V13 loc11        [V13    ] (  0,  0   )  struct (16) zero-ref    <System.Span`1[ushort]>
 ;* V14 loc12        [V14    ] (  0,  0   )    long  ->  zero-ref   
 ;  V15 loc13        [V15    ] (  3,  1.50)   byref  ->  [rbp-0x38]  must-init pinned
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V17 tmp1         [V17,T50] (  2,  1   )    long  ->  r13        
-;  V18 tmp2         [V18,T35] (  3,  1.50)    long  ->  rcx        
+;  V18 tmp2         [V18,T36] (  3,  1.50)    long  ->  rcx        
 ;* V19 tmp3         [V19    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
 ;* V20 tmp4         [V20    ] (  0,  0   )     int  ->  zero-ref   
 ;* V21 tmp5         [V21    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
 ;* V22 tmp6         [V22    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V23 tmp7         [V23    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Span`1[ushort]>
 ;* V24 tmp8         [V24    ] (  0,  0   )     int  ->  zero-ref   
 ;* V25 tmp9         [V25    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V26 tmp10        [V26    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;  V27 tmp11        [V27,T16] (  2,  2   )   byref  ->  rax         single-def "Inlining Arg"
-;  V28 tmp12        [V28,T20] (  2,  2   )     int  ->  rcx         "Inlining Arg"
+;  V27 tmp11        [V27,T18] (  2,  2   )   byref  ->  rax         single-def "Inlining Arg"
+;  V28 tmp12        [V28,T22] (  2,  2   )     int  ->  rcx         "Inlining Arg"
 ;* V29 tmp13        [V29    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
 ;  V30 tmp14        [V30,T12] (  3,  3   )     int  ->  rdx         "Inlining Arg"
 ;* V31 tmp15        [V31    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V32 tmp16        [V32    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
 ;* V33 tmp17        [V33    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V34 tmp18        [V34    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
 ;* V35 tmp19        [V35    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V36 tmp20        [V36    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V37 tmp21        [V37    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V38 tmp22        [V38,T21] (  2,  2   )     int  ->  rdi         "Inlining Arg"
+;  V38 tmp22        [V38,T23] (  2,  2   )     int  ->  rdi         "Inlining Arg"
 ;* V39 tmp23        [V39    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V40 tmp24        [V40    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-;  V41 tmp25        [V41,T17] (  2,  2   )   byref  ->  r15         single-def "Inlining Arg"
-;  V42 tmp26        [V42,T22] (  2,  2   )     int  ->  r14         "Inlining Arg"
-;  V43 tmp27        [V43,T23] (  2,  2   )     int  ->  rdi         "Inlining Arg"
+;  V41 tmp25        [V41,T19] (  2,  2   )   byref  ->  r15         single-def "Inlining Arg"
+;  V42 tmp26        [V42,T24] (  2,  2   )     int  ->  r14         "Inlining Arg"
+;  V43 tmp27        [V43,T13] (  3,  3   )     int  ->  rdi         "Inlining Arg"
 ;* V44 tmp28        [V44    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-;  V45 tmp29        [V45,T18] (  2,  2   )   byref  ->  rax         single-def "Inlining Arg"
-;  V46 tmp30        [V46,T24] (  2,  2   )     int  ->  r12         "Inlining Arg"
+;  V45 tmp29        [V45,T20] (  2,  2   )   byref  ->  rax         single-def "Inlining Arg"
+;  V46 tmp30        [V46,T25] (  2,  2   )     int  ->  r12         "Inlining Arg"
 ;* V47 tmp31        [V47    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V48 tmp32        [V48,T67] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
 ;  V49 tmp33        [V49    ] (  5,  2.50)     int  ->  [rbp-0x40]  do-not-enreg[X] addr-exposed ld-addr-op "Inline stloc first use temp"
 ;  V50 tmp34        [V50    ] (  3,  1.50)   byref  ->  [rbp-0x48]  must-init pinned "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V52 tmp36        [V52    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
 ;  V53 tmp37        [V53    ] (  3,  1.50)   byref  ->  [rbp-0x50]  must-init pinned "Inline stloc first use temp"
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;  V55 tmp39        [V55,T51] (  2,  1   )     int  ->  rax        
 ;* V56 tmp40        [V56    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V57 tmp41        [V57    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Span`1[ushort]>
 ;* V58 tmp42        [V58    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V59 tmp43        [V59    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Span`1[ushort]>
 ;* V60 tmp44        [V60    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V62 tmp46        [V62    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V63 tmp47        [V63    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V64 tmp48        [V64,T68] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V65 tmp49        [V65    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V66 tmp50        [V66    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V67 tmp51        [V67    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V68 tmp52        [V68    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V69 tmp53        [V69    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V70 tmp54        [V70    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
 ;* V71 tmp55        [V71    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V72 tmp56        [V72,T69] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V73 tmp57        [V73    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
 ;* V74 tmp58        [V74    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V75 tmp59        [V75    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V76 tmp60        [V76    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Span`1[ushort]>
 ;* V77 tmp61        [V77    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V78 tmp62        [V78    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Span`1[ushort]>
 ;* V79 tmp63        [V79    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V80 tmp64        [V80    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V81 tmp65        [V81    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V82 tmp66        [V82    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V83 tmp67        [V83    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V84 tmp68        [V84    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V85 tmp69        [V85    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V86 tmp70        [V86    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V87 tmp71        [V87    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V88 tmp72        [V88    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V89 tmp73        [V89    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
 ;* V90 tmp74        [V90    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V91 tmp75        [V91    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V92 tmp76        [V92    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
 ;* V93 tmp77        [V93    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V94 tmp78        [V94    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V95 tmp79        [V95    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
 ;* V96 tmp80        [V96    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V97 tmp81        [V97    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V98 tmp82        [V98    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V99 tmp83        [V99    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V100 tmp84       [V100,T19] (  2,  2   )   byref  ->  rdi         single-def "Inlining Arg"
-;  V101 tmp85       [V101,T25] (  2,  2   )     int  ->  rdx         "Inlining Arg"
+;  V100 tmp84       [V100,T21] (  2,  2   )   byref  ->  rdi         single-def "Inlining Arg"
+;  V101 tmp85       [V101,T26] (  2,  2   )     int  ->  rdx         "Inlining Arg"
 ;* V102 tmp86       [V102    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;  V103 tmp87       [V103,T13] (  3,  3   )     int  ->  rsi         "Inlining Arg"
+;  V103 tmp87       [V103,T14] (  3,  3   )     int  ->  rsi         "Inlining Arg"
 ;* V104 tmp88       [V104    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V105 tmp89       [V105    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
 ;* V106 tmp90       [V106    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V107 tmp91       [V107    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
 ;* V108 tmp92       [V108    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V109 tmp93       [V109    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V110 tmp94       [V110    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V111 tmp95       [V111    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V112 tmp96       [V112    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V113 tmp97       [V113    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V114 tmp98       [V114    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V115 tmp99       [V115,T33] (  3,  1.50)   byref  ->  [rbp-0x70]  spill-single-def "field V10._reference (fldOffset=0x0)" P-INDEP
-;  V116 tmp100      [V116,T36] (  3,  1.50)     int  ->  [rbp-0x54]  spill-single-def "field V10._length (fldOffset=0x8)" P-INDEP
+;  V115 tmp99       [V115,T34] (  3,  1.50)   byref  ->  [rbp-0x70]  spill-single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+;  V116 tmp100      [V116,T16] (  4,  2   )     int  ->  [rbp-0x54]  spill-single-def "field V10._length (fldOffset=0x8)" P-INDEP
 ;* V117 tmp101      [V117    ] (  0,  0   )   byref  ->  zero-ref    "field V11._reference (fldOffset=0x0)" P-INDEP
 ;* V118 tmp102      [V118    ] (  0,  0   )     int  ->  zero-ref    "field V11._length (fldOffset=0x8)" P-INDEP
 ;  V119 tmp103      [V119,T40] (  2,  1   )   byref  ->  rdi         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;  V120 tmp104      [V120,T52] (  2,  1   )     int  ->  rdx         "field V13._length (fldOffset=0x8)" P-INDEP
 ;  V121 tmp105      [V121,T41] (  2,  1   )   byref  ->  rdi         single-def "field V19._reference (fldOffset=0x0)" P-INDEP
 ;  V122 tmp106      [V122,T53] (  2,  1   )     int  ->  rdx         "field V19._length (fldOffset=0x8)" P-INDEP
 ;  V123 tmp107      [V123,T42] (  2,  1   )   byref  ->  rax         single-def "field V21._reference (fldOffset=0x0)" P-INDEP
 ;  V124 tmp108      [V124,T54] (  2,  1   )     int  ->  rcx         "field V21._length (fldOffset=0x8)" P-INDEP
 ;  V125 tmp109      [V125,T43] (  2,  1   )   byref  ->  r15         "field V22._reference (fldOffset=0x0)" P-INDEP
 ;  V126 tmp110      [V126,T55] (  2,  1   )     int  ->  r14         "field V22._length (fldOffset=0x8)" P-INDEP
 ;* V127 tmp111      [V127    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V23._reference (fldOffset=0x0)" P-INDEP
 ;* V128 tmp112      [V128    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x8)" P-INDEP
 ;  V129 tmp113      [V129,T44] (  2,  1   )   byref  ->  rsi         single-def "field V29._reference (fldOffset=0x0)" P-INDEP
 ;  V130 tmp114      [V130,T37] (  3,  1.50)     int  ->  rdx         "field V29._length (fldOffset=0x8)" P-INDEP
 ;  V131 tmp115      [V131,T45] (  2,  1   )   byref  ->  rsi         single-def "field V31._reference (fldOffset=0x0)" P-INDEP
 ;  V132 tmp116      [V132,T56] (  2,  1   )     int  ->  rdx         "field V31._length (fldOffset=0x8)" P-INDEP
 ;* V133 tmp117      [V133    ] (  0,  0   )   byref  ->  zero-ref    "field V32._reference (fldOffset=0x0)" P-INDEP
 ;* V134 tmp118      [V134    ] (  0,  0   )     int  ->  zero-ref    "field V32._length (fldOffset=0x8)" P-INDEP
 ;* V135 tmp119      [V135    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V34._reference (fldOffset=0x0)" P-INDEP
 ;* V136 tmp120      [V136    ] (  0,  0   )     int  ->  zero-ref    "field V34._length (fldOffset=0x8)" P-INDEP
 ;  V137 tmp121      [V137,T46] (  2,  1   )   byref  ->  r15         single-def "field V39._reference (fldOffset=0x0)" P-INDEP
 ;  V138 tmp122      [V138,T57] (  2,  1   )     int  ->  r14         "field V39._length (fldOffset=0x8)" P-INDEP
 ;* V139 tmp123      [V139    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V40._reference (fldOffset=0x0)" P-INDEP
 ;* V140 tmp124      [V140    ] (  0,  0   )     int  ->  zero-ref    "field V40._length (fldOffset=0x8)" P-INDEP
 ;  V141 tmp125      [V141,T47] (  2,  1   )   byref  ->  rax         single-def "field V44._reference (fldOffset=0x0)" P-INDEP
 ;  V142 tmp126      [V142,T58] (  2,  1   )     int  ->  r12         "field V44._length (fldOffset=0x8)" P-INDEP
 ;  V143 tmp127      [V143,T08] (  4,  2   )   byref  ->  r15         single-def "field V47._reference (fldOffset=0x0)" P-INDEP
 ;  V144 tmp128      [V144,T10] (  4,  2   )     int  ->  r14         "field V47._length (fldOffset=0x8)" P-INDEP
 ;  V145 tmp129      [V145,T09] (  4,  2   )   byref  ->  [rbp-0x78]  spill-single-def "field V52._reference (fldOffset=0x0)" P-INDEP
 ;  V146 tmp130      [V146,T11] (  3,  1.50)     int  ->  r12         "field V52._length (fldOffset=0x8)" P-INDEP
 ;* V147 tmp131      [V147    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V56._reference (fldOffset=0x0)" P-INDEP
 ;* V148 tmp132      [V148    ] (  0,  0   )     int  ->  zero-ref    "field V56._length (fldOffset=0x8)" P-INDEP
 ;* V149 tmp133      [V149,T61] (  0,  0   )   byref  ->  zero-ref    single-def "field V57._reference (fldOffset=0x0)" P-INDEP
 ;* V150 tmp134      [V150,T70] (  0,  0   )     int  ->  zero-ref    "field V57._length (fldOffset=0x8)" P-INDEP
 ;* V151 tmp135      [V151,T62] (  0,  0   )   byref  ->  zero-ref    single-def "field V58._reference (fldOffset=0x0)" P-INDEP
 ;* V152 tmp136      [V152,T71] (  0,  0   )     int  ->  zero-ref    "field V58._length (fldOffset=0x8)" P-INDEP
 ;* V153 tmp137      [V153    ] (  0,  0   )   byref  ->  zero-ref    "field V59._reference (fldOffset=0x0)" P-INDEP
 ;* V154 tmp138      [V154    ] (  0,  0   )     int  ->  zero-ref    "field V59._length (fldOffset=0x8)" P-INDEP
 ;* V155 tmp139      [V155,T63] (  0,  0   )   byref  ->  zero-ref    single-def "field V62._reference (fldOffset=0x0)" P-INDEP
 ;* V156 tmp140      [V156    ] (  0,  0   )     int  ->  zero-ref    "field V62._length (fldOffset=0x8)" P-INDEP
 ;* V157 tmp141      [V157,T64] (  0,  0   )   byref  ->  zero-ref    single-def "field V65._reference (fldOffset=0x0)" P-INDEP
 ;* V158 tmp142      [V158,T72] (  0,  0   )     int  ->  zero-ref    "field V65._length (fldOffset=0x8)" P-INDEP
 ;* V159 tmp143      [V159    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V66._reference (fldOffset=0x0)" P-INDEP
 ;* V160 tmp144      [V160    ] (  0,  0   )     int  ->  zero-ref    "field V66._length (fldOffset=0x8)" P-INDEP
 ;* V161 tmp145      [V161,T65] (  0,  0   )   byref  ->  zero-ref    single-def "field V70._reference (fldOffset=0x0)" P-INDEP
 ;* V162 tmp146      [V162    ] (  0,  0   )     int  ->  zero-ref    "field V70._length (fldOffset=0x8)" P-INDEP
 ;* V163 tmp147      [V163,T66] (  0,  0   )   byref  ->  zero-ref    single-def "field V73._reference (fldOffset=0x0)" P-INDEP
 ;* V164 tmp148      [V164,T73] (  0,  0   )     int  ->  zero-ref    "field V73._length (fldOffset=0x8)" P-INDEP
 ;* V165 tmp149      [V165    ] (  0,  0   )   byref  ->  zero-ref    "field V75._reference (fldOffset=0x0)" P-INDEP
 ;* V166 tmp150      [V166    ] (  0,  0   )     int  ->  zero-ref    "field V75._length (fldOffset=0x8)" P-INDEP
 ;* V167 tmp151      [V167    ] (  0,  0   )   byref  ->  zero-ref    "field V76._reference (fldOffset=0x0)" P-INDEP
 ;* V168 tmp152      [V168    ] (  0,  0   )     int  ->  zero-ref    "field V76._length (fldOffset=0x8)" P-INDEP
 ;* V169 tmp153      [V169    ] (  0,  0   )   byref  ->  zero-ref    "field V77._reference (fldOffset=0x0)" P-INDEP
 ;* V170 tmp154      [V170    ] (  0,  0   )     int  ->  zero-ref    "field V77._length (fldOffset=0x8)" P-INDEP
 ;* V171 tmp155      [V171    ] (  0,  0   )   byref  ->  zero-ref    "field V78._reference (fldOffset=0x0)" P-INDEP
 ;* V172 tmp156      [V172    ] (  0,  0   )     int  ->  zero-ref    "field V78._length (fldOffset=0x8)" P-INDEP
 ;* V173 tmp157      [V173    ] (  0,  0   )   byref  ->  zero-ref    "field V81._reference (fldOffset=0x0)" P-INDEP
 ;* V174 tmp158      [V174    ] (  0,  0   )     int  ->  zero-ref    "field V81._length (fldOffset=0x8)" P-INDEP
 ;* V175 tmp159      [V175    ] (  0,  0   )   byref  ->  zero-ref    "field V84._reference (fldOffset=0x0)" P-INDEP
 ;* V176 tmp160      [V176    ] (  0,  0   )     int  ->  zero-ref    "field V84._length (fldOffset=0x8)" P-INDEP
 ;* V177 tmp161      [V177    ] (  0,  0   )   byref  ->  zero-ref    "field V85._reference (fldOffset=0x0)" P-INDEP
 ;* V178 tmp162      [V178    ] (  0,  0   )     int  ->  zero-ref    "field V85._length (fldOffset=0x8)" P-INDEP
 ;* V179 tmp163      [V179    ] (  0,  0   )   byref  ->  zero-ref    "field V89._reference (fldOffset=0x0)" P-INDEP
 ;* V180 tmp164      [V180    ] (  0,  0   )     int  ->  zero-ref    "field V89._length (fldOffset=0x8)" P-INDEP
 ;* V181 tmp165      [V181    ] (  0,  0   )   byref  ->  zero-ref    "field V92._reference (fldOffset=0x0)" P-INDEP
 ;* V182 tmp166      [V182    ] (  0,  0   )     int  ->  zero-ref    "field V92._length (fldOffset=0x8)" P-INDEP
 ;* V183 tmp167      [V183    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V94._reference (fldOffset=0x0)" P-INDEP
 ;* V184 tmp168      [V184    ] (  0,  0   )     int  ->  zero-ref    "field V94._length (fldOffset=0x8)" P-INDEP
 ;* V185 tmp169      [V185    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V95._reference (fldOffset=0x0)" P-INDEP
 ;* V186 tmp170      [V186    ] (  0,  0   )     int  ->  zero-ref    "field V95._length (fldOffset=0x8)" P-INDEP
 ;  V187 tmp171      [V187,T48] (  2,  1   )   byref  ->  r15         single-def "field V102._reference (fldOffset=0x0)" P-INDEP
 ;  V188 tmp172      [V188,T38] (  3,  1.50)     int  ->  rsi         "field V102._length (fldOffset=0x8)" P-INDEP
 ;  V189 tmp173      [V189,T49] (  2,  1   )   byref  ->  r15         single-def "field V104._reference (fldOffset=0x0)" P-INDEP
 ;  V190 tmp174      [V190,T59] (  2,  1   )     int  ->  rsi         "field V104._length (fldOffset=0x8)" P-INDEP
 ;* V191 tmp175      [V191    ] (  0,  0   )   byref  ->  zero-ref    "field V105._reference (fldOffset=0x0)" P-INDEP
 ;* V192 tmp176      [V192    ] (  0,  0   )     int  ->  zero-ref    "field V105._length (fldOffset=0x8)" P-INDEP
 ;* V193 tmp177      [V193    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V107._reference (fldOffset=0x0)" P-INDEP
 ;* V194 tmp178      [V194    ] (  0,  0   )     int  ->  zero-ref    "field V107._length (fldOffset=0x8)" P-INDEP
-;  V195 tmp179      [V195,T26] (  2,  2   )    long  ->  r13         "Cast away GC"
-;  V196 tmp180      [V196,T27] (  2,  2   )    long  ->  r15         "Cast away GC"
-;  V197 tmp181      [V197,T28] (  2,  2   )    long  ->  rcx         "Cast away GC"
-;  V198 tmp182      [V198,T29] (  2,  2   )    long  ->  r15         "argument with side effect"
-;  V199 tmp183      [V199,T30] (  2,  2   )     int  ->  rdx         "argument with side effect"
-;  V200 tmp184      [V200,T31] (  2,  2   )    long  ->  rcx         "argument with side effect"
-;  V201 tmp185      [V201,T32] (  2,  2   )    long  ->  rcx         "Cast away GC"
-;  V202 cse0        [V202,T15] (  4,  2   )    long  ->  [rbp-0x60]  spill-single-def "CSE #04: conservative"
+;  V195 tmp179      [V195,T27] (  2,  2   )    long  ->  r13         "Cast away GC"
+;  V196 tmp180      [V196,T28] (  2,  2   )    long  ->  r15         "Cast away GC"
+;  V197 tmp181      [V197,T29] (  2,  2   )    long  ->  rcx         "Cast away GC"
+;  V198 tmp182      [V198,T30] (  2,  2   )    long  ->  r15         "argument with side effect"
+;  V199 tmp183      [V199,T31] (  2,  2   )     int  ->  rdx         "argument with side effect"
+;  V200 tmp184      [V200,T32] (  2,  2   )    long  ->  rcx         "argument with side effect"
+;  V201 tmp185      [V201,T33] (  2,  2   )    long  ->  rcx         "Cast away GC"
+;  V202 cse0        [V202,T17] (  4,  2   )    long  ->  [rbp-0x60]  spill-single-def "CSE #04: conservative"
 ;  V203 cse1        [V203,T39] (  3,  1.50)    long  ->  rsi         "CSE #06: conservative"
 ;  V204 cse2        [V204,T04] ( 11,  6.50)     int  ->  r14         "CSE #01: aggressive"
 ;
 ; Lcl frame size = 88
 
 G_M28728_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 88
        lea      rbp, [rsp+0x80]
        vxorps   xmm8, xmm8, xmm8
        vmovdqu  ymmword ptr [rbp-0x50], ymm8
        xor      eax, eax
        mov      qword ptr [rbp-0x30], rax
        mov      rbx, rdi
        mov      r15, rsi
 						;; size=44 bbWeight=1 PerfScore 10.83
 G_M28728_IG02:
        mov      r14d, dword ptr [r15+0x08]
        test     r14d, r14d
        je       G_M28728_IG24
 						;; size=13 bbWeight=1 PerfScore 3.25
 G_M28728_IG03:
        lea      rdi, bword ptr [r15+0x0C]
        mov      bword ptr [rbp-0x30], rdi
        mov      r13, bword ptr [rbp-0x30]
        xor      r12d, r12d
        cmp      byte  ptr [rbx+0x29], 0
        jne      SHORT G_M28728_IG04
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.TextInfo:PopulateIsAsciiCasingSameAsInvariant():this
        call     [rax]System.Globalization.TextInfo:PopulateIsAsciiCasingSameAsInvariant():this
 						;; size=36 bbWeight=0.50 PerfScore 5.12
 G_M28728_IG04:
        cmp      byte  ptr [rbx+0x29], 2
        jne      SHORT G_M28728_IG09
        cmp      r14d, 2
        jl       SHORT G_M28728_IG08
        lea      edi, [r14-0x02]
        align    [0 bytes for IG05]
 						;; size=16 bbWeight=0.50 PerfScore 2.88
 G_M28728_IG05:
        mov      eax, dword ptr [r13+2*r12]
        test     eax, 0xD1FFAB1E
        jne      SHORT G_M28728_IG09
 						;; size=12 bbWeight=4 PerfScore 13.00
 G_M28728_IG06:
        lea      ecx, [rax+D1FFAB1EH]
        add      eax, 0xD1FFAB1E
        xor      eax, ecx
        test     eax, 0xD1FFAB1E
        jne      G_M28728_IG15
 						;; size=24 bbWeight=2 PerfScore 4.50
 G_M28728_IG07:
        add      r12, 2
        cmp      r12, rdi
        jbe      SHORT G_M28728_IG05
 						;; size=9 bbWeight=4 PerfScore 6.00
 G_M28728_IG08:
        test     r14b, 1
        je       G_M28728_IG22
        movzx    rax, word  ptr [r13+2*r12]
        cmp      eax, 127
        jbe      G_M28728_IG14
 						;; size=25 bbWeight=0.50 PerfScore 2.25
 G_M28728_IG09:
        mov      edi, r14d
        call     System.String:FastAllocateString(int):System.String
        mov      gword ptr [rbp-0x68], rax
        test     r12, r12
        je       SHORT G_M28728_IG10
        lea      rdi, bword ptr [rax+0x0C]
        mov      edx, dword ptr [rax+0x08]
        mov      esi, r12d
        cmp      r14d, esi
-       jb       G_M28728_IG27
+       jb       G_M28728_IG28
        add      r15, 12
        cmp      esi, edx
-       ja       G_M28728_IG26
+       jg       G_M28728_IG26
        mov      edx, esi
        add      rdx, rdx
        mov      rsi, r15
        mov      rcx, 0xD1FFAB1E      ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
        call     [rcx]System.SpanHelpers:Memmove(byref,byref,ulong)
        mov      rax, gword ptr [rbp-0x68]
 						;; size=72 bbWeight=0.50 PerfScore 7.00
 G_M28728_IG10:
        test     rax, rax
        je       SHORT G_M28728_IG11
        lea      r8, bword ptr [rax+0x0C]
        mov      bword ptr [rbp-0x38], r8
        mov      rcx, bword ptr [rbp-0x38]
        jmp      SHORT G_M28728_IG12
 						;; size=19 bbWeight=0.50 PerfScore 2.88
 G_M28728_IG11:
        xor      ecx, ecx
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M28728_IG12:
        mov      r8d, dword ptr [rax+0x08]
        sub      r8d, r12d
        lea      rsi, [r13+2*r12]
        mov      edx, r14d
        sub      edx, r12d
        lea      rcx, [rcx+2*r12]
        mov      rdi, rbx
        xor      r9d, r9d
        mov      r10, 0xD1FFAB1E      ; code for System.Globalization.TextInfo:IcuChangeCase(ulong,int,ulong,int,ubyte):this
        call     [r10]System.Globalization.TextInfo:IcuChangeCase(ulong,int,ulong,int,ubyte):this
        xor      eax, eax
        mov      bword ptr [rbp-0x38], rax
        mov      rax, gword ptr [rbp-0x68]
 						;; size=51 bbWeight=0.50 PerfScore 5.62
 G_M28728_IG13:
        add      rsp, 88
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M28728_IG14:
        add      eax, -65
        cmp      eax, 25
        ja       G_M28728_IG22
 						;; size=12 bbWeight=0.50 PerfScore 0.75
 G_M28728_IG15:
        mov      edi, r14d
        call     System.String:FastAllocateString(int):System.String
        mov      r13, rax
        lea      rax, bword ptr [r13+0x0C]
        mov      ecx, dword ptr [r13+0x08]
        mov      bword ptr [rbp-0x70], rax
        mov      dword ptr [rbp-0x54], ecx
        mov      edx, r12d
        cmp      r14d, edx
-       jb       G_M28728_IG27
+       jb       G_M28728_IG28
        lea      rsi, bword ptr [r15+0x0C]
        cmp      edx, ecx
-       ja       G_M28728_IG26
+       jg       G_M28728_IG26
        mov      r8d, edx
        add      r8, r8
        mov      qword ptr [rbp-0x60], r8
        mov      rdx, r8
        mov      rdi, rax
        mov      r9, 0xD1FFAB1E      ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
        call     [r9]System.SpanHelpers:Memmove(byref,byref,ulong)
        mov      edi, r12d
        mov      rax, qword ptr [rbp-0x60]
        lea      r15, bword ptr [r15+rax+0x0C]
        sub      r14d, edi
        mov      edi, r12d
-       add      rax, bword ptr [rbp-0x70]
        mov      r12d, dword ptr [rbp-0x54]
+       cmp      edi, r12d
+       ja       G_M28728_IG27
+       add      rax, bword ptr [rbp-0x70]
        sub      r12d, edi
        mov      bword ptr [rbp-0x78], rax
        test     r14d, r14d
        je       G_M28728_IG19
        mov      rcx, bword ptr [rbp-0x78]
        xor      edi, edi
        mov      dword ptr [rbp-0x40], edi
        cmp      byte  ptr [rbx+0x29], 0
        jne      SHORT G_M28728_IG16
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.TextInfo:PopulateIsAsciiCasingSameAsInvariant():this
        call     [rax]System.Globalization.TextInfo:PopulateIsAsciiCasingSameAsInvariant():this
        mov      rcx, bword ptr [rbp-0x78]
-						;; size=155 bbWeight=0.50 PerfScore 16.75
+						;; size=164 bbWeight=0.50 PerfScore 17.38
 G_M28728_IG16:
        cmp      byte  ptr [rbx+0x29], 2
        jne      SHORT G_M28728_IG17
        mov      rdi, r15
        mov      esi, r14d
        mov      rdx, rcx
        mov      ecx, r12d
        lea      r8, [rbp-0x40]
        mov      rax, 0xD1FFAB1E      ; code for System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int
        call     [rax]System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int
        cmp      eax, 3
        mov      rcx, bword ptr [rbp-0x78]
        jne      SHORT G_M28728_IG19
 						;; size=43 bbWeight=0.50 PerfScore 5.50
 G_M28728_IG17:
        mov      bword ptr [rbp-0x48], r15
        mov      bword ptr [rbp-0x50], rcx
        movsxd   rsi, dword ptr [rbp-0x40]
        add      rsi, rsi
        add      r15, rsi
        mov      edx, r14d
        sub      edx, dword ptr [rbp-0x40]
        add      rcx, rsi
        mov      rsi, r15
        mov      r8d, r12d
        sub      r8d, dword ptr [rbp-0x40]
        mov      rdi, rbx
        xor      r9d, r9d
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.TextInfo:IcuChangeCase(ulong,int,ulong,int,ubyte):this
        call     [rax]System.Globalization.TextInfo:IcuChangeCase(ulong,int,ulong,int,ubyte):this
        xor      eax, eax
        mov      bword ptr [rbp-0x50], rax
 						;; size=61 bbWeight=0.50 PerfScore 7.75
 G_M28728_IG18:
        mov      bword ptr [rbp-0x48], rax
 						;; size=4 bbWeight=0.50 PerfScore 0.50
 G_M28728_IG19:
        xor      rax, rax
        mov      bword ptr [rbp-0x48], rax
 						;; size=6 bbWeight=0.50 PerfScore 0.62
 G_M28728_IG20:
        mov      bword ptr [rbp-0x50], rax
        mov      rax, r13
 						;; size=7 bbWeight=0.50 PerfScore 0.62
 G_M28728_IG21:
        add      rsp, 88
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M28728_IG22:
        mov      rax, r15
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M28728_IG23:
        add      rsp, 88
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M28728_IG24:
        mov      rax, 0xD1FFAB1E      ; ''
 						;; size=10 bbWeight=0.50 PerfScore 0.12
 G_M28728_IG25:
        add      rsp, 88
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M28728_IG26:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
        call     [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 G_M28728_IG27:
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
+       int3     
+						;; size=13 bbWeight=0 PerfScore 0.00
+G_M28728_IG28:
        mov      edi, 33
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
        int3     
 						;; size=18 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 715, prolog size 44, PerfScore 104.71, instruction count 205, allocated bytes for code 715 (MethodHash=5db18fc7) for method System.Globalization.TextInfo:ChangeCaseCommon[double](System.String):System.String:this (FullOpts)
+; Total bytes of code 737, prolog size 44, PerfScore 105.33, instruction count 210, allocated bytes for code 737 (MethodHash=5db18fc7) for method System.Globalization.TextInfo:ChangeCaseCommon[double](System.String):System.String:this (FullOpts)

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

@MihuBot
Copy link
Owner Author

MihuBot commented Jul 28, 2024

Top method improvements

-196 (-5.57 % of base) - System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[]
 ; Assembly listing for method System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[] (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; 47 single block inlinees; 34 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T61] (  3,  3   )   byref  ->  rdi         single-def
 ;* V01 arg1         [V01    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
 ;  V02 loc0         [V02,T26] (  8, 11.25)     ref  ->  r14         class-hnd single-def <System.Reflection.ParameterInfo[]>
 ;  V03 loc1         [V03,T06] ( 47, 32.53)     ref  ->  r13         class-hnd exact single-def <System.Object[]>
 ;  V04 loc2         [V04,T09] ( 39, 19.56)     int  ->  r12        
 ;  V05 loc3         [V05,T03] ( 42, 50   )     ref  ->  [rbp-0x48]  class-hnd <System.Type>
 ;* V06 loc4         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Type>
 ;  V07 loc5         [V07,T10] ( 14, 14   )     int  ->  rdx        
 ;* V08 loc6         [V08    ] (  0,  0   )  struct (16) zero-ref    multireg-arg <System.ReadOnlySpan`1[ushort]>
 ;  V09 loc7         [V09,T02] ( 17, 84.16)     int  ->  rdi        
 ;# V10 OutArgs      [V10    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V11 tmp1         [V11,T08] ( 20, 20   )     ref  ->  rax        
 ;  V12 tmp2         [V12,T11] (  6, 12   )     ref  ->  rax         class-hnd exact "Single-def Box Helper" <System.Int32>
 ;  V13 tmp3         [V13,T12] (  6, 12   )     ref  ->  rax         class-hnd exact "Single-def Box Helper" <System.UInt32>
 ;  V14 tmp4         [V14,T13] (  6, 12   )     ref  ->  rax         class-hnd exact "Single-def Box Helper" <System.Int64>
 ;  V15 tmp5         [V15,T14] (  6, 12   )     ref  ->  rax         class-hnd exact "Single-def Box Helper" <System.UInt64>
 ;  V16 tmp6         [V16,T15] (  6, 12   )     ref  ->  rax         class-hnd exact "Single-def Box Helper" <System.Byte>
 ;  V17 tmp7         [V17,T16] (  6, 12   )     ref  ->  rax         class-hnd exact "Single-def Box Helper" <System.SByte>
 ;  V18 tmp8         [V18,T17] (  6, 12   )     ref  ->  rax         class-hnd exact "Single-def Box Helper" <System.Int16>
 ;  V19 tmp9         [V19,T18] (  6, 12   )     ref  ->  rax         class-hnd exact "Single-def Box Helper" <System.UInt16>
 ;* V20 tmp10        [V20    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
 ;* V21 tmp11        [V21    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V22 tmp12        [V22    ] (  0,  0   )     int  ->  zero-ref   
 ;  V23 tmp13        [V23,T19] (  6, 12   )     ref  ->  rax         class-hnd exact "Single-def Box Helper" <System.Char>
 ;  V24 tmp14        [V24,T44] (  4,  8   )  struct (16) [rbp-0x38]  ld-addr-op "NewObj constructor temp" <System.Guid>
 ;* V25 tmp15        [V25    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
 ;  V26 tmp16        [V26,T20] (  6, 12   )     ref  ->  rax         class-hnd exact "Single-def Box Helper" <System.Guid>
 ;  V27 tmp17        [V27,T21] (  6, 12   )     ref  ->  rax         class-hnd exact "Single-def Box Helper" <System.Boolean>
 ;  V28 tmp18        [V28,T22] (  6, 12   )     ref  ->  rax         class-hnd exact "Single-def Box Helper" <System.Double>
 ;  V29 tmp19        [V29,T23] (  6, 12   )     ref  ->  rax         class-hnd exact "Single-def Box Helper" <System.Single>
 ;  V30 tmp20        [V30,T24] (  6, 12   )     ref  ->  rax         class-hnd exact "Single-def Box Helper" <System.IntPtr>
 ;* V31 tmp21        [V31    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V32 tmp22        [V32    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V33 tmp23        [V33    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V34 tmp24        [V34    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V35 tmp25        [V35,T28] (  4,  8   )   byref  ->  r15         "Inlining Arg"
 ;  V36 tmp26        [V36,T45] (  4,  8   )     int  ->  rbx         "Inlining Arg"
 ;* V37 tmp27        [V37    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V38 tmp28        [V38    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V39 tmp29        [V39    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V40 tmp30        [V40    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V41 tmp31        [V41,T29] (  4,  8   )   byref  ->  r15         "Inlining Arg"
 ;  V42 tmp32        [V42,T46] (  4,  8   )     int  ->  rbx         "Inlining Arg"
 ;* V43 tmp33        [V43    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V44 tmp34        [V44    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V45 tmp35        [V45    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V46 tmp36        [V46    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V47 tmp37        [V47,T30] (  4,  8   )   byref  ->  r15         "Inlining Arg"
 ;  V48 tmp38        [V48,T47] (  4,  8   )     int  ->  rbx         "Inlining Arg"
 ;* V49 tmp39        [V49    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V50 tmp40        [V50    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V51 tmp41        [V51    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V52 tmp42        [V52    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V53 tmp43        [V53,T31] (  4,  8   )   byref  ->  r15         "Inlining Arg"
 ;  V54 tmp44        [V54,T48] (  4,  8   )     int  ->  rbx         "Inlining Arg"
 ;* V55 tmp45        [V55    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V56 tmp46        [V56    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V57 tmp47        [V57    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V58 tmp48        [V58    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V59 tmp49        [V59,T32] (  4,  8   )   byref  ->  r15         "Inlining Arg"
 ;  V60 tmp50        [V60,T49] (  4,  8   )     int  ->  rbx         "Inlining Arg"
 ;* V61 tmp51        [V61    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V62 tmp52        [V62    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V63 tmp53        [V63    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V64 tmp54        [V64,T33] (  4,  8   )   byref  ->  r15         "Inlining Arg"
 ;  V65 tmp55        [V65,T50] (  4,  8   )     int  ->  rbx         "Inlining Arg"
 ;* V66 tmp56        [V66    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V67 tmp57        [V67    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V68 tmp58        [V68    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V69 tmp59        [V69,T34] (  4,  8   )   byref  ->  r15         "Inlining Arg"
 ;  V70 tmp60        [V70,T51] (  4,  8   )     int  ->  rbx         "Inlining Arg"
 ;* V71 tmp61        [V71    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V72 tmp62        [V72    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V73 tmp63        [V73    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V74 tmp64        [V74    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V75 tmp65        [V75,T35] (  4,  8   )   byref  ->  r15         "Inlining Arg"
 ;  V76 tmp66        [V76,T52] (  4,  8   )     int  ->  rbx         "Inlining Arg"
 ;* V77 tmp67        [V77    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V78 tmp68        [V78    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V79 tmp69        [V79    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V80 tmp70        [V80    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V81 tmp71        [V81,T36] (  4,  8   )   byref  ->  r15         "Inlining Arg"
 ;  V82 tmp72        [V82,T53] (  4,  8   )     int  ->  rbx         "Inlining Arg"
 ;* V83 tmp73        [V83    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V84 tmp74        [V84    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V85 tmp75        [V85    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V86 tmp76        [V86    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V87 tmp77        [V87,T37] (  4,  8   )   byref  ->  r15         "Inlining Arg"
 ;  V88 tmp78        [V88,T54] (  4,  8   )     int  ->  rbx         "Inlining Arg"
 ;* V89 tmp79        [V89    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V90 tmp80        [V90    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V91 tmp81        [V91    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V92 tmp82        [V92    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V93 tmp83        [V93,T38] (  4,  8   )   byref  ->  r15         "Inlining Arg"
 ;  V94 tmp84        [V94,T55] (  4,  8   )     int  ->  rbx         "Inlining Arg"
 ;* V95 tmp85        [V95    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V96 tmp86        [V96    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V97 tmp87        [V97    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V98 tmp88        [V98    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V99 tmp89        [V99,T39] (  4,  8   )   byref  ->  r15         "Inlining Arg"
 ;  V100 tmp90       [V100,T56] (  4,  8   )     int  ->  rbx         "Inlining Arg"
 ;* V101 tmp91       [V101    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V102 tmp92       [V102    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V103 tmp93       [V103    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V104 tmp94       [V104    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V105 tmp95       [V105    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V106 tmp96       [V106    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V107 tmp97       [V107,T40] (  4,  8   )   byref  ->  r15         "Inlining Arg"
 ;  V108 tmp98       [V108,T57] (  4,  8   )     int  ->  rbx         "Inlining Arg"
 ;* V109 tmp99       [V109    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V110 tmp100      [V110    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V111 tmp101      [V111    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V112 tmp102      [V112    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V113 tmp103      [V113,T41] (  4,  8   )   byref  ->  r15         "Inlining Arg"
 ;  V114 tmp104      [V114,T58] (  4,  8   )     int  ->  rbx         "Inlining Arg"
 ;* V115 tmp105      [V115    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V116 tmp106      [V116    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V117 tmp107      [V117    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V118 tmp108      [V118    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V119 tmp109      [V119,T79] (  4,  4   )     int  ->  rbx         "Inline stloc first use temp"
 ;* V120 tmp110      [V120    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V121 tmp111      [V121    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V122 tmp112      [V122    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;  V123 tmp113      [V123,T25] (  6, 12   )     int  ->  rsi         "Inlining Arg"
 ;* V124 tmp114      [V124    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V125 tmp115      [V125    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V126 tmp116      [V126    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V127 tmp117      [V127    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V128 tmp118      [V128    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V129 tmp119      [V129    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V130 tmp120      [V130,T80] (  4,  4   )     int  ->  rsi         "Inline stloc first use temp"
 ;* V131 tmp121      [V131    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V132 tmp122      [V132    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V133 tmp123      [V133    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V134 tmp124      [V134    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V135 tmp125      [V135,T42] (  4,  8   )   byref  ->  r15         "Inlining Arg"
 ;  V136 tmp126      [V136,T59] (  4,  8   )     int  ->  rbx         "Inlining Arg"
 ;  V137 tmp127      [V137,T01] ( 97,117   )   byref  ->  r15         "field V01._reference (fldOffset=0x0)" P-INDEP
-;  V138 tmp128      [V138,T00] (125,161   )     int  ->  rbx         "field V01._length (fldOffset=0x8)" P-INDEP
+;  V138 tmp128      [V138,T00] (103,139   )     int  ->  rbx         "field V01._length (fldOffset=0x8)" P-INDEP
 ;  V139 tmp129      [V139,T27] (  8,  8   )   byref  ->  rdi         "field V08._reference (fldOffset=0x0)" P-INDEP
 ;  V140 tmp130      [V140,T60] (  6,  6   )     int  ->  rsi         "field V08._length (fldOffset=0x8)" P-INDEP
 ;* V141 tmp131      [V141    ] (  0,  0   )   byref  ->  zero-ref    "field V20._reference (fldOffset=0x0)" P-INDEP
 ;* V142 tmp132      [V142    ] (  0,  0   )     int  ->  zero-ref    "field V20._length (fldOffset=0x8)" P-INDEP
 ;* V143 tmp133      [V143    ] (  0,  0   )   byref  ->  zero-ref    "field V25._reference (fldOffset=0x0)" P-INDEP
 ;* V144 tmp134      [V144    ] (  0,  0   )     int  ->  zero-ref    "field V25._length (fldOffset=0x8)" P-INDEP
 ;* V145 tmp135      [V145    ] (  0,  0   )   byref  ->  zero-ref    "field V31._reference (fldOffset=0x0)" P-INDEP
 ;* V146 tmp136      [V146    ] (  0,  0   )     int  ->  zero-ref    "field V31._length (fldOffset=0x8)" P-INDEP
 ;* V147 tmp137      [V147    ] (  0,  0   )   byref  ->  zero-ref    "field V32._reference (fldOffset=0x0)" P-INDEP
 ;* V148 tmp138      [V148    ] (  0,  0   )     int  ->  zero-ref    "field V32._length (fldOffset=0x8)" P-INDEP
 ;* V149 tmp139      [V149    ] (  0,  0   )   byref  ->  zero-ref    "field V33._reference (fldOffset=0x0)" P-INDEP
 ;* V150 tmp140      [V150    ] (  0,  0   )     int  ->  zero-ref    "field V33._length (fldOffset=0x8)" P-INDEP
 ;  V151 tmp141      [V151,T62] (  4,  4   )   byref  ->  r15         "field V34._reference (fldOffset=0x0)" P-INDEP
 ;  V152 tmp142      [V152,T81] (  4,  4   )     int  ->  rbx         "field V34._length (fldOffset=0x8)" P-INDEP
 ;* V153 tmp143      [V153    ] (  0,  0   )   byref  ->  zero-ref    "field V37._reference (fldOffset=0x0)" P-INDEP
 ;* V154 tmp144      [V154    ] (  0,  0   )     int  ->  zero-ref    "field V37._length (fldOffset=0x8)" P-INDEP
 ;* V155 tmp145      [V155    ] (  0,  0   )   byref  ->  zero-ref    "field V38._reference (fldOffset=0x0)" P-INDEP
 ;* V156 tmp146      [V156    ] (  0,  0   )     int  ->  zero-ref    "field V38._length (fldOffset=0x8)" P-INDEP
 ;* V157 tmp147      [V157    ] (  0,  0   )   byref  ->  zero-ref    "field V39._reference (fldOffset=0x0)" P-INDEP
 ;* V158 tmp148      [V158    ] (  0,  0   )     int  ->  zero-ref    "field V39._length (fldOffset=0x8)" P-INDEP
 ;  V159 tmp149      [V159,T63] (  4,  4   )   byref  ->  r15         "field V40._reference (fldOffset=0x0)" P-INDEP
 ;  V160 tmp150      [V160,T82] (  4,  4   )     int  ->  rbx         "field V40._length (fldOffset=0x8)" P-INDEP
 ;* V161 tmp151      [V161    ] (  0,  0   )   byref  ->  zero-ref    "field V43._reference (fldOffset=0x0)" P-INDEP
 ;* V162 tmp152      [V162    ] (  0,  0   )     int  ->  zero-ref    "field V43._length (fldOffset=0x8)" P-INDEP
 ;* V163 tmp153      [V163    ] (  0,  0   )   byref  ->  zero-ref    "field V44._reference (fldOffset=0x0)" P-INDEP
 ;* V164 tmp154      [V164    ] (  0,  0   )     int  ->  zero-ref    "field V44._length (fldOffset=0x8)" P-INDEP
 ;* V165 tmp155      [V165    ] (  0,  0   )   byref  ->  zero-ref    "field V45._reference (fldOffset=0x0)" P-INDEP
 ;* V166 tmp156      [V166    ] (  0,  0   )     int  ->  zero-ref    "field V45._length (fldOffset=0x8)" P-INDEP
 ;  V167 tmp157      [V167,T64] (  4,  4   )   byref  ->  r15         "field V46._reference (fldOffset=0x0)" P-INDEP
 ;  V168 tmp158      [V168,T83] (  4,  4   )     int  ->  rbx         "field V46._length (fldOffset=0x8)" P-INDEP
 ;* V169 tmp159      [V169    ] (  0,  0   )   byref  ->  zero-ref    "field V49._reference (fldOffset=0x0)" P-INDEP
 ;* V170 tmp160      [V170    ] (  0,  0   )     int  ->  zero-ref    "field V49._length (fldOffset=0x8)" P-INDEP
 ;* V171 tmp161      [V171    ] (  0,  0   )   byref  ->  zero-ref    "field V50._reference (fldOffset=0x0)" P-INDEP
 ;* V172 tmp162      [V172    ] (  0,  0   )     int  ->  zero-ref    "field V50._length (fldOffset=0x8)" P-INDEP
 ;* V173 tmp163      [V173    ] (  0,  0   )   byref  ->  zero-ref    "field V51._reference (fldOffset=0x0)" P-INDEP
 ;* V174 tmp164      [V174    ] (  0,  0   )     int  ->  zero-ref    "field V51._length (fldOffset=0x8)" P-INDEP
 ;  V175 tmp165      [V175,T65] (  4,  4   )   byref  ->  r15         "field V52._reference (fldOffset=0x0)" P-INDEP
 ;  V176 tmp166      [V176,T84] (  4,  4   )     int  ->  rbx         "field V52._length (fldOffset=0x8)" P-INDEP
 ;* V177 tmp167      [V177    ] (  0,  0   )   byref  ->  zero-ref    "field V55._reference (fldOffset=0x0)" P-INDEP
 ;* V178 tmp168      [V178    ] (  0,  0   )     int  ->  zero-ref    "field V55._length (fldOffset=0x8)" P-INDEP
 ;* V179 tmp169      [V179    ] (  0,  0   )   byref  ->  zero-ref    "field V56._reference (fldOffset=0x0)" P-INDEP
 ;* V180 tmp170      [V180    ] (  0,  0   )     int  ->  zero-ref    "field V56._length (fldOffset=0x8)" P-INDEP
 ;* V181 tmp171      [V181    ] (  0,  0   )   byref  ->  zero-ref    "field V57._reference (fldOffset=0x0)" P-INDEP
 ;* V182 tmp172      [V182    ] (  0,  0   )     int  ->  zero-ref    "field V57._length (fldOffset=0x8)" P-INDEP
 ;  V183 tmp173      [V183,T66] (  4,  4   )   byref  ->  r15         "field V58._reference (fldOffset=0x0)" P-INDEP
 ;  V184 tmp174      [V184,T85] (  4,  4   )     int  ->  rbx         "field V58._length (fldOffset=0x8)" P-INDEP
 ;* V185 tmp175      [V185    ] (  0,  0   )   byref  ->  zero-ref    "field V61._reference (fldOffset=0x0)" P-INDEP
 ;* V186 tmp176      [V186    ] (  0,  0   )     int  ->  zero-ref    "field V61._length (fldOffset=0x8)" P-INDEP
 ;* V187 tmp177      [V187    ] (  0,  0   )   byref  ->  zero-ref    "field V62._reference (fldOffset=0x0)" P-INDEP
 ;* V188 tmp178      [V188    ] (  0,  0   )     int  ->  zero-ref    "field V62._length (fldOffset=0x8)" P-INDEP
 ;  V189 tmp179      [V189,T67] (  4,  4   )   byref  ->  r15         "field V63._reference (fldOffset=0x0)" P-INDEP
 ;  V190 tmp180      [V190,T86] (  4,  4   )     int  ->  rbx         "field V63._length (fldOffset=0x8)" P-INDEP
 ;* V191 tmp181      [V191    ] (  0,  0   )   byref  ->  zero-ref    "field V66._reference (fldOffset=0x0)" P-INDEP
 ;* V192 tmp182      [V192    ] (  0,  0   )     int  ->  zero-ref    "field V66._length (fldOffset=0x8)" P-INDEP
 ;* V193 tmp183      [V193    ] (  0,  0   )   byref  ->  zero-ref    "field V67._reference (fldOffset=0x0)" P-INDEP
 ;* V194 tmp184      [V194    ] (  0,  0   )     int  ->  zero-ref    "field V67._length (fldOffset=0x8)" P-INDEP
 ;  V195 tmp185      [V195,T68] (  4,  4   )   byref  ->  r15         "field V68._reference (fldOffset=0x0)" P-INDEP
 ;  V196 tmp186      [V196,T87] (  4,  4   )     int  ->  rbx         "field V68._length (fldOffset=0x8)" P-INDEP
 ;* V197 tmp187      [V197    ] (  0,  0   )   byref  ->  zero-ref    "field V71._reference (fldOffset=0x0)" P-INDEP
 ;* V198 tmp188      [V198    ] (  0,  0   )     int  ->  zero-ref    "field V71._length (fldOffset=0x8)" P-INDEP
 ;* V199 tmp189      [V199    ] (  0,  0   )   byref  ->  zero-ref    "field V72._reference (fldOffset=0x0)" P-INDEP
 ;* V200 tmp190      [V200    ] (  0,  0   )     int  ->  zero-ref    "field V72._length (fldOffset=0x8)" P-INDEP
 ;* V201 tmp191      [V201    ] (  0,  0   )   byref  ->  zero-ref    "field V73._reference (fldOffset=0x0)" P-INDEP
 ;* V202 tmp192      [V202    ] (  0,  0   )     int  ->  zero-ref    "field V73._length (fldOffset=0x8)" P-INDEP
 ;  V203 tmp193      [V203,T69] (  4,  4   )   byref  ->  r15         "field V74._reference (fldOffset=0x0)" P-INDEP
 ;  V204 tmp194      [V204,T88] (  4,  4   )     int  ->  rbx         "field V74._length (fldOffset=0x8)" P-INDEP
 ;* V205 tmp195      [V205    ] (  0,  0   )   byref  ->  zero-ref    "field V77._reference (fldOffset=0x0)" P-INDEP
 ;* V206 tmp196      [V206    ] (  0,  0   )     int  ->  zero-ref    "field V77._length (fldOffset=0x8)" P-INDEP
 ;* V207 tmp197      [V207    ] (  0,  0   )   byref  ->  zero-ref    "field V78._reference (fldOffset=0x0)" P-INDEP
 ;* V208 tmp198      [V208    ] (  0,  0   )     int  ->  zero-ref    "field V78._length (fldOffset=0x8)" P-INDEP
 ;* V209 tmp199      [V209    ] (  0,  0   )   byref  ->  zero-ref    "field V79._reference (fldOffset=0x0)" P-INDEP
 ;* V210 tmp200      [V210    ] (  0,  0   )     int  ->  zero-ref    "field V79._length (fldOffset=0x8)" P-INDEP
 ;  V211 tmp201      [V211,T70] (  4,  4   )   byref  ->  r15         "field V80._reference (fldOffset=0x0)" P-INDEP
 ;  V212 tmp202      [V212,T89] (  4,  4   )     int  ->  rbx         "field V80._length (fldOffset=0x8)" P-INDEP
 ;* V213 tmp203      [V213    ] (  0,  0   )   byref  ->  zero-ref    "field V83._reference (fldOffset=0x0)" P-INDEP
 ;* V214 tmp204      [V214    ] (  0,  0   )     int  ->  zero-ref    "field V83._length (fldOffset=0x8)" P-INDEP
 ;* V215 tmp205      [V215    ] (  0,  0   )   byref  ->  zero-ref    "field V84._reference (fldOffset=0x0)" P-INDEP
 ;* V216 tmp206      [V216    ] (  0,  0   )     int  ->  zero-ref    "field V84._length (fldOffset=0x8)" P-INDEP
 ;* V217 tmp207      [V217    ] (  0,  0   )   byref  ->  zero-ref    "field V85._reference (fldOffset=0x0)" P-INDEP
 ;* V218 tmp208      [V218    ] (  0,  0   )     int  ->  zero-ref    "field V85._length (fldOffset=0x8)" P-INDEP
 ;  V219 tmp209      [V219,T71] (  4,  4   )   byref  ->  r15         "field V86._reference (fldOffset=0x0)" P-INDEP
 ;  V220 tmp210      [V220,T90] (  4,  4   )     int  ->  rbx         "field V86._length (fldOffset=0x8)" P-INDEP
 ;* V221 tmp211      [V221    ] (  0,  0   )   byref  ->  zero-ref    "field V89._reference (fldOffset=0x0)" P-INDEP
 ;* V222 tmp212      [V222    ] (  0,  0   )     int  ->  zero-ref    "field V89._length (fldOffset=0x8)" P-INDEP
 ;* V223 tmp213      [V223    ] (  0,  0   )   byref  ->  zero-ref    "field V90._reference (fldOffset=0x0)" P-INDEP
 ;* V224 tmp214      [V224    ] (  0,  0   )     int  ->  zero-ref    "field V90._length (fldOffset=0x8)" P-INDEP
 ;* V225 tmp215      [V225    ] (  0,  0   )   byref  ->  zero-ref    "field V91._reference (fldOffset=0x0)" P-INDEP
 ;* V226 tmp216      [V226    ] (  0,  0   )     int  ->  zero-ref    "field V91._length (fldOffset=0x8)" P-INDEP
 ;  V227 tmp217      [V227,T72] (  4,  4   )   byref  ->  r15         "field V92._reference (fldOffset=0x0)" P-INDEP
 ;  V228 tmp218      [V228,T91] (  4,  4   )     int  ->  rbx         "field V92._length (fldOffset=0x8)" P-INDEP
 ;* V229 tmp219      [V229    ] (  0,  0   )   byref  ->  zero-ref    "field V95._reference (fldOffset=0x0)" P-INDEP
 ;* V230 tmp220      [V230    ] (  0,  0   )     int  ->  zero-ref    "field V95._length (fldOffset=0x8)" P-INDEP
 ;* V231 tmp221      [V231    ] (  0,  0   )   byref  ->  zero-ref    "field V96._reference (fldOffset=0x0)" P-INDEP
 ;* V232 tmp222      [V232    ] (  0,  0   )     int  ->  zero-ref    "field V96._length (fldOffset=0x8)" P-INDEP
 ;* V233 tmp223      [V233    ] (  0,  0   )   byref  ->  zero-ref    "field V97._reference (fldOffset=0x0)" P-INDEP
 ;* V234 tmp224      [V234    ] (  0,  0   )     int  ->  zero-ref    "field V97._length (fldOffset=0x8)" P-INDEP
 ;  V235 tmp225      [V235,T73] (  4,  4   )   byref  ->  r15         "field V98._reference (fldOffset=0x0)" P-INDEP
 ;  V236 tmp226      [V236,T92] (  4,  4   )     int  ->  rbx         "field V98._length (fldOffset=0x8)" P-INDEP
 ;* V237 tmp227      [V237    ] (  0,  0   )   byref  ->  zero-ref    "field V101._reference (fldOffset=0x0)" P-INDEP
 ;* V238 tmp228      [V238    ] (  0,  0   )     int  ->  zero-ref    "field V101._length (fldOffset=0x8)" P-INDEP
 ;* V239 tmp229      [V239    ] (  0,  0   )   byref  ->  zero-ref    "field V103._reference (fldOffset=0x0)" P-INDEP
 ;* V240 tmp230      [V240    ] (  0,  0   )     int  ->  zero-ref    "field V103._length (fldOffset=0x8)" P-INDEP
 ;* V241 tmp231      [V241    ] (  0,  0   )   byref  ->  zero-ref    "field V104._reference (fldOffset=0x0)" P-INDEP
 ;* V242 tmp232      [V242    ] (  0,  0   )     int  ->  zero-ref    "field V104._length (fldOffset=0x8)" P-INDEP
 ;* V243 tmp233      [V243    ] (  0,  0   )   byref  ->  zero-ref    "field V105._reference (fldOffset=0x0)" P-INDEP
 ;* V244 tmp234      [V244    ] (  0,  0   )     int  ->  zero-ref    "field V105._length (fldOffset=0x8)" P-INDEP
 ;  V245 tmp235      [V245,T74] (  4,  4   )   byref  ->  r15         "field V106._reference (fldOffset=0x0)" P-INDEP
 ;  V246 tmp236      [V246,T93] (  4,  4   )     int  ->  rbx         "field V106._length (fldOffset=0x8)" P-INDEP
 ;* V247 tmp237      [V247    ] (  0,  0   )   byref  ->  zero-ref    "field V109._reference (fldOffset=0x0)" P-INDEP
 ;* V248 tmp238      [V248    ] (  0,  0   )     int  ->  zero-ref    "field V109._length (fldOffset=0x8)" P-INDEP
 ;* V249 tmp239      [V249    ] (  0,  0   )   byref  ->  zero-ref    "field V110._reference (fldOffset=0x0)" P-INDEP
 ;* V250 tmp240      [V250    ] (  0,  0   )     int  ->  zero-ref    "field V110._length (fldOffset=0x8)" P-INDEP
 ;* V251 tmp241      [V251    ] (  0,  0   )   byref  ->  zero-ref    "field V111._reference (fldOffset=0x0)" P-INDEP
 ;* V252 tmp242      [V252    ] (  0,  0   )     int  ->  zero-ref    "field V111._length (fldOffset=0x8)" P-INDEP
 ;  V253 tmp243      [V253,T75] (  4,  4   )   byref  ->  r15         "field V112._reference (fldOffset=0x0)" P-INDEP
 ;  V254 tmp244      [V254,T94] (  4,  4   )     int  ->  rbx         "field V112._length (fldOffset=0x8)" P-INDEP
 ;  V255 tmp245      [V255,T76] (  4,  4   )   byref  ->  r15         "field V117._reference (fldOffset=0x0)" P-INDEP
 ;* V256 tmp246      [V256    ] (  0,  0   )     int  ->  zero-ref    "field V117._length (fldOffset=0x8)" P-INDEP
 ;  V257 tmp247      [V257,T77] (  4,  4   )   byref  ->  rdi         "field V120._reference (fldOffset=0x0)" P-INDEP
 ;  V258 tmp248      [V258,T95] (  4,  4   )     int  ->  rsi         "field V120._length (fldOffset=0x8)" P-INDEP
 ;* V259 tmp249      [V259    ] (  0,  0   )   byref  ->  zero-ref    "field V121._reference (fldOffset=0x0)" P-INDEP
 ;* V260 tmp250      [V260    ] (  0,  0   )     int  ->  zero-ref    "field V121._length (fldOffset=0x8)" P-INDEP
 ;* V261 tmp251      [V261,T98] (  0,  0   )   byref  ->  zero-ref    "field V124._reference (fldOffset=0x0)" P-INDEP
 ;* V262 tmp252      [V262    ] (  0,  0   )     int  ->  zero-ref    "field V124._length (fldOffset=0x8)" P-INDEP
 ;* V263 tmp253      [V263,T99] (  0,  0   )   byref  ->  zero-ref    "field V128._reference (fldOffset=0x0)" P-INDEP
 ;* V264 tmp254      [V264    ] (  0,  0   )     int  ->  zero-ref    "field V128._length (fldOffset=0x8)" P-INDEP
 ;* V265 tmp255      [V265,T100] (  0,  0   )   byref  ->  zero-ref    "field V131._reference (fldOffset=0x0)" P-INDEP
 ;  V266 tmp256      [V266,T96] (  4,  4   )     int  ->  rsi         "field V131._length (fldOffset=0x8)" P-INDEP
 ;* V267 tmp257      [V267    ] (  0,  0   )   byref  ->  zero-ref    "field V132._reference (fldOffset=0x0)" P-INDEP
 ;* V268 tmp258      [V268    ] (  0,  0   )     int  ->  zero-ref    "field V132._length (fldOffset=0x8)" P-INDEP
 ;  V269 tmp259      [V269,T78] (  4,  4   )   byref  ->  r15         "field V134._reference (fldOffset=0x0)" P-INDEP
 ;  V270 tmp260      [V270,T97] (  4,  4   )     int  ->  rbx         "field V134._length (fldOffset=0x8)" P-INDEP
 ;  V271 tmp261      [V271,T07] (  6, 24   )     ref  ->  rdi         "argument with side effect"
 ;  V272 tmp262      [V272,T43] (  4,  8   )     ref  ->  rax         "argument with side effect"
 ;  V273 cse0        [V273,T04] (  3, 47.52)     int  ->  rsi         "CSE #23: aggressive"
 ;  V274 cse1        [V274,T05] ( 16, 35.64)    long  ->  [rbp-0x40]  spill-single-def "CSE #03: aggressive"
 ;
 ; Lcl frame size = 40
 
 G_M41445_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 40
        lea      rbp, [rsp+0x50]
        mov      r15, rsi
        mov      ebx, edx
 						;; size=24 bbWeight=1 PerfScore 7.25
 G_M41445_IG02:
        mov      r14, gword ptr [rdi+0x10]
        mov      esi, dword ptr [r14+0x08]
        mov      rdi, 0xD1FFAB1E      ; System.Object[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      r13, rax
        xor      r12d, r12d
        cmp      dword ptr [r14+0x08], 0
        jle      G_M41445_IG32
 						;; size=40 bbWeight=1 PerfScore 9.75
 G_M41445_IG03:
        mov      edi, dword ptr [r14+0x08]
        cmp      edi, dword ptr [r13+0x08]
        jg       G_M41445_IG34
 						;; size=14 bbWeight=0.25 PerfScore 1.50
 G_M41445_IG04:
        test     ebx, ebx
        jle      G_M41445_IG32
        mov      eax, r12d
        mov      qword ptr [rbp-0x40], rax
        mov      rdi, gword ptr [r14+8*rax+0x10]
        mov      rcx, qword ptr [rdi]
        mov      rcx, qword ptr [rcx+0x40]
        call     [rcx+0x38]System.Reflection.ParameterInfo:get_ParameterType():System.Type:this
        mov      rdi, rax
        mov      gword ptr [rbp-0x48], rax
        mov      rcx, qword ptr [rax]
        mov      rcx, qword ptr [rcx+0x70]
        call     [rcx+0x30]System.Type:get_IsEnum():ubyte:this
        test     eax, eax
        je       SHORT G_M41445_IG06
 						;; size=51 bbWeight=3.96 PerfScore 83.16
 G_M41445_IG05:
        mov      rdi, gword ptr [rbp-0x48]
        mov      rsi, 0xD1FFAB1E      ; 'enumType'
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        mov      rdi, gword ptr [rbp-0x48]
        mov      gword ptr [rbp-0x48], rdi
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0xA0]
        call     [rax+0x18]System.Type:GetEnumUnderlyingType():System.Type:this
        jmp      SHORT G_M41445_IG07
        align    [4 bytes for IG10]
 						;; size=53 bbWeight=1.98 PerfScore 30.69
 G_M41445_IG06:
        xor      rax, rax
 						;; size=2 bbWeight=1.98 PerfScore 0.49
 G_M41445_IG07:
        mov      rdi, 0xD1FFAB1E      ; 'System.IntPtr'
        mov      rcx, gword ptr [rbp-0x48]
        cmp      rcx, rdi
        je       G_M41445_IG30
 						;; size=23 bbWeight=3.96 PerfScore 9.90
 G_M41445_IG08:
        mov      rdi, 0xD1FFAB1E      ; 'System.Int32'
        cmp      rcx, rdi
        je       G_M41445_IG29
        mov      rdi, 0xD1FFAB1E      ; 'System.Int32'
        cmp      rax, rdi
        je       G_M41445_IG29
        mov      rdi, 0xD1FFAB1E      ; 'System.UInt32'
        cmp      rcx, rdi
        je       G_M41445_IG28
        mov      rdi, 0xD1FFAB1E      ; 'System.UInt32'
        cmp      rax, rdi
        je       G_M41445_IG28
        mov      rdi, 0xD1FFAB1E      ; 'System.Int64'
        cmp      rcx, rdi
        je       G_M41445_IG27
        mov      rdi, 0xD1FFAB1E      ; 'System.Int64'
        cmp      rax, rdi
        je       G_M41445_IG27
        mov      rdi, 0xD1FFAB1E      ; 'System.UInt64'
        cmp      rcx, rdi
        je       G_M41445_IG26
        mov      rdi, 0xD1FFAB1E      ; 'System.UInt64'
        cmp      rax, rdi
        je       G_M41445_IG26
        mov      rdi, 0xD1FFAB1E      ; 'System.Byte'
        cmp      rcx, rdi
        je       G_M41445_IG25
        mov      rdi, 0xD1FFAB1E      ; 'System.Byte'
        cmp      rax, rdi
        je       G_M41445_IG25
        mov      rdi, 0xD1FFAB1E      ; 'System.SByte'
        cmp      rcx, rdi
        je       G_M41445_IG24
        mov      rdi, 0xD1FFAB1E      ; 'System.SByte'
        cmp      rax, rdi
        je       G_M41445_IG24
        mov      rdi, 0xD1FFAB1E      ; 'System.Int16'
        cmp      rcx, rdi
        je       G_M41445_IG23
        mov      rdi, 0xD1FFAB1E      ; 'System.Int16'
        cmp      rax, rdi
 						;; size=260 bbWeight=1.98 PerfScore 39.60
 G_M41445_IG09:
        je       G_M41445_IG23
        mov      rdi, 0xD1FFAB1E      ; 'System.UInt16'
        cmp      rcx, rdi
        je       G_M41445_IG22
        mov      rdi, 0xD1FFAB1E      ; 'System.UInt16'
        cmp      rax, rdi
        je       G_M41445_IG22
        mov      rdi, 0xD1FFAB1E      ; 'System.Single'
        cmp      rcx, rdi
        je       G_M41445_IG21
        mov      rdi, 0xD1FFAB1E      ; 'System.Double'
        cmp      rcx, rdi
        je       G_M41445_IG20
        mov      rdi, 0xD1FFAB1E      ; 'System.Boolean'
        cmp      rcx, rdi
        je       G_M41445_IG19
        mov      rdi, 0xD1FFAB1E      ; 'System.Guid'
        cmp      rcx, rdi
        je       G_M41445_IG18
        mov      rdi, 0xD1FFAB1E      ; 'System.Char'
        cmp      rcx, rdi
        je       G_M41445_IG17
        mov      rdi, 0xD1FFAB1E      ; 'System.String'
        cmp      rcx, rdi
        jne      G_M41445_IG31
        mov      edx, -1
        mov      edi, 1
        cmp      ebx, 1
        jle      SHORT G_M41445_IG13
 						;; size=173 bbWeight=1.98 PerfScore 29.21
 G_M41445_IG10:
        lea      esi, [rdi-0x01]
        cmp      esi, ebx
        jae      G_M41445_IG64
        cmp      byte  ptr [r15+rsi], 0
        jne      SHORT G_M41445_IG12
 						;; size=18 bbWeight=15.84 PerfScore 91.08
 G_M41445_IG11:
        cmp      edi, ebx
        jae      G_M41445_IG64
        mov      esi, edi
        cmp      byte  ptr [r15+rsi], 0
        je       SHORT G_M41445_IG14
 						;; size=17 bbWeight=7.92 PerfScore 43.56
 G_M41445_IG12:
        add      edi, 2
        cmp      edi, ebx
        jl       SHORT G_M41445_IG10
 						;; size=7 bbWeight=15.84 PerfScore 23.76
 G_M41445_IG13:
        test     edx, edx
        jge      SHORT G_M41445_IG15
        shr      ebx, 1
        mov      rdi, r15
        mov      esi, ebx
        xor      r15, r15
        xor      ebx, ebx
        jmp      SHORT G_M41445_IG16
 						;; size=18 bbWeight=1.98 PerfScore 9.41
 G_M41445_IG14:
        lea      edx, [rdi+0x01]
        jmp      SHORT G_M41445_IG13
 						;; size=5 bbWeight=1.98 PerfScore 4.95
 G_M41445_IG15:
        lea      esi, [rdx-0x02]
        cmp      esi, ebx
        ja       G_M41445_IG62
        shr      esi, 1
        mov      rdi, r15
        cmp      edx, ebx
        ja       G_M41445_IG62
        mov      r15d, edx
        add      r15, rdi
        sub      ebx, edx
 						;; size=32 bbWeight=1.98 PerfScore 8.91
 G_M41445_IG16:
        call     System.String:.ctor(System.ReadOnlySpan`1[ushort]):this
        mov      rdx, rax
        movsxd   rsi, r12d
        mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
        jmp      G_M41445_IG31
 						;; size=31 bbWeight=1.98 PerfScore 13.86
 G_M41445_IG17:
        cmp      ebx, 2
        jl       G_M41445_IG63
        mov      rdi, 0xD1FFAB1E      ; System.Char
        call     CORINFO_HELP_NEWSFAST
        movzx    rdi, word  ptr [r15]
        mov      word  ptr [rax+0x08], di
        mov      rcx, qword ptr [rbp-0x40]
        lea      rdi, bword ptr [r13+8*rcx+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       cmp      ebx, 2
-       jb       G_M41445_IG62
        add      r15, 2
        add      ebx, -2
        jmp      G_M41445_IG31
-						;; size=70 bbWeight=1.98 PerfScore 26.73
+						;; size=61 bbWeight=1.98 PerfScore 24.26
 G_M41445_IG18:
        cmp      ebx, 16
-       jb       G_M41445_IG62
+       jl       G_M41445_IG62
        vmovups  xmm0, xmmword ptr [r15]
        vmovups  xmmword ptr [rbp-0x38], xmm0
        mov      rdi, 0xD1FFAB1E      ; System.Guid
        call     CORINFO_HELP_NEWSFAST
        vmovups  xmm0, xmmword ptr [rbp-0x38]
        vmovups  xmmword ptr [rax+0x08], xmm0
        mov      rcx, qword ptr [rbp-0x40]
        lea      rdi, bword ptr [r13+8*rcx+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        add      r15, 16
        add      ebx, -16
        jmp      G_M41445_IG31
 						;; size=73 bbWeight=1.98 PerfScore 38.11
 G_M41445_IG19:
        cmp      ebx, 4
        jl       G_M41445_IG63
        mov      rdi, 0xD1FFAB1E      ; System.Boolean
        call     CORINFO_HELP_NEWSFAST
        cmp      dword ptr [r15], 1
        sete     dil
        mov      byte  ptr [rax+0x08], dil
        mov      rcx, qword ptr [rbp-0x40]
        lea      rdi, bword ptr [r13+8*rcx+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       cmp      ebx, 4
-       jb       G_M41445_IG62
        add      r15, 4
        add      ebx, -4
        jmp      G_M41445_IG31
-						;; size=74 bbWeight=1.98 PerfScore 30.69
+						;; size=65 bbWeight=1.98 PerfScore 28.22
 G_M41445_IG20:
        cmp      ebx, 8
        jl       G_M41445_IG63
        mov      rdi, 0xD1FFAB1E      ; System.Double
        call     CORINFO_HELP_NEWSFAST
        vmovsd   xmm0, qword ptr [r15]
        vmovsd   qword ptr [rax+0x08], xmm0
        mov      rcx, qword ptr [rbp-0x40]
        lea      rdi, bword ptr [r13+8*rcx+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       cmp      ebx, 8
-       jb       G_M41445_IG62
        add      r15, 8
        add      ebx, -8
        jmp      G_M41445_IG31
-						;; size=72 bbWeight=1.98 PerfScore 32.67
+						;; size=63 bbWeight=1.98 PerfScore 30.20
 G_M41445_IG21:
        cmp      ebx, 4
        jl       G_M41445_IG63
        mov      rdi, 0xD1FFAB1E      ; System.Single
        call     CORINFO_HELP_NEWSFAST
        vmovss   xmm0, dword ptr [r15]
        vmovss   dword ptr [rax+0x08], xmm0
        mov      rcx, qword ptr [rbp-0x40]
        lea      rdi, bword ptr [r13+8*rcx+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       cmp      ebx, 4
-       jb       G_M41445_IG62
        add      r15, 4
        add      ebx, -4
        jmp      G_M41445_IG31
-						;; size=72 bbWeight=1.98 PerfScore 32.67
+						;; size=63 bbWeight=1.98 PerfScore 30.20
 G_M41445_IG22:
        cmp      ebx, 2
        jl       G_M41445_IG63
        mov      rdi, 0xD1FFAB1E      ; System.UInt16
        call     CORINFO_HELP_NEWSFAST
        movzx    rdi, word  ptr [r15]
        mov      word  ptr [rax+0x08], di
        mov      rcx, qword ptr [rbp-0x40]
        lea      rdi, bword ptr [r13+8*rcx+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       cmp      ebx, 2
-       jb       G_M41445_IG62
        add      r15, 2
        add      ebx, -2
        jmp      G_M41445_IG31
-						;; size=70 bbWeight=1.98 PerfScore 26.73
+						;; size=61 bbWeight=1.98 PerfScore 24.26
 G_M41445_IG23:
        cmp      ebx, 2
        jl       G_M41445_IG63
        mov      rdi, 0xD1FFAB1E      ; System.Int16
        call     CORINFO_HELP_NEWSFAST
        movsx    rdi, word  ptr [r15]
        mov      word  ptr [rax+0x08], di
        mov      rcx, qword ptr [rbp-0x40]
        lea      rdi, bword ptr [r13+8*rcx+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       cmp      ebx, 2
-       jb       G_M41445_IG62
        add      r15, 2
        add      ebx, -2
        jmp      G_M41445_IG31
-						;; size=70 bbWeight=1.98 PerfScore 30.69
+						;; size=61 bbWeight=1.98 PerfScore 28.22
 G_M41445_IG24:
        mov      rdi, 0xD1FFAB1E      ; System.SByte
        call     CORINFO_HELP_NEWSFAST
        movsx    rdi, byte  ptr [r15]
        mov      byte  ptr [rax+0x08], dil
        mov      rcx, qword ptr [rbp-0x40]
        lea      rdi, bword ptr [r13+8*rcx+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        inc      r15
        dec      ebx
        jmp      G_M41445_IG31
 						;; size=50 bbWeight=1.98 PerfScore 25.74
 G_M41445_IG25:
        mov      rdi, 0xD1FFAB1E      ; System.Byte
        call     CORINFO_HELP_NEWSFAST
        movzx    rdi, byte  ptr [r15]
        mov      byte  ptr [rax+0x08], dil
        mov      rcx, qword ptr [rbp-0x40]
        lea      rdi, bword ptr [r13+8*rcx+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        inc      r15
        dec      ebx
        jmp      G_M41445_IG31
 						;; size=50 bbWeight=1.98 PerfScore 21.78
 G_M41445_IG26:
        cmp      ebx, 8
        jl       G_M41445_IG63
        mov      rdi, 0xD1FFAB1E      ; System.UInt64
        call     CORINFO_HELP_NEWSFAST
        mov      rdi, qword ptr [r15]
        mov      qword ptr [rax+0x08], rdi
        mov      rcx, qword ptr [rbp-0x40]
        lea      rdi, bword ptr [r13+8*rcx+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       cmp      ebx, 8
-       jb       G_M41445_IG62
        add      r15, 8
        add      ebx, -8
        jmp      G_M41445_IG31
-						;; size=69 bbWeight=1.98 PerfScore 26.73
+						;; size=60 bbWeight=1.98 PerfScore 24.26
 G_M41445_IG27:
        cmp      ebx, 8
        jl       G_M41445_IG63
        mov      rdi, 0xD1FFAB1E      ; System.Int64
        call     CORINFO_HELP_NEWSFAST
        mov      rdi, qword ptr [r15]
        mov      qword ptr [rax+0x08], rdi
        mov      rcx, qword ptr [rbp-0x40]
        lea      rdi, bword ptr [r13+8*rcx+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       cmp      ebx, 8
-       jb       G_M41445_IG62
        add      r15, 8
        add      ebx, -8
        jmp      G_M41445_IG31
-						;; size=69 bbWeight=1.98 PerfScore 26.73
+						;; size=60 bbWeight=1.98 PerfScore 24.26
 G_M41445_IG28:
        cmp      ebx, 4
        jl       G_M41445_IG63
        mov      rdi, 0xD1FFAB1E      ; System.UInt32
        call     CORINFO_HELP_NEWSFAST
        mov      edi, dword ptr [r15]
        mov      dword ptr [rax+0x08], edi
        mov      rcx, qword ptr [rbp-0x40]
        lea      rdi, bword ptr [r13+8*rcx+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       cmp      ebx, 4
-       jb       G_M41445_IG62
        add      r15, 4
        add      ebx, -4
-       jmp      G_M41445_IG31
-						;; size=68 bbWeight=1.98 PerfScore 26.73
+       jmp      SHORT G_M41445_IG31
+						;; size=56 bbWeight=1.98 PerfScore 24.26
 G_M41445_IG29:
        cmp      ebx, 4
        jl       G_M41445_IG63
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        call     CORINFO_HELP_NEWSFAST
        mov      edi, dword ptr [r15]
        mov      dword ptr [rax+0x08], edi
        mov      rcx, qword ptr [rbp-0x40]
        lea      rdi, bword ptr [r13+8*rcx+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       cmp      ebx, 4
-       jb       G_M41445_IG62
        add      r15, 4
        add      ebx, -4
        jmp      SHORT G_M41445_IG31
-						;; size=65 bbWeight=1.98 PerfScore 26.73
+						;; size=56 bbWeight=1.98 PerfScore 24.26
 G_M41445_IG30:
        cmp      ebx, 8
        jl       G_M41445_IG63
        mov      rdi, 0xD1FFAB1E      ; System.IntPtr
        call     CORINFO_HELP_NEWSFAST
        mov      rdi, qword ptr [r15]
        mov      qword ptr [rax+0x08], rdi
        mov      rdi, qword ptr [rbp-0x40]
        lea      rdi, bword ptr [r13+8*rdi+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       cmp      ebx, 8
-       jb       G_M41445_IG62
        add      r15, 8
        add      ebx, -8
-						;; size=64 bbWeight=1.98 PerfScore 22.77
+						;; size=55 bbWeight=1.98 PerfScore 20.30
 G_M41445_IG31:
        inc      r12d
        cmp      dword ptr [r14+0x08], r12d
        jg       G_M41445_IG04
 						;; size=13 bbWeight=3.96 PerfScore 16.83
 G_M41445_IG32:
        mov      rax, r13
 						;; size=3 bbWeight=1 PerfScore 0.25
 G_M41445_IG33:
        add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 G_M41445_IG34:
        test     ebx, ebx
        jle      SHORT G_M41445_IG32
        mov      edi, r12d
        mov      rdi, gword ptr [r14+8*rdi+0x10]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x38]System.Reflection.ParameterInfo:get_ParameterType():System.Type:this
        mov      rdi, rax
        mov      gword ptr [rbp-0x48], rax
        mov      rcx, qword ptr [rax]
        mov      rcx, qword ptr [rcx+0x70]
        call     [rcx+0x30]System.Type:get_IsEnum():ubyte:this
        test     eax, eax
        je       SHORT G_M41445_IG36
 						;; size=43 bbWeight=0.04 PerfScore 0.80
 G_M41445_IG35:
        mov      rdi, gword ptr [rbp-0x48]
        mov      rsi, 0xD1FFAB1E      ; 'enumType'
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        mov      rdi, gword ptr [rbp-0x48]
        mov      gword ptr [rbp-0x48], rdi
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0xA0]
        call     [rax+0x18]System.Type:GetEnumUnderlyingType():System.Type:this
        jmp      SHORT G_M41445_IG37
 						;; size=49 bbWeight=0.02 PerfScore 0.31
 G_M41445_IG36:
        xor      rax, rax
 						;; size=2 bbWeight=0.02 PerfScore 0.01
 G_M41445_IG37:
        mov      rdi, 0xD1FFAB1E      ; 'System.IntPtr'
        mov      rsi, gword ptr [rbp-0x48]
        cmp      rsi, rdi
        je       G_M41445_IG60
 						;; size=23 bbWeight=0.04 PerfScore 0.10
 G_M41445_IG38:
        mov      rdi, 0xD1FFAB1E      ; 'System.Int32'
        cmp      rsi, rdi
        je       G_M41445_IG59
        mov      rdi, 0xD1FFAB1E      ; 'System.Int32'
        cmp      rax, rdi
        je       G_M41445_IG59
        mov      rdi, 0xD1FFAB1E      ; 'System.UInt32'
        cmp      rsi, rdi
        je       G_M41445_IG58
        mov      rdi, 0xD1FFAB1E      ; 'System.UInt32'
        cmp      rax, rdi
        je       G_M41445_IG58
        mov      rdi, 0xD1FFAB1E      ; 'System.Int64'
        cmp      rsi, rdi
        je       G_M41445_IG57
        mov      rdi, 0xD1FFAB1E      ; 'System.Int64'
        cmp      rax, rdi
        je       G_M41445_IG57
        mov      rdi, 0xD1FFAB1E      ; 'System.UInt64'
        cmp      rsi, rdi
        je       G_M41445_IG56
        mov      rdi, 0xD1FFAB1E      ; 'System.UInt64'
        cmp      rax, rdi
        je       G_M41445_IG56
        mov      rdi, 0xD1FFAB1E      ; 'System.Byte'
        cmp      rsi, rdi
        je       G_M41445_IG55
        mov      rdi, 0xD1FFAB1E      ; 'System.Byte'
        cmp      rax, rdi
        je       G_M41445_IG55
        mov      rdi, 0xD1FFAB1E      ; 'System.SByte'
        cmp      rsi, rdi
        je       G_M41445_IG54
        mov      rdi, 0xD1FFAB1E      ; 'System.SByte'
        cmp      rax, rdi
        je       G_M41445_IG54
        mov      rdi, 0xD1FFAB1E      ; 'System.Int16'
        cmp      rsi, rdi
        je       G_M41445_IG53
        mov      rdi, 0xD1FFAB1E      ; 'System.Int16'
        cmp      rax, rdi
 						;; size=260 bbWeight=0.02 PerfScore 0.40
 G_M41445_IG39:
        je       G_M41445_IG53
        mov      rdi, 0xD1FFAB1E      ; 'System.UInt16'
        cmp      rsi, rdi
        je       G_M41445_IG52
        mov      rdi, 0xD1FFAB1E      ; 'System.UInt16'
        cmp      rax, rdi
        je       G_M41445_IG52
        mov      rdi, 0xD1FFAB1E      ; 'System.Single'
        cmp      rsi, rdi
        je       G_M41445_IG51
        mov      rdi, 0xD1FFAB1E      ; 'System.Double'
        cmp      rsi, rdi
        je       G_M41445_IG50
        mov      rdi, 0xD1FFAB1E      ; 'System.Boolean'
        cmp      rsi, rdi
        je       G_M41445_IG49
        mov      rdi, 0xD1FFAB1E      ; 'System.Guid'
        cmp      rsi, rdi
        je       G_M41445_IG48
        mov      rdi, 0xD1FFAB1E      ; 'System.Char'
        cmp      rsi, rdi
        je       G_M41445_IG47
        mov      rdi, 0xD1FFAB1E      ; 'System.String'
        cmp      rsi, rdi
        jne      G_M41445_IG61
        mov      edx, -1
        mov      edi, 1
        cmp      ebx, 1
        jle      SHORT G_M41445_IG43
 						;; size=173 bbWeight=0.02 PerfScore 0.30
 G_M41445_IG40:
        lea      esi, [rdi-0x01]
        cmp      esi, ebx
        jae      G_M41445_IG64
        lea      esi, [rdi-0x01]
        cmp      byte  ptr [r15+rsi], 0
        jne      SHORT G_M41445_IG42
 						;; size=21 bbWeight=0.16 PerfScore 1.00
 G_M41445_IG41:
        cmp      edi, ebx
        jae      G_M41445_IG64
        mov      esi, edi
        cmp      byte  ptr [r15+rsi], 0
        je       SHORT G_M41445_IG44
 						;; size=17 bbWeight=0.08 PerfScore 0.44
 G_M41445_IG42:
        add      edi, 2
        cmp      edi, ebx
        jl       SHORT G_M41445_IG40
 						;; size=7 bbWeight=0.16 PerfScore 0.24
 G_M41445_IG43:
        test     edx, edx
        jge      SHORT G_M41445_IG45
        shr      ebx, 1
        mov      rdi, r15
        mov      esi, ebx
        xor      r15, r15
        xor      ebx, ebx
        jmp      SHORT G_M41445_IG46
 						;; size=18 bbWeight=0.02 PerfScore 0.10
 G_M41445_IG44:
        lea      edx, [rdi+0x01]
        jmp      SHORT G_M41445_IG43
 						;; size=5 bbWeight=0.02 PerfScore 0.05
 G_M41445_IG45:
        lea      esi, [rdx-0x02]
        cmp      esi, ebx
        ja       G_M41445_IG62
        shr      esi, 1
        mov      rdi, r15
        cmp      edx, ebx
        ja       G_M41445_IG62
        mov      r15d, edx
        add      r15, rdi
        sub      ebx, edx
 						;; size=32 bbWeight=0.02 PerfScore 0.09
 G_M41445_IG46:
        call     System.String:.ctor(System.ReadOnlySpan`1[ushort]):this
        mov      rdx, rax
        movsxd   rsi, r12d
        mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
        jmp      G_M41445_IG61
 						;; size=31 bbWeight=0.02 PerfScore 0.14
 G_M41445_IG47:
        cmp      ebx, 2
        jl       G_M41445_IG63
        mov      rdi, 0xD1FFAB1E      ; System.Char
        call     CORINFO_HELP_NEWSFAST
        movzx    rdi, word  ptr [r15]
        mov      word  ptr [rax+0x08], di
        cmp      r12d, dword ptr [r13+0x08]
        jae      G_M41445_IG64
        mov      edi, r12d
        lea      rdi, bword ptr [r13+8*rdi+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       cmp      ebx, 2
-       jb       G_M41445_IG62
        add      r15, 2
        add      ebx, -2
        jmp      G_M41445_IG61
-						;; size=79 bbWeight=0.02 PerfScore 0.34
+						;; size=70 bbWeight=0.02 PerfScore 0.31
 G_M41445_IG48:
        cmp      ebx, 16
-       jb       G_M41445_IG62
+       jl       G_M41445_IG62
        vmovups  xmm0, xmmword ptr [r15]
        vmovups  xmmword ptr [rbp-0x38], xmm0
        mov      rdi, 0xD1FFAB1E      ; System.Guid
        call     CORINFO_HELP_NEWSFAST
        vmovups  xmm0, xmmword ptr [rbp-0x38]
        vmovups  xmmword ptr [rax+0x08], xmm0
        cmp      r12d, dword ptr [r13+0x08]
        jae      G_M41445_IG64
        mov      edi, r12d
        lea      rdi, bword ptr [r13+8*rdi+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        add      r15, 16
        add      ebx, -16
        jmp      G_M41445_IG61
 						;; size=82 bbWeight=0.02 PerfScore 0.45
 G_M41445_IG49:
        cmp      ebx, 4
        jl       G_M41445_IG63
        mov      rdi, 0xD1FFAB1E      ; System.Boolean
        call     CORINFO_HELP_NEWSFAST
        cmp      dword ptr [r15], 1
        sete     dil
        mov      byte  ptr [rax+0x08], dil
        cmp      r12d, dword ptr [r13+0x08]
        jae      G_M41445_IG64
        mov      edi, r12d
        lea      rdi, bword ptr [r13+8*rdi+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       cmp      ebx, 4
-       jb       G_M41445_IG62
        add      r15, 4
        add      ebx, -4
        jmp      G_M41445_IG61
-						;; size=83 bbWeight=0.02 PerfScore 0.38
+						;; size=74 bbWeight=0.02 PerfScore 0.35
 G_M41445_IG50:
        cmp      ebx, 8
        jl       G_M41445_IG63
        mov      rdi, 0xD1FFAB1E      ; System.Double
        call     CORINFO_HELP_NEWSFAST
        vmovsd   xmm0, qword ptr [r15]
        vmovsd   qword ptr [rax+0x08], xmm0
        cmp      r12d, dword ptr [r13+0x08]
        jae      G_M41445_IG64
        mov      edi, r12d
        lea      rdi, bword ptr [r13+8*rdi+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       cmp      ebx, 8
-       jb       G_M41445_IG62
        add      r15, 8
        add      ebx, -8
        jmp      G_M41445_IG61
-						;; size=81 bbWeight=0.02 PerfScore 0.40
+						;; size=72 bbWeight=0.02 PerfScore 0.37
 G_M41445_IG51:
        cmp      ebx, 4
        jl       G_M41445_IG63
        mov      rdi, 0xD1FFAB1E      ; System.Single
        call     CORINFO_HELP_NEWSFAST
        vmovss   xmm0, dword ptr [r15]
        vmovss   dword ptr [rax+0x08], xmm0
        cmp      r12d, dword ptr [r13+0x08]
        jae      G_M41445_IG64
        mov      edi, r12d
        lea      rdi, bword ptr [r13+8*rdi+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       cmp      ebx, 4
-       jb       G_M41445_IG62
        add      r15, 4
        add      ebx, -4
        jmp      G_M41445_IG61
-						;; size=81 bbWeight=0.02 PerfScore 0.40
+						;; size=72 bbWeight=0.02 PerfScore 0.37
 G_M41445_IG52:
        cmp      ebx, 2
        jl       G_M41445_IG63
        mov      rdi, 0xD1FFAB1E      ; System.UInt16
        call     CORINFO_HELP_NEWSFAST
        movzx    rdi, word  ptr [r15]
        mov      word  ptr [rax+0x08], di
        cmp      r12d, dword ptr [r13+0x08]
        jae      G_M41445_IG64
        mov      edi, r12d
        lea      rdi, bword ptr [r13+8*rdi+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       cmp      ebx, 2
-       jb       G_M41445_IG62
        add      r15, 2
        add      ebx, -2
        jmp      G_M41445_IG61
-						;; size=79 bbWeight=0.02 PerfScore 0.34
+						;; size=70 bbWeight=0.02 PerfScore 0.31
 G_M41445_IG53:
        cmp      ebx, 2
        jl       G_M41445_IG63
        mov      rdi, 0xD1FFAB1E      ; System.Int16
        call     CORINFO_HELP_NEWSFAST
        movsx    rdi, word  ptr [r15]
        mov      word  ptr [rax+0x08], di
        cmp      r12d, dword ptr [r13+0x08]
        jae      G_M41445_IG64
        mov      edi, r12d
        lea      rdi, bword ptr [r13+8*rdi+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       cmp      ebx, 2
-       jb       G_M41445_IG62
        add      r15, 2
        add      ebx, -2
        jmp      G_M41445_IG61
-						;; size=79 bbWeight=0.02 PerfScore 0.38
+						;; size=70 bbWeight=0.02 PerfScore 0.35
 G_M41445_IG54:
        mov      rdi, 0xD1FFAB1E      ; System.SByte
        call     CORINFO_HELP_NEWSFAST
        movsx    rdi, byte  ptr [r15]
        mov      byte  ptr [rax+0x08], dil
        cmp      r12d, dword ptr [r13+0x08]
        jae      G_M41445_IG64
        mov      edi, r12d
        lea      rdi, bword ptr [r13+8*rdi+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        inc      r15
        dec      ebx
        jmp      G_M41445_IG61
 						;; size=59 bbWeight=0.02 PerfScore 0.33
 G_M41445_IG55:
        mov      rdi, 0xD1FFAB1E      ; System.Byte
        call     CORINFO_HELP_NEWSFAST
        movzx    rdi, byte  ptr [r15]
        mov      byte  ptr [rax+0x08], dil
        cmp      r12d, dword ptr [r13+0x08]
        jae      G_M41445_IG64
        mov      edi, r12d
        lea      rdi, bword ptr [r13+8*rdi+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        inc      r15
        dec      ebx
        jmp      G_M41445_IG61
 						;; size=59 bbWeight=0.02 PerfScore 0.29
 G_M41445_IG56:
        cmp      ebx, 8
        jl       G_M41445_IG63
        mov      rdi, 0xD1FFAB1E      ; System.UInt64
        call     CORINFO_HELP_NEWSFAST
        mov      rdi, qword ptr [r15]
        mov      qword ptr [rax+0x08], rdi
        cmp      r12d, dword ptr [r13+0x08]
        jae      G_M41445_IG64
        mov      edi, r12d
        lea      rdi, bword ptr [r13+8*rdi+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       cmp      ebx, 8
-       jb       G_M41445_IG62
        add      r15, 8
        add      ebx, -8
        jmp      G_M41445_IG61
-						;; size=78 bbWeight=0.02 PerfScore 0.34
+						;; size=69 bbWeight=0.02 PerfScore 0.31
 G_M41445_IG57:
        cmp      ebx, 8
        jl       G_M41445_IG63
        mov      rdi, 0xD1FFAB1E      ; System.Int64
        call     CORINFO_HELP_NEWSFAST
        mov      rdi, qword ptr [r15]
        mov      qword ptr [rax+0x08], rdi
        cmp      r12d, dword ptr [r13+0x08]
        jae      G_M41445_IG64
        mov      edi, r12d
        lea      rdi, bword ptr [r13+8*rdi+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       cmp      ebx, 8
-       jb       G_M41445_IG62
        add      r15, 8
        add      ebx, -8
        jmp      G_M41445_IG61
-						;; size=78 bbWeight=0.02 PerfScore 0.34
+						;; size=69 bbWeight=0.02 PerfScore 0.31
 G_M41445_IG58:
        cmp      ebx, 4
        jl       G_M41445_IG63
        mov      rdi, 0xD1FFAB1E      ; System.UInt32
        call     CORINFO_HELP_NEWSFAST
        mov      edi, dword ptr [r15]
        mov      dword ptr [rax+0x08], edi
        cmp      r12d, dword ptr [r13+0x08]
        jae      G_M41445_IG64
        mov      edi, r12d
        lea      rdi, bword ptr [r13+8*rdi+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       cmp      ebx, 4
-       jb       G_M41445_IG62
        add      r15, 4
        add      ebx, -4
-       jmp      G_M41445_IG61
-						;; size=77 bbWeight=0.02 PerfScore 0.34
+       jmp      SHORT G_M41445_IG61
+						;; size=65 bbWeight=0.02 PerfScore 0.31
 G_M41445_IG59:
        cmp      ebx, 4
        jl       G_M41445_IG63
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        call     CORINFO_HELP_NEWSFAST
        mov      edi, dword ptr [r15]
        mov      dword ptr [rax+0x08], edi
        cmp      r12d, dword ptr [r13+0x08]
        jae      G_M41445_IG64
        mov      edi, r12d
        lea      rdi, bword ptr [r13+8*rdi+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       cmp      ebx, 4
-       jb       SHORT G_M41445_IG62
        add      r15, 4
        add      ebx, -4
        jmp      SHORT G_M41445_IG61
-						;; size=70 bbWeight=0.02 PerfScore 0.34
+						;; size=65 bbWeight=0.02 PerfScore 0.31
 G_M41445_IG60:
        cmp      ebx, 8
        jl       SHORT G_M41445_IG63
        mov      rdi, 0xD1FFAB1E      ; System.IntPtr
        call     CORINFO_HELP_NEWSFAST
        mov      rdi, qword ptr [r15]
        mov      qword ptr [rax+0x08], rdi
        cmp      r12d, dword ptr [r13+0x08]
        jae      SHORT G_M41445_IG64
        mov      edi, r12d
        lea      rdi, bword ptr [r13+8*rdi+0x10]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       cmp      ebx, 8
-       jb       SHORT G_M41445_IG62
        add      r15, 8
        add      ebx, -8
-						;; size=61 bbWeight=0.02 PerfScore 0.30
+						;; size=56 bbWeight=0.02 PerfScore 0.27
 G_M41445_IG61:
        inc      r12d
        cmp      dword ptr [r14+0x08], r12d
        jg       G_M41445_IG34
        jmp      G_M41445_IG32
 						;; size=18 bbWeight=0.04 PerfScore 0.25
 G_M41445_IG62:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 G_M41445_IG63:
        mov      edi, 40
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
        int3     
 						;; size=18 bbWeight=0 PerfScore 0.00
 G_M41445_IG64:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 3517, prolog size 24, PerfScore 833.03, instruction count 759, allocated bytes for code 3517 (MethodHash=31e95e1a) for method System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[] (FullOpts)
+; Total bytes of code 3321, prolog size 24, PerfScore 805.53, instruction count 715, allocated bytes for code 3321 (MethodHash=31e95e1a) for method System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[] (FullOpts)

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

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

@MihuBot
Copy link
Owner Author

MihuBot commented Jul 28, 2024

@xtqqczze

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant