MihuBot / runtime-utils

0 stars 0 forks source link

[JitDiff X64] [EgorBo] Mark some structs as byreflike #525

Open MihuBot opened 1 month ago

MihuBot commented 1 month ago

Job completed in 14 minutes. https://github.com/dotnet/runtime/pull/104870

Diffs

Found 263 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 39113879
Total bytes of diff: 39113648
Total bytes of delta: -231 (-0.00 % of base)
Total relative delta: -3.87
    diff is an improvement.
    relative diff is an improvement.

Top file improvements (bytes):
        -216 : System.Private.CoreLib.dasm (-0.00 % of base)
         -15 : System.Text.RegularExpressions.dasm (-0.00 % of base)

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

Top method improvements (bytes):
         -41 (-77.36 % of base) : System.Private.CoreLib.dasm - System.Array+SorterGenericArray:.ctor(System.Array,System.Array,System.Collections.IComparer):this (FullOpts)
         -41 (-77.36 % of base) : System.Private.CoreLib.dasm - System.Array+SorterObjectArray:.ctor(System.Object[],System.Object[],System.Collections.IComparer):this (FullOpts)
         -10 (-35.71 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue:.ctor(System.Object):this (FullOpts)
          -8 (-5.52 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_2[System.__Canon]:<GetPropertyGetter>b__2(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.52 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_3[System.__Canon]:<GetPropertyGetter>b__3(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.52 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_4[System.__Canon]:<GetPropertyGetter>b__4(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.48 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_5[System.__Canon]:<GetPropertyGetter>b__5(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.48 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_6[System.__Canon]:<GetPropertyGetter>b__6(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.48 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_7[System.__Canon]:<GetPropertyGetter>b__7(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.52 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_8[System.__Canon]:<GetPropertyGetter>b__8(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.52 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_9[System.__Canon]:<GetPropertyGetter>b__9(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.58 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_0(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.58 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_1(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.48 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_12(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.58 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_2(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.55 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_3(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.55 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_4(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.55 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_5(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.62 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_6(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.62 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_7(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.14 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_14[System.__Canon]:<GetPropertyGetter>b__14(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -3 (-21.43 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+CurrentState[double]:.ctor(System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NfaMatchingState[double]):this (FullOpts)
          -3 (-21.43 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+CurrentState[int]:.ctor(System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NfaMatchingState[int]):this (FullOpts)
          -3 (-21.43 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+CurrentState[long]:.ctor(System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NfaMatchingState[long]):this (FullOpts)
          -3 (-21.43 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+CurrentState[short]:.ctor(System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NfaMatchingState[short]):this (FullOpts)
          -3 (-21.43 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+CurrentState[ubyte]:.ctor(System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NfaMatchingState[ubyte]):this (FullOpts)

Top method improvements (percentages):
         -41 (-77.36 % of base) : System.Private.CoreLib.dasm - System.Array+SorterGenericArray:.ctor(System.Array,System.Array,System.Collections.IComparer):this (FullOpts)
         -41 (-77.36 % of base) : System.Private.CoreLib.dasm - System.Array+SorterObjectArray:.ctor(System.Object[],System.Object[],System.Collections.IComparer):this (FullOpts)
         -10 (-35.71 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue:.ctor(System.Object):this (FullOpts)
          -3 (-21.43 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+CurrentState[double]:.ctor(System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NfaMatchingState[double]):this (FullOpts)
          -3 (-21.43 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+CurrentState[int]:.ctor(System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NfaMatchingState[int]):this (FullOpts)
          -3 (-21.43 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+CurrentState[long]:.ctor(System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NfaMatchingState[long]):this (FullOpts)
          -3 (-21.43 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+CurrentState[short]:.ctor(System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NfaMatchingState[short]):this (FullOpts)
          -3 (-21.43 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+CurrentState[ubyte]:.ctor(System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NfaMatchingState[ubyte]):this (FullOpts)
          -8 (-5.52 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_2[System.__Canon]:<GetPropertyGetter>b__2(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.52 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_3[System.__Canon]:<GetPropertyGetter>b__3(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.52 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_4[System.__Canon]:<GetPropertyGetter>b__4(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.52 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_8[System.__Canon]:<GetPropertyGetter>b__8(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.52 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_9[System.__Canon]:<GetPropertyGetter>b__9(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.48 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_5[System.__Canon]:<GetPropertyGetter>b__5(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.48 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_6[System.__Canon]:<GetPropertyGetter>b__6(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -8 (-5.48 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_7[System.__Canon]:<GetPropertyGetter>b__7(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.62 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_6(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.62 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_7(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.58 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_0(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.58 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_1(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.58 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_2(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.55 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_3(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.55 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_4(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.55 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_5(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.48 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>b__25_12(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)
          -6 (-4.14 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_14[System.__Canon]:<GetPropertyGetter>b__14(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts)

26 total methods with Code Size differences (26 improved, 0 regressed), 230452 unchanged.

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

Artifacts:

MihuBot commented 1 month ago

Top method improvements

-41 (-77.36 % of base) - System.Array+SorterGenericArray:.ctor(System.Array,System.Array,System.Collections.IComparer):this ```diff ; Assembly listing for method System.Array+SorterGenericArray:.ctor(System.Array,System.Array,System.Collections.IComparer):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rsp based frame ; partially interruptible ; No PGO data ; Final local variable assignments ; -; V00 this [V00,T00] ( 5, 5 ) byref -> rbx this single-def +; V00 this [V00,T00] ( 5, 5 ) byref -> rdi this single-def ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def -; V02 arg2 [V02,T02] ( 3, 3 ) ref -> r15 class-hnd single-def -; V03 arg3 [V03,T03] ( 3, 3 ) ref -> r14 class-hnd single-def +; V02 arg2 [V02,T02] ( 3, 3 ) ref -> rdx class-hnd single-def +; V03 arg3 [V03,T03] ( 3, 3 ) ref -> rcx class-hnd single-def ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M26553_IG01: - push r15 - push r14 - push rbx - mov rbx, rdi - mov r15, rdx - mov r14, rcx - ;; size=14 bbWeight=1 PerfScore 3.75 + ;; size=0 bbWeight=1 PerfScore 0.00 G_M26553_IG02: - mov rdi, rbx - call CORINFO_HELP_CHECKED_ASSIGN_REF - lea rdi, bword ptr [rbx+0x08] - mov rsi, r15 - call CORINFO_HELP_CHECKED_ASSIGN_REF - lea rdi, bword ptr [rbx+0x10] - mov rsi, r14 - call CORINFO_HELP_CHECKED_ASSIGN_REF - nop - ;; size=33 bbWeight=1 PerfScore 5.00 + mov gword ptr [rdi], rsi + mov gword ptr [rdi+0x08], rdx + mov gword ptr [rdi+0x10], rcx + ;; size=11 bbWeight=1 PerfScore 3.00 G_M26553_IG03: - pop rbx - pop r14 - pop r15 ret - ;; size=6 bbWeight=1 PerfScore 2.50 + ;; size=1 bbWeight=1 PerfScore 1.00 -; Total bytes of code 53, prolog size 5, PerfScore 11.25, instruction count 19, allocated bytes for code 53 (MethodHash=6b259846) for method System.Array+SorterGenericArray:.ctor(System.Array,System.Array,System.Collections.IComparer):this (FullOpts) +; Total bytes of code 12, prolog size 0, PerfScore 4.00, instruction count 4, allocated bytes for code 12 (MethodHash=6b259846) for method System.Array+SorterGenericArray:.ctor(System.Array,System.Array,System.Collections.IComparer):this (FullOpts) ```
-41 (-77.36 % of base) - System.Array+SorterObjectArray:.ctor(System.Object[],System.Object[],System.Collections.IComparer):this ```diff ; Assembly listing for method System.Array+SorterObjectArray:.ctor(System.Object[],System.Object[],System.Collections.IComparer):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rsp based frame ; partially interruptible ; No PGO data ; Final local variable assignments ; -; V00 this [V00,T00] ( 5, 5 ) byref -> rbx this single-def +; V00 this [V00,T00] ( 5, 5 ) byref -> rdi this single-def ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def -; V02 arg2 [V02,T02] ( 3, 3 ) ref -> r15 class-hnd single-def -; V03 arg3 [V03,T03] ( 3, 3 ) ref -> r14 class-hnd single-def +; V02 arg2 [V02,T02] ( 3, 3 ) ref -> rdx class-hnd single-def +; V03 arg3 [V03,T03] ( 3, 3 ) ref -> rcx class-hnd single-def ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M55325_IG01: - push r15 - push r14 - push rbx - mov rbx, rdi - mov r15, rdx - mov r14, rcx - ;; size=14 bbWeight=1 PerfScore 3.75 + ;; size=0 bbWeight=1 PerfScore 0.00 G_M55325_IG02: - mov rdi, rbx - call CORINFO_HELP_CHECKED_ASSIGN_REF - lea rdi, bword ptr [rbx+0x08] - mov rsi, r15 - call CORINFO_HELP_CHECKED_ASSIGN_REF - lea rdi, bword ptr [rbx+0x10] - mov rsi, r14 - call CORINFO_HELP_CHECKED_ASSIGN_REF - nop - ;; size=33 bbWeight=1 PerfScore 5.00 + mov gword ptr [rdi], rsi + mov gword ptr [rdi+0x08], rdx + mov gword ptr [rdi+0x10], rcx + ;; size=11 bbWeight=1 PerfScore 3.00 G_M55325_IG03: - pop rbx - pop r14 - pop r15 ret - ;; size=6 bbWeight=1 PerfScore 2.50 + ;; size=1 bbWeight=1 PerfScore 1.00 -; Total bytes of code 53, prolog size 5, PerfScore 11.25, instruction count 19, allocated bytes for code 53 (MethodHash=115e27e2) for method System.Array+SorterObjectArray:.ctor(System.Object[],System.Object[],System.Collections.IComparer):this (FullOpts) +; Total bytes of code 12, prolog size 0, PerfScore 4.00, instruction count 4, allocated bytes for code 12 (MethodHash=115e27e2) for method System.Array+SorterObjectArray:.ctor(System.Object[],System.Object[],System.Collections.IComparer):this (FullOpts) ```
-10 (-35.71 % of base) - System.Diagnostics.Tracing.PropertyValue:.ctor(System.Object):this ```diff ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue:.ctor(System.Object):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rsp based frame ; partially interruptible ; No PGO data ; Final local variable assignments ; -; V00 this [V00,T00] ( 5, 5 ) byref -> rbx this single-def +; V00 this [V00,T00] ( 5, 5 ) byref -> rdi this single-def ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M33264_IG01: - push rbx - mov rbx, rdi - ;; size=4 bbWeight=1 PerfScore 1.25 + ;; size=0 bbWeight=1 PerfScore 0.00 G_M33264_IG02: - mov rdi, rbx - call CORINFO_HELP_CHECKED_ASSIGN_REF + mov gword ptr [rdi], rsi vxorps xmm0, xmm0, xmm0 - vmovdqu xmmword ptr [rbx+0x10], xmm0 + vmovdqu xmmword ptr [rdi+0x10], xmm0 xor eax, eax - mov dword ptr [rbx+0x08], eax - ;; size=22 bbWeight=1 PerfScore 4.83 + mov dword ptr [rdi+0x08], eax + ;; size=17 bbWeight=1 PerfScore 4.58 G_M33264_IG03: - pop rbx ret - ;; size=2 bbWeight=1 PerfScore 1.50 + ;; size=1 bbWeight=1 PerfScore 1.00 -; Total bytes of code 28, prolog size 1, PerfScore 7.58, instruction count 10, allocated bytes for code 28 (MethodHash=421d7e0f) for method System.Diagnostics.Tracing.PropertyValue:.ctor(System.Object):this (FullOpts) +; Total bytes of code 18, prolog size 0, PerfScore 5.58, instruction count 6, allocated bytes for code 18 (MethodHash=421d7e0f) for method System.Diagnostics.Tracing.PropertyValue:.ctor(System.Object):this (FullOpts) ```
-8 (-5.52 % of base) - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_2[System.__Canon]:b__2(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this ```diff ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_2[System.__Canon]:b__2(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue: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; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 4 ) ref -> r15 this class-hnd single-def c__DisplayClass1_2[System.__Canon]> ; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> rbx single-def ; V02 arg1 [V02,T10] ( 1, 1 ) struct (32) [rbp+0x10] do-not-enreg[SF] ld-addr-op single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" ; V05 tmp2 [V05,T06] ( 2, 4 ) struct (32) [rbp-0x40] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" -; V07 tmp4 [V07,T07] ( 2, 4 ) ubyte -> rdx "Inlining Arg" +; V07 tmp4 [V07,T07] ( 2, 4 ) ubyte -> rax "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[000..008)" ;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "V05.[008..012)" ;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "V05.[016..017)" ;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "V06.[000..001)" ;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "V08.[000..001)" ; V14 tmp11 [V14,T05] ( 2, 4 ) ref -> rsi single-def "argument with side effect" ; V15 tmp12 [V15,T03] ( 3, 6 ) ref -> r14 single-def "argument with side effect" ; V16 rat0 [V16,T08] ( 2, 3 ) long -> rdi "Spilling to split statement for tree" ; V17 rat1 [V17,T04] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree" ; V18 rat2 [V18,T01] ( 5, 7.50) ref -> rax "replacement local" ; V19 rat3 [V19,T09] ( 3, 2.50) long -> rdi "CSE for expectedClsNode" ; ; Lcl frame size = 40 G_M22027_IG01: push rbp push r15 push r14 push rbx sub rsp, 40 lea rbp, [rsp+0x40] vxorps xmm8, xmm8, xmm8 vmovdqu ymmword ptr [rbp-0x40], ymm8 mov qword ptr [rbp-0x20], rdi mov r15, rdi mov rbx, rsi ;; size=35 bbWeight=1 PerfScore 8.58 G_M22027_IG02: mov r14, gword ptr [r15+0x08] mov rdi, qword ptr [r15] mov rdi, qword ptr [rdi+0x30] mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi] mov rsi, gword ptr [rbp+0x10] mov rax, rsi test rax, rax je SHORT G_M22027_IG05 ;; size=29 bbWeight=1 PerfScore 12.50 G_M22027_IG03: cmp qword ptr [rax], rdi je SHORT G_M22027_IG05 ;; size=5 bbWeight=0.50 PerfScore 2.00 G_M22027_IG04: mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTANY call [rax]CORINFO_HELP_CHKCASTANY ;; size=12 bbWeight=0.25 PerfScore 0.81 G_M22027_IG05: mov rsi, rax mov rdi, gword ptr [r14+0x08] call [r14+0x18]System.Func`2[System.__Canon,ubyte]:Invoke(System.__Canon):ubyte:this - mov edx, eax vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [rbp-0x30], xmm0 - mov rdi, rbx - lea rsi, bword ptr [rbp-0x40] - call CORINFO_HELP_ASSIGN_BYREF - movsq - movsq - movsq + ;; size=20 bbWeight=1 PerfScore 6.58 +G_M22027_IG06: + vmovdqu ymm0, ymmword ptr [rbp-0x40] + vmovdqu ymmword ptr [rbx], ymm0 + ;; size=9 bbWeight=1 PerfScore 6.00 +G_M22027_IG07: mov dword ptr [rbx+0x08], 1 - mov byte ptr [rbx+0x10], dl + mov byte ptr [rbx+0x10], al mov rax, rbx - ;; size=53 bbWeight=1 PerfScore 13.83 -G_M22027_IG06: + ;; size=13 bbWeight=1 PerfScore 2.25 +G_M22027_IG08: + vzeroupper add rsp, 40 pop rbx pop r14 pop r15 pop rbp ret - ;; size=11 bbWeight=1 PerfScore 3.25 + ;; size=14 bbWeight=1 PerfScore 4.25 -; Total bytes of code 145, prolog size 29, PerfScore 40.98, instruction count 45, allocated bytes for code 145 (MethodHash=1b2ba9f4) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_2[System.__Canon]:b__2(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) +; Total bytes of code 137, prolog size 29, PerfScore 42.98, instruction count 41, allocated bytes for code 137 (MethodHash=1b2ba9f4) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_2[System.__Canon]:b__2(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) ```
-8 (-5.52 % of base) - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_3[System.__Canon]:b__3(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this ```diff ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_3[System.__Canon]:b__3(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue: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; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 4 ) ref -> r15 this class-hnd single-def c__DisplayClass1_3[System.__Canon]> ; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> rbx single-def ; V02 arg1 [V02,T10] ( 1, 1 ) struct (32) [rbp+0x10] do-not-enreg[SF] ld-addr-op single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" ; V05 tmp2 [V05,T06] ( 2, 4 ) struct (32) [rbp-0x40] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" -; V07 tmp4 [V07,T07] ( 2, 4 ) ubyte -> rdx "Inlining Arg" +; V07 tmp4 [V07,T07] ( 2, 4 ) ubyte -> rax "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[000..008)" ;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "V05.[008..012)" ;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "V05.[016..017)" ;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "V06.[000..001)" ;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "V08.[000..001)" ; V14 tmp11 [V14,T05] ( 2, 4 ) ref -> rsi single-def "argument with side effect" ; V15 tmp12 [V15,T03] ( 3, 6 ) ref -> r14 single-def "argument with side effect" ; V16 rat0 [V16,T08] ( 2, 3 ) long -> rdi "Spilling to split statement for tree" ; V17 rat1 [V17,T04] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree" ; V18 rat2 [V18,T01] ( 5, 7.50) ref -> rax "replacement local" ; V19 rat3 [V19,T09] ( 3, 2.50) long -> rdi "CSE for expectedClsNode" ; ; Lcl frame size = 40 G_M55051_IG01: push rbp push r15 push r14 push rbx sub rsp, 40 lea rbp, [rsp+0x40] vxorps xmm8, xmm8, xmm8 vmovdqu ymmword ptr [rbp-0x40], ymm8 mov qword ptr [rbp-0x20], rdi mov r15, rdi mov rbx, rsi ;; size=35 bbWeight=1 PerfScore 8.58 G_M55051_IG02: mov r14, gword ptr [r15+0x08] mov rdi, qword ptr [r15] mov rdi, qword ptr [rdi+0x30] mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi] mov rsi, gword ptr [rbp+0x10] mov rax, rsi test rax, rax je SHORT G_M55051_IG05 ;; size=29 bbWeight=1 PerfScore 12.50 G_M55051_IG03: cmp qword ptr [rax], rdi je SHORT G_M55051_IG05 ;; size=5 bbWeight=0.50 PerfScore 2.00 G_M55051_IG04: mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTANY call [rax]CORINFO_HELP_CHKCASTANY ;; size=12 bbWeight=0.25 PerfScore 0.81 G_M55051_IG05: mov rsi, rax mov rdi, gword ptr [r14+0x08] call [r14+0x18]System.Func`2[System.__Canon,ubyte]:Invoke(System.__Canon):ubyte:this - mov edx, eax vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [rbp-0x30], xmm0 - mov rdi, rbx - lea rsi, bword ptr [rbp-0x40] - call CORINFO_HELP_ASSIGN_BYREF - movsq - movsq - movsq + ;; size=20 bbWeight=1 PerfScore 6.58 +G_M55051_IG06: + vmovdqu ymm0, ymmword ptr [rbp-0x40] + vmovdqu ymmword ptr [rbx], ymm0 + ;; size=9 bbWeight=1 PerfScore 6.00 +G_M55051_IG07: mov dword ptr [rbx+0x08], 1 - mov byte ptr [rbx+0x10], dl + mov byte ptr [rbx+0x10], al mov rax, rbx - ;; size=53 bbWeight=1 PerfScore 13.83 -G_M55051_IG06: + ;; size=13 bbWeight=1 PerfScore 2.25 +G_M55051_IG08: + vzeroupper add rsp, 40 pop rbx pop r14 pop r15 pop rbp ret - ;; size=11 bbWeight=1 PerfScore 3.25 + ;; size=14 bbWeight=1 PerfScore 4.25 -; Total bytes of code 145, prolog size 29, PerfScore 40.98, instruction count 45, allocated bytes for code 145 (MethodHash=d5e128f4) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_3[System.__Canon]:b__3(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) +; Total bytes of code 137, prolog size 29, PerfScore 42.98, instruction count 41, allocated bytes for code 137 (MethodHash=d5e128f4) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_3[System.__Canon]:b__3(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) ```
-8 (-5.52 % of base) - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_4[System.__Canon]:b__4(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this ```diff ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_4[System.__Canon]:b__4(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue: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; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 4 ) ref -> r15 this class-hnd single-def c__DisplayClass1_4[System.__Canon]> ; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> rbx single-def ; V02 arg1 [V02,T10] ( 1, 1 ) struct (32) [rbp+0x10] do-not-enreg[SF] ld-addr-op single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" ; V05 tmp2 [V05,T06] ( 2, 4 ) struct (32) [rbp-0x40] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" -; V07 tmp4 [V07,T07] ( 2, 4 ) byte -> rdx "Inlining Arg" +; V07 tmp4 [V07,T07] ( 2, 4 ) byte -> rax "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[000..008)" ;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "V05.[008..012)" ;* V11 tmp8 [V11 ] ( 0, 0 ) byte -> zero-ref "V05.[016..017)" ;* V12 tmp9 [V12 ] ( 0, 0 ) byte -> zero-ref "V06.[000..001)" ;* V13 tmp10 [V13 ] ( 0, 0 ) byte -> zero-ref "V08.[000..001)" ; V14 tmp11 [V14,T05] ( 2, 4 ) ref -> rsi single-def "argument with side effect" ; V15 tmp12 [V15,T03] ( 3, 6 ) ref -> r14 single-def "argument with side effect" ; V16 rat0 [V16,T08] ( 2, 3 ) long -> rdi "Spilling to split statement for tree" ; V17 rat1 [V17,T04] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree" ; V18 rat2 [V18,T01] ( 5, 7.50) ref -> rax "replacement local" ; V19 rat3 [V19,T09] ( 3, 2.50) long -> rdi "CSE for expectedClsNode" ; ; Lcl frame size = 40 G_M44171_IG01: push rbp push r15 push r14 push rbx sub rsp, 40 lea rbp, [rsp+0x40] vxorps xmm8, xmm8, xmm8 vmovdqu ymmword ptr [rbp-0x40], ymm8 mov qword ptr [rbp-0x20], rdi mov r15, rdi mov rbx, rsi ;; size=35 bbWeight=1 PerfScore 8.58 G_M44171_IG02: mov r14, gword ptr [r15+0x08] mov rdi, qword ptr [r15] mov rdi, qword ptr [rdi+0x30] mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi] mov rsi, gword ptr [rbp+0x10] mov rax, rsi test rax, rax je SHORT G_M44171_IG05 ;; size=29 bbWeight=1 PerfScore 12.50 G_M44171_IG03: cmp qword ptr [rax], rdi je SHORT G_M44171_IG05 ;; size=5 bbWeight=0.50 PerfScore 2.00 G_M44171_IG04: mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTANY call [rax]CORINFO_HELP_CHKCASTANY ;; size=12 bbWeight=0.25 PerfScore 0.81 G_M44171_IG05: mov rsi, rax mov rdi, gword ptr [r14+0x08] call [r14+0x18]System.Func`2[System.__Canon,byte]:Invoke(System.__Canon):byte:this - mov edx, eax vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [rbp-0x30], xmm0 - mov rdi, rbx - lea rsi, bword ptr [rbp-0x40] - call CORINFO_HELP_ASSIGN_BYREF - movsq - movsq - movsq + ;; size=20 bbWeight=1 PerfScore 6.58 +G_M44171_IG06: + vmovdqu ymm0, ymmword ptr [rbp-0x40] + vmovdqu ymmword ptr [rbx], ymm0 + ;; size=9 bbWeight=1 PerfScore 6.00 +G_M44171_IG07: mov dword ptr [rbx+0x08], 1 - mov byte ptr [rbx+0x10], dl + mov byte ptr [rbx+0x10], al mov rax, rbx - ;; size=53 bbWeight=1 PerfScore 13.83 -G_M44171_IG06: + ;; size=13 bbWeight=1 PerfScore 2.25 +G_M44171_IG08: + vzeroupper add rsp, 40 pop rbx pop r14 pop r15 pop rbp ret - ;; size=11 bbWeight=1 PerfScore 3.25 + ;; size=14 bbWeight=1 PerfScore 4.25 -; Total bytes of code 145, prolog size 29, PerfScore 40.98, instruction count 45, allocated bytes for code 145 (MethodHash=2fca5374) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_4[System.__Canon]:b__4(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) +; Total bytes of code 137, prolog size 29, PerfScore 42.98, instruction count 41, allocated bytes for code 137 (MethodHash=2fca5374) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_4[System.__Canon]:b__4(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) ```
-8 (-5.48 % of base) - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_5[System.__Canon]:b__5(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this ```diff ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_5[System.__Canon]:b__5(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue: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; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 4 ) ref -> r15 this class-hnd single-def c__DisplayClass1_5[System.__Canon]> ; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> rbx single-def ; V02 arg1 [V02,T10] ( 1, 1 ) struct (32) [rbp+0x10] do-not-enreg[SF] ld-addr-op single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" ; V05 tmp2 [V05,T06] ( 2, 4 ) struct (32) [rbp-0x40] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" -; V07 tmp4 [V07,T07] ( 2, 4 ) ushort -> rdx "Inlining Arg" +; V07 tmp4 [V07,T07] ( 2, 4 ) ushort -> rax "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[000..008)" ;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "V05.[008..012)" ;* V11 tmp8 [V11 ] ( 0, 0 ) ushort -> zero-ref "V05.[016..018)" ;* V12 tmp9 [V12 ] ( 0, 0 ) ushort -> zero-ref "V06.[000..002)" ;* V13 tmp10 [V13 ] ( 0, 0 ) ushort -> zero-ref "V08.[000..002)" ; V14 tmp11 [V14,T05] ( 2, 4 ) ref -> rsi single-def "argument with side effect" ; V15 tmp12 [V15,T03] ( 3, 6 ) ref -> r14 single-def "argument with side effect" ; V16 rat0 [V16,T08] ( 2, 3 ) long -> rdi "Spilling to split statement for tree" ; V17 rat1 [V17,T04] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree" ; V18 rat2 [V18,T01] ( 5, 7.50) ref -> rax "replacement local" ; V19 rat3 [V19,T09] ( 3, 2.50) long -> rdi "CSE for expectedClsNode" ; ; Lcl frame size = 40 G_M43915_IG01: push rbp push r15 push r14 push rbx sub rsp, 40 lea rbp, [rsp+0x40] vxorps xmm8, xmm8, xmm8 vmovdqu ymmword ptr [rbp-0x40], ymm8 mov qword ptr [rbp-0x20], rdi mov r15, rdi mov rbx, rsi ;; size=35 bbWeight=1 PerfScore 8.58 G_M43915_IG02: mov r14, gword ptr [r15+0x08] mov rdi, qword ptr [r15] mov rdi, qword ptr [rdi+0x30] mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi] mov rsi, gword ptr [rbp+0x10] mov rax, rsi test rax, rax je SHORT G_M43915_IG05 ;; size=29 bbWeight=1 PerfScore 12.50 G_M43915_IG03: cmp qword ptr [rax], rdi je SHORT G_M43915_IG05 ;; size=5 bbWeight=0.50 PerfScore 2.00 G_M43915_IG04: mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTANY call [rax]CORINFO_HELP_CHKCASTANY ;; size=12 bbWeight=0.25 PerfScore 0.81 G_M43915_IG05: mov rsi, rax mov rdi, gword ptr [r14+0x08] call [r14+0x18]System.Func`2[System.__Canon,ushort]:Invoke(System.__Canon):ushort:this - mov edx, eax vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [rbp-0x30], xmm0 - mov rdi, rbx - lea rsi, bword ptr [rbp-0x40] - call CORINFO_HELP_ASSIGN_BYREF - movsq - movsq - movsq + ;; size=20 bbWeight=1 PerfScore 6.58 +G_M43915_IG06: + vmovdqu ymm0, ymmword ptr [rbp-0x40] + vmovdqu ymmword ptr [rbx], ymm0 + ;; size=9 bbWeight=1 PerfScore 6.00 +G_M43915_IG07: mov dword ptr [rbx+0x08], 2 - mov word ptr [rbx+0x10], dx + mov word ptr [rbx+0x10], ax mov rax, rbx - ;; size=54 bbWeight=1 PerfScore 13.83 -G_M43915_IG06: + ;; size=14 bbWeight=1 PerfScore 2.25 +G_M43915_IG08: + vzeroupper add rsp, 40 pop rbx pop r14 pop r15 pop rbp ret - ;; size=11 bbWeight=1 PerfScore 3.25 + ;; size=14 bbWeight=1 PerfScore 4.25 -; Total bytes of code 146, prolog size 29, PerfScore 40.98, instruction count 45, allocated bytes for code 146 (MethodHash=2b585474) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_5[System.__Canon]:b__5(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) +; Total bytes of code 138, prolog size 29, PerfScore 42.98, instruction count 41, allocated bytes for code 138 (MethodHash=2b585474) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_5[System.__Canon]:b__5(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) ```
-8 (-5.48 % of base) - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_6[System.__Canon]:b__6(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this ```diff ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_6[System.__Canon]:b__6(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue: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; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 4 ) ref -> r15 this class-hnd single-def c__DisplayClass1_6[System.__Canon]> ; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> rbx single-def ; V02 arg1 [V02,T10] ( 1, 1 ) struct (32) [rbp+0x10] do-not-enreg[SF] ld-addr-op single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" ; V05 tmp2 [V05,T06] ( 2, 4 ) struct (32) [rbp-0x40] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" -; V07 tmp4 [V07,T07] ( 2, 4 ) short -> rdx "Inlining Arg" +; V07 tmp4 [V07,T07] ( 2, 4 ) short -> rax "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[000..008)" ;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "V05.[008..012)" ;* V11 tmp8 [V11 ] ( 0, 0 ) short -> zero-ref "V05.[016..018)" ;* V12 tmp9 [V12 ] ( 0, 0 ) short -> zero-ref "V06.[000..002)" ;* V13 tmp10 [V13 ] ( 0, 0 ) short -> zero-ref "V08.[000..002)" ; V14 tmp11 [V14,T05] ( 2, 4 ) ref -> rsi single-def "argument with side effect" ; V15 tmp12 [V15,T03] ( 3, 6 ) ref -> r14 single-def "argument with side effect" ; V16 rat0 [V16,T08] ( 2, 3 ) long -> rdi "Spilling to split statement for tree" ; V17 rat1 [V17,T04] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree" ; V18 rat2 [V18,T01] ( 5, 7.50) ref -> rax "replacement local" ; V19 rat3 [V19,T09] ( 3, 2.50) long -> rdi "CSE for expectedClsNode" ; ; Lcl frame size = 40 G_M14859_IG01: push rbp push r15 push r14 push rbx sub rsp, 40 lea rbp, [rsp+0x40] vxorps xmm8, xmm8, xmm8 vmovdqu ymmword ptr [rbp-0x40], ymm8 mov qword ptr [rbp-0x20], rdi mov r15, rdi mov rbx, rsi ;; size=35 bbWeight=1 PerfScore 8.58 G_M14859_IG02: mov r14, gword ptr [r15+0x08] mov rdi, qword ptr [r15] mov rdi, qword ptr [rdi+0x30] mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi] mov rsi, gword ptr [rbp+0x10] mov rax, rsi test rax, rax je SHORT G_M14859_IG05 ;; size=29 bbWeight=1 PerfScore 12.50 G_M14859_IG03: cmp qword ptr [rax], rdi je SHORT G_M14859_IG05 ;; size=5 bbWeight=0.50 PerfScore 2.00 G_M14859_IG04: mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTANY call [rax]CORINFO_HELP_CHKCASTANY ;; size=12 bbWeight=0.25 PerfScore 0.81 G_M14859_IG05: mov rsi, rax mov rdi, gword ptr [r14+0x08] call [r14+0x18]System.Func`2[System.__Canon,short]:Invoke(System.__Canon):short:this - mov edx, eax vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [rbp-0x30], xmm0 - mov rdi, rbx - lea rsi, bword ptr [rbp-0x40] - call CORINFO_HELP_ASSIGN_BYREF - movsq - movsq - movsq + ;; size=20 bbWeight=1 PerfScore 6.58 +G_M14859_IG06: + vmovdqu ymm0, ymmword ptr [rbp-0x40] + vmovdqu ymmword ptr [rbx], ymm0 + ;; size=9 bbWeight=1 PerfScore 6.00 +G_M14859_IG07: mov dword ptr [rbx+0x08], 2 - mov word ptr [rbx+0x10], dx + mov word ptr [rbx+0x10], ax mov rax, rbx - ;; size=54 bbWeight=1 PerfScore 13.83 -G_M14859_IG06: + ;; size=14 bbWeight=1 PerfScore 2.25 +G_M14859_IG08: + vzeroupper add rsp, 40 pop rbx pop r14 pop r15 pop rbp ret - ;; size=11 bbWeight=1 PerfScore 3.25 + ;; size=14 bbWeight=1 PerfScore 4.25 -; Total bytes of code 146, prolog size 29, PerfScore 40.98, instruction count 45, allocated bytes for code 146 (MethodHash=3962c5f4) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_6[System.__Canon]:b__6(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) +; Total bytes of code 138, prolog size 29, PerfScore 42.98, instruction count 41, allocated bytes for code 138 (MethodHash=3962c5f4) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_6[System.__Canon]:b__6(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) ```
-8 (-5.48 % of base) - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_7[System.__Canon]:b__7(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this ```diff ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_7[System.__Canon]:b__7(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue: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; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 4 ) ref -> r15 this class-hnd single-def c__DisplayClass1_7[System.__Canon]> ; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> rbx single-def ; V02 arg1 [V02,T10] ( 1, 1 ) struct (32) [rbp+0x10] do-not-enreg[SF] ld-addr-op single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" ; V05 tmp2 [V05,T06] ( 2, 4 ) struct (32) [rbp-0x40] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" -; V07 tmp4 [V07,T07] ( 2, 4 ) ushort -> rdx "Inlining Arg" +; V07 tmp4 [V07,T07] ( 2, 4 ) ushort -> rax "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[000..008)" ;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "V05.[008..012)" ;* V11 tmp8 [V11 ] ( 0, 0 ) ushort -> zero-ref "V05.[016..018)" ;* V12 tmp9 [V12 ] ( 0, 0 ) ushort -> zero-ref "V06.[000..002)" ;* V13 tmp10 [V13 ] ( 0, 0 ) ushort -> zero-ref "V08.[000..002)" ; V14 tmp11 [V14,T05] ( 2, 4 ) ref -> rsi single-def "argument with side effect" ; V15 tmp12 [V15,T03] ( 3, 6 ) ref -> r14 single-def "argument with side effect" ; V16 rat0 [V16,T08] ( 2, 3 ) long -> rdi "Spilling to split statement for tree" ; V17 rat1 [V17,T04] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree" ; V18 rat2 [V18,T01] ( 5, 7.50) ref -> rax "replacement local" ; V19 rat3 [V19,T09] ( 3, 2.50) long -> rdi "CSE for expectedClsNode" ; ; Lcl frame size = 40 G_M47883_IG01: push rbp push r15 push r14 push rbx sub rsp, 40 lea rbp, [rsp+0x40] vxorps xmm8, xmm8, xmm8 vmovdqu ymmword ptr [rbp-0x40], ymm8 mov qword ptr [rbp-0x20], rdi mov r15, rdi mov rbx, rsi ;; size=35 bbWeight=1 PerfScore 8.58 G_M47883_IG02: mov r14, gword ptr [r15+0x08] mov rdi, qword ptr [r15] mov rdi, qword ptr [rdi+0x30] mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi] mov rsi, gword ptr [rbp+0x10] mov rax, rsi test rax, rax je SHORT G_M47883_IG05 ;; size=29 bbWeight=1 PerfScore 12.50 G_M47883_IG03: cmp qword ptr [rax], rdi je SHORT G_M47883_IG05 ;; size=5 bbWeight=0.50 PerfScore 2.00 G_M47883_IG04: mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTANY call [rax]CORINFO_HELP_CHKCASTANY ;; size=12 bbWeight=0.25 PerfScore 0.81 G_M47883_IG05: mov rsi, rax mov rdi, gword ptr [r14+0x08] call [r14+0x18]System.Func`2[System.__Canon,ushort]:Invoke(System.__Canon):ushort:this - mov edx, eax vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [rbp-0x30], xmm0 - mov rdi, rbx - lea rsi, bword ptr [rbp-0x40] - call CORINFO_HELP_ASSIGN_BYREF - movsq - movsq - movsq + ;; size=20 bbWeight=1 PerfScore 6.58 +G_M47883_IG06: + vmovdqu ymm0, ymmword ptr [rbp-0x40] + vmovdqu ymmword ptr [rbx], ymm0 + ;; size=9 bbWeight=1 PerfScore 6.00 +G_M47883_IG07: mov dword ptr [rbx+0x08], 2 - mov word ptr [rbx+0x10], dx + mov word ptr [rbx+0x10], ax mov rax, rbx - ;; size=54 bbWeight=1 PerfScore 13.83 -G_M47883_IG06: + ;; size=14 bbWeight=1 PerfScore 2.25 +G_M47883_IG08: + vzeroupper add rsp, 40 pop rbx pop r14 pop r15 pop rbp ret - ;; size=11 bbWeight=1 PerfScore 3.25 + ;; size=14 bbWeight=1 PerfScore 4.25 -; Total bytes of code 146, prolog size 29, PerfScore 40.98, instruction count 45, allocated bytes for code 146 (MethodHash=f41844f4) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_7[System.__Canon]:b__7(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) +; Total bytes of code 138, prolog size 29, PerfScore 42.98, instruction count 41, allocated bytes for code 138 (MethodHash=f41844f4) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_7[System.__Canon]:b__7(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) ```
-8 (-5.52 % of base) - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_8[System.__Canon]:b__8(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this ```diff ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_8[System.__Canon]:b__8(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue: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; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 4 ) ref -> r15 this class-hnd single-def c__DisplayClass1_8[System.__Canon]> ; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> rbx single-def ; V02 arg1 [V02,T10] ( 1, 1 ) struct (32) [rbp+0x10] do-not-enreg[SF] ld-addr-op single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" ; V05 tmp2 [V05,T06] ( 2, 4 ) struct (32) [rbp-0x40] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" -; V07 tmp4 [V07,T07] ( 2, 4 ) int -> rdx "Inlining Arg" +; V07 tmp4 [V07,T07] ( 2, 4 ) int -> rax "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[000..008)" ;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "V05.[008..012)" ;* V11 tmp8 [V11 ] ( 0, 0 ) int -> zero-ref "V05.[016..020)" ;* V12 tmp9 [V12 ] ( 0, 0 ) int -> zero-ref "V06.[000..004)" ;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref "V08.[000..004)" ; V14 tmp11 [V14,T05] ( 2, 4 ) ref -> rsi single-def "argument with side effect" ; V15 tmp12 [V15,T03] ( 3, 6 ) ref -> r14 single-def "argument with side effect" ; V16 rat0 [V16,T08] ( 2, 3 ) long -> rdi "Spilling to split statement for tree" ; V17 rat1 [V17,T04] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree" ; V18 rat2 [V18,T01] ( 5, 7.50) ref -> rax "replacement local" ; V19 rat3 [V19,T09] ( 3, 2.50) long -> rdi "CSE for expectedClsNode" ; ; Lcl frame size = 40 G_M37515_IG01: push rbp push r15 push r14 push rbx sub rsp, 40 lea rbp, [rsp+0x40] vxorps xmm8, xmm8, xmm8 vmovdqu ymmword ptr [rbp-0x40], ymm8 mov qword ptr [rbp-0x20], rdi mov r15, rdi mov rbx, rsi ;; size=35 bbWeight=1 PerfScore 8.58 G_M37515_IG02: mov r14, gword ptr [r15+0x08] mov rdi, qword ptr [r15] mov rdi, qword ptr [rdi+0x30] mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi] mov rsi, gword ptr [rbp+0x10] mov rax, rsi test rax, rax je SHORT G_M37515_IG05 ;; size=29 bbWeight=1 PerfScore 12.50 G_M37515_IG03: cmp qword ptr [rax], rdi je SHORT G_M37515_IG05 ;; size=5 bbWeight=0.50 PerfScore 2.00 G_M37515_IG04: mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTANY call [rax]CORINFO_HELP_CHKCASTANY ;; size=12 bbWeight=0.25 PerfScore 0.81 G_M37515_IG05: mov rsi, rax mov rdi, gword ptr [r14+0x08] call [r14+0x18]System.Func`2[System.__Canon,int]:Invoke(System.__Canon):int:this - mov edx, eax vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [rbp-0x30], xmm0 - mov rdi, rbx - lea rsi, bword ptr [rbp-0x40] - call CORINFO_HELP_ASSIGN_BYREF - movsq - movsq - movsq + ;; size=20 bbWeight=1 PerfScore 6.58 +G_M37515_IG06: + vmovdqu ymm0, ymmword ptr [rbp-0x40] + vmovdqu ymmword ptr [rbx], ymm0 + ;; size=9 bbWeight=1 PerfScore 6.00 +G_M37515_IG07: mov dword ptr [rbx+0x08], 4 - mov dword ptr [rbx+0x10], edx + mov dword ptr [rbx+0x10], eax mov rax, rbx - ;; size=53 bbWeight=1 PerfScore 13.83 -G_M37515_IG06: + ;; size=13 bbWeight=1 PerfScore 2.25 +G_M37515_IG08: + vzeroupper add rsp, 40 pop rbx pop r14 pop r15 pop rbp ret - ;; size=11 bbWeight=1 PerfScore 3.25 + ;; size=14 bbWeight=1 PerfScore 4.25 -; Total bytes of code 145, prolog size 29, PerfScore 40.98, instruction count 45, allocated bytes for code 145 (MethodHash=63a16d74) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_8[System.__Canon]:b__8(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) +; Total bytes of code 137, prolog size 29, PerfScore 42.98, instruction count 41, allocated bytes for code 137 (MethodHash=63a16d74) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_8[System.__Canon]:b__8(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) ```
-8 (-5.52 % of base) - System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_9[System.__Canon]:b__9(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this ```diff ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_9[System.__Canon]:b__9(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue: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; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 4 ) ref -> r15 this class-hnd single-def c__DisplayClass1_9[System.__Canon]> ; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> rbx single-def ; V02 arg1 [V02,T10] ( 1, 1 ) struct (32) [rbp+0x10] do-not-enreg[SF] ld-addr-op single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" ; V05 tmp2 [V05,T06] ( 2, 4 ) struct (32) [rbp-0x40] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" -; V07 tmp4 [V07,T07] ( 2, 4 ) int -> rdx "Inlining Arg" +; V07 tmp4 [V07,T07] ( 2, 4 ) int -> rax "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[000..008)" ;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "V05.[008..012)" ;* V11 tmp8 [V11 ] ( 0, 0 ) int -> zero-ref "V05.[016..020)" ;* V12 tmp9 [V12 ] ( 0, 0 ) int -> zero-ref "V06.[000..004)" ;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref "V08.[000..004)" ; V14 tmp11 [V14,T05] ( 2, 4 ) ref -> rsi single-def "argument with side effect" ; V15 tmp12 [V15,T03] ( 3, 6 ) ref -> r14 single-def "argument with side effect" ; V16 rat0 [V16,T08] ( 2, 3 ) long -> rdi "Spilling to split statement for tree" ; V17 rat1 [V17,T04] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree" ; V18 rat2 [V18,T01] ( 5, 7.50) ref -> rax "replacement local" ; V19 rat3 [V19,T09] ( 3, 2.50) long -> rdi "CSE for expectedClsNode" ; ; Lcl frame size = 40 G_M37259_IG01: push rbp push r15 push r14 push rbx sub rsp, 40 lea rbp, [rsp+0x40] vxorps xmm8, xmm8, xmm8 vmovdqu ymmword ptr [rbp-0x40], ymm8 mov qword ptr [rbp-0x20], rdi mov r15, rdi mov rbx, rsi ;; size=35 bbWeight=1 PerfScore 8.58 G_M37259_IG02: mov r14, gword ptr [r15+0x08] mov rdi, qword ptr [r15] mov rdi, qword ptr [rdi+0x30] mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi] mov rsi, gword ptr [rbp+0x10] mov rax, rsi test rax, rax je SHORT G_M37259_IG05 ;; size=29 bbWeight=1 PerfScore 12.50 G_M37259_IG03: cmp qword ptr [rax], rdi je SHORT G_M37259_IG05 ;; size=5 bbWeight=0.50 PerfScore 2.00 G_M37259_IG04: mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTANY call [rax]CORINFO_HELP_CHKCASTANY ;; size=12 bbWeight=0.25 PerfScore 0.81 G_M37259_IG05: mov rsi, rax mov rdi, gword ptr [r14+0x08] call [r14+0x18]System.Func`2[System.__Canon,uint]:Invoke(System.__Canon):uint:this - mov edx, eax vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [rbp-0x30], xmm0 - mov rdi, rbx - lea rsi, bword ptr [rbp-0x40] - call CORINFO_HELP_ASSIGN_BYREF - movsq - movsq - movsq + ;; size=20 bbWeight=1 PerfScore 6.58 +G_M37259_IG06: + vmovdqu ymm0, ymmword ptr [rbp-0x40] + vmovdqu ymmword ptr [rbx], ymm0 + ;; size=9 bbWeight=1 PerfScore 6.00 +G_M37259_IG07: mov dword ptr [rbx+0x08], 4 - mov dword ptr [rbx+0x10], edx + mov dword ptr [rbx+0x10], eax mov rax, rbx - ;; size=53 bbWeight=1 PerfScore 13.83 -G_M37259_IG06: + ;; size=13 bbWeight=1 PerfScore 2.25 +G_M37259_IG08: + vzeroupper add rsp, 40 pop rbx pop r14 pop r15 pop rbp ret - ;; size=11 bbWeight=1 PerfScore 3.25 + ;; size=14 bbWeight=1 PerfScore 4.25 -; Total bytes of code 145, prolog size 29, PerfScore 40.98, instruction count 45, allocated bytes for code 145 (MethodHash=5f2f6e74) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_9[System.__Canon]:b__9(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) +; Total bytes of code 137, prolog size 29, PerfScore 42.98, instruction count 41, allocated bytes for code 137 (MethodHash=5f2f6e74) for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_9[System.__Canon]:b__9(System.Diagnostics.Tracing.PropertyValue):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) ```
-6 (-4.58 % of base) - System.Diagnostics.Tracing.PropertyValue+<>c:b__25_0(System.Object):System.Diagnostics.Tracing.PropertyValue:this ```diff ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+<>c:b__25_0(System.Object):System.Diagnostics.Tracing.PropertyValue: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 ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def c> ; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> rbx single-def ; V02 arg1 [V02,T01] ( 5, 4.25) ref -> r15 class-hnd single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 2, 4 ) struct (32) [rsp+0x08] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" ;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" -; V06 tmp3 [V06,T03] ( 2, 4 ) ubyte -> rdx "Inlining Arg" +; V06 tmp3 [V06,T03] ( 2, 4 ) ubyte -> rax "Inlining Arg" ;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref single-def "V04.[000..008)" ;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "V04.[008..012)" ;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "V04.[016..017)" ;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "V05.[000..001)" ;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "V07.[000..001)" ; ; Lcl frame size = 40 G_M34457_IG01: push r15 push rbx sub rsp, 40 xor eax, eax mov qword ptr [rsp+0x08], rax vxorps xmm8, xmm8, xmm8 vmovdqa xmmword ptr [rsp+0x10], xmm8 mov qword ptr [rsp+0x20], rax mov rbx, rsi mov r15, rdx ;; size=36 bbWeight=1 PerfScore 7.33 G_M34457_IG02: mov rsi, 0xD1FFAB1E ; System.Boolean cmp qword ptr [r15], rsi je SHORT G_M34457_IG04 ;; size=15 bbWeight=1 PerfScore 4.25 G_M34457_IG03: mov rsi, r15 mov rdi, 0xD1FFAB1E ; System.Boolean mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX call [rax]CORINFO_HELP_UNBOX ;; size=25 bbWeight=0.25 PerfScore 0.94 G_M34457_IG04: - movzx rdx, byte ptr [r15+0x08] + movzx rax, byte ptr [r15+0x08] vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [rsp+0x18], xmm0 - mov rdi, rbx - lea rsi, bword ptr [rsp+0x08] - call CORINFO_HELP_ASSIGN_BYREF - movsq - movsq - movsq + ;; size=15 bbWeight=1 PerfScore 3.33 +G_M34457_IG05: + vmovdqu ymm0, ymmword ptr [rsp+0x08] + vmovdqu ymmword ptr [rbx], ymm0 + ;; size=10 bbWeight=1 PerfScore 6.00 +G_M34457_IG06: mov dword ptr [rbx+0x08], 1 - mov byte ptr [rbx+0x10], dl + mov byte ptr [rbx+0x10], al mov rax, rbx - ;; size=47 bbWeight=1 PerfScore 10.33 -G_M34457_IG05: + ;; size=13 bbWeight=1 PerfScore 2.25 +G_M34457_IG07: + vzeroupper add rsp, 40 pop rbx pop r15 ret - ;; size=8 bbWeight=1 PerfScore 2.25 + ;; size=11 bbWeight=1 PerfScore 3.25 -; Total bytes of code 131, prolog size 30, PerfScore 25.10, instruction count 33, allocated bytes for code 131 (MethodHash=11407966) for method System.Diagnostics.Tracing.PropertyValue+<>c:b__25_0(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) +; Total bytes of code 125, prolog size 30, PerfScore 27.35, instruction count 30, allocated bytes for code 125 (MethodHash=11407966) for method System.Diagnostics.Tracing.PropertyValue+<>c:b__25_0(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) ```

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

MihuBot commented 1 month ago

@EgorBo