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] xtqqczze/dotnet-runtime/spc-invert-nullcheck #765

Open
MihuBot opened this issue Oct 29, 2024 · 3 comments
Open

[JitDiff X64] xtqqczze/dotnet-runtime/spc-invert-nullcheck #765

MihuBot opened this issue Oct 29, 2024 · 3 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented Oct 29, 2024

Job completed in 19 minutes 4 seconds.

Diffs

Diffs
Found 319 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 39577396
Total bytes of diff: 39578869
Total bytes of delta: 1473 (0.00 % of base)
Total relative delta: 2.93
    diff is a regression.
    relative diff is a regression.


Top file regressions (bytes):
         915 : System.Private.CoreLib.dasm (0.01 % of base)
         270 : System.Net.Http.dasm (0.03 % of base)
          87 : System.Data.Common.dasm (0.01 % of base)
          50 : System.Private.Xml.dasm (0.00 % of base)
          48 : System.Threading.Tasks.Parallel.dasm (0.02 % of base)
          34 : System.Private.Uri.dasm (0.03 % of base)
          25 : System.IO.FileSystem.Watcher.dasm (0.09 % of base)
          23 : Microsoft.VisualBasic.Core.dasm (0.00 % of base)
          14 : System.Net.Primitives.dasm (0.01 % of base)
          10 : System.Formats.Tar.dasm (0.01 % of base)
           5 : System.Runtime.Numerics.dasm (0.00 % of base)
           5 : Microsoft.Extensions.FileProviders.Physical.dasm (0.03 % of base)
           5 : System.Net.Quic.dasm (0.00 % of base)
           5 : System.Configuration.ConfigurationManager.dasm (0.00 % of base)
           4 : System.Drawing.Primitives.dasm (0.01 % of base)
           4 : System.IO.Ports.dasm (0.01 % of base)
           3 : System.Net.Mail.dasm (0.00 % of base)
           1 : System.Net.NetworkInformation.dasm (0.00 % of base)

Top file improvements (bytes):
         -28 : System.Security.Cryptography.dasm (-0.00 % of base)
          -7 : System.Net.WebSockets.Client.dasm (-0.03 % of base)

20 total files with Code Size differences (2 improved, 18 regressed), 239 unchanged.

