Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[MihaZupan] JIT: Optimize const ShiftRightLogical for byte values on XArch #90

Open
MihuBot opened this issue Jul 6, 2023 · 1 comment

Comments

@MihuBot
Copy link
Owner

MihuBot commented Jul 6, 2023

Build completed in 44 minutes.
dotnet/runtime#86841

CoreLib diffs

Found 2 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 6511504
Total bytes of diff: 6508978
Total bytes of delta: -2526 (-0.04 % of base)
Total relative delta: -4.94
    diff is an improvement.
    relative diff is an improvement.


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

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

Top method improvements (bytes):
        -632 (-88.889% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector512:ShiftRightLogical(System.Runtime.Intrinsics.Vector512`1[byte],int):System.Runtime.Intrinsics.Vector512`1[byte] (FullOpts)
        -628 (-88.826% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector512:ShiftRightLogical(System.Runtime.Intrinsics.Vector512`1[ubyte],int):System.Runtime.Intrinsics.Vector512`1[ubyte] (FullOpts)
        -628 (-88.826% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector512`1[ubyte]:op_UnsignedRightShift(System.Runtime.Intrinsics.Vector512`1[ubyte],int):System.Runtime.Intrinsics.Vector512`1[ubyte] (FullOpts)
        -207 (-72.125% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector256:ShiftRightLogical(System.Runtime.Intrinsics.Vector256`1[byte],int):System.Runtime.Intrinsics.Vector256`1[byte] (FullOpts)
        -203 (-71.731% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector256:ShiftRightLogical(System.Runtime.Intrinsics.Vector256`1[ubyte],int):System.Runtime.Intrinsics.Vector256`1[ubyte] (FullOpts)
        -203 (-71.731% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector256`1[ubyte]:op_UnsignedRightShift(System.Runtime.Intrinsics.Vector256`1[ubyte],int):System.Runtime.Intrinsics.Vector256`1[ubyte] (FullOpts)
         -14 (-1.317% of base) : System.Private.CoreLib.dasm - System.Buffers.ProbabilisticMap:IndexOfAnyVectorized(byref,byref,int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
          -4 (-3.008% of base) : System.Private.CoreLib.dasm - System.Buffers.ProbabilisticMap:IsCharBitSet(System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte]):System.Runtime.Intrinsics.Vector128`1[ubyte] (FullOpts)
          -4 (-2.941% of base) : System.Private.CoreLib.dasm - System.Buffers.ProbabilisticMap:IsCharBitSetAvx2(System.Runtime.Intrinsics.Vector256`1[ubyte],System.Runtime.Intrinsics.Vector256`1[ubyte],System.Runtime.Intrinsics.Vector256`1[ubyte]):System.Runtime.Intrinsics.Vector256`1[ubyte] (FullOpts)
          -3 (-4.918% of base) : System.Private.CoreLib.dasm - System.Buffers.IndexOfAnyAsciiSearcher:IndexOfAnyLookupCore(System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte]):System.Runtime.Intrinsics.Vector128`1[ubyte] (FullOpts)

Top method improvements (percentages):
        -632 (-88.889% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector512:ShiftRightLogical(System.Runtime.Intrinsics.Vector512`1[byte],int):System.Runtime.Intrinsics.Vector512`1[byte] (FullOpts)
        -628 (-88.826% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector512:ShiftRightLogical(System.Runtime.Intrinsics.Vector512`1[ubyte],int):System.Runtime.Intrinsics.Vector512`1[ubyte] (FullOpts)
        -628 (-88.826% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector512`1[ubyte]:op_UnsignedRightShift(System.Runtime.Intrinsics.Vector512`1[ubyte],int):System.Runtime.Intrinsics.Vector512`1[ubyte] (FullOpts)
        -207 (-72.125% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector256:ShiftRightLogical(System.Runtime.Intrinsics.Vector256`1[byte],int):System.Runtime.Intrinsics.Vector256`1[byte] (FullOpts)
        -203 (-71.731% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector256:ShiftRightLogical(System.Runtime.Intrinsics.Vector256`1[ubyte],int):System.Runtime.Intrinsics.Vector256`1[ubyte] (FullOpts)
        -203 (-71.731% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector256`1[ubyte]:op_UnsignedRightShift(System.Runtime.Intrinsics.Vector256`1[ubyte],int):System.Runtime.Intrinsics.Vector256`1[ubyte] (FullOpts)
          -3 (-4.918% of base) : System.Private.CoreLib.dasm - System.Buffers.IndexOfAnyAsciiSearcher:IndexOfAnyLookupCore(System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte]):System.Runtime.Intrinsics.Vector128`1[ubyte] (FullOpts)
          -4 (-3.008% of base) : System.Private.CoreLib.dasm - System.Buffers.ProbabilisticMap:IsCharBitSet(System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte]):System.Runtime.Intrinsics.Vector128`1[ubyte] (FullOpts)
          -4 (-2.941% of base) : System.Private.CoreLib.dasm - System.Buffers.ProbabilisticMap:IsCharBitSetAvx2(System.Runtime.Intrinsics.Vector256`1[ubyte],System.Runtime.Intrinsics.Vector256`1[ubyte],System.Runtime.Intrinsics.Vector256`1[ubyte]):System.Runtime.Intrinsics.Vector256`1[ubyte] (FullOpts)
         -14 (-1.317% of base) : System.Private.CoreLib.dasm - System.Buffers.ProbabilisticMap:IndexOfAnyVectorized(byref,byref,int,System.ReadOnlySpan`1[ushort]):int (FullOpts)

10 total methods with Code Size differences (10 improved, 0 regressed), 52366 unchanged.

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

Frameworks diffs

Diffs
Found 265 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 37913835
Total bytes of diff: 37913533
Total bytes of delta: -302 (-0.00 % of base)
Total relative delta: -0.91
    diff is an improvement.
    relative diff is an improvement.


Top file regressions (bytes):
        2224 : System.Security.Cryptography.dasm (0.209% of base)

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

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

Top method regressions (bytes):
          58 (6.270% 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.683% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream+<CopyToAsyncInternal>d__56:MoveNext():this (FullOpts)
          49 (1.577% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream+<ReadAsyncCore>d__44:MoveNext():this (FullOpts)
          49 (15.457% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.DSA:HashSpanToArray(System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts)
          49 (15.409% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.ECDsa:HashSpanToArray(System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts)
          49 (7.538% 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)
          47 (10.330% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.CertificateRequest:NormalizeSerialNumber(System.ReadOnlySpan`1[ubyte]):System.ArraySegment`1[ubyte] (FullOpts)
          46 (8.156% 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.603% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RandomNumberGenerator:GetBytes(System.Span`1[ubyte]):this (FullOpts)
          46 (14.887% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RandomNumberGenerator:GetNonZeroBytes(System.Span`1[ubyte]):this (FullOpts)
          44 (3.873% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.HashAlgorithm+<ComputeHashAsyncCore>d__16:MoveNext():this (FullOpts)
          44 (5.263% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:UncheckedTransformFinalBlock(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int:this (FullOpts)
          42 (8.714% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.ECDsa:TryHashData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,byref):bool:this (FullOpts)
          42 (8.537% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryHashData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,byref):bool:this (FullOpts)
          41 (3.475% 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.151% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream+<WriteAsyncCore>d__53:MoveNext():this (FullOpts)
          33 (3.837% 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.432% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.CertificateRevocationListBuilder:LoadPem(System.ReadOnlySpan`1[ushort],byref):System.Security.Cryptography.X509Certificates.CertificateRevocationListBuilder (FullOpts)
          32 (7.407% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.ManagedX509ExtensionProcessor:ComputeCapiSha1OfPublicKey(System.Security.Cryptography.X509Certificates.PublicKey):ubyte[]:this (FullOpts)
          31 (8.179% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream:Write(System.ReadOnlySpan`1[ubyte]):this (FullOpts)
          30 (6.993% 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.009% 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)
          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.452% 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):bool (FullOpts)
          26 (4.538% 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):bool (FullOpts)
          26 (4.538% 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):bool (FullOpts)
          26 (4.530% 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):bool (FullOpts)
          26 (4.569% 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):bool (FullOpts)
          26 (4.522% 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):bool (FullOpts)
          26 (4.399% 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):bool (FullOpts)
          26 (4.530% 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):bool (FullOpts)
          26 (4.569% 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):bool (FullOpts)
          26 (4.610% 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):bool (FullOpts)
          26 (4.610% 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):bool (FullOpts)
          26 (4.602% 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):bool (FullOpts)
          26 (4.635% 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):bool (FullOpts)
          26 (4.635% 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):bool (FullOpts)
          26 (4.483% 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):bool (FullOpts)
          26 (4.602% 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):bool (FullOpts)
          26 (4.635% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSAOpenSsl:TryDecrypt(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.RSAEncryptionPadding,byref):bool:this (FullOpts)
          26 (1.399% 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):bool (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],bool,System.String,System.String,System.Span`1[ubyte],System.Span`1[ubyte]):System.ArraySegment`1[ubyte] (FullOpts)
          26 (4.538% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X500DistinguishedNameBuilder:Build():System.Security.Cryptography.X509Certificates.X500DistinguishedName:this (FullOpts)
          25 (10.373% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.HashAlgorithm:ComputeHash(System.IO.Stream):ubyte[]:this (FullOpts)
          25 (4.026% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:UncheckedTransformFinalBlock(ubyte[],int,int):ubyte[]:this (FullOpts)
          23 (3.680% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[double](System.ReadOnlySpan`1[ubyte],double,System.Security.Cryptography.RSA+TryFunc`1[double],bool):ubyte[]:this (FullOpts)
          23 (3.686% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[int](System.ReadOnlySpan`1[ubyte],int,System.Security.Cryptography.RSA+TryFunc`1[int],bool):ubyte[]:this (FullOpts)
          23 (3.686% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[long](System.ReadOnlySpan`1[ubyte],long,System.Security.Cryptography.RSA+TryFunc`1[long],bool):ubyte[]:this (FullOpts)
          23 (3.674% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[short](System.ReadOnlySpan`1[ubyte],short,System.Security.Cryptography.RSA+TryFunc`1[short],bool):ubyte[]:this (FullOpts)
          23 (3.710% 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],bool):ubyte[]:this (FullOpts)
          23 (3.668% 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]],bool):ubyte[]:this (FullOpts)
          23 (3.651% 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]],bool):ubyte[]:this (FullOpts)
          23 (3.674% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[ubyte](System.ReadOnlySpan`1[ubyte],ubyte,System.Security.Cryptography.RSA+TryFunc`1[ubyte],bool):ubyte[]:this (FullOpts)
          23 (2.205% 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.424% 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.692% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.ECDiffieHellmanOpenSsl:DeriveSecretAgreement(System.Security.Cryptography.ECDiffieHellmanPublicKey,System.Security.Cryptography.IncrementalHash):ubyte[]:this (FullOpts)
          22 (2.072% 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.846% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.OpenSslCipherLite:TransformFinal(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int:this (FullOpts)
          22 (1.220% 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 (5.598% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryExportSubjectPublicKeyInfo(System.Span`1[ubyte],byref):bool:this (FullOpts)
          22 (4.545% 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):bool:this (FullOpts)
          22 (5.898% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:WritePkcs8PrivateKey():System.Formats.Asn1.AsnWriter:this (FullOpts)
          22 (4.418% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSAOpenSsl:Decrypt(ubyte[],System.Security.Cryptography.RSAEncryptionPadding):ubyte[]:this (FullOpts)
          22 (1.649% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:FindChainViaAia(byref):Interop+Crypto+X509VerifyStatusCode:this (FullOpts)
          22 (2.839% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:DecryptSafeContents(System.ReadOnlySpan`1[ushort],byref) (FullOpts)
          22 (2.249% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:CreateFromPem(System.ReadOnlySpan`1[ushort]):System.Security.Cryptography.X509Certificates.X509Certificate2 (FullOpts)
          21 (5.932% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream:CopyTo(System.IO.Stream,int):this (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)
          19 (1.551% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:ImportPem(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.PemKeyHelpers+FindImportActionFunc) (FullOpts)
          16 (2.367% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream:<WriteAsyncCore>g__TransformBlock|53_0(System.Security.Cryptography.ICryptoTransform,System.ReadOnlyMemory`1[ubyte],ubyte[],int):int (FullOpts)
           8 (0.882% 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.882% 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.882% 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.882% 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.881% 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.882% 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.882% 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.882% 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):
        -632 (-88.889% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector512:ShiftRightLogical(System.Runtime.Intrinsics.Vector512`1[byte],int):System.Runtime.Intrinsics.Vector512`1[byte] (FullOpts)
        -628 (-88.826% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector512:ShiftRightLogical(System.Runtime.Intrinsics.Vector512`1[ubyte],int):System.Runtime.Intrinsics.Vector512`1[ubyte] (FullOpts)
        -628 (-88.826% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector512`1[ubyte]:op_UnsignedRightShift(System.Runtime.Intrinsics.Vector512`1[ubyte],int):System.Runtime.Intrinsics.Vector512`1[ubyte] (FullOpts)
        -207 (-72.125% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector256:ShiftRightLogical(System.Runtime.Intrinsics.Vector256`1[byte],int):System.Runtime.Intrinsics.Vector256`1[byte] (FullOpts)
        -203 (-71.731% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector256:ShiftRightLogical(System.Runtime.Intrinsics.Vector256`1[ubyte],int):System.Runtime.Intrinsics.Vector256`1[ubyte] (FullOpts)
        -203 (-71.731% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector256`1[ubyte]:op_UnsignedRightShift(System.Runtime.Intrinsics.Vector256`1[ubyte],int):System.Runtime.Intrinsics.Vector256`1[ubyte] (FullOpts)
         -14 (-1.317% of base) : System.Private.CoreLib.dasm - System.Buffers.ProbabilisticMap:IndexOfAnyVectorized(byref,byref,int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
          -4 (-3.008% of base) : System.Private.CoreLib.dasm - System.Buffers.ProbabilisticMap:IsCharBitSet(System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte]):System.Runtime.Intrinsics.Vector128`1[ubyte] (FullOpts)
          -4 (-2.941% of base) : System.Private.CoreLib.dasm - System.Buffers.ProbabilisticMap:IsCharBitSetAvx2(System.Runtime.Intrinsics.Vector256`1[ubyte],System.Runtime.Intrinsics.Vector256`1[ubyte],System.Runtime.Intrinsics.Vector256`1[ubyte]):System.Runtime.Intrinsics.Vector256`1[ubyte] (FullOpts)
          -3 (-4.918% of base) : System.Private.CoreLib.dasm - System.Buffers.IndexOfAnyAsciiSearcher:IndexOfAnyLookupCore(System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte]):System.Runtime.Intrinsics.Vector128`1[ubyte] (FullOpts)

Top method regressions (percentages):
          26 (15.758% of base) : System.Security.Cryptography.dasm - System.Formats.Asn1.AsnWriterExtensions:RentAndEncode(System.Formats.Asn1.AsnWriter):System.ArraySegment`1[ubyte] (FullOpts)
          49 (15.457% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.DSA:HashSpanToArray(System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts)
          49 (15.409% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.ECDsa:HashSpanToArray(System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts)
          46 (14.887% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RandomNumberGenerator:GetNonZeroBytes(System.Span`1[ubyte]):this (FullOpts)
          46 (14.603% 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)
          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.330% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.CertificateRequest:NormalizeSerialNumber(System.ReadOnlySpan`1[ubyte]):System.ArraySegment`1[ubyte] (FullOpts)
          42 (8.714% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.ECDsa:TryHashData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,byref):bool:this (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.537% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryHashData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,byref):bool:this (FullOpts)
          31 (8.179% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream:Write(System.ReadOnlySpan`1[ubyte]):this (FullOpts)
          46 (8.156% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.ECDsa:SignDataCore(System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName,int):ubyte[]:this (FullOpts)
          49 (7.538% 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)
          32 (7.407% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.ManagedX509ExtensionProcessor:ComputeCapiSha1OfPublicKey(System.Security.Cryptography.X509Certificates.PublicKey):ubyte[]:this (FullOpts)
          30 (6.993% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.SymmetricAlgorithm:DecryptCbc(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int):ubyte[]:this (FullOpts)
          58 (6.270% 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)
          28 (6.009% 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.932% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream:CopyTo(System.IO.Stream,int):this (FullOpts)
          22 (5.898% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:WritePkcs8PrivateKey():System.Formats.Asn1.AsnWriter:this (FullOpts)
          22 (5.598% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryExportSubjectPublicKeyInfo(System.Span`1[ubyte],byref):bool: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.263% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:UncheckedTransformFinalBlock(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int:this (FullOpts)
          26 (4.635% 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):bool (FullOpts)
          26 (4.635% 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):bool (FullOpts)
          26 (4.635% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSAOpenSsl:TryDecrypt(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.RSAEncryptionPadding,byref):bool:this (FullOpts)
          26 (4.610% 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):bool (FullOpts)
          26 (4.610% 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):bool (FullOpts)
          26 (4.602% 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):bool (FullOpts)
          26 (4.602% 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):bool (FullOpts)
          26 (4.569% 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):bool (FullOpts)
          26 (4.569% 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):bool (FullOpts)
          22 (4.545% 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):bool:this (FullOpts)
          26 (4.538% 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):bool (FullOpts)
          26 (4.538% 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):bool (FullOpts)
          26 (4.538% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X500DistinguishedNameBuilder:Build():System.Security.Cryptography.X509Certificates.X500DistinguishedName:this (FullOpts)
          26 (4.530% 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):bool (FullOpts)
          26 (4.530% 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):bool (FullOpts)
          26 (4.522% 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):bool (FullOpts)
          26 (4.483% 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):bool (FullOpts)
          26 (4.452% 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):bool (FullOpts)
          32 (4.432% 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.418% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSAOpenSsl:Decrypt(ubyte[],System.Security.Cryptography.RSAEncryptionPadding):ubyte[]:this (FullOpts)
          26 (4.399% 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):bool (FullOpts)
          25 (4.026% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:UncheckedTransformFinalBlock(ubyte[],int,int):ubyte[]:this (FullOpts)
          44 (3.873% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.HashAlgorithm+<ComputeHashAsyncCore>d__16:MoveNext():this (FullOpts)
          22 (3.846% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.OpenSslCipherLite:TransformFinal(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int:this (FullOpts)
          33 (3.837% 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.710% 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],bool):ubyte[]:this (FullOpts)
          23 (3.686% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[int](System.ReadOnlySpan`1[ubyte],int,System.Security.Cryptography.RSA+TryFunc`1[int],bool):ubyte[]:this (FullOpts)
          23 (3.686% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[long](System.ReadOnlySpan`1[ubyte],long,System.Security.Cryptography.RSA+TryFunc`1[long],bool):ubyte[]:this (FullOpts)
          23 (3.680% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[double](System.ReadOnlySpan`1[ubyte],double,System.Security.Cryptography.RSA+TryFunc`1[double],bool):ubyte[]:this (FullOpts)
          23 (3.674% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[short](System.ReadOnlySpan`1[ubyte],short,System.Security.Cryptography.RSA+TryFunc`1[short],bool):ubyte[]:this (FullOpts)
          23 (3.674% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:TryWithKeyBuffer[ubyte](System.ReadOnlySpan`1[ubyte],ubyte,System.Security.Cryptography.RSA+TryFunc`1[ubyte],bool):ubyte[]:this (FullOpts)
          23 (3.668% 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]],bool):ubyte[]:this (FullOpts)
          23 (3.651% 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]],bool):ubyte[]:this (FullOpts)
          41 (3.475% 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.839% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:DecryptSafeContents(System.ReadOnlySpan`1[ushort],byref) (FullOpts)
          52 (2.683% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream+<CopyToAsyncInternal>d__56:MoveNext():this (FullOpts)
          16 (2.367% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream:<WriteAsyncCore>g__TransformBlock|53_0(System.Security.Cryptography.ICryptoTransform,System.ReadOnlyMemory`1[ubyte],ubyte[],int):int (FullOpts)
          22 (2.249% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:CreateFromPem(System.ReadOnlySpan`1[ushort]):System.Security.Cryptography.X509Certificates.X509Certificate2 (FullOpts)
          23 (2.205% 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.072% 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],bool,System.String,System.String,System.Span`1[ubyte],System.Span`1[ubyte]):System.ArraySegment`1[ubyte] (FullOpts)
          22 (1.649% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:FindChainViaAia(byref):Interop+Crypto+X509VerifyStatusCode:this (FullOpts)
          49 (1.577% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream+<ReadAsyncCore>d__44:MoveNext():this (FullOpts)
          19 (1.551% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemKeyHelpers:ImportPem(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.PemKeyHelpers+FindImportActionFunc) (FullOpts)
          22 (1.424% 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)
          26 (1.399% 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):bool (FullOpts)
          22 (1.220% 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.151% of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptoStream+<WriteAsyncCore>d__53:MoveNext():this (FullOpts)
           8 (0.882% 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.882% 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.882% 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.882% 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.882% 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.882% 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.882% 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.881% 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.692% 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):
        -632 (-88.889% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector512:ShiftRightLogical(System.Runtime.Intrinsics.Vector512`1[byte],int):System.Runtime.Intrinsics.Vector512`1[byte] (FullOpts)
        -628 (-88.826% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector512:ShiftRightLogical(System.Runtime.Intrinsics.Vector512`1[ubyte],int):System.Runtime.Intrinsics.Vector512`1[ubyte] (FullOpts)
        -628 (-88.826% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector512`1[ubyte]:op_UnsignedRightShift(System.Runtime.Intrinsics.Vector512`1[ubyte],int):System.Runtime.Intrinsics.Vector512`1[ubyte] (FullOpts)
        -207 (-72.125% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector256:ShiftRightLogical(System.Runtime.Intrinsics.Vector256`1[byte],int):System.Runtime.Intrinsics.Vector256`1[byte] (FullOpts)
        -203 (-71.731% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector256:ShiftRightLogical(System.Runtime.Intrinsics.Vector256`1[ubyte],int):System.Runtime.Intrinsics.Vector256`1[ubyte] (FullOpts)
        -203 (-71.731% of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.Vector256`1[ubyte]:op_UnsignedRightShift(System.Runtime.Intrinsics.Vector256`1[ubyte],int):System.Runtime.Intrinsics.Vector256`1[ubyte] (FullOpts)
          -3 (-4.918% of base) : System.Private.CoreLib.dasm - System.Buffers.IndexOfAnyAsciiSearcher:IndexOfAnyLookupCore(System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte]):System.Runtime.Intrinsics.Vector128`1[ubyte] (FullOpts)
          -4 (-3.008% of base) : System.Private.CoreLib.dasm - System.Buffers.ProbabilisticMap:IsCharBitSet(System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte],System.Runtime.Intrinsics.Vector128`1[ubyte]):System.Runtime.Intrinsics.Vector128`1[ubyte] (FullOpts)
          -4 (-2.941% of base) : System.Private.CoreLib.dasm - System.Buffers.ProbabilisticMap:IsCharBitSetAvx2(System.Runtime.Intrinsics.Vector256`1[ubyte],System.Runtime.Intrinsics.Vector256`1[ubyte],System.Runtime.Intrinsics.Vector256`1[ubyte]):System.Runtime.Intrinsics.Vector256`1[ubyte] (FullOpts)
         -14 (-1.317% of base) : System.Private.CoreLib.dasm - System.Buffers.ProbabilisticMap:IndexOfAnyVectorized(byref,byref,int,System.ReadOnlySpan`1[ushort]):int (FullOpts)

91 total methods with Code Size differences (10 improved, 81 regressed), 232852 unchanged.

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

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Jul 6, 2023

Top method improvements

-632 (-88.889% of base) - System.Runtime.Intrinsics.Vector512:ShiftRightLogical(System.Runtime.Intrinsics.Vector512`1[byte],int):System.Runtime.Intrinsics.Vector512`1[byte]
 ; Assembly listing for method System.Runtime.Intrinsics.Vector512:ShiftRightLogical(System.Runtime.Intrinsics.Vector512`1[byte],int):System.Runtime.Intrinsics.Vector512`1[byte] (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
-; rbp based frame
-; fully interruptible
+; rsp based frame
+; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 48 single block inlinees; 27 inlinees without PGO data
+; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 RetBuf       [V00,T17] (  5,  5   )   byref  ->  rdi         single-def
+;  V00 RetBuf       [V00,T00] (  5,  5   )   byref  ->  rdi         single-def
 ;* V01 arg0         [V01    ] (  0,  0   )  struct (64) zero-ref    single-def
-;  V02 arg1         [V02,T18] (  3,  3   )     int  ->  rsi         single-def
+;  V02 arg1         [V02,T02] (  3,  3   )     int  ->  rsi         single-def
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+00H]   do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T33] (  2,  4   )  simd32  ->  mm0         "impAppendStmt"
-;  V05 tmp2         [V05,T34] (  2,  4   )  simd32  ->  mm1         "spilled call-like call argument"
-;  V06 tmp3         [V06,T27] (  3,  6   )  simd32  ->  [rbp-30H]   do-not-enreg[SF] "Inlining Arg"
-;  V07 tmp4         [V07,T35] (  2,  4   )  simd16  ->  mm0         "impAppendStmt"
-;* V08 tmp5         [V08    ] (  0,  0   )  simd16  ->  zero-ref    "spilled call-like call argument"
-;  V09 tmp6         [V09,T28] (  3,  6   )  simd16  ->  [rbp-40H]   do-not-enreg[SF] "Inlining Arg"
-;* V10 tmp7         [V10    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt"
-;* V11 tmp8         [V11    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument"
-;* V12 tmp9         [V12    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg"
-;  V13 tmp10        [V13    ] (  2,  5   )  struct ( 8) [rbp-48H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V14 tmp11        [V14,T01] (  6, 21   )     int  ->  rax         "Inline stloc first use temp"
-;  V15 tmp12        [V15    ] (  2, 10   )  struct ( 8) [rbp-50H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg"
-;* V16 tmp13        [V16    ] (  0,  0   )    byte  ->  zero-ref    "Inline stloc first use temp"
-;* V17 tmp14        [V17    ] (  0,  0   )    byte  ->  zero-ref    "Inline return value spill temp"
-;* V18 tmp15        [V18    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V19 tmp16        [V19,T09] (  2,  8   )    byte  ->  rcx         "Inline return value spill temp"
-;* V20 tmp17        [V20    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;* V21 tmp18        [V21    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg"
-;  V22 tmp19        [V22    ] (  2,  5   )  struct ( 8) [rbp-58H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V23 tmp20        [V23,T02] (  6, 21   )     int  ->  rcx         "Inline stloc first use temp"
-;  V24 tmp21        [V24    ] (  2, 10   )  struct ( 8) [rbp-60H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg"
-;* V25 tmp22        [V25    ] (  0,  0   )    byte  ->  zero-ref    "Inline stloc first use temp"
-;* V26 tmp23        [V26    ] (  0,  0   )    byte  ->  zero-ref    "Inline return value spill temp"
-;* V27 tmp24        [V27    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V28 tmp25        [V28,T10] (  2,  8   )    byte  ->  rdx         "Inline return value spill temp"
-;* V29 tmp26        [V29    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V30 tmp27        [V30,T37] (  3,  3   )  simd16  ->  [rbp-70H]   do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp"
-;  V31 tmp28        [V31,T29] (  3,  6   )  simd16  ->  [rbp-80H]   do-not-enreg[SF] "Inlining Arg"
-;* V32 tmp29        [V32    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt"
-;* V33 tmp30        [V33    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument"
-;* V34 tmp31        [V34    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg"
-;  V35 tmp32        [V35    ] (  2,  5   )  struct ( 8) [rbp-88H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V36 tmp33        [V36,T03] (  6, 21   )     int  ->  rax         "Inline stloc first use temp"
-;  V37 tmp34        [V37    ] (  2, 10   )  struct ( 8) [rbp-90H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg"
-;* V38 tmp35        [V38    ] (  0,  0   )    byte  ->  zero-ref    "Inline stloc first use temp"
-;* V39 tmp36        [V39    ] (  0,  0   )    byte  ->  zero-ref    "Inline return value spill temp"
-;* V40 tmp37        [V40    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V41 tmp38        [V41,T11] (  2,  8   )    byte  ->  rcx         "Inline return value spill temp"
-;* V42 tmp39        [V42    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;* V43 tmp40        [V43    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg"
-;  V44 tmp41        [V44    ] (  2,  5   )  struct ( 8) [rbp-98H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V45 tmp42        [V45,T04] (  6, 21   )     int  ->  rcx         "Inline stloc first use temp"
-;  V46 tmp43        [V46    ] (  2, 10   )  struct ( 8) [rbp-A0H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg"
-;* V47 tmp44        [V47    ] (  0,  0   )    byte  ->  zero-ref    "Inline stloc first use temp"
-;* V48 tmp45        [V48    ] (  0,  0   )    byte  ->  zero-ref    "Inline return value spill temp"
-;* V49 tmp46        [V49    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V50 tmp47        [V50,T12] (  2,  8   )    byte  ->  rdx         "Inline return value spill temp"
-;* V51 tmp48        [V51    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V52 tmp49        [V52,T38] (  3,  3   )  simd16  ->  [rbp-B0H]   do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp"
-;* V53 tmp50        [V53    ] (  0,  0   )  simd32  ->  zero-ref    "Inline return value spill temp"
-;* V54 tmp51        [V54    ] (  0,  0   )  simd32  ->  zero-ref    "Inline stloc first use temp"
-;  V55 tmp52        [V55,T30] (  3,  6   )  simd32  ->  [rbp-D0H]   do-not-enreg[SF] "Inlining Arg"
-;  V56 tmp53        [V56,T36] (  2,  4   )  simd16  ->  mm1         "impAppendStmt"
-;* V57 tmp54        [V57    ] (  0,  0   )  simd16  ->  zero-ref    "spilled call-like call argument"
-;  V58 tmp55        [V58,T31] (  3,  6   )  simd16  ->  [rbp-E0H]   do-not-enreg[SF] "Inlining Arg"
-;* V59 tmp56        [V59    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt"
-;* V60 tmp57        [V60    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument"
-;* V61 tmp58        [V61    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg"
-;  V62 tmp59        [V62    ] (  2,  5   )  struct ( 8) [rbp-E8H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V63 tmp60        [V63,T05] (  6, 21   )     int  ->  rax         "Inline stloc first use temp"
-;  V64 tmp61        [V64    ] (  2, 10   )  struct ( 8) [rbp-F0H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg"
-;* V65 tmp62        [V65    ] (  0,  0   )    byte  ->  zero-ref    "Inline stloc first use temp"
-;* V66 tmp63        [V66    ] (  0,  0   )    byte  ->  zero-ref    "Inline return value spill temp"
-;* V67 tmp64        [V67    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V68 tmp65        [V68,T13] (  2,  8   )    byte  ->  rcx         "Inline return value spill temp"
-;* V69 tmp66        [V69    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;* V70 tmp67        [V70    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg"
-;  V71 tmp68        [V71    ] (  2,  5   )  struct ( 8) [rbp-F8H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V72 tmp69        [V72,T06] (  6, 21   )     int  ->  rcx         "Inline stloc first use temp"
-;  V73 tmp70        [V73    ] (  2, 10   )  struct ( 8) [rbp-100H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg"
-;* V74 tmp71        [V74    ] (  0,  0   )    byte  ->  zero-ref    "Inline stloc first use temp"
-;* V75 tmp72        [V75    ] (  0,  0   )    byte  ->  zero-ref    "Inline return value spill temp"
-;* V76 tmp73        [V76    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V77 tmp74        [V77,T14] (  2,  8   )    byte  ->  rdx         "Inline return value spill temp"
-;* V78 tmp75        [V78    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V79 tmp76        [V79,T39] (  3,  3   )  simd16  ->  [rbp-110H]   do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp"
-;  V80 tmp77        [V80,T32] (  3,  6   )  simd16  ->  [rbp-120H]   do-not-enreg[SF] "Inlining Arg"
-;* V81 tmp78        [V81    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt"
-;* V82 tmp79        [V82    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument"
-;* V83 tmp80        [V83    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg"
-;  V84 tmp81        [V84    ] (  2,  5   )  struct ( 8) [rbp-128H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V85 tmp82        [V85,T07] (  6, 21   )     int  ->  rax         "Inline stloc first use temp"
-;  V86 tmp83        [V86    ] (  2, 10   )  struct ( 8) [rbp-130H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg"
-;* V87 tmp84        [V87    ] (  0,  0   )    byte  ->  zero-ref    "Inline stloc first use temp"
-;* V88 tmp85        [V88    ] (  0,  0   )    byte  ->  zero-ref    "Inline return value spill temp"
-;* V89 tmp86        [V89    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V90 tmp87        [V90,T15] (  2,  8   )    byte  ->  rcx         "Inline return value spill temp"
-;* V91 tmp88        [V91    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;* V92 tmp89        [V92    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg"
-;  V93 tmp90        [V93    ] (  2,  5   )  struct ( 8) [rbp-138H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V94 tmp91        [V94,T08] (  6, 21   )     int  ->  rcx         "Inline stloc first use temp"
-;  V95 tmp92        [V95    ] (  2, 10   )  struct ( 8) [rbp-140H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg"
-;* V96 tmp93        [V96    ] (  0,  0   )    byte  ->  zero-ref    "Inline stloc first use temp"
-;* V97 tmp94        [V97    ] (  0,  0   )    byte  ->  zero-ref    "Inline return value spill temp"
-;* V98 tmp95        [V98    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V99 tmp96        [V99,T16] (  2,  8   )    byte  ->  rdx         "Inline return value spill temp"
-;* V100 tmp97       [V100    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V101 tmp98       [V101,T40] (  3,  3   )  simd16  ->  [rbp-150H]   do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp"
-;* V102 tmp99       [V102    ] (  0,  0   )  simd32  ->  zero-ref    "Inline return value spill temp"
-;* V103 tmp100      [V103    ] (  0,  0   )  simd32  ->  zero-ref    "Inline stloc first use temp"
-;* V104 tmp101      [V104    ] (  0,  0   )  struct (64) zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
-;  V105 tmp102      [V105,T43] (  1,  1   )  simd32  ->  [rbp+10H]   single-def "field V01._lower (fldOffset=0x0)" P-INDEP
-;  V106 tmp103      [V106,T44] (  1,  1   )  simd32  ->  [rbp+30H]   single-def "field V01._upper (fldOffset=0x20)" P-INDEP
-;  V107 tmp104      [V107,T19] (  2,  2   )    long  ->  rax         "field V10._00 (fldOffset=0x0)" P-INDEP
-;  V108 tmp105      [V108,T20] (  2,  2   )    long  ->  rcx         "field V11._00 (fldOffset=0x0)" P-INDEP
-;* V109 tmp106      [V109    ] (  0,  0   )    long  ->  zero-ref    "field V12._00 (fldOffset=0x0)" P-INDEP
-;  V110 tmp107      [V110    ] (  2,  5   )    long  ->  [rbp-48H]   do-not-enreg[X] addr-exposed "field V13._00 (fldOffset=0x0)" P-DEP
-;  V111 tmp108      [V111    ] (  2,  9   )    long  ->  [rbp-50H]   do-not-enreg[X] addr-exposed "field V15._00 (fldOffset=0x0)" P-DEP
-;* V112 tmp109      [V112    ] (  0,  0   )    long  ->  zero-ref    "field V21._00 (fldOffset=0x0)" P-INDEP
-;  V113 tmp110      [V113    ] (  2,  5   )    long  ->  [rbp-58H]   do-not-enreg[X] addr-exposed "field V22._00 (fldOffset=0x0)" P-DEP
-;  V114 tmp111      [V114    ] (  2,  9   )    long  ->  [rbp-60H]   do-not-enreg[X] addr-exposed "field V24._00 (fldOffset=0x0)" P-DEP
-;  V115 tmp112      [V115,T21] (  2,  2   )    long  ->  rax         "field V32._00 (fldOffset=0x0)" P-INDEP
-;  V116 tmp113      [V116,T22] (  2,  2   )    long  ->  rcx         "field V33._00 (fldOffset=0x0)" P-INDEP
-;* V117 tmp114      [V117    ] (  0,  0   )    long  ->  zero-ref    "field V34._00 (fldOffset=0x0)" P-INDEP
-;  V118 tmp115      [V118    ] (  2,  5   )    long  ->  [rbp-88H]   do-not-enreg[X] addr-exposed "field V35._00 (fldOffset=0x0)" P-DEP
-;  V119 tmp116      [V119    ] (  2,  9   )    long  ->  [rbp-90H]   do-not-enreg[X] addr-exposed "field V37._00 (fldOffset=0x0)" P-DEP
-;* V120 tmp117      [V120    ] (  0,  0   )    long  ->  zero-ref    "field V43._00 (fldOffset=0x0)" P-INDEP
-;  V121 tmp118      [V121    ] (  2,  5   )    long  ->  [rbp-98H]   do-not-enreg[X] addr-exposed "field V44._00 (fldOffset=0x0)" P-DEP
-;  V122 tmp119      [V122    ] (  2,  9   )    long  ->  [rbp-A0H]   do-not-enreg[X] addr-exposed "field V46._00 (fldOffset=0x0)" P-DEP
-;  V123 tmp120      [V123,T23] (  2,  2   )    long  ->  rax         "field V59._00 (fldOffset=0x0)" P-INDEP
-;  V124 tmp121      [V124,T24] (  2,  2   )    long  ->  rcx         "field V60._00 (fldOffset=0x0)" P-INDEP
-;* V125 tmp122      [V125    ] (  0,  0   )    long  ->  zero-ref    "field V61._00 (fldOffset=0x0)" P-INDEP
-;  V126 tmp123      [V126    ] (  2,  5   )    long  ->  [rbp-E8H]   do-not-enreg[X] addr-exposed "field V62._00 (fldOffset=0x0)" P-DEP
-;  V127 tmp124      [V127    ] (  2,  9   )    long  ->  [rbp-F0H]   do-not-enreg[X] addr-exposed "field V64._00 (fldOffset=0x0)" P-DEP
-;* V128 tmp125      [V128    ] (  0,  0   )    long  ->  zero-ref    "field V70._00 (fldOffset=0x0)" P-INDEP
-;  V129 tmp126      [V129    ] (  2,  5   )    long  ->  [rbp-F8H]   do-not-enreg[X] addr-exposed "field V71._00 (fldOffset=0x0)" P-DEP
-;  V130 tmp127      [V130    ] (  2,  9   )    long  ->  [rbp-100H]   do-not-enreg[X] addr-exposed "field V73._00 (fldOffset=0x0)" P-DEP
-;  V131 tmp128      [V131,T25] (  2,  2   )    long  ->  rax         "field V81._00 (fldOffset=0x0)" P-INDEP
-;  V132 tmp129      [V132,T26] (  2,  2   )    long  ->  rcx         "field V82._00 (fldOffset=0x0)" P-INDEP
-;* V133 tmp130      [V133    ] (  0,  0   )    long  ->  zero-ref    "field V83._00 (fldOffset=0x0)" P-INDEP
-;  V134 tmp131      [V134    ] (  2,  5   )    long  ->  [rbp-128H]   do-not-enreg[X] addr-exposed "field V84._00 (fldOffset=0x0)" P-DEP
-;  V135 tmp132      [V135    ] (  2,  9   )    long  ->  [rbp-130H]   do-not-enreg[X] addr-exposed "field V86._00 (fldOffset=0x0)" P-DEP
-;* V136 tmp133      [V136    ] (  0,  0   )    long  ->  zero-ref    "field V92._00 (fldOffset=0x0)" P-INDEP
-;  V137 tmp134      [V137    ] (  2,  5   )    long  ->  [rbp-138H]   do-not-enreg[X] addr-exposed "field V93._00 (fldOffset=0x0)" P-DEP
-;  V138 tmp135      [V138    ] (  2,  9   )    long  ->  [rbp-140H]   do-not-enreg[X] addr-exposed "field V95._00 (fldOffset=0x0)" P-DEP
-;  V139 tmp136      [V139,T41] (  2,  2   )  simd32  ->  mm0         "field V104._lower (fldOffset=0x0)" P-INDEP
-;  V140 tmp137      [V140,T42] (  2,  2   )  simd32  ->  mm1         "field V104._upper (fldOffset=0x20)" P-INDEP
-;  V141 cse0        [V141,T00] (  9, 33   )     int  ->  rsi         "CSE - aggressive"
+;  V04 tmp1         [V04,T01] (  3,  6   )     int  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V05 tmp2         [V05,T03] (  2,  4   )     int  ->  rsi         "fgMakeTemp is creating a new local variable"
+;  V06 tmp3         [V06,T05] (  2,  4   )  simd32  ->  mm0         "Inlining Arg"
+;  V07 tmp4         [V07,T06] (  2,  4   )  simd32  ->  mm1         "Inlining Arg"
+;* V08 tmp5         [V08    ] (  0,  0   )  struct (64) zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
+;  V09 tmp6         [V09,T10] (  1,  1   )  simd32  ->  [rsp+08H]   single-def "field V01._lower (fldOffset=0x0)" P-INDEP
+;  V10 tmp7         [V10,T11] (  1,  1   )  simd32  ->  [rsp+28H]   single-def "field V01._upper (fldOffset=0x20)" P-INDEP
+;  V11 tmp8         [V11,T08] (  2,  2   )  simd32  ->  mm0         "field V08._lower (fldOffset=0x0)" P-INDEP
+;  V12 tmp9         [V12,T09] (  2,  2   )  simd32  ->  mm1         "field V08._upper (fldOffset=0x20)" P-INDEP
+;  V13 cse0         [V13,T07] (  3,  3   )  simd32  ->  mm1         "CSE - aggressive"
+;  V14 cse1         [V14,T04] (  3,  3   )     int  ->  rsi         "CSE - aggressive"
 ;
-; Lcl frame size = 336
+; Lcl frame size = 0
 
 G_M22707_IG01:
-       push     rbp
-       sub      rsp, 336
        vzeroupper 
-       lea      rbp, [rsp+150H]
-						;; size=19 bbWeight=1 PerfScore 2.75
+						;; size=3 bbWeight=1 PerfScore 1.00
 G_M22707_IG02:
-       vmovups  ymm0, ymmword ptr [rbp+10H]
-       vmovups  ymmword ptr [rbp-30H], ymm0
-       vmovups  xmm0, xmmword ptr [rbp-30H]
-       vmovaps  xmmword ptr [rbp-40H], xmm0
-       mov      rax, qword ptr [rbp-40H]
-       mov      qword ptr [rbp-50H], rax
-       xor      eax, eax
        and      esi, 7
-       align    [0 bytes for IG03]
-						;; size=33 bbWeight=1 PerfScore 11.50
-G_M22707_IG03:
-       lea      rcx, bword ptr [rbp-50H]
-       movsxd   rdx, eax
-       movzx    rcx, byte  ptr [rcx+rdx]
-       shrx     ecx, ecx, esi
-       movsx    rcx, cl
-       lea      rdx, bword ptr [rbp-48H]
-       movsxd   r8, eax
-       mov      byte  ptr [rdx+r8], cl
-       inc      eax
-       cmp      eax, 8
-       jl       SHORT G_M22707_IG03
-						;; size=38 bbWeight=4 PerfScore 27.00
-G_M22707_IG04:
-       mov      rax, qword ptr [rbp-48H]
-       mov      rcx, qword ptr [rbp-38H]
-       mov      qword ptr [rbp-60H], rcx
-       xor      ecx, ecx
-       align    [0 bytes for IG05]
-						;; size=14 bbWeight=1 PerfScore 3.25
-G_M22707_IG05:
-       lea      rdx, bword ptr [rbp-60H]
-       movsxd   r8, ecx
-       movzx    rdx, byte  ptr [rdx+r8]
-       shrx     edx, edx, esi
-       movsx    rdx, dl
-       lea      r8, bword ptr [rbp-58H]
-       movsxd   r9, ecx
-       mov      byte  ptr [r8+r9], dl
-       inc      ecx
-       cmp      ecx, 8
-       jl       SHORT G_M22707_IG05
-						;; size=39 bbWeight=4 PerfScore 27.00
-G_M22707_IG06:
-       mov      rcx, qword ptr [rbp-58H]
-       mov      qword ptr [rbp-70H], rax
-       mov      qword ptr [rbp-68H], rcx
-       vmovaps  xmm0, xmmword ptr [rbp-70H]
-       vmovups  xmm1, xmmword ptr [rbp-20H]
-       vmovaps  xmmword ptr [rbp-80H], xmm1
-       mov      rax, qword ptr [rbp-80H]
-       mov      qword ptr [rbp-90H], rax
-       xor      eax, eax
-       align    [0 bytes for IG07]
-						;; size=40 bbWeight=1 PerfScore 12.25
-G_M22707_IG07:
-       lea      rcx, bword ptr [rbp-90H]
-       movsxd   rdx, eax
-       movzx    rcx, byte  ptr [rcx+rdx]
-       shrx     ecx, ecx, esi
-       movsx    rcx, cl
-       lea      rdx, bword ptr [rbp-88H]
-       movsxd   r8, eax
-       mov      byte  ptr [rdx+r8], cl
-       inc      eax
-       cmp      eax, 8
-       jl       SHORT G_M22707_IG07
-						;; size=44 bbWeight=4 PerfScore 27.00
-G_M22707_IG08:
-       mov      rax, qword ptr [rbp-88H]
-       mov      rcx, qword ptr [rbp-78H]
-       mov      qword ptr [rbp-A0H], rcx
-       xor      ecx, ecx
-       align    [0 bytes for IG09]
-						;; size=20 bbWeight=1 PerfScore 3.25
-G_M22707_IG09:
-       lea      rdx, bword ptr [rbp-A0H]
-       movsxd   r8, ecx
-       movzx    rdx, byte  ptr [rdx+r8]
-       shrx     edx, edx, esi
-       movsx    rdx, dl
-       lea      r8, bword ptr [rbp-98H]
-       movsxd   r9, ecx
-       mov      byte  ptr [r8+r9], dl
-       inc      ecx
-       cmp      ecx, 8
-       jl       SHORT G_M22707_IG09
-						;; size=45 bbWeight=4 PerfScore 27.00
-G_M22707_IG10:
-       mov      rcx, qword ptr [rbp-98H]
-       mov      qword ptr [rbp-B0H], rax
-       mov      qword ptr [rbp-A8H], rcx
-       vinserti128 ymm0, ymm0, xmmword ptr [rbp-B0H], 1
-       vmovups  ymm1, ymmword ptr [rbp+30H]
-       vmovups  ymmword ptr [rbp-D0H], ymm1
-       vmovups  xmm1, xmmword ptr [rbp-D0H]
-       vmovaps  xmmword ptr [rbp-E0H], xmm1
-       mov      rax, qword ptr [rbp-E0H]
-       mov      qword ptr [rbp-F0H], rax
-       xor      eax, eax
-       align    [0 bytes for IG11]
-						;; size=76 bbWeight=1 PerfScore 18.25
-G_M22707_IG11:
-       lea      rcx, bword ptr [rbp-F0H]
-       movsxd   rdx, eax
-       movzx    rcx, byte  ptr [rcx+rdx]
-       shrx     ecx, ecx, esi
-       movsx    rcx, cl
-       lea      rdx, bword ptr [rbp-E8H]
-       movsxd   r8, eax
-       mov      byte  ptr [rdx+r8], cl
-       inc      eax
-       cmp      eax, 8
-       jl       SHORT G_M22707_IG11
-						;; size=44 bbWeight=4 PerfScore 27.00
-G_M22707_IG12:
-       mov      rax, qword ptr [rbp-E8H]
-       mov      rcx, qword ptr [rbp-D8H]
-       mov      qword ptr [rbp-100H], rcx
-       xor      ecx, ecx
-       align    [0 bytes for IG13]
-						;; size=23 bbWeight=1 PerfScore 3.25
-G_M22707_IG13:
-       lea      rdx, bword ptr [rbp-100H]
-       movsxd   r8, ecx
-       movzx    rdx, byte  ptr [rdx+r8]
-       shrx     edx, edx, esi
-       movsx    rdx, dl
-       lea      r8, bword ptr [rbp-F8H]
-       movsxd   r9, ecx
-       mov      byte  ptr [r8+r9], dl
-       inc      ecx
-       cmp      ecx, 8
-       jl       SHORT G_M22707_IG13
-						;; size=45 bbWeight=4 PerfScore 27.00
-G_M22707_IG14:
-       mov      rcx, qword ptr [rbp-F8H]
-       mov      qword ptr [rbp-110H], rax
-       mov      qword ptr [rbp-108H], rcx
-       vmovaps  xmm1, xmmword ptr [rbp-110H]
-       vmovups  xmm2, xmmword ptr [rbp-C0H]
-       vmovaps  xmmword ptr [rbp-120H], xmm2
-       mov      rax, qword ptr [rbp-120H]
-       mov      qword ptr [rbp-130H], rax
-       xor      eax, eax
-       align    [3 bytes for IG15]
-						;; size=64 bbWeight=1 PerfScore 12.50
-G_M22707_IG15:
-       lea      rcx, bword ptr [rbp-130H]
-       movsxd   rdx, eax
-       movzx    rcx, byte  ptr [rcx+rdx]
-       shrx     ecx, ecx, esi
-       movsx    rcx, cl
-       lea      rdx, bword ptr [rbp-128H]
-       movsxd   r8, eax
-       mov      byte  ptr [rdx+r8], cl
-       inc      eax
-       cmp      eax, 8
-       jl       SHORT G_M22707_IG15
-						;; size=44 bbWeight=4 PerfScore 27.00
-G_M22707_IG16:
-       mov      rax, qword ptr [rbp-128H]
-       mov      rcx, qword ptr [rbp-118H]
-       mov      qword ptr [rbp-140H], rcx
-       xor      ecx, ecx
-       align    [0 bytes for IG17]
-						;; size=23 bbWeight=1 PerfScore 3.25
-G_M22707_IG17:
-       lea      rdx, bword ptr [rbp-140H]
-       movsxd   r8, ecx
-       movzx    rdx, byte  ptr [rdx+r8]
-       shrx     edx, edx, esi
-       movsx    rdx, dl
-       lea      r8, bword ptr [rbp-138H]
-       movsxd   r9, ecx
-       mov      byte  ptr [r8+r9], dl
-       inc      ecx
-       cmp      ecx, 8
-       jl       SHORT G_M22707_IG17
-						;; size=45 bbWeight=4 PerfScore 27.00
-G_M22707_IG18:
-       mov      rcx, qword ptr [rbp-138H]
-       mov      qword ptr [rbp-150H], rax
-       mov      qword ptr [rbp-148H], rcx
-       vinserti128 ymm1, ymm1, xmmword ptr [rbp-150H], 1
+       mov      eax, esi
+       vmovd    xmm0, rax
+       vmovups  ymm1, ymmword ptr [rsp+08H]
+       vpsrld   ymm0, ymm1, ymm0
+       mov      ecx, 255
+       shrx     eax, ecx, eax
+       vmovd    xmm1, eax
+       vpbroadcastb ymm1, ymm1
+       vpand    ymm0, ymm0, ymm1
+       vmovd    xmm2, rsi
+       vmovups  ymm3, ymmword ptr [rsp+28H]
+       vpsrld   ymm2, ymm3, ymm2
+       vpand    ymm1, ymm2, ymm1
        vmovups  ymmword ptr [rdi], ymm0
        vmovups  ymmword ptr [rdi+20H], ymm1
        mov      rax, rdi
-						;; size=43 bbWeight=1 PerfScore 11.25
-G_M22707_IG19:
+						;; size=72 bbWeight=1 PerfScore 28.17
+G_M22707_IG03:
        vzeroupper 
-       add      rsp, 336
-       pop      rbp
        ret      
-						;; size=12 bbWeight=1 PerfScore 2.75
+						;; size=4 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 711, prolog size 19, PerfScore 371.35, instruction count 164, allocated bytes for code 711 (MethodHash=eab6a74c) for method System.Runtime.Intrinsics.Vector512:ShiftRightLogical(System.Runtime.Intrinsics.Vector512`1[byte],int):System.Runtime.Intrinsics.Vector512`1[byte] (FullOpts)
+; Total bytes of code 79, prolog size 3, PerfScore 39.07, instruction count 20, allocated bytes for code 79 (MethodHash=eab6a74c) for method System.Runtime.Intrinsics.Vector512:ShiftRightLogical(System.Runtime.Intrinsics.Vector512`1[byte],int):System.Runtime.Intrinsics.Vector512`1[byte] (FullOpts)
-628 (-88.826% of base) - System.Runtime.Intrinsics.Vector512:ShiftRightLogical(System.Runtime.Intrinsics.Vector512`1[ubyte],int):System.Runtime.Intrinsics.Vector512`1[ubyte]
 ; Assembly listing for method System.Runtime.Intrinsics.Vector512:ShiftRightLogical(System.Runtime.Intrinsics.Vector512`1[ubyte],int):System.Runtime.Intrinsics.Vector512`1[ubyte] (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
-; rbp based frame
-; fully interruptible
+; rsp based frame
+; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 48 single block inlinees; 27 inlinees without PGO data
+; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 RetBuf       [V00,T17] (  5,  5   )   byref  ->  rdi         single-def
+;  V00 RetBuf       [V00,T00] (  5,  5   )   byref  ->  rdi         single-def
 ;* V01 arg0         [V01    ] (  0,  0   )  struct (64) zero-ref    single-def
-;  V02 arg1         [V02,T18] (  3,  3   )     int  ->  rsi         single-def
+;  V02 arg1         [V02,T02] (  3,  3   )     int  ->  rsi         single-def
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+00H]   do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T33] (  2,  4   )  simd32  ->  mm0         "impAppendStmt"
-;  V05 tmp2         [V05,T34] (  2,  4   )  simd32  ->  mm1         "spilled call-like call argument"
-;  V06 tmp3         [V06,T27] (  3,  6   )  simd32  ->  [rbp-30H]   do-not-enreg[SF] "Inlining Arg"
-;  V07 tmp4         [V07,T35] (  2,  4   )  simd16  ->  mm0         "impAppendStmt"
-;* V08 tmp5         [V08    ] (  0,  0   )  simd16  ->  zero-ref    "spilled call-like call argument"
-;  V09 tmp6         [V09,T28] (  3,  6   )  simd16  ->  [rbp-40H]   do-not-enreg[SF] "Inlining Arg"
-;* V10 tmp7         [V10    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt"
-;* V11 tmp8         [V11    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument"
-;* V12 tmp9         [V12    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg"
-;  V13 tmp10        [V13    ] (  2,  5   )  struct ( 8) [rbp-48H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V14 tmp11        [V14,T01] (  6, 21   )     int  ->  rax         "Inline stloc first use temp"
-;  V15 tmp12        [V15    ] (  2, 10   )  struct ( 8) [rbp-50H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg"
-;* V16 tmp13        [V16    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
-;* V17 tmp14        [V17    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V18 tmp15        [V18    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V19 tmp16        [V19,T09] (  2,  8   )   ubyte  ->  rcx         "Inline return value spill temp"
-;* V20 tmp17        [V20    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;* V21 tmp18        [V21    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg"
-;  V22 tmp19        [V22    ] (  2,  5   )  struct ( 8) [rbp-58H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V23 tmp20        [V23,T02] (  6, 21   )     int  ->  rcx         "Inline stloc first use temp"
-;  V24 tmp21        [V24    ] (  2, 10   )  struct ( 8) [rbp-60H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg"
-;* V25 tmp22        [V25    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
-;* V26 tmp23        [V26    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V27 tmp24        [V27    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V28 tmp25        [V28,T10] (  2,  8   )   ubyte  ->  rdx         "Inline return value spill temp"
-;* V29 tmp26        [V29    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V30 tmp27        [V30,T37] (  3,  3   )  simd16  ->  [rbp-70H]   do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp"
-;  V31 tmp28        [V31,T29] (  3,  6   )  simd16  ->  [rbp-80H]   do-not-enreg[SF] "Inlining Arg"
-;* V32 tmp29        [V32    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt"
-;* V33 tmp30        [V33    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument"
-;* V34 tmp31        [V34    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg"
-;  V35 tmp32        [V35    ] (  2,  5   )  struct ( 8) [rbp-88H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V36 tmp33        [V36,T03] (  6, 21   )     int  ->  rax         "Inline stloc first use temp"
-;  V37 tmp34        [V37    ] (  2, 10   )  struct ( 8) [rbp-90H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg"
-;* V38 tmp35        [V38    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
-;* V39 tmp36        [V39    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V40 tmp37        [V40    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V41 tmp38        [V41,T11] (  2,  8   )   ubyte  ->  rcx         "Inline return value spill temp"
-;* V42 tmp39        [V42    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;* V43 tmp40        [V43    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg"
-;  V44 tmp41        [V44    ] (  2,  5   )  struct ( 8) [rbp-98H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V45 tmp42        [V45,T04] (  6, 21   )     int  ->  rcx         "Inline stloc first use temp"
-;  V46 tmp43        [V46    ] (  2, 10   )  struct ( 8) [rbp-A0H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg"
-;* V47 tmp44        [V47    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
-;* V48 tmp45        [V48    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V49 tmp46        [V49    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V50 tmp47        [V50,T12] (  2,  8   )   ubyte  ->  rdx         "Inline return value spill temp"
-;* V51 tmp48        [V51    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V52 tmp49        [V52,T38] (  3,  3   )  simd16  ->  [rbp-B0H]   do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp"
-;* V53 tmp50        [V53    ] (  0,  0   )  simd32  ->  zero-ref    "Inline return value spill temp"
-;* V54 tmp51        [V54    ] (  0,  0   )  simd32  ->  zero-ref    "Inline stloc first use temp"
-;  V55 tmp52        [V55,T30] (  3,  6   )  simd32  ->  [rbp-D0H]   do-not-enreg[SF] "Inlining Arg"
-;  V56 tmp53        [V56,T36] (  2,  4   )  simd16  ->  mm1         "impAppendStmt"
-;* V57 tmp54        [V57    ] (  0,  0   )  simd16  ->  zero-ref    "spilled call-like call argument"
-;  V58 tmp55        [V58,T31] (  3,  6   )  simd16  ->  [rbp-E0H]   do-not-enreg[SF] "Inlining Arg"
-;* V59 tmp56        [V59    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt"
-;* V60 tmp57        [V60    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument"
-;* V61 tmp58        [V61    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg"
-;  V62 tmp59        [V62    ] (  2,  5   )  struct ( 8) [rbp-E8H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V63 tmp60        [V63,T05] (  6, 21   )     int  ->  rax         "Inline stloc first use temp"
-;  V64 tmp61        [V64    ] (  2, 10   )  struct ( 8) [rbp-F0H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg"
-;* V65 tmp62        [V65    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
-;* V66 tmp63        [V66    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V67 tmp64        [V67    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V68 tmp65        [V68,T13] (  2,  8   )   ubyte  ->  rcx         "Inline return value spill temp"
-;* V69 tmp66        [V69    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;* V70 tmp67        [V70    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg"
-;  V71 tmp68        [V71    ] (  2,  5   )  struct ( 8) [rbp-F8H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V72 tmp69        [V72,T06] (  6, 21   )     int  ->  rcx         "Inline stloc first use temp"
-;  V73 tmp70        [V73    ] (  2, 10   )  struct ( 8) [rbp-100H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg"
-;* V74 tmp71        [V74    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
-;* V75 tmp72        [V75    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V76 tmp73        [V76    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V77 tmp74        [V77,T14] (  2,  8   )   ubyte  ->  rdx         "Inline return value spill temp"
-;* V78 tmp75        [V78    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V79 tmp76        [V79,T39] (  3,  3   )  simd16  ->  [rbp-110H]   do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp"
-;  V80 tmp77        [V80,T32] (  3,  6   )  simd16  ->  [rbp-120H]   do-not-enreg[SF] "Inlining Arg"
-;* V81 tmp78        [V81    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt"
-;* V82 tmp79        [V82    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument"
-;* V83 tmp80        [V83    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg"
-;  V84 tmp81        [V84    ] (  2,  5   )  struct ( 8) [rbp-128H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V85 tmp82        [V85,T07] (  6, 21   )     int  ->  rax         "Inline stloc first use temp"
-;  V86 tmp83        [V86    ] (  2, 10   )  struct ( 8) [rbp-130H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg"
-;* V87 tmp84        [V87    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
-;* V88 tmp85        [V88    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V89 tmp86        [V89    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V90 tmp87        [V90,T15] (  2,  8   )   ubyte  ->  rcx         "Inline return value spill temp"
-;* V91 tmp88        [V91    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;* V92 tmp89        [V92    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg"
-;  V93 tmp90        [V93    ] (  2,  5   )  struct ( 8) [rbp-138H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V94 tmp91        [V94,T08] (  6, 21   )     int  ->  rcx         "Inline stloc first use temp"
-;  V95 tmp92        [V95    ] (  2, 10   )  struct ( 8) [rbp-140H]   do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg"
-;* V96 tmp93        [V96    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
-;* V97 tmp94        [V97    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V98 tmp95        [V98    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V99 tmp96        [V99,T16] (  2,  8   )   ubyte  ->  rdx         "Inline return value spill temp"
-;* V100 tmp97       [V100    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V101 tmp98       [V101,T40] (  3,  3   )  simd16  ->  [rbp-150H]   do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp"
-;* V102 tmp99       [V102    ] (  0,  0   )  simd32  ->  zero-ref    "Inline return value spill temp"
-;* V103 tmp100      [V103    ] (  0,  0   )  simd32  ->  zero-ref    "Inline stloc first use temp"
-;* V104 tmp101      [V104    ] (  0,  0   )  struct (64) zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
-;  V105 tmp102      [V105,T43] (  1,  1   )  simd32  ->  [rbp+10H]   single-def "field V01._lower (fldOffset=0x0)" P-INDEP
-;  V106 tmp103      [V106,T44] (  1,  1   )  simd32  ->  [rbp+30H]   single-def "field V01._upper (fldOffset=0x20)" P-INDEP
-;  V107 tmp104      [V107,T19] (  2,  2   )    long  ->  rax         "field V10._00 (fldOffset=0x0)" P-INDEP
-;  V108 tmp105      [V108,T20] (  2,  2   )    long  ->  rcx         "field V11._00 (fldOffset=0x0)" P-INDEP
-;* V109 tmp106      [V109    ] (  0,  0   )    long  ->  zero-ref    "field V12._00 (fldOffset=0x0)" P-INDEP
-;  V110 tmp107      [V110    ] (  2,  5   )    long  ->  [rbp-48H]   do-not-enreg[X] addr-exposed "field V13._00 (fldOffset=0x0)" P-DEP
-;  V111 tmp108      [V111    ] (  2,  9   )    long  ->  [rbp-50H]   do-not-enreg[X] addr-exposed "field V15._00 (fldOffset=0x0)" P-DEP
-;* V112 tmp109      [V112    ] (  0,  0   )    long  ->  zero-ref    "field V21._00 (fldOffset=0x0)" P-INDEP
-;  V113 tmp110      [V113    ] (  2,  5   )    long  ->  [rbp-58H]   do-not-enreg[X] addr-exposed "field V22._00 (fldOffset=0x0)" P-DEP
-;  V114 tmp111      [V114    ] (  2,  9   )    long  ->  [rbp-60H]   do-not-enreg[X] addr-exposed "field V24._00 (fldOffset=0x0)" P-DEP
-;  V115 tmp112      [V115,T21] (  2,  2   )    long  ->  rax         "field V32._00 (fldOffset=0x0)" P-INDEP
-;  V116 tmp113      [V116,T22] (  2,  2   )    long  ->  rcx         "field V33._00 (fldOffset=0x0)" P-INDEP
-;* V117 tmp114      [V117    ] (  0,  0   )    long  ->  zero-ref    "field V34._00 (fldOffset=0x0)" P-INDEP
-;  V118 tmp115      [V118    ] (  2,  5   )    long  ->  [rbp-88H]   do-not-enreg[X] addr-exposed "field V35._00 (fldOffset=0x0)" P-DEP
-;  V119 tmp116      [V119    ] (  2,  9   )    long  ->  [rbp-90H]   do-not-enreg[X] addr-exposed "field V37._00 (fldOffset=0x0)" P-DEP
-;* V120 tmp117      [V120    ] (  0,  0   )    long  ->  zero-ref    "field V43._00 (fldOffset=0x0)" P-INDEP
-;  V121 tmp118      [V121    ] (  2,  5   )    long  ->  [rbp-98H]   do-not-enreg[X] addr-exposed "field V44._00 (fldOffset=0x0)" P-DEP
-;  V122 tmp119      [V122    ] (  2,  9   )    long  ->  [rbp-A0H]   do-not-enreg[X] addr-exposed "field V46._00 (fldOffset=0x0)" P-DEP
-;  V123 tmp120      [V123,T23] (  2,  2   )    long  ->  rax         "field V59._00 (fldOffset=0x0)" P-INDEP
-;  V124 tmp121      [V124,T24] (  2,  2   )    long  ->  rcx         "field V60._00 (fldOffset=0x0)" P-INDEP
-;* V125 tmp122      [V125    ] (  0,  0   )    long  ->  zero-ref    "field V61._00 (fldOffset=0x0)" P-INDEP
-;  V126 tmp123      [V126    ] (  2,  5   )    long  ->  [rbp-E8H]   do-not-enreg[X] addr-exposed "field V62._00 (fldOffset=0x0)" P-DEP
-;  V127 tmp124      [V127    ] (  2,  9   )    long  ->  [rbp-F0H]   do-not-enreg[X] addr-exposed "field V64._00 (fldOffset=0x0)" P-DEP
-;* V128 tmp125      [V128    ] (  0,  0   )    long  ->  zero-ref    "field V70._00 (fldOffset=0x0)" P-INDEP
-;  V129 tmp126      [V129    ] (  2,  5   )    long  ->  [rbp-F8H]   do-not-enreg[X] addr-exposed "field V71._00 (fldOffset=0x0)" P-DEP
-;  V130 tmp127      [V130    ] (  2,  9   )    long  ->  [rbp-100H]   do-not-enreg[X] addr-exposed "field V73._00 (fldOffset=0x0)" P-DEP
-;  V131 tmp128      [V131,T25] (  2,  2   )    long  ->  rax         "field V81._00 (fldOffset=0x0)" P-INDEP
-;  V132 tmp129      [V132,T26] (  2,  2   )    long  ->  rcx         "field V82._00 (fldOffset=0x0)" P-INDEP
-;* V133 tmp130      [V133    ] (  0,  0   )    long  ->  zero-ref    "field V83._00 (fldOffset=0x0)" P-INDEP
-;  V134 tmp131      [V134    ] (  2,  5   )    long  ->  [rbp-128H]   do-not-enreg[X] addr-exposed "field V84._00 (fldOffset=0x0)" P-DEP
-;  V135 tmp132      [V135    ] (  2,  9   )    long  ->  [rbp-130H]   do-not-enreg[X] addr-exposed "field V86._00 (fldOffset=0x0)" P-DEP
-;* V136 tmp133      [V136    ] (  0,  0   )    long  ->  zero-ref    "field V92._00 (fldOffset=0x0)" P-INDEP
-;  V137 tmp134      [V137    ] (  2,  5   )    long  ->  [rbp-138H]   do-not-enreg[X] addr-exposed "field V93._00 (fldOffset=0x0)" P-DEP
-;  V138 tmp135      [V138    ] (  2,  9   )    long  ->  [rbp-140H]   do-not-enreg[X] addr-exposed "field V95._00 (fldOffset=0x0)" P-DEP
-;  V139 tmp136      [V139,T41] (  2,  2   )  simd32  ->  mm0         "field V104._lower (fldOffset=0x0)" P-INDEP
-;  V140 tmp137      [V140,T42] (  2,  2   )  simd32  ->  mm1         "field V104._upper (fldOffset=0x20)" P-INDEP
-;  V141 cse0        [V141,T00] (  9, 33   )     int  ->  rsi         "CSE - aggressive"
+;  V04 tmp1         [V04,T01] (  3,  6   )     int  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V05 tmp2         [V05,T03] (  2,  4   )     int  ->  rsi         "fgMakeTemp is creating a new local variable"
+;  V06 tmp3         [V06,T05] (  2,  4   )  simd32  ->  mm0         "Inlining Arg"
+;  V07 tmp4         [V07,T06] (  2,  4   )  simd32  ->  mm1         "Inlining Arg"
+;* V08 tmp5         [V08    ] (  0,  0   )  struct (64) zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
+;  V09 tmp6         [V09,T10] (  1,  1   )  simd32  ->  [rsp+08H]   single-def "field V01._lower (fldOffset=0x0)" P-INDEP
+;  V10 tmp7         [V10,T11] (  1,  1   )  simd32  ->  [rsp+28H]   single-def "field V01._upper (fldOffset=0x20)" P-INDEP
+;  V11 tmp8         [V11,T08] (  2,  2   )  simd32  ->  mm0         "field V08._lower (fldOffset=0x0)" P-INDEP
+;  V12 tmp9         [V12,T09] (  2,  2   )  simd32  ->  mm1         "field V08._upper (fldOffset=0x20)" P-INDEP
+;  V13 cse0         [V13,T07] (  3,  3   )  simd32  ->  mm1         "CSE - aggressive"
+;  V14 cse1         [V14,T04] (  3,  3   )     int  ->  rsi         "CSE - aggressive"
 ;
-; Lcl frame size = 336
+; Lcl frame size = 0
 
 G_M33171_IG01:
-       push     rbp
-       sub      rsp, 336
        vzeroupper 
-       lea      rbp, [rsp+150H]
-						;; size=19 bbWeight=1 PerfScore 2.75
+						;; size=3 bbWeight=1 PerfScore 1.00
 G_M33171_IG02:
-       vmovups  ymm0, ymmword ptr [rbp+10H]
-       vmovups  ymmword ptr [rbp-30H], ymm0
-       vmovups  xmm0, xmmword ptr [rbp-30H]
-       vmovaps  xmmword ptr [rbp-40H], xmm0
-       mov      rax, qword ptr [rbp-40H]
-       mov      qword ptr [rbp-50H], rax
-       xor      eax, eax
        and      esi, 7
-       align    [0 bytes for IG03]
-						;; size=33 bbWeight=1 PerfScore 11.50
-G_M33171_IG03:
-       lea      rcx, bword ptr [rbp-50H]
-       movsxd   rdx, eax
-       movzx    rcx, byte  ptr [rcx+rdx]
-       shrx     ecx, ecx, esi
-       movzx    rcx, cl
-       lea      rdx, bword ptr [rbp-48H]
-       movsxd   r8, eax
-       mov      byte  ptr [rdx+r8], cl
-       inc      eax
-       cmp      eax, 8
-       jl       SHORT G_M33171_IG03
-						;; size=37 bbWeight=4 PerfScore 27.00
-G_M33171_IG04:
-       mov      rax, qword ptr [rbp-48H]
-       mov      rcx, qword ptr [rbp-38H]
-       mov      qword ptr [rbp-60H], rcx
-       xor      ecx, ecx
-       align    [0 bytes for IG05]
-						;; size=14 bbWeight=1 PerfScore 3.25
-G_M33171_IG05:
-       lea      rdx, bword ptr [rbp-60H]
-       movsxd   r8, ecx
-       movzx    rdx, byte  ptr [rdx+r8]
-       shrx     edx, edx, esi
-       movzx    rdx, dl
-       lea      r8, bword ptr [rbp-58H]
-       movsxd   r9, ecx
-       mov      byte  ptr [r8+r9], dl
-       inc      ecx
-       cmp      ecx, 8
-       jl       SHORT G_M33171_IG05
-						;; size=38 bbWeight=4 PerfScore 27.00
-G_M33171_IG06:
-       mov      rcx, qword ptr [rbp-58H]
-       mov      qword ptr [rbp-70H], rax
-       mov      qword ptr [rbp-68H], rcx
-       vmovaps  xmm0, xmmword ptr [rbp-70H]
-       vmovups  xmm1, xmmword ptr [rbp-20H]
-       vmovaps  xmmword ptr [rbp-80H], xmm1
-       mov      rax, qword ptr [rbp-80H]
-       mov      qword ptr [rbp-90H], rax
-       xor      eax, eax
-       align    [0 bytes for IG07]
-						;; size=40 bbWeight=1 PerfScore 12.25
-G_M33171_IG07:
-       lea      rcx, bword ptr [rbp-90H]
-       movsxd   rdx, eax
-       movzx    rcx, byte  ptr [rcx+rdx]
-       shrx     ecx, ecx, esi
-       movzx    rcx, cl
-       lea      rdx, bword ptr [rbp-88H]
-       movsxd   r8, eax
-       mov      byte  ptr [rdx+r8], cl
-       inc      eax
-       cmp      eax, 8
-       jl       SHORT G_M33171_IG07
-						;; size=43 bbWeight=4 PerfScore 27.00
-G_M33171_IG08:
-       mov      rax, qword ptr [rbp-88H]
-       mov      rcx, qword ptr [rbp-78H]
-       mov      qword ptr [rbp-A0H], rcx
-       xor      ecx, ecx
-       align    [0 bytes for IG09]
-						;; size=20 bbWeight=1 PerfScore 3.25
-G_M33171_IG09:
-       lea      rdx, bword ptr [rbp-A0H]
-       movsxd   r8, ecx
-       movzx    rdx, byte  ptr [rdx+r8]
-       shrx     edx, edx, esi
-       movzx    rdx, dl
-       lea      r8, bword ptr [rbp-98H]
-       movsxd   r9, ecx
-       mov      byte  ptr [r8+r9], dl
-       inc      ecx
-       cmp      ecx, 8
-       jl       SHORT G_M33171_IG09
-						;; size=44 bbWeight=4 PerfScore 27.00
-G_M33171_IG10:
-       mov      rcx, qword ptr [rbp-98H]
-       mov      qword ptr [rbp-B0H], rax
-       mov      qword ptr [rbp-A8H], rcx
-       vinserti128 ymm0, ymm0, xmmword ptr [rbp-B0H], 1
-       vmovups  ymm1, ymmword ptr [rbp+30H]
-       vmovups  ymmword ptr [rbp-D0H], ymm1
-       vmovups  xmm1, xmmword ptr [rbp-D0H]
-       vmovaps  xmmword ptr [rbp-E0H], xmm1
-       mov      rax, qword ptr [rbp-E0H]
-       mov      qword ptr [rbp-F0H], rax
-       xor      eax, eax
-       align    [0 bytes for IG11]
-						;; size=76 bbWeight=1 PerfScore 18.25
-G_M33171_IG11:
-       lea      rcx, bword ptr [rbp-F0H]
-       movsxd   rdx, eax
-       movzx    rcx, byte  ptr [rcx+rdx]
-       shrx     ecx, ecx, esi
-       movzx    rcx, cl
-       lea      rdx, bword ptr [rbp-E8H]
-       movsxd   r8, eax
-       mov      byte  ptr [rdx+r8], cl
-       inc      eax
-       cmp      eax, 8
-       jl       SHORT G_M33171_IG11
-						;; size=43 bbWeight=4 PerfScore 27.00
-G_M33171_IG12:
-       mov      rax, qword ptr [rbp-E8H]
-       mov      rcx, qword ptr [rbp-D8H]
-       mov      qword ptr [rbp-100H], rcx
-       xor      ecx, ecx
-       align    [0 bytes for IG13]
-						;; size=23 bbWeight=1 PerfScore 3.25
-G_M33171_IG13:
-       lea      rdx, bword ptr [rbp-100H]
-       movsxd   r8, ecx
-       movzx    rdx, byte  ptr [rdx+r8]
-       shrx     edx, edx, esi
-       movzx    rdx, dl
-       lea      r8, bword ptr [rbp-F8H]
-       movsxd   r9, ecx
-       mov      byte  ptr [r8+r9], dl
-       inc      ecx
-       cmp      ecx, 8
-       jl       SHORT G_M33171_IG13
-						;; size=44 bbWeight=4 PerfScore 27.00
-G_M33171_IG14:
-       mov      rcx, qword ptr [rbp-F8H]
-       mov      qword ptr [rbp-110H], rax
-       mov      qword ptr [rbp-108H], rcx
-       vmovaps  xmm1, xmmword ptr [rbp-110H]
-       vmovups  xmm2, xmmword ptr [rbp-C0H]
-       vmovaps  xmmword ptr [rbp-120H], xmm2
-       mov      rax, qword ptr [rbp-120H]
-       mov      qword ptr [rbp-130H], rax
-       xor      eax, eax
-       align    [0 bytes for IG15]
-						;; size=61 bbWeight=1 PerfScore 12.25
-G_M33171_IG15:
-       lea      rcx, bword ptr [rbp-130H]
-       movsxd   rdx, eax
-       movzx    rcx, byte  ptr [rcx+rdx]
-       shrx     ecx, ecx, esi
-       movzx    rcx, cl
-       lea      rdx, bword ptr [rbp-128H]
-       movsxd   r8, eax
-       mov      byte  ptr [rdx+r8], cl
-       inc      eax
-       cmp      eax, 8
-       jl       SHORT G_M33171_IG15
-						;; size=43 bbWeight=4 PerfScore 27.00
-G_M33171_IG16:
-       mov      rax, qword ptr [rbp-128H]
-       mov      rcx, qword ptr [rbp-118H]
-       mov      qword ptr [rbp-140H], rcx
-       xor      ecx, ecx
-       align    [7 bytes for IG17]
-						;; size=30 bbWeight=1 PerfScore 3.50
-G_M33171_IG17:
-       lea      rdx, bword ptr [rbp-140H]
-       movsxd   r8, ecx
-       movzx    rdx, byte  ptr [rdx+r8]
-       shrx     edx, edx, esi
-       movzx    rdx, dl
-       lea      r8, bword ptr [rbp-138H]
-       movsxd   r9, ecx
-       mov      byte  ptr [r8+r9], dl
-       inc      ecx
-       cmp      ecx, 8
-       jl       SHORT G_M33171_IG17
-						;; size=44 bbWeight=4 PerfScore 27.00
-G_M33171_IG18:
-       mov      rcx, qword ptr [rbp-138H]
-       mov      qword ptr [rbp-150H], rax
-       mov      qword ptr [rbp-148H], rcx
-       vinserti128 ymm1, ymm1, xmmword ptr [rbp-150H], 1
+       mov      eax, esi
+       vmovd    xmm0, rax
+       vmovups  ymm1, ymmword ptr [rsp+08H]
+       vpsrld   ymm0, ymm1, ymm0
+       mov      ecx, 255
+       shrx     eax, ecx, eax
+       vmovd    xmm1, eax
+       vpbroadcastb ymm1, ymm1
+       vpand    ymm0, ymm0, ymm1
+       vmovd    xmm2, rsi
+       vmovups  ymm3, ymmword ptr [rsp+28H]
+       vpsrld   ymm2, ymm3, ymm2
+       vpand    ymm1, ymm2, ymm1
        vmovups  ymmword ptr [rdi], ymm0
        vmovups  ymmword ptr [rdi+20H], ymm1
        mov      rax, rdi
-						;; size=43 bbWeight=1 PerfScore 11.25
-G_M33171_IG19:
+						;; size=72 bbWeight=1 PerfScore 28.17
+G_M33171_IG03:
        vzeroupper 
-       add      rsp, 336
-       pop      rbp
        ret      
-						;; size=12 bbWeight=1 PerfScore 2.75
+						;; size=4 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 707, prolog size 19, PerfScore 370.95, instruction count 164, allocated bytes for code 707 (MethodHash=ecb57e6c) for method System.Runtime.Intrinsics.Vector512:ShiftRightLogical(System.Runtime.Intrinsics.Vector512`1[ubyte],int):System.Runtime.Intrinsics.Vector512`1[ubyte] (FullOpts)
+; Total bytes of code 79, prolog size 3, PerfScore 39.07, instruction count 20, allocated bytes for code 79 (MethodHash=ecb57e6c) for method System.Runtime.Intrinsics.Vector512:ShiftRightLogical(System.Runtime.Intrinsics.Vector512`1[ubyte],int):System.Runtime.Intrinsics.Vector512`1[ubyte] (FullOpts)

Full list of diffs: https://gist.github.com/MihuBot/9899ddaab018f4f11280c4ba2db7c1a8

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

No branches or pull requests

1 participant