MihuBot / runtime-utils

0 stars 0 forks source link

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

Open MihuBot opened 1 month ago

MihuBot commented 1 month ago

Job completed in 14 minutes.

Diffs

Found 268 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 41786305
Total bytes of diff: 41786333
Total bytes of delta: 28 (0.00 % of base)
Total relative delta: -1.00
    diff is a regression.
    relative diff is an improvement.

Total byte diff includes 157 bytes from reconciling methods
    Base had    1 unique methods,      399 unique bytes
    Diff had    4 unique methods,      556 unique bytes

Top file regressions (bytes):
          54 : 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|48_0(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts) (0 base, 1 diff methods)
          66 (Infinity of base) : System.Private.CoreLib.dasm - System.Guid:ThrowGuidArrayCtorArgumentNullException() (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)
          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)
         -66 (-55.93 % 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 (-0.93 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventSource:GenerateGuidFromName(System.String):System.Guid (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|48_0(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts) (0 base, 1 diff methods)
          66 (Infinity of base) : System.Private.CoreLib.dasm - System.Guid:ThrowGuidArrayCtorArgumentNullException() (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)
          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)
         -66 (-55.93 % 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)
          -5 (-0.93 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventSource:GenerateGuidFromName(System.String):System.Guid (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)

31 total methods with Code Size differences (20 improved, 11 regressed), 255855 unchanged.

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

Artifacts:

MihuBot commented 1 month ago

Top method regressions

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) ```
10 (4.74 % of base) - System.Data.SqlTypes.SqlBinary:op_Explicit(System.Data.SqlTypes.SqlGuid):System.Data.SqlTypes.SqlBinary ```diff ; Assembly listing for method System.Data.SqlTypes.SqlBinary:op_Explicit(System.Data.SqlTypes.SqlGuid):System.Data.SqlTypes.SqlBinary (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; 4 inlinees without PGO data +; 0 inlinees with PGO data; 10 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ; -; V00 arg0 [V00,T07] ( 2, 1.50) struct (24) [rbp+0x10] do-not-enreg[S] ld-addr-op single-def +; V00 arg0 [V00,T08] ( 2, 1.50) struct (24) [rbp+0x10] do-not-enreg[S] ld-addr-op single-def ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" ;* V03 tmp2 [V03 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "Inline stloc first use temp" -; V04 tmp3 [V04,T00] ( 6, 3 ) ref -> rbx class-hnd "Inline return value spill temp" +; V04 tmp3 [V04,T02] ( 4, 2 ) ref -> rbx class-hnd "Inline return value spill temp" ;* V05 tmp4 [V05 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "Inline stloc first use temp" -; V06 tmp5 [V06 ] ( 2, 1 ) struct (16) [rbp-0x20] do-not-enreg[XS] addr-exposed ld-addr-op "Inline stloc first use temp" -;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" -;* V08 tmp7 [V08 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" -; V09 tmp8 [V09,T06] ( 2, 1 ) int -> rax "Inline return value spill temp" -;* V10 tmp9 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V11 tmp10 [V11,T02] ( 3, 3 ) int -> rax "impAppendStmt" -; V12 tmp11 [V12,T03] ( 2, 2 ) byref -> rdi single-def "Inlining Arg" -; V13 tmp12 [V13,T01] ( 6, 3 ) ref -> r15 "field V02._value (fldOffset=0x0)" P-INDEP -;* V14 tmp13 [V14 ] ( 0, 0 ) ubyte -> zero-ref "V03.[000..001)" -;* V15 tmp14 [V15 ] ( 0, 0 ) ubyte -> zero-ref "V05.[000..001)" -; V16 tmp15 [V16,T04] ( 2, 2 ) ubyte -> rdi "V00.[000..001)" -; V17 tmp16 [V17,T05] ( 2, 2 ) int -> rsi "argument with side effect" +; V06 tmp5 [V06,T09] ( 2, 1 ) struct (16) [rbp-0x20] ld-addr-op spill-single-def "Inline stloc first use temp" +;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" +; V08 tmp7 [V08,T06] ( 3, 1.50) ref -> rbx class-hnd exact single-def "Inline stloc first use temp" +;* V09 tmp8 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V10 tmp9 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V11 tmp10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" +;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" +; V13 tmp12 [V13,T07] ( 2, 1 ) int -> rax "Inline return value spill temp" +;* V14 tmp13 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V15 tmp14 [V15,T00] ( 3, 3 ) int -> rax "impAppendStmt" +; V16 tmp15 [V16,T03] ( 2, 2 ) byref -> rdi single-def "Inlining Arg" +; V17 tmp16 [V17,T01] ( 5, 2.50) ref -> r15 "field V02._value (fldOffset=0x0)" P-INDEP +;* V18 tmp17 [V18 ] ( 0, 0 ) ubyte -> zero-ref "V03.[000..001)" +;* V19 tmp18 [V19 ] ( 0, 0 ) ubyte -> zero-ref "V05.[000..001)" +; V20 tmp19 [V20,T04] ( 2, 2 ) ubyte -> rdi "V00.[000..001)" +; V21 tmp20 [V21,T05] ( 2, 2 ) int -> rsi "argument with side effect" ; ; Lcl frame size = 16 G_M46050_IG01: push rbp push r15 push rbx sub rsp, 16 lea rbp, [rsp+0x20] ;; size=13 bbWeight=1 PerfScore 3.75 G_M46050_IG02: movzx rdi, byte ptr [rbp+0x10] test edi, edi - je SHORT G_M46050_IG04 - ;; size=9 bbWeight=1 PerfScore 2.25 + je G_M46050_IG06 + ;; size=13 bbWeight=1 PerfScore 2.25 G_M46050_IG03: vmovups xmm0, xmmword ptr [rbp+0x14] vmovups xmmword ptr [rbp-0x20], xmm0 - lea rdi, [rbp-0x20] - 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 rbx, rax - test rbx, rbx - jne SHORT G_M46050_IG06 - xor r15, r15 - jmp SHORT G_M46050_IG08 - ;; size=39 bbWeight=0.50 PerfScore 5.75 -G_M46050_IG04: - mov rax, 0xD1FFAB1E ; box for System.Data.SqlTypes.SqlBinary:Null - mov rax, gword ptr [rax] - mov rax, gword ptr [rax+0x08] - ;; size=17 bbWeight=0.50 PerfScore 2.12 -G_M46050_IG05: - add rsp, 16 - pop rbx - pop r15 - pop rbp - ret - ;; size=9 bbWeight=0.50 PerfScore 1.38 -G_M46050_IG06: - mov esi, dword ptr [rbx+0x08] + vmovups xmm0, xmmword ptr [rbp-0x20] + vmovups xmmword ptr [rbx+0x10], xmm0 + mov esi, 16 mov rdi, 0xD1FFAB1E ; ubyte[] call CORINFO_HELP_NEWARR_1_VC mov r15, rax mov rdi, qword ptr [r15] mov eax, dword ptr [rdi+0x04] add eax, -24 shr eax, 3 - jne SHORT G_M46050_IG10 - ;; size=35 bbWeight=0.50 PerfScore 4.62 -G_M46050_IG07: + jne SHORT G_M46050_IG08 + ;; size=80 bbWeight=0.50 PerfScore 9.12 +G_M46050_IG04: mov rdi, rbx xor esi, esi mov rax, 0xD1FFAB1E ; code for System.Array:GetLowerBound(int):int:this call [rax]System.Array:GetLowerBound(int):int:this mov esi, eax mov r8d, dword ptr [rbx+0x08] test r8d, r8d - jl SHORT G_M46050_IG12 + jl SHORT G_M46050_IG10 mov rdi, rbx mov rdx, r15 xor ecx, ecx mov rax, 0xD1FFAB1E ; code for System.Array:Copy(System.Array,int,System.Array,int,int) call [rax]System.Array:Copy(System.Array,int,System.Array,int,int) - ;; size=48 bbWeight=0.50 PerfScore 5.62 -G_M46050_IG08: mov rax, r15 - ;; size=3 bbWeight=0.50 PerfScore 0.12 -G_M46050_IG09: + ;; size=51 bbWeight=0.50 PerfScore 5.75 +G_M46050_IG05: add rsp, 16 pop rbx pop r15 pop rbp ret ;; size=9 bbWeight=0.50 PerfScore 1.38 -G_M46050_IG10: +G_M46050_IG06: + mov rax, 0xD1FFAB1E ; box for System.Data.SqlTypes.SqlBinary:Null + mov rax, gword ptr [rax] + mov rax, gword ptr [rax+0x08] + ;; size=17 bbWeight=0.50 PerfScore 2.12 +G_M46050_IG07: + add rsp, 16 + pop rbx + pop r15 + pop rbp + ret + ;; size=9 bbWeight=0.50 PerfScore 1.38 +G_M46050_IG08: cmp eax, 1 - je SHORT G_M46050_IG07 + je SHORT G_M46050_IG04 ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M46050_IG11: +G_M46050_IG09: mov edi, 9 mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException(int) call [rax]System.ThrowHelper:ThrowArgumentException(int) int3 ;; size=18 bbWeight=0 PerfScore 0.00 -G_M46050_IG12: +G_M46050_IG10: call CORINFO_HELP_OVERFLOW int3 ;; size=6 bbWeight=0 PerfScore 0.00 -; Total bytes of code 211, prolog size 13, PerfScore 27.62, instruction count 62, allocated bytes for code 211 (MethodHash=6b554c1d) for method System.Data.SqlTypes.SqlBinary:op_Explicit(System.Data.SqlTypes.SqlGuid):System.Data.SqlTypes.SqlBinary (FullOpts) +; Total bytes of code 221, prolog size 13, PerfScore 26.38, instruction count 60, allocated bytes for code 221 (MethodHash=6b554c1d) for method System.Data.SqlTypes.SqlBinary:op_Explicit(System.Data.SqlTypes.SqlGuid):System.Data.SqlTypes.SqlBinary (FullOpts) ```
9 (13.85 % of base) - System.Guid:.ctor(System.ReadOnlySpan`1[ubyte],ubyte):this ```diff ; Assembly listing for method System.Guid:.ctor(System.ReadOnlySpan`1[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; 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] ( 9, 6 ) byref -> rdi this single-def +; 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,T01] ( 3, 3 ) ubyte -> rcx single-def -;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -; V06 tmp3 [V06,T02] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V07 tmp4 [V07,T03] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP -;* V08 tmp5 [V08 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP -;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP -;* V10 tmp7 [V10 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP -;* V11 tmp8 [V11 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP +; V02 arg2 [V02,T02] ( 3, 3 ) ubyte -> rcx single-def +;* V03 loc0 [V03 ] ( 0, 0 ) byref -> zero-ref single-def +;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +;* V05 tmp1 [V05,T08] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" +;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +; V08 tmp4 [V08,T01] ( 6, 3.50) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V09 tmp5 [V09,T03] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP +;* V10 tmp6 [V10 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP +;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP +; V12 tmp8 [V12,T05] ( 2, 1 ) int -> rax "V05.[000..004)" +; V13 tmp9 [V13,T06] ( 2, 1 ) short -> rcx "V05.[004..006)" +; V14 tmp10 [V14,T07] ( 2, 1 ) short -> rdx "V05.[006..008)" +; V15 cse0 [V15,T04] ( 2, 1 ) long -> rsi "CSE #01: moderate" ; ; Lcl frame size = 0 G_M63959_IG01: push rbp mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25 G_M63959_IG02: cmp edx, 16 + jne SHORT G_M63959_IG07 + test cl, cl jne SHORT G_M63959_IG05 + ;; size=9 bbWeight=1 PerfScore 2.50 +G_M63959_IG03: vmovups xmm0, xmmword ptr [rsi] vmovups xmmword ptr [rdi], xmm0 - cmp cl, 1 - jne SHORT G_M63959_IG04 - ;; size=18 bbWeight=1 PerfScore 8.50 -G_M63959_IG03: - mov eax, dword ptr [rdi] - movbe dword ptr [rdi], eax - movsx rax, word ptr [rdi+0x04] - movbe word ptr [rdi+0x04], ax - movsx rax, word ptr [rdi+0x06] - movbe word ptr [rdi+0x06], ax - ;; size=28 bbWeight=0.50 PerfScore 6.50 + ;; size=8 bbWeight=0.50 PerfScore 3.00 G_M63959_IG04: pop rbp ret - ;; size=2 bbWeight=1 PerfScore 1.50 + ;; size=2 bbWeight=0.50 PerfScore 0.75 G_M63959_IG05: + mov eax, dword ptr [rsi] + movsx rcx, word ptr [rsi+0x04] + movsx rdx, word ptr [rsi+0x06] + mov rsi, qword ptr [rsi+0x08] + movbe dword ptr [rdi], eax + movbe word ptr [rdi+0x04], cx + movbe word ptr [rdi+0x06], dx + mov qword ptr [rdi+0x08], rsi + ;; size=36 bbWeight=0.50 PerfScore 8.00 +G_M63959_IG06: + pop rbp + ret + ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M63959_IG07: mov rax, 0xD1FFAB1E ; code for System.Guid:ThrowGuidArrayCtorArgumentException() call [rax]System.Guid:ThrowGuidArrayCtorArgumentException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 -; Total bytes of code 65, prolog size 4, PerfScore 17.75, instruction count 19, allocated bytes for code 65 (MethodHash=56990628) for method System.Guid:.ctor(System.ReadOnlySpan`1[ubyte],ubyte):this (FullOpts) +; Total bytes of code 74, prolog size 4, PerfScore 16.25, instruction count 23, allocated bytes for code 74 (MethodHash=56990628) for method System.Guid:.ctor(System.ReadOnlySpan`1[ubyte],ubyte):this (FullOpts) ```
8 (12.12 % of base) - System.Xml.UniqueId:.ctor(System.Guid):this ```diff ; Assembly listing for method System.Xml.UniqueId:.ctor(System.Guid):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; 0 inlinees without PGO data +; 0 inlinees with PGO data; 3 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 arg1 [V01 ] ( 3, 3 ) struct (16) [rbp-0x18] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def +; V01 arg1 [V01,T01] ( 3, 3 ) struct (16) [rsp+0x00] do-not-enreg[SA] 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 ) ref -> zero-ref class-hnd "Inlining Arg" -; V04 tmp2 [V04,T01] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" +; V04 tmp2 [V04,T02] ( 3, 3 ) ref -> rax class-hnd exact single-def "Inline stloc first use temp" +;* V05 tmp3 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ; -; Lcl frame size = 24 +; Lcl frame size = 16 G_M16687_IG01: - push rbp push rbx - sub rsp, 24 - lea rbp, [rsp+0x20] - mov qword ptr [rbp-0x18], rsi - mov qword ptr [rbp-0x10], rdx + sub rsp, 16 + mov qword ptr [rsp], rsi + mov qword ptr [rsp+0x08], rdx mov rbx, rdi - ;; size=22 bbWeight=1 PerfScore 5.00 + ;; size=17 bbWeight=1 PerfScore 3.50 G_M16687_IG02: - 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 [rsp] + 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=37 bbWeight=1 PerfScore 8.00 + ;; size=51 bbWeight=1 PerfScore 10.75 G_M16687_IG03: - add rsp, 24 + add rsp, 16 pop rbx - pop rbp ret - ;; size=7 bbWeight=1 PerfScore 2.25 + ;; size=6 bbWeight=1 PerfScore 1.75 -; Total bytes of code 66, prolog size 11, PerfScore 15.25, instruction count 20, allocated bytes for code 66 (MethodHash=bdeabed0) for method System.Xml.UniqueId:.ctor(System.Guid):this (FullOpts) +; Total bytes of code 74, prolog size 5, PerfScore 16.00, instruction count 19, allocated bytes for code 74 (MethodHash=bdeabed0) for method System.Xml.UniqueId:.ctor(System.Guid):this (FullOpts) ```
MihuBot commented 1 month ago

Top method improvements

-66 (-55.93 % 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 ;# 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 rbx - push rax - lea rbp, [rsp+0x10] - ;; size=8 bbWeight=1 PerfScore 3.50 + mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 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 + cmp dword ptr [rsi+0x08], 16 jne SHORT G_M40788_IG04 - vmovups xmm0, xmmword ptr [rax] + vmovups xmm0, xmmword ptr [rsi+0x10] vmovups xmmword ptr [rdi], xmm0 - ;; size=25 bbWeight=1 PerfScore 11.00 + ;; size=20 bbWeight=1 PerfScore 11.25 G_M40788_IG03: - add rsp, 8 - pop rbx pop rbp ret - ;; size=7 bbWeight=1 PerfScore 2.25 + ;; size=2 bbWeight=1 PerfScore 1.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 + mov rax, 0xD1FFAB1E ; code for System.Guid:ThrowGuidArrayCtorArgumentNullException() + call [rax]System.Guid:ThrowGuidArrayCtorArgumentNullException() int3 - ;; size=65 bbWeight=0 PerfScore 0.00 + ;; size=13 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 52, prolog size 4, PerfScore 14.00, instruction count 16, allocated bytes for code 52 (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; 2 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; 8 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/f79c8c9aa82a0d13dd71f724a7278535

MihuBot commented 1 month ago

@xtqqczze