Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[X64] [MichalPetryka] Rewrite math jit helpers to managed code #264

Open
MihuBot opened this issue Feb 23, 2024 · 2 comments
Open

[X64] [MichalPetryka] Rewrite math jit helpers to managed code #264

MihuBot opened this issue Feb 23, 2024 · 2 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented Feb 23, 2024

Build completed in 2 hours 22 minutes.
dotnet/runtime#98858

CoreLib diffs

Found 2 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 6846158
Total bytes of diff: 6846907
Total bytes of delta: 749 (0.01 % of base)
Total relative delta: 0.05
    diff is a regression.
    relative diff is a regression.


Total byte diff includes 735 bytes from reconciling methods
	Base had    0 unique methods,        0 unique bytes
	Diff had   14 unique methods,      735 unique bytes

Top file regressions (bytes):
         749 : System.Private.CoreLib.dasm (0.01 % of base)

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

Top method regressions (bytes):
         165 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:LongMultiplyOverflow(long,long):long (FullOpts) (0 base, 1 diff methods)
         117 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:ULongMultiplyOverflow(ulong,ulong):ulong (FullOpts) (0 base, 1 diff methods)
          84 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleReminder(double,double):double (FullOpts) (0 base, 1 diff methods)
          72 (Infinity of base) : System.Private.CoreLib.dasm - System.MathF:FloatReminder(float,float):float (FullOpts) (0 base, 1 diff methods)
          49 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToULong(double):ulong (FullOpts) (0 base, 1 diff methods)
          49 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToULongOverflow(double):ulong (FullOpts) (0 base, 1 diff methods)
          48 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToLongOverflow(double):long (FullOpts) (0 base, 1 diff methods)
          48 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToUIntOverflow(double):uint (FullOpts) (0 base, 1 diff methods)
          47 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToIntOverflow(double):int (FullOpts) (0 base, 1 diff methods)
          28 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:ULongToDouble(ulong):double (FullOpts) (0 base, 1 diff methods)
           8 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:<LongMultiplyOverflow>g__Hi32Bits|133_0(ulong):uint (FullOpts) (0 base, 1 diff methods)
           8 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:<ULongMultiplyOverflow>g__Hi32Bits|134_0(ulong):uint (FullOpts) (0 base, 1 diff methods)
           7 (2.69 % of base) : System.Private.CoreLib.dasm - System.Math:IEEERemainder(double,double):double (FullOpts)
           7 (2.71 % of base) : System.Private.CoreLib.dasm - System.MathF:IEEERemainder(float,float):float (FullOpts)
           6 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToInt(double):int (FullOpts) (0 base, 1 diff methods)
           6 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToUInt(double):uint (FullOpts) (0 base, 1 diff methods)

Top method regressions (percentages):
           8 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:<LongMultiplyOverflow>g__Hi32Bits|133_0(ulong):uint (FullOpts) (0 base, 1 diff methods)
           8 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:<ULongMultiplyOverflow>g__Hi32Bits|134_0(ulong):uint (FullOpts) (0 base, 1 diff methods)
          84 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleReminder(double,double):double (FullOpts) (0 base, 1 diff methods)
           6 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToInt(double):int (FullOpts) (0 base, 1 diff methods)
          47 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToIntOverflow(double):int (FullOpts) (0 base, 1 diff methods)
          48 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToLongOverflow(double):long (FullOpts) (0 base, 1 diff methods)
           6 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToUInt(double):uint (FullOpts) (0 base, 1 diff methods)
          48 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToUIntOverflow(double):uint (FullOpts) (0 base, 1 diff methods)
          49 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToULong(double):ulong (FullOpts) (0 base, 1 diff methods)
          49 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToULongOverflow(double):ulong (FullOpts) (0 base, 1 diff methods)
         165 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:LongMultiplyOverflow(long,long):long (FullOpts) (0 base, 1 diff methods)
         117 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:ULongMultiplyOverflow(ulong,ulong):ulong (FullOpts) (0 base, 1 diff methods)
          28 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:ULongToDouble(ulong):double (FullOpts) (0 base, 1 diff methods)
          72 (Infinity of base) : System.Private.CoreLib.dasm - System.MathF:FloatReminder(float,float):float (FullOpts) (0 base, 1 diff methods)
           7 (2.71 % of base) : System.Private.CoreLib.dasm - System.MathF:IEEERemainder(float,float):float (FullOpts)
           7 (2.69 % of base) : System.Private.CoreLib.dasm - System.Math:IEEERemainder(double,double):double (FullOpts)

16 total methods with Code Size differences (0 improved, 16 regressed), 56477 unchanged.

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

Frameworks diffs

Diffs
Found 268 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 38279208
Total bytes of diff: 38281001
Total bytes of delta: 1793 (0.00 % of base)
Total relative delta: 4.50
    diff is a regression.
    relative diff is a regression.


Total byte diff includes 735 bytes from reconciling methods
	Base had    0 unique methods,        0 unique bytes
	Diff had   14 unique methods,      735 unique bytes

Top file regressions (bytes):
         749 : System.Private.CoreLib.dasm (0.01 % of base)
         715 : Microsoft.VisualBasic.Core.dasm (0.13 % of base)
         105 : System.Numerics.Tensors.dasm (0.08 % of base)
          84 : System.Linq.Expressions.dasm (0.01 % of base)
          42 : System.Runtime.Numerics.dasm (0.04 % of base)
          35 : System.Private.Xml.dasm (0.00 % of base)
          21 : System.Linq.dasm (0.00 % of base)
          14 : System.Configuration.ConfigurationManager.dasm (0.00 % of base)
          14 : System.Net.Quic.dasm (0.01 % of base)
           7 : System.Data.Common.dasm (0.00 % of base)
           7 : System.Net.HttpListener.dasm (0.01 % of base)

11 total files with Code Size differences (0 improved, 11 regressed), 245 unchanged.

Top method regressions (bytes):
         165 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:LongMultiplyOverflow(long,long):long (FullOpts) (0 base, 1 diff methods)
         119 (2.49 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Operators:ModObject(System.Object,System.Object):System.Object (FullOpts)
         117 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:ULongMultiplyOverflow(ulong,ulong):ulong (FullOpts) (0 base, 1 diff methods)
          84 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleReminder(double,double):double (FullOpts) (0 base, 1 diff methods)
          72 (Infinity of base) : System.Private.CoreLib.dasm - System.MathF:FloatReminder(float,float):float (FullOpts) (0 base, 1 diff methods)
          70 (2.16 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.ObjectType:ModObj(System.Object,System.Object):System.Object (FullOpts)
          63 (9.09 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.NumericConvertInstruction+Checked:ConvertDouble(double):System.Object:this (FullOpts)
          56 (9.79 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.TensorPrimitives+ConvertDoubleToUInt64:Invoke(System.Runtime.Intrinsics.Vector512`1[double]):System.Runtime.Intrinsics.Vector512`1[ulong] (FullOpts)
          49 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToULong(double):ulong (FullOpts) (0 base, 1 diff methods)
          49 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToULongOverflow(double):ulong (FullOpts) (0 base, 1 diff methods)
          48 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToLongOverflow(double):long (FullOpts) (0 base, 1 diff methods)
          48 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToUIntOverflow(double):uint (FullOpts) (0 base, 1 diff methods)
          47 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToIntOverflow(double):int (FullOpts) (0 base, 1 diff methods)
          42 (2.85 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.DateAndTime:DateDiff(int,System.DateTime,System.DateTime,int,int):long (FullOpts)
          32 (2.66 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToByte(System.Object):ubyte (FullOpts)
          32 (2.55 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToSByte(System.Object):byte (FullOpts)
          32 (2.72 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToUShort(System.Object):ushort (FullOpts)
          28 (3.35 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.ByteType:FromObject(System.Object):ubyte (FullOpts)
          28 (2.65 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToInteger(System.Object):int (FullOpts)
          28 (2.73 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToLong(System.Object):long (FullOpts)
          28 (2.25 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToShort(System.Object):short (FullOpts)
          28 (2.55 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToUInteger(System.Object):uint (FullOpts)
          28 (2.60 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToULong(System.Object):ulong (FullOpts)
          28 (3.77 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.IntegerType:FromObject(System.Object):int (FullOpts)
          28 (3.88 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.LongType:FromObject(System.Object):long (FullOpts)
          28 (3.11 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.ShortType:FromObject(System.Object):short (FullOpts)
          28 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:ULongToDouble(ulong):double (FullOpts) (0 base, 1 diff methods)
          28 (11.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.TensorPrimitives+ConvertDoubleToUInt64:Invoke(System.Runtime.Intrinsics.Vector256`1[double]):System.Runtime.Intrinsics.Vector256`1[ulong] (FullOpts)
          17 (1.32 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.Conversion:Val(System.String):double (FullOpts)
          14 (7.25 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.ValidatorUtils:ValidateScalar[double](double,double,double,double,ubyte) (FullOpts)
          14 (0.47 % of base) : System.Net.Quic.dasm - System.Net.Quic.MsQuicConfiguration:Create(System.Net.Quic.QuicConnectionOptions,int,System.Security.Cryptography.X509Certificates.X509Certificate,System.Collections.ObjectModel.ReadOnlyCollection`1[System.Security.Cryptography.X509Certificates.X509Certificate2],System.Collections.Generic.List`1[System.Net.Security.SslApplicationProtocol],System.Net.Security.CipherSuitesPolicy,int):System.Net.Quic.MsQuicSafeHandle (FullOpts)
          14 (14.43 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.TensorPrimitives+ConvertDoubleToUInt64:Invoke(System.Runtime.Intrinsics.Vector128`1[double]):System.Runtime.Intrinsics.Vector128`1[ulong] (FullOpts)
           8 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:<LongMultiplyOverflow>g__Hi32Bits|133_0(ulong):uint (FullOpts) (0 base, 1 diff methods)
           8 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:<ULongMultiplyOverflow>g__Hi32Bits|134_0(ulong):uint (FullOpts) (0 base, 1 diff methods)
           7 (2.48 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.ByteType:FromString(System.String):ubyte (FullOpts)
           7 (2.48 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToByte(System.String):ubyte (FullOpts)
           7 (2.54 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToInteger(System.String):int (FullOpts)
           7 (2.42 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToSByte(System.String):byte (FullOpts)
           7 (2.36 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToShort(System.String):short (FullOpts)
           7 (2.53 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToUInteger(System.String):uint (FullOpts)
           7 (2.48 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToUShort(System.String):ushort (FullOpts)
           7 (2.54 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.IntegerType:FromString(System.String):int (FullOpts)
           7 (10.94 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.ObjectType:ModDouble(double,double):System.Object (FullOpts)
           7 (10.61 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.ObjectType:ModSingle(float,float):System.Object (FullOpts)
           7 (2.45 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.ObjectType:ModString(System.IConvertible,int,System.IConvertible,int):System.Object (FullOpts)
           7 (5.11 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.ObjectType:ModStringString(System.String,System.String):System.Object (FullOpts)
           7 (10.94 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Operators:ModDouble(double,double):System.Object (FullOpts)
           7 (10.61 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Operators:ModSingle(float,float):System.Object (FullOpts)
           7 (2.36 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.ShortType:FromString(System.String):short (FullOpts)
           7 (0.58 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.DateAndTime:DateAdd(int,double,System.DateTime):System.DateTime (FullOpts)
           7 (3.21 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.Interaction:Choose(double,System.Object[]):System.Object (FullOpts)
           7 (9.59 % of base) : System.Private.Xml.dasm - MS.Internal.Xml.XPath.NumericExpr:GetValue(int,double,double):double (FullOpts)
           7 (0.32 % of base) : System.Data.Common.dasm - System.Data.Common.TimeSpanStorage:Aggregate(int[],int):System.Object:this (FullOpts)
           7 (2.25 % of base) : System.Linq.dasm - System.Linq.Enumerable:Sum[double,long](System.Collections.Generic.IEnumerable`1[double]):long (FullOpts)
           7 (2.66 % of base) : System.Linq.dasm - System.Linq.Enumerable:Sum[double,long](System.Collections.Generic.IEnumerable`1[System.Nullable`1[double]]):System.Nullable`1[double] (FullOpts)
           7 (9.46 % of base) : System.Linq.dasm - System.Linq.Enumerable:Sum[double,long](System.ReadOnlySpan`1[double]):long (FullOpts)
           7 (2.56 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ModuloInstruction+ModuloDouble:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
           7 (2.56 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ModuloInstruction+ModuloSingle:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
           7 (1.31 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.NumericConvertInstruction+Unchecked:ConvertDouble(double):System.Object:this (FullOpts)
           7 (2.69 % of base) : System.Private.CoreLib.dasm - System.Math:IEEERemainder(double,double):double (FullOpts)
           7 (2.71 % of base) : System.Private.CoreLib.dasm - System.MathF:IEEERemainder(float,float):float (FullOpts)
           7 (7.22 % of base) : System.Net.HttpListener.dasm - System.Net.HttpListenerTimeoutManager:ValidateTimeout(System.TimeSpan) (FullOpts)
           7 (6.31 % of base) : System.Runtime.Numerics.dasm - System.Numerics.Complex:IsEvenInteger(System.Numerics.Complex):ubyte (FullOpts)
           7 (6.31 % of base) : System.Runtime.Numerics.dasm - System.Numerics.Complex:IsOddInteger(System.Numerics.Complex):ubyte (FullOpts)
           7 (12.73 % of base) : System.Runtime.Numerics.dasm - System.Numerics.Complex:System.Numerics.INumberBase<System.Numerics.Complex>.TryConvertToChecked[int](System.Numerics.Complex,byref):ubyte (FullOpts)
           7 (12.50 % of base) : System.Runtime.Numerics.dasm - System.Numerics.Complex:System.Numerics.INumberBase<System.Numerics.Complex>.TryConvertToChecked[long](System.Numerics.Complex,byref):ubyte (FullOpts)
           7 (9.33 % of base) : System.Runtime.Numerics.dasm - System.Numerics.Complex:System.Numerics.INumberBase<System.Numerics.Complex>.TryConvertToChecked[short](System.Numerics.Complex,byref):ubyte (FullOpts)
           7 (10.45 % of base) : System.Runtime.Numerics.dasm - System.Numerics.Complex:System.Numerics.INumberBase<System.Numerics.Complex>.TryConvertToChecked[ubyte](System.Numerics.Complex,byref):ubyte (FullOpts)
           7 (58.33 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.TensorPrimitives+ConvertCheckedFallbackOperator`2[double,long]:Invoke(double):long (FullOpts)
           7 (0.34 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:FoldArithmetic(int,System.Xml.Xsl.Qil.QilLiteral,System.Xml.Xsl.Qil.QilLiteral):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
           7 (0.38 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Runtime.XsltConvert:ConvertToType(System.Xml.Schema.XmlAtomicValue,System.Xml.Xsl.XmlQueryType):System.Xml.Schema.XmlAtomicValue (FullOpts)
           7 (58.33 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Runtime.XsltConvert:ToInt(double):int (FullOpts)
           7 (58.33 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Runtime.XsltConvert:ToLong(double):long (FullOpts)
           6 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToInt(double):int (FullOpts) (0 base, 1 diff methods)
           6 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToUInt(double):uint (FullOpts) (0 base, 1 diff methods)

Top method regressions (percentages):
           8 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:<LongMultiplyOverflow>g__Hi32Bits|133_0(ulong):uint (FullOpts) (0 base, 1 diff methods)
           8 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:<ULongMultiplyOverflow>g__Hi32Bits|134_0(ulong):uint (FullOpts) (0 base, 1 diff methods)
          84 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleReminder(double,double):double (FullOpts) (0 base, 1 diff methods)
           6 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToInt(double):int (FullOpts) (0 base, 1 diff methods)
          47 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToIntOverflow(double):int (FullOpts) (0 base, 1 diff methods)
          48 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToLongOverflow(double):long (FullOpts) (0 base, 1 diff methods)
           6 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToUInt(double):uint (FullOpts) (0 base, 1 diff methods)
          48 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToUIntOverflow(double):uint (FullOpts) (0 base, 1 diff methods)
          49 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToULong(double):ulong (FullOpts) (0 base, 1 diff methods)
          49 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:DoubleToULongOverflow(double):ulong (FullOpts) (0 base, 1 diff methods)
         165 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:LongMultiplyOverflow(long,long):long (FullOpts) (0 base, 1 diff methods)
         117 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:ULongMultiplyOverflow(ulong,ulong):ulong (FullOpts) (0 base, 1 diff methods)
          28 (Infinity of base) : System.Private.CoreLib.dasm - System.Math:ULongToDouble(ulong):double (FullOpts) (0 base, 1 diff methods)
          72 (Infinity of base) : System.Private.CoreLib.dasm - System.MathF:FloatReminder(float,float):float (FullOpts) (0 base, 1 diff methods)
           7 (58.33 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.TensorPrimitives+ConvertCheckedFallbackOperator`2[double,long]:Invoke(double):long (FullOpts)
           7 (58.33 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Runtime.XsltConvert:ToInt(double):int (FullOpts)
           7 (58.33 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Runtime.XsltConvert:ToLong(double):long (FullOpts)
          14 (14.43 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.TensorPrimitives+ConvertDoubleToUInt64:Invoke(System.Runtime.Intrinsics.Vector128`1[double]):System.Runtime.Intrinsics.Vector128`1[ulong] (FullOpts)
           7 (12.73 % of base) : System.Runtime.Numerics.dasm - System.Numerics.Complex:System.Numerics.INumberBase<System.Numerics.Complex>.TryConvertToChecked[int](System.Numerics.Complex,byref):ubyte (FullOpts)
           7 (12.50 % of base) : System.Runtime.Numerics.dasm - System.Numerics.Complex:System.Numerics.INumberBase<System.Numerics.Complex>.TryConvertToChecked[long](System.Numerics.Complex,byref):ubyte (FullOpts)
          28 (11.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.TensorPrimitives+ConvertDoubleToUInt64:Invoke(System.Runtime.Intrinsics.Vector256`1[double]):System.Runtime.Intrinsics.Vector256`1[ulong] (FullOpts)
           7 (10.94 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.ObjectType:ModDouble(double,double):System.Object (FullOpts)
           7 (10.94 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Operators:ModDouble(double,double):System.Object (FullOpts)
           7 (10.61 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.ObjectType:ModSingle(float,float):System.Object (FullOpts)
           7 (10.61 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Operators:ModSingle(float,float):System.Object (FullOpts)
           7 (10.45 % of base) : System.Runtime.Numerics.dasm - System.Numerics.Complex:System.Numerics.INumberBase<System.Numerics.Complex>.TryConvertToChecked[ubyte](System.Numerics.Complex,byref):ubyte (FullOpts)
          56 (9.79 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.TensorPrimitives+ConvertDoubleToUInt64:Invoke(System.Runtime.Intrinsics.Vector512`1[double]):System.Runtime.Intrinsics.Vector512`1[ulong] (FullOpts)
           7 (9.59 % of base) : System.Private.Xml.dasm - MS.Internal.Xml.XPath.NumericExpr:GetValue(int,double,double):double (FullOpts)
           7 (9.46 % of base) : System.Linq.dasm - System.Linq.Enumerable:Sum[double,long](System.ReadOnlySpan`1[double]):long (FullOpts)
           7 (9.33 % of base) : System.Runtime.Numerics.dasm - System.Numerics.Complex:System.Numerics.INumberBase<System.Numerics.Complex>.TryConvertToChecked[short](System.Numerics.Complex,byref):ubyte (FullOpts)
          63 (9.09 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.NumericConvertInstruction+Checked:ConvertDouble(double):System.Object:this (FullOpts)
          14 (7.25 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.ValidatorUtils:ValidateScalar[double](double,double,double,double,ubyte) (FullOpts)
           7 (7.22 % of base) : System.Net.HttpListener.dasm - System.Net.HttpListenerTimeoutManager:ValidateTimeout(System.TimeSpan) (FullOpts)
           7 (6.31 % of base) : System.Runtime.Numerics.dasm - System.Numerics.Complex:IsEvenInteger(System.Numerics.Complex):ubyte (FullOpts)
           7 (6.31 % of base) : System.Runtime.Numerics.dasm - System.Numerics.Complex:IsOddInteger(System.Numerics.Complex):ubyte (FullOpts)
           7 (5.11 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.ObjectType:ModStringString(System.String,System.String):System.Object (FullOpts)
          28 (3.88 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.LongType:FromObject(System.Object):long (FullOpts)
          28 (3.77 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.IntegerType:FromObject(System.Object):int (FullOpts)
          28 (3.35 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.ByteType:FromObject(System.Object):ubyte (FullOpts)
           7 (3.21 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.Interaction:Choose(double,System.Object[]):System.Object (FullOpts)
          28 (3.11 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.ShortType:FromObject(System.Object):short (FullOpts)
          42 (2.85 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.DateAndTime:DateDiff(int,System.DateTime,System.DateTime,int,int):long (FullOpts)
          28 (2.73 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToLong(System.Object):long (FullOpts)
          32 (2.72 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToUShort(System.Object):ushort (FullOpts)
           7 (2.71 % of base) : System.Private.CoreLib.dasm - System.MathF:IEEERemainder(float,float):float (FullOpts)
           7 (2.69 % of base) : System.Private.CoreLib.dasm - System.Math:IEEERemainder(double,double):double (FullOpts)
           7 (2.66 % of base) : System.Linq.dasm - System.Linq.Enumerable:Sum[double,long](System.Collections.Generic.IEnumerable`1[System.Nullable`1[double]]):System.Nullable`1[double] (FullOpts)
          32 (2.66 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToByte(System.Object):ubyte (FullOpts)
          28 (2.65 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToInteger(System.Object):int (FullOpts)
          28 (2.60 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToULong(System.Object):ulong (FullOpts)
           7 (2.56 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ModuloInstruction+ModuloDouble:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
           7 (2.56 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ModuloInstruction+ModuloSingle:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
          32 (2.55 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToSByte(System.Object):byte (FullOpts)
          28 (2.55 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToUInteger(System.Object):uint (FullOpts)
           7 (2.54 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToInteger(System.String):int (FullOpts)
           7 (2.54 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.IntegerType:FromString(System.String):int (FullOpts)
           7 (2.53 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToUInteger(System.String):uint (FullOpts)
         119 (2.49 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Operators:ModObject(System.Object,System.Object):System.Object (FullOpts)
           7 (2.48 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.ByteType:FromString(System.String):ubyte (FullOpts)
           7 (2.48 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToByte(System.String):ubyte (FullOpts)
           7 (2.48 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToUShort(System.String):ushort (FullOpts)
           7 (2.45 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.ObjectType:ModString(System.IConvertible,int,System.IConvertible,int):System.Object (FullOpts)
           7 (2.42 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToSByte(System.String):byte (FullOpts)
           7 (2.36 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToShort(System.String):short (FullOpts)
           7 (2.36 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.ShortType:FromString(System.String):short (FullOpts)
           7 (2.25 % of base) : System.Linq.dasm - System.Linq.Enumerable:Sum[double,long](System.Collections.Generic.IEnumerable`1[double]):long (FullOpts)
          28 (2.25 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToShort(System.Object):short (FullOpts)
          70 (2.16 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.ObjectType:ModObj(System.Object,System.Object):System.Object (FullOpts)
          17 (1.32 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.Conversion:Val(System.String):double (FullOpts)
           7 (1.31 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.NumericConvertInstruction+Unchecked:ConvertDouble(double):System.Object:this (FullOpts)
           7 (0.58 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.DateAndTime:DateAdd(int,double,System.DateTime):System.DateTime (FullOpts)
          14 (0.47 % of base) : System.Net.Quic.dasm - System.Net.Quic.MsQuicConfiguration:Create(System.Net.Quic.QuicConnectionOptions,int,System.Security.Cryptography.X509Certificates.X509Certificate,System.Collections.ObjectModel.ReadOnlyCollection`1[System.Security.Cryptography.X509Certificates.X509Certificate2],System.Collections.Generic.List`1[System.Net.Security.SslApplicationProtocol],System.Net.Security.CipherSuitesPolicy,int):System.Net.Quic.MsQuicSafeHandle (FullOpts)
           7 (0.38 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Runtime.XsltConvert:ConvertToType(System.Xml.Schema.XmlAtomicValue,System.Xml.Xsl.XmlQueryType):System.Xml.Schema.XmlAtomicValue (FullOpts)
           7 (0.34 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:FoldArithmetic(int,System.Xml.Xsl.Qil.QilLiteral,System.Xml.Xsl.Qil.QilLiteral):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
           7 (0.32 % of base) : System.Data.Common.dasm - System.Data.Common.TimeSpanStorage:Aggregate(int[],int):System.Object:this (FullOpts)

75 total methods with Code Size differences (0 improved, 75 regressed), 239374 unchanged.

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

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Feb 23, 2024

Top method regressions

7 (2.69 % of base) - System.Math:IEEERemainder(double,double):double
 ; Assembly listing for method System.Math:IEEERemainder(double,double):double (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T00] (  9,  6.50)  double  ->  [rbp-0x08]  single-def
 ;  V01 arg1         [V01,T02] (  8,  5   )  double  ->  [rbp-0x10]  single-def
 ;  V02 loc0         [V02,T03] (  7,  3.50)  double  ->  [rbp-0x18]  spill-single-def
 ;  V03 loc1         [V03,T04] (  3,  1.50)  double  ->  mm0        
 ;  V04 loc2         [V04,T05] (  3,  1.50)  double  ->  mm4        
 ;* V05 loc3         [V05    ] (  0,  0   )  double  ->  zero-ref   
 ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V07 tmp1         [V07,T01] (  7,  8   )  double  ->  mm0         "Single return block return value"
 ;  V08 cse0         [V08,T06] (  3,  1.50)  double  ->  mm3         "CSE - moderate"
 ;  V09 cse1         [V09,T07] (  3,  1.50)  double  ->  mm4         "CSE - moderate"
 ;
 ; Lcl frame size = 32
 
 G_M14330_IG01:
        push     rbp
        sub      rsp, 32
        lea      rbp, [rsp+0x20]
 						;; size=10 bbWeight=1 PerfScore 1.75
 G_M14330_IG02:
        vucomisd xmm0, xmm0
        jp       SHORT G_M14330_IG03
        je       SHORT G_M14330_IG04
 						;; size=8 bbWeight=1 PerfScore 4.00
 G_M14330_IG03:
        jmp      G_M14330_IG13
 						;; size=5 bbWeight=0.50 PerfScore 1.00
 G_M14330_IG04:
        vucomisd xmm1, xmm1
        jp       SHORT G_M14330_IG05
        je       SHORT G_M14330_IG06
 						;; size=8 bbWeight=0.50 PerfScore 2.00
 G_M14330_IG05:
        vmovaps  xmm0, xmm1
        jmp      G_M14330_IG13
 						;; size=9 bbWeight=0.50 PerfScore 1.12
 G_M14330_IG06:
        vmovsd   qword ptr [rbp-0x08], xmm0
        vmovsd   qword ptr [rbp-0x10], xmm1
-       call     CORINFO_HELP_DBLREM
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_DBLREM
+       call     [rax]CORINFO_HELP_DBLREM
        vmovsd   qword ptr [rbp-0x18], xmm0
        vucomisd xmm0, xmm0
        jp       SHORT G_M14330_IG07
        je       SHORT G_M14330_IG08
-						;; size=28 bbWeight=0.50 PerfScore 4.00
+						;; size=35 bbWeight=0.50 PerfScore 5.12
 G_M14330_IG07:
        vmovsd   xmm0, qword ptr [reloc @RWD00]
        jmp      G_M14330_IG13
 						;; size=13 bbWeight=0.50 PerfScore 2.50
 G_M14330_IG08:
        vxorps   xmm1, xmm1, xmm1
        vucomisd xmm0, xmm1
        jp       SHORT G_M14330_IG09
        jne      SHORT G_M14330_IG09
        vmovsd   xmm1, qword ptr [rbp-0x08]
        vmovd    rax, xmm1
        test     rax, rax
        jge      SHORT G_M14330_IG10
        vmovsd   xmm0, qword ptr [reloc @RWD08]
        jmp      G_M14330_IG13
 						;; size=40 bbWeight=0.50 PerfScore 7.79
 G_M14330_IG09:
        vmovsd   xmm1, qword ptr [rbp-0x08]
 						;; size=5 bbWeight=0.25 PerfScore 0.75
 G_M14330_IG10:
        vmovsd   qword ptr [rbp-0x08], xmm1
        vmovaps  xmm0, xmm1
        mov      rax, 0xD1FFAB1E      ; code for System.Math:Sign(double):int
        call     [rax]System.Math:Sign(double):int
        vxorps   xmm0, xmm0, xmm0
        vcvtsi2sd xmm0, xmm0, eax
        vmovsd   xmm2, qword ptr [rbp-0x10]
        vandps   xmm1, xmm2, xmmword ptr [reloc @RWD16]
        vmulsd   xmm0, xmm0, xmm1
        vmovsd   xmm1, qword ptr [rbp-0x18]
        vsubsd   xmm0, xmm1, xmm0
        vandps   xmm3, xmm0, xmmword ptr [reloc @RWD16]
        vandps   xmm4, xmm1, xmmword ptr [reloc @RWD16]
        vucomisd xmm3, xmm4
        jp       SHORT G_M14330_IG12
        jne      SHORT G_M14330_IG12
        vmovsd   xmm3, qword ptr [rbp-0x08]
        vdivsd   xmm4, xmm3, xmm2
        vroundsd xmm2, xmm2, xmm4, 4
        vandps   xmm2, xmm2, xmmword ptr [reloc @RWD16]
        vandps   xmm4, xmm4, xmmword ptr [reloc @RWD16]
        vucomisd xmm2, xmm4
        ja       SHORT G_M14330_IG13
 						;; size=116 bbWeight=0.50 PerfScore 30.92
 G_M14330_IG11:
        vmovaps  xmm0, xmm1
        jmp      SHORT G_M14330_IG13
 						;; size=6 bbWeight=0.50 PerfScore 1.12
 G_M14330_IG12:
        vucomisd xmm4, xmm3
        jbe      SHORT G_M14330_IG11
 						;; size=6 bbWeight=0.50 PerfScore 1.50
 G_M14330_IG13:
        add      rsp, 32
        pop      rbp
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 RWD00  	dq	FFF8000000000000h	;         -nan
 RWD08  	dq	8000000000000000h	;           -0
 RWD16  	dq	7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
 
 
-; Total bytes of code 260, prolog size 10, PerfScore 60.21, instruction count 62, allocated bytes for code 260 (MethodHash=dbe0c805) for method System.Math:IEEERemainder(double,double):double (FullOpts)
+; Total bytes of code 267, prolog size 10, PerfScore 61.33, instruction count 63, allocated bytes for code 267 (MethodHash=dbe0c805) for method System.Math:IEEERemainder(double,double):double (FullOpts)
7 (2.71 % of base) - System.MathF:IEEERemainder(float,float):float
 ; Assembly listing for method System.MathF:IEEERemainder(float,float):float (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T00] (  9,  6.50)   float  ->  [rbp-0x04]  single-def
 ;  V01 arg1         [V01,T02] (  8,  5   )   float  ->  [rbp-0x08]  single-def
 ;  V02 loc0         [V02,T03] (  7,  3.50)   float  ->  [rbp-0x0C]  spill-single-def
 ;  V03 loc1         [V03,T04] (  3,  1.50)   float  ->  mm0        
 ;  V04 loc2         [V04,T05] (  3,  1.50)   float  ->  mm4        
 ;* V05 loc3         [V05    ] (  0,  0   )   float  ->  zero-ref   
 ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V07 tmp1         [V07,T01] (  7,  8   )   float  ->  mm0         "Single return block return value"
 ;  V08 cse0         [V08,T06] (  3,  1.50)   float  ->  mm3         "CSE - moderate"
 ;  V09 cse1         [V09,T07] (  3,  1.50)   float  ->  mm4         "CSE - moderate"
 ;
 ; Lcl frame size = 16
 
 G_M34681_IG01:
        push     rbp
        sub      rsp, 16
        lea      rbp, [rsp+0x10]
 						;; size=10 bbWeight=1 PerfScore 1.75
 G_M34681_IG02:
        vucomiss xmm0, xmm0
        jp       SHORT G_M34681_IG03
        je       SHORT G_M34681_IG04
 						;; size=8 bbWeight=1 PerfScore 4.00
 G_M34681_IG03:
        jmp      G_M34681_IG13
 						;; size=5 bbWeight=0.50 PerfScore 1.00
 G_M34681_IG04:
        vucomiss xmm1, xmm1
        jp       SHORT G_M34681_IG05
        je       SHORT G_M34681_IG06
 						;; size=8 bbWeight=0.50 PerfScore 2.00
 G_M34681_IG05:
        vmovaps  xmm0, xmm1
        jmp      G_M34681_IG13
 						;; size=9 bbWeight=0.50 PerfScore 1.12
 G_M34681_IG06:
        vmovss   dword ptr [rbp-0x04], xmm0
        vmovss   dword ptr [rbp-0x08], xmm1
-       call     CORINFO_HELP_FLTREM
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_FLTREM
+       call     [rax]CORINFO_HELP_FLTREM
        vmovss   dword ptr [rbp-0x0C], xmm0
        vucomiss xmm0, xmm0
        jp       SHORT G_M34681_IG07
        je       SHORT G_M34681_IG08
-						;; size=28 bbWeight=0.50 PerfScore 4.00
+						;; size=35 bbWeight=0.50 PerfScore 5.12
 G_M34681_IG07:
        vmovss   xmm0, dword ptr [reloc @RWD00]
        jmp      G_M34681_IG13
 						;; size=13 bbWeight=0.50 PerfScore 2.50
 G_M34681_IG08:
        vxorps   xmm1, xmm1, xmm1
        vucomiss xmm0, xmm1
        jp       SHORT G_M34681_IG09
        jne      SHORT G_M34681_IG09
        vmovss   xmm1, dword ptr [rbp-0x04]
        vmovd    eax, xmm1
        test     eax, eax
        jge      SHORT G_M34681_IG10
        vmovss   xmm0, dword ptr [reloc @RWD04]
        jmp      G_M34681_IG13
 						;; size=38 bbWeight=0.50 PerfScore 7.79
 G_M34681_IG09:
        vmovss   xmm1, dword ptr [rbp-0x04]
 						;; size=5 bbWeight=0.25 PerfScore 0.75
 G_M34681_IG10:
        vmovss   dword ptr [rbp-0x04], xmm1
        vmovaps  xmm0, xmm1
        mov      rax, 0xD1FFAB1E      ; code for System.Math:Sign(float):int
        call     [rax]System.Math:Sign(float):int
        vxorps   xmm0, xmm0, xmm0
        vcvtsi2ss xmm0, xmm0, eax
        vmovss   xmm2, dword ptr [rbp-0x08]
        vandps   xmm1, xmm2, xmmword ptr [reloc @RWD16]
        vmulss   xmm0, xmm0, xmm1
        vmovss   xmm1, dword ptr [rbp-0x0C]
        vsubss   xmm0, xmm1, xmm0
        vandps   xmm3, xmm0, xmmword ptr [reloc @RWD16]
        vandps   xmm4, xmm1, xmmword ptr [reloc @RWD16]
        vucomiss xmm3, xmm4
        jp       SHORT G_M34681_IG12
        jne      SHORT G_M34681_IG12
        vmovss   xmm3, dword ptr [rbp-0x04]
        vdivss   xmm4, xmm3, xmm2
        vroundss xmm2, xmm2, xmm4, 4
        vandps   xmm2, xmm2, xmmword ptr [reloc @RWD16]
        vandps   xmm4, xmm4, xmmword ptr [reloc @RWD16]
        vucomiss xmm2, xmm4
        ja       SHORT G_M34681_IG13
 						;; size=116 bbWeight=0.50 PerfScore 29.92
 G_M34681_IG11:
        vmovaps  xmm0, xmm1
        jmp      SHORT G_M34681_IG13
 						;; size=6 bbWeight=0.50 PerfScore 1.12
 G_M34681_IG12:
        vucomiss xmm4, xmm3
        jbe      SHORT G_M34681_IG11
 						;; size=6 bbWeight=0.50 PerfScore 1.50
 G_M34681_IG13:
        add      rsp, 16
        pop      rbp
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 RWD00  	dd	FFC00000h		;      -nan
 RWD04  	dd	80000000h		;        -0
 RWD08  	dd	00000000h, 00000000h
 RWD16  	dq	7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
 
 
-; Total bytes of code 258, prolog size 10, PerfScore 59.21, instruction count 62, allocated bytes for code 258 (MethodHash=40f07886) for method System.MathF:IEEERemainder(float,float):float (FullOpts)
+; Total bytes of code 265, prolog size 10, PerfScore 60.33, instruction count 63, allocated bytes for code 265 (MethodHash=40f07886) for method System.MathF:IEEERemainder(float,float):float (FullOpts)

@MihuBot
Copy link
Owner Author

MihuBot commented Feb 23, 2024

@MichalPetryka

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

No branches or pull requests

1 participant