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] xtqqczze/dotnet-runtime/wip-UIntCastLengthCheck3 #706
Comments
xtqqczze
referenced
this issue
in xtqqczze/dotnet-runtime
Oct 7, 2024
UIntCastLengthCheck |
Top method regressions12 (2.20 % of base) - System.Xml.Serialization.CodeIdentifier:MakeValid(System.String):System.String ; Assembly listing for method System.Xml.Serialization.CodeIdentifier:MakeValid(System.String):System.String (Tier0-FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; Tier-0 switched to FullOpts code
; optimized code
; optimized using Synthesized PGO
; rbp based frame
; partially interruptible
; with Synthesized PGO: fgCalledCount is 100
; No PGO data
; 0 inlinees with PGO data; 9 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 5, 12.53) ref -> rbx class-hnd single-def <System.String>
-; V01 loc0 [V01 ] ( 24, 28.07) struct (32) [rbp-0x40] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
+; V01 loc0 [V01 ] ( 24, 28.07) struct (32) [rbp-0x48] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
;* V03 loc2 [V03,T16] ( 0, 0 ) int -> zero-ref
; V04 loc3 [V04,T02] ( 5, 11.90) ushort -> r14
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V07 tmp2 [V07,T06] ( 2, 4 ) long -> rdi "Inlining Arg"
;* V08 tmp3 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V10 tmp5 [V10,T07] ( 5, 3.80) int -> r13 "Inline stloc first use temp"
;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V13 tmp8 [V13,T11] ( 2, 2.72) byref -> rcx "Inlining Arg"
+; V13 tmp8 [V13,T11] ( 2, 2.72) byref -> r12 "Inlining Arg"
; V14 tmp9 [V14,T09] ( 2, 3.04) int -> rax "Inlining Arg"
;* V15 tmp10 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V16 tmp11 [V16 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V17 tmp12 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V18 tmp13 [V18,T04] ( 4, 6.74) int -> rdi "Inline stloc first use temp"
;* V19 tmp14 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
-; V20 tmp15 [V20 ] ( 3, 1.44) struct (16) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
+; V20 tmp15 [V20 ] ( 3, 1.44) struct (16) [rbp-0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
; V21 tmp16 [V21,T14] ( 2, 1.92) ref -> rbx class-hnd exact single-def "impAppendStmt" <System.String>
; V22 tmp17 [V22,T10] ( 3, 2.88) int -> rbx "Inlining Arg"
;* V23 tmp18 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V24 tmp19 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V25 tmp20 [V25,T15] ( 3, 1.34) ref -> rsi class-hnd single-def "Inline stloc first use temp" <ushort[]>
;* V26 tmp21 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "field V02._reference (fldOffset=0x0)" P-INDEP
;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
; V28 tmp23 [V28,T13] ( 2, 2 ) byref -> rdi single-def "field V06._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp24 [V29,T17] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V31 tmp26 [V31 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
;* V32 tmp27 [V32 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
; V36 tmp31 [V36,T08] ( 2, 3.37) byref -> rsi "field V19._reference (fldOffset=0x0)" P-INDEP
; V37 tmp32 [V37,T05] ( 2, 4.43) int -> rax "field V19._length (fldOffset=0x8)" P-INDEP
-; V38 tmp33 [V38 ] ( 2, 0.96) byref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V20._reference (fldOffset=0x0)" P-DEP
-; V39 tmp34 [V39 ] ( 2, 0.96) int -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V20._length (fldOffset=0x8)" P-DEP
+; V38 tmp33 [V38 ] ( 2, 0.96) byref -> [rbp-0x58] do-not-enreg[X] addr-exposed "field V20._reference (fldOffset=0x0)" P-DEP
+; V39 tmp34 [V39 ] ( 2, 0.96) int -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V20._length (fldOffset=0x8)" P-DEP
; V40 tmp35 [V40,T18] ( 2, 0.96) byref -> rdi single-def "field V23._reference (fldOffset=0x0)" P-INDEP
; V41 tmp36 [V41,T19] ( 2, 0.96) int -> rbx "field V23._length (fldOffset=0x8)" P-INDEP
-; V42 GsCookie [V42 ] ( 1, 1 ) long -> [rbp-0x58] do-not-enreg[X] addr-exposed "GSSecurityCookie"
+; V42 GsCookie [V42 ] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[X] addr-exposed "GSSecurityCookie"
; V43 cse0 [V43,T03] ( 2, 10.53) int -> rdi "CSE #02: aggressive"
; V44 cse1 [V44,T12] ( 3, 2.28) int -> rax "CSE #01: moderate"
; V45 rat0 [V45,T00] ( 5, 19.05) long -> r15 "Widened IV V03"
;
-; Lcl frame size = 64
+; Lcl frame size = 56
G_M19837_IG01:
push rbp
push r15
push r14
push r13
+ push r12
push rbx
- sub rsp, 64
+ sub rsp, 56
lea rbp, [rsp+0x60]
+ xor eax, eax
+ mov qword ptr [rbp-0x58], rax
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x50], ymm8
- vmovdqa xmmword ptr [rbp-0x30], xmm8
- mov qword ptr [rbp-0x58], 0xD1FFAB1E
+ mov qword ptr [rbp-0x30], rax
+ mov qword ptr [rbp-0x60], 0xD1FFAB1E
mov rbx, rdi
- ;; size=43 bbWeight=1 PerfScore 11.33
+ ;; size=50 bbWeight=1 PerfScore 12.58
G_M19837_IG02:
test rbx, rbx
je G_M19837_IG29
test dword ptr [rsp], esp
sub rsp, 0x400
lea rdi, [rsp]
xor rax, rax
- mov gword ptr [rbp-0x40], rax
- mov bword ptr [rbp-0x30], rdi
- mov dword ptr [rbp-0x28], 511
+ mov gword ptr [rbp-0x48], rax
+ mov bword ptr [rbp-0x38], rdi
+ mov dword ptr [rbp-0x30], 511
;; size=40 bbWeight=1 PerfScore 8.25
G_M19837_IG03:
- mov dword ptr [rbp-0x38], eax
+ mov dword ptr [rbp-0x40], eax
;; size=3 bbWeight=1 PerfScore 1.00
G_M19837_IG04:
xor r15d, r15d
jmp SHORT G_M19837_IG07
;; size=5 bbWeight=1 PerfScore 2.25
G_M19837_IG05:
- lea rdi, [rbp-0x40]
+ lea rdi, [rbp-0x48]
mov esi, r14d
mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:GrowAndAppend(ushort):this
call [rax]System.Text.ValueStringBuilder:GrowAndAppend(ushort):this
;; size=19 bbWeight=1.06 PerfScore 4.26
G_M19837_IG06:
inc r15d
;; size=3 bbWeight=4.26 PerfScore 1.07
G_M19837_IG07:
mov edi, dword ptr [rbx+0x08]
cmp edi, r15d
jle G_M19837_IG18
;; size=12 bbWeight=5.26 PerfScore 17.11
G_M19837_IG08:
- cmp dword ptr [rbp-0x38], 511
+ cmp dword ptr [rbp-0x40], 511
jge G_M19837_IG18
;; size=13 bbWeight=4.74 PerfScore 14.21
G_M19837_IG09:
movzx r14, word ptr [rbx+2*r15+0x0C]
mov edi, r14d
mov rax, 0xD1FFAB1E ; code for System.Xml.Serialization.CodeIdentifier:IsValid(ushort):ubyte
call [rax]System.Xml.Serialization.CodeIdentifier:IsValid(ushort):ubyte
test eax, eax
je SHORT G_M19837_IG06
;; size=25 bbWeight=4.26 PerfScore 28.78
G_M19837_IG10:
- cmp dword ptr [rbp-0x38], 0
+ cmp dword ptr [rbp-0x40], 0
jne SHORT G_M19837_IG16
;; size=6 bbWeight=2.22 PerfScore 6.65
G_M19837_IG11:
mov edi, r14d
mov rax, 0xD1FFAB1E ; code for System.Globalization.CharUnicodeInfo:GetUnicodeCategoryNoBoundsChecks(uint):int
call [rax]System.Globalization.CharUnicodeInfo:GetUnicodeCategoryNoBoundsChecks(uint):int
cmp eax, 8
jne SHORT G_M19837_IG16
;; size=20 bbWeight=1.15 PerfScore 5.48
G_M19837_IG12:
- mov r13d, dword ptr [rbp-0x38]
- mov edi, dword ptr [rbp-0x28]
+ mov r13d, dword ptr [rbp-0x40]
+ mov edi, dword ptr [rbp-0x30]
add edi, -4
cmp r13d, edi
jle SHORT G_M19837_IG14
;; size=15 bbWeight=0.76 PerfScore 2.66
G_M19837_IG13:
- lea rdi, [rbp-0x40]
+ lea rdi, [rbp-0x48]
mov esi, 4
mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:Grow(int):this
call [rax]System.Text.ValueStringBuilder:Grow(int):this
;; size=21 bbWeight=0.61 PerfScore 2.43
G_M19837_IG14:
- mov eax, dword ptr [rbp-0x28]
+ mov eax, dword ptr [rbp-0x30]
cmp r13d, eax
ja G_M19837_IG31
- mov rcx, bword ptr [rbp-0x30]
+ mov rcx, bword ptr [rbp-0x38]
mov edx, r13d
- lea rcx, bword ptr [rcx+2*rdx]
+ lea r12, bword ptr [rcx+2*rdx]
sub eax, r13d
cmp eax, 4
jb G_M19837_IG30
;; size=35 bbWeight=0.76 PerfScore 4.18
G_M19837_IG15:
- mov rax, 0xD1FFAB1E
- mov rdx, qword ptr [rax]
- mov qword ptr [rcx], rdx
- mov eax, dword ptr [rbp-0x38]
- add eax, 4
- mov dword ptr [rbp-0x38], eax
- ;; size=25 bbWeight=0.60 PerfScore 3.30
+ mov rdi, 0xD1FFAB1E
+ mov rsi, qword ptr [rdi]
+ mov qword ptr [r12], rsi
+ mov edi, dword ptr [rbp-0x40]
+ add edi, 4
+ mov dword ptr [rbp-0x40], edi
+ ;; size=26 bbWeight=0.60 PerfScore 3.30
G_M19837_IG16:
- mov edi, dword ptr [rbp-0x38]
- mov rsi, bword ptr [rbp-0x30]
- mov eax, dword ptr [rbp-0x28]
+ mov edi, dword ptr [rbp-0x40]
+ mov rsi, bword ptr [rbp-0x38]
+ mov eax, dword ptr [rbp-0x30]
cmp edi, eax
jae G_M19837_IG05
;; size=18 bbWeight=2.22 PerfScore 9.42
G_M19837_IG17:
mov eax, edi
mov word ptr [rsi+2*rax], r14w
inc edi
- mov dword ptr [rbp-0x38], edi
+ mov dword ptr [rbp-0x40], edi
jmp G_M19837_IG06
;; size=17 bbWeight=1.15 PerfScore 5.19
G_M19837_IG18:
- cmp dword ptr [rbp-0x38], 0
+ cmp dword ptr [rbp-0x40], 0
jne SHORT G_M19837_IG23
;; size=6 bbWeight=1 PerfScore 3.00
G_M19837_IG19:
mov rax, 0xD1FFAB1E ; 'Item'
;; size=10 bbWeight=0.52 PerfScore 0.13
G_M19837_IG20:
- cmp qword ptr [rbp-0x58], 0xD1FFAB1E
+ cmp qword ptr [rbp-0x60], 0xD1FFAB1E
je SHORT G_M19837_IG21
call CORINFO_HELP_FAIL_FAST
;; size=15 bbWeight=0.52 PerfScore 2.08
G_M19837_IG21:
nop
;; size=1 bbWeight=0.52 PerfScore 0.13
G_M19837_IG22:
- lea rsp, [rbp-0x20]
+ lea rsp, [rbp-0x28]
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0.52 PerfScore 2.08
+ ;; size=15 bbWeight=0.52 PerfScore 2.34
G_M19837_IG23:
- mov ebx, dword ptr [rbp-0x38]
- cmp ebx, dword ptr [rbp-0x28]
+ mov ebx, dword ptr [rbp-0x40]
+ cmp ebx, dword ptr [rbp-0x30]
ja G_M19837_IG31
- mov rdi, bword ptr [rbp-0x30]
- mov bword ptr [rbp-0x50], rdi
- mov dword ptr [rbp-0x48], ebx
- lea rdi, [rbp-0x50]
+ mov rdi, bword ptr [rbp-0x38]
+ mov bword ptr [rbp-0x58], rdi
+ mov dword ptr [rbp-0x50], ebx
+ lea rdi, [rbp-0x58]
mov rax, 0xD1FFAB1E ; code for System.Span`1[ushort]:ToString():System.String:this
call [rax]System.Span`1[ushort]:ToString():System.String:this
mov rbx, rax
- mov rsi, gword ptr [rbp-0x40]
+ mov rsi, gword ptr [rbp-0x48]
vxorps ymm0, ymm0, ymm0
- vmovdqu ymmword ptr [rbp-0x40], ymm0
+ vmovdqu ymmword ptr [rbp-0x48], ymm0
test rsi, rsi
je SHORT G_M19837_IG25
;; size=60 bbWeight=0.48 PerfScore 7.00
G_M19837_IG24:
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ushort]:Return(ushort[],ubyte):this
call [rax]System.Buffers.SharedArrayPool`1[ushort]:Return(ushort[],ubyte):this
;; size=27 bbWeight=0.38 PerfScore 2.21
G_M19837_IG25:
mov rax, rbx
;; size=3 bbWeight=0.48 PerfScore 0.12
G_M19837_IG26:
- cmp qword ptr [rbp-0x58], 0xD1FFAB1E
+ cmp qword ptr [rbp-0x60], 0xD1FFAB1E
je SHORT G_M19837_IG27
call CORINFO_HELP_FAIL_FAST
;; size=15 bbWeight=0.48 PerfScore 1.92
G_M19837_IG27:
nop
;; size=1 bbWeight=0.48 PerfScore 0.12
G_M19837_IG28:
- lea rsp, [rbp-0x20]
+ lea rsp, [rbp-0x28]
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0.48 PerfScore 1.92
+ ;; size=15 bbWeight=0.48 PerfScore 2.16
G_M19837_IG29:
mov edi, 0x15521
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
G_M19837_IG30:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M19837_IG31:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 546, prolog size 40, PerfScore 148.25, instruction count 140, allocated bytes for code 546 (MethodHash=9674b282) for method System.Xml.Serialization.CodeIdentifier:MakeValid(System.String):System.String (Tier0-FullOpts)
+; Total bytes of code 558, prolog size 47, PerfScore 150.00, instruction count 145, allocated bytes for code 558 (MethodHash=9674b282) for method System.Xml.Serialization.CodeIdentifier:MakeValid(System.String):System.String (Tier0-FullOpts)
; ============================================================ 9 (1.11 % of base) - System.String:Concat(System.Collections.Generic.IEnumerable`1[System.String]):System.String ; Assembly listing for method System.String:Concat(System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier0-FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; Tier-0 switched to FullOpts code
; optimized code
; optimized using Synthesized PGO
; rbp based frame
; fully interruptible
; with Synthesized PGO: fgCalledCount is 100
; No PGO data
; 0 inlinees with PGO data; 6 single block inlinees; 14 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T03] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.String]>
; V01 loc0 [V01,T02] ( 9, 7.57) ref -> [rbp-0x50] class-hnd EH-live single-def <System.Collections.Generic.IEnumerator`1[System.String]>
; V02 loc1 [V02,T12] ( 6, 1.33) ref -> rbx class-hnd single-def <System.String>
; V03 loc2 [V03 ] ( 33, 15.34) struct (32) [rbp-0x38] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
; V04 loc3 [V04,T10] ( 4, 2 ) ref -> rbx class-hnd <System.String>
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V08 tmp2 [V08,T13] ( 5, 1.25) ref -> rbx
; V09 tmp3 [V09,T16] ( 2, 0.92) long -> rsi "Inlining Arg"
; V10 tmp4 [V10,T19] ( 5, 0.56) int -> rsi "Inline stloc first use temp"
; V11 tmp5 [V11,T20] ( 5, 0.54) int -> r14 "Inline stloc first use temp"
;* V12 tmp6 [V12 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V14 tmp8 [V14,T24] ( 2, 0.43) byref -> rdi single-def "Inlining Arg"
; V15 tmp9 [V15,T25] ( 2, 0.43) int -> rdx "Inlining Arg"
;* V16 tmp10 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V17 tmp11 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V18 tmp12 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V19 tmp13 [V19 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V20 tmp14 [V20,T00] ( 5, 16.59) ref -> rbx class-hnd "Inlining Arg" <System.__Canon>
; V21 tmp15 [V21,T04] ( 5, 5.62) int -> rsi "Inline stloc first use temp"
; V22 tmp16 [V22,T05] ( 5, 5.38) int -> r15 "Inline stloc first use temp"
;* V23 tmp17 [V23 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V24 tmp18 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V25 tmp19 [V25,T07] ( 2, 4.31) byref -> rdi "Inlining Arg"
-; V26 tmp20 [V26,T08] ( 2, 4.31) int -> rdx "Inlining Arg"
+; V26 tmp20 [V26,T08] ( 2, 4.31) int -> rax "Inlining Arg"
;* V27 tmp21 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V28 tmp22 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V29 tmp23 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V30 tmp24 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V31 tmp25 [V31 ] ( 3, 0.69) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
; V32 tmp26 [V32,T15] ( 2, 0.92) ref -> rbx class-hnd exact single-def "impAppendStmt" <System.String>
; V33 tmp27 [V33,T11] ( 3, 1.38) int -> rbx "Inlining Arg"
;* V34 tmp28 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V35 tmp29 [V35 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V36 tmp30 [V36,T18] ( 3, 0.65) ref -> rsi class-hnd single-def "Inline stloc first use temp" <ushort[]>
;* V37 tmp31 [V37 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V38 tmp32 [V38 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
; V39 tmp33 [V39,T21] ( 2, 0.46) byref -> rsi single-def "field V07._reference (fldOffset=0x0)" P-INDEP
;* V40 tmp34 [V40,T26] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V41 tmp35 [V41 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP
;* V42 tmp36 [V42 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
;* V43 tmp37 [V43 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp38 [V44 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
;* V45 tmp39 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp40 [V46 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
;* V47 tmp41 [V47 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp42 [V48 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
;* V49 tmp43 [V49 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp44 [V50 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
;* V51 tmp45 [V51 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-INDEP
;* V52 tmp46 [V52 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
; V53 tmp47 [V53 ] ( 2, 0.46) byref -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V31._reference (fldOffset=0x0)" P-DEP
; V54 tmp48 [V54 ] ( 2, 0.46) int -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V31._length (fldOffset=0x8)" P-DEP
; V55 tmp49 [V55,T22] ( 2, 0.46) byref -> rdi single-def "field V34._reference (fldOffset=0x0)" P-INDEP
; V56 tmp50 [V56,T23] ( 2, 0.46) int -> rbx "field V34._length (fldOffset=0x8)" P-INDEP
; V57 GsCookie [V57 ] ( 1, 1 ) long -> [rbp-0x58] do-not-enreg[X] addr-exposed "GSSecurityCookie"
; V58 PSPSym [V58,T14] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
; V59 cse0 [V59,T17] ( 7, 0.89) int -> r15 "CSE #03: conservative"
; V60 cse1 [V60,T01] ( 7, 8.85) int -> r14 "CSE #07: aggressive"
-; V61 cse2 [V61,T09] ( 3, 3.23) int -> rdx "CSE #09: moderate"
+; V61 cse2 [V61,T09] ( 3, 3.23) int -> rax "CSE #09: moderate"
; V62 cse3 [V62,T06] ( 3, 4.76) int -> r15 "CSE #08: aggressive"
;
; Lcl frame size = 72
G_M5822_IG01:
push rbp
push r15
push r14
push rbx
sub rsp, 72
lea rbp, [rsp+0x60]
xor eax, eax
mov qword ptr [rbp-0x48], rax
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x40], ymm8
mov qword ptr [rbp-0x20], rax
mov qword ptr [rbp-0x60], rsp
mov qword ptr [rbp-0x58], 0xD1FFAB1E
;; size=47 bbWeight=1 PerfScore 11.33
G_M5822_IG02:
test rdi, rdi
- je G_M5822_IG35
+ je G_M5822_IG34
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerable`1[System.__Canon]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this
call [r11]System.Collections.Generic.IEnumerable`1[System.__Canon]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this
mov gword ptr [rbp-0x50], rax
;; size=26 bbWeight=1 PerfScore 5.50
G_M5822_IG03:
mov rdi, gword ptr [rbp-0x50]
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_M5822_IG05
;; size=21 bbWeight=1 PerfScore 5.50
G_M5822_IG04:
mov rbx, 0xD1FFAB1E ; ''
- jmp G_M5822_IG31
+ jmp G_M5822_IG30
;; size=15 bbWeight=0.52 PerfScore 1.17
G_M5822_IG05:
mov rdi, gword ptr [rbp-0x50]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerator`1[System.__Canon]:get_Current():System.__Canon:this
call [r11]System.Collections.Generic.IEnumerator`1[System.__Canon]:get_Current():System.__Canon:this
mov rbx, rax
mov rdi, gword ptr [rbp-0x50]
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_M5822_IG07
;; size=41 bbWeight=0.48 PerfScore 4.80
G_M5822_IG06:
mov rsi, 0xD1FFAB1E ; ''
test rbx, rbx
cmove rbx, rsi
- jmp G_M5822_IG31
+ jmp G_M5822_IG30
;; size=22 bbWeight=0.25 PerfScore 0.69
G_M5822_IG07:
test dword ptr [rsp], esp
sub rsp, 512
lea rsi, [rsp]
xor rdi, rdi
mov gword ptr [rbp-0x38], rdi
mov bword ptr [rbp-0x28], rsi
mov dword ptr [rbp-0x20], 256
;; size=31 bbWeight=0.23 PerfScore 1.61
G_M5822_IG08:
mov dword ptr [rbp-0x30], edi
test rbx, rbx
je G_M5822_IG15
;; size=12 bbWeight=0.23 PerfScore 0.52
G_M5822_IG09:
mov esi, dword ptr [rbp-0x30]
mov r15d, dword ptr [rbx+0x08]
cmp r15d, 1
jne SHORT G_M5822_IG12
;; size=13 bbWeight=0.18 PerfScore 0.78
G_M5822_IG10:
cmp esi, dword ptr [rbp-0x20]
jae SHORT G_M5822_IG12
;; size=5 bbWeight=0.15 PerfScore 0.44
G_M5822_IG11:
cmp esi, dword ptr [rbp-0x20]
- jae G_M5822_IG30
+ jae G_M5822_IG29
mov rdi, bword ptr [rbp-0x28]
mov eax, esi
movzx rcx, word ptr [rbx+0x0C]
mov word ptr [rdi+2*rax], cx
inc esi
mov dword ptr [rbp-0x30], esi
jmp SHORT G_M5822_IG15
;; size=30 bbWeight=0.08 PerfScore 0.81
G_M5822_IG12:
mov r14d, dword ptr [rbp-0x30]
mov esi, dword ptr [rbp-0x20]
sub esi, r15d
cmp esi, r14d
jge SHORT G_M5822_IG14
;; size=15 bbWeight=0.11 PerfScore 0.38
G_M5822_IG13:
mov esi, r15d
lea rdi, [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:Grow(int):this
call [rax]System.Text.ValueStringBuilder:Grow(int):this
;; size=19 bbWeight=0.09 PerfScore 0.34
G_M5822_IG14:
cmp r14d, dword ptr [rbp-0x20]
- ja G_M5822_IG29
+ ja G_M5822_IG28
mov rdx, bword ptr [rbp-0x28]
mov esi, r14d
lea rdi, bword ptr [rdx+2*rsi]
mov edx, dword ptr [rbp-0x20]
sub edx, r14d
cmp r15d, edx
- ja G_M5822_IG28
+ ja G_M5822_IG27
mov edx, r15d
add rdx, rdx
lea rsi, bword ptr [rbx+0x0C]
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
add r15d, dword ptr [rbp-0x30]
mov dword ptr [rbp-0x30], r15d
;; size=66 bbWeight=0.11 PerfScore 1.56
G_M5822_IG15:
mov rdi, gword ptr [rbp-0x50]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerator`1[System.__Canon]:get_Current():System.__Canon:this
call [r11]System.Collections.Generic.IEnumerator`1[System.__Canon]:get_Current():System.__Canon:this
mov rbx, rax
test rbx, rbx
- je SHORT G_M5822_IG20
- ;; size=25 bbWeight=2.30 PerfScore 13.25
+ je G_M5822_IG23
+ ;; size=29 bbWeight=2.30 PerfScore 13.25
G_M5822_IG16:
mov r15d, dword ptr [rbp-0x30]
mov esi, r15d
mov r14d, dword ptr [rbx+0x08]
cmp r14d, 1
- jne SHORT G_M5822_IG22
+ jne SHORT G_M5822_IG19
;; size=17 bbWeight=1.84 PerfScore 8.29
G_M5822_IG17:
cmp esi, dword ptr [rbp-0x20]
- jae SHORT G_M5822_IG22
+ jae SHORT G_M5822_IG19
;; size=5 bbWeight=1.47 PerfScore 4.42
G_M5822_IG18:
cmp esi, dword ptr [rbp-0x20]
- jae G_M5822_IG30
+ jae G_M5822_IG29
mov rdi, bword ptr [rbp-0x28]
mov eax, esi
movzx rcx, word ptr [rbx+0x0C]
mov word ptr [rdi+2*rax], cx
inc esi
mov dword ptr [rbp-0x30], esi
- jmp SHORT G_M5822_IG20
+ jmp SHORT G_M5822_IG23
;; size=30 bbWeight=0.77 PerfScore 8.05
G_M5822_IG19:
+ mov esi, dword ptr [rbp-0x20]
+ sub esi, r14d
+ cmp esi, r15d
+ jge SHORT G_M5822_IG21
+ ;; size=11 bbWeight=1.08 PerfScore 2.69
+G_M5822_IG20:
+ mov esi, r14d
+ lea rdi, [rbp-0x38]
+ mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:Grow(int):this
+ call [rax]System.Text.ValueStringBuilder:Grow(int):this
+ ;; size=19 bbWeight=0.86 PerfScore 3.44
+G_M5822_IG21:
+ mov eax, dword ptr [rbp-0x20]
+ cmp r15d, eax
+ ja G_M5822_IG28
+ mov rcx, bword ptr [rbp-0x28]
+ mov edx, r15d
+ lea rdi, bword ptr [rcx+2*rdx]
+ sub eax, r15d
+ cmp r14d, eax
+ ja G_M5822_IG27
+ ;; size=35 bbWeight=1.08 PerfScore 5.92
+G_M5822_IG22:
mov edx, r14d
add rdx, rdx
lea rsi, bword ptr [rbx+0x0C]
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
add r14d, dword ptr [rbp-0x30]
mov dword ptr [rbp-0x30], r14d
;; size=30 bbWeight=1.08 PerfScore 7.80
-G_M5822_IG20:
+G_M5822_IG23:
mov rdi, gword ptr [rbp-0x50]
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_M5822_IG15
- ;; size=21 bbWeight=2.30 PerfScore 12.67
-G_M5822_IG21:
+ jne G_M5822_IG15
+ ;; size=25 bbWeight=2.30 PerfScore 12.67
+G_M5822_IG24:
mov ebx, dword ptr [rbp-0x30]
cmp ebx, dword ptr [rbp-0x20]
- jbe SHORT G_M5822_IG25
- jmp G_M5822_IG29
- ;; size=13 bbWeight=0.23 PerfScore 1.38
-G_M5822_IG22:
- mov esi, dword ptr [rbp-0x20]
- sub esi, r14d
- cmp esi, r15d
- jge SHORT G_M5822_IG24
- ;; size=11 bbWeight=1.08 PerfScore 2.69
-G_M5822_IG23:
- mov esi, r14d
- lea rdi, [rbp-0x38]
- mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:Grow(int):this
- call [rax]System.Text.ValueStringBuilder:Grow(int):this
- ;; size=19 bbWeight=0.86 PerfScore 3.44
-G_M5822_IG24:
- mov edx, dword ptr [rbp-0x20]
- cmp r15d, edx
- ja SHORT G_M5822_IG29
- mov rsi, bword ptr [rbp-0x28]
- mov edi, r15d
- lea rdi, bword ptr [rsi+2*rdi]
- sub edx, r15d
- cmp r14d, edx
ja SHORT G_M5822_IG28
- jmp SHORT G_M5822_IG19
- ;; size=29 bbWeight=1.08 PerfScore 8.07
-G_M5822_IG25:
mov rdi, bword ptr [rbp-0x28]
mov bword ptr [rbp-0x48], rdi
mov dword ptr [rbp-0x40], ebx
lea rdi, [rbp-0x48]
mov rax, 0xD1FFAB1E ; code for System.Span`1[ushort]:ToString():System.String:this
call [rax]System.Span`1[ushort]:ToString():System.String:this
mov rbx, rax
mov rsi, gword ptr [rbp-0x38]
vxorps ymm0, ymm0, ymm0
vmovdqu ymmword ptr [rbp-0x38], ymm0
test rsi, rsi
- je SHORT G_M5822_IG27
- ;; size=48 bbWeight=0.23 PerfScore 2.44
-G_M5822_IG26:
+ je SHORT G_M5822_IG26
+ ;; size=56 bbWeight=0.23 PerfScore 3.36
+G_M5822_IG25:
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ushort]:Return(ushort[],ubyte):this
call [rax]System.Buffers.SharedArrayPool`1[ushort]:Return(ushort[],ubyte):this
;; size=27 bbWeight=0.18 PerfScore 1.06
-G_M5822_IG27:
- jmp SHORT G_M5822_IG31
+G_M5822_IG26:
+ jmp SHORT G_M5822_IG30
;; size=2 bbWeight=0.23 PerfScore 0.46
-G_M5822_IG28:
+G_M5822_IG27:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M5822_IG29:
+G_M5822_IG28:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M5822_IG30:
+G_M5822_IG29:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-G_M5822_IG31:
+G_M5822_IG30:
mov rdi, gword ptr [rbp-0x50]
mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
call [r11]System.IDisposable:Dispose():this
mov rax, rbx
;; size=20 bbWeight=1 PerfScore 4.50
-G_M5822_IG32:
+G_M5822_IG31:
cmp qword ptr [rbp-0x58], 0xD1FFAB1E
- je SHORT G_M5822_IG33
+ je SHORT G_M5822_IG32
call CORINFO_HELP_FAIL_FAST
;; size=15 bbWeight=1 PerfScore 4.00
-G_M5822_IG33:
+G_M5822_IG32:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M5822_IG34:
+G_M5822_IG33:
lea rsp, [rbp-0x18]
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 3.50
-G_M5822_IG35:
+G_M5822_IG34:
mov edi, 0xDAB
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M5822_IG36:
+G_M5822_IG35:
push rbp
push r15
push r14
push rbx
push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x60]
;; size=18 bbWeight=0 PerfScore 0.00
-G_M5822_IG37:
+G_M5822_IG36:
cmp gword ptr [rbp-0x50], 0
- je SHORT G_M5822_IG38
+ je SHORT G_M5822_IG37
mov rdi, gword ptr [rbp-0x50]
mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
call [r11]System.IDisposable:Dispose():this
;; size=24 bbWeight=0 PerfScore 0.00
-G_M5822_IG38:
+G_M5822_IG37:
nop
;; size=1 bbWeight=0 PerfScore 0.00
-G_M5822_IG39:
+G_M5822_IG38:
add rsp, 8
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 809, prolog size 47, PerfScore 121.73, instruction count 211, allocated bytes for code 809 (MethodHash=bd2ee941) for method System.String:Concat(System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier0-FullOpts)
+; Total bytes of code 818, prolog size 47, PerfScore 119.11, instruction count 209, allocated bytes for code 818 (MethodHash=bd2ee941) for method System.String:Concat(System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier0-FullOpts)
; ============================================================ 1 (0.12 % of base) - System.Threading.WaitHandle:ObtainSafeWaitHandles(System.ReadOnlySpan`1[System.Threading.WaitHandle],System.Span`1[Microsoft.Win32.SafeHandles.SafeWaitHandle],System.Span`1[long]) ; Assembly listing for method System.Threading.WaitHandle:ObtainSafeWaitHandles(System.ReadOnlySpan`1[System.Threading.WaitHandle],System.Span`1[Microsoft.Win32.SafeHandles.SafeWaitHandle],System.Span`1[long]) (Tier0-FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; Tier-0 switched to FullOpts code
; optimized code
; optimized using Synthesized PGO
; rbp based frame
; fully interruptible
; with Synthesized PGO: fgCalledCount is 100
; No PGO data
; 1 inlinees with PGO data; 3 single block inlinees; 10 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Threading.WaitHandle]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[Microsoft.Win32.SafeHandles.SafeWaitHandle]>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[long]>
; V03 loc0 [V03,T05] ( 5, 19.00) ubyte -> [rbp-0x2C] do-not-enreg[Z] ld-addr-op EH-live
; V04 loc1 [V04,T12] ( 5, 10.00) ref -> [rbp-0x90] do-not-enreg[Z] class-hnd EH-live <Microsoft.Win32.SafeHandles.SafeWaitHandle>
; V05 loc2 [V05,T01] ( 8, 55.00) int -> r13
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.WaitHandle>
; V07 loc4 [V07,T00] ( 8, 63.00) ref -> [rbp-0x98] class-hnd exact spill-single-def <Microsoft.Win32.SafeHandles.SafeWaitHandle>
; V08 loc5 [V08 ] ( 17, 0 ) struct (40) [rbp-0x58] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
;* V09 loc6 [V09,T27] ( 0, 0 ) int -> zero-ref
; V10 loc7 [V10,T15] ( 4, 0 ) ref -> r15 class-hnd <Microsoft.Win32.SafeHandles.SafeWaitHandle>
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V12 tmp1 [V12,T02] ( 4, 54.00) ref -> rdi class-hnd "dup spill" <System.Object>
;* V13 tmp2 [V13 ] ( 0, 0 ) ref -> zero-ref
;* V14 tmp3 [V14 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
; V15 tmp4 [V15 ] ( 3, 0 ) struct (40) [rbp-0x80] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
; V16 tmp5 [V16,T19] ( 2, 0 ) ref -> rbx class-hnd exact "non-inline candidate call" <System.String>
; V17 tmp6 [V17,T18] ( 3, 0 ) ref -> r15 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V18 tmp7 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
;* V19 tmp8 [V19 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V20 tmp9 [V20,T16] ( 4, 0 ) int -> rdi "Inlining Arg"
;* V21 tmp10 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V22 tmp11 [V22,T20] ( 2, 0 ) byref -> rsi "Inlining Arg"
-; V23 tmp12 [V23,T23] ( 2, 0 ) int -> rax "Inlining Arg"
-;* V24 tmp13 [V24,T24] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V22 tmp11 [V22,T20] ( 2, 0 ) byref -> rbx "Inlining Arg"
+; V23 tmp12 [V23,T23] ( 2, 0 ) int -> rsi "Inlining Arg"
+;* V24 tmp13 [V24,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V25 tmp14 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V26 tmp15 [V26 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V27 tmp16 [V27 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V28 tmp17 [V28 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V29 tmp18 [V29,T17] ( 4, 0 ) int -> rbx "Inlining Arg"
;* V30 tmp19 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V31 tmp20 [V31,T21] ( 2, 0 ) byref -> rdi "Inlining Arg"
-; V32 tmp21 [V32,T25] ( 2, 0 ) int -> rsi "Inlining Arg"
-;* V33 tmp22 [V33,T26] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V31 tmp20 [V31,T21] ( 2, 0 ) byref -> r15 "Inlining Arg"
+; V32 tmp21 [V32,T25] ( 2, 0 ) int -> rdi "Inlining Arg"
+;* V33 tmp22 [V33,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V34 tmp23 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V35 tmp24 [V35 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V36 tmp25 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V37 tmp26 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V38 tmp27 [V38,T03] ( 5, 45.00) int -> rcx "Inline stloc first use temp"
;* V39 tmp28 [V39 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V40 tmp29 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V41 tmp30 [V41,T09] ( 2, 10.00) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V42 tmp31 [V42,T06] ( 5, 11.00) int -> [rbp-0x84] EH-live single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V43 tmp32 [V43,T07] ( 4, 10.00) byref -> [rbp-0xA0] EH-live single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V44 tmp33 [V44,T08] ( 3, 10.00) int -> [rbp-0x88] EH-live single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V45 tmp34 [V45,T10] ( 2, 10.00) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V46 tmp35 [V46,T11] ( 2, 10.00) int -> r14 single-def "field V02._length (fldOffset=0x8)" P-INDEP
;* V47 tmp36 [V47 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp37 [V48 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
;* V49 tmp38 [V49 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp39 [V50 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
;* V51 tmp40 [V51 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
;* V52 tmp41 [V52 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
;* V53 tmp42 [V53 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
;* V54 tmp43 [V54 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
;* V55 tmp44 [V55 ] ( 0, 0 ) byref -> zero-ref "field V30._reference (fldOffset=0x0)" P-INDEP
;* V56 tmp45 [V56 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
;* V57 tmp46 [V57 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V58 tmp47 [V58 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
; V59 tmp48 [V59,T22] ( 2, 0 ) ref -> rdx "argument with side effect"
; V60 PSPSym [V60,T13] ( 1, 1 ) long -> [rbp-0xB0] do-not-enreg[V] "PSPSym"
; V61 cse0 [V61,T04] ( 4, 36.00) long -> r12 "CSE #01: aggressive"
; V62 rat0 [V62,T14] ( 7, 0 ) long -> rbx "Widened IV V09"
;
; Lcl frame size = 136
G_M55186_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 136
lea rbp, [rsp+0xB0]
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x80], ymm8
vmovdqu ymmword ptr [rbp-0x60], ymm8
vmovdqa xmmword ptr [rbp-0x40], xmm8
mov qword ptr [rbp-0xB0], rsp
mov dword ptr [rbp-0x84], esi
mov bword ptr [rbp-0xA0], rdx
mov dword ptr [rbp-0x88], ecx
mov rbx, rdi
mov r15, r8
mov r14d, r9d
;; size=80 bbWeight=1 PerfScore 17.83
G_M55186_IG02:
mov dword ptr [rbp-0x2C], 1
xor rdi, rdi
mov gword ptr [rbp-0x90], rdi
;; size=16 bbWeight=1 PerfScore 2.25
G_M55186_IG03:
xor r13d, r13d
test esi, esi
jle G_M55186_IG19
;; size=11 bbWeight=1 PerfScore 1.50
G_M55186_IG04:
mov r12d, r13d
mov rdi, gword ptr [rbx+8*r12]
test rdi, rdi
je G_M55186_IG09
mov rax, gword ptr [rdi+0x08]
mov gword ptr [rbp-0x98], rax
test rax, rax
je G_M55186_IG07
mov gword ptr [rbp-0x90], rax
xor edi, edi
mov dword ptr [rbp-0x2C], edi
align [5 bytes for IG05]
;; size=53 bbWeight=9.00 PerfScore 92.25
G_M55186_IG05:
mov ecx, dword ptr [rax+0x10]
test cl, 1
jne SHORT G_M55186_IG08
lea rdi, bword ptr [rax+0x10]
lea edx, [rcx+0x04]
mov eax, ecx
lock
cmpxchg dword ptr [rdi], edx
cmp eax, ecx
mov rax, gword ptr [rbp-0x98]
jne SHORT G_M55186_IG05
;; size=32 bbWeight=9.00 PerfScore 222.75
G_M55186_IG06:
mov dword ptr [rbp-0x2C], 1
cmp r13d, dword ptr [rbp-0x88]
jae G_M55186_IG18
mov rdx, bword ptr [rbp-0xA0]
lea rdi, bword ptr [rdx+8*r12]
mov rsi, rax
call CORINFO_HELP_CHECKED_ASSIGN_REF
cmp r13d, r14d
jae G_M55186_IG18
mov rdi, gword ptr [rbp-0x98]
mov rdi, qword ptr [rdi+0x08]
mov qword ptr [r15+8*r12], rdi
inc r13d
cmp r13d, dword ptr [rbp-0x84]
jl G_M55186_IG04
jmp G_M55186_IG19
;; size=84 bbWeight=9.00 PerfScore 155.25
G_M55186_IG07:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowObjectDisposedException(System.Object)
call [rax]System.ThrowHelper:ThrowObjectDisposedException(System.Object)
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M55186_IG08:
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowObjectDisposedException(System.Object)
call [rax]System.ThrowHelper:ThrowObjectDisposedException(System.Object)
int3
;; size=16 bbWeight=0 PerfScore 0.00
G_M55186_IG09:
vxorps ymm0, ymm0, ymm0
vmovdqu ymmword ptr [rbp-0x80], ymm0
vmovdqu xmmword ptr [rbp-0x68], xmm0
lea rdi, [rbp-0x80]
mov esi, 13
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
;; size=40 bbWeight=0 PerfScore 0.00
G_M55186_IG10:
vmovdqu ymm0, ymmword ptr [rbp-0x80]
vmovdqu ymmword ptr [rbp-0x58], ymm0
mov rdi, qword ptr [rbp-0x60]
mov qword ptr [rbp-0x38], rdi
;; size=18 bbWeight=0 PerfScore 0.00
G_M55186_IG11:
mov edi, dword ptr [rbp-0x48]
cmp edi, dword ptr [rbp-0x38]
ja SHORT G_M55186_IG14
mov rsi, bword ptr [rbp-0x40]
mov eax, edi
- lea rsi, bword ptr [rsi+2*rax]
- mov eax, dword ptr [rbp-0x38]
- sub eax, edi
- cmp eax, 12
- jb SHORT G_M55186_IG12
- mov rdi, 0xD1FFAB1E
- vmovdqu xmm0, xmmword ptr [rdi]
- vmovdqu xmm1, xmmword ptr [rdi+0x08]
- vmovdqu xmmword ptr [rsi], xmm0
- vmovdqu xmmword ptr [rsi+0x08], xmm1
- mov edi, dword ptr [rbp-0x48]
- add edi, 12
- mov dword ptr [rbp-0x48], edi
- jmp SHORT G_M55186_IG13
- ;; size=67 bbWeight=0 PerfScore 0.00
-G_M55186_IG12:
+ lea rbx, bword ptr [rsi+2*rax]
+ mov esi, dword ptr [rbp-0x38]
+ sub esi, edi
+ cmp esi, 12
+ jae SHORT G_M55186_IG12
lea rdi, [rbp-0x58]
mov rsi, 0xD1FFAB1E ; 'waitHandles['
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
- ;; size=26 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M55186_IG13
+ ;; size=56 bbWeight=0 PerfScore 0.00
+G_M55186_IG12:
+ mov rdi, 0xD1FFAB1E
+ vmovdqu xmm0, xmmword ptr [rdi]
+ vmovdqu xmm1, xmmword ptr [rdi+0x08]
+ vmovdqu xmmword ptr [rbx], xmm0
+ vmovdqu xmmword ptr [rbx+0x08], xmm1
+ mov edi, dword ptr [rbp-0x48]
+ add edi, 12
+ mov dword ptr [rbp-0x48], edi
+ ;; size=37 bbWeight=0 PerfScore 0.00
G_M55186_IG13:
lea rdi, [rbp-0x58]
mov esi, r13d
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this
mov ebx, dword ptr [rbp-0x48]
cmp ebx, dword ptr [rbp-0x38]
jbe SHORT G_M55186_IG15
;; size=27 bbWeight=0 PerfScore 0.00
G_M55186_IG14:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M55186_IG15:
mov rdi, bword ptr [rbp-0x40]
mov esi, ebx
- lea rdi, bword ptr [rdi+2*rsi]
- mov esi, dword ptr [rbp-0x38]
- sub esi, ebx
- je SHORT G_M55186_IG16
- mov rsi, 0xD1FFAB1E
- movzx rax, word ptr [rsi]
- mov word ptr [rdi], ax
- mov edi, dword ptr [rbp-0x48]
- inc edi
- mov dword ptr [rbp-0x48], edi
- jmp SHORT G_M55186_IG17
- ;; size=43 bbWeight=0 PerfScore 0.00
-G_M55186_IG16:
+ lea r15, bword ptr [rdi+2*rsi]
+ mov edi, dword ptr [rbp-0x38]
+ sub edi, ebx
+ jne SHORT G_M55186_IG16
lea rdi, [rbp-0x58]
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
- ;; size=26 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M55186_IG17
+ ;; size=45 bbWeight=0 PerfScore 0.00
+G_M55186_IG16:
+ mov rdi, 0xD1FFAB1E
+ movzx rax, word ptr [rdi]
+ mov word ptr [r15], ax
+ mov edi, dword ptr [rbp-0x48]
+ inc edi
+ mov dword ptr [rbp-0x48], edi
+ ;; size=25 bbWeight=0 PerfScore 0.00
G_M55186_IG17:
lea rdi, [rbp-0x58]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this
mov rbx, rax
mov rdi, 0xD1FFAB1E ; System.ArgumentNullException
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_ArgumentNull_ArrayElement():System.String
call [rax]System.SR:get_ArgumentNull_ArrayElement():System.String
mov rdx, rax
mov rsi, rbx
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:.ctor(System.String,System.String):this
call [rax]System.ArgumentNullException:.ctor(System.String,System.String):this
mov rdi, r15
call CORINFO_HELP_THROW
int3
;; size=79 bbWeight=0 PerfScore 0.00
G_M55186_IG18:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M55186_IG19:
vzeroupper
add rsp, 136
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=21 bbWeight=1 PerfScore 5.25
G_M55186_IG20:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0xB0]
;; size=25 bbWeight=0 PerfScore 0.00
G_M55186_IG21:
xor ebx, ebx
cmp dword ptr [rbp-0x84], 0
jle SHORT G_M55186_IG24
;; size=11 bbWeight=0 PerfScore 0.00
G_M55186_IG22:
cmp ebx, dword ptr [rbp-0x88]
jae SHORT G_M55186_IG26
mov rdx, bword ptr [rbp-0xA0]
mov r15, gword ptr [rdx+8*rbx]
test r15, r15
je SHORT G_M55186_IG24
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.SafeHandle:DangerousRelease():this
call [rax]System.Runtime.InteropServices.SafeHandle:DangerousRelease():this
xor rdi, rdi
mov rdx, bword ptr [rbp-0xA0]
mov gword ptr [rdx+8*rbx], rdi
cmp r15, gword ptr [rbp-0x90]
jne SHORT G_M55186_IG23
xor rdi, rdi
mov gword ptr [rbp-0x90], rdi
mov dword ptr [rbp-0x2C], 1
;; size=77 bbWeight=0 PerfScore 0.00
G_M55186_IG23:
inc ebx
mov esi, dword ptr [rbp-0x84]
cmp ebx, esi
jl SHORT G_M55186_IG22
;; size=12 bbWeight=0 PerfScore 0.00
G_M55186_IG24:
cmp dword ptr [rbp-0x2C], 0
jne SHORT G_M55186_IG25
mov rdi, gword ptr [rbp-0x90]
mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.SafeHandle:DangerousRelease():this
cmp dword ptr [rdi], edi
call [rax]System.Runtime.InteropServices.SafeHandle:DangerousRelease():this
;; size=27 bbWeight=0 PerfScore 0.00
G_M55186_IG25:
call CORINFO_HELP_RETHROW
int3
;; size=6 bbWeight=0 PerfScore 0.00
G_M55186_IG26:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 835, prolog size 80, PerfScore 497.08, instruction count 205, allocated bytes for code 835 (MethodHash=dbd6286d) for method System.Threading.WaitHandle:ObtainSafeWaitHandles(System.ReadOnlySpan`1[System.Threading.WaitHandle],System.Span`1[Microsoft.Win32.SafeHandles.SafeWaitHandle],System.Span`1[long]) (Tier0-FullOpts)
+; Total bytes of code 836, prolog size 80, PerfScore 497.08, instruction count 205, allocated bytes for code 836 (MethodHash=dbd6286d) for method System.Threading.WaitHandle:ObtainSafeWaitHandles(System.ReadOnlySpan`1[System.Threading.WaitHandle],System.Span`1[Microsoft.Win32.SafeHandles.SafeWaitHandle],System.Span`1[long]) (Tier0-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/f48cd95aa7e83669bf8e9ae6afc677f2 |
Top method improvements-27 (-2.70 % of base) - System.Runtime.Intrinsics.Vector128`1[long]:ToString(System.String,System.IFormatProvider):System.String:this ; Assembly listing for method System.Runtime.Intrinsics.Vector128`1[long]:ToString(System.String,System.IFormatProvider):System.String:this (Tier0-FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; Tier-0 switched to FullOpts code
; optimized code
; optimized using Synthesized PGO
; rbp based frame
; partially interruptible
; with Synthesized PGO: fgCalledCount is 100
; No PGO data
; 0 inlinees with PGO data; 12 single block inlinees; 23 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T03] ( 4, 4.13) byref -> r15 this single-def
; V01 arg1 [V01,T04] ( 4, 4.13) ref -> r14 class-hnd single-def <System.String>
; V02 arg2 [V02,T01] ( 6, 5.64) ref -> rbx class-hnd single-def <System.IFormatProvider>
; V03 loc0 [V03 ] ( 62, 40.27) struct (32) [rbp-0x48] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
; V04 loc1 [V04,T10] ( 5, 3.93) ref -> r13 class-hnd exact single-def <System.String>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
;* V06 loc3 [V06,T38] ( 0, 0 ) int -> zero-ref
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op class-hnd exact "Single-def Box Helper" <System.Int64>
;* V10 tmp3 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op class-hnd exact "Single-def Box Helper" <System.Int64>
; V11 tmp4 [V11,T09] ( 2, 4 ) long -> rdi "Inlining Arg"
; V12 tmp5 [V12,T27] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
; V13 tmp6 [V13,T13] ( 4, 3.04) int -> rdi "Inline stloc first use temp"
;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
; V15 tmp8 [V15,T02] ( 5, 7.20) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.String>
; V16 tmp9 [V16,T20] ( 5, 2.44) int -> rsi "Inline stloc first use temp"
; V17 tmp10 [V17,T21] ( 5, 2.34) int -> [rbp-0x4C] spill-single-def "Inline stloc first use temp"
;* V18 tmp11 [V18 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V19 tmp12 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V20 tmp13 [V20,T33] ( 2, 1.87) byref -> rdi single-def "Inlining Arg"
; V21 tmp14 [V21,T34] ( 2, 1.87) int -> rdx "Inlining Arg"
;* V22 tmp15 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V23 tmp16 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V24 tmp17 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V25 tmp18 [V25 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V26 tmp19 [V26,T16] ( 5, 2.74) int -> rsi "Inline stloc first use temp"
; V27 tmp20 [V27,T18] ( 5, 2.63) int -> [rbp-0x50] spill-single-def "Inline stloc first use temp"
;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V30 tmp23 [V30,T23] ( 2, 2.10) byref -> rdi "Inlining Arg"
; V31 tmp24 [V31,T25] ( 2, 2.10) int -> rdx "Inlining Arg"
;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V33 tmp26 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V34 tmp27 [V34 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V35 tmp28 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V36 tmp29 [V36,T12] ( 4, 3.42) int -> rdi "Inline stloc first use temp"
;* V37 tmp30 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
; V38 tmp31 [V38,T00] ( 5, 8.10) ref -> rbx class-hnd exact "Inlining Arg" <System.String>
; V39 tmp32 [V39,T17] ( 5, 2.74) int -> rsi "Inline stloc first use temp"
; V40 tmp33 [V40,T19] ( 5, 2.63) int -> r14 "Inline stloc first use temp"
;* V41 tmp34 [V41 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V42 tmp35 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V43 tmp36 [V43,T24] ( 2, 2.10) byref -> rdi "Inlining Arg"
-; V44 tmp37 [V44,T26] ( 2, 2.10) int -> rdx "Inlining Arg"
+; V44 tmp37 [V44,T26] ( 2, 2.10) int -> rax "Inlining Arg"
;* 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 ) long -> zero-ref "Inlining Arg"
; V49 tmp42 [V49,T14] ( 4, 3.04) int -> rdi "Inline stloc first use temp"
;* V50 tmp43 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
; V51 tmp44 [V51 ] ( 3, 3 ) struct (16) [rbp-0x60] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
; V52 tmp45 [V52,T08] ( 2, 4 ) ref -> rbx class-hnd exact single-def "impAppendStmt" <System.String>
; V53 tmp46 [V53,T05] ( 3, 6 ) int -> rbx "Inlining Arg"
;* V54 tmp47 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V55 tmp48 [V55 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V56 tmp49 [V56,T15] ( 3, 2.80) ref -> rsi class-hnd single-def "Inline stloc first use temp" <ushort[]>
;* V57 tmp50 [V57 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V58 tmp51 [V58 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
; V59 tmp52 [V59,T28] ( 2, 2 ) byref -> rdi single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V60 tmp53 [V60,T39] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
;* V61 tmp54 [V61 ] ( 0, 0 ) long -> zero-ref "field V09.m_value (fldOffset=0x0)" P-INDEP
;* V62 tmp55 [V62 ] ( 0, 0 ) long -> zero-ref "field V10.m_value (fldOffset=0x0)" P-INDEP
; V63 tmp56 [V63,T36] ( 2, 1.52) byref -> rsi single-def "field V14._reference (fldOffset=0x0)" P-INDEP
; V64 tmp57 [V64,T30] ( 2, 2 ) int -> rax "field V14._length (fldOffset=0x8)" P-INDEP
;* V65 tmp58 [V65 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP
;* V66 tmp59 [V66 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
;* V67 tmp60 [V67 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
;* V68 tmp61 [V68 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
;* V69 tmp62 [V69 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
;* V70 tmp63 [V70 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
;* V71 tmp64 [V71 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
;* V72 tmp65 [V72 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
;* V73 tmp66 [V73 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP
;* V74 tmp67 [V74 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
;* V75 tmp68 [V75 ] ( 0, 0 ) byref -> zero-ref "field V32._reference (fldOffset=0x0)" P-INDEP
;* V76 tmp69 [V76 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
; V77 tmp70 [V77,T35] ( 2, 1.71) byref -> rsi "field V37._reference (fldOffset=0x0)" P-INDEP
; V78 tmp71 [V78,T22] ( 2, 2.25) int -> rax "field V37._length (fldOffset=0x8)" P-INDEP
;* V79 tmp72 [V79 ] ( 0, 0 ) byref -> zero-ref "field V41._reference (fldOffset=0x0)" P-INDEP
;* V80 tmp73 [V80 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
;* V81 tmp74 [V81 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
;* V82 tmp75 [V82 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
;* V83 tmp76 [V83 ] ( 0, 0 ) byref -> zero-ref "field V45._reference (fldOffset=0x0)" P-INDEP
;* V84 tmp77 [V84 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP
; V85 tmp78 [V85,T37] ( 2, 1.52) byref -> rsi single-def "field V50._reference (fldOffset=0x0)" P-INDEP
; V86 tmp79 [V86,T31] ( 2, 2 ) int -> rax "field V50._length (fldOffset=0x8)" P-INDEP
; V87 tmp80 [V87 ] ( 2, 2 ) byref -> [rbp-0x60] do-not-enreg[X] addr-exposed "field V51._reference (fldOffset=0x0)" P-DEP
; V88 tmp81 [V88 ] ( 2, 2 ) int -> [rbp-0x58] do-not-enreg[X] addr-exposed "field V51._length (fldOffset=0x8)" P-DEP
; V89 tmp82 [V89,T29] ( 2, 2 ) byref -> rdi single-def "field V54._reference (fldOffset=0x0)" P-INDEP
; V90 tmp83 [V90,T32] ( 2, 2 ) int -> rbx "field V54._length (fldOffset=0x8)" P-INDEP
; V91 GsCookie [V91 ] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[X] addr-exposed "GSSecurityCookie"
; V92 cse0 [V92,T06] ( 7, 4.32) int -> r12 "CSE #06: moderate"
; V93 cse1 [V93,T07] ( 7, 4.32) int -> r15 "CSE #10: moderate"
; V94 cse2 [V94,T11] ( 7, 3.84) int -> [rbp-0x64] spill-single-def "CSE #02: moderate"
;
; Lcl frame size = 72
G_M40097_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 72
lea rbp, [rsp+0x70]
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x60], ymm8
vmovdqa xmmword ptr [rbp-0x40], xmm8
xor eax, eax
mov qword ptr [rbp-0x30], rax
mov qword ptr [rbp-0x70], 0xD1FFAB1E
mov r15, rdi
mov r14, rsi
mov rbx, rdx
;; size=57 bbWeight=1 PerfScore 14.08
G_M40097_IG02:
test dword ptr [rsp], esp
sub rsp, 128
lea rdi, [rsp]
mov bword ptr [rbp-0x38], rdi
mov dword ptr [rbp-0x30], 64
xor edi, edi
mov dword ptr [rbp-0x40], edi
test rbx, rbx
je G_M40097_IG10
;; size=39 bbWeight=1 PerfScore 8.25
G_M40097_IG03:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|58_0(System.IFormatProvider):System.Globalization.NumberFormatInfo
call [rax]System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|58_0(System.IFormatProvider):System.Globalization.NumberFormatInfo
;; size=15 bbWeight=0.52 PerfScore 1.82
G_M40097_IG04:
mov r13, gword ptr [rax+0x38]
mov edi, dword ptr [rbp-0x40]
mov rsi, bword ptr [rbp-0x38]
mov eax, dword ptr [rbp-0x30]
cmp edi, eax
jae SHORT G_M40097_IG11
;; size=18 bbWeight=1 PerfScore 6.25
G_M40097_IG05:
mov eax, edi
mov word ptr [rsi+2*rax], 60
inc edi
mov dword ptr [rbp-0x40], edi
;; size=13 bbWeight=0.52 PerfScore 1.30
G_M40097_IG06:
mov rdi, qword ptr [r15]
mov rsi, r14
mov rdx, rbx
mov rax, 0xD1FFAB1E ; code for System.Number:FormatInt64(long,System.String,System.IFormatProvider):System.String
call [rax]System.Number:FormatInt64(long,System.String,System.IFormatProvider):System.String
mov r12, rax
test r12, r12
je G_M40097_IG15
;; size=33 bbWeight=1 PerfScore 7.25
G_M40097_IG07:
mov esi, dword ptr [rbp-0x40]
mov eax, dword ptr [r12+0x08]
mov dword ptr [rbp-0x64], eax
cmp eax, 1
jne SHORT G_M40097_IG12
;; size=16 bbWeight=0.80 PerfScore 4.20
G_M40097_IG08:
cmp esi, dword ptr [rbp-0x30]
jae SHORT G_M40097_IG12
;; size=5 bbWeight=0.64 PerfScore 1.92
G_M40097_IG09:
cmp esi, dword ptr [rbp-0x30]
jae G_M40097_IG45
mov rax, bword ptr [rbp-0x38]
mov edi, esi
movzx rcx, word ptr [r12+0x0C]
mov word ptr [rax+2*rdi], cx
inc esi
mov dword ptr [rbp-0x40], esi
jmp G_M40097_IG15
;; size=35 bbWeight=0.33 PerfScore 3.49
G_M40097_IG10:
mov rax, 0xD1FFAB1E ; code for System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
call [rax]System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
jmp G_M40097_IG04
;; size=17 bbWeight=0.48 PerfScore 2.52
G_M40097_IG11:
lea rdi, [rbp-0x48]
mov esi, 60
mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:GrowAndAppend(ushort):this
call [rax]System.Text.ValueStringBuilder:GrowAndAppend(ushort):this
jmp G_M40097_IG06
;; size=26 bbWeight=0.48 PerfScore 2.88
G_M40097_IG12:
mov ecx, dword ptr [rbp-0x40]
mov dword ptr [rbp-0x4C], ecx
mov esi, dword ptr [rbp-0x30]
sub esi, eax
cmp esi, ecx
jge SHORT G_M40097_IG14
;; size=15 bbWeight=0.47 PerfScore 2.10
G_M40097_IG13:
mov esi, eax
lea rdi, [rbp-0x48]
mov rdx, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:Grow(int):this
call [rdx]System.Text.ValueStringBuilder:Grow(int):this
mov eax, dword ptr [rbp-0x64]
;; size=21 bbWeight=0.37 PerfScore 1.87
G_M40097_IG14:
mov ecx, dword ptr [rbp-0x4C]
cmp ecx, dword ptr [rbp-0x30]
ja G_M40097_IG44
mov rdx, bword ptr [rbp-0x38]
mov esi, ecx
lea rdi, bword ptr [rdx+2*rsi]
mov edx, dword ptr [rbp-0x30]
sub edx, ecx
cmp eax, edx
ja G_M40097_IG43
mov edx, eax
add rdx, rdx
lea rsi, bword ptr [r12+0x0C]
mov rcx, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rcx]System.SpanHelpers:Memmove(byref,byref,ulong)
mov r12d, dword ptr [rbp-0x64]
add r12d, dword ptr [rbp-0x40]
mov dword ptr [rbp-0x40], r12d
;; size=69 bbWeight=0.47 PerfScore 7.71
G_M40097_IG15:
test r13, r13
je G_M40097_IG22
;; size=9 bbWeight=1.13 PerfScore 1.41
G_M40097_IG16:
mov esi, dword ptr [rbp-0x40]
mov r12d, dword ptr [r13+0x08]
cmp r12d, 1
jne SHORT G_M40097_IG19
;; size=13 bbWeight=0.90 PerfScore 3.83
G_M40097_IG17:
cmp esi, dword ptr [rbp-0x30]
jae SHORT G_M40097_IG19
;; size=5 bbWeight=0.72 PerfScore 2.16
G_M40097_IG18:
cmp esi, dword ptr [rbp-0x30]
jae G_M40097_IG45
mov rdi, bword ptr [rbp-0x38]
mov eax, esi
movzx rcx, word ptr [r13+0x0C]
mov word ptr [rdi+2*rax], cx
inc esi
mov dword ptr [rbp-0x40], esi
jmp SHORT G_M40097_IG22
;; size=31 bbWeight=0.37 PerfScore 3.93
G_M40097_IG19:
mov eax, dword ptr [rbp-0x40]
mov dword ptr [rbp-0x50], eax
mov esi, dword ptr [rbp-0x30]
sub esi, r12d
cmp esi, eax
jge SHORT G_M40097_IG21
;; size=16 bbWeight=0.53 PerfScore 2.37
G_M40097_IG20:
mov esi, r12d
lea rdi, [rbp-0x48]
mov rcx, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:Grow(int):this
call [rcx]System.Text.ValueStringBuilder:Grow(int):this
;; size=19 bbWeight=0.42 PerfScore 1.68
G_M40097_IG21:
mov eax, dword ptr [rbp-0x50]
cmp eax, dword ptr [rbp-0x30]
ja G_M40097_IG44
mov rdx, bword ptr [rbp-0x38]
mov esi, eax
lea rdi, bword ptr [rdx+2*rsi]
mov edx, dword ptr [rbp-0x30]
sub edx, eax
cmp r12d, edx
ja G_M40097_IG43
mov edx, r12d
add rdx, rdx
lea rsi, bword ptr [r13+0x0C]
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
add r12d, dword ptr [rbp-0x40]
mov dword ptr [rbp-0x40], r12d
;; size=66 bbWeight=0.53 PerfScore 8.15
G_M40097_IG22:
mov edi, dword ptr [rbp-0x40]
mov rsi, bword ptr [rbp-0x38]
mov eax, dword ptr [rbp-0x30]
cmp edi, eax
- jae G_M40097_IG32
- ;; size=18 bbWeight=1.13 PerfScore 4.78
+ jae SHORT G_M40097_IG28
+ ;; size=14 bbWeight=1.13 PerfScore 4.78
G_M40097_IG23:
mov eax, edi
mov word ptr [rsi+2*rax], 32
inc edi
mov dword ptr [rbp-0x40], edi
;; size=13 bbWeight=0.59 PerfScore 1.46
G_M40097_IG24:
mov rdi, qword ptr [r15+0x08]
mov rsi, r14
mov rdx, rbx
mov rax, 0xD1FFAB1E ; code for System.Number:FormatInt64(long,System.String,System.IFormatProvider):System.String
call [rax]System.Number:FormatInt64(long,System.String,System.IFormatProvider):System.String
mov rbx, rax
test rbx, rbx
- je SHORT G_M40097_IG29
- ;; size=30 bbWeight=1.13 PerfScore 8.16
+ je G_M40097_IG33
+ ;; size=34 bbWeight=1.13 PerfScore 8.16
G_M40097_IG25:
mov esi, dword ptr [rbp-0x40]
mov r15d, dword ptr [rbx+0x08]
cmp r15d, 1
- jne G_M40097_IG33
- ;; size=17 bbWeight=0.90 PerfScore 3.83
+ jne SHORT G_M40097_IG29
+ ;; size=13 bbWeight=0.90 PerfScore 3.83
G_M40097_IG26:
cmp esi, dword ptr [rbp-0x30]
- jae G_M40097_IG33
- ;; size=9 bbWeight=0.72 PerfScore 2.16
+ jae SHORT G_M40097_IG29
+ ;; size=5 bbWeight=0.72 PerfScore 2.16
G_M40097_IG27:
cmp esi, dword ptr [rbp-0x30]
jae G_M40097_IG45
mov rdi, bword ptr [rbp-0x38]
mov eax, esi
movzx rcx, word ptr [rbx+0x0C]
mov word ptr [rdi+2*rax], cx
inc esi
mov dword ptr [rbp-0x40], esi
- jmp SHORT G_M40097_IG29
+ jmp SHORT G_M40097_IG33
;; size=30 bbWeight=0.37 PerfScore 3.93
G_M40097_IG28:
+ lea rdi, [rbp-0x48]
+ mov esi, 32
+ mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:GrowAndAppend(ushort):this
+ call [rax]System.Text.ValueStringBuilder:GrowAndAppend(ushort):this
+ jmp SHORT G_M40097_IG24
+ ;; size=23 bbWeight=0.54 PerfScore 3.24
+G_M40097_IG29:
+ mov r14d, dword ptr [rbp-0x40]
+ mov esi, dword ptr [rbp-0x30]
+ sub esi, r15d
+ cmp esi, r14d
+ jge SHORT G_M40097_IG31
+ ;; size=15 bbWeight=0.53 PerfScore 1.84
+G_M40097_IG30:
+ mov esi, r15d
+ lea rdi, [rbp-0x48]
+ mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:Grow(int):this
+ call [rax]System.Text.ValueStringBuilder:Grow(int):this
+ ;; size=19 bbWeight=0.42 PerfScore 1.68
+G_M40097_IG31:
+ cmp r14d, dword ptr [rbp-0x30]
+ ja G_M40097_IG44
+ mov rax, bword ptr [rbp-0x38]
+ mov ecx, r14d
+ lea rdi, bword ptr [rax+2*rcx]
+ mov eax, dword ptr [rbp-0x30]
+ sub eax, r14d
+ cmp r15d, eax
+ ja G_M40097_IG43
+ ;; size=36 bbWeight=0.53 PerfScore 3.81
+G_M40097_IG32:
mov edx, r15d
add rdx, rdx
lea rsi, bword ptr [rbx+0x0C]
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
add r15d, dword ptr [rbp-0x40]
mov dword ptr [rbp-0x40], r15d
;; size=30 bbWeight=0.53 PerfScore 3.81
-G_M40097_IG29:
+G_M40097_IG33:
mov edi, dword ptr [rbp-0x40]
mov rsi, bword ptr [rbp-0x38]
mov eax, dword ptr [rbp-0x30]
cmp edi, eax
- jae G_M40097_IG36
- ;; size=18 bbWeight=1 PerfScore 4.25
-G_M40097_IG30:
+ jae SHORT G_M40097_IG36
+ ;; size=14 bbWeight=1 PerfScore 4.25
+G_M40097_IG34:
mov eax, edi
mov word ptr [rsi+2*rax], 62
inc edi
mov dword ptr [rbp-0x40], edi
;; size=13 bbWeight=0.52 PerfScore 1.30
-G_M40097_IG31:
+G_M40097_IG35:
mov ebx, dword ptr [rbp-0x40]
cmp ebx, dword ptr [rbp-0x30]
- jbe G_M40097_IG37
+ jbe SHORT G_M40097_IG37
jmp G_M40097_IG44
- ;; size=17 bbWeight=1 PerfScore 6.00
-G_M40097_IG32:
- lea rdi, [rbp-0x48]
- mov esi, 32
- mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:GrowAndAppend(ushort):this
- call [rax]System.Text.ValueStringBuilder:GrowAndAppend(ushort):this
- jmp G_M40097_IG24
- ;; size=26 bbWeight=0.54 PerfScore 3.24
-G_M40097_IG33:
- mov r14d, dword ptr [rbp-0x40]
- mov esi, dword ptr [rbp-0x30]
- sub esi, r15d
- cmp esi, r14d
- jge SHORT G_M40097_IG35
- ;; size=15 bbWeight=0.53 PerfScore 1.84
-G_M40097_IG34:
- mov esi, r15d
- lea rdi, [rbp-0x48]
- mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:Grow(int):this
- call [rax]System.Text.ValueStringBuilder:Grow(int):this
- ;; size=19 bbWeight=0.42 PerfScore 1.68
-G_M40097_IG35:
- cmp r14d, dword ptr [rbp-0x30]
- ja G_M40097_IG44
- mov rdx, bword ptr [rbp-0x38]
- mov esi, r14d
- lea rdi, bword ptr [rdx+2*rsi]
- mov edx, dword ptr [rbp-0x30]
- sub edx, r14d
- cmp r15d, edx
- ja G_M40097_IG43
- jmp G_M40097_IG28
- ;; size=41 bbWeight=0.53 PerfScore 4.86
+ ;; size=13 bbWeight=1 PerfScore 6.00
G_M40097_IG36:
lea rdi, [rbp-0x48]
mov esi, 62
mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:GrowAndAppend(ushort):this
call [rax]System.Text.ValueStringBuilder:GrowAndAppend(ushort):this
- jmp G_M40097_IG31
- ;; size=26 bbWeight=0.48 PerfScore 2.88
+ jmp SHORT G_M40097_IG35
+ ;; size=23 bbWeight=0.48 PerfScore 2.88
G_M40097_IG37:
mov rdi, bword ptr [rbp-0x38]
mov bword ptr [rbp-0x60], rdi
mov dword ptr [rbp-0x58], ebx
lea rdi, [rbp-0x60]
mov rax, 0xD1FFAB1E ; code for System.Span`1[ushort]:ToString():System.String:this
call [rax]System.Span`1[ushort]:ToString():System.String:this
mov rbx, rax
mov rsi, gword ptr [rbp-0x48]
vxorps ymm0, ymm0, ymm0
vmovdqu ymmword ptr [rbp-0x48], ymm0
test rsi, rsi
je SHORT G_M40097_IG39
;; size=48 bbWeight=1 PerfScore 10.58
G_M40097_IG38:
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ushort]:Return(ushort[],ubyte):this
call [rax]System.Buffers.SharedArrayPool`1[ushort]:Return(ushort[],ubyte):this
;; size=27 bbWeight=0.80 PerfScore 4.60
G_M40097_IG39:
mov rax, rbx
;; size=3 bbWeight=1 PerfScore 0.25
G_M40097_IG40:
cmp qword ptr [rbp-0x70], 0xD1FFAB1E
je SHORT G_M40097_IG41
call CORINFO_HELP_FAIL_FAST
;; size=15 bbWeight=1 PerfScore 4.00
G_M40097_IG41:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M40097_IG42:
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.50
G_M40097_IG43:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M40097_IG44:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M40097_IG45:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1001, prolog size 48, PerfScore 167.53, instruction count 263, allocated bytes for code 1001 (MethodHash=ded0635e) for method System.Runtime.Intrinsics.Vector128`1[long]:ToString(System.String,System.IFormatProvider):System.String:this (Tier0-FullOpts)
+; Total bytes of code 974, prolog size 48, PerfScore 166.48, instruction count 262, allocated bytes for code 974 (MethodHash=ded0635e) for method System.Runtime.Intrinsics.Vector128`1[long]:ToString(System.String,System.IFormatProvider):System.String:this (Tier0-FullOpts)
; ============================================================ -27 (-4.62 % of base) - System.Runtime.Intrinsics.Vector64`1[long]:ToString(System.String,System.IFormatProvider):System.String:this ; Assembly listing for method System.Runtime.Intrinsics.Vector64`1[long]:ToString(System.String,System.IFormatProvider):System.String:this (Tier0-FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; Tier-0 switched to FullOpts code
; optimized code
; optimized using Synthesized PGO
; rbp based frame
; partially interruptible
; with Synthesized PGO: fgCalledCount is 100
; No PGO data
; 0 inlinees with PGO data; 12 single block inlinees; 23 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T04] ( 3, 3 ) byref -> rbx this single-def
; V01 arg1 [V01,T05] ( 3, 3 ) ref -> r15 class-hnd single-def <System.String>
; V02 arg2 [V02,T08] ( 5, 4.52) ref -> r14 class-hnd single-def <System.IFormatProvider>
; V03 loc0 [V03 ] ( 31, 22.08) struct (32) [rbp-0x38] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
;* V04 loc1 [V04,T28] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
;* V06 loc3 [V06,T00] ( 0, 0 ) int -> zero-ref
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op class-hnd exact "Single-def Box Helper" <System.Int64>
;* V10 tmp3 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op class-hnd exact "Single-def Box Helper" <System.Int64>
; V11 tmp4 [V11,T11] ( 2, 4 ) long -> rdi "Inlining Arg"
; V12 tmp5 [V12,T18] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
; V13 tmp6 [V13,T13] ( 4, 3.04) int -> rdi "Inline stloc first use temp"
;* V14 tmp7 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
; V15 tmp8 [V15,T07] ( 5, 7.20) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String>
; V16 tmp9 [V16,T16] ( 5, 2.44) int -> rsi "Inline stloc first use temp"
; V17 tmp10 [V17,T17] ( 5, 2.34) int -> r14 "Inline stloc first use temp"
;* V18 tmp11 [V18 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V19 tmp12 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V20 tmp13 [V20,T24] ( 2, 1.87) byref -> rdi single-def "Inlining Arg"
-; V21 tmp14 [V21,T25] ( 2, 1.87) int -> rdx "Inlining Arg"
+; V21 tmp14 [V21,T25] ( 2, 1.87) int -> rax "Inlining Arg"
;* V22 tmp15 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V23 tmp16 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V24 tmp17 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V25 tmp18 [V25 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V26 tmp19 [V26 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V27 tmp20 [V27 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V30 tmp23 [V30 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V31 tmp24 [V31 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V33 tmp26 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V34 tmp27 [V34 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V35 tmp28 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V36 tmp29 [V36,T01] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V37 tmp30 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V38 tmp31 [V38,T03] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V39 tmp32 [V39 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V40 tmp33 [V40 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V41 tmp34 [V41 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V42 tmp35 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V43 tmp36 [V43 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V44 tmp37 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* 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 ) long -> zero-ref "Inlining Arg"
; V49 tmp42 [V49,T14] ( 4, 3.04) int -> rdi "Inline stloc first use temp"
;* V50 tmp43 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
; V51 tmp44 [V51 ] ( 3, 3 ) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
; V52 tmp45 [V52,T10] ( 2, 4 ) ref -> rbx class-hnd exact single-def "impAppendStmt" <System.String>
; V53 tmp46 [V53,T09] ( 3, 6 ) int -> rbx "Inlining Arg"
;* V54 tmp47 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V55 tmp48 [V55 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V56 tmp49 [V56,T15] ( 3, 2.80) ref -> rsi class-hnd single-def "Inline stloc first use temp" <ushort[]>
;* V57 tmp50 [V57 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V58 tmp51 [V58 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
; V59 tmp52 [V59,T19] ( 2, 2 ) byref -> rdi single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V60 tmp53 [V60,T29] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
;* V61 tmp54 [V61 ] ( 0, 0 ) long -> zero-ref "field V09.m_value (fldOffset=0x0)" P-INDEP
;* V62 tmp55 [V62 ] ( 0, 0 ) long -> zero-ref "field V10.m_value (fldOffset=0x0)" P-INDEP
; V63 tmp56 [V63,T26] ( 2, 1.52) byref -> rsi single-def "field V14._reference (fldOffset=0x0)" P-INDEP
; V64 tmp57 [V64,T21] ( 2, 2 ) int -> rax "field V14._length (fldOffset=0x8)" P-INDEP
;* V65 tmp58 [V65 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP
;* V66 tmp59 [V66 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
;* V67 tmp60 [V67 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
;* V68 tmp61 [V68 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
;* V69 tmp62 [V69 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
;* V70 tmp63 [V70 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
;* V71 tmp64 [V71 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
;* V72 tmp65 [V72 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
;* V73 tmp66 [V73 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP
;* V74 tmp67 [V74 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
;* V75 tmp68 [V75 ] ( 0, 0 ) byref -> zero-ref "field V32._reference (fldOffset=0x0)" P-INDEP
;* V76 tmp69 [V76 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
;* V77 tmp70 [V77,T06] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP
;* V78 tmp71 [V78,T02] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
;* V79 tmp72 [V79 ] ( 0, 0 ) byref -> zero-ref "field V41._reference (fldOffset=0x0)" P-INDEP
;* V80 tmp73 [V80 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
;* V81 tmp74 [V81 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
;* V82 tmp75 [V82 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
;* V83 tmp76 [V83 ] ( 0, 0 ) byref -> zero-ref "field V45._reference (fldOffset=0x0)" P-INDEP
;* V84 tmp77 [V84 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP
; V85 tmp78 [V85,T27] ( 2, 1.52) byref -> rsi single-def "field V50._reference (fldOffset=0x0)" P-INDEP
; V86 tmp79 [V86,T22] ( 2, 2 ) int -> rax "field V50._length (fldOffset=0x8)" P-INDEP
; V87 tmp80 [V87 ] ( 2, 2 ) byref -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V51._reference (fldOffset=0x0)" P-DEP
; V88 tmp81 [V88 ] ( 2, 2 ) int -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V51._length (fldOffset=0x8)" P-DEP
; V89 tmp82 [V89,T20] ( 2, 2 ) byref -> rdi single-def "field V54._reference (fldOffset=0x0)" P-INDEP
; V90 tmp83 [V90,T23] ( 2, 2 ) int -> rbx "field V54._length (fldOffset=0x8)" P-INDEP
; V91 GsCookie [V91 ] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[X] addr-exposed "GSSecurityCookie"
; V92 cse0 [V92,T12] ( 7, 3.84) int -> r15 "CSE #02: moderate"
;
; Lcl frame size = 56
G_M60792_IG01:
push rbp
push r15
push r14
push rbx
sub rsp, 56
lea rbp, [rsp+0x50]
xor eax, eax
mov qword ptr [rbp-0x48], rax
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x40], ymm8
mov qword ptr [rbp-0x20], rax
mov qword ptr [rbp-0x50], 0xD1FFAB1E
mov rbx, rdi
mov r15, rsi
mov r14, rdx
;; size=52 bbWeight=1 PerfScore 11.08
G_M60792_IG02:
test dword ptr [rsp], esp
sub rsp, 128
lea rdi, [rsp]
mov bword ptr [rbp-0x28], rdi
mov dword ptr [rbp-0x20], 64
xor edi, edi
mov dword ptr [rbp-0x30], edi
test r14, r14
- je G_M60792_IG14
+ je G_M60792_IG10
;; size=39 bbWeight=1 PerfScore 8.25
G_M60792_IG03:
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|58_0(System.IFormatProvider):System.Globalization.NumberFormatInfo
call [rax]System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|58_0(System.IFormatProvider):System.Globalization.NumberFormatInfo
;; size=15 bbWeight=0.52 PerfScore 1.82
G_M60792_IG04:
mov edi, dword ptr [rax+0x38]
mov edi, dword ptr [rbp-0x30]
mov rsi, bword ptr [rbp-0x28]
mov eax, dword ptr [rbp-0x20]
cmp edi, eax
- jae G_M60792_IG15
- ;; size=21 bbWeight=1 PerfScore 6.25
+ jae SHORT G_M60792_IG11
+ ;; size=17 bbWeight=1 PerfScore 6.25
G_M60792_IG05:
mov eax, edi
mov word ptr [rsi+2*rax], 60
inc edi
mov dword ptr [rbp-0x30], edi
;; size=13 bbWeight=0.52 PerfScore 1.30
G_M60792_IG06:
mov rdi, qword ptr [rbx]
mov rsi, r15
mov rdx, r14
mov rax, 0xD1FFAB1E ; code for System.Number:FormatInt64(long,System.String,System.IFormatProvider):System.String
call [rax]System.Number:FormatInt64(long,System.String,System.IFormatProvider):System.String
mov rbx, rax
test rbx, rbx
- je SHORT G_M60792_IG11
- ;; size=29 bbWeight=1 PerfScore 7.25
+ je G_M60792_IG15
+ ;; size=33 bbWeight=1 PerfScore 7.25
G_M60792_IG07:
mov esi, dword ptr [rbp-0x30]
mov r15d, dword ptr [rbx+0x08]
cmp r15d, 1
- jne G_M60792_IG16
- ;; size=17 bbWeight=0.80 PerfScore 3.40
+ jne SHORT G_M60792_IG12
+ ;; size=13 bbWeight=0.80 PerfScore 3.40
G_M60792_IG08:
cmp esi, dword ptr [rbp-0x20]
- jae G_M60792_IG16
- ;; size=9 bbWeight=0.64 PerfScore 1.92
+ jae SHORT G_M60792_IG12
+ ;; size=5 bbWeight=0.64 PerfScore 1.92
G_M60792_IG09:
cmp esi, dword ptr [rbp-0x20]
- jae G_M60792_IG28
+ jae G_M60792_IG27
mov rdi, bword ptr [rbp-0x28]
mov eax, esi
movzx rcx, word ptr [rbx+0x0C]
mov word ptr [rdi+2*rax], cx
inc esi
mov dword ptr [rbp-0x30], esi
- jmp SHORT G_M60792_IG11
- ;; size=30 bbWeight=0.33 PerfScore 3.49
+ jmp G_M60792_IG15
+ ;; size=33 bbWeight=0.33 PerfScore 3.49
G_M60792_IG10:
+ mov rax, 0xD1FFAB1E ; code for System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
+ call [rax]System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
+ jmp SHORT G_M60792_IG04
+ ;; size=14 bbWeight=0.48 PerfScore 2.52
+G_M60792_IG11:
+ lea rdi, [rbp-0x38]
+ mov esi, 60
+ mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:GrowAndAppend(ushort):this
+ call [rax]System.Text.ValueStringBuilder:GrowAndAppend(ushort):this
+ jmp SHORT G_M60792_IG06
+ ;; size=23 bbWeight=0.48 PerfScore 2.88
+G_M60792_IG12:
+ mov r14d, dword ptr [rbp-0x30]
+ mov esi, dword ptr [rbp-0x20]
+ sub esi, r15d
+ cmp esi, r14d
+ jge SHORT G_M60792_IG14
+ ;; size=15 bbWeight=0.47 PerfScore 1.64
+G_M60792_IG13:
+ mov esi, r15d
+ lea rdi, [rbp-0x38]
+ mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:Grow(int):this
+ call [rax]System.Text.ValueStringBuilder:Grow(int):this
+ ;; size=19 bbWeight=0.37 PerfScore 1.50
+G_M60792_IG14:
+ cmp r14d, dword ptr [rbp-0x20]
+ ja G_M60792_IG26
+ mov rax, bword ptr [rbp-0x28]
+ mov ecx, r14d
+ lea rdi, bword ptr [rax+2*rcx]
+ mov eax, dword ptr [rbp-0x20]
+ sub eax, r14d
+ cmp r15d, eax
+ ja G_M60792_IG25
mov edx, r15d
add rdx, rdx
lea rsi, bword ptr [rbx+0x0C]
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
add r15d, dword ptr [rbp-0x30]
mov dword ptr [rbp-0x30], r15d
- ;; size=30 bbWeight=0.47 PerfScore 3.39
-G_M60792_IG11:
+ ;; size=66 bbWeight=0.47 PerfScore 6.77
+G_M60792_IG15:
mov edi, dword ptr [rbp-0x30]
mov rsi, bword ptr [rbp-0x28]
mov eax, dword ptr [rbp-0x20]
cmp edi, eax
- jae G_M60792_IG19
- ;; size=18 bbWeight=1 PerfScore 4.25
-G_M60792_IG12:
+ jae SHORT G_M60792_IG18
+ ;; size=14 bbWeight=1 PerfScore 4.25
+G_M60792_IG16:
mov eax, edi
mov word ptr [rsi+2*rax], 62
inc edi
mov dword ptr [rbp-0x30], edi
;; size=13 bbWeight=0.52 PerfScore 1.30
-G_M60792_IG13:
+G_M60792_IG17:
mov ebx, dword ptr [rbp-0x30]
cmp ebx, dword ptr [rbp-0x20]
- jbe G_M60792_IG20
- jmp G_M60792_IG27
- ;; size=17 bbWeight=1 PerfScore 6.00
-G_M60792_IG14:
- mov rax, 0xD1FFAB1E ; code for System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
- call [rax]System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
- jmp G_M60792_IG04
- ;; size=17 bbWeight=0.48 PerfScore 2.52
-G_M60792_IG15:
- lea rdi, [rbp-0x38]
- mov esi, 60
- mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:GrowAndAppend(ushort):this
- call [rax]System.Text.ValueStringBuilder:GrowAndAppend(ushort):this
- jmp G_M60792_IG06
- ;; size=26 bbWeight=0.48 PerfScore 2.88
-G_M60792_IG16:
- mov r14d, dword ptr [rbp-0x30]
- mov esi, dword ptr [rbp-0x20]
- sub esi, r15d
- cmp esi, r14d
- jge SHORT G_M60792_IG18
- ;; size=15 bbWeight=0.47 PerfScore 1.64
-G_M60792_IG17:
- mov esi, r15d
- lea rdi, [rbp-0x38]
- mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:Grow(int):this
- call [rax]System.Text.ValueStringBuilder:Grow(int):this
- ;; size=19 bbWeight=0.37 PerfScore 1.50
+ jbe SHORT G_M60792_IG19
+ jmp G_M60792_IG26
+ ;; size=13 bbWeight=1 PerfScore 6.00
G_M60792_IG18:
- cmp r14d, dword ptr [rbp-0x20]
- ja G_M60792_IG27
- mov rdx, bword ptr [rbp-0x28]
- mov esi, r14d
- lea rdi, bword ptr [rdx+2*rsi]
- mov edx, dword ptr [rbp-0x20]
- sub edx, r14d
- cmp r15d, edx
- ja G_M60792_IG26
- jmp G_M60792_IG10
- ;; size=41 bbWeight=0.47 PerfScore 4.32
-G_M60792_IG19:
lea rdi, [rbp-0x38]
mov esi, 62
mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:GrowAndAppend(ushort):this
call [rax]System.Text.ValueStringBuilder:GrowAndAppend(ushort):this
- jmp G_M60792_IG13
- ;; size=26 bbWeight=0.48 PerfScore 2.88
-G_M60792_IG20:
+ jmp SHORT G_M60792_IG17
+ ;; size=23 bbWeight=0.48 PerfScore 2.88
+G_M60792_IG19:
mov rdi, bword ptr [rbp-0x28]
mov bword ptr [rbp-0x48], rdi
mov dword ptr [rbp-0x40], ebx
lea rdi, [rbp-0x48]
mov rax, 0xD1FFAB1E ; code for System.Span`1[ushort]:ToString():System.String:this
call [rax]System.Span`1[ushort]:ToString():System.String:this
mov rbx, rax
mov rsi, gword ptr [rbp-0x38]
vxorps ymm0, ymm0, ymm0
vmovdqu ymmword ptr [rbp-0x38], ymm0
test rsi, rsi
- je SHORT G_M60792_IG22
+ je SHORT G_M60792_IG21
;; size=48 bbWeight=1 PerfScore 10.58
-G_M60792_IG21:
+G_M60792_IG20:
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ushort]:Return(ushort[],ubyte):this
call [rax]System.Buffers.SharedArrayPool`1[ushort]:Return(ushort[],ubyte):this
;; size=27 bbWeight=0.80 PerfScore 4.60
-G_M60792_IG22:
+G_M60792_IG21:
mov rax, rbx
;; size=3 bbWeight=1 PerfScore 0.25
-G_M60792_IG23:
+G_M60792_IG22:
cmp qword ptr [rbp-0x50], 0xD1FFAB1E
- je SHORT G_M60792_IG24
+ je SHORT G_M60792_IG23
call CORINFO_HELP_FAIL_FAST
;; size=15 bbWeight=1 PerfScore 4.00
-G_M60792_IG24:
+G_M60792_IG23:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M60792_IG25:
+G_M60792_IG24:
lea rsp, [rbp-0x18]
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 3.50
-G_M60792_IG26:
+G_M60792_IG25:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M60792_IG27:
+G_M60792_IG26:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M60792_IG28:
+G_M60792_IG27:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 584, prolog size 43, PerfScore 98.62, instruction count 148, allocated bytes for code 584 (MethodHash=74621287) for method System.Runtime.Intrinsics.Vector64`1[long]:ToString(System.String,System.IFormatProvider):System.String:this (Tier0-FullOpts)
+; Total bytes of code 557, prolog size 43, PerfScore 97.69, instruction count 147, allocated bytes for code 557 (MethodHash=74621287) for method System.Runtime.Intrinsics.Vector64`1[long]:ToString(System.String,System.IFormatProvider):System.String:this (Tier0-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/eb109b8d242e608bed259e8cff3a4997 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 17 minutes 6 seconds.
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: