Skip to content

[JitDiff X64] [xtqqczze] Copy byte array as block in Guid ctor #546

Open

Description

@MihuBot

Job completed in 14 minutes.
dotnet/runtime#105208

Diffs

Found 263 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 39642171
Total bytes of diff: 39642117
Total bytes of delta: -54 (-0.00 % of base)
Total relative delta: -0.19
    diff is an improvement.
    relative diff is an improvement.


Top file regressions (bytes):
           9 : System.ComponentModel.TypeConverter.dasm (0.00 % of base)

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

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

Top method regressions (bytes):
           9 (2.33 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.Design.StandardCommands+ShellGuids:.cctor() (FullOpts)

Top method improvements (bytes):
         -63 (-21.80 % of base) : System.Private.CoreLib.dasm - System.Guid:.ctor(int,short,short,ubyte[]):this (FullOpts)

Top method regressions (percentages):
           9 (2.33 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.Design.StandardCommands+ShellGuids:.cctor() (FullOpts)

Top method improvements (percentages):
         -63 (-21.80 % of base) : System.Private.CoreLib.dasm - System.Guid:.ctor(int,short,short,ubyte[]):this (FullOpts)

2 total methods with Code Size differences (1 improved, 1 regressed), 231371 unchanged.

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

Artifacts:

Activity

  1. MihuBot commented on Jul 22, 2024

    @MihuBot
    OwnerAuthor

    Top method regressions

    9 (2.33 % of base) - System.ComponentModel.Design.StandardCommands+ShellGuids:.cctor()
     ; Assembly listing for method System.ComponentModel.Design.StandardCommands+ShellGuids:.cctor() (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; 20 single block inlinees; 8 inlinees without PGO data
    +; 0 inlinees with PGO data; 21 single block inlinees; 10 inlinees without PGO data
     ; Final local variable assignments
     ;
     ;# V00 OutArgs      [V00    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
     ;* V01 tmp1         [V01    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Guid>
     ;* V02 tmp2         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Guid>
     ;* V03 tmp3         [V03    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Guid>
     ;* V04 tmp4         [V04    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Guid>
     ;  V05 tmp5         [V05,T00] (  3,  6   )     ref  ->  rax         class-hnd exact single-def "dup spill" <ubyte[]>
    -;  V06 tmp6         [V06    ] (  3,  6   )  struct (16) [rbp-0x10]  do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Guid>
    +;  V06 tmp6         [V06,T01] (  2,  4   )  struct (16) [rbp-0x10]  do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Guid>
     ;  V07 tmp7         [V07    ] (  4,  4   )  struct (24) [rbp-0x28]  do-not-enreg[XSF] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Guid+GuidResult>
     ;* V08 tmp8         [V08    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
     ;* V09 tmp9         [V09    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
     ;* V10 tmp10        [V10    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
     ;* V11 tmp11        [V11    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
     ;  V12 tmp12        [V12    ] (  4,  4   )  struct (24) [rbp-0x40]  do-not-enreg[XSF] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Guid+GuidResult>
     ;* V13 tmp13        [V13    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
     ;* V14 tmp14        [V14    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
     ;* V15 tmp15        [V15    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
     ;* V16 tmp16        [V16    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
     ;  V17 tmp17        [V17    ] (  4,  4   )  struct (24) [rbp-0x58]  do-not-enreg[XSF] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Guid+GuidResult>
     ;* V18 tmp18        [V18    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
     ;* V19 tmp19        [V19    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
     ;* V20 tmp20        [V20    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
     ;* V21 tmp21        [V21    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
     ;  V22 tmp22        [V22    ] (  4,  4   )  struct (24) [rbp-0x70]  do-not-enreg[XSF] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Guid+GuidResult>
     ;* V23 tmp23        [V23    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
     ;* V24 tmp24        [V24    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
     ;* V25 tmp25        [V25    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
     ;* V26 tmp26        [V26    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
    -;* V27 tmp27        [V27    ] (  0,  0   )   byref  ->  zero-ref    "field V08._reference (fldOffset=0x0)" P-INDEP
    -;* V28 tmp28        [V28    ] (  0,  0   )     int  ->  zero-ref    "field V08._length (fldOffset=0x8)" P-INDEP
    -;* V29 tmp29        [V29    ] (  0,  0   )   byref  ->  zero-ref    "field V09._reference (fldOffset=0x0)" P-INDEP
    -;* V30 tmp30        [V30    ] (  0,  0   )     int  ->  zero-ref    "field V09._length (fldOffset=0x8)" P-INDEP
    -;  V31 tmp31        [V31,T01] (  2,  2   )   byref  ->  rdi         single-def "field V10._reference (fldOffset=0x0)" P-INDEP
    -;* V32 tmp32        [V32,T05] (  0,  0   )     int  ->  zero-ref    "field V10._length (fldOffset=0x8)" P-INDEP
    -;* V33 tmp33        [V33    ] (  0,  0   )   byref  ->  zero-ref    "field V13._reference (fldOffset=0x0)" P-INDEP
    -;* V34 tmp34        [V34    ] (  0,  0   )     int  ->  zero-ref    "field V13._length (fldOffset=0x8)" P-INDEP
    -;* V35 tmp35        [V35    ] (  0,  0   )   byref  ->  zero-ref    "field V14._reference (fldOffset=0x0)" P-INDEP
    -;* V36 tmp36        [V36    ] (  0,  0   )     int  ->  zero-ref    "field V14._length (fldOffset=0x8)" P-INDEP
    -;  V37 tmp37        [V37,T02] (  2,  2   )   byref  ->  rdi         single-def "field V15._reference (fldOffset=0x0)" P-INDEP
    -;* V38 tmp38        [V38,T06] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
    -;* V39 tmp39        [V39    ] (  0,  0   )   byref  ->  zero-ref    "field V18._reference (fldOffset=0x0)" P-INDEP
    -;* V40 tmp40        [V40    ] (  0,  0   )     int  ->  zero-ref    "field V18._length (fldOffset=0x8)" P-INDEP
    -;* V41 tmp41        [V41    ] (  0,  0   )   byref  ->  zero-ref    "field V19._reference (fldOffset=0x0)" P-INDEP
    -;* V42 tmp42        [V42    ] (  0,  0   )     int  ->  zero-ref    "field V19._length (fldOffset=0x8)" P-INDEP
    -;  V43 tmp43        [V43,T03] (  2,  2   )   byref  ->  rdi         single-def "field V20._reference (fldOffset=0x0)" P-INDEP
    -;* V44 tmp44        [V44,T07] (  0,  0   )     int  ->  zero-ref    "field V20._length (fldOffset=0x8)" P-INDEP
    -;* V45 tmp45        [V45    ] (  0,  0   )   byref  ->  zero-ref    "field V23._reference (fldOffset=0x0)" P-INDEP
    -;* V46 tmp46        [V46    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x8)" P-INDEP
    -;* V47 tmp47        [V47    ] (  0,  0   )   byref  ->  zero-ref    "field V24._reference (fldOffset=0x0)" P-INDEP
    -;* V48 tmp48        [V48    ] (  0,  0   )     int  ->  zero-ref    "field V24._length (fldOffset=0x8)" P-INDEP
    -;  V49 tmp49        [V49,T04] (  2,  2   )   byref  ->  rdi         single-def "field V25._reference (fldOffset=0x0)" P-INDEP
    -;* V50 tmp50        [V50,T08] (  0,  0   )     int  ->  zero-ref    "field V25._length (fldOffset=0x8)" P-INDEP
    +;* V27 tmp27        [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
    +;* V28 tmp28        [V28    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
    +;* V29 tmp29        [V29    ] (  0,  0   )   byref  ->  zero-ref    "field V08._reference (fldOffset=0x0)" P-INDEP
    +;* V30 tmp30        [V30    ] (  0,  0   )     int  ->  zero-ref    "field V08._length (fldOffset=0x8)" P-INDEP
    +;* V31 tmp31        [V31    ] (  0,  0   )   byref  ->  zero-ref    "field V09._reference (fldOffset=0x0)" P-INDEP
    +;* V32 tmp32        [V32    ] (  0,  0   )     int  ->  zero-ref    "field V09._length (fldOffset=0x8)" P-INDEP
    +;  V33 tmp33        [V33,T02] (  2,  2   )   byref  ->  rdi         single-def "field V10._reference (fldOffset=0x0)" P-INDEP
    +;* V34 tmp34        [V34,T06] (  0,  0   )     int  ->  zero-ref    "field V10._length (fldOffset=0x8)" P-INDEP
    +;* V35 tmp35        [V35    ] (  0,  0   )   byref  ->  zero-ref    "field V13._reference (fldOffset=0x0)" P-INDEP
    +;* V36 tmp36        [V36    ] (  0,  0   )     int  ->  zero-ref    "field V13._length (fldOffset=0x8)" P-INDEP
    +;* V37 tmp37        [V37    ] (  0,  0   )   byref  ->  zero-ref    "field V14._reference (fldOffset=0x0)" P-INDEP
    +;* V38 tmp38        [V38    ] (  0,  0   )     int  ->  zero-ref    "field V14._length (fldOffset=0x8)" P-INDEP
    +;  V39 tmp39        [V39,T03] (  2,  2   )   byref  ->  rdi         single-def "field V15._reference (fldOffset=0x0)" P-INDEP
    +;* V40 tmp40        [V40,T07] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
    +;* V41 tmp41        [V41    ] (  0,  0   )   byref  ->  zero-ref    "field V18._reference (fldOffset=0x0)" P-INDEP
    +;* V42 tmp42        [V42    ] (  0,  0   )     int  ->  zero-ref    "field V18._length (fldOffset=0x8)" P-INDEP
    +;* V43 tmp43        [V43    ] (  0,  0   )   byref  ->  zero-ref    "field V19._reference (fldOffset=0x0)" P-INDEP
    +;* V44 tmp44        [V44    ] (  0,  0   )     int  ->  zero-ref    "field V19._length (fldOffset=0x8)" P-INDEP
    +;  V45 tmp45        [V45,T04] (  2,  2   )   byref  ->  rdi         single-def "field V20._reference (fldOffset=0x0)" P-INDEP
    +;* V46 tmp46        [V46,T08] (  0,  0   )     int  ->  zero-ref    "field V20._length (fldOffset=0x8)" P-INDEP
    +;* V47 tmp47        [V47    ] (  0,  0   )   byref  ->  zero-ref    "field V23._reference (fldOffset=0x0)" P-INDEP
    +;* V48 tmp48        [V48    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x8)" P-INDEP
    +;* V49 tmp49        [V49    ] (  0,  0   )   byref  ->  zero-ref    "field V24._reference (fldOffset=0x0)" P-INDEP
    +;* V50 tmp50        [V50    ] (  0,  0   )     int  ->  zero-ref    "field V24._length (fldOffset=0x8)" P-INDEP
    +;  V51 tmp51        [V51,T05] (  2,  2   )   byref  ->  rdi         single-def "field V25._reference (fldOffset=0x0)" P-INDEP
    +;* V52 tmp52        [V52,T09] (  0,  0   )     int  ->  zero-ref    "field V25._length (fldOffset=0x8)" P-INDEP
    +;* V53 tmp53        [V53    ] (  0,  0   )     int  ->  zero-ref    "V06.[000..004)"
    +;* V54 tmp54        [V54    ] (  0,  0   )   short  ->  zero-ref    "V06.[004..006)"
    +;* V55 tmp55        [V55    ] (  0,  0   )   short  ->  zero-ref    "V06.[006..008)"
    +;* V56 tmp56        [V56    ] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
    +;* V57 tmp57        [V57    ] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
    +;* V58 tmp58        [V58    ] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
    +;* V59 tmp59        [V59    ] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
     ;
     ; Lcl frame size = 112
     
     G_M15881_IG01:
            push     rbp
            sub      rsp, 112
            lea      rbp, [rsp+0x70]
     						;; size=10 bbWeight=1 PerfScore 1.75
     G_M15881_IG02:
            vxorps   xmm0, xmm0, xmm0
            vmovdqu  xmmword ptr [rbp-0x28], xmm0
            vmovdqu  xmmword ptr [rbp-0x24], xmm0
            mov      byte  ptr [rbp-0x18], 1
            mov      rdi, 0xD1FFAB1E
            mov      esi, 38
            lea      rdx, [rbp-0x28]
            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-0x28]
            mov      rdi, 0xD1FFAB1E      ; data for System.ComponentModel.Design.StandardCommands+ShellGuids:VSStandardCommandSet97
            vmovups  xmmword ptr [rdi], xmm0
            vxorps   xmm0, xmm0, xmm0
            vmovdqu  xmmword ptr [rbp-0x40], xmm0
            vmovdqu  xmmword ptr [rbp-0x3C], xmm0
            mov      byte  ptr [rbp-0x30], 1
            mov      rdi, 0xD1FFAB1E
            mov      esi, 38
            lea      rdx, [rbp-0x40]
            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-0x40]
            mov      rdi, 0xD1FFAB1E      ; data for System.ComponentModel.Design.StandardCommands+ShellGuids:guidDsdCmdId
            vmovups  xmmword ptr [rdi], xmm0
            vxorps   xmm0, xmm0, xmm0
            vmovdqu  xmmword ptr [rbp-0x58], xmm0
            vmovdqu  xmmword ptr [rbp-0x54], xmm0
            mov      byte  ptr [rbp-0x48], 1
            mov      rdi, 0xD1FFAB1E
            mov      esi, 38
            lea      rdx, [rbp-0x58]
            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-0x58]
            mov      rdi, 0xD1FFAB1E      ; data for System.ComponentModel.Design.StandardCommands+ShellGuids:SID_SOleComponentUIManager
            vmovups  xmmword ptr [rdi], xmm0
            vxorps   xmm0, xmm0, xmm0
            vmovdqu  xmmword ptr [rbp-0x70], xmm0
            vmovdqu  xmmword ptr [rbp-0x6C], xmm0
            mov      byte  ptr [rbp-0x60], 1
            mov      rdi, 0xD1FFAB1E
            mov      esi, 38
            lea      rdx, [rbp-0x70]
            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-0x70]
            mov      rdi, 0xD1FFAB1E      ; data for System.ComponentModel.Design.StandardCommands+ShellGuids:GUID_VSTASKCATEGORY_DATADESIGNER
            vmovups  xmmword ptr [rdi], xmm0
            mov      rdi, 0xD1FFAB1E      ; ubyte[]
            mov      esi, 8
            call     CORINFO_HELP_NEWARR_1_VC
    -       mov      rdi, 0xD1FFAB1E      ; const ptr
    -       mov      rdi, qword ptr [rdi]
    -       mov      qword ptr [rax+0x10], rdi
    -       vxorps   xmm0, xmm0, xmm0
    -       vmovups  xmmword ptr [rbp-0x10], xmm0
    -						;; size=318 bbWeight=1 PerfScore 57.42
    +       mov      rcx, 0xD1FFAB1E      ; const ptr
    +       mov      rcx, qword ptr [rcx]
    +       mov      qword ptr [rax+0x10], rcx
    +       mov      rax, qword ptr [rax+0x10]
    +       mov      qword ptr [rbp-0x08], rax
    +						;; size=317 bbWeight=1 PerfScore 59.08
     G_M15881_IG03:
    -       lea      rdi, [rbp-0x10]
    -       mov      r8, rax
    -       mov      esi, 0xD1FFAB1E
    -       mov      edx, -0x1D68
    -       mov      ecx, 0x11D0
    -       mov      rax, 0xD1FFAB1E      ; code for System.Guid:.ctor(int,short,short,ubyte[]):this
    -       call     [rax]System.Guid:.ctor(int,short,short,ubyte[]):this
    -       vmovups  xmm0, xmmword ptr [rbp-0x10]
    -       mov      rax, 0xD1FFAB1E      ; data for System.ComponentModel.Design.StandardCommands+ShellGuids:GUID_PropertyBrowserToolWindow
    -       vmovups  xmmword ptr [rax], xmm0
    -						;; size=53 bbWeight=1 PerfScore 10.00
    +       mov      rax, 0xD1FFAB1E      ; static handle
    +       mov      dword ptr [rax], 0xD1FFAB1E
    +       mov      rax, 0xD1FFAB1E
    +       mov      word  ptr [rax], -0x1D68
    +       mov      rax, 0xD1FFAB1E
    +       mov      word  ptr [rax], 0x11D0
    +       mov      rax, qword ptr [rbp-0x08]
    +       mov      rcx, 0xD1FFAB1E
    +       mov      qword ptr [rcx], rax
    +						;; size=63 bbWeight=1 PerfScore 6.00
     G_M15881_IG04:
            add      rsp, 112
            pop      rbp
            ret      
     						;; size=6 bbWeight=1 PerfScore 1.75
     
    -; Total bytes of code 387, prolog size 10, PerfScore 70.92, instruction count 72, allocated bytes for code 387 (MethodHash=20e0c1f6) for method System.ComponentModel.Design.StandardCommands+ShellGuids:.cctor() (FullOpts)
    +; Total bytes of code 396, prolog size 10, PerfScore 68.58, instruction count 71, allocated bytes for code 396 (MethodHash=20e0c1f6) for method System.ComponentModel.Design.StandardCommands+ShellGuids:.cctor() (FullOpts)
  2. MihuBot commented on Jul 22, 2024

    @MihuBot
    OwnerAuthor

    Top method improvements

    -63 (-21.80 % of base) - System.Guid:.ctor(int,short,short,ubyte[]):this
     ; Assembly listing for method System.Guid:.ctor(int,short,short,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; 0 inlinees without PGO data
     ; Final local variable assignments
     ;
    -;  V00 this         [V00,T00] ( 13, 13   )   byref  ->  rbx         this single-def
    +;  V00 this         [V00,T00] (  6,  6   )   byref  ->  rbx         this single-def
     ;  V01 arg1         [V01,T02] (  3,  3   )     int  ->  r14         single-def
     ;  V02 arg2         [V02,T03] (  3,  3   )   short  ->  r13         single-def
     ;  V03 arg3         [V03,T04] (  3,  3   )   short  ->  r12         single-def
    -;  V04 arg4         [V04,T01] ( 12, 12   )     ref  ->  r15         class-hnd single-def <ubyte[]>
    +;  V04 arg4         [V04,T01] (  5,  5   )     ref  ->  r15         class-hnd single-def <ubyte[]>
     ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
    -;  V06 tmp1         [V06,T06] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
    -;  V07 tmp2         [V07,T07] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
    -;  V08 tmp3         [V08,T08] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
    -;  V09 tmp4         [V09,T09] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
    -;  V10 tmp5         [V10,T10] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
    -;  V11 cse0         [V11,T05] (  2,  2   )     int  ->  rdi         "CSE #01: aggressive"
    +;  V06 tmp1         [V06,T05] (  2,  4   )   byref  ->  rbx         single-def "impAppendStmt"
    +;  V07 tmp2         [V07,T06] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
    +;* V08 tmp3         [V08    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
    +;  V09 tmp4         [V09,T07] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
    +;  V10 tmp5         [V10,T08] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
    +;  V11 tmp6         [V11,T09] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
    +;  V12 tmp7         [V12,T10] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
     ;
     ; Lcl frame size = 8
     
     G_M58059_IG01:
            push     rbp
            push     r15
            push     r14
            push     r13
            push     r12
            push     rbx
            push     rax
            lea      rbp, [rsp+0x30]
            mov      rbx, rdi
            mov      r14d, esi
            mov      r13d, edx
            mov      r12d, ecx
            mov      r15, r8
     						;; size=31 bbWeight=1 PerfScore 8.75
     G_M58059_IG02:
            mov      rdi, r15
            mov      rsi, 0xD1FFAB1E      ; 'd'
            mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
            call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
    -       mov      edi, dword ptr [r15+0x08]
    -       cmp      edi, 8
    +       cmp      dword ptr [r15+0x08], 8
            jne      SHORT G_M58059_IG04
            mov      dword ptr [rbx], r14d
            mov      word  ptr [rbx+0x04], r13w
            mov      word  ptr [rbx+0x06], r12w
    -       movzx    rdi, byte  ptr [r15+0x17]
    -       mov      byte  ptr [rbx+0x0F], dil
    -       movzx    rdi, byte  ptr [r15+0x10]
    -       mov      byte  ptr [rbx+0x08], dil
    -       movzx    rdi, byte  ptr [r15+0x11]
    -       mov      byte  ptr [rbx+0x09], dil
    -       movzx    rdi, byte  ptr [r15+0x12]
    -       mov      byte  ptr [rbx+0x0A], dil
    -       movzx    rdi, byte  ptr [r15+0x13]
    -       mov      byte  ptr [rbx+0x0B], dil
    -       movzx    rdi, byte  ptr [r15+0x14]
    -       mov      byte  ptr [rbx+0x0C], dil
    -       movzx    rdi, byte  ptr [r15+0x15]
    -       mov      byte  ptr [rbx+0x0D], dil
    -       movzx    rdi, byte  ptr [r15+0x16]
    -       mov      byte  ptr [rbx+0x0E], dil
    -						;; size=119 bbWeight=1 PerfScore 34.00
    +       add      rbx, 8
    +       mov      rdi, qword ptr [r15+0x10]
    +       mov      qword ptr [rbx], rdi
    +						;; size=56 bbWeight=1 PerfScore 14.00
     G_M58059_IG03:
            add      rsp, 8
            pop      rbx
            pop      r12
            pop      r13
            pop      r14
            pop      r15
            pop      rbp
            ret      
     						;; size=15 bbWeight=1 PerfScore 4.25
     G_M58059_IG04:
            mov      rdi, 0xD1FFAB1E      ; System.ArgumentException
            call     CORINFO_HELP_NEWSFAST
            mov      rbx, rax
            mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Arg_GuidArrayCtor():System.String
            call     [rax]System.SR:get_Arg_GuidArrayCtor():System.String
            mov      r15, rax
            mov      edi, 0x187D
            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      r15, rax
            mov      edi, 0x13D7
            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=124 bbWeight=0 PerfScore 0.00
     
    -; Total bytes of code 289, prolog size 16, PerfScore 47.00, instruction count 72, allocated bytes for code 289 (MethodHash=458f1d34) for method System.Guid:.ctor(int,short,short,ubyte[]):this (FullOpts)
    +; Total bytes of code 226, prolog size 16, PerfScore 27.00, instruction count 58, allocated bytes for code 226 (MethodHash=458f1d34) for method System.Guid:.ctor(int,short,short,ubyte[]):this (FullOpts)
  3. MihuBot commented on Jul 22, 2024

    @MihuBot
    OwnerAuthor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions