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 #523
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) -36 (-7.07 % of base) - System.DateTimeParse:ExpandPredefinedFormat(ushort,byref,byref,byref):System.String ; Assembly listing for method System.DateTimeParse:ExpandPredefinedFormat(ushort,byref,byref,byref):System.String (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; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T04] ( 3, 3 ) ushort -> rdi single-def
; V01 arg1 [V01,T00] ( 9, 6 ) byref -> rbx single-def
; V02 arg2 [V02,T02] ( 6, 4 ) byref -> r14 single-def
; V03 arg3 [V03,T01] ( 9, 5.50) byref -> r15 single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T06] ( 3, 3 ) byref -> rdi single-def "dup spill"
;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
; V07 tmp3 [V07,T07] ( 3, 3 ) byref -> r15 single-def "dup spill"
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Object>
; V09 tmp5 [V09,T10] ( 2, 2 ) byref -> rdi single-def "dup spill"
; V10 tmp6 [V10,T11] ( 2, 2 ) byref -> rdi single-def "dup spill"
;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Globalization.DateTimeFormatInfo>
;* V12 tmp8 [V12,T18] ( 0, 0 ) long -> zero-ref "field V06._ticks (fldOffset=0x0)" P-INDEP
; V13 tmp9 [V13,T09] ( 3, 2 ) ref -> rax single-def "argument with side effect"
; V14 tmp10 [V14,T12] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
; V15 tmp11 [V15,T13] ( 2, 2 ) ref -> r14 single-def "argument with side effect"
; V16 cse0 [V16,T15] ( 3, 1.50) int -> rsi "CSE #03: moderate"
; V17 cse1 [V17,T16] ( 3, 1.50) int -> rsi "CSE #05: moderate"
; V18 cse2 [V18,T03] ( 7, 5 ) int -> r13 "CSE #01: aggressive"
; V19 cse3 [V19,T14] ( 3, 1.50) ref -> rdi "CSE #06: moderate"
; V20 rat0 [V20,T05] ( 4, 3.50) ref -> rsi "replacement local"
; V21 rat1 [V21,T17] ( 3, 1 ) long -> rdi "CSE for expectedClsNode"
; V22 rat2 [V22,T08] ( 3, 2.88) int -> r12 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 8
G_M44728_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
lea rbp, [rsp+0x30]
mov rbx, rsi
mov r14, rdx
mov r15, rcx
;; size=25 bbWeight=1 PerfScore 8.25
G_M44728_IG02:
movzx r13, di
cmp r13d, 82
ja SHORT G_M44728_IG04
;; size=10 bbWeight=1 PerfScore 1.50
G_M44728_IG03:
cmp r13d, 79
je G_M44728_IG10
cmp r13d, 82
je G_M44728_IG11
jmp G_M44728_IG12
;; size=25 bbWeight=0.50 PerfScore 2.25
G_M44728_IG04:
cmp r13d, 85
je SHORT G_M44728_IG06
lea r12d, [r13-0x6F]
cmp r12d, 6
ja G_M44728_IG12
;; size=20 bbWeight=0.50 PerfScore 1.50
G_M44728_IG05:
mov eax, r12d
lea rcx, [reloc @RWD00]
mov ecx, dword ptr [rcx+4*rax]
lea rdx, G_M44728_IG02
add rcx, rdx
jmp rcx
;; size=25 bbWeight=0.44 PerfScore 2.62
G_M44728_IG06:
mov rax, 0xD1FFAB1E ; code for System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
call [rax]System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
- mov rsi, rax
- mov rdi, r14
- call CORINFO_HELP_CHECKED_ASSIGN_REF
+ mov gword ptr [r14], rax
lea rdi, bword ptr [r15+0x2C]
or dword ptr [rdi], 256
xor edi, edi
mov qword ptr [r15+0x38], rdi
add r15, 44
or dword ptr [r15], 512
mov rdi, gword ptr [rbx]
mov rax, gword ptr [rdi+0x90]
mov rcx, 0xD1FFAB1E ; System.Globalization.GregorianCalendar
cmp qword ptr [rax], rcx
je G_M44728_IG12
mov rax, 0xD1FFAB1E ; code for System.Globalization.DateTimeFormatInfo:Clone():System.Object:this
call [rax]System.Globalization.DateTimeFormatInfo:Clone():System.Object:this
mov rsi, rax
test rsi, rsi
je SHORT G_M44728_IG08
- ;; size=99 bbWeight=0.50 PerfScore 12.88
+ ;; size=91 bbWeight=0.50 PerfScore 12.62
G_M44728_IG07:
mov rdi, 0xD1FFAB1E ; System.Globalization.DateTimeFormatInfo
cmp qword ptr [rsi], rdi
jne G_M44728_IG14
;; size=19 bbWeight=0.25 PerfScore 1.06
G_M44728_IG08:
mov rdi, rbx
call CORINFO_HELP_CHECKED_ASSIGN_REF
mov r14, gword ptr [rbx]
mov rax, 0xD1FFAB1E ; code for System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
call [rax]System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
mov rsi, rax
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Globalization.DateTimeFormatInfo:set_Calendar(System.Globalization.Calendar):this
cmp dword ptr [rdi], edi
call [rax]System.Globalization.DateTimeFormatInfo:set_Calendar(System.Globalization.Calendar):this
jmp G_M44728_IG12
;; size=48 bbWeight=0.50 PerfScore 7.62
G_M44728_IG09:
mov rax, 0xD1FFAB1E ; code for System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
call [rax]System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
- mov rsi, rax
- mov rdi, r14
- call CORINFO_HELP_CHECKED_ASSIGN_REF
+ mov gword ptr [r14], rax
mov rdi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rdi]
mov rdi, rbx
call CORINFO_HELP_CHECKED_ASSIGN_REF
mov esi, dword ptr [r15+0x2C]
test esi, 0x800
- je G_M44728_IG12
+ je SHORT G_M44728_IG12
lea rdi, bword ptr [r15+0x2C]
or esi, 0x4000
mov dword ptr [rdi], esi
jmp SHORT G_M44728_IG12
- ;; size=74 bbWeight=0.50 PerfScore 7.62
+ ;; size=62 bbWeight=0.50 PerfScore 7.38
G_M44728_IG10:
mov rax, 0xD1FFAB1E ; code for System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
call [rax]System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
- mov rsi, rax
- mov rdi, r14
- call CORINFO_HELP_CHECKED_ASSIGN_REF
+ mov gword ptr [r14], rax
mov rdi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rdi]
mov rdi, rbx
call CORINFO_HELP_CHECKED_ASSIGN_REF
jmp SHORT G_M44728_IG12
- ;; size=46 bbWeight=0.50 PerfScore 5.12
+ ;; size=38 bbWeight=0.50 PerfScore 4.88
G_M44728_IG11:
mov rax, 0xD1FFAB1E ; code for System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
call [rax]System.Globalization.GregorianCalendar:GetDefaultInstance():System.Globalization.Calendar
- mov rsi, rax
- mov rdi, r14
- call CORINFO_HELP_CHECKED_ASSIGN_REF
+ mov gword ptr [r14], rax
mov rdi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rdi]
mov rdi, rbx
call CORINFO_HELP_CHECKED_ASSIGN_REF
mov esi, dword ptr [r15+0x2C]
test esi, 0x800
je SHORT G_M44728_IG12
lea rdi, bword ptr [r15+0x2C]
or esi, 0x2000
mov dword ptr [rdi], esi
- ;; size=68 bbWeight=0.50 PerfScore 6.62
+ ;; size=60 bbWeight=0.50 PerfScore 6.38
G_M44728_IG12:
mov rsi, gword ptr [rbx]
mov edi, r13d
mov rax, 0xD1FFAB1E ; code for System.DateTimeFormat:ExpandStandardFormatToCustomPattern(ushort,System.Globalization.DateTimeFormatInfo):System.String
call [rax]System.DateTimeFormat:ExpandStandardFormatToCustomPattern(ushort,System.Globalization.DateTimeFormatInfo):System.String
nop
;; size=19 bbWeight=1 PerfScore 5.75
G_M44728_IG13:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M44728_IG14:
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
call [rax]CORINFO_HELP_CHKCASTCLASS
int3
;; size=16 bbWeight=0 PerfScore 0.00
RWD00 dd G_M44728_IG10 - G_M44728_IG02
dd G_M44728_IG12 - G_M44728_IG02
dd G_M44728_IG12 - G_M44728_IG02
dd G_M44728_IG11 - G_M44728_IG02
dd G_M44728_IG10 - G_M44728_IG02
dd G_M44728_IG12 - G_M44728_IG02
dd G_M44728_IG09 - G_M44728_IG02
-; Total bytes of code 509, prolog size 16, PerfScore 67.06, instruction count 123, allocated bytes for code 509 (MethodHash=d2f95147) for method System.DateTimeParse:ExpandPredefinedFormat(ushort,byref,byref,byref):System.String (FullOpts)
+; Total bytes of code 473, prolog size 16, PerfScore 66.06, instruction count 115, allocated bytes for code 473 (MethodHash=d2f95147) for method System.DateTimeParse:ExpandPredefinedFormat(ushort,byref,byref,byref):System.String (FullOpts) -24 (-5.63 % of base) - System.Security.Cryptography.XmlKeyHelper+ParseState:GetValue(System.String):System.String:this ; Assembly listing for method System.Security.Cryptography.XmlKeyHelper+ParseState:GetValue(System.String):System.String:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 19, 18.50) byref -> rbx this single-def
; V01 arg1 [V01,T02] ( 6, 10 ) ref -> r15 class-hnd single-def <System.String>
; V02 loc0 [V02,T06] ( 4, 7 ) int -> r14
; V03 loc1 [V03,T01] ( 7, 15.50) int -> r13
; V04 loc2 [V04,T03] ( 5, 10 ) ref -> rsi class-hnd exact <System.String>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T04] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
; V07 tmp2 [V07,T05] ( 2, 8 ) byref -> rdi "impAppendStmt"
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref "Single return block return value"
; V09 cse0 [V09,T07] ( 3, 6 ) int -> r12 "CSE #02: aggressive"
; V10 cse1 [V10,T08] ( 3, 2.50) ref -> rdi "CSE #01: aggressive"
;
; Lcl frame size = 8
G_M48016_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
lea rbp, [rsp+0x30]
mov rbx, rdi
mov r15, rsi
;; size=22 bbWeight=1 PerfScore 8.00
G_M48016_IG02:
mov rdi, gword ptr [rbx]
test rdi, rdi
je SHORT G_M48016_IG06
;; size=8 bbWeight=1 PerfScore 3.25
G_M48016_IG03:
cmp gword ptr [rbx+0x08], 0
jne SHORT G_M48016_IG04
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerable:GetEnumerator():System.Collections.IEnumerator:this
call [r11]System.Collections.IEnumerable:GetEnumerator():System.Collections.IEnumerator:this
- lea rdi, bword ptr [rbx+0x08]
- mov rsi, rax
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- ;; size=32 bbWeight=0.50 PerfScore 4.50
+ mov gword ptr [rbx+0x08], rax
+ ;; size=24 bbWeight=0.50 PerfScore 4.12
G_M48016_IG04:
mov r14d, dword ptr [rbx+0x10]
mov r13d, r14d
mov rdi, gword ptr [rbx+0x08]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
test eax, eax
jne SHORT G_M48016_IG08
mov r13d, -1
mov rdi, gword ptr [rbx]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerable:GetEnumerator():System.Collections.IEnumerator:this
call [r11]System.Collections.IEnumerable:GetEnumerator():System.Collections.IEnumerator:this
- lea rdi, bword ptr [rbx+0x08]
- mov rsi, rax
- call CORINFO_HELP_CHECKED_ASSIGN_REF
+ mov gword ptr [rbx+0x08], rax
mov rdi, gword ptr [rbx+0x08]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
test eax, eax
jne SHORT G_M48016_IG08
- ;; size=83 bbWeight=0.50 PerfScore 11.25
+ ;; size=75 bbWeight=0.50 PerfScore 10.88
G_M48016_IG05:
xor rax, rax
mov gword ptr [rbx], rax
;; size=5 bbWeight=0.50 PerfScore 0.62
G_M48016_IG06:
xor rax, rax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M48016_IG07:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M48016_IG08:
inc r13d
cmp r13d, r14d
je SHORT G_M48016_IG06
;; size=8 bbWeight=4 PerfScore 6.00
G_M48016_IG09:
mov rdi, gword ptr [rbx+0x08]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:get_Current():System.Object:this
call [r11]System.Collections.IEnumerator:get_Current():System.Object:this
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.XmlKeyHelper+ParseState+Functions:GetLocalName(System.Object):System.String
call [rax]System.Security.Cryptography.XmlKeyHelper+ParseState+Functions:GetLocalName(System.Object):System.String
mov rsi, rax
cmp r15, rsi
jne SHORT G_M48016_IG12
;; size=40 bbWeight=2 PerfScore 20.50
G_M48016_IG10:
mov dword ptr [rbx+0x10], r13d
mov rdi, gword ptr [rbx+0x08]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:get_Current():System.Object:this
call [r11]System.Collections.IEnumerator:get_Current():System.Object:this
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.XmlKeyHelper+ParseState+Functions:GetValue(System.Object):System.String
;; size=34 bbWeight=0.50 PerfScore 3.38
G_M48016_IG11:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
tail.jmp [rax]System.Security.Cryptography.XmlKeyHelper+ParseState+Functions:GetValue(System.Object):System.String
;; size=17 bbWeight=0.50 PerfScore 2.62
G_M48016_IG12:
test r15, r15
je SHORT G_M48016_IG13
test rsi, rsi
je SHORT G_M48016_IG13
mov r12d, dword ptr [r15+0x08]
cmp r12d, dword ptr [rsi+0x08]
je SHORT G_M48016_IG15
;; size=20 bbWeight=2 PerfScore 17.00
G_M48016_IG13:
mov rdi, gword ptr [rbx+0x08]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
test eax, eax
jne G_M48016_IG08
mov r13d, -1
test r14d, r14d
jge SHORT G_M48016_IG16
;; size=36 bbWeight=2 PerfScore 16.00
G_M48016_IG14:
xor rdx, rdx
mov gword ptr [rbx+0x08], rdx
jmp G_M48016_IG06
;; size=11 bbWeight=0.50 PerfScore 1.62
G_M48016_IG15:
lea rdi, bword ptr [r15+0x0C]
add r12d, r12d
mov edx, r12d
add rsi, 12
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
call [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
test eax, eax
je SHORT G_M48016_IG13
jmp G_M48016_IG10
;; size=35 bbWeight=2 PerfScore 15.50
G_M48016_IG16:
mov rdi, gword ptr [rbx]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerable:GetEnumerator():System.Collections.IEnumerator:this
call [r11]System.Collections.IEnumerable:GetEnumerator():System.Collections.IEnumerator:this
- lea rdi, bword ptr [rbx+0x08]
- mov rsi, rax
- call CORINFO_HELP_CHECKED_ASSIGN_REF
+ mov gword ptr [rbx+0x08], rax
mov rdi, gword ptr [rbx+0x08]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
test eax, eax
jne G_M48016_IG08
jmp G_M48016_IG05
- ;; size=58 bbWeight=2 PerfScore 31.00
+ ;; size=50 bbWeight=2 PerfScore 29.50
-; Total bytes of code 426, prolog size 16, PerfScore 143.50, instruction count 115, allocated bytes for code 426 (MethodHash=823d446f) for method System.Security.Cryptography.XmlKeyHelper+ParseState:GetValue(System.String):System.String:this (FullOpts)
+; Total bytes of code 402, prolog size 16, PerfScore 141.25, instruction count 109, allocated bytes for code 402 (MethodHash=823d446f) for method System.Security.Cryptography.XmlKeyHelper+ParseState:GetValue(System.String):System.String:this (FullOpts) -13 (-36.11 % of base) - System.Net.WebUtility+UrlDecoder:.ctor(int,System.Text.Encoding):this ; Assembly listing for method System.Net.WebUtility+UrlDecoder:.ctor(int,System.Text.Encoding):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] ( 8, 8 ) byref -> rbx this single-def
+; V00 this [V00,T00] ( 8, 8 ) byref -> rdi this single-def
; V01 arg1 [V01,T02] ( 3, 3 ) int -> rsi single-def
; V02 arg2 [V02,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Text.Encoding>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
G_M57609_IG01:
- push rbx
- mov rbx, rdi
- ;; size=4 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M57609_IG02:
- mov dword ptr [rbx+0x18], esi
- lea rdi, bword ptr [rbx+0x10]
- mov rsi, rdx
- call CORINFO_HELP_CHECKED_ASSIGN_REF
+ mov dword ptr [rdi+0x18], esi
+ mov gword ptr [rdi+0x10], rdx
xor rax, rax
- mov gword ptr [rbx], rax
- ;; size=20 bbWeight=1 PerfScore 4.00
+ mov gword ptr [rdi], rax
+ ;; size=12 bbWeight=1 PerfScore 3.25
G_M57609_IG03:
- mov dword ptr [rbx+0x1C], eax
+ mov dword ptr [rdi+0x1C], eax
;; size=3 bbWeight=1 PerfScore 1.00
G_M57609_IG04:
- mov dword ptr [rbx+0x20], eax
+ mov dword ptr [rdi+0x20], eax
;; size=3 bbWeight=1 PerfScore 1.00
G_M57609_IG05:
- mov gword ptr [rbx+0x08], rax
+ mov gword ptr [rdi+0x08], rax
;; size=4 bbWeight=1 PerfScore 1.00
G_M57609_IG06:
- pop rbx
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 36, prolog size 1, PerfScore 9.75, instruction count 13, allocated bytes for code 36 (MethodHash=47051ef6) for method System.Net.WebUtility+UrlDecoder:.ctor(int,System.Text.Encoding):this (FullOpts)
+; Total bytes of code 23, prolog size 0, PerfScore 7.25, instruction count 8, allocated bytes for code 23 (MethodHash=47051ef6) for method System.Net.WebUtility+UrlDecoder:.ctor(int,System.Text.Encoding):this (FullOpts) -11 (-5.61 % of base) - System.Net.NetworkInformation.UnixIPGlobalProperties+Context:AddException(System.Exception):this ; Assembly listing for method System.Net.NetworkInformation.UnixIPGlobalProperties+Context:AddException(System.Exception):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 5, 4.50) byref -> rbx this single-def
; V01 arg1 [V01,T02] ( 4, 3 ) ref -> r15 class-hnd single-def <System.Exception>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T04] ( 3, 3 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.Exception]>
; V04 tmp2 [V04,T00] ( 7, 12 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Exception]>
; V05 tmp3 [V05,T05] ( 3, 2.50) ref -> rdx class-hnd single-def "Inline stloc first use temp" <System.Exception[]>
; V06 tmp4 [V06,T03] ( 4, 3 ) int -> rsi "Inline stloc first use temp"
;
; Lcl frame size = 8
G_M6204_IG01:
push rbp
push r15
push r14
push rbx
push rax
lea rbp, [rsp+0x20]
mov rbx, rdi
mov r15, rsi
;; size=18 bbWeight=1 PerfScore 6.00
G_M6204_IG02:
cmp gword ptr [rbx+0x08], 0
jne SHORT G_M6204_IG05
;; size=7 bbWeight=1 PerfScore 4.00
G_M6204_IG03:
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Exception]
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je SHORT G_M6204_IG10
;; size=33 bbWeight=0.50 PerfScore 2.88
G_M6204_IG04:
mov rdi, 0xD1FFAB1E ; data for System.Collections.Generic.List`1[System.Exception]:s_emptyArray
mov rsi, gword ptr [rdi]
lea rdi, bword ptr [r14+0x08]
call CORINFO_HELP_ASSIGN_REF
- lea rdi, bword ptr [rbx+0x08]
- mov rsi, r14
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- ;; size=34 bbWeight=0.50 PerfScore 2.75
+ mov gword ptr [rbx+0x08], r14
+ ;; size=26 bbWeight=0.50 PerfScore 2.38
G_M6204_IG05:
mov rdi, gword ptr [rbx+0x08]
inc dword ptr [rdi+0x14]
mov rdx, gword ptr [rdi+0x08]
mov esi, dword ptr [rdi+0x10]
cmp dword ptr [rdx+0x08], esi
jbe SHORT G_M6204_IG08
;; size=19 bbWeight=1 PerfScore 13.00
G_M6204_IG06:
lea eax, [rsi+0x01]
mov dword ptr [rdi+0x10], eax
movsxd rsi, esi
mov rdi, rdx
mov rdx, r15
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
call [rax]CORINFO_HELP_ARRADDR_ST
nop
;; size=28 bbWeight=0.50 PerfScore 2.88
G_M6204_IG07:
add rsp, 8
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=0.50 PerfScore 1.62
G_M6204_IG08:
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
;; size=13 bbWeight=0.50 PerfScore 0.25
G_M6204_IG09:
add rsp, 8
pop rbx
pop r14
pop r15
pop rbp
tail.jmp [rax]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
;; size=13 bbWeight=0.50 PerfScore 2.12
G_M6204_IG10:
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Exception]
call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M6204_IG04
- ;; size=20 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M6204_IG04
+ ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 196, prolog size 18, PerfScore 35.50, instruction count 54, allocated bytes for code 196 (MethodHash=6fcbe7c3) for method System.Net.NetworkInformation.UnixIPGlobalProperties+Context:AddException(System.Exception):this (FullOpts)
+; Total bytes of code 185, prolog size 18, PerfScore 35.12, instruction count 52, allocated bytes for code 185 (MethodHash=6fcbe7c3) for method System.Net.NetworkInformation.UnixIPGlobalProperties+Context:AddException(System.Exception):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) -10 (-27.03 % of base) - System.ParsingInfo:.ctor(System.Globalization.Calendar):this ; Assembly listing for method System.ParsingInfo:.ctor(System.Globalization.Calendar):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] ( 7, 7 ) byref -> rbx this single-def
+; V00 this [V00,T00] ( 7, 7 ) byref -> rdi this single-def
; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Globalization.Calendar>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
G_M25598_IG01:
- push rbx
- mov rbx, rdi
- ;; size=4 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M25598_IG02:
- xor edi, edi
- mov dword ptr [rbx+0x10], edi
- mov byte ptr [rbx+0x14], 0
- mov rdi, rbx
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- mov dword ptr [rbx+0x08], -1
- mov dword ptr [rbx+0x0C], -1
- ;; size=31 bbWeight=1 PerfScore 5.50
+ xor eax, eax
+ mov dword ptr [rdi+0x10], eax
+ mov byte ptr [rdi+0x14], 0
+ mov gword ptr [rdi], rsi
+ mov dword ptr [rdi+0x08], -1
+ mov dword ptr [rdi+0x0C], -1
+ ;; size=26 bbWeight=1 PerfScore 5.25
G_M25598_IG03:
- pop rbx
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 37, prolog size 1, PerfScore 8.25, instruction count 11, allocated bytes for code 37 (MethodHash=3cb49c01) for method System.ParsingInfo:.ctor(System.Globalization.Calendar):this (FullOpts)
+; Total bytes of code 27, prolog size 0, PerfScore 6.25, instruction count 7, allocated bytes for code 27 (MethodHash=3cb49c01) for method System.ParsingInfo:.ctor(System.Globalization.Calendar):this (FullOpts) -10 (-38.46 % of base) - System.TimeZoneInfo+StringSerializer:.ctor(System.String):this ; Assembly listing for method System.TimeZoneInfo+StringSerializer:.ctor(System.String):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.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
G_M39859_IG01:
- push rbx
- mov rbx, rdi
- ;; size=4 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M39859_IG02:
- mov rdi, rbx
- call CORINFO_HELP_CHECKED_ASSIGN_REF
+ mov gword ptr [rdi], rsi
xor eax, eax
- mov dword ptr [rbx+0x08], eax
- mov dword ptr [rbx+0x0C], 2
- ;; size=20 bbWeight=1 PerfScore 3.50
+ mov dword ptr [rdi+0x08], eax
+ mov dword ptr [rdi+0x0C], 2
+ ;; size=15 bbWeight=1 PerfScore 3.25
G_M39859_IG03:
- pop rbx
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 26, prolog size 1, PerfScore 6.25, instruction count 9, allocated bytes for code 26 (MethodHash=d646644c) for method System.TimeZoneInfo+StringSerializer:.ctor(System.String):this (FullOpts)
+; Total bytes of code 16, prolog size 0, PerfScore 4.25, instruction count 5, allocated bytes for code 16 (MethodHash=d646644c) for method System.TimeZoneInfo+StringSerializer:.ctor(System.String):this (FullOpts) -9 (-7.14 % of base) - System.Reflection.PortableExecutable.PEBinaryReader:.ctor(System.IO.Stream,int):this ; Assembly listing for method System.Reflection.PortableExecutable.PEBinaryReader:.ctor(System.IO.Stream,int):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 6, 6 ) byref -> rbx this single-def
; V01 arg1 [V01,T01] ( 5, 5 ) ref -> r15 class-hnd single-def <System.IO.Stream>
; V02 arg2 [V02,T03] ( 3, 3 ) int -> r14 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T02] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.IO.BinaryReader>
;
; Lcl frame size = 8
G_M36073_IG01:
push rbp
push r15
push r14
push rbx
push rax
lea rbp, [rsp+0x20]
mov rbx, rdi
mov r15, rsi
mov r14d, edx
;; size=21 bbWeight=1 PerfScore 6.25
G_M36073_IG02:
mov rdi, r15
mov rax, qword ptr [r15]
mov rax, qword ptr [rax+0x48]
call [rax+0x10]System.IO.Stream:get_Position():long:this
mov qword ptr [rbx+0x08], rax
movsxd rdi, r14d
add rdi, qword ptr [rbx+0x08]
mov qword ptr [rbx+0x10], rdi
mov rdi, 0xD1FFAB1E ; System.IO.BinaryReader
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov rdx, 0xD1FFAB1E ; const ptr
mov rdx, gword ptr [rdx]
mov rdi, r14
mov rsi, r15
mov ecx, 1
mov rax, 0xD1FFAB1E ; code for System.IO.BinaryReader:.ctor(System.IO.Stream,System.Text.Encoding,ubyte):this
call [rax]System.IO.BinaryReader:.ctor(System.IO.Stream,System.Text.Encoding,ubyte):this
- mov rdi, rbx
- mov rsi, r14
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- nop
- ;; size=94 bbWeight=1 PerfScore 22.00
+ mov gword ptr [rbx], r14
+ ;; size=85 bbWeight=1 PerfScore 21.25
G_M36073_IG03:
add rsp, 8
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 3.25
-; Total bytes of code 126, prolog size 12, PerfScore 31.50, instruction count 37, allocated bytes for code 126 (MethodHash=3c457316) for method System.Reflection.PortableExecutable.PEBinaryReader:.ctor(System.IO.Stream,int):this (FullOpts)
+; Total bytes of code 117, prolog size 12, PerfScore 30.75, instruction count 34, allocated bytes for code 117 (MethodHash=3c457316) for method System.Reflection.PortableExecutable.PEBinaryReader:.ctor(System.IO.Stream,int):this (FullOpts) -9 (-69.23 % of base) - System.Threading.Volatile:Write[System.__Canon](byref,System.__Canon) ; Assembly listing for method System.Threading.Volatile:Write[System.__Canon](byref,System.__Canon) (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 TypeCtx [V00 ] ( 0, 0 ) long -> zero-ref single-def
-; V01 arg0 [V01,T00] ( 3, 3 ) byref -> rdi single-def
+; V01 arg0 [V01,T00] ( 3, 3 ) byref -> rsi single-def
; V02 arg1 [V02,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
G_M37111_IG01:
- mov rdi, rsi
- ;; size=3 bbWeight=1 PerfScore 0.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M37111_IG02:
- mov rsi, rdx
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- nop
- ;; size=9 bbWeight=1 PerfScore 1.50
+ mov gword ptr [rsi], rdx
+ ;; size=3 bbWeight=1 PerfScore 1.00
G_M37111_IG03:
ret
;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 13, prolog size 0, PerfScore 2.75, instruction count 5, allocated bytes for code 13 (MethodHash=79bd6f08) for method System.Threading.Volatile:Write[System.__Canon](byref,System.__Canon) (FullOpts)
+; Total bytes of code 4, prolog size 0, PerfScore 2.00, instruction count 2, allocated bytes for code 4 (MethodHash=79bd6f08) for method System.Threading.Volatile:Write[System.__Canon](byref,System.__Canon) (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) Larger list of diffs: https://gist.github.com/MihuBot/7683ff78f93906f0a0d4e93ae1940907 |
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: