MihuBot / runtime-utils

0 stars 0 forks source link

[X64] xtqqczze/dotnet-runtime/MemoryMarshal-Cast #348

Open MihuBot opened 5 months ago

MihuBot commented 5 months ago

Build completed in 29 minutes.

Diffs

Diffs ``` Found 273 files with textual diffs. Summary of Code Size diffs: (Lower is better) Total bytes of base: 38843992 Total bytes of diff: 38846134 Total bytes of delta: 2142 (0.01 % of base) Total relative delta: 1.67 diff is a regression. relative diff is a regression. Top file regressions (bytes): 1312 : System.Private.CoreLib.dasm (0.02 % of base) 648 : System.Private.Xml.dasm (0.02 % of base) 199 : System.Console.dasm (0.23 % of base) 86 : System.Text.Json.dasm (0.01 % of base) Top file improvements (bytes): -39 : System.Private.Uri.dasm (-0.04 % of base) -24 : Microsoft.Extensions.Logging.Console.dasm (-0.03 % of base) -16 : System.Net.Primitives.dasm (-0.02 % of base) -16 : System.Net.Http.dasm (-0.00 % of base) -5 : System.Linq.dasm (-0.00 % of base) -3 : System.Runtime.Numerics.dasm (-0.00 % of base) 10 total files with Code Size differences (6 improved, 4 regressed), 246 unchanged. Top method regressions (bytes): 1068 (93.93 % of base) : System.Private.CoreLib.dasm - System.Number:g__TryFormatInt128Slow|42_0[ubyte](System.Int128,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.Span`1[ubyte],byref):ubyte (FullOpts) 504 (11.05 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.XmlSerializationWriter:WriteTypedPrimitive(System.String,System.String,System.Object,ubyte):this (FullOpts) 215 (4.77 % of base) : System.Console.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (FullOpts) 181 (4.29 % of base) : System.Private.Xml.dasm - System.Xml.Schema.XsdDuration:TryFormat(System.Span`1[ushort],byref,int):ubyte:this (FullOpts) 154 (9.53 % of base) : System.Private.CoreLib.dasm - System.Number:TryParseFloat[ubyte,double](System.ReadOnlySpan`1[ubyte],int,System.Globalization.NumberFormatInfo,byref):ubyte (FullOpts) 117 (4.43 % of base) : System.Private.CoreLib.dasm - System.TimeZoneInfo+StringSerializer:SerializeTransitionTime(System.TimeZoneInfo+TransitionTime,byref) (FullOpts) 109 (20.60 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.Int128Converter:Format(System.Span`1[ubyte],System.Int128,byref) (FullOpts) 99 (26.12 % of base) : System.Private.CoreLib.dasm - System.IntPtr:TryFormat(System.Span`1[ubyte],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts) 69 (8.18 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.Int128Converter:WriteCore(System.Text.Json.Utf8JsonWriter,System.Int128) (FullOpts) 34 (4.04 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:g__GrowAndAppendFormatted|20_0[long](byref,long,int,byref,System.String):ubyte (FullOpts) 33 (3.99 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:g__GrowAndAppendFormatted|20_0[System.Nullable`1[int]](byref,System.Nullable`1[int],int,byref,System.String):ubyte (FullOpts) 32 (2.70 % of base) : System.Private.CoreLib.dasm - System.Number:TryParseBinaryIntegerStyle[ubyte,long](System.ReadOnlySpan`1[ubyte],int,System.Globalization.NumberFormatInfo,byref):int (FullOpts) 29 (4.98 % of base) : System.Private.CoreLib.dasm - System.Int128:TryFormat(System.Span`1[ubyte],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts) 24 (2.94 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:g__GrowAndAppendFormatted|20_0[short](byref,short,int,byref,System.String):ubyte (FullOpts) 19 (2.35 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:g__GrowAndAppendFormatted|20_0[int](byref,int,int,byref,System.String):ubyte (FullOpts) 17 (3.79 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[int](int):ubyte:this (FullOpts) 16 (1.57 % of base) : System.Private.CoreLib.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,int](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (FullOpts) 14 (2.69 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendFormatted[int](int):ubyte:this (FullOpts) 11 (0.61 % of base) : System.Private.CoreLib.dasm - System.Enum:GetValuesAsUnderlyingType(System.RuntimeType):System.Array (FullOpts) 10 (1.81 % of base) : System.Private.CoreLib.dasm - System.DateTimeFormat:FormatFraction[ubyte](byref,int,System.ReadOnlySpan`1[ushort]) (FullOpts) 9 (1.83 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[long](long):ubyte:this (FullOpts) 8 (2.01 % of base) : System.Private.CoreLib.dasm - System.IntPtr:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts) 7 (1.64 % of base) : System.Runtime.Numerics.dasm - System.Numerics.Complex:TryFormatCore[ubyte](System.Span`1[ubyte],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts) 7 (0.93 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.Int128Converter:WriteAsPropertyNameCore(System.Text.Json.Utf8JsonWriter,System.Int128,System.Text.Json.JsonSerializerOptions,ubyte):this (FullOpts) 7 (1.16 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[System.Nullable`1[int]](System.Nullable`1[int],System.String):this (FullOpts) 6 (1.05 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[long](long,System.String):this (FullOpts) 6 (1.08 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[short](short,System.String):this (FullOpts) 5 (0.78 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendFormatted[long](long,System.String):ubyte:this (FullOpts) 5 (0.88 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendFormatted[long](long):ubyte:this (FullOpts) 5 (0.60 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendFormatted[System.Nullable`1[int]](System.Nullable`1[int],System.String):ubyte:this (FullOpts) 4 (1.11 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryFormat(long,System.Span`1[ushort],byref):ubyte (FullOpts) 3 (0.46 % of base) : System.Private.CoreLib.dasm - System.Text.Rune:ChangeCaseCultureAware(System.Text.Rune,System.Globalization.TextInfo,ubyte):System.Text.Rune (FullOpts) 2 (0.35 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this (FullOpts) 2 (0.33 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendFormatted[int](int,System.String):ubyte:this (FullOpts) 1 (0.68 % of base) : System.Private.CoreLib.dasm - System.DateTimeFormat:AppendString[ubyte](byref,System.ReadOnlySpan`1[ushort]) (FullOpts) 1 (0.09 % 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) 1 (0.09 % 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) 1 (0.25 % of base) : System.Private.CoreLib.dasm - System.Int16:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts) 1 (0.25 % of base) : System.Private.CoreLib.dasm - System.Int32:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts) 1 (0.24 % of base) : System.Private.CoreLib.dasm - System.Int64:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts) 1 (9.09 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:Cast[long,long](System.ReadOnlySpan`1[long]):System.ReadOnlySpan`1[long] (FullOpts) 1 (9.09 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:Cast[long,long](System.Span`1[long]):System.Span`1[long] (FullOpts) 1 (0.25 % of base) : System.Private.CoreLib.dasm - System.SByte:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts) 1 (0.30 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryFormat(byte,System.Span`1[ushort],byref):ubyte (FullOpts) 1 (0.32 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryFormat(int,System.Span`1[ushort],byref):ubyte (FullOpts) 1 (0.30 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryFormat(short,System.Span`1[ushort],byref):ubyte (FullOpts) Top method improvements (bytes): -135 (-1.94 % of base) : System.Private.CoreLib.dasm - System.Number:NumberToStringFormat[ubyte](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts) -99 (-7.19 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.Int128Converter:WriteNumberWithCustomHandling(System.Text.Json.Utf8JsonWriter,System.Int128,int):this (FullOpts) -28 (-1.16 % of base) : System.Private.Xml.dasm - System.Xml.Schema.XsdDateTime:TryFormat(System.Span`1[ushort],byref):ubyte:this (FullOpts) -27 (-1.44 % of base) : System.Private.Uri.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (FullOpts) -21 (-3.73 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[short](short,System.String):ubyte:this (FullOpts) -18 (-3.38 % of base) : System.Private.CoreLib.dasm - System.Int128:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts) -18 (-2.33 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[System.Nullable`1[int]](System.Nullable`1[int],System.String):this (FullOpts) -17 (-2.93 % of base) : System.Private.CoreLib.dasm - System.Version:TryFormatCore[ubyte](System.Span`1[ubyte],int,byref):ubyte:this (FullOpts) -16 (-2.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[System.Nullable`1[int]](System.Nullable`1[int],System.String):ubyte:this (FullOpts) -16 (-1.59 % of base) : System.Net.Primitives.dasm - System.Net.SocketAddress:ToString():System.String:this (FullOpts) -16 (-2.95 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int,System.String):this (FullOpts) -14 (-2.55 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[long](long):this (FullOpts) -13 (-2.58 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[int](int):this (FullOpts) -12 (-1.01 % 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) -12 (-0.77 % of base) : System.Private.Uri.dasm - System.UriBuilder:ToString():System.String:this (FullOpts) -11 (-0.20 % of base) : System.Private.CoreLib.dasm - System.DateTimeFormat:FormatCustomized[ubyte](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts) -11 (-2.36 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder:AppendSpanFormattable[int](int):System.Text.StringBuilder:this (FullOpts) -11 (-2.19 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder:AppendSpanFormattable[long](long):System.Text.StringBuilder:this (FullOpts) -11 (-2.35 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder:AppendSpanFormattable[short](short):System.Text.StringBuilder:this (FullOpts) -11 (-1.77 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendFormatted[short](short,System.String):ubyte:this (FullOpts) -10 (-0.28 % 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) -8 (-1.46 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[int](int,System.String):ubyte:this (FullOpts) -8 (-1.39 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[long](long,System.String):ubyte:this (FullOpts) -8 (-1.49 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[System.Nullable`1[int]](System.Nullable`1[int]):this (FullOpts) -8 (-1.13 % of base) : System.Private.Xml.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[int](int,System.String,System.IFormatProvider):this (FullOpts) -8 (-1.13 % of base) : System.Console.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[int](int,System.String,System.IFormatProvider):this (FullOpts) -8 (-1.13 % of base) : System.Net.Http.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[int](int,System.String,System.IFormatProvider):this (FullOpts) -8 (-1.13 % of base) : System.Private.CoreLib.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[int](int,System.String,System.IFormatProvider):this (FullOpts) -8 (-1.13 % of base) : System.Private.Xml.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[short](short,System.String,System.IFormatProvider):this (FullOpts) -8 (-1.13 % of base) : System.Console.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[short](short,System.String,System.IFormatProvider):this (FullOpts) -8 (-1.13 % of base) : System.Net.Http.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[short](short,System.String,System.IFormatProvider):this (FullOpts) -8 (-1.13 % of base) : System.Private.CoreLib.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[short](short,System.String,System.IFormatProvider):this (FullOpts) -7 (-1.21 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[int](int,System.String):this (FullOpts) -7 (-1.17 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[short](short,System.String):this (FullOpts) -6 (-0.75 % of base) : System.Private.CoreLib.dasm - System.Number:FormatCurrency[ubyte](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts) -6 (-0.75 % of base) : System.Private.CoreLib.dasm - System.Number:FormatPercent[ubyte](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts) -5 (-8.77 % of base) : System.Linq.dasm - System.Linq.Enumerable:Sum[long,long](System.ReadOnlySpan`1[long]):long (FullOpts) -5 (-0.78 % of base) : System.Private.CoreLib.dasm - System.Number:FormatExponent[ubyte](byref,System.Globalization.NumberFormatInfo,int,ushort,int,ubyte) (FullOpts) -5 (-1.39 % of base) : System.Private.CoreLib.dasm - System.Number:ThrowFormatException[ubyte](System.ReadOnlySpan`1[ubyte]) (FullOpts) -5 (-0.94 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[short](short):this (FullOpts) -3 (-0.42 % of base) : Microsoft.Extensions.Logging.Console.dasm - Microsoft.Extensions.Logging.Console.SimpleConsoleFormatter:CreateDefaultLogMessage[double](System.IO.TextWriter,byref,System.String,Microsoft.Extensions.Logging.IExternalScopeProvider):this (FullOpts) -3 (-0.42 % of base) : Microsoft.Extensions.Logging.Console.dasm - Microsoft.Extensions.Logging.Console.SimpleConsoleFormatter:CreateDefaultLogMessage[int](System.IO.TextWriter,byref,System.String,Microsoft.Extensions.Logging.IExternalScopeProvider):this (FullOpts) -3 (-0.42 % of base) : Microsoft.Extensions.Logging.Console.dasm - Microsoft.Extensions.Logging.Console.SimpleConsoleFormatter:CreateDefaultLogMessage[long](System.IO.TextWriter,byref,System.String,Microsoft.Extensions.Logging.IExternalScopeProvider):this (FullOpts) -3 (-0.42 % of base) : Microsoft.Extensions.Logging.Console.dasm - Microsoft.Extensions.Logging.Console.SimpleConsoleFormatter:CreateDefaultLogMessage[short](System.IO.TextWriter,byref,System.String,Microsoft.Extensions.Logging.IExternalScopeProvider):this (FullOpts) -3 (-0.42 % of base) : Microsoft.Extensions.Logging.Console.dasm - Microsoft.Extensions.Logging.Console.SimpleConsoleFormatter:CreateDefaultLogMessage[System.__Canon](System.IO.TextWriter,byref,System.String,Microsoft.Extensions.Logging.IExternalScopeProvider):this (FullOpts) -3 (-0.42 % of base) : Microsoft.Extensions.Logging.Console.dasm - Microsoft.Extensions.Logging.Console.SimpleConsoleFormatter:CreateDefaultLogMessage[System.Nullable`1[int]](System.IO.TextWriter,byref,System.String,Microsoft.Extensions.Logging.IExternalScopeProvider):this (FullOpts) -3 (-0.42 % of base) : Microsoft.Extensions.Logging.Console.dasm - Microsoft.Extensions.Logging.Console.SimpleConsoleFormatter:CreateDefaultLogMessage[System.Numerics.Vector`1[float]](System.IO.TextWriter,byref,System.String,Microsoft.Extensions.Logging.IExternalScopeProvider):this (FullOpts) -3 (-0.42 % of base) : Microsoft.Extensions.Logging.Console.dasm - Microsoft.Extensions.Logging.Console.SimpleConsoleFormatter:CreateDefaultLogMessage[ubyte](System.IO.TextWriter,byref,System.String,Microsoft.Extensions.Logging.IExternalScopeProvider):this (FullOpts) -3 (-0.61 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[long](long):this (FullOpts) -3 (-0.48 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[long](long,System.String):this (FullOpts) -3 (-0.45 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendSpanFormattable[long](long,System.String):ubyte:this (FullOpts) -2 (-0.27 % of base) : System.Private.CoreLib.dasm - System.Enum:TryFormatPrimitiveDefault[long,long](System.RuntimeType,long,System.Span`1[ushort],byref):ubyte (FullOpts) -2 (-0.33 % of base) : System.Private.CoreLib.dasm - System.Number:FormatNumber[ubyte](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts) -2 (-0.32 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendSpanFormattable[int](int,System.String):ubyte:this (FullOpts) -1 (-0.34 % of base) : System.Private.CoreLib.dasm - System.Buffers.Text.Utf8Formatter:TryFormat(System.TimeSpan,System.Span`1[ubyte],byref,System.Buffers.StandardFormat):ubyte (FullOpts) Top method regressions (percentages): 1068 (93.93 % of base) : System.Private.CoreLib.dasm - System.Number:g__TryFormatInt128Slow|42_0[ubyte](System.Int128,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.Span`1[ubyte],byref):ubyte (FullOpts) 99 (26.12 % of base) : System.Private.CoreLib.dasm - System.IntPtr:TryFormat(System.Span`1[ubyte],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts) 109 (20.60 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.Int128Converter:Format(System.Span`1[ubyte],System.Int128,byref) (FullOpts) 504 (11.05 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.XmlSerializationWriter:WriteTypedPrimitive(System.String,System.String,System.Object,ubyte):this (FullOpts) 154 (9.53 % of base) : System.Private.CoreLib.dasm - System.Number:TryParseFloat[ubyte,double](System.ReadOnlySpan`1[ubyte],int,System.Globalization.NumberFormatInfo,byref):ubyte (FullOpts) 1 (9.09 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:Cast[long,long](System.ReadOnlySpan`1[long]):System.ReadOnlySpan`1[long] (FullOpts) 1 (9.09 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:Cast[long,long](System.Span`1[long]):System.Span`1[long] (FullOpts) 69 (8.18 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.Int128Converter:WriteCore(System.Text.Json.Utf8JsonWriter,System.Int128) (FullOpts) 29 (4.98 % of base) : System.Private.CoreLib.dasm - System.Int128:TryFormat(System.Span`1[ubyte],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts) 215 (4.77 % of base) : System.Console.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (FullOpts) 117 (4.43 % of base) : System.Private.CoreLib.dasm - System.TimeZoneInfo+StringSerializer:SerializeTransitionTime(System.TimeZoneInfo+TransitionTime,byref) (FullOpts) 181 (4.29 % of base) : System.Private.Xml.dasm - System.Xml.Schema.XsdDuration:TryFormat(System.Span`1[ushort],byref,int):ubyte:this (FullOpts) 34 (4.04 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:g__GrowAndAppendFormatted|20_0[long](byref,long,int,byref,System.String):ubyte (FullOpts) 33 (3.99 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:g__GrowAndAppendFormatted|20_0[System.Nullable`1[int]](byref,System.Nullable`1[int],int,byref,System.String):ubyte (FullOpts) 17 (3.79 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[int](int):ubyte:this (FullOpts) 24 (2.94 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:g__GrowAndAppendFormatted|20_0[short](byref,short,int,byref,System.String):ubyte (FullOpts) 32 (2.70 % of base) : System.Private.CoreLib.dasm - System.Number:TryParseBinaryIntegerStyle[ubyte,long](System.ReadOnlySpan`1[ubyte],int,System.Globalization.NumberFormatInfo,byref):int (FullOpts) 14 (2.69 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendFormatted[int](int):ubyte:this (FullOpts) 19 (2.35 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:g__GrowAndAppendFormatted|20_0[int](byref,int,int,byref,System.String):ubyte (FullOpts) 8 (2.01 % of base) : System.Private.CoreLib.dasm - System.IntPtr:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts) 9 (1.83 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[long](long):ubyte:this (FullOpts) 10 (1.81 % of base) : System.Private.CoreLib.dasm - System.DateTimeFormat:FormatFraction[ubyte](byref,int,System.ReadOnlySpan`1[ushort]) (FullOpts) 7 (1.64 % of base) : System.Runtime.Numerics.dasm - System.Numerics.Complex:TryFormatCore[ubyte](System.Span`1[ubyte],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts) 16 (1.57 % of base) : System.Private.CoreLib.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,int](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (FullOpts) 7 (1.16 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[System.Nullable`1[int]](System.Nullable`1[int],System.String):this (FullOpts) 4 (1.11 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryFormat(long,System.Span`1[ushort],byref):ubyte (FullOpts) 6 (1.08 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[short](short,System.String):this (FullOpts) 6 (1.05 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[long](long,System.String):this (FullOpts) 7 (0.93 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.Int128Converter:WriteAsPropertyNameCore(System.Text.Json.Utf8JsonWriter,System.Int128,System.Text.Json.JsonSerializerOptions,ubyte):this (FullOpts) 5 (0.88 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendFormatted[long](long):ubyte:this (FullOpts) 5 (0.78 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendFormatted[long](long,System.String):ubyte:this (FullOpts) 1 (0.68 % of base) : System.Private.CoreLib.dasm - System.DateTimeFormat:AppendString[ubyte](byref,System.ReadOnlySpan`1[ushort]) (FullOpts) 11 (0.61 % of base) : System.Private.CoreLib.dasm - System.Enum:GetValuesAsUnderlyingType(System.RuntimeType):System.Array (FullOpts) 5 (0.60 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendFormatted[System.Nullable`1[int]](System.Nullable`1[int],System.String):ubyte:this (FullOpts) 3 (0.46 % of base) : System.Private.CoreLib.dasm - System.Text.Rune:ChangeCaseCultureAware(System.Text.Rune,System.Globalization.TextInfo,ubyte):System.Text.Rune (FullOpts) 2 (0.35 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this (FullOpts) 2 (0.33 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendFormatted[int](int,System.String):ubyte:this (FullOpts) 1 (0.32 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryFormat(int,System.Span`1[ushort],byref):ubyte (FullOpts) 1 (0.30 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryFormat(byte,System.Span`1[ushort],byref):ubyte (FullOpts) 1 (0.30 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryFormat(short,System.Span`1[ushort],byref):ubyte (FullOpts) 1 (0.25 % of base) : System.Private.CoreLib.dasm - System.Int32:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts) 1 (0.25 % of base) : System.Private.CoreLib.dasm - System.Int16:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts) 1 (0.25 % of base) : System.Private.CoreLib.dasm - System.SByte:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts) 1 (0.24 % of base) : System.Private.CoreLib.dasm - System.Int64:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts) 1 (0.09 % 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) 1 (0.09 % 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 (-8.77 % of base) : System.Linq.dasm - System.Linq.Enumerable:Sum[long,long](System.ReadOnlySpan`1[long]):long (FullOpts) -99 (-7.19 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.Int128Converter:WriteNumberWithCustomHandling(System.Text.Json.Utf8JsonWriter,System.Int128,int):this (FullOpts) -21 (-3.73 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[short](short,System.String):ubyte:this (FullOpts) -18 (-3.38 % of base) : System.Private.CoreLib.dasm - System.Int128:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts) -16 (-2.95 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int,System.String):this (FullOpts) -17 (-2.93 % of base) : System.Private.CoreLib.dasm - System.Version:TryFormatCore[ubyte](System.Span`1[ubyte],int,byref):ubyte:this (FullOpts) -13 (-2.58 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[int](int):this (FullOpts) -14 (-2.55 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[long](long):this (FullOpts) -11 (-2.36 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder:AppendSpanFormattable[int](int):System.Text.StringBuilder:this (FullOpts) -11 (-2.35 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder:AppendSpanFormattable[short](short):System.Text.StringBuilder:this (FullOpts) -18 (-2.33 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[System.Nullable`1[int]](System.Nullable`1[int],System.String):this (FullOpts) -11 (-2.19 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder:AppendSpanFormattable[long](long):System.Text.StringBuilder:this (FullOpts) -16 (-2.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[System.Nullable`1[int]](System.Nullable`1[int],System.String):ubyte:this (FullOpts) -135 (-1.94 % of base) : System.Private.CoreLib.dasm - System.Number:NumberToStringFormat[ubyte](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts) -11 (-1.77 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendFormatted[short](short,System.String):ubyte:this (FullOpts) -16 (-1.59 % of base) : System.Net.Primitives.dasm - System.Net.SocketAddress:ToString():System.String:this (FullOpts) -8 (-1.49 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[System.Nullable`1[int]](System.Nullable`1[int]):this (FullOpts) -8 (-1.46 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[int](int,System.String):ubyte:this (FullOpts) -27 (-1.44 % of base) : System.Private.Uri.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (FullOpts) -8 (-1.39 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[long](long,System.String):ubyte:this (FullOpts) -5 (-1.39 % of base) : System.Private.CoreLib.dasm - System.Number:ThrowFormatException[ubyte](System.ReadOnlySpan`1[ubyte]) (FullOpts) -7 (-1.21 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[int](int,System.String):this (FullOpts) -7 (-1.17 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[short](short,System.String):this (FullOpts) -28 (-1.16 % of base) : System.Private.Xml.dasm - System.Xml.Schema.XsdDateTime:TryFormat(System.Span`1[ushort],byref):ubyte:this (FullOpts) -8 (-1.13 % of base) : System.Private.Xml.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[int](int,System.String,System.IFormatProvider):this (FullOpts) -8 (-1.13 % of base) : System.Console.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[int](int,System.String,System.IFormatProvider):this (FullOpts) -8 (-1.13 % of base) : System.Net.Http.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[int](int,System.String,System.IFormatProvider):this (FullOpts) -8 (-1.13 % of base) : System.Private.CoreLib.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[int](int,System.String,System.IFormatProvider):this (FullOpts) -8 (-1.13 % of base) : System.Private.Xml.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[short](short,System.String,System.IFormatProvider):this (FullOpts) -8 (-1.13 % of base) : System.Console.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[short](short,System.String,System.IFormatProvider):this (FullOpts) -8 (-1.13 % of base) : System.Net.Http.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[short](short,System.String,System.IFormatProvider):this (FullOpts) -8 (-1.13 % of base) : System.Private.CoreLib.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[short](short,System.String,System.IFormatProvider):this (FullOpts) -12 (-1.01 % 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.94 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[short](short):this (FullOpts) -5 (-0.78 % of base) : System.Private.CoreLib.dasm - System.Number:FormatExponent[ubyte](byref,System.Globalization.NumberFormatInfo,int,ushort,int,ubyte) (FullOpts) -12 (-0.77 % of base) : System.Private.Uri.dasm - System.UriBuilder:ToString():System.String:this (FullOpts) -6 (-0.75 % of base) : System.Private.CoreLib.dasm - System.Number:FormatCurrency[ubyte](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts) -6 (-0.75 % of base) : System.Private.CoreLib.dasm - System.Number:FormatPercent[ubyte](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts) -3 (-0.61 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[long](long):this (FullOpts) -3 (-0.48 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[long](long,System.String):this (FullOpts) -3 (-0.45 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendSpanFormattable[long](long,System.String):ubyte:this (FullOpts) -3 (-0.42 % of base) : Microsoft.Extensions.Logging.Console.dasm - Microsoft.Extensions.Logging.Console.SimpleConsoleFormatter:CreateDefaultLogMessage[double](System.IO.TextWriter,byref,System.String,Microsoft.Extensions.Logging.IExternalScopeProvider):this (FullOpts) -3 (-0.42 % of base) : Microsoft.Extensions.Logging.Console.dasm - Microsoft.Extensions.Logging.Console.SimpleConsoleFormatter:CreateDefaultLogMessage[int](System.IO.TextWriter,byref,System.String,Microsoft.Extensions.Logging.IExternalScopeProvider):this (FullOpts) -3 (-0.42 % of base) : Microsoft.Extensions.Logging.Console.dasm - Microsoft.Extensions.Logging.Console.SimpleConsoleFormatter:CreateDefaultLogMessage[long](System.IO.TextWriter,byref,System.String,Microsoft.Extensions.Logging.IExternalScopeProvider):this (FullOpts) -3 (-0.42 % of base) : Microsoft.Extensions.Logging.Console.dasm - Microsoft.Extensions.Logging.Console.SimpleConsoleFormatter:CreateDefaultLogMessage[short](System.IO.TextWriter,byref,System.String,Microsoft.Extensions.Logging.IExternalScopeProvider):this (FullOpts) -3 (-0.42 % of base) : Microsoft.Extensions.Logging.Console.dasm - Microsoft.Extensions.Logging.Console.SimpleConsoleFormatter:CreateDefaultLogMessage[System.__Canon](System.IO.TextWriter,byref,System.String,Microsoft.Extensions.Logging.IExternalScopeProvider):this (FullOpts) -3 (-0.42 % of base) : Microsoft.Extensions.Logging.Console.dasm - Microsoft.Extensions.Logging.Console.SimpleConsoleFormatter:CreateDefaultLogMessage[System.Nullable`1[int]](System.IO.TextWriter,byref,System.String,Microsoft.Extensions.Logging.IExternalScopeProvider):this (FullOpts) -3 (-0.42 % of base) : Microsoft.Extensions.Logging.Console.dasm - Microsoft.Extensions.Logging.Console.SimpleConsoleFormatter:CreateDefaultLogMessage[System.Numerics.Vector`1[float]](System.IO.TextWriter,byref,System.String,Microsoft.Extensions.Logging.IExternalScopeProvider):this (FullOpts) -3 (-0.42 % of base) : Microsoft.Extensions.Logging.Console.dasm - Microsoft.Extensions.Logging.Console.SimpleConsoleFormatter:CreateDefaultLogMessage[ubyte](System.IO.TextWriter,byref,System.String,Microsoft.Extensions.Logging.IExternalScopeProvider):this (FullOpts) -1 (-0.34 % of base) : System.Private.CoreLib.dasm - System.Buffers.Text.Utf8Formatter:TryFormat(System.TimeSpan,System.Span`1[ubyte],byref,System.Buffers.StandardFormat):ubyte (FullOpts) -2 (-0.33 % of base) : System.Private.CoreLib.dasm - System.Number:FormatNumber[ubyte](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts) -2 (-0.32 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendSpanFormattable[int](int,System.String):ubyte:this (FullOpts) -10 (-0.28 % 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) -2 (-0.27 % of base) : System.Private.CoreLib.dasm - System.Enum:TryFormatPrimitiveDefault[long,long](System.RuntimeType,long,System.Span`1[ushort],byref):ubyte (FullOpts) -11 (-0.20 % of base) : System.Private.CoreLib.dasm - System.DateTimeFormat:FormatCustomized[ubyte](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts) 101 total methods with Code Size differences (55 improved, 46 regressed), 239723 unchanged. -------------------------------------------------------------------------------- ```

Artifacts:

MihuBot commented 5 months ago

Top method regressions

109 (20.60 % of base) - System.Text.Json.Serialization.Converters.Int128Converter:Format(System.Span`1[ubyte],System.Int128,byref) ```diff ; Assembly listing for method System.Text.Json.Serialization.Converters.Int128Converter:Format(System.Span`1[ubyte],System.Int128,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; 26 single block inlinees; 12 inlinees without PGO data +; 0 inlinees with PGO data; 29 single block inlinees; 13 inlinees without PGO data ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def -; V02 arg2 [V02,T00] ( 5, 3.50) byref -> rbx single-def +; V02 arg2 [V02,T04] ( 5, 3.50) byref -> rbx single-def ;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref -; V04 loc1 [V04,T22] ( 2, 1.50) ref -> rdi class-hnd exact single-def +; V04 loc1 [V04,T25] ( 2, 1.50) ref -> rdi class-hnd exact single-def ;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ; V06 OutArgs [V06 ] ( 1, 1 ) struct (16) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V08 tmp2 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inlining Arg" ;* V10 tmp4 [V10 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inlining Arg" ;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V12 tmp6 [V12 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" -; V13 tmp7 [V13,T12] ( 4, 2 ) ref -> [rbp-0x38] class-hnd spill-single-def "Inline return value spill temp" +; V13 tmp7 [V13,T15] ( 4, 2 ) ref -> [rbp-0x68] class-hnd spill-single-def "Inline return value spill temp" ;* V14 tmp8 [V14 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" -; V15 tmp9 [V15,T14] ( 2, 2 ) ref -> rcx class-hnd single-def "dup spill" -; V16 tmp10 [V16,T07] ( 6, 3 ) ref -> rcx +; V15 tmp9 [V15,T17] ( 2, 2 ) ref -> rcx class-hnd single-def "dup spill" +; V16 tmp10 [V16,T11] ( 6, 3 ) ref -> rcx ;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V18 tmp12 [V18 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" -; V19 tmp13 [V19,T08] ( 3, 3 ) ref -> [rbp-0x40] class-hnd spill-single-def "dup spill" +; V19 tmp13 [V19,T12] ( 3, 3 ) ref -> [rbp-0x70] class-hnd spill-single-def "dup spill" ;* V20 tmp14 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" ;* V21 tmp15 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V22 tmp16 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V23 tmp17 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V22 tmp16 [V22 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" +;* V23 tmp17 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V24 tmp18 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V25 tmp19 [V25 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V26 tmp20 [V26 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" -; V27 tmp21 [V27,T26] ( 2, 1 ) int -> r8 "Inline stloc first use temp" -;* V28 tmp22 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V29 tmp23 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -;* V30 tmp24 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V31 tmp25 [V31 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" -;* V32 tmp26 [V32 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -;* V33 tmp27 [V33 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V34 tmp28 [V34 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" -;* V35 tmp29 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V36 tmp30 [V36 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V37 tmp31 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V38 tmp32 [V38 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V39 tmp33 [V39 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V40 tmp34 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -; V41 tmp35 [V41 ] ( 3, 1.50) byref -> [rbp-0x30] must-init pinned "Inline stloc first use temp" -;* V42 tmp36 [V42 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" -; V43 tmp37 [V43,T17] ( 3, 1.50) long -> rdi "Inline stloc first use temp" -;* V44 tmp38 [V44 ] ( 0, 0 ) long -> zero-ref -; V45 tmp39 [V45,T09] ( 5, 2.50) int -> rax "Inline return value spill temp" -;* V46 tmp40 [V46 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inlining Arg" -;* V47 tmp41 [V47 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" -; V48 tmp42 [V48,T10] ( 5, 2.50) int -> rax "Inline stloc first use temp" -;* V49 tmp43 [V49 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" -;* V50 tmp44 [V50 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" -;* V51 tmp45 [V51 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" -;* V52 tmp46 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" -;* V53 tmp47 [V53 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V54 tmp48 [V54 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" -; V55 tmp49 [V55,T18] ( 3, 1.50) int -> rax "Inline stloc first use temp" -;* V56 tmp50 [V56 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan for CreateSpan" -;* V57 tmp51 [V57 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" -;* V58 tmp52 [V58 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" -;* V59 tmp53 [V59 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inline stloc first use temp" -;* V60 tmp54 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V61 tmp55 [V61 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V62 tmp56 [V62 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V63 tmp57 [V63 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V64 tmp58 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" -;* V65 tmp59 [V65 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V66 tmp60 [V66 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" -; V67 tmp61 [V67,T19] ( 3, 1.50) int -> rsi "Inline stloc first use temp" -;* V68 tmp62 [V68 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan for CreateSpan" -;* V69 tmp63 [V69 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" -;* V70 tmp64 [V70 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" -;* V71 tmp65 [V71 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inline stloc first use temp" -;* V72 tmp66 [V72 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V73 tmp67 [V73 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V74 tmp68 [V74 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V75 tmp69 [V75 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -; V76 tmp70 [V76,T13] ( 4, 2 ) int -> rsi "Inline return value spill temp" -;* V77 tmp71 [V77 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -; V78 tmp72 [V78,T01] ( 4, 2.50) byref -> r15 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V79 tmp73 [V79,T04] ( 3, 2 ) int -> r14 single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V80 tmp74 [V80,T02] ( 3, 2.50) long -> rdx single-def "field V01._lower (fldOffset=0x0)" P-INDEP -; V81 tmp75 [V81,T03] ( 3, 2.50) long -> rcx single-def "field V01._upper (fldOffset=0x8)" P-INDEP -;* V82 tmp76 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP -;* V83 tmp77 [V83 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP -;* V84 tmp78 [V84 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP -;* V85 tmp79 [V85 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP -;* V86 tmp80 [V86 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP -;* V87 tmp81 [V87 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP -; V88 tmp82 [V88,T23] ( 2, 1.50) long -> r13 "field V10._lower (fldOffset=0x0)" P-INDEP -; V89 tmp83 [V89,T11] ( 3, 2.50) long -> r12 "field V10._upper (fldOffset=0x8)" P-INDEP -;* V90 tmp84 [V90 ] ( 0, 0 ) long -> zero-ref "field V11._lower (fldOffset=0x0)" P-INDEP -;* V91 tmp85 [V91 ] ( 0, 0 ) long -> zero-ref "field V11._upper (fldOffset=0x8)" P-INDEP -;* V92 tmp86 [V92 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP -;* V93 tmp87 [V93 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP -;* V94 tmp88 [V94 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP -;* V95 tmp89 [V95 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP -;* V96 tmp90 [V96 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP -;* V97 tmp91 [V97 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP -;* V98 tmp92 [V98 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP -;* V99 tmp93 [V99 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP -; V100 tmp94 [V100,T16] ( 3, 1.50) byref -> registers "field V21._reference (fldOffset=0x0)" P-INDEP -; V101 tmp95 [V101,T20] ( 3, 1.50) int -> registers "field V21._length (fldOffset=0x8)" P-INDEP -; V102 tmp96 [V102,T24] ( 2, 1 ) byref -> rcx single-def "field V24._reference (fldOffset=0x0)" P-INDEP -;* V103 tmp97 [V103 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP -;* V104 tmp98 [V104 ] ( 0, 0 ) byref -> zero-ref single-def "field V28._reference (fldOffset=0x0)" P-INDEP -;* V105 tmp99 [V105 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP -;* V106 tmp100 [V106 ] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP -;* V107 tmp101 [V107 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP -; V108 tmp102 [V108,T25] ( 2, 1 ) byref -> rcx single-def "field V31._reference (fldOffset=0x0)" P-INDEP -; V109 tmp103 [V109,T27] ( 2, 1 ) int -> r8 "field V31._length (fldOffset=0x8)" P-INDEP -; V110 tmp104 [V110,T05] ( 7, 3.50) long -> r13 "field V34._lower (fldOffset=0x0)" P-INDEP -; V111 tmp105 [V111,T06] ( 7, 3.50) long -> r12 "field V34._upper (fldOffset=0x8)" P-INDEP -;* V112 tmp106 [V112 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP -;* V113 tmp107 [V113 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP -; V114 tmp108 [V114,T21] ( 3, 1.50) long -> rax "field V46._lower (fldOffset=0x0)" P-INDEP -; V115 tmp109 [V115,T28] ( 1, 0.50) long -> rdx "field V46._upper (fldOffset=0x8)" P-INDEP -;* V116 tmp110 [V116,T29] ( 0, 0 ) long -> zero-ref "field V49._lower (fldOffset=0x0)" P-INDEP -;* V117 tmp111 [V117,T30] ( 0, 0 ) long -> zero-ref "field V49._upper (fldOffset=0x8)" P-INDEP -;* V118 tmp112 [V118 ] ( 0, 0 ) long -> zero-ref "field V50._lower (fldOffset=0x0)" P-INDEP -;* V119 tmp113 [V119 ] ( 0, 0 ) long -> zero-ref "field V50._upper (fldOffset=0x8)" P-INDEP -;* V120 tmp114 [V120 ] ( 0, 0 ) long -> zero-ref "field V51._lower (fldOffset=0x0)" P-DEP -;* V121 tmp115 [V121 ] ( 0, 0 ) long -> zero-ref "field V51._upper (fldOffset=0x8)" P-DEP -;* V122 tmp116 [V122 ] ( 0, 0 ) byref -> zero-ref single-def "field V52._reference (fldOffset=0x0)" P-INDEP -;* V123 tmp117 [V123 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x8)" P-INDEP -;* V124 tmp118 [V124 ] ( 0, 0 ) byref -> zero-ref single-def "field V56._reference (fldOffset=0x0)" P-INDEP -;* V125 tmp119 [V125 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP -;* V126 tmp120 [V126 ] ( 0, 0 ) byref -> zero-ref "field V57._reference (fldOffset=0x0)" P-INDEP -;* V127 tmp121 [V127 ] ( 0, 0 ) int -> zero-ref "field V57._length (fldOffset=0x8)" P-INDEP -;* V128 tmp122 [V128 ] ( 0, 0 ) byref -> zero-ref single-def "field V60._reference (fldOffset=0x0)" P-INDEP -;* V129 tmp123 [V129 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x8)" P-INDEP -;* V130 tmp124 [V130 ] ( 0, 0 ) byref -> zero-ref single-def "field V63._reference (fldOffset=0x0)" P-INDEP -;* V131 tmp125 [V131 ] ( 0, 0 ) int -> zero-ref "field V63._length (fldOffset=0x8)" P-INDEP -;* V132 tmp126 [V132 ] ( 0, 0 ) byref -> zero-ref single-def "field V64._reference (fldOffset=0x0)" P-INDEP -;* V133 tmp127 [V133 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x8)" P-INDEP -;* V134 tmp128 [V134 ] ( 0, 0 ) byref -> zero-ref single-def "field V68._reference (fldOffset=0x0)" P-INDEP -;* V135 tmp129 [V135 ] ( 0, 0 ) int -> zero-ref "field V68._length (fldOffset=0x8)" P-INDEP -;* V136 tmp130 [V136 ] ( 0, 0 ) byref -> zero-ref "field V69._reference (fldOffset=0x0)" P-INDEP -;* V137 tmp131 [V137 ] ( 0, 0 ) int -> zero-ref "field V69._length (fldOffset=0x8)" P-INDEP -;* V138 tmp132 [V138 ] ( 0, 0 ) byref -> zero-ref single-def "field V72._reference (fldOffset=0x0)" P-INDEP -;* V139 tmp133 [V139 ] ( 0, 0 ) int -> zero-ref "field V72._length (fldOffset=0x8)" P-INDEP -;* V140 tmp134 [V140 ] ( 0, 0 ) byref -> zero-ref single-def "field V75._reference (fldOffset=0x0)" P-INDEP -;* V141 tmp135 [V141 ] ( 0, 0 ) int -> zero-ref "field V75._length (fldOffset=0x8)" P-INDEP -;* V142 tmp136 [V142 ] ( 0, 0 ) byref -> zero-ref single-def "field V77._reference (fldOffset=0x0)" P-INDEP -;* V143 tmp137 [V143 ] ( 0, 0 ) int -> zero-ref "field V77._length (fldOffset=0x8)" P-INDEP -; V144 tmp138 [V144,T15] ( 2, 2 ) long -> r15 "Cast away GC" +;* V25 tmp19 [V25 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V26 tmp20 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V27 tmp21 [V27 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V28 tmp22 [V28 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V29 tmp23 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V30 tmp24 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V31 tmp25 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V32 tmp26 [V32 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V33 tmp27 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V34 tmp28 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +; V35 tmp29 [V35 ] ( 3, 1.50) byref -> [rbp-0x30] must-init pinned "Inline stloc first use temp" +;* V36 tmp30 [V36 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" +; V37 tmp31 [V37,T20] ( 3, 1.50) long -> rbx "Inline stloc first use temp" +;* V38 tmp32 [V38 ] ( 0, 0 ) long -> zero-ref +; V39 tmp33 [V39,T13] ( 5, 2.50) int -> rax "Inline return value spill temp" +;* V40 tmp34 [V40 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inlining Arg" +;* V41 tmp35 [V41 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" +; V42 tmp36 [V42,T14] ( 5, 2.50) int -> rax "Inline stloc first use temp" +;* V43 tmp37 [V43 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V44 tmp38 [V44 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" +;* V45 tmp39 [V45 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" +;* V46 tmp40 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" +;* V47 tmp41 [V47 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V48 tmp42 [V48 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" +; V49 tmp43 [V49,T21] ( 3, 1.50) int -> rax "Inline stloc first use temp" +;* V50 tmp44 [V50 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan for CreateSpan" +;* V51 tmp45 [V51 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" +;* V52 tmp46 [V52 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" +;* V53 tmp47 [V53 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inline stloc first use temp" +;* V54 tmp48 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V55 tmp49 [V55 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V56 tmp50 [V56 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V57 tmp51 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V58 tmp52 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" +;* V59 tmp53 [V59 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V60 tmp54 [V60 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" +; V61 tmp55 [V61,T22] ( 3, 1.50) int -> rdi "Inline stloc first use temp" +;* V62 tmp56 [V62 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan for CreateSpan" +;* V63 tmp57 [V63 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" +;* V64 tmp58 [V64 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" +;* V65 tmp59 [V65 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inline stloc first use temp" +;* V66 tmp60 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V67 tmp61 [V67 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V68 tmp62 [V68 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V69 tmp63 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +; V70 tmp64 [V70,T16] ( 4, 2 ) int -> rdi "Inline return value spill temp" +;* V71 tmp65 [V71 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V72 tmp66 [V72 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inlining Arg" +; V73 tmp67 [V73,T00] ( 4, 18 ) long -> rbx "Inlining Arg" +; V74 tmp68 [V74 ] ( 3, 12 ) struct (16) [rbp-0x40] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V75 tmp69 [V75 ] ( 4, 16 ) struct (32) [rbp-0x60] do-not-enreg[XS] addr-exposed "Inline stloc first use temp" +;* V76 tmp70 [V76 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" +; V77 tmp71 [V77,T06] ( 4, 2.50) byref -> r14 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V78 tmp72 [V78,T07] ( 3, 2 ) int -> r13 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V79 tmp73 [V79,T08] ( 3, 2 ) long -> r12 single-def "field V01._lower (fldOffset=0x0)" P-INDEP +; V80 tmp74 [V80,T05] ( 4, 3 ) long -> r15 single-def "field V01._upper (fldOffset=0x8)" P-INDEP +;* V81 tmp75 [V81 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP +;* V82 tmp76 [V82 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP +;* V83 tmp77 [V83 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP +;* V84 tmp78 [V84 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP +;* V85 tmp79 [V85 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP +;* V86 tmp80 [V86 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP +;* V87 tmp81 [V87 ] ( 0, 0 ) long -> zero-ref "field V10._lower (fldOffset=0x0)" P-INDEP +;* V88 tmp82 [V88 ] ( 0, 0 ) long -> zero-ref "field V10._upper (fldOffset=0x8)" P-INDEP +;* V89 tmp83 [V89 ] ( 0, 0 ) long -> zero-ref "field V11._lower (fldOffset=0x0)" P-INDEP +;* V90 tmp84 [V90 ] ( 0, 0 ) long -> zero-ref "field V11._upper (fldOffset=0x8)" P-INDEP +;* V91 tmp85 [V91 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP +;* V92 tmp86 [V92 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP +;* V93 tmp87 [V93 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP +;* V94 tmp88 [V94 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP +;* V95 tmp89 [V95 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP +;* V96 tmp90 [V96 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP +;* V97 tmp91 [V97 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP +;* V98 tmp92 [V98 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP +; V99 tmp93 [V99,T19] ( 3, 1.50) byref -> registers "field V21._reference (fldOffset=0x0)" P-INDEP +; V100 tmp94 [V100,T23] ( 3, 1.50) int -> registers "field V21._length (fldOffset=0x8)" P-INDEP +;* V101 tmp95 [V101 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP +;* V102 tmp96 [V102 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP +;* V103 tmp97 [V103 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP +;* V104 tmp98 [V104 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP +;* V105 tmp99 [V105 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP +;* V106 tmp100 [V106 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP +; V107 tmp101 [V107,T26] ( 2, 1 ) byref -> rcx single-def "field V25._reference (fldOffset=0x0)" P-INDEP +; V108 tmp102 [V108,T27] ( 2, 1 ) int -> r8 "field V25._length (fldOffset=0x8)" P-INDEP +; V109 tmp103 [V109,T09] ( 7, 3.50) long -> r12 "field V28._lower (fldOffset=0x0)" P-INDEP +; V110 tmp104 [V110,T10] ( 7, 3.50) long -> r15 "field V28._upper (fldOffset=0x8)" P-INDEP +;* V111 tmp105 [V111 ] ( 0, 0 ) byref -> zero-ref single-def "field V34._reference (fldOffset=0x0)" P-INDEP +;* V112 tmp106 [V112 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP +; V113 tmp107 [V113,T24] ( 3, 1.50) long -> rax "field V40._lower (fldOffset=0x0)" P-INDEP +; V114 tmp108 [V114,T28] ( 1, 0.50) long -> rdx "field V40._upper (fldOffset=0x8)" P-INDEP +;* V115 tmp109 [V115,T29] ( 0, 0 ) long -> zero-ref "field V43._lower (fldOffset=0x0)" P-INDEP +;* V116 tmp110 [V116,T30] ( 0, 0 ) long -> zero-ref "field V43._upper (fldOffset=0x8)" P-INDEP +;* V117 tmp111 [V117 ] ( 0, 0 ) long -> zero-ref "field V44._lower (fldOffset=0x0)" P-INDEP +;* V118 tmp112 [V118 ] ( 0, 0 ) long -> zero-ref "field V44._upper (fldOffset=0x8)" P-INDEP +;* V119 tmp113 [V119 ] ( 0, 0 ) long -> zero-ref "field V45._lower (fldOffset=0x0)" P-DEP +;* V120 tmp114 [V120 ] ( 0, 0 ) long -> zero-ref "field V45._upper (fldOffset=0x8)" P-DEP +;* V121 tmp115 [V121 ] ( 0, 0 ) byref -> zero-ref single-def "field V46._reference (fldOffset=0x0)" P-INDEP +;* V122 tmp116 [V122 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP +;* V123 tmp117 [V123 ] ( 0, 0 ) byref -> zero-ref single-def "field V50._reference (fldOffset=0x0)" P-INDEP +;* V124 tmp118 [V124 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x8)" P-INDEP +;* V125 tmp119 [V125 ] ( 0, 0 ) byref -> zero-ref "field V51._reference (fldOffset=0x0)" P-INDEP +;* V126 tmp120 [V126 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP +;* V127 tmp121 [V127 ] ( 0, 0 ) byref -> zero-ref single-def "field V54._reference (fldOffset=0x0)" P-INDEP +;* V128 tmp122 [V128 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP +;* V129 tmp123 [V129 ] ( 0, 0 ) byref -> zero-ref single-def "field V57._reference (fldOffset=0x0)" P-INDEP +;* V130 tmp124 [V130 ] ( 0, 0 ) int -> zero-ref "field V57._length (fldOffset=0x8)" P-INDEP +;* V131 tmp125 [V131 ] ( 0, 0 ) byref -> zero-ref single-def "field V58._reference (fldOffset=0x0)" P-INDEP +;* V132 tmp126 [V132 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP +;* V133 tmp127 [V133 ] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP +;* V134 tmp128 [V134 ] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP +;* V135 tmp129 [V135 ] ( 0, 0 ) byref -> zero-ref "field V63._reference (fldOffset=0x0)" P-INDEP +;* V136 tmp130 [V136 ] ( 0, 0 ) int -> zero-ref "field V63._length (fldOffset=0x8)" P-INDEP +;* V137 tmp131 [V137 ] ( 0, 0 ) byref -> zero-ref single-def "field V66._reference (fldOffset=0x0)" P-INDEP +;* V138 tmp132 [V138 ] ( 0, 0 ) int -> zero-ref "field V66._length (fldOffset=0x8)" P-INDEP +;* V139 tmp133 [V139 ] ( 0, 0 ) byref -> zero-ref single-def "field V69._reference (fldOffset=0x0)" P-INDEP +;* V140 tmp134 [V140 ] ( 0, 0 ) int -> zero-ref "field V69._length (fldOffset=0x8)" P-INDEP +;* V141 tmp135 [V141 ] ( 0, 0 ) byref -> zero-ref single-def "field V71._reference (fldOffset=0x0)" P-INDEP +;* V142 tmp136 [V142 ] ( 0, 0 ) int -> zero-ref "field V71._length (fldOffset=0x8)" P-INDEP +; V143 tmp137 [V143,T02] ( 4, 9 ) long -> r12 "field V72._lower (fldOffset=0x0)" P-INDEP +; V144 tmp138 [V144,T01] ( 5, 13 ) long -> r15 "field V72._upper (fldOffset=0x8)" P-INDEP +; V145 tmp139 [V145 ] ( 2, 8 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V74._lower (fldOffset=0x0)" P-DEP +; V146 tmp140 [V146 ] ( 2, 8 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V74._upper (fldOffset=0x8)" P-DEP +; V147 tmp141 [V147,T03] ( 2, 8 ) long -> rsi "field V76._lower (fldOffset=0x0)" P-INDEP +;* V148 tmp142 [V148 ] ( 0, 0 ) long -> zero-ref "field V76._upper (fldOffset=0x8)" P-INDEP +; V149 tmp143 [V149,T18] ( 2, 2 ) long -> r14 "Cast away GC" ; -; Lcl frame size = 40 +; Lcl frame size = 88 G_M8095_IG01: push rbp push r15 push r14 push r13 push r12 push rbx - sub rsp, 40 - lea rbp, [rsp+0x50] + sub rsp, 88 + lea rbp, [rsp+0x80] xor eax, eax mov qword ptr [rbp-0x30], rax - mov r15, rdi - mov r14d, esi + mov r14, rdi + mov r13d, esi + mov r12, rdx + mov r15, rcx mov rbx, r8 - ;; size=34 bbWeight=1 PerfScore 8.75 + ;; size=43 bbWeight=1 PerfScore 9.25 G_M8095_IG02: mov rdi, 0xD1FFAB1E ; const ptr mov rdi, gword ptr [rdi] - mov r13, rdx - mov r12, rcx - test r12, r12 + test r15, r15 jge G_M8095_IG07 - ;; size=28 bbWeight=1 PerfScore 4.00 + ;; size=22 bbWeight=1 PerfScore 3.50 G_M8095_IG03: mov rax, 0xD1FFAB1E ; code for System.Globalization.NumberFormatInfo:g__GetProviderNonNull|58_0(System.IFormatProvider):System.Globalization.NumberFormatInfo call [rax]System.Globalization.NumberFormatInfo:g__GetProviderNonNull|58_0(System.IFormatProvider):System.Globalization.NumberFormatInfo - mov gword ptr [rbp-0x38], rax + mov gword ptr [rbp-0x68], rax mov rcx, gword ptr [rax+0x98] test rcx, rcx jne SHORT G_M8095_IG04 mov rsi, gword ptr [rax+0x28] mov rdi, 0xD1FFAB1E ; const ptr mov rdi, gword ptr [rdi] mov rcx, 0xD1FFAB1E ; code for System.Text.UTF8Encoding+UTF8EncodingSealed:GetBytes(System.String):ubyte[]:this call [rcx]System.Text.UTF8Encoding+UTF8EncodingSealed:GetBytes(System.String):ubyte[]:this mov rcx, rax - mov gword ptr [rbp-0x40], rcx - mov rdi, gword ptr [rbp-0x38] + mov gword ptr [rbp-0x70], rcx + mov rdi, gword ptr [rbp-0x68] lea rdi, bword ptr [rdi+0x98] mov rsi, rcx call CORINFO_HELP_ASSIGN_REF - mov rcx, gword ptr [rbp-0x40] + mov rcx, gword ptr [rbp-0x70] ;; size=87 bbWeight=0.50 PerfScore 10.00 G_M8095_IG04: test rcx, rcx jne SHORT G_M8095_IG05 xor rcx, rcx xor r8d, r8d jmp SHORT G_M8095_IG06 ;; size=12 bbWeight=0.50 PerfScore 1.88 G_M8095_IG05: lea r8, bword ptr [rcx+0x10] mov edi, dword ptr [rcx+0x08] mov rcx, r8 mov r8d, edi ;; size=13 bbWeight=0.50 PerfScore 1.50 G_M8095_IG06: - mov bword ptr [rsp], r15 - mov dword ptr [rsp+0x08], r14d - mov rdi, r13 - mov rsi, r12 + mov bword ptr [rsp], r14 + mov dword ptr [rsp+0x08], r13d + mov rdi, r12 + mov rsi, r15 mov r9, rbx mov edx, -1 mov rax, 0xD1FFAB1E ; code for System.Number:TryNegativeInt128ToDecStr[ubyte](System.Int128,int,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte call [rax]System.Number:TryNegativeInt128ToDecStr[ubyte](System.Int128,int,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte - jmp G_M8095_IG15 + jmp G_M8095_IG17 ;; size=40 bbWeight=0.50 PerfScore 4.12 G_M8095_IG07: - mov r13, rdx - mov r12, rcx - test r12, r12 + test r15, r15 jne SHORT G_M8095_IG08 - mov rdi, r13 + mov rdi, r12 or rdi, 1 lzcnt rdi, rdi xor edi, 63 movsxd rdi, edi mov rsi, 0xD1FFAB1E ; static handle movzx rax, byte ptr [rdi+rsi] mov edi, eax mov rsi, 0xD1FFAB1E ; static handle - cmp r13, qword ptr [rsi+8*rdi] + cmp r12, qword ptr [rsi+8*rdi] setb dil movzx rdi, dil sub eax, edi jmp G_M8095_IG10 - ;; size=74 bbWeight=0.50 PerfScore 7.00 + ;; size=68 bbWeight=0.50 PerfScore 6.75 G_M8095_IG08: mov eax, 20 - cmp r12, 5 + cmp r15, 5 jbe SHORT G_M8095_IG09 - mov rdi, r13 - mov rsi, r12 + mov rdi, r12 + mov rsi, r15 mov rdx, 0xD1FFAB1E mov ecx, 5 mov rax, 0xD1FFAB1E ; code for System.UInt128:op_Division(System.UInt128,System.UInt128):System.UInt128 call [rax]System.UInt128:op_Division(System.UInt128,System.UInt128):System.UInt128 - mov rsi, rax - or rsi, 1 - lzcnt rsi, rsi - xor esi, 63 - movsxd rsi, esi + mov rdi, rax + or rdi, 1 + lzcnt rdi, rdi + xor edi, 63 + movsxd rdi, edi + mov rsi, 0xD1FFAB1E ; static handle + movzx rdi, byte ptr [rdi+rsi] + mov esi, edi mov rdx, 0xD1FFAB1E ; static handle - movzx rsi, byte ptr [rsi+rdx] - mov edx, esi - mov rdi, 0xD1FFAB1E ; static handle - cmp rax, qword ptr [rdi+8*rdx] - setb dl - movzx rdx, dl - sub esi, edx - lea eax, [rsi+0x14] + cmp rax, qword ptr [rdx+8*rsi] + setb sil + movzx rsi, sil + sub edi, esi + lea eax, [rdi+0x14] jmp SHORT G_M8095_IG10 - ;; size=106 bbWeight=0.50 PerfScore 9.25 + ;; size=108 bbWeight=0.50 PerfScore 9.25 G_M8095_IG09: - cmp r12, 5 + cmp r15, 5 jne SHORT G_M8095_IG10 - mov rsi, 0xD1FFAB1E - mov edx, 21 - cmp r13, rsi - cmovae eax, edx + mov rdi, 0xD1FFAB1E + mov esi, 21 + cmp r12, rdi + cmovae eax, esi ;; size=27 bbWeight=0.50 PerfScore 1.12 G_M8095_IG10: - mov esi, -1 + mov edi, -1 test eax, eax - cmovge esi, eax - cmp esi, r14d - jg SHORT G_M8095_IG13 - mov dword ptr [rbx], esi - mov bword ptr [rbp-0x30], r15 - movsxd rdi, esi - add rdi, r15 + cmovge edi, eax + cmp edi, r13d + jg G_M8095_IG15 + mov dword ptr [rbx], edi + mov bword ptr [rbp-0x30], r14 + movsxd rbx, edi + add rbx, r14 cmp eax, -1 - jl SHORT G_M8095_IG11 - mov rsi, r13 - mov rdx, r12 - mov rax, 0xD1FFAB1E ; code for System.Number:UInt128ToDecChars[ubyte](ulong,System.UInt128):ulong - call [rax]System.Number:UInt128ToDecChars[ubyte](ulong,System.UInt128):ulong - jmp SHORT G_M8095_IG12 - ;; size=52 bbWeight=0.50 PerfScore 5.75 + jl SHORT G_M8095_IG13 + test r15, r15 + je SHORT G_M8095_IG12 + ;; size=41 bbWeight=0.50 PerfScore 3.50 G_M8095_IG11: - mov rsi, r13 - mov rdx, r12 + lea rdi, [rbp-0x40] + xor esi, esi + mov rdx, 0xD1FFAB1E + mov rax, 0xD1FFAB1E ; code for System.UInt128:.ctor(ulong,ulong):this + call [rax]System.UInt128:.ctor(ulong,ulong):this + mov rsi, r12 + mov rdx, r15 + mov rcx, qword ptr [rbp-0x40] + mov r8, qword ptr [rbp-0x38] + lea rdi, [rbp-0x60] + mov rax, 0xD1FFAB1E ; code for System.UInt128:DivRem(System.UInt128,System.UInt128):System.ValueTuple`2[System.UInt128,System.UInt128] + call [rax]System.UInt128:DivRem(System.UInt128,System.UInt128):System.ValueTuple`2[System.UInt128,System.UInt128] + mov r12, qword ptr [rbp-0x60] + mov r15, qword ptr [rbp-0x58] + mov rsi, qword ptr [rbp-0x50] + mov rdi, rbx + mov edx, 19 + mov rax, 0xD1FFAB1E ; code for System.Number:UInt64ToDecChars[ubyte](ulong,ulong,int):ulong + call [rax]System.Number:UInt64ToDecChars[ubyte](ulong,ulong,int):ulong + mov rbx, rax + test r15, r15 + jne SHORT G_M8095_IG11 + ;; size=98 bbWeight=4 PerfScore 75.00 +G_M8095_IG12: + mov rdi, rbx + mov rsi, r12 + mov rax, 0xD1FFAB1E ; code for System.Number:UInt64ToDecChars[ubyte](ulong,ulong):ulong + call [rax]System.Number:UInt64ToDecChars[ubyte](ulong,ulong):ulong + jmp SHORT G_M8095_IG14 + ;; size=20 bbWeight=0.50 PerfScore 2.88 +G_M8095_IG13: + mov rsi, r12 + mov rdx, r15 + mov rdi, rbx mov ecx, -1 mov rax, 0xD1FFAB1E ; code for System.Number:UInt128ToDecChars[ubyte](ulong,System.UInt128,int):ulong call [rax]System.Number:UInt128ToDecChars[ubyte](ulong,System.UInt128,int):ulong - ;; size=23 bbWeight=0.50 PerfScore 2.00 -G_M8095_IG12: + ;; size=26 bbWeight=0.50 PerfScore 2.12 +G_M8095_IG14: xor eax, eax mov bword ptr [rbp-0x30], rax - jmp SHORT G_M8095_IG14 + jmp SHORT G_M8095_IG16 ;; size=8 bbWeight=0.50 PerfScore 1.62 -G_M8095_IG13: +G_M8095_IG15: xor eax, eax mov dword ptr [rbx], eax ;; size=4 bbWeight=0.50 PerfScore 0.62 -G_M8095_IG14: +G_M8095_IG16: xor rax, rax mov bword ptr [rbp-0x30], rax ;; size=6 bbWeight=0.50 PerfScore 0.62 -G_M8095_IG15: - add rsp, 40 +G_M8095_IG17: + add rsp, 88 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25 -; Total bytes of code 529, prolog size 25, PerfScore 62.50, instruction count 139, allocated bytes for code 529 (MethodHash=adbbe060) for method System.Text.Json.Serialization.Converters.Int128Converter:Format(System.Span`1[ubyte],System.Int128,byref) (FullOpts) +; Total bytes of code 638, prolog size 28, PerfScore 138.00, instruction count 162, allocated bytes for code 638 (MethodHash=adbbe060) for method System.Text.Json.Serialization.Converters.Int128Converter:Format(System.Span`1[ubyte],System.Int128,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/c00eb66f2e78573474654ab1c4fb84e7

MihuBot commented 5 months ago

Top method improvements

-21 (-3.73 % of base) - System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[short](short,System.String):ubyte:this ```diff ; Assembly listing for method System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[short](short,System.String):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; 20 single block inlinees; 12 inlinees without PGO data +; 0 inlinees with PGO data; 18 single block inlinees; 12 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T02] ( 10, 6.50) byref -> rbx this single-def -; V01 arg1 [V01,T07] ( 4, 3 ) short -> rsi ld-addr-op single-def +; V01 arg1 [V01,T06] ( 4, 3 ) short -> rsi ld-addr-op single-def ; V02 arg2 [V02,T04] ( 6, 4 ) ref -> rdx class-hnd single-def ;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd ;* V04 loc1 [V04 ] ( 0, 0 ) int -> zero-ref ld-addr-op ; V05 loc2 [V05 ] ( 5, 2.50) int -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op ;* V06 loc3 [V06 ] ( 0, 0 ) short -> zero-ref ld-addr-op ; V07 OutArgs [V07 ] ( 1, 1 ) struct (16) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op class-hnd exact "Single-def Box Helper" -;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" +;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ; V11 tmp4 [V11,T10] ( 4, 4 ) int -> rax "Inlining Arg" -; V12 tmp5 [V12,T14] ( 3, 3 ) byref -> rdi single-def "Inlining Arg" -;* V13 tmp6 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -; V14 tmp7 [V14,T06] ( 5, 5 ) byref -> r14 single-def "Inlining Arg" -; V15 tmp8 [V15,T11] ( 4, 4 ) int -> rcx "Inlining Arg" +; V12 tmp5 [V12,T13] ( 3, 3 ) byref -> rdi single-def "Inlining Arg" +;* V13 tmp6 [V13 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +; V14 tmp7 [V14,T07] ( 4, 4 ) byref -> r14 single-def "Inlining Arg" +; V15 tmp8 [V15,T14] ( 3, 3 ) int -> rcx "Inlining Arg" ;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" ;* V17 tmp10 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V18 tmp11 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" -; V19 tmp12 [V19,T18] ( 2, 2 ) byref -> r8 single-def "Inlining Arg" +; V19 tmp12 [V19,T18] ( 2, 2 ) byref -> rax single-def "Inlining Arg" ; V20 tmp13 [V20,T20] ( 2, 2 ) int -> rdi "Inlining Arg" -; V21 tmp14 [V21,T08] ( 4, 4 ) ref -> [rbp-0x48] class-hnd spill-single-def "Inlining Arg" +; V21 tmp14 [V21,T08] ( 4, 4 ) ref -> r8 class-hnd single-def "Inlining Arg" ; V22 tmp15 [V22,T15] ( 4, 2 ) ubyte -> rax "Inline return value spill temp" ;* V23 tmp16 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V24 tmp17 [V24,T03] ( 7, 7 ) int -> r15 "Inlining Arg" ;* V25 tmp18 [V25 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ; V26 tmp19 [V26,T23] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" ;* V27 tmp20 [V27 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" -;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" +;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" ; V30 tmp23 [V30,T09] ( 4, 4 ) ref -> r8 class-hnd exact single-def "Inlining Arg" ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V33 tmp26 [V33,T19] ( 2, 2 ) byref -> rdx single-def "Inlining Arg" ; V34 tmp27 [V34,T21] ( 2, 2 ) int -> rcx "Inlining Arg" -;* V35 tmp28 [V35 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V36 tmp29 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V37 tmp30 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V38 tmp31 [V38 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V39 tmp32 [V39 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" -; V40 tmp33 [V40,T36] ( 2, 1 ) int -> rcx "Inline stloc first use temp" -;* V41 tmp34 [V41 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" -;* V42 tmp35 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V43 tmp36 [V43 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V44 tmp37 [V44,T26] ( 3, 1.50) ubyte -> rax "Inline return value spill temp" -; V45 tmp38 [V45,T16] ( 4, 2 ) int -> rax "Inline stloc first use temp" -;* V46 tmp39 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -; V47 tmp40 [V47 ] ( 3, 1.50) byref -> [rbp-0x38] must-init pinned "Inline stloc first use temp" -;* V48 tmp41 [V48 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" -;* V49 tmp42 [V49 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" -;* V50 tmp43 [V50 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan for CreateSpan" -;* V51 tmp44 [V51 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" -;* V52 tmp45 [V52 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" -;* V53 tmp46 [V53 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" -;* V54 tmp47 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V55 tmp48 [V55 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V56 tmp49 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V57 tmp50 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V58 tmp51 [V58 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp" -; V59 tmp52 [V59,T00] ( 9, 25 ) int -> registers "Inlining Arg" -; V60 tmp53 [V60,T01] ( 6, 15 ) long -> rdx "Inlining Arg" -;* V61 tmp54 [V61 ] ( 0, 0 ) long -> zero-ref "dup spill" -;* V62 tmp55 [V62 ] ( 0, 0 ) struct ( 8) zero-ref "dup spill" -;* V63 tmp56 [V63 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V64 tmp57 [V64,T05] ( 3, 6 ) int -> rcx "Inline stloc first use temp" -;* V65 tmp58 [V65 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" -;* V66 tmp59 [V66 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V67 tmp60 [V67 ] ( 0, 0 ) long -> zero-ref -;* V68 tmp61 [V68 ] ( 0, 0 ) long -> zero-ref -; V69 tmp62 [V69,T12] ( 2, 4 ) ref -> r9 -;* V70 tmp63 [V70 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -;* V71 tmp64 [V71 ] ( 0, 0 ) long -> zero-ref -; V72 tmp65 [V72,T37] ( 2, 1 ) long -> rdx -; V73 tmp66 [V73,T29] ( 2, 1 ) ref -> rcx single-def -;* V74 tmp67 [V74 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -;* V75 tmp68 [V75 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V76 tmp69 [V76,T38] ( 2, 1 ) short -> r15 "field V08.m_value (fldOffset=0x0)" P-INDEP -; V77 tmp70 [V77,T30] ( 2, 1 ) byref -> [rbp-0x50] spill-single-def "field V09._reference (fldOffset=0x0)" P-INDEP -; V78 tmp71 [V78,T39] ( 2, 1 ) int -> [rbp-0x3C] spill-single-def "field V09._length (fldOffset=0x8)" P-INDEP -;* V79 tmp72 [V79 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP -;* V80 tmp73 [V80 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP -; V81 tmp74 [V81,T31] ( 2, 1 ) byref -> r13 single-def "field V13._reference (fldOffset=0x0)" P-INDEP -; V82 tmp75 [V82,T40] ( 2, 1 ) int -> r12 "field V13._length (fldOffset=0x8)" P-INDEP -; V83 tmp76 [V83,T24] ( 3, 1.50) byref -> rdx "field V16._reference (fldOffset=0x0)" P-INDEP -; V84 tmp77 [V84,T17] ( 4, 2 ) int -> r8 "field V16._length (fldOffset=0x8)" P-INDEP -; V85 tmp78 [V85,T32] ( 2, 1 ) byref -> rdx single-def "field V17._reference (fldOffset=0x0)" P-INDEP -; V86 tmp79 [V86,T41] ( 2, 1 ) int -> r8 "field V17._length (fldOffset=0x8)" P-INDEP -;* V87 tmp80 [V87 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP -;* V88 tmp81 [V88 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP -;* V89 tmp82 [V89 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP -;* V90 tmp83 [V90 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP -;* V91 tmp84 [V91 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP -;* V92 tmp85 [V92 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP -;* V93 tmp86 [V93 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-INDEP -;* V94 tmp87 [V94 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP -;* V95 tmp88 [V95 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP -;* V96 tmp89 [V96 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP -; V97 tmp90 [V97,T25] ( 3, 1.50) byref -> rdx "field V29._reference (fldOffset=0x0)" P-INDEP -; V98 tmp91 [V98,T27] ( 3, 1.50) int -> rcx "field V29._length (fldOffset=0x8)" P-INDEP -; V99 tmp92 [V99,T33] ( 2, 1 ) byref -> rdx single-def "field V31._reference (fldOffset=0x0)" P-INDEP -; V100 tmp93 [V100,T42] ( 2, 1 ) int -> rcx "field V31._length (fldOffset=0x8)" P-INDEP -;* V101 tmp94 [V101 ] ( 0, 0 ) byref -> zero-ref single-def "field V32._reference (fldOffset=0x0)" P-INDEP -;* V102 tmp95 [V102 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP -; V103 tmp96 [V103,T34] ( 2, 1 ) byref -> rdx single-def "field V37._reference (fldOffset=0x0)" P-INDEP -;* V104 tmp97 [V104 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP -; V105 tmp98 [V105,T35] ( 2, 1 ) byref -> rdx single-def "field V41._reference (fldOffset=0x0)" P-INDEP -; V106 tmp99 [V106,T43] ( 2, 1 ) int -> rcx "field V41._length (fldOffset=0x8)" P-INDEP -;* V107 tmp100 [V107 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP -;* V108 tmp101 [V108 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP -;* V109 tmp102 [V109 ] ( 0, 0 ) byref -> zero-ref single-def "field V46._reference (fldOffset=0x0)" P-INDEP -;* V110 tmp103 [V110 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP -;* V111 tmp104 [V111 ] ( 0, 0 ) byref -> zero-ref single-def "field V50._reference (fldOffset=0x0)" P-INDEP -;* V112 tmp105 [V112 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x8)" P-INDEP -;* V113 tmp106 [V113 ] ( 0, 0 ) byref -> zero-ref "field V51._reference (fldOffset=0x0)" P-INDEP -;* V114 tmp107 [V114 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP -;* V115 tmp108 [V115 ] ( 0, 0 ) byref -> zero-ref single-def "field V54._reference (fldOffset=0x0)" P-INDEP -;* V116 tmp109 [V116 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP -;* V117 tmp110 [V117 ] ( 0, 0 ) byref -> zero-ref single-def "field V57._reference (fldOffset=0x0)" P-INDEP -;* V118 tmp111 [V118 ] ( 0, 0 ) int -> zero-ref "field V57._length (fldOffset=0x8)" P-INDEP -;* V119 tmp112 [V119 ] ( 0, 0 ) int -> zero-ref "field V62.Item1 (fldOffset=0x0)" P-INDEP -;* V120 tmp113 [V120 ] ( 0, 0 ) int -> zero-ref "field V62.Item2 (fldOffset=0x4)" P-INDEP -;* V121 tmp114 [V121 ] ( 0, 0 ) int -> zero-ref "field V65.Item1 (fldOffset=0x0)" P-INDEP -; V122 tmp115 [V122,T13] ( 2, 4 ) int -> r15 "field V65.Item2 (fldOffset=0x4)" P-INDEP -; V123 tmp116 [V123,T22] ( 2, 2 ) long -> r14 "Cast away GC" -; V124 cse0 [V124,T28] ( 3, 1.50) int -> rcx "CSE #02: conservative" +;* V35 tmp28 [V35 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" +;* V36 tmp29 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +; V37 tmp30 [V37,T27] ( 3, 1.50) ubyte -> rax "Inline return value spill temp" +; V38 tmp31 [V38,T16] ( 4, 2 ) int -> rax "Inline stloc first use temp" +;* V39 tmp32 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +; V40 tmp33 [V40 ] ( 3, 1.50) byref -> [rbp-0x38] must-init pinned "Inline stloc first use temp" +;* V41 tmp34 [V41 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" +;* V42 tmp35 [V42 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" +;* V43 tmp36 [V43 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan for CreateSpan" +;* V44 tmp37 [V44 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" +;* V45 tmp38 [V45 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" +;* V46 tmp39 [V46 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" +;* V47 tmp40 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V48 tmp41 [V48 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V50 tmp43 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V51 tmp44 [V51 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp" +; V52 tmp45 [V52,T00] ( 9, 25 ) int -> registers "Inlining Arg" +; V53 tmp46 [V53,T01] ( 6, 15 ) long -> rdx "Inlining Arg" +;* V54 tmp47 [V54 ] ( 0, 0 ) long -> zero-ref "dup spill" +;* V55 tmp48 [V55 ] ( 0, 0 ) struct ( 8) zero-ref "dup spill" +;* V56 tmp49 [V56 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V57 tmp50 [V57,T05] ( 3, 6 ) int -> rcx "Inline stloc first use temp" +;* V58 tmp51 [V58 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" +;* V59 tmp52 [V59 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V60 tmp53 [V60 ] ( 0, 0 ) long -> zero-ref +;* V61 tmp54 [V61 ] ( 0, 0 ) long -> zero-ref +; V62 tmp55 [V62,T11] ( 2, 4 ) ref -> r9 +;* V63 tmp56 [V63 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V64 tmp57 [V64 ] ( 0, 0 ) long -> zero-ref +; V65 tmp58 [V65,T34] ( 2, 1 ) long -> rdx +; V66 tmp59 [V66,T31] ( 2, 1 ) ref -> rcx single-def +;* V67 tmp60 [V67 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V68 tmp61 [V68 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V69 tmp62 [V69,T35] ( 2, 1 ) short -> r15 "field V08.m_value (fldOffset=0x0)" P-INDEP +;* V70 tmp63 [V70 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP +;* V71 tmp64 [V71 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP +;* V72 tmp65 [V72 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP +;* V73 tmp66 [V73 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP +; V74 tmp67 [V74,T24] ( 3, 1.50) byref -> r13 single-def "field V13._reference (fldOffset=0x0)" P-INDEP +; V75 tmp68 [V75,T28] ( 3, 1.50) int -> r12 "field V13._length (fldOffset=0x8)" P-INDEP +; V76 tmp69 [V76,T25] ( 3, 1.50) byref -> rdx "field V16._reference (fldOffset=0x0)" P-INDEP +; V77 tmp70 [V77,T17] ( 4, 2 ) int -> rax "field V16._length (fldOffset=0x8)" P-INDEP +; V78 tmp71 [V78,T32] ( 2, 1 ) byref -> rdx single-def "field V17._reference (fldOffset=0x0)" P-INDEP +; V79 tmp72 [V79,T36] ( 2, 1 ) int -> rax "field V17._length (fldOffset=0x8)" P-INDEP +;* V80 tmp73 [V80 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP +;* V81 tmp74 [V81 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP +;* V82 tmp75 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP +;* V83 tmp76 [V83 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP +;* V84 tmp77 [V84 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP +;* V85 tmp78 [V85 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP +;* V86 tmp79 [V86 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-INDEP +;* V87 tmp80 [V87 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP +;* V88 tmp81 [V88 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP +;* V89 tmp82 [V89 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP +; V90 tmp83 [V90,T26] ( 3, 1.50) byref -> rdx "field V29._reference (fldOffset=0x0)" P-INDEP +; V91 tmp84 [V91,T29] ( 3, 1.50) int -> rcx "field V29._length (fldOffset=0x8)" P-INDEP +; V92 tmp85 [V92,T33] ( 2, 1 ) byref -> rdx single-def "field V31._reference (fldOffset=0x0)" P-INDEP +; V93 tmp86 [V93,T37] ( 2, 1 ) int -> rcx "field V31._length (fldOffset=0x8)" P-INDEP +;* V94 tmp87 [V94 ] ( 0, 0 ) byref -> zero-ref single-def "field V32._reference (fldOffset=0x0)" P-INDEP +;* V95 tmp88 [V95 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP +;* V96 tmp89 [V96 ] ( 0, 0 ) byref -> zero-ref "field V35._reference (fldOffset=0x0)" P-INDEP +;* V97 tmp90 [V97 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP +;* V98 tmp91 [V98 ] ( 0, 0 ) byref -> zero-ref single-def "field V36._reference (fldOffset=0x0)" P-INDEP +;* V99 tmp92 [V99 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP +;* V100 tmp93 [V100 ] ( 0, 0 ) byref -> zero-ref single-def "field V39._reference (fldOffset=0x0)" P-INDEP +;* V101 tmp94 [V101 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP +;* V102 tmp95 [V102 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP +;* V103 tmp96 [V103 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP +;* V104 tmp97 [V104 ] ( 0, 0 ) byref -> zero-ref "field V44._reference (fldOffset=0x0)" P-INDEP +;* V105 tmp98 [V105 ] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x8)" P-INDEP +;* V106 tmp99 [V106 ] ( 0, 0 ) byref -> zero-ref single-def "field V47._reference (fldOffset=0x0)" P-INDEP +;* V107 tmp100 [V107 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP +;* V108 tmp101 [V108 ] ( 0, 0 ) byref -> zero-ref single-def "field V50._reference (fldOffset=0x0)" P-INDEP +;* V109 tmp102 [V109 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x8)" P-INDEP +;* V110 tmp103 [V110 ] ( 0, 0 ) int -> zero-ref "field V55.Item1 (fldOffset=0x0)" P-INDEP +;* V111 tmp104 [V111 ] ( 0, 0 ) int -> zero-ref "field V55.Item2 (fldOffset=0x4)" P-INDEP +;* V112 tmp105 [V112 ] ( 0, 0 ) int -> zero-ref "field V58.Item1 (fldOffset=0x0)" P-INDEP +; V113 tmp106 [V113,T12] ( 2, 4 ) int -> r15 "field V58.Item2 (fldOffset=0x4)" P-INDEP +; V114 tmp107 [V114,T22] ( 2, 2 ) long -> r14 "Cast away GC" +; V115 cse0 [V115,T30] ( 3, 1.50) int -> rcx "CSE #02: conservative" ; -; Lcl frame size = 56 +; Lcl frame size = 40 G_M55283_IG01: push rbp push r15 push r14 push r13 push r12 push rbx - sub rsp, 56 - lea rbp, [rsp+0x60] + sub rsp, 40 + lea rbp, [rsp+0x50] xor eax, eax mov qword ptr [rbp-0x38], rax mov rbx, rdi ;; size=28 bbWeight=1 PerfScore 8.25 G_M55283_IG02: cmp byte ptr [rbx+0x0D], 0 je SHORT G_M55283_IG05 ;; size=6 bbWeight=1 PerfScore 4.00 G_M55283_IG03: movsx rsi, si mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendCustomFormatter[short](short,System.String):ubyte:this call [rax]System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendCustomFormatter[short](short,System.String):ubyte:this nop ;; size=20 bbWeight=0.50 PerfScore 2.00 G_M55283_IG04: - add rsp, 56 + add rsp, 40 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12 G_M55283_IG05: movsx r15, si lea rdi, bword ptr [rbx+0x10] mov eax, dword ptr [rbx+0x08] mov ecx, dword ptr [rdi+0x08] cmp eax, ecx ja G_M55283_IG25 mov rdi, bword ptr [rdi] mov esi, eax lea r14, bword ptr [rdi+2*rsi] sub ecx, eax mov r13, r14 mov r12d, ecx - mov bword ptr [rbp-0x50], r14 - mov dword ptr [rbp-0x3C], ecx test rdx, rdx jne SHORT G_M55283_IG06 xor rdx, rdx - xor r8d, r8d + xor eax, eax jmp SHORT G_M55283_IG07 - ;; size=58 bbWeight=0.50 PerfScore 7.62 + ;; size=50 bbWeight=0.50 PerfScore 6.62 G_M55283_IG06: - lea r8, bword ptr [rdx+0x0C] + lea rax, bword ptr [rdx+0x0C] mov edi, dword ptr [rdx+0x08] - mov rdx, r8 - mov r8d, edi - ;; size=13 bbWeight=0.50 PerfScore 1.50 + mov rdx, rax + mov eax, edi + ;; size=12 bbWeight=0.50 PerfScore 1.50 G_M55283_IG07: - mov r9, gword ptr [rbx] - mov gword ptr [rbp-0x48], r9 - test r8d, r8d + mov r8, gword ptr [rbx] + test eax, eax jne G_M55283_IG20 test r15d, r15d jge SHORT G_M55283_IG12 - test r9, r9 + test r8, r8 je SHORT G_M55283_IG08 - mov rdi, r9 - mov rcx, 0xD1FFAB1E ; code for System.Globalization.NumberFormatInfo:g__GetProviderNonNull|58_0(System.IFormatProvider):System.Globalization.NumberFormatInfo - call [rcx]System.Globalization.NumberFormatInfo:g__GetProviderNonNull|58_0(System.IFormatProvider):System.Globalization.NumberFormatInfo + mov rdi, r8 + mov rax, 0xD1FFAB1E ; code for System.Globalization.NumberFormatInfo:g__GetProviderNonNull|58_0(System.IFormatProvider):System.Globalization.NumberFormatInfo + call [rax]System.Globalization.NumberFormatInfo:g__GetProviderNonNull|58_0(System.IFormatProvider):System.Globalization.NumberFormatInfo jmp SHORT G_M55283_IG09 - ;; size=43 bbWeight=0.50 PerfScore 6.12 + ;; size=38 bbWeight=0.50 PerfScore 5.62 G_M55283_IG08: - mov rcx, 0xD1FFAB1E ; code for System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo - call [rcx]System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo + mov rax, 0xD1FFAB1E ; code for System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo + call [rax]System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo ;; size=12 bbWeight=0.50 PerfScore 1.62 G_M55283_IG09: mov r8, gword ptr [rax+0x28] test r8, r8 jne SHORT G_M55283_IG10 xor rdx, rdx xor ecx, ecx jmp SHORT G_M55283_IG11 ;; size=15 bbWeight=0.50 PerfScore 2.88 G_M55283_IG10: lea rdx, bword ptr [r8+0x0C] mov ecx, dword ptr [r8+0x08] ;; size=8 bbWeight=0.50 PerfScore 1.25 G_M55283_IG11: lea r8, [rbp-0x30] mov qword ptr [rsp], r8 - mov r8, bword ptr [rbp-0x50] - mov r9d, dword ptr [rbp-0x3C] + mov r8, r13 + mov r9d, r12d mov edi, r15d mov esi, -1 mov rax, 0xD1FFAB1E ; code for System.Number:TryNegativeInt32ToDecStr[ushort](int,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte call [rax]System.Number:TryNegativeInt32ToDecStr[ushort](int,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte jmp G_M55283_IG21 - ;; size=41 bbWeight=0.50 PerfScore 4.62 + ;; size=39 bbWeight=0.50 PerfScore 3.88 G_M55283_IG12: mov eax, r15d mov edx, r15d or edx, 1 lzcnt edx, edx xor edx, 31 mov r9, 0xD1FFAB1E ; static handle add rax, qword ptr [r9+8*rdx] sar rax, 32 cmp eax, ecx jg G_M55283_IG18 mov dword ptr [rbp-0x30], eax mov bword ptr [rbp-0x38], r14 movsxd rdx, eax lea rdx, [r14+2*rdx] cmp r15d, 10 jb SHORT G_M55283_IG16 jmp SHORT G_M55283_IG14 ;; size=64 bbWeight=0.50 PerfScore 7.00 G_M55283_IG13: add rdx, -4 mov ecx, r15d imul rcx, rcx, 0xD1FFAB1E shr rcx, 37 imul r9d, ecx, 100 sub r15d, r9d mov r9, 0xD1FFAB1E ; const ptr mov r9, gword ptr [r9] shl r15d, 2 mov edi, r15d mov r9d, dword ptr [r9+rdi+0x10] mov dword ptr [rdx], r9d mov r15d, ecx ;; size=56 bbWeight=2 PerfScore 23.00 G_M55283_IG14: cmp r15d, 100 jae SHORT G_M55283_IG13 ;; size=6 bbWeight=4 PerfScore 5.00 G_M55283_IG15: cmp r15d, 10 jb SHORT G_M55283_IG16 add rdx, -4 mov rcx, 0xD1FFAB1E ; const ptr mov rcx, gword ptr [rcx] lea r9d, [4*r15] mov ecx, dword ptr [rcx+r9+0x10] mov dword ptr [rdx], ecx jmp SHORT G_M55283_IG17 ;; size=40 bbWeight=0.50 PerfScore 4.62 G_M55283_IG16: lea ecx, [r15+0x30] mov word ptr [rdx-0x02], cx ;; size=8 bbWeight=0.50 PerfScore 0.75 G_M55283_IG17: xor edx, edx mov bword ptr [rbp-0x38], rdx mov eax, 1 jmp SHORT G_M55283_IG19 ;; size=13 bbWeight=0.50 PerfScore 1.75 G_M55283_IG18: xor eax, eax mov dword ptr [rbp-0x30], eax ;; size=5 bbWeight=0.50 PerfScore 0.62 G_M55283_IG19: xor rdx, rdx mov bword ptr [rbp-0x38], rdx jmp SHORT G_M55283_IG21 ;; size=8 bbWeight=0.50 PerfScore 1.62 G_M55283_IG20: mov bword ptr [rsp], r13 mov dword ptr [rsp+0x08], r12d - mov ecx, r8d + mov ecx, eax lea r9, [rbp-0x30] mov edi, r15d - mov r8, gword ptr [rbp-0x48] mov esi, 0xFFFF mov rax, 0xD1FFAB1E ; code for System.Number:g__TryFormatInt32Slow|34_0[ushort](int,int,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.Span`1[ushort],byref):ubyte call [rax]System.Number:g__TryFormatInt32Slow|34_0[ushort](int,int,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.Span`1[ushort],byref):ubyte - ;; size=40 bbWeight=0.50 PerfScore 3.75 + ;; size=35 bbWeight=0.50 PerfScore 3.25 G_M55283_IG21: test eax, eax je SHORT G_M55283_IG23 mov eax, dword ptr [rbp-0x30] add dword ptr [rbx+0x08], eax mov eax, 1 ;; size=15 bbWeight=0.50 PerfScore 2.75 G_M55283_IG22: - add rsp, 56 + add rsp, 40 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12 G_M55283_IG23: mov byte ptr [rbx+0x0C], 0 xor eax, eax ;; size=6 bbWeight=0.50 PerfScore 0.62 G_M55283_IG24: - add rsp, 56 + add rsp, 40 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12 G_M55283_IG25: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException() call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 -; Total bytes of code 563, prolog size 28, PerfScore 97.75, instruction count 167, allocated bytes for code 563 (MethodHash=fb7a280c) for method System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[short](short,System.String):ubyte:this (FullOpts) +; Total bytes of code 542, prolog size 28, PerfScore 95.00, instruction count 163, allocated bytes for code 542 (MethodHash=fb7a280c) for method System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[short](short,System.String):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/2f768bcb5600268d491da7835eba933d

MihuBot commented 5 months ago

@xtqqczze

xtqqczze commented 5 months ago

https://github.com/dotnet/runtime/pull/100750