Top method regressions (bytes):
         381 (19.59 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:BlocklistAuthority(System.Net.Http.HttpAuthority,System.Exception):this (FullOpts)
         122 (2.22 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse:ProcessTerminal_HM_S_D(byref,ubyte,byref):ubyte (FullOpts)
         106 (5.80 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse:ProcessTerminal_HM(byref,ubyte,byref):ubyte (FullOpts)
          74 (5.03 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse:ProcessTerminal_D(byref,ubyte,byref):ubyte (FullOpts)
          42 (0.73 % of base) : System.Private.CoreLib.dasm - System.DateTimeFormat:FormatCustomized[ubyte](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
          42 (7.49 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
          37 (6.37 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Remove(System.__Canon):ubyte:this (FullOpts)
          36 (4.20 % of base) : System.Data.Common.dasm - System.Data.Common.DbCommand:ExecuteNonQueryAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task`1[int]:this (FullOpts)
          36 (3.71 % of base) : System.Data.Common.dasm - System.Data.Common.DbCommand:ExecuteScalarAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Object]:this (FullOpts)
          35 (7.51 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullAppCompatMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
          35 (7.35 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullDHMSMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
          35 (7.35 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullHMSFMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
          30 (0.65 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse:ProcessTerminal_HMS_F_D(byref,ubyte,byref):ubyte (FullOpts)
          28 (7.16 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullDHMMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
          28 (7.16 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullHMSMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
          28 (7.35 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:PartialAppCompatMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
          22 (12.15 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:Equals(System.Object):ubyte:this (FullOpts)
          21 (6.86 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullHMMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
          19 (2.48 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)
          19 (35.19 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:GetHashCode():int:this (FullOpts)
          16 (1.52 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Utils:IsHexOrOctValue(System.String,byref):ubyte (FullOpts) (2 methods)
          16 (3.31 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[System.__Canon,System.Nullable`1[int]]:Remove(System.Nullable`1[int]):ubyte:this (FullOpts)
          16 (3.56 % of base) : System.Private.CoreLib.dasm - System.Globalization.GlobalizationMode:LoadAppLocalIcuCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
          16 (1.01 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ubyte](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
          16 (11.03 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:Equals(System.Threading.Tasks.ValueTask`1[System.__Canon]):ubyte:this (FullOpts)
          16 (0.62 % of base) : System.Private.Uri.dasm - System.Uri:CheckAuthorityHelper(ulong,int,int,byref,byref,System.UriParser,byref):int:this (FullOpts)
          15 (1.51 % of base) : System.Data.Common.dasm - System.Data.Common.DbCommand:ExecuteDbDataReaderAsync(int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Data.Common.DbDataReader]:this (FullOpts)
          15 (0.84 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnection+ContentLengthReadStream+<DrainAsync>d__10:MoveNext():this (FullOpts)
          15 (1.75 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:LoadIntoBuffer(long,System.Threading.CancellationToken):this (FullOpts)
          14 (6.33 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullDMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
          11 (0.75 % of base) : System.IO.FileSystem.Watcher.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
          11 (0.57 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnection+ChunkedEncodingReadStream+<DrainAsync>d__16:MoveNext():this (FullOpts)
          10 (1.10 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse:ProcessTerminal_DHMSF(byref,ubyte,byref):ubyte (FullOpts)
          10 (0.36 % of base) : System.Net.Http.dasm - System.Net.Http.SocksHelper+<EstablishSocks4TunnelAsync>d__15:MoveNext():this (FullOpts)
          10 (0.19 % of base) : System.Net.Http.dasm - System.Net.Http.SocksHelper+<EstablishSocks5TunnelAsync>d__14:MoveNext():this (FullOpts)
          10 (1.98 % of base) : System.Private.CoreLib.dasm - System.Type:FilterNameImpl(System.Reflection.MemberInfo,System.Object,int):ubyte (FullOpts)
          10 (0.80 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.XmlSerializationWriterCodeGen:FindChoiceEnumValue(System.Xml.Serialization.ElementAccessor,System.Xml.Serialization.EnumMapping,ubyte):System.String (FullOpts)
          10 (0.98 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl:ParseEndElement():this (FullOpts)
          10 (1.49 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextWriter:WriteEndStartTag(ubyte):this (FullOpts)
           9 (1.45 % of base) : System.Private.Uri.dasm - System.Uri:GetRelativeSerializationString(int):System.String:this (FullOpts)
           7 (0.64 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.FileSystem:Kill(System.String) (FullOpts)
           7 (1.91 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:FindItemIndex(System.__Canon):int:this (FullOpts)
           7 (1.92 % of base) : System.IO.FileSystem.Watcher.dasm - System.IO.FileSystemWatcher:NotifyFileSystemEventArgs(int,System.ReadOnlySpan`1[ushort]):this (FullOpts)
           7 (0.88 % of base) : System.IO.FileSystem.Watcher.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvents():this (FullOpts)
           7 (1.93 % of base) : System.Net.Primitives.dasm - System.Net.Cookie:Equals(System.Object):ubyte:this (FullOpts)
           7 (2.48 % of base) : System.Net.Primitives.dasm - System.Net.CookieComparer:Equals(System.Net.Cookie,System.Net.Cookie):ubyte (FullOpts)
           7 (3.78 % of base) : System.Private.CoreLib.dasm - System.OrdinalComparer:System.Collections.Generic.IAlternateEqualityComparer<System.ReadOnlySpan<System.Char>,System.String>.Equals(System.ReadOnlySpan`1[ushort],System.String):ubyte:this (FullOpts)
           7 (5.79 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:op_Equality(System.Threading.Tasks.ValueTask`1[System.__Canon],System.Threading.Tasks.ValueTask`1[System.__Canon]):ubyte (FullOpts)
           6 (0.68 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Resize(int,ubyte):this (FullOpts)
           5 (0.73 % of base) : Microsoft.Extensions.FileProviders.Physical.dasm - Microsoft.Extensions.FileProviders.Physical.PollingFileChangeToken:GetLastWriteTimeUtc():System.DateTime:this (FullOpts)
           5 (0.62 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.Internal.InternalConfigHost:StaticGetStreamVersion(System.String):System.Configuration.Internal.FileVersion (FullOpts)
           5 (0.66 % of base) : System.Private.CoreLib.dasm - System.Enum:TryFormatPrimitiveDefault[long,long](System.RuntimeType,long,System.Span`1[ushort],byref):ubyte (FullOpts)
           5 (0.43 % of base) : System.Private.CoreLib.dasm - System.Enum:TryFormatPrimitiveNonDefault[int,long](System.RuntimeType,int,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           5 (0.41 % of base) : System.Private.CoreLib.dasm - System.Enum:TryFormatPrimitiveNonDefault[long,long](System.RuntimeType,long,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           5 (0.43 % of base) : System.Private.CoreLib.dasm - System.Enum:TryFormatPrimitiveNonDefault[short,long](System.RuntimeType,short,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           5 (10.20 % of base) : System.Formats.Tar.dasm - System.Formats.Tar.TarFile:GetEntryNameForBaseDirectory(System.String):System.String (FullOpts)
           5 (0.55 % of base) : System.Formats.Tar.dasm - System.Formats.Tar.TarHeader:WriteUstarName(System.Span`1[ubyte]):int:this (FullOpts)
           5 (4.00 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:get_NegativeLocalized():System.Globalization.TimeSpanFormat+FormatLiterals:this (FullOpts)
           5 (4.03 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:get_PositiveLocalized():System.Globalization.TimeSpanFormat+FormatLiterals:this (FullOpts)
           5 (1.23 % of base) : System.Private.CoreLib.dasm - System.Int16:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
           5 (1.25 % of base) : System.Private.CoreLib.dasm - System.Int32:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
           5 (1.18 % of base) : System.Private.CoreLib.dasm - System.Int64:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
           5 (1.18 % of base) : System.Private.CoreLib.dasm - System.IntPtr:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
           5 (3.11 % of base) : System.Private.CoreLib.dasm - System.IO.DirectoryInfo:get_Exists():ubyte:this (FullOpts)
           5 (3.11 % of base) : System.Private.CoreLib.dasm - System.IO.FileInfo:get_Exists():ubyte:this (FullOpts)
           5 (6.25 % of base) : System.Private.CoreLib.dasm - System.IO.FileStatus:GetCreationTime(Microsoft.Win32.SafeHandles.SafeFileHandle,ubyte):System.DateTimeOffset:this (FullOpts)
           5 (1.63 % of base) : System.Private.CoreLib.dasm - System.IO.FileSystem:GetCreationTime(Microsoft.Win32.SafeHandles.SafeFileHandle):System.DateTimeOffset (FullOpts)
           5 (4.31 % of base) : System.Private.CoreLib.dasm - System.IO.FileSystemInfo:get_CreationTime():System.DateTime:this (FullOpts)
           5 (5.81 % of base) : System.Private.CoreLib.dasm - System.IO.FileSystemInfo:get_CreationTimeCore():System.DateTimeOffset:this (FullOpts)
           5 (5.88 % of base) : System.Private.CoreLib.dasm - System.IO.FileSystemInfo:get_CreationTimeUtc():System.DateTime:this (FullOpts)
           5 (4.95 % of base) : System.Private.CoreLib.dasm - System.IO.FileSystemInfo:get_ExistsCore():ubyte:this (FullOpts)
           5 (5.21 % of base) : System.Private.CoreLib.dasm - System.IO.FileSystemInfo:get_LinkTarget():System.String:this (FullOpts)
           5 (8.20 % of base) : System.Private.CoreLib.dasm - System.IO.FileSystemInfo:Refresh():this (FullOpts)
           5 (0.90 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[short](short,System.String):ubyte:this (FullOpts)
           5 (5.10 % of base) : System.Net.Http.dasm - System.Net.Http.DiagnosticsHelper:GetMethodTag(System.Net.Http.HttpMethod,byref):System.Collections.Generic.KeyValuePair`2[System.String,System.Object] (FullOpts)
           5 (3.36 % of base) : System.Net.Http.dasm - System.Net.Http.HPack.HPackEncoder:EncodeValueStringPart(System.String,System.Span`1[ubyte]) (FullOpts)
           5 (2.08 % of base) : System.Net.Http.dasm - System.Net.Http.HttpMethod:CreateHttp1EncodedBytes():ubyte[]:this (FullOpts)
           5 (2.07 % of base) : System.Net.Http.dasm - System.Net.Http.HttpMethod:CreateHttp2EncodedBytes():ubyte[]:this (FullOpts)
           5 (2.67 % of base) : System.Net.Http.dasm - System.Net.Http.HttpMethod:CreateHttp3EncodedBytes():ubyte[]:this (FullOpts)
           5 (0.36 % of base) : System.Net.Http.dasm - System.Net.Http.Metrics.MetricsHandler:InitializeCommonTags(System.Net.Http.HttpRequestMessage):System.Diagnostics.TagList (FullOpts)
           5 (3.36 % of base) : System.Net.Http.dasm - System.Net.Http.QPack.QPackEncoder:EncodeValueStringPart(System.String,System.Span`1[ubyte]) (FullOpts)
           5 (0.92 % of base) : System.Net.NetworkInformation.dasm - System.Net.NetworkInformation.StringParsingHelpers:ParseIPv6GatewayAddressesFromRouteFile(System.Collections.Generic.List`1[System.Net.NetworkInformation.GatewayIPAddressInformation],System.String[],System.String,long) (FullOpts)
           5 (0.80 % of base) : System.Net.Quic.dasm - System.Net.Quic.ResettableValueTaskSource:TryGetValueTask(byref,System.Object,System.Threading.CancellationToken):ubyte:this (FullOpts)
           5 (0.14 % of base) : System.Runtime.Numerics.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
           5 (2.16 % of base) : System.Private.CoreLib.dasm - System.Reflection.TypeNameResolver:GetType(System.String,ubyte,ubyte,System.Reflection.Assembly):System.Type (FullOpts)
           5 (1.23 % of base) : System.Private.CoreLib.dasm - System.SByte:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
           5 (0.26 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.OpenSslCachedDirectoryStoreProvider:GetNativeCollection():Microsoft.Win32.SafeHandles.SafeX509StackHandle:this (FullOpts)
           5 (0.61 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:<AppendSpanFormattable>g__GrowAndAppendFormatted|20_0[int](byref,int,int,byref,System.String):ubyte (FullOpts)
           5 (0.59 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:<AppendSpanFormattable>g__GrowAndAppendFormatted|20_0[long](byref,long,int,byref,System.String):ubyte (FullOpts)
           5 (0.62 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:<AppendSpanFormattable>g__GrowAndAppendFormatted|20_0[short](byref,short,int,byref,System.String):ubyte (FullOpts)
           5 (0.60 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:<AppendSpanFormattable>g__GrowAndAppendFormatted|20_0[System.Nullable`1[int]](byref,System.Nullable`1[int],int,byref,System.String):ubyte (FullOpts)
           5 (0.48 % of base) : System.Private.CoreLib.dasm - System.TimeZoneInfo:TZif_CreateAdjustmentRuleForPosixFormat(System.String,System.DateTime,System.TimeSpan):System.TimeZoneInfo+AdjustmentRule (FullOpts)
           5 (0.18 % of base) : System.Private.Uri.dasm - System.Uri:ParseRemaining():this (FullOpts)
           5 (1.72 % of base) : System.Private.Xml.dasm - System.Xml.Schema.Datatype_hexBinary:TryParseValue(System.String,System.Xml.XmlNameTable,System.Xml.IXmlNamespaceResolver,byref):System.Exception:this (FullOpts)
           5 (1.47 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryFormat(byte,System.Span`1[ushort],byref):ubyte (FullOpts)
           5 (1.52 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryFormat(int,System.Span`1[ushort],byref):ubyte (FullOpts)
           5 (1.36 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryFormat(long,System.Span`1[ushort],byref):ubyte (FullOpts)
           5 (1.47 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryFormat(short,System.Span`1[ushort],byref):ubyte (FullOpts)
           4 (0.25 % of base) : System.Drawing.Primitives.dasm - System.Drawing.ColorTranslator:FromHtml(System.String):System.Drawing.Color (FullOpts)
           4 (0.67 % of base) : System.Private.CoreLib.dasm - System.IO.Directory:CreateTempSubdirectoryCore(System.String):System.String (FullOpts)

Top method improvements (bytes):
        -165 (-5.48 % of base) : System.Net.Http.dasm - System.Net.Http.SocksHelper+<EstablishSocksTunnelAsync>d__13:MoveNext():this (FullOpts)
         -15 (-1.25 % of base) : System.Net.Http.dasm - System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
         -15 (-1.29 % of base) : System.Net.Http.dasm - System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
         -15 (-5.49 % of base) : System.Private.CoreLib.dasm - System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this (FullOpts)
         -14 (-2.67 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.TaskAwaiter:OutputWaitEtwEvents(System.Threading.Tasks.Task,System.Action):System.Action (FullOpts)
         -11 (-1.15 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task:InternalWaitCore(int,System.Threading.CancellationToken):ubyte:this (FullOpts)
          -7 (-0.90 % of base) : System.Private.CoreLib.dasm - System.IO.Path:GetTempFileName():System.String (FullOpts)
          -7 (-0.87 % of base) : System.Net.WebSockets.Client.dasm - System.Net.WebSockets.WebSocketHandle:CreateSecKeyAndSecWebSocketAccept():System.Collections.Generic.KeyValuePair`2[System.String,System.String] (FullOpts)
          -6 (-4.48 % of base) : System.Private.CoreLib.dasm - System.DateTimeParse:SetIfStartsWith(System.ReadOnlySpan`1[ushort],System.String,int,byref,byref) (FullOpts)
          -6 (-1.81 % of base) : System.Net.Http.dasm - System.Net.Http.HPack.HPackEncoder:EncodeStringLiteral(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
          -6 (-1.81 % of base) : System.Net.Http.dasm - System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
          -5 (-0.81 % of base) : System.Private.CoreLib.dasm - System.DateOnly:TryParseExactInternal(System.ReadOnlySpan`1[ushort],System.String[],System.IFormatProvider,int,byref):int (FullOpts)
          -5 (-5.88 % of base) : System.Private.CoreLib.dasm - System.Guid:TryParseExact(System.String,System.String,byref):ubyte (FullOpts)
          -5 (-6.58 % of base) : System.Private.CoreLib.dasm - System.Number:TryCopyTo[ubyte](System.String,System.Span`1[ubyte],byref):ubyte (FullOpts)
          -5 (-0.73 % of base) : System.Private.CoreLib.dasm - System.TimeOnly:TryParseExactInternal(System.ReadOnlySpan`1[ushort],System.String[],System.IFormatProvider,int,byref):int (FullOpts)
          -4 (-0.68 % of base) : System.Private.CoreLib.dasm - System.Environment:GetEnvironmentVariables():System.Collections.IDictionary (FullOpts)
          -4 (-0.22 % of base) : System.Private.CoreLib.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
          -4 (-0.46 % of base) : System.Net.NetworkInformation.dasm - System.Net.NetworkInformation.StringParsingHelpers:ParseDhcpServerAddressesFromLeasesFile(System.Collections.Generic.List`1[System.Net.IPAddress],System.String,System.String) (FullOpts)
          -4 (-0.85 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.TaskAwaiter+<>c:<OutputWaitEtwEvents>b__12_0(System.Action,System.Threading.Tasks.Task):this (FullOpts)
          -4 (-0.69 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[double](double,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[double],System.Span`1[ushort],byref):ubyte (FullOpts)
          -4 (-0.70 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[int](int,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[int],System.Span`1[ushort],byref):ubyte (FullOpts)
          -4 (-0.70 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[long](long,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[long],System.Span`1[ushort],byref):ubyte (FullOpts)
          -4 (-0.70 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[short](short,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[short],System.Span`1[ushort],byref):ubyte (FullOpts)
          -4 (-0.70 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[System.__Canon](System.__Canon,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.__Canon],System.Span`1[ushort],byref):ubyte (FullOpts)
          -4 (-0.70 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[System.Nullable`1[int]](System.Nullable`1[int],System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts)
          -4 (-0.68 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float],System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.Numerics.Vector`1[float]],System.Span`1[ushort],byref):ubyte (FullOpts)
          -4 (-0.70 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[ubyte](ubyte,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[ubyte],System.Span`1[ushort],byref):ubyte (FullOpts)
          -4 (-0.22 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:ParseDistinguishedName(System.String,System.String,ubyte,ubyte):System.Collections.Generic.List`1[ubyte[]] (FullOpts)
          -3 (-2.03 % of base) : System.Private.CoreLib.dasm - System.__DTString:Match(System.String):ubyte:this (FullOpts)
          -3 (-2.16 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:op_Inequality(System.Threading.Tasks.ValueTask`1[System.__Canon],System.Threading.Tasks.ValueTask`1[System.__Canon]):ubyte (FullOpts)
          -3 (-0.66 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl:AddAttribute(int,int):System.Xml.XmlTextReaderImpl+NodeData:this (FullOpts)
          -3 (-0.17 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl:ParseElement():this (FullOpts)
          -3 (-0.42 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl:ParseElementAsync_SetElement(int,int):System.Threading.Tasks.Task:this (FullOpts)
          -2 (-0.15 % of base) : System.Private.Xml.dasm - System.Xml.XmlWellFormedWriter+<WriteWhitespaceAsync>d__139:MoveNext():this (FullOpts)
          -1 (-0.39 % of base) : System.Private.CoreLib.dasm - System.ComAwareWeakReference:SetTarget(byref,System.Object,System.ComAwareWeakReference+ComInfo) (FullOpts)

Top method regressions (percentages):
          19 (35.19 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:GetHashCode():int:this (FullOpts)
         381 (19.59 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:BlocklistAuthority(System.Net.Http.HttpAuthority,System.Exception):this (FullOpts)
          22 (12.15 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:Equals(System.Object):ubyte:this (FullOpts)
          16 (11.03 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:Equals(System.Threading.Tasks.ValueTask`1[System.__Canon]):ubyte:this (FullOpts)
           5 (10.20 % of base) : System.Formats.Tar.dasm - System.Formats.Tar.TarFile:GetEntryNameForBaseDirectory(System.String):System.String (FullOpts)
           5 (8.20 % of base) : System.Private.CoreLib.dasm - System.IO.FileSystemInfo:Refresh():this (FullOpts)
          35 (7.51 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullAppCompatMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
          42 (7.49 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
          35 (7.35 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullDHMSMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
          35 (7.35 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullHMSFMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
          28 (7.35 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:PartialAppCompatMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
          28 (7.16 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullDHMMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
          28 (7.16 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullHMSMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
          21 (6.86 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullHMMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
          37 (6.37 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Remove(System.__Canon):ubyte:this (FullOpts)
          14 (6.33 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullDMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
           5 (6.25 % of base) : System.Private.CoreLib.dasm - System.IO.FileStatus:GetCreationTime(Microsoft.Win32.SafeHandles.SafeFileHandle,ubyte):System.DateTimeOffset:this (FullOpts)
           5 (5.88 % of base) : System.Private.CoreLib.dasm - System.IO.FileSystemInfo:get_CreationTimeUtc():System.DateTime:this (FullOpts)
           5 (5.81 % of base) : System.Private.CoreLib.dasm - System.IO.FileSystemInfo:get_CreationTimeCore():System.DateTimeOffset:this (FullOpts)
         106 (5.80 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse:ProcessTerminal_HM(byref,ubyte,byref):ubyte (FullOpts)
           7 (5.79 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:op_Equality(System.Threading.Tasks.ValueTask`1[System.__Canon],System.Threading.Tasks.ValueTask`1[System.__Canon]):ubyte (FullOpts)
           5 (5.21 % of base) : System.Private.CoreLib.dasm - System.IO.FileSystemInfo:get_LinkTarget():System.String:this (FullOpts)
           5 (5.10 % of base) : System.Net.Http.dasm - System.Net.Http.DiagnosticsHelper:GetMethodTag(System.Net.Http.HttpMethod,byref):System.Collections.Generic.KeyValuePair`2[System.String,System.Object] (FullOpts)
          74 (5.03 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse:ProcessTerminal_D(byref,ubyte,byref):ubyte (FullOpts)
           5 (4.95 % of base) : System.Private.CoreLib.dasm - System.IO.FileSystemInfo:get_ExistsCore():ubyte:this (FullOpts)
           5 (4.31 % of base) : System.Private.CoreLib.dasm - System.IO.FileSystemInfo:get_CreationTime():System.DateTime:this (FullOpts)
          36 (4.20 % of base) : System.Data.Common.dasm - System.Data.Common.DbCommand:ExecuteNonQueryAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task`1[int]:this (FullOpts)
           5 (4.03 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:get_PositiveLocalized():System.Globalization.TimeSpanFormat+FormatLiterals:this (FullOpts)
           5 (4.00 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:get_NegativeLocalized():System.Globalization.TimeSpanFormat+FormatLiterals:this (FullOpts)
           3 (3.90 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.Numerics.Vector`1[float]]:GetHashCode():int:this (FullOpts)
           7 (3.78 % of base) : System.Private.CoreLib.dasm - System.OrdinalComparer:System.Collections.Generic.IAlternateEqualityComparer<System.ReadOnlySpan<System.Char>,System.String>.Equals(System.ReadOnlySpan`1[ushort],System.String):ubyte:this (FullOpts)
          36 (3.71 % of base) : System.Data.Common.dasm - System.Data.Common.DbCommand:ExecuteScalarAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Object]:this (FullOpts)
          16 (3.56 % of base) : System.Private.CoreLib.dasm - System.Globalization.GlobalizationMode:LoadAppLocalIcuCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
           2 (3.39 % of base) : System.Private.Xml.dasm - System.Xml.XmlCharacterData:CheckOnData(System.String):ubyte (FullOpts)
           5 (3.36 % of base) : System.Net.Http.dasm - System.Net.Http.HPack.HPackEncoder:EncodeValueStringPart(System.String,System.Span`1[ubyte]) (FullOpts)
           5 (3.36 % of base) : System.Net.Http.dasm - System.Net.Http.QPack.QPackEncoder:EncodeValueStringPart(System.String,System.Span`1[ubyte]) (FullOpts)
          16 (3.31 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[System.__Canon,System.Nullable`1[int]]:Remove(System.Nullable`1[int]):ubyte:this (FullOpts)
           5 (3.11 % of base) : System.Private.CoreLib.dasm - System.IO.DirectoryInfo:get_Exists():ubyte:this (FullOpts)
           5 (3.11 % of base) : System.Private.CoreLib.dasm - System.IO.FileInfo:get_Exists():ubyte:this (FullOpts)
           5 (2.67 % of base) : System.Net.Http.dasm - System.Net.Http.HttpMethod:CreateHttp3EncodedBytes():ubyte[]:this (FullOpts)
           7 (2.48 % of base) : System.Net.Primitives.dasm - System.Net.CookieComparer:Equals(System.Net.Cookie,System.Net.Cookie):ubyte (FullOpts)
          19 (2.48 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)
         122 (2.22 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse:ProcessTerminal_HM_S_D(byref,ubyte,byref):ubyte (FullOpts)
           5 (2.16 % of base) : System.Private.CoreLib.dasm - System.Reflection.TypeNameResolver:GetType(System.String,ubyte,ubyte,System.Reflection.Assembly):System.Type (FullOpts)
           5 (2.08 % of base) : System.Net.Http.dasm - System.Net.Http.HttpMethod:CreateHttp1EncodedBytes():ubyte[]:this (FullOpts)
           5 (2.07 % of base) : System.Net.Http.dasm - System.Net.Http.HttpMethod:CreateHttp2EncodedBytes():ubyte[]:this (FullOpts)
          10 (1.98 % of base) : System.Private.CoreLib.dasm - System.Type:FilterNameImpl(System.Reflection.MemberInfo,System.Object,int):ubyte (FullOpts)
           7 (1.93 % of base) : System.Net.Primitives.dasm - System.Net.Cookie:Equals(System.Object):ubyte:this (FullOpts)
           7 (1.92 % of base) : System.IO.FileSystem.Watcher.dasm - System.IO.FileSystemWatcher:NotifyFileSystemEventArgs(int,System.ReadOnlySpan`1[ushort]):this (FullOpts)
           7 (1.91 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:FindItemIndex(System.__Canon):int:this (FullOpts)
           3 (1.75 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:ParseOid(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
          15 (1.75 % of base) : System.Net.Http.dasm - System.Net.Http.HttpContent:LoadIntoBuffer(long,System.Threading.CancellationToken):this (FullOpts)
           2 (1.72 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
           5 (1.72 % of base) : System.Private.Xml.dasm - System.Xml.Schema.Datatype_hexBinary:TryParseValue(System.String,System.Xml.XmlNameTable,System.Xml.IXmlNamespaceResolver,byref):System.Exception:this (FullOpts)
           5 (1.63 % of base) : System.Private.CoreLib.dasm - System.IO.FileSystem:GetCreationTime(Microsoft.Win32.SafeHandles.SafeFileHandle):System.DateTimeOffset (FullOpts)
           5 (1.52 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryFormat(int,System.Span`1[ushort],byref):ubyte (FullOpts)
          16 (1.52 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Utils:IsHexOrOctValue(System.String,byref):ubyte (FullOpts) (2 methods)
          15 (1.51 % of base) : System.Data.Common.dasm - System.Data.Common.DbCommand:ExecuteDbDataReaderAsync(int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Data.Common.DbDataReader]:this (FullOpts)
          10 (1.49 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextWriter:WriteEndStartTag(ubyte):this (FullOpts)
           5 (1.47 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryFormat(byte,System.Span`1[ushort],byref):ubyte (FullOpts)
           5 (1.47 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryFormat(short,System.Span`1[ushort],byref):ubyte (FullOpts)
           9 (1.45 % of base) : System.Private.Uri.dasm - System.Uri:GetRelativeSerializationString(int):System.String:this (FullOpts)
           5 (1.36 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryFormat(long,System.Span`1[ushort],byref):ubyte (FullOpts)
           5 (1.25 % of base) : System.Private.CoreLib.dasm - System.Int32:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
           5 (1.23 % of base) : System.Private.CoreLib.dasm - System.Int16:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
           5 (1.23 % of base) : System.Private.CoreLib.dasm - System.SByte:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
           5 (1.18 % of base) : System.Private.CoreLib.dasm - System.Int64:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
           5 (1.18 % of base) : System.Private.CoreLib.dasm - System.IntPtr:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          10 (1.10 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse:ProcessTerminal_DHMSF(byref,ubyte,byref):ubyte (FullOpts)
           4 (1.05 % of base) : System.IO.Ports.dasm - System.IO.Ports.SerialStream+SerialStreamIORequest:.ctor(System.IO.Ports.SerialStream,System.Threading.CancellationToken):this (FullOpts)
           1 (1.02 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:StringToAnsiString(System.String,ulong,int,ubyte,ubyte):int (FullOpts)
          16 (1.01 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ubyte](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
          10 (0.98 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl:ParseEndElement():this (FullOpts)
           5 (0.92 % of base) : System.Net.NetworkInformation.dasm - System.Net.NetworkInformation.StringParsingHelpers:ParseIPv6GatewayAddressesFromRouteFile(System.Collections.Generic.List`1[System.Net.NetworkInformation.GatewayIPAddressInformation],System.String[],System.String,long) (FullOpts)
           5 (0.90 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[short](short,System.String):ubyte:this (FullOpts)
           7 (0.88 % of base) : System.IO.FileSystem.Watcher.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvents():this (FullOpts)
          15 (0.84 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnection+ContentLengthReadStream+<DrainAsync>d__10:MoveNext():this (FullOpts)
          10 (0.80 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.XmlSerializationWriterCodeGen:FindChoiceEnumValue(System.Xml.Serialization.ElementAccessor,System.Xml.Serialization.EnumMapping,ubyte):System.String (FullOpts)
           5 (0.80 % of base) : System.Net.Quic.dasm - System.Net.Quic.ResettableValueTaskSource:TryGetValueTask(byref,System.Object,System.Threading.CancellationToken):ubyte:this (FullOpts)
           4 (0.76 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl:ParseEndElementAsync_CheckNameAndParse():System.Threading.Tasks.Task:this (FullOpts)
          11 (0.75 % of base) : System.IO.FileSystem.Watcher.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
          42 (0.73 % of base) : System.Private.CoreLib.dasm - System.DateTimeFormat:FormatCustomized[ubyte](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
           5 (0.73 % of base) : Microsoft.Extensions.FileProviders.Physical.dasm - Microsoft.Extensions.FileProviders.Physical.PollingFileChangeToken:GetLastWriteTimeUtc():System.DateTime:this (FullOpts)
           4 (0.72 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[int](int,System.String):ubyte:this (FullOpts)
           6 (0.68 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Resize(int,ubyte):this (FullOpts)
           4 (0.67 % of base) : System.Private.CoreLib.dasm - System.IO.Directory:CreateTempSubdirectoryCore(System.String):System.String (FullOpts)
           5 (0.66 % of base) : System.Private.CoreLib.dasm - System.Enum:TryFormatPrimitiveDefault[long,long](System.RuntimeType,long,System.Span`1[ushort],byref):ubyte (FullOpts)
          30 (0.65 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse:ProcessTerminal_HMS_F_D(byref,ubyte,byref):ubyte (FullOpts)
           7 (0.64 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.FileSystem:Kill(System.String) (FullOpts)
           5 (0.62 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.Internal.InternalConfigHost:StaticGetStreamVersion(System.String):System.Configuration.Internal.FileVersion (FullOpts)
          16 (0.62 % of base) : System.Private.Uri.dasm - System.Uri:CheckAuthorityHelper(ulong,int,int,byref,byref,System.UriParser,byref):int:this (FullOpts)
           5 (0.62 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:<AppendSpanFormattable>g__GrowAndAppendFormatted|20_0[short](byref,short,int,byref,System.String):ubyte (FullOpts)
           5 (0.61 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:<AppendSpanFormattable>g__GrowAndAppendFormatted|20_0[int](byref,int,int,byref,System.String):ubyte (FullOpts)
           5 (0.60 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:<AppendSpanFormattable>g__GrowAndAppendFormatted|20_0[System.Nullable`1[int]](byref,System.Nullable`1[int],int,byref,System.String):ubyte (FullOpts)
           5 (0.59 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:<AppendSpanFormattable>g__GrowAndAppendFormatted|20_0[long](byref,long,int,byref,System.String):ubyte (FullOpts)
          11 (0.57 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnection+ChunkedEncodingReadStream+<DrainAsync>d__16:MoveNext():this (FullOpts)
           5 (0.55 % of base) : System.Formats.Tar.dasm - System.Formats.Tar.TarHeader:WriteUstarName(System.Span`1[ubyte]):int:this (FullOpts)
           5 (0.48 % of base) : System.Private.CoreLib.dasm - System.TimeZoneInfo:TZif_CreateAdjustmentRuleForPosixFormat(System.String,System.DateTime,System.TimeSpan):System.TimeZoneInfo+AdjustmentRule (FullOpts)
           5 (0.43 % of base) : System.Private.CoreLib.dasm - System.Enum:TryFormatPrimitiveNonDefault[int,long](System.RuntimeType,int,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           5 (0.43 % of base) : System.Private.CoreLib.dasm - System.Enum:TryFormatPrimitiveNonDefault[short,long](System.RuntimeType,short,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

Top method improvements (percentages):
          -5 (-6.58 % of base) : System.Private.CoreLib.dasm - System.Number:TryCopyTo[ubyte](System.String,System.Span`1[ubyte],byref):ubyte (FullOpts)
          -5 (-5.88 % of base) : System.Private.CoreLib.dasm - System.Guid:TryParseExact(System.String,System.String,byref):ubyte (FullOpts)
         -15 (-5.49 % of base) : System.Private.CoreLib.dasm - System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this (FullOpts)
        -165 (-5.48 % of base) : System.Net.Http.dasm - System.Net.Http.SocksHelper+<EstablishSocksTunnelAsync>d__13:MoveNext():this (FullOpts)
          -6 (-4.48 % of base) : System.Private.CoreLib.dasm - System.DateTimeParse:SetIfStartsWith(System.ReadOnlySpan`1[ushort],System.String,int,byref,byref) (FullOpts)
         -14 (-2.67 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.TaskAwaiter:OutputWaitEtwEvents(System.Threading.Tasks.Task,System.Action):System.Action (FullOpts)
          -3 (-2.16 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.ValueTask`1[System.__Canon]:op_Inequality(System.Threading.Tasks.ValueTask`1[System.__Canon],System.Threading.Tasks.ValueTask`1[System.__Canon]):ubyte (FullOpts)
          -3 (-2.03 % of base) : System.Private.CoreLib.dasm - System.__DTString:Match(System.String):ubyte:this (FullOpts)
          -6 (-1.81 % of base) : System.Net.Http.dasm - System.Net.Http.HPack.HPackEncoder:EncodeStringLiteral(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
          -6 (-1.81 % of base) : System.Net.Http.dasm - System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
         -15 (-1.29 % of base) : System.Net.Http.dasm - System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
         -15 (-1.25 % of base) : System.Net.Http.dasm - System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
         -11 (-1.15 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task:InternalWaitCore(int,System.Threading.CancellationToken):ubyte:this (FullOpts)
          -7 (-0.90 % of base) : System.Private.CoreLib.dasm - System.IO.Path:GetTempFileName():System.String (FullOpts)
          -7 (-0.87 % of base) : System.Net.WebSockets.Client.dasm - System.Net.WebSockets.WebSocketHandle:CreateSecKeyAndSecWebSocketAccept():System.Collections.Generic.KeyValuePair`2[System.String,System.String] (FullOpts)
          -4 (-0.85 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.TaskAwaiter+<>c:<OutputWaitEtwEvents>b__12_0(System.Action,System.Threading.Tasks.Task):this (FullOpts)
          -5 (-0.81 % of base) : System.Private.CoreLib.dasm - System.DateOnly:TryParseExactInternal(System.ReadOnlySpan`1[ushort],System.String[],System.IFormatProvider,int,byref):int (FullOpts)
          -5 (-0.73 % of base) : System.Private.CoreLib.dasm - System.TimeOnly:TryParseExactInternal(System.ReadOnlySpan`1[ushort],System.String[],System.IFormatProvider,int,byref):int (FullOpts)
          -4 (-0.70 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[System.__Canon](System.__Canon,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.__Canon],System.Span`1[ushort],byref):ubyte (FullOpts)
          -4 (-0.70 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[int](int,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[int],System.Span`1[ushort],byref):ubyte (FullOpts)
          -4 (-0.70 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[long](long,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[long],System.Span`1[ushort],byref):ubyte (FullOpts)
          -4 (-0.70 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[short](short,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[short],System.Span`1[ushort],byref):ubyte (FullOpts)
          -4 (-0.70 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[ubyte](ubyte,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[ubyte],System.Span`1[ushort],byref):ubyte (FullOpts)
          -4 (-0.70 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[System.Nullable`1[int]](System.Nullable`1[int],System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts)
          -4 (-0.69 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[double](double,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[double],System.Span`1[ushort],byref):ubyte (FullOpts)
          -4 (-0.68 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float],System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.Numerics.Vector`1[float]],System.Span`1[ushort],byref):ubyte (FullOpts)
          -4 (-0.68 % of base) : System.Private.CoreLib.dasm - System.Environment:GetEnvironmentVariables():System.Collections.IDictionary (FullOpts)
          -3 (-0.66 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl:AddAttribute(int,int):System.Xml.XmlTextReaderImpl+NodeData:this (FullOpts)
          -4 (-0.46 % of base) : System.Net.NetworkInformation.dasm - System.Net.NetworkInformation.StringParsingHelpers:ParseDhcpServerAddressesFromLeasesFile(System.Collections.Generic.List`1[System.Net.IPAddress],System.String,System.String) (FullOpts)
          -3 (-0.42 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl:ParseElementAsync_SetElement(int,int):System.Threading.Tasks.Task:this (FullOpts)
          -1 (-0.39 % of base) : System.Private.CoreLib.dasm - System.ComAwareWeakReference:SetTarget(byref,System.Object,System.ComAwareWeakReference+ComInfo) (FullOpts)
          -4 (-0.22 % of base) : System.Private.CoreLib.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
          -4 (-0.22 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:ParseDistinguishedName(System.String,System.String,ubyte,ubyte):System.Collections.Generic.List`1[ubyte[]] (FullOpts)
          -3 (-0.17 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl:ParseElement():this (FullOpts)
          -2 (-0.15 % of base) : System.Private.Xml.dasm - System.Xml.XmlWellFormedWriter+<WriteWhitespaceAsync>d__139:MoveNext():this (FullOpts)

163 total methods with Code Size differences (35 improved, 128 regressed), 232494 unchanged.

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

Artifacts:

xtqqczze referenced this issue in xtqqczze/dotnet-runtime Oct 29, 2024
@MihuBot
Copy link
Owner Author

MihuBot commented Oct 29, 2024

Top method regressions

42 (7.49 % of base) - System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this
 ; Assembly listing for method System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 48 single block inlinees; 18 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] ( 16,  9.50)   byref  ->  rbx         this single-def
 ;  V01 arg1         [V01,T69] (  1,  1   )  struct (40) [rbp+0x10]  do-not-enreg[SF] ld-addr-op single-def <System.Globalization.TimeSpanFormat+FormatLiterals>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V03 tmp1         [V03    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V04 tmp2         [V04    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V05 tmp3         [V05    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V06 tmp4         [V06    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V07 tmp5         [V07    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V08 tmp6         [V08    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V09 tmp7         [V09    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V10 tmp8         [V10    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V11 tmp9         [V11    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V12 tmp10        [V12    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V13 tmp11        [V13    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V14 tmp12        [V14    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V15 tmp13        [V15    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
 ;  V16 tmp14        [V16,T02] (  4,  4   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.String>
-;* V17 tmp15        [V17    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V18 tmp16        [V18    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V17 tmp15        [V17    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V18 tmp16        [V18    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V19 tmp17        [V19,T16] (  2,  2   )   byref  ->  rax         single-def "Inlining Arg"
 ;  V20 tmp18        [V20,T22] (  2,  2   )     int  ->  rsi         "Inlining Arg"
 ;  V21 tmp19        [V21,T46] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V22 tmp20        [V22    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V23 tmp21        [V23    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;  V24 tmp22        [V24,T47] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V25 tmp23        [V25    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V26 tmp24        [V26    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V27 tmp25        [V27    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V28 tmp26        [V28    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V29 tmp27        [V29    ] (  0,  0   )   byref  ->  zero-ref    "impAppendStmt"
 ;* V30 tmp28        [V30    ] (  0,  0   )   byref  ->  zero-ref    single-def "impAppendStmt"
 ;* V31 tmp29        [V31    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V32 tmp30        [V32    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V33 tmp31        [V33    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V34 tmp32        [V34    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V35 tmp33        [V35    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
 ;  V36 tmp34        [V36,T03] (  4,  4   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.String>
-;* V37 tmp35        [V37    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V38 tmp36        [V38    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V37 tmp35        [V37    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V38 tmp36        [V38    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V39 tmp37        [V39,T17] (  2,  2   )   byref  ->  rax         single-def "Inlining Arg"
 ;  V40 tmp38        [V40,T23] (  2,  2   )     int  ->  rsi         "Inlining Arg"
 ;  V41 tmp39        [V41,T48] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V42 tmp40        [V42    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V43 tmp41        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;  V44 tmp42        [V44,T49] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V45 tmp43        [V45    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V46 tmp44        [V46    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V47 tmp45        [V47    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V48 tmp46        [V48    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V49 tmp47        [V49    ] (  0,  0   )   byref  ->  zero-ref    "impAppendStmt"
 ;* V50 tmp48        [V50    ] (  0,  0   )   byref  ->  zero-ref    single-def "impAppendStmt"
 ;* V51 tmp49        [V51    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V52 tmp50        [V52    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V53 tmp51        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V54 tmp52        [V54    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V55 tmp53        [V55    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
 ;  V56 tmp54        [V56,T04] (  4,  4   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.String>
-;* V57 tmp55        [V57    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V58 tmp56        [V58    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V57 tmp55        [V57    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V58 tmp56        [V58    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V59 tmp57        [V59,T18] (  2,  2   )   byref  ->  rax         single-def "Inlining Arg"
 ;  V60 tmp58        [V60,T24] (  2,  2   )     int  ->  rsi         "Inlining Arg"
 ;  V61 tmp59        [V61,T50] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V62 tmp60        [V62    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V63 tmp61        [V63    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;  V64 tmp62        [V64,T51] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V65 tmp63        [V65    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V66 tmp64        [V66    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V67 tmp65        [V67    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V68 tmp66        [V68    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V69 tmp67        [V69    ] (  0,  0   )   byref  ->  zero-ref    "impAppendStmt"
 ;* V70 tmp68        [V70    ] (  0,  0   )   byref  ->  zero-ref    single-def "impAppendStmt"
 ;* V71 tmp69        [V71    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V72 tmp70        [V72    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V73 tmp71        [V73    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V74 tmp72        [V74    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V75 tmp73        [V75    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
 ;  V76 tmp74        [V76,T05] (  4,  4   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.String>
-;* V77 tmp75        [V77    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V78 tmp76        [V78    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V77 tmp75        [V77    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V78 tmp76        [V78    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V79 tmp77        [V79,T19] (  2,  2   )   byref  ->  rax         single-def "Inlining Arg"
 ;  V80 tmp78        [V80,T25] (  2,  2   )     int  ->  rsi         "Inlining Arg"
 ;  V81 tmp79        [V81,T52] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V82 tmp80        [V82    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V83 tmp81        [V83    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;  V84 tmp82        [V84,T53] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V85 tmp83        [V85    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V86 tmp84        [V86    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V87 tmp85        [V87    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V88 tmp86        [V88    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V89 tmp87        [V89    ] (  0,  0   )   byref  ->  zero-ref    "impAppendStmt"
 ;* V90 tmp88        [V90    ] (  0,  0   )   byref  ->  zero-ref    single-def "impAppendStmt"
 ;* V91 tmp89        [V91    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V92 tmp90        [V92    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V93 tmp91        [V93    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V94 tmp92        [V94    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V95 tmp93        [V95    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
 ;  V96 tmp94        [V96,T06] (  4,  4   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.String>
-;* V97 tmp95        [V97    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V98 tmp96        [V98    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V97 tmp95        [V97    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V98 tmp96        [V98    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V99 tmp97        [V99,T20] (  2,  2   )   byref  ->  rax         single-def "Inlining Arg"
 ;  V100 tmp98       [V100,T26] (  2,  2   )     int  ->  rsi         "Inlining Arg"
 ;  V101 tmp99       [V101,T54] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V102 tmp100      [V102    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V103 tmp101      [V103    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;  V104 tmp102      [V104,T55] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V105 tmp103      [V105    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V106 tmp104      [V106    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V107 tmp105      [V107    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V108 tmp106      [V108    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V109 tmp107      [V109    ] (  0,  0   )   byref  ->  zero-ref    "impAppendStmt"
 ;* V110 tmp108      [V110    ] (  0,  0   )   byref  ->  zero-ref    single-def "impAppendStmt"
 ;* V111 tmp109      [V111    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V112 tmp110      [V112    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V113 tmp111      [V113    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V114 tmp112      [V114    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V115 tmp113      [V115    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
 ;  V116 tmp114      [V116,T07] (  4,  4   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.String>
-;* V117 tmp115      [V117    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V118 tmp116      [V118    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V117 tmp115      [V117    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V118 tmp116      [V118    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V119 tmp117      [V119,T21] (  2,  2   )   byref  ->  rax         single-def "Inlining Arg"
 ;  V120 tmp118      [V120,T27] (  2,  2   )     int  ->  rsi         "Inlining Arg"
 ;  V121 tmp119      [V121,T15] (  4,  2   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V122 tmp120      [V122    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V123 tmp121      [V123    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;  V124 tmp122      [V124,T56] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V125 tmp123      [V125    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V126 tmp124      [V126    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V127 tmp125      [V127    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V128 tmp126      [V128    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V129 tmp127      [V129    ] (  0,  0   )   byref  ->  zero-ref    "impAppendStmt"
 ;* V130 tmp128      [V130    ] (  0,  0   )   byref  ->  zero-ref    single-def "impAppendStmt"
 ;* V131 tmp129      [V131    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V132 tmp130      [V132    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V133 tmp131      [V133    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V134 tmp132      [V134    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;  V135 tmp133      [V135,T34] (  2,  1   )   byref  ->  rdi         single-def "field V03._reference (fldOffset=0x0)" P-INDEP
 ;  V136 tmp134      [V136,T57] (  2,  1   )     int  ->  rdx         "field V03._length (fldOffset=0x8)" P-INDEP
 ;* V137 tmp135      [V137    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V04._reference (fldOffset=0x0)" P-INDEP
 ;* V138 tmp136      [V138    ] (  0,  0   )     int  ->  zero-ref    "field V04._length (fldOffset=0x8)" P-INDEP
 ;  V139 tmp137      [V139,T35] (  2,  1   )   byref  ->  rdi         single-def "field V05._reference (fldOffset=0x0)" P-INDEP
 ;  V140 tmp138      [V140,T58] (  2,  1   )     int  ->  rdx         "field V05._length (fldOffset=0x8)" P-INDEP
 ;* V141 tmp139      [V141    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V06._reference (fldOffset=0x0)" P-INDEP
 ;* V142 tmp140      [V142    ] (  0,  0   )     int  ->  zero-ref    "field V06._length (fldOffset=0x8)" P-INDEP
 ;  V143 tmp141      [V143,T36] (  2,  1   )   byref  ->  rdi         single-def "field V07._reference (fldOffset=0x0)" P-INDEP
 ;  V144 tmp142      [V144,T59] (  2,  1   )     int  ->  rdx         "field V07._length (fldOffset=0x8)" P-INDEP
 ;* V145 tmp143      [V145    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V08._reference (fldOffset=0x0)" P-INDEP
 ;* V146 tmp144      [V146    ] (  0,  0   )     int  ->  zero-ref    "field V08._length (fldOffset=0x8)" P-INDEP
 ;  V147 tmp145      [V147,T37] (  2,  1   )   byref  ->  rdi         single-def "field V09._reference (fldOffset=0x0)" P-INDEP
 ;  V148 tmp146      [V148,T60] (  2,  1   )     int  ->  rdx         "field V09._length (fldOffset=0x8)" P-INDEP
 ;* V149 tmp147      [V149    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V10._reference (fldOffset=0x0)" P-INDEP
 ;* V150 tmp148      [V150    ] (  0,  0   )     int  ->  zero-ref    "field V10._length (fldOffset=0x8)" P-INDEP
 ;  V151 tmp149      [V151,T38] (  2,  1   )   byref  ->  rdi         single-def "field V11._reference (fldOffset=0x0)" P-INDEP
 ;  V152 tmp150      [V152,T61] (  2,  1   )     int  ->  rdx         "field V11._length (fldOffset=0x8)" P-INDEP
 ;* V153 tmp151      [V153    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V12._reference (fldOffset=0x0)" P-INDEP
 ;* V154 tmp152      [V154    ] (  0,  0   )     int  ->  zero-ref    "field V12._length (fldOffset=0x8)" P-INDEP
 ;  V155 tmp153      [V155,T39] (  2,  1   )   byref  ->  rdi         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;  V156 tmp154      [V156,T62] (  2,  1   )     int  ->  rdx         "field V13._length (fldOffset=0x8)" P-INDEP
 ;* V157 tmp155      [V157    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V14._reference (fldOffset=0x0)" P-INDEP
 ;* V158 tmp156      [V158    ] (  0,  0   )     int  ->  zero-ref    "field V14._length (fldOffset=0x8)" P-INDEP
-;  V159 tmp157      [V159,T28] (  3,  1.50)   byref  ->  rax         "field V15._reference (fldOffset=0x0)" P-INDEP
-;  V160 tmp158      [V160,T09] (  5,  2.50)     int  ->  rsi         "field V15._length (fldOffset=0x8)" P-INDEP
-;  V161 tmp159      [V161,T40] (  2,  1   )   byref  ->  rax         single-def "field V17._reference (fldOffset=0x0)" P-INDEP
-;  V162 tmp160      [V162,T63] (  2,  1   )     int  ->  rsi         "field V17._length (fldOffset=0x8)" P-INDEP
-;* V163 tmp161      [V163    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-;* V164 tmp162      [V164    ] (  0,  0   )     int  ->  zero-ref    "field V18._length (fldOffset=0x8)" P-INDEP
+;  V159 tmp157      [V159,T28] (  3,  1.50)   byref  ->  registers   "field V15._reference (fldOffset=0x0)" P-INDEP
+;  V160 tmp158      [V160,T09] (  5,  2.50)     int  ->  registers   "field V15._length (fldOffset=0x8)" P-INDEP
+;* V161 tmp159      [V161    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V17._reference (fldOffset=0x0)" P-INDEP
+;* V162 tmp160      [V162    ] (  0,  0   )     int  ->  zero-ref    "field V17._length (fldOffset=0x8)" P-INDEP
+;  V163 tmp161      [V163,T40] (  2,  1   )   byref  ->  rax         single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+;  V164 tmp162      [V164,T63] (  2,  1   )     int  ->  rsi         "field V18._length (fldOffset=0x8)" P-INDEP
 ;* V165 tmp163      [V165    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V22._reference (fldOffset=0x0)" P-INDEP
 ;* V166 tmp164      [V166    ] (  0,  0   )     int  ->  zero-ref    "field V22._length (fldOffset=0x8)" P-INDEP
 ;* V167 tmp165      [V167    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V23._reference (fldOffset=0x0)" P-INDEP
 ;* V168 tmp166      [V168    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x8)" P-INDEP
 ;* V169 tmp167      [V169    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V25._reference (fldOffset=0x0)" P-INDEP
 ;* V170 tmp168      [V170    ] (  0,  0   )     int  ->  zero-ref    "field V25._length (fldOffset=0x8)" P-INDEP
 ;* V171 tmp169      [V171    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V27._reference (fldOffset=0x0)" P-INDEP
 ;* V172 tmp170      [V172    ] (  0,  0   )     int  ->  zero-ref    "field V27._length (fldOffset=0x8)" P-INDEP
 ;* V173 tmp171      [V173    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V31._reference (fldOffset=0x0)" P-INDEP
 ;* V174 tmp172      [V174    ] (  0,  0   )     int  ->  zero-ref    "field V31._length (fldOffset=0x8)" P-INDEP
 ;* V175 tmp173      [V175    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V32._reference (fldOffset=0x0)" P-INDEP
 ;* V176 tmp174      [V176    ] (  0,  0   )     int  ->  zero-ref    "field V32._length (fldOffset=0x8)" P-INDEP
 ;* V177 tmp175      [V177    ] (  0,  0   )   byref  ->  zero-ref    "field V33._reference (fldOffset=0x0)" P-INDEP
 ;* V178 tmp176      [V178    ] (  0,  0   )     int  ->  zero-ref    "field V33._length (fldOffset=0x8)" P-INDEP
 ;* V179 tmp177      [V179    ] (  0,  0   )   byref  ->  zero-ref    "field V34._reference (fldOffset=0x0)" P-INDEP
 ;* V180 tmp178      [V180    ] (  0,  0   )     int  ->  zero-ref    "field V34._length (fldOffset=0x8)" P-INDEP
-;  V181 tmp179      [V181,T29] (  3,  1.50)   byref  ->  rax         "field V35._reference (fldOffset=0x0)" P-INDEP
-;  V182 tmp180      [V182,T10] (  5,  2.50)     int  ->  rsi         "field V35._length (fldOffset=0x8)" P-INDEP
-;  V183 tmp181      [V183,T41] (  2,  1   )   byref  ->  rax         single-def "field V37._reference (fldOffset=0x0)" P-INDEP
-;  V184 tmp182      [V184,T64] (  2,  1   )     int  ->  rsi         "field V37._length (fldOffset=0x8)" P-INDEP
-;* V185 tmp183      [V185    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V38._reference (fldOffset=0x0)" P-INDEP
-;* V186 tmp184      [V186    ] (  0,  0   )     int  ->  zero-ref    "field V38._length (fldOffset=0x8)" P-INDEP
+;  V181 tmp179      [V181,T29] (  3,  1.50)   byref  ->  registers   "field V35._reference (fldOffset=0x0)" P-INDEP
+;  V182 tmp180      [V182,T10] (  5,  2.50)     int  ->  registers   "field V35._length (fldOffset=0x8)" P-INDEP
+;* V183 tmp181      [V183    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V37._reference (fldOffset=0x0)" P-INDEP
+;* V184 tmp182      [V184    ] (  0,  0   )     int  ->  zero-ref    "field V37._length (fldOffset=0x8)" P-INDEP
+;  V185 tmp183      [V185,T41] (  2,  1   )   byref  ->  rax         single-def "field V38._reference (fldOffset=0x0)" P-INDEP
+;  V186 tmp184      [V186,T64] (  2,  1   )     int  ->  rsi         "field V38._length (fldOffset=0x8)" P-INDEP
 ;* V187 tmp185      [V187    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V42._reference (fldOffset=0x0)" P-INDEP
 ;* V188 tmp186      [V188    ] (  0,  0   )     int  ->  zero-ref    "field V42._length (fldOffset=0x8)" P-INDEP
 ;* V189 tmp187      [V189    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V43._reference (fldOffset=0x0)" P-INDEP
 ;* V190 tmp188      [V190    ] (  0,  0   )     int  ->  zero-ref    "field V43._length (fldOffset=0x8)" P-INDEP
 ;* V191 tmp189      [V191    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V45._reference (fldOffset=0x0)" P-INDEP
 ;* V192 tmp190      [V192    ] (  0,  0   )     int  ->  zero-ref    "field V45._length (fldOffset=0x8)" P-INDEP
 ;* V193 tmp191      [V193    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V47._reference (fldOffset=0x0)" P-INDEP
 ;* V194 tmp192      [V194    ] (  0,  0   )     int  ->  zero-ref    "field V47._length (fldOffset=0x8)" P-INDEP
 ;* V195 tmp193      [V195    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V51._reference (fldOffset=0x0)" P-INDEP
 ;* V196 tmp194      [V196    ] (  0,  0   )     int  ->  zero-ref    "field V51._length (fldOffset=0x8)" P-INDEP
 ;* V197 tmp195      [V197    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V52._reference (fldOffset=0x0)" P-INDEP
 ;* V198 tmp196      [V198    ] (  0,  0   )     int  ->  zero-ref    "field V52._length (fldOffset=0x8)" P-INDEP
 ;* V199 tmp197      [V199    ] (  0,  0   )   byref  ->  zero-ref    "field V53._reference (fldOffset=0x0)" P-INDEP
 ;* V200 tmp198      [V200    ] (  0,  0   )     int  ->  zero-ref    "field V53._length (fldOffset=0x8)" P-INDEP
 ;* V201 tmp199      [V201    ] (  0,  0   )   byref  ->  zero-ref    "field V54._reference (fldOffset=0x0)" P-INDEP
 ;* V202 tmp200      [V202    ] (  0,  0   )     int  ->  zero-ref    "field V54._length (fldOffset=0x8)" P-INDEP
-;  V203 tmp201      [V203,T30] (  3,  1.50)   byref  ->  rax         "field V55._reference (fldOffset=0x0)" P-INDEP
-;  V204 tmp202      [V204,T11] (  5,  2.50)     int  ->  rsi         "field V55._length (fldOffset=0x8)" P-INDEP
-;  V205 tmp203      [V205,T42] (  2,  1   )   byref  ->  rax         single-def "field V57._reference (fldOffset=0x0)" P-INDEP
-;  V206 tmp204      [V206,T65] (  2,  1   )     int  ->  rsi         "field V57._length (fldOffset=0x8)" P-INDEP
-;* V207 tmp205      [V207    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V58._reference (fldOffset=0x0)" P-INDEP
-;* V208 tmp206      [V208    ] (  0,  0   )     int  ->  zero-ref    "field V58._length (fldOffset=0x8)" P-INDEP
+;  V203 tmp201      [V203,T30] (  3,  1.50)   byref  ->  registers   "field V55._reference (fldOffset=0x0)" P-INDEP
+;  V204 tmp202      [V204,T11] (  5,  2.50)     int  ->  registers   "field V55._length (fldOffset=0x8)" P-INDEP
+;* V205 tmp203      [V205    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V57._reference (fldOffset=0x0)" P-INDEP
+;* V206 tmp204      [V206    ] (  0,  0   )     int  ->  zero-ref    "field V57._length (fldOffset=0x8)" P-INDEP
+;  V207 tmp205      [V207,T42] (  2,  1   )   byref  ->  rax         single-def "field V58._reference (fldOffset=0x0)" P-INDEP
+;  V208 tmp206      [V208,T65] (  2,  1   )     int  ->  rsi         "field V58._length (fldOffset=0x8)" P-INDEP
 ;* V209 tmp207      [V209    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V62._reference (fldOffset=0x0)" P-INDEP
 ;* V210 tmp208      [V210    ] (  0,  0   )     int  ->  zero-ref    "field V62._length (fldOffset=0x8)" P-INDEP
 ;* V211 tmp209      [V211    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V63._reference (fldOffset=0x0)" P-INDEP
 ;* V212 tmp210      [V212    ] (  0,  0   )     int  ->  zero-ref    "field V63._length (fldOffset=0x8)" P-INDEP
 ;* V213 tmp211      [V213    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V65._reference (fldOffset=0x0)" P-INDEP
 ;* V214 tmp212      [V214    ] (  0,  0   )     int  ->  zero-ref    "field V65._length (fldOffset=0x8)" P-INDEP
 ;* V215 tmp213      [V215    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V67._reference (fldOffset=0x0)" P-INDEP
 ;* V216 tmp214      [V216    ] (  0,  0   )     int  ->  zero-ref    "field V67._length (fldOffset=0x8)" P-INDEP
 ;* V217 tmp215      [V217    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V71._reference (fldOffset=0x0)" P-INDEP
 ;* V218 tmp216      [V218    ] (  0,  0   )     int  ->  zero-ref    "field V71._length (fldOffset=0x8)" P-INDEP
 ;* V219 tmp217      [V219    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V72._reference (fldOffset=0x0)" P-INDEP
 ;* V220 tmp218      [V220    ] (  0,  0   )     int  ->  zero-ref    "field V72._length (fldOffset=0x8)" P-INDEP
 ;* V221 tmp219      [V221    ] (  0,  0   )   byref  ->  zero-ref    "field V73._reference (fldOffset=0x0)" P-INDEP
 ;* V222 tmp220      [V222    ] (  0,  0   )     int  ->  zero-ref    "field V73._length (fldOffset=0x8)" P-INDEP
 ;* V223 tmp221      [V223    ] (  0,  0   )   byref  ->  zero-ref    "field V74._reference (fldOffset=0x0)" P-INDEP
 ;* V224 tmp222      [V224    ] (  0,  0   )     int  ->  zero-ref    "field V74._length (fldOffset=0x8)" P-INDEP
-;  V225 tmp223      [V225,T31] (  3,  1.50)   byref  ->  rax         "field V75._reference (fldOffset=0x0)" P-INDEP
-;  V226 tmp224      [V226,T12] (  5,  2.50)     int  ->  rsi         "field V75._length (fldOffset=0x8)" P-INDEP
-;  V227 tmp225      [V227,T43] (  2,  1   )   byref  ->  rax         single-def "field V77._reference (fldOffset=0x0)" P-INDEP
-;  V228 tmp226      [V228,T66] (  2,  1   )     int  ->  rsi         "field V77._length (fldOffset=0x8)" P-INDEP
-;* V229 tmp227      [V229    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V78._reference (fldOffset=0x0)" P-INDEP
-;* V230 tmp228      [V230    ] (  0,  0   )     int  ->  zero-ref    "field V78._length (fldOffset=0x8)" P-INDEP
+;  V225 tmp223      [V225,T31] (  3,  1.50)   byref  ->  registers   "field V75._reference (fldOffset=0x0)" P-INDEP
+;  V226 tmp224      [V226,T12] (  5,  2.50)     int  ->  registers   "field V75._length (fldOffset=0x8)" P-INDEP
+;* V227 tmp225      [V227    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V77._reference (fldOffset=0x0)" P-INDEP
+;* V228 tmp226      [V228    ] (  0,  0   )     int  ->  zero-ref    "field V77._length (fldOffset=0x8)" P-INDEP
+;  V229 tmp227      [V229,T43] (  2,  1   )   byref  ->  rax         single-def "field V78._reference (fldOffset=0x0)" P-INDEP
+;  V230 tmp228      [V230,T66] (  2,  1   )     int  ->  rsi         "field V78._length (fldOffset=0x8)" P-INDEP
 ;* V231 tmp229      [V231    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V82._reference (fldOffset=0x0)" P-INDEP
 ;* V232 tmp230      [V232    ] (  0,  0   )     int  ->  zero-ref    "field V82._length (fldOffset=0x8)" P-INDEP
 ;* V233 tmp231      [V233    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V83._reference (fldOffset=0x0)" P-INDEP
 ;* V234 tmp232      [V234    ] (  0,  0   )     int  ->  zero-ref    "field V83._length (fldOffset=0x8)" P-INDEP
 ;* V235 tmp233      [V235    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V85._reference (fldOffset=0x0)" P-INDEP
 ;* V236 tmp234      [V236    ] (  0,  0   )     int  ->  zero-ref    "field V85._length (fldOffset=0x8)" P-INDEP
 ;* V237 tmp235      [V237    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V87._reference (fldOffset=0x0)" P-INDEP
 ;* V238 tmp236      [V238    ] (  0,  0   )     int  ->  zero-ref    "field V87._length (fldOffset=0x8)" P-INDEP
 ;* V239 tmp237      [V239    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V91._reference (fldOffset=0x0)" P-INDEP
 ;* V240 tmp238      [V240    ] (  0,  0   )     int  ->  zero-ref    "field V91._length (fldOffset=0x8)" P-INDEP
 ;* V241 tmp239      [V241    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V92._reference (fldOffset=0x0)" P-INDEP
 ;* V242 tmp240      [V242    ] (  0,  0   )     int  ->  zero-ref    "field V92._length (fldOffset=0x8)" P-INDEP
 ;* V243 tmp241      [V243    ] (  0,  0   )   byref  ->  zero-ref    "field V93._reference (fldOffset=0x0)" P-INDEP
 ;* V244 tmp242      [V244    ] (  0,  0   )     int  ->  zero-ref    "field V93._length (fldOffset=0x8)" P-INDEP
 ;* V245 tmp243      [V245    ] (  0,  0   )   byref  ->  zero-ref    "field V94._reference (fldOffset=0x0)" P-INDEP
 ;* V246 tmp244      [V246    ] (  0,  0   )     int  ->  zero-ref    "field V94._length (fldOffset=0x8)" P-INDEP
-;  V247 tmp245      [V247,T32] (  3,  1.50)   byref  ->  rax         "field V95._reference (fldOffset=0x0)" P-INDEP
-;  V248 tmp246      [V248,T13] (  5,  2.50)     int  ->  rsi         "field V95._length (fldOffset=0x8)" P-INDEP
-;  V249 tmp247      [V249,T44] (  2,  1   )   byref  ->  rax         single-def "field V97._reference (fldOffset=0x0)" P-INDEP
-;  V250 tmp248      [V250,T67] (  2,  1   )     int  ->  rsi         "field V97._length (fldOffset=0x8)" P-INDEP
-;* V251 tmp249      [V251    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V98._reference (fldOffset=0x0)" P-INDEP
-;* V252 tmp250      [V252    ] (  0,  0   )     int  ->  zero-ref    "field V98._length (fldOffset=0x8)" P-INDEP
+;  V247 tmp245      [V247,T32] (  3,  1.50)   byref  ->  registers   "field V95._reference (fldOffset=0x0)" P-INDEP
+;  V248 tmp246      [V248,T13] (  5,  2.50)     int  ->  registers   "field V95._length (fldOffset=0x8)" P-INDEP
+;* V249 tmp247      [V249    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V97._reference (fldOffset=0x0)" P-INDEP
+;* V250 tmp248      [V250    ] (  0,  0   )     int  ->  zero-ref    "field V97._length (fldOffset=0x8)" P-INDEP
+;  V251 tmp249      [V251,T44] (  2,  1   )   byref  ->  rax         single-def "field V98._reference (fldOffset=0x0)" P-INDEP
+;  V252 tmp250      [V252,T67] (  2,  1   )     int  ->  rsi         "field V98._length (fldOffset=0x8)" P-INDEP
 ;* V253 tmp251      [V253    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V102._reference (fldOffset=0x0)" P-INDEP
 ;* V254 tmp252      [V254    ] (  0,  0   )     int  ->  zero-ref    "field V102._length (fldOffset=0x8)" P-INDEP
 ;* V255 tmp253      [V255    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V103._reference (fldOffset=0x0)" P-INDEP
 ;* V256 tmp254      [V256    ] (  0,  0   )     int  ->  zero-ref    "field V103._length (fldOffset=0x8)" P-INDEP
 ;* V257 tmp255      [V257    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V105._reference (fldOffset=0x0)" P-INDEP
 ;* V258 tmp256      [V258    ] (  0,  0   )     int  ->  zero-ref    "field V105._length (fldOffset=0x8)" P-INDEP
 ;* V259 tmp257      [V259    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V107._reference (fldOffset=0x0)" P-INDEP
 ;* V260 tmp258      [V260    ] (  0,  0   )     int  ->  zero-ref    "field V107._length (fldOffset=0x8)" P-INDEP
 ;* V261 tmp259      [V261    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V111._reference (fldOffset=0x0)" P-INDEP
 ;* V262 tmp260      [V262    ] (  0,  0   )     int  ->  zero-ref    "field V111._length (fldOffset=0x8)" P-INDEP
 ;* V263 tmp261      [V263    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V112._reference (fldOffset=0x0)" P-INDEP
 ;* V264 tmp262      [V264    ] (  0,  0   )     int  ->  zero-ref    "field V112._length (fldOffset=0x8)" P-INDEP
 ;* V265 tmp263      [V265    ] (  0,  0   )   byref  ->  zero-ref    "field V113._reference (fldOffset=0x0)" P-INDEP
 ;* V266 tmp264      [V266    ] (  0,  0   )     int  ->  zero-ref    "field V113._length (fldOffset=0x8)" P-INDEP
 ;* V267 tmp265      [V267    ] (  0,  0   )   byref  ->  zero-ref    "field V114._reference (fldOffset=0x0)" P-INDEP
 ;* V268 tmp266      [V268    ] (  0,  0   )     int  ->  zero-ref    "field V114._length (fldOffset=0x8)" P-INDEP
-;  V269 tmp267      [V269,T33] (  3,  1.50)   byref  ->  rax         "field V115._reference (fldOffset=0x0)" P-INDEP
-;  V270 tmp268      [V270,T14] (  5,  2.50)     int  ->  rsi         "field V115._length (fldOffset=0x8)" P-INDEP
-;  V271 tmp269      [V271,T45] (  2,  1   )   byref  ->  rax         single-def "field V117._reference (fldOffset=0x0)" P-INDEP
-;  V272 tmp270      [V272,T68] (  2,  1   )     int  ->  rsi         "field V117._length (fldOffset=0x8)" P-INDEP
-;* V273 tmp271      [V273    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V118._reference (fldOffset=0x0)" P-INDEP
-;* V274 tmp272      [V274    ] (  0,  0   )     int  ->  zero-ref    "field V118._length (fldOffset=0x8)" P-INDEP
+;  V269 tmp267      [V269,T33] (  3,  1.50)   byref  ->  registers   "field V115._reference (fldOffset=0x0)" P-INDEP
+;  V270 tmp268      [V270,T14] (  5,  2.50)     int  ->  registers   "field V115._length (fldOffset=0x8)" P-INDEP
+;* V271 tmp269      [V271    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V117._reference (fldOffset=0x0)" P-INDEP
+;* V272 tmp270      [V272    ] (  0,  0   )     int  ->  zero-ref    "field V117._length (fldOffset=0x8)" P-INDEP
+;  V273 tmp271      [V273,T45] (  2,  1   )   byref  ->  rax         single-def "field V118._reference (fldOffset=0x0)" P-INDEP
+;  V274 tmp272      [V274,T68] (  2,  1   )     int  ->  rsi         "field V118._length (fldOffset=0x8)" P-INDEP
 ;* V275 tmp273      [V275    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V122._reference (fldOffset=0x0)" P-INDEP
 ;* V276 tmp274      [V276    ] (  0,  0   )     int  ->  zero-ref    "field V122._length (fldOffset=0x8)" P-INDEP
 ;* V277 tmp275      [V277    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V123._reference (fldOffset=0x0)" P-INDEP
 ;* V278 tmp276      [V278    ] (  0,  0   )     int  ->  zero-ref    "field V123._length (fldOffset=0x8)" P-INDEP
 ;* V279 tmp277      [V279    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V125._reference (fldOffset=0x0)" P-INDEP
 ;* V280 tmp278      [V280    ] (  0,  0   )     int  ->  zero-ref    "field V125._length (fldOffset=0x8)" P-INDEP
 ;* V281 tmp279      [V281    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V127._reference (fldOffset=0x0)" P-INDEP
 ;* V282 tmp280      [V282    ] (  0,  0   )     int  ->  zero-ref    "field V127._length (fldOffset=0x8)" P-INDEP
 ;* V283 tmp281      [V283    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V131._reference (fldOffset=0x0)" P-INDEP
 ;* V284 tmp282      [V284    ] (  0,  0   )     int  ->  zero-ref    "field V131._length (fldOffset=0x8)" P-INDEP
 ;* V285 tmp283      [V285    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V132._reference (fldOffset=0x0)" P-INDEP
 ;* V286 tmp284      [V286    ] (  0,  0   )     int  ->  zero-ref    "field V132._length (fldOffset=0x8)" P-INDEP
 ;* V287 tmp285      [V287    ] (  0,  0   )   byref  ->  zero-ref    "field V133._reference (fldOffset=0x0)" P-INDEP
 ;* V288 tmp286      [V288    ] (  0,  0   )     int  ->  zero-ref    "field V133._length (fldOffset=0x8)" P-INDEP
 ;* V289 tmp287      [V289    ] (  0,  0   )   byref  ->  zero-ref    "field V134._reference (fldOffset=0x0)" P-INDEP
 ;* V290 tmp288      [V290    ] (  0,  0   )     int  ->  zero-ref    "field V134._length (fldOffset=0x8)" P-INDEP
 ;  V291 tmp289      [V291,T01] (  8,  4.50)     ref  ->  r15         single-def "V01.[008..016)"
 ;  V292 cse0        [V292,T08] (  7,  3.50)     int  ->  r14         "CSE #01: moderate"
 ;
 ; Lcl frame size = 8
 
 G_M31334_IG01:
        push     rbp
        push     r15
        push     r14
        push     rbx
        push     rax
        lea      rbp, [rsp+0x20]
        mov      rbx, rdi
 						;; size=15 bbWeight=1 PerfScore 5.75
 G_M31334_IG02:
        mov      r15, gword ptr [rbp+0x18]
        cmp      dword ptr [rbx+0x14], 6
        jne      G_M31334_IG18
 						;; size=14 bbWeight=1 PerfScore 5.00
 G_M31334_IG03:
        cmp      dword ptr [rbx+0x18], 5
        jne      G_M31334_IG18
        mov      rdi, bword ptr [rbx+0x110]
        mov      edx, dword ptr [rbx+0x118]
        mov      r14d, dword ptr [r15+0x08]
        test     r14d, r14d
        je       G_M31334_IG26
        mov      rsi, gword ptr [r15+0x10]
        test     rsi, rsi
-       je       SHORT G_M31334_IG04
+       jne      SHORT G_M31334_IG04
+       xor      rsi, rsi
+       xor      eax, eax
+       mov      ecx, eax
+       mov      rax, rsi
+       mov      esi, ecx
+       jmp      SHORT G_M31334_IG05
+						;; size=58 bbWeight=0.50 PerfScore 8.88
+G_M31334_IG04:
        lea      rax, bword ptr [rsi+0x0C]
        mov      esi, dword ptr [rsi+0x08]
-       jmp      SHORT G_M31334_IG05
-						;; size=54 bbWeight=0.50 PerfScore 9.50
-G_M31334_IG04:
-       xor      rax, rax
-       xor      esi, esi
-						;; size=4 bbWeight=0.50 PerfScore 0.25
+						;; size=7 bbWeight=0.50 PerfScore 1.25
 G_M31334_IG05:
        cmp      edx, esi
        jne      G_M31334_IG18
        test     esi, esi
        je       SHORT G_M31334_IG06
        mov      edx, esi
        add      rdx, rdx
        mov      rsi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
        call     [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
        test     eax, eax
        je       G_M31334_IG18
 						;; size=40 bbWeight=0.50 PerfScore 3.88
 G_M31334_IG06:
        mov      rdi, bword ptr [rbx+0x120]
        mov      edx, dword ptr [rbx+0x128]
        cmp      r14d, 1
        jbe      G_M31334_IG26
        mov      rsi, gword ptr [r15+0x18]
        test     rsi, rsi
-       je       SHORT G_M31334_IG07
+       jne      SHORT G_M31334_IG07
+       xor      rsi, rsi
+       xor      eax, eax
+       mov      ecx, eax
+       mov      rax, rsi
+       mov      esi, ecx
+       jmp      SHORT G_M31334_IG08
+						;; size=45 bbWeight=0.50 PerfScore 5.88
+G_M31334_IG07:
        lea      rax, bword ptr [rsi+0x0C]
        mov      esi, dword ptr [rsi+0x08]
-       jmp      SHORT G_M31334_IG08
-						;; size=41 bbWeight=0.50 PerfScore 6.50
-G_M31334_IG07:
-       xor      rax, rax
-       xor      esi, esi
-						;; size=4 bbWeight=0.50 PerfScore 0.25
+						;; size=7 bbWeight=0.50 PerfScore 1.25
 G_M31334_IG08:
        cmp      edx, esi
        jne      G_M31334_IG18
        test     esi, esi
        je       SHORT G_M31334_IG09
        mov      edx, esi
        add      rdx, rdx
        mov      rsi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
        call     [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
        test     eax, eax
        je       G_M31334_IG18
 						;; size=40 bbWeight=0.50 PerfScore 3.88
 G_M31334_IG09:
        mov      rdi, bword ptr [rbx+0x130]
        mov      edx, dword ptr [rbx+0x138]
        cmp      r14d, 2
        jbe      G_M31334_IG26
        mov      rsi, gword ptr [r15+0x20]
        test     rsi, rsi
-       je       SHORT G_M31334_IG10
+       jne      SHORT G_M31334_IG10
+       xor      rsi, rsi
+       xor      eax, eax
+       mov      ecx, eax
+       mov      rax, rsi
+       mov      esi, ecx
+       jmp      SHORT G_M31334_IG11
+						;; size=45 bbWeight=0.50 PerfScore 5.88
+G_M31334_IG10:
        lea      rax, bword ptr [rsi+0x0C]
        mov      esi, dword ptr [rsi+0x08]
-       jmp      SHORT G_M31334_IG11
-						;; size=41 bbWeight=0.50 PerfScore 6.50
-G_M31334_IG10:
-       xor      rax, rax
-       xor      esi, esi
-						;; size=4 bbWeight=0.50 PerfScore 0.25
+						;; size=7 bbWeight=0.50 PerfScore 1.25
 G_M31334_IG11:
        cmp      edx, esi
        jne      G_M31334_IG18
        test     esi, esi
        je       SHORT G_M31334_IG12
        mov      edx, esi
        add      rdx, rdx
        mov      rsi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
        call     [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
        test     eax, eax
        je       G_M31334_IG18
 						;; size=40 bbWeight=0.50 PerfScore 3.88
 G_M31334_IG12:
        mov      rdi, bword ptr [rbx+0x140]
        mov      edx, dword ptr [rbx+0x148]
        cmp      r14d, 3
        jbe      G_M31334_IG26
        mov      rsi, gword ptr [r15+0x28]
        test     rsi, rsi
-       je       SHORT G_M31334_IG13
+       jne      SHORT G_M31334_IG13
+       xor      rsi, rsi
+       xor      eax, eax
+       mov      ecx, eax
+       mov      rax, rsi
+       mov      esi, ecx
+       jmp      SHORT G_M31334_IG14
+						;; size=45 bbWeight=0.50 PerfScore 5.88
+G_M31334_IG13:
        lea      rax, bword ptr [rsi+0x0C]
        mov      esi, dword ptr [rsi+0x08]
-       jmp      SHORT G_M31334_IG14
-						;; size=41 bbWeight=0.50 PerfScore 6.50
-G_M31334_IG13:
-       xor      rax, rax
-       xor      esi, esi
-						;; size=4 bbWeight=0.50 PerfScore 0.25
+						;; size=7 bbWeight=0.50 PerfScore 1.25
 G_M31334_IG14:
        cmp      edx, esi
        jne      SHORT G_M31334_IG18
        test     esi, esi
        je       SHORT G_M31334_IG15
        mov      edx, esi
        add      rdx, rdx
        mov      rsi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
        call     [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
        test     eax, eax
        je       SHORT G_M31334_IG18
 						;; size=32 bbWeight=0.50 PerfScore 3.88
 G_M31334_IG15:
        mov      rdi, bword ptr [rbx+0x150]
        mov      edx, dword ptr [rbx+0x158]
        cmp      r14d, 4
        jbe      G_M31334_IG26
        mov      rsi, gword ptr [r15+0x30]
        test     rsi, rsi
-       je       SHORT G_M31334_IG16
+       jne      SHORT G_M31334_IG16
+       xor      rsi, rsi
+       xor      eax, eax
+       mov      ecx, eax
+       mov      rax, rsi
+       mov      esi, ecx
+       jmp      SHORT G_M31334_IG17
+						;; size=45 bbWeight=0.50 PerfScore 5.88
+G_M31334_IG16:
        lea      rax, bword ptr [rsi+0x0C]
        mov      esi, dword ptr [rsi+0x08]
-       jmp      SHORT G_M31334_IG17
-						;; size=41 bbWeight=0.50 PerfScore 6.50
-G_M31334_IG16:
-       xor      rax, rax
-       xor      esi, esi
-						;; size=4 bbWeight=0.50 PerfScore 0.25
+						;; size=7 bbWeight=0.50 PerfScore 1.25
 G_M31334_IG17:
        cmp      edx, esi
        jne      SHORT G_M31334_IG18
        test     esi, esi
        je       SHORT G_M31334_IG20
        mov      edx, esi
        add      rdx, rdx
        mov      rsi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
        call     [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
        test     eax, eax
        jne      SHORT G_M31334_IG20
 						;; size=32 bbWeight=0.50 PerfScore 3.88
 G_M31334_IG18:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M31334_IG19:
        add      rsp, 8
        pop      rbx
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=11 bbWeight=0.50 PerfScore 1.62
 G_M31334_IG20:
        mov      rdi, bword ptr [rbx+0x160]
        mov      edx, dword ptr [rbx+0x168]
        cmp      r14d, 5
        jbe      SHORT G_M31334_IG26
        mov      rsi, gword ptr [r15+0x38]
        test     rsi, rsi
-       je       SHORT G_M31334_IG21
+       jne      SHORT G_M31334_IG21
+       xor      rsi, rsi
+       xor      eax, eax
+       mov      ecx, eax
+       mov      rax, rsi
+       mov      esi, ecx
+       jmp      SHORT G_M31334_IG22
+						;; size=41 bbWeight=0.50 PerfScore 5.88
+G_M31334_IG21:
        lea      rax, bword ptr [rsi+0x0C]
        mov      esi, dword ptr [rsi+0x08]
-       jmp      SHORT G_M31334_IG22
-						;; size=37 bbWeight=0.50 PerfScore 6.50
-G_M31334_IG21:
-       xor      rax, rax
-       xor      esi, esi
-						;; size=4 bbWeight=0.50 PerfScore 0.25
+						;; size=7 bbWeight=0.50 PerfScore 1.25
 G_M31334_IG22:
        cmp      edx, esi
        jne      SHORT G_M31334_IG24
        test     esi, esi
        je       SHORT G_M31334_IG23
        mov      edx, esi
        add      rdx, rdx
        mov      rsi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
        call     [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
        jmp      SHORT G_M31334_IG25
 						;; size=30 bbWeight=0.50 PerfScore 4.25
 G_M31334_IG23:
        mov      eax, 1
        jmp      SHORT G_M31334_IG25
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M31334_IG24:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M31334_IG25:
        add      rsp, 8
        pop      rbx
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=11 bbWeight=0.50 PerfScore 1.62
 G_M31334_IG26:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 561, prolog size 12, PerfScore 82.50, instruction count 168, allocated bytes for code 561 (MethodHash=553a8599) for method System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
+; Total bytes of code 603, prolog size 12, PerfScore 84.75, instruction count 186, allocated bytes for code 603 (MethodHash=553a8599) for method System.Globalization.TimeSpanParse+TimeSpanRawInfo:FullMatch(System.Globalization.TimeSpanFormat+FormatLiterals):ubyte:this (FullOpts)
 ; ============================================================
22 (12.15 % of base) - System.Threading.Tasks.ValueTask`1[System.__Canon]:Equals(System.Object):ubyte:this
 ; Assembly listing for method System.Threading.Tasks.ValueTask`1[System.__Canon]:Equals(System.Object):ubyte:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T02] (  5,  3.50)   byref  ->  rbx         this single-def
 ;  V01 TypeCtx      [V01,T01] (  6,  3.85)    long  ->  rsi         single-def
 ;  V02 arg1         [V02,T00] (  7,  4.75)     ref  ->  rdx         class-hnd single-def <System.Object>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )     int  ->  zero-ref    "spilling qmarkNull"
 ;  V05 tmp2         [V05,T08] (  3,  1.50)   ubyte  ->  rax         "Inline return value spill temp"
 ;* V06 tmp3         [V06    ] (  0,  0   )  struct (24) zero-ref    "Inlining Arg" <System.Threading.Tasks.ValueTask`1[System.__Canon]>
 ;* V07 tmp4         [V07    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V08 tmp5         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V09 tmp6         [V09    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V10 tmp7         [V10,T06] (  3,  1.50)     ref  ->  rax         single-def "field V06._obj (fldOffset=0x0)" P-INDEP
-;  V11 tmp8         [V11,T09] (  2,  1   )     ref  ->  r15         single-def "field V06._result (fldOffset=0x8)" P-INDEP
-;  V12 tmp9         [V12,T10] (  2,  1   )   short  ->  rdi         "field V06._token (fldOffset=0x10)" P-INDEP
+;  V10 tmp7         [V10,T06] (  3,  1.50)     ref  ->  r15         single-def "field V06._obj (fldOffset=0x0)" P-INDEP
+;  V11 tmp8         [V11,T09] (  2,  1   )     ref  ->  r14         single-def "field V06._result (fldOffset=0x8)" P-INDEP
+;  V12 tmp9         [V12,T10] (  2,  1   )   short  ->  r13         "field V06._token (fldOffset=0x10)" P-INDEP
 ;* V13 tmp10        [V13    ] (  0,  0   )   ubyte  ->  zero-ref    "field V06._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
 ;  V14 tmp11        [V14,T03] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
-;  V15 cse0         [V15,T07] (  3,  1.50)     ref  ->  rcx         "CSE #01: moderate"
+;  V15 cse0         [V15,T07] (  3,  1.50)     ref  ->  r12         "CSE #01: moderate"
 ;  V16 rat0         [V16,T05] (  3,  2   )    long  ->  rdi         "runtime lookup"
 ;  V17 rat1         [V17,T04] (  3,  2.80)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 8
 
 G_M59413_IG01:
        push     rbp
        push     r15
+       push     r14
+       push     r13
+       push     r12
        push     rbx
-       sub      rsp, 16
-       lea      rbp, [rsp+0x20]
-       mov      qword ptr [rbp-0x18], rsi
+       push     rax
+       lea      rbp, [rsp+0x30]
+       mov      qword ptr [rbp-0x30], rsi
        mov      rbx, rdi
-						;; size=20 bbWeight=1 PerfScore 5.00
+						;; size=23 bbWeight=1 PerfScore 8.75
 G_M59413_IG02:
        test     rdx, rdx
        je       G_M59413_IG11
 						;; size=9 bbWeight=1 PerfScore 1.25
 G_M59413_IG03:
        cmp      qword ptr [rdx], rsi
        jne      G_M59413_IG11
 						;; size=9 bbWeight=0.25 PerfScore 1.00
 G_M59413_IG04:
-       mov      rax, gword ptr [rdx+0x08]
-       mov      r15, gword ptr [rdx+0x10]
-       movsx    rdi, word  ptr [rdx+0x18]
-       mov      rcx, gword ptr [rbx]
-       mov      rdx, rcx
-       or       rdx, rax
-       je       SHORT G_M59413_IG07
-       cmp      rcx, rax
-       je       SHORT G_M59413_IG05
-       xor      eax, eax
-       jmp      SHORT G_M59413_IG06
-						;; size=33 bbWeight=0.50 PerfScore 7.50
-G_M59413_IG05:
-       cmp      word  ptr [rbx+0x10], di
-       sete     al
-       movzx    rax, al
-						;; size=10 bbWeight=0.50 PerfScore 2.12
-G_M59413_IG06:
-       add      rsp, 16
-       pop      rbx
-       pop      r15
-       pop      rbp
-       ret      
-						;; size=9 bbWeight=0.50 PerfScore 1.38
-G_M59413_IG07:
+       mov      r15, gword ptr [rdx+0x08]
+       mov      r14, gword ptr [rdx+0x10]
+       movsx    r13, word  ptr [rdx+0x18]
+       mov      r12, gword ptr [rbx]
+       mov      rdi, r12
+       or       rdi, r15
+       jne      SHORT G_M59413_IG08
        mov      rdi, qword ptr [rsi+0x30]
        mov      rdi, qword ptr [rdi]
        mov      rdi, qword ptr [rdi+0x10]
        test     rdi, rdi
-       je       SHORT G_M59413_IG10
-						;; size=16 bbWeight=0.50 PerfScore 3.62
-G_M59413_IG08:
+       je       SHORT G_M59413_IG07
+						;; size=40 bbWeight=0.50 PerfScore 9.38
+G_M59413_IG05:
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        mov      rdi, gword ptr [rax]
        mov      rsi, gword ptr [rbx+0x08]
-       mov      rdx, r15
+       mov      rdx, r14
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
 						;; size=22 bbWeight=0.50 PerfScore 4.62
-G_M59413_IG09:
-       add      rsp, 16
+G_M59413_IG06:
+       add      rsp, 8
        pop      rbx
+       pop      r12
+       pop      r13
+       pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax+0x20]System.Collections.Generic.EqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this
-						;; size=12 bbWeight=0.50 PerfScore 1.88
-G_M59413_IG10:
+						;; size=18 bbWeight=0.50 PerfScore 2.62
+G_M59413_IG07:
        mov      rdi, rsi
        mov      rsi, 0xD1FFAB1E      ; global ptr
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
        call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
        mov      rdi, rax
-       jmp      SHORT G_M59413_IG08
+       jmp      SHORT G_M59413_IG05
 						;; size=30 bbWeight=0.10 PerfScore 0.60
+G_M59413_IG08:
+       cmp      r12, r15
+       je       SHORT G_M59413_IG09
+       xor      eax, eax
+       jmp      SHORT G_M59413_IG10
+						;; size=9 bbWeight=0.50 PerfScore 1.75
+G_M59413_IG09:
+       cmp      word  ptr [rbx+0x10], r13w
+       sete     al
+       movzx    rax, al
+						;; size=11 bbWeight=0.50 PerfScore 2.12
+G_M59413_IG10:
+       add      rsp, 8
+       pop      rbx
+       pop      r12
+       pop      r13
+       pop      r14
+       pop      r15
+       pop      rbp
+       ret      
+						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M59413_IG11:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M59413_IG12:
-       add      rsp, 16
+       add      rsp, 8
        pop      rbx
+       pop      r12
+       pop      r13
+       pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=9 bbWeight=0.50 PerfScore 1.38
+						;; size=15 bbWeight=0.50 PerfScore 2.12
 
-; Total bytes of code 181, prolog size 20, PerfScore 30.47, instruction count 58, allocated bytes for code 181 (MethodHash=df8c17ea) for method System.Threading.Tasks.ValueTask`1[System.__Canon]:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 203, prolog size 23, PerfScore 36.47, instruction count 70, allocated bytes for code 203 (MethodHash=df8c17ea) for method System.Threading.Tasks.ValueTask`1[System.__Canon]:Equals(System.Object):ubyte:this (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/2c3ee64149683c1a9d96b275cceca7cf

@MihuBot
Copy link
Owner Author

MihuBot commented Oct 29, 2024

Top method improvements

-15 (-1.25 % of base) - System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
 ; Assembly listing for method System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 20 single block inlinees; 18 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;* V00 arg0         [V00    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.String]>
 ;  V01 arg1         [V01,T08] (  9, 26.50)     ref  ->  r14         class-hnd single-def <ubyte[]>
 ;  V02 arg2         [V02,T11] ( 11, 17   )     ref  ->  r12         class-hnd single-def <System.Text.Encoding>
 ;* V03 arg3         [V03    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
 ;  V04 arg4         [V04,T62] (  4,  2.50)   byref  ->  [rbp+0x10]  single-def
 ;  V05 loc0         [V05,T12] (  8, 18   )     int  ->  [rbp-0x2C] 
 ;  V06 loc1         [V06    ] (  3,  1.50)     int  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op
 ;* V07 loc2         [V07    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.ReadOnlySpan`1[System.String]>
 ;* V08 loc3         [V08,T75] (  0,  0   )     int  ->  zero-ref   
 ;* V09 loc4         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.String>
 ;* V10 loc5         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.String>
 ;  V11 loc6         [V11,T14] (  8, 17.50)     ref  ->  [rbp-0x88]  class-hnd <System.String>
 ;* V12 loc7         [V12,T82] (  0,  0   )     int  ->  zero-ref   
 ;  V13 loc8         [V13,T13] (  8, 18   )     int  ->  rax        
 ;* V14 loc9         [V14,T83] (  0,  0   )     int  ->  zero-ref   
 ;# V15 OutArgs      [V15    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V16 tmp1         [V16    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V17 tmp2         [V17    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;  V18 tmp3         [V18,T55] (  4,  4   )     int  ->  rax         "Inlining Arg"
 ;* V19 tmp4         [V19    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
 ;  V20 tmp5         [V20,T51] (  5,  5   )   byref  ->  r15         single-def "Inlining Arg"
 ;  V21 tmp6         [V21,T36] (  8,  8   )     int  ->  rbx         "Inlining Arg"
 ;  V22 tmp7         [V22,T56] (  4,  4   )     int  ->  rdx         "Inlining Arg"
 ;* V23 tmp8         [V23    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
 ;  V24 tmp9         [V24,T63] (  2,  2   )   byref  ->  rdi         single-def "Inlining Arg"
 ;  V25 tmp10        [V25,T66] (  2,  2   )     int  ->  rbx         "Inlining Arg"
 ;* V26 tmp11        [V26    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V27 tmp12        [V27    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V28 tmp13        [V28    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Span`1[ubyte]>
 ;* V29 tmp14        [V29    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
 ;* V30 tmp15        [V30    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V31 tmp16        [V31    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V32 tmp17        [V32    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;  V33 tmp18        [V33,T04] (  4, 32   )     int  ->  rdi         "Inlining Arg"
 ;* V34 tmp19        [V34    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
 ;  V35 tmp20        [V35,T03] (  4, 32   )   byref  ->  r15         "Inlining Arg"
 ;  V36 tmp21        [V36,T02] (  5, 36   )     int  ->  rbx         "Inlining Arg"
 ;* V37 tmp22        [V37    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Span`1[ubyte]>
 ;* V38 tmp23        [V38    ] (  0,  0   )     int  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
 ;* V39 tmp24        [V39    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;  V40 tmp25        [V40,T84] (  4,  0   )     ref  ->  rbx         class-hnd exact "NewObj constructor temp" <System.Net.Http.HttpRequestException>
 ;* V41 tmp26        [V41    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;* V42 tmp27        [V42    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V43 tmp28        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V42 tmp27        [V42    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V43 tmp28        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V44 tmp29        [V44,T40] (  2,  8   )   byref  ->  rdi         "Inlining Arg"
 ;  V45 tmp30        [V45,T47] (  2,  8   )     int  ->  rsi         "Inlining Arg"
 ;  V46 tmp31        [V46,T38] (  3,  8   )     int  ->   r8         "Inline return value spill temp"
 ;* V47 tmp32        [V47    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V48 tmp33        [V48    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
 ;  V49 tmp34        [V49,T32] (  4, 12   )    long  ->  [rbp-0x40]  "Inline stloc first use temp"
 ;  V50 tmp35        [V50,T52] (  3,  6   )     int  ->  [rbp-0x44]  "Inline stloc first use temp"
 ;  V51 tmp36        [V51    ] (  2,  8   )   byref  ->  [rbp-0x50]  must-init pinned "Inline stloc first use temp"
 ;  V52 tmp37        [V52    ] (  2,  8   )   byref  ->  [rbp-0x58]  must-init pinned "Inline stloc first use temp"
 ;* V53 tmp38        [V53    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V54 tmp39        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V55 tmp40        [V55    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V56 tmp41        [V56    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
 ;  V57 tmp42        [V57,T85] (  2,  0   )     ref  ->  r13         class-hnd exact "Inlining Arg" <System.String>
 ;  V58 tmp43        [V58,T05] (  4, 32   )     int  ->  rax         "Inlining Arg"
 ;* V59 tmp44        [V59    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
 ;  V60 tmp45        [V60,T18] (  2, 16   )   byref  ->  r15         "Inlining Arg"
 ;  V61 tmp46        [V61,T21] (  2, 16   )     int  ->  rbx         "Inlining Arg"
 ;* V62 tmp47        [V62    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
 ;  V63 tmp48        [V63,T54] (  4,  4   )     ref  ->   r8         class-hnd single-def "Inlining Arg" <System.String>
-;* V64 tmp49        [V64    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V65 tmp50        [V65    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V64 tmp49        [V64    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V65 tmp50        [V65    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V66 tmp51        [V66,T64] (  2,  2   )   byref  ->  rsi         single-def "Inlining Arg"
 ;  V67 tmp52        [V67,T67] (  2,  2   )     int  ->  rdx         "Inlining Arg"
 ;* V68 tmp53        [V68    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
 ;  V69 tmp54        [V69,T65] (  2,  2   )   byref  ->  r15         single-def "Inlining Arg"
 ;  V70 tmp55        [V70,T68] (  2,  2   )     int  ->  rbx         "Inlining Arg"
 ;* V71 tmp56        [V71    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V72 tmp57        [V72    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V73 tmp58        [V73    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Span`1[ubyte]>
 ;* V74 tmp59        [V74    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
 ;* V75 tmp60        [V75    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V76 tmp61        [V76    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V77 tmp62        [V77    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;  V78 tmp63        [V78,T06] (  4, 32   )     int  ->  rcx         "Inlining Arg"
 ;* V79 tmp64        [V79    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
 ;  V80 tmp65        [V80,T19] (  2, 16   )   byref  ->   r8         "Inlining Arg"
 ;  V81 tmp66        [V81,T07] (  3, 24   )     int  ->  rsi         "Inlining Arg"
 ;* V82 tmp67        [V82    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
 ;  V83 tmp68        [V83,T09] (  4, 24   )     ref  ->  rcx         class-hnd "Inlining Arg" <System.String>
-;* V84 tmp69        [V84    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V85 tmp70        [V85    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-;  V86 tmp71        [V86,T41] (  2,  8   )   byref  ->   r8         "Inlining Arg"
-;  V87 tmp72        [V87,T48] (  2,  8   )     int  ->  rdx         "Inlining Arg"
+;* V84 tmp69        [V84    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V85 tmp70        [V85    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+;  V86 tmp71        [V86,T41] (  2,  8   )   byref  ->  rdx         "Inlining Arg"
+;  V87 tmp72        [V87,T48] (  2,  8   )     int  ->  rdi         "Inlining Arg"
 ;* V88 tmp73        [V88    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
 ;  V89 tmp74        [V89,T20] (  2, 16   )   byref  ->  rsi         "Inlining Arg"
 ;  V90 tmp75        [V90,T22] (  2, 16   )     int  ->  rbx         "Inlining Arg"
 ;  V91 tmp76        [V91,T10] (  8, 18.50)   byref  ->  r13         single-def "field V00._reference (fldOffset=0x0)" P-INDEP
 ;  V92 tmp77        [V92,T15] ( 12, 13.50)     int  ->  [rbp-0x5C]  single-def "field V00._length (fldOffset=0x8)" P-INDEP
 ;  V93 tmp78        [V93,T01] ( 17, 40.50)   byref  ->  r15         "field V03._reference (fldOffset=0x0)" P-INDEP
 ;  V94 tmp79        [V94,T00] ( 20, 49   )     int  ->  rbx         "field V03._length (fldOffset=0x8)" P-INDEP
 ;* V95 tmp80        [V95,T71] (  0,  0   )   byref  ->  zero-ref    "field V07._reference (fldOffset=0x0)" P-INDEP
 ;* V96 tmp81        [V96,T76] (  0,  0   )     int  ->  zero-ref    "field V07._length (fldOffset=0x8)" P-INDEP
 ;* V97 tmp82        [V97    ] (  0,  0   )   byref  ->  zero-ref    "field V16._reference (fldOffset=0x0)" P-INDEP
 ;* V98 tmp83        [V98    ] (  0,  0   )     int  ->  zero-ref    "field V16._length (fldOffset=0x8)" P-INDEP
 ;* V99 tmp84        [V99    ] (  0,  0   )   byref  ->  zero-ref    "field V17._reference (fldOffset=0x0)" P-INDEP
 ;* V100 tmp85       [V100    ] (  0,  0   )     int  ->  zero-ref    "field V17._length (fldOffset=0x8)" P-INDEP
 ;* V101 tmp86       [V101,T81] (  0,  0   )   byref  ->  zero-ref    single-def "field V19._reference (fldOffset=0x0)" P-INDEP
 ;  V102 tmp87       [V102,T77] (  2,  1   )     int  ->  rax         "field V19._length (fldOffset=0x8)" P-INDEP
 ;  V103 tmp88       [V103,T72] (  2,  1   )   byref  ->  r15         single-def "field V23._reference (fldOffset=0x0)" P-INDEP
 ;  V104 tmp89       [V104,T78] (  2,  1   )     int  ->  rbx         "field V23._length (fldOffset=0x8)" P-INDEP
 ;  V105 tmp90       [V105,T42] (  2,  8   )   byref  ->  rsi         "field V26._reference (fldOffset=0x0)" P-INDEP
 ;  V106 tmp91       [V106,T33] (  3, 12   )     int  ->  rdx         "field V26._length (fldOffset=0x8)" P-INDEP
 ;* V107 tmp92       [V107    ] (  0,  0   )   byref  ->  zero-ref    "field V27._reference (fldOffset=0x0)" P-INDEP
 ;* V108 tmp93       [V108    ] (  0,  0   )     int  ->  zero-ref    "field V27._length (fldOffset=0x8)" P-INDEP
 ;* V109 tmp94       [V109    ] (  0,  0   )   byref  ->  zero-ref    "field V28._reference (fldOffset=0x0)" P-INDEP
 ;* V110 tmp95       [V110    ] (  0,  0   )     int  ->  zero-ref    "field V28._length (fldOffset=0x8)" P-INDEP
 ;* V111 tmp96       [V111    ] (  0,  0   )   byref  ->  zero-ref    "field V29._reference (fldOffset=0x0)" P-INDEP
 ;* V112 tmp97       [V112    ] (  0,  0   )     int  ->  zero-ref    "field V29._length (fldOffset=0x8)" P-INDEP
 ;* V113 tmp98       [V113    ] (  0,  0   )   byref  ->  zero-ref    "field V34._reference (fldOffset=0x0)" P-INDEP
 ;* V114 tmp99       [V114    ] (  0,  0   )     int  ->  zero-ref    "field V34._length (fldOffset=0x8)" P-INDEP
 ;* V115 tmp100      [V115    ] (  0,  0   )   byref  ->  zero-ref    "field V37._reference (fldOffset=0x0)" P-INDEP
 ;* V116 tmp101      [V116    ] (  0,  0   )     int  ->  zero-ref    "field V37._length (fldOffset=0x8)" P-INDEP
 ;* V117 tmp102      [V117    ] (  0,  0   )   byref  ->  zero-ref    "field V39._reference (fldOffset=0x0)" P-INDEP
 ;* V118 tmp103      [V118    ] (  0,  0   )     int  ->  zero-ref    "field V39._length (fldOffset=0x8)" P-INDEP
 ;  V119 tmp104      [V119,T31] (  4, 12   )   byref  ->  rdi         "field V41._reference (fldOffset=0x0)" P-INDEP
 ;  V120 tmp105      [V120,T35] (  4, 10   )     int  ->  rsi         "field V41._length (fldOffset=0x8)" P-INDEP
-;  V121 tmp106      [V121,T57] (  2,  4   )   byref  ->  rdi         "field V42._reference (fldOffset=0x0)" P-INDEP
-;  V122 tmp107      [V122,T59] (  2,  4   )     int  ->  rsi         "field V42._length (fldOffset=0x8)" P-INDEP
-;* V123 tmp108      [V123    ] (  0,  0   )   byref  ->  zero-ref    "field V43._reference (fldOffset=0x0)" P-INDEP
-;* V124 tmp109      [V124    ] (  0,  0   )     int  ->  zero-ref    "field V43._length (fldOffset=0x8)" P-INDEP
+;* V121 tmp106      [V121    ] (  0,  0   )   byref  ->  zero-ref    "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V122 tmp107      [V122    ] (  0,  0   )     int  ->  zero-ref    "field V42._length (fldOffset=0x8)" P-INDEP
+;  V123 tmp108      [V123,T57] (  2,  4   )   byref  ->  rdi         "field V43._reference (fldOffset=0x0)" P-INDEP
+;  V124 tmp109      [V124,T59] (  2,  4   )     int  ->  rsi         "field V43._length (fldOffset=0x8)" P-INDEP
 ;* V125 tmp110      [V125    ] (  0,  0   )   byref  ->  zero-ref    "field V47._reference (fldOffset=0x0)" P-INDEP
 ;* V126 tmp111      [V126    ] (  0,  0   )     int  ->  zero-ref    "field V47._length (fldOffset=0x8)" P-INDEP
 ;* V127 tmp112      [V127    ] (  0,  0   )   byref  ->  zero-ref    "field V48._reference (fldOffset=0x0)" P-INDEP
 ;* V128 tmp113      [V128    ] (  0,  0   )     int  ->  zero-ref    "field V48._length (fldOffset=0x8)" P-INDEP
 ;* V129 tmp114      [V129    ] (  0,  0   )   byref  ->  zero-ref    "field V55._reference (fldOffset=0x0)" P-INDEP
 ;* V130 tmp115      [V130    ] (  0,  0   )     int  ->  zero-ref    "field V55._length (fldOffset=0x8)" P-INDEP
 ;* V131 tmp116      [V131    ] (  0,  0   )   byref  ->  zero-ref    "field V56._reference (fldOffset=0x0)" P-INDEP
 ;* V132 tmp117      [V132    ] (  0,  0   )     int  ->  zero-ref    "field V56._length (fldOffset=0x8)" P-INDEP
 ;  V133 tmp118      [V133,T43] (  2,  8   )   byref  ->  r15         "field V59._reference (fldOffset=0x0)" P-INDEP
 ;  V134 tmp119      [V134,T49] (  2,  8   )     int  ->  rbx         "field V59._length (fldOffset=0x8)" P-INDEP
 ;  V135 tmp120      [V135,T69] (  3,  1.50)   byref  ->  rsi         "field V62._reference (fldOffset=0x0)" P-INDEP
 ;  V136 tmp121      [V136,T70] (  3,  1.50)     int  ->  rdx         "field V62._length (fldOffset=0x8)" P-INDEP
-;  V137 tmp122      [V137,T73] (  2,  1   )   byref  ->  rsi         single-def "field V64._reference (fldOffset=0x0)" P-INDEP
-;  V138 tmp123      [V138,T79] (  2,  1   )     int  ->  rdx         "field V64._length (fldOffset=0x8)" P-INDEP
-;* V139 tmp124      [V139    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V65._reference (fldOffset=0x0)" P-INDEP
-;* V140 tmp125      [V140    ] (  0,  0   )     int  ->  zero-ref    "field V65._length (fldOffset=0x8)" P-INDEP
+;* V137 tmp122      [V137    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V64._reference (fldOffset=0x0)" P-INDEP
+;* V138 tmp123      [V138    ] (  0,  0   )     int  ->  zero-ref    "field V64._length (fldOffset=0x8)" P-INDEP
+;  V139 tmp124      [V139,T73] (  2,  1   )   byref  ->  rsi         single-def "field V65._reference (fldOffset=0x0)" P-INDEP
+;  V140 tmp125      [V140,T79] (  2,  1   )     int  ->  rdx         "field V65._length (fldOffset=0x8)" P-INDEP
 ;  V141 tmp126      [V141,T74] (  2,  1   )   byref  ->  r15         single-def "field V68._reference (fldOffset=0x0)" P-INDEP
 ;  V142 tmp127      [V142,T80] (  2,  1   )     int  ->  rbx         "field V68._length (fldOffset=0x8)" P-INDEP
 ;  V143 tmp128      [V143,T44] (  2,  8   )   byref  ->  rsi         "field V71._reference (fldOffset=0x0)" P-INDEP
 ;  V144 tmp129      [V144,T34] (  3, 12   )     int  ->  rdx         "field V71._length (fldOffset=0x8)" P-INDEP
 ;* V145 tmp130      [V145    ] (  0,  0   )   byref  ->  zero-ref    "field V72._reference (fldOffset=0x0)" P-INDEP
 ;* V146 tmp131      [V146    ] (  0,  0   )     int  ->  zero-ref    "field V72._length (fldOffset=0x8)" P-INDEP
 ;* V147 tmp132      [V147    ] (  0,  0   )   byref  ->  zero-ref    "field V73._reference (fldOffset=0x0)" P-INDEP
 ;* V148 tmp133      [V148    ] (  0,  0   )     int  ->  zero-ref    "field V73._length (fldOffset=0x8)" P-INDEP
 ;* V149 tmp134      [V149    ] (  0,  0   )   byref  ->  zero-ref    "field V74._reference (fldOffset=0x0)" P-INDEP
 ;* V150 tmp135      [V150    ] (  0,  0   )     int  ->  zero-ref    "field V74._length (fldOffset=0x8)" P-INDEP
 ;  V151 tmp136      [V151,T45] (  2,  8   )   byref  ->  r15         "field V79._reference (fldOffset=0x0)" P-INDEP
 ;* V152 tmp137      [V152,T61] (  0,  0   )     int  ->  zero-ref    "field V79._length (fldOffset=0x8)" P-INDEP
-;  V153 tmp138      [V153,T37] (  3,  8   )   byref  ->  rdi         "field V82._reference (fldOffset=0x0)" P-INDEP
-;  V154 tmp139      [V154,T39] (  3,  8   )     int  ->  rdx         "field V82._length (fldOffset=0x8)" P-INDEP
-;  V155 tmp140      [V155,T58] (  2,  4   )   byref  ->   r8         "field V84._reference (fldOffset=0x0)" P-INDEP
-;  V156 tmp141      [V156,T60] (  2,  4   )     int  ->  rdx         "field V84._length (fldOffset=0x8)" P-INDEP
-;* V157 tmp142      [V157    ] (  0,  0   )   byref  ->  zero-ref    "field V85._reference (fldOffset=0x0)" P-INDEP
-;* V158 tmp143      [V158    ] (  0,  0   )     int  ->  zero-ref    "field V85._length (fldOffset=0x8)" P-INDEP
+;  V153 tmp138      [V153,T37] (  3,  8   )   byref  ->  rdx         "field V82._reference (fldOffset=0x0)" P-INDEP
+;  V154 tmp139      [V154,T39] (  3,  8   )     int  ->  rdi         "field V82._length (fldOffset=0x8)" P-INDEP
+;* V155 tmp140      [V155    ] (  0,  0   )   byref  ->  zero-ref    "field V84._reference (fldOffset=0x0)" P-INDEP
+;* V156 tmp141      [V156    ] (  0,  0   )     int  ->  zero-ref    "field V84._length (fldOffset=0x8)" P-INDEP
+;  V157 tmp142      [V157,T58] (  2,  4   )   byref  ->  rdx         "field V85._reference (fldOffset=0x0)" P-INDEP
+;  V158 tmp143      [V158,T60] (  2,  4   )     int  ->  rdi         "field V85._length (fldOffset=0x8)" P-INDEP
 ;  V159 tmp144      [V159,T46] (  2,  8   )   byref  ->  r15         "field V88._reference (fldOffset=0x0)" P-INDEP
 ;  V160 tmp145      [V160,T50] (  2,  8   )     int  ->  rbx         "field V88._length (fldOffset=0x8)" P-INDEP
 ;  V161 tmp146      [V161,T23] (  2, 16   )    long  ->  rdi         "Cast away GC"
 ;  V162 tmp147      [V162,T24] (  2, 16   )    long  ->  rsi         "Cast away GC"
 ;  V163 tmp148      [V163,T25] (  2, 16   )    long  ->  rdi         "argument with side effect"
 ;  V164 tmp149      [V164,T26] (  2, 16   )    long  ->  rsi         "argument with side effect"
 ;  V165 cse0        [V165,T53] (  3,  5   )    long  ->  [rbp-0x68]  spill-single-def "CSE #08: conservative"
 ;  V166 rat0        [V166,T27] (  4, 12.25)    long  ->  [rbp-0x70]  "Strength reduced derived IV"
 ;  V167 rat1        [V167,T28] (  4, 12.25)     int  ->  [rbp-0x74]  "Trip count IV"
 ;  V168 rat2        [V168,T29] (  4, 12.25)    long  ->   r8         "Strength reduced derived IV"
 ;  V169 rat3        [V169,T30] (  4, 12.25)     int  ->  rdi         "Trip count IV"
 ;  V170 rat4        [V170,T16] (  5, 16.50)    long  ->  [rbp-0x80]  "Widened IV V14"
 ;  V171 rat5        [V171,T17] (  5, 16.50)    long  ->  r12         "Widened IV V12"
 ;
 ; Lcl frame size = 104
 
 G_M11638_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 104
        lea      rbp, [rsp+0x90]
        xor      eax, eax
        mov      qword ptr [rbp-0x50], rax
        mov      qword ptr [rbp-0x58], rax
        mov      r13, rdi
        mov      eax, esi
        mov      r14, rdx
        mov      r12, rcx
        mov      r15, r8
        mov      ebx, r9d
        mov      rcx, bword ptr [rbp+0x10]
 						;; size=53 bbWeight=1 PerfScore 11.50
 G_M11638_IG02:
        xor      edi, edi
        mov      bword ptr [rbp+0x10], rcx
        mov      dword ptr [rcx], edi
        test     eax, eax
        je       G_M11638_IG40
 						;; size=16 bbWeight=1 PerfScore 3.50
 G_M11638_IG03:
        cmp      eax, 1
        je       G_M11638_IG38
        test     ebx, ebx
        je       G_M11638_IG15
        mov      dword ptr [rbp-0x5C], eax
        mov      edx, eax
        sub      edx, 1
        jo       G_M11638_IG46
        imul     edx, dword ptr [r14+0x08]
        jo       G_M11638_IG46
        mov      dword ptr [rbp-0x2C], edx
        test     r12, r12
        je       SHORT G_M11638_IG05
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
        je       G_M11638_IG42
 						;; size=69 bbWeight=0.50 PerfScore 8.75
 G_M11638_IG04:
        mov      rsi, 0xD1FFAB1E      ; data for System.Text.Latin1Encoding:s_default
        cmp      r12, gword ptr [rsi]
        jne      SHORT G_M11638_IG09
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M11638_IG05:
        mov      eax, dword ptr [rbp-0x5C]
        test     eax, eax
        jle      G_M11638_IG13
 						;; size=11 bbWeight=0.50 PerfScore 1.12
 G_M11638_IG06:
        xor      r8d, r8d
        mov      dword ptr [rbp-0x5C], eax
        mov      edi, eax
        align    [4 bytes for IG07]
 						;; size=12 bbWeight=0.25 PerfScore 0.44
 G_M11638_IG07:
        mov      rsi, gword ptr [r8+r13]
        mov      edx, dword ptr [rbp-0x2C]
        add      edx, dword ptr [rsi+0x08]
        jo       G_M11638_IG46
        mov      dword ptr [rbp-0x2C], edx
        add      r8, 8
        dec      edi
        jne      SHORT G_M11638_IG07
 						;; size=27 bbWeight=4 PerfScore 38.00
 G_M11638_IG08:
        mov      byte  ptr [r15], 0
        mov      rdx, r15
        mov      ecx, ebx
        lea      r8, [rbp-0x38]
        mov      edi, dword ptr [rbp-0x2C]
        mov      esi, 7
        mov      r9, 0xD1FFAB1E      ; code for System.Net.Http.HPack.IntegerEncoder:Encode(int,int,System.Span`1[ubyte],byref):ubyte
        call     [r9]System.Net.Http.HPack.IntegerEncoder:Encode(int,int,System.Span`1[ubyte],byref):ubyte
        test     eax, eax
        je       G_M11638_IG15
        mov      eax, dword ptr [rbp-0x38]
        cmp      eax, ebx
        jbe      SHORT G_M11638_IG14
        jmp      G_M11638_IG45
 						;; size=54 bbWeight=0.50 PerfScore 6.00
 G_M11638_IG09:
        mov      eax, dword ptr [rbp-0x5C]
        test     eax, eax
        jg       SHORT G_M11638_IG11
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M11638_IG10:
        mov      dword ptr [rbp-0x5C], eax
        jmp      SHORT G_M11638_IG08
 						;; size=5 bbWeight=0.25 PerfScore 0.75
 G_M11638_IG11:
        xor      r8d, r8d
        mov      dword ptr [rbp-0x5C], eax
        mov      dword ptr [rbp-0x74], eax
 						;; size=9 bbWeight=0.25 PerfScore 0.56
 G_M11638_IG12:
        mov      qword ptr [rbp-0x70], r8
        mov      rsi, gword ptr [r8+r13]
        mov      rdi, r12
        mov      r10, qword ptr [r12]
        mov      r10, qword ptr [r10+0x50]
        call     [r10+0x18]System.Text.Encoding:GetByteCount(System.String):int:this
        mov      edx, eax
        add      edx, dword ptr [rbp-0x2C]
        jo       G_M11638_IG46
        mov      eax, edx
        mov      r8, qword ptr [rbp-0x70]
        add      r8, 8
        mov      r9d, dword ptr [rbp-0x74]
        dec      r9d
        mov      dword ptr [rbp-0x2C], eax
        mov      dword ptr [rbp-0x74], r9d
        jne      SHORT G_M11638_IG12
        jmp      G_M11638_IG08
 						;; size=65 bbWeight=4 PerfScore 85.00
 G_M11638_IG13:
        mov      dword ptr [rbp-0x5C], eax
        jmp      G_M11638_IG08
 						;; size=8 bbWeight=0.25 PerfScore 0.75
 G_M11638_IG14:
        mov      r9d, eax
        add      r15, r9
        sub      ebx, eax
        mov      eax, ebx
        mov      r9d, dword ptr [rbp-0x2C]
        cmp      eax, r9d
        mov      dword ptr [rbp-0x2C], r9d
        jge      SHORT G_M11638_IG17
 						;; size=23 bbWeight=0.50 PerfScore 2.12
 G_M11638_IG15:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M11638_IG16:
        add      rsp, 104
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M11638_IG17:
        mov      eax, dword ptr [rbp-0x5C]
        test     r12, r12
        je       G_M11638_IG26
        mov      r8, gword ptr [r13]
        test     r8, r8
-       je       SHORT G_M11638_IG18
-       lea      rsi, bword ptr [r8+0x0C]
-       mov      edx, dword ptr [r8+0x08]
-       mov      dword ptr [rbp-0x5C], eax
-       jmp      SHORT G_M11638_IG19
-						;; size=34 bbWeight=0.50 PerfScore 5.50
-G_M11638_IG18:
+       jne      SHORT G_M11638_IG18
        xor      rsi, rsi
        xor      edx, edx
        mov      dword ptr [rbp-0x5C], eax
-						;; size=7 bbWeight=0.50 PerfScore 0.75
+       jmp      SHORT G_M11638_IG19
+						;; size=30 bbWeight=0.50 PerfScore 4.50
+G_M11638_IG18:
+       lea      rsi, bword ptr [r8+0x0C]
+       mov      edx, dword ptr [r8+0x08]
+       mov      dword ptr [rbp-0x5C], eax
+						;; size=11 bbWeight=0.50 PerfScore 1.75
 G_M11638_IG19:
        mov      rcx, r15
        mov      r8d, ebx
        mov      rdi, r12
        mov      r10, qword ptr [r12]
        mov      r10, qword ptr [r10+0x58]
        mov      qword ptr [rbp-0x68], r10
        call     [r10+0x28]System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
        cmp      eax, ebx
        ja       G_M11638_IG45
        mov      edx, eax
        add      r15, rdx
        sub      ebx, eax
        mov      qword ptr [rbp-0x80], 1
        cmp      dword ptr [rbp-0x5C], 1
        jle      G_M11638_IG24
 						;; size=58 bbWeight=0.50 PerfScore 7.38
 G_M11638_IG20:
        lea      rsi, bword ptr [r14+0x10]
        mov      edx, dword ptr [r14+0x08]
        cmp      edx, ebx
        jg       G_M11638_IG43
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
        call     [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
        mov      ecx, dword ptr [r14+0x08]
        cmp      ecx, ebx
        ja       G_M11638_IG45
        mov      r8d, ecx
        add      r8, r15
        mov      esi, ebx
        sub      esi, ecx
        mov      r15, r8
        mov      ebx, esi
        mov      rax, qword ptr [rbp-0x80]
        mov      rcx, gword ptr [r13+8*rax]
        test     rcx, rcx
-       je       SHORT G_M11638_IG22
+       jne      SHORT G_M11638_IG22
 						;; size=72 bbWeight=4 PerfScore 65.00
 G_M11638_IG21:
-       lea      r8, bword ptr [rcx+0x0C]
-       mov      edx, dword ptr [rcx+0x08]
-       mov      rdi, r8
+       xor      rdx, rdx
+       xor      edi, edi
        jmp      SHORT G_M11638_IG23
-						;; size=12 bbWeight=2 PerfScore 9.50
+						;; size=6 bbWeight=2 PerfScore 5.00
 G_M11638_IG22:
-       xor      rdi, rdi
-       xor      edx, edx
-						;; size=4 bbWeight=2 PerfScore 1.00
+       lea      rdx, bword ptr [rcx+0x0C]
+       mov      edi, dword ptr [rcx+0x08]
+						;; size=7 bbWeight=2 PerfScore 5.00
 G_M11638_IG23:
        mov      rcx, r15
        mov      r8d, esi
-       mov      rsi, rdi
+       mov      rsi, rdx
+       mov      edx, edi
        mov      rdi, r12
        mov      r9, qword ptr [rbp-0x68]
        call     [r9+0x28]System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
        cmp      eax, ebx
        ja       G_M11638_IG45
        mov      esi, eax
        add      rsi, r15
        sub      ebx, eax
        mov      r15, rsi
        mov      rsi, qword ptr [rbp-0x80]
        inc      esi
        mov      eax, dword ptr [rbp-0x5C]
        cmp      esi, eax
        mov      qword ptr [rbp-0x80], rsi
        jl       G_M11638_IG20
-						;; size=59 bbWeight=4 PerfScore 47.00
+						;; size=61 bbWeight=4 PerfScore 48.00
 G_M11638_IG24:
        mov      r15d, dword ptr [rbp-0x2C]
        mov      eax, r15d
        add      eax, dword ptr [rbp-0x38]
        mov      r15, bword ptr [rbp+0x10]
        mov      dword ptr [r15], eax
        mov      eax, 1
 						;; size=22 bbWeight=0.50 PerfScore 2.75
 G_M11638_IG25:
        add      rsp, 104
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M11638_IG26:
        mov      dword ptr [rbp-0x5C], eax
        mov      r12, gword ptr [r13]
        mov      rsi, r15
        mov      edx, ebx
        mov      rdi, r12
        mov      r8, 0xD1FFAB1E      ; code for System.Net.Http.HPack.HPackEncoder:EncodeValueStringPart(System.String,System.Span`1[ubyte])
        call     [r8]System.Net.Http.HPack.HPackEncoder:EncodeValueStringPart(System.String,System.Span`1[ubyte])
        mov      edx, dword ptr [r12+0x08]
        cmp      edx, ebx
        ja       G_M11638_IG45
        mov      edi, edx
        add      rdi, r15
        sub      ebx, edx
        mov      r15, rdi
        mov      r12d, 1
        cmp      dword ptr [rbp-0x5C], 1
        jle      SHORT G_M11638_IG24
 						;; size=63 bbWeight=0.50 PerfScore 7.25
 G_M11638_IG27:
        lea      rsi, bword ptr [r14+0x10]
        mov      edx, dword ptr [r14+0x08]
        cmp      edx, ebx
        jg       G_M11638_IG43
        mov      rdi, r15
        mov      rcx, 0xD1FFAB1E      ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
        call     [rcx]System.SpanHelpers:Memmove(byref,byref,ulong)
        mov      edi, dword ptr [r14+0x08]
        cmp      edi, ebx
        ja       G_M11638_IG45
        mov      eax, edi
        add      r15, rax
        sub      ebx, edi
        mov      rdi, gword ptr [r13+8*r12]
        mov      rax, rdi
        test     rax, rax
-       je       SHORT G_M11638_IG29
+       jne      SHORT G_M11638_IG29
 						;; size=63 bbWeight=4 PerfScore 59.00
 G_M11638_IG28:
+       xor      rdi, rdi
+       xor      esi, esi
+       mov      gword ptr [rbp-0x88], rax
+       jmp      SHORT G_M11638_IG30
+						;; size=13 bbWeight=2 PerfScore 7.00
+G_M11638_IG29:
        lea      rdi, bword ptr [rax+0x0C]
        mov      gword ptr [rbp-0x88], rax
        mov      esi, dword ptr [rax+0x08]
-       mov      rax, gword ptr [rbp-0x88]
-       jmp      SHORT G_M11638_IG30
-						;; size=23 bbWeight=2 PerfScore 13.00
-G_M11638_IG29:
-       xor      rdi, rdi
-       xor      esi, esi
-						;; size=4 bbWeight=2 PerfScore 1.00
+						;; size=14 bbWeight=2 PerfScore 7.00
 G_M11638_IG30:
        cmp      esi, ebx
        jle      SHORT G_M11638_IG32
 						;; size=4 bbWeight=4 PerfScore 5.00
 G_M11638_IG31:
        mov      ecx, ebx
        mov      r8d, 1
-       mov      gword ptr [rbp-0x88], rax
        mov      dword ptr [rbp-0x44], r8d
        jmp      SHORT G_M11638_IG33
-						;; size=21 bbWeight=2 PerfScore 9.00
+						;; size=14 bbWeight=2 PerfScore 7.00
 G_M11638_IG32:
        mov      ecx, esi
        xor      r8d, r8d
        mov      dword ptr [rbp-0x44], r8d
-       mov      gword ptr [rbp-0x88], rax
-						;; size=16 bbWeight=2 PerfScore 5.00
+						;; size=9 bbWeight=2 PerfScore 3.00
 G_M11638_IG33:
        mov      bword ptr [rbp-0x50], rdi
        mov      bword ptr [rbp-0x58], r15
        mov      rsi, r15
        mov      qword ptr [rbp-0x40], rcx
        mov      rdx, rcx
        mov      r9, 0xD1FFAB1E      ; code for System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong
        call     [r9]System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong
        cmp      rax, qword ptr [rbp-0x40]
        jne      SHORT G_M11638_IG35
 						;; size=37 bbWeight=4 PerfScore 39.00
 G_M11638_IG34:
        mov      r8d, dword ptr [rbp-0x44]
        jmp      SHORT G_M11638_IG36
 						;; size=6 bbWeight=2 PerfScore 6.00
 G_M11638_IG35:
        mov      r8d, 3
 						;; size=6 bbWeight=2 PerfScore 0.50
 G_M11638_IG36:
        xor      rax, rax
        mov      bword ptr [rbp-0x50], rax
 						;; size=6 bbWeight=4 PerfScore 5.00
 G_M11638_IG37:
        mov      bword ptr [rbp-0x58], rax
        cmp      r8d, 3
        je       G_M11638_IG44
        mov      rax, gword ptr [rbp-0x88]
        mov      eax, dword ptr [rax+0x08]
        cmp      eax, ebx
        ja       G_M11638_IG45
        mov      ecx, eax
        add      r15, rcx
        sub      ebx, eax
        inc      r12d
        mov      eax, dword ptr [rbp-0x5C]
        cmp      r12d, eax
        mov      dword ptr [rbp-0x5C], eax
        jl       G_M11638_IG27
        jmp      G_M11638_IG24
 						;; size=62 bbWeight=4 PerfScore 51.00
 G_M11638_IG38:
        mov      rdx, r15
        mov      ecx, ebx
        mov      rdi, gword ptr [r13]
        mov      rsi, r12
        mov      r8, bword ptr [rbp+0x10]
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Http.HPack.HPackEncoder:EncodeStringLiteral(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
        call     [rax]System.Net.Http.HPack.HPackEncoder:EncodeStringLiteral(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
        nop      
 						;; size=29 bbWeight=0.50 PerfScore 3.62
 G_M11638_IG39:
        add      rsp, 104
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M11638_IG40:
        mov      rdx, r15
        mov      ecx, ebx
        mov      r8, bword ptr [rbp+0x10]
        mov      rdi, 0xD1FFAB1E      ; ''
        xor      rsi, rsi
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Http.HPack.HPackEncoder:EncodeStringLiteral(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
        call     [rax]System.Net.Http.HPack.HPackEncoder:EncodeStringLiteral(System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte
        nop      
 						;; size=34 bbWeight=0.50 PerfScore 2.75
 G_M11638_IG41:
        add      rsp, 104
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M11638_IG42:
        mov      rdi, 0xD1FFAB1E      ; System.Text.Latin1Encoding
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M11638_IG04
 						;; size=20 bbWeight=0 PerfScore 0.00
 G_M11638_IG43:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
        call     [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 G_M11638_IG44:
        mov      rdi, 0xD1FFAB1E      ; System.Net.Http.HttpRequestException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_net_http_request_invalid_char_encoding():System.String
        call     [rax]System.SR:get_net_http_request_invalid_char_encoding():System.String
        mov      r13, rax
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Exception:.ctor():this
        call     [rax]System.Exception:.ctor():this
        lea      rdi, bword ptr [rbx+0x10]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
 						;; size=69 bbWeight=0 PerfScore 0.00
 G_M11638_IG45:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 G_M11638_IG46:
        call     CORINFO_HELP_OVERFLOW
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1199, prolog size 53, PerfScore 516.38, instruction count 342, allocated bytes for code 1199 (MethodHash=5537d289) for method System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
+; Total bytes of code 1184, prolog size 53, PerfScore 512.88, instruction count 340, allocated bytes for code 1184 (MethodHash=5537d289) for method System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
 ; ============================================================
-15 (-5.49 % of base) - System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
 ; Assembly listing for method System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T01] (  3,  3   )   byref  ->  r15         this single-def
 ;  V01 arg1         [V01,T00] (  4,  3.50)     ref  ->  rbx         class-hnd single-def <System.Delegate>
 ;  V02 arg2         [V02,T02] (  3,  2.50)     ref  ->  r14         class-hnd single-def <System.Object>
 ;  V03 arg3         [V03,T03] (  3,  2.50)   ubyte  ->  r13         single-def
 ;  V04 arg4         [V04,T04] (  3,  2.50)   ubyte  ->  r12         single-def
 ;  V05 loc0         [V05,T07] (  3,  2.50)     ref  ->  r15         class-hnd single-def <System.Threading.CancellationTokenSource>
 ;* V06 loc1         [V06    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op <System.Threading.CancellationTokenRegistration>
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V08 tmp1         [V08    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V09 tmp2         [V09    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V10 tmp3         [V10    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V11 tmp4         [V11    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V12 tmp5         [V12    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V13 tmp6         [V13    ] (  0,  0   )     ref  ->  zero-ref   
 ;  V14 tmp7         [V14,T11] (  3,  1.50)     ref  ->  r13        
 ;* V15 tmp8         [V15    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V16 tmp9         [V16    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V17 tmp10        [V17    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V18 tmp11        [V18    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V19 tmp12        [V19    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V20 tmp13        [V20    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V21 tmp14        [V21    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V22 tmp15        [V22    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;  V23 tmp16        [V23,T12] (  3,  1.50)     ref  ->  rax        
 ;  V24 tmp17        [V24,T10] (  2,  2   )     ref  ->  rax         class-hnd exact single-def "dup spill" <System.Threading.Thread>
 ;  V25 tmp18        [V25,T08] (  4,  2   )     ref  ->  rax        
 ;  V26 tmp19        [V26,T13] (  2,  1   )     ref  ->  rax         single-def "field V06._node (fldOffset=0x0)" P-INDEP
 ;  V27 tmp20        [V27,T14] (  2,  1   )    long  ->  rdx         "field V06._id (fldOffset=0x8)" P-INDEP
 ;  V28 tmp21        [V28,T15] (  2,  1   )  struct (16) [rbp-0x38]  do-not-enreg[SR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Threading.CancellationTokenRegistration>
 ;  V29 rat0         [V29,T09] (  3,  2   )   byref  ->  rax         "TLS field access"
 ;  V30 rat1         [V30,T06] (  3,  3   )    long  ->  rax         "TLS access"
 ;  V31 rat2         [V31,T05] (  3,  3   )   byref  ->  rax         "ThreadStaticBlockBase access"
 ;
 ; Lcl frame size = 24
 
 G_M51353_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 24
        lea      rbp, [rsp+0x40]
        xor      eax, eax
        mov      qword ptr [rbp-0x38], rax
        mov      r15, rdi
        mov      rbx, rsi
        mov      r14, rdx
        mov      r13d, ecx
        mov      r12d, r8d
 						;; size=40 bbWeight=1 PerfScore 9.25
 G_M51353_IG02:
        mov      rdi, rbx
        mov      rsi, 0xD1FFAB1E      ; 'callback'
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        mov      r15, gword ptr [r15]
        test     r15, r15
-       je       G_M51353_IG11
-						;; size=37 bbWeight=1 PerfScore 7.00
+       jne      SHORT G_M51353_IG05
+						;; size=33 bbWeight=1 PerfScore 7.00
 G_M51353_IG03:
+       xor      rax, rax
+       xor      edx, edx
+						;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M51353_IG04:
+       add      rsp, 24
+       pop      rbx
+       pop      r12
+       pop      r13
+       pop      r14
+       pop      r15
+       pop      rbp
+       ret      
+						;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M51353_IG05:
        test     r13b, r13b
-       je       SHORT G_M51353_IG06
+       je       SHORT G_M51353_IG08
        mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
        call     rax
        cmp      dword ptr [rax], 3
-       jle      G_M51353_IG13
+       jle      SHORT G_M51353_IG13
        mov      rdi, gword ptr [rax+0x08]
        mov      rax, bword ptr [rdi+0x18]
        test     rax, rax
-       je       G_M51353_IG13
-						;; size=53 bbWeight=0.50 PerfScore 7.00
-G_M51353_IG04:
+       je       SHORT G_M51353_IG13
+						;; size=45 bbWeight=0.50 PerfScore 7.00
+G_M51353_IG06:
        mov      rax, gword ptr [rax+0x10]
        test     rax, rax
-       jne      SHORT G_M51353_IG05
+       jne      SHORT G_M51353_IG07
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Thread:InitializeCurrentThread():System.Threading.Thread
        call     [rax]System.Threading.Thread:InitializeCurrentThread():System.Threading.Thread
 						;; size=21 bbWeight=0.50 PerfScore 3.25
-G_M51353_IG05:
+G_M51353_IG07:
        mov      r13, gword ptr [rax+0x10]
-       jmp      SHORT G_M51353_IG07
+       jmp      SHORT G_M51353_IG09
 						;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M51353_IG06:
+G_M51353_IG08:
        xor      r13, r13
 						;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M51353_IG07:
+G_M51353_IG09:
        test     r12b, r12b
-       je       SHORT G_M51353_IG08
+       je       SHORT G_M51353_IG10
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
        call     [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
-       jmp      SHORT G_M51353_IG09
+       jmp      SHORT G_M51353_IG11
 						;; size=19 bbWeight=0.50 PerfScore 3.25
-G_M51353_IG08:
+G_M51353_IG10:
        xor      rax, rax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M51353_IG09:
+G_M51353_IG11:
        mov      rdi, r15
        mov      rsi, rbx
        mov      rdx, r14
        mov      rcx, r13
        mov      r8, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this
        call     [rax]System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this
        mov      gword ptr [rbp-0x38], rax
        mov      qword ptr [rbp-0x30], rdx
        mov      rax, gword ptr [rbp-0x38]
        mov      rdx, qword ptr [rbp-0x30]
 						;; size=43 bbWeight=0.50 PerfScore 4.25
-G_M51353_IG10:
-       add      rsp, 24
-       pop      rbx
-       pop      r12
-       pop      r13
-       pop      r14
-       pop      r15
-       pop      rbp
-       ret      
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M51353_IG11:
-       xor      rax, rax
-       xor      edx, edx
-						;; size=4 bbWeight=0.50 PerfScore 0.25
 G_M51353_IG12:
        add      rsp, 24
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M51353_IG13:
        mov      edi, 3
        call     CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
-       jmp      G_M51353_IG04
-						;; size=15 bbWeight=0 PerfScore 0.00
+       jmp      SHORT G_M51353_IG06
+						;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 273, prolog size 25, PerfScore 40.75, instruction count 79, allocated bytes for code 273 (MethodHash=02473766) for method System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this (FullOpts)
+; Total bytes of code 258, prolog size 25, PerfScore 40.75, instruction count 79, allocated bytes for code 258 (MethodHash=02473766) for method System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this (FullOpts)
 ; ============================================================
-6 (-4.48 % of base) - System.DateTimeParse:SetIfStartsWith(System.ReadOnlySpan`1[ushort],System.String,int,byref,byref)
 ; Assembly listing for method System.DateTimeParse:SetIfStartsWith(System.ReadOnlySpan`1[ushort],System.String,int,byref,byref) (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 4 single block inlinees; 5 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;* V00 arg0         [V00    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
 ;  V01 arg1         [V01,T00] (  6,  4.50)     ref  ->  rbx         class-hnd single-def <System.String>
 ;  V02 arg2         [V02,T05] (  3,  2.50)     int  ->  r13         single-def
 ;  V03 arg3         [V03,T03] (  3,  2.50)   byref  ->  r15         single-def
 ;  V04 arg4         [V04,T04] (  3,  2.50)   byref  ->  r14         single-def
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V06 tmp1         [V06    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V07 tmp2         [V07    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;* V08 tmp3         [V08    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V09 tmp4         [V09    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-;  V10 tmp5         [V10,T09] (  2,  2   )   byref  ->  rdx         single-def "Inlining Arg"
-;  V11 tmp6         [V11,T10] (  2,  2   )     int  ->  rax         "Inlining Arg"
+;* V08 tmp3         [V08    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+;* V09 tmp4         [V09    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+;  V10 tmp5         [V10,T09] (  2,  2   )   byref  ->  rax         single-def "Inlining Arg"
+;  V11 tmp6         [V11,T10] (  2,  2   )     int  ->  rdx         "Inlining Arg"
 ;* V12 tmp7         [V12    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V13 tmp8         [V13,T12] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V14 tmp9         [V14    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V15 tmp10        [V15    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V16 tmp11        [V16    ] (  0,  0   )   byref  ->  zero-ref    single-def "impAppendStmt"
 ;* V17 tmp12        [V17    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V18 tmp13        [V18    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;  V19 tmp14        [V19,T08] (  4,  2   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V20 tmp15        [V20    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V21 tmp16        [V21    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;  V22 tmp17        [V22,T02] (  4,  2.50)   byref  ->  rdi         single-def "field V00._reference (fldOffset=0x0)" P-INDEP
 ;  V23 tmp18        [V23,T06] (  2,  2   )     int  ->  rsi         single-def "field V00._length (fldOffset=0x8)" P-INDEP
 ;* V24 tmp19        [V24    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V06._reference (fldOffset=0x0)" P-INDEP
 ;* V25 tmp20        [V25    ] (  0,  0   )     int  ->  zero-ref    "field V06._length (fldOffset=0x8)" P-INDEP
-;  V26 tmp21        [V26,T07] (  5,  2.50)   byref  ->  rdx         "field V07._reference (fldOffset=0x0)" P-INDEP
-;  V27 tmp22        [V27,T01] (  8,  4.50)     int  ->  rax         "field V07._length (fldOffset=0x8)" P-INDEP
-;  V28 tmp23        [V28,T11] (  2,  1   )   byref  ->  rdx         single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-;  V29 tmp24        [V29,T13] (  2,  1   )     int  ->  rax         "field V08._length (fldOffset=0x8)" P-INDEP
-;* V30 tmp25        [V30    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V09._reference (fldOffset=0x0)" P-INDEP
-;* V31 tmp26        [V31    ] (  0,  0   )     int  ->  zero-ref    "field V09._length (fldOffset=0x8)" P-INDEP
+;  V26 tmp21        [V26,T07] (  5,  2.50)   byref  ->  rax         "field V07._reference (fldOffset=0x0)" P-INDEP
+;  V27 tmp22        [V27,T01] (  8,  4.50)     int  ->  rdx         "field V07._length (fldOffset=0x8)" P-INDEP
+;* V28 tmp23        [V28    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+;* V29 tmp24        [V29    ] (  0,  0   )     int  ->  zero-ref    "field V08._length (fldOffset=0x8)" P-INDEP
+;  V30 tmp25        [V30,T11] (  2,  1   )   byref  ->  rax         single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;  V31 tmp26        [V31,T13] (  2,  1   )     int  ->  rdx         "field V09._length (fldOffset=0x8)" P-INDEP
 ;* V32 tmp27        [V32    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V14._reference (fldOffset=0x0)" P-INDEP
 ;* V33 tmp28        [V33    ] (  0,  0   )     int  ->  zero-ref    "field V14._length (fldOffset=0x8)" P-INDEP
 ;* V34 tmp29        [V34    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V35 tmp30        [V35    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
 ;* V36 tmp31        [V36    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V17._reference (fldOffset=0x0)" P-INDEP
 ;* V37 tmp32        [V37    ] (  0,  0   )     int  ->  zero-ref    "field V17._length (fldOffset=0x8)" P-INDEP
 ;* V38 tmp33        [V38    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V18._reference (fldOffset=0x0)" P-INDEP
 ;* V39 tmp34        [V39    ] (  0,  0   )     int  ->  zero-ref    "field V18._length (fldOffset=0x8)" P-INDEP
 ;
 ; Lcl frame size = 0
 
 G_M48478_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        lea      rbp, [rsp+0x20]
        mov      rbx, rdx
        mov      r13d, ecx
        mov      r15, r8
        mov      r14, r9
 						;; size=25 bbWeight=1 PerfScore 6.50
 G_M48478_IG02:
        test     rbx, rbx
-       je       SHORT G_M48478_IG04
+       jne      SHORT G_M48478_IG04
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M48478_IG03:
-       lea      rdx, bword ptr [rbx+0x0C]
-       mov      eax, dword ptr [rbx+0x08]
+       xor      rax, rax
+       xor      edx, edx
        jmp      SHORT G_M48478_IG05
-						;; size=9 bbWeight=0.50 PerfScore 2.25
+						;; size=6 bbWeight=0.50 PerfScore 1.25
 G_M48478_IG04:
-       xor      rdx, rdx
-       xor      eax, eax
-						;; size=4 bbWeight=0.50 PerfScore 0.25
+       lea      rax, bword ptr [rbx+0x0C]
+       mov      edx, dword ptr [rbx+0x08]
+						;; size=7 bbWeight=0.50 PerfScore 1.25
 G_M48478_IG05:
-       cmp      eax, esi
+       cmp      edx, esi
        jg       SHORT G_M48478_IG10
 						;; size=4 bbWeight=1 PerfScore 1.25
 G_M48478_IG06:
-       cmp      eax, 8
+       cmp      edx, 8
        jl       SHORT G_M48478_IG08
-       cmp      eax, 16
+       cmp      edx, 16
        jge      SHORT G_M48478_IG07
-       mov      rsi, rdx
-       mov      edx, eax
+       mov      rsi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte
        call     [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte
        jmp      SHORT G_M48478_IG09
-						;; size=29 bbWeight=0.50 PerfScore 4.12
+						;; size=27 bbWeight=0.50 PerfScore 4.00
 G_M48478_IG07:
-       mov      rsi, rdx
-       mov      edx, eax
+       mov      rsi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector256`1[ushort]](byref,byref,int):ubyte
        call     [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector256`1[ushort]](byref,byref,int):ubyte
        jmp      SHORT G_M48478_IG09
-						;; size=19 bbWeight=0.50 PerfScore 2.88
+						;; size=17 bbWeight=0.50 PerfScore 2.75
 G_M48478_IG08:
-       mov      rsi, rdx
-       mov      edx, eax
+       mov      rsi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Scalar(byref,byref,int):ubyte
        call     [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Scalar(byref,byref,int):ubyte
-						;; size=17 bbWeight=0.50 PerfScore 1.88
+						;; size=15 bbWeight=0.50 PerfScore 1.75
 G_M48478_IG09:
        test     eax, eax
        je       SHORT G_M48478_IG10
        mov      dword ptr [r15], r13d
        mov      eax, dword ptr [rbx+0x08]
        mov      dword ptr [r14], eax
 						;; size=13 bbWeight=0.50 PerfScore 2.62
 G_M48478_IG10:
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=9 bbWeight=1 PerfScore 3.50
 
-; Total bytes of code 134, prolog size 13, PerfScore 26.50, instruction count 48, allocated bytes for code 134 (MethodHash=384342a1) for method System.DateTimeParse:SetIfStartsWith(System.ReadOnlySpan`1[ushort],System.String,int,byref,byref) (FullOpts)
+; Total bytes of code 128, prolog size 13, PerfScore 26.12, instruction count 45, allocated bytes for code 128 (MethodHash=384342a1) for method System.DateTimeParse:SetIfStartsWith(System.ReadOnlySpan`1[ushort],System.String,int,byref,byref) (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/6b1ac912b4b43b776877ec8369efddd7

@MihuBot
Copy link
Owner Author

MihuBot commented Oct 29, 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