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] JIT: Optimize Memmove unrolling for constant src #693
Comments
Top method regressions96 (6.87 % of base) - Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource:AppendServiceDescriptor(System.Text.StringBuilder,Microsoft.Extensions.DependencyInjection.ServiceDescriptor) ; Assembly listing for method Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource:AppendServiceDescriptor(System.Text.StringBuilder,Microsoft.Extensions.DependencyInjection.ServiceDescriptor) (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 27 single block inlinees; 42 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 48, 29 ) ref -> rbx class-hnd single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T01] ( 14, 9 ) ref -> r15 class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceDescriptor>
-; V02 loc0 [V02,T51] ( 2, 1 ) ref -> r15 class-hnd single-def <System.Object>
+; V02 loc0 [V02,T61] ( 2, 1 ) 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,T20] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Single-def Box Helper" <Microsoft.Extensions.DependencyInjection.ServiceLifetime>
-; V05 tmp2 [V05,T27] ( 3, 2.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" <ushort[]>
-; V06 tmp3 [V06,T16] ( 4, 3 ) int -> r13 single-def "Inline stloc first use temp"
-; V07 tmp4 [V07,T12] ( 3, 4 ) byref -> rsi single-def "Inlining Arg"
+; V04 tmp1 [V04,T21] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Single-def Box Helper" <Microsoft.Extensions.DependencyInjection.ServiceLifetime>
+; V05 tmp2 [V05,T30] ( 3, 2.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" <ushort[]>
+; V06 tmp3 [V06,T17] ( 4, 3 ) int -> r13 single-def "Inline stloc first use temp"
+; V07 tmp4 [V07,T26] ( 2, 3 ) byref -> rsi single-def "Inlining Arg"
;* V08 tmp5 [V08 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder>
; V10 tmp7 [V10,T02] ( 4, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Type>
-; V11 tmp8 [V11,T03] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-; V12 tmp9 [V12,T28] ( 3, 2.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" <ushort[]>
-; V13 tmp10 [V13,T17] ( 4, 3 ) int -> r13 single-def "Inline stloc first use temp"
-; V14 tmp11 [V14,T13] ( 3, 4 ) byref -> rsi single-def "Inlining Arg"
+; V11 tmp8 [V11,T05] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V12 tmp9 [V12,T31] ( 3, 2.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" <ushort[]>
+; V13 tmp10 [V13,T18] ( 4, 3 ) int -> r13 single-def "Inline stloc first use temp"
+; V14 tmp11 [V14,T27] ( 2, 3 ) byref -> rsi single-def "Inlining Arg"
;* V15 tmp12 [V15 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder>
-; V17 tmp14 [V17,T31] ( 2, 2 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <Microsoft.Extensions.DependencyInjection.ServiceLifetime>
-; V18 tmp15 [V18,T04] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-; V19 tmp16 [V19,T29] ( 3, 2.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" <ushort[]>
-; V20 tmp17 [V20,T18] ( 4, 3 ) int -> r13 single-def "Inline stloc first use temp"
-; V21 tmp18 [V21,T14] ( 3, 4 ) byref -> rsi single-def "Inlining Arg"
+; V17 tmp14 [V17,T34] ( 2, 2 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <Microsoft.Extensions.DependencyInjection.ServiceLifetime>
+; V18 tmp15 [V18,T06] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V19 tmp16 [V19,T32] ( 3, 2.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" <ushort[]>
+; V20 tmp17 [V20,T19] ( 4, 3 ) int -> r13 single-def "Inline stloc first use temp"
+; V21 tmp18 [V21,T28] ( 2, 3 ) byref -> rsi single-def "Inlining Arg"
;* V22 tmp19 [V22 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
-; V23 tmp20 [V23,T33] ( 3, 1.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" <ushort[]>
-; V24 tmp21 [V24,T39] ( 3, 1.50) int -> r13 single-def "Inline stloc first use temp"
-; V25 tmp22 [V25,T21] ( 3, 3 ) byref -> rsi single-def "Inlining Arg"
+; V23 tmp20 [V23,T43] ( 3, 1.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" <ushort[]>
+; V24 tmp21 [V24,T49] ( 3, 1.50) int -> r13 single-def "Inline stloc first use temp"
+; V25 tmp22 [V25,T35] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
;* V26 tmp23 [V26 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V27 tmp24 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder>
-; V28 tmp25 [V28,T05] ( 4, 4 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Type>
-; V29 tmp26 [V29,T06] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-; V30 tmp27 [V30,T34] ( 3, 1.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" <ushort[]>
-; V31 tmp28 [V31,T40] ( 3, 1.50) int -> r13 single-def "Inline stloc first use temp"
-; V32 tmp29 [V32,T22] ( 3, 3 ) byref -> rsi single-def "Inlining Arg"
+; V28 tmp25 [V28,T07] ( 4, 4 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Type>
+; V29 tmp26 [V29,T08] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V30 tmp27 [V30,T44] ( 3, 1.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" <ushort[]>
+; V31 tmp28 [V31,T50] ( 3, 1.50) int -> r13 single-def "Inline stloc first use temp"
+; V32 tmp29 [V32,T36] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
;* V33 tmp30 [V33 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V34 tmp31 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Func`2[System.IServiceProvider,System.Object]>
;* V35 tmp32 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder>
-; V36 tmp33 [V36,T07] ( 4, 4 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo>
-; V37 tmp34 [V37,T08] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-; V38 tmp35 [V38,T35] ( 3, 1.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" <ushort[]>
-; V39 tmp36 [V39,T41] ( 3, 1.50) int -> r13 single-def "Inline stloc first use temp"
-; V40 tmp37 [V40,T23] ( 3, 3 ) byref -> rsi single-def "Inlining Arg"
+; V36 tmp33 [V36,T09] ( 4, 4 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo>
+; V37 tmp34 [V37,T10] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V38 tmp35 [V38,T45] ( 3, 1.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" <ushort[]>
+; V39 tmp36 [V39,T51] ( 3, 1.50) int -> r13 single-def "Inline stloc first use temp"
+; V40 tmp37 [V40,T37] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
;* V41 tmp38 [V41 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V42 tmp39 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Func`3[System.IServiceProvider,System.Object,System.Object]>
;* V43 tmp40 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder>
-; V44 tmp41 [V44,T09] ( 4, 4 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo>
-; V45 tmp42 [V45,T10] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-; V46 tmp43 [V46,T36] ( 3, 1.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" <ushort[]>
-; V47 tmp44 [V47,T42] ( 3, 1.50) int -> r13 single-def "Inline stloc first use temp"
-; V48 tmp45 [V48,T24] ( 3, 3 ) byref -> rsi single-def "Inlining Arg"
+; V44 tmp41 [V44,T11] ( 4, 4 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo>
+; V45 tmp42 [V45,T12] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V46 tmp43 [V46,T46] ( 3, 1.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" <ushort[]>
+; V47 tmp44 [V47,T52] ( 3, 1.50) int -> r13 single-def "Inline stloc first use temp"
+; V48 tmp45 [V48,T38] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
;* V49 tmp46 [V49 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V50 tmp47 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder>
-; V51 tmp48 [V51,T32] ( 2, 2 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.RuntimeType>
-; V52 tmp49 [V52,T11] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-; V53 tmp50 [V53,T37] ( 3, 1.50) ref -> r15 class-hnd single-def "Inline stloc first use temp" <ushort[]>
-; V54 tmp51 [V54,T43] ( 3, 1.50) int -> r14 single-def "Inline stloc first use temp"
-; V55 tmp52 [V55,T25] ( 3, 3 ) byref -> rsi single-def "Inlining Arg"
+; V51 tmp48 [V51,T39] ( 2, 2 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.RuntimeType>
+; V52 tmp49 [V52,T13] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V53 tmp50 [V53,T47] ( 3, 1.50) ref -> r15 class-hnd single-def "Inline stloc first use temp" <ushort[]>
+; V54 tmp51 [V54,T53] ( 3, 1.50) int -> r14 single-def "Inline stloc first use temp"
+; V55 tmp52 [V55,T40] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
;* V56 tmp53 [V56 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
-; V57 tmp54 [V57,T38] ( 3, 1.50) ref -> r15 class-hnd single-def "Inline stloc first use temp" <ushort[]>
-; V58 tmp55 [V58,T44] ( 3, 1.50) int -> r14 single-def "Inline stloc first use temp"
-; V59 tmp56 [V59,T26] ( 3, 3 ) byref -> rsi single-def "Inlining Arg"
+; V57 tmp54 [V57,T48] ( 3, 1.50) ref -> r15 class-hnd single-def "Inline stloc first use temp" <ushort[]>
+; V58 tmp55 [V58,T54] ( 3, 1.50) int -> r14 single-def "Inline stloc first use temp"
+; V59 tmp56 [V59,T41] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
;* V60 tmp57 [V60 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
-; V61 tmp58 [V61,T30] ( 3, 2.50) ref -> r15 class-hnd single-def "Inline stloc first use temp" <ushort[]>
-; V62 tmp59 [V62,T19] ( 4, 3 ) int -> r14 single-def "Inline stloc first use temp"
-; V63 tmp60 [V63,T15] ( 3, 4 ) byref -> rsi single-def "Inlining Arg"
+; V61 tmp58 [V61,T33] ( 3, 2.50) ref -> r15 class-hnd single-def "Inline stloc first use temp" <ushort[]>
+; V62 tmp59 [V62,T20] ( 4, 3 ) int -> r14 single-def "Inline stloc first use temp"
+; V63 tmp60 [V63,T29] ( 2, 3 ) byref -> rsi single-def "Inlining Arg"
;* V64 tmp61 [V64 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
-; V65 cse0 [V65,T45] ( 3, 1.50) int -> r12 "CSE #04: conservative"
-; V66 cse1 [V66,T46] ( 3, 1.50) int -> r12 "CSE #05: conservative"
-; V67 cse2 [V67,T47] ( 3, 1.50) int -> r12 "CSE #08: conservative"
-; V68 cse3 [V68,T48] ( 3, 1.50) int -> r12 "CSE #09: conservative"
-; V69 cse4 [V69,T49] ( 3, 1.50) int -> r13 "CSE #10: conservative"
-; V70 cse5 [V70,T50] ( 3, 1.50) int -> r13 "CSE #11: conservative"
+; V65 cse0 [V65,T55] ( 3, 1.50) int -> r12 "CSE #04: conservative"
+; V66 cse1 [V66,T56] ( 3, 1.50) int -> r12 "CSE #05: conservative"
+; V67 cse2 [V67,T57] ( 3, 1.50) int -> r12 "CSE #08: conservative"
+; V68 cse3 [V68,T58] ( 3, 1.50) int -> r12 "CSE #09: conservative"
+; V69 cse4 [V69,T59] ( 3, 1.50) int -> r13 "CSE #10: conservative"
+; V70 cse5 [V70,T60] ( 3, 1.50) int -> r13 "CSE #11: conservative"
+; V71 rat0 [V71,T22] ( 3, 3 ) byref -> rdi "fgMakeTemp is creating a new local variable"
+; V72 rat1 [V72,T42] ( 2, 2 ) byref -> rdi "fgMakeTemp is creating a new local variable"
+; V73 rat2 [V73,T23] ( 3, 3 ) byref -> rdi "fgMakeTemp is creating a new local variable"
+; V74 rat3 [V74,T03] ( 5, 5 ) byref -> rdi "fgMakeTemp is creating a new local variable"
+; V75 rat4 [V75,T14] ( 4, 4 ) byref -> rdi "fgMakeTemp is creating a new local variable"
+; V76 rat5 [V76,T15] ( 4, 4 ) byref -> rdi "fgMakeTemp is creating a new local variable"
+; V77 rat6 [V77,T04] ( 5, 5 ) byref -> rdi "fgMakeTemp is creating a new local variable"
+; V78 rat7 [V78,T16] ( 4, 4 ) byref -> rdi "fgMakeTemp is creating a new local variable"
+; V79 rat8 [V79,T24] ( 3, 3 ) byref -> rdi "fgMakeTemp is creating a new local variable"
+; V80 rat9 [V80,T25] ( 3, 3 ) byref -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
G_M8294_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_M8294_IG02:
mov rsi, 0xD1FFAB1E
mov r14, gword ptr [rbx+0x08]
mov r13d, dword ptr [rbx+0x18]
lea edi, [r13+0x12]
cmp dword ptr [r14+0x08], edi
jae SHORT G_M8294_IG04
;; size=28 bbWeight=1 PerfScore 8.75
G_M8294_IG03:
mov rdi, rbx
mov edx, 18
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:AppendWithExpansion(byref,int):this
call [rax]System.Text.StringBuilder:AppendWithExpansion(byref,int):this
jmp SHORT G_M8294_IG05
;; size=22 bbWeight=0.50 PerfScore 2.88
G_M8294_IG04:
movsxd rdi, r13d
lea rdi, bword ptr [r14+2*rdi+0x10]
- vmovdqu ymm0, ymmword ptr [rsi]
- vmovdqu xmm1, xmmword ptr [rsi+0x14]
- vmovdqu ymmword ptr [rdi], ymm0
- vmovdqu xmmword ptr [rdi+0x14], xmm1
+ vmovups ymm0, ymmword ptr [reloc @RWD00]
+ vmovups ymmword ptr [rdi], ymm0
+ mov dword ptr [rdi+0x20], 0xD1FFAB1E
add r13d, 18
mov dword ptr [rbx+0x18], r13d
- ;; size=34 bbWeight=0.50 PerfScore 7.75
+ ;; size=35 bbWeight=0.50 PerfScore 4.75
G_M8294_IG05:
mov rdi, gword ptr [r15+0x10]
test rdi, rdi
je SHORT G_M8294_IG07
;; size=9 bbWeight=1 PerfScore 3.25
G_M8294_IG06:
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x08]System.Object:ToString():System.String:this
mov rsi, rax
test rsi, rsi
je SHORT G_M8294_IG07
mov edx, dword ptr [rsi+0x08]
add rsi, 12
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:Append(byref,int):this
call [rax]System.Text.StringBuilder:Append(byref,int):this
;; size=40 bbWeight=0.50 PerfScore 7.12
G_M8294_IG07:
mov rsi, 0xD1FFAB1E
mov r14, gword ptr [rbx+0x08]
mov r13d, dword ptr [rbx+0x18]
lea edi, [r13+0x10]
cmp dword ptr [r14+0x08], edi
jae SHORT G_M8294_IG09
;; size=28 bbWeight=1 PerfScore 8.75
G_M8294_IG08:
mov rdi, rbx
mov edx, 16
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:AppendWithExpansion(byref,int):this
call [rax]System.Text.StringBuilder:AppendWithExpansion(byref,int):this
jmp SHORT G_M8294_IG10
;; size=22 bbWeight=0.50 PerfScore 2.88
G_M8294_IG09:
movsxd rdi, r13d
lea rdi, bword ptr [r14+2*rdi+0x10]
- vmovdqu ymm0, ymmword ptr [rsi]
- vmovdqu ymmword ptr [rdi], ymm0
+ vmovups ymm0, ymmword ptr [reloc @RWD32]
+ vmovups ymmword ptr [rdi], ymm0
add r13d, 16
mov dword ptr [rbx+0x18], r13d
- ;; size=24 bbWeight=0.50 PerfScore 4.75
+ ;; size=28 bbWeight=0.50 PerfScore 4.25
G_M8294_IG10:
mov rdi, 0xD1FFAB1E ; Microsoft.Extensions.DependencyInjection.ServiceLifetime
call CORINFO_HELP_NEWSFAST
mov rdi, rax
mov eax, dword ptr [r15+0x30]
mov dword ptr [rdi+0x08], eax
mov rax, 0xD1FFAB1E ; code for System.Enum:ToString():System.String:this
call [rax]System.Enum:ToString():System.String:this
mov rsi, rax
test rsi, rsi
je SHORT G_M8294_IG11
mov edx, dword ptr [rsi+0x08]
add rsi, 12
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:Append(byref,int):this
call [rax]System.Text.StringBuilder:Append(byref,int):this
;; size=67 bbWeight=0.50 PerfScore 7.50
G_M8294_IG11:
mov rsi, 0xD1FFAB1E
mov r14, gword ptr [rbx+0x08]
mov r13d, dword ptr [rbx+0x18]
lea edi, [r13+0x03]
cmp dword ptr [r14+0x08], edi
jae SHORT G_M8294_IG13
;; size=28 bbWeight=1 PerfScore 8.75
G_M8294_IG12:
mov rdi, rbx
mov edx, 3
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:AppendWithExpansion(byref,int):this
call [rax]System.Text.StringBuilder:AppendWithExpansion(byref,int):this
jmp SHORT G_M8294_IG14
;; size=22 bbWeight=0.50 PerfScore 2.88
G_M8294_IG13:
movsxd rdi, r13d
lea rdi, bword ptr [r14+2*rdi+0x10]
- mov eax, dword ptr [rsi]
- mov ecx, dword ptr [rsi+0x02]
- mov dword ptr [rdi], eax
- mov dword ptr [rdi+0x02], ecx
+ mov dword ptr [rdi], 0xD1FFAB1E
+ mov word ptr [rdi+0x04], 32
add r13d, 3
mov dword ptr [rbx+0x18], r13d
- ;; size=26 bbWeight=0.50 PerfScore 4.25
+ ;; size=28 bbWeight=0.50 PerfScore 2.25
G_M8294_IG14:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceDescriptorExtensions:GetImplementationType(Microsoft.Extensions.DependencyInjection.ServiceDescriptor):System.Type
call [rax]Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceDescriptorExtensions:GetImplementationType(Microsoft.Extensions.DependencyInjection.ServiceDescriptor):System.Type
test rax, rax
jne G_M8294_IG30
;; size=24 bbWeight=1 PerfScore 4.75
G_M8294_IG15:
cmp gword ptr [r15+0x08], 0
jne SHORT G_M8294_IG16
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyInjection.ServiceDescriptor:get_ImplementationFactory():System.Func`2[System.IServiceProvider,System.Object]:this
call [rax]Microsoft.Extensions.DependencyInjection.ServiceDescriptor:get_ImplementationFactory():System.Func`2[System.IServiceProvider,System.Object]:this
test rax, rax
jne G_M8294_IG27
;; size=31 bbWeight=0.50 PerfScore 4.38
G_M8294_IG16:
cmp gword ptr [r15+0x08], 0
je SHORT G_M8294_IG17
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyInjection.ServiceDescriptor:get_KeyedImplementationFactory():System.Func`3[System.IServiceProvider,System.Object,System.Object]:this
call [rax]Microsoft.Extensions.DependencyInjection.ServiceDescriptor:get_KeyedImplementationFactory():System.Func`3[System.IServiceProvider,System.Object,System.Object]:this
test rax, rax
jne G_M8294_IG24
;; size=31 bbWeight=0.50 PerfScore 4.38
G_M8294_IG17:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceDescriptorExtensions:GetImplementationInstance(Microsoft.Extensions.DependencyInjection.ServiceDescriptor):System.Object
call [rax]Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceDescriptorExtensions:GetImplementationInstance(Microsoft.Extensions.DependencyInjection.ServiceDescriptor):System.Object
test rax, rax
jne SHORT G_M8294_IG19
mov rsi, 0xD1FFAB1E
mov r15, gword ptr [rbx+0x08]
mov r14d, dword ptr [rbx+0x18]
lea r13d, [r14+0x0C]
cmp dword ptr [r15+0x08], r13d
jae SHORT G_M8294_IG18
mov rdi, rbx
mov edx, 12
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:AppendWithExpansion(byref,int):this
call [rax]System.Text.StringBuilder:AppendWithExpansion(byref,int):this
jmp G_M8294_IG33
;; size=73 bbWeight=0.50 PerfScore 9.62
G_M8294_IG18:
movsxd rdi, r14d
lea rdi, bword ptr [r15+2*rdi+0x10]
- vmovdqu xmm0, xmmword ptr [rsi]
- vmovdqu xmm1, xmmword ptr [rsi+0x08]
- vmovdqu xmmword ptr [rdi], xmm0
- vmovdqu xmmword ptr [rdi+0x08], xmm1
+ vmovups xmm0, xmmword ptr [reloc @RWD64]
+ vmovups xmmword ptr [rdi], xmm0
+ mov rax, 0xD1FFAB1E
+ mov qword ptr [rdi+0x10], rax
mov dword ptr [rbx+0x18], r13d
jmp G_M8294_IG33
- ;; size=35 bbWeight=0.50 PerfScore 8.12
+ ;; size=43 bbWeight=0.50 PerfScore 5.25
G_M8294_IG19:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceDescriptorExtensions:GetImplementationInstance(Microsoft.Extensions.DependencyInjection.ServiceDescriptor):System.Object
call [rax]Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceDescriptorExtensions:GetImplementationInstance(Microsoft.Extensions.DependencyInjection.ServiceDescriptor):System.Object
mov r15, rax
mov rsi, 0xD1FFAB1E
mov r14, gword ptr [rbx+0x08]
mov r13d, dword ptr [rbx+0x18]
lea r12d, [r13+0x1B]
cmp dword ptr [r14+0x08], r12d
jae SHORT G_M8294_IG20
mov rdi, rbx
mov edx, 27
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:AppendWithExpansion(byref,int):this
call [rax]System.Text.StringBuilder:AppendWithExpansion(byref,int):this
jmp SHORT G_M8294_IG21
;; size=68 bbWeight=0.50 PerfScore 9.12
G_M8294_IG20:
movsxd rdi, r13d
lea rdi, bword ptr [r14+2*rdi+0x10]
- vmovdqu ymm0, ymmword ptr [rsi]
- vmovdqu ymm1, ymmword ptr [rsi+0x16]
- vmovdqu ymmword ptr [rdi], ymm0
- vmovdqu ymmword ptr [rdi+0x16], ymm1
+ vmovups ymm0, ymmword ptr [reloc @RWD96]
+ vmovups ymmword ptr [rdi], ymm0
+ vmovups xmm0, xmmword ptr [reloc @RWD128]
+ vmovups xmmword ptr [rdi+0x20], xmm0
+ mov dword ptr [rdi+0x30], 0xD1FFAB1E
+ mov word ptr [rdi+0x34], 34
mov dword ptr [rbx+0x18], r12d
- ;; size=30 bbWeight=0.50 PerfScore 8.12
+ ;; size=50 bbWeight=0.50 PerfScore 7.62
G_M8294_IG21:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Object:GetType():System.Type:this
call [rax]System.Object:GetType():System.Type:this
mov rdi, rax
mov esi, 1
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetCachedName(int):System.String:this
call [rax]System.RuntimeType:GetCachedName(int):System.String:this
mov rsi, rax
test rsi, rsi
je SHORT G_M8294_IG22
mov edx, dword ptr [rsi+0x08]
add rsi, 12
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:Append(byref,int):this
call [rax]System.Text.StringBuilder:Append(byref,int):this
;; size=65 bbWeight=0.50 PerfScore 7.25
G_M8294_IG22:
mov rsi, 0xD1FFAB1E
mov r15, gword ptr [rbx+0x08]
mov r14d, dword ptr [rbx+0x18]
lea r13d, [r14+0x0B]
cmp dword ptr [r15+0x08], r13d
jae SHORT G_M8294_IG23
mov rdi, rbx
mov edx, 11
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:AppendWithExpansion(byref,int):this
call [rax]System.Text.StringBuilder:AppendWithExpansion(byref,int):this
jmp G_M8294_IG33
;; size=53 bbWeight=0.50 PerfScore 7.25
G_M8294_IG23:
movsxd rdi, r14d
lea rdi, bword ptr [r15+2*rdi+0x10]
- vmovdqu xmm0, xmmword ptr [rsi]
- vmovdqu xmm1, xmmword ptr [rsi+0x06]
- vmovdqu xmmword ptr [rdi], xmm0
- vmovdqu xmmword ptr [rdi+0x06], xmm1
+ vmovups xmm0, xmmword ptr [reloc @RWD144]
+ vmovups xmmword ptr [rdi], xmm0
+ mov dword ptr [rdi+0x10], 0xD1FFAB1E
+ mov word ptr [rdi+0x14], 41
mov dword ptr [rbx+0x18], r13d
jmp G_M8294_IG33
- ;; size=35 bbWeight=0.50 PerfScore 8.12
+ ;; size=42 bbWeight=0.50 PerfScore 5.62
G_M8294_IG24:
mov rsi, 0xD1FFAB1E
mov r14, gword ptr [rbx+0x08]
mov r13d, dword ptr [rbx+0x18]
lea r12d, [r13+0x1A]
cmp dword ptr [r14+0x08], r12d
jae SHORT G_M8294_IG25
mov rdi, rbx
mov edx, 26
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:AppendWithExpansion(byref,int):this
call [rax]System.Text.StringBuilder:AppendWithExpansion(byref,int):this
jmp SHORT G_M8294_IG26
;; size=50 bbWeight=0.50 PerfScore 7.25
G_M8294_IG25:
movsxd rdi, r13d
lea rdi, bword ptr [r14+2*rdi+0x10]
- vmovdqu ymm0, ymmword ptr [rsi]
- vmovdqu ymm1, ymmword ptr [rsi+0x14]
- vmovdqu ymmword ptr [rdi], ymm0
- vmovdqu ymmword ptr [rdi+0x14], ymm1
+ vmovups ymm0, ymmword ptr [reloc @RWD160]
+ vmovups ymmword ptr [rdi], ymm0
+ vmovups xmm0, xmmword ptr [reloc @RWD192]
+ vmovups xmmword ptr [rdi+0x20], xmm0
+ mov dword ptr [rdi+0x30], 0xD1FFAB1E
mov dword ptr [rbx+0x18], r12d
- ;; size=30 bbWeight=0.50 PerfScore 8.12
+ ;; size=44 bbWeight=0.50 PerfScore 7.12
G_M8294_IG26:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyInjection.ServiceDescriptor:get_KeyedImplementationFactory():System.Func`3[System.IServiceProvider,System.Object,System.Object]:this
call [rax]Microsoft.Extensions.DependencyInjection.ServiceDescriptor:get_KeyedImplementationFactory():System.Func`3[System.IServiceProvider,System.Object,System.Object]:this
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.MulticastDelegate:GetMethodImpl():System.Reflection.MethodInfo:this
cmp dword ptr [rdi], edi
call [rax]System.MulticastDelegate:GetMethodImpl():System.Reflection.MethodInfo:this
test rax, rax
je G_M8294_IG33
mov rdi, rax
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x40]
call [rax+0x08]System.Object:ToString():System.String:this
mov rsi, rax
test rsi, rsi
je G_M8294_IG33
mov edx, dword ptr [rsi+0x08]
add rsi, 12
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:Append(byref,int):this
call [rax]System.Text.StringBuilder:Append(byref,int):this
jmp G_M8294_IG33
;; size=93 bbWeight=0.50 PerfScore 13.88
G_M8294_IG27:
mov rsi, 0xD1FFAB1E
mov r14, gword ptr [rbx+0x08]
mov r13d, dword ptr [rbx+0x18]
lea r12d, [r13+0x1A]
cmp dword ptr [r14+0x08], r12d
jae SHORT G_M8294_IG28
mov rdi, rbx
mov edx, 26
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:AppendWithExpansion(byref,int):this
call [rax]System.Text.StringBuilder:AppendWithExpansion(byref,int):this
jmp SHORT G_M8294_IG29
;; size=50 bbWeight=0.50 PerfScore 7.25
G_M8294_IG28:
movsxd rdi, r13d
lea rdi, bword ptr [r14+2*rdi+0x10]
- vmovdqu ymm0, ymmword ptr [rsi]
- vmovdqu ymm1, ymmword ptr [rsi+0x14]
- vmovdqu ymmword ptr [rdi], ymm0
- vmovdqu ymmword ptr [rdi+0x14], ymm1
+ vmovups ymm0, ymmword ptr [reloc @RWD160]
+ vmovups ymmword ptr [rdi], ymm0
+ vmovups xmm0, xmmword ptr [reloc @RWD192]
+ vmovups xmmword ptr [rdi+0x20], xmm0
+ mov dword ptr [rdi+0x30], 0xD1FFAB1E
mov dword ptr [rbx+0x18], r12d
- ;; size=30 bbWeight=0.50 PerfScore 8.12
+ ;; size=44 bbWeight=0.50 PerfScore 7.12
G_M8294_IG29:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyInjection.ServiceDescriptor:get_ImplementationFactory():System.Func`2[System.IServiceProvider,System.Object]:this
call [rax]Microsoft.Extensions.DependencyInjection.ServiceDescriptor:get_ImplementationFactory():System.Func`2[System.IServiceProvider,System.Object]:this
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.MulticastDelegate:GetMethodImpl():System.Reflection.MethodInfo:this
cmp dword ptr [rdi], edi
call [rax]System.MulticastDelegate:GetMethodImpl():System.Reflection.MethodInfo:this
test rax, rax
je G_M8294_IG33
mov rdi, rax
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x40]
call [rax+0x08]System.Object:ToString():System.String:this
mov rsi, rax
test rsi, rsi
je G_M8294_IG33
mov edx, dword ptr [rsi+0x08]
add rsi, 12
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:Append(byref,int):this
call [rax]System.Text.StringBuilder:Append(byref,int):this
jmp G_M8294_IG33
;; size=93 bbWeight=0.50 PerfScore 13.88
G_M8294_IG30:
mov rsi, 0xD1FFAB1E
mov r14, gword ptr [rbx+0x08]
mov r13d, dword ptr [rbx+0x18]
lea r12d, [r13+0x17]
cmp dword ptr [r14+0x08], r12d
jae SHORT G_M8294_IG31
mov rdi, rbx
mov edx, 23
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:AppendWithExpansion(byref,int):this
call [rax]System.Text.StringBuilder:AppendWithExpansion(byref,int):this
jmp SHORT G_M8294_IG32
;; size=50 bbWeight=0.50 PerfScore 7.25
G_M8294_IG31:
movsxd rdi, r13d
lea rdi, bword ptr [r14+2*rdi+0x10]
- vmovdqu ymm0, ymmword ptr [rsi]
- vmovdqu xmm1, xmmword ptr [rsi+0x1E]
- vmovdqu ymmword ptr [rdi], ymm0
- vmovdqu xmmword ptr [rdi+0x1E], xmm1
+ vmovups ymm0, ymmword ptr [reloc @RWD224]
+ vmovups ymmword ptr [rdi], ymm0
+ mov rax, 0xD1FFAB1E
+ mov qword ptr [rdi+0x20], rax
+ mov dword ptr [rdi+0x28], 0xD1FFAB1E
+ mov word ptr [rdi+0x2C], 34
mov dword ptr [rbx+0x18], r12d
- ;; size=30 bbWeight=0.50 PerfScore 7.62
+ ;; size=51 bbWeight=0.50 PerfScore 5.75
G_M8294_IG32:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceDescriptorExtensions:GetImplementationType(Microsoft.Extensions.DependencyInjection.ServiceDescriptor):System.Type
call [rax]Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceDescriptorExtensions:GetImplementationType(Microsoft.Extensions.DependencyInjection.ServiceDescriptor):System.Type
test rax, rax
je SHORT G_M8294_IG33
mov rdi, rax
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x40]
call [rax+0x08]System.Object:ToString():System.String:this
mov rsi, rax
test rsi, rsi
je SHORT G_M8294_IG33
mov edx, dword ptr [rsi+0x08]
add rsi, 12
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:Append(byref,int):this
call [rax]System.Text.StringBuilder:Append(byref,int):this
;; size=63 bbWeight=0.50 PerfScore 9.62
G_M8294_IG33:
mov rsi, 0xD1FFAB1E
mov r15, gword ptr [rbx+0x08]
mov r14d, dword ptr [rbx+0x18]
lea edi, [r14+0x03]
cmp dword ptr [r15+0x08], edi
jae SHORT G_M8294_IG35
;; size=28 bbWeight=1 PerfScore 8.75
G_M8294_IG34:
mov rdi, rbx
mov edx, 3
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:AppendWithExpansion(byref,int):this
call [rax]System.Text.StringBuilder:AppendWithExpansion(byref,int):this
jmp SHORT G_M8294_IG36
;; size=22 bbWeight=0.50 PerfScore 2.88
G_M8294_IG35:
movsxd rax, r14d
lea rax, bword ptr [r15+2*rax+0x10]
- mov ecx, dword ptr [rsi]
- mov edx, dword ptr [rsi+0x02]
- mov dword ptr [rax], ecx
- mov dword ptr [rax+0x02], edx
+ mov dword ptr [rax], 0xD1FFAB1E
+ mov word ptr [rax+0x04], 125
add r14d, 3
mov dword ptr [rbx+0x18], r14d
- ;; size=26 bbWeight=0.50 PerfScore 4.25
+ ;; size=28 bbWeight=0.50 PerfScore 2.25
G_M8294_IG36:
+ vzeroupper
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
+ ;; size=18 bbWeight=1 PerfScore 5.25
+RWD00 dq 007300220020007Bh, 0069007600720065h, 0079005400650063h, 003A002200650070h
+RWD32 dq 00220020002C0022h, 006500660069006Ch, 0065006D00690074h, 00220020003A0022h
+RWD64 dq 006B006E00750022h, 006E0077006F006Eh
+RWD80 dd 00000000h, 00000000h, 00000000h, 00000000h
+RWD96 dq 0070006D00690022h, 0065006D0065006Ch, 007400610074006Eh, 0049006E006F0069h
+RWD128 dq 006100740073006Eh, 002200650063006Eh
+RWD144 dq 006E006900280020h, 006E006100740073h
+RWD160 dq 0070006D00690022h, 0065006D0065006Ch, 007400610074006Eh, 0046006E006F0069h
+RWD192 dq 006F007400630061h, 003A002200790072h
+RWD208 dd 00000000h, 00000000h, 00000000h, 00000000h
+RWD224 dq 0070006D00690022h, 0065006D0065006Ch, 007400610074006Eh, 0054006E006F0069h
-; Total bytes of code 1397, prolog size 16, PerfScore 251.75, instruction count 335, allocated bytes for code 1397 (MethodHash=a1b8df99) for method Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource:AppendServiceDescriptor(System.Text.StringBuilder,Microsoft.Extensions.DependencyInjection.ServiceDescriptor) (FullOpts)
+
+; Total bytes of code 1493, prolog size 16, PerfScore 235.50, instruction count 337, allocated bytes for code 1493 (MethodHash=a1b8df99) for method Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource:AppendServiceDescriptor(System.Text.StringBuilder,Microsoft.Extensions.DependencyInjection.ServiceDescriptor) (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/f977ed26cf5757ffe5afad778093bd61 |
Top method improvements-84 (-5.91 % of base) - System.Net.NetEventSource:Format(System.Object):System.String ; Assembly listing for method System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 15 single block inlinees; 32 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 14, 8.50) ref -> rbx class-hnd single-def <System.Object>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String>
; V02 loc1 [V02,T38] ( 3, 1.50) ref -> r15 class-hnd single-def <System.Array>
-; V03 loc2 [V03,T11] ( 4, 2 ) ref -> r15 class-hnd single-def <System.Collections.ICollection>
+; V03 loc2 [V03,T12] ( 4, 2 ) ref -> r15 class-hnd single-def <System.Collections.ICollection>
; V04 loc3 [V04,T10] ( 6, 3 ) ref -> r15 class-hnd single-def <System.Runtime.InteropServices.SafeHandle>
; V05 loc4 [V05,T39] ( 3, 1.50) ref -> r14 class-hnd exact single-def <System.String>
; V06 loc5 [V06 ] ( 64, 32 ) struct (40) [rbp-0x40] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) int -> zero-ref "spilling qmarkNull"
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V11 tmp4 [V11,T02] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V12 tmp5 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V13 tmp6 [V13,T12] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
+; V13 tmp6 [V13,T13] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
; V14 tmp7 [V14,T27] ( 2, 2 ) int -> rsi "Inlining Arg"
;* V15 tmp8 [V15,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V17 tmp10 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V18 tmp11 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Array>
;* V20 tmp13 [V20 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V21 tmp14 [V21,T03] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V22 tmp15 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V23 tmp16 [V23,T13] ( 2, 2 ) byref -> rbx single-def "Inlining Arg"
+; V23 tmp16 [V23,T14] ( 2, 2 ) byref -> rbx single-def "Inlining Arg"
; V24 tmp17 [V24,T28] ( 2, 2 ) int -> rsi "Inlining Arg"
;* V25 tmp18 [V25,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V26 tmp19 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V27 tmp20 [V27 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V28 tmp21 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V29 tmp22 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V31 tmp24 [V31,T04] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V33 tmp26 [V33,T14] ( 2, 2 ) byref -> rbx single-def "Inlining Arg"
+; V33 tmp26 [V33,T15] ( 2, 2 ) byref -> rbx single-def "Inlining Arg"
; V34 tmp27 [V34,T29] ( 2, 2 ) int -> rsi "Inlining Arg"
;* V35 tmp28 [V35,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V36 tmp29 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V37 tmp30 [V37 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V38 tmp31 [V38 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V39 tmp32 [V39 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V40 tmp33 [V40,T05] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V41 tmp34 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V42 tmp35 [V42,T15] ( 2, 2 ) byref -> rbx single-def "Inlining Arg"
+; V42 tmp35 [V42,T16] ( 2, 2 ) byref -> rbx single-def "Inlining Arg"
; V43 tmp36 [V43,T30] ( 2, 2 ) int -> rsi "Inlining Arg"
;* V44 tmp37 [V44,T44] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V45 tmp38 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V47 tmp40 [V47 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V48 tmp41 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
;* V49 tmp42 [V49 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V50 tmp43 [V50,T06] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V51 tmp44 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V52 tmp45 [V52,T16] ( 2, 2 ) byref -> rbx single-def "Inlining Arg"
+; V52 tmp45 [V52,T17] ( 2, 2 ) byref -> rbx single-def "Inlining Arg"
; V53 tmp46 [V53,T31] ( 2, 2 ) int -> rsi "Inlining Arg"
;* V54 tmp47 [V54,T45] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V55 tmp48 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V57 tmp50 [V57 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V58 tmp51 [V58 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V59 tmp52 [V59,T07] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V60 tmp53 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V61 tmp54 [V61,T17] ( 2, 2 ) byref -> rbx single-def "Inlining Arg"
+; V61 tmp54 [V61,T11] ( 3, 3 ) byref -> rbx single-def "Inlining Arg"
; V62 tmp55 [V62,T32] ( 2, 2 ) int -> rsi "Inlining Arg"
;* V63 tmp56 [V63,T46] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V64 tmp57 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V65 tmp58 [V65 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V66 tmp59 [V66 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V67 tmp60 [V67 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V68 tmp61 [V68,T08] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V69 tmp62 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V70 tmp63 [V70,T18] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
; V71 tmp64 [V71,T33] ( 2, 2 ) int -> rdx "Inlining Arg"
;* V72 tmp65 [V72,T47] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V73 tmp66 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V74 tmp67 [V74 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V75 tmp68 [V75 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V76 tmp69 [V76 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V77 tmp70 [V77,T09] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V78 tmp71 [V78 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V79 tmp72 [V79,T19] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
; V80 tmp73 [V80,T34] ( 2, 2 ) int -> rsi "Inlining Arg"
;* V81 tmp74 [V81,T48] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V82 tmp75 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V83 tmp76 [V83 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V84 tmp77 [V84 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V85 tmp78 [V85 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
;* V86 tmp79 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
; V87 tmp80 [V87,T01] ( 5, 6 ) ref -> rax "Single return block return value"
;* V88 tmp81 [V88 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V89 tmp82 [V89 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V90 tmp83 [V90 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
;* V91 tmp84 [V91 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
;* V92 tmp85 [V92 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP
;* V93 tmp86 [V93 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
;* V94 tmp87 [V94 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
;* V95 tmp88 [V95 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;* V96 tmp89 [V96 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
;* V97 tmp90 [V97 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
;* V98 tmp91 [V98 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP
;* V99 tmp92 [V99 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
;* V100 tmp93 [V100 ] ( 0, 0 ) byref -> zero-ref "field V30._reference (fldOffset=0x0)" P-INDEP
;* V101 tmp94 [V101 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
;* V102 tmp95 [V102 ] ( 0, 0 ) byref -> zero-ref single-def "field V32._reference (fldOffset=0x0)" P-INDEP
;* V103 tmp96 [V103 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
;* V104 tmp97 [V104 ] ( 0, 0 ) byref -> zero-ref single-def "field V36._reference (fldOffset=0x0)" P-INDEP
;* V105 tmp98 [V105 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP
;* V106 tmp99 [V106 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP
;* V107 tmp100 [V107 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
;* V108 tmp101 [V108 ] ( 0, 0 ) byref -> zero-ref single-def "field V41._reference (fldOffset=0x0)" P-INDEP
;* V109 tmp102 [V109 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
;* V110 tmp103 [V110 ] ( 0, 0 ) byref -> zero-ref single-def "field V45._reference (fldOffset=0x0)" P-INDEP
;* V111 tmp104 [V111 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP
;* V112 tmp105 [V112 ] ( 0, 0 ) byref -> zero-ref "field V49._reference (fldOffset=0x0)" P-INDEP
;* V113 tmp106 [V113 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
;* V114 tmp107 [V114 ] ( 0, 0 ) byref -> zero-ref single-def "field V51._reference (fldOffset=0x0)" P-INDEP
;* V115 tmp108 [V115 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP
;* V116 tmp109 [V116 ] ( 0, 0 ) byref -> zero-ref single-def "field V55._reference (fldOffset=0x0)" P-INDEP
;* V117 tmp110 [V117 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
;* V118 tmp111 [V118 ] ( 0, 0 ) byref -> zero-ref "field V58._reference (fldOffset=0x0)" P-INDEP
;* V119 tmp112 [V119 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP
;* V120 tmp113 [V120 ] ( 0, 0 ) byref -> zero-ref single-def "field V60._reference (fldOffset=0x0)" P-INDEP
;* V121 tmp114 [V121 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x8)" P-INDEP
;* V122 tmp115 [V122 ] ( 0, 0 ) byref -> zero-ref single-def "field V64._reference (fldOffset=0x0)" P-INDEP
;* V123 tmp116 [V123 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x8)" P-INDEP
;* V124 tmp117 [V124 ] ( 0, 0 ) byref -> zero-ref "field V67._reference (fldOffset=0x0)" P-INDEP
;* V125 tmp118 [V125 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x8)" P-INDEP
;* V126 tmp119 [V126 ] ( 0, 0 ) byref -> zero-ref single-def "field V69._reference (fldOffset=0x0)" P-INDEP
;* V127 tmp120 [V127 ] ( 0, 0 ) int -> zero-ref "field V69._length (fldOffset=0x8)" P-INDEP
;* V128 tmp121 [V128 ] ( 0, 0 ) byref -> zero-ref single-def "field V73._reference (fldOffset=0x0)" P-INDEP
;* V129 tmp122 [V129 ] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0x8)" P-INDEP
;* V130 tmp123 [V130 ] ( 0, 0 ) byref -> zero-ref "field V76._reference (fldOffset=0x0)" P-INDEP
;* V131 tmp124 [V131 ] ( 0, 0 ) int -> zero-ref "field V76._length (fldOffset=0x8)" P-INDEP
;* V132 tmp125 [V132 ] ( 0, 0 ) byref -> zero-ref single-def "field V78._reference (fldOffset=0x0)" P-INDEP
;* V133 tmp126 [V133 ] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x8)" P-INDEP
;* V134 tmp127 [V134 ] ( 0, 0 ) byref -> zero-ref single-def "field V82._reference (fldOffset=0x0)" P-INDEP
;* V135 tmp128 [V135 ] ( 0, 0 ) int -> zero-ref "field V82._length (fldOffset=0x8)" P-INDEP
; V136 tmp129 [V136,T20] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
; V137 tmp130 [V137,T21] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
; V138 tmp131 [V138,T22] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
; V139 tmp132 [V139,T23] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
; V140 tmp133 [V140,T35] ( 2, 2 ) int -> rsi "argument with side effect"
; V141 tmp134 [V141,T24] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
; V142 tmp135 [V142,T25] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
; V143 tmp136 [V143,T36] ( 2, 2 ) int -> rsi "argument with side effect"
; V144 tmp137 [V144,T26] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V145 tmp138 [V145,T37] ( 2, 2 ) int -> rsi "argument with side effect"
; V146 cse0 [V146,T40] ( 3, 1.50) long -> r15 "CSE #19: conservative"
;
; Lcl frame size = 40
G_M4972_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
xor eax, eax
mov qword ptr [rbp-0x20], rax
mov rbx, rdi
;; size=34 bbWeight=1 PerfScore 8.58
G_M4972_IG02:
test rbx, rbx
je G_M4972_IG24
;; size=9 bbWeight=1 PerfScore 1.25
G_M4972_IG03:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Array
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
mov r15, rax
test r15, r15
jne G_M4972_IG18
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Collections.ICollection
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFINTERFACE
call [rax]CORINFO_HELP_ISINSTANCEOFINTERFACE
mov r15, rax
test r15, r15
jne G_M4972_IG13
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Runtime.InteropServices.SafeHandle
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
mov r15, rax
test r15, r15
jne G_M4972_IG08
mov rdi, 0xD1FFAB1E ; System.IntPtr
cmp qword ptr [rbx], rdi
jne G_M4972_IG06
lea rdi, [rbp-0x40]
mov esi, 2
mov edx, 1
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int):this
mov edi, dword ptr [rbp-0x30]
cmp edi, dword ptr [rbp-0x20]
ja G_M4972_IG26
mov rsi, bword ptr [rbp-0x28]
mov eax, edi
lea r15, bword ptr [rsi+2*rax]
mov esi, dword ptr [rbp-0x20]
sub esi, edi
cmp esi, 2
jae SHORT G_M4972_IG04
lea rdi, [rbp-0x40]
mov rsi, 0xD1FFAB1E ; '0x'
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
jmp SHORT G_M4972_IG05
;; size=216 bbWeight=0.50 PerfScore 19.25
G_M4972_IG04:
- mov rdi, 0xD1FFAB1E
- mov edx, dword ptr [rdi]
- mov dword ptr [r15], edx
+ mov dword ptr [r15], 0xD1FFAB1E
mov edi, dword ptr [rbp-0x30]
add edi, 2
mov dword ptr [rbp-0x30], edi
- ;; size=24 bbWeight=0.50 PerfScore 2.75
+ ;; size=16 bbWeight=0.50 PerfScore 1.62
G_M4972_IG05:
lea rdi, [rbp-0x40]
mov rdx, rbx
mov rsi, 0xD1FFAB1E ; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[System.Object](System.Object,System.String):this
mov rcx, 0xD1FFAB1E ; 'X'
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[System.__Canon](System.__Canon,System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[System.__Canon](System.__Canon,System.String):this
jmp G_M4972_IG23
;; size=44 bbWeight=0.50 PerfScore 3.25
G_M4972_IG06:
mov rdi, rbx
mov rax, qword ptr [rbx]
mov r15, qword ptr [rax+0x40]
call [r15+0x08]System.Object:ToString():System.String:this
mov r14, rax
test r14, r14
je SHORT G_M4972_IG07
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Object:GetType():System.Type:this
call [rax]System.Object:GetType():System.Type:this
mov rdi, rax
mov esi, 2
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetCachedName(int):System.String:this
call [rax]System.RuntimeType:GetCachedName(int):System.String:this
mov rsi, rax
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.String:Equals(System.String,System.String):ubyte
call [rax]System.String:Equals(System.String,System.String):ubyte
test eax, eax
jne SHORT G_M4972_IG07
mov rdi, rbx
call [r15+0x08]System.Object:ToString():System.String:this
jmp G_M4972_IG25
;; size=91 bbWeight=0.50 PerfScore 13.12
G_M4972_IG07:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Net.NetEventSource:IdOf(System.Object):System.String
call [rax]System.Net.NetEventSource:IdOf(System.Object):System.String
jmp G_M4972_IG25
;; size=20 bbWeight=0.50 PerfScore 2.75
G_M4972_IG08:
lea rdi, [rbp-0x40]
mov esi, 5
mov edx, 3
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int):this
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Object:GetType():System.Type:this
call [rax]System.Object:GetType():System.Type:this
mov rdi, rax
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetCachedName(int):System.String:this
call [rax]System.RuntimeType:GetCachedName(int):System.String:this
mov rsi, rax
lea rdi, [rbp-0x40]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted(System.String):this
mov edi, dword ptr [rbp-0x30]
cmp edi, dword ptr [rbp-0x20]
ja G_M4972_IG26
mov rsi, bword ptr [rbp-0x28]
mov eax, edi
lea rbx, bword ptr [rsi+2*rax]
mov esi, dword ptr [rbp-0x20]
sub esi, edi
jne SHORT G_M4972_IG09
lea rdi, [rbp-0x40]
mov rsi, 0xD1FFAB1E ; ':'
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
jmp SHORT G_M4972_IG10
;; size=134 bbWeight=0.50 PerfScore 14.75
G_M4972_IG09:
- mov rdi, 0xD1FFAB1E
- movzx rax, word ptr [rdi]
- mov word ptr [rbx], ax
+ mov word ptr [rbx], 58
mov edi, dword ptr [rbp-0x30]
inc edi
mov dword ptr [rbp-0x30], edi
- ;; size=24 bbWeight=0.50 PerfScore 2.75
+ ;; size=13 bbWeight=0.50 PerfScore 1.62
G_M4972_IG10:
mov rdi, r15
mov rax, qword ptr [r15]
mov rax, qword ptr [rax+0x40]
call [rax+0x18]System.Object:GetHashCode():int:this
mov esi, eax
lea rdi, [rbp-0x40]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this
mov edi, dword ptr [rbp-0x30]
cmp edi, dword ptr [rbp-0x20]
ja G_M4972_IG26
mov rsi, bword ptr [rbp-0x28]
mov eax, edi
lea rbx, bword ptr [rsi+2*rax]
mov esi, dword ptr [rbp-0x20]
sub esi, edi
cmp esi, 3
jae SHORT G_M4972_IG11
lea rdi, [rbp-0x40]
mov rsi, 0xD1FFAB1E ; '(0x'
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
jmp SHORT G_M4972_IG12
;; size=91 bbWeight=0.50 PerfScore 12.75
G_M4972_IG11:
- mov rsi, 0xD1FFAB1E
- mov edx, dword ptr [rsi]
- mov edi, dword ptr [rsi+0x02]
- mov dword ptr [rbx], edx
- mov dword ptr [rbx+0x02], edi
+ mov dword ptr [rbx], 0xD1FFAB1E
+ mov word ptr [rbx+0x04], 120
mov esi, dword ptr [rbp-0x30]
add esi, 3
mov dword ptr [rbp-0x30], esi
- ;; size=29 bbWeight=0.50 PerfScore 4.25
+ ;; size=21 bbWeight=0.50 PerfScore 2.12
G_M4972_IG12:
mov rsi, qword ptr [r15+0x08]
lea rdi, [rbp-0x40]
mov rdx, 0xD1FFAB1E ; 'X'
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[long](long,System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[long](long,System.String):this
mov edi, dword ptr [rbp-0x30]
cmp edi, dword ptr [rbp-0x20]
ja G_M4972_IG26
mov rsi, bword ptr [rbp-0x28]
mov edx, edi
lea rsi, bword ptr [rsi+2*rdx]
mov edx, dword ptr [rbp-0x20]
sub edx, edi
je G_M4972_IG16
- mov rdi, 0xD1FFAB1E
- movzx rdx, word ptr [rdi]
- mov word ptr [rsi], dx
+ mov word ptr [rsi], 41
jmp G_M4972_IG22
- ;; size=84 bbWeight=0.50 PerfScore 9.62
+ ;; size=73 bbWeight=0.50 PerfScore 8.50
G_M4972_IG13:
lea rdi, [rbp-0x40]
mov esi, 2
mov edx, 2
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int):this
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Object:GetType():System.Type:this
call [rax]System.Object:GetType():System.Type:this
mov rdi, rax
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetCachedName(int):System.String:this
call [rax]System.RuntimeType:GetCachedName(int):System.String:this
mov rsi, rax
lea rdi, [rbp-0x40]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted(System.String):this
mov edi, dword ptr [rbp-0x30]
cmp edi, dword ptr [rbp-0x20]
ja G_M4972_IG26
mov rsi, bword ptr [rbp-0x28]
mov eax, edi
lea rbx, bword ptr [rsi+2*rax]
mov esi, dword ptr [rbp-0x20]
sub esi, edi
jne SHORT G_M4972_IG14
lea rdi, [rbp-0x40]
mov rsi, 0xD1FFAB1E ; '('
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
jmp SHORT G_M4972_IG15
;; size=134 bbWeight=0.50 PerfScore 14.75
G_M4972_IG14:
- mov rdi, 0xD1FFAB1E
- movzx r11, word ptr [rdi]
- mov word ptr [rbx], r11w
+ mov word ptr [rbx], 40
mov edi, dword ptr [rbp-0x30]
inc edi
mov dword ptr [rbp-0x30], edi
- ;; size=26 bbWeight=0.50 PerfScore 2.75
+ ;; size=13 bbWeight=0.50 PerfScore 1.62
G_M4972_IG15:
mov rdi, r15
mov r11, 0xD1FFAB1E ; code for System.Collections.ICollection:get_Count():int:this
call [r11]System.Collections.ICollection:get_Count():int:this
mov esi, eax
lea rdi, [rbp-0x40]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this
mov edi, dword ptr [rbp-0x30]
cmp edi, dword ptr [rbp-0x20]
ja G_M4972_IG26
mov rsi, bword ptr [rbp-0x28]
mov eax, edi
lea rbx, bword ptr [rsi+2*rax]
mov esi, dword ptr [rbp-0x20]
sub esi, edi
jne SHORT G_M4972_IG17
;; size=63 bbWeight=0.50 PerfScore 7.75
G_M4972_IG16:
lea rdi, [rbp-0x40]
mov rsi, 0xD1FFAB1E ; ')'
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
jmp G_M4972_IG23
;; size=31 bbWeight=0.50 PerfScore 3.00
G_M4972_IG17:
- mov rdi, 0xD1FFAB1E
- movzx rsi, word ptr [rdi]
- mov word ptr [rbx], si
+ mov word ptr [rbx], 41
jmp G_M4972_IG22
- ;; size=21 bbWeight=0.50 PerfScore 2.62
+ ;; size=10 bbWeight=0.50 PerfScore 1.50
G_M4972_IG18:
lea rdi, [rbp-0x40]
mov esi, 2
mov edx, 2
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int):this
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Object:GetType():System.Type:this
call [rax]System.Object:GetType():System.Type:this
mov rdi, rax
call System.RuntimeTypeHandle:GetElementType(System.RuntimeType):System.RuntimeType
mov rdx, rax
lea rdi, [rbp-0x40]
mov rsi, 0xD1FFAB1E ; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[System.Type](System.Type):this
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[System.__Canon](System.__Canon):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[System.__Canon](System.__Canon):this
mov edi, dword ptr [rbp-0x30]
cmp edi, dword ptr [rbp-0x20]
ja G_M4972_IG26
mov rsi, bword ptr [rbp-0x28]
mov eax, edi
lea r15, bword ptr [rsi+2*rax]
mov esi, dword ptr [rbp-0x20]
sub esi, edi
jne SHORT G_M4972_IG19
lea rdi, [rbp-0x40]
mov rsi, 0xD1FFAB1E ; '['
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
jmp SHORT G_M4972_IG20
;; size=135 bbWeight=0.50 PerfScore 13.62
G_M4972_IG19:
- mov rsi, 0xD1FFAB1E
- movzx rdi, word ptr [rsi]
- mov word ptr [r15], di
+ mov word ptr [r15], 91
mov esi, dword ptr [rbp-0x30]
inc esi
mov dword ptr [rbp-0x30], esi
- ;; size=25 bbWeight=0.50 PerfScore 2.75
+ ;; size=14 bbWeight=0.50 PerfScore 1.62
G_M4972_IG20:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Array
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
call [rax]CORINFO_HELP_CHKCASTCLASS
mov esi, dword ptr [rax+0x08]
test esi, esi
jl G_M4972_IG27
lea rdi, [rbp-0x40]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this
mov edi, dword ptr [rbp-0x30]
cmp edi, dword ptr [rbp-0x20]
ja SHORT G_M4972_IG26
mov rsi, bword ptr [rbp-0x28]
mov eax, edi
lea rbx, bword ptr [rsi+2*rax]
mov esi, dword ptr [rbp-0x20]
sub esi, edi
jne SHORT G_M4972_IG21
lea rdi, [rbp-0x40]
mov rsi, 0xD1FFAB1E ; ']'
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
jmp SHORT G_M4972_IG23
;; size=105 bbWeight=0.50 PerfScore 12.38
G_M4972_IG21:
- mov rdi, 0xD1FFAB1E
- movzx rax, word ptr [rdi]
- mov word ptr [rbx], ax
- ;; size=16 bbWeight=0.50 PerfScore 1.62
+ mov word ptr [rbx], 93
+ ;; size=5 bbWeight=0.50 PerfScore 0.50
G_M4972_IG22:
mov edi, dword ptr [rbp-0x30]
inc edi
mov dword ptr [rbp-0x30], edi
;; size=8 bbWeight=0.50 PerfScore 1.12
G_M4972_IG23:
lea rdi, [rbp-0x40]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this
jmp SHORT G_M4972_IG25
;; size=18 bbWeight=0.50 PerfScore 2.88
G_M4972_IG24:
mov rax, 0xD1FFAB1E ; '(null)'
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M4972_IG25:
add rsp, 40
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 3.25
G_M4972_IG26:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M4972_IG27:
call CORINFO_HELP_OVERFLOW
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1422, prolog size 31, PerfScore 163.71, instruction count 324, allocated bytes for code 1422 (MethodHash=7d61ec93) for method System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
+; Total bytes of code 1338, prolog size 31, PerfScore 153.71, instruction count 307, allocated bytes for code 1338 (MethodHash=7d61ec93) for method System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/ca80434cf9e393a85df5f2a8879bac7f |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 20 minutes 25 seconds.
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: