MihuBot / runtime-utils

0 stars 0 forks source link

[JitDiff X64] xtqqczze/dotnet-runtime/GuidTryWrite1 #507

Open MihuBot opened 4 months ago

MihuBot commented 4 months ago

Job completed in 15 minutes.

Diffs

Found 267 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 41786305
Total bytes of diff: 41786314
Total bytes of delta: 9 (0.00 % of base)
Total relative delta: -0.77
    diff is a regression.
    relative diff is an improvement.

Total byte diff includes 91 bytes from reconciling methods
    Base had    1 unique methods,      399 unique bytes
    Diff had    3 unique methods,      490 unique bytes

Top file regressions (bytes):
          35 : System.Private.CoreLib.dasm (0.00 % of base)
          17 : System.Private.DataContractSerialization.dasm (0.00 % of base)

Top file improvements (bytes):
         -34 : System.Reflection.Metadata.dasm (-0.01 % of base)
          -6 : System.Data.Odbc.dasm (-0.00 % of base)
          -3 : ILCompiler.Reflection.ReadyToRun.dasm (-0.00 % of base)

5 total files with Code Size differences (3 improved, 2 regressed), 254 unchanged.

Top method regressions (bytes):
         399 (Infinity of base) : System.Private.CoreLib.dasm - System.Guid:<TryParseExactD>g__TryCompatParsing|47_0(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts) (0 base, 1 diff methods)
          50 (Infinity of base) : System.Private.CoreLib.dasm - System.Guid:WriteUnsafe(byref,ubyte):this (FullOpts) (0 base, 1 diff methods)
          41 (Infinity of base) : System.Private.CoreLib.dasm - System.Guid:.ctor(byref,ubyte):this (FullOpts) (0 base, 1 diff methods)
          20 (3.73 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventSource:GenerateGuidFromName(System.String):System.Guid (FullOpts)
          18 (2.44 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventSource:AddValueToMetaData(System.Collections.Generic.List`1[ubyte],System.String):int (FullOpts)
          15 (5.42 % of base) : System.Data.Common.dasm - System.Data.SqlTypes.SqlGuid:System.Runtime.Serialization.ISerializable.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this (FullOpts)
          14 (17.95 % of base) : System.Private.DataContractSerialization.dasm - System.Xml.UniqueId:.ctor():this (FullOpts)
          13 (26.00 % of base) : System.Data.Common.dasm - System.Data.SqlTypes.SqlGuid:ToByteArray():ubyte[]:this (FullOpts)
          10 (4.74 % of base) : System.Data.Common.dasm - System.Data.SqlTypes.SqlBinary:op_Explicit(System.Data.SqlTypes.SqlGuid):System.Data.SqlTypes.SqlBinary (FullOpts)
           9 (13.85 % of base) : System.Private.CoreLib.dasm - System.Guid:.ctor(System.ReadOnlySpan`1[ubyte],ubyte):this (FullOpts)
           8 (12.12 % of base) : System.Private.DataContractSerialization.dasm - System.Xml.UniqueId:.ctor(System.Guid):this (FullOpts)

Top method improvements (bytes):
        -399 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Guid:<TryParseExactD>g__TryCompatParsing|46_0(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts) (1 base, 0 diff methods)
         -44 (-37.29 % of base) : System.Private.CoreLib.dasm - System.Guid:.ctor(ubyte[]):this (FullOpts)
         -25 (-23.81 % of base) : System.Private.CoreLib.dasm - System.Guid:TryWriteBytes(System.Span`1[ubyte],ubyte,byref):ubyte:this (FullOpts)
         -23 (-14.84 % of base) : System.Data.Common.dasm - System.Data.SqlTypes.SqlGuid:.ctor(ubyte[]):this (FullOpts)
         -20 (-17.39 % of base) : System.Private.CoreLib.dasm - System.Guid:ToByteArray(ubyte):ubyte[]:this (FullOpts)
         -15 (-3.46 % of base) : System.Data.Common.dasm - System.Data.SqlTypes.SqlGuid:.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this (FullOpts)
         -11 (-33.33 % of base) : System.Private.CoreLib.dasm - System.Guid:TryWriteBytes(System.Span`1[ubyte]):ubyte:this (FullOpts)
          -9 (-2.16 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.Ecma335.PortablePdbBuilder:Serialize(System.Reflection.Metadata.BlobBuilder):System.Reflection.Metadata.BlobContentId:this (FullOpts)
          -5 (-5.62 % of base) : System.Reflection.Metadata.dasm - System.Reflection.BlobUtilities:WriteGuid(ubyte[],int,System.Guid) (FullOpts)
          -5 (-3.11 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.BlobBuilder:WriteGuid(System.Guid):this (FullOpts)
          -5 (-4.03 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.BlobWriter:WriteGuid(System.Guid):this (FullOpts)
          -5 (-1.57 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:GetOrAddGuid(System.Guid):System.Reflection.Metadata.GuidHandle:this (FullOpts)
          -5 (-0.67 % of base) : System.Reflection.Metadata.dasm - System.Reflection.PortableExecutable.DebugDirectoryBuilder:WriteCodeViewData(System.Reflection.Metadata.BlobBuilder,System.String,System.Guid,int):int (FullOpts)
          -3 (-0.54 % of base) : ILCompiler.Reflection.ReadyToRun.dasm - ILCompiler.Reflection.ReadyToRun.ReadyToRunReader:GetAssemblyMvid(int):System.Guid:this (FullOpts)
          -3 (-0.86 % of base) : System.Data.Odbc.dasm - System.Data.Odbc.OdbcDataReader:internalGetGuid(int):System.Object:this (FullOpts)
          -3 (-2.83 % of base) : System.Data.Odbc.dasm - System.Data.ProviderBase.DbBuffer:ReadGuid(int):System.Guid:this (FullOpts)
          -3 (-7.89 % of base) : System.Private.CoreLib.dasm - System.Guid:ToByteArray():ubyte[]:this (FullOpts)
          -3 (-2.61 % of base) : System.Private.DataContractSerialization.dasm - System.Xml.UniqueId:TryGetGuid(byref):ubyte:this (FullOpts)
          -2 (-1.29 % of base) : System.Private.DataContractSerialization.dasm - System.Xml.XmlBinaryNodeWriter:WriteGuidText(System.Guid):this (FullOpts)

Top method regressions (percentages):
          41 (Infinity of base) : System.Private.CoreLib.dasm - System.Guid:.ctor(byref,ubyte):this (FullOpts) (0 base, 1 diff methods)
         399 (Infinity of base) : System.Private.CoreLib.dasm - System.Guid:<TryParseExactD>g__TryCompatParsing|47_0(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts) (0 base, 1 diff methods)
          50 (Infinity of base) : System.Private.CoreLib.dasm - System.Guid:WriteUnsafe(byref,ubyte):this (FullOpts) (0 base, 1 diff methods)
          13 (26.00 % of base) : System.Data.Common.dasm - System.Data.SqlTypes.SqlGuid:ToByteArray():ubyte[]:this (FullOpts)
          14 (17.95 % of base) : System.Private.DataContractSerialization.dasm - System.Xml.UniqueId:.ctor():this (FullOpts)
           9 (13.85 % of base) : System.Private.CoreLib.dasm - System.Guid:.ctor(System.ReadOnlySpan`1[ubyte],ubyte):this (FullOpts)
           8 (12.12 % of base) : System.Private.DataContractSerialization.dasm - System.Xml.UniqueId:.ctor(System.Guid):this (FullOpts)
          15 (5.42 % of base) : System.Data.Common.dasm - System.Data.SqlTypes.SqlGuid:System.Runtime.Serialization.ISerializable.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this (FullOpts)
          10 (4.74 % of base) : System.Data.Common.dasm - System.Data.SqlTypes.SqlBinary:op_Explicit(System.Data.SqlTypes.SqlGuid):System.Data.SqlTypes.SqlBinary (FullOpts)
          20 (3.73 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventSource:GenerateGuidFromName(System.String):System.Guid (FullOpts)
          18 (2.44 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventSource:AddValueToMetaData(System.Collections.Generic.List`1[ubyte],System.String):int (FullOpts)

Top method improvements (percentages):
        -399 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Guid:<TryParseExactD>g__TryCompatParsing|46_0(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts) (1 base, 0 diff methods)
         -44 (-37.29 % of base) : System.Private.CoreLib.dasm - System.Guid:.ctor(ubyte[]):this (FullOpts)
         -11 (-33.33 % of base) : System.Private.CoreLib.dasm - System.Guid:TryWriteBytes(System.Span`1[ubyte]):ubyte:this (FullOpts)
         -25 (-23.81 % of base) : System.Private.CoreLib.dasm - System.Guid:TryWriteBytes(System.Span`1[ubyte],ubyte,byref):ubyte:this (FullOpts)
         -20 (-17.39 % of base) : System.Private.CoreLib.dasm - System.Guid:ToByteArray(ubyte):ubyte[]:this (FullOpts)
         -23 (-14.84 % of base) : System.Data.Common.dasm - System.Data.SqlTypes.SqlGuid:.ctor(ubyte[]):this (FullOpts)
          -3 (-7.89 % of base) : System.Private.CoreLib.dasm - System.Guid:ToByteArray():ubyte[]:this (FullOpts)
          -5 (-5.62 % of base) : System.Reflection.Metadata.dasm - System.Reflection.BlobUtilities:WriteGuid(ubyte[],int,System.Guid) (FullOpts)
          -5 (-4.03 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.BlobWriter:WriteGuid(System.Guid):this (FullOpts)
         -15 (-3.46 % of base) : System.Data.Common.dasm - System.Data.SqlTypes.SqlGuid:.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this (FullOpts)
          -5 (-3.11 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.BlobBuilder:WriteGuid(System.Guid):this (FullOpts)
          -3 (-2.83 % of base) : System.Data.Odbc.dasm - System.Data.ProviderBase.DbBuffer:ReadGuid(int):System.Guid:this (FullOpts)
          -3 (-2.61 % of base) : System.Private.DataContractSerialization.dasm - System.Xml.UniqueId:TryGetGuid(byref):ubyte:this (FullOpts)
          -9 (-2.16 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.Ecma335.PortablePdbBuilder:Serialize(System.Reflection.Metadata.BlobBuilder):System.Reflection.Metadata.BlobContentId:this (FullOpts)
          -5 (-1.57 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:GetOrAddGuid(System.Guid):System.Reflection.Metadata.GuidHandle:this (FullOpts)
          -2 (-1.29 % of base) : System.Private.DataContractSerialization.dasm - System.Xml.XmlBinaryNodeWriter:WriteGuidText(System.Guid):this (FullOpts)
          -3 (-0.86 % of base) : System.Data.Odbc.dasm - System.Data.Odbc.OdbcDataReader:internalGetGuid(int):System.Object:this (FullOpts)
          -5 (-0.67 % of base) : System.Reflection.Metadata.dasm - System.Reflection.PortableExecutable.DebugDirectoryBuilder:WriteCodeViewData(System.Reflection.Metadata.BlobBuilder,System.String,System.Guid,int):int (FullOpts)
          -3 (-0.54 % of base) : ILCompiler.Reflection.ReadyToRun.dasm - ILCompiler.Reflection.ReadyToRun.ReadyToRunReader:GetAssemblyMvid(int):System.Guid:this (FullOpts)

30 total methods with Code Size differences (19 improved, 11 regressed), 255856 unchanged.

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

Artifacts:

MihuBot commented 4 months ago

Top method regressions

20 (3.73 % of base) - System.Diagnostics.Tracing.EventSource:GenerateGuidFromName(System.String):System.Guid ```diff ; Assembly listing for method System.Diagnostics.Tracing.EventSource:GenerateGuidFromName(System.String):System.Guid (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data -; 0 inlinees with PGO data; 4 single block inlinees; 14 inlinees without PGO data +; 0 inlinees with PGO data; 3 single block inlinees; 12 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T13] ( 3, 2.25) ref -> rsi class-hnd single-def ;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op -; V02 loc1 [V02,T08] ( 17, 11.75) ref -> r15 ld-addr-op class-hnd +; V02 loc1 [V02,T06] ( 19, 13.75) ref -> r15 ld-addr-op class-hnd ; V03 loc2 [V03 ] ( 18, 61.25) struct (24) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" -; V07 tmp3 [V07,T16] ( 2, 4 ) int -> rax "Strict ordering of exceptions for Array store" -; V08 tmp4 [V08,T17] ( 2, 4 ) struct (16) [rbp-0x48] do-not-enreg[SR] multireg-ret ld-addr-op "NewObj constructor temp" +; V07 tmp3 [V07,T15] ( 2, 4 ) int -> rdi "Strict ordering of exceptions for Array store" +; V08 tmp4 [V08,T16] ( 2, 4 ) struct (16) [rbp-0x48] do-not-enreg[SR] multireg-ret ld-addr-op "NewObj constructor temp" ;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" -;* V11 tmp7 [V11,T31] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V11 tmp7 [V11,T28] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V12 tmp8 [V12,T09] ( 2, 8 ) ubyte -> rdi "Inline stloc first use temp" ; V13 tmp9 [V13,T00] ( 5, 20 ) int -> rax "Inline stloc first use temp" ; V14 tmp10 [V14,T04] ( 2, 16 ) int -> rdi "Strict ordering of exceptions for Array store" -; V15 tmp11 [V15,T06] ( 3, 12 ) int -> rdi "Inline stloc first use temp" +; V15 tmp11 [V15,T07] ( 3, 12 ) int -> rdi "Inline stloc first use temp" ;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" ;* V17 tmp13 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" -;* V19 tmp15 [V19,T29] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V19 tmp15 [V19,T26] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V20 tmp16 [V20,T10] ( 2, 8 ) ubyte -> rdi "Inline stloc first use temp" ; V21 tmp17 [V21,T01] ( 5, 20 ) int -> rax "Inline stloc first use temp" ; V22 tmp18 [V22,T05] ( 2, 16 ) int -> rdi "Strict ordering of exceptions for Array store" -; V23 tmp19 [V23,T07] ( 3, 12 ) int -> rdi "Inline stloc first use temp" +; V23 tmp19 [V23,T08] ( 3, 12 ) int -> rdi "Inline stloc first use temp" ;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" -; V25 tmp21 [V25,T27] ( 3, 1.50) ref -> rbx class-hnd exact single-def "Inline stloc first use temp" -; V26 tmp22 [V26,T23] ( 2, 2 ) byref -> rdi single-def "impAppendStmt" -; V27 tmp23 [V27,T24] ( 2, 2 ) byref -> rsi single-def "impAppendStmt" -; V28 tmp24 [V28,T28] ( 2, 1 ) int -> rax "Inline return value spill temp" -; V29 tmp25 [V29,T18] ( 3, 3 ) int -> rdx "Inlining Arg" +; V25 tmp21 [V25,T24] ( 3, 1.50) ref -> rbx class-hnd exact single-def "Inline stloc first use temp" +; V26 tmp22 [V26,T22] ( 2, 2 ) byref -> rdi single-def "impAppendStmt" +; V27 tmp23 [V27,T23] ( 2, 2 ) byref -> rsi single-def "impAppendStmt" +; V28 tmp24 [V28,T25] ( 2, 1 ) int -> rax "Inline return value spill temp" +; V29 tmp25 [V29,T17] ( 3, 3 ) int -> rdx "Inlining Arg" ;* V30 tmp26 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V31 tmp27 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" ;* V32 tmp28 [V32 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" ;* V33 tmp29 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" -;* V34 tmp30 [V34 ] ( 0, 0 ) byref -> zero-ref -;* V35 tmp31 [V35 ] ( 0, 0 ) ref -> zero-ref single-def -;* V36 tmp32 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V37 tmp33 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" -;* V38 tmp34 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V39 tmp35 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V40 tmp36 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -; V41 tmp37 [V41,T30] ( 2, 0.50) byref -> rbx single-def "field V01._reference (fldOffset=0x0)" P-INDEP -;* V42 tmp38 [V42,T32] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP -; V43 tmp39 [V43 ] ( 12, 37.25) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V03._w (fldOffset=0x0)" P-DEP -; V44 tmp40 [V44 ] ( 4, 5.25) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP -; V45 tmp41 [V45 ] ( 10, 29.25) int -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V03._pos (fldOffset=0x10)" P-DEP -;* V46 tmp42 [V46 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP -;* V47 tmp43 [V47 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP -;* V48 tmp44 [V48 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP -;* V49 tmp45 [V49 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP -;* V50 tmp46 [V50 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP -;* V51 tmp47 [V51 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP -; V52 tmp48 [V52,T14] ( 2, 4.25) byref -> rbx single-def "field V10._reference (fldOffset=0x0)" P-INDEP -;* V53 tmp49 [V53,T33] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP -; V54 tmp50 [V54,T19] ( 3, 2 ) byref -> rbx "field V17._reference (fldOffset=0x0)" P-INDEP -; V55 tmp51 [V55,T21] ( 3, 2 ) int -> r14 "field V17._length (fldOffset=0x8)" P-INDEP -; V56 tmp52 [V56,T12] ( 2, 5 ) byref -> rbx single-def "field V18._reference (fldOffset=0x0)" P-INDEP -; V57 tmp53 [V57,T11] ( 3, 6 ) int -> r14 "field V18._length (fldOffset=0x8)" P-INDEP -; V58 tmp54 [V58,T20] ( 3, 2 ) byref -> rsi "field V32._reference (fldOffset=0x0)" P-INDEP -; V59 tmp55 [V59,T22] ( 3, 2 ) int -> rdx "field V32._length (fldOffset=0x8)" P-INDEP -; V60 tmp56 [V60,T25] ( 2, 2 ) byref -> r15 "field V36._reference (fldOffset=0x0)" P-INDEP -; V61 tmp57 [V61,T26] ( 2, 2 ) int -> rax "field V36._length (fldOffset=0x8)" P-INDEP -;* V62 tmp58 [V62 ] ( 0, 0 ) byref -> zero-ref single-def "field V38._reference (fldOffset=0x0)" P-INDEP -;* V63 tmp59 [V63 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP -;* V64 tmp60 [V64 ] ( 0, 0 ) byref -> zero-ref single-def "field V39._reference (fldOffset=0x0)" P-INDEP -;* V65 tmp61 [V65 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP -;* V66 tmp62 [V66 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP -;* V67 tmp63 [V67 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP -;* V68 tmp64 [V68 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" -; V69 cse0 [V69,T15] ( 5, 4 ) int -> rdx multi-def "CSE #05: moderate" -; V70 rat0 [V70,T03] ( 5, 16.25) long -> r14 "Widened IV V11" -; V71 rat1 [V71,T02] ( 5, 17 ) long -> r13 "Widened IV V19" +;* V34 tmp30 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V35 tmp31 [V35 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +; V36 tmp32 [V36,T27] ( 2, 0.50) byref -> rbx single-def "field V01._reference (fldOffset=0x0)" P-INDEP +;* V37 tmp33 [V37,T29] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP +; V38 tmp34 [V38 ] ( 12, 37.25) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V03._w (fldOffset=0x0)" P-DEP +; V39 tmp35 [V39 ] ( 4, 5.25) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP +; V40 tmp36 [V40 ] ( 10, 29.25) int -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V03._pos (fldOffset=0x10)" P-DEP +;* V41 tmp37 [V41 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP +;* V42 tmp38 [V42 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP +;* V43 tmp39 [V43 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP +;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP +;* V45 tmp41 [V45 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP +;* V46 tmp42 [V46 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP +; V47 tmp43 [V47,T14] ( 2, 4.25) byref -> rbx single-def "field V10._reference (fldOffset=0x0)" P-INDEP +;* V48 tmp44 [V48,T30] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP +; V49 tmp45 [V49,T18] ( 3, 2 ) byref -> rbx "field V17._reference (fldOffset=0x0)" P-INDEP +; V50 tmp46 [V50,T20] ( 3, 2 ) int -> r14 "field V17._length (fldOffset=0x8)" P-INDEP +; V51 tmp47 [V51,T12] ( 2, 5 ) byref -> rbx single-def "field V18._reference (fldOffset=0x0)" P-INDEP +; V52 tmp48 [V52,T11] ( 3, 6 ) int -> r14 "field V18._length (fldOffset=0x8)" P-INDEP +; V53 tmp49 [V53,T19] ( 3, 2 ) byref -> rsi "field V32._reference (fldOffset=0x0)" P-INDEP +; V54 tmp50 [V54,T21] ( 3, 2 ) int -> rdx "field V32._length (fldOffset=0x8)" P-INDEP +; V55 rat0 [V55,T03] ( 5, 16.25) long -> r14 "Widened IV V11" +; V56 rat1 [V56,T02] ( 5, 17 ) long -> r13 "Widened IV V19" ; ; Lcl frame size = 48 G_M47710_IG01: push rbp push r15 push r14 push r13 push rbx sub rsp, 48 lea rbp, [rsp+0x50] vxorps xmm8, xmm8, xmm8 vmovdqu xmmword ptr [rbp-0x38], xmm8 xor eax, eax mov qword ptr [rbp-0x28], rax mov rsi, rdi ;; size=36 bbWeight=0.25 PerfScore 2.40 G_M47710_IG02: mov rbx, 0xD1FFAB1E ; static handle mov rdi, 0xD1FFAB1E ; const ptr mov rdi, gword ptr [rdi] mov rax, 0xD1FFAB1E ; code for System.Text.Encoding:GetBytes(System.String):ubyte[]:this call [rax]System.Text.Encoding:GetBytes(System.String):ubyte[]:this mov r15, rax lea rdi, [rbp-0x38] mov rax, 0xD1FFAB1E ; code for System.Sha1ForNonSecretPurposes:Start():this call [rax]System.Sha1ForNonSecretPurposes:Start():this xor r14d, r14d ;; size=57 bbWeight=0.25 PerfScore 2.50 G_M47710_IG03: movzx rdi, byte ptr [rbx+r14] mov eax, dword ptr [rbp-0x28] sar eax, 2 mov rcx, gword ptr [rbp-0x38] cmp eax, dword ptr [rcx+0x08] jae G_M47710_IG22 mov rcx, gword ptr [rbp-0x38] mov edx, eax mov ecx, dword ptr [rcx+4*rdx+0x10] shl ecx, 8 or edi, ecx mov rcx, gword ptr [rbp-0x38] cmp eax, dword ptr [rcx+0x08] jae G_M47710_IG22 mov rcx, gword ptr [rbp-0x38] mov dword ptr [rcx+4*rax+0x10], edi mov edi, dword ptr [rbp-0x28] inc edi mov dword ptr [rbp-0x28], edi cmp edi, 64 jne SHORT G_M47710_IG05 ;; size=73 bbWeight=4 PerfScore 92.00 G_M47710_IG04: lea rdi, [rbp-0x38] mov rax, 0xD1FFAB1E ; code for System.Sha1ForNonSecretPurposes:Drain():this call [rax]System.Sha1ForNonSecretPurposes:Drain():this ;; size=16 bbWeight=2 PerfScore 7.50 G_M47710_IG05: inc r14d cmp r14d, 16 jl SHORT G_M47710_IG03 ;; size=9 bbWeight=4 PerfScore 6.00 G_M47710_IG06: test r15, r15 jne SHORT G_M47710_IG08 ;; size=5 bbWeight=1 PerfScore 1.25 G_M47710_IG07: xor rbx, rbx xor r14d, r14d jmp SHORT G_M47710_IG09 ;; size=7 bbWeight=0.50 PerfScore 1.25 G_M47710_IG08: lea rbx, bword ptr [r15+0x10] mov r14d, dword ptr [r15+0x08] ;; size=8 bbWeight=0.50 PerfScore 1.25 G_M47710_IG09: xor r13d, r13d test r14d, r14d jle SHORT G_M47710_IG13 ;; size=8 bbWeight=1 PerfScore 1.50 G_M47710_IG10: movzx rdi, byte ptr [rbx+r13] mov eax, dword ptr [rbp-0x28] sar eax, 2 mov rcx, gword ptr [rbp-0x38] cmp eax, dword ptr [rcx+0x08] jae G_M47710_IG22 mov rcx, gword ptr [rbp-0x38] mov edx, eax mov ecx, dword ptr [rcx+4*rdx+0x10] shl ecx, 8 or edi, ecx mov rcx, gword ptr [rbp-0x38] cmp eax, dword ptr [rcx+0x08] jae G_M47710_IG22 mov rcx, gword ptr [rbp-0x38] mov dword ptr [rcx+4*rax+0x10], edi mov edi, dword ptr [rbp-0x28] inc edi mov dword ptr [rbp-0x28], edi cmp edi, 64 jne SHORT G_M47710_IG12 ;; size=73 bbWeight=4 PerfScore 92.00 G_M47710_IG11: lea rdi, [rbp-0x38] mov rax, 0xD1FFAB1E ; code for System.Sha1ForNonSecretPurposes:Drain():this call [rax]System.Sha1ForNonSecretPurposes:Drain():this ;; size=16 bbWeight=2 PerfScore 7.50 G_M47710_IG12: inc r13d cmp r13d, r14d jl SHORT G_M47710_IG10 ;; size=8 bbWeight=4 PerfScore 6.00 G_M47710_IG13: test r15, r15 jne SHORT G_M47710_IG15 ;; size=5 bbWeight=1 PerfScore 1.25 G_M47710_IG14: mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 16 call CORINFO_HELP_NEWARR_1_VC mov r15, rax jmp SHORT G_M47710_IG16 ;; size=25 bbWeight=0.50 PerfScore 1.88 G_M47710_IG15: cmp dword ptr [r15+0x08], 16 je SHORT G_M47710_IG16 mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 16 call CORINFO_HELP_NEWARR_1_VC mov rbx, rax lea rdi, bword ptr [rbx+0x10] lea rsi, bword ptr [r15+0x10] mov edx, dword ptr [r15+0x08] mov eax, 16 cmp edx, 16 cmovl eax, edx mov edx, eax mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong) call [rax]System.SpanHelpers:Memmove(byref,byref,ulong) mov r15, rbx ;; size=70 bbWeight=0.50 PerfScore 6.62 G_M47710_IG16: test r15, r15 jne SHORT G_M47710_IG18 ;; size=5 bbWeight=1 PerfScore 1.25 G_M47710_IG17: xor rsi, rsi xor edx, edx jmp SHORT G_M47710_IG19 ;; size=6 bbWeight=0.50 PerfScore 1.25 G_M47710_IG18: lea rsi, bword ptr [r15+0x10] mov edx, dword ptr [r15+0x08] ;; size=8 bbWeight=0.50 PerfScore 1.25 G_M47710_IG19: lea rdi, [rbp-0x38] mov rax, 0xD1FFAB1E ; code for System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this call [rax]System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this - mov edx, dword ptr [r15+0x08] - cmp edx, 7 + cmp dword ptr [r15+0x08], 7 jbe SHORT G_M47710_IG22 - movzx rax, byte ptr [r15+0x17] - and eax, 15 - or eax, 80 - mov byte ptr [r15+0x17], al - add r15, 16 - mov eax, edx - cmp eax, 16 + movzx rdi, byte ptr [r15+0x17] + and edi, 15 + or edi, 80 + mov byte ptr [r15+0x17], dil + mov rdi, r15 + mov rsi, 0xD1FFAB1E ; 'b' + mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String) + call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String) + cmp dword ptr [r15+0x08], 16 jne SHORT G_M47710_IG21 - vmovups xmm0, xmmword ptr [r15] + vmovups xmm0, xmmword ptr [r15+0x10] vmovups xmmword ptr [rbp-0x48], xmm0 mov rax, qword ptr [rbp-0x48] mov rdx, qword ptr [rbp-0x40] - ;; size=69 bbWeight=1 PerfScore 19.25 + ;; size=89 bbWeight=1 PerfScore 26.00 G_M47710_IG20: add rsp, 48 pop rbx pop r13 pop r14 pop r15 pop rbp ret ;; size=13 bbWeight=1 PerfScore 3.75 G_M47710_IG21: mov rax, 0xD1FFAB1E ; code for System.Guid:ThrowGuidArrayCtorArgumentException() call [rax]System.Guid:ThrowGuidArrayCtorArgumentException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M47710_IG22: call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00 -; Total bytes of code 536, prolog size 36, PerfScore 257.65, instruction count 146, allocated bytes for code 536 (MethodHash=593645a1) for method System.Diagnostics.Tracing.EventSource:GenerateGuidFromName(System.String):System.Guid (FullOpts) +; Total bytes of code 556, prolog size 36, PerfScore 264.40, instruction count 147, allocated bytes for code 556 (MethodHash=593645a1) for method System.Diagnostics.Tracing.EventSource:GenerateGuidFromName(System.String):System.Guid (FullOpts) ```
18 (2.44 % of base) - System.Diagnostics.Tracing.EventSource:AddValueToMetaData(System.Collections.Generic.List`1[ubyte],System.String):int ```diff ; Assembly listing for method System.Diagnostics.Tracing.EventSource:AddValueToMetaData(System.Collections.Generic.List`1[ubyte],System.String):int (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data -; 0 inlinees with PGO data; 10 single block inlinees; 4 inlinees without PGO data +; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 13, 16.50) ref -> rbx class-hnd single-def ; V01 arg1 [V01,T02] ( 11, 11.50) ref -> r15 class-hnd single-def ; V02 loc0 [V02,T22] ( 2, 1 ) int -> r13 ; V03 loc1 [V03,T11] ( 6, 3 ) ushort -> r12 -; V04 loc2 [V04 ] ( 2, 1 ) struct (16) [rbp-0x38] do-not-enreg[XS] addr-exposed ld-addr-op +; V04 loc2 [V04,T23] ( 2, 1 ) struct (16) [rbp-0x38] ld-addr-op spill-single-def ; V05 loc3 [V05,T00] ( 7, 20.50) int -> r12 ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V07 tmp1 [V07,T26] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" +; V07 tmp1 [V07,T27] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" ;* V08 tmp2 [V08 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" -; V09 tmp3 [V09,T27] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" +; V09 tmp3 [V09,T28] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" ;* V10 tmp4 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ; V11 tmp5 [V11,T13] ( 2, 2 ) ref -> r12 class-hnd exact single-def "impAppendStmt" -; V12 tmp6 [V12,T19] ( 3, 1.50) ref -> rsi class-hnd "Inline return value spill temp" +; V12 tmp6 [V12,T18] ( 3, 1.50) ref -> rsi class-hnd "Inline return value spill temp" ; V13 tmp7 [V13,T12] ( 4, 2 ) int -> rdi "Inline stloc first use temp" -; V14 tmp8 [V14,T23] ( 2, 1 ) long -> r14 "Inline stloc first use temp" +; V14 tmp8 [V14,T24] ( 2, 1 ) long -> r14 "Inline stloc first use temp" ; V15 tmp9 [V15,T09] ( 4, 4 ) ref -> [rbp-0x58] class-hnd exact spill-single-def "dup spill" ;* V16 tmp10 [V16 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V17 tmp11 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V18 tmp12 [V18 ] ( 4, 2 ) struct (24) [rbp-0x50] do-not-enreg[XSF] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V19 tmp13 [V19 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V20 tmp14 [V20 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" ;* V21 tmp15 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V22 tmp16 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V23 tmp17 [V23,T14] ( 2, 2 ) byref -> r15 single-def "Inlining Arg" -; V24 tmp18 [V24,T18] ( 2, 2 ) int -> rsi "Inlining Arg" -; V25 tmp19 [V25,T08] ( 3, 6 ) ref -> rdi class-hnd "Inline stloc first use temp" -; V26 tmp20 [V26,T06] ( 4, 8 ) int -> rax "Inline stloc first use temp" -; V27 tmp21 [V27,T03] ( 3, 12 ) ubyte -> rsi "Inlining Arg" -;* V28 tmp22 [V28 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP -;* V29 tmp23 [V29 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP -; V30 tmp24 [V30,T20] ( 2, 1 ) byref -> rdi single-def "field V20._reference (fldOffset=0x0)" P-INDEP -; V31 tmp25 [V31,T24] ( 2, 1 ) int -> rsi "field V20._length (fldOffset=0x8)" P-INDEP -; V32 tmp26 [V32,T21] ( 2, 1 ) byref -> rdi single-def "field V21._reference (fldOffset=0x0)" P-INDEP -; V33 tmp27 [V33,T25] ( 2, 1 ) int -> rsi "field V21._length (fldOffset=0x8)" P-INDEP -;* V34 tmp28 [V34 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP -;* V35 tmp29 [V35 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP -; V36 tmp30 [V36,T28] ( 2, 0 ) ref -> rdi single-def "argument with side effect" -; V37 tmp31 [V37,T29] ( 2, 0 ) ref -> r15 single-def "argument with side effect" -; V38 tmp32 [V38,T30] ( 2, 0 ) ref -> rdx single-def "argument with side effect" -; V39 tmp33 [V39,T15] ( 2, 2 ) ref -> rsi single-def "argument with side effect" -; V40 tmp34 [V40,T31] ( 2, 0 ) ref -> r15 "argument with side effect" -; V41 tmp35 [V41,T32] ( 2, 0 ) ref -> rdx "argument with side effect" -; V42 tmp36 [V42,T16] ( 2, 2 ) ref -> rsi single-def "argument with side effect" -; V43 tmp37 [V43,T17] ( 2, 2 ) ref -> rsi single-def "argument with side effect" -; V44 cse0 [V44,T04] ( 3, 10 ) int -> rdi "CSE #04: aggressive" -; V45 cse1 [V45,T05] ( 7, 9.50) int -> r14 "CSE #01: aggressive" -; V46 cse2 [V46,T07] ( 4, 8 ) int -> r12 "CSE #05: aggressive" -; V47 cse3 [V47,T10] ( 2, 4 ) int -> rcx "CSE #06: aggressive" +; V24 tmp18 [V24,T17] ( 2, 2 ) int -> rsi "Inlining Arg" +;* V25 tmp19 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" +; V26 tmp20 [V26,T19] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" +;* V27 tmp21 [V27 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V28 tmp22 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +; V29 tmp23 [V29,T08] ( 3, 6 ) ref -> rdi class-hnd "Inline stloc first use temp" +; V30 tmp24 [V30,T06] ( 4, 8 ) int -> rax "Inline stloc first use temp" +; V31 tmp25 [V31,T03] ( 3, 12 ) ubyte -> rsi "Inlining Arg" +;* V32 tmp26 [V32 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP +;* V33 tmp27 [V33 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP +; V34 tmp28 [V34,T20] ( 2, 1 ) byref -> rdi single-def "field V20._reference (fldOffset=0x0)" P-INDEP +; V35 tmp29 [V35,T25] ( 2, 1 ) int -> rsi "field V20._length (fldOffset=0x8)" P-INDEP +; V36 tmp30 [V36,T21] ( 2, 1 ) byref -> rdi single-def "field V21._reference (fldOffset=0x0)" P-INDEP +; V37 tmp31 [V37,T26] ( 2, 1 ) int -> rsi "field V21._length (fldOffset=0x8)" P-INDEP +;* V38 tmp32 [V38 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP +;* V39 tmp33 [V39 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP +; V40 tmp34 [V40,T29] ( 2, 0 ) ref -> rdi single-def "argument with side effect" +; V41 tmp35 [V41,T30] ( 2, 0 ) ref -> r15 single-def "argument with side effect" +; V42 tmp36 [V42,T31] ( 2, 0 ) ref -> rdx single-def "argument with side effect" +; V43 tmp37 [V43,T15] ( 2, 2 ) ref -> rsi single-def "argument with side effect" +; V44 tmp38 [V44,T32] ( 2, 0 ) ref -> r15 "argument with side effect" +; V45 tmp39 [V45,T33] ( 2, 0 ) ref -> rdx "argument with side effect" +; V46 tmp40 [V46,T16] ( 2, 2 ) ref -> rsi single-def "argument with side effect" +; V47 cse0 [V47,T04] ( 3, 10 ) int -> rdi "CSE #04: aggressive" +; V48 cse1 [V48,T05] ( 7, 9.50) int -> r14 "CSE #01: aggressive" +; V49 cse2 [V49,T07] ( 4, 8 ) int -> r12 "CSE #05: aggressive" +; V50 cse3 [V50,T10] ( 2, 4 ) int -> rcx "CSE #06: aggressive" ; TEMP_01 int -> [rbp-0x5C] ; ; Lcl frame size = 56 G_M31385_IG01: push rbp push r15 push r14 push r13 push r12 push rbx sub rsp, 56 lea rbp, [rsp+0x60] mov rbx, rdi mov r15, rsi ;; size=25 bbWeight=1 PerfScore 7.25 G_M31385_IG02: mov r14d, dword ptr [r15+0x08] test r14d, r14d jne SHORT G_M31385_IG05 ;; size=9 bbWeight=1 PerfScore 3.25 G_M31385_IG03: xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M31385_IG04: add rsp, 56 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12 G_M31385_IG05: mov r13d, dword ptr [rbx+0x10] movzx r12, word ptr [r15+0x0C] cmp r12d, 64 jne SHORT G_M31385_IG06 mov rdi, 0xD1FFAB1E ; const ptr mov r12, gword ptr [rdi] lea edi, [r14-0x01] test edi, edi jne G_M31385_IG16 mov rsi, 0xD1FFAB1E ; '' jmp G_M31385_IG17 ;; size=55 bbWeight=0.50 PerfScore 5.75 G_M31385_IG06: cmp r12d, 123 - jne SHORT G_M31385_IG07 + jne G_M31385_IG07 mov rdi, r15 mov rsi, 0xD1FFAB1E ; 'g' mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String) call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String) vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [rbp-0x50], xmm0 vmovdqu xmmword ptr [rbp-0x4C], xmm0 mov byte ptr [rbp-0x40], 1 add r15, 12 mov esi, r14d mov rdi, r15 lea rdx, [rbp-0x50] mov rax, 0xD1FFAB1E ; code for System.Guid:TryParseGuid(System.ReadOnlySpan`1[ushort],byref):ubyte call [rax]System.Guid:TryParseGuid(System.ReadOnlySpan`1[ushort],byref):ubyte vmovups xmm0, xmmword ptr [rbp-0x50] vmovups xmmword ptr [rbp-0x38], xmm0 - lea rdi, [rbp-0x38] - mov rax, 0xD1FFAB1E ; code for System.Guid:ToByteArray():ubyte[]:this - call [rax]System.Guid:ToByteArray():ubyte[]:this - mov rsi, rax + mov rdi, 0xD1FFAB1E ; ubyte[] + mov esi, 16 + call CORINFO_HELP_NEWARR_1_VC + vmovups xmm0, xmmword ptr [rbp-0x38] + vmovups xmmword ptr [rax+0x10], xmm0 mov rdi, rbx + mov rsi, rax mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[ubyte]:AddRange(System.Collections.Generic.IEnumerable`1[ubyte]):this call [rax]System.Collections.Generic.List`1[ubyte]:AddRange(System.Collections.Generic.IEnumerable`1[ubyte]):this jmp G_M31385_IG14 - ;; size=124 bbWeight=0.50 PerfScore 13.17 + ;; size=142 bbWeight=0.50 PerfScore 14.54 G_M31385_IG07: cmp r12d, 35 jne SHORT G_M31385_IG10 mov r12d, 1 cmp r14d, 1 jle G_M31385_IG14 ;; size=22 bbWeight=0.50 PerfScore 1.38 G_M31385_IG08: mov edi, r12d movzx rdi, word ptr [r15+2*rdi+0x0C] cmp edi, 32 je G_M31385_IG13 ;; size=18 bbWeight=4 PerfScore 14.00 G_M31385_IG09: inc r12d cmp r14d, r12d jle G_M31385_IG19 mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:HexDigit(ushort):int call [rax]System.Diagnostics.Tracing.EventSource:HexDigit(ushort):int shl eax, 4 mov dword ptr [rbp-0x5C], eax mov edi, r12d movzx rdi, word ptr [r15+2*rdi+0x0C] mov rcx, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:HexDigit(ushort):int call [rcx]System.Diagnostics.Tracing.EventSource:HexDigit(ushort):int add eax, dword ptr [rbp-0x5C] movzx rsi, al inc dword ptr [rbx+0x14] mov rdi, gword ptr [rbx+0x08] mov eax, dword ptr [rbx+0x10] mov ecx, dword ptr [rdi+0x08] cmp ecx, eax jbe SHORT G_M31385_IG12 lea ecx, [rax+0x01] mov dword ptr [rbx+0x10], ecx mov byte ptr [rdi+rax+0x10], sil jmp SHORT G_M31385_IG13 ;; size=88 bbWeight=2 PerfScore 57.50 G_M31385_IG10: cmp r12d, 65 jge SHORT G_M31385_IG11 cmp r12d, 32 jne G_M31385_IG18 ;; size=16 bbWeight=0.50 PerfScore 1.25 G_M31385_IG11: mov rdi, 0xD1FFAB1E ; const ptr mov rdi, gword ptr [rdi] mov rsi, r15 mov rax, 0xD1FFAB1E ; code for System.Text.UTF8Encoding+UTF8EncodingSealed:GetBytes(System.String):ubyte[]:this call [rax]System.Text.UTF8Encoding+UTF8EncodingSealed:GetBytes(System.String):ubyte[]:this mov rsi, rax mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[ubyte]:AddRange(System.Collections.Generic.IEnumerable`1[ubyte]):this call [rax]System.Collections.Generic.List`1[ubyte]:AddRange(System.Collections.Generic.IEnumerable`1[ubyte]):this jmp SHORT G_M31385_IG14 ;; size=48 bbWeight=0.50 PerfScore 5.75 G_M31385_IG12: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[ubyte]:AddWithResize(ubyte):this call [rax]System.Collections.Generic.List`1[ubyte]:AddWithResize(ubyte):this ;; size=15 bbWeight=2 PerfScore 7.00 G_M31385_IG13: inc r12d cmp r14d, r12d jg G_M31385_IG08 ;; size=12 bbWeight=4 PerfScore 6.00 G_M31385_IG14: mov eax, dword ptr [rbx+0x10] sub eax, r13d ;; size=6 bbWeight=0.50 PerfScore 1.12 G_M31385_IG15: add rsp, 56 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12 G_M31385_IG16: mov r14d, edi call System.String:FastAllocateString(int):System.String mov rsi, rax mov gword ptr [rbp-0x58], rsi cmp byte ptr [rsi], sil lea rdi, bword ptr [rsi+0x0C] lea rsi, bword ptr [r15+0x0E] lea rdx, [r14+r14] mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong) call [rax]System.SpanHelpers:Memmove(byref,byref,ulong) mov r15, gword ptr [rbp-0x58] mov rsi, r15 ;; size=49 bbWeight=0.50 PerfScore 5.75 G_M31385_IG17: mov rdi, r12 mov rax, 0xD1FFAB1E ; code for System.Text.UTF8Encoding+UTF8EncodingSealed:GetBytes(System.String):ubyte[]:this call [rax]System.Text.UTF8Encoding+UTF8EncodingSealed:GetBytes(System.String):ubyte[]:this mov rsi, rax mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[ubyte]:AddRange(System.Collections.Generic.IEnumerable`1[ubyte]):this call [rax]System.Collections.Generic.List`1[ubyte]:AddRange(System.Collections.Generic.IEnumerable`1[ubyte]):this jmp SHORT G_M31385_IG14 ;; size=35 bbWeight=0.50 PerfScore 4.62 G_M31385_IG18: mov rdi, 0xD1FFAB1E ; System.ArgumentException call CORINFO_HELP_NEWSFAST mov rbx, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_EventSource_IllegalValue():System.String call [rax]System.SR:get_EventSource_IllegalValue():System.String mov rdi, rax mov rsi, r15 mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object):System.String call [rax]System.SR:Format(System.String,System.Object):System.String mov r15, rax mov edi, 0x1BB1E mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rsi, r15 mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this call [rax]System.ArgumentException:.ctor(System.String,System.String):this mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=101 bbWeight=0 PerfScore 0.00 G_M31385_IG19: mov rdi, 0xD1FFAB1E ; System.ArgumentException call CORINFO_HELP_NEWSFAST mov rbx, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_EventSource_EvenHexDigits():System.String call [rax]System.SR:get_EventSource_EvenHexDigits():System.String mov r15, rax mov edi, 0x1BB1E mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rsi, r15 mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this call [rax]System.ArgumentException:.ctor(System.String,System.String):this mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=83 bbWeight=0 PerfScore 0.00 -; Total bytes of code 738, prolog size 25, PerfScore 138.17, instruction count 179, allocated bytes for code 738 (MethodHash=9d228566) for method System.Diagnostics.Tracing.EventSource:AddValueToMetaData(System.Collections.Generic.List`1[ubyte],System.String):int (FullOpts) +; Total bytes of code 756, prolog size 25, PerfScore 139.54, instruction count 181, allocated bytes for code 756 (MethodHash=9d228566) for method System.Diagnostics.Tracing.EventSource:AddValueToMetaData(System.Collections.Generic.List`1[ubyte],System.String):int (FullOpts) ```
15 (5.42 % of base) - System.Data.SqlTypes.SqlGuid:System.Runtime.Serialization.ISerializable.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this ```diff ; Assembly listing for method System.Data.SqlTypes.SqlGuid:System.Runtime.Serialization.ISerializable.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 4 single block inlinees; 4 inlinees without PGO data +; 0 inlinees with PGO data; 6 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T04] ( 4, 3.50) byref -> rdi this single-def ; V01 arg1 [V01,T00] ( 14, 13.50) ref -> rbx class-hnd single-def ;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T10] ( 3, 2 ) ref -> r15 class-hnd "Inline return value spill temp" ;* V05 tmp2 [V05 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "Inline stloc first use temp" -; V06 tmp3 [V06 ] ( 2, 1 ) struct (16) [rbp-0x28] do-not-enreg[XS] addr-exposed ld-addr-op "Inline stloc first use temp" +; V06 tmp3 [V06,T12] ( 2, 1 ) struct (16) [rbp-0x28] ld-addr-op spill-single-def "Inline stloc first use temp" ;* V07 tmp4 [V07 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V08 tmp5 [V08,T11] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" -; V09 tmp6 [V09,T01] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" -; V10 tmp7 [V10,T05] ( 2, 4 ) int -> rdx "Inlining Arg" -; V11 tmp8 [V11,T08] ( 1, 1 ) ref -> rdx single-def "field V02._additionalContext (fldOffset=0x0)" P-INDEP -; V12 tmp9 [V12,T09] ( 1, 1 ) int -> rcx single-def "field V02._state (fldOffset=0x8)" P-INDEP -;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "V05.[000..001)" -; V14 tmp11 [V14,T02] ( 3, 6 ) ref -> rsi single-def "arr expr" -; V15 tmp12 [V15,T03] ( 3, 6 ) int -> rdx "index expr" -; V16 tmp13 [V16,T12] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V17 cse0 [V17,T07] ( 3, 3 ) int -> rdi "CSE #02: aggressive" -; V18 cse1 [V18,T06] ( 3, 3 ) ref -> r14 "CSE #01: aggressive" +;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" +; V09 tmp6 [V09,T11] ( 3, 1.50) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" +;* V10 tmp7 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V11 tmp8 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +; V12 tmp9 [V12,T13] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" +; V13 tmp10 [V13,T01] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" +; V14 tmp11 [V14,T05] ( 2, 4 ) int -> rdx "Inlining Arg" +; V15 tmp12 [V15,T08] ( 1, 1 ) ref -> rdx single-def "field V02._additionalContext (fldOffset=0x0)" P-INDEP +; V16 tmp13 [V16,T09] ( 1, 1 ) int -> rcx single-def "field V02._state (fldOffset=0x8)" P-INDEP +;* V17 tmp14 [V17 ] ( 0, 0 ) ubyte -> zero-ref "V05.[000..001)" +; V18 tmp15 [V18,T02] ( 3, 6 ) ref -> rsi single-def "arr expr" +; V19 tmp16 [V19,T03] ( 3, 6 ) int -> rdx "index expr" +; V20 tmp17 [V20,T14] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V21 cse0 [V21,T07] ( 3, 3 ) int -> rdi "CSE #02: aggressive" +; V22 cse1 [V22,T06] ( 3, 3 ) ref -> r14 "CSE #01: aggressive" ; ; Lcl frame size = 24 G_M19881_IG01: push rbp push r15 push r14 push rbx sub rsp, 24 lea rbp, [rsp+0x30] mov rbx, rsi ;; size=18 bbWeight=1 PerfScore 5.00 G_M19881_IG02: cmp byte ptr [rdi], 0 jne SHORT G_M19881_IG04 ;; size=5 bbWeight=1 PerfScore 4.00 G_M19881_IG03: xor r15, r15 jmp SHORT G_M19881_IG05 ;; size=5 bbWeight=0.50 PerfScore 1.12 G_M19881_IG04: vmovups xmm0, xmmword ptr [rdi+0x04] vmovups xmmword ptr [rbp-0x28], xmm0 - lea rdi, [rbp-0x28] - mov rax, 0xD1FFAB1E ; code for System.Guid:ToByteArray():ubyte[]:this - call [rax]System.Guid:ToByteArray():ubyte[]:this + mov rdi, 0xD1FFAB1E ; ubyte[] + mov esi, 16 + call CORINFO_HELP_NEWARR_1_VC mov r15, rax - ;; size=29 bbWeight=0.50 PerfScore 4.50 + vmovups xmm0, xmmword ptr [rbp-0x28] + vmovups xmmword ptr [r15+0x10], xmm0 + ;; size=44 bbWeight=0.50 PerfScore 5.88 G_M19881_IG05: mov rdi, gword ptr [rbx+0x20] mov edx, dword ptr [rbx+0x48] cmp byte ptr [rdi], dil mov r14, 0xD1FFAB1E ; 'm_value' mov rsi, r14 xor ecx, ecx mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Dictionary`2[System.__Canon,int]:TryInsert(System.__Canon,int,ubyte):ubyte:this call [rax]System.Collections.Generic.Dictionary`2[System.__Canon,int]:TryInsert(System.__Canon,int,ubyte):ubyte:this test eax, eax je SHORT G_M19881_IG09 mov edi, dword ptr [rbx+0x48] mov rax, gword ptr [rbx+0x08] cmp edi, dword ptr [rax+0x08] jl SHORT G_M19881_IG07 ;; size=53 bbWeight=1 PerfScore 20.25 G_M19881_IG06: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.SerializationInfo:ExpandArrays():this call [rax]System.Runtime.Serialization.SerializationInfo:ExpandArrays():this ;; size=15 bbWeight=0.50 PerfScore 1.75 G_M19881_IG07: mov rsi, gword ptr [rbx+0x08] mov edi, dword ptr [rbx+0x48] mov edx, edi cmp edx, dword ptr [rsi+0x08] jae G_M19881_IG10 mov gword ptr [rsi+8*rdx+0x10], r14 movsxd rsi, edi mov rdi, gword ptr [rbx+0x10] mov rdx, r15 mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST call [rax]CORINFO_HELP_ARRADDR_ST movsxd rsi, dword ptr [rbx+0x48] mov rdi, gword ptr [rbx+0x18] mov rdx, 0xD1FFAB1E ; 'System.Byte[]' mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST call [rax]CORINFO_HELP_ARRADDR_ST inc dword ptr [rbx+0x48] ;; size=78 bbWeight=1 PerfScore 27.50 G_M19881_IG08: add rsp, 24 pop rbx pop r14 pop r15 pop rbp ret ;; size=11 bbWeight=1 PerfScore 3.25 G_M19881_IG09: mov rdi, 0xD1FFAB1E ; System.Runtime.Serialization.SerializationException call CORINFO_HELP_NEWSFAST mov rbx, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_Serialization_SameNameTwice():System.String call [rax]System.SR:get_Serialization_SameNameTwice():System.String mov rsi, rax mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.SerializationException:.ctor(System.String):this call [rax]System.Runtime.Serialization.SerializationException:.ctor(System.String):this mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=57 bbWeight=0 PerfScore 0.00 G_M19881_IG10: call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00 -; Total bytes of code 277, prolog size 15, PerfScore 67.38, instruction count 71, allocated bytes for code 277 (MethodHash=9cceb256) for method System.Data.SqlTypes.SqlGuid:System.Runtime.Serialization.ISerializable.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this (FullOpts) +; Total bytes of code 292, prolog size 15, PerfScore 68.75, instruction count 73, allocated bytes for code 292 (MethodHash=9cceb256) for method System.Data.SqlTypes.SqlGuid:System.Runtime.Serialization.ISerializable.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this (FullOpts) ```
14 (17.95 % of base) - System.Xml.UniqueId:.ctor():this ```diff ; Assembly listing for method System.Xml.UniqueId:.ctor():this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data +; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rbx this class-hnd single-def ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "spilled call-like call argument" -; V03 tmp2 [V03 ] ( 2, 4 ) struct (16) [rbp-0x18] do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op "Inlining Arg" -;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" -; V05 tmp4 [V05,T01] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V03 tmp2 [V03,T01] ( 2, 4 ) struct (16) [rbp-0x18] do-not-enreg[SR] multireg-ret ld-addr-op "Inlining Arg" +;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" +; V05 tmp4 [V05,T02] ( 3, 3 ) ref -> rax class-hnd exact single-def "Inline stloc first use temp" +;* V06 tmp5 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V07 tmp6 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ; ; Lcl frame size = 24 G_M25787_IG01: push rbp push rbx sub rsp, 24 lea rbp, [rsp+0x20] mov rbx, rdi ;; size=14 bbWeight=1 PerfScore 3.00 G_M25787_IG02: mov rax, 0xD1FFAB1E ; code for System.Guid:NewGuid():System.Guid call [rax]System.Guid:NewGuid():System.Guid mov qword ptr [rbp-0x18], rax mov qword ptr [rbp-0x10], rdx - lea rdi, [rbp-0x18] - mov rax, 0xD1FFAB1E ; code for System.Guid:ToByteArray():ubyte[]:this - call [rax]System.Guid:ToByteArray():ubyte[]:this - mov rsi, rax + mov rdi, 0xD1FFAB1E ; ubyte[] + mov esi, 16 + call CORINFO_HELP_NEWARR_1_VC + vmovups xmm0, xmmword ptr [rbp-0x18] + vmovups xmmword ptr [rax+0x10], xmm0 mov rdi, rbx + mov rsi, rax xor edx, edx mov rax, 0xD1FFAB1E ; code for System.Xml.UniqueId:.ctor(ubyte[],int):this call [rax]System.Xml.UniqueId:.ctor(ubyte[],int):this nop - ;; size=57 bbWeight=1 PerfScore 13.25 + ;; size=71 bbWeight=1 PerfScore 16.00 G_M25787_IG03: add rsp, 24 pop rbx pop rbp ret ;; size=7 bbWeight=1 PerfScore 2.25 -; Total bytes of code 78, prolog size 11, PerfScore 18.50, instruction count 22, allocated bytes for code 78 (MethodHash=0d539b44) for method System.Xml.UniqueId:.ctor():this (FullOpts) +; Total bytes of code 92, prolog size 11, PerfScore 21.25, instruction count 24, allocated bytes for code 92 (MethodHash=0d539b44) for method System.Xml.UniqueId:.ctor():this (FullOpts) ```
13 (26.00 % of base) - System.Data.SqlTypes.SqlGuid:ToByteArray():ubyte[]:this ```diff ; Assembly listing for method System.Data.SqlTypes.SqlGuid:ToByteArray():ubyte[]:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rsp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data +; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 3.50) byref -> rdi this single-def ;* V01 loc0 [V01 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op -; V02 loc1 [V02 ] ( 2, 1 ) struct (16) [rsp+0x08] do-not-enreg[XS] addr-exposed ld-addr-op +; V02 loc1 [V02,T02] ( 2, 1 ) struct (16) [rsp+0x08] ld-addr-op spill-single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "V01.[000..001)" +;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" +; V06 tmp3 [V06,T01] ( 3, 1.50) ref -> rax class-hnd exact single-def "Inline stloc first use temp" +;* V07 tmp4 [V07 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "V01.[000..001)" ; ; Lcl frame size = 24 G_M18201_IG01: sub rsp, 24 ;; size=4 bbWeight=1 PerfScore 0.25 G_M18201_IG02: cmp byte ptr [rdi], 0 jne SHORT G_M18201_IG05 ;; size=5 bbWeight=1 PerfScore 4.00 G_M18201_IG03: xor rax, rax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M18201_IG04: add rsp, 24 ret ;; size=5 bbWeight=0.50 PerfScore 0.62 G_M18201_IG05: vmovups xmm0, xmmword ptr [rdi+0x04] vmovups xmmword ptr [rsp+0x08], xmm0 - lea rdi, [rsp+0x08] - mov rax, 0xD1FFAB1E ; code for System.Guid:ToByteArray():ubyte[]:this - call [rax]System.Guid:ToByteArray():ubyte[]:this - nop - ;; size=29 bbWeight=0.50 PerfScore 4.50 + mov rdi, 0xD1FFAB1E ; ubyte[] + mov esi, 16 + call CORINFO_HELP_NEWARR_1_VC + vmovups xmm0, xmmword ptr [rsp+0x08] + vmovups xmmword ptr [rax+0x10], xmm0 + ;; size=42 bbWeight=0.50 PerfScore 5.75 G_M18201_IG06: add rsp, 24 ret ;; size=5 bbWeight=0.50 PerfScore 0.62 -; Total bytes of code 50, prolog size 4, PerfScore 10.12, instruction count 14, allocated bytes for code 50 (MethodHash=edbfb8e6) for method System.Data.SqlTypes.SqlGuid:ToByteArray():ubyte[]:this (FullOpts) +; Total bytes of code 63, prolog size 4, PerfScore 11.38, instruction count 15, allocated bytes for code 63 (MethodHash=edbfb8e6) for method System.Data.SqlTypes.SqlGuid:ToByteArray():ubyte[]:this (FullOpts) ```

Larger list of diffs: https://gist.github.com/MihuBot/523ea8cd5387a28b48893ebeafc7e960

MihuBot commented 4 months ago

Top method improvements

-44 (-37.29 % of base) - System.Guid:.ctor(ubyte[]):this ```diff ; Assembly listing for method System.Guid:.ctor(ubyte[]):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 1 single block inlinees; 3 inlinees without PGO data +; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T01] ( 3, 3 ) byref -> rdi this single-def -; V01 arg1 [V01,T00] ( 5, 5 ) ref -> rsi class-hnd single-def +; V00 this [V00,T01] ( 3, 3 ) byref -> r15 this single-def +; V01 arg1 [V01,T00] ( 5, 5 ) ref -> rbx class-hnd single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -;* V03 tmp1 [V03 ] ( 0, 0 ) byref -> zero-ref single-def -;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def -;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -; V06 tmp4 [V06,T04] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" -;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -; V10 tmp8 [V10,T02] ( 2, 2 ) byref -> rax "field V05._reference (fldOffset=0x0)" P-INDEP -; V11 tmp9 [V11,T03] ( 2, 2 ) int -> rcx "field V05._length (fldOffset=0x8)" P-INDEP -;* V12 tmp10 [V12 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP -;* V13 tmp11 [V13 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP -;* V14 tmp12 [V14 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP -;* V15 tmp13 [V15 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP -;* V16 tmp14 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP -;* V17 tmp15 [V17 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP -; V18 tmp16 [V18,T05] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V04 tmp2 [V04 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; -; Lcl frame size = 8 +; Lcl frame size = 0 G_M40788_IG01: push rbp + push r15 push rbx - push rax lea rbp, [rsp+0x10] - ;; size=8 bbWeight=1 PerfScore 3.50 + mov r15, rdi + mov rbx, rsi + ;; size=15 bbWeight=1 PerfScore 4.00 G_M40788_IG02: - test rsi, rsi - je SHORT G_M40788_IG05 - lea rax, bword ptr [rsi+0x10] - mov ecx, dword ptr [rsi+0x08] - cmp ecx, 16 + mov rdi, rbx + mov rsi, 0xD1FFAB1E ; 'b' + mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String) + call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String) + cmp dword ptr [rbx+0x08], 16 jne SHORT G_M40788_IG04 - vmovups xmm0, xmmword ptr [rax] - vmovups xmmword ptr [rdi], xmm0 - ;; size=25 bbWeight=1 PerfScore 11.00 + vmovups xmm0, xmmword ptr [rbx+0x10] + vmovups xmmword ptr [r15], xmm0 + ;; size=41 bbWeight=1 PerfScore 13.75 G_M40788_IG03: - add rsp, 8 pop rbx + pop r15 pop rbp ret - ;; size=7 bbWeight=1 PerfScore 2.25 + ;; size=5 bbWeight=1 PerfScore 2.50 G_M40788_IG04: mov rax, 0xD1FFAB1E ; code for System.Guid:ThrowGuidArrayCtorArgumentException() call [rax]System.Guid:ThrowGuidArrayCtorArgumentException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 -G_M40788_IG05: - mov rdi, 0xD1FFAB1E ; System.ArgumentNullException - call CORINFO_HELP_NEWSFAST - mov rbx, rax - mov edi, 0x1383 - mov rsi, 0xD1FFAB1E - call CORINFO_HELP_STRCNS - mov rsi, rax - mov rdi, rbx - mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:.ctor(System.String):this - call [rax]System.ArgumentNullException:.ctor(System.String):this - mov rdi, rbx - call CORINFO_HELP_THROW - int3 - ;; size=65 bbWeight=0 PerfScore 0.00 -; Total bytes of code 118, prolog size 8, PerfScore 16.75, instruction count 32, allocated bytes for code 118 (MethodHash=071360ab) for method System.Guid:.ctor(ubyte[]):this (FullOpts) +; Total bytes of code 74, prolog size 9, PerfScore 20.25, instruction count 21, allocated bytes for code 74 (MethodHash=071360ab) for method System.Guid:.ctor(ubyte[]):this (FullOpts) ```
-25 (-23.81 % of base) - System.Guid:TryWriteBytes(System.Span`1[ubyte],ubyte,byref):ubyte:this ```diff ; Assembly listing for method System.Guid:TryWriteBytes(System.Span`1[ubyte],ubyte,byref):ubyte:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 6 single block inlinees; 5 inlinees without PGO data +; 0 inlinees with PGO data; 1 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 4.50) byref -> rdi this single-def ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def -; V02 arg2 [V02,T04] ( 3, 2.50) ubyte -> rcx single-def +; V02 arg2 [V02,T03] ( 3, 2.50) ubyte -> rcx single-def ; V03 arg3 [V03,T02] ( 4, 3 ) byref -> r8 single-def -;* V04 loc0 [V04,T09] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op -;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" -;* V08 tmp3 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V13 tmp8 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V14 tmp9 [V14 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -;* V15 tmp10 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V17 tmp12 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V18 tmp13 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V19 tmp14 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V20 tmp15 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V21 tmp16 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -; V22 tmp17 [V22,T01] ( 6, 3.50) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V23 tmp18 [V23,T03] ( 4, 3 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP -;* V24 tmp19 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP -;* V25 tmp20 [V25 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP -;* V26 tmp21 [V26 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP -;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP -;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP -;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP -;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP -;* V31 tmp26 [V31 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP -;* V32 tmp27 [V32 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP -;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP -;* V34 tmp29 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP -;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP -;* V36 tmp31 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP -;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP -;* V38 tmp33 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP -;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP -;* V40 tmp35 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP -;* V41 tmp36 [V41 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP -;* V42 tmp37 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP -;* V43 tmp38 [V43 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP -;* V44 tmp39 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP -;* V45 tmp40 [V45 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP -;* V46 tmp41 [V46 ] ( 0, 0 ) byref -> zero-ref single-def "field V21._reference (fldOffset=0x0)" P-INDEP -;* V47 tmp42 [V47 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP -; V48 tmp43 [V48,T05] ( 4, 2 ) int -> rax "V04.[000..004)" -; V49 tmp44 [V49,T06] ( 4, 2 ) short -> rcx "V04.[004..006)" -; V50 tmp45 [V50,T07] ( 4, 2 ) short -> r9 "V04.[006..008)" -; V51 cse0 [V51,T08] ( 2, 1 ) long -> rdi "CSE #01: moderate" +;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V07 tmp3 [V07,T09] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" +;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +; V09 tmp5 [V09,T01] ( 6, 3.50) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V10 tmp6 [V10,T04] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP +;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP +;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP +; V13 tmp9 [V13,T06] ( 2, 1 ) int -> rax "V07.[000..004)" +; V14 tmp10 [V14,T07] ( 2, 1 ) short -> rcx "V07.[004..006)" +; V15 tmp11 [V15,T08] ( 2, 1 ) short -> rdx "V07.[006..008)" +; V16 cse0 [V16,T05] ( 2, 1 ) long -> rdi "CSE #01: moderate" ; ; Lcl frame size = 0 G_M3213_IG01: push rbp mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25 G_M3213_IG02: cmp edx, 16 - jge SHORT G_M3213_IG05 + jl SHORT G_M3213_IG04 ;; size=5 bbWeight=1 PerfScore 1.25 G_M3213_IG03: + test cl, cl + jne SHORT G_M3213_IG06 + vmovups xmm0, xmmword ptr [rdi] + vmovups xmmword ptr [rsi], xmm0 + jmp SHORT G_M3213_IG07 + ;; size=14 bbWeight=0.50 PerfScore 4.62 +G_M3213_IG04: xor eax, eax mov dword ptr [r8], eax ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M3213_IG04: +G_M3213_IG05: pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75 -G_M3213_IG05: - cmp cl, 1 - je SHORT G_M3213_IG06 - cmp edx, 16 - jb SHORT G_M3213_IG07 - vmovups xmm0, xmmword ptr [rdi] - vmovups xmmword ptr [rsi], xmm0 - jmp SHORT G_M3213_IG07 - ;; size=20 bbWeight=0.50 PerfScore 5.25 G_M3213_IG06: mov eax, dword ptr [rdi] movsx rcx, word ptr [rdi+0x04] - movsx r9, word ptr [rdi+0x06] + movsx rdx, word ptr [rdi+0x06] mov rdi, qword ptr [rdi+0x08] - bswap eax - ror cx, 8 - movsx rcx, cx - ror r9w, 8 - movsx r9, r9w - cmp edx, 16 - jb SHORT G_M3213_IG07 - mov dword ptr [rsi], eax - mov word ptr [rsi+0x04], cx - mov word ptr [rsi+0x06], r9w + movbe dword ptr [rsi], eax + movbe word ptr [rsi+0x04], cx + movbe word ptr [rsi+0x06], dx mov qword ptr [rsi+0x08], rdi - ;; size=55 bbWeight=0.50 PerfScore 9.62 + ;; size=36 bbWeight=0.50 PerfScore 8.00 G_M3213_IG07: mov dword ptr [r8], 16 mov eax, 1 ;; size=12 bbWeight=0.50 PerfScore 0.62 G_M3213_IG08: pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75 -; Total bytes of code 105, prolog size 4, PerfScore 20.12, instruction count 34, allocated bytes for code 105 (MethodHash=8006f372) for method System.Guid:TryWriteBytes(System.Span`1[ubyte],ubyte,byref):ubyte:this (FullOpts) +; Total bytes of code 80, prolog size 4, PerfScore 17.88, instruction count 25, allocated bytes for code 80 (MethodHash=8006f372) for method System.Guid:TryWriteBytes(System.Span`1[ubyte],ubyte,byref):ubyte:this (FullOpts) ```
-23 (-14.84 % of base) - System.Data.SqlTypes.SqlGuid:.ctor(ubyte[]):this ```diff ; Assembly listing for method System.Data.SqlTypes.SqlGuid:.ctor(ubyte[]):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 4 single block inlinees; 4 inlinees without PGO data +; 0 inlinees with PGO data; 3 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 4 ) byref -> rdi this single-def ; V01 arg1 [V01,T00] ( 5, 5 ) ref -> rsi class-hnd single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V03 tmp1 [V03,T07] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" +; V03 tmp1 [V03,T04] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" ; V04 tmp2 [V04,T02] ( 2, 4 ) struct (16) mm0 ld-addr-op "NewObj constructor temp" ; V05 tmp3 [V05,T03] ( 2, 4 ) struct (24) [rbp-0x20] do-not-enreg[SF] ld-addr-op "NewObj constructor temp" -;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref -;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def -;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" -;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V11 tmp9 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V12 tmp10 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V13 tmp11 [V13 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" -; V14 tmp12 [V14,T05] ( 2, 2 ) byref -> rsi "field V08._reference (fldOffset=0x0)" P-INDEP -; V15 tmp13 [V15,T06] ( 2, 2 ) int -> rax "field V08._length (fldOffset=0x8)" P-INDEP -;* V16 tmp14 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP -;* V17 tmp15 [V17 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP -;* V18 tmp16 [V18 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP -;* V19 tmp17 [V19 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP -;* V20 tmp18 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP -;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP -;* V22 tmp20 [V22 ] ( 0, 0 ) ubyte -> zero-ref "V05.[000..001)" -;* V23 tmp21 [V23 ] ( 0, 0 ) byref -> zero-ref single-def "Spilling address for field-by-field copy" -;* V24 tmp22 [V24 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" -; V25 tmp23 [V25,T08] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V26 cse0 [V26,T04] ( 3, 3 ) int -> rax "CSE #01: aggressive" +;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V07 tmp5 [V07 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" +;* V09 tmp7 [V09 ] ( 0, 0 ) ubyte -> zero-ref "V05.[000..001)" +;* V10 tmp8 [V10 ] ( 0, 0 ) byref -> zero-ref single-def "Spilling address for field-by-field copy" +; V11 tmp9 [V11,T05] ( 2, 0 ) ref -> rsi single-def "argument with side effect" ; ; Lcl frame size = 24 G_M26159_IG01: push rbp push rbx sub rsp, 24 lea rbp, [rsp+0x20] ;; size=11 bbWeight=1 PerfScore 2.75 G_M26159_IG02: test rsi, rsi - je SHORT G_M26159_IG05 - mov eax, dword ptr [rsi+0x08] - cmp eax, 16 - jne SHORT G_M26159_IG05 - add rsi, 16 - cmp eax, 16 + je SHORT G_M26159_IG04 + cmp dword ptr [rsi+0x08], 16 jne SHORT G_M26159_IG04 - vmovups xmm0, xmmword ptr [rsi] + vmovups xmm0, xmmword ptr [rsi+0x10] vmovups xmmword ptr [rbp-0x1C], xmm0 mov byte ptr [rdi], 1 vmovups xmm0, xmmword ptr [rbp-0x1C] vmovups xmmword ptr [rdi+0x04], xmm0 - ;; size=44 bbWeight=1 PerfScore 17.00 + ;; size=34 bbWeight=1 PerfScore 16.25 G_M26159_IG03: add rsp, 24 pop rbx pop rbp ret ;; size=7 bbWeight=1 PerfScore 2.25 G_M26159_IG04: - mov rax, 0xD1FFAB1E ; code for System.Guid:ThrowGuidArrayCtorArgumentException() - call [rax]System.Guid:ThrowGuidArrayCtorArgumentException() - int3 - ;; size=13 bbWeight=0 PerfScore 0.00 -G_M26159_IG05: mov rdi, 0xD1FFAB1E ; System.ArgumentException call CORINFO_HELP_NEWSFAST mov rbx, rax mov edi, 0x6090 mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.SR:GetResourceString(System.String):System.String call [rax]System.SR:GetResourceString(System.String):System.String mov rsi, rax mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String):this call [rax]System.ArgumentException:.ctor(System.String):this mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=80 bbWeight=0 PerfScore 0.00 -; Total bytes of code 155, prolog size 11, PerfScore 22.00, instruction count 40, allocated bytes for code 155 (MethodHash=f63499d0) for method System.Data.SqlTypes.SqlGuid:.ctor(ubyte[]):this (FullOpts) +; Total bytes of code 132, prolog size 11, PerfScore 21.25, instruction count 33, allocated bytes for code 132 (MethodHash=f63499d0) for method System.Data.SqlTypes.SqlGuid:.ctor(ubyte[]):this (FullOpts) ```
-20 (-17.39 % of base) - System.Guid:ToByteArray(ubyte):ubyte[]:this ```diff ; Assembly listing for method System.Guid:ToByteArray(ubyte):ubyte[]:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 8 single block inlinees; 7 inlinees without PGO data +; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T00] ( 7, 4.50) byref -> rbx this single-def -; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> r15 single-def -; V02 loc0 [V02,T02] ( 4, 3 ) ref -> rax class-hnd exact single-def -;* V03 loc1 [V03,T09] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op -;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" -;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" -;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" -;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V13 tmp9 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V14 tmp10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V16 tmp12 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V20 tmp16 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V22 tmp18 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V23 tmp19 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V24 tmp20 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP -;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP -;* V27 tmp23 [V27 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP -;* V28 tmp24 [V28 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP -;* V29 tmp25 [V29 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP -;* V30 tmp26 [V30 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP -;* V31 tmp27 [V31 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP -;* V32 tmp28 [V32 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP -; V33 tmp29 [V33,T08] ( 2, 1 ) byref -> rcx "field V09._reference (fldOffset=0x0)" P-INDEP -;* V34 tmp30 [V34,T10] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP -;* V35 tmp31 [V35 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP -;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP -;* V37 tmp33 [V37 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP -;* V38 tmp34 [V38 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP -;* V39 tmp35 [V39 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP -;* V40 tmp36 [V40 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP -;* V41 tmp37 [V41 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP -;* V42 tmp38 [V42 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP -;* V43 tmp39 [V43 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP -;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP -;* V45 tmp41 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP -;* V46 tmp42 [V46 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP -;* V47 tmp43 [V47 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP -;* V48 tmp44 [V48 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP -;* V49 tmp45 [V49 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP -;* V50 tmp46 [V50 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP -; V51 tmp47 [V51,T03] ( 5, 2.50) byref -> r8 "field V21._reference (fldOffset=0x0)" P-INDEP -;* V52 tmp48 [V52,T11] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP -;* V53 tmp49 [V53 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP -;* V54 tmp50 [V54 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP -;* V55 tmp51 [V55 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP -;* V56 tmp52 [V56 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP -; V57 tmp53 [V57,T04] ( 4, 2 ) int -> rcx "V03.[000..004)" -; V58 tmp54 [V58,T05] ( 4, 2 ) short -> rdx "V03.[004..006)" -; V59 tmp55 [V59,T06] ( 4, 2 ) short -> rdi "V03.[006..008)" -; V60 cse0 [V60,T07] ( 2, 1 ) long -> rsi "CSE #01: moderate" +; V00 this [V00,T01] ( 7, 4.50) byref -> rbx this single-def +; V01 arg1 [V01,T02] ( 3, 3 ) ubyte -> r15 single-def +; V02 loc0 [V02,T03] ( 3, 3 ) ref -> rax class-hnd exact single-def +;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +; V04 tmp1 [V04,T00] ( 6, 7 ) byref -> rcx single-def "Inlining Arg" +;* V05 tmp2 [V05,T08] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" +;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +; V07 tmp4 [V07,T05] ( 2, 1 ) int -> rdx "V05.[000..004)" +; V08 tmp5 [V08,T06] ( 2, 1 ) short -> rdi "V05.[004..006)" +; V09 tmp6 [V09,T07] ( 2, 1 ) short -> rsi "V05.[006..008)" +; V10 cse0 [V10,T04] ( 2, 1 ) long -> r8 "CSE #01: moderate" ; ; Lcl frame size = 0 G_M29981_IG01: push rbp push r15 push rbx lea rbp, [rsp+0x10] mov rbx, rdi mov r15d, esi ;; size=15 bbWeight=1 PerfScore 4.00 G_M29981_IG02: mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 16 call CORINFO_HELP_NEWARR_1_VC - cmp r15b, 1 - je SHORT G_M29981_IG04 - ;; size=26 bbWeight=1 PerfScore 2.75 -G_M29981_IG03: lea rcx, bword ptr [rax+0x10] + test r15b, r15b + jne SHORT G_M29981_IG04 + ;; size=29 bbWeight=1 PerfScore 3.25 +G_M29981_IG03: vmovups xmm0, xmmword ptr [rbx] vmovups xmmword ptr [rcx], xmm0 jmp SHORT G_M29981_IG05 - ;; size=14 bbWeight=0.50 PerfScore 4.25 + ;; size=10 bbWeight=0.50 PerfScore 4.00 G_M29981_IG04: - mov ecx, dword ptr [rbx] - movsx rdx, word ptr [rbx+0x04] - movsx rdi, word ptr [rbx+0x06] - mov rsi, qword ptr [rbx+0x08] - bswap ecx - ror dx, 8 - movsx rdx, dx - ror di, 8 - movsx rdi, di - lea r8, bword ptr [rax+0x10] - mov dword ptr [r8], ecx - mov word ptr [r8+0x04], dx - mov word ptr [r8+0x06], di - mov qword ptr [r8+0x08], rsi - ;; size=55 bbWeight=0.50 PerfScore 9.25 + mov edx, dword ptr [rbx] + movsx rdi, word ptr [rbx+0x04] + movsx rsi, word ptr [rbx+0x06] + mov r8, qword ptr [rbx+0x08] + movbe dword ptr [rcx], edx + movbe word ptr [rcx+0x04], di + movbe word ptr [rcx+0x06], si + mov qword ptr [rcx+0x08], r8 + ;; size=36 bbWeight=0.50 PerfScore 8.00 G_M29981_IG05: pop rbx pop r15 pop rbp ret ;; size=5 bbWeight=1 PerfScore 2.50 -; Total bytes of code 115, prolog size 9, PerfScore 22.75, instruction count 33, allocated bytes for code 115 (MethodHash=adb08ae2) for method System.Guid:ToByteArray(ubyte):ubyte[]:this (FullOpts) +; Total bytes of code 95, prolog size 9, PerfScore 21.75, instruction count 27, allocated bytes for code 95 (MethodHash=adb08ae2) for method System.Guid:ToByteArray(ubyte):ubyte[]:this (FullOpts) ```
-15 (-3.46 % of base) - System.Data.SqlTypes.SqlGuid:.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this ```diff ; Assembly listing for method System.Data.SqlTypes.SqlGuid:.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 2 single block inlinees; 10 inlinees without PGO data +; 0 inlinees with PGO data; 1 single block inlinees; 9 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T06] ( 5, 3.50) byref -> r15 this single-def +; V00 this [V00,T05] ( 5, 3.50) byref -> r15 this single-def ; V01 arg1 [V01,T00] ( 6, 5.50) ref -> rbx class-hnd single-def ;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def ; V03 loc0 [V03,T07] ( 4, 3 ) ref -> rbx class-hnd single-def ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V05 tmp1 [V05,T15] ( 2, 2 ) struct (16) mm0 ld-addr-op "NewObj constructor temp" -; V06 tmp2 [V06,T16] ( 2, 2 ) struct (24) [rbp-0x30] do-not-enreg[SF] ld-addr-op "NewObj constructor temp" -; V07 tmp3 [V07,T14] ( 4, 2.25) ref -> rsi class-hnd "Inline return value spill temp" -; V08 tmp4 [V08,T11] ( 3, 2.50) ref -> rdi ld-addr-op class-hnd single-def "Inline ldloca(s) first use temp" -; V09 tmp5 [V09,T10] ( 4, 2.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" +; V05 tmp1 [V05,T17] ( 2, 2 ) struct (16) mm0 ld-addr-op "NewObj constructor temp" +; V06 tmp2 [V06,T18] ( 2, 2 ) struct (24) [rbp-0x38] do-not-enreg[SF] ld-addr-op "NewObj constructor temp" +; V07 tmp3 [V07,T16] ( 4, 2.25) ref -> rsi class-hnd "Inline return value spill temp" +; V08 tmp4 [V08,T13] ( 3, 2.50) ref -> rdi ld-addr-op class-hnd single-def "Inline ldloca(s) first use temp" +; V09 tmp5 [V09,T12] ( 4, 2.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" ;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V12 tmp8 [V12,T21] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" -; V13 tmp9 [V13,T02] ( 7, 6 ) int -> rsi "Inline return value spill temp" -; V14 tmp10 [V14,T17] ( 2, 1 ) int -> rsi ld-addr-op "Inline ldloca(s) first use temp" -;* V15 tmp11 [V15,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V16 tmp12 [V16,T03] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" -; V17 tmp13 [V17,T12] ( 3, 2.50) byref -> rax single-def "Inline stloc first use temp" -;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref -;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref single-def -;* V20 tmp16 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" -;* V22 tmp18 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V23 tmp19 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V24 tmp20 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V25 tmp21 [V25 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" -; V26 tmp22 [V26,T08] ( 1, 1 ) ref -> rdx single-def "field V02._additionalContext (fldOffset=0x0)" P-INDEP -; V27 tmp23 [V27,T09] ( 1, 1 ) int -> rcx single-def "field V02._state (fldOffset=0x8)" P-INDEP -; V28 tmp24 [V28,T18] ( 2, 1 ) byref -> rax "field V20._reference (fldOffset=0x0)" P-INDEP -; V29 tmp25 [V29,T20] ( 2, 1 ) int -> rcx "field V20._length (fldOffset=0x8)" P-INDEP -;* V30 tmp26 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP -;* V31 tmp27 [V31 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP -;* V32 tmp28 [V32 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP -;* V33 tmp29 [V33 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP -;* V34 tmp30 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP -;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP -;* V36 tmp32 [V36 ] ( 0, 0 ) ubyte -> zero-ref "V06.[000..001)" -;* V37 tmp33 [V37 ] ( 0, 0 ) byref -> zero-ref single-def "Spilling address for field-by-field copy" -; V38 tmp34 [V38,T04] ( 3, 6 ) ref -> rdi single-def "arr expr" -; V39 tmp35 [V39,T05] ( 3, 6 ) ref -> rax single-def "arr expr" -;* V40 tmp36 [V40 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" -; V41 tmp37 [V41,T22] ( 2, 0 ) ref -> r15 single-def "argument with side effect" -; V42 tmp38 [V42,T23] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V43 tmp39 [V43,T24] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -;* V44 tmp40 [V44 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" -; V45 rat0 [V45,T01] ( 5, 7.50) ref -> rbx "replacement local" -; V46 rat1 [V46,T13] ( 3, 2.50) long -> rdi "CSE for expectedClsNode" +; V13 tmp9 [V13,T06] ( 6, 5 ) int -> rsi "Inline return value spill temp" +; V14 tmp10 [V14,T19] ( 2, 1 ) int -> rsi ld-addr-op "Inline ldloca(s) first use temp" +;* V15 tmp11 [V15,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V16 tmp12 [V16,T02] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" +; V17 tmp13 [V17,T14] ( 3, 2.50) byref -> rax single-def "Inline stloc first use temp" +;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V20 tmp16 [V20 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" +; V21 tmp17 [V21,T10] ( 1, 1 ) ref -> rdx single-def "field V02._additionalContext (fldOffset=0x0)" P-INDEP +; V22 tmp18 [V22,T11] ( 1, 1 ) int -> rcx single-def "field V02._state (fldOffset=0x8)" P-INDEP +;* V23 tmp19 [V23 ] ( 0, 0 ) ubyte -> zero-ref "V06.[000..001)" +;* V24 tmp20 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "Spilling address for field-by-field copy" +; V25 tmp21 [V25,T03] ( 3, 6 ) ref -> rdi single-def "arr expr" +; V26 tmp22 [V26,T04] ( 3, 6 ) ref -> rcx single-def "arr expr" +; V27 tmp23 [V27,T22] ( 2, 0 ) ref -> r15 single-def "argument with side effect" +; V28 tmp24 [V28,T23] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V29 tmp25 [V29,T24] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +;* V30 tmp26 [V30 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" +; V31 cse0 [V31,T08] ( 4, 3 ) ref -> r13 "CSE #02: aggressive" +; V32 cse1 [V32,T09] ( 3, 3 ) long -> rax "CSE #01: aggressive" +; V33 rat0 [V33,T01] ( 5, 7.50) ref -> rbx "replacement local" +; V34 rat1 [V34,T15] ( 3, 2.50) long -> rdi "CSE for expectedClsNode" ; -; Lcl frame size = 24 +; Lcl frame size = 32 G_M50617_IG01: push rbp push r15 push r14 + push r13 push rbx - sub rsp, 24 - lea rbp, [rsp+0x30] + sub rsp, 32 + lea rbp, [rsp+0x40] mov r15, rdi mov rbx, rsi - ;; size=21 bbWeight=1 PerfScore 5.25 + ;; size=23 bbWeight=1 PerfScore 6.25 G_M50617_IG02: mov rdi, gword ptr [rbx+0x20] cmp byte ptr [rdi], dil mov rsi, 0xD1FFAB1E ; 'm_value' mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Dictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this call [rax]System.Collections.Generic.Dictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this test rax, rax je SHORT G_M50617_IG04 ;; size=34 bbWeight=1 PerfScore 9.75 G_M50617_IG03: mov esi, dword ptr [rax] jmp SHORT G_M50617_IG05 ;; size=4 bbWeight=0.50 PerfScore 2.00 G_M50617_IG04: mov esi, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M50617_IG05: cmp esi, -1 je G_M50617_IG18 mov rdi, gword ptr [rbx+0x18] cmp esi, dword ptr [rdi+0x08] jae G_M50617_IG19 mov eax, esi mov rdi, gword ptr [rdi+8*rax+0x10] - mov rax, gword ptr [rbx+0x10] - cmp esi, dword ptr [rax+0x08] + mov rcx, gword ptr [rbx+0x10] + cmp esi, dword ptr [rcx+0x08] jae G_M50617_IG19 - mov esi, esi - mov r14, gword ptr [rax+8*rsi+0x10] - mov rsi, 0xD1FFAB1E ; 'System.Byte[]' - cmp rdi, rsi + mov r14, gword ptr [rcx+8*rax+0x10] + mov r13, 0xD1FFAB1E ; 'System.Byte[]' + cmp rdi, r13 je SHORT G_M50617_IG07 - ;; size=64 bbWeight=1 PerfScore 19.25 + ;; size=62 bbWeight=1 PerfScore 19.00 G_M50617_IG06: mov rsi, rdi - mov rdi, 0xD1FFAB1E ; 'System.Byte[]' + mov rdi, r13 mov rax, 0xD1FFAB1E ; code for System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this call [rax]System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this test eax, eax jne SHORT G_M50617_IG07 test r14, r14 jne SHORT G_M50617_IG08 - ;; size=34 bbWeight=0.50 PerfScore 3.12 + ;; size=27 bbWeight=0.50 PerfScore 3.12 G_M50617_IG07: mov rsi, r14 jmp SHORT G_M50617_IG09 ;; size=5 bbWeight=0.50 PerfScore 1.12 G_M50617_IG08: mov rdi, gword ptr [rbx+0x28] mov rsi, r14 mov r11, 0xD1FFAB1E ; code for System.Runtime.Serialization.IFormatterConverter:Convert(System.Object,System.Type):System.Object:this - mov rdx, 0xD1FFAB1E ; 'System.Byte[]' + mov rdx, r13 call [r11]System.Runtime.Serialization.IFormatterConverter:Convert(System.Object,System.Type):System.Object:this mov rsi, rax - ;; size=33 bbWeight=0.50 PerfScore 3.00 + ;; size=26 bbWeight=0.50 PerfScore 3.00 G_M50617_IG09: mov rbx, rsi test rbx, rbx je SHORT G_M50617_IG12 ;; size=8 bbWeight=1 PerfScore 1.50 G_M50617_IG10: mov rdi, 0xD1FFAB1E ; ubyte[] cmp qword ptr [rbx], rdi je SHORT G_M50617_IG12 ;; size=15 bbWeight=0.50 PerfScore 2.12 G_M50617_IG11: mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTARRAY call [rax]CORINFO_HELP_CHKCASTARRAY mov rbx, rax ;; size=15 bbWeight=0.25 PerfScore 0.88 G_M50617_IG12: test rbx, rbx jne SHORT G_M50617_IG15 ;; size=5 bbWeight=1 PerfScore 1.25 G_M50617_IG13: vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [r15], xmm0 vmovdqu xmmword ptr [r15+0x04], xmm0 ;; size=15 bbWeight=0.50 PerfScore 2.17 G_M50617_IG14: - add rsp, 24 + add rsp, 32 pop rbx + pop r13 pop r14 pop r15 pop rbp ret - ;; size=11 bbWeight=0.50 PerfScore 1.62 + ;; size=13 bbWeight=0.50 PerfScore 1.88 G_M50617_IG15: - lea rax, bword ptr [rbx+0x10] - mov ecx, dword ptr [rbx+0x08] - cmp ecx, 16 + cmp dword ptr [rbx+0x08], 16 jne SHORT G_M50617_IG17 - vmovups xmm0, xmmword ptr [rax] - vmovups xmmword ptr [rbp-0x2C], xmm0 + vmovups xmm0, xmmword ptr [rbx+0x10] + vmovups xmmword ptr [rbp-0x34], xmm0 mov byte ptr [r15], 1 - vmovups xmm0, xmmword ptr [rbp-0x2C] + vmovups xmm0, xmmword ptr [rbp-0x34] vmovups xmmword ptr [r15+0x04], xmm0 - ;; size=36 bbWeight=0.50 PerfScore 7.38 + ;; size=31 bbWeight=0.50 PerfScore 7.50 G_M50617_IG16: - add rsp, 24 + add rsp, 32 pop rbx + pop r13 pop r14 pop r15 pop rbp ret - ;; size=11 bbWeight=0.50 PerfScore 1.62 + ;; size=13 bbWeight=0.50 PerfScore 1.88 G_M50617_IG17: mov rax, 0xD1FFAB1E ; code for System.Guid:ThrowGuidArrayCtorArgumentException() call [rax]System.Guid:ThrowGuidArrayCtorArgumentException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M50617_IG18: mov rdi, 0xD1FFAB1E ; System.Runtime.Serialization.SerializationException call CORINFO_HELP_NEWSFAST mov rbx, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_Serialization_NotFound():System.String call [rax]System.SR:get_Serialization_NotFound():System.String mov r15, rax mov edi, 0xE17C mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rsi, rax mov rdi, r15 mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object):System.String call [rax]System.SR:Format(System.String,System.Object):System.String mov rsi, rax mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.SerializationException:.ctor(System.String):this call [rax]System.Runtime.Serialization.SerializationException:.ctor(System.String):this mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=98 bbWeight=0 PerfScore 0.00 G_M50617_IG19: call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00 -; Total bytes of code 433, prolog size 15, PerfScore 62.17, instruction count 109, allocated bytes for code 433 (MethodHash=d8f03a46) for method System.Data.SqlTypes.SqlGuid:.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this (FullOpts) +; Total bytes of code 418, prolog size 17, PerfScore 63.54, instruction count 109, allocated bytes for code 418 (MethodHash=d8f03a46) for method System.Data.SqlTypes.SqlGuid:.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this (FullOpts) ```
-11 (-33.33 % of base) - System.Guid:TryWriteBytes(System.Span`1[ubyte]):ubyte:this ```diff ; Assembly listing for method System.Guid:TryWriteBytes(System.Span`1[ubyte]):ubyte:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code -; rbp based frame +; rsp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data +; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 2.50) byref -> rdi this single-def ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -;* V03 tmp1 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V04 tmp2 [V04 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ; V06 tmp4 [V06,T02] ( 2, 1.50) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V07 tmp5 [V07,T01] ( 3, 2.50) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP -;* V08 tmp6 [V08 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP -;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP -;* V10 tmp8 [V10 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP -;* V11 tmp9 [V11 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP +; V07 tmp5 [V07,T01] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP +;* V08 tmp6 [V08 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP +;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP ; ; Lcl frame size = 0 G_M45208_IG01: - push rbp - mov rbp, rsp - ;; size=4 bbWeight=1 PerfScore 1.25 + ;; size=0 bbWeight=1 PerfScore 0.00 G_M45208_IG02: cmp edx, 16 - jge SHORT G_M45208_IG05 + jl SHORT G_M45208_IG05 ;; size=5 bbWeight=1 PerfScore 1.25 G_M45208_IG03: - xor eax, eax - ;; size=2 bbWeight=0.50 PerfScore 0.12 + vmovups xmm0, xmmword ptr [rdi] + vmovups xmmword ptr [rsi], xmm0 + mov eax, 1 + ;; size=13 bbWeight=0.50 PerfScore 3.12 G_M45208_IG04: - pop rbp ret - ;; size=2 bbWeight=0.50 PerfScore 0.75 + ;; size=1 bbWeight=0.50 PerfScore 0.50 G_M45208_IG05: - cmp edx, 16 - jb SHORT G_M45208_IG06 - vmovups xmm0, xmmword ptr [rdi] - vmovups xmmword ptr [rsi], xmm0 - ;; size=13 bbWeight=0.50 PerfScore 3.62 + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M45208_IG06: - mov eax, 1 - ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M45208_IG07: - pop rbp ret - ;; size=2 bbWeight=0.50 PerfScore 0.75 + ;; size=1 bbWeight=0.50 PerfScore 0.50 -; Total bytes of code 33, prolog size 4, PerfScore 7.88, instruction count 14, allocated bytes for code 33 (MethodHash=9a754f67) for method System.Guid:TryWriteBytes(System.Span`1[ubyte]):ubyte:this (FullOpts) +; Total bytes of code 22, prolog size 0, PerfScore 5.50, instruction count 8, allocated bytes for code 22 (MethodHash=9a754f67) for method System.Guid:TryWriteBytes(System.Span`1[ubyte]):ubyte:this (FullOpts) ```

Larger list of diffs: https://gist.github.com/MihuBot/0828d46375b2b7b14789dcd9218fbc79

MihuBot commented 4 months ago

@xtqqczze