Skip to content

[JitDiff X64] [tannergooding] Remove the Number static constructor #2126

Open

Description

@MihuBot

Job completed in 22 minutes 8 seconds (remote runner delay: 1 minute 1 second).
dotnet/runtime#132550

Main commit: dotnet/runtime@cb8ddc8
PR commit: tannergooding/runtime@f8aa4ae

Diffs

Diffs
Found 139 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 158507068
Total bytes of diff: 158498769
Total bytes of delta: -8299 (-0.01 % of base)
Total relative delta: 0.94
    diff is an improvement.
    relative diff is a regression.


Total byte diff includes -8317 bytes from reconciling methods
	Base had   21 unique methods,    27054 unique bytes
	Diff had   48 unique methods,    18737 unique bytes

Top file regressions (bytes):
         450 : System.Runtime.Numerics.dasm (0.25 % of base)

Top file improvements (bytes):
       -8749 : System.Private.CoreLib.dasm (-0.11 % of base)

2 total files with Code Size differences (1 improved, 1 regressed), 352 unchanged.

Top method regressions (bytes):
        1679 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<FormatInt128>g__FormatInt128Slow|434_0(System.Int128,System.String,System.IFormatProvider):System.String (FullOpts) (0 base, 1 diff methods)
        1678 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<FormatUInt128>g__FormatUInt128Slow|436_0(System.UInt128,System.String,System.IFormatProvider):System.String (FullOpts) (0 base, 1 diff methods)
        1432 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatInt128>g__TryFormatInt128Slow|435_0[byte](System.Int128,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (0 base, 1 diff methods)
        1381 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatInt32>g__TryFormatInt32Slow|427_0[byte](int,int,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (0 base, 1 diff methods)
        1359 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatUInt128>g__TryFormatUInt128Slow|437_0[byte](System.UInt128,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (0 base, 1 diff methods)
        1300 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatInt64>g__TryFormatInt64Slow|431_0[byte](long,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (0 base, 1 diff methods)
        1288 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatUInt64>g__TryFormatUInt64Slow|433_0[byte](ulong,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (0 base, 1 diff methods)
        1236 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatUInt32>g__TryFormatUInt32Slow|429_0[byte](uint,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (0 base, 1 diff methods)
         921 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<FormatInt64>g__FormatInt64Slow|430_0(long,System.String,System.IFormatProvider):System.String (FullOpts) (0 base, 1 diff methods)
         915 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<FormatUInt64>g__FormatUInt64Slow|432_0(ulong,System.String,System.IFormatProvider):System.String (FullOpts) (0 base, 1 diff methods)
         903 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<FormatInt32>g__FormatInt32Slow|426_0(int,int,System.String,System.IFormatProvider):System.String (FullOpts) (0 base, 1 diff methods)
         893 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<FormatUInt32>g__FormatUInt32Slow|428_0(uint,System.String,System.IFormatProvider):System.String (FullOpts) (0 base, 1 diff methods)
         564 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:GetCurrencyFormat(bool,int):System.ReadOnlySpan`1[byte] (FullOpts) (0 base, 1 diff methods)
         564 (Infinity of base) : System.Runtime.Numerics.dasm - System.Number:GetCurrencyFormat(bool,int):System.ReadOnlySpan`1[byte] (FullOpts) (0 base, 1 diff methods)
         464 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:GetPercentFormat(bool,int):System.ReadOnlySpan`1[byte] (FullOpts) (0 base, 1 diff methods)
         464 (Infinity of base) : System.Runtime.Numerics.dasm - System.Number:GetPercentFormat(bool,int):System.ReadOnlySpan`1[byte] (FullOpts) (0 base, 1 diff methods)
         212 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<AppendUnknownChar>g__AppendNonAsciiBytes|575_0[byte](byref,char) (FullOpts) (0 base, 1 diff methods)
         200 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:GetNumberFormat(bool,int):System.ReadOnlySpan`1[byte] (FullOpts) (0 base, 1 diff methods)
         200 (Infinity of base) : System.Runtime.Numerics.dasm - System.Number:GetNumberFormat(bool,int):System.ReadOnlySpan`1[byte] (FullOpts) (0 base, 1 diff methods)
         176 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<GetFloatingPointMaxDigitsAndPrecision>g__Slow|419_0(char,byref,System.Globalization.NumberFormatInfo,byref):int (FullOpts) (0 base, 1 diff methods)
         165 (12.71 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128CosPi(byref):System.Number+DiyFp128 (FullOpts)
         135 (11.92 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128SinPi(byref):System.Number+DiyFp128 (FullOpts)
         127 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<RoundNumber>g__ShouldRoundUp|581_0(ptr,int,byte,bool):bool (FullOpts) (0 base, 1 diff methods)
         127 (Infinity of base) : System.Runtime.Numerics.dasm - System.Number:<RoundNumber>g__ShouldRoundUp|62_0(ptr,int,byte,bool):bool (FullOpts) (0 base, 1 diff methods)
          76 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<UInt32ToDecStrForKnownSmallNumber>g__CreateAndCacheString|455_0(uint):System.String (FullOpts) (0 base, 1 diff methods)
          75 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:GetInvTrigConstant(int):System.Number+DiyFp128 (FullOpts) (0 base, 1 diff methods)
          64 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:GetPiFractionConstant(int):System.Number+DiyFp128 (FullOpts) (0 base, 1 diff methods)
          45 (Infinity of base) : System.Private.CoreLib.dasm - System.Number+SmallNumberCache:.cctor() (FullOpts) (0 base, 1 diff methods)
          44 (146.67 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128TimesPi(byref):System.Number+DiyFp128 (FullOpts)
          34 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128FixedCoefficients(System.ReadOnlySpan`1[ulong]):System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          22 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_UxHalf():System.Number+DiyFp128 (FullOpts) (0 base, 1 diff methods)
          22 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_UxOne():System.Number+DiyFp128 (FullOpts) (0 base, 1 diff methods)
          22 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_UxQuarter():System.Number+DiyFp128 (FullOpts) (0 base, 1 diff methods)
          22 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_UxThreeQuarter():System.Number+DiyFp128 (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_Exp10Coefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_ExpCoefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_HyperCoshCoefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_HyperSinhCoefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_InvTrigAsinDenominatorCoefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_InvTrigAsinNumeratorCoefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_InvTrigAtanDenominatorCoefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_InvTrigAtanNumeratorCoefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_Log2Coefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_Pow2Coefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_PowLog2Coefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_SqrtCoefficientsAB():System.ReadOnlySpan`1[float] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_SqrtCoefficientsC():System.ReadOnlySpan`1[double] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_TrigCosCoefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_TrigSinCoefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_TrigTanDenominatorCoefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_TrigTanNumeratorCoefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)

Top method improvements (bytes):
      -10550 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:.cctor() (FullOpts) (1 base, 0 diff methods)
       -1679 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<FormatInt128>g__FormatInt128Slow|412_0(System.Int128,System.String,System.IFormatProvider):System.String (FullOpts) (1 base, 0 diff methods)
       -1678 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<FormatUInt128>g__FormatUInt128Slow|414_0(System.UInt128,System.String,System.IFormatProvider):System.String (FullOpts) (1 base, 0 diff methods)
       -1432 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatInt128>g__TryFormatInt128Slow|413_0[byte](System.Int128,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (1 base, 0 diff methods)
       -1381 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatInt32>g__TryFormatInt32Slow|405_0[byte](int,int,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (1 base, 0 diff methods)
       -1359 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatUInt128>g__TryFormatUInt128Slow|415_0[byte](System.UInt128,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (1 base, 0 diff methods)
       -1300 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatInt64>g__TryFormatInt64Slow|409_0[byte](long,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (1 base, 0 diff methods)
       -1288 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatUInt64>g__TryFormatUInt64Slow|411_0[byte](ulong,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (1 base, 0 diff methods)
       -1236 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatUInt32>g__TryFormatUInt32Slow|407_0[byte](uint,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (1 base, 0 diff methods)
        -921 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<FormatInt64>g__FormatInt64Slow|408_0(long,System.String,System.IFormatProvider):System.String (FullOpts) (1 base, 0 diff methods)
        -915 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<FormatUInt64>g__FormatUInt64Slow|410_0(ulong,System.String,System.IFormatProvider):System.String (FullOpts) (1 base, 0 diff methods)
        -903 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<FormatInt32>g__FormatInt32Slow|404_0(int,int,System.String,System.IFormatProvider):System.String (FullOpts) (1 base, 0 diff methods)
        -893 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<FormatUInt32>g__FormatUInt32Slow|406_0(uint,System.String,System.IFormatProvider):System.String (FullOpts) (1 base, 0 diff methods)
        -778 (-100.00 % of base) : System.Runtime.Numerics.dasm - System.Number:.cctor() (FullOpts)
        -212 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<AppendUnknownChar>g__AppendNonAsciiBytes|556_0[byte](byref,char) (FullOpts) (1 base, 0 diff methods)
        -176 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<GetFloatingPointMaxDigitsAndPrecision>g__Slow|397_0(char,byref,System.Globalization.NumberFormatInfo,byref):int (FullOpts) (1 base, 0 diff methods)
        -127 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<RoundNumber>g__ShouldRoundUp|562_0(ptr,int,byte,bool):bool (FullOpts) (1 base, 0 diff methods)
        -127 (-100.00 % of base) : System.Runtime.Numerics.dasm - System.Number:<RoundNumber>g__ShouldRoundUp|65_0(ptr,int,byte,bool):bool (FullOpts) (1 base, 0 diff methods)
         -76 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<UInt32ToDecStrForKnownSmallNumber>g__CreateAndCacheString|433_0(uint):System.String (FullOpts) (1 base, 0 diff methods)
         -31 (-6.72 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128SinCos(byref,int,int,System.Span`1[System.Number+DiyFp128]) (FullOpts)
         -29 (-3.01 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128Atan2(System.Number+DiyFp128,System.Number+DiyFp128,bool):System.Number+DiyFp128 (FullOpts)
         -28 (-6.05 % of base) : System.Private.CoreLib.dasm - System.Number:FormatNumber[byte](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
         -27 (-3.72 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128AsinAcos(System.Number+DiyFp128,bool):System.Number+DiyFp128 (FullOpts)
         -25 (-4.22 % of base) : System.Private.CoreLib.dasm - System.Number:FormatCurrency[byte](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
         -25 (-4.20 % of base) : System.Private.CoreLib.dasm - System.Number:FormatPercent[byte](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
         -24 (-2.65 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128Sqrt(System.Number+DiyFp128):System.Number+DiyFp128 (FullOpts)
         -23 (-3.73 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128Log(System.Number+DiyFp128,bool,byref):System.Number+DiyFp128 (FullOpts)
         -19 (-3.11 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128Log1p(System.Number+DiyFp128,bool,byref):System.Number+DiyFp128 (FullOpts)
         -19 (-5.60 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128Tan(byref):System.Number+DiyFp128 (FullOpts)
         -15 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number+SqrtCoefficients:.ctor(float,float,double):this (FullOpts) (1 base, 0 diff methods)
         -14 (-8.00 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128EvaluatePow2Polynomial(byref,byref) (FullOpts)
         -14 (-2.61 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128Hyperbolic(byref,int,int,int,System.Span`1[System.Number+DiyFp128]) (FullOpts)
         -13 (-4.64 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128LogPoly(byref):System.Number+DiyFp128 (FullOpts)
          -8 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number+DiyFp128FixedCoefficient:.ctor(ulong,ulong):this (FullOpts) (1 base, 0 diff methods)
          -7 (-4.46 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128EvaluatePowLog2Polynomial(byref,byref) (FullOpts)
          -7 (-2.37 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128Exp(byref):System.Number+DiyFp128 (FullOpts)
          -7 (-2.34 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128Exp10(byref):System.Number+DiyFp128 (FullOpts)
          -7 (-4.96 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128Exp10M1(byref):System.Number+DiyFp128 (FullOpts)
          -7 (-5.07 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128ExpM1(byref):System.Number+DiyFp128 (FullOpts)

Top method regressions (percentages):
         212 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<AppendUnknownChar>g__AppendNonAsciiBytes|575_0[byte](byref,char) (FullOpts) (0 base, 1 diff methods)
        1679 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<FormatInt128>g__FormatInt128Slow|434_0(System.Int128,System.String,System.IFormatProvider):System.String (FullOpts) (0 base, 1 diff methods)
         903 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<FormatInt32>g__FormatInt32Slow|426_0(int,int,System.String,System.IFormatProvider):System.String (FullOpts) (0 base, 1 diff methods)
         921 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<FormatInt64>g__FormatInt64Slow|430_0(long,System.String,System.IFormatProvider):System.String (FullOpts) (0 base, 1 diff methods)
        1678 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<FormatUInt128>g__FormatUInt128Slow|436_0(System.UInt128,System.String,System.IFormatProvider):System.String (FullOpts) (0 base, 1 diff methods)
         893 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<FormatUInt32>g__FormatUInt32Slow|428_0(uint,System.String,System.IFormatProvider):System.String (FullOpts) (0 base, 1 diff methods)
         915 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<FormatUInt64>g__FormatUInt64Slow|432_0(ulong,System.String,System.IFormatProvider):System.String (FullOpts) (0 base, 1 diff methods)
         176 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<GetFloatingPointMaxDigitsAndPrecision>g__Slow|419_0(char,byref,System.Globalization.NumberFormatInfo,byref):int (FullOpts) (0 base, 1 diff methods)
         127 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<RoundNumber>g__ShouldRoundUp|581_0(ptr,int,byte,bool):bool (FullOpts) (0 base, 1 diff methods)
         127 (Infinity of base) : System.Runtime.Numerics.dasm - System.Number:<RoundNumber>g__ShouldRoundUp|62_0(ptr,int,byte,bool):bool (FullOpts) (0 base, 1 diff methods)
        1432 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatInt128>g__TryFormatInt128Slow|435_0[byte](System.Int128,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (0 base, 1 diff methods)
        1381 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatInt32>g__TryFormatInt32Slow|427_0[byte](int,int,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (0 base, 1 diff methods)
        1300 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatInt64>g__TryFormatInt64Slow|431_0[byte](long,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (0 base, 1 diff methods)
        1359 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatUInt128>g__TryFormatUInt128Slow|437_0[byte](System.UInt128,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (0 base, 1 diff methods)
        1236 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatUInt32>g__TryFormatUInt32Slow|429_0[byte](uint,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (0 base, 1 diff methods)
        1288 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatUInt64>g__TryFormatUInt64Slow|433_0[byte](ulong,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (0 base, 1 diff methods)
          76 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:<UInt32ToDecStrForKnownSmallNumber>g__CreateAndCacheString|455_0(uint):System.String (FullOpts) (0 base, 1 diff methods)
          34 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128FixedCoefficients(System.ReadOnlySpan`1[ulong]):System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_Exp10Coefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_ExpCoefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_HyperCoshCoefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_HyperSinhCoefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_InvTrigAsinDenominatorCoefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_InvTrigAsinNumeratorCoefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_InvTrigAtanDenominatorCoefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_InvTrigAtanNumeratorCoefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_Log2Coefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_Pow2Coefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_PowLog2Coefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_SqrtCoefficientsAB():System.ReadOnlySpan`1[float] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_SqrtCoefficientsC():System.ReadOnlySpan`1[double] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_TrigCosCoefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_TrigSinCoefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_TrigTanDenominatorCoefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          16 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_TrigTanNumeratorCoefficients():System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient] (FullOpts) (0 base, 1 diff methods)
          22 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_UxHalf():System.Number+DiyFp128 (FullOpts) (0 base, 1 diff methods)
          22 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_UxOne():System.Number+DiyFp128 (FullOpts) (0 base, 1 diff methods)
          22 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_UxQuarter():System.Number+DiyFp128 (FullOpts) (0 base, 1 diff methods)
          22 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:get_UxThreeQuarter():System.Number+DiyFp128 (FullOpts) (0 base, 1 diff methods)
         564 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:GetCurrencyFormat(bool,int):System.ReadOnlySpan`1[byte] (FullOpts) (0 base, 1 diff methods)
         564 (Infinity of base) : System.Runtime.Numerics.dasm - System.Number:GetCurrencyFormat(bool,int):System.ReadOnlySpan`1[byte] (FullOpts) (0 base, 1 diff methods)
          75 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:GetInvTrigConstant(int):System.Number+DiyFp128 (FullOpts) (0 base, 1 diff methods)
         200 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:GetNumberFormat(bool,int):System.ReadOnlySpan`1[byte] (FullOpts) (0 base, 1 diff methods)
         200 (Infinity of base) : System.Runtime.Numerics.dasm - System.Number:GetNumberFormat(bool,int):System.ReadOnlySpan`1[byte] (FullOpts) (0 base, 1 diff methods)
         464 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:GetPercentFormat(bool,int):System.ReadOnlySpan`1[byte] (FullOpts) (0 base, 1 diff methods)
         464 (Infinity of base) : System.Runtime.Numerics.dasm - System.Number:GetPercentFormat(bool,int):System.ReadOnlySpan`1[byte] (FullOpts) (0 base, 1 diff methods)
          64 (Infinity of base) : System.Private.CoreLib.dasm - System.Number:GetPiFractionConstant(int):System.Number+DiyFp128 (FullOpts) (0 base, 1 diff methods)
          45 (Infinity of base) : System.Private.CoreLib.dasm - System.Number+SmallNumberCache:.cctor() (FullOpts) (0 base, 1 diff methods)
          44 (146.67 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128TimesPi(byref):System.Number+DiyFp128 (FullOpts)
         165 (12.71 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128CosPi(byref):System.Number+DiyFp128 (FullOpts)
         135 (11.92 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128SinPi(byref):System.Number+DiyFp128 (FullOpts)

Top method improvements (percentages):
      -10550 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:.cctor() (FullOpts) (1 base, 0 diff methods)
        -778 (-100.00 % of base) : System.Runtime.Numerics.dasm - System.Number:.cctor() (FullOpts)
        -212 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<AppendUnknownChar>g__AppendNonAsciiBytes|556_0[byte](byref,char) (FullOpts) (1 base, 0 diff methods)
       -1679 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<FormatInt128>g__FormatInt128Slow|412_0(System.Int128,System.String,System.IFormatProvider):System.String (FullOpts) (1 base, 0 diff methods)
        -903 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<FormatInt32>g__FormatInt32Slow|404_0(int,int,System.String,System.IFormatProvider):System.String (FullOpts) (1 base, 0 diff methods)
        -921 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<FormatInt64>g__FormatInt64Slow|408_0(long,System.String,System.IFormatProvider):System.String (FullOpts) (1 base, 0 diff methods)
       -1678 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<FormatUInt128>g__FormatUInt128Slow|414_0(System.UInt128,System.String,System.IFormatProvider):System.String (FullOpts) (1 base, 0 diff methods)
        -893 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<FormatUInt32>g__FormatUInt32Slow|406_0(uint,System.String,System.IFormatProvider):System.String (FullOpts) (1 base, 0 diff methods)
        -915 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<FormatUInt64>g__FormatUInt64Slow|410_0(ulong,System.String,System.IFormatProvider):System.String (FullOpts) (1 base, 0 diff methods)
        -176 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<GetFloatingPointMaxDigitsAndPrecision>g__Slow|397_0(char,byref,System.Globalization.NumberFormatInfo,byref):int (FullOpts) (1 base, 0 diff methods)
        -127 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<RoundNumber>g__ShouldRoundUp|562_0(ptr,int,byte,bool):bool (FullOpts) (1 base, 0 diff methods)
        -127 (-100.00 % of base) : System.Runtime.Numerics.dasm - System.Number:<RoundNumber>g__ShouldRoundUp|65_0(ptr,int,byte,bool):bool (FullOpts) (1 base, 0 diff methods)
       -1432 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatInt128>g__TryFormatInt128Slow|413_0[byte](System.Int128,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (1 base, 0 diff methods)
       -1381 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatInt32>g__TryFormatInt32Slow|405_0[byte](int,int,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (1 base, 0 diff methods)
       -1300 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatInt64>g__TryFormatInt64Slow|409_0[byte](long,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (1 base, 0 diff methods)
       -1359 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatUInt128>g__TryFormatUInt128Slow|415_0[byte](System.UInt128,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (1 base, 0 diff methods)
       -1236 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatUInt32>g__TryFormatUInt32Slow|407_0[byte](uint,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (1 base, 0 diff methods)
       -1288 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<TryFormatUInt64>g__TryFormatUInt64Slow|411_0[byte](ulong,System.ReadOnlySpan`1[char],System.IFormatProvider,System.Span`1[byte],byref):bool (FullOpts) (1 base, 0 diff methods)
         -76 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number:<UInt32ToDecStrForKnownSmallNumber>g__CreateAndCacheString|433_0(uint):System.String (FullOpts) (1 base, 0 diff methods)
          -8 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number+DiyFp128FixedCoefficient:.ctor(ulong,ulong):this (FullOpts) (1 base, 0 diff methods)
         -15 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Number+SqrtCoefficients:.ctor(float,float,double):this (FullOpts) (1 base, 0 diff methods)
         -14 (-8.00 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128EvaluatePow2Polynomial(byref,byref) (FullOpts)
         -31 (-6.72 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128SinCos(byref,int,int,System.Span`1[System.Number+DiyFp128]) (FullOpts)
         -28 (-6.05 % of base) : System.Private.CoreLib.dasm - System.Number:FormatNumber[byte](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
         -19 (-5.60 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128Tan(byref):System.Number+DiyFp128 (FullOpts)
          -7 (-5.07 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128ExpM1(byref):System.Number+DiyFp128 (FullOpts)
          -7 (-4.96 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128Exp10M1(byref):System.Number+DiyFp128 (FullOpts)
         -13 (-4.64 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128LogPoly(byref):System.Number+DiyFp128 (FullOpts)
          -7 (-4.46 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128EvaluatePowLog2Polynomial(byref,byref) (FullOpts)
         -25 (-4.22 % of base) : System.Private.CoreLib.dasm - System.Number:FormatCurrency[byte](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
         -25 (-4.20 % of base) : System.Private.CoreLib.dasm - System.Number:FormatPercent[byte](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
         -23 (-3.73 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128Log(System.Number+DiyFp128,bool,byref):System.Number+DiyFp128 (FullOpts)
         -27 (-3.72 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128AsinAcos(System.Number+DiyFp128,bool):System.Number+DiyFp128 (FullOpts)
         -19 (-3.11 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128Log1p(System.Number+DiyFp128,bool,byref):System.Number+DiyFp128 (FullOpts)
         -29 (-3.01 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128Atan2(System.Number+DiyFp128,System.Number+DiyFp128,bool):System.Number+DiyFp128 (FullOpts)
         -24 (-2.65 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128Sqrt(System.Number+DiyFp128):System.Number+DiyFp128 (FullOpts)
         -14 (-2.61 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128Hyperbolic(byref,int,int,int,System.Span`1[System.Number+DiyFp128]) (FullOpts)
          -7 (-2.37 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128Exp(byref):System.Number+DiyFp128 (FullOpts)
          -7 (-2.34 % of base) : System.Private.CoreLib.dasm - System.Number:DiyFp128Exp10(byref):System.Number+DiyFp128 (FullOpts)

90 total methods with Code Size differences (39 improved, 51 regressed), 817055 unchanged.

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

Artifacts:

Activity

  1. MihuBot commented on Aug 20, 2026

    @MihuBot
    OwnerAuthor

    Top method regressions

    165 (12.71 % of base) - System.Number:DiyFp128CosPi(byref):System.Number+DiyFp128
     ; Assembly listing for method System.Number:DiyFp128CosPi(byref):System.Number+DiyFp128 (FullOpts)
     ; Emitting BLENDED_CODE for x64 + VEX + EVEX on Unix
     ; FullOpts code
     ; optimized code
     ; rbp based frame
     ; partially interruptible
     ; No PGO data
    -; 0 inlinees with PGO data; 28 single block inlinees; 3 inlinees without PGO data
    +; 0 inlinees with PGO data; 24 single block inlinees; 3 inlinees without PGO data
     ; Final local variable assignments
     ;
    -;  V00 RetBuf       [V00,T00] ( 12,  7.50)    long  ->  rbx         single-def
    +;  V00 RetBuf       [V00,T00] ( 13,  8   )    long  ->  rbx         single-def
     ;  V01 arg0         [V01,T03] (  3,  3   )   byref  ->  rsi         single-def
     ;  V02 loc0         [V02    ] (  3,  3   )  struct (24) [rbp-0x30]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Number+DiyFp128>
    -;  V03 loc1         [V03    ] (  8,  4.50)  struct (24) [rbp-0x48]  do-not-enreg[XDAS] addr-exposed defined-via-address ld-addr-op <System.Number+DiyFp128>
    +;  V03 loc1         [V03    ] ( 14,  7.50)  struct (24) [rbp-0x48]  do-not-enreg[XDAS] addr-exposed defined-via-address ld-addr-op <System.Number+DiyFp128>
     ;  V04 loc2         [V04    ] (  3,  2   )   ubyte  ->  [rbp-0x50]  do-not-enreg[X] addr-exposed ld-addr-op
     ;  V05 loc3         [V05    ] (  2,  2   )   ubyte  ->  [rbp-0x58]  do-not-enreg[X] addr-exposed ld-addr-op
     ;* V06 loc4         [V06    ] (  0,  0   )     int  ->  zero-ref   
    -;  V07 loc5         [V07,T07] (  6,  3   )  struct (24) [rbp-0x70]  do-not-enreg[DAS] defined-via-address ld-addr-op <System.Number+DiyFp128>
    -;  V08 loc6         [V08    ] ( 24, 12   )  struct (64) [rbp-0xB0]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Number+DiyFp128TrigReduceArg>
    -;  V09 loc7         [V09    ] (  6,  3   )  struct (24) [rbp-0xC8]  do-not-enreg[XDAS] addr-exposed defined-via-address ld-addr-op <System.Number+DiyFp128>
    -;# V10 OutArgs      [V10    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
    -;  V11 tmp1         [V11,T24] (  2,  1   )     int  ->  r15        
    -;  V12 tmp2         [V12,T15] (  2,  2   )  struct (24) [rbp-0xE0]  do-not-enreg[DAS] defined-via-address "spilled call-like call argument" <System.Number+DiyFp128>
    -;  V13 tmp3         [V13,T01] (  5,  5   )  struct (24) [rbp-0xF8]  do-not-enreg[DAS] defined-via-address "spilled call-like call argument" <System.Number+DiyFp128>
    -;* V14 tmp4         [V14    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "NewObj constructor temp" <System.Number+DiyFp128>
    -;  V15 tmp5         [V15,T16] (  2,  2   )  struct (24) [rbp-0x110]  do-not-enreg[DAS] defined-via-address "spilled call-like call argument" <System.Number+DiyFp128>
    -;  V16 tmp6         [V16,T02] (  5,  5   )  struct (24) [rbp-0x128]  do-not-enreg[DAS] defined-via-address "spilled call-like call argument" <System.Number+DiyFp128>
    -;  V17 tmp7         [V17,T17] (  2,  2   )  struct (24) [rbp-0x140]  do-not-enreg[DAS] defined-via-address "spilled call-like call argument" <System.Number+DiyFp128>
    -;  V18 tmp8         [V18,T18] (  2,  2   )  struct (24) [rbp-0x158]  do-not-enreg[DAS] defined-via-address "spilled call-like call argument" <System.Number+DiyFp128>
    -;* V19 tmp9         [V19    ] (  0,  0   )  struct (24) zero-ref    do-not-enreg[S] <System.Number+DiyFp128>
    -;* V20 tmp10        [V20    ] (  0,  0   )  struct (24) zero-ref    do-not-enreg[S] <System.Number+DiyFp128>
    -;  V21 tmp11        [V21,T25] (  2,  1   )     int  ->  rax        
    -;* V22 tmp12        [V22    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "Inlining Arg" <System.Number+DiyFp128>
    -;* V23 tmp13        [V23    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
    -;* V24 tmp14        [V24    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.UInt128>
    -;  V25 tmp15        [V25,T19] (  2,  2   )  struct (64) [rbp-0x198]  do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Number+DiyFp128TrigReduceArg>
    -;* V26 tmp16        [V26    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.UInt128>
    -;* V27 tmp17        [V27    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
    -;  V28 tmp18        [V28    ] (  3,  1.50)  struct (24) [rbp-0x1B0]  do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Number+DiyFp128>
    -;* V29 tmp19        [V29    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[System.Number+DiyFp128]>
    -;* V30 tmp20        [V30    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.UInt128>
    -;  V31 tmp21        [V31,T20] (  2,  2   )  struct (64) [rbp-0x1F0]  do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Number+DiyFp128TrigReduceArg>
    -;* V32 tmp22        [V32    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.UInt128>
    -;* V33 tmp23        [V33    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
    -;* V34 tmp24        [V34    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.UInt128>
    -;  V35 tmp25        [V35,T21] (  2,  2   )  struct (64) [rbp-0x230]  do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Number+DiyFp128TrigReduceArg>
    -;* V36 tmp26        [V36    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.UInt128>
    -;* V37 tmp27        [V37    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "Inlining Arg" <System.Number+DiyFp128>
    -;  V38 tmp28        [V38    ] (  3,  1.50)  struct (24) [rbp-0x248]  do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Number+DiyFp128>
    -;* V39 tmp29        [V39    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[System.Number+DiyFp128]>
    -;* V40 tmp30        [V40    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.UInt128>
    -;  V41 tmp31        [V41,T22] (  2,  2   )  struct (64) [rbp-0x288]  do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Number+DiyFp128TrigReduceArg>
    -;* V42 tmp32        [V42    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.UInt128>
    -;* V43 tmp33        [V43    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "Inlining Arg" <System.Number+DiyFp128>
    -;* V44 tmp34        [V44    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "Inlining Arg" <System.Number+DiyFp128>
    -;  V45 tmp35        [V45    ] (  3,  3   )     int  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V02._sign (fldOffset=0x0)" P-DEP
    -;  V46 tmp36        [V46    ] (  2,  2   )     int  ->  [rbp-0x2C]  do-not-enreg[X] addr-exposed "field V02._exponent (fldOffset=0x4)" P-DEP
    -;  V47 tmp37        [V47    ] (  2,  2   )    long  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed "field V02._hi (fldOffset=0x8)" P-DEP
    -;  V48 tmp38        [V48    ] (  2,  2   )    long  ->  [rbp-0x20]  do-not-enreg[X] addr-exposed "field V02._lo (fldOffset=0x10)" P-DEP
    -;* V49 tmp39        [V49    ] (  0,  0   )     int  ->  zero-ref    "field V14._sign (fldOffset=0x0)" P-INDEP
    -;* V50 tmp40        [V50    ] (  0,  0   )     int  ->  zero-ref    "field V14._exponent (fldOffset=0x4)" P-INDEP
    -;* V51 tmp41        [V51    ] (  0,  0   )    long  ->  zero-ref    "field V14._hi (fldOffset=0x8)" P-INDEP
    -;* V52 tmp42        [V52    ] (  0,  0   )    long  ->  zero-ref    "field V14._lo (fldOffset=0x10)" P-INDEP
    -;  V53 tmp43        [V53,T26] (  2,  1   )     int  ->  rax         "field V22._sign (fldOffset=0x0)" P-INDEP
    -;* V54 tmp44        [V54    ] (  0,  0   )     int  ->  zero-ref    "field V22._exponent (fldOffset=0x4)" P-INDEP
    -;* V55 tmp45        [V55    ] (  0,  0   )    long  ->  zero-ref    "field V22._hi (fldOffset=0x8)" P-INDEP
    -;* V56 tmp46        [V56    ] (  0,  0   )    long  ->  zero-ref    "field V22._lo (fldOffset=0x10)" P-INDEP
    -;* V57 tmp47        [V57    ] (  0,  0   )    long  ->  zero-ref    "field V24._lower (fldOffset=0x0)" P-INDEP
    -;* V58 tmp48        [V58    ] (  0,  0   )    long  ->  zero-ref    "field V24._upper (fldOffset=0x8)" P-INDEP
    -;* V59 tmp49        [V59    ] (  0,  0   )    long  ->  zero-ref    "field V26._lower (fldOffset=0x0)" P-INDEP
    -;* V60 tmp50        [V60    ] (  0,  0   )    long  ->  zero-ref    "field V26._upper (fldOffset=0x8)" P-INDEP
    -;* V61 tmp51        [V61,T34] (  0,  0   )   byref  ->  zero-ref    single-def "field V29._reference (fldOffset=0x0)" P-INDEP
    -;* V62 tmp52        [V62    ] (  0,  0   )     int  ->  zero-ref    "field V29._length (fldOffset=0x8)" P-INDEP
    -;* V63 tmp53        [V63    ] (  0,  0   )    long  ->  zero-ref    "field V30._lower (fldOffset=0x0)" P-INDEP
    -;* V64 tmp54        [V64    ] (  0,  0   )    long  ->  zero-ref    "field V30._upper (fldOffset=0x8)" P-INDEP
    -;* V65 tmp55        [V65    ] (  0,  0   )    long  ->  zero-ref    "field V32._lower (fldOffset=0x0)" P-INDEP
    -;* V66 tmp56        [V66    ] (  0,  0   )    long  ->  zero-ref    "field V32._upper (fldOffset=0x8)" P-INDEP
    -;* V67 tmp57        [V67    ] (  0,  0   )    long  ->  zero-ref    "field V34._lower (fldOffset=0x0)" P-INDEP
    -;* V68 tmp58        [V68    ] (  0,  0   )    long  ->  zero-ref    "field V34._upper (fldOffset=0x8)" P-INDEP
    -;* V69 tmp59        [V69    ] (  0,  0   )    long  ->  zero-ref    "field V36._lower (fldOffset=0x0)" P-INDEP
    -;* V70 tmp60        [V70    ] (  0,  0   )    long  ->  zero-ref    "field V36._upper (fldOffset=0x8)" P-INDEP
    -;  V71 tmp61        [V71,T11] (  4,  2   )     int  ->  rcx         "field V37._sign (fldOffset=0x0)" P-INDEP
    -;  V72 tmp62        [V72,T27] (  2,  1   )     int  ->  rax         "field V37._exponent (fldOffset=0x4)" P-INDEP
    -;  V73 tmp63        [V73,T28] (  2,  1   )    long  ->   r8         "field V37._hi (fldOffset=0x8)" P-INDEP
    -;  V74 tmp64        [V74,T29] (  2,  1   )    long  ->  rsi         "field V37._lo (fldOffset=0x10)" P-INDEP
    -;* V75 tmp65        [V75,T35] (  0,  0   )   byref  ->  zero-ref    single-def "field V39._reference (fldOffset=0x0)" P-INDEP
    -;* V76 tmp66        [V76    ] (  0,  0   )     int  ->  zero-ref    "field V39._length (fldOffset=0x8)" P-INDEP
    -;* V77 tmp67        [V77    ] (  0,  0   )    long  ->  zero-ref    "field V40._lower (fldOffset=0x0)" P-INDEP
    -;* V78 tmp68        [V78    ] (  0,  0   )    long  ->  zero-ref    "field V40._upper (fldOffset=0x8)" P-INDEP
    -;* V79 tmp69        [V79    ] (  0,  0   )    long  ->  zero-ref    "field V42._lower (fldOffset=0x0)" P-INDEP
    -;* V80 tmp70        [V80    ] (  0,  0   )    long  ->  zero-ref    "field V42._upper (fldOffset=0x8)" P-INDEP
    -;  V81 tmp71        [V81,T12] (  4,  2   )     int  ->  rdi         "field V43._sign (fldOffset=0x0)" P-INDEP
    -;  V82 tmp72        [V82,T30] (  2,  1   )     int  ->  rax         "field V43._exponent (fldOffset=0x4)" P-INDEP
    -;  V83 tmp73        [V83,T31] (  2,  1   )    long  ->  rcx         "field V43._hi (fldOffset=0x8)" P-INDEP
    -;  V84 tmp74        [V84,T32] (  2,  1   )    long  ->   r8         "field V43._lo (fldOffset=0x10)" P-INDEP
    -;  V85 tmp75        [V85,T33] (  2,  1   )     int  ->  r15         "field V44._sign (fldOffset=0x0)" P-INDEP
    -;* V86 tmp76        [V86    ] (  0,  0   )     int  ->  zero-ref    "field V44._exponent (fldOffset=0x4)" P-INDEP
    -;* V87 tmp77        [V87    ] (  0,  0   )    long  ->  zero-ref    "field V44._hi (fldOffset=0x8)" P-INDEP
    -;* V88 tmp78        [V88    ] (  0,  0   )    long  ->  zero-ref    "field V44._lo (fldOffset=0x10)" P-INDEP
    -;* V89 tmp79        [V89    ] (  0,  0   )    long  ->  zero-ref    "V25.[032..040)"
    -;* V90 tmp80        [V90    ] (  0,  0   )    long  ->  zero-ref    "V25.[040..048)"
    -;* V91 tmp81        [V91    ] (  0,  0   )     int  ->  zero-ref    "V25.[048..052)"
    -;* V92 tmp82        [V92    ] (  0,  0   )     int  ->  zero-ref    "V25.[052..056)"
    -;* V93 tmp83        [V93    ] (  0,  0   )   ubyte  ->  zero-ref    "V25.[056..057)"
    -;* V94 tmp84        [V94    ] (  0,  0   )    long  ->  zero-ref    "V31.[032..040)"
    -;* V95 tmp85        [V95    ] (  0,  0   )    long  ->  zero-ref    "V31.[040..048)"
    -;* V96 tmp86        [V96    ] (  0,  0   )     int  ->  zero-ref    "V31.[048..052)"
    -;* V97 tmp87        [V97    ] (  0,  0   )     int  ->  zero-ref    "V31.[052..056)"
    -;* V98 tmp88        [V98    ] (  0,  0   )   ubyte  ->  zero-ref    "V31.[056..057)"
    -;* V99 tmp89        [V99    ] (  0,  0   )    long  ->  zero-ref    "V35.[032..040)"
    -;* V100 tmp90       [V100    ] (  0,  0   )    long  ->  zero-ref    "V35.[040..048)"
    -;* V101 tmp91       [V101    ] (  0,  0   )     int  ->  zero-ref    "V35.[048..052)"
    -;* V102 tmp92       [V102    ] (  0,  0   )     int  ->  zero-ref    "V35.[052..056)"
    -;* V103 tmp93       [V103    ] (  0,  0   )   ubyte  ->  zero-ref    "V35.[056..057)"
    -;* V104 tmp94       [V104    ] (  0,  0   )    long  ->  zero-ref    "V41.[032..040)"
    -;* V105 tmp95       [V105    ] (  0,  0   )    long  ->  zero-ref    "V41.[040..048)"
    -;* V106 tmp96       [V106    ] (  0,  0   )     int  ->  zero-ref    "V41.[048..052)"
    -;* V107 tmp97       [V107    ] (  0,  0   )     int  ->  zero-ref    "V41.[052..056)"
    -;* V108 tmp98       [V108    ] (  0,  0   )   ubyte  ->  zero-ref    "V41.[056..057)"
    -;  V109 tmp99       [V109,T13] (  4,  2   )     int  ->  r14         "V07.[000..004)"
    -;  V110 tmp100      [V110,T14] (  4,  2   )     int  ->  rax         "V07.[004..008)"
    -;  V111 tmp101      [V111,T08] (  5,  2.50)    long  ->  rcx         "V07.[008..016)"
    -;  V112 tmp102      [V112,T09] (  5,  2.50)    long  ->   r8         "V07.[016..024)"
    -;* V113 tmp103      [V113,T38] (  0,  0   )     int  ->  zero-ref    "V20.[000..004)"
    -;* V114 tmp104      [V114,T39] (  0,  0   )     int  ->  zero-ref    "V20.[004..008)"
    -;* V115 tmp105      [V115,T40] (  0,  0   )    long  ->  zero-ref    "V20.[008..016)"
    -;* V116 tmp106      [V116,T41] (  0,  0   )    long  ->  zero-ref    "V20.[016..024)"
    -;  V117 cse0        [V117,T04] (  8,  4   )     ref  ->  rdx         multi-def "CSE #06: aggressive"
    -;  V118 cse1        [V118,T05] (  8,  4   )    long  ->  rcx         "CSE #04: aggressive"
    -;  V119 cse2        [V119,T06] (  7,  3.50)     int  ->  rsi         "CSE #02: aggressive"
    -;  V120 cse3        [V120,T23] (  2,  1   )   byref  ->  rdi         "CSE #07: aggressive"
    -;* V121 cse4        [V121,T36] (  0,  0   )   byref  ->  zero-ref    "CSE #03: moderate"
    -;* V122 cse5        [V122,T37] (  0,  0   )   byref  ->  zero-ref    "CSE #09: moderate"
    -;  V123 cse6        [V123,T10] (  5,  2.50)    long  ->   r8         "CSE #05: moderate"
    +;  V07 loc5         [V07,T04] (  6,  3   )  struct (24) [rbp-0x70]  do-not-enreg[DAS] defined-via-address ld-addr-op <System.Number+DiyFp128>
    +;  V08 loc6         [V08    ] ( 18,  9   )  struct (24) [rbp-0x88]  do-not-enreg[XDAS] addr-exposed defined-via-address ld-addr-op <System.Number+DiyFp128>
    +;  V09 loc7         [V09    ] ( 24, 12   )  struct (64) [rbp-0xC8]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Number+DiyFp128TrigReduceArg>
    +;  V10 loc8         [V10    ] (  6,  3   )  struct (24) [rbp-0xE0]  do-not-enreg[XDAS] addr-exposed defined-via-address ld-addr-op <System.Number+DiyFp128>
    +;# V11 OutArgs      [V11    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
    +;  V12 tmp1         [V12,T38] (  2,  1   )     int  ->  r15        
    +;  V13 tmp2         [V13,T18] (  2,  2   )  struct (24) [rbp-0xF8]  do-not-enreg[DAS] defined-via-address "spilled call-like call argument" <System.Number+DiyFp128>
    +;  V14 tmp3         [V14,T01] (  5,  5   )  struct (24) [rbp-0x110]  do-not-enreg[DAS] defined-via-address "spilled call-like call argument" <System.Number+DiyFp128>
    +;* V15 tmp4         [V15    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "NewObj constructor temp" <System.Number+DiyFp128>
    +;  V16 tmp5         [V16,T19] (  2,  2   )  struct (24) [rbp-0x128]  do-not-enreg[DAS] defined-via-address "spilled call-like call argument" <System.Number+DiyFp128>
    +;  V17 tmp6         [V17,T02] (  5,  5   )  struct (24) [rbp-0x140]  do-not-enreg[DAS] defined-via-address "spilled call-like call argument" <System.Number+DiyFp128>
    +;  V18 tmp7         [V18,T20] (  2,  2   )  struct (24) [rbp-0x158]  do-not-enreg[DAS] defined-via-address "spilled call-like call argument" <System.Number+DiyFp128>
    +;  V19 tmp8         [V19,T21] (  2,  2   )  struct (24) [rbp-0x170]  do-not-enreg[DAS] defined-via-address "spilled call-like call argument" <System.Number+DiyFp128>
    +;  V20 tmp9         [V20,T05] (  5,  2.50)  struct (24) [rbp-0x188]  do-not-enreg[DAS] defined-via-address <System.Number+DiyFp128>
    +;* V21 tmp10        [V21    ] (  0,  0   )  struct (24) zero-ref    do-not-enreg[S] <System.Number+DiyFp128>
    +;  V22 tmp11        [V22,T39] (  2,  1   )     int  ->  rsi        
    +;* V23 tmp12        [V23    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "Inlining Arg" <System.Number+DiyFp128>
    +;* V24 tmp13        [V24    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
    +;  V25 tmp14        [V25    ] (  2,  1   )  struct (24) [rbp-0x1A0]  do-not-enreg[XDAS] addr-exposed defined-via-address ld-addr-op "Inline stloc first use temp" <System.Number+DiyFp128>
    +;* V26 tmp15        [V26    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.UInt128>
    +;  V27 tmp16        [V27,T22] (  2,  2   )  struct (64) [rbp-0x1E0]  do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Number+DiyFp128TrigReduceArg>
    +;* V28 tmp17        [V28    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.UInt128>
    +;* V29 tmp18        [V29    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
    +;  V30 tmp19        [V30    ] (  2,  1   )  struct (24) [rbp-0x1F8]  do-not-enreg[XDAS] addr-exposed defined-via-address ld-addr-op "Inline stloc first use temp" <System.Number+DiyFp128>
    +;* V31 tmp20        [V31    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.UInt128>
    +;  V32 tmp21        [V32,T23] (  2,  2   )  struct (64) [rbp-0x238]  do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Number+DiyFp128TrigReduceArg>
    +;* V33 tmp22        [V33    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.UInt128>
    +;* V34 tmp23        [V34    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
    +;  V35 tmp24        [V35    ] (  2,  1   )  struct (24) [rbp-0x250]  do-not-enreg[XDAS] addr-exposed defined-via-address ld-addr-op "Inline stloc first use temp" <System.Number+DiyFp128>
    +;* V36 tmp25        [V36    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.UInt128>
    +;  V37 tmp26        [V37,T24] (  2,  2   )  struct (64) [rbp-0x290]  do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Number+DiyFp128TrigReduceArg>
    +;* V38 tmp27        [V38    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.UInt128>
    +;* V39 tmp28        [V39    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "Inlining Arg" <System.Number+DiyFp128>
    +;  V40 tmp29        [V40    ] (  2,  1   )  struct (24) [rbp-0x2A8]  do-not-enreg[XDAS] addr-exposed defined-via-address ld-addr-op "Inline stloc first use temp" <System.Number+DiyFp128>
    +;* V41 tmp30        [V41    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.UInt128>
    +;  V42 tmp31        [V42,T25] (  2,  2   )  struct (64) [rbp-0x2E8]  do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Number+DiyFp128TrigReduceArg>
    +;* V43 tmp32        [V43    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.UInt128>
    +;* V44 tmp33        [V44    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "Inlining Arg" <System.Number+DiyFp128>
    +;* V45 tmp34        [V45    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "Inlining Arg" <System.Number+DiyFp128>
    +;  V46 tmp35        [V46    ] (  3,  3   )     int  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V02._sign (fldOffset=0x0)" P-DEP
    +;  V47 tmp36        [V47    ] (  2,  2   )     int  ->  [rbp-0x2C]  do-not-enreg[X] addr-exposed "field V02._exponent (fldOffset=0x4)" P-DEP
    +;  V48 tmp37        [V48    ] (  2,  2   )    long  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed "field V02._hi (fldOffset=0x8)" P-DEP
    +;  V49 tmp38        [V49    ] (  2,  2   )    long  ->  [rbp-0x20]  do-not-enreg[X] addr-exposed "field V02._lo (fldOffset=0x10)" P-DEP
    +;* V50 tmp39        [V50    ] (  0,  0   )     int  ->  zero-ref    "field V15._sign (fldOffset=0x0)" P-INDEP
    +;* V51 tmp40        [V51    ] (  0,  0   )     int  ->  zero-ref    "field V15._exponent (fldOffset=0x4)" P-INDEP
    +;* V52 tmp41        [V52    ] (  0,  0   )    long  ->  zero-ref    "field V15._hi (fldOffset=0x8)" P-INDEP
    +;* V53 tmp42        [V53    ] (  0,  0   )    long  ->  zero-ref    "field V15._lo (fldOffset=0x10)" P-INDEP
    +;  V54 tmp43        [V54,T40] (  2,  1   )     int  ->  rax         "field V23._sign (fldOffset=0x0)" P-INDEP
    +;* V55 tmp44        [V55    ] (  0,  0   )     int  ->  zero-ref    "field V23._exponent (fldOffset=0x4)" P-INDEP
    +;* V56 tmp45        [V56    ] (  0,  0   )    long  ->  zero-ref    "field V23._hi (fldOffset=0x8)" P-INDEP
    +;* V57 tmp46        [V57    ] (  0,  0   )    long  ->  zero-ref    "field V23._lo (fldOffset=0x10)" P-INDEP
    +;* V58 tmp47        [V58    ] (  0,  0   )    long  ->  zero-ref    "field V26._lower (fldOffset=0x0)" P-INDEP
    +;* V59 tmp48        [V59    ] (  0,  0   )    long  ->  zero-ref    "field V26._upper (fldOffset=0x8)" P-INDEP
    +;* V60 tmp49        [V60    ] (  0,  0   )    long  ->  zero-ref    "field V28._lower (fldOffset=0x0)" P-INDEP
    +;* V61 tmp50        [V61    ] (  0,  0   )    long  ->  zero-ref    "field V28._upper (fldOffset=0x8)" P-INDEP
    +;* V62 tmp51        [V62    ] (  0,  0   )    long  ->  zero-ref    "field V31._lower (fldOffset=0x0)" P-INDEP
    +;* V63 tmp52        [V63    ] (  0,  0   )    long  ->  zero-ref    "field V31._upper (fldOffset=0x8)" P-INDEP
    +;* V64 tmp53        [V64    ] (  0,  0   )    long  ->  zero-ref    "field V33._lower (fldOffset=0x0)" P-INDEP
    +;* V65 tmp54        [V65    ] (  0,  0   )    long  ->  zero-ref    "field V33._upper (fldOffset=0x8)" P-INDEP
    +;* V66 tmp55        [V66    ] (  0,  0   )    long  ->  zero-ref    "field V36._lower (fldOffset=0x0)" P-INDEP
    +;* V67 tmp56        [V67    ] (  0,  0   )    long  ->  zero-ref    "field V36._upper (fldOffset=0x8)" P-INDEP
    +;* V68 tmp57        [V68    ] (  0,  0   )    long  ->  zero-ref    "field V38._lower (fldOffset=0x0)" P-INDEP
    +;* V69 tmp58        [V69    ] (  0,  0   )    long  ->  zero-ref    "field V38._upper (fldOffset=0x8)" P-INDEP
    +;  V70 tmp59        [V70,T08] (  4,  2   )     int  ->  rdi         "field V39._sign (fldOffset=0x0)" P-INDEP
    +;  V71 tmp60        [V71,T41] (  2,  1   )     int  ->  rax         "field V39._exponent (fldOffset=0x4)" P-INDEP
    +;  V72 tmp61        [V72,T42] (  2,  1   )    long  ->  rcx         "field V39._hi (fldOffset=0x8)" P-INDEP
    +;  V73 tmp62        [V73,T43] (  2,  1   )    long  ->  rdx         "field V39._lo (fldOffset=0x10)" P-INDEP
    +;* V74 tmp63        [V74    ] (  0,  0   )    long  ->  zero-ref    "field V41._lower (fldOffset=0x0)" P-INDEP
    +;* V75 tmp64        [V75    ] (  0,  0   )    long  ->  zero-ref    "field V41._upper (fldOffset=0x8)" P-INDEP
    +;* V76 tmp65        [V76    ] (  0,  0   )    long  ->  zero-ref    "field V43._lower (fldOffset=0x0)" P-INDEP
    +;* V77 tmp66        [V77    ] (  0,  0   )    long  ->  zero-ref    "field V43._upper (fldOffset=0x8)" P-INDEP
    +;  V78 tmp67        [V78,T09] (  4,  2   )     int  ->  rdi         "field V44._sign (fldOffset=0x0)" P-INDEP
    +;  V79 tmp68        [V79,T44] (  2,  1   )     int  ->  rax         "field V44._exponent (fldOffset=0x4)" P-INDEP
    +;  V80 tmp69        [V80,T45] (  2,  1   )    long  ->  rcx         "field V44._hi (fldOffset=0x8)" P-INDEP
    +;  V81 tmp70        [V81,T46] (  2,  1   )    long  ->  rdx         "field V44._lo (fldOffset=0x10)" P-INDEP
    +;  V82 tmp71        [V82,T47] (  2,  1   )     int  ->  r15         "field V45._sign (fldOffset=0x0)" P-INDEP
    +;* V83 tmp72        [V83    ] (  0,  0   )     int  ->  zero-ref    "field V45._exponent (fldOffset=0x4)" P-INDEP
    +;* V84 tmp73        [V84    ] (  0,  0   )    long  ->  zero-ref    "field V45._hi (fldOffset=0x8)" P-INDEP
    +;* V85 tmp74        [V85    ] (  0,  0   )    long  ->  zero-ref    "field V45._lo (fldOffset=0x10)" P-INDEP
    +;* V86 tmp75        [V86    ] (  0,  0   )    long  ->  zero-ref    "V27.[032..040)"
    +;* V87 tmp76        [V87    ] (  0,  0   )    long  ->  zero-ref    "V27.[040..048)"
    +;* V88 tmp77        [V88    ] (  0,  0   )     int  ->  zero-ref    "V27.[048..052)"
    +;* V89 tmp78        [V89    ] (  0,  0   )     int  ->  zero-ref    "V27.[052..056)"
    +;* V90 tmp79        [V90    ] (  0,  0   )   ubyte  ->  zero-ref    "V27.[056..057)"
    +;* V91 tmp80        [V91    ] (  0,  0   )    long  ->  zero-ref    "V32.[032..040)"
    +;* V92 tmp81        [V92    ] (  0,  0   )    long  ->  zero-ref    "V32.[040..048)"
    +;* V93 tmp82        [V93    ] (  0,  0   )     int  ->  zero-ref    "V32.[048..052)"
    +;* V94 tmp83        [V94    ] (  0,  0   )     int  ->  zero-ref    "V32.[052..056)"
    +;* V95 tmp84        [V95    ] (  0,  0   )   ubyte  ->  zero-ref    "V32.[056..057)"
    +;* V96 tmp85        [V96    ] (  0,  0   )    long  ->  zero-ref    "V37.[032..040)"
    +;* V97 tmp86        [V97    ] (  0,  0   )    long  ->  zero-ref    "V37.[040..048)"
    +;* V98 tmp87        [V98    ] (  0,  0   )     int  ->  zero-ref    "V37.[048..052)"
    +;* V99 tmp88        [V99    ] (  0,  0   )     int  ->  zero-ref    "V37.[052..056)"
    +;* V100 tmp89       [V100    ] (  0,  0   )   ubyte  ->  zero-ref    "V37.[056..057)"
    +;* V101 tmp90       [V101    ] (  0,  0   )    long  ->  zero-ref    "V42.[032..040)"
    +;* V102 tmp91       [V102    ] (  0,  0   )    long  ->  zero-ref    "V42.[040..048)"
    +;* V103 tmp92       [V103    ] (  0,  0   )     int  ->  zero-ref    "V42.[048..052)"
    +;* V104 tmp93       [V104    ] (  0,  0   )     int  ->  zero-ref    "V42.[052..056)"
    +;* V105 tmp94       [V105    ] (  0,  0   )   ubyte  ->  zero-ref    "V42.[056..057)"
    +;  V106 tmp95       [V106,T10] (  4,  2   )     int  ->  r14         "V07.[000..004)"
    +;  V107 tmp96       [V107,T11] (  4,  2   )     int  ->  rax         "V07.[004..008)"
    +;  V108 tmp97       [V108,T06] (  5,  2.50)    long  ->  rcx         "V07.[008..016)"
    +;  V109 tmp98       [V109,T07] (  5,  2.50)    long  ->  rdx         "V07.[016..024)"
    +;  V110 tmp99       [V110,T48] (  2,  1   )     int  ->  rax         "V21.[000..004)"
    +;  V111 tmp100      [V111,T49] (  2,  1   )     int  ->  rcx         "V21.[004..008)"
    +;  V112 tmp101      [V112,T50] (  2,  1   )    long  ->  rdx         "V21.[008..016)"
    +;  V113 tmp102      [V113,T51] (  2,  1   )    long  ->  rdi         "V21.[016..024)"
    +;  V114 cse0        [V114,T12] (  4,  2   )    long  ->  rdi         "CSE #03: moderate"
    +;  V115 cse1        [V115,T13] (  4,  2   )    long  ->  rcx         "CSE #04: moderate"
    +;  V116 cse2        [V116,T14] (  4,  2   )    long  ->  rdi         "CSE #09: moderate"
    +;  V117 cse3        [V117,T15] (  4,  2   )    long  ->  rcx         "CSE #10: moderate"
    +;  V118 cse4        [V118,T16] (  4,  2   )    long  ->  rdi         "CSE #15: moderate"
    +;  V119 cse5        [V119,T17] (  4,  2   )    long  ->  rcx         "CSE #16: moderate"
    +;  V120 cse6        [V120,T26] (  3,  1.50)     int  ->  rsi         "CSE #01: moderate"
    +;  V121 cse7        [V121,T27] (  3,  1.50)     int  ->   r8         "CSE #02: moderate"
    +;  V122 cse8        [V122,T28] (  3,  1.50)    long  ->  rax         "CSE #05: moderate"
    +;  V123 cse9        [V123,T29] (  3,  1.50)    long  ->  rdx         "CSE #06: moderate"
    +;  V124 cse10       [V124,T30] (  3,  1.50)     int  ->  rsi         "CSE #07: moderate"
    +;  V125 cse11       [V125,T31] (  3,  1.50)     int  ->   r8         "CSE #08: moderate"
    +;  V126 cse12       [V126,T32] (  3,  1.50)    long  ->  rax         "CSE #11: moderate"
    +;  V127 cse13       [V127,T33] (  3,  1.50)    long  ->  rdx         "CSE #12: moderate"
    +;  V128 cse14       [V128,T34] (  3,  1.50)     int  ->  rsi         "CSE #13: moderate"
    +;  V129 cse15       [V129,T35] (  3,  1.50)     int  ->   r8         "CSE #14: moderate"
    +;  V130 cse16       [V130,T36] (  3,  1.50)    long  ->  rax         "CSE #17: moderate"
    +;  V131 cse17       [V131,T37] (  3,  1.50)    long  ->  rdx         "CSE #18: moderate"
     ;
    -; Lcl frame size = 632
    +; Lcl frame size = 728
     
     G_M55388_IG01:
            push     rbp
            push     r15
            push     r14
            push     rbx
    -       sub      rsp, 632
    -       lea      rbp, [rsp+0x290]
    +       sub      rsp, 728
    +       lea      rbp, [rsp+0x2F0]
            mov      rbx, rdi
     						;; size=24 bbWeight=1 PerfScore 5.00
     G_M55388_IG02:
            vmovdqu  xmm0, xmmword ptr [rsi]
            vmovdqu  xmmword ptr [rbp-0x30], xmm0
            mov      rdi, qword ptr [rsi+0x10]
            mov      qword ptr [rbp-0x20], rdi
            xor      edi, edi
            mov      dword ptr [rbp-0x30], edi
            lea      rdi, [rbp-0x48]
            lea      rsi, [rbp-0x30]
            lea      rdx, [rbp-0x50]
            lea      rcx, [rbp-0x58]
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128SplitInteger(byref,byref,byref):System.Number+DiyFp128
            call     [rax]System.Number:DiyFp128SplitInteger(byref,byref,byref):System.Number+DiyFp128
            cmp      byte  ptr [rbp-0x58], 0
            jne      G_M55388_IG27
     						;; size=60 bbWeight=1 PerfScore 14.50
     G_M55388_IG03:
            mov      r15d, 0xD1FFAB1E
    -       xor      ecx, ecx
    +       xor      edi, edi
            cmp      byte  ptr [rbp-0x50], 0
    -       cmove    r15d, ecx
    -       mov      rcx, qword ptr [rbp-0x40]
    -       mov      r8, qword ptr [rbp-0x38]
    -       mov      rsi, rcx
    -       or       rsi, r8
    +       cmove    r15d, edi
    +       lea      rdi, [rbp-0x88]
    +       mov      rax, 0xD1FFAB1E      ; code for System.Number:get_UxQuarter():System.Number+DiyFp128
    +       call     [rax]System.Number:get_UxQuarter():System.Number+DiyFp128
    +       mov      rdi, qword ptr [rbp-0x40]
    +       mov      rax, qword ptr [rbp-0x38]
    +       mov      rcx, rdi
    +       or       rcx, rax
            je       SHORT G_M55388_IG04
    +       mov      rcx, qword ptr [rbp-0x80]
    +       mov      rdx, qword ptr [rbp-0x78]
    +       mov      rsi, rcx
    +       or       rsi, rdx
    +       je       G_M55388_IG09
            mov      esi, dword ptr [rbp-0x44]
    -       cmp      esi, -1
    +       mov      r8d, dword ptr [rbp-0x84]
    +       cmp      esi, r8d
            jne      G_M55388_IG08
    -       mov      rdi, 0xD1FFAB1E
    -       cmp      rcx, rdi
    +       cmp      rdi, rcx
            jne      G_M55388_IG07
    -       test     r8, r8
    -       jne      G_M55388_IG09
    -						;; size=72 bbWeight=0.50 PerfScore 5.25
    +       cmp      rax, rdx
    +       ja       G_M55388_IG09
    +						;; size=108 bbWeight=0.50 PerfScore 9.25
     G_M55388_IG04:
    -       mov      rdx, 0xD1FFAB1E      ; const ptr
    -       mov      rdx, gword ptr [rdx]
    -       add      rdx, 112
    +       lea      rdi, [rbp-0x1A0]
    +       mov      esi, 4
    +       mov      rax, 0xD1FFAB1E      ; code for System.Number:GetInvTrigConstant(int):System.Number+DiyFp128
    +       call     [rax]System.Number:GetInvTrigConstant(int):System.Number+DiyFp128
    +       lea      rdi, [rbp-0x170]
            lea      rsi, [rbp-0x48]
    -       lea      rdi, [rbp-0x158]
    +       lea      rdx, [rbp-0x1A0]
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Product(byref,byref):System.Number+DiyFp128
            call     [rax]System.Number:DiyFp128Product(byref,byref):System.Number+DiyFp128
    -       vmovdqu  xmm0, xmmword ptr [rbp-0x158]
    -       vmovdqu  xmmword ptr [rbp-0x198], xmm0
    -       mov      rdi, qword ptr [rbp-0x148]
    -       mov      qword ptr [rbp-0x188], rdi
    -       vmovdqu32 zmm0, zmmword ptr [rbp-0x198]
    -       vmovdqu32 zmmword ptr [rbp-0xB0], zmm0
    +       vmovdqu32 xmm0, xmmword ptr [rbp-0x170]
    +       vmovdqu32 xmmword ptr [rbp-0x1E0], xmm0
    +       mov      rdi, qword ptr [rbp-0x160]
    +       mov      qword ptr [rbp-0x1D0], rdi
    +       vmovdqu32 zmm0, zmmword ptr [rbp-0x1E0]
    +       vmovdqu32 zmmword ptr [rbp-0xC8], zmm0
            xor      edi, edi
    -       mov      qword ptr [rbp-0x90], rdi
    -						;; size=99 bbWeight=0.50 PerfScore 8.00
    +       mov      qword ptr [rbp-0xA8], rdi
    +						;; size=111 bbWeight=0.50 PerfScore 9.00
     G_M55388_IG05:
    -       mov      qword ptr [rbp-0x88], rdi
    +       mov      qword ptr [rbp-0xA0], rdi
     						;; size=7 bbWeight=0.50 PerfScore 0.50
     G_M55388_IG06:
    -       mov      qword ptr [rbp-0x80], rdi
    -       mov      byte  ptr [rbp-0x78], 0
    +       mov      qword ptr [rbp-0x98], rdi
    +       mov      byte  ptr [rbp-0x90], 0
            lea      rdi, [rbp-0x70]
    -       lea      rsi, [rbp-0xB0]
    +       lea      rsi, [rbp-0xC8]
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Cos(byref):System.Number+DiyFp128
            call     [rax]System.Number:DiyFp128Cos(byref):System.Number+DiyFp128
            jmp      G_M55388_IG13
    -						;; size=36 bbWeight=0.50 PerfScore 4.12
    +						;; size=42 bbWeight=0.50 PerfScore 4.12
     G_M55388_IG07:
    -       mov      rdi, 0xD1FFAB1E
    -       cmp      rcx, rdi
    +       cmp      rdi, rcx
            jae      SHORT G_M55388_IG09
            jmp      G_M55388_IG04
    -						;; size=20 bbWeight=0.50 PerfScore 1.75
    +						;; size=10 bbWeight=0.50 PerfScore 1.62
     G_M55388_IG08:
    -       cmp      esi, -1
    +       cmp      esi, r8d
            jl       G_M55388_IG04
     						;; size=9 bbWeight=0.50 PerfScore 0.62
     G_M55388_IG09:
    -       mov      rdi, 0xD1FFAB1E      ; static handle
    -       test     esi, esi
    +       lea      rdi, [rbp-0x88]
    +       mov      rax, 0xD1FFAB1E      ; code for System.Number:get_UxHalf():System.Number+DiyFp128
    +       call     [rax]System.Number:get_UxHalf():System.Number+DiyFp128
    +       mov      rdi, qword ptr [rbp-0x40]
    +       mov      rax, qword ptr [rbp-0x38]
    +       mov      rcx, rdi
    +       or       rcx, rax
    +       je       SHORT G_M55388_IG10
    +       mov      rcx, qword ptr [rbp-0x80]
    +       mov      rdx, qword ptr [rbp-0x78]
    +       mov      rsi, rcx
    +       or       rsi, rdx
    +       je       G_M55388_IG16
    +       mov      esi, dword ptr [rbp-0x44]
    +       mov      r8d, dword ptr [rbp-0x84]
    +       cmp      esi, r8d
            jne      G_M55388_IG15
    -       mov      rdx, 0xD1FFAB1E
    -       cmp      rcx, rdx
    +       cmp      rdi, rcx
            jne      G_M55388_IG14
    -       test     r8, r8
    -       jne      G_M55388_IG16
    -						;; size=46 bbWeight=0.50 PerfScore 2.12
    +       cmp      rax, rdx
    +       ja       G_M55388_IG16
    +						;; size=92 bbWeight=0.50 PerfScore 8.25
     G_M55388_IG10:
    -       vxorps   xmm0, xmm0, xmm0
    -       vmovdqu32 xmmword ptr [rbp-0x1B0], xmm0
    -       vmovdqu  xmmword ptr [rbp-0x1A8], xmm0
    -       lea      rcx, bword ptr [rbp-0x1B0]
    -       mov      r8d, 1
    -       lea      rsi, [rbp-0x48]
    -       mov      edx, 1
    -       mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128AddSub(byref,byref,int,System.Span`1[System.Number+DiyFp128])
    -       call     [rax]System.Number:DiyFp128AddSub(byref,byref,int,System.Span`1[System.Number+DiyFp128])
    -       vmovdqu32 xmm0, xmmword ptr [rbp-0x1B0]
    -       vmovdqu  xmmword ptr [rbp-0xC8], xmm0
    -       mov      rdx, qword ptr [rbp-0x1A0]
    -       mov      qword ptr [rbp-0xB8], rdx
    -       mov      rdx, 0xD1FFAB1E      ; const ptr
    -       mov      rdx, gword ptr [rdx]
    -       add      rdx, 112
    -       lea      rsi, [rbp-0xC8]
    -       lea      rdi, [rbp-0x140]
    +       lea      rdi, [rbp-0x88]
    +       mov      rax, 0xD1FFAB1E      ; code for System.Number:get_UxHalf():System.Number+DiyFp128
    +       call     [rax]System.Number:get_UxHalf():System.Number+DiyFp128
    +       lea      rdi, [rbp-0xE0]
    +       lea      rsi, [rbp-0x88]
    +       lea      rdx, [rbp-0x48]
    +       mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Difference(byref,byref):System.Number+DiyFp128
    +       call     [rax]System.Number:DiyFp128Difference(byref,byref):System.Number+DiyFp128
    +       lea      rdi, [rbp-0x1F8]
    +       mov      esi, 4
    +       mov      rax, 0xD1FFAB1E      ; code for System.Number:GetInvTrigConstant(int):System.Number+DiyFp128
    +       call     [rax]System.Number:GetInvTrigConstant(int):System.Number+DiyFp128
    +       lea      rdi, [rbp-0x158]
    +       lea      rsi, [rbp-0xE0]
    +       lea      rdx, [rbp-0x1F8]
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Product(byref,byref):System.Number+DiyFp128
            call     [rax]System.Number:DiyFp128Product(byref,byref):System.Number+DiyFp128
    -       vmovdqu32 xmm0, xmmword ptr [rbp-0x140]
    -       vmovdqu32 xmmword ptr [rbp-0x1F0], xmm0
    -       mov      rdi, qword ptr [rbp-0x130]
    -       mov      qword ptr [rbp-0x1E0], rdi
    -       vmovdqu32 zmm0, zmmword ptr [rbp-0x1F0]
    -       vmovdqu32 zmmword ptr [rbp-0xB0], zmm0
    +       vmovdqu  xmm0, xmmword ptr [rbp-0x158]
    +       vmovdqu  xmmword ptr [rbp-0x238], xmm0
    +       mov      rdi, qword ptr [rbp-0x148]
    +       mov      qword ptr [rbp-0x228], rdi
    +       vmovdqu32 zmm0, zmmword ptr [rbp-0x238]
    +       vmovdqu32 zmmword ptr [rbp-0xC8], zmm0
            xor      edi, edi
    -       mov      qword ptr [rbp-0x90], rdi
    -						;; size=182 bbWeight=0.50 PerfScore 13.54
    +       mov      qword ptr [rbp-0xA8], rdi
    +						;; size=165 bbWeight=0.50 PerfScore 13.25
     G_M55388_IG11:
    -       mov      qword ptr [rbp-0x88], rdi
    +       mov      qword ptr [rbp-0xA0], rdi
     						;; size=7 bbWeight=0.50 PerfScore 0.50
     G_M55388_IG12:
    -       mov      qword ptr [rbp-0x80], rdi
    -       mov      byte  ptr [rbp-0x78], 0
    +       mov      qword ptr [rbp-0x98], rdi
    +       mov      byte  ptr [rbp-0x90], 0
            lea      rdi, [rbp-0x70]
    -       lea      rsi, [rbp-0xB0]
    +       lea      rsi, [rbp-0xC8]
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Sin(byref):System.Number+DiyFp128
            call     [rax]System.Number:DiyFp128Sin(byref):System.Number+DiyFp128
    -						;; size=31 bbWeight=0.50 PerfScore 3.12
    +						;; size=37 bbWeight=0.50 PerfScore 3.12
     G_M55388_IG13:
            mov      r14d, dword ptr [rbp-0x70]
            mov      eax, dword ptr [rbp-0x6C]
            mov      rcx, qword ptr [rbp-0x68]
    -       mov      r8, qword ptr [rbp-0x60]
    +       mov      rdx, qword ptr [rbp-0x60]
            jmp      G_M55388_IG25
     						;; size=20 bbWeight=0.50 PerfScore 3.00
     G_M55388_IG14:
    -       mov      rdx, 0xD1FFAB1E
    -       cmp      rcx, rdx
    +       cmp      rdi, rcx
            jae      SHORT G_M55388_IG16
            jmp      G_M55388_IG10
    -						;; size=20 bbWeight=0.50 PerfScore 1.75
    +						;; size=10 bbWeight=0.50 PerfScore 1.62
     G_M55388_IG15:
    -       test     esi, esi
    +       cmp      esi, r8d
            jl       G_M55388_IG10
    -						;; size=8 bbWeight=0.50 PerfScore 0.62
    +						;; size=9 bbWeight=0.50 PerfScore 0.62
     G_M55388_IG16:
    -       test     esi, esi
    +       lea      rdi, [rbp-0x88]
    +       mov      rax, 0xD1FFAB1E      ; code for System.Number:get_UxThreeQuarter():System.Number+DiyFp128
    +       call     [rax]System.Number:get_UxThreeQuarter():System.Number+DiyFp128
    +       mov      rdi, qword ptr [rbp-0x40]
    +       mov      rax, qword ptr [rbp-0x38]
    +       mov      rcx, rdi
    +       or       rcx, rax
    +       je       SHORT G_M55388_IG17
    +       mov      rcx, qword ptr [rbp-0x80]
    +       mov      rdx, qword ptr [rbp-0x78]
    +       mov      rsi, rcx
    +       or       rsi, rdx
    +       je       G_M55388_IG22
    +       mov      esi, dword ptr [rbp-0x44]
    +       mov      r8d, dword ptr [rbp-0x84]
    +       cmp      esi, r8d
            jne      G_M55388_IG21
    -       mov      rsi, 0xD1FFAB1E
    -       cmp      rcx, rsi
    +       cmp      rdi, rcx
            jne      G_M55388_IG20
    -       test     r8, r8
    -       jne      G_M55388_IG22
    -						;; size=36 bbWeight=0.50 PerfScore 2.00
    +       cmp      rax, rdx
    +       ja       G_M55388_IG22
    +						;; size=92 bbWeight=0.50 PerfScore 8.25
     G_M55388_IG17:
    -       lea      rdi, [rbp-0xC8]
    +       lea      rdi, [rbp-0x88]
    +       mov      rax, 0xD1FFAB1E      ; code for System.Number:get_UxHalf():System.Number+DiyFp128
    +       call     [rax]System.Number:get_UxHalf():System.Number+DiyFp128
    +       lea      rdi, [rbp-0xE0]
            lea      rsi, [rbp-0x48]
    -       mov      rdx, 0xD1FFAB1E      ; data for System.Number:UxHalf
    +       lea      rdx, [rbp-0x88]
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Difference(byref,byref):System.Number+DiyFp128
            call     [rax]System.Number:DiyFp128Difference(byref,byref):System.Number+DiyFp128
    -       mov      rdx, 0xD1FFAB1E      ; const ptr
    -       mov      rdx, gword ptr [rdx]
    -       add      rdx, 112
    -       lea      rsi, [rbp-0xC8]
    -       lea      rdi, [rbp-0x110]
    +       lea      rdi, [rbp-0x250]
    +       mov      esi, 4
    +       mov      rax, 0xD1FFAB1E      ; code for System.Number:GetInvTrigConstant(int):System.Number+DiyFp128
    +       call     [rax]System.Number:GetInvTrigConstant(int):System.Number+DiyFp128
    +       lea      rdi, [rbp-0x128]
    +       lea      rsi, [rbp-0xE0]
    +       lea      rdx, [rbp-0x250]
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Product(byref,byref):System.Number+DiyFp128
            call     [rax]System.Number:DiyFp128Product(byref,byref):System.Number+DiyFp128
    -       vmovdqu32 xmm0, xmmword ptr [rbp-0x110]
    -       vmovdqu32 xmmword ptr [rbp-0x230], xmm0
    -       mov      rdi, qword ptr [rbp-0x100]
    -       mov      qword ptr [rbp-0x220], rdi
    -       vmovdqu32 zmm0, zmmword ptr [rbp-0x230]
    -       vmovdqu32 zmmword ptr [rbp-0xB0], zmm0
    +       vmovdqu  xmm0, xmmword ptr [rbp-0x128]
    +       vmovdqu32 xmmword ptr [rbp-0x290], xmm0
    +       mov      rdi, qword ptr [rbp-0x118]
    +       mov      qword ptr [rbp-0x280], rdi
    +       vmovdqu32 zmm0, zmmword ptr [rbp-0x290]
    +       vmovdqu32 zmmword ptr [rbp-0xC8], zmm0
            xor      edi, edi
    -       mov      qword ptr [rbp-0x90], rdi
    -						;; size=133 bbWeight=0.50 PerfScore 10.25
    +       mov      qword ptr [rbp-0xA8], rdi
    +						;; size=164 bbWeight=0.50 PerfScore 13.25
     G_M55388_IG18:
    -       mov      qword ptr [rbp-0x88], rdi
    +       mov      qword ptr [rbp-0xA0], rdi
     						;; size=7 bbWeight=0.50 PerfScore 0.50
     G_M55388_IG19:
    -       mov      qword ptr [rbp-0x80], rdi
    -       mov      byte  ptr [rbp-0x78], 0
    -       lea      rdi, [rbp-0x128]
    -       lea      rsi, [rbp-0xB0]
    +       mov      qword ptr [rbp-0x98], rdi
    +       mov      byte  ptr [rbp-0x90], 0
    +       lea      rdi, [rbp-0x140]
    +       lea      rsi, [rbp-0xC8]
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Sin(byref):System.Number+DiyFp128
            call     [rax]System.Number:DiyFp128Sin(byref):System.Number+DiyFp128
    -       mov      ecx, dword ptr [rbp-0x128]
    -       mov      eax, dword ptr [rbp-0x124]
    -       mov      r8, qword ptr [rbp-0x120]
    -       mov      rsi, qword ptr [rbp-0x118]
    -       xor      ecx, 0xD1FFAB1E
    -       mov      r14d, ecx
    -       mov      rcx, r8
    -       mov      r8, rsi
    -       jmp      G_M55388_IG25
    -						;; size=80 bbWeight=0.50 PerfScore 6.62
    -G_M55388_IG20:
    -       mov      r8, 0xD1FFAB1E
    -       cmp      rcx, r8
    -       jae      SHORT G_M55388_IG22
    -       jmp      G_M55388_IG17
    -						;; size=20 bbWeight=0.50 PerfScore 1.75
    -G_M55388_IG21:
    -       test     esi, esi
    -       jl       G_M55388_IG17
    -						;; size=8 bbWeight=0.50 PerfScore 0.62
    -G_M55388_IG22:
    -       vxorps   xmm0, xmm0, xmm0
    -       vmovdqu  xmmword ptr [rbp-0x248], xmm0
    -       vmovdqu32 xmmword ptr [rbp-0x240], xmm0
    -       lea      rcx, bword ptr [rbp-0x248]
    -       mov      r8d, 1
    -       lea      rsi, [rbp-0x48]
    -       mov      rdi, 0xD1FFAB1E      ; static handle
    -       mov      edx, 1
    -       mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128AddSub(byref,byref,int,System.Span`1[System.Number+DiyFp128])
    -       call     [rax]System.Number:DiyFp128AddSub(byref,byref,int,System.Span`1[System.Number+DiyFp128])
    -       vmovdqu  xmm0, xmmword ptr [rbp-0x248]
    -       vmovdqu  xmmword ptr [rbp-0xC8], xmm0
    -       mov      rdx, qword ptr [rbp-0x238]
    -       mov      qword ptr [rbp-0xB8], rdx
    -       mov      rdx, 0xD1FFAB1E      ; const ptr
    -       mov      rdx, gword ptr [rdx]
    -       add      rdx, 112
    -       lea      rsi, [rbp-0xC8]
    -       lea      rdi, [rbp-0xE0]
    -       mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Product(byref,byref):System.Number+DiyFp128
    -       call     [rax]System.Number:DiyFp128Product(byref,byref):System.Number+DiyFp128
    -       vmovdqu32 xmm0, xmmword ptr [rbp-0xE0]
    -       vmovdqu  xmmword ptr [rbp-0x288], xmm0
    -       mov      rdi, qword ptr [rbp-0xD0]
    -       mov      qword ptr [rbp-0x278], rdi
    -       vmovdqu32 zmm0, zmmword ptr [rbp-0x288]
    -       vmovdqu32 zmmword ptr [rbp-0xB0], zmm0
    -       xor      edi, edi
    -       mov      qword ptr [rbp-0x90], rdi
    -						;; size=194 bbWeight=0.50 PerfScore 13.67
    -G_M55388_IG23:
    -       mov      qword ptr [rbp-0x88], rdi
    -						;; size=7 bbWeight=0.50 PerfScore 0.50
    -G_M55388_IG24:
    -       mov      qword ptr [rbp-0x80], rdi
    -       mov      byte  ptr [rbp-0x78], 0
    -       lea      rdi, [rbp-0xF8]
    -       lea      rsi, [rbp-0xB0]
    -       mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Cos(byref):System.Number+DiyFp128
    -       call     [rax]System.Number:DiyFp128Cos(byref):System.Number+DiyFp128
    -       mov      edi, dword ptr [rbp-0xF8]
    -       mov      eax, dword ptr [rbp-0xF4]
    -       mov      rcx, qword ptr [rbp-0xF0]
    -       mov      r8, qword ptr [rbp-0xE8]
    +       mov      edi, dword ptr [rbp-0x140]
    +       mov      eax, dword ptr [rbp-0x13C]
    +       mov      rcx, qword ptr [rbp-0x138]
    +       mov      rdx, qword ptr [rbp-0x130]
            xor      edi, 0xD1FFAB1E
            mov      r14d, edi
    -						;; size=69 bbWeight=0.50 PerfScore 5.38
    +       jmp      G_M55388_IG25
    +						;; size=80 bbWeight=0.50 PerfScore 6.38
    +G_M55388_IG20:
    +       cmp      rdi, rcx
    +       jae      SHORT G_M55388_IG22
    +       jmp      G_M55388_IG17
    +						;; size=10 bbWeight=0.50 PerfScore 1.62
    +G_M55388_IG21:
    +       cmp      esi, r8d
    +       jl       G_M55388_IG17
    +						;; size=9 bbWeight=0.50 PerfScore 0.62
    +G_M55388_IG22:
    +       lea      rdi, [rbp-0x88]
    +       mov      rax, 0xD1FFAB1E      ; code for System.Number:get_UxOne():System.Number+DiyFp128
    +       call     [rax]System.Number:get_UxOne():System.Number+DiyFp128
    +       lea      rdi, [rbp-0xE0]
    +       lea      rsi, [rbp-0x88]
    +       lea      rdx, [rbp-0x48]
    +       mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Difference(byref,byref):System.Number+DiyFp128
    +       call     [rax]System.Number:DiyFp128Difference(byref,byref):System.Number+DiyFp128
    +       lea      rdi, [rbp-0x2A8]
    +       mov      esi, 4
    +       mov      rax, 0xD1FFAB1E      ; code for System.Number:GetInvTrigConstant(int):System.Number+DiyFp128
    +       call     [rax]System.Number:GetInvTrigConstant(int):System.Number+DiyFp128
    +       lea      rdi, [rbp-0xF8]
    +       lea      rsi, [rbp-0xE0]
    +       lea      rdx, [rbp-0x2A8]
    +       mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Product(byref,byref):System.Number+DiyFp128
    +       call     [rax]System.Number:DiyFp128Product(byref,byref):System.Number+DiyFp128
    +       vmovdqu  xmm0, xmmword ptr [rbp-0xF8]
    +       vmovdqu  xmmword ptr [rbp-0x2E8], xmm0
    +       mov      rdi, qword ptr [rbp-0xE8]
    +       mov      qword ptr [rbp-0x2D8], rdi
    +       vmovdqu32 zmm0, zmmword ptr [rbp-0x2E8]
    +       vmovdqu32 zmmword ptr [rbp-0xC8], zmm0
    +       xor      edi, edi
    +       mov      qword ptr [rbp-0xA8], rdi
    +						;; size=165 bbWeight=0.50 PerfScore 13.25
    +G_M55388_IG23:
    +       mov      qword ptr [rbp-0xA0], rdi
    +						;; size=7 bbWeight=0.50 PerfScore 0.50
    +G_M55388_IG24:
    +       mov      qword ptr [rbp-0x98], rdi
    +       mov      byte  ptr [rbp-0x90], 0
    +       lea      rdi, [rbp-0x110]
    +       lea      rsi, [rbp-0xC8]
    +       mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Cos(byref):System.Number+DiyFp128
    +       call     [rax]System.Number:DiyFp128Cos(byref):System.Number+DiyFp128
    +       mov      edi, dword ptr [rbp-0x110]
    +       mov      eax, dword ptr [rbp-0x10C]
    +       mov      rcx, qword ptr [rbp-0x108]
    +       mov      rdx, qword ptr [rbp-0x100]
    +       xor      edi, 0xD1FFAB1E
    +       mov      r14d, edi
    +						;; size=75 bbWeight=0.50 PerfScore 5.38
     G_M55388_IG25:
    -       mov      rdx, rcx
    -       or       rdx, r8
    +       mov      rdi, rcx
    +       or       rdi, rdx
            je       SHORT G_M55388_IG26
            xor      r15d, r14d
            mov      dword ptr [rbx], r15d
            mov      dword ptr [rbx+0x04], eax
            mov      qword ptr [rbx+0x08], rcx
    -       mov      qword ptr [rbx+0x10], r8
    +       mov      qword ptr [rbx+0x10], rdx
            jmp      SHORT G_M55388_IG28
     						;; size=27 bbWeight=0.50 PerfScore 3.88
     G_M55388_IG26:
            vmovsd   xmm0, qword ptr [reloc @RWD00]
            vmovups  xmmword ptr [rbx], xmm0
    -       xor      eax, eax
    -       mov      qword ptr [rbx+0x10], rax
    +       xor      edi, edi
    +       mov      qword ptr [rbx+0x10], rdi
            jmp      SHORT G_M55388_IG28
     						;; size=20 bbWeight=0.50 PerfScore 3.12
     G_M55388_IG27:
    -       mov      eax, 0xD1FFAB1E
    -       xor      ecx, ecx
    +       lea      rdi, [rbp-0x188]
    +       mov      rax, 0xD1FFAB1E      ; code for System.Number:get_UxOne():System.Number+DiyFp128
    +       call     [rax]System.Number:get_UxOne():System.Number+DiyFp128
    +       mov      eax, dword ptr [rbp-0x188]
    +       mov      ecx, dword ptr [rbp-0x184]
    +       mov      rdx, qword ptr [rbp-0x180]
    +       mov      rdi, qword ptr [rbp-0x178]
    +       mov      esi, 0xD1FFAB1E
    +       xor      r8d, r8d
            cmp      byte  ptr [rbp-0x50], 0
    -       cmove    eax, ecx
    +       cmove    esi, r8d
    +       xor      eax, esi
            mov      dword ptr [rbx], eax
    -       mov      dword ptr [rbx+0x04], 1
    -       vmovsd   xmm0, qword ptr [reloc @RWD08]
    -       vmovups  xmmword ptr [rbx+0x08], xmm0
    -						;; size=36 bbWeight=0.50 PerfScore 3.50
    +       mov      dword ptr [rbx+0x04], ecx
    +       mov      qword ptr [rbx+0x08], rdx
    +       mov      qword ptr [rbx+0x10], rdi
    +						;; size=76 bbWeight=0.50 PerfScore 7.00
     G_M55388_IG28:
            mov      rax, rbx
     						;; size=3 bbWeight=1 PerfScore 0.25
     G_M55388_IG29:
            vzeroupper 
    -       add      rsp, 632
    +       add      rsp, 728
            pop      rbx
            pop      r14
            pop      r15
            pop      rbp
            ret      
     						;; size=17 bbWeight=1 PerfScore 4.25
     RWD00  	dq	FFFE000000000000h
    -RWD08  	dq	8000000000000000h
     
     
    -; Total bytes of code 1298, prolog size 21, PerfScore 120.71, instruction count 242, allocated bytes for code 1298 (MethodHash=f4b427a3) for method System.Number:DiyFp128CosPi(byref):System.Number+DiyFp128 (FullOpts)
    +; Total bytes of code 1463, prolog size 21, PerfScore 143.25, instruction count 280, allocated bytes for code 1463 (MethodHash=f4b427a3) for method System.Number:DiyFp128CosPi(byref):System.Number+DiyFp128 (FullOpts)
     ; ============================================================
    44 (146.67 % of base) - System.Number:DiyFp128TimesPi(byref):System.Number+DiyFp128
     ; Assembly listing for method System.Number:DiyFp128TimesPi(byref):System.Number+DiyFp128 (FullOpts)
     ; Emitting BLENDED_CODE for x64 + VEX + EVEX on Unix
     ; FullOpts code
     ; optimized code
    -; rsp based frame
    -; fully interruptible
    +; rbp based frame
    +; partially interruptible
     ; No PGO data
     ; Final local variable assignments
     ;
    -;  V00 RetBuf       [V00,T01] (  3,  3   )    long  ->  rdi         single-def
    -;  V01 arg0         [V01,T00] (  3,  3   )   byref  ->  rsi         single-def
    -;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
    -;  V03 cse0         [V03,T02] (  2,  2   )     ref  ->  rdx         "CSE #01: aggressive"
    +;  V00 RetBuf       [V00,T00] (  4,  4   )    long  ->  rbx         single-def
    +;  V01 arg0         [V01,T01] (  3,  3   )   byref  ->  r15         single-def
    +;  V02 loc0         [V02    ] (  2,  2   )  struct (24) [rbp-0x28]  do-not-enreg[XDAS] addr-exposed defined-via-address ld-addr-op <System.Number+DiyFp128>
    +;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
     ;
    -; Lcl frame size = 0
    +; Lcl frame size = 32
     
     G_M25573_IG01:
    -						;; size=0 bbWeight=1 PerfScore 0.00
    +       push     rbp
    +       push     r15
    +       push     rbx
    +       sub      rsp, 32
    +       lea      rbp, [rsp+0x30]
    +       mov      rbx, rdi
    +       mov      r15, rsi
    +						;; size=19 bbWeight=1 PerfScore 4.25
     G_M25573_IG02:
    -       mov      rdx, 0xD1FFAB1E      ; const ptr
    -       mov      rdx, gword ptr [rdx]
    -       add      rdx, 112
    +       lea      rdi, [rbp-0x28]
    +       mov      esi, 4
    +       mov      rax, 0xD1FFAB1E      ; code for System.Number:GetInvTrigConstant(int):System.Number+DiyFp128
    +       call     [rax]System.Number:GetInvTrigConstant(int):System.Number+DiyFp128
    +       lea      rdx, [rbp-0x28]
    +       mov      rdi, rbx
    +       mov      rsi, r15
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Product(byref,byref):System.Number+DiyFp128
    -						;; size=27 bbWeight=1 PerfScore 2.75
    +       call     [rax]System.Number:DiyFp128Product(byref,byref):System.Number+DiyFp128
    +       mov      rax, rbx
    +						;; size=46 bbWeight=1 PerfScore 8.50
     G_M25573_IG03:
    -       tail.jmp [rax]System.Number:DiyFp128Product(byref,byref):System.Number+DiyFp128
    -						;; size=3 bbWeight=1 PerfScore 2.00
    +       add      rsp, 32
    +       pop      rbx
    +       pop      r15
    +       pop      rbp
    +       ret      
    +						;; size=9 bbWeight=1 PerfScore 2.75
     
    -; Total bytes of code 30, prolog size 0, PerfScore 4.75, instruction count 5, allocated bytes for code 30 (MethodHash=1c9b9c1a) for method System.Number:DiyFp128TimesPi(byref):System.Number+DiyFp128 (FullOpts)
    +; Total bytes of code 74, prolog size 13, PerfScore 15.50, instruction count 22, allocated bytes for code 74 (MethodHash=1c9b9c1a) for method System.Number:DiyFp128TimesPi(byref):System.Number+DiyFp128 (FullOpts)
     ; ============================================================

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

  2. MihuBot commented on Aug 20, 2026

    @MihuBot
    OwnerAuthor

    Top method improvements

    -19 (-3.11 % of base) - System.Number:DiyFp128Log1p(System.Number+DiyFp128,bool,byref):System.Number+DiyFp128
     ; Assembly listing for method System.Number:DiyFp128Log1p(System.Number+DiyFp128,bool,byref):System.Number+DiyFp128 (FullOpts)
     ; Emitting BLENDED_CODE for x64 + VEX + EVEX on Unix
     ; FullOpts code
     ; optimized code
     ; rbp based frame
     ; partially interruptible
     ; No PGO data
    -; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
    +; 0 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data
     ; Final local variable assignments
     ;
     ;  V00 RetBuf       [V00,T00] (  5,  4   )    long  ->  rbx         single-def
     ;  V01 arg0         [V01    ] (  6,  4   )  struct (24) [rbp+0x10]  do-not-enreg[XSF] addr-exposed ld-addr-op single-def <System.Number+DiyFp128>
     ;  V02 arg1         [V02,T02] (  4,  3   )   ubyte  ->  r14         single-def
     ;  V03 arg2         [V03,T01] (  4,  3   )   byref  ->  r15         single-def
     ;  V04 loc0         [V04,T03] (  3,  2.50)     int  ->  rdi        
    -;  V05 loc1         [V05,T06] (  2,  1.50)     int  ->  rax        
    +;  V05 loc1         [V05,T05] (  2,  1.50)     int  ->  rax        
     ;* V06 loc2         [V06    ] (  0,  0   )   ubyte  ->  zero-ref   
    -;  V07 loc3         [V07,T05] (  3,  1.50)    long  ->  rdi        
    -;  V08 loc4         [V08    ] (  3,  1.50)  struct (24) [rbp-0x38]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Number+DiyFp128>
    -;  V09 loc5         [V09    ] (  3,  1.50)  struct (24) [rbp-0x50]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Number+DiyFp128>
    -;  V10 loc6         [V10    ] (  8,  4   )  struct (24) [rbp-0x68]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Number+DiyFp128>
    -;  V11 loc7         [V11    ] (  4,  2   )  struct (24) [rbp-0x80]  do-not-enreg[XDAS] addr-exposed defined-via-address ld-addr-op <System.Number+DiyFp128>
    -;  V12 loc8         [V12    ] (  2,  1   )  struct (24) [rbp-0x98]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Number+DiyFp128>
    -;  V13 loc9         [V13    ] (  3,  1.50)  struct (24) [rbp-0xB0]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Number+DiyFp128>
    +;  V07 loc3         [V07,T04] (  3,  1.50)    long  ->  rdi        
    +;  V08 loc4         [V08    ] (  3,  1.50)  struct (24) [rbp-0x30]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Number+DiyFp128>
    +;  V09 loc5         [V09    ] (  3,  1.50)  struct (24) [rbp-0x48]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Number+DiyFp128>
    +;  V10 loc6         [V10    ] (  8,  4   )  struct (24) [rbp-0x60]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Number+DiyFp128>
    +;  V11 loc7         [V11    ] (  4,  2   )  struct (24) [rbp-0x78]  do-not-enreg[XDAS] addr-exposed defined-via-address ld-addr-op <System.Number+DiyFp128>
    +;  V12 loc8         [V12    ] (  2,  1   )  struct (24) [rbp-0x90]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Number+DiyFp128>
    +;  V13 loc9         [V13    ] (  3,  1.50)  struct (24) [rbp-0xA8]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Number+DiyFp128>
     ;  V14 OutArgs      [V14    ] (  1,  1   )  struct (24) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <UNNAMED>
    -;  V15 tmp1         [V15,T08] (  2,  1   )    long  ->  rcx        
    +;  V15 tmp1         [V15,T06] (  2,  1   )    long  ->  rcx        
     ;* V16 tmp2         [V16    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[System.Number+DiyFp128]>
     ;* V17 tmp3         [V17    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[System.Number+DiyFp128]>
     ;* V18 tmp4         [V18    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient]>
    -;* V19 tmp5         [V19    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Number+DiyFp128FixedCoefficient[]>
    -;* V20 tmp6         [V20    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient]>
    -;  V21 tmp7         [V21,T04] (  2,  2   )     ref  ->  r13         class-hnd exact single-def "Inlining Arg" <System.Number+DiyFp128FixedCoefficient[]>
    -;  V22 tmp8         [V22    ] (  3,  1.50)  struct (24) [rbp-0xC8]  do-not-enreg[XS] addr-exposed ld-addr-op "Inline stloc first use temp" <System.Number+DiyFp128>
    -;  V23 tmp9         [V23    ] (  4,  2   )  struct (24) [rbp-0xE0]  do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Number+DiyFp128>
    -;* V24 tmp10        [V24    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
    -;  V25 tmp11        [V25    ] (  2,  1   )  struct (24) [rbp-0xF8]  do-not-enreg[XS] addr-exposed ld-addr-op "Inline stloc first use temp" <System.Number+DiyFp128>
    -;  V26 tmp12        [V26    ] (  6,  3   )     int  ->  [rbp-0x68]  do-not-enreg[X] addr-exposed "field V10._sign (fldOffset=0x0)" P-DEP
    -;  V27 tmp13        [V27    ] (  8,  4   )     int  ->  [rbp-0x64]  do-not-enreg[X] addr-exposed "field V10._exponent (fldOffset=0x4)" P-DEP
    -;  V28 tmp14        [V28    ] (  6,  3   )    long  ->  [rbp-0x60]  do-not-enreg[X] addr-exposed "field V10._hi (fldOffset=0x8)" P-DEP
    -;  V29 tmp15        [V29    ] (  6,  3   )    long  ->  [rbp-0x58]  do-not-enreg[X] addr-exposed "field V10._lo (fldOffset=0x10)" P-DEP
    -;* V30 tmp16        [V30,T09] (  0,  0   )   byref  ->  zero-ref    single-def "field V16._reference (fldOffset=0x0)" P-INDEP
    -;* V31 tmp17        [V31    ] (  0,  0   )     int  ->  zero-ref    "field V16._length (fldOffset=0x8)" P-INDEP
    -;* V32 tmp18        [V32,T10] (  0,  0   )   byref  ->  zero-ref    single-def "field V17._reference (fldOffset=0x0)" P-INDEP
    -;* V33 tmp19        [V33    ] (  0,  0   )     int  ->  zero-ref    "field V17._length (fldOffset=0x8)" P-INDEP
    -;* V34 tmp20        [V34    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V18._reference (fldOffset=0x0)" P-INDEP
    -;* V35 tmp21        [V35    ] (  0,  0   )     int  ->  zero-ref    "field V18._length (fldOffset=0x8)" P-INDEP
    -;  V36 tmp22        [V36,T07] (  2,  1   )   byref  ->  r13         "field V20._reference (fldOffset=0x0)" P-INDEP
    -;* V37 tmp23        [V37,T11] (  0,  0   )     int  ->  zero-ref    "field V20._length (fldOffset=0x8)" P-INDEP
    -;  V38 tmp24        [V38    ] (  3,  1.50)     int  ->  [rbp-0xE0]  do-not-enreg[X] addr-exposed "field V23._sign (fldOffset=0x0)" P-DEP
    -;  V39 tmp25        [V39    ] (  4,  2   )     int  ->  [rbp-0xDC]  do-not-enreg[X] addr-exposed "field V23._exponent (fldOffset=0x4)" P-DEP
    -;  V40 tmp26        [V40    ] (  3,  1.50)    long  ->  [rbp-0xD8]  do-not-enreg[X] addr-exposed "field V23._hi (fldOffset=0x8)" P-DEP
    -;  V41 tmp27        [V41    ] (  3,  1.50)    long  ->  [rbp-0xD0]  do-not-enreg[X] addr-exposed "field V23._lo (fldOffset=0x10)" P-DEP
    +;* V19 tmp5         [V19    ] (  0,  0   )  struct (16) zero-ref    "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[ulong]>
    +;* V20 tmp6         [V20    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V21 tmp7         [V21    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V22 tmp8         [V22    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
    +;* V23 tmp9         [V23    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V24 tmp10        [V24    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V25 tmp11        [V25    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient]>
    +;* V26 tmp12        [V26    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
    +;* V27 tmp13        [V27    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
    +;  V28 tmp14        [V28    ] (  3,  1.50)  struct (24) [rbp-0xC0]  do-not-enreg[XS] addr-exposed ld-addr-op "Inline stloc first use temp" <System.Number+DiyFp128>
    +;  V29 tmp15        [V29    ] (  4,  2   )  struct (24) [rbp-0xD8]  do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Number+DiyFp128>
    +;* V30 tmp16        [V30    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
    +;  V31 tmp17        [V31    ] (  2,  1   )  struct (24) [rbp-0xF0]  do-not-enreg[XS] addr-exposed ld-addr-op "Inline stloc first use temp" <System.Number+DiyFp128>
    +;  V32 tmp18        [V32    ] (  6,  3   )     int  ->  [rbp-0x60]  do-not-enreg[X] addr-exposed "field V10._sign (fldOffset=0x0)" P-DEP
    +;  V33 tmp19        [V33    ] (  8,  4   )     int  ->  [rbp-0x5C]  do-not-enreg[X] addr-exposed "field V10._exponent (fldOffset=0x4)" P-DEP
    +;  V34 tmp20        [V34    ] (  6,  3   )    long  ->  [rbp-0x58]  do-not-enreg[X] addr-exposed "field V10._hi (fldOffset=0x8)" P-DEP
    +;  V35 tmp21        [V35    ] (  6,  3   )    long  ->  [rbp-0x50]  do-not-enreg[X] addr-exposed "field V10._lo (fldOffset=0x10)" P-DEP
    +;* V36 tmp22        [V36,T07] (  0,  0   )   byref  ->  zero-ref    single-def "field V16._reference (fldOffset=0x0)" P-INDEP
    +;* V37 tmp23        [V37    ] (  0,  0   )     int  ->  zero-ref    "field V16._length (fldOffset=0x8)" P-INDEP
    +;* V38 tmp24        [V38,T08] (  0,  0   )   byref  ->  zero-ref    single-def "field V17._reference (fldOffset=0x0)" P-INDEP
    +;* V39 tmp25        [V39    ] (  0,  0   )     int  ->  zero-ref    "field V17._length (fldOffset=0x8)" P-INDEP
    +;* V40 tmp26        [V40    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V18._reference (fldOffset=0x0)" P-INDEP
    +;* V41 tmp27        [V41    ] (  0,  0   )     int  ->  zero-ref    "field V18._length (fldOffset=0x8)" P-INDEP
    +;* V42 tmp28        [V42    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V19._reference (fldOffset=0x0)" P-INDEP
    +;* V43 tmp29        [V43    ] (  0,  0   )     int  ->  zero-ref    "field V19._length (fldOffset=0x8)" P-INDEP
    +;* V44 tmp30        [V44    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V22._reference (fldOffset=0x0)" P-INDEP
    +;* V45 tmp31        [V45    ] (  0,  0   )     int  ->  zero-ref    "field V22._length (fldOffset=0x8)" P-INDEP
    +;* V46 tmp32        [V46    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V25._reference (fldOffset=0x0)" P-INDEP
    +;* V47 tmp33        [V47    ] (  0,  0   )     int  ->  zero-ref    "field V25._length (fldOffset=0x8)" P-INDEP
    +;* V48 tmp34        [V48    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V26._reference (fldOffset=0x0)" P-INDEP
    +;* V49 tmp35        [V49    ] (  0,  0   )     int  ->  zero-ref    "field V26._length (fldOffset=0x8)" P-INDEP
    +;  V50 tmp36        [V50    ] (  3,  1.50)     int  ->  [rbp-0xD8]  do-not-enreg[X] addr-exposed "field V29._sign (fldOffset=0x0)" P-DEP
    +;  V51 tmp37        [V51    ] (  4,  2   )     int  ->  [rbp-0xD4]  do-not-enreg[X] addr-exposed "field V29._exponent (fldOffset=0x4)" P-DEP
    +;  V52 tmp38        [V52    ] (  3,  1.50)    long  ->  [rbp-0xD0]  do-not-enreg[X] addr-exposed "field V29._hi (fldOffset=0x8)" P-DEP
    +;  V53 tmp39        [V53    ] (  3,  1.50)    long  ->  [rbp-0xC8]  do-not-enreg[X] addr-exposed "field V29._lo (fldOffset=0x10)" P-DEP
     ;
    -; Lcl frame size = 240
    +; Lcl frame size = 248
     
     G_M34379_IG01:
            push     rbp
            push     r15
            push     r14
    -       push     r13
            push     rbx
    -       sub      rsp, 240
    +       sub      rsp, 248
            lea      rbp, [rsp+0x110]
            mov      rbx, rdi
            mov      r14d, esi
            mov      r15, rdx
    -						;; size=32 bbWeight=1 PerfScore 6.50
    +						;; size=30 bbWeight=1 PerfScore 5.50
     G_M34379_IG02:
            mov      edi, dword ptr [rbp+0x14]
            mov      eax, dword ptr [rbp+0x10]
            test     edi, edi
            jge      SHORT G_M34379_IG04
     						;; size=10 bbWeight=1 PerfScore 3.25
     G_M34379_IG03:
            cmp      edi, -2
            jle      G_M34379_IG05
            mov      rdi, qword ptr [rbp+0x18]
            shr      rdi, 2
            mov      rcx, rdi
            neg      rcx
            test     eax, eax
            cmove    rcx, rdi
            mov      rdi, 0xD1FFAB1E
            add      rdi, rcx
            mov      rax, 0xD1FFAB1E
            cmp      rdi, rax
            jb       SHORT G_M34379_IG05
     						;; size=57 bbWeight=0.50 PerfScore 3.00
     G_M34379_IG04:
            vxorps   xmm0, xmm0, xmm0
    -       vmovdqu32 xmmword ptr [rbp-0xB0], xmm0
            vmovdqu  xmmword ptr [rbp-0xA8], xmm0
    -       lea      rdi, [rbp-0x80]
    +       vmovdqu32 xmmword ptr [rbp-0xA0], xmm0
    +       lea      rdi, [rbp-0x78]
            mov      rax, 0xD1FFAB1E      ; code for System.Number:get_DiyFp128One():System.Number+DiyFp128
            call     [rax]System.Number:get_DiyFp128One():System.Number+DiyFp128
    -       lea      rcx, bword ptr [rbp-0xB0]
    +       lea      rcx, bword ptr [rbp-0xA8]
            mov      r8d, 1
            lea      rsi, [rbp+0x10]
    -       lea      rdi, [rbp-0x80]
    +       lea      rdi, [rbp-0x78]
            xor      edx, edx
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128AddSub(byref,byref,int,System.Span`1[System.Number+DiyFp128])
            call     [rax]System.Number:DiyFp128AddSub(byref,byref,int,System.Span`1[System.Number+DiyFp128])
    -       vmovdqu32 xmm0, xmmword ptr [rbp-0xB0]
    +       vmovdqu  xmm0, xmmword ptr [rbp-0xA8]
            vmovdqu  xmmword ptr [rsp], xmm0
    -       mov      rsi, qword ptr [rbp-0xA0]
    +       mov      rsi, qword ptr [rbp-0x98]
            mov      qword ptr [rsp+0x10], rsi
            movzx    rsi, r14b
            mov      rdi, rbx
            mov      rdx, r15
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Log(System.Number+DiyFp128,bool,byref):System.Number+DiyFp128
            call     [rax]System.Number:DiyFp128Log(System.Number+DiyFp128,bool,byref):System.Number+DiyFp128
            jmp      G_M34379_IG08
    -						;; size=121 bbWeight=0.50 PerfScore 10.67
    +						;; size=122 bbWeight=0.50 PerfScore 10.67
     G_M34379_IG05:
            vxorps   xmm0, xmm0, xmm0
    -       vmovdqu  xmmword ptr [rbp-0x38], xmm0
            vmovdqu  xmmword ptr [rbp-0x30], xmm0
    -       lea      rdi, [rbp-0x80]
    +       vmovdqu  xmmword ptr [rbp-0x28], xmm0
    +       lea      rdi, [rbp-0x78]
            mov      rax, 0xD1FFAB1E      ; code for System.Number:get_LogTwo():System.Number+DiyFp128
            call     [rax]System.Number:get_LogTwo():System.Number+DiyFp128
    -       lea      rcx, bword ptr [rbp-0x38]
    +       lea      rcx, bword ptr [rbp-0x30]
            mov      r8d, 1
            lea      rsi, [rbp+0x10]
    -       lea      rdi, [rbp-0x80]
    +       lea      rdi, [rbp-0x78]
            xor      edx, edx
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128AddSub(byref,byref,int,System.Span`1[System.Number+DiyFp128])
            call     [rax]System.Number:DiyFp128AddSub(byref,byref,int,System.Span`1[System.Number+DiyFp128])
            lea      rdi, [rbp+0x10]
    -       lea      rsi, [rbp-0x38]
    -       lea      rcx, [rbp-0x50]
    +       lea      rsi, [rbp-0x30]
    +       lea      rcx, [rbp-0x48]
            mov      edx, 2
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Divide(byref,byref,int,byref)
            call     [rax]System.Number:DiyFp128Divide(byref,byref,int,byref)
    -       mov      rdi, 0xD1FFAB1E      ; const ptr
    -       mov      r13, gword ptr [rdi]
    -       add      r13, 16
    -       vmovdqu  xmm0, xmmword ptr [rbp-0x50]
    -       vmovdqu  xmmword ptr [rbp-0xC8], xmm0
    -       mov      rdi, qword ptr [rbp-0x40]
    -       mov      qword ptr [rbp-0xB8], rdi
    -       lea      rdi, [rbp-0xC8]
    -       lea      rsi, [rbp-0xC8]
    -       lea      rdx, [rbp-0xE0]
    +       vmovdqu  xmm0, xmmword ptr [rbp-0x48]
    +       vmovdqu32 xmmword ptr [rbp-0xC0], xmm0
    +       mov      rdi, qword ptr [rbp-0x38]
    +       mov      qword ptr [rbp-0xB0], rdi
    +       lea      rdi, [rbp-0xC0]
    +       lea      rsi, [rbp-0xC0]
    +       lea      rdx, [rbp-0xD8]
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Multiply(byref,byref,byref)
            call     [rax]System.Number:DiyFp128Multiply(byref,byref,byref)
    -       lea      rdi, [rbp-0xE0]
    +       lea      rdi, [rbp-0xD8]
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Normalize(byref)
            call     [rax]System.Number:DiyFp128Normalize(byref)
    -       lea      rsi, [rbp-0x68]
    +       lea      rsi, [rbp-0x60]
            mov      qword ptr [rsp], rsi
    -       movsxd   rsi, dword ptr [rbp-0xDC]
    +       movsxd   rsi, dword ptr [rbp-0xD4]
            imul     rsi, rsi, -17
    -       mov      rdx, r13
    +       mov      rdx, 0xD1FFAB1E      ; static handle
            mov      ecx, 18
    -       lea      rdi, [rbp-0xE0]
    +       lea      rdi, [rbp-0xD8]
            xor      r8d, r8d
            mov      r9d, 17
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128EvaluatePositivePolynomial(byref,long,System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient],int,long,byref)
    -						;; size=237 bbWeight=0.50 PerfScore 18.79
    -G_M34379_IG06:
            call     [rax]System.Number:DiyFp128EvaluatePositivePolynomial(byref,long,System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient],int,long,byref)
    -       vmovdqu  xmm0, xmmword ptr [rbp-0x50]
    -       vmovdqu  xmmword ptr [rbp-0xF8], xmm0
    -       mov      rdi, qword ptr [rbp-0x40]
    -       mov      qword ptr [rbp-0xE8], rdi
    -       lea      rdi, [rbp-0xF8]
    -       lea      rsi, [rbp-0x68]
    -       lea      rdx, [rbp-0x68]
    +       vmovdqu  xmm0, xmmword ptr [rbp-0x48]
    +						;; size=233 bbWeight=0.50 PerfScore 19.54
    +G_M34379_IG06:
    +       vmovdqu32 xmmword ptr [rbp-0xF0], xmm0
    +       mov      rdi, qword ptr [rbp-0x38]
    +       mov      qword ptr [rbp-0xE0], rdi
    +       lea      rdi, [rbp-0xF0]
    +       lea      rsi, [rbp-0x60]
    +       lea      rdx, [rbp-0x60]
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Multiply(byref,byref,byref)
            call     [rax]System.Number:DiyFp128Multiply(byref,byref,byref)
    -       mov      edi, dword ptr [rbp-0x64]
    +       mov      edi, dword ptr [rbp-0x5C]
            add      edi, 2
    -       mov      dword ptr [rbp-0x64], edi
    +       mov      dword ptr [rbp-0x5C], edi
            test     r14b, r14b
            je       SHORT G_M34379_IG07
            vmovdqu  xmm0, xmmword ptr [r15]
    -       vmovdqu  xmmword ptr [rbp-0x98], xmm0
    +       vmovdqu32 xmmword ptr [rbp-0x90], xmm0
            mov      rdi, qword ptr [r15+0x10]
    -       mov      qword ptr [rbp-0x88], rdi
    -       lea      rdi, [rbp-0x68]
    -       lea      rsi, [rbp-0x98]
    -       lea      rdx, [rbp-0x68]
    +       mov      qword ptr [rbp-0x80], rdi
    +       lea      rdi, [rbp-0x60]
    +       lea      rsi, [rbp-0x90]
    +       lea      rdx, [rbp-0x60]
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Multiply(byref,byref,byref)
            call     [rax]System.Number:DiyFp128Multiply(byref,byref,byref)
    -						;; size=118 bbWeight=0.50 PerfScore 13.00
    +						;; size=106 bbWeight=0.50 PerfScore 11.00
     G_M34379_IG07:
    -       vmovdqu  xmm0, xmmword ptr [rbp-0x68]
    +       vmovdqu  xmm0, xmmword ptr [rbp-0x60]
            vmovdqu  xmmword ptr [rbx], xmm0
    -       mov      rax, qword ptr [rbp-0x58]
    +       mov      rax, qword ptr [rbp-0x50]
            mov      qword ptr [rbx+0x10], rax
     						;; size=17 bbWeight=0.50 PerfScore 2.00
     G_M34379_IG08:
            mov      rax, rbx
     						;; size=3 bbWeight=1 PerfScore 0.25
     G_M34379_IG09:
    -       add      rsp, 240
    +       add      rsp, 248
            pop      rbx
    -       pop      r13
            pop      r14
            pop      r15
            pop      rbp
            ret      
    -						;; size=16 bbWeight=1 PerfScore 3.75
    +						;; size=14 bbWeight=1 PerfScore 3.25
     
    -; Total bytes of code 611, prolog size 23, PerfScore 61.21, instruction count 130, allocated bytes for code 611 (MethodHash=819c79b4) for method System.Number:DiyFp128Log1p(System.Number+DiyFp128,bool,byref):System.Number+DiyFp128 (FullOpts)
    +; Total bytes of code 592, prolog size 21, PerfScore 58.46, instruction count 125, allocated bytes for code 592 (MethodHash=819c79b4) for method System.Number:DiyFp128Log1p(System.Number+DiyFp128,bool,byref):System.Number+DiyFp128 (FullOpts)
     ; ============================================================
    -19 (-5.60 % of base) - System.Number:DiyFp128Tan(byref):System.Number+DiyFp128
     ; Assembly listing for method System.Number:DiyFp128Tan(byref):System.Number+DiyFp128 (FullOpts)
     ; Emitting BLENDED_CODE for x64 + VEX + EVEX on Unix
     ; FullOpts code
     ; optimized code
     ; rbp based frame
     ; partially interruptible
     ; No PGO data
    -; 0 inlinees with PGO data; 7 single block inlinees; 3 inlinees without PGO data
    +; 0 inlinees with PGO data; 13 single block inlinees; 3 inlinees without PGO data
     ; Final local variable assignments
     ;
     ;  V00 RetBuf       [V00,T01] (  5,  4   )    long  ->  rbx         single-def
     ;  V01 arg0         [V01,T00] (  8,  5.50)   byref  ->  rax         single-def
     ;* V02 loc0         [V02    ] (  0,  0   )     int  ->  zero-ref   
     ;  V03 loc1         [V03    ] (  6,  4   )  struct (24) [rbp-0x28]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Number+DiyFp128>
     ;* V04 loc2         [V04    ] (  0,  0   )     int  ->  zero-ref   
    -;  V05 loc3         [V05,T07] (  2,  1   )     int  ->  rsi        
    +;  V05 loc3         [V05,T03] (  2,  1   )     int  ->  rsi        
     ;* V06 loc4         [V06    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Span`1[System.Number+DiyFp128]>
     ;  V07 loc5         [V07    ] (  7,  3.50)  struct (48) [rbp-0x58]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Runtime.CompilerServices.InlineArray2`1[System.Number+DiyFp128]>
     ;  V08 OutArgs      [V08    ] (  1,  1   )  struct (40) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <UNNAMED>
    -;  V09 tmp1         [V09,T08] (  2,  1   )     int  ->  rsi        
    +;  V09 tmp1         [V09,T04] (  2,  1   )     int  ->  rsi        
     ;* V10 tmp2         [V10    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient]>
     ;* V11 tmp3         [V11    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient]>
     ;* V12 tmp4         [V12    ] (  0,  0   )   byref  ->  zero-ref    single-def "dup spill"
     ;  V13 tmp5         [V13,T02] (  4,  2   )     int  ->  r15         "Inline return value spill temp"
     ;* V14 tmp6         [V14    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.Number+DiyFp128]>
    -;* V15 tmp7         [V15    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Number+DiyFp128FixedCoefficient[]>
    -;* V16 tmp8         [V16    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient]>
    -;  V17 tmp9         [V17,T03] (  2,  2   )     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <System.Number+DiyFp128FixedCoefficient[]>
    -;* V18 tmp10        [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Number+DiyFp128FixedCoefficient[]>
    -;* V19 tmp11        [V19    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient]>
    -;  V20 tmp12        [V20,T04] (  2,  2   )     ref  ->   r8         class-hnd exact single-def "Inlining Arg" <System.Number+DiyFp128FixedCoefficient[]>
    -;  V21 tmp13        [V21    ] (  4,  2   )     int  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed "field V03._sign (fldOffset=0x0)" P-DEP
    -;  V22 tmp14        [V22    ] (  4,  2   )     int  ->  [rbp-0x24]  do-not-enreg[X] addr-exposed "field V03._exponent (fldOffset=0x4)" P-DEP
    -;  V23 tmp15        [V23    ] (  5,  3   )    long  ->  [rbp-0x20]  do-not-enreg[X] addr-exposed "field V03._hi (fldOffset=0x8)" P-DEP
    -;  V24 tmp16        [V24    ] (  5,  3   )    long  ->  [rbp-0x18]  do-not-enreg[X] addr-exposed "field V03._lo (fldOffset=0x10)" P-DEP
    -;* V25 tmp17        [V25    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V06._reference (fldOffset=0x0)" P-INDEP
    -;* V26 tmp18        [V26    ] (  0,  0   )     int  ->  zero-ref    "field V06._length (fldOffset=0x8)" P-INDEP
    -;* V27 tmp19        [V27    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V10._reference (fldOffset=0x0)" P-INDEP
    -;* V28 tmp20        [V28    ] (  0,  0   )     int  ->  zero-ref    "field V10._length (fldOffset=0x8)" P-INDEP
    -;* V29 tmp21        [V29    ] (  0,  0   )   byref  ->  zero-ref    "field V11._reference (fldOffset=0x0)" P-INDEP
    -;* V30 tmp22        [V30    ] (  0,  0   )     int  ->  zero-ref    "field V11._length (fldOffset=0x8)" P-INDEP
    -;* V31 tmp23        [V31,T09] (  0,  0   )   byref  ->  zero-ref    single-def "field V14._reference (fldOffset=0x0)" P-INDEP
    -;* V32 tmp24        [V32    ] (  0,  0   )     int  ->  zero-ref    "field V14._length (fldOffset=0x8)" P-INDEP
    -;  V33 tmp25        [V33,T05] (  2,  1   )   byref  ->  rdx         "field V16._reference (fldOffset=0x0)" P-INDEP
    -;* V34 tmp26        [V34,T10] (  0,  0   )     int  ->  zero-ref    "field V16._length (fldOffset=0x8)" P-INDEP
    -;  V35 tmp27        [V35,T06] (  2,  1   )   byref  ->   r8         "field V19._reference (fldOffset=0x0)" P-INDEP
    -;* V36 tmp28        [V36,T11] (  0,  0   )     int  ->  zero-ref    "field V19._length (fldOffset=0x8)" P-INDEP
    -;* V37 tmp29        [V37    ] (  0,  0   )   byref  ->  zero-ref    single-def "Zero offset field obj"
    +;* V15 tmp7         [V15    ] (  0,  0   )  struct (16) zero-ref    "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[ulong]>
    +;* V16 tmp8         [V16    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V17 tmp9         [V17    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V18 tmp10        [V18    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
    +;* V19 tmp11        [V19    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V20 tmp12        [V20    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V21 tmp13        [V21    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient]>
    +;* V22 tmp14        [V22    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
    +;* V23 tmp15        [V23    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
    +;* V24 tmp16        [V24    ] (  0,  0   )  struct (16) zero-ref    "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[ulong]>
    +;* V25 tmp17        [V25    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V26 tmp18        [V26    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V27 tmp19        [V27    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
    +;* V28 tmp20        [V28    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V29 tmp21        [V29    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V30 tmp22        [V30    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient]>
    +;* V31 tmp23        [V31    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
    +;* V32 tmp24        [V32    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
    +;  V33 tmp25        [V33    ] (  4,  2   )     int  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed "field V03._sign (fldOffset=0x0)" P-DEP
    +;  V34 tmp26        [V34    ] (  4,  2   )     int  ->  [rbp-0x24]  do-not-enreg[X] addr-exposed "field V03._exponent (fldOffset=0x4)" P-DEP
    +;  V35 tmp27        [V35    ] (  5,  3   )    long  ->  [rbp-0x20]  do-not-enreg[X] addr-exposed "field V03._hi (fldOffset=0x8)" P-DEP
    +;  V36 tmp28        [V36    ] (  5,  3   )    long  ->  [rbp-0x18]  do-not-enreg[X] addr-exposed "field V03._lo (fldOffset=0x10)" P-DEP
    +;* V37 tmp29        [V37    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V06._reference (fldOffset=0x0)" P-INDEP
    +;* V38 tmp30        [V38    ] (  0,  0   )     int  ->  zero-ref    "field V06._length (fldOffset=0x8)" P-INDEP
    +;* V39 tmp31        [V39    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V10._reference (fldOffset=0x0)" P-INDEP
    +;* V40 tmp32        [V40    ] (  0,  0   )     int  ->  zero-ref    "field V10._length (fldOffset=0x8)" P-INDEP
    +;* V41 tmp33        [V41    ] (  0,  0   )   byref  ->  zero-ref    "field V11._reference (fldOffset=0x0)" P-INDEP
    +;* V42 tmp34        [V42    ] (  0,  0   )     int  ->  zero-ref    "field V11._length (fldOffset=0x8)" P-INDEP
    +;* V43 tmp35        [V43,T05] (  0,  0   )   byref  ->  zero-ref    single-def "field V14._reference (fldOffset=0x0)" P-INDEP
    +;* V44 tmp36        [V44    ] (  0,  0   )     int  ->  zero-ref    "field V14._length (fldOffset=0x8)" P-INDEP
    +;* V45 tmp37        [V45    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V15._reference (fldOffset=0x0)" P-INDEP
    +;* V46 tmp38        [V46    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
    +;* V47 tmp39        [V47    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V18._reference (fldOffset=0x0)" P-INDEP
    +;* V48 tmp40        [V48    ] (  0,  0   )     int  ->  zero-ref    "field V18._length (fldOffset=0x8)" P-INDEP
    +;* V49 tmp41        [V49    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V21._reference (fldOffset=0x0)" P-INDEP
    +;* V50 tmp42        [V50    ] (  0,  0   )     int  ->  zero-ref    "field V21._length (fldOffset=0x8)" P-INDEP
    +;* V51 tmp43        [V51    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V22._reference (fldOffset=0x0)" P-INDEP
    +;* V52 tmp44        [V52    ] (  0,  0   )     int  ->  zero-ref    "field V22._length (fldOffset=0x8)" P-INDEP
    +;* V53 tmp45        [V53    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V24._reference (fldOffset=0x0)" P-INDEP
    +;* V54 tmp46        [V54    ] (  0,  0   )     int  ->  zero-ref    "field V24._length (fldOffset=0x8)" P-INDEP
    +;* V55 tmp47        [V55    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V27._reference (fldOffset=0x0)" P-INDEP
    +;* V56 tmp48        [V56    ] (  0,  0   )     int  ->  zero-ref    "field V27._length (fldOffset=0x8)" P-INDEP
    +;* V57 tmp49        [V57    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V30._reference (fldOffset=0x0)" P-INDEP
    +;* V58 tmp50        [V58    ] (  0,  0   )     int  ->  zero-ref    "field V30._length (fldOffset=0x8)" P-INDEP
    +;* V59 tmp51        [V59    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V31._reference (fldOffset=0x0)" P-INDEP
    +;* V60 tmp52        [V60    ] (  0,  0   )     int  ->  zero-ref    "field V31._length (fldOffset=0x8)" P-INDEP
    +;* V61 tmp53        [V61    ] (  0,  0   )   byref  ->  zero-ref    single-def "Zero offset field obj"
     ;
     ; Lcl frame size = 112
     
     G_M64545_IG01:
            push     rbp
            push     r15
            push     rbx
            sub      rsp, 112
            lea      rbp, [rsp+0x80]
            mov      rbx, rdi
            mov      rax, rsi
     						;; size=22 bbWeight=1 PerfScore 4.25
     G_M64545_IG02:
            cmp      byte  ptr [rax+0x38], 0
            jne      SHORT G_M64545_IG04
     						;; size=6 bbWeight=1 PerfScore 3.00
     G_M64545_IG03:
            lea      rdx, [rbp-0x28]
            mov      rdi, rax
            xor      esi, esi
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128RadianReduce(byref,int,byref):int
            call     [rax]System.Number:DiyFp128RadianReduce(byref,int,byref):int
            mov      r15d, eax
            jmp      SHORT G_M64545_IG05
     						;; size=26 bbWeight=0.50 PerfScore 3.25
     G_M64545_IG04:
            mov      rsi, qword ptr [rax+0x20]
            mov      rdx, qword ptr [rax+0x28]
            mov      edi, dword ptr [rax+0x34]
            mov      ecx, dword ptr [rax+0x30]
            lea      r9, [rbp-0x28]
            xor      r8d, r8d
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128DecimalRadianReduce(uint,System.UInt128,int,int,byref):int
            call     [rax]System.Number:DiyFp128DecimalRadianReduce(uint,System.UInt128,int,int,byref):int
            mov      r15d, eax
     						;; size=36 bbWeight=0.50 PerfScore 6.12
     G_M64545_IG05:
            mov      rsi, qword ptr [rbp-0x20]
            or       rsi, qword ptr [rbp-0x18]
            je       G_M64545_IG08
     						;; size=14 bbWeight=1 PerfScore 3.00
     G_M64545_IG06:
            mov      esi, 512
            xor      edx, edx
            test     r15b, 1
            cmove    esi, edx
            or       esi, 206
            vxorps   ymm0, ymm0, ymm0
            vmovdqu  ymmword ptr [rbp-0x58], ymm0
            vmovdqu  xmmword ptr [rbp-0x38], xmm0
            vxorps   xmm0, xmm0, xmm0
            vmovdqu  xmmword ptr [rbp-0x58], xmm0
            vmovdqu  xmmword ptr [rbp-0x50], xmm0
            vxorps   xmm0, xmm0, xmm0
            vmovdqu  xmmword ptr [rbp-0x40], xmm0
            vmovdqu  xmmword ptr [rbp-0x38], xmm0
    -       mov      rdx, 0xD1FFAB1E      ; const ptr
    -       mov      rdx, gword ptr [rdx]
    -       add      rdx, 16
    -       mov      r8, 0xD1FFAB1E      ; const ptr
    -       mov      r8, gword ptr [r8]
    -       add      r8, 16
            mov      dword ptr [rsp], 1
            mov      dword ptr [rsp+0x08], 7
            mov      dword ptr [rsp+0x10], esi
            lea      rsi, bword ptr [rbp-0x58]
    -       mov      r9d, 2
    +       mov      edx, 2
            mov      bword ptr [rsp+0x18], rsi
    -       mov      dword ptr [rsp+0x20], r9d
    -       mov      rsi, rdx
    +       mov      dword ptr [rsp+0x20], edx
    +       mov      rsi, 0xD1FFAB1E      ; static handle
            mov      edx, 8
    +       mov      r8, 0xD1FFAB1E      ; static handle
            mov      r9d, 8
            lea      rdi, [rbp-0x28]
            mov      ecx, 1
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128EvaluateRational(byref,System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient],int,System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient],int,int,int,System.Span`1[System.Number+DiyFp128])
            call     [rax]System.Number:DiyFp128EvaluateRational(byref,System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient],int,System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient],int,int,int,System.Span`1[System.Number+DiyFp128])
            test     r15b, 1
            je       SHORT G_M64545_IG07
            mov      eax, dword ptr [rbp-0x58]
            xor      eax, 0xD1FFAB1E
            mov      dword ptr [rbp-0x58], eax
    -						;; size=187 bbWeight=0.50 PerfScore 13.75
    +						;; size=168 bbWeight=0.50 PerfScore 11.38
     G_M64545_IG07:
            vmovdqu  xmm0, xmmword ptr [rbp-0x58]
            vmovdqu  xmmword ptr [rbx], xmm0
            mov      rax, qword ptr [rbp-0x48]
            mov      qword ptr [rbx+0x10], rax
            jmp      SHORT G_M64545_IG09
     						;; size=19 bbWeight=0.50 PerfScore 3.00
     G_M64545_IG08:
            vmovdqu  xmm0, xmmword ptr [rbp-0x28]
            vmovdqu  xmmword ptr [rbx], xmm0
            mov      rax, qword ptr [rbp-0x18]
            mov      qword ptr [rbx+0x10], rax
     						;; size=17 bbWeight=0.50 PerfScore 2.00
     G_M64545_IG09:
            mov      rax, rbx
     						;; size=3 bbWeight=1 PerfScore 0.25
     G_M64545_IG10:
            add      rsp, 112
            pop      rbx
            pop      r15
            pop      rbp
            ret      
     						;; size=9 bbWeight=1 PerfScore 2.75
     
    -; Total bytes of code 339, prolog size 16, PerfScore 41.38, instruction count 82, allocated bytes for code 339 (MethodHash=04d503de) for method System.Number:DiyFp128Tan(byref):System.Number+DiyFp128 (FullOpts)
    +; Total bytes of code 320, prolog size 16, PerfScore 39.00, instruction count 77, allocated bytes for code 320 (MethodHash=04d503de) for method System.Number:DiyFp128Tan(byref):System.Number+DiyFp128 (FullOpts)
     ; ============================================================
    -14 (-8.00 % of base) - System.Number:DiyFp128EvaluatePow2Polynomial(byref,byref)
     ; Assembly listing for method System.Number:DiyFp128EvaluatePow2Polynomial(byref,byref) (FullOpts)
     ; Emitting BLENDED_CODE for x64 + VEX + EVEX on Unix
     ; FullOpts code
     ; optimized code
     ; rbp based frame
     ; partially interruptible
     ; No PGO data
    -; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
    +; 0 inlinees with PGO data; 8 single block inlinees; 2 inlinees without PGO data
     ; Final local variable assignments
     ;
     ;  V00 arg0         [V00,T01] (  3,  3   )   byref  ->  rdi         single-def
     ;  V01 arg1         [V01,T00] (  6,  5   )   byref  ->  rbx         single-def
     ;  V02 loc0         [V02    ] (  6,  5   )  struct (24) [rbp-0x20]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Number+DiyFp128>
     ;  V03 loc1         [V03,T02] (  3,  2   )    long  ->  rsi        
     ;  V04 OutArgs      [V04    ] (  1,  1   )  struct ( 8) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <UNNAMED>
     ;* V05 tmp1         [V05    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient]>
     ;* V06 tmp2         [V06    ] (  0,  0   )   byref  ->  zero-ref    "dup spill"
     ;* V07 tmp3         [V07    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient]>
    -;* V08 tmp4         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Number+DiyFp128FixedCoefficient[]>
    -;* V09 tmp5         [V09    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient]>
    -;  V10 tmp6         [V10,T03] (  2,  2   )     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <System.Number+DiyFp128FixedCoefficient[]>
    -;* V11 tmp7         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Number+DiyFp128FixedCoefficient[]>
    -;* V12 tmp8         [V12    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient]>
    -;  V13 tmp9         [V13,T04] (  2,  2   )     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <System.Number+DiyFp128FixedCoefficient[]>
    -;  V14 tmp10        [V14    ] (  5,  4   )     int  ->  [rbp-0x20]  do-not-enreg[X] addr-exposed "field V02._sign (fldOffset=0x0)" P-DEP
    -;  V15 tmp11        [V15    ] (  5,  4   )     int  ->  [rbp-0x1C]  do-not-enreg[X] addr-exposed "field V02._exponent (fldOffset=0x4)" P-DEP
    -;  V16 tmp12        [V16    ] (  4,  3   )    long  ->  [rbp-0x18]  do-not-enreg[X] addr-exposed "field V02._hi (fldOffset=0x8)" P-DEP
    -;  V17 tmp13        [V17    ] (  4,  3   )    long  ->  [rbp-0x10]  do-not-enreg[X] addr-exposed "field V02._lo (fldOffset=0x10)" P-DEP
    -;* V18 tmp14        [V18    ] (  0,  0   )   byref  ->  zero-ref    "field V05._reference (fldOffset=0x0)" P-INDEP
    -;* V19 tmp15        [V19    ] (  0,  0   )     int  ->  zero-ref    "field V05._length (fldOffset=0x8)" P-INDEP
    -;* V20 tmp16        [V20    ] (  0,  0   )   byref  ->  zero-ref    "field V07._reference (fldOffset=0x0)" P-INDEP
    -;* V21 tmp17        [V21    ] (  0,  0   )     int  ->  zero-ref    "field V07._length (fldOffset=0x8)" P-INDEP
    -;  V22 tmp18        [V22,T05] (  2,  1   )   byref  ->  rdx         "field V09._reference (fldOffset=0x0)" P-INDEP
    -;* V23 tmp19        [V23,T07] (  0,  0   )     int  ->  zero-ref    "field V09._length (fldOffset=0x8)" P-INDEP
    -;  V24 tmp20        [V24,T06] (  2,  1   )   byref  ->  rdx         "field V12._reference (fldOffset=0x0)" P-INDEP
    -;* V25 tmp21        [V25,T08] (  0,  0   )     int  ->  zero-ref    "field V12._length (fldOffset=0x8)" P-INDEP
    +;* V08 tmp4         [V08    ] (  0,  0   )  struct (16) zero-ref    "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[ulong]>
    +;* V09 tmp5         [V09    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V10 tmp6         [V10    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V11 tmp7         [V11    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
    +;* V12 tmp8         [V12    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V13 tmp9         [V13    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V14 tmp10        [V14    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient]>
    +;* V15 tmp11        [V15    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
    +;* V16 tmp12        [V16    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
    +;* V17 tmp13        [V17    ] (  0,  0   )  struct (16) zero-ref    "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[ulong]>
    +;* V18 tmp14        [V18    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V19 tmp15        [V19    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V20 tmp16        [V20    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
    +;* V21 tmp17        [V21    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V22 tmp18        [V22    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V23 tmp19        [V23    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient]>
    +;* V24 tmp20        [V24    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
    +;* V25 tmp21        [V25    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
    +;  V26 tmp22        [V26    ] (  5,  4   )     int  ->  [rbp-0x20]  do-not-enreg[X] addr-exposed "field V02._sign (fldOffset=0x0)" P-DEP
    +;  V27 tmp23        [V27    ] (  5,  4   )     int  ->  [rbp-0x1C]  do-not-enreg[X] addr-exposed "field V02._exponent (fldOffset=0x4)" P-DEP
    +;  V28 tmp24        [V28    ] (  4,  3   )    long  ->  [rbp-0x18]  do-not-enreg[X] addr-exposed "field V02._hi (fldOffset=0x8)" P-DEP
    +;  V29 tmp25        [V29    ] (  4,  3   )    long  ->  [rbp-0x10]  do-not-enreg[X] addr-exposed "field V02._lo (fldOffset=0x10)" P-DEP
    +;* V30 tmp26        [V30    ] (  0,  0   )   byref  ->  zero-ref    "field V05._reference (fldOffset=0x0)" P-INDEP
    +;* V31 tmp27        [V31    ] (  0,  0   )     int  ->  zero-ref    "field V05._length (fldOffset=0x8)" P-INDEP
    +;* V32 tmp28        [V32    ] (  0,  0   )   byref  ->  zero-ref    "field V07._reference (fldOffset=0x0)" P-INDEP
    +;* V33 tmp29        [V33    ] (  0,  0   )     int  ->  zero-ref    "field V07._length (fldOffset=0x8)" P-INDEP
    +;* V34 tmp30        [V34    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V08._reference (fldOffset=0x0)" P-INDEP
    +;* V35 tmp31        [V35    ] (  0,  0   )     int  ->  zero-ref    "field V08._length (fldOffset=0x8)" P-INDEP
    +;* V36 tmp32        [V36    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V11._reference (fldOffset=0x0)" P-INDEP
    +;* V37 tmp33        [V37    ] (  0,  0   )     int  ->  zero-ref    "field V11._length (fldOffset=0x8)" P-INDEP
    +;* V38 tmp34        [V38    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V14._reference (fldOffset=0x0)" P-INDEP
    +;* V39 tmp35        [V39    ] (  0,  0   )     int  ->  zero-ref    "field V14._length (fldOffset=0x8)" P-INDEP
    +;* V40 tmp36        [V40    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V15._reference (fldOffset=0x0)" P-INDEP
    +;* V41 tmp37        [V41    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
    +;* V42 tmp38        [V42    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V17._reference (fldOffset=0x0)" P-INDEP
    +;* V43 tmp39        [V43    ] (  0,  0   )     int  ->  zero-ref    "field V17._length (fldOffset=0x8)" P-INDEP
    +;* V44 tmp40        [V44    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V20._reference (fldOffset=0x0)" P-INDEP
    +;* V45 tmp41        [V45    ] (  0,  0   )     int  ->  zero-ref    "field V20._length (fldOffset=0x8)" P-INDEP
    +;* V46 tmp42        [V46    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V23._reference (fldOffset=0x0)" P-INDEP
    +;* V47 tmp43        [V47    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x8)" P-INDEP
    +;* V48 tmp44        [V48    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V24._reference (fldOffset=0x0)" P-INDEP
    +;* V49 tmp45        [V49    ] (  0,  0   )     int  ->  zero-ref    "field V24._length (fldOffset=0x8)" P-INDEP
     ;
     ; Lcl frame size = 40
     
     G_M6143_IG01:
            push     rbp
            push     rbx
            sub      rsp, 40
            lea      rbp, [rsp+0x30]
            mov      rbx, rsi
     						;; size=14 bbWeight=1 PerfScore 3.00
     G_M6143_IG02:
            vmovdqu  xmm0, xmmword ptr [rdi]
            vmovdqu  xmmword ptr [rbp-0x20], xmm0
            mov      rax, qword ptr [rdi+0x10]
            mov      qword ptr [rbp-0x10], rax
            lea      rdi, [rbp-0x20]
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Normalize(byref)
            call     [rax]System.Number:DiyFp128Normalize(byref)
            movsxd   rdx, dword ptr [rbp-0x1C]
            imul     rsi, rdx, -22
            cmp      dword ptr [rbp-0x20], 0
            jne      SHORT G_M6143_IG04
     						;; size=47 bbWeight=1 PerfScore 14.75
     G_M6143_IG03:
    -       mov      rdx, 0xD1FFAB1E      ; const ptr
    -       mov      rdx, gword ptr [rdx]
    -       add      rdx, 16
            mov      bword ptr [rsp], rbx
    +       mov      rdx, 0xD1FFAB1E      ; static handle
            mov      ecx, 23
            lea      rdi, [rbp-0x20]
            xor      r8d, r8d
            mov      r9d, 22
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128EvaluatePositivePolynomial(byref,long,System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient],int,long,byref)
            call     [rax]System.Number:DiyFp128EvaluatePositivePolynomial(byref,long,System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient],int,long,byref)
            jmp      SHORT G_M6143_IG05
    -						;; size=53 bbWeight=0.50 PerfScore 5.00
    +						;; size=46 bbWeight=0.50 PerfScore 3.88
     G_M6143_IG04:
    -       mov      rdx, 0xD1FFAB1E      ; const ptr
    -       mov      rdx, gword ptr [rdx]
    -       add      rdx, 16
            mov      bword ptr [rsp], rbx
    +       mov      rdx, 0xD1FFAB1E      ; static handle
            mov      ecx, 23
            lea      rdi, [rbp-0x20]
            xor      r8d, r8d
            mov      r9d, 22
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128EvaluateNegativePolynomial(byref,long,System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient],int,long,byref)
            call     [rax]System.Number:DiyFp128EvaluateNegativePolynomial(byref,long,System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient],int,long,byref)
    -						;; size=51 bbWeight=0.50 PerfScore 4.00
    +						;; size=44 bbWeight=0.50 PerfScore 2.88
     G_M6143_IG05:
            inc      dword ptr [rbx+0x04]
     						;; size=3 bbWeight=1 PerfScore 3.00
     G_M6143_IG06:
            add      rsp, 40
            pop      rbx
            pop      rbp
            ret      
     						;; size=7 bbWeight=1 PerfScore 2.25
     
    -; Total bytes of code 175, prolog size 11, PerfScore 32.00, instruction count 42, allocated bytes for code 175 (MethodHash=288de800) for method System.Number:DiyFp128EvaluatePow2Polynomial(byref,byref) (FullOpts)
    +; Total bytes of code 161, prolog size 11, PerfScore 29.75, instruction count 38, allocated bytes for code 161 (MethodHash=288de800) for method System.Number:DiyFp128EvaluatePow2Polynomial(byref,byref) (FullOpts)
     ; ============================================================
    -13 (-4.64 % of base) - System.Number:DiyFp128LogPoly(byref):System.Number+DiyFp128
     ; Assembly listing for method System.Number:DiyFp128LogPoly(byref):System.Number+DiyFp128 (FullOpts)
     ; Emitting BLENDED_CODE for x64 + VEX + EVEX on Unix
     ; FullOpts code
     ; optimized code
     ; rbp based frame
     ; partially interruptible
     ; No PGO data
    -; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
    +; 0 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
     ; Final local variable assignments
     ;
     ;  V00 RetBuf       [V00,T01] (  4,  4   )    long  ->  r15         single-def
     ;  V01 arg0         [V01,T00] (  4,  4   )   byref  ->  rbx         single-def
    -;  V02 loc0         [V02    ] (  8,  8   )  struct (24) [rbp-0x30]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Number+DiyFp128>
    -;  V03 loc1         [V03    ] (  2,  2   )  struct (24) [rbp-0x48]  do-not-enreg[XDAS] addr-exposed defined-via-address ld-addr-op <System.Number+DiyFp128>
    +;  V02 loc0         [V02    ] (  8,  8   )  struct (24) [rbp-0x28]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Number+DiyFp128>
    +;  V03 loc1         [V03    ] (  2,  2   )  struct (24) [rbp-0x40]  do-not-enreg[XDAS] addr-exposed defined-via-address ld-addr-op <System.Number+DiyFp128>
     ;  V04 OutArgs      [V04    ] (  1,  1   )  struct ( 8) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <UNNAMED>
     ;* V05 tmp1         [V05    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient]>
    -;* V06 tmp2         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Number+DiyFp128FixedCoefficient[]>
    -;* V07 tmp3         [V07    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient]>
    -;  V08 tmp4         [V08,T02] (  2,  4   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.Number+DiyFp128FixedCoefficient[]>
    -;  V09 tmp5         [V09    ] (  3,  3   )  struct (24) [rbp-0x60]  do-not-enreg[XS] addr-exposed ld-addr-op "Inline stloc first use temp" <System.Number+DiyFp128>
    -;  V10 tmp6         [V10    ] (  4,  4   )  struct (24) [rbp-0x78]  do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Number+DiyFp128>
    -;* V11 tmp7         [V11    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
    -;  V12 tmp8         [V12    ] (  2,  2   )  struct (24) [rbp-0x90]  do-not-enreg[XS] addr-exposed ld-addr-op "Inline stloc first use temp" <System.Number+DiyFp128>
    -;  V13 tmp9         [V13    ] (  6,  6   )     int  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V02._sign (fldOffset=0x0)" P-DEP
    -;  V14 tmp10        [V14    ] (  8,  8   )     int  ->  [rbp-0x2C]  do-not-enreg[X] addr-exposed "field V02._exponent (fldOffset=0x4)" P-DEP
    -;  V15 tmp11        [V15    ] (  6,  6   )    long  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed "field V02._hi (fldOffset=0x8)" P-DEP
    -;  V16 tmp12        [V16    ] (  6,  6   )    long  ->  [rbp-0x20]  do-not-enreg[X] addr-exposed "field V02._lo (fldOffset=0x10)" P-DEP
    -;* V17 tmp13        [V17    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V05._reference (fldOffset=0x0)" P-INDEP
    -;* V18 tmp14        [V18    ] (  0,  0   )     int  ->  zero-ref    "field V05._length (fldOffset=0x8)" P-INDEP
    -;  V19 tmp15        [V19,T03] (  2,  2   )   byref  ->  r14         "field V07._reference (fldOffset=0x0)" P-INDEP
    -;* V20 tmp16        [V20,T04] (  0,  0   )     int  ->  zero-ref    "field V07._length (fldOffset=0x8)" P-INDEP
    -;  V21 tmp17        [V21    ] (  3,  3   )     int  ->  [rbp-0x78]  do-not-enreg[X] addr-exposed "field V10._sign (fldOffset=0x0)" P-DEP
    -;  V22 tmp18        [V22    ] (  4,  4   )     int  ->  [rbp-0x74]  do-not-enreg[X] addr-exposed "field V10._exponent (fldOffset=0x4)" P-DEP
    -;  V23 tmp19        [V23    ] (  3,  3   )    long  ->  [rbp-0x70]  do-not-enreg[X] addr-exposed "field V10._hi (fldOffset=0x8)" P-DEP
    -;  V24 tmp20        [V24    ] (  3,  3   )    long  ->  [rbp-0x68]  do-not-enreg[X] addr-exposed "field V10._lo (fldOffset=0x10)" P-DEP
    +;* V06 tmp2         [V06    ] (  0,  0   )  struct (16) zero-ref    "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[ulong]>
    +;* V07 tmp3         [V07    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V08 tmp4         [V08    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V09 tmp5         [V09    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
    +;* V10 tmp6         [V10    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V11 tmp7         [V11    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
    +;* V12 tmp8         [V12    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient]>
    +;* V13 tmp9         [V13    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ulong]>
    +;* V14 tmp10        [V14    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
    +;  V15 tmp11        [V15    ] (  3,  3   )  struct (24) [rbp-0x58]  do-not-enreg[XS] addr-exposed ld-addr-op "Inline stloc first use temp" <System.Number+DiyFp128>
    +;  V16 tmp12        [V16    ] (  4,  4   )  struct (24) [rbp-0x70]  do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Number+DiyFp128>
    +;* V17 tmp13        [V17    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
    +;  V18 tmp14        [V18    ] (  2,  2   )  struct (24) [rbp-0x88]  do-not-enreg[XS] addr-exposed ld-addr-op "Inline stloc first use temp" <System.Number+DiyFp128>
    +;  V19 tmp15        [V19    ] (  6,  6   )     int  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed "field V02._sign (fldOffset=0x0)" P-DEP
    +;  V20 tmp16        [V20    ] (  8,  8   )     int  ->  [rbp-0x24]  do-not-enreg[X] addr-exposed "field V02._exponent (fldOffset=0x4)" P-DEP
    +;  V21 tmp17        [V21    ] (  6,  6   )    long  ->  [rbp-0x20]  do-not-enreg[X] addr-exposed "field V02._hi (fldOffset=0x8)" P-DEP
    +;  V22 tmp18        [V22    ] (  6,  6   )    long  ->  [rbp-0x18]  do-not-enreg[X] addr-exposed "field V02._lo (fldOffset=0x10)" P-DEP
    +;* V23 tmp19        [V23    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V05._reference (fldOffset=0x0)" P-INDEP
    +;* V24 tmp20        [V24    ] (  0,  0   )     int  ->  zero-ref    "field V05._length (fldOffset=0x8)" P-INDEP
    +;* V25 tmp21        [V25    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V06._reference (fldOffset=0x0)" P-INDEP
    +;* V26 tmp22        [V26    ] (  0,  0   )     int  ->  zero-ref    "field V06._length (fldOffset=0x8)" P-INDEP
    +;* V27 tmp23        [V27    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V09._reference (fldOffset=0x0)" P-INDEP
    +;* V28 tmp24        [V28    ] (  0,  0   )     int  ->  zero-ref    "field V09._length (fldOffset=0x8)" P-INDEP
    +;* V29 tmp25        [V29    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V12._reference (fldOffset=0x0)" P-INDEP
    +;* V30 tmp26        [V30    ] (  0,  0   )     int  ->  zero-ref    "field V12._length (fldOffset=0x8)" P-INDEP
    +;* V31 tmp27        [V31    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V13._reference (fldOffset=0x0)" P-INDEP
    +;* V32 tmp28        [V32    ] (  0,  0   )     int  ->  zero-ref    "field V13._length (fldOffset=0x8)" P-INDEP
    +;  V33 tmp29        [V33    ] (  3,  3   )     int  ->  [rbp-0x70]  do-not-enreg[X] addr-exposed "field V16._sign (fldOffset=0x0)" P-DEP
    +;  V34 tmp30        [V34    ] (  4,  4   )     int  ->  [rbp-0x6C]  do-not-enreg[X] addr-exposed "field V16._exponent (fldOffset=0x4)" P-DEP
    +;  V35 tmp31        [V35    ] (  3,  3   )    long  ->  [rbp-0x68]  do-not-enreg[X] addr-exposed "field V16._hi (fldOffset=0x8)" P-DEP
    +;  V36 tmp32        [V36    ] (  3,  3   )    long  ->  [rbp-0x60]  do-not-enreg[X] addr-exposed "field V16._lo (fldOffset=0x10)" P-DEP
     ;
    -; Lcl frame size = 136
    +; Lcl frame size = 128
     
     G_M56148_IG01:
            push     rbp
            push     r15
    -       push     r14
            push     rbx
    -       sub      rsp, 136
    -       lea      rbp, [rsp+0xA0]
    +       sub      rsp, 128
    +       lea      rbp, [rsp+0x90]
            mov      r15, rdi
            mov      rbx, rsi
    -						;; size=27 bbWeight=1 PerfScore 5.25
    +						;; size=25 bbWeight=1 PerfScore 4.25
     G_M56148_IG02:
    -       mov      rdi, 0xD1FFAB1E      ; const ptr
    -       mov      r14, gword ptr [rdi]
    -       add      r14, 16
            vmovdqu  xmm0, xmmword ptr [rbx]
    -       vmovdqu  xmmword ptr [rbp-0x60], xmm0
    +       vmovdqu  xmmword ptr [rbp-0x58], xmm0
            mov      rdi, qword ptr [rbx+0x10]
    -       mov      qword ptr [rbp-0x50], rdi
    -       lea      rdi, [rbp-0x60]
    -       lea      rsi, [rbp-0x60]
    -       lea      rdx, [rbp-0x78]
    +       mov      qword ptr [rbp-0x48], rdi
    +       lea      rdi, [rbp-0x58]
    +       lea      rsi, [rbp-0x58]
    +       lea      rdx, [rbp-0x70]
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Multiply(byref,byref,byref)
            call     [rax]System.Number:DiyFp128Multiply(byref,byref,byref)
    -       lea      rdi, [rbp-0x78]
    +       lea      rdi, [rbp-0x70]
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Normalize(byref)
            call     [rax]System.Number:DiyFp128Normalize(byref)
    -       lea      rsi, [rbp-0x30]
    +       lea      rsi, [rbp-0x28]
            mov      qword ptr [rsp], rsi
    -       movsxd   rsi, dword ptr [rbp-0x74]
    +       movsxd   rsi, dword ptr [rbp-0x6C]
            imul     rsi, rsi, -17
    -       mov      rdx, r14
    +       mov      rdx, 0xD1FFAB1E      ; static handle
            mov      ecx, 18
    -       lea      rdi, [rbp-0x78]
    +       lea      rdi, [rbp-0x70]
            xor      r8d, r8d
            mov      r9d, 17
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128EvaluatePositivePolynomial(byref,long,System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient],int,long,byref)
            call     [rax]System.Number:DiyFp128EvaluatePositivePolynomial(byref,long,System.ReadOnlySpan`1[System.Number+DiyFp128FixedCoefficient],int,long,byref)
            vmovdqu  xmm0, xmmword ptr [rbx]
    -       vmovdqu32 xmmword ptr [rbp-0x90], xmm0
    +       vmovdqu  xmmword ptr [rbp-0x88], xmm0
            mov      rdi, qword ptr [rbx+0x10]
    -       mov      qword ptr [rbp-0x80], rdi
    -       lea      rdi, [rbp-0x90]
    -       lea      rsi, [rbp-0x30]
    -       lea      rdx, [rbp-0x30]
    +       mov      qword ptr [rbp-0x78], rdi
    +       lea      rdi, [rbp-0x88]
    +       lea      rsi, [rbp-0x28]
    +       lea      rdx, [rbp-0x28]
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Multiply(byref,byref,byref)
            call     [rax]System.Number:DiyFp128Multiply(byref,byref,byref)
    -       mov      edi, dword ptr [rbp-0x2C]
    +       mov      edi, dword ptr [rbp-0x24]
            add      edi, 2
    -       mov      dword ptr [rbp-0x2C], edi
    -       lea      rdi, [rbp-0x48]
    +       mov      dword ptr [rbp-0x24], edi
    +       lea      rdi, [rbp-0x40]
            mov      rax, 0xD1FFAB1E      ; code for System.Number:get_LogLn2():System.Number+DiyFp128
            call     [rax]System.Number:get_LogLn2():System.Number+DiyFp128
    -       lea      rdi, [rbp-0x30]
    -       lea      rsi, [rbp-0x48]
    -       lea      rdx, [rbp-0x30]
    +       lea      rdi, [rbp-0x28]
    +       lea      rsi, [rbp-0x40]
    +       lea      rdx, [rbp-0x28]
            mov      rax, 0xD1FFAB1E      ; code for System.Number:DiyFp128Multiply(byref,byref,byref)
            call     [rax]System.Number:DiyFp128Multiply(byref,byref,byref)
    -       vmovdqu  xmm0, xmmword ptr [rbp-0x30]
    +       vmovdqu  xmm0, xmmword ptr [rbp-0x28]
            vmovdqu  xmmword ptr [r15], xmm0
    -       mov      rax, qword ptr [rbp-0x20]
    -						;; size=232 bbWeight=1 PerfScore 50.75
    -G_M56148_IG03:
    +       mov      rax, qword ptr [rbp-0x18]
            mov      qword ptr [r15+0x10], rax
            mov      rax, r15
    -						;; size=7 bbWeight=1 PerfScore 1.25
    -G_M56148_IG04:
    -       add      rsp, 136
    +						;; size=230 bbWeight=1 PerfScore 49.50
    +G_M56148_IG03:
    +       add      rsp, 128
            pop      rbx
    -       pop      r14
            pop      r15
            pop      rbp
            ret      
    -						;; size=14 bbWeight=1 PerfScore 3.25
    +						;; size=12 bbWeight=1 PerfScore 2.75
     
    -; Total bytes of code 280, prolog size 21, PerfScore 60.50, instruction count 65, allocated bytes for code 280 (MethodHash=8bea24ab) for method System.Number:DiyFp128LogPoly(byref):System.Number+DiyFp128 (FullOpts)
    +; Total bytes of code 267, prolog size 19, PerfScore 56.50, instruction count 60, allocated bytes for code 267 (MethodHash=8bea24ab) for method System.Number:DiyFp128LogPoly(byref):System.Number+DiyFp128 (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/f4aed22697b179f5f2980e901ef56af9

  3. MihuBot commented on Aug 20, 2026

    @MihuBot
    OwnerAuthor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions