forked from MihaZupan/runtime-utils
-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[JitDiff X64] [EgorBo] Mark some structs as byreflike #525
Comments
Top method improvements-41 (-77.36 % of base) - System.Array+SorterGenericArray:.ctor(System.Array,System.Array,System.Collections.IComparer):this ; 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 <System.Array>
-; V02 arg2 [V02,T02] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Array>
-; V03 arg3 [V03,T03] ( 3, 3 ) ref -> r14 class-hnd single-def <System.Collections.IComparer>
+; V02 arg2 [V02,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Array>
+; V03 arg3 [V03,T03] ( 3, 3 ) ref -> rcx class-hnd single-def <System.Collections.IComparer>
;# 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 ; 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 <System.Object[]>
-; V02 arg2 [V02,T02] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Object[]>
-; V03 arg3 [V03,T03] ( 3, 3 ) ref -> r14 class-hnd single-def <System.Collections.IComparer>
+; V02 arg2 [V02,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object[]>
+; V03 arg3 [V03,T03] ( 3, 3 ) ref -> rcx class-hnd single-def <System.Collections.IComparer>
;# 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 ; 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 <System.Object>
;# 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 ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_2[System.__Canon]:<GetPropertyGetter>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 <System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>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 <System.Diagnostics.Tracing.PropertyValue>
;# 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" <System.Func`2[System.__Canon,ubyte]>
; V05 tmp2 [V05,T06] ( 2, 4 ) struct (32) [rbp-0x40] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Diagnostics.Tracing.PropertyValue>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Diagnostics.Tracing.PropertyValue+Scalar>
-; 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" <System.Diagnostics.Tracing.PropertyValue+Scalar>
;* 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]:<GetPropertyGetter>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]:<GetPropertyGetter>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 ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_3[System.__Canon]:<GetPropertyGetter>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 <System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>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 <System.Diagnostics.Tracing.PropertyValue>
;# 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" <System.Func`2[System.__Canon,ubyte]>
; V05 tmp2 [V05,T06] ( 2, 4 ) struct (32) [rbp-0x40] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Diagnostics.Tracing.PropertyValue>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Diagnostics.Tracing.PropertyValue+Scalar>
-; 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" <System.Diagnostics.Tracing.PropertyValue+Scalar>
;* 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]:<GetPropertyGetter>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]:<GetPropertyGetter>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 ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_4[System.__Canon]:<GetPropertyGetter>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 <System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>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 <System.Diagnostics.Tracing.PropertyValue>
;# 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" <System.Func`2[System.__Canon,byte]>
; V05 tmp2 [V05,T06] ( 2, 4 ) struct (32) [rbp-0x40] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Diagnostics.Tracing.PropertyValue>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Diagnostics.Tracing.PropertyValue+Scalar>
-; 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" <System.Diagnostics.Tracing.PropertyValue+Scalar>
;* 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]:<GetPropertyGetter>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]:<GetPropertyGetter>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 ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_5[System.__Canon]:<GetPropertyGetter>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 <System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>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 <System.Diagnostics.Tracing.PropertyValue>
;# 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" <System.Func`2[System.__Canon,ushort]>
; V05 tmp2 [V05,T06] ( 2, 4 ) struct (32) [rbp-0x40] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Diagnostics.Tracing.PropertyValue>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Diagnostics.Tracing.PropertyValue+Scalar>
-; 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" <System.Diagnostics.Tracing.PropertyValue+Scalar>
;* 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]:<GetPropertyGetter>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]:<GetPropertyGetter>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 ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_6[System.__Canon]:<GetPropertyGetter>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 <System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>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 <System.Diagnostics.Tracing.PropertyValue>
;# 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" <System.Func`2[System.__Canon,short]>
; V05 tmp2 [V05,T06] ( 2, 4 ) struct (32) [rbp-0x40] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Diagnostics.Tracing.PropertyValue>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Diagnostics.Tracing.PropertyValue+Scalar>
-; 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" <System.Diagnostics.Tracing.PropertyValue+Scalar>
;* 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]:<GetPropertyGetter>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]:<GetPropertyGetter>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 ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_7[System.__Canon]:<GetPropertyGetter>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 <System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>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 <System.Diagnostics.Tracing.PropertyValue>
;# 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" <System.Func`2[System.__Canon,ushort]>
; V05 tmp2 [V05,T06] ( 2, 4 ) struct (32) [rbp-0x40] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Diagnostics.Tracing.PropertyValue>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Diagnostics.Tracing.PropertyValue+Scalar>
-; 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" <System.Diagnostics.Tracing.PropertyValue+Scalar>
;* 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]:<GetPropertyGetter>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]:<GetPropertyGetter>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 ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_8[System.__Canon]:<GetPropertyGetter>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 <System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>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 <System.Diagnostics.Tracing.PropertyValue>
;# 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" <System.Func`2[System.__Canon,int]>
; V05 tmp2 [V05,T06] ( 2, 4 ) struct (32) [rbp-0x40] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Diagnostics.Tracing.PropertyValue>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Diagnostics.Tracing.PropertyValue+Scalar>
-; 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" <System.Diagnostics.Tracing.PropertyValue+Scalar>
;* 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]:<GetPropertyGetter>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]:<GetPropertyGetter>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 ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>c__DisplayClass1_9[System.__Canon]:<GetPropertyGetter>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 <System.Diagnostics.Tracing.PropertyValue+ReferenceTypeHelper`1+<>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 <System.Diagnostics.Tracing.PropertyValue>
;# 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" <System.Func`2[System.__Canon,uint]>
; V05 tmp2 [V05,T06] ( 2, 4 ) struct (32) [rbp-0x40] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Diagnostics.Tracing.PropertyValue>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Diagnostics.Tracing.PropertyValue+Scalar>
-; 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" <System.Diagnostics.Tracing.PropertyValue+Scalar>
;* 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]:<GetPropertyGetter>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]:<GetPropertyGetter>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 ; Assembly listing for method System.Diagnostics.Tracing.PropertyValue+<>c:<GetFactory>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 <System.Diagnostics.Tracing.PropertyValue+<>c>
; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> rbx single-def
; V02 arg1 [V02,T01] ( 5, 4.25) ref -> r15 class-hnd single-def <System.Object>
;# 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" <System.Diagnostics.Tracing.PropertyValue>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Diagnostics.Tracing.PropertyValue+Scalar>
-; 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" <System.Diagnostics.Tracing.PropertyValue+Scalar>
;* 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:<GetFactory>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:<GetFactory>b__25_0(System.Object):System.Diagnostics.Tracing.PropertyValue:this (FullOpts) Larger list of diffs: https://gist.github.com/MihuBot/e8f689f8738dd2aa72e9814415f85f70 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 14 minutes.
dotnet/runtime#104870
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: