MihuBot / runtime-utils

0 stars 0 forks source link

[X64] [MichalPetryka] Fix Random.Shuffle covariance #248

Open MihuBot opened 9 months ago

MihuBot commented 9 months ago

Build completed in 32 minutes.

CoreLib diffs

Found 2 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 6820585
Total bytes of diff: 6820498
Total bytes of delta: -87 (-0.00 % of base)
Total relative delta: -7.84
    diff is an improvement.
    relative diff is an improvement.

Total byte diff includes 961 bytes from reconciling methods
    Base had    0 unique methods,        0 unique bytes
    Diff had    8 unique methods,      961 unique bytes

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

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

Top method regressions (bytes):
         138 (     ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.__Canon](byref,int):this (FullOpts) (0 base, 1 diff methods)
         128 (     ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Numerics.Vector`1[float]](byref,int):this (FullOpts) (0 base, 1 diff methods)
         120 (     ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Nullable`1[int]](byref,int):this (FullOpts) (0 base, 1 diff methods)
         119 (     ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[double](byref,int):this (FullOpts) (0 base, 1 diff methods)
         117 (     ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[short](byref,int):this (FullOpts) (0 base, 1 diff methods)
         115 (     ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[long](byref,int):this (FullOpts) (0 base, 1 diff methods)
         113 (     ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[ubyte](byref,int):this (FullOpts) (0 base, 1 diff methods)
         111 (     ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[int](byref,int):this (FullOpts) (0 base, 1 diff methods)

Top method improvements (bytes):
        -130 (-87.248% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Numerics.Vector`1[float]](System.Span`1[System.Numerics.Vector`1[float]]):this (FullOpts)
        -127 (-86.986% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Nullable`1[int]](System.Span`1[System.Nullable`1[int]]):this (FullOpts)
        -120 (-86.331% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[double](System.Span`1[double]):this (FullOpts)
        -118 (-86.131% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[short](System.Span`1[short]):this (FullOpts)
        -116 (-85.926% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[long](System.Span`1[long]):this (FullOpts)
        -116 (-85.926% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[ubyte](System.Span`1[ubyte]):this (FullOpts)
        -112 (-85.496% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[int](System.Span`1[int]):this (FullOpts)
         -64 (-39.752% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.__Canon](System.Span`1[System.__Canon]):this (FullOpts)
         -61 (-33.516% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.__Canon](System.__Canon[]):this (FullOpts)
         -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[double](double[]):this (FullOpts)
         -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[int](int[]):this (FullOpts)
         -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[long](long[]):this (FullOpts)
         -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[short](short[]):this (FullOpts)
         -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Nullable`1[int]](System.Nullable`1[int][]):this (FullOpts)
         -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][]):this (FullOpts)
         -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[ubyte](ubyte[]):this (FullOpts)

Top method regressions (percentages):
         119 (     ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[double](byref,int):this (FullOpts) (0 base, 1 diff methods)
         111 (     ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[int](byref,int):this (FullOpts) (0 base, 1 diff methods)
         115 (     ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[long](byref,int):this (FullOpts) (0 base, 1 diff methods)
         117 (     ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[short](byref,int):this (FullOpts) (0 base, 1 diff methods)
         138 (     ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.__Canon](byref,int):this (FullOpts) (0 base, 1 diff methods)
         120 (     ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Nullable`1[int]](byref,int):this (FullOpts) (0 base, 1 diff methods)
         128 (     ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Numerics.Vector`1[float]](byref,int):this (FullOpts) (0 base, 1 diff methods)
         113 (     ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[ubyte](byref,int):this (FullOpts) (0 base, 1 diff methods)

Top method improvements (percentages):
        -130 (-87.248% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Numerics.Vector`1[float]](System.Span`1[System.Numerics.Vector`1[float]]):this (FullOpts)
        -127 (-86.986% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Nullable`1[int]](System.Span`1[System.Nullable`1[int]]):this (FullOpts)
        -120 (-86.331% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[double](System.Span`1[double]):this (FullOpts)
        -118 (-86.131% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[short](System.Span`1[short]):this (FullOpts)
        -116 (-85.926% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[long](System.Span`1[long]):this (FullOpts)
        -116 (-85.926% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[ubyte](System.Span`1[ubyte]):this (FullOpts)
        -112 (-85.496% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[int](System.Span`1[int]):this (FullOpts)
         -64 (-39.752% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.__Canon](System.Span`1[System.__Canon]):this (FullOpts)
         -61 (-33.516% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.__Canon](System.__Canon[]):this (FullOpts)
         -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[double](double[]):this (FullOpts)
         -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[int](int[]):this (FullOpts)
         -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[long](long[]):this (FullOpts)
         -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[short](short[]):this (FullOpts)
         -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Nullable`1[int]](System.Nullable`1[int][]):this (FullOpts)
         -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][]):this (FullOpts)
         -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[ubyte](ubyte[]):this (FullOpts)

24 total methods with Code Size differences (16 improved, 8 regressed), 56036 unchanged.

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

Frameworks diffs

Diffs ``` Found 266 files with textual diffs. Summary of Code Size diffs: (Lower is better) Total bytes of base: 38250666 Total bytes of diff: 38252849 Total bytes of delta: 2183 (0.01 % of base) Total relative delta: -3.65 diff is a regression. relative diff is an improvement. Total byte diff includes 961 bytes from reconciling methods Base had 0 unique methods, 0 unique bytes Diff had 8 unique methods, 961 unique bytes Top file regressions (bytes): 2270 : System.Security.Cryptography.dasm (0.210% of base) Top file improvements (bytes): -87 : System.Private.CoreLib.dasm (-0.001% of base) 2 total files with Code Size differences (1 improved, 1 regressed), 254 unchanged. Top method regressions (bytes): 138 ( ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.__Canon](byref,int):this (FullOpts) (0 base, 1 diff methods) 128 ( ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Numerics.Vector`1[float]](byref,int):this (FullOpts) (0 base, 1 diff methods) 120 ( ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Nullable`1[int]](byref,int):this (FullOpts) (0 base, 1 diff methods) 119 ( ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[double](byref,int):this (FullOpts) (0 base, 1 diff methods) 117 ( ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[short](byref,int):this (FullOpts) (0 base, 1 diff methods) 115 ( ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[long](byref,int):this (FullOpts) (0 base, 1 diff methods) 113 ( ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[ubyte](byref,int):this (FullOpts) (0 base, 1 diff methods) 111 ( ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[int](byref,int):this (FullOpts) (0 base, 1 diff methods) 73 (8.680% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged:DeriveBytesOneShot(System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]) (FullOpts) 52 (2.708% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream+d__56:MoveNext():this (FullOpts) 49 (1.592% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream+d__44:MoveNext():this (FullOpts) 47 (10.352% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.CertificateRequest:NormalizeSerialNumber(System.ReadOnlySpan`1[ubyte]):System.ArraySegment`1[ubyte] (FullOpts) 46 (12.202% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream:Write(System.ReadOnlySpan`1[ubyte]):this (FullOpts) 46 (8.200% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.ECDsa:SignDataCore(System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName,int):ubyte[]:this (FullOpts) 46 (8.679% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.ECDsa:SignHashCore(System.ReadOnlySpan`1[ubyte],int):ubyte[]:this (FullOpts) 46 (14.465% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RandomNumberGenerator:GetBytes(System.Span`1[ubyte]):this (FullOpts) 46 (14.744% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RandomNumberGenerator:GetNonZeroBytes(System.Span`1[ubyte]):this (FullOpts) 45 (6.560% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:ExtractPrivateKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],int,System.Security.Cryptography.AsymmetricAlgorithm[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[]):this (FullOpts) 44 (3.960% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.HashAlgorithm+d__16:MoveNext():this (FullOpts) 44 (5.308% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:UncheckedTransformFinalBlock(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int:this (FullOpts) 42 (12.963% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.DSA:HashSpanToArray(System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts) 42 (12.923% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.ECDsa:HashSpanToArray(System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts) 42 (8.235% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.ECDsa:TryHashData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,byref):ubyte:this (FullOpts) 42 (11.538% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryExportSubjectPublicKeyInfo(System.Span`1[ubyte],byref):ubyte:this (FullOpts) 42 (8.077% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryHashData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,byref):ubyte:this (FullOpts) 42 (12.069% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:WritePkcs8PrivateKey():System.Formats.Asn1.AsnWriter:this (FullOpts) 41 (3.414% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.CertificateRequest:LoadSigningRequestPem(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.HashAlgorithmName,int,System.Security.Cryptography.RSASignaturePadding):System.Security.Cryptography.X509Certificates.CertificateRequest (FullOpts) 38 (1.120% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream+d__53:MoveNext():this (FullOpts) 32 (3.725% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.Rfc2898DeriveBytes:Pbkdf2Core(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,System.Security.Cryptography.HashAlgorithmName) (FullOpts) 32 (4.520% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.CertificateRevocationListBuilder:LoadPem(System.ReadOnlySpan`1[ushort],byref):System.Security.Cryptography.X509Certificates.CertificateRevocationListBuilder (FullOpts) 30 (7.026% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.SymmetricAlgorithm:DecryptCbc(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int):ubyte[]:this (FullOpts) 28 (6.074% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.UnixExportProvider:EncodeKeys(System.Formats.Asn1.AsnWriter,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],int):System.ArraySegment`1[ubyte] (FullOpts) 27 (4.376% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[int](System.ReadOnlySpan`1[ubyte],int,System.Security.Cryptography.RSA+TryFunc`1[int],ubyte):ubyte[]:this (FullOpts) 27 (4.376% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[long](System.ReadOnlySpan`1[ubyte],long,System.Security.Cryptography.RSA+TryFunc`1[long],ubyte):ubyte[]:this (FullOpts) 27 (4.362% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[short](System.ReadOnlySpan`1[ubyte],short,System.Security.Cryptography.RSA+TryFunc`1[short],ubyte):ubyte[]:this (FullOpts) 27 (4.405% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[System.__Canon](System.ReadOnlySpan`1[ubyte],System.__Canon,System.Security.Cryptography.RSA+TryFunc`1[System.__Canon],ubyte):ubyte[]:this (FullOpts) 27 (4.362% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[ubyte](System.ReadOnlySpan`1[ubyte],ubyte,System.Security.Cryptography.RSA+TryFunc`1[ubyte],ubyte):ubyte[]:this (FullOpts) 26 (15.758% of base) : System.Security.Cryptography.dasm - System.Formats.Asn1.AsnWriterExtensions:RentAndEncode(System.Formats.Asn1.AsnWriter):System.ArraySegment`1[ubyte] (FullOpts) 26 (4.745% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToEncryptedPem[double,System.Nullable`1[int]](double,System.ReadOnlySpan`1[System.Nullable`1[int]],System.Security.Cryptography.PbeParameters,System.Security.Cryptography.PemKeyHelpers+TryExportEncryptedKeyAction`2[double,System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.779% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToEncryptedPem[int,System.Nullable`1[int]](int,System.ReadOnlySpan`1[System.Nullable`1[int]],System.Security.Cryptography.PbeParameters,System.Security.Cryptography.PemKeyHelpers+TryExportEncryptedKeyAction`2[int,System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.779% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToEncryptedPem[long,System.Nullable`1[int]](long,System.ReadOnlySpan`1[System.Nullable`1[int]],System.Security.Cryptography.PbeParameters,System.Security.Cryptography.PemKeyHelpers+TryExportEncryptedKeyAction`2[long,System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.771% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToEncryptedPem[short,System.Nullable`1[int]](short,System.ReadOnlySpan`1[System.Nullable`1[int]],System.Security.Cryptography.PbeParameters,System.Security.Cryptography.PemKeyHelpers+TryExportEncryptedKeyAction`2[short,System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.815% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToEncryptedPem[System.__Canon,System.Nullable`1[int]](System.__Canon,System.ReadOnlySpan`1[System.Nullable`1[int]],System.Security.Cryptography.PbeParameters,System.Security.Cryptography.PemKeyHelpers+TryExportEncryptedKeyAction`2[System.__Canon,System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.842% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToEncryptedPem[System.Nullable`1[int],System.Nullable`1[int]](System.Nullable`1[int],System.ReadOnlySpan`1[System.Nullable`1[int]],System.Security.Cryptography.PbeParameters,System.Security.Cryptography.PemKeyHelpers+TryExportEncryptedKeyAction`2[System.Nullable`1[int],System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.685% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToEncryptedPem[System.Numerics.Vector`1[float],System.Nullable`1[int]](System.Numerics.Vector`1[float],System.ReadOnlySpan`1[System.Nullable`1[int]],System.Security.Cryptography.PbeParameters,System.Security.Cryptography.PemKeyHelpers+TryExportEncryptedKeyAction`2[System.Numerics.Vector`1[float],System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.771% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToEncryptedPem[ubyte,System.Nullable`1[int]](ubyte,System.ReadOnlySpan`1[System.Nullable`1[int]],System.Security.Cryptography.PbeParameters,System.Security.Cryptography.PemKeyHelpers+TryExportEncryptedKeyAction`2[ubyte,System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.869% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[int](int,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[int],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.869% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[long](long,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[long],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.860% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[short](short,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[short],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.842% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[System.__Canon](System.__Canon,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.__Canon],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.842% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[System.Nullable`1[int]](System.Nullable`1[int],System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.860% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[ubyte](ubyte,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[ubyte],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.685% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSAOpenSsl:TryDecrypt(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.RSAEncryptionPadding,byref):ubyte:this (FullOpts) 26 (1.422% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.UniversalCryptoOneShot:OneShotDecrypt(System.Security.Cryptography.ILiteSymmetricCipher,int,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte (FullOpts) 26 (1.852% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.UnixExportProvider:EncodeAuthSafe(System.Formats.Asn1.AsnWriter,System.ReadOnlyMemory`1[ubyte],System.ReadOnlyMemory`1[ubyte],ubyte,System.String,System.String,System.Span`1[ubyte],System.Span`1[ubyte]):System.ArraySegment`1[ubyte] (FullOpts) 26 (4.577% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X500DistinguishedNameBuilder:Build():System.Security.Cryptography.X509Certificates.X500DistinguishedName:this (FullOpts) 25 (3.748% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream:g__TransformBlock|53_0(System.Security.Cryptography.ICryptoTransform,System.ReadOnlyMemory`1[ubyte],ubyte[],int):int (FullOpts) 25 (10.373% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.HashAlgorithm:ComputeHash(System.IO.Stream):ubyte[]:this (FullOpts) 25 (4.209% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:UncheckedTransformFinalBlock(ubyte[],int,int):ubyte[]:this (FullOpts) 24 (6.761% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierExtension:HashSubjectPublicKeyInfo(System.Security.Cryptography.X509Certificates.PublicKey,System.Security.Cryptography.HashAlgorithmName):ubyte[] (FullOpts) 23 (3.704% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[double](System.ReadOnlySpan`1[ubyte],double,System.Security.Cryptography.RSA+TryFunc`1[double],ubyte):ubyte[]:this (FullOpts) 23 (3.674% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[System.Nullable`1[int]](System.ReadOnlySpan`1[ubyte],System.Nullable`1[int],System.Security.Cryptography.RSA+TryFunc`1[System.Nullable`1[int]],ubyte):ubyte[]:this (FullOpts) 23 (3.674% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[System.Numerics.Vector`1[float]](System.ReadOnlySpan`1[ubyte],System.Numerics.Vector`1[float],System.Security.Cryptography.RSA+TryFunc`1[System.Numerics.Vector`1[float]],ubyte):ubyte[]:this (FullOpts) 23 (2.184% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.UnixExportProvider:EncodeCerts(System.Formats.Asn1.AsnWriter,System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[],int,System.Span`1[ubyte],System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref,byref):System.ArraySegment`1[ubyte] (FullOpts) 22 (1.222% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.Asn1.Pkcs12.PfxAsn:DecryptContentInfo(System.Security.Cryptography.Asn1.Pkcs7.ContentInfoAsn,byref):System.ArraySegment`1[ubyte] (FullOpts) 22 (0.693% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.ECDiffieHellmanOpenSsl:DeriveSecretAgreement(System.Security.Cryptography.ECDiffieHellmanPublicKey,System.Security.Cryptography.IncrementalHash):ubyte[]:this (FullOpts) 22 (2.093% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.HKDF:Expand(System.Security.Cryptography.HashAlgorithmName,int,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.ReadOnlySpan`1[ubyte]) (FullOpts) 22 (5.432% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.OpenSslCipherLite:Transform(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int:this (FullOpts) 22 (3.860% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.OpenSslCipherLite:TransformFinal(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int:this (FullOpts) 22 (1.215% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.Pkcs.Pkcs12Kdf:Derive(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.HashAlgorithmName,int,ubyte,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]) (FullOpts) 22 (4.622% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:VerifyData(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding):ubyte:this (FullOpts) 22 (4.508% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSAOpenSsl:Decrypt(ubyte[],System.Security.Cryptography.RSAEncryptionPadding):ubyte[]:this (FullOpts) 22 (1.655% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:FindChainViaAia(byref):Interop+Crypto+X509VerifyStatusCode:this (FullOpts) 22 (2.857% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:DecryptSafeContents(System.ReadOnlySpan`1[ushort],byref) (FullOpts) 22 (2.254% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:CreateFromPem(System.ReadOnlySpan`1[ushort]):System.Security.Cryptography.X509Certificates.X509Certificate2 (FullOpts) 21 (5.949% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream:CopyTo(System.IO.Stream,int):this (FullOpts) 21 (1.714% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:ImportPem(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.PemKeyHelpers+FindImportActionFunc) (FullOpts) 21 (13.462% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GrowIfNeeded[ubyte](byref,int) (FullOpts) 20 (10.695% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.HashAlgorithm:HashCore(System.ReadOnlySpan`1[ubyte]):this (FullOpts) 15 (2.674% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float],System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.Numerics.Vector`1[float]],System.Span`1[ushort],byref):ubyte (FullOpts) 9 (1.619% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[double](double,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[double],System.Span`1[ushort],byref):ubyte (FullOpts) 8 (0.877% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:ImportEncryptedPem[double](System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[double],System.Security.Cryptography.PemKeyHelpers+ImportEncryptedKeyAction`1[double]) (FullOpts) 8 (0.877% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:ImportEncryptedPem[int](System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[int],System.Security.Cryptography.PemKeyHelpers+ImportEncryptedKeyAction`1[int]) (FullOpts) 8 (0.877% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:ImportEncryptedPem[long](System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[long],System.Security.Cryptography.PemKeyHelpers+ImportEncryptedKeyAction`1[long]) (FullOpts) 8 (0.877% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:ImportEncryptedPem[short](System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[short],System.Security.Cryptography.PemKeyHelpers+ImportEncryptedKeyAction`1[short]) (FullOpts) 8 (0.876% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:ImportEncryptedPem[System.__Canon](System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.__Canon],System.Security.Cryptography.PemKeyHelpers+ImportEncryptedKeyAction`1[System.__Canon]) (FullOpts) 8 (0.877% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:ImportEncryptedPem[System.Nullable`1[int]](System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.Nullable`1[int]],System.Security.Cryptography.PemKeyHelpers+ImportEncryptedKeyAction`1[System.Nullable`1[int]]) (FullOpts) 8 (0.877% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:ImportEncryptedPem[System.Numerics.Vector`1[float]](System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.Numerics.Vector`1[float]],System.Security.Cryptography.PemKeyHelpers+ImportEncryptedKeyAction`1[System.Numerics.Vector`1[float]]) (FullOpts) 8 (0.877% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:ImportEncryptedPem[ubyte](System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.PemKeyHelpers+ImportEncryptedKeyAction`1[ubyte]) (FullOpts) Top method improvements (bytes): -130 (-87.248% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Numerics.Vector`1[float]](System.Span`1[System.Numerics.Vector`1[float]]):this (FullOpts) -127 (-86.986% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Nullable`1[int]](System.Span`1[System.Nullable`1[int]]):this (FullOpts) -120 (-86.331% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[double](System.Span`1[double]):this (FullOpts) -118 (-86.131% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[short](System.Span`1[short]):this (FullOpts) -116 (-85.926% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[long](System.Span`1[long]):this (FullOpts) -116 (-85.926% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[ubyte](System.Span`1[ubyte]):this (FullOpts) -112 (-85.496% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[int](System.Span`1[int]):this (FullOpts) -64 (-39.752% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.__Canon](System.Span`1[System.__Canon]):this (FullOpts) -61 (-33.516% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.__Canon](System.__Canon[]):this (FullOpts) -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[double](double[]):this (FullOpts) -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[int](int[]):this (FullOpts) -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[long](long[]):this (FullOpts) -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[short](short[]):this (FullOpts) -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Nullable`1[int]](System.Nullable`1[int][]):this (FullOpts) -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][]):this (FullOpts) -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[ubyte](ubyte[]):this (FullOpts) Top method regressions (percentages): 119 ( ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[double](byref,int):this (FullOpts) (0 base, 1 diff methods) 111 ( ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[int](byref,int):this (FullOpts) (0 base, 1 diff methods) 115 ( ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[long](byref,int):this (FullOpts) (0 base, 1 diff methods) 117 ( ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[short](byref,int):this (FullOpts) (0 base, 1 diff methods) 138 ( ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.__Canon](byref,int):this (FullOpts) (0 base, 1 diff methods) 120 ( ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Nullable`1[int]](byref,int):this (FullOpts) (0 base, 1 diff methods) 128 ( ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Numerics.Vector`1[float]](byref,int):this (FullOpts) (0 base, 1 diff methods) 113 ( ∞ of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[ubyte](byref,int):this (FullOpts) (0 base, 1 diff methods) 26 (15.758% of base) : System.Security.Cryptography.dasm - System.Formats.Asn1.AsnWriterExtensions:RentAndEncode(System.Formats.Asn1.AsnWriter):System.ArraySegment`1[ubyte] (FullOpts) 46 (14.744% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RandomNumberGenerator:GetNonZeroBytes(System.Span`1[ubyte]):this (FullOpts) 46 (14.465% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RandomNumberGenerator:GetBytes(System.Span`1[ubyte]):this (FullOpts) 21 (13.462% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GrowIfNeeded[ubyte](byref,int) (FullOpts) 42 (12.963% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.DSA:HashSpanToArray(System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts) 42 (12.923% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.ECDsa:HashSpanToArray(System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts) 46 (12.202% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream:Write(System.ReadOnlySpan`1[ubyte]):this (FullOpts) 42 (12.069% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:WritePkcs8PrivateKey():System.Formats.Asn1.AsnWriter:this (FullOpts) 42 (11.538% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryExportSubjectPublicKeyInfo(System.Span`1[ubyte],byref):ubyte:this (FullOpts) 20 (10.695% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.HashAlgorithm:HashCore(System.ReadOnlySpan`1[ubyte]):this (FullOpts) 25 (10.373% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.HashAlgorithm:ComputeHash(System.IO.Stream):ubyte[]:this (FullOpts) 47 (10.352% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.CertificateRequest:NormalizeSerialNumber(System.ReadOnlySpan`1[ubyte]):System.ArraySegment`1[ubyte] (FullOpts) 73 (8.680% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged:DeriveBytesOneShot(System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]) (FullOpts) 46 (8.679% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.ECDsa:SignHashCore(System.ReadOnlySpan`1[ubyte],int):ubyte[]:this (FullOpts) 42 (8.235% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.ECDsa:TryHashData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,byref):ubyte:this (FullOpts) 46 (8.200% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.ECDsa:SignDataCore(System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName,int):ubyte[]:this (FullOpts) 42 (8.077% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryHashData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,byref):ubyte:this (FullOpts) 30 (7.026% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.SymmetricAlgorithm:DecryptCbc(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int):ubyte[]:this (FullOpts) 24 (6.761% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierExtension:HashSubjectPublicKeyInfo(System.Security.Cryptography.X509Certificates.PublicKey,System.Security.Cryptography.HashAlgorithmName):ubyte[] (FullOpts) 45 (6.560% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:ExtractPrivateKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],int,System.Security.Cryptography.AsymmetricAlgorithm[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[]):this (FullOpts) 28 (6.074% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.UnixExportProvider:EncodeKeys(System.Formats.Asn1.AsnWriter,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],int):System.ArraySegment`1[ubyte] (FullOpts) 21 (5.949% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream:CopyTo(System.IO.Stream,int):this (FullOpts) 22 (5.432% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.OpenSslCipherLite:Transform(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int:this (FullOpts) 44 (5.308% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:UncheckedTransformFinalBlock(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int:this (FullOpts) 26 (4.869% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[int](int,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[int],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.869% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[long](long,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[long],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.860% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[short](short,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[short],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.860% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[ubyte](ubyte,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[ubyte],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.842% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToEncryptedPem[System.Nullable`1[int],System.Nullable`1[int]](System.Nullable`1[int],System.ReadOnlySpan`1[System.Nullable`1[int]],System.Security.Cryptography.PbeParameters,System.Security.Cryptography.PemKeyHelpers+TryExportEncryptedKeyAction`2[System.Nullable`1[int],System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.842% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[System.__Canon](System.__Canon,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.__Canon],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.842% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[System.Nullable`1[int]](System.Nullable`1[int],System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.815% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToEncryptedPem[System.__Canon,System.Nullable`1[int]](System.__Canon,System.ReadOnlySpan`1[System.Nullable`1[int]],System.Security.Cryptography.PbeParameters,System.Security.Cryptography.PemKeyHelpers+TryExportEncryptedKeyAction`2[System.__Canon,System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.779% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToEncryptedPem[int,System.Nullable`1[int]](int,System.ReadOnlySpan`1[System.Nullable`1[int]],System.Security.Cryptography.PbeParameters,System.Security.Cryptography.PemKeyHelpers+TryExportEncryptedKeyAction`2[int,System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.779% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToEncryptedPem[long,System.Nullable`1[int]](long,System.ReadOnlySpan`1[System.Nullable`1[int]],System.Security.Cryptography.PbeParameters,System.Security.Cryptography.PemKeyHelpers+TryExportEncryptedKeyAction`2[long,System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.771% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToEncryptedPem[short,System.Nullable`1[int]](short,System.ReadOnlySpan`1[System.Nullable`1[int]],System.Security.Cryptography.PbeParameters,System.Security.Cryptography.PemKeyHelpers+TryExportEncryptedKeyAction`2[short,System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.771% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToEncryptedPem[ubyte,System.Nullable`1[int]](ubyte,System.ReadOnlySpan`1[System.Nullable`1[int]],System.Security.Cryptography.PbeParameters,System.Security.Cryptography.PemKeyHelpers+TryExportEncryptedKeyAction`2[ubyte,System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.745% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToEncryptedPem[double,System.Nullable`1[int]](double,System.ReadOnlySpan`1[System.Nullable`1[int]],System.Security.Cryptography.PbeParameters,System.Security.Cryptography.PemKeyHelpers+TryExportEncryptedKeyAction`2[double,System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.685% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToEncryptedPem[System.Numerics.Vector`1[float],System.Nullable`1[int]](System.Numerics.Vector`1[float],System.ReadOnlySpan`1[System.Nullable`1[int]],System.Security.Cryptography.PbeParameters,System.Security.Cryptography.PemKeyHelpers+TryExportEncryptedKeyAction`2[System.Numerics.Vector`1[float],System.Nullable`1[int]],System.Span`1[ushort],byref):ubyte (FullOpts) 26 (4.685% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSAOpenSsl:TryDecrypt(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.RSAEncryptionPadding,byref):ubyte:this (FullOpts) 22 (4.622% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:VerifyData(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding):ubyte:this (FullOpts) 26 (4.577% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X500DistinguishedNameBuilder:Build():System.Security.Cryptography.X509Certificates.X500DistinguishedName:this (FullOpts) 32 (4.520% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.CertificateRevocationListBuilder:LoadPem(System.ReadOnlySpan`1[ushort],byref):System.Security.Cryptography.X509Certificates.CertificateRevocationListBuilder (FullOpts) 22 (4.508% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSAOpenSsl:Decrypt(ubyte[],System.Security.Cryptography.RSAEncryptionPadding):ubyte[]:this (FullOpts) 27 (4.405% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[System.__Canon](System.ReadOnlySpan`1[ubyte],System.__Canon,System.Security.Cryptography.RSA+TryFunc`1[System.__Canon],ubyte):ubyte[]:this (FullOpts) 27 (4.376% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[int](System.ReadOnlySpan`1[ubyte],int,System.Security.Cryptography.RSA+TryFunc`1[int],ubyte):ubyte[]:this (FullOpts) 27 (4.376% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[long](System.ReadOnlySpan`1[ubyte],long,System.Security.Cryptography.RSA+TryFunc`1[long],ubyte):ubyte[]:this (FullOpts) 27 (4.362% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[short](System.ReadOnlySpan`1[ubyte],short,System.Security.Cryptography.RSA+TryFunc`1[short],ubyte):ubyte[]:this (FullOpts) 27 (4.362% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[ubyte](System.ReadOnlySpan`1[ubyte],ubyte,System.Security.Cryptography.RSA+TryFunc`1[ubyte],ubyte):ubyte[]:this (FullOpts) 25 (4.209% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:UncheckedTransformFinalBlock(ubyte[],int,int):ubyte[]:this (FullOpts) 44 (3.960% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.HashAlgorithm+d__16:MoveNext():this (FullOpts) 22 (3.860% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.OpenSslCipherLite:TransformFinal(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int:this (FullOpts) 25 (3.748% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream:g__TransformBlock|53_0(System.Security.Cryptography.ICryptoTransform,System.ReadOnlyMemory`1[ubyte],ubyte[],int):int (FullOpts) 32 (3.725% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.Rfc2898DeriveBytes:Pbkdf2Core(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,System.Security.Cryptography.HashAlgorithmName) (FullOpts) 23 (3.704% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[double](System.ReadOnlySpan`1[ubyte],double,System.Security.Cryptography.RSA+TryFunc`1[double],ubyte):ubyte[]:this (FullOpts) 23 (3.674% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[System.Nullable`1[int]](System.ReadOnlySpan`1[ubyte],System.Nullable`1[int],System.Security.Cryptography.RSA+TryFunc`1[System.Nullable`1[int]],ubyte):ubyte[]:this (FullOpts) 23 (3.674% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[System.Numerics.Vector`1[float]](System.ReadOnlySpan`1[ubyte],System.Numerics.Vector`1[float],System.Security.Cryptography.RSA+TryFunc`1[System.Numerics.Vector`1[float]],ubyte):ubyte[]:this (FullOpts) 41 (3.414% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.CertificateRequest:LoadSigningRequestPem(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.HashAlgorithmName,int,System.Security.Cryptography.RSASignaturePadding):System.Security.Cryptography.X509Certificates.CertificateRequest (FullOpts) 22 (2.857% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:DecryptSafeContents(System.ReadOnlySpan`1[ushort],byref) (FullOpts) 52 (2.708% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream+d__56:MoveNext():this (FullOpts) 15 (2.674% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float],System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[System.Numerics.Vector`1[float]],System.Span`1[ushort],byref):ubyte (FullOpts) 22 (2.254% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:CreateFromPem(System.ReadOnlySpan`1[ushort]):System.Security.Cryptography.X509Certificates.X509Certificate2 (FullOpts) 23 (2.184% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.UnixExportProvider:EncodeCerts(System.Formats.Asn1.AsnWriter,System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[],int,System.Span`1[ubyte],System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref,byref):System.ArraySegment`1[ubyte] (FullOpts) 22 (2.093% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.HKDF:Expand(System.Security.Cryptography.HashAlgorithmName,int,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.ReadOnlySpan`1[ubyte]) (FullOpts) 26 (1.852% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.UnixExportProvider:EncodeAuthSafe(System.Formats.Asn1.AsnWriter,System.ReadOnlyMemory`1[ubyte],System.ReadOnlyMemory`1[ubyte],ubyte,System.String,System.String,System.Span`1[ubyte],System.Span`1[ubyte]):System.ArraySegment`1[ubyte] (FullOpts) 21 (1.714% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:ImportPem(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.PemKeyHelpers+FindImportActionFunc) (FullOpts) 22 (1.655% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:FindChainViaAia(byref):Interop+Crypto+X509VerifyStatusCode:this (FullOpts) 9 (1.619% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:TryExportToPem[double](double,System.String,System.Security.Cryptography.PemKeyHelpers+TryExportKeyAction`1[double],System.Span`1[ushort],byref):ubyte (FullOpts) 49 (1.592% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream+d__44:MoveNext():this (FullOpts) 26 (1.422% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.UniversalCryptoOneShot:OneShotDecrypt(System.Security.Cryptography.ILiteSymmetricCipher,int,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte (FullOpts) 22 (1.222% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.Asn1.Pkcs12.PfxAsn:DecryptContentInfo(System.Security.Cryptography.Asn1.Pkcs7.ContentInfoAsn,byref):System.ArraySegment`1[ubyte] (FullOpts) 22 (1.215% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.Pkcs.Pkcs12Kdf:Derive(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.HashAlgorithmName,int,ubyte,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]) (FullOpts) 38 (1.120% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream+d__53:MoveNext():this (FullOpts) 8 (0.877% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:ImportEncryptedPem[double](System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[double],System.Security.Cryptography.PemKeyHelpers+ImportEncryptedKeyAction`1[double]) (FullOpts) 8 (0.877% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:ImportEncryptedPem[int](System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[int],System.Security.Cryptography.PemKeyHelpers+ImportEncryptedKeyAction`1[int]) (FullOpts) 8 (0.877% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:ImportEncryptedPem[long](System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[long],System.Security.Cryptography.PemKeyHelpers+ImportEncryptedKeyAction`1[long]) (FullOpts) 8 (0.877% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:ImportEncryptedPem[short](System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[short],System.Security.Cryptography.PemKeyHelpers+ImportEncryptedKeyAction`1[short]) (FullOpts) 8 (0.877% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:ImportEncryptedPem[System.Nullable`1[int]](System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.Nullable`1[int]],System.Security.Cryptography.PemKeyHelpers+ImportEncryptedKeyAction`1[System.Nullable`1[int]]) (FullOpts) 8 (0.877% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:ImportEncryptedPem[System.Numerics.Vector`1[float]](System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.Numerics.Vector`1[float]],System.Security.Cryptography.PemKeyHelpers+ImportEncryptedKeyAction`1[System.Numerics.Vector`1[float]]) (FullOpts) 8 (0.877% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:ImportEncryptedPem[ubyte](System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.PemKeyHelpers+ImportEncryptedKeyAction`1[ubyte]) (FullOpts) 8 (0.876% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:ImportEncryptedPem[System.__Canon](System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.__Canon],System.Security.Cryptography.PemKeyHelpers+ImportEncryptedKeyAction`1[System.__Canon]) (FullOpts) 22 (0.693% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.ECDiffieHellmanOpenSsl:DeriveSecretAgreement(System.Security.Cryptography.ECDiffieHellmanPublicKey,System.Security.Cryptography.IncrementalHash):ubyte[]:this (FullOpts) Top method improvements (percentages): -130 (-87.248% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Numerics.Vector`1[float]](System.Span`1[System.Numerics.Vector`1[float]]):this (FullOpts) -127 (-86.986% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Nullable`1[int]](System.Span`1[System.Nullable`1[int]]):this (FullOpts) -120 (-86.331% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[double](System.Span`1[double]):this (FullOpts) -118 (-86.131% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[short](System.Span`1[short]):this (FullOpts) -116 (-85.926% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[long](System.Span`1[long]):this (FullOpts) -116 (-85.926% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[ubyte](System.Span`1[ubyte]):this (FullOpts) -112 (-85.496% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[int](System.Span`1[int]):this (FullOpts) -64 (-39.752% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.__Canon](System.Span`1[System.__Canon]):this (FullOpts) -61 (-33.516% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.__Canon](System.__Canon[]):this (FullOpts) -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[double](double[]):this (FullOpts) -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[int](int[]):this (FullOpts) -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[long](long[]):this (FullOpts) -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[short](short[]):this (FullOpts) -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Nullable`1[int]](System.Nullable`1[int][]):this (FullOpts) -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][]):this (FullOpts) -12 (-15.190% of base) : System.Private.CoreLib.dasm - System.Random:Shuffle[ubyte](ubyte[]):this (FullOpts) 105 total methods with Code Size differences (16 improved, 89 regressed), 238859 unchanged. -------------------------------------------------------------------------------- ```

Artifacts:

MihuBot commented 9 months ago

Top method improvements

-130 (-87.248% of base) - System.Random:Shuffle[System.Numerics.Vector`1[float]](System.Span`1[System.Numerics.Vector`1[float]]):this ```diff ; Assembly listing for method System.Random:Shuffle[System.Numerics.Vector`1[float]](System.Span`1[System.Numerics.Vector`1[float]]):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code -; rbp based frame +; rsp based frame ; partially interruptible ; No PGO data +; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T03] ( 4, 6.50) ref -> r15 this class-hnd single-def +; V00 this [V00,T00] ( 3, 3 ) ref -> rdi this class-hnd single-def ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def -; V02 loc0 [V02,T09] ( 2, 3 ) int -> r13 -; V03 loc1 [V03,T00] ( 7, 23 ) int -> r12 -; V04 loc2 [V04,T01] ( 4, 12 ) int -> rax -; V05 loc3 [V05,T10] ( 2, 4 ) simd32 -> mm0 -;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V07 tmp1 [V07,T04] ( 3, 5 ) byref -> r14 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp2 [V08,T02] ( 4, 7 ) int -> rbx single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T05] ( 3, 6 ) byref -> rcx "CSE - aggressive" -; V10 cse1 [V10,T06] ( 3, 6 ) byref -> rax "CSE - aggressive" -; V11 cse2 [V11,T08] ( 2, 4.50) long -> [rbp-0x30] spill-single-def hoist "CSE - aggressive" -; V12 cse3 [V12,T07] ( 3, 6 ) int -> [rbp-0x34] spill-single-def "CSE - aggressive" +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +; V04 tmp2 [V04,T01] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V05 tmp3 [V05,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP +;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP +;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP ; -; Lcl frame size = 24 +; Lcl frame size = 8 G_M45852_IG01: - push rbp - push r15 - push r14 - push r13 - push r12 - push rbx - sub rsp, 24 - lea rbp, [rsp+0x40] - mov r15, rdi - mov r14, rsi - mov ebx, edx - ;; size=27 bbWeight=1 PerfScore 7.50 + push rax + ;; size=1 bbWeight=1 PerfScore 1.00 G_M45852_IG02: - mov r13d, ebx - xor r12d, r12d - lea eax, [rbx-0x01] - mov dword ptr [rbp-0x34], eax - test eax, eax - jle SHORT G_M45852_IG07 - ;; size=16 bbWeight=1 PerfScore 3.25 + mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[System.Numerics.Vector`1[float]](byref,int):this + call [rax]System.Random:Shuffle[System.Numerics.Vector`1[float]](byref,int):this + nop + ;; size=13 bbWeight=1 PerfScore 3.50 G_M45852_IG03: - mov rdi, qword ptr [r15] - mov rcx, qword ptr [rdi+0x40] - mov qword ptr [rbp-0x30], rcx - ;; size=11 bbWeight=0.50 PerfScore 2.50 -G_M45852_IG04: - mov rdi, r15 - mov esi, r12d - mov edx, ebx - call [rcx+0x30]System.Random:Next(int,int):int:this - cmp eax, r12d - je SHORT G_M45852_IG06 - ;; size=16 bbWeight=4 PerfScore 20.00 -G_M45852_IG05: - mov ecx, r12d - shl rcx, 5 - add rcx, r14 - vmovups ymm0, ymmword ptr [rcx] - cmp eax, r13d - jae SHORT G_M45852_IG08 - mov eax, eax - shl rax, 5 - add rax, r14 - vmovups ymm1, ymmword ptr [rax] - vmovups ymmword ptr [rcx], ymm1 - vmovups ymmword ptr [rax], ymm0 - ;; size=40 bbWeight=2 PerfScore 34.50 -G_M45852_IG06: - inc r12d - mov eax, dword ptr [rbp-0x34] - cmp r12d, eax - mov rcx, qword ptr [rbp-0x30] - jl SHORT G_M45852_IG04 - ;; size=15 bbWeight=4 PerfScore 14.00 -G_M45852_IG07: - vzeroupper - add rsp, 24 - pop rbx - pop r12 - pop r13 - pop r14 - pop r15 - pop rbp + add rsp, 8 ret - ;; size=18 bbWeight=1 PerfScore 5.25 -G_M45852_IG08: - call CORINFO_HELP_RNGCHKFAIL - int3 - ;; size=6 bbWeight=0 PerfScore 0.00 + ;; size=5 bbWeight=1 PerfScore 1.25 -; Total bytes of code 149, prolog size 19, PerfScore 87.00, instruction count 54, allocated bytes for code 149 (MethodHash=07bd4ce3) for method System.Random:Shuffle[System.Numerics.Vector`1[float]](System.Span`1[System.Numerics.Vector`1[float]]):this (FullOpts) +; Total bytes of code 19, prolog size 1, PerfScore 5.75, instruction count 6, allocated bytes for code 19 (MethodHash=07bd4ce3) for method System.Random:Shuffle[System.Numerics.Vector`1[float]](System.Span`1[System.Numerics.Vector`1[float]]):this (FullOpts) ```
-127 (-86.986% of base) - System.Random:Shuffle[System.Nullable`1[int]](System.Span`1[System.Nullable`1[int]]):this ```diff ; Assembly listing for method System.Random:Shuffle[System.Nullable`1[int]](System.Span`1[System.Nullable`1[int]]):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code -; rbp based frame +; rsp based frame ; partially interruptible ; No PGO data +; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T05] ( 4, 6.50) ref -> r15 this class-hnd single-def +; V00 this [V00,T00] ( 3, 3 ) ref -> rdi this class-hnd single-def ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def -; V02 loc0 [V02,T13] ( 2, 3 ) int -> r13 -; V03 loc1 [V03,T00] ( 7, 23 ) int -> r12 -; V04 loc2 [V04,T01] ( 4, 12 ) int -> rax -;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref -;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V07 tmp1 [V07,T06] ( 3, 5 ) byref -> r14 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp2 [V08,T04] ( 4, 7 ) int -> rbx single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 tmp3 [V09,T11] ( 2, 4 ) ubyte -> rdi "field V05.hasValue (fldOffset=0x0)" P-INDEP -; V10 tmp4 [V10,T12] ( 2, 4 ) int -> rdx "field V05.value (fldOffset=0x4)" P-INDEP -; V11 tmp5 [V11,T02] ( 3, 12 ) byref -> rdx "BlockOp address local" -; V12 tmp6 [V12,T03] ( 3, 12 ) byref -> rax "BlockOp address local" -; V13 cse0 [V13,T07] ( 3, 6 ) byref -> rcx "CSE - moderate" -; V14 cse1 [V14,T08] ( 3, 6 ) byref -> rax "CSE - moderate" -; V15 cse2 [V15,T10] ( 2, 4.50) long -> [rbp-0x30] spill-single-def hoist "CSE - moderate" -; V16 cse3 [V16,T09] ( 3, 6 ) int -> [rbp-0x34] spill-single-def "CSE - moderate" +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +; V04 tmp2 [V04,T01] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V05 tmp3 [V05,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP +;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP +;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP ; -; Lcl frame size = 24 +; Lcl frame size = 8 G_M4412_IG01: - push rbp - push r15 - push r14 - push r13 - push r12 - push rbx - sub rsp, 24 - lea rbp, [rsp+0x40] - mov r15, rdi - mov r14, rsi - mov ebx, edx - ;; size=27 bbWeight=1 PerfScore 7.50 + push rax + ;; size=1 bbWeight=1 PerfScore 1.00 G_M4412_IG02: - mov r13d, ebx - xor r12d, r12d - lea eax, [rbx-0x01] - mov dword ptr [rbp-0x34], eax - test eax, eax - jle SHORT G_M4412_IG07 - ;; size=16 bbWeight=1 PerfScore 3.25 + mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[System.Nullable`1[int]](byref,int):this + call [rax]System.Random:Shuffle[System.Nullable`1[int]](byref,int):this + nop + ;; size=13 bbWeight=1 PerfScore 3.50 G_M4412_IG03: - mov rdi, qword ptr [r15] - mov rcx, qword ptr [rdi+0x40] - mov qword ptr [rbp-0x30], rcx - ;; size=11 bbWeight=0.50 PerfScore 2.50 -G_M4412_IG04: - mov rdi, r15 - mov esi, r12d - mov edx, ebx - call [rcx+0x30]System.Random:Next(int,int):int:this - cmp eax, r12d - je SHORT G_M4412_IG06 - ;; size=16 bbWeight=4 PerfScore 20.00 -G_M4412_IG05: - mov ecx, r12d - lea rcx, bword ptr [r14+8*rcx] - mov rdx, rcx - movzx rdi, byte ptr [rdx] - mov edx, dword ptr [rdx+0x04] - cmp eax, r13d - jae SHORT G_M4412_IG08 - mov eax, eax - lea rax, bword ptr [r14+8*rax] - mov rsi, qword ptr [rax] - mov qword ptr [rcx], rsi - mov byte ptr [rax], dil - mov dword ptr [rax+0x04], edx - ;; size=40 bbWeight=2 PerfScore 24.00 -G_M4412_IG06: - inc r12d - mov eax, dword ptr [rbp-0x34] - cmp r12d, eax - mov rcx, qword ptr [rbp-0x30] - jl SHORT G_M4412_IG04 - ;; size=15 bbWeight=4 PerfScore 14.00 -G_M4412_IG07: - add rsp, 24 - pop rbx - pop r12 - pop r13 - pop r14 - pop r15 - pop rbp + add rsp, 8 ret - ;; size=15 bbWeight=1 PerfScore 4.25 -G_M4412_IG08: - call CORINFO_HELP_RNGCHKFAIL - int3 - ;; size=6 bbWeight=0 PerfScore 0.00 + ;; size=5 bbWeight=1 PerfScore 1.25 -; Total bytes of code 146, prolog size 19, PerfScore 75.50, instruction count 54, allocated bytes for code 146 (MethodHash=f6feeec3) for method System.Random:Shuffle[System.Nullable`1[int]](System.Span`1[System.Nullable`1[int]]):this (FullOpts) +; Total bytes of code 19, prolog size 1, PerfScore 5.75, instruction count 6, allocated bytes for code 19 (MethodHash=f6feeec3) for method System.Random:Shuffle[System.Nullable`1[int]](System.Span`1[System.Nullable`1[int]]):this (FullOpts) ```
-120 (-86.331% of base) - System.Random:Shuffle[double](System.Span`1[double]):this ```diff ; Assembly listing for method System.Random:Shuffle[double](System.Span`1[double]):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code -; rbp based frame +; rsp based frame ; partially interruptible ; No PGO data +; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T04] ( 4, 6.50) ref -> r14 this class-hnd single-def +; V00 this [V00,T00] ( 3, 3 ) ref -> rdi this class-hnd single-def ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def -; V02 loc0 [V02,T09] ( 2, 3 ) int -> r13 -; V03 loc1 [V03,T00] ( 7, 23 ) int -> r12 -; V04 loc2 [V04,T01] ( 4, 12 ) int -> rax -; V05 loc3 [V05,T10] ( 2, 4 ) double -> mm0 -;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V07 tmp1 [V07,T02] ( 5, 9 ) byref -> rbx single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp2 [V08,T03] ( 4, 7 ) int -> r15 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T08] ( 2, 4.50) long -> [rbp-0x30] spill-single-def hoist "CSE - aggressive" -; V10 cse1 [V10,T05] ( 3, 6 ) int -> [rbp-0x34] spill-single-def "CSE - aggressive" -; V11 cse2 [V11,T06] ( 3, 6 ) long -> rcx "CSE - aggressive" -; V12 cse3 [V12,T07] ( 3, 6 ) long -> rax "CSE - aggressive" +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +; V04 tmp2 [V04,T01] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V05 tmp3 [V05,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP +;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP +;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP ; -; Lcl frame size = 24 +; Lcl frame size = 8 G_M20668_IG01: - push rbp - push r15 - push r14 - push r13 - push r12 - push rbx - sub rsp, 24 - lea rbp, [rsp+0x40] - mov r14, rdi - mov rbx, rsi - mov r15d, edx - ;; size=28 bbWeight=1 PerfScore 7.50 + push rax + ;; size=1 bbWeight=1 PerfScore 1.00 G_M20668_IG02: - mov r13d, r15d - xor r12d, r12d - lea eax, [r15-0x01] - mov dword ptr [rbp-0x34], eax - test eax, eax - jle SHORT G_M20668_IG07 - ;; size=17 bbWeight=1 PerfScore 3.25 + mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[double](byref,int):this + call [rax]System.Random:Shuffle[double](byref,int):this + nop + ;; size=13 bbWeight=1 PerfScore 3.50 G_M20668_IG03: - mov rdi, qword ptr [r14] - mov rcx, qword ptr [rdi+0x40] - mov qword ptr [rbp-0x30], rcx - ;; size=11 bbWeight=0.50 PerfScore 2.50 -G_M20668_IG04: - mov rdi, r14 - mov esi, r12d - mov edx, r15d - call [rcx+0x30]System.Random:Next(int,int):int:this - cmp eax, r12d - je SHORT G_M20668_IG06 - ;; size=17 bbWeight=4 PerfScore 20.00 -G_M20668_IG05: - mov ecx, r12d - vmovsd xmm0, qword ptr [rbx+8*rcx] - cmp eax, r13d - jae SHORT G_M20668_IG08 - mov eax, eax - vmovsd xmm1, qword ptr [rbx+8*rax] - vmovsd qword ptr [rbx+8*rcx], xmm1 - vmovsd qword ptr [rbx+8*rax], xmm0 - ;; size=30 bbWeight=2 PerfScore 27.50 -G_M20668_IG06: - inc r12d - mov eax, dword ptr [rbp-0x34] - cmp r12d, eax - mov rcx, qword ptr [rbp-0x30] - jl SHORT G_M20668_IG04 - ;; size=15 bbWeight=4 PerfScore 14.00 -G_M20668_IG07: - add rsp, 24 - pop rbx - pop r12 - pop r13 - pop r14 - pop r15 - pop rbp + add rsp, 8 ret - ;; size=15 bbWeight=1 PerfScore 4.25 -G_M20668_IG08: - call CORINFO_HELP_RNGCHKFAIL - int3 - ;; size=6 bbWeight=0 PerfScore 0.00 + ;; size=5 bbWeight=1 PerfScore 1.25 -; Total bytes of code 139, prolog size 19, PerfScore 79.00, instruction count 49, allocated bytes for code 139 (MethodHash=621baf43) for method System.Random:Shuffle[double](System.Span`1[double]):this (FullOpts) +; Total bytes of code 19, prolog size 1, PerfScore 5.75, instruction count 6, allocated bytes for code 19 (MethodHash=621baf43) for method System.Random:Shuffle[double](System.Span`1[double]):this (FullOpts) ```
-118 (-86.131% of base) - System.Random:Shuffle[short](System.Span`1[short]):this ```diff ; Assembly listing for method System.Random:Shuffle[short](System.Span`1[short]):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code -; rbp based frame +; rsp based frame ; partially interruptible ; No PGO data +; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T04] ( 4, 6.50) ref -> r14 this class-hnd single-def +; V00 this [V00,T00] ( 3, 3 ) ref -> rdi this class-hnd single-def ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def -; V02 loc0 [V02,T10] ( 2, 3 ) int -> r13 -; V03 loc1 [V03,T00] ( 7, 23 ) int -> r12 -; V04 loc2 [V04,T01] ( 4, 12 ) int -> rax -; V05 loc3 [V05,T09] ( 2, 4 ) short -> rdx -;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V07 tmp1 [V07,T02] ( 5, 9 ) byref -> rbx single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp2 [V08,T03] ( 4, 7 ) int -> r15 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T08] ( 2, 4.50) long -> [rbp-0x30] spill-single-def hoist "CSE - aggressive" -; V10 cse1 [V10,T05] ( 3, 6 ) int -> [rbp-0x34] spill-single-def "CSE - aggressive" -; V11 cse2 [V11,T06] ( 3, 6 ) long -> rcx "CSE - aggressive" -; V12 cse3 [V12,T07] ( 3, 6 ) long -> rax "CSE - aggressive" +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +; V04 tmp2 [V04,T01] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V05 tmp3 [V05,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP +;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP +;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP ; -; Lcl frame size = 24 +; Lcl frame size = 8 G_M32252_IG01: - push rbp - push r15 - push r14 - push r13 - push r12 - push rbx - sub rsp, 24 - lea rbp, [rsp+0x40] - mov r14, rdi - mov rbx, rsi - mov r15d, edx - ;; size=28 bbWeight=1 PerfScore 7.50 + push rax + ;; size=1 bbWeight=1 PerfScore 1.00 G_M32252_IG02: - mov r13d, r15d - xor r12d, r12d - lea eax, [r15-0x01] - mov dword ptr [rbp-0x34], eax - test eax, eax - jle SHORT G_M32252_IG07 - ;; size=17 bbWeight=1 PerfScore 3.25 + mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[short](byref,int):this + call [rax]System.Random:Shuffle[short](byref,int):this + nop + ;; size=13 bbWeight=1 PerfScore 3.50 G_M32252_IG03: - mov rdi, qword ptr [r14] - mov rcx, qword ptr [rdi+0x40] - mov qword ptr [rbp-0x30], rcx - ;; size=11 bbWeight=0.50 PerfScore 2.50 -G_M32252_IG04: - mov rdi, r14 - mov esi, r12d - mov edx, r15d - call [rcx+0x30]System.Random:Next(int,int):int:this - cmp eax, r12d - je SHORT G_M32252_IG06 - ;; size=17 bbWeight=4 PerfScore 20.00 -G_M32252_IG05: - mov ecx, r12d - movsx rdx, word ptr [rbx+2*rcx] - cmp eax, r13d - jae SHORT G_M32252_IG08 - mov eax, eax - movsx rdi, word ptr [rbx+2*rax] - mov word ptr [rbx+2*rcx], di - mov word ptr [rbx+2*rax], dx - ;; size=28 bbWeight=2 PerfScore 23.50 -G_M32252_IG06: - inc r12d - mov eax, dword ptr [rbp-0x34] - cmp r12d, eax - mov rcx, qword ptr [rbp-0x30] - jl SHORT G_M32252_IG04 - ;; size=15 bbWeight=4 PerfScore 14.00 -G_M32252_IG07: - add rsp, 24 - pop rbx - pop r12 - pop r13 - pop r14 - pop r15 - pop rbp + add rsp, 8 ret - ;; size=15 bbWeight=1 PerfScore 4.25 -G_M32252_IG08: - call CORINFO_HELP_RNGCHKFAIL - int3 - ;; size=6 bbWeight=0 PerfScore 0.00 + ;; size=5 bbWeight=1 PerfScore 1.25 -; Total bytes of code 137, prolog size 19, PerfScore 75.00, instruction count 49, allocated bytes for code 137 (MethodHash=89df8203) for method System.Random:Shuffle[short](System.Span`1[short]):this (FullOpts) +; Total bytes of code 19, prolog size 1, PerfScore 5.75, instruction count 6, allocated bytes for code 19 (MethodHash=89df8203) for method System.Random:Shuffle[short](System.Span`1[short]):this (FullOpts) ```
-116 (-85.926% of base) - System.Random:Shuffle[long](System.Span`1[long]):this ```diff ; Assembly listing for method System.Random:Shuffle[long](System.Span`1[long]):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code -; rbp based frame +; rsp based frame ; partially interruptible ; No PGO data +; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T04] ( 4, 6.50) ref -> r14 this class-hnd single-def +; V00 this [V00,T00] ( 3, 3 ) ref -> rdi this class-hnd single-def ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def -; V02 loc0 [V02,T10] ( 2, 3 ) int -> r13 -; V03 loc1 [V03,T00] ( 7, 23 ) int -> r12 -; V04 loc2 [V04,T01] ( 4, 12 ) int -> rax -; V05 loc3 [V05,T09] ( 2, 4 ) long -> rdx -;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V07 tmp1 [V07,T02] ( 5, 9 ) byref -> rbx single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp2 [V08,T03] ( 4, 7 ) int -> r15 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T08] ( 2, 4.50) long -> [rbp-0x30] spill-single-def hoist "CSE - aggressive" -; V10 cse1 [V10,T05] ( 3, 6 ) int -> [rbp-0x34] spill-single-def "CSE - aggressive" -; V11 cse2 [V11,T06] ( 3, 6 ) long -> rcx "CSE - aggressive" -; V12 cse3 [V12,T07] ( 3, 6 ) long -> rax "CSE - aggressive" +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +; V04 tmp2 [V04,T01] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V05 tmp3 [V05,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP +;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP +;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP ; -; Lcl frame size = 24 +; Lcl frame size = 8 G_M2428_IG01: - push rbp - push r15 - push r14 - push r13 - push r12 - push rbx - sub rsp, 24 - lea rbp, [rsp+0x40] - mov r14, rdi - mov rbx, rsi - mov r15d, edx - ;; size=28 bbWeight=1 PerfScore 7.50 + push rax + ;; size=1 bbWeight=1 PerfScore 1.00 G_M2428_IG02: - mov r13d, r15d - xor r12d, r12d - lea eax, [r15-0x01] - mov dword ptr [rbp-0x34], eax - test eax, eax - jle SHORT G_M2428_IG07 - ;; size=17 bbWeight=1 PerfScore 3.25 + mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[long](byref,int):this + call [rax]System.Random:Shuffle[long](byref,int):this + nop + ;; size=13 bbWeight=1 PerfScore 3.50 G_M2428_IG03: - mov rdi, qword ptr [r14] - mov rcx, qword ptr [rdi+0x40] - mov qword ptr [rbp-0x30], rcx - ;; size=11 bbWeight=0.50 PerfScore 2.50 -G_M2428_IG04: - mov rdi, r14 - mov esi, r12d - mov edx, r15d - call [rcx+0x30]System.Random:Next(int,int):int:this - cmp eax, r12d - je SHORT G_M2428_IG06 - ;; size=17 bbWeight=4 PerfScore 20.00 -G_M2428_IG05: - mov ecx, r12d - mov rdx, qword ptr [rbx+8*rcx] - cmp eax, r13d - jae SHORT G_M2428_IG08 - mov eax, eax - mov rdi, qword ptr [rbx+8*rax] - mov qword ptr [rbx+8*rcx], rdi - mov qword ptr [rbx+8*rax], rdx - ;; size=26 bbWeight=2 PerfScore 15.50 -G_M2428_IG06: - inc r12d - mov eax, dword ptr [rbp-0x34] - cmp r12d, eax - mov rcx, qword ptr [rbp-0x30] - jl SHORT G_M2428_IG04 - ;; size=15 bbWeight=4 PerfScore 14.00 -G_M2428_IG07: - add rsp, 24 - pop rbx - pop r12 - pop r13 - pop r14 - pop r15 - pop rbp + add rsp, 8 ret - ;; size=15 bbWeight=1 PerfScore 4.25 -G_M2428_IG08: - call CORINFO_HELP_RNGCHKFAIL - int3 - ;; size=6 bbWeight=0 PerfScore 0.00 + ;; size=5 bbWeight=1 PerfScore 1.25 -; Total bytes of code 135, prolog size 19, PerfScore 67.00, instruction count 49, allocated bytes for code 135 (MethodHash=0961f683) for method System.Random:Shuffle[long](System.Span`1[long]):this (FullOpts) +; Total bytes of code 19, prolog size 1, PerfScore 5.75, instruction count 6, allocated bytes for code 19 (MethodHash=0961f683) for method System.Random:Shuffle[long](System.Span`1[long]):this (FullOpts) ```
-116 (-85.926% of base) - System.Random:Shuffle[ubyte](System.Span`1[ubyte]):this ```diff ; Assembly listing for method System.Random:Shuffle[ubyte](System.Span`1[ubyte]):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code -; rbp based frame +; rsp based frame ; partially interruptible ; No PGO data +; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T04] ( 4, 6.50) ref -> r14 this class-hnd single-def +; V00 this [V00,T00] ( 3, 3 ) ref -> rdi this class-hnd single-def ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def -; V02 loc0 [V02,T10] ( 2, 3 ) int -> r13 -; V03 loc1 [V03,T00] ( 7, 23 ) int -> r12 -; V04 loc2 [V04,T01] ( 4, 12 ) int -> rax -; V05 loc3 [V05,T09] ( 2, 4 ) ubyte -> rdx -;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V07 tmp1 [V07,T02] ( 5, 9 ) byref -> rbx single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp2 [V08,T03] ( 4, 7 ) int -> r15 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T08] ( 2, 4.50) long -> [rbp-0x30] spill-single-def hoist "CSE - aggressive" -; V10 cse1 [V10,T05] ( 3, 6 ) int -> [rbp-0x34] spill-single-def "CSE - aggressive" -; V11 cse2 [V11,T06] ( 3, 6 ) long -> rcx "CSE - aggressive" -; V12 cse3 [V12,T07] ( 3, 6 ) long -> rax "CSE - aggressive" +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +; V04 tmp2 [V04,T01] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V05 tmp3 [V05,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP +;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP +;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP ; -; Lcl frame size = 24 +; Lcl frame size = 8 G_M13980_IG01: - push rbp - push r15 - push r14 - push r13 - push r12 - push rbx - sub rsp, 24 - lea rbp, [rsp+0x40] - mov r14, rdi - mov rbx, rsi - mov r15d, edx - ;; size=28 bbWeight=1 PerfScore 7.50 + push rax + ;; size=1 bbWeight=1 PerfScore 1.00 G_M13980_IG02: - mov r13d, r15d - xor r12d, r12d - lea eax, [r15-0x01] - mov dword ptr [rbp-0x34], eax - test eax, eax - jle SHORT G_M13980_IG07 - ;; size=17 bbWeight=1 PerfScore 3.25 + mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[ubyte](byref,int):this + call [rax]System.Random:Shuffle[ubyte](byref,int):this + nop + ;; size=13 bbWeight=1 PerfScore 3.50 G_M13980_IG03: - mov rdi, qword ptr [r14] - mov rcx, qword ptr [rdi+0x40] - mov qword ptr [rbp-0x30], rcx - ;; size=11 bbWeight=0.50 PerfScore 2.50 -G_M13980_IG04: - mov rdi, r14 - mov esi, r12d - mov edx, r15d - call [rcx+0x30]System.Random:Next(int,int):int:this - cmp eax, r12d - je SHORT G_M13980_IG06 - ;; size=17 bbWeight=4 PerfScore 20.00 -G_M13980_IG05: - mov ecx, r12d - movzx rdx, byte ptr [rbx+rcx] - cmp eax, r13d - jae SHORT G_M13980_IG08 - mov eax, eax - movzx rdi, byte ptr [rbx+rax] - mov byte ptr [rbx+rcx], dil - mov byte ptr [rbx+rax], dl - ;; size=26 bbWeight=2 PerfScore 15.50 -G_M13980_IG06: - inc r12d - mov eax, dword ptr [rbp-0x34] - cmp r12d, eax - mov rcx, qword ptr [rbp-0x30] - jl SHORT G_M13980_IG04 - ;; size=15 bbWeight=4 PerfScore 14.00 -G_M13980_IG07: - add rsp, 24 - pop rbx - pop r12 - pop r13 - pop r14 - pop r15 - pop rbp + add rsp, 8 ret - ;; size=15 bbWeight=1 PerfScore 4.25 -G_M13980_IG08: - call CORINFO_HELP_RNGCHKFAIL - int3 - ;; size=6 bbWeight=0 PerfScore 0.00 + ;; size=5 bbWeight=1 PerfScore 1.25 -; Total bytes of code 135, prolog size 19, PerfScore 67.00, instruction count 49, allocated bytes for code 135 (MethodHash=637dc963) for method System.Random:Shuffle[ubyte](System.Span`1[ubyte]):this (FullOpts) +; Total bytes of code 19, prolog size 1, PerfScore 5.75, instruction count 6, allocated bytes for code 19 (MethodHash=637dc963) for method System.Random:Shuffle[ubyte](System.Span`1[ubyte]):this (FullOpts) ```
-112 (-85.496% of base) - System.Random:Shuffle[int](System.Span`1[int]):this ```diff ; Assembly listing for method System.Random:Shuffle[int](System.Span`1[int]):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code -; rbp based frame +; rsp based frame ; partially interruptible ; No PGO data +; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T04] ( 4, 6.50) ref -> r14 this class-hnd single-def +; V00 this [V00,T00] ( 3, 3 ) ref -> rdi this class-hnd single-def ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def -; V02 loc0 [V02,T10] ( 2, 3 ) int -> r13 -; V03 loc1 [V03,T00] ( 7, 23 ) int -> r12 -; V04 loc2 [V04,T01] ( 4, 12 ) int -> rax -; V05 loc3 [V05,T09] ( 2, 4 ) int -> rdx -;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V07 tmp1 [V07,T02] ( 5, 9 ) byref -> rbx single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp2 [V08,T03] ( 4, 7 ) int -> r15 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T08] ( 2, 4.50) long -> [rbp-0x30] spill-single-def hoist "CSE - aggressive" -; V10 cse1 [V10,T05] ( 3, 6 ) int -> [rbp-0x34] spill-single-def "CSE - aggressive" -; V11 cse2 [V11,T06] ( 3, 6 ) long -> rcx "CSE - aggressive" -; V12 cse3 [V12,T07] ( 3, 6 ) long -> rax "CSE - aggressive" +;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +; V04 tmp2 [V04,T01] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V05 tmp3 [V05,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP +;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP +;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP ; -; Lcl frame size = 24 +; Lcl frame size = 8 G_M28188_IG01: - push rbp - push r15 - push r14 - push r13 - push r12 - push rbx - sub rsp, 24 - lea rbp, [rsp+0x40] - mov r14, rdi - mov rbx, rsi - mov r15d, edx - ;; size=28 bbWeight=1 PerfScore 7.50 + push rax + ;; size=1 bbWeight=1 PerfScore 1.00 G_M28188_IG02: - mov r13d, r15d - xor r12d, r12d - lea eax, [r15-0x01] - mov dword ptr [rbp-0x34], eax - test eax, eax - jle SHORT G_M28188_IG07 - ;; size=17 bbWeight=1 PerfScore 3.25 + mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[int](byref,int):this + call [rax]System.Random:Shuffle[int](byref,int):this + nop + ;; size=13 bbWeight=1 PerfScore 3.50 G_M28188_IG03: - mov rdi, qword ptr [r14] - mov rcx, qword ptr [rdi+0x40] - mov qword ptr [rbp-0x30], rcx - ;; size=11 bbWeight=0.50 PerfScore 2.50 -G_M28188_IG04: - mov rdi, r14 - mov esi, r12d - mov edx, r15d - call [rcx+0x30]System.Random:Next(int,int):int:this - cmp eax, r12d - je SHORT G_M28188_IG06 - ;; size=17 bbWeight=4 PerfScore 20.00 -G_M28188_IG05: - mov ecx, r12d - mov edx, dword ptr [rbx+4*rcx] - cmp eax, r13d - jae SHORT G_M28188_IG08 - mov eax, eax - mov edi, dword ptr [rbx+4*rax] - mov dword ptr [rbx+4*rcx], edi - mov dword ptr [rbx+4*rax], edx - ;; size=22 bbWeight=2 PerfScore 15.50 -G_M28188_IG06: - inc r12d - mov eax, dword ptr [rbp-0x34] - cmp r12d, eax - mov rcx, qword ptr [rbp-0x30] - jl SHORT G_M28188_IG04 - ;; size=15 bbWeight=4 PerfScore 14.00 -G_M28188_IG07: - add rsp, 24 - pop rbx - pop r12 - pop r13 - pop r14 - pop r15 - pop rbp + add rsp, 8 ret - ;; size=15 bbWeight=1 PerfScore 4.25 -G_M28188_IG08: - call CORINFO_HELP_RNGCHKFAIL - int3 - ;; size=6 bbWeight=0 PerfScore 0.00 + ;; size=5 bbWeight=1 PerfScore 1.25 -; Total bytes of code 131, prolog size 19, PerfScore 67.00, instruction count 49, allocated bytes for code 131 (MethodHash=13c891e3) for method System.Random:Shuffle[int](System.Span`1[int]):this (FullOpts) +; Total bytes of code 19, prolog size 1, PerfScore 5.75, instruction count 6, allocated bytes for code 19 (MethodHash=13c891e3) for method System.Random:Shuffle[int](System.Span`1[int]):this (FullOpts) ```
-64 (-39.752% of base) - System.Random:Shuffle[System.__Canon](System.Span`1[System.__Canon]):this ```diff ; Assembly listing for method System.Random:Shuffle[System.__Canon](System.Span`1[System.__Canon]):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data +; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T04] ( 4, 6.50) ref -> r14 this class-hnd single-def -;* V01 TypeCtx [V01 ] ( 0, 0 ) long -> zero-ref single-def +; V00 this [V00,T02] ( 3, 3 ) ref -> rbx this class-hnd single-def +; V01 TypeCtx [V01,T00] ( 5, 4.20) long -> rsi single-def ;* V02 arg1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def -; V03 loc0 [V03,T10] ( 2, 3 ) int -> r13 -; V04 loc1 [V04,T00] ( 7, 23 ) int -> r12 -; V05 loc2 [V05,T01] ( 4, 12 ) int -> rax -; V06 loc3 [V06,T09] ( 2, 4 ) ref -> [rbp-0x48] class-hnd spill-single-def -;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V08 tmp1 [V08,T02] ( 5, 9 ) byref -> rbx single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V09 tmp2 [V09,T03] ( 4, 7 ) int -> r15 single-def "field V02._length (fldOffset=0x8)" P-INDEP -; V10 cse0 [V10,T08] ( 2, 4.50) long -> [rbp-0x30] spill-single-def hoist "CSE - aggressive" -; V11 cse1 [V11,T05] ( 3, 6 ) int -> [rbp-0x34] spill-single-def "CSE - aggressive" -; V12 cse2 [V12,T06] ( 3, 6 ) long -> rdi "CSE - aggressive" -; V13 cse3 [V13,T07] ( 3, 6 ) long -> [rbp-0x40] spill-single-def "CSE - aggressive" +;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" +;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" +;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +; V07 tmp4 [V07,T04] ( 2, 2 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T05] ( 2, 2 ) int -> r14 single-def "field V02._length (fldOffset=0x8)" P-INDEP +;* V09 tmp6 [V09 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP +;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP +; V11 tmp8 [V11,T06] ( 2, 4 ) long -> rsi "argument with side effect" +; V12 rat0 [V12,T03] ( 3, 4 ) long -> rsi "runtime lookup" +; V13 rat1 [V13,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable" ; -; Lcl frame size = 40 +; Lcl frame size = 8 G_M43260_IG01: push rbp push r15 push r14 - push r13 - push r12 push rbx - sub rsp, 40 - lea rbp, [rsp+0x50] - mov r14, rdi - mov rbx, rdx - mov r15d, ecx - ;; size=28 bbWeight=1 PerfScore 7.50 + push rax + lea rbp, [rsp+0x20] + mov qword ptr [rbp-0x20], rsi + mov rbx, rdi + mov r15, rdx + mov r14d, ecx + ;; size=25 bbWeight=1 PerfScore 7.25 G_M43260_IG02: - mov r13d, r15d - xor r12d, r12d - lea eax, [r15-0x01] - mov dword ptr [rbp-0x34], eax - test eax, eax - jle SHORT G_M43260_IG07 - ;; size=17 bbWeight=1 PerfScore 3.25 + mov rdi, qword ptr [rsi+0x10] + mov rax, qword ptr [rdi+0x18] + test rax, rax + je SHORT G_M43260_IG04 + ;; size=13 bbWeight=1 PerfScore 5.25 G_M43260_IG03: - mov rdi, qword ptr [r14] - mov rcx, qword ptr [rdi+0x40] - mov qword ptr [rbp-0x30], rcx - ;; size=11 bbWeight=0.50 PerfScore 2.50 + mov rsi, rax + jmp SHORT G_M43260_IG05 + ;; size=5 bbWeight=0.80 PerfScore 1.80 G_M43260_IG04: - mov rdi, r14 - mov esi, r12d - mov edx, r15d - call [rcx+0x30]System.Random:Next(int,int):int:this - cmp eax, r12d - je SHORT G_M43260_IG06 - ;; size=17 bbWeight=4 PerfScore 20.00 + mov rdi, rsi + mov rsi, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_RUNTIMEHANDLE_METHOD + mov rsi, rax + ;; size=21 bbWeight=0.20 PerfScore 0.35 G_M43260_IG05: - mov edi, r12d - mov rcx, gword ptr [rbx+8*rdi] - mov gword ptr [rbp-0x48], rcx - lea rdi, bword ptr [rbx+8*rdi] - cmp eax, r13d - jae SHORT G_M43260_IG08 - mov eax, eax - mov qword ptr [rbp-0x40], rax - mov rsi, gword ptr [rbx+8*rax] - call CORINFO_HELP_CHECKED_ASSIGN_REF - mov rdi, qword ptr [rbp-0x40] - lea rdi, bword ptr [rbx+8*rdi] - mov rsi, gword ptr [rbp-0x48] - call CORINFO_HELP_CHECKED_ASSIGN_REF - ;; size=52 bbWeight=2 PerfScore 25.50 + mov rdi, rbx + mov rdx, r15 + mov ecx, r14d + mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[System.__Canon](byref,int):this + call [rax]System.Random:Shuffle[System.__Canon](byref,int):this + nop + ;; size=22 bbWeight=1 PerfScore 4.25 G_M43260_IG06: - inc r12d - mov eax, dword ptr [rbp-0x34] - cmp r12d, eax - mov rcx, qword ptr [rbp-0x30] - jl SHORT G_M43260_IG04 - ;; size=15 bbWeight=4 PerfScore 14.00 -G_M43260_IG07: - add rsp, 40 + add rsp, 8 pop rbx - pop r12 - pop r13 pop r14 pop r15 pop rbp ret - ;; size=15 bbWeight=1 PerfScore 4.25 -G_M43260_IG08: - call CORINFO_HELP_RNGCHKFAIL - int3 - ;; size=6 bbWeight=0 PerfScore 0.00 + ;; size=11 bbWeight=1 PerfScore 3.25 -; Total bytes of code 161, prolog size 19, PerfScore 77.00, instruction count 55, allocated bytes for code 161 (MethodHash=d6715703) for method System.Random:Shuffle[System.__Canon](System.Span`1[System.__Canon]):this (FullOpts) +; Total bytes of code 97, prolog size 16, PerfScore 22.15, instruction count 32, allocated bytes for code 97 (MethodHash=d6715703) for method System.Random:Shuffle[System.__Canon](System.Span`1[System.__Canon]):this (FullOpts) ```
-61 (-33.516% of base) - System.Random:Shuffle[System.__Canon](System.__Canon[]):this ```diff ; Assembly listing for method System.Random:Shuffle[System.__Canon](System.__Canon[]):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data ; Final local variable assignments ; -; V00 this [V00,T04] ( 3, 3 ) ref -> r14 this class-hnd single-def -; V01 TypeCtx [V01,T00] ( 7, 5.40) long -> rbx single-def -; V02 arg1 [V02,T01] ( 4, 4 ) ref -> r15 class-hnd single-def +; V00 this [V00,T03] ( 3, 3 ) ref -> r14 this class-hnd single-def +; V01 TypeCtx [V01,T01] ( 5, 4.20) long -> r15 single-def +; V02 arg1 [V02,T00] ( 6, 6 ) ref -> rbx class-hnd single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V04 tmp1 [V04,T05] ( 3, 4 ) long -> r13 "spilling helperCall" -; V05 tmp2 [V05,T06] ( 3, 4 ) long -> r12 "spilling helperCall" -;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "spilled call-like call argument" -; V07 tmp4 [V07,T07] ( 2, 2 ) byref -> rax "field V06._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T08] ( 2, 2 ) int -> rcx "field V06._length (fldOffset=0x8)" P-INDEP -; V09 rat0 [V09,T02] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable" -; V10 rat1 [V10,T03] ( 3, 5.60) long -> r12 "fgMakeTemp is creating a new local variable" +;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" +; V05 tmp2 [V05,T05] ( 2, 4 ) long -> rsi "argument with side effect" +; V06 rat0 [V06,T04] ( 3, 4 ) long -> rsi "runtime lookup" +; V07 rat1 [V07,T02] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable" ; ; Lcl frame size = 8 G_M57994_IG01: push rbp push r15 push r14 - push r13 - push r12 push rbx push rax - lea rbp, [rsp+0x30] - mov qword ptr [rbp-0x30], rsi + lea rbp, [rsp+0x20] + mov qword ptr [rbp-0x20], rsi mov r14, rdi - mov rbx, rsi - mov r15, rdx - ;; size=29 bbWeight=1 PerfScore 9.25 + mov r15, rsi + mov rbx, rdx + ;; size=25 bbWeight=1 PerfScore 7.25 G_M57994_IG02: - mov rdi, r15 + mov rdi, rbx mov rsi, 0xD1FFAB1E ; 'values' mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String) call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String) - mov rdi, qword ptr [rbx+0x10] - mov r13, qword ptr [rdi+0x10] - test r13, r13 + cmp byte ptr [rbx], bl + mov rdi, qword ptr [r15+0x10] + mov rsi, qword ptr [rdi+0x10] + test rsi, rsi je SHORT G_M57994_IG04 - ;; size=38 bbWeight=1 PerfScore 9.00 + ;; size=40 bbWeight=1 PerfScore 12.00 G_M57994_IG03: jmp SHORT G_M57994_IG05 ;; size=2 bbWeight=0.80 PerfScore 1.60 G_M57994_IG04: - mov rdi, rbx + mov rdi, r15 mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov r13, rax + mov rsi, rax ;; size=21 bbWeight=0.20 PerfScore 0.35 G_M57994_IG05: - mov rdi, qword ptr [rbx+0x10] - mov r12, qword ptr [rdi+0x18] - test r12, r12 - je SHORT G_M57994_IG07 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M57994_IG06: - jmp SHORT G_M57994_IG08 - ;; size=2 bbWeight=0.80 PerfScore 1.60 -G_M57994_IG07: - mov rdi, rbx - mov rsi, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov r12, rax - ;; size=21 bbWeight=0.20 PerfScore 0.35 -G_M57994_IG08: - mov rdi, r13 - mov rsi, r15 - mov rax, 0xD1FFAB1E ; code for System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[]):System.Span`1[System.__Canon] - call [rax]System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[]):System.Span`1[System.__Canon] - mov ecx, edx - mov rdx, rax + mov ecx, dword ptr [rbx+0x08] + lea rdx, bword ptr [rbx+0x10] mov rdi, r14 - mov rsi, r12 - mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[System.__Canon](System.Span`1[System.__Canon]):this - ;; size=39 bbWeight=1 PerfScore 5.00 -G_M57994_IG09: + mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[System.__Canon](byref,int):this + ;; size=20 bbWeight=1 PerfScore 3.00 +G_M57994_IG06: add rsp, 8 pop rbx - pop r12 - pop r13 pop r14 pop r15 pop rbp - tail.jmp [rax]System.Random:Shuffle[System.__Canon](System.Span`1[System.__Canon]):this - ;; size=17 bbWeight=1 PerfScore 5.25 + tail.jmp [rax]System.Random:Shuffle[System.__Canon](byref,int):this + ;; size=13 bbWeight=1 PerfScore 4.25 -; Total bytes of code 182, prolog size 20, PerfScore 37.65, instruction count 51, allocated bytes for code 182 (MethodHash=86001d75) for method System.Random:Shuffle[System.__Canon](System.__Canon[]):this (FullOpts) +; Total bytes of code 121, prolog size 16, PerfScore 28.45, instruction count 34, allocated bytes for code 121 (MethodHash=86001d75) for method System.Random:Shuffle[System.__Canon](System.__Canon[]):this (FullOpts) ```
-12 (-15.190% of base) - System.Random:Shuffle[double](double[]):this ```diff ; Assembly listing for method System.Random:Shuffle[double](double[]):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> r15 this class-hnd single-def -; V01 arg1 [V01,T00] ( 6, 5 ) ref -> rbx class-hnd single-def +; V01 arg1 [V01,T00] ( 5, 5 ) ref -> rbx class-hnd single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" -;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" -;* V05 tmp3 [V05 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP -;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP -; V07 tmp5 [V07,T02] ( 3, 2 ) byref -> rsi "field V04._reference (fldOffset=0x0)" P-INDEP -; V08 tmp6 [V08,T03] ( 3, 2 ) int -> rdx "field V04._length (fldOffset=0x8)" P-INDEP ; ; Lcl frame size = 0 G_M49546_IG01: push rbp push r15 push rbx lea rbp, [rsp+0x10] mov r15, rdi mov rbx, rsi ;; size=15 bbWeight=1 PerfScore 4.00 G_M49546_IG02: mov rdi, rbx mov rsi, 0xD1FFAB1E ; 'values' mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String) call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String) - test rbx, rbx - jne SHORT G_M49546_IG04 - ;; size=30 bbWeight=1 PerfScore 5.00 -G_M49546_IG03: - xor rsi, rsi - xor edx, edx - jmp SHORT G_M49546_IG05 - ;; size=6 bbWeight=0.50 PerfScore 1.25 -G_M49546_IG04: - lea rsi, bword ptr [rbx+0x10] mov edx, dword ptr [rbx+0x08] - ;; size=7 bbWeight=0.50 PerfScore 1.25 -G_M49546_IG05: + lea rsi, bword ptr [rbx+0x10] mov rdi, r15 - mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[double](System.Span`1[double]):this - call [rax]System.Random:Shuffle[double](System.Span`1[double]):this - nop - ;; size=16 bbWeight=1 PerfScore 3.75 -G_M49546_IG06: + mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[double](byref,int):this + ;; size=45 bbWeight=1 PerfScore 6.75 +G_M49546_IG03: pop rbx pop r15 pop rbp - ret - ;; size=5 bbWeight=1 PerfScore 2.50 + tail.jmp [rax]System.Random:Shuffle[double](byref,int):this + ;; size=7 bbWeight=1 PerfScore 3.50 -; Total bytes of code 79, prolog size 9, PerfScore 17.75, instruction count 25, allocated bytes for code 79 (MethodHash=05ec3e75) for method System.Random:Shuffle[double](double[]):this (FullOpts) +; Total bytes of code 67, prolog size 9, PerfScore 14.25, instruction count 18, allocated bytes for code 67 (MethodHash=05ec3e75) for method System.Random:Shuffle[double](double[]):this (FullOpts) ```
-12 (-15.190% of base) - System.Random:Shuffle[int](int[]):this ```diff ; Assembly listing for method System.Random:Shuffle[int](int[]):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> r15 this class-hnd single-def -; V01 arg1 [V01,T00] ( 6, 5 ) ref -> rbx class-hnd single-def +; V01 arg1 [V01,T00] ( 5, 5 ) ref -> rbx class-hnd single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" -;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" -;* V05 tmp3 [V05 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP -;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP -; V07 tmp5 [V07,T02] ( 3, 2 ) byref -> rsi "field V04._reference (fldOffset=0x0)" P-INDEP -; V08 tmp6 [V08,T03] ( 3, 2 ) int -> rdx "field V04._length (fldOffset=0x8)" P-INDEP ; ; Lcl frame size = 0 G_M13002_IG01: push rbp push r15 push rbx lea rbp, [rsp+0x10] mov r15, rdi mov rbx, rsi ;; size=15 bbWeight=1 PerfScore 4.00 G_M13002_IG02: mov rdi, rbx mov rsi, 0xD1FFAB1E ; 'values' mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String) call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String) - test rbx, rbx - jne SHORT G_M13002_IG04 - ;; size=30 bbWeight=1 PerfScore 5.00 -G_M13002_IG03: - xor rsi, rsi - xor edx, edx - jmp SHORT G_M13002_IG05 - ;; size=6 bbWeight=0.50 PerfScore 1.25 -G_M13002_IG04: - lea rsi, bword ptr [rbx+0x10] mov edx, dword ptr [rbx+0x08] - ;; size=7 bbWeight=0.50 PerfScore 1.25 -G_M13002_IG05: + lea rsi, bword ptr [rbx+0x10] mov rdi, r15 - mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[int](System.Span`1[int]):this - call [rax]System.Random:Shuffle[int](System.Span`1[int]):this - nop - ;; size=16 bbWeight=1 PerfScore 3.75 -G_M13002_IG06: + mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[int](byref,int):this + ;; size=45 bbWeight=1 PerfScore 6.75 +G_M13002_IG03: pop rbx pop r15 pop rbp - ret - ;; size=5 bbWeight=1 PerfScore 2.50 + tail.jmp [rax]System.Random:Shuffle[int](byref,int):this + ;; size=7 bbWeight=1 PerfScore 3.50 -; Total bytes of code 79, prolog size 9, PerfScore 17.75, instruction count 25, allocated bytes for code 79 (MethodHash=1989cd35) for method System.Random:Shuffle[int](int[]):this (FullOpts) +; Total bytes of code 67, prolog size 9, PerfScore 14.25, instruction count 18, allocated bytes for code 67 (MethodHash=1989cd35) for method System.Random:Shuffle[int](int[]):this (FullOpts) ```
-12 (-15.190% of base) - System.Random:Shuffle[long](long[]):this ```diff ; Assembly listing for method System.Random:Shuffle[long](long[]):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> r15 this class-hnd single-def -; V01 arg1 [V01,T00] ( 6, 5 ) ref -> rbx class-hnd single-def +; V01 arg1 [V01,T00] ( 5, 5 ) ref -> rbx class-hnd single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" -;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" -;* V05 tmp3 [V05 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP -;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP -; V07 tmp5 [V07,T02] ( 3, 2 ) byref -> rsi "field V04._reference (fldOffset=0x0)" P-INDEP -; V08 tmp6 [V08,T03] ( 3, 2 ) int -> rdx "field V04._length (fldOffset=0x8)" P-INDEP ; ; Lcl frame size = 0 G_M5770_IG01: push rbp push r15 push rbx lea rbp, [rsp+0x10] mov r15, rdi mov rbx, rsi ;; size=15 bbWeight=1 PerfScore 4.00 G_M5770_IG02: mov rdi, rbx mov rsi, 0xD1FFAB1E ; 'values' mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String) call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String) - test rbx, rbx - jne SHORT G_M5770_IG04 - ;; size=30 bbWeight=1 PerfScore 5.00 -G_M5770_IG03: - xor rsi, rsi - xor edx, edx - jmp SHORT G_M5770_IG05 - ;; size=6 bbWeight=0.50 PerfScore 1.25 -G_M5770_IG04: - lea rsi, bword ptr [rbx+0x10] mov edx, dword ptr [rbx+0x08] - ;; size=7 bbWeight=0.50 PerfScore 1.25 -G_M5770_IG05: + lea rsi, bword ptr [rbx+0x10] mov rdi, r15 - mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[long](System.Span`1[long]):this - call [rax]System.Random:Shuffle[long](System.Span`1[long]):this - nop - ;; size=16 bbWeight=1 PerfScore 3.75 -G_M5770_IG06: + mov rax, 0xD1FFAB1E ; code for System.Random:Shuffle[long](byref,int):this + ;; size=45 bbWeight=1 PerfScore 6.75 +G_M5770_IG03: pop rbx pop r15 pop rbp - ret - ;; size=5 bbWeight=1 PerfScore 2.50 + tail.jmp [rax]System.Random:Shuffle[long](byref,int):this + ;; size=7 bbWeight=1 PerfScore 3.50 -; Total bytes of code 79, prolog size 9, PerfScore 17.75, instruction count 25, allocated bytes for code 79 (MethodHash=1048e975) for method System.Random:Shuffle[long](long[]):this (FullOpts) +; Total bytes of code 67, prolog size 9, PerfScore 14.25, instruction count 18, allocated bytes for code 67 (MethodHash=1048e975) for method System.Random:Shuffle[long](long[]):this (FullOpts) ```

Larger list of diffs: https://gist.github.com/MihuBot/80f0e8409dfae942f529e0c4031c0af6

MihuBot commented 9 months ago

@MihaZupan