Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[JitDiff X64] [xtqqczze] Remove unsafe bool casts #854

Open
MihuBot opened this issue Jan 2, 2025 · 3 comments
Open

[JitDiff X64] [xtqqczze] Remove unsafe bool casts #854

MihuBot opened this issue Jan 2, 2025 · 3 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented Jan 2, 2025

Job completed in 19 minutes 36 seconds.
dotnet/runtime#111024

Diffs

Diffs
Found 271 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 40229041
Total bytes of diff: 40227228
Total bytes of delta: -1813 (-0.00 % of base)
Total relative delta: -1.68
    diff is an improvement.
    relative diff is an improvement.


Top file improvements (bytes):
       -1465 : System.Text.Json.dasm (-0.11 % of base)
        -279 : System.Private.CoreLib.dasm (-0.00 % of base)
         -52 : System.Net.Http.dasm (-0.01 % of base)
          -5 : System.Private.Xml.dasm (-0.00 % of base)
          -2 : System.Runtime.Numerics.dasm (-0.00 % of base)
          -2 : System.Reflection.Metadata.dasm (-0.00 % of base)
          -2 : System.Console.dasm (-0.00 % of base)
          -2 : System.Web.HttpUtility.dasm (-0.01 % of base)
          -2 : System.Net.ServerSentEvents.dasm (-0.00 % of base)
          -2 : System.Diagnostics.TextWriterTraceListener.dasm (-0.01 % of base)

10 total files with Code Size differences (10 improved, 0 regressed), 249 unchanged.

Top method regressions (bytes):
          71 (10.22 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.Int128Converter:Format(System.Span`1[ubyte],System.Int128,byref) (FullOpts)
          67 (8.41 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.UInt128Converter:WriteCore(System.Text.Json.Utf8JsonWriter,System.UInt128) (FullOpts)
          62 (8.16 % 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)
          52 (3.86 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.Int128Converter:WriteNumberWithCustomHandling(System.Text.Json.Utf8JsonWriter,System.Int128,int):this (FullOpts)
          23 (7.54 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(ulong):this (FullOpts)
           2 (1.60 % of base) : System.Private.CoreLib.dasm - System.Half:op_Explicit(float):System.Half (FullOpts)
           2 (0.04 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.XmlSerializationWriter:WriteTypedPrimitive(System.String,System.String,System.Object,ubyte):this (FullOpts)

Top method improvements (bytes):
        -822 (-68.16 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this (FullOpts)
        -822 (-68.16 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
         -82 (-6.67 % of base) : System.Private.CoreLib.dasm - System.Number:TryFormatInt128[ubyte](System.Int128,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.Span`1[ubyte],byref):ubyte (FullOpts)
         -49 (-5.37 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.Int128Converter:WriteCore(System.Text.Json.Utf8JsonWriter,System.Int128) (FullOpts)
         -47 (-2.55 % of base) : System.Net.Http.dasm - System.Net.Http.Headers.ContentRangeHeaderValue:ToString():System.String:this (FullOpts)
         -27 (-3.69 % of base) : System.Private.CoreLib.dasm - System.Int128:TryFormat(System.Span`1[ubyte],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
         -19 (-2.75 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.UInt128Converter:WriteAsPropertyNameCore(System.Text.Json.Utf8JsonWriter,System.UInt128,System.Text.Json.JsonSerializerOptions,ubyte):this (FullOpts)
         -18 (-2.09 % of base) : System.Private.CoreLib.dasm - System.Number:NegativeInt128ToDecStr(System.Int128,int,System.String):System.String (FullOpts)
         -15 (-1.29 % of base) : System.Private.CoreLib.dasm - System.Number:TryUInt128ToDecStr[ubyte](System.UInt128,int,System.Span`1[ubyte],byref):ubyte (FullOpts)
          -9 (-0.63 % of base) : System.Private.CoreLib.dasm - System.Number:<FormatUInt128>g__FormatUInt128Slow|28_0(System.UInt128,System.String,System.IFormatProvider):System.String (FullOpts)
          -6 (-0.59 % of base) : System.Private.CoreLib.dasm - System.Buffers.Text.Utf8Formatter:TryFormat(ulong,System.Span`1[ubyte],byref,System.Buffers.StandardFormat):ubyte (FullOpts)
          -6 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Number:TryNegativeInt128ToDecStr[ubyte](System.Int128,int,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte (FullOpts)
          -6 (-1.14 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[long](long):this (FullOpts)
          -5 (-1.71 % of base) : System.Private.CoreLib.dasm - System.UInt64:TryFormat(System.Span`1[ubyte],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          -5 (-1.70 % of base) : System.Private.CoreLib.dasm - System.UInt64:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          -5 (-1.71 % of base) : System.Private.CoreLib.dasm - System.UIntPtr:TryFormat(System.Span`1[ubyte],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          -5 (-1.70 % of base) : System.Private.CoreLib.dasm - System.UIntPtr:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          -4 (-1.95 % of base) : System.Private.CoreLib.dasm - System.Buffers.Text.FormattingHelpers:CountDigits(System.UInt128):int (FullOpts)
          -4 (-0.36 % of base) : System.Private.CoreLib.dasm - System.Buffers.Text.Utf8Formatter:TryFormat(long,System.Span`1[ubyte],byref,System.Buffers.StandardFormat):ubyte (FullOpts)
          -4 (-0.66 % of base) : System.Private.CoreLib.dasm - System.Int128:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          -4 (-0.28 % of base) : System.Private.CoreLib.dasm - System.Number:<FormatInt128>g__FormatInt128Slow|26_0(System.Int128,System.String,System.IFormatProvider):System.String (FullOpts)
          -4 (-0.61 % of base) : System.Private.CoreLib.dasm - System.Number:TryFormatUInt128[ubyte](System.UInt128,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.Span`1[ubyte],byref):ubyte (FullOpts)
          -4 (-0.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.UInt128Converter:Format(System.Span`1[ubyte],System.UInt128,byref) (FullOpts)
          -4 (-0.70 % of base) : System.Private.CoreLib.dasm - System.UInt128:TryFormat(System.Span`1[ubyte],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          -4 (-0.70 % of base) : System.Private.CoreLib.dasm - System.UInt128:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          -3 (-3.03 % of base) : System.Private.CoreLib.dasm - System.Half:op_Explicit(System.Half):float (FullOpts)
          -3 (-0.71 % of base) : System.Private.CoreLib.dasm - System.Number:TryUInt64ToDecStr[ubyte](ulong,int,System.Span`1[ubyte],byref):ubyte (FullOpts)
          -3 (-1.24 % of base) : System.Private.CoreLib.dasm - System.Number:TryUInt64ToDecStr[ubyte](ulong,System.Span`1[ubyte],byref):ubyte (FullOpts)
          -3 (-0.98 % of base) : System.Private.CoreLib.dasm - System.Number:UInt64ToDecStr(ulong):System.String (FullOpts)
          -3 (-1.23 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryFormat(ulong,System.Span`1[ushort],byref):ubyte (FullOpts)
          -2 (-3.57 % of base) : System.Runtime.Numerics.dasm - System.Buffers.Text.FormattingHelpers:CountDigits(ulong):int (FullOpts)
          -2 (-3.57 % of base) : System.Private.CoreLib.dasm - System.Buffers.Text.FormattingHelpers:CountDigits(ulong):int (FullOpts)
          -2 (-0.35 % of base) : System.Private.CoreLib.dasm - System.Buffers.Text.FormattingHelpers:TryFormat[long](long,System.Span`1[ubyte],byref,System.Buffers.StandardFormat):ubyte (FullOpts)
          -2 (-0.43 % of base) : System.Diagnostics.TextWriterTraceListener.dasm - System.Diagnostics.XmlWriterTraceListener:InternalWrite[long](long):this (FullOpts)
          -2 (-0.26 % of base) : System.Private.CoreLib.dasm - System.Enum:TryFormatPrimitiveDefault[long,long](System.RuntimeType,long,System.Span`1[ushort],byref):ubyte (FullOpts)
          -2 (-0.16 % 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)
          -2 (-0.41 % of base) : System.Private.CoreLib.dasm - System.Int64:TryFormat(System.Span`1[ubyte],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          -2 (-0.47 % of base) : System.Private.CoreLib.dasm - System.Int64:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          -2 (-0.41 % of base) : System.Private.CoreLib.dasm - System.IntPtr:TryFormat(System.Span`1[ubyte],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          -2 (-0.47 % of base) : System.Private.CoreLib.dasm - System.IntPtr:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          -2 (-0.35 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[long](long,System.String):ubyte:this (FullOpts)
          -2 (-0.40 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[long](long):ubyte:this (FullOpts)
          -2 (-0.13 % of base) : System.Net.Http.dasm - System.Net.Http.Headers.AltSvcHeaderValue:ToString():System.String:this (FullOpts)
          -2 (-0.42 % of base) : System.Net.ServerSentEvents.dasm - System.Net.ServerSentEvents.Helpers:WriteUtf8Number(System.Buffers.IBufferWriter`1[ubyte],long) (FullOpts)
          -2 (-0.48 % of base) : System.Private.CoreLib.dasm - System.Number:NegativeInt64ToDecStr(long,int,System.String):System.String (FullOpts)
          -2 (-0.40 % of base) : System.Private.CoreLib.dasm - System.Number:TryFormatInt64[ubyte](long,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.Span`1[ubyte],byref):ubyte (FullOpts)
          -2 (-0.74 % of base) : System.Private.CoreLib.dasm - System.Number:TryFormatUInt64[ubyte](ulong,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.Span`1[ubyte],byref):ubyte (FullOpts)
          -2 (-0.54 % of base) : System.Private.CoreLib.dasm - System.Number:TryNegativeInt64ToDecStr[ubyte](long,int,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte (FullOpts)
          -2 (-0.31 % of base) : System.Private.CoreLib.dasm - System.Number:UInt128ToDecStr(System.UInt128):System.String (FullOpts)
          -2 (-0.60 % of base) : System.Private.CoreLib.dasm - System.Number:UInt64ToDecStr(ulong,int):System.String (FullOpts)
          -2 (-0.36 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[long](long,System.String):this (FullOpts)
          -2 (-0.41 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[long](long):this (FullOpts)
          -2 (-0.23 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberIndented(System.ReadOnlySpan`1[ubyte],long):this (FullOpts)
          -2 (-0.25 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberIndented(System.ReadOnlySpan`1[ubyte],ulong):this (FullOpts)
          -2 (-0.23 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberIndented(System.ReadOnlySpan`1[ushort],long):this (FullOpts)
          -2 (-0.25 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberIndented(System.ReadOnlySpan`1[ushort],ulong):this (FullOpts)
          -2 (-0.28 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberMinimized(System.ReadOnlySpan`1[ubyte],long):this (FullOpts)
          -2 (-0.31 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberMinimized(System.ReadOnlySpan`1[ubyte],ulong):this (FullOpts)
          -2 (-0.30 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberMinimized(System.ReadOnlySpan`1[ushort],ulong):this (FullOpts)
          -2 (-0.30 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueIndented(long):this (FullOpts)
          -2 (-0.33 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueIndented(ulong):this (FullOpts)
          -2 (-0.37 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueMinimized(long):this (FullOpts)
          -2 (-0.43 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueMinimized(ulong):this (FullOpts)
          -2 (-0.66 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(ulong):this (FullOpts)
          -2 (-0.43 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder:AppendSpanFormattable[long](long):System.Text.StringBuilder:this (FullOpts)
          -2 (-0.37 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder:InsertSpanFormattable[long](int,long):System.Text.StringBuilder:this (FullOpts)
          -2 (-0.33 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[long](long,System.String):this (FullOpts)
          -2 (-0.24 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:<AppendSpanFormattable>g__GrowAndAppendFormatted|20_0[long](byref,long,int,byref,System.String):ubyte (FullOpts)
          -2 (-0.31 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendFormatted[long](long,System.String):ubyte:this (FullOpts)
          -2 (-0.35 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendFormatted[long](long):ubyte:this (FullOpts)
          -2 (-0.30 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendSpanFormattable[long](long,System.String):ubyte:this (FullOpts)
          -2 (-0.32 % of base) : System.Private.Xml.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[long](long,System.String,System.IFormatProvider):this (FullOpts)
          -2 (-0.32 % of base) : System.Reflection.Metadata.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[long](long,System.String,System.IFormatProvider):this (FullOpts)
          -2 (-0.32 % of base) : System.Console.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[long](long,System.String,System.IFormatProvider):this (FullOpts)
          -2 (-0.32 % of base) : System.Web.HttpUtility.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[long](long,System.String,System.IFormatProvider):this (FullOpts)
          -2 (-0.32 % of base) : System.Net.Http.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[long](long,System.String,System.IFormatProvider):this (FullOpts)
          -2 (-0.32 % of base) : System.Private.CoreLib.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[long](long,System.String,System.IFormatProvider):this (FullOpts)
          -2 (-0.54 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryFormat(long,System.Span`1[ushort],byref):ubyte (FullOpts)
          -1 (-0.06 % of base) : System.Net.Http.dasm - System.Net.Http.Headers.RangeHeaderValue:ToString():System.String:this (FullOpts)

Top method regressions (percentages):
          71 (10.22 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.Int128Converter:Format(System.Span`1[ubyte],System.Int128,byref) (FullOpts)
          67 (8.41 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.UInt128Converter:WriteCore(System.Text.Json.Utf8JsonWriter,System.UInt128) (FullOpts)
          62 (8.16 % 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)
          23 (7.54 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(ulong):this (FullOpts)
          52 (3.86 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.Int128Converter:WriteNumberWithCustomHandling(System.Text.Json.Utf8JsonWriter,System.Int128,int):this (FullOpts)
           2 (1.60 % of base) : System.Private.CoreLib.dasm - System.Half:op_Explicit(float):System.Half (FullOpts)
           2 (0.04 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.XmlSerializationWriter:WriteTypedPrimitive(System.String,System.String,System.Object,ubyte):this (FullOpts)

Top method improvements (percentages):
        -822 (-68.16 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this (FullOpts)
        -822 (-68.16 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
         -82 (-6.67 % of base) : System.Private.CoreLib.dasm - System.Number:TryFormatInt128[ubyte](System.Int128,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.Span`1[ubyte],byref):ubyte (FullOpts)
         -49 (-5.37 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.Int128Converter:WriteCore(System.Text.Json.Utf8JsonWriter,System.Int128) (FullOpts)
         -27 (-3.69 % of base) : System.Private.CoreLib.dasm - System.Int128:TryFormat(System.Span`1[ubyte],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          -2 (-3.57 % of base) : System.Runtime.Numerics.dasm - System.Buffers.Text.FormattingHelpers:CountDigits(ulong):int (FullOpts)
          -2 (-3.57 % of base) : System.Private.CoreLib.dasm - System.Buffers.Text.FormattingHelpers:CountDigits(ulong):int (FullOpts)
          -3 (-3.03 % of base) : System.Private.CoreLib.dasm - System.Half:op_Explicit(System.Half):float (FullOpts)
         -19 (-2.75 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.UInt128Converter:WriteAsPropertyNameCore(System.Text.Json.Utf8JsonWriter,System.UInt128,System.Text.Json.JsonSerializerOptions,ubyte):this (FullOpts)
         -47 (-2.55 % of base) : System.Net.Http.dasm - System.Net.Http.Headers.ContentRangeHeaderValue:ToString():System.String:this (FullOpts)
         -18 (-2.09 % of base) : System.Private.CoreLib.dasm - System.Number:NegativeInt128ToDecStr(System.Int128,int,System.String):System.String (FullOpts)
          -4 (-1.95 % of base) : System.Private.CoreLib.dasm - System.Buffers.Text.FormattingHelpers:CountDigits(System.UInt128):int (FullOpts)
          -5 (-1.71 % of base) : System.Private.CoreLib.dasm - System.UInt64:TryFormat(System.Span`1[ubyte],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          -5 (-1.71 % of base) : System.Private.CoreLib.dasm - System.UIntPtr:TryFormat(System.Span`1[ubyte],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          -5 (-1.70 % of base) : System.Private.CoreLib.dasm - System.UInt64:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          -5 (-1.70 % of base) : System.Private.CoreLib.dasm - System.UIntPtr:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
         -15 (-1.29 % of base) : System.Private.CoreLib.dasm - System.Number:TryUInt128ToDecStr[ubyte](System.UInt128,int,System.Span`1[ubyte],byref):ubyte (FullOpts)
          -3 (-1.24 % of base) : System.Private.CoreLib.dasm - System.Number:TryUInt64ToDecStr[ubyte](ulong,System.Span`1[ubyte],byref):ubyte (FullOpts)
          -3 (-1.23 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryFormat(ulong,System.Span`1[ushort],byref):ubyte (FullOpts)
          -6 (-1.14 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[long](long):this (FullOpts)
          -3 (-0.98 % of base) : System.Private.CoreLib.dasm - System.Number:UInt64ToDecStr(ulong):System.String (FullOpts)
          -2 (-0.74 % of base) : System.Private.CoreLib.dasm - System.Number:TryFormatUInt64[ubyte](ulong,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.Span`1[ubyte],byref):ubyte (FullOpts)
          -6 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Number:TryNegativeInt128ToDecStr[ubyte](System.Int128,int,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte (FullOpts)
          -4 (-0.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.UInt128Converter:Format(System.Span`1[ubyte],System.UInt128,byref) (FullOpts)
          -3 (-0.71 % of base) : System.Private.CoreLib.dasm - System.Number:TryUInt64ToDecStr[ubyte](ulong,int,System.Span`1[ubyte],byref):ubyte (FullOpts)
          -4 (-0.70 % of base) : System.Private.CoreLib.dasm - System.UInt128:TryFormat(System.Span`1[ubyte],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          -4 (-0.70 % of base) : System.Private.CoreLib.dasm - System.UInt128:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          -4 (-0.66 % of base) : System.Private.CoreLib.dasm - System.Int128:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          -2 (-0.66 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(ulong):this (FullOpts)
          -9 (-0.63 % of base) : System.Private.CoreLib.dasm - System.Number:<FormatUInt128>g__FormatUInt128Slow|28_0(System.UInt128,System.String,System.IFormatProvider):System.String (FullOpts)
          -4 (-0.61 % of base) : System.Private.CoreLib.dasm - System.Number:TryFormatUInt128[ubyte](System.UInt128,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.Span`1[ubyte],byref):ubyte (FullOpts)
          -2 (-0.60 % of base) : System.Private.CoreLib.dasm - System.Number:UInt64ToDecStr(ulong,int):System.String (FullOpts)
          -6 (-0.59 % of base) : System.Private.CoreLib.dasm - System.Buffers.Text.Utf8Formatter:TryFormat(ulong,System.Span`1[ubyte],byref,System.Buffers.StandardFormat):ubyte (FullOpts)
          -2 (-0.54 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryFormat(long,System.Span`1[ushort],byref):ubyte (FullOpts)
          -2 (-0.54 % of base) : System.Private.CoreLib.dasm - System.Number:TryNegativeInt64ToDecStr[ubyte](long,int,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte (FullOpts)
          -2 (-0.48 % of base) : System.Private.CoreLib.dasm - System.Number:NegativeInt64ToDecStr(long,int,System.String):System.String (FullOpts)
          -2 (-0.47 % of base) : System.Private.CoreLib.dasm - System.Int64:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          -2 (-0.47 % of base) : System.Private.CoreLib.dasm - System.IntPtr:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          -2 (-0.43 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueMinimized(ulong):this (FullOpts)
          -2 (-0.43 % of base) : System.Diagnostics.TextWriterTraceListener.dasm - System.Diagnostics.XmlWriterTraceListener:InternalWrite[long](long):this (FullOpts)
          -2 (-0.43 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder:AppendSpanFormattable[long](long):System.Text.StringBuilder:this (FullOpts)
          -2 (-0.42 % of base) : System.Net.ServerSentEvents.dasm - System.Net.ServerSentEvents.Helpers:WriteUtf8Number(System.Buffers.IBufferWriter`1[ubyte],long) (FullOpts)
          -2 (-0.41 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[long](long):this (FullOpts)
          -2 (-0.41 % of base) : System.Private.CoreLib.dasm - System.Int64:TryFormat(System.Span`1[ubyte],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          -2 (-0.41 % of base) : System.Private.CoreLib.dasm - System.IntPtr:TryFormat(System.Span`1[ubyte],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (FullOpts)
          -2 (-0.40 % of base) : System.Private.CoreLib.dasm - System.Number:TryFormatInt64[ubyte](long,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.Span`1[ubyte],byref):ubyte (FullOpts)
          -2 (-0.40 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[long](long):ubyte:this (FullOpts)
          -2 (-0.37 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueMinimized(long):this (FullOpts)
          -2 (-0.37 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder:InsertSpanFormattable[long](int,long):System.Text.StringBuilder:this (FullOpts)
          -4 (-0.36 % of base) : System.Private.CoreLib.dasm - System.Buffers.Text.Utf8Formatter:TryFormat(long,System.Span`1[ubyte],byref,System.Buffers.StandardFormat):ubyte (FullOpts)
          -2 (-0.36 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[long](long,System.String):this (FullOpts)
          -2 (-0.35 % of base) : System.Private.CoreLib.dasm - System.Buffers.Text.FormattingHelpers:TryFormat[long](long,System.Span`1[ubyte],byref,System.Buffers.StandardFormat):ubyte (FullOpts)
          -2 (-0.35 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions+TryWriteInterpolatedStringHandler:AppendFormatted[long](long,System.String):ubyte:this (FullOpts)
          -2 (-0.35 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendFormatted[long](long):ubyte:this (FullOpts)
          -2 (-0.33 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueIndented(ulong):this (FullOpts)
          -2 (-0.33 % of base) : System.Private.CoreLib.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[long](long,System.String):this (FullOpts)
          -2 (-0.32 % of base) : System.Private.Xml.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[long](long,System.String,System.IFormatProvider):this (FullOpts)
          -2 (-0.32 % of base) : System.Reflection.Metadata.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[long](long,System.String,System.IFormatProvider):this (FullOpts)
          -2 (-0.32 % of base) : System.Console.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[long](long,System.String,System.IFormatProvider):this (FullOpts)
          -2 (-0.32 % of base) : System.Web.HttpUtility.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[long](long,System.String,System.IFormatProvider):this (FullOpts)
          -2 (-0.32 % of base) : System.Net.Http.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[long](long,System.String,System.IFormatProvider):this (FullOpts)
          -2 (-0.32 % of base) : System.Private.CoreLib.dasm - System.Text.ValueStringBuilder:AppendSpanFormattable[long](long,System.String,System.IFormatProvider):this (FullOpts)
          -2 (-0.31 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberMinimized(System.ReadOnlySpan`1[ubyte],ulong):this (FullOpts)
          -2 (-0.31 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendFormatted[long](long,System.String):ubyte:this (FullOpts)
          -2 (-0.31 % of base) : System.Private.CoreLib.dasm - System.Number:UInt128ToDecStr(System.UInt128):System.String (FullOpts)
          -2 (-0.30 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberMinimized(System.ReadOnlySpan`1[ushort],ulong):this (FullOpts)
          -2 (-0.30 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueIndented(long):this (FullOpts)
          -2 (-0.30 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendSpanFormattable[long](long,System.String):ubyte:this (FullOpts)
          -2 (-0.28 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberMinimized(System.ReadOnlySpan`1[ubyte],long):this (FullOpts)
          -4 (-0.28 % of base) : System.Private.CoreLib.dasm - System.Number:<FormatInt128>g__FormatInt128Slow|26_0(System.Int128,System.String,System.IFormatProvider):System.String (FullOpts)
          -2 (-0.26 % of base) : System.Private.CoreLib.dasm - System.Enum:TryFormatPrimitiveDefault[long,long](System.RuntimeType,long,System.Span`1[ushort],byref):ubyte (FullOpts)
          -2 (-0.25 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberIndented(System.ReadOnlySpan`1[ubyte],ulong):this (FullOpts)
          -2 (-0.25 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberIndented(System.ReadOnlySpan`1[ushort],ulong):this (FullOpts)
          -2 (-0.24 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:<AppendSpanFormattable>g__GrowAndAppendFormatted|20_0[long](byref,long,int,byref,System.String):ubyte (FullOpts)
          -2 (-0.23 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberIndented(System.ReadOnlySpan`1[ubyte],long):this (FullOpts)
          -2 (-0.23 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberIndented(System.ReadOnlySpan`1[ushort],long):this (FullOpts)
          -2 (-0.16 % 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)
          -2 (-0.13 % of base) : System.Net.Http.dasm - System.Net.Http.Headers.AltSvcHeaderValue:ToString():System.String:this (FullOpts)
          -1 (-0.06 % of base) : System.Net.Http.dasm - System.Net.Http.Headers.RangeHeaderValue:ToString():System.String:this (FullOpts)

86 total methods with Code Size differences (79 improved, 7 regressed), 232932 unchanged.

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

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Jan 2, 2025

Top method regressions

71 (10.22 % of base) - System.Text.Json.Serialization.Converters.Int128Converter:Format(System.Span`1[ubyte],System.Int128,byref)
 ; 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 AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 28 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 <System.Span`1[ubyte]>
 ;* V01 arg1         [V01    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op single-def <System.Int128>
-;  V02 arg2         [V02,T11] (  5,  3.50)   byref  ->  rbx         single-def
-;  V03 loc0         [V03,T35] (  2,  1.50)     ref  ->  rdi         class-hnd exact single-def <System.Globalization.CultureInfo>
+;  V02 arg2         [V02,T13] (  5,  3.50)   byref  ->  rbx         single-def
+;  V03 loc0         [V03,T36] (  2,  1.50)     ref  ->  rdi         class-hnd exact single-def <System.Globalization.CultureInfo>
 ;* V04 loc1         [V04    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.ReadOnlySpan`1[ushort]>
 ;  V05 OutArgs      [V05    ] (  1,  1   )  struct (16) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V06 tmp1         [V06    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V07 tmp2         [V07    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V08 tmp3         [V08    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V09 tmp4         [V09    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Int128>
 ;* V10 tmp5         [V10    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.UInt128>
 ;* V11 tmp6         [V11    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-;  V12 tmp7         [V12,T25] (  4,  2   )     ref  ->  [rbp-0x40]  class-hnd spill-single-def "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
+;  V12 tmp7         [V12,T26] (  4,  2   )     ref  ->  [rbp-0x70]  class-hnd spill-single-def "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
 ;* V13 tmp8         [V13    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ubyte]>
-;  V14 tmp9         [V14,T27] (  2,  2   )     ref  ->  rcx         class-hnd single-def "dup spill" <ubyte[]>
-;  V15 tmp10        [V15,T21] (  6,  3   )     ref  ->  rcx        
-;  V16 tmp11        [V16,T22] (  3,  3   )     ref  ->  [rbp-0x48]  class-hnd spill-single-def "dup spill" <ubyte[]>
+;  V14 tmp9         [V14,T28] (  2,  2   )     ref  ->  rcx         class-hnd single-def "dup spill" <ubyte[]>
+;  V15 tmp10        [V15,T22] (  6,  3   )     ref  ->  rcx        
+;  V16 tmp11        [V16,T23] (  3,  3   )     ref  ->  [rbp-0x78]  class-hnd spill-single-def "dup spill" <ubyte[]>
 ;* V17 tmp12        [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline stloc first use temp" <ubyte[]>
 ;* V18 tmp13        [V18    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V19 tmp14        [V19    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.UInt128>
 ;* V20 tmp15        [V20    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V21 tmp16        [V21    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V22 tmp17        [V22    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V23 tmp18        [V23    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V24 tmp19        [V24    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V25 tmp20        [V25    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
 ;  V26 tmp21        [V26    ] (  3,  1.50)   byref  ->  [rbp-0x30]  must-init pinned "Inline stloc first use temp"
-;  V27 tmp22        [V27,T30] (  3,  1.50)    long  ->  r13         "Inline stloc first use temp"
+;  V27 tmp22        [V27,T31] (  3,  1.50)    long  ->  r13         "Inline stloc first use temp"
 ;* V28 tmp23        [V28    ] (  0,  0   )    long  ->  zero-ref   
-;  V29 tmp24        [V29,T23] (  5,  2.50)     int  ->  rsi         "Inline return value spill temp"
+;  V29 tmp24        [V29,T24] (  5,  2.50)     int  ->  rsi         "Inline return value spill temp"
 ;* V30 tmp25        [V30    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op "Inlining Arg" <System.UInt128>
 ;* V31 tmp26        [V31    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;  V32 tmp27        [V32,T24] (  5,  2.50)     int  ->  rdi         "Inline stloc first use temp"
+;  V32 tmp27        [V32,T25] (  5,  2.50)     int  ->  rdi         "Inline stloc first use temp"
 ;* V33 tmp28        [V33    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.UInt128>
 ;* V34 tmp29        [V34    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.UInt128>
 ;* V35 tmp30        [V35    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.UInt128>
 ;* V36 tmp31        [V36    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V37 tmp32        [V37    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V38 tmp33        [V38    ] (  0,  0   )   byref  ->  zero-ref    "impAppendStmt"
-;  V39 tmp34        [V39,T31] (  3,  1.50)     int  ->  rsi         "Inline stloc first use temp"
+;  V39 tmp34        [V39,T32] (  3,  1.50)    long  ->  rsi         "Inline stloc first use temp"
 ;* V40 tmp35        [V40    ] (  0,  0   )  struct (16) zero-ref    "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[ulong]>
 ;* V41 tmp36        [V41    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V42 tmp37        [V42    ] (  0,  0   )   ubyte  ->  zero-ref    ld-addr-op "Inline stloc first use temp"
-;* V43 tmp38        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V44 tmp39        [V44    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V45 tmp40        [V45    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V46 tmp41        [V46    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
-;* V47 tmp42        [V47    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;* V48 tmp43        [V48    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V49 tmp44        [V49    ] (  0,  0   )   byref  ->  zero-ref    "impAppendStmt"
-;  V50 tmp45        [V50,T32] (  3,  1.50)     int  ->  rdi         "Inline stloc first use temp"
-;* V51 tmp46        [V51    ] (  0,  0   )  struct (16) zero-ref    "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[ulong]>
-;* V52 tmp47        [V52    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V53 tmp48        [V53    ] (  0,  0   )   ubyte  ->  zero-ref    ld-addr-op "Inline stloc first use temp"
-;* V54 tmp49        [V54    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V55 tmp50        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V56 tmp51        [V56    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V57 tmp52        [V57    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
-;  V58 tmp53        [V58,T26] (  4,  2   )     int  ->  rdx         "Inline return value spill temp"
-;* V59 tmp54        [V59    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V60 tmp55        [V60    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "Inlining Arg" <System.UInt128>
-;  V61 tmp56        [V61,T00] (  4, 18   )    long  ->  r13         "Inlining Arg"
-;* V62 tmp57        [V62    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "Inline ldloca(s) first use temp" <System.UInt128>
-;* V63 tmp58        [V63    ] (  0,  0   )  struct (32) zero-ref    do-not-enreg[S] "Inline stloc first use temp" <System.ValueTuple`2[System.UInt128,System.UInt128]>
-;* V64 tmp59        [V64    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.UInt128>
-;* V65 tmp60        [V65    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.UInt128>
-;* V66 tmp61        [V66    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.UInt128>
-;* V67 tmp62        [V67    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.UInt128>
-;* V68 tmp63        [V68    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Inline stloc first use temp" <System.UInt128>
+;* V42 tmp37        [V42    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+;* V43 tmp38        [V43    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V44 tmp39        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V45 tmp40        [V45    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
+;* V46 tmp41        [V46    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V47 tmp42        [V47    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V48 tmp43        [V48    ] (  0,  0   )   byref  ->  zero-ref    "impAppendStmt"
+;  V49 tmp44        [V49,T33] (  3,  1.50)    long  ->  rdi         "Inline stloc first use temp"
+;* V50 tmp45        [V50    ] (  0,  0   )  struct (16) zero-ref    "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[ulong]>
+;* V51 tmp46        [V51    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V52 tmp47        [V52    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+;* V53 tmp48        [V53    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V54 tmp49        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V55 tmp50        [V55    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
+;  V56 tmp51        [V56,T27] (  4,  2   )     int  ->  rdx         "Inline return value spill temp"
+;* V57 tmp52        [V57    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V58 tmp53        [V58    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "Inlining Arg" <System.UInt128>
+;  V59 tmp54        [V59,T00] (  4, 18   )    long  ->  r13         "Inlining Arg"
+;* V60 tmp55        [V60    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "Inline ldloca(s) first use temp" <System.UInt128>
+;* V61 tmp56        [V61    ] (  0,  0   )  struct (32) zero-ref    do-not-enreg[S] "Inline stloc first use temp" <System.ValueTuple`2[System.UInt128,System.UInt128]>
+;* V62 tmp57        [V62    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.UInt128>
+;* V63 tmp58        [V63    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.UInt128>
+;* V64 tmp59        [V64    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.UInt128>
+;* V65 tmp60        [V65    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.UInt128>
+;* V66 tmp61        [V66    ] (  0,  0   )  struct (16) zero-ref    multireg-arg multireg-ret "Inline stloc first use temp" <System.UInt128>
+;* V67 tmp62        [V67    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.UInt128>
+;  V68 tmp63        [V68    ] (  5, 40   )  struct (32) [rbp-0x50]  do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.UInt128,System.UInt128]>
 ;* V69 tmp64        [V69    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.UInt128>
-;* V70 tmp65        [V70    ] (  0,  0   )  struct (32) zero-ref    do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.UInt128,System.UInt128]>
-;* V71 tmp66        [V71    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "spilled call-like call argument" <System.UInt128>
-;  V72 tmp67        [V72,T07] (  2,  8   )    long  ->  rdx         ld-addr-op "Inline ldloca(s) first use temp"
-;* V73 tmp68        [V73    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.UInt128>
-;* V74 tmp69        [V74    ] (  0,  0   )    long  ->  zero-ref    "Inline return value spill temp"
-;* V75 tmp70        [V75    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V76 tmp71        [V76    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V77 tmp72        [V77    ] (  2,  8   )    long  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V78 tmp73        [V78,T02] (  2, 16   )    long  ->  rdi         "impAppendStmt"
-;* V79 tmp74        [V79    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V80 tmp75        [V80,T03] (  2, 16   )    long  ->  rcx         "Inlining Arg"
-;  V81 tmp76        [V81,T13] (  4,  2.50)   byref  ->  r14         single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-;  V82 tmp77        [V82,T14] (  3,  2   )     int  ->  r13         single-def "field V00._length (fldOffset=0x8)" P-INDEP
-;  V83 tmp78        [V83,T15] (  3,  2   )    long  ->  r12         single-def "field V01._lower (fldOffset=0x0)" P-INDEP
-;  V84 tmp79        [V84,T12] (  4,  3   )    long  ->  r15         single-def "field V01._upper (fldOffset=0x8)" P-INDEP
-;* V85 tmp80        [V85    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V04._reference (fldOffset=0x0)" P-INDEP
-;* V86 tmp81        [V86    ] (  0,  0   )     int  ->  zero-ref    "field V04._length (fldOffset=0x8)" P-INDEP
-;* V87 tmp82        [V87    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V88 tmp83        [V88    ] (  0,  0   )     int  ->  zero-ref    "field V06._length (fldOffset=0x8)" P-INDEP
-;* V89 tmp84        [V89    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-;* V90 tmp85        [V90    ] (  0,  0   )     int  ->  zero-ref    "field V08._length (fldOffset=0x8)" P-INDEP
-;* V91 tmp86        [V91    ] (  0,  0   )    long  ->  zero-ref    "field V09._lower (fldOffset=0x0)" P-INDEP
-;* V92 tmp87        [V92    ] (  0,  0   )    long  ->  zero-ref    "field V09._upper (fldOffset=0x8)" P-INDEP
-;* V93 tmp88        [V93    ] (  0,  0   )    long  ->  zero-ref    "field V10._lower (fldOffset=0x0)" P-INDEP
-;* V94 tmp89        [V94    ] (  0,  0   )    long  ->  zero-ref    "field V10._upper (fldOffset=0x8)" P-INDEP
-;* V95 tmp90        [V95    ] (  0,  0   )   byref  ->  zero-ref    "field V11._reference (fldOffset=0x0)" P-INDEP
-;* V96 tmp91        [V96    ] (  0,  0   )     int  ->  zero-ref    "field V11._length (fldOffset=0x8)" P-INDEP
-;* V97 tmp92        [V97    ] (  0,  0   )   byref  ->  zero-ref    "field V13._reference (fldOffset=0x0)" P-INDEP
-;* V98 tmp93        [V98    ] (  0,  0   )     int  ->  zero-ref    "field V13._length (fldOffset=0x8)" P-INDEP
-;  V99 tmp94        [V99,T29] (  3,  1.50)   byref  ->   r8         "field V18._reference (fldOffset=0x0)" P-INDEP
-;  V100 tmp95       [V100,T33] (  3,  1.50)     int  ->   r9         "field V18._length (fldOffset=0x8)" P-INDEP
-;  V101 tmp96       [V101,T19] (  7,  3.50)    long  ->  r12         "field V19._lower (fldOffset=0x0)" P-INDEP
-;  V102 tmp97       [V102,T20] (  7,  3.50)    long  ->  r15         "field V19._upper (fldOffset=0x8)" P-INDEP
-;* V103 tmp98       [V103    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V25._reference (fldOffset=0x0)" P-INDEP
-;* V104 tmp99       [V104    ] (  0,  0   )     int  ->  zero-ref    "field V25._length (fldOffset=0x8)" P-INDEP
-;  V105 tmp100      [V105,T34] (  3,  1.50)    long  ->  rax         "field V30._lower (fldOffset=0x0)" P-INDEP
-;  V106 tmp101      [V106,T36] (  1,  0.50)    long  ->  rdx         "field V30._upper (fldOffset=0x8)" P-INDEP
-;* V107 tmp102      [V107,T37] (  0,  0   )    long  ->  zero-ref    "field V33._lower (fldOffset=0x0)" P-INDEP
-;* V108 tmp103      [V108,T38] (  0,  0   )    long  ->  zero-ref    "field V33._upper (fldOffset=0x8)" P-INDEP
-;* V109 tmp104      [V109    ] (  0,  0   )    long  ->  zero-ref    "field V34._lower (fldOffset=0x0)" P-INDEP
-;* V110 tmp105      [V110    ] (  0,  0   )    long  ->  zero-ref    "field V34._upper (fldOffset=0x8)" P-INDEP
-;* V111 tmp106      [V111    ] (  0,  0   )    long  ->  zero-ref    "field V35._lower (fldOffset=0x0)" P-DEP
-;* V112 tmp107      [V112    ] (  0,  0   )    long  ->  zero-ref    "field V35._upper (fldOffset=0x8)" P-DEP
-;* V113 tmp108      [V113    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V36._reference (fldOffset=0x0)" P-INDEP
-;* V114 tmp109      [V114    ] (  0,  0   )     int  ->  zero-ref    "field V36._length (fldOffset=0x8)" P-INDEP
-;* V115 tmp110      [V115    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V40._reference (fldOffset=0x0)" P-INDEP
-;* V116 tmp111      [V116    ] (  0,  0   )     int  ->  zero-ref    "field V40._length (fldOffset=0x8)" P-INDEP
-;* V117 tmp112      [V117    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V43._reference (fldOffset=0x0)" P-INDEP
-;* V118 tmp113      [V118    ] (  0,  0   )     int  ->  zero-ref    "field V43._length (fldOffset=0x8)" P-INDEP
-;* V119 tmp114      [V119    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V46._reference (fldOffset=0x0)" P-INDEP
-;* V120 tmp115      [V120    ] (  0,  0   )     int  ->  zero-ref    "field V46._length (fldOffset=0x8)" P-INDEP
-;* V121 tmp116      [V121    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V47._reference (fldOffset=0x0)" P-INDEP
-;* V122 tmp117      [V122    ] (  0,  0   )     int  ->  zero-ref    "field V47._length (fldOffset=0x8)" P-INDEP
-;* V123 tmp118      [V123    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V51._reference (fldOffset=0x0)" P-INDEP
-;* V124 tmp119      [V124    ] (  0,  0   )     int  ->  zero-ref    "field V51._length (fldOffset=0x8)" P-INDEP
-;* V125 tmp120      [V125    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V54._reference (fldOffset=0x0)" P-INDEP
-;* V126 tmp121      [V126    ] (  0,  0   )     int  ->  zero-ref    "field V54._length (fldOffset=0x8)" P-INDEP
-;* V127 tmp122      [V127    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V57._reference (fldOffset=0x0)" P-INDEP
-;* V128 tmp123      [V128    ] (  0,  0   )     int  ->  zero-ref    "field V57._length (fldOffset=0x8)" P-INDEP
-;* V129 tmp124      [V129    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V59._reference (fldOffset=0x0)" P-INDEP
-;* V130 tmp125      [V130    ] (  0,  0   )     int  ->  zero-ref    "field V59._length (fldOffset=0x8)" P-INDEP
-;  V131 tmp126      [V131,T04] (  5, 13   )    long  ->  r12         "field V60._lower (fldOffset=0x0)" P-INDEP
-;  V132 tmp127      [V132,T01] (  6, 17   )    long  ->  r15         "field V60._upper (fldOffset=0x8)" P-INDEP
-;* V133 tmp128      [V133,T16] (  0,  0   )    long  ->  zero-ref    "field V62._lower (fldOffset=0x0)" P-INDEP
-;* V134 tmp129      [V134,T17] (  0,  0   )    long  ->  zero-ref    "field V62._upper (fldOffset=0x8)" P-INDEP
-;* V135 tmp130      [V135    ] (  0,  0   )    long  ->  zero-ref    "field V64._lower (fldOffset=0x0)" P-INDEP
-;* V136 tmp131      [V136    ] (  0,  0   )    long  ->  zero-ref    "field V64._upper (fldOffset=0x8)" P-INDEP
-;* V137 tmp132      [V137    ] (  0,  0   )    long  ->  zero-ref    "field V65._lower (fldOffset=0x0)" P-INDEP
-;* V138 tmp133      [V138    ] (  0,  0   )    long  ->  zero-ref    "field V65._upper (fldOffset=0x8)" P-INDEP
-;* V139 tmp134      [V139    ] (  0,  0   )    long  ->  zero-ref    "field V66._lower (fldOffset=0x0)" P-INDEP
-;* V140 tmp135      [V140    ] (  0,  0   )    long  ->  zero-ref    "field V66._upper (fldOffset=0x8)" P-INDEP
-;* V141 tmp136      [V141    ] (  0,  0   )    long  ->  zero-ref    "field V67._lower (fldOffset=0x0)" P-DEP
-;* V142 tmp137      [V142    ] (  0,  0   )    long  ->  zero-ref    "field V67._upper (fldOffset=0x8)" P-DEP
-;  V143 tmp138      [V143,T05] (  3, 12   )    long  ->  rbx         "field V68._lower (fldOffset=0x0)" P-INDEP
-;  V144 tmp139      [V144,T06] (  3, 12   )    long  ->  r14         "field V68._upper (fldOffset=0x8)" P-INDEP
-;* V145 tmp140      [V145    ] (  0,  0   )    long  ->  zero-ref    "field V69._lower (fldOffset=0x0)" P-INDEP
-;* V146 tmp141      [V146    ] (  0,  0   )    long  ->  zero-ref    "field V69._upper (fldOffset=0x8)" P-INDEP
-;  V147 tmp142      [V147,T08] (  2,  8   )    long  ->  rsi         "field V71._lower (fldOffset=0x0)" P-INDEP
-;  V148 tmp143      [V148,T18] (  1,  4   )    long  ->  rdx         "field V71._upper (fldOffset=0x8)" P-INDEP
-;  V149 tmp144      [V149,T09] (  2,  8   )    long  ->  rdx         "field V73._lower (fldOffset=0x0)" P-INDEP
-;  V150 tmp145      [V150,T10] (  2,  8   )    long  ->  rcx         "field V73._upper (fldOffset=0x8)" P-INDEP
-;* V151 tmp146      [V151    ] (  0,  0   )    long  ->  zero-ref    "V63.[000..008)"
-;* V152 tmp147      [V152    ] (  0,  0   )    long  ->  zero-ref    "V63.[008..016)"
-;* V153 tmp148      [V153    ] (  0,  0   )    long  ->  zero-ref    "V63.[016..024)"
-;* V154 tmp149      [V154    ] (  0,  0   )    long  ->  zero-ref    "V63.[024..032)"
-;* V155 tmp150      [V155    ] (  0,  0   )    long  ->  zero-ref    "V70.[000..008)"
-;* V156 tmp151      [V156    ] (  0,  0   )    long  ->  zero-ref    "V70.[008..016)"
-;* V157 tmp152      [V157    ] (  0,  0   )    long  ->  zero-ref    "V70.[016..024)"
-;* V158 tmp153      [V158    ] (  0,  0   )    long  ->  zero-ref    "V70.[024..032)"
-;  V159 tmp154      [V159,T28] (  2,  2   )    long  ->  r14         "Cast away GC"
+;  V70 tmp65        [V70,T08] (  2,  8   )    long  ->  rdi         ld-addr-op "Inline ldloca(s) first use temp"
+;* V71 tmp66        [V71    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.UInt128>
+;* V72 tmp67        [V72    ] (  0,  0   )    long  ->  zero-ref    "Inline return value spill temp"
+;* V73 tmp68        [V73    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V74 tmp69        [V74    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V75 tmp70        [V75    ] (  2,  8   )    long  ->  [rbp-0x58]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;  V76 tmp71        [V76,T03] (  2, 16   )    long  ->  rsi         "impAppendStmt"
+;* V77 tmp72        [V77    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V78 tmp73        [V78,T04] (  2, 16   )    long  ->  rsi         "Inlining Arg"
+;  V79 tmp74        [V79,T05] (  3, 12   )    long  ->  rdx         "Inline stloc first use temp"
+;  V80 tmp75        [V80,T09] (  2,  8   )    long  ->  rdi         "Inline stloc first use temp"
+;  V81 tmp76        [V81    ] (  4, 32   )  struct (16) [rbp-0x68]  do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op "NewObj constructor temp" <System.UInt128>
+;  V82 tmp77        [V82,T15] (  4,  2.50)   byref  ->  r14         single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+;  V83 tmp78        [V83,T16] (  3,  2   )     int  ->  r13         single-def "field V00._length (fldOffset=0x8)" P-INDEP
+;  V84 tmp79        [V84,T17] (  3,  2   )    long  ->  r12         single-def "field V01._lower (fldOffset=0x0)" P-INDEP
+;  V85 tmp80        [V85,T14] (  4,  3   )    long  ->  r15         single-def "field V01._upper (fldOffset=0x8)" P-INDEP
+;* V86 tmp81        [V86    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V04._reference (fldOffset=0x0)" P-INDEP
+;* V87 tmp82        [V87    ] (  0,  0   )     int  ->  zero-ref    "field V04._length (fldOffset=0x8)" P-INDEP
+;* V88 tmp83        [V88    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V06._reference (fldOffset=0x0)" P-INDEP
+;* V89 tmp84        [V89    ] (  0,  0   )     int  ->  zero-ref    "field V06._length (fldOffset=0x8)" P-INDEP
+;* V90 tmp85        [V90    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+;* V91 tmp86        [V91    ] (  0,  0   )     int  ->  zero-ref    "field V08._length (fldOffset=0x8)" P-INDEP
+;* V92 tmp87        [V92    ] (  0,  0   )    long  ->  zero-ref    "field V09._lower (fldOffset=0x0)" P-INDEP
+;* V93 tmp88        [V93    ] (  0,  0   )    long  ->  zero-ref    "field V09._upper (fldOffset=0x8)" P-INDEP
+;* V94 tmp89        [V94    ] (  0,  0   )    long  ->  zero-ref    "field V10._lower (fldOffset=0x0)" P-INDEP
+;* V95 tmp90        [V95    ] (  0,  0   )    long  ->  zero-ref    "field V10._upper (fldOffset=0x8)" P-INDEP
+;* V96 tmp91        [V96    ] (  0,  0   )   byref  ->  zero-ref    "field V11._reference (fldOffset=0x0)" P-INDEP
+;* V97 tmp92        [V97    ] (  0,  0   )     int  ->  zero-ref    "field V11._length (fldOffset=0x8)" P-INDEP
+;* V98 tmp93        [V98    ] (  0,  0   )   byref  ->  zero-ref    "field V13._reference (fldOffset=0x0)" P-INDEP
+;* V99 tmp94        [V99    ] (  0,  0   )     int  ->  zero-ref    "field V13._length (fldOffset=0x8)" P-INDEP
+;  V100 tmp95       [V100,T30] (  3,  1.50)   byref  ->   r8         "field V18._reference (fldOffset=0x0)" P-INDEP
+;  V101 tmp96       [V101,T34] (  3,  1.50)     int  ->   r9         "field V18._length (fldOffset=0x8)" P-INDEP
+;  V102 tmp97       [V102,T20] (  7,  3.50)    long  ->  r12         "field V19._lower (fldOffset=0x0)" P-INDEP
+;  V103 tmp98       [V103,T21] (  7,  3.50)    long  ->  r15         "field V19._upper (fldOffset=0x8)" P-INDEP
+;* V104 tmp99       [V104    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V25._reference (fldOffset=0x0)" P-INDEP
+;* V105 tmp100      [V105    ] (  0,  0   )     int  ->  zero-ref    "field V25._length (fldOffset=0x8)" P-INDEP
+;  V106 tmp101      [V106,T35] (  3,  1.50)    long  ->  rax         "field V30._lower (fldOffset=0x0)" P-INDEP
+;  V107 tmp102      [V107,T37] (  1,  0.50)    long  ->  rdx         "field V30._upper (fldOffset=0x8)" P-INDEP
+;* V108 tmp103      [V108,T38] (  0,  0   )    long  ->  zero-ref    "field V33._lower (fldOffset=0x0)" P-INDEP
+;* V109 tmp104      [V109,T39] (  0,  0   )    long  ->  zero-ref    "field V33._upper (fldOffset=0x8)" P-INDEP
+;* V110 tmp105      [V110    ] (  0,  0   )    long  ->  zero-ref    "field V34._lower (fldOffset=0x0)" P-INDEP
+;* V111 tmp106      [V111    ] (  0,  0   )    long  ->  zero-ref    "field V34._upper (fldOffset=0x8)" P-INDEP
+;* V112 tmp107      [V112    ] (  0,  0   )    long  ->  zero-ref    "field V35._lower (fldOffset=0x0)" P-DEP
+;* V113 tmp108      [V113    ] (  0,  0   )    long  ->  zero-ref    "field V35._upper (fldOffset=0x8)" P-DEP
+;* V114 tmp109      [V114    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V36._reference (fldOffset=0x0)" P-INDEP
+;* V115 tmp110      [V115    ] (  0,  0   )     int  ->  zero-ref    "field V36._length (fldOffset=0x8)" P-INDEP
+;* V116 tmp111      [V116    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V40._reference (fldOffset=0x0)" P-INDEP
+;* V117 tmp112      [V117    ] (  0,  0   )     int  ->  zero-ref    "field V40._length (fldOffset=0x8)" P-INDEP
+;* V118 tmp113      [V118    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V119 tmp114      [V119    ] (  0,  0   )     int  ->  zero-ref    "field V42._length (fldOffset=0x8)" P-INDEP
+;* V120 tmp115      [V120    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V45._reference (fldOffset=0x0)" P-INDEP
+;* V121 tmp116      [V121    ] (  0,  0   )     int  ->  zero-ref    "field V45._length (fldOffset=0x8)" P-INDEP
+;* V122 tmp117      [V122    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V46._reference (fldOffset=0x0)" P-INDEP
+;* V123 tmp118      [V123    ] (  0,  0   )     int  ->  zero-ref    "field V46._length (fldOffset=0x8)" P-INDEP
+;* V124 tmp119      [V124    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V50._reference (fldOffset=0x0)" P-INDEP
+;* V125 tmp120      [V125    ] (  0,  0   )     int  ->  zero-ref    "field V50._length (fldOffset=0x8)" P-INDEP
+;* V126 tmp121      [V126    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V52._reference (fldOffset=0x0)" P-INDEP
+;* V127 tmp122      [V127    ] (  0,  0   )     int  ->  zero-ref    "field V52._length (fldOffset=0x8)" P-INDEP
+;* V128 tmp123      [V128    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V55._reference (fldOffset=0x0)" P-INDEP
+;* V129 tmp124      [V129    ] (  0,  0   )     int  ->  zero-ref    "field V55._length (fldOffset=0x8)" P-INDEP
+;* V130 tmp125      [V130    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V57._reference (fldOffset=0x0)" P-INDEP
+;* V131 tmp126      [V131    ] (  0,  0   )     int  ->  zero-ref    "field V57._length (fldOffset=0x8)" P-INDEP
+;  V132 tmp127      [V132,T01] (  6, 17   )    long  ->  r12         "field V58._lower (fldOffset=0x0)" P-INDEP
+;  V133 tmp128      [V133,T02] (  6, 17   )    long  ->  r15         "field V58._upper (fldOffset=0x8)" P-INDEP
+;* V134 tmp129      [V134,T18] (  0,  0   )    long  ->  zero-ref    "field V60._lower (fldOffset=0x0)" P-INDEP
+;* V135 tmp130      [V135,T19] (  0,  0   )    long  ->  zero-ref    "field V60._upper (fldOffset=0x8)" P-INDEP
+;* V136 tmp131      [V136    ] (  0,  0   )    long  ->  zero-ref    "field V62._lower (fldOffset=0x0)" P-INDEP
+;* V137 tmp132      [V137    ] (  0,  0   )    long  ->  zero-ref    "field V62._upper (fldOffset=0x8)" P-INDEP
+;* V138 tmp133      [V138    ] (  0,  0   )    long  ->  zero-ref    "field V63._lower (fldOffset=0x0)" P-INDEP
+;* V139 tmp134      [V139    ] (  0,  0   )    long  ->  zero-ref    "field V63._upper (fldOffset=0x8)" P-INDEP
+;* V140 tmp135      [V140    ] (  0,  0   )    long  ->  zero-ref    "field V64._lower (fldOffset=0x0)" P-INDEP
+;* V141 tmp136      [V141    ] (  0,  0   )    long  ->  zero-ref    "field V64._upper (fldOffset=0x8)" P-INDEP
+;* V142 tmp137      [V142    ] (  0,  0   )    long  ->  zero-ref    "field V65._lower (fldOffset=0x0)" P-DEP
+;* V143 tmp138      [V143    ] (  0,  0   )    long  ->  zero-ref    "field V65._upper (fldOffset=0x8)" P-DEP
+;  V144 tmp139      [V144,T06] (  3, 12   )    long  ->  rbx         "field V66._lower (fldOffset=0x0)" P-INDEP
+;  V145 tmp140      [V145,T07] (  3, 12   )    long  ->  r14         "field V66._upper (fldOffset=0x8)" P-INDEP
+;* V146 tmp141      [V146    ] (  0,  0   )    long  ->  zero-ref    "field V67._lower (fldOffset=0x0)" P-INDEP
+;* V147 tmp142      [V147    ] (  0,  0   )    long  ->  zero-ref    "field V67._upper (fldOffset=0x8)" P-INDEP
+;* V148 tmp143      [V148    ] (  0,  0   )    long  ->  zero-ref    "field V69._lower (fldOffset=0x0)" P-INDEP
+;* V149 tmp144      [V149    ] (  0,  0   )    long  ->  zero-ref    "field V69._upper (fldOffset=0x8)" P-INDEP
+;* V150 tmp145      [V150    ] (  0,  0   )    long  ->  zero-ref    "field V71._lower (fldOffset=0x0)" P-INDEP
+;* V151 tmp146      [V151    ] (  0,  0   )    long  ->  zero-ref    "field V71._upper (fldOffset=0x8)" P-INDEP
+;  V152 tmp147      [V152    ] (  3, 20   )    long  ->  [rbp-0x68]  do-not-enreg[X] addr-exposed "field V81._lower (fldOffset=0x0)" P-DEP
+;  V153 tmp148      [V153    ] (  3, 20   )    long  ->  [rbp-0x60]  do-not-enreg[X] addr-exposed "field V81._upper (fldOffset=0x8)" P-DEP
+;  V154 tmp149      [V154,T10] (  2,  8   )    long  ->  r12         "V61.[000..008)"
+;  V155 tmp150      [V155,T11] (  2,  8   )    long  ->  r15         "V61.[008..016)"
+;  V156 tmp151      [V156,T12] (  2,  8   )    long  ->  rsi         "V61.[016..024)"
+;* V157 tmp152      [V157    ] (  0,  0   )    long  ->  zero-ref    "V61.[024..032)"
+;  V158 tmp153      [V158,T29] (  2,  2   )    long  ->  r14         "Cast away GC"
 ;
-; Lcl frame size = 56
+; Lcl frame size = 104
 
 G_M8095_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 56
-       lea      rbp, [rsp+0x60]
+       sub      rsp, 104
+       lea      rbp, [rsp+0x90]
        xor      eax, eax
        mov      qword ptr [rbp-0x30], rax
        mov      r14, rdi
        mov      r13d, esi
        mov      r12, rdx
        mov      r15, rcx
        mov      rbx, r8
-						;; size=40 bbWeight=1 PerfScore 9.25
+						;; size=43 bbWeight=1 PerfScore 9.25
 G_M8095_IG02:
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      rdi, gword ptr [rdi]
        test     r15, r15
        jl       G_M8095_IG14
 						;; size=22 bbWeight=1 PerfScore 3.50
 G_M8095_IG03:
        test     r15, r15
        je       G_M8095_IG06
        mov      edi, 20
        cmp      r15, 5
        ja       SHORT G_M8095_IG04
        cmp      r15, 5
        jne      SHORT G_M8095_IG05
        mov      rsi, 0xD1FFAB1E
        mov      edx, 21
        cmp      r12, rsi
        cmovae   edi, edx
        jmp      SHORT G_M8095_IG05
 						;; size=49 bbWeight=0.50 PerfScore 3.50
 G_M8095_IG04:
        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      rdx, 0xD1FFAB1E      ; static handle
        movzx    rdi, byte  ptr [rsi+rdx]
-       mov      esi, edi
-       mov      rdx, 0xD1FFAB1E      ; static handle
-       cmp      rax, qword ptr [rdx+8*rsi]
+       mov      rsi, 0xD1FFAB1E      ; static handle
+       cmp      rax, qword ptr [rsi+8*rdi]
        setb     sil
        movzx    rsi, sil
        sub      edi, esi
        add      edi, 20
-						;; size=95 bbWeight=0.50 PerfScore 7.38
+						;; size=93 bbWeight=0.50 PerfScore 7.25
 G_M8095_IG05:
        mov      esi, edi
        jmp      SHORT G_M8095_IG07
 						;; size=4 bbWeight=0.50 PerfScore 1.12
 G_M8095_IG06:
        mov      rsi, r12
        or       rsi, 1
        lzcnt    rsi, rsi
        xor      esi, 63
        movsxd   rsi, esi
        mov      rdx, 0xD1FFAB1E      ; static handle
        movzx    rsi, byte  ptr [rsi+rdx]
-       mov      edx, esi
-       mov      rdi, 0xD1FFAB1E      ; static handle
-       cmp      r12, qword ptr [rdi+8*rdx]
+       mov      rdx, 0xD1FFAB1E      ; static handle
+       cmp      r12, qword ptr [rdx+8*rsi]
        setb     dl
        movzx    rdx, dl
        sub      esi, edx
-						;; size=57 bbWeight=0.50 PerfScore 5.12
+						;; size=55 bbWeight=0.50 PerfScore 5.00
 G_M8095_IG07:
        mov      edx, -1
        test     esi, esi
        cmovge   edx, esi
        cmp      edx, r13d
        jle      SHORT G_M8095_IG08
        xor      edx, edx
        mov      dword ptr [rbx], edx
        jmp      G_M8095_IG13
 						;; size=24 bbWeight=0.50 PerfScore 2.62
 G_M8095_IG08:
        mov      dword ptr [rbx], edx
        mov      bword ptr [rbp-0x30], r14
        movsxd   rdi, edx
        add      rdi, r14
        mov      r13, rdi
        cmp      esi, -1
        jge      SHORT G_M8095_IG09
        mov      rsi, r12
        mov      rdx, r15
        mov      rdi, r13
        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
        jmp      G_M8095_IG12
 						;; size=51 bbWeight=0.50 PerfScore 5.12
 G_M8095_IG09:
        test     r15, r15
        je       G_M8095_IG11
 						;; size=9 bbWeight=0.50 PerfScore 0.62
 G_M8095_IG10:
        mov      rdi, r12
        mov      rsi, r15
        mov      rdx, 0xD1FFAB1E
        xor      ecx, ecx
        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      rbx, rax
        mov      r14, rdx
-       mov      rdi, 0xD1FFAB1E
-       lea      rsi, [rbp-0x38]
+       mov      rsi, 0xD1FFAB1E
+       lea      rdi, [rbp-0x58]
        mov      rdx, rbx
-       mulx     rdi, rcx, rdi
-       mov      qword ptr [rsi], rcx
-       mov      rsi, qword ptr [rbp-0x38]
-       mov      rdx, rsi
-       mov      rcx, 0xD1FFAB1E
-       imul     rcx, r14
-       add      rcx, rdi
-       mov      rdi, r12
+       mulx     rsi, rax, rsi
+       mov      qword ptr [rdi], rax
+       mov      rdi, qword ptr [rbp-0x58]
+       mov      rdx, 0xD1FFAB1E
+       imul     rdx, r14
+       add      rsi, rdx
+       mov      rdx, r12
+       sub      rdx, rdi
+       cmp      rdx, r12
+       seta     dil
+       movzx    rdi, dil
+       vxorps   xmm0, xmm0, xmm0
+       vmovups  xmmword ptr [rbp-0x68], xmm0
+       sub      r15, rsi
        mov      rsi, r15
-       mov      rax, 0xD1FFAB1E      ; code for System.UInt128:op_Subtraction(System.UInt128,System.UInt128):System.UInt128
-       call     [rax]System.UInt128:op_Subtraction(System.UInt128,System.UInt128):System.UInt128
-       mov      rsi, rax
-       mov      r12, rbx
-       mov      r15, r14
+       sub      rsi, rdi
+       lea      rdi, [rbp-0x68]
+       mov      rax, 0xD1FFAB1E      ; code for System.UInt128:.ctor(ulong,ulong):this
+       call     [rax]System.UInt128:.ctor(ulong,ulong):this
+       vxorps   ymm0, ymm0, ymm0
+       vmovdqu  ymmword ptr [rbp-0x50], ymm0
+       mov      rsi, rbx
+       mov      rdx, r14
+       mov      rcx, qword ptr [rbp-0x68]
+       mov      r8, qword ptr [rbp-0x60]
+       lea      rdi, [rbp-0x50]
+       mov      rax, 0xD1FFAB1E      ; code for System.ValueTuple`2[System.UInt128,System.UInt128]:.ctor(System.UInt128,System.UInt128):this
+       call     [rax]System.ValueTuple`2[System.UInt128,System.UInt128]:.ctor(System.UInt128,System.UInt128):this
+       mov      r12, qword ptr [rbp-0x50]
+       mov      r15, qword ptr [rbp-0x48]
+       mov      rsi, qword ptr [rbp-0x40]
        mov      rdi, r13
        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      r13, rax
        test     r15, r15
        jne      G_M8095_IG10
-						;; size=144 bbWeight=4 PerfScore 93.00
+						;; size=216 bbWeight=4 PerfScore 147.67
 G_M8095_IG11:
        mov      rdi, r13
        mov      rsi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.Number:UInt64ToDecChars[ubyte](ulong,ulong):ulong
        call     [rax]System.Number:UInt64ToDecChars[ubyte](ulong,ulong):ulong
 						;; size=18 bbWeight=0.50 PerfScore 1.88
 G_M8095_IG12:
        xor      edi, edi
        mov      bword ptr [rbp-0x30], rdi
 						;; size=6 bbWeight=0.50 PerfScore 0.62
 G_M8095_IG13:
        xor      rdi, rdi
        mov      bword ptr [rbp-0x30], rdi
        jmp      G_M8095_IG18
 						;; size=11 bbWeight=0.50 PerfScore 1.62
 G_M8095_IG14:
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|58_0(System.IFormatProvider):System.Globalization.NumberFormatInfo
        call     [rax]System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|58_0(System.IFormatProvider):System.Globalization.NumberFormatInfo
-       mov      gword ptr [rbp-0x40], rax
+       mov      gword ptr [rbp-0x70], rax
        mov      rcx, gword ptr [rax+0x98]
        test     rcx, rcx
        jne      SHORT G_M8095_IG15
        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-0x48], rcx
-       mov      rdi, gword ptr [rbp-0x40]
+       mov      gword ptr [rbp-0x78], rcx
+       mov      rdi, gword ptr [rbp-0x70]
        lea      rdi, bword ptr [rdi+0x98]
        mov      rsi, rcx
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rcx, gword ptr [rbp-0x48]
+       mov      rcx, gword ptr [rbp-0x78]
 						;; size=87 bbWeight=0.50 PerfScore 10.00
 G_M8095_IG15:
        test     rcx, rcx
        je       SHORT G_M8095_IG16
        lea      r8, bword ptr [rcx+0x10]
        mov      r9d, dword ptr [rcx+0x08]
        jmp      SHORT G_M8095_IG17
 						;; size=15 bbWeight=0.50 PerfScore 2.88
 G_M8095_IG16:
        xor      r8, r8
        xor      r9d, r9d
 						;; size=6 bbWeight=0.50 PerfScore 0.25
 G_M8095_IG17:
        mov      bword ptr [rsp], r14
        mov      dword ptr [rsp+0x08], r13d
        mov      rdi, r12
        mov      rsi, r15
        mov      rcx, r8
        mov      r8d, r9d
        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
 						;; size=41 bbWeight=0.50 PerfScore 3.38
 G_M8095_IG18:
        nop      
 						;; size=1 bbWeight=1 PerfScore 0.25
 G_M8095_IG19:
-       add      rsp, 56
+       add      rsp, 104
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 
-; Total bytes of code 695, prolog size 25, PerfScore 156.38, instruction count 175, allocated bytes for code 695 (MethodHash=adbbe060) for method System.Text.Json.Serialization.Converters.Int128Converter:Format(System.Span`1[ubyte],System.Int128,byref) (FullOpts)
+; Total bytes of code 766, prolog size 28, PerfScore 210.79, instruction count 190, allocated bytes for code 766 (MethodHash=adbbe060) for method System.Text.Json.Serialization.Converters.Int128Converter:Format(System.Span`1[ubyte],System.Int128,byref) (FullOpts)
 ; ============================================================
2 (1.60 % of base) - System.Half:op_Explicit(float):System.Half
 ; Assembly listing for method System.Half:op_Explicit(float):System.Half (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T05] ( 11, 11   )   float  ->  mm0        
 ;  V01 loc0         [V01,T03] (  2,  2   )     int  ->  rax        
-;  V02 loc1         [V02,T01] (  3,  3   )     int  ->  rcx        
+;* V02 loc1         [V02    ] (  0,  0   )     int  ->  zero-ref   
 ;* V03 loc2         [V03    ] (  0,  0   )     int  ->  zero-ref   
-;  V04 loc3         [V04,T02] (  3,  3   )     int  ->  rdx        
+;  V04 loc3         [V04,T01] (  3,  3   )     int  ->  rdx        
 ;* V05 loc4         [V05    ] (  0,  0   )     int  ->  zero-ref   
 ;* V06 loc5         [V06    ] (  0,  0   )     int  ->  zero-ref   
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V08 tmp1         [V08,T00] (  3,  6   )     int  ->  rdi         "dup spill"
-;* V09 tmp2         [V09    ] (  0,  0   )  ushort  ->  zero-ref    "Inlining Arg"
-;* V10 tmp3         [V10    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Half>
-;* V11 tmp4         [V11    ] (  0,  0   )  ushort  ->  zero-ref    "Inlining Arg"
-;  V12 tmp5         [V12,T04] (  2,  2   )  ushort  ->  rax         "field V10._value (fldOffset=0x0)" P-INDEP
+;  V08 tmp1         [V08,T02] (  3,  3   )     int  ->  rcx        
+;  V09 tmp2         [V09,T00] (  3,  6   )     int  ->  rdi         "dup spill"
+;* V10 tmp3         [V10    ] (  0,  0   )  ushort  ->  zero-ref    "Inlining Arg"
+;* V11 tmp4         [V11    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Half>
+;* V12 tmp5         [V12    ] (  0,  0   )  ushort  ->  zero-ref    "Inlining Arg"
+;  V13 tmp6         [V13,T04] (  2,  2   )  ushort  ->  rax         "field V11._value (fldOffset=0x0)" P-INDEP
 ;
 ; Lcl frame size = 0
 
 G_M62525_IG01:
        push     rbp
        mov      rbp, rsp
 						;; size=4 bbWeight=1 PerfScore 1.25
 G_M62525_IG02:
        vmovd    eax, xmm0
        and      eax, 0xD1FFAB1E
        shr      eax, 16
+       xor      ecx, ecx
+       mov      edx, -1
        vucomiss xmm0, xmm0
-       setp     cl
-       movzx    rcx, cl
-       dec      ecx
+       cmovnp   ecx, edx
        vandps   xmm0, xmm0, xmmword ptr [reloc @RWD00]
        vmovups  xmm1, xmmword ptr [reloc @RWD16]
        vminss   xmm0, xmm1, xmm0
        vmovups  xmm1, xmmword ptr [reloc @RWD32]
        vmaxss   xmm1, xmm1, xmm0
        vmovd    edx, xmm1
        and      edx, 0xD1FFAB1E
        add      edx, 0xD1FFAB1E
        vmovd    xmm1, edx
        vaddss   xmm0, xmm0, xmm1
        mov      edx, 0x7C00
        andn     edx, ecx, edx
        vmovd    edi, xmm0
        add      edi, 0xD1FFAB1E
        and      ecx, edi
        shr      edi, 13
        add      ecx, edi
        andn     ecx, edx, ecx
        or       ecx, edx
        or       eax, ecx
        movzx    rax, ax
-						;; size=119 bbWeight=1 PerfScore 33.00
+						;; size=121 bbWeight=1 PerfScore 32.25
 G_M62525_IG03:
        pop      rbp
        ret      
 						;; size=2 bbWeight=1 PerfScore 1.50
 RWD00  	dq	7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
 RWD16  	dq	00000000477FF000h, 0000000000000000h
 RWD32  	dq	0000000038800000h, 0000000000000000h
 
 
-; Total bytes of code 125, prolog size 4, PerfScore 35.75, instruction count 32, allocated bytes for code 125 (MethodHash=e1080bc2) for method System.Half:op_Explicit(float):System.Half (FullOpts)
+; Total bytes of code 127, prolog size 4, PerfScore 35.00, instruction count 32, allocated bytes for code 127 (MethodHash=e1080bc2) for method System.Half:op_Explicit(float):System.Half (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/c08b1f05ba84f6b1fbf660af5ee237d8

@MihuBot
Copy link
Owner Author

MihuBot commented Jan 2, 2025

Top method improvements

-822 (-68.16 % of base) - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this
 ; Assembly listing for method System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 26 single block inlinees; 24 inlinees without PGO data
+; 0 inlinees with PGO data; 31 single block inlinees; 24 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T22] (  3,  3   )     ref  ->  rdi         this class-hnd single-def <System.Text.Json.Utf8JsonWriter>
-;  V01 arg1         [V01,T23] (  3,  3   )    long  ->  rsi         single-def
+;  V00 this         [V00,T06] (  3,  3   )     ref  ->  rdi         this class-hnd single-def <System.Text.Json.Utf8JsonWriter>
+;  V01 arg1         [V01,T07] (  3,  3   )    long  ->  rsi         single-def
 ;* V02 loc0         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Span`1[ubyte]>
-;  V03 loc1         [V03    ] (  9,  5   )     int  ->  [rbp-0x50]  do-not-enreg[X] addr-exposed ld-addr-op ptr
+;  V03 loc1         [V03    ] (  4,  2.50)     int  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op ptr
 ;* V04 loc2         [V04    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Buffers.StandardFormat>
 ;  V05 OutArgs      [V05    ] (  1,  1   )  struct ( 8) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06    ] (  1,  1   )  struct (24) [rbp-0x48]  do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
+;  V06 tmp1         [V06    ] (  1,  1   )  struct (24) [rbp-0x30]  do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
 ;* V07 tmp2         [V07    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
 ;* V08 tmp3         [V08    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.Span`1[ubyte]>
 ;* V09 tmp4         [V09    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Span`1[ubyte]>
-;* V10 tmp5         [V10    ] (  0,  0   )  struct (16) zero-ref    multireg-arg multireg-ret "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
+;* V10 tmp5         [V10    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
 ;* V11 tmp6         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V12 tmp7         [V12    ] (  7, 10   )  struct ( 8) [rbp-0x58]  do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Buffers.StandardFormat>
-;  V13 tmp8         [V13,T25] (  7,  3.50)     int  ->  r12         "Inline stloc first use temp"
-;* V14 tmp9         [V14    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;  V15 tmp10        [V15,T35] (  2,  2   )     int  ->  rsi         "impAppendStmt"
-;  V16 tmp11        [V16,T36] (  2,  2   )     int  ->  rsi         "impAppendStmt"
+;* V12 tmp7         [V12    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Buffers.StandardFormat>
+;* V13 tmp8         [V13    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V14 tmp9         [V14    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V15 tmp10        [V15    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
+;* V16 tmp11        [V16    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
 ;* V17 tmp12        [V17    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;  V18 tmp13        [V18,T37] (  2,  2   )     int  ->  rsi         "impAppendStmt"
+;* V18 tmp13        [V18    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
 ;* V19 tmp14        [V19    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V20 tmp15        [V20,T29] (  4,  2   )     int  ->  rax         "Inline stloc first use temp"
+;  V20 tmp15        [V20,T10] (  4,  2   )     int  ->  rax         "Inline stloc first use temp"
 ;* V21 tmp16        [V21    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;  V22 tmp17        [V22    ] (  3,  1.50)   byref  ->  [rbp-0x60]  must-init pinned ptr "Inline stloc first use temp"
+;  V22 tmp17        [V22    ] (  3,  1.50)   byref  ->  [rbp-0x40]  must-init pinned ptr "Inline stloc first use temp"
 ;* V23 tmp18        [V23    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V24 tmp19        [V24    ] (  0,  0   )   byref  ->  zero-ref    "impAppendStmt"
-;  V25 tmp20        [V25,T44] (  3,  1.50)     int  ->  rax         "Inline stloc first use temp"
+;  V25 tmp20        [V25,T17] (  3,  1.50)    long  ->  rax         "Inline stloc first use temp"
 ;* V26 tmp21        [V26    ] (  0,  0   )  struct (16) zero-ref    "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[ulong]>
 ;* V27 tmp22        [V27    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V28 tmp23        [V28    ] (  0,  0   )   ubyte  ->  zero-ref    ld-addr-op "Inline stloc first use temp"
-;* V29 tmp24        [V29    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V30 tmp25        [V30    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V31 tmp26        [V31    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V32 tmp27        [V32    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
-;* V33 tmp28        [V33    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V34 tmp29        [V34    ] (  0,  0   )    long  ->  zero-ref    "Inline return value spill temp"
-;  V35 tmp30        [V35,T04] (  9, 37   )    long  ->  registers   ptr "Inlining Arg"
-;  V36 tmp31        [V36,T08] (  8, 29   )    long  ->   r8         "Inlining Arg"
-;  V37 tmp32        [V37,T38] (  2,  2   )    long  ->   r8         "dup spill"
-;* V38 tmp33        [V38    ] (  0,  0   )  struct (16) zero-ref    "dup spill" <System.ValueTuple`2[ulong,ulong]>
-;  V39 tmp34        [V39,T10] (  3, 12   )    long  ->  rdx         "Inline stloc first use temp"
-;* V40 tmp35        [V40    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[ulong,ulong]>
-;* V41 tmp36        [V41    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V42 tmp37        [V42    ] (  0,  0   )    long  ->  zero-ref   
-;* V43 tmp38        [V43    ] (  0,  0   )    long  ->  zero-ref    ptr
-;  V44 tmp39        [V44,T13] (  2,  8   )     ref  ->  rcx        
-;* V45 tmp40        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V46 tmp41        [V46    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
-;* V47 tmp42        [V47    ] (  0,  0   )    long  ->  zero-ref   
-;* V48 tmp43        [V48    ] (  0,  0   )    long  ->  zero-ref    ptr
-;  V49 tmp44        [V49,T47] (  2,  1   )     ref  ->  rdx         single-def
-;* V50 tmp45        [V50    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V51 tmp46        [V51    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
-;* V52 tmp47        [V52    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V53 tmp48        [V53,T28] (  5,  2.50)   ubyte  ->  r13         "Inline return value spill temp"
-;* V54 tmp49        [V54    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V55 tmp50        [V55,T30] (  4,  2   )     int  ->  rax         "Inline stloc first use temp"
-;* V56 tmp51        [V56    ] (  0,  0   )     int  ->  zero-ref    ptr "Inline stloc first use temp"
-;* V57 tmp52        [V57    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;  V58 tmp53        [V58    ] (  3,  1.50)   byref  ->  [rbp-0x68]  must-init pinned ptr "Inline stloc first use temp"
-;  V59 tmp54        [V59,T45] (  3,  1.50)    long  ->  r12         "Inline stloc first use temp"
-;* V60 tmp55        [V60    ] (  0,  0   )    long  ->  zero-ref   
-;* V61 tmp56        [V61    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;* V62 tmp57        [V62    ] (  0,  0   )   byref  ->  zero-ref    "impAppendStmt"
-;  V63 tmp58        [V63,T46] (  3,  1.50)     int  ->  rax         "Inline stloc first use temp"
-;* V64 tmp59        [V64    ] (  0,  0   )  struct (16) zero-ref    "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[ulong]>
-;* V65 tmp60        [V65    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
-;* V66 tmp61        [V66    ] (  0,  0   )   ubyte  ->  zero-ref    ld-addr-op "Inline stloc first use temp"
-;* V67 tmp62        [V67    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V68 tmp63        [V68    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V69 tmp64        [V69    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V70 tmp65        [V70    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
-;  V71 tmp66        [V71,T31] (  4,  2   )     int  ->  rdx         "Inline return value spill temp"
-;* V72 tmp67        [V72    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V73 tmp68        [V73    ] (  0,  0   )    long  ->  zero-ref    "Inline return value spill temp"
-;  V74 tmp69        [V74,T05] (  9, 37   )    long  ->  registers   ptr "Inlining Arg"
-;  V75 tmp70        [V75,T09] (  6, 27   )    long  ->   r8         "Inlining Arg"
-;* V76 tmp71        [V76    ] (  0,  0   )    long  ->  zero-ref    "dup spill"
-;* V77 tmp72        [V77    ] (  0,  0   )  struct (16) zero-ref    "dup spill" <System.ValueTuple`2[ulong,ulong]>
-;  V78 tmp73        [V78,T11] (  3, 12   )    long  ->  rdx         "Inline stloc first use temp"
-;* V79 tmp74        [V79    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[ulong,ulong]>
-;* V80 tmp75        [V80    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V81 tmp76        [V81    ] (  0,  0   )    long  ->  zero-ref   
-;* V82 tmp77        [V82    ] (  0,  0   )    long  ->  zero-ref    ptr
-;  V83 tmp78        [V83,T14] (  2,  8   )     ref  ->  rcx        
-;* V84 tmp79        [V84    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V85 tmp80        [V85    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
-;* V86 tmp81        [V86    ] (  0,  0   )    long  ->  zero-ref   
-;  V87 tmp82        [V87,T51] (  2,  1   )    long  ->   r8        
-;  V88 tmp83        [V88,T48] (  2,  1   )     ref  ->  rdx         single-def
-;* V89 tmp84        [V89    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V90 tmp85        [V90    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
-;* V91 tmp86        [V91    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V92 tmp87        [V92,T01] (  9,106   )    long  ->  registers   ptr "Inlining Arg"
-;  V93 tmp88        [V93,T00] (  7,121   )    long  ->  r12         "Inlining Arg"
-;  V94 tmp89        [V94,T02] (  6, 89   )     int  ->  r13         "Inlining Arg"
+;* V28 tmp23        [V28    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+;* V29 tmp24        [V29    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V30 tmp25        [V30    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V31 tmp26        [V31    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
+;* V32 tmp27        [V32    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V33 tmp28        [V33    ] (  0,  0   )    long  ->  zero-ref    "Inline return value spill temp"
+;  V34 tmp29        [V34,T00] (  9, 37   )    long  ->  registers   ptr "Inlining Arg"
+;  V35 tmp30        [V35,T01] (  8, 29   )    long  ->   r8         "Inlining Arg"
+;  V36 tmp31        [V36,T14] (  2,  2   )    long  ->   r8         "dup spill"
+;* V37 tmp32        [V37    ] (  0,  0   )  struct (16) zero-ref    "dup spill" <System.ValueTuple`2[ulong,ulong]>
+;  V38 tmp33        [V38,T02] (  3, 12   )    long  ->  rdx         "Inline stloc first use temp"
+;* V39 tmp34        [V39    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[ulong,ulong]>
+;* V40 tmp35        [V40    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V41 tmp36        [V41    ] (  0,  0   )    long  ->  zero-ref   
+;* V42 tmp37        [V42    ] (  0,  0   )    long  ->  zero-ref    ptr
+;  V43 tmp38        [V43,T03] (  2,  8   )     ref  ->  rdx        
+;* V44 tmp39        [V44    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;* V45 tmp40        [V45    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
+;* V46 tmp41        [V46    ] (  0,  0   )    long  ->  zero-ref   
+;* V47 tmp42        [V47    ] (  0,  0   )    long  ->  zero-ref    ptr
+;  V48 tmp43        [V48,T18] (  2,  1   )     ref  ->   r9         single-def
+;* V49 tmp44        [V49    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;* V50 tmp45        [V50    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
+;* V51 tmp46        [V51    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V52 tmp47        [V52    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V53 tmp48        [V53    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V54 tmp49        [V54    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V55 tmp50        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V56 tmp51        [V56    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V57 tmp52        [V57    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
+;* V58 tmp53        [V58    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V59 tmp54        [V59    ] (  0,  0   )    long  ->  zero-ref   
+;* V60 tmp55        [V60    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V61 tmp56        [V61    ] (  0,  0   )   byref  ->  zero-ref    "impAppendStmt"
+;* V62 tmp57        [V62    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V63 tmp58        [V63    ] (  0,  0   )  struct (16) zero-ref    "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[ulong]>
+;* V64 tmp59        [V64    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
+;* V65 tmp60        [V65    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+;* V66 tmp61        [V66    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V67 tmp62        [V67    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V68 tmp63        [V68    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
+;* V69 tmp64        [V69    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V70 tmp65        [V70    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V71 tmp66        [V71    ] (  0,  0   )    long  ->  zero-ref    "Inline return value spill temp"
+;* V72 tmp67        [V72    ] (  0,  0   )    long  ->  zero-ref    ptr "Inlining Arg"
+;* V73 tmp68        [V73    ] (  0,  0   )    long  ->  zero-ref    ptr "Inlining Arg"
+;* V74 tmp69        [V74    ] (  0,  0   )    long  ->  zero-ref    "dup spill"
+;* V75 tmp70        [V75    ] (  0,  0   )  struct (16) zero-ref    "dup spill" <System.ValueTuple`2[ulong,ulong]>
+;* V76 tmp71        [V76    ] (  0,  0   )    long  ->  zero-ref    ptr "Inline stloc first use temp"
+;* V77 tmp72        [V77    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[ulong,ulong]>
+;* V78 tmp73        [V78    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V79 tmp74        [V79    ] (  0,  0   )    long  ->  zero-ref   
+;* V80 tmp75        [V80    ] (  0,  0   )    long  ->  zero-ref    ptr
+;* V81 tmp76        [V81    ] (  0,  0   )     ref  ->  zero-ref    ptr
+;* V82 tmp77        [V82    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;* V83 tmp78        [V83    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
+;* V84 tmp79        [V84    ] (  0,  0   )    long  ->  zero-ref   
+;* V85 tmp80        [V85    ] (  0,  0   )    long  ->  zero-ref    ptr
+;* V86 tmp81        [V86    ] (  0,  0   )     ref  ->  zero-ref    ptr
+;* V87 tmp82        [V87    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;* V88 tmp83        [V88    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
+;* V89 tmp84        [V89    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V90 tmp85        [V90    ] (  0,  0   )    long  ->  zero-ref    ptr "Inlining Arg"
+;* V91 tmp86        [V91    ] (  0,  0   )    long  ->  zero-ref    ptr "Inlining Arg"
+;* V92 tmp87        [V92    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;* V93 tmp88        [V93    ] (  0,  0   )  struct (16) zero-ref    "dup spill" <System.ValueTuple`2[ulong,ulong]>
+;* V94 tmp89        [V94    ] (  0,  0   )    long  ->  zero-ref    ptr "Inline stloc first use temp"
 ;* V95 tmp90        [V95    ] (  0,  0   )  struct (16) zero-ref    "dup spill" <System.ValueTuple`2[ulong,ulong]>
-;* V96 tmp91        [V96    ] (  0,  0   )    long  ->  zero-ref    ptr "Inline stloc first use temp"
-;* V97 tmp92        [V97    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "dup spill" <System.ValueTuple`2[ulong,ulong]>
-;  V98 tmp93        [V98,T03] (  2, 64   )    long  ->  r12         "dup spill"
-;  V99 tmp94        [V99,T12] (  3, 12   )    long  ->  rdx         "Inline stloc first use temp"
-;* V100 tmp95       [V100    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[ulong,ulong]>
-;* V101 tmp96       [V101    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V102 tmp97       [V102    ] (  0,  0   )    long  ->  zero-ref   
-;* V103 tmp98       [V103    ] (  0,  0   )    long  ->  zero-ref    ptr
-;  V104 tmp99       [V104,T15] (  2,  8   )     ref  ->  rsi        
-;* V105 tmp100      [V105    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V106 tmp101      [V106    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
+;* V96 tmp91        [V96    ] (  0,  0   )    long  ->  zero-ref    ptr "dup spill"
+;* V97 tmp92        [V97    ] (  0,  0   )    long  ->  zero-ref    ptr "Inline stloc first use temp"
+;* V98 tmp93        [V98    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[ulong,ulong]>
+;* V99 tmp94        [V99    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V100 tmp95       [V100    ] (  0,  0   )    long  ->  zero-ref   
+;* V101 tmp96       [V101    ] (  0,  0   )    long  ->  zero-ref    ptr
+;* V102 tmp97       [V102    ] (  0,  0   )     ref  ->  zero-ref    ptr
+;* V103 tmp98       [V103    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;* V104 tmp99       [V104    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
+;* V105 tmp100      [V105    ] (  0,  0   )    long  ->  zero-ref    ptr "Inline stloc first use temp"
+;* V106 tmp101      [V106    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[ulong,ulong]>
 ;* V107 tmp102      [V107    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V108 tmp103      [V108,T39] (  2,  2   )  ushort  ->  r13         "Inlining Arg"
-;  V109 tmp104      [V109,T52] (  2,  1   )   ubyte  ->  rdx         "Inline return value spill temp"
-;  V110 tmp105      [V110,T21] (  3,  6   )     int  ->  rdx         "Inlining Arg"
-;  V111 tmp106      [V111    ] (  4,  8   )  struct (16) [rbp-0x78]  do-not-enreg[XSA] multireg-arg must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-;  V112 tmp107      [V112,T20] ( 10,  6   )   byref  ->  r14         single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V113 tmp108      [V113,T53] (  0,  0   )     int  ->  zero-ref    "field V02._length (fldOffset=0x8)" P-INDEP
-;* V114 tmp109      [V114    ] (  0,  0   )   ubyte  ->  zero-ref    "field V04._format (fldOffset=0x0)" P-INDEP
-;* V115 tmp110      [V115    ] (  0,  0   )   ubyte  ->  zero-ref    "field V04._precision (fldOffset=0x1)" P-INDEP
-;  V116 tmp111      [V116,T32] (  2,  2   )   byref  ->  r14         single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V117 tmp112      [V117,T54] (  0,  0   )     int  ->  zero-ref    "field V07._length (fldOffset=0x8)" P-INDEP
-;* V118 tmp113      [V118    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V08._reference (fldOffset=0x0)" P-INDEP
-;* V119 tmp114      [V119    ] (  0,  0   )     int  ->  zero-ref    "field V08._length (fldOffset=0x8)" P-INDEP
-;* V120 tmp115      [V120    ] (  0,  0   )   byref  ->  zero-ref    "field V09._reference (fldOffset=0x0)" P-INDEP
-;* V121 tmp116      [V121    ] (  0,  0   )     int  ->  zero-ref    "field V09._length (fldOffset=0x8)" P-INDEP
-;  V122 tmp117      [V122,T33] (  2,  2   )   byref  ->  rsi         "field V10._reference (fldOffset=0x0)" P-INDEP
-;  V123 tmp118      [V123,T40] (  2,  2   )     int  ->  rdx         "field V10._length (fldOffset=0x8)" P-INDEP
-;  V124 tmp119      [V124    ] (  4,  5   )   ubyte  ->  [rbp-0x58]  do-not-enreg[X] addr-exposed "field V12._format (fldOffset=0x0)" P-DEP
-;  V125 tmp120      [V125    ] (  6,  6   )   ubyte  ->  [rbp-0x57]  do-not-enreg[X] addr-exposed ptr "field V12._precision (fldOffset=0x1)" P-DEP
-;  V126 tmp121      [V126,T49] (  2,  1   )   byref  ->  rdx         single-def "field V14._reference (fldOffset=0x0)" P-INDEP
-;* V127 tmp122      [V127,T55] (  0,  0   )     int  ->  zero-ref    "field V14._length (fldOffset=0x8)" P-INDEP
-;  V128 tmp123      [V128,T50] (  2,  1   )   byref  ->  rdx         single-def "field V17._reference (fldOffset=0x0)" P-INDEP
-;* V129 tmp124      [V129,T56] (  0,  0   )     int  ->  zero-ref    "field V17._length (fldOffset=0x8)" P-INDEP
-;* V130 tmp125      [V130    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V21._reference (fldOffset=0x0)" P-INDEP
-;* V131 tmp126      [V131    ] (  0,  0   )     int  ->  zero-ref    "field V21._length (fldOffset=0x8)" P-INDEP
-;* V132 tmp127      [V132    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V23._reference (fldOffset=0x0)" P-INDEP
-;* V133 tmp128      [V133    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x8)" P-INDEP
-;* V134 tmp129      [V134    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V26._reference (fldOffset=0x0)" P-INDEP
-;* V135 tmp130      [V135    ] (  0,  0   )     int  ->  zero-ref    "field V26._length (fldOffset=0x8)" P-INDEP
-;* V136 tmp131      [V136    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V29._reference (fldOffset=0x0)" P-INDEP
-;* V137 tmp132      [V137    ] (  0,  0   )     int  ->  zero-ref    "field V29._length (fldOffset=0x8)" P-INDEP
-;* V138 tmp133      [V138    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V32._reference (fldOffset=0x0)" P-INDEP
-;* V139 tmp134      [V139    ] (  0,  0   )     int  ->  zero-ref    "field V32._length (fldOffset=0x8)" P-INDEP
-;* V140 tmp135      [V140    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V33._reference (fldOffset=0x0)" P-INDEP
-;* V141 tmp136      [V141    ] (  0,  0   )     int  ->  zero-ref    "field V33._length (fldOffset=0x8)" P-INDEP
-;* V142 tmp137      [V142    ] (  0,  0   )    long  ->  zero-ref    ptr "field V38.Item1 (fldOffset=0x0)" P-INDEP
-;* V143 tmp138      [V143    ] (  0,  0   )    long  ->  zero-ref    ptr "field V38.Item2 (fldOffset=0x8)" P-INDEP
-;* V144 tmp139      [V144    ] (  0,  0   )    long  ->  zero-ref    ptr "field V40.Item1 (fldOffset=0x0)" P-INDEP
-;  V145 tmp140      [V145,T16] (  2,  8   )    long  ->   r9         "field V40.Item2 (fldOffset=0x8)" P-INDEP
-;* V146 tmp141      [V146    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V57._reference (fldOffset=0x0)" P-INDEP
-;* V147 tmp142      [V147    ] (  0,  0   )     int  ->  zero-ref    "field V57._length (fldOffset=0x8)" P-INDEP
-;* V148 tmp143      [V148    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V61._reference (fldOffset=0x0)" P-INDEP
-;* V149 tmp144      [V149    ] (  0,  0   )     int  ->  zero-ref    "field V61._length (fldOffset=0x8)" P-INDEP
-;* V150 tmp145      [V150    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V64._reference (fldOffset=0x0)" P-INDEP
-;* V151 tmp146      [V151    ] (  0,  0   )     int  ->  zero-ref    "field V64._length (fldOffset=0x8)" P-INDEP
-;* V152 tmp147      [V152    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V67._reference (fldOffset=0x0)" P-INDEP
-;* V153 tmp148      [V153    ] (  0,  0   )     int  ->  zero-ref    "field V67._length (fldOffset=0x8)" P-INDEP
-;* V154 tmp149      [V154    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V70._reference (fldOffset=0x0)" P-INDEP
-;* V155 tmp150      [V155    ] (  0,  0   )     int  ->  zero-ref    "field V70._length (fldOffset=0x8)" P-INDEP
-;* V156 tmp151      [V156    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V72._reference (fldOffset=0x0)" P-INDEP
-;* V157 tmp152      [V157    ] (  0,  0   )     int  ->  zero-ref    "field V72._length (fldOffset=0x8)" P-INDEP
-;* V158 tmp153      [V158    ] (  0,  0   )    long  ->  zero-ref    ptr "field V77.Item1 (fldOffset=0x0)" P-INDEP
-;* V159 tmp154      [V159    ] (  0,  0   )    long  ->  zero-ref    ptr "field V77.Item2 (fldOffset=0x8)" P-INDEP
-;* V160 tmp155      [V160    ] (  0,  0   )    long  ->  zero-ref    ptr "field V79.Item1 (fldOffset=0x0)" P-INDEP
-;  V161 tmp156      [V161,T17] (  2,  8   )    long  ->   r9         "field V79.Item2 (fldOffset=0x8)" P-INDEP
-;* V162 tmp157      [V162    ] (  0,  0   )    long  ->  zero-ref    ptr "field V95.Item1 (fldOffset=0x0)" P-INDEP
-;* V163 tmp158      [V163    ] (  0,  0   )    long  ->  zero-ref    ptr "field V95.Item2 (fldOffset=0x8)" P-INDEP
-;  V164 tmp159      [V164,T06] (  2, 32   )    long  ->  rax         "field V97.Item1 (fldOffset=0x0)" P-INDEP
-;  V165 tmp160      [V165,T07] (  2, 32   )    long  ->  rdx         "field V97.Item2 (fldOffset=0x8)" P-INDEP
-;* V166 tmp161      [V166    ] (  0,  0   )    long  ->  zero-ref    ptr "field V100.Item1 (fldOffset=0x0)" P-INDEP
-;  V167 tmp162      [V167,T18] (  2,  8   )    long  ->  rdi         "field V100.Item2 (fldOffset=0x8)" P-INDEP
-;  V168 tmp163      [V168    ] (  3,  5   )   byref  ->  [rbp-0x78]  do-not-enreg[X] addr-exposed "field V111._reference (fldOffset=0x0)" P-DEP
-;  V169 tmp164      [V169    ] (  3,  5   )     int  ->  [rbp-0x70]  do-not-enreg[X] addr-exposed "field V111._length (fldOffset=0x8)" P-DEP
-;  V170 tmp165      [V170,T41] (  2,  2   )  struct ( 8) [rbp-0x80]  do-not-enreg[S] "by-value struct argument" <System.Buffers.StandardFormat>
-;  V171 tmp166      [V171,T42] (  2,  2   )    long  ->  r12         "Cast away GC"
-;  V172 tmp167      [V172,T43] (  2,  2   )    long  ->   r8         "Cast away GC"
-;  V173 GsCookie    [V173    ] (  1,  1   )    long  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V174 tmp169      [V174,T34] (  2,  2   )     ref  ->  r15         single-def "shadowVar"
-;  V175 tmp170      [V175,T19] ( 14,  7.50)    long  ->  rbx         "shadowVar"
-;  V176 cse0        [V176,T24] (  6,  4   )     int  ->  rdx         "CSE #01: conservative"
-;  V177 cse1        [V177,T27] (  4,  3   )     int  ->  r13         "CSE #04: conservative"
-;  V178 cse2        [V178,T26] (  6,  3   )     int  ->  r13         multi-def "CSE #05: conservative"
+;* V108 tmp103      [V108    ] (  0,  0   )  ushort  ->  zero-ref    "Inlining Arg"
+;* V109 tmp104      [V109    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;  V110 tmp105      [V110,T05] (  3,  6   )     int  ->  rdx         "Inlining Arg"
+;* V111 tmp106      [V111    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+;* V112 tmp107      [V112    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
+;* V113 tmp108      [V113    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V114 tmp109      [V114    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V115 tmp110      [V115    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "Inlining Arg"
+;* V116 tmp111      [V116    ] (  0,  0   )     int  ->  zero-ref    ptr "Inlining Arg"
+;  V117 tmp112      [V117,T09] (  5,  3.50)   byref  ->  r15         single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V118 tmp113      [V118,T20] (  0,  0   )     int  ->  zero-ref    "field V02._length (fldOffset=0x8)" P-INDEP
+;* V119 tmp114      [V119    ] (  0,  0   )   ubyte  ->  zero-ref    "field V04._format (fldOffset=0x0)" P-INDEP
+;* V120 tmp115      [V120    ] (  0,  0   )   ubyte  ->  zero-ref    "field V04._precision (fldOffset=0x1)" P-INDEP
+;  V121 tmp116      [V121,T11] (  2,  2   )   byref  ->  r15         single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V122 tmp117      [V122,T21] (  0,  0   )     int  ->  zero-ref    "field V07._length (fldOffset=0x8)" P-INDEP
+;* V123 tmp118      [V123    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V08._reference (fldOffset=0x0)" P-INDEP
+;* V124 tmp119      [V124    ] (  0,  0   )     int  ->  zero-ref    "field V08._length (fldOffset=0x8)" P-INDEP
+;* V125 tmp120      [V125    ] (  0,  0   )   byref  ->  zero-ref    "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V126 tmp121      [V126    ] (  0,  0   )     int  ->  zero-ref    "field V09._length (fldOffset=0x8)" P-INDEP
+;* V127 tmp122      [V127    ] (  0,  0   )   byref  ->  zero-ref    "field V10._reference (fldOffset=0x0)" P-INDEP
+;* V128 tmp123      [V128    ] (  0,  0   )     int  ->  zero-ref    "field V10._length (fldOffset=0x8)" P-INDEP
+;* V129 tmp124      [V129    ] (  0,  0   )   ubyte  ->  zero-ref    "field V12._format (fldOffset=0x0)" P-INDEP
+;* V130 tmp125      [V130    ] (  0,  0   )   ubyte  ->  zero-ref    "field V12._precision (fldOffset=0x1)" P-INDEP
+;* V131 tmp126      [V131    ] (  0,  0   )   byref  ->  zero-ref    "field V14._reference (fldOffset=0x0)" P-INDEP
+;* V132 tmp127      [V132    ] (  0,  0   )     int  ->  zero-ref    "field V14._length (fldOffset=0x8)" P-INDEP
+;  V133 tmp128      [V133,T19] (  2,  1   )   byref  ->  rdx         single-def "field V17._reference (fldOffset=0x0)" P-INDEP
+;* V134 tmp129      [V134,T22] (  0,  0   )     int  ->  zero-ref    "field V17._length (fldOffset=0x8)" P-INDEP
+;* V135 tmp130      [V135    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V21._reference (fldOffset=0x0)" P-INDEP
+;* V136 tmp131      [V136    ] (  0,  0   )     int  ->  zero-ref    "field V21._length (fldOffset=0x8)" P-INDEP
+;* V137 tmp132      [V137    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V23._reference (fldOffset=0x0)" P-INDEP
+;* V138 tmp133      [V138    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x8)" P-INDEP
+;* V139 tmp134      [V139    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V26._reference (fldOffset=0x0)" P-INDEP
+;* V140 tmp135      [V140    ] (  0,  0   )     int  ->  zero-ref    "field V26._length (fldOffset=0x8)" P-INDEP
+;* V141 tmp136      [V141    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V28._reference (fldOffset=0x0)" P-INDEP
+;* V142 tmp137      [V142    ] (  0,  0   )     int  ->  zero-ref    "field V28._length (fldOffset=0x8)" P-INDEP
+;* V143 tmp138      [V143    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V31._reference (fldOffset=0x0)" P-INDEP
+;* V144 tmp139      [V144    ] (  0,  0   )     int  ->  zero-ref    "field V31._length (fldOffset=0x8)" P-INDEP
+;* V145 tmp140      [V145    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V32._reference (fldOffset=0x0)" P-INDEP
+;* V146 tmp141      [V146    ] (  0,  0   )     int  ->  zero-ref    "field V32._length (fldOffset=0x8)" P-INDEP
+;* V147 tmp142      [V147    ] (  0,  0   )    long  ->  zero-ref    ptr "field V37.Item1 (fldOffset=0x0)" P-INDEP
+;* V148 tmp143      [V148    ] (  0,  0   )    long  ->  zero-ref    ptr "field V37.Item2 (fldOffset=0x8)" P-INDEP
+;* V149 tmp144      [V149    ] (  0,  0   )    long  ->  zero-ref    ptr "field V39.Item1 (fldOffset=0x0)" P-INDEP
+;  V150 tmp145      [V150,T04] (  2,  8   )    long  ->  rsi         "field V39.Item2 (fldOffset=0x8)" P-INDEP
+;* V151 tmp146      [V151    ] (  0,  0   )   byref  ->  zero-ref    "field V56._reference (fldOffset=0x0)" P-INDEP
+;* V152 tmp147      [V152    ] (  0,  0   )     int  ->  zero-ref    "field V56._length (fldOffset=0x8)" P-INDEP
+;* V153 tmp148      [V153    ] (  0,  0   )   byref  ->  zero-ref    "field V60._reference (fldOffset=0x0)" P-INDEP
+;* V154 tmp149      [V154    ] (  0,  0   )     int  ->  zero-ref    "field V60._length (fldOffset=0x8)" P-INDEP
+;* V155 tmp150      [V155    ] (  0,  0   )   byref  ->  zero-ref    "field V63._reference (fldOffset=0x0)" P-INDEP
+;* V156 tmp151      [V156    ] (  0,  0   )     int  ->  zero-ref    "field V63._length (fldOffset=0x8)" P-INDEP
+;* V157 tmp152      [V157    ] (  0,  0   )   byref  ->  zero-ref    "field V65._reference (fldOffset=0x0)" P-INDEP
+;* V158 tmp153      [V158    ] (  0,  0   )     int  ->  zero-ref    "field V65._length (fldOffset=0x8)" P-INDEP
+;* V159 tmp154      [V159    ] (  0,  0   )   byref  ->  zero-ref    "field V68._reference (fldOffset=0x0)" P-INDEP
+;* V160 tmp155      [V160    ] (  0,  0   )     int  ->  zero-ref    "field V68._length (fldOffset=0x8)" P-INDEP
+;* V161 tmp156      [V161    ] (  0,  0   )   byref  ->  zero-ref    "field V70._reference (fldOffset=0x0)" P-INDEP
+;* V162 tmp157      [V162    ] (  0,  0   )     int  ->  zero-ref    "field V70._length (fldOffset=0x8)" P-INDEP
+;* V163 tmp158      [V163    ] (  0,  0   )    long  ->  zero-ref    ptr "field V75.Item1 (fldOffset=0x0)" P-INDEP
+;* V164 tmp159      [V164    ] (  0,  0   )    long  ->  zero-ref    ptr "field V75.Item2 (fldOffset=0x8)" P-INDEP
+;* V165 tmp160      [V165    ] (  0,  0   )    long  ->  zero-ref    ptr "field V77.Item1 (fldOffset=0x0)" P-INDEP
+;* V166 tmp161      [V166    ] (  0,  0   )    long  ->  zero-ref    ptr "field V77.Item2 (fldOffset=0x8)" P-INDEP
+;* V167 tmp162      [V167    ] (  0,  0   )    long  ->  zero-ref    ptr "field V93.Item1 (fldOffset=0x0)" P-INDEP
+;* V168 tmp163      [V168    ] (  0,  0   )    long  ->  zero-ref    ptr "field V93.Item2 (fldOffset=0x8)" P-INDEP
+;* V169 tmp164      [V169    ] (  0,  0   )    long  ->  zero-ref    ptr "field V95.Item1 (fldOffset=0x0)" P-INDEP
+;* V170 tmp165      [V170    ] (  0,  0   )    long  ->  zero-ref    ptr "field V95.Item2 (fldOffset=0x8)" P-INDEP
+;* V171 tmp166      [V171    ] (  0,  0   )    long  ->  zero-ref    ptr "field V98.Item1 (fldOffset=0x0)" P-INDEP
+;* V172 tmp167      [V172    ] (  0,  0   )    long  ->  zero-ref    ptr "field V98.Item2 (fldOffset=0x8)" P-INDEP
+;* V173 tmp168      [V173    ] (  0,  0   )    long  ->  zero-ref    do-not-enreg[X] addr-exposed ptr "field V106.Item1 (fldOffset=0x0)" P-DEP
+;* V174 tmp169      [V174    ] (  0,  0   )    long  ->  zero-ref    do-not-enreg[X] addr-exposed ptr "field V106.Item2 (fldOffset=0x8)" P-DEP
+;* V175 tmp170      [V175    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V111._reference (fldOffset=0x0)" P-INDEP
+;* V176 tmp171      [V176    ] (  0,  0   )     int  ->  zero-ref    ptr "field V111._length (fldOffset=0x8)" P-INDEP
+;* V177 tmp172      [V177    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V113._reference (fldOffset=0x0)" P-INDEP
+;* V178 tmp173      [V178    ] (  0,  0   )     int  ->  zero-ref    ptr "field V113._length (fldOffset=0x8)" P-INDEP
+;  V179 tmp174      [V179,T12] (  2,  2   )   byref  ->  rsi         single-def "field V114._reference (fldOffset=0x0)" P-INDEP
+;  V180 tmp175      [V180,T15] (  2,  2   )     int  ->  rdx         "field V114._length (fldOffset=0x8)" P-INDEP
+;  V181 tmp176      [V181,T16] (  2,  2   )    long  ->   r8         "Cast away GC"
+;  V182 GsCookie    [V182    ] (  1,  1   )    long  ->  [rbp-0x18]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
+;  V183 tmp178      [V183,T13] (  2,  2   )     ref  ->  rbx         single-def "shadowVar"
+;  V184 tmp179      [V184,T08] (  6,  4   )    long  ->  rsi         "shadowVar"
 ;
-; Lcl frame size = 104
+; Lcl frame size = 64
 
 G_M40771_IG01:
        push     rbp
        push     r15
-       push     r14
-       push     r13
-       push     r12
        push     rbx
-       sub      rsp, 104
-       lea      rbp, [rsp+0x90]
+       sub      rsp, 64
+       lea      rbp, [rsp+0x50]
        xor      eax, eax
-       mov      qword ptr [rbp-0x78], rax
-       vxorps   xmm8, xmm8, xmm8
-       vmovdqa  xmmword ptr [rbp-0x70], xmm8
-       mov      qword ptr [rbp-0x60], rax
-       mov      qword ptr [rbp-0x30], 0xD1FFAB1E
-						;; size=50 bbWeight=1 PerfScore 12.33
+       mov      qword ptr [rbp-0x40], rax
+       mov      qword ptr [rbp-0x18], 0xD1FFAB1E
+						;; size=27 bbWeight=1 PerfScore 6.00
 G_M40771_IG02:
-       mov      rbx, rsi
-       mov      r15, rdi
-       lea      r14, [rbp-0x48]
-       mov      word  ptr [rbp-0x58], 0
-       movzx    r13, byte  ptr [rbp-0x58]
-       movzx    rdx, byte  ptr [rbp-0x57]
-       mov      r8d, r13d
-       or       r8d, edx
-       je       G_M40771_IG23
-						;; size=37 bbWeight=1 PerfScore 5.50
+       mov      rbx, rdi
+       lea      r15, [rbp-0x30]
+       test     rsi, rsi
+       jl       G_M40771_IG12
+						;; size=16 bbWeight=1 PerfScore 2.00
 G_M40771_IG03:
-       mov      r12d, r13d
-       or       r12d, 32
-       cmp      r12d, 103
-       jle      SHORT G_M40771_IG05
-       cmp      r12d, 110
-       jne      SHORT G_M40771_IG04
-       movzx    r8, word  ptr [rbp-0x58]
-       mov      word  ptr [rbp-0x80], r8w
-       movzx    r8, word  ptr [rbp-0x80]
-       mov      rsi, r14
-       mov      edx, 20
-       lea      rcx, [rbp-0x50]
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.Buffers.Text.FormattingHelpers:TryFormat[long](long,System.Span`1[ubyte],byref,System.Buffers.StandardFormat):ubyte
-       call     [rax]System.Buffers.Text.FormattingHelpers:TryFormat[long](long,System.Span`1[ubyte],byref,System.Buffers.StandardFormat):ubyte
-       jmp      G_M40771_IG33
-						;; size=66 bbWeight=0.50 PerfScore 6.25
-G_M40771_IG04:
-       cmp      r12d, 114
-       je       SHORT G_M40771_IG06
-       cmp      r12d, 120
-       jne      G_M40771_IG38
-       add      r13d, -33
-       movzx    rsi, r13w
-       xor      ecx, ecx
-       cmp      edx, 255
-       cmove    edx, ecx
-       mov      rcx, r14
-       mov      r8d, 20
-       lea      r9, [rbp-0x50]
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.Number:TryInt64ToHexStr[ubyte](long,ushort,int,System.Span`1[ubyte],byref):ubyte
-       call     [rax]System.Number:TryInt64ToHexStr[ubyte](long,ushort,int,System.Span`1[ubyte],byref):ubyte
-       jmp      G_M40771_IG33
-						;; size=68 bbWeight=0.50 PerfScore 5.12
-G_M40771_IG05:
-       cmp      r12d, 100
-       je       SHORT G_M40771_IG07
-       cmp      r12d, 103
-       jne      G_M40771_IG38
-						;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M40771_IG06:
-       lea      rdi, [rbp-0x58]
-       mov      rax, 0xD1FFAB1E      ; code for System.Buffers.StandardFormat:get_HasPrecision():ubyte:this
-       call     [rax]System.Buffers.StandardFormat:get_HasPrecision():ubyte:this
-       test     eax, eax
-       jne      G_M40771_IG37
-						;; size=24 bbWeight=0.50 PerfScore 2.50
-G_M40771_IG07:
-       test     rbx, rbx
-       jl       G_M40771_IG22
-       movzx    r13, byte  ptr [rbp-0x57]
-       xor      eax, eax
-       cmp      r13d, 255
-       cmove    r13d, eax
-       mov      rax, rbx
+       mov      rax, rsi
        or       rax, 1
        lzcnt    rax, rax
        xor      eax, 63
        cdqe     
        mov      rdx, 0xD1FFAB1E      ; static handle
        movzx    rax, byte  ptr [rax+rdx]
-       mov      edx, eax
-       mov      rdi, 0xD1FFAB1E      ; static handle
-       cmp      rbx, qword ptr [rdi+8*rdx]
-       setb     dl
-       movzx    rdx, dl
-       sub      eax, edx
-       cmp      r13d, eax
-       mov      edx, eax
-       cmovge   edx, r13d
-       cmp      edx, 20
-       jle      SHORT G_M40771_IG08
-       xor      edx, edx
-       mov      dword ptr [rbp-0x50], edx
-       jmp      SHORT G_M40771_IG13
-						;; size=103 bbWeight=0.50 PerfScore 9.25
-G_M40771_IG08:
-       mov      dword ptr [rbp-0x50], edx
-       mov      bword ptr [rbp-0x68], r14
-       mov      r12, r14
-       movsxd   rdx, edx
-       add      r12, rdx
-       cmp      r13d, eax
-       jle      G_M40771_IG16
-       mov      rdi, rbx
-       cmp      rdi, 100
-       jae      SHORT G_M40771_IG15
-						;; size=34 bbWeight=0.50 PerfScore 2.75
-G_M40771_IG09:
-       mov      rax, rdi
-       jmp      SHORT G_M40771_IG11
-       align    [0 bytes for IG17]
-						;; size=5 bbWeight=0.25 PerfScore 0.56
-G_M40771_IG10:
-       dec      r13d
-       mov      rdi, rax
-       mov      esi, 10
-       mov      rax, 0xD1FFAB1E      ; code for System.Math:DivRem(ulong,ulong):System.ValueTuple`2[ulong,ulong]
-       call     [rax]System.Math:DivRem(ulong,ulong):System.ValueTuple`2[ulong,ulong]
-       mov      rdi, rax
-       dec      r12
-       add      edx, 48
-       mov      byte  ptr [r12], dl
-       mov      rax, rdi
-						;; size=39 bbWeight=16 PerfScore 96.00
-G_M40771_IG11:
-       test     rax, rax
-       jne      SHORT G_M40771_IG10
-       test     r13d, r13d
-       jg       SHORT G_M40771_IG10
-						;; size=10 bbWeight=4 PerfScore 10.00
-G_M40771_IG12:
-       xor      r8d, r8d
-       mov      bword ptr [rbp-0x68], r8
-						;; size=7 bbWeight=0.50 PerfScore 0.62
-G_M40771_IG13:
-       xor      r8, r8
-       mov      bword ptr [rbp-0x68], r8
-       jmp      G_M40771_IG33
-						;; size=12 bbWeight=0.50 PerfScore 1.62
-G_M40771_IG14:
-       mov      rdi, rax
-						;; size=3 bbWeight=2 PerfScore 0.50
-G_M40771_IG15:
-       add      r12, -2
-       add      r13d, -2
-       mov      rdx, 0xD1FFAB1E
-       mov      rax, rdi
-       shr      rax, 2
-       mul      rdx:rax, rdx
-       shr      rdx, 2
-       imul     rsi, rdx, 100
-       sub      rdi, rsi
-       mov      rax, rdx
-       mov      rsi, 0xD1FFAB1E      ; const ptr
-       mov      rsi, gword ptr [rsi]
-       add      edi, edi
-       mov      di, word  ptr [rsi+rdi+0x10]
-       mov      word  ptr [r12], di
-       cmp      rax, 100
-       jae      SHORT G_M40771_IG14
-       jmp      SHORT G_M40771_IG11
-						;; size=75 bbWeight=4 PerfScore 65.00
-G_M40771_IG16:
-       mov      r8, r12
-       mov      r9, rbx
-       cmp      r9, 10
-       jb       SHORT G_M40771_IG20
-       jmp      SHORT G_M40771_IG18
-						;; size=14 bbWeight=0.50 PerfScore 1.88
-G_M40771_IG17:
-       add      r8, -2
-       mov      rdx, 0xD1FFAB1E
-       mov      rax, r9
-       shr      rax, 2
-       mul      rdx:rax, rdx
-       shr      rdx, 2
-       imul     rcx, rdx, 100
-       sub      r9, rcx
-       mov      rcx, 0xD1FFAB1E      ; const ptr
-       mov      rcx, gword ptr [rcx]
-       add      r9d, r9d
-       mov      r9w, word  ptr [rcx+r9+0x10]
-       mov      word  ptr [r8], r9w
-       mov      r9, rdx
-						;; size=64 bbWeight=4 PerfScore 51.00
-G_M40771_IG18:
-       cmp      r9, 100
-       jae      SHORT G_M40771_IG17
-						;; size=6 bbWeight=4 PerfScore 5.00
-G_M40771_IG19:
-       cmp      r9, 10
-       jae      SHORT G_M40771_IG21
-						;; size=6 bbWeight=0.50 PerfScore 0.62
-G_M40771_IG20:
-       add      r9d, 48
-       mov      byte  ptr [r8-0x01], r9b
-       jmp      G_M40771_IG12
-       align    [0 bytes for IG25]
-						;; size=13 bbWeight=0.50 PerfScore 1.62
-G_M40771_IG21:
-       add      r8, -2
-       mov      rdx, 0xD1FFAB1E      ; const ptr
-       mov      rdx, gword ptr [rdx]
-       add      r9d, r9d
-       mov      r9w, word  ptr [rdx+r9+0x10]
-       mov      word  ptr [r8], r9w
-       jmp      G_M40771_IG12
-						;; size=35 bbWeight=0.50 PerfScore 3.88
-G_M40771_IG22:
-       movzx    r13, byte  ptr [rbp-0x57]
-       xor      r8d, r8d
-       cmp      r13d, 255
-       mov      esi, r8d
-       cmovne   esi, r13d
        mov      rdx, 0xD1FFAB1E      ; static handle
-       lea      r8, [rbp-0x50]
-       mov      qword ptr [rsp], r8
-       mov      r8, r14
-       mov      r9d, 20
-       mov      ecx, 1
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.Number:TryNegativeInt64ToDecStr[ubyte](long,int,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte
-       call     [rax]System.Number:TryNegativeInt64ToDecStr[ubyte](long,int,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte
-       jmp      G_M40771_IG33
-						;; size=74 bbWeight=0.50 PerfScore 5.00
-G_M40771_IG23:
-       test     rbx, rbx
-       jl       G_M40771_IG32
-       mov      rax, rbx
-       or       rax, 1
-       lzcnt    rax, rax
-       xor      eax, 63
-       cdqe     
-       mov      rdx, 0xD1FFAB1E      ; static handle
-       movzx    rax, byte  ptr [rax+rdx]
-       mov      edx, eax
-       mov      r8, 0xD1FFAB1E      ; static handle
-       cmp      rbx, qword ptr [r8+8*rdx]
+       cmp      rsi, qword ptr [rdx+8*rax]
        setb     dl
        movzx    rdx, dl
        sub      eax, edx
        cmp      eax, 20
-       jle      SHORT G_M40771_IG24
+       jle      SHORT G_M40771_IG04
        xor      eax, eax
-       mov      dword ptr [rbp-0x50], eax
-       jmp      G_M40771_IG31
-						;; size=79 bbWeight=0.50 PerfScore 8.00
-G_M40771_IG24:
-       mov      dword ptr [rbp-0x50], eax
-       mov      bword ptr [rbp-0x60], r14
-       mov      r8, r14
+       mov      dword ptr [rbp-0x38], eax
+       jmp      G_M40771_IG11
+       align    [0 bytes for IG05]
+						;; size=68 bbWeight=0.50 PerfScore 7.25
+G_M40771_IG04:
+       mov      dword ptr [rbp-0x38], eax
+       mov      bword ptr [rbp-0x40], r15
+       mov      r8, r15
        movsxd   r9, eax
        add      r8, r9
-       mov      r9, rbx
-       cmp      r9, 10
-       jb       SHORT G_M40771_IG28
-       jmp      SHORT G_M40771_IG26
-						;; size=27 bbWeight=0.50 PerfScore 3.12
-G_M40771_IG25:
+       cmp      rsi, 10
+       jb       SHORT G_M40771_IG08
+       jmp      SHORT G_M40771_IG06
+						;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M40771_IG05:
        add      r8, -2
        mov      rdx, 0xD1FFAB1E
-       mov      rax, r9
+       mov      rax, rsi
        shr      rax, 2
        mul      rdx:rax, rdx
        shr      rdx, 2
-       imul     rcx, rdx, 100
-       sub      r9, rcx
-       mov      rcx, 0xD1FFAB1E      ; const ptr
-       mov      rcx, gword ptr [rcx]
-       add      r9d, r9d
-       mov      r9w, word  ptr [rcx+r9+0x10]
-       mov      word  ptr [r8], r9w
+       imul     r9, rdx, 100
+       sub      rsi, r9
        mov      r9, rdx
-						;; size=64 bbWeight=4 PerfScore 51.00
-G_M40771_IG26:
-       cmp      r9, 100
-       jae      SHORT G_M40771_IG25
-						;; size=6 bbWeight=4 PerfScore 5.00
-G_M40771_IG27:
-       cmp      r9, 10
-       jae      SHORT G_M40771_IG29
-						;; size=6 bbWeight=0.50 PerfScore 0.62
-G_M40771_IG28:
-       dec      r8
-       add      r9d, 48
-       mov      byte  ptr [r8], r9b
-       jmp      SHORT G_M40771_IG30
-						;; size=12 bbWeight=0.50 PerfScore 1.75
-G_M40771_IG29:
-       add      r8, -2
        mov      rdx, 0xD1FFAB1E      ; const ptr
        mov      rdx, gword ptr [rdx]
-       add      r9d, r9d
-       mov      r9w, word  ptr [rdx+r9+0x10]
+       add      esi, esi
+       mov      ecx, esi
+       mov      dx, word  ptr [rdx+rcx+0x10]
+       mov      word  ptr [r8], dx
+       mov      rsi, r9
+						;; size=67 bbWeight=4 PerfScore 53.00
+G_M40771_IG06:
+       cmp      rsi, 100
+       jae      SHORT G_M40771_IG05
+						;; size=6 bbWeight=4 PerfScore 5.00
+G_M40771_IG07:
+       cmp      rsi, 10
+       jae      SHORT G_M40771_IG09
+						;; size=6 bbWeight=0.50 PerfScore 0.62
+G_M40771_IG08:
+       dec      r8
+       add      esi, 48
+       mov      byte  ptr [r8], sil
+       jmp      SHORT G_M40771_IG10
+						;; size=11 bbWeight=0.50 PerfScore 1.75
+G_M40771_IG09:
+       add      r8, -2
+       mov      r9, 0xD1FFAB1E      ; const ptr
+       mov      r9, gword ptr [r9]
+       lea      edx, [rsi+rsi]
+       mov      r9w, word  ptr [r9+rdx+0x10]
        mov      word  ptr [r8], r9w
-						;; size=30 bbWeight=0.50 PerfScore 2.88
-G_M40771_IG30:
+						;; size=30 bbWeight=0.50 PerfScore 3.00
+G_M40771_IG10:
        xor      r8d, r8d
-       mov      bword ptr [rbp-0x60], r8
+       mov      bword ptr [rbp-0x40], r8
 						;; size=7 bbWeight=0.50 PerfScore 0.62
-G_M40771_IG31:
+G_M40771_IG11:
        xor      r8, r8
-       mov      bword ptr [rbp-0x60], r8
-       jmp      SHORT G_M40771_IG33
+       mov      bword ptr [rbp-0x40], r8
+       jmp      SHORT G_M40771_IG13
 						;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M40771_IG32:
-       xor      r8d, r8d
-       cmp      edx, 255
-       mov      esi, r8d
-       cmovne   esi, edx
+G_M40771_IG12:
        mov      rdx, 0xD1FFAB1E      ; static handle
-       lea      r8, [rbp-0x50]
+       lea      r8, [rbp-0x38]
        mov      qword ptr [rsp], r8
-       mov      r8, r14
+       mov      r8, r15
        mov      r9d, 20
        mov      ecx, 1
-       mov      rdi, rbx
+       mov      rdi, rsi
+       xor      esi, esi
        mov      rax, 0xD1FFAB1E      ; code for System.Number:TryNegativeInt64ToDecStr[ubyte](long,int,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte
        call     [rax]System.Number:TryNegativeInt64ToDecStr[ubyte](long,int,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte
-						;; size=62 bbWeight=0.50 PerfScore 3.50
-G_M40771_IG33:
-       mov      edx, dword ptr [rbp-0x50]
+						;; size=49 bbWeight=0.50 PerfScore 3.12
+G_M40771_IG13:
+       mov      edx, dword ptr [rbp-0x38]
        cmp      edx, 20
-       ja       SHORT G_M40771_IG39
-       vxorps   xmm0, xmm0, xmm0
-       vmovdqu  xmmword ptr [rbp-0x78], xmm0
-       lea      rdi, [rbp-0x78]
-       mov      rsi, r14
-       mov      rax, 0xD1FFAB1E      ; code for System.Span`1[ubyte]:.ctor(byref,int):this
-       call     [rax]System.Span`1[ubyte]:.ctor(byref,int):this
-       mov      rdi, bword ptr [rbp-0x78]
-       mov      esi, dword ptr [rbp-0x70]
-       mov      rax, 0xD1FFAB1E      ; code for System.Span`1[ubyte]:op_Implicit(System.Span`1[ubyte]):System.ReadOnlySpan`1[ubyte]
-       call     [rax]System.Span`1[ubyte]:op_Implicit(System.Span`1[ubyte]):System.ReadOnlySpan`1[ubyte]
-       mov      rsi, rax
-       mov      rdi, r15
+       ja       SHORT G_M40771_IG17
+       mov      rsi, r15
+       mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Text.Json.Utf8JsonWriter:WriteNumberValueAsStringUnescaped(System.ReadOnlySpan`1[ubyte]):this
        call     [rax]System.Text.Json.Utf8JsonWriter:WriteNumberValueAsStringUnescaped(System.ReadOnlySpan`1[ubyte]):this
-						;; size=73 bbWeight=1 PerfScore 16.58
-G_M40771_IG34:
-       cmp      qword ptr [rbp-0x30], 0xD1FFAB1E
-       je       SHORT G_M40771_IG35
+						;; size=26 bbWeight=1 PerfScore 6.00
+G_M40771_IG14:
+       cmp      qword ptr [rbp-0x18], 0xD1FFAB1E
+       je       SHORT G_M40771_IG15
        call     CORINFO_HELP_FAIL_FAST
 						;; size=15 bbWeight=1 PerfScore 4.00
-G_M40771_IG35:
+G_M40771_IG15:
        nop      
 						;; size=1 bbWeight=1 PerfScore 0.25
-G_M40771_IG36:
-       add      rsp, 104
+G_M40771_IG16:
+       add      rsp, 64
        pop      rbx
-       pop      r12
-       pop      r13
-       pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=15 bbWeight=1 PerfScore 4.25
-G_M40771_IG37:
-       mov      rax, 0xD1FFAB1E      ; code for System.Buffers.Text.Utf8Formatter:ThrowGWithPrecisionNotSupported()
-       call     [rax]System.Buffers.Text.Utf8Formatter:ThrowGWithPrecisionNotSupported()
-       int3     
-						;; size=13 bbWeight=0 PerfScore 0.00
-G_M40771_IG38:
-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowFormatException_BadFormatSpecifier()
-       call     [rax]System.ThrowHelper:ThrowFormatException_BadFormatSpecifier()
-       int3     
-						;; size=13 bbWeight=0 PerfScore 0.00
-G_M40771_IG39:
+						;; size=9 bbWeight=1 PerfScore 2.75
+G_M40771_IG17:
        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 1206, prolog size 50, PerfScore 391.48, instruction count 304, allocated bytes for code 1206 (MethodHash=8f8360bc) for method System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this (FullOpts)
+; Total bytes of code 384, prolog size 27, PerfScore 100.00, instruction count 102, allocated bytes for code 384 (MethodHash=8f8360bc) for method System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):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/c61b133ab2b179cf6f0cf8e038133a4a

@MihuBot
Copy link
Owner Author

MihuBot commented Jan 2, 2025

@xtqqczze

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

No branches or pull requests

1 participant