-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Regressions in System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock #82106
Comments
Run Information
Regressions in System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md Payloadsgit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock*' PayloadsHistogramSystem.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock.Count(Pattern: "aei", Options: Compiled)
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository |
Run Information
Regressions in System.Text.Tests.Perf_StringBuilder
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md Payloadsgit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.Tests.Perf_StringBuilder*' PayloadsHistogramSystem.Text.Tests.Perf_StringBuilder.Append_ValueTypes_Interpolated
Description of detection logic
; System.DateTimeOffset..ctor(System.DateTime, System.TimeSpan)
push rdi
push rsi
push rbx
sub rsp,20
mov rdi,rcx
mov rbx,rdx
mov rsi,r8
mov rax,0C000000000000000
and rax,rbx
mov rcx,rax
test rcx,rcx
je short M01_L00
mov rdx,4000000000000000
cmp rcx,rdx
je short M01_L00
mov rcx,rbx
mov edx,2
call qword ptr [7FFC4BE95138]
mov rdx,rax
mov rcx,rsi
call qword ptr [7FFC4BB13828]
test eax,eax
jne near ptr M01_L07
jmp short M01_L01
M01_L00:
test rax,rax
jne near ptr M01_L02
M01_L01:
mov rcx,rsi
mov rdx,1CA213D840BAF7D5
mov rax,rdx
imul rcx
mov rax,rdx
shr rax,3F
sar rdx,1A
add rax,rdx
imul rdx,rax,23C34600
sub rcx,rdx
jne near ptr M01_L03
mov rcx,0FFFFFF8AA7425000
cmp rsi,rcx
jl near ptr M01_L04
mov rcx,7558BDB000
cmp rsi,rcx
jg near ptr M01_L04
mov [rdi],ax
mov rcx,3FFFFFFFFFFFFFFF
and rcx,rbx
sub rcx,rsi
js near ptr M01_L05
mov rax,2BCA2875F4373FFF
cmp rcx,rax
jg near ptr M01_L05
mov rax,2BCA2875F4373FFF
cmp rcx,rax
ja near ptr M01_L06
mov [rdi+8],rcx
add rsp,20
pop rbx
pop rsi
pop rdi
ret
M01_L02:
mov rcx,4000000000000000
cmp rax,rcx
jne near ptr M01_L01
mov rcx,rsi
xor edx,edx
call qword ptr [7FFC4BB13828]
test eax,eax
je near ptr M01_L01
mov rcx,offset MT_System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
call qword ptr [7FFC4B9B7EE8]
mov rdi,rax
mov ecx,1C7B
mov rdx,7FFC4B724000
call CORINFO_HELP_STRCNS
mov r8,rax
mov rdx,rdi
mov rcx,rsi
call qword ptr [7FFC4B8EDBD0]
mov rcx,rsi
call CORINFO_HELP_THROW
M01_L03:
mov rcx,offset MT_System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
call qword ptr [7FFC4B9B7ED0]
mov rdi,rax
mov ecx,1C7B
mov rdx,7FFC4B724000
call CORINFO_HELP_STRCNS
mov r8,rax
mov rdx,rdi
mov rcx,rsi
call qword ptr [7FFC4B8EDBD0]
mov rcx,rsi
call CORINFO_HELP_THROW
M01_L04:
mov rcx,offset MT_System.ArgumentOutOfRangeException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov ecx,1C7B
mov rdx,7FFC4B724000
call CORINFO_HELP_STRCNS
mov rdi,rax
call qword ptr [7FFC4B9B7EB8]
mov r8,rax
mov rdx,rdi
mov rcx,rsi
call qword ptr [7FFC4B9D9030]
mov rcx,rsi
call CORINFO_HELP_THROW
M01_L05:
mov rcx,offset MT_System.ArgumentOutOfRangeException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov ecx,1C7B
mov rdx,7FFC4B724000
call CORINFO_HELP_STRCNS
mov rdi,rax
call qword ptr [7FFC4B9B9288]
mov r8,rax
mov rdx,rdi
mov rcx,rsi
call qword ptr [7FFC4B9D9030]
mov rcx,rsi
call CORINFO_HELP_THROW
M01_L06:
call qword ptr [7FFC4BA8D108]
int 3
M01_L07:
mov rcx,offset MT_System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
call qword ptr [7FFC4B9B7E88]
mov rdi,rax
mov ecx,1C7B
mov rdx,7FFC4B724000
call CORINFO_HELP_STRCNS
mov r8,rax
mov rdx,rdi
mov rcx,rsi
call qword ptr [7FFC4B8EDBD0]
mov rcx,rsi
call CORINFO_HELP_THROW
int 3
; Total bytes of code 655 ; System.Buffers.TlsOverPerCoreLockedStacksArrayPool`1[[System.Char, System.Private.CoreLib]].Rent(Int32)
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbp
push rbx
sub rsp,38
mov rdi,rcx
mov esi,edx
mov rcx,18B85000648
mov rbx,[rcx]
lea ecx,[rsi-1]
or ecx,0F
xor ebp,ebp
lzcnt ebp,ecx
xor ebp,1F
add ebp,0FFFFFFFD
mov rcx,7FFC4B844E68
mov edx,1E
call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_DYNAMICCLASS
mov rcx,[rax]
test rcx,rcx
je short M02_L01
mov eax,[rcx+8]
cmp eax,ebp
jbe short M02_L01
mov eax,ebp
shl rax,4
mov r14,[rcx+rax+10]
test r14,r14
je short M02_L01
xor edx,edx
mov [rcx+rax+10],rdx
cmp byte ptr [rbx+9D],0
je short M02_L00
mov rcx,r14
call System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(System.Object)
mov esi,eax
mov r15d,[r14+8]
cmp [rdi],dil
mov rcx,rdi
call System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(System.Object)
mov r9d,eax
mov [rsp+20],ebp
mov edx,esi
mov r8d,r15d
mov rcx,rbx
call qword ptr [7FFC4BC5B348]; System.Buffers.ArrayPoolEventSource.BufferRented(Int32, Int32, Int32, Int32)
M02_L00:
mov rax,r14
add rsp,38
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
M02_L01:
mov rcx,[rdi+10]
mov edx,[rcx+8]
cmp edx,ebp
jbe near ptr M02_L16
mov edx,ebp
mov rcx,[rcx+rdx*8+10]
test rcx,rcx
je near ptr M02_L15
mov r14,[rcx+8]
mov rcx,7FFC4B844E68
mov edx,2FE
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
cmp byte ptr [7FFC4B845910],0
jne near ptr M02_L22
mov rcx,7FFC4B844E68
mov edx,34F
call CORINFO_HELP_GETSHARED_NONGCTHREADSTATIC_BASE
mov edx,[rax+9E4]
lea ecx,[rdx-1]
mov [rax+9E4],ecx
movzx eax,dx
test eax,eax
je near ptr M02_L11
mov r15d,edx
sar r15d,10
M02_L02:
mov rcx,7FFC4B844E68
mov edx,1F
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov eax,r15d
xor edx,edx
div dword ptr [7FFC4BE68A48]
mov esi,edx
xor r15d,r15d
mov r12d,[r14+8]
test r12d,r12d
jle short M02_L06
M02_L03:
cmp esi,r12d
jae near ptr M02_L24
mov ecx,esi
mov r13,[r14+rcx*8+10]
cmp [r13],r13b
xor eax,eax
mov [rsp+30],rax
mov rcx,r13
call System.Threading.Monitor.Enter(System.Object)
mov rcx,[r13+8]
mov eax,[r13+10]
dec eax
cmp [rcx+8],eax
ja short M02_L08
M02_L04:
mov rcx,r13
call System.Threading.Monitor.Exit(System.Object)
mov r13,[rsp+30]
test r13,r13
jne near ptr M02_L12
inc esi
cmp r12d,esi
je short M02_L07
M02_L05:
inc r15d
cmp r12d,r15d
jg short M02_L03
M02_L06:
xor r14d,r14d
jmp near ptr M02_L13
M02_L07:
xor esi,esi
jmp short M02_L05
M02_L08:
mov edx,eax
mov rdx,[rcx+rdx*8+10]
mov [rsp+30],rdx
mov r8d,eax
xor r9d,r9d
mov [rcx+r8*8+10],r9
mov [r13+10],eax
jmp short M02_L04
M02_L09:
cmp esi,400
jl near ptr M02_L18
mov rcx,1CC197748F8
mov rcx,[rcx]
mov edx,esi
mov r8d,10
call System.GC.AllocateNewArray(IntPtr, Int32, GC_ALLOC_FLAGS)
mov r14,rax
M02_L10:
cmp byte ptr [rbx+9D],0
je near ptr M02_L21
cmp [r14],r14b
mov rcx,r14
call System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(System.Object)
mov esi,eax
mov r15d,[r14+8]
mov rcx,rdi
call System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(System.Object)
mov r9d,eax
mov dword ptr [rsp+20],0FFFFFFFF
mov edx,esi
mov r8d,r15d
mov rcx,rbx
call qword ptr [7FFC4BC5B348]; System.Buffers.ArrayPoolEventSource.BufferRented(Int32, Int32, Int32, Int32)
mov r15d,[r14+8]
mov rcx,rdi
call System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(System.Object)
mov rcx,rbx
mov edx,esi
mov r8d,r15d
mov r9d,eax
mov rax,[rdi+10]
cmp [rax+8],ebp
jle near ptr M02_L19
mov eax,2
jmp near ptr M02_L20
M02_L11:
call qword ptr [7FFC4BE95F90]
mov r15d,eax
jmp near ptr M02_L02
M02_L12:
mov r14,r13
M02_L13:
test r14,r14
je short M02_L15
cmp byte ptr [rbx+9D],0
je short M02_L14
mov rcx,r14
call System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(System.Object)
mov esi,eax
mov r15d,[r14+8]
mov rcx,rdi
call System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(System.Object)
mov r9d,eax
mov [rsp+20],ebp
mov edx,esi
mov r8d,r15d
mov rcx,rbx
call qword ptr [7FFC4BC5B348]; System.Buffers.ArrayPoolEventSource.BufferRented(Int32, Int32, Int32, Int32)
M02_L14:
mov rax,r14
add rsp,38
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
M02_L15:
mov ecx,10
shlx esi,ecx,ebp
jmp near ptr M02_L09
M02_L16:
test esi,esi
jne short M02_L17
mov rcx,7FFC4B844E68
mov edx,31
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rax,18B85001EA8
mov rax,[rax]
add rsp,38
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
M02_L17:
test esi,esi
jl short M02_L23
jmp near ptr M02_L09
M02_L18:
movsxd rdx,esi
mov rcx,offset MT_System.Char[]
call CORINFO_HELP_NEWARR_1_VC
mov r14,rax
jmp near ptr M02_L10
M02_L19:
mov eax,1
M02_L20:
mov dword ptr [rsp+20],0FFFFFFFF
mov [rsp+28],eax
call qword ptr [7FFC4BC5B360]
M02_L21:
mov rax,r14
add rsp,38
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
M02_L22:
call qword ptr [7FFC4B8E9CC0]
mov r15d,eax
jmp near ptr M02_L02
M02_L23:
mov ecx,164DC
mov rdx,7FFC4B724000
call CORINFO_HELP_STRCNS
mov rcx,rax
mov edx,esi
call qword ptr [7FFC4BA39420]
int 3
M02_L24:
call CORINFO_HELP_RNGCHKFAIL
int 3
; Total bytes of code 922 ; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.Guid, System.Private.CoreLib]](System.Guid)
push rdi
push rsi
push rbp
push rbx
sub rsp,58
vzeroupper
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rsp+20],xmm4
vmovdqa xmmword ptr [rsp+30],xmm4
mov rdi,rcx
mov rsi,rdx
cmp byte ptr [rdi+14],0
jne short M03_L02
M03_L00:
vmovups xmm0,[rsi]
vmovups [rsp+40],xmm0
lea rbx,[rdi+18]
mov ebp,[rdi+10]
cmp ebp,[rbx+8]
jbe short M03_L01
call qword ptr [7FFC4BC2D4E0]
int 3
M03_L01:
mov rdx,[rbx]
mov r9d,ebp
lea rdx,[rdx+r9*2]
mov r9d,[rbx+8]
sub r9d,ebp
xor r8d,r8d
mov [rsp+30],rdx
mov [rsp+38],r9d
mov [rsp+20],r8
xor edx,edx
mov [rsp+28],edx
lea rdx,[rsp+30]
lea r9,[rsp+20]
lea r8,[rsp+50]
lea rcx,[rsp+40]
call qword ptr [7FFC4B9D3BA0]; System.Guid.TryFormat(System.Span`1<Char>, Int32 ByRef, System.ReadOnlySpan`1<Char>)
test eax,eax
je short M03_L03
mov eax,[rsp+50]
add [rdi+10],eax
add rsp,58
pop rbx
pop rbp
pop rsi
pop rdi
ret
M03_L02:
mov rcx,rdi
mov rdx,rsi
xor r8d,r8d
call qword ptr [7FFC4BE971F8]
nop
add rsp,58
pop rbx
pop rbp
pop rsi
pop rdi
ret
M03_L03:
mov rcx,rdi
call qword ptr [7FFC4BB157B0]
jmp near ptr M03_L00
; Total bytes of code 194 ; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.DateTime, System.Private.CoreLib]](System.DateTime)
push rdi
push rsi
sub rsp,58
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rsp+30],xmm4
vmovdqa xmmword ptr [rsp+40],xmm4
mov rsi,rcx
mov rdi,rdx
cmp byte ptr [rsi+14],0
je short M04_L01
mov rcx,rsi
mov rdx,rdi
xor r8d,r8d
call qword ptr [7FFC4BE59DC8]
nop
add rsp,58
pop rsi
pop rdi
ret
M04_L00:
mov rcx,rsi
call qword ptr [7FFC4BB157B0]
M04_L01:
lea rcx,[rsi+18]
mov edx,[rsi+10]
mov r9d,[rcx+8]
cmp edx,r9d
ja short M04_L02
mov rcx,[rcx]
mov r8d,edx
lea rcx,[rcx+r8*2]
sub r9d,edx
mov rdx,[rsi]
xor r8d,r8d
mov [rsp+40],rcx
mov [rsp+48],r9d
mov [rsp+30],r8
xor ecx,ecx
mov [rsp+38],ecx
mov [rsp+20],rdx
mov rcx,8000000000000000
mov [rsp+28],rcx
mov rcx,rdi
lea rdx,[rsp+40]
lea r9,[rsp+30]
lea r8,[rsp+50]
call qword ptr [7FFC4BE5B1C8]; System.DateTimeFormat.TryFormat(System.DateTime, System.Span`1<Char>, Int32 ByRef, System.ReadOnlySpan`1<Char>, System.IFormatProvider, System.TimeSpan)
test eax,eax
je short M04_L00
mov eax,[rsp+50]
add [rsi+10],eax
add rsp,58
pop rsi
pop rdi
ret
M04_L02:
call qword ptr [7FFC4BC2D4E0]
int 3
; Total bytes of code 191 ; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.TimeSpan, System.Private.CoreLib]](System.TimeSpan)
push rdi
push rsi
sub rsp,58
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rsp+30],xmm4
vmovdqa xmmword ptr [rsp+40],xmm4
mov rsi,rcx
mov rdi,rdx
cmp byte ptr [rsi+14],0
je short M05_L01
mov rcx,rsi
mov rdx,rdi
xor r8d,r8d
call qword ptr [7FFC4BE5D0D8]
nop
add rsp,58
pop rsi
pop rdi
ret
M05_L00:
mov rcx,rsi
call qword ptr [7FFC4BB157B0]
M05_L01:
lea rcx,[rsi+18]
mov edx,[rsi+10]
mov r9d,[rcx+8]
cmp edx,r9d
ja short M05_L02
mov rcx,[rcx]
mov r8d,edx
lea rcx,[rcx+r8*2]
sub r9d,edx
xor edx,edx
mov [rsp+40],rcx
mov [rsp+48],r9d
mov [rsp+30],rdx
xor ecx,ecx
mov [rsp+38],ecx
mov rcx,[rsi]
mov [rsp+20],rcx
mov rcx,rdi
lea rdx,[rsp+40]
lea r9,[rsp+30]
lea r8,[rsp+50]
call qword ptr [7FFC4BE5D1C8]; System.Globalization.TimeSpanFormat.TryFormat(System.TimeSpan, System.Span`1<Char>, Int32 ByRef, System.ReadOnlySpan`1<Char>, System.IFormatProvider)
test eax,eax
je short M05_L00
mov eax,[rsp+50]
add [rsi+10],eax
add rsp,58
pop rsi
pop rdi
ret
M05_L02:
call qword ptr [7FFC4BC2D4E0]
int 3
; Total bytes of code 175 ; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted[[System.DateTimeOffset, System.Private.CoreLib]](System.DateTimeOffset)
push r15
push r14
push r12
push rdi
push rsi
push rbp
push rbx
sub rsp,70
vzeroupper
xor eax,eax
mov [rsp+38],rax
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rsp+40],xmm4
mov [rsp+50],rax
mov rsi,rcx
mov rdi,rdx
cmp byte ptr [rsi+14],0
je short M06_L01
mov rcx,rsi
mov rdx,rdi
xor r8d,r8d
call qword ptr [7FFC4BE5D2A0]
nop
add rsp,70
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r14
pop r15
ret
M06_L00:
mov rcx,rsi
call qword ptr [7FFC4BB157B0]
M06_L01:
vmovups xmm0,[rdi]
vmovups [rsp+58],xmm0
lea rcx,[rsi+18]
mov edx,[rsi+10]
mov ebx,[rcx+8]
cmp edx,ebx
ja near ptr M06_L02
mov rcx,[rcx]
mov eax,edx
lea rbp,[rcx+rax*2]
sub ebx,edx
xor r14d,r14d
mov r15,[rsi]
mov rcx,[rsp+60]
movsx rdx,word ptr [rsp+58]
movsxd rdx,edx
imul rdx,3C
mov rax,0D6BF94D5E5
cmp rdx,rax
jg near ptr M06_L04
mov rax,0FFFFFF29406B2A1B
cmp rdx,rax
jl near ptr M06_L04
imul r12,rdx,989680
mov rdx,r12
call qword ptr [7FFC4BA8DCC0]; System.DateTime.op_Addition(System.DateTime, System.TimeSpan)
mov rcx,3FFFFFFFFFFFFFFF
and rcx,rax
mov rdx,2BCA2875F4373FFF
cmp rcx,rdx
ja short M06_L03
mov [rsp+48],rbp
mov [rsp+50],ebx
mov [rsp+38],r14
xor edx,edx
mov [rsp+40],edx
mov [rsp+20],r15
mov [rsp+28],r12
lea rdx,[rsp+48]
lea r9,[rsp+38]
lea r8,[rsp+68]
call qword ptr [7FFC4BE5B1C8]; System.DateTimeFormat.TryFormat(System.DateTime, System.Span`1<Char>, Int32 ByRef, System.ReadOnlySpan`1<Char>, System.IFormatProvider, System.TimeSpan)
test eax,eax
je near ptr M06_L00
mov eax,[rsp+68]
add [rsi+10],eax
add rsp,70
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r14
pop r15
ret
M06_L02:
call qword ptr [7FFC4BC2D4E0]
int 3
M06_L03:
call qword ptr [7FFC4BA8D108]
int 3
M06_L04:
call qword ptr [7FFC4BC2D6C0]
int 3
; Total bytes of code 338 ; System.Buffers.TlsOverPerCoreLockedStacksArrayPool`1[[System.Char, System.Private.CoreLib]].Return(Char[], Boolean)
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbp
push rbx
sub rsp,58
mov rbx,rcx
mov rsi,rdx
mov edi,r8d
test rsi,rsi
je near ptr M07_L22
mov ebp,[rsi+8]
lea ecx,[rbp-1]
or ecx,0F
xor r14d,r14d
lzcnt r14d,ecx
xor r14d,1F
add r14d,0FFFFFFFD
mov rcx,7FFC4B844E68
mov edx,1E
call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_DYNAMICCLASS
mov r15,[rax]
test r15,r15
je near ptr M07_L13
M07_L00:
xor r12d,r12d
mov r13d,1
mov edx,[r15+8]
cmp edx,r14d
jbe short M07_L02
mov r12d,1
test dil,dil
jne near ptr M07_L23
M07_L01:
mov edx,10
shlx edx,edx,r14d
cmp ebp,edx
jne near ptr M07_L15
mov edx,r14d
shl rdx,4
lea r15,[r15+rdx+10]
mov rdi,[r15]
mov rcx,r15
mov rdx,rsi
call CORINFO_HELP_CHECKED_ASSIGN_REF
xor ecx,ecx
mov [r15+8],ecx
test rdi,rdi
jne short M07_L04
M07_L02:
mov rcx,18B85000648
mov rdi,[rcx]
cmp byte ptr [rdi+9D],0
jne near ptr M07_L17
M07_L03:
add rsp,58
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
M07_L04:
mov rcx,[rbx+10]
cmp r14d,[rcx+8]
jae near ptr M07_L27
mov edx,r14d
mov rax,[rcx+rdx*8+10]
test rax,rax
je near ptr M07_L14
M07_L05:
mov r15,[rax+8]
mov rcx,7FFC4B844E68
mov edx,2FE
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
cmp byte ptr [7FFC4B845910],0
jne near ptr M07_L16
mov rcx,7FFC4B844E68
mov edx,34F
call CORINFO_HELP_GETSHARED_NONGCTHREADSTATIC_BASE
mov edx,[rax+9E4]
lea ecx,[rdx-1]
mov [rax+9E4],ecx
movzx eax,dx
test eax,eax
je near ptr M07_L12
mov r13d,edx
sar r13d,10
M07_L06:
mov rcx,7FFC4B844E68
mov edx,1F
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov eax,r13d
xor edx,edx
div dword ptr [7FFC4BE68A48]
mov r13d,edx
xor eax,eax
mov [rsp+50],eax
mov edx,[r15+8]
mov [rsp+44],edx
test edx,edx
jle near ptr M07_L26
M07_L07:
cmp r13d,edx
jae near ptr M07_L27
mov ecx,r13d
mov r8,[r15+rcx*8+10]
mov [rsp+38],r8
cmp [r8],r8b
xor r9d,r9d
mov [rsp+4C],r9d
mov rcx,r8
call System.Threading.Monitor.Enter(System.Object)
mov rax,[rsp+38]
mov rcx,[rax+8]
mov r9d,[rax+10]
mov [rsp+48],r9d
cmp [rcx+8],r9d
jbe short M07_L09
test r9d,r9d
je short M07_L11
M07_L08:
movsxd rdx,r9d
mov r8,rdi
call CORINFO_HELP_ARRADDR_ST
mov ecx,[rsp+48]
inc ecx
mov rax,[rsp+38]
mov [rax+10],ecx
mov dword ptr [rsp+4C],1
M07_L09:
mov rcx,rax
call System.Threading.Monitor.Exit(System.Object)
mov ecx,[rsp+4C]
test ecx,ecx
je near ptr M07_L24
mov r13d,1
M07_L10:
jmp near ptr M07_L02
M07_L11:
xor edx,edx
mov [rax+14],edx
jmp short M07_L08
M07_L12:
call qword ptr [7FFC4BE95F90]
mov r13d,eax
jmp near ptr M07_L06
M07_L13:
mov rcx,rbx
call qword ptr [7FFC4BC598E8]
mov r15,rax
jmp near ptr M07_L00
M07_L14:
mov rcx,rbx
mov edx,r14d
call qword ptr [7FFC4BC59870]
jmp near ptr M07_L05
M07_L15:
mov rcx,offset MT_System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbp,rax
call qword ptr [7FFC4B9B92B8]
mov rsi,rax
mov ecx,1D3
mov rdx,7FFC4B724000
call CORINFO_HELP_STRCNS
mov r8,rax
mov rdx,rsi
mov rcx,rbp
call qword ptr [7FFC4B8EDBD0]
mov rcx,rbp
call CORINFO_HELP_THROW
M07_L16:
call qword ptr [7FFC4B8E9CC0]
mov r13d,eax
jmp near ptr M07_L06
M07_L17:
test ebp,ebp
je near ptr M07_L03
mov rcx,rsi
call System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(System.Object)
mov r15d,eax
mov [rsp+54],ebp
cmp [rbx],bl
mov rcx,rbx
call System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(System.Object)
mov [rsp+20],eax
mov rcx,rdi
mov r8d,r15d
mov r9d,[rsp+54]
mov edx,3
call qword ptr [7FFC4B9D52E8]; System.Diagnostics.Tracing.EventSource.WriteEvent(Int32, Int32, Int32, Int32)
test r13d,r12d
jne near ptr M07_L03
mov rcx,rsi
call System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(System.Object)
mov esi,eax
mov rcx,rbx
call System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(System.Object)
test r12d,r12d
jne short M07_L18
mov ecx,0FFFFFFFF
jmp short M07_L19
M07_L18:
mov ecx,r14d
M07_L19:
mov edx,esi
mov r8d,ebp
mov r9d,eax
test r12d,r12d
jne short M07_L20
mov eax,1
jmp short M07_L21
M07_L20:
xor eax,eax
M07_L21:
mov [rsp+20],ecx
mov [rsp+28],eax
mov rcx,rdi
call qword ptr [7FFC4BC5B3C0]
jmp near ptr M07_L03
M07_L22:
mov ecx,2
call qword ptr [7FFC4BC2D7F8]
int 3
M07_L23:
mov rcx,rsi
call qword ptr [7FFC4B859738]
jmp near ptr M07_L01
M07_L24:
inc r13d
mov ecx,[rsp+44]
cmp ecx,r13d
jne short M07_L25
xor r13d,r13d
M07_L25:
mov eax,[rsp+50]
inc eax
cmp ecx,eax
mov [rsp+50],eax
mov edx,ecx
jg near ptr M07_L07
M07_L26:
xor r13d,r13d
jmp near ptr M07_L10
M07_L27:
call CORINFO_HELP_RNGCHKFAIL
int 3
; Total bytes of code 892 ; System.Text.StringBuilder.Append(Char ByRef, Int32)
push rdi
push rsi
push rbx
sub rsp,20
mov rdi,rcx
mov esi,r8d
test esi,esi
je short M08_L03
mov r8,[rdi+8]
mov ebx,[rdi+18]
lea ecx,[rbx+rsi]
cmp ecx,[r8+8]
ja short M08_L02
movsxd rcx,ebx
lea rcx,[r8+rcx*2+10]
cmp esi,2
jle short M08_L01
movsxd r8,esi
add r8,r8
call qword ptr [7FFC4B9D10A8]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
M08_L00:
add esi,ebx
mov [rdi+18],esi
add rsp,20
pop rbx
pop rsi
pop rdi
ret
M08_L01:
movzx r8d,word ptr [rdx]
mov [rcx],r8w
cmp esi,2
jne short M08_L00
movzx r8d,word ptr [rdx+2]
mov [rcx+2],r8w
jmp short M08_L00
M08_L02:
mov rcx,rdi
mov r8d,esi
add rsp,20
pop rbx
pop rsi
pop rdi
jmp qword ptr [7FFC4BA6DD20]; System.Text.StringBuilder.AppendWithExpansion(Char ByRef, Int32)
M08_L03:
add rsp,20
pop rbx
pop rsi
pop rdi
ret
; Total bytes of code 123 Compare Jit Disasm; System.Text.Tests.Perf_StringBuilder.Append_ValueTypes_Interpolated()
push rdi
push rsi
push rbx
sub rsp,80
xor eax,eax
mov [rsp+48],rax
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rsp+50],xmm4
vmovdqa xmmword ptr [rsp+60],xmm4
vmovdqa xmmword ptr [rsp+70],xmm4
mov rcx,offset MT_System.Text.StringBuilder
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov dword ptr [rsi+20],7FFFFFFF
mov rcx,offset MT_System.Char[]
mov edx,10
call CORINFO_HELP_NEWARR_1_VC
lea rcx,[rsi+8]
mov rdx,rax
call CORINFO_HELP_ASSIGN_REF
lea rcx,[rsp+70]
mov rdx,8D661571745C000
mov r8,8A94AF400
call qword ptr [7FFE9CC911F8]; System.DateTimeOffset..ctor(System.DateTime, System.TimeSpan)
mov dword ptr [rsp+60],1
mov word ptr [rsp+64],2
mov word ptr [rsp+66],3
mov byte ptr [rsp+68],4
mov byte ptr [rsp+69],5
mov byte ptr [rsp+6A],6
mov byte ptr [rsp+6B],7
mov byte ptr [rsp+6C],8
mov byte ptr [rsp+6D],9
mov byte ptr [rsp+6E],0A
mov byte ptr [rsp+6F],0B
mov edi,1
mov rbx,28AB5627C98
add rbx,0C
M00_L00:
mov [rsp+48],rsi
xor edx,edx
mov [rsp+50],rdx
mov byte ptr [rsp+58],0
vmovups xmm0,[rsp+60]
vmovups [rsp+38],xmm0
lea rdx,[rsp+38]
lea rcx,[rsp+48]
call qword ptr [7FFE9CC01000]; System.Text.StringBuilder+AppendInterpolatedStringHandler.AppendFormatted[[System.Guid, System.Private.CoreLib]](System.Guid)
mov rcx,[rsp+48]
cmp [rcx],cl
mov rdx,rbx
mov r8d,1
call qword ptr [7FFE9CBEDD08]; System.Text.StringBuilder.Append(Char ByRef, Int32)
lea rcx,[rsp+48]
mov rdx,8D661571745C000
call qword ptr [7FFE9CFD9D38]; System.Text.StringBuilder+AppendInterpolatedStringHandler.AppendFormatted[[System.DateTime, System.Private.CoreLib]](System.DateTime)
mov rcx,[rsp+48]
cmp [rcx],cl
mov rdx,rbx
mov r8d,1
call qword ptr [7FFE9CBEDD08]; System.Text.StringBuilder.Append(Char ByRef, Int32)
lea rcx,[rsp+48]
mov rdx,8A94AF400
call qword ptr [7FFE9CFD9D50]; System.Text.StringBuilder+AppendInterpolatedStringHandler.AppendFormatted[[System.TimeSpan, System.Private.CoreLib]](System.TimeSpan)
mov rcx,[rsp+48]
cmp [rcx],cl
mov rdx,rbx
mov r8d,1
call qword ptr [7FFE9CBEDD08]; System.Text.StringBuilder.Append(Char ByRef, Int32)
vmovups xmm0,[rsp+70]
vmovups [rsp+28],xmm0
lea rdx,[rsp+28]
lea rcx,[rsp+48]
call qword ptr [7FFE9CFD9D68]; System.Text.StringBuilder+AppendInterpolatedStringHandler.AppendFormatted[[System.DateTimeOffset, System.Private.CoreLib]](System.DateTimeOffset)
inc edi
cmp edi,4
jle near ptr M00_L00
mov rax,rsi
add rsp,80
pop rbx
pop rsi
pop rdi
ret
; Total bytes of code 414 ; System.DateTimeOffset..ctor(System.DateTime, System.TimeSpan)
push rdi
push rsi
push rbx
sub rsp,20
mov rdi,rcx
mov rbx,rdx
mov rsi,r8
mov rax,0C000000000000000
and rax,rbx
mov rcx,rax
test rcx,rcx
je short M01_L00
mov rdx,4000000000000000
cmp rcx,rdx
je short M01_L00
mov rcx,rbx
mov edx,2
call qword ptr [7FFE9D015138]
mov rdx,rax
mov rcx,rsi
call qword ptr [7FFE9CC93828]
test eax,eax
jne near ptr M01_L07
jmp short M01_L01
M01_L00:
test rax,rax
jne near ptr M01_L02
M01_L01:
mov rcx,rsi
mov rdx,1CA213D840BAF7D5
mov rax,rdx
imul rcx
mov rax,rdx
shr rax,3F
sar rdx,1A
add rax,rdx
imul rdx,rax,23C34600
sub rcx,rdx
jne near ptr M01_L03
mov rcx,0FFFFFF8AA7425000
cmp rsi,rcx
jl near ptr M01_L04
mov rcx,7558BDB000
cmp rsi,rcx
jg near ptr M01_L04
mov [rdi],ax
mov rcx,3FFFFFFFFFFFFFFF
and rcx,rbx
sub rcx,rsi
js near ptr M01_L05
mov rax,2BCA2875F4373FFF
cmp rcx,rax
jg near ptr M01_L05
mov rax,2BCA2875F4373FFF
cmp rcx,rax
ja near ptr M01_L06
mov [rdi+8],rcx
add rsp,20
pop rbx
pop rsi
pop rdi
ret
M01_L02:
mov rcx,4000000000000000
cmp rax,rcx
jne near ptr M01_L01
mov rcx,rsi
xor edx,edx
call qword ptr [7FFE9CC93828]
test eax,eax
je near ptr M01_L01
mov rcx,offset MT_System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
call qword ptr [7FFE9CB37EE8]
mov rdi,rax
mov ecx,1C7B
mov rdx,7FFE9C8A4000
call CORINFO_HELP_STRCNS
mov r8,rax
mov rdx,rdi
mov rcx,rsi
call qword ptr [7FFE9CA6DBD0]
mov rcx,rsi
call CORINFO_HELP_THROW
M01_L03:
mov rcx,offset MT_System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
call qword ptr [7FFE9CB37ED0]
mov rdi,rax
mov ecx,1C7B
mov rdx,7FFE9C8A4000
call CORINFO_HELP_STRCNS
mov r8,rax
mov rdx,rdi
mov rcx,rsi
call qword ptr [7FFE9CA6DBD0]
mov rcx,rsi
call CORINFO_HELP_THROW
M01_L04:
mov rcx,offset MT_System.ArgumentOutOfRangeException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov ecx,1C7B
mov rdx,7FFE9C8A4000
call CORINFO_HELP_STRCNS
mov rdi,rax
call qword ptr [7FFE9CB37EB8]
mov r8,rax
mov rdx,rdi
mov rcx,rsi
call qword ptr [7FFE9CB59030]
mov rcx,rsi
call CORINFO_HELP_THROW
M01_L05:
mov rcx,offset MT_System.ArgumentOutOfRangeException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
mov ecx,1C7B
mov rdx,7FFE9C8A4000
call CORINFO_HELP_STRCNS
mov rdi,rax
call qword ptr [7FFE9CB39288]
mov r8,rax
mov rdx,rdi
mov rcx,rsi
call qword ptr [7FFE9CB59030]
mov rcx,rsi
call CORINFO_HELP_THROW
M01_L06:
call qword ptr [7FFE9CC0D108]
int 3
M01_L07:
mov rcx,offset MT_System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
call qword ptr [7FFE9CB37E88]
mov rdi,rax
mov ecx,1C7B
mov rdx,7FFE9C8A4000
call CORINFO_HELP_STRCNS
mov r8,rax
mov rdx,rdi
mov rcx,rsi
call qword ptr [7FFE9CA6DBD0]
mov rcx,rsi
call CORINFO_HELP_THROW
int 3
; Total bytes of code 655 ; System.Text.StringBuilder+AppendInterpolatedStringHandler.AppendFormatted[[System.Guid, System.Private.CoreLib]](System.Guid)
push rdi
push rsi
push rbx
sub rsp,60
vzeroupper
xor eax,eax
mov [rsp+28],rax
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rsp+30],xmm4
mov [rsp+40],rax
mov rdi,rcx
mov rsi,rdx
cmp byte ptr [rdi+10],0
je short M02_L00
mov rcx,rdi
mov rdx,rsi
xor r8d,r8d
call qword ptr [7FFE9D0313C0]
nop
add rsp,60
pop rbx
pop rsi
pop rdi
ret
M02_L00:
mov rdx,[rdi]
mov r9,[rdx+8]
mov r8,r9
mov edx,[rdx+18]
mov ecx,edx
mov ebx,[r9+8]
sub ebx,edx
mov edx,ecx
mov r9d,ebx
add rdx,r9
mov r9d,[r8+8]
cmp rdx,r9
ja short M02_L02
mov edx,ecx
lea rdx,[r8+rdx*2+10]
vmovups xmm0,[rsi]
vmovups [rsp+48],xmm0
xor r9d,r9d
mov [rsp+38],rdx
mov [rsp+40],ebx
mov [rsp+28],r9
xor edx,edx
mov [rsp+30],edx
lea rdx,[rsp+38]
lea r9,[rsp+28]
lea r8,[rsp+58]
lea rcx,[rsp+48]
call qword ptr [7FFE9CB53BA0]; System.Guid.TryFormat(System.Span`1<Char>, Int32 ByRef, System.ReadOnlySpan`1<Char>)
test eax,eax
je short M02_L01
cmp [rsp+58],ebx
ja short M02_L03
mov rcx,[rdi]
mov edx,[rsp+58]
add [rcx+18],edx
add rsp,60
pop rbx
pop rsi
pop rdi
ret
M02_L01:
mov rcx,rdi
mov rdx,rsi
xor r8d,r8d
xor r9d,r9d
call qword ptr [7FFE9CFD9D80]; System.Text.StringBuilder+AppendInterpolatedStringHandler.AppendFormattedWithTempSpace[[System.Guid, System.Private.CoreLib]](System.Guid, Int32, System.String)
nop
add rsp,60
pop rbx
pop rsi
pop rdi
ret
M02_L02:
call qword ptr [7FFE9CDAD4E0]
int 3
M02_L03:
call qword ptr [7FFE9CDADBE8]
int 3
; Total bytes of code 241 ; System.Text.StringBuilder.Append(Char ByRef, Int32)
push rdi
push rsi
push rbx
sub rsp,20
mov rdi,rcx
mov esi,r8d
test esi,esi
je short M03_L03
mov r8,[rdi+8]
mov ebx,[rdi+18]
lea ecx,[rbx+rsi]
cmp ecx,[r8+8]
ja short M03_L02
movsxd rcx,ebx
lea rcx,[r8+rcx*2+10]
cmp esi,2
jle short M03_L01
movsxd r8,esi
add r8,r8
call qword ptr [7FFE9CB510A8]; System.Buffer.Memmove(Byte ByRef, Byte ByRef, UIntPtr)
M03_L00:
add esi,ebx
mov [rdi+18],esi
add rsp,20
pop rbx
pop rsi
pop rdi
ret
M03_L01:
movzx r8d,word ptr [rdx]
mov [rcx],r8w
cmp esi,2
jne short M03_L00
movzx r8d,word ptr [rdx+2]
mov [rcx+2],r8w
jmp short M03_L00
M03_L02:
mov rcx,rdi
mov r8d,esi
add rsp,20
pop rbx
pop rsi
pop rdi
jmp qword ptr [7FFE9CBEDD20]; System.Text.StringBuilder.AppendWithExpansion(Char ByRef, Int32)
M03_L03:
add rsp,20
pop rbx
pop rsi
pop rdi
ret
; Total bytes of code 123 ; System.Text.StringBuilder+AppendInterpolatedStringHandler.AppendFormatted[[System.DateTime, System.Private.CoreLib]](System.DateTime)
push rdi
push rsi
push rbx
sub rsp,60
xor eax,eax
mov [rsp+38],rax
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rsp+40],xmm4
mov [rsp+50],rax
mov rsi,rcx
mov rdi,rdx
cmp byte ptr [rsi+10],0
je short M04_L00
mov rcx,rsi
mov rdx,rdi
xor r8d,r8d
call qword ptr [7FFE9CFD9E10]
nop
add rsp,60
pop rbx
pop rsi
pop rdi
ret
M04_L00:
mov rcx,[rsi]
mov rdx,[rcx+8]
mov r9,rdx
mov ecx,[rcx+18]
mov r8d,ecx
mov ebx,[rdx+8]
sub ebx,ecx
mov ecx,r8d
mov edx,ebx
add rcx,rdx
mov edx,[r9+8]
cmp rcx,rdx
ja near ptr M04_L02
mov ecx,r8d
lea rcx,[r9+rcx*2+10]
xor edx,edx
mov r9,[rsi+8]
mov [rsp+48],rcx
mov [rsp+50],ebx
mov [rsp+38],rdx
xor ecx,ecx
mov [rsp+40],ecx
mov [rsp+20],r9
mov rcx,8000000000000000
mov [rsp+28],rcx
mov rcx,rdi
lea rdx,[rsp+48]
lea r9,[rsp+38]
lea r8,[rsp+58]
call qword ptr [7FFE9CFDB1C8]; System.DateTimeFormat.TryFormat(System.DateTime, System.Span`1<Char>, Int32 ByRef, System.ReadOnlySpan`1<Char>, System.IFormatProvider, System.TimeSpan)
test eax,eax
je short M04_L01
cmp [rsp+58],ebx
ja short M04_L03
mov rcx,[rsi]
mov edx,[rsp+58]
add [rcx+18],edx
add rsp,60
pop rbx
pop rsi
pop rdi
ret
M04_L01:
mov rcx,rsi
mov rdx,rdi
xor r8d,r8d
xor r9d,r9d
call qword ptr [7FFE9CFD9DB0]; System.Text.StringBuilder+AppendInterpolatedStringHandler.AppendFormattedWithTempSpace[[System.DateTime, System.Private.CoreLib]](System.DateTime, Int32, System.String)
nop
add rsp,60
pop rbx
pop rsi
pop rdi
ret
M04_L02:
call qword ptr [7FFE9CDAD4E0]
int 3
M04_L03:
call qword ptr [7FFE9CDADBE8]
int 3
; Total bytes of code 254 ; System.Text.StringBuilder+AppendInterpolatedStringHandler.AppendFormatted[[System.TimeSpan, System.Private.CoreLib]](System.TimeSpan)
push rdi
push rsi
push rbx
sub rsp,50
xor eax,eax
mov [rsp+28],rax
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rsp+30],xmm4
mov [rsp+40],rax
mov rsi,rcx
mov rdi,rdx
cmp byte ptr [rsi+10],0
je short M05_L00
mov rcx,rsi
mov rdx,rdi
xor r8d,r8d
call qword ptr [7FFE9CFDD0F0]
nop
add rsp,50
pop rbx
pop rsi
pop rdi
ret
M05_L00:
mov rcx,[rsi]
mov rdx,[rcx+8]
mov r9,rdx
mov ecx,[rcx+18]
mov r8d,ecx
mov ebx,[rdx+8]
sub ebx,ecx
mov ecx,r8d
mov edx,ebx
add rcx,rdx
mov edx,[r9+8]
cmp rcx,rdx
ja short M05_L02
mov ecx,r8d
lea rcx,[r9+rcx*2+10]
xor edx,edx
mov [rsp+38],rcx
mov [rsp+40],ebx
mov [rsp+28],rdx
xor ecx,ecx
mov [rsp+30],ecx
mov rcx,[rsi+8]
mov [rsp+20],rcx
mov rcx,rdi
lea rdx,[rsp+38]
lea r9,[rsp+28]
lea r8,[rsp+48]
call qword ptr [7FFE9CFDD1E0]; System.Globalization.TimeSpanFormat.TryFormat(System.TimeSpan, System.Span`1<Char>, Int32 ByRef, System.ReadOnlySpan`1<Char>, System.IFormatProvider)
test eax,eax
je short M05_L01
cmp [rsp+48],ebx
ja short M05_L03
mov rcx,[rsi]
mov edx,[rsp+48]
add [rcx+18],edx
add rsp,50
pop rbx
pop rsi
pop rdi
ret
M05_L01:
mov rcx,rsi
mov rdx,rdi
xor r8d,r8d
xor r9d,r9d
call qword ptr [7FFE9CFDD0C0]
nop
add rsp,50
pop rbx
pop rsi
pop rdi
ret
M05_L02:
call qword ptr [7FFE9CDAD4E0]
int 3
M05_L03:
call qword ptr [7FFE9CDADBE8]
int 3
; Total bytes of code 235 ; System.Text.StringBuilder+AppendInterpolatedStringHandler.AppendFormatted[[System.DateTimeOffset, System.Private.CoreLib]](System.DateTimeOffset)
push r15
push r14
push rdi
push rsi
push rbp
push rbx
sub rsp,68
vzeroupper
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rsp+30],xmm4
vmovdqa xmmword ptr [rsp+40],xmm4
mov rdi,rcx
mov rsi,rdx
cmp byte ptr [rdi+10],0
je short M06_L00
mov rcx,rdi
mov rdx,rsi
xor r8d,r8d
call qword ptr [7FFE9CFDD2D0]
nop
add rsp,68
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
pop r15
ret
M06_L00:
mov rcx,[rdi]
mov rax,[rcx+8]
mov rdx,rax
mov ecx,[rcx+18]
mov r8d,ecx
mov ebx,[rax+8]
sub ebx,ecx
mov ecx,r8d
mov eax,ebx
add rcx,rax
mov eax,[rdx+8]
cmp rcx,rax
ja near ptr M06_L02
mov ecx,r8d
lea rbp,[rdx+rcx*2+10]
vmovups xmm0,[rsi]
vmovups [rsp+50],xmm0
xor r14d,r14d
mov r15,[rdi+8]
lea rcx,[rsp+50]
call qword ptr [7FFE9CC91318]; System.DateTimeOffset.get_ClockDateTime()
mov rcx,rax
movsx rdx,word ptr [rsp+50]
imul rdx,3C
mov r9,0D6BF94D5E5
cmp rdx,r9
jg near ptr M06_L03
mov r9,0FFFFFF29406B2A1B
cmp rdx,r9
jl near ptr M06_L03
imul rdx,989680
mov [rsp+40],rbp
mov [rsp+48],ebx
mov [rsp+30],r14
xor r9d,r9d
mov [rsp+38],r9d
mov [rsp+20],r15
mov [rsp+28],rdx
lea rdx,[rsp+40]
lea r9,[rsp+30]
lea r8,[rsp+60]
call qword ptr [7FFE9CFDB1C8]; System.DateTimeFormat.TryFormat(System.DateTime, System.Span`1<Char>, Int32 ByRef, System.ReadOnlySpan`1<Char>, System.IFormatProvider, System.TimeSpan)
test eax,eax
je short M06_L01
cmp [rsp+60],ebx
ja short M06_L04
mov rcx,[rdi]
mov edx,[rsp+60]
add [rcx+18],edx
add rsp,68
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
pop r15
ret
M06_L01:
mov rcx,rdi
mov rdx,rsi
xor r8d,r8d
xor r9d,r9d
call qword ptr [7FFE9CFDD2A0]; System.Text.StringBuilder+AppendInterpolatedStringHandler.AppendFormattedWithTempSpace[[System.DateTimeOffset, System.Private.CoreLib]](System.DateTimeOffset, Int32, System.String)
nop
add rsp,68
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
pop r15
ret
M06_L02:
call qword ptr [7FFE9CDAD4E0]
int 3
M06_L03:
call qword ptr [7FFE9CDAD6C0]
int 3
M06_L04:
call qword ptr [7FFE9CDADBE8]
int 3
; Total bytes of code 346 DocsProfiling workflow for dotnet/runtime repository |
Run Information
Regressions in System.Globalization.Tests.Perf_DateTimeCultureInfo
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md Payloadsgit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Globalization.Tests.Perf_DateTimeCultureInfo*' PayloadsHistogramSystem.Globalization.Tests.Perf_DateTimeCultureInfo.ToString(culturestring: da)
Description of detection logic
; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
push rbp
push r14
push rdi
push rsi
push rbx
sub rsp,0A0
lea rbp,[rsp+30]
vxorps xmm4,xmm4,xmm4
mov rax,0FFFFFFFFFFFFFFA0
M01_L00:
vmovdqa xmmword ptr [rbp+rax+70],xmm4
vmovdqa xmmword ptr [rbp+rax+80],xmm4
vmovdqa xmmword ptr [rbp+rax+90],xmm4
add rax,30
jne short M01_L00
mov rax,62DAF345D806
mov [rbp+8],rax
mov rsi,rcx
mov rax,r8
mov rdi,r9
test rdx,rdx
je short M01_L02
mov ebx,[rdx+8]
cmp ebx,1
jne short M01_L02
movzx ecx,word ptr [rdx+0C]
or ecx,20
cmp ecx,6F
je near ptr M01_L05
cmp ecx,72
jne short M01_L02
mov ecx,1D
call System.String.FastAllocateString(Int32)
mov rbx,rax
lea rcx,[rbx+0C]
mov edx,[rbx+8]
mov [rbp+20],rcx
mov [rbp+28],edx
mov rcx,rsi
mov rdx,rdi
lea r8,[rbp+20]
lea r9,[rbp+40]
call qword ptr [7FFCE9EAD7B0]
mov rax,rbx
mov rcx,62DAF345D806
cmp [rbp+8],rcx
je short M01_L01
call CORINFO_HELP_FAIL_FAST
M01_L01:
nop
lea rsp,[rbp+70]
pop rbx
pop rsi
pop rdi
pop r14
pop rbp
ret
M01_L02:
test [rsp],esp
sub rsp,200
lea rcx,[rsp+30]
mov [rbp+30],rcx
mov dword ptr [rbp+38],100
mov rcx,[rbp+30]
mov r8d,[rbp+38]
xor r9d,r9d
mov [rbp+50],r9
mov [rbp+60],rcx
mov [rbp+68],r8d
mov [rbp+58],r9d
test rdx,rdx
je near ptr M01_L07
lea rcx,[rdx+0C]
mov ebx,[rdx+8]
mov r8d,ebx
M01_L03:
mov [rbp+10],rcx
mov [rbp+18],r8d
mov rcx,rax
call qword ptr [7FFCE9C5F1B0]; System.Globalization.DateTimeFormatInfo.GetInstance(System.IFormatProvider)
mov r8,rax
lea rdx,[rbp+50]
mov [rsp+20],rdx
lea rdx,[rbp+10]
mov rcx,rsi
mov r9,rdi
call qword ptr [7FFCE9EAD6F0]; System.DateTimeFormat.FormatStringBuilder(System.DateTime, System.ReadOnlySpan`1<Char>, System.Globalization.DateTimeFormatInfo, System.TimeSpan, System.Text.ValueStringBuilder ByRef)
lea rcx,[rbp+50]
call qword ptr [7FFCE9D476F0]; System.Text.ValueStringBuilder.ToString()
mov rcx,62DAF345D806
cmp [rbp+8],rcx
je short M01_L04
call CORINFO_HELP_FAIL_FAST
M01_L04:
nop
lea rsp,[rbp+70]
pop rbx
pop rsi
pop rdi
pop r14
pop rbp
ret
M01_L05:
test [rsp],esp
sub rsp,50
lea rcx,[rsp+30]
mov [rbp+30],rcx
mov dword ptr [rbp+38],21
mov rbx,[rbp+30]
mov r14d,[rbp+38]
mov rcx,rsi
mov rdx,rdi
mov [rbp+20],rbx
mov [rbp+28],r14d
lea r8,[rbp+20]
lea r9,[rbp+48]
call qword ptr [7FFCE9EAD798]
mov ecx,[rbp+48]
cmp ecx,r14d
ja short M01_L08
mov [rbp+30],rbx
mov [rbp+38],ecx
lea rcx,[rbp+30]
call qword ptr [7FFCE9A65D38]; System.Span`1[[System.Char, System.Private.CoreLib]].ToString()
mov rcx,62DAF345D806
cmp [rbp+8],rcx
je short M01_L06
call CORINFO_HELP_FAIL_FAST
M01_L06:
nop
lea rsp,[rbp+70]
pop rbx
pop rsi
pop rdi
pop r14
pop rbp
ret
M01_L07:
xor ecx,ecx
xor r8d,r8d
jmp near ptr M01_L03
M01_L08:
call qword ptr [7FFCE9C7D4E0]
int 3
; Total bytes of code 496 Compare Jit Disasm; System.Globalization.Tests.Perf_DateTimeCultureInfo.ToString(System.Globalization.CultureInfo)
sub rsp,28
mov rcx,[rcx+10]
mov r9,8000000000000000
mov r8,rdx
xor edx,edx
call qword ptr [7FF90CC2D6A8]; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
nop
add rsp,28
ret
; Total bytes of code 35 ; System.DateTimeFormat.Format(System.DateTime, System.String, System.IFormatProvider, System.TimeSpan)
push rbp
push r14
push rdi
push rsi
push rbx
sub rsp,0A0
lea rbp,[rsp+30]
vxorps xmm4,xmm4,xmm4
mov rax,0FFFFFFFFFFFFFFA0
M01_L00:
vmovdqa xmmword ptr [rbp+rax+70],xmm4
vmovdqa xmmword ptr [rbp+rax+80],xmm4
vmovdqa xmmword ptr [rbp+rax+90],xmm4
add rax,30
jne short M01_L00
mov rax,0E3DD7AABDF59
mov [rbp+8],rax
mov rsi,rcx
mov rax,r8
mov rdi,r9
test rdx,rdx
je short M01_L02
mov ebx,[rdx+8]
cmp ebx,1
jne short M01_L02
movzx ecx,word ptr [rdx+0C]
or ecx,20
cmp ecx,6F
je near ptr M01_L05
cmp ecx,72
jne short M01_L02
mov ecx,1D
call System.String.FastAllocateString(Int32)
mov rbx,rax
lea rcx,[rbx+0C]
mov edx,[rbx+8]
mov [rbp+20],rcx
mov [rbp+28],edx
mov rcx,rsi
mov rdx,rdi
lea r8,[rbp+20]
lea r9,[rbp+40]
call qword ptr [7FF90CC2D7B0]
mov rax,rbx
mov rcx,0E3DD7AABDF59
cmp [rbp+8],rcx
je short M01_L01
call CORINFO_HELP_FAIL_FAST
M01_L01:
nop
lea rsp,[rbp+70]
pop rbx
pop rsi
pop rdi
pop r14
pop rbp
ret
M01_L02:
test [rsp],esp
sub rsp,200
lea rcx,[rsp+30]
mov [rbp+30],rcx
mov dword ptr [rbp+38],100
mov rcx,[rbp+30]
mov r8d,[rbp+38]
xor r9d,r9d
mov [rbp+50],r9
mov [rbp+60],rcx
mov [rbp+68],r8d
mov [rbp+58],r9d
test rdx,rdx
je near ptr M01_L07
lea rcx,[rdx+0C]
mov ebx,[rdx+8]
mov r8d,ebx
M01_L03:
mov [rbp+10],rcx
mov [rbp+18],r8d
mov rcx,rax
call qword ptr [7FF90C9DF1B0]; System.Globalization.DateTimeFormatInfo.GetInstance(System.IFormatProvider)
mov r8,rax
lea rdx,[rbp+50]
mov [rsp+20],rdx
lea rdx,[rbp+10]
mov rcx,rsi
mov r9,rdi
call qword ptr [7FF90CC2D6F0]; System.DateTimeFormat.FormatStringBuilder(System.DateTime, System.ReadOnlySpan`1<Char>, System.Globalization.DateTimeFormatInfo, System.TimeSpan, System.Text.ValueStringBuilder ByRef)
lea rcx,[rbp+50]
call qword ptr [7FF90CAC76F0]; System.Text.ValueStringBuilder.ToString()
mov rcx,0E3DD7AABDF59
cmp [rbp+8],rcx
je short M01_L04
call CORINFO_HELP_FAIL_FAST
M01_L04:
nop
lea rsp,[rbp+70]
pop rbx
pop rsi
pop rdi
pop r14
pop rbp
ret
M01_L05:
test [rsp],esp
sub rsp,50
lea rcx,[rsp+30]
mov [rbp+30],rcx
mov dword ptr [rbp+38],21
mov rbx,[rbp+30]
mov r14d,[rbp+38]
mov rcx,rsi
mov rdx,rdi
mov [rbp+20],rbx
mov [rbp+28],r14d
lea r8,[rbp+20]
lea r9,[rbp+48]
call qword ptr [7FF90CC2D798]
mov ecx,[rbp+48]
cmp ecx,r14d
ja short M01_L08
mov [rbp+30],rbx
mov [rbp+38],ecx
lea rcx,[rbp+30]
call qword ptr [7FF90C7E5D38]; System.Span`1[[System.Char, System.Private.CoreLib]].ToString()
mov rcx,0E3DD7AABDF59
cmp [rbp+8],rcx
je short M01_L06
call CORINFO_HELP_FAIL_FAST
M01_L06:
nop
lea rsp,[rbp+70]
pop rbx
pop rsi
pop rdi
pop r14
pop rbp
ret
M01_L07:
xor ecx,ecx
xor r8d,r8d
jmp near ptr M01_L03
M01_L08:
call qword ptr [7FF90C9FD4E0]
int 3
; Total bytes of code 496 DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Text.RegularExpressions.Tests.Perf_Regex_Industry_SliceSlice
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md Payloadsgit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.RegularExpressions.Tests.Perf_Regex_Industry_SliceSlice*' PayloadsHistogramSystem.Text.RegularExpressions.Tests.Perf_Regex_Industry_SliceSlice.Count(Options: None)
Description of detection logic
Compare Jit Disasm; BenchmarkDotNet.Autogenerated.Runnable_0.__ForDisassemblyDiagnoser__()
push rbp
sub rsp,20
lea rbp,[rsp+20]
mov [rbp+10],rcx
mov rcx,[rbp+10]
cmp dword ptr [rcx+1C],0B
jne short M00_L00
mov rcx,[rbp+10]
call qword ptr [7FFED1D7BAE0]
nop
add rsp,20
pop rbp
ret
M00_L00:
xor eax,eax
add rsp,20
pop rbp
ret
; Total bytes of code 49 System.Text.RegularExpressions.Tests.Perf_Regex_Industry_SliceSlice.Count(Options: NonBacktracking)
Description of detection logic
Description of detection logic
Compare Jit Disasm; BenchmarkDotNet.Autogenerated.Runnable_2.__ForDisassemblyDiagnoser__()
push rbp
sub rsp,20
lea rbp,[rsp+20]
mov [rbp+10],rcx
mov rcx,[rbp+10]
cmp dword ptr [rcx+1C],0B
jne short M00_L00
mov rcx,[rbp+10]
call qword ptr [7FFED1D5BAE0]
nop
add rsp,20
pop rbp
ret
M00_L00:
xor eax,eax
add rsp,20
pop rbp
ret
; Total bytes of code 49 DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Leipzig
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md Payloadsgit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Leipzig*' PayloadsHistogramSystem.Text.RegularExpressions.Tests.Perf_Regex_Industry_Leipzig.Count(Pattern: "Twain", Options: Compiled)
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Collections.ContainsTrue<String>
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md Payloadsgit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.ContainsTrue<String>*' PayloadsHistogramSystem.Collections.ContainsTrue<String>.LinkedList(Size: 512)
Description of detection logic
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Mariomkas
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md Payloadsgit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Mariomkas*' PayloadsHistogramSystem.Text.RegularExpressions.Tests.Perf_Regex_Industry_Mariomkas.Count(Pattern: "[\w]+://[^/\\s?#]+[^\\s?#]+(?:\?[^\\s#])?(?:#[^\\s])?", Options: Compiled)
Description of detection logic
; System.Text.RegularExpressions.Tests.Perf_Regex_Industry.Count(System.Text.RegularExpressions.Regex, System.String)
push rsi
sub rsp,20
xor esi,esi
cmp [rcx],ecx
call qword ptr [7FFE9C965600]; System.Text.RegularExpressions.Regex.Match(System.String)
cmp dword ptr [rax+30],0
je short M01_L01
M01_L00:
inc esi
mov rcx,rax
cmp [rcx],ecx
call qword ptr [7FFE9CB2F108]; System.Text.RegularExpressions.Match.NextMatch()
cmp dword ptr [rax+30],0
jne short M01_L00
M01_L01:
mov eax,esi
add rsp,20
pop rsi
ret
; Total bytes of code 48 Compare Jit Disasm; System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Mariomkas.Count()
mov rdx,rcx
mov rcx,[rdx+10]
mov rdx,[rdx+18]
jmp qword ptr [7FFF31D3B678]; System.Text.RegularExpressions.Tests.Perf_Regex_Industry.Count(System.Text.RegularExpressions.Regex, System.String)
; Total bytes of code 17 ; System.Text.RegularExpressions.Tests.Perf_Regex_Industry.Count(System.Text.RegularExpressions.Regex, System.String)
push rsi
sub rsp,20
xor esi,esi
cmp [rcx],ecx
call qword ptr [7FFF31C75600]; System.Text.RegularExpressions.Regex.Match(System.String)
cmp dword ptr [rax+30],0
je short M01_L01
M01_L00:
inc esi
mov rcx,rax
cmp [rcx],ecx
call qword ptr [7FFF31E4F108]; System.Text.RegularExpressions.Match.NextMatch()
cmp dword ptr [rax+30],0
jne short M01_L00
M01_L01:
mov eax,esi
add rsp,20
pop rsi
ret
; Total bytes of code 48 System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Mariomkas.Count(Pattern: "[\w]+://[^/\\s?#]+[^\\s?#]+(?:\?[^\\s#])?(?:#[^\\s])?", Options: NonBacktracking)
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository |
Run Information
Regressions in System.Globalization.Tests.StringSearch
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md Payloadsgit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Globalization.Tests.StringSearch*' PayloadsHistogramSystem.Globalization.Tests.StringSearch.LastIndexOf_Word_NotFound(Options: (en-US, Ordinal, False))
Description of detection logic
; System.Globalization.CompareInfo.LastIndexOf(System.ReadOnlySpan`1<Char>, System.ReadOnlySpan`1<Char>, System.Globalization.CompareOptions)
push rdi
push rsi
sub rsp,38
test r9d,0FFFFFFE0
je near ptr M01_L03
cmp r9d,40000000
jne short M01_L01
mov rcx,[rdx]
mov edx,[rdx+8]
mov r9,[r8]
mov eax,[r8+8]
mov r8,r9
mov r9d,eax
call qword ptr [7FF8050A1420]; System.SpanHelpers.LastIndexOf(Char ByRef, Int32, Char ByRef, Int32)
M01_L00:
nop
add rsp,38
pop rsi
pop rdi
ret
M01_L01:
cmp r9d,10000000
jne short M01_L02
mov rcx,rdx
mov rdx,r8
call qword ptr [7FF8051C9768]
jmp short M01_L00
M01_L02:
mov rcx,offset MT_System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
call qword ptr [7FF8050C7840]
mov rdi,rax
mov ecx,1C89
mov rdx,7FF804E34000
call CORINFO_HELP_STRCNS
mov r8,rax
mov rdx,rdi
mov rcx,rsi
call qword ptr [7FF804FFDBD0]
mov rcx,rsi
call CORINFO_HELP_THROW
M01_L03:
cmp dword ptr [r8+8],0
jne short M01_L04
mov eax,[rdx+8]
jmp short M01_L00
M01_L04:
xor eax,eax
mov [rsp+20],rax
mov [rsp+28],eax
call qword ptr [7FF8051CB4F8]
jmp near ptr M01_L00
; Total bytes of code 188 Compare Jit Disasm; System.Globalization.Tests.StringSearch.LastIndexOf_Word_NotFound()
push rsi
sub rsp,40
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rsp+20],xmm4
vmovdqa xmmword ptr [rsp+30],xmm4
mov rsi,rcx
mov rcx,[rsi+30]
mov rax,[rcx]
mov rax,[rax+48]
call qword ptr [rax+30]
mov rcx,rax
mov rdx,[rsi+8]
mov r9d,[rsi+38]
cmp [rcx],cl
test rdx,rdx
je short M00_L00
lea r8,[rdx+0C]
mov edx,[rdx+8]
mov rax,2384846B710
add rax,0C
mov [rsp+30],r8
mov [rsp+38],edx
mov [rsp+20],rax
mov dword ptr [rsp+28],4
lea rdx,[rsp+30]
lea r8,[rsp+20]
call qword ptr [7FFECA1DB630]; System.Globalization.CompareInfo.LastIndexOf(System.ReadOnlySpan`1<Char>, System.ReadOnlySpan`1<Char>, System.Globalization.CompareOptions)
nop
add rsp,40
pop rsi
ret
M00_L00:
mov ecx,27
call qword ptr [7FFECA33D7F8]
int 3
; Total bytes of code 134 ; System.Globalization.CompareInfo.LastIndexOf(System.ReadOnlySpan`1<Char>, System.ReadOnlySpan`1<Char>, System.Globalization.CompareOptions)
push rdi
push rsi
sub rsp,38
test r9d,0FFFFFFE0
je near ptr M01_L03
cmp r9d,40000000
jne short M01_L01
mov rcx,[rdx]
mov edx,[rdx+8]
mov r9,[r8]
mov eax,[r8+8]
mov r8,r9
mov r9d,eax
call qword ptr [7FFECA0B1420]; System.SpanHelpers.LastIndexOf(Char ByRef, Int32, Char ByRef, Int32)
M01_L00:
nop
add rsp,38
pop rsi
pop rdi
ret
M01_L01:
cmp r9d,10000000
jne short M01_L02
mov rcx,rdx
mov rdx,r8
call qword ptr [7FFECA1D9768]
jmp short M01_L00
M01_L02:
mov rcx,offset MT_System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rsi,rax
call qword ptr [7FFECA0D7840]
mov rdi,rax
mov ecx,1C89
mov rdx,7FFEC9E44000
call CORINFO_HELP_STRCNS
mov r8,rax
mov rdx,rdi
mov rcx,rsi
call qword ptr [7FFECA00DBD0]
mov rcx,rsi
call CORINFO_HELP_THROW
M01_L03:
cmp dword ptr [r8+8],0
jne short M01_L04
mov eax,[rdx+8]
jmp short M01_L00
M01_L04:
xor eax,eax
mov [rsp+20],rax
mov [rsp+28],eax
call qword ptr [7FFECA1DB4F8]
jmp near ptr M01_L00
; Total bytes of code 188 System.Globalization.Tests.StringSearch.IndexOf_Word_NotFound(Options: (en-US, Ordinal, False))
Description of detection logic
; System.Globalization.CompareInfo.IndexOf(System.ReadOnlySpan`1<Char>, System.ReadOnlySpan`1<Char>, System.Globalization.CompareOptions)
sub rsp,38
test r9d,0FFFFFFE0
je short M01_L02
cmp r9d,40000000
jne short M01_L01
mov rcx,[rdx]
mov edx,[rdx+8]
mov r9,[r8]
mov eax,[r8+8]
mov r8,r9
mov r9d,eax
call qword ptr [7FFF30E31408]; System.SpanHelpers.IndexOf(Char ByRef, Int32, Char ByRef, Int32)
M01_L00:
nop
add rsp,38
ret
M01_L01:
cmp r9d,10000000
jne short M01_L03
mov rcx,rdx
mov rdx,r8
call qword ptr [7FFF30F59750]
jmp short M01_L00
M01_L02:
cmp dword ptr [r8+8],0
je short M01_L04
xor eax,eax
mov [rsp+20],rax
mov dword ptr [rsp+28],1
call qword ptr [7FFF30F5B4F8]
jmp short M01_L00
M01_L03:
mov ecx,44
mov edx,59
call qword ptr [7FFF310BD7B0]
int 3
M01_L04:
xor eax,eax
add rsp,38
ret
; Total bytes of code 130 Compare Jit Disasm; System.Globalization.Tests.StringSearch.IndexOf_Word_NotFound()
push rsi
sub rsp,40
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rsp+20],xmm4
vmovdqa xmmword ptr [rsp+30],xmm4
mov rsi,rcx
mov rcx,[rsi+30]
mov rax,[rcx]
mov rax,[rax+48]
call qword ptr [rax+30]
mov rcx,rax
mov rdx,[rsi+8]
mov r9d,[rsi+38]
cmp [rcx],cl
test rdx,rdx
je short M00_L00
lea r8,[rdx+0C]
mov edx,[rdx+8]
mov rax,16C6AEDB710
add rax,0C
mov [rsp+30],r8
mov [rsp+38],edx
mov [rsp+20],rax
mov dword ptr [rsp+28],4
lea rdx,[rsp+30]
lea r8,[rsp+20]
call qword ptr [7FFF31A1B498]; System.Globalization.CompareInfo.IndexOf(System.ReadOnlySpan`1<Char>, System.ReadOnlySpan`1<Char>, System.Globalization.CompareOptions)
nop
add rsp,40
pop rsi
ret
M00_L00:
mov ecx,27
call qword ptr [7FFF31B7D7F8]
int 3
; Total bytes of code 134 ; System.Globalization.CompareInfo.IndexOf(System.ReadOnlySpan`1<Char>, System.ReadOnlySpan`1<Char>, System.Globalization.CompareOptions)
sub rsp,38
test r9d,0FFFFFFE0
je short M01_L02
cmp r9d,40000000
jne short M01_L01
mov rcx,[rdx]
mov edx,[rdx+8]
mov r9,[r8]
mov eax,[r8+8]
mov r8,r9
mov r9d,eax
call qword ptr [7FFF318F1408]; System.SpanHelpers.IndexOf(Char ByRef, Int32, Char ByRef, Int32)
M01_L00:
nop
add rsp,38
ret
M01_L01:
cmp r9d,10000000
jne short M01_L03
mov rcx,rdx
mov rdx,r8
call qword ptr [7FFF31A19750]
jmp short M01_L00
M01_L02:
cmp dword ptr [r8+8],0
je short M01_L04
xor eax,eax
mov [rsp+20],rax
mov dword ptr [rsp+28],1
call qword ptr [7FFF31A1B4F8]
jmp short M01_L00
M01_L03:
mov ecx,44
mov edx,59
call qword ptr [7FFF31B7D7B0]
int 3
M01_L04:
xor eax,eax
add rsp,38
ret
; Total bytes of code 130 DocsProfiling workflow for dotnet/runtime repository |
Run Information
Regressions in System.Numerics.Tests.Perf_BigInteger
ReproGeneral Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md Payloadsgit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tests.Perf_BigInteger*' PayloadsHistogramSystem.Numerics.Tests.Perf_BigInteger.Parse(numberString: 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890)
Description of detection logic
; System.Globalization.NumberFormatInfo.get_CurrentInfo()
sub rsp,28
mov rcx,7FFA49094E68
mov edx,250
call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE
mov rcx,[rax+8]
test rcx,rcx
jne short M01_L00
mov rcx,208D8400488
mov rcx,[rcx]
test rcx,rcx
jne short M01_L00
mov rcx,208D8400468
mov rcx,[rcx]
test rcx,rcx
je short M01_L03
M01_L00:
cmp byte ptr [rcx+61],0
jne short M01_L01
mov rax,[rcx+18]
test rax,rax
je short M01_L01
add rsp,28
ret
M01_L01:
mov rdx,2496CF05EE0
mov rax,[rcx]
mov rax,[rax+50]
call qword ptr [rax]
mov rdx,rax
mov rax,rdx
test rax,rax
je short M01_L02
mov rcx,offset MT_System.Globalization.NumberFormatInfo
cmp [rax],rcx
jne short M01_L04
M01_L02:
add rsp,28
ret
M01_L03:
call qword ptr [7FFA49257030]
mov rcx,rax
jmp short M01_L00
M01_L04:
call qword ptr [7FFA4912D8B8]
int 3
; Total bytes of code 157 ; System.Globalization.NumberFormatInfo.<GetInstance>g__GetProviderNonNull|44_0(System.IFormatProvider)
push rsi
sub rsp,20
mov rsi,rcx
mov rdx,rsi
mov rcx,offset MT_System.Globalization.CultureInfo
call qword ptr [7FFA4912D828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
test rax,rax
je short M02_L00
cmp byte ptr [rax+61],0
jne short M02_L00
mov rcx,[rax+18]
test rcx,rcx
je short M02_L03
mov rax,rcx
add rsp,20
pop rsi
ret
M02_L00:
mov rax,rsi
test rax,rax
je short M02_L01
mov rcx,offset MT_System.Globalization.NumberFormatInfo
cmp [rax],rcx
je short M02_L01
xor eax,eax
M02_L01:
test rax,rax
je short M02_L04
M02_L02:
add rsp,20
pop rsi
ret
M02_L03:
mov rcx,rax
mov rax,[rax]
mov rax,[rax+50]
add rsp,20
pop rsi
jmp qword ptr [rax+10]
M02_L04:
mov rcx,rsi
mov r11,7FFA48F80598
mov rdx,2496CF05EE0
call qword ptr [r11]
mov rdx,rax
mov rcx,offset MT_System.Globalization.NumberFormatInfo
call qword ptr [7FFA4912D828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
test rax,rax
jne short M02_L02
add rsp,20
pop rsi
jmp qword ptr [7FFA4944D8B8]; System.Globalization.NumberFormatInfo.get_CurrentInfo()
; Total bytes of code 172 ; System.Numerics.BigNumber.TryValidateParseStyleInteger(System.Globalization.NumberStyles, System.ArgumentException ByRef)
push rdi
push rsi
sub rsp,28
mov rsi,rdx
test ecx,0FFFFFC00
je short M03_L00
mov rcx,offset MT_System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rdi,rax
mov rcx,2496CF09F70
call qword ptr [7FFA49573018]
mov dword ptr [rdi+70],0E0434352
mov dword ptr [rdi+74],80131500
lea rcx,[rdi+10]
mov rdx,rax
call CORINFO_HELP_ASSIGN_REF
mov dword ptr [rdi+74],80131501
mov rdx,2496CF066E8
mov [rdi+78],rdx
mov dword ptr [rdi+74],80070057
mov rcx,rsi
mov rdx,rdi
call CORINFO_HELP_CHECKED_ASSIGN_REF
xor eax,eax
add rsp,28
pop rsi
pop rdi
ret
M03_L00:
test ecx,200
je short M03_L01
test ecx,0FFFFFDFC
je short M03_L01
mov rcx,offset MT_System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rdi,rax
mov rcx,2496CF09FC0
call qword ptr [7FFA49573018]
mov dword ptr [rdi+70],0E0434352
mov dword ptr [rdi+74],80131500
lea rcx,[rdi+10]
mov rdx,rax
call CORINFO_HELP_ASSIGN_REF
mov dword ptr [rdi+74],80131501
mov rdx,2496CF066E8
mov [rdi+78],rdx
mov dword ptr [rdi+74],80070057
mov rcx,rsi
mov rdx,rdi
call CORINFO_HELP_CHECKED_ASSIGN_REF
xor eax,eax
add rsp,28
pop rsi
pop rdi
ret
M03_L01:
xor eax,eax
mov [rsi],rax
mov eax,1
add rsp,28
pop rsi
pop rdi
ret
; Total bytes of code 266 ; System.Globalization.FormatProvider+Number.ParseNumber(Char* ByRef, Char*, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Text.StringBuilder, System.Globalization.NumberFormatInfo, Boolean)
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbp
push rbx
sub rsp,0C8
xor eax,eax
mov [rsp+38],rax
vxorps xmm4,xmm4,xmm4
mov rax,0FFFFFFFFFFFFFFA0
M04_L00:
vmovdqa xmmword ptr [rsp+rax+0A0],xmm4
vmovdqa xmmword ptr [rsp+rax+0B0],xmm4
vmovdqa xmmword ptr [rsp+rax+0C0],xmm4
add rax,30
jne short M04_L00
mov r15,rcx
mov rsi,rdx
mov edi,r8d
mov rbx,r9
mov r14,[rsp+130]
mov rbp,[rsp+138]
xor ecx,ecx
mov [rbx+4],ecx
mov byte ptr [rbx+8],0
xor r13d,r13d
mov rcx,[rbp+28]
xor eax,eax
cmp dword ptr [rcx+8],1
sete al
cmp dword ptr [rcx+8],1
jne short M04_L05
movzx eax,word ptr [rcx+0C]
cmp eax,208B
ja short M04_L01
cmp eax,2012
je short M04_L03
cmp eax,207B
je short M04_L03
cmp eax,208B
je short M04_L03
jmp short M04_L04
M04_L01:
cmp eax,2796
ja short M04_L02
cmp eax,2212
je short M04_L03
cmp eax,2796
je short M04_L03
jmp short M04_L04
M04_L02:
cmp eax,0FE63
je short M04_L03
cmp eax,0FF0D
jne short M04_L04
M04_L03:
mov eax,1
jmp short M04_L05
M04_L04:
xor eax,eax
M04_L05:
mov [rsp+0C4],eax
xor r9d,r9d
test edi,100
je short M04_L06
mov r13,[rbp+50]
mov r10,[rbp+48]
mov r11,[rbp+40]
mov dword ptr [rsp+0C0],1
jmp short M04_L07
M04_L06:
mov r10,[rbp+30]
mov [rsp+28],r10
mov r11,[rbp+38]
mov [rsp+20],r11
mov [rsp+0C0],r9d
mov r10,[rsp+28]
mov r11,[rsp+20]
M04_L07:
xor r8d,r8d
xor edx,edx
test r14,r14
setne dl
mov [rsp+0B8],edx
test edx,edx
jne short M04_L08
mov ecx,20
jmp short M04_L09
M04_L08:
mov ecx,7FFFFFFF
M04_L09:
mov [rsp+0B4],ecx
mov [rsp+110],r15
mov r12,[r15]
cmp r12,rsi
jb short M04_L10
xor ecx,ecx
jmp short M04_L11
M04_L10:
movzx ecx,word ptr [r12]
M04_L11:
movzx ecx,cx
mov r15,[rbx+10]
mov [rsp+0A8],r15
M04_L12:
cmp ecx,20
je short M04_L13
cmp ecx,9
jl short M04_L14
mov [rsp+0B0],ecx
cmp ecx,0D
mov ecx,[rsp+0B0]
jg short M04_L14
M04_L13:
test dil,1
je short M04_L14
test r8b,1
je near ptr M04_L26
test r8b,20
jne near ptr M04_L26
cmp dword ptr [rbp+0A8],2
je near ptr M04_L26
M04_L14:
test dil,4
je near ptr M04_L23
mov [rsp+0BC],r8d
test r8b,1
jne short M04_L15
mov r15,[rbp+20]
test r15,r15
jne short M04_L16
xor r15d,r15d
mov [rsp+0B0],ecx
mov [rsp+28],r10
mov [rsp+20],r11
jmp short M04_L17
M04_L15:
mov r8d,[rsp+0BC]
jmp near ptr M04_L23
M04_L16:
add r15,0C
mov [rsp+98],r15
mov r15,[rsp+98]
mov [rsp+0B0],ecx
mov [rsp+28],r10
mov [rsp+20],r11
M04_L17:
mov rcx,r12
mov rdx,rsi
mov r8,r15
call qword ptr [7FFA495733A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor ecx,ecx
mov [rsp+98],rcx
test rax,rax
jne short M04_L21
mov rcx,[rbp+28]
test rcx,rcx
jne short M04_L18
xor r8d,r8d
jmp short M04_L19
M04_L18:
add rcx,0C
mov [rsp+90],rcx
mov r8,[rsp+90]
M04_L19:
mov rcx,r12
mov rdx,rsi
call qword ptr [7FFA495733A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor ecx,ecx
mov [rsp+90],rcx
xor ecx,ecx
test rax,rax
sete cl
test [rsp+0C4],ecx
je short M04_L20
cmp r12,rsi
jae short M04_L20
cmp word ptr [r12],2D
jne short M04_L20
lea rax,[r12+2]
M04_L20:
test rax,rax
mov ecx,[rsp+0B0]
je short M04_L22
mov byte ptr [rbx+8],1
M04_L21:
mov r12d,[rsp+0BC]
or r12d,1
jmp near ptr M04_L25
M04_L22:
mov r8d,[rsp+0BC]
mov r10,[rsp+28]
mov r11,[rsp+20]
M04_L23:
mov [rsp+0B0],ecx
cmp ecx,28
jne short M04_L24
test dil,10
je short M04_L24
test r8b,1
jne short M04_L24
or r8d,3
mov [rsp+0BC],r8d
mov byte ptr [rbx+8],1
mov r8d,[rsp+0BC]
jmp short M04_L26
M04_L24:
test r13,r13
je near ptr M04_L30
mov [rsp+0BC],r8d
mov [rsp+28],r10
mov [rsp+20],r11
lea r15,[r13+0C]
mov [rsp+88],r15
mov r15,[rsp+88]
mov rcx,r12
mov rdx,rsi
mov r8,r15
call qword ptr [7FFA495733A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor ecx,ecx
mov [rsp+88],rcx
test rax,rax
je short M04_L27
mov r12d,[rsp+0BC]
or r12d,20
xor r13d,r13d
M04_L25:
add rax,0FFFFFFFFFFFFFFFE
mov rcx,rax
mov r8d,r12d
mov r12,rcx
mov r10,[rsp+28]
mov r11,[rsp+20]
M04_L26:
add r12,2
cmp r12,rsi
jb short M04_L28
xor ecx,ecx
jmp short M04_L29
M04_L27:
mov r8d,[rsp+0BC]
mov r10,[rsp+28]
mov r11,[rsp+20]
jmp short M04_L30
M04_L28:
movzx ecx,word ptr [r12]
M04_L29:
movzx ecx,cx
jmp near ptr M04_L12
M04_L30:
xor r15d,r15d
xor edx,edx
mov [rsp+0A4],edx
mov [rsp+28],r10
M04_L31:
mov ecx,[rsp+0B0]
lea r10d,[rcx-30]
cmp r10d,9
jbe short M04_L32
test edi,200
je near ptr M04_L43
mov r10d,ecx
or r10d,20
movzx r10d,r10w
add r10d,0FFFFFF9F
cmp r10d,5
ja near ptr M04_L43
M04_L32:
or r8d,4
cmp ecx,30
jne short M04_L33
mov [rsp+0BC],r8d
test r8b,8
jne short M04_L34
mov r10d,[rsp+0B8]
test r10d,r10d
je near ptr M04_L41
test edi,200
je near ptr M04_L41
mov r8d,[rsp+0BC]
M04_L33:
cmp r15d,[rsp+0B4]
jge near ptr M04_L38
cmp dword ptr [rsp+0B8],0
je short M04_L36
mov [rsp+20],r11
mov r10d,[r14+18]
mov r11,[r14+8]
cmp [r11+8],r10d
jbe short M04_L35
mov r10d,r10d
mov [rsp+0B0],ecx
mov [r11+r10*2+10],cx
inc dword ptr [r14+18]
mov [rsp+0BC],r8d
jmp short M04_L37
M04_L34:
mov r8d,[rsp+0BC]
jmp short M04_L33
M04_L35:
mov [rsp+0B0],ecx
mov [rsp+0BC],r8d
mov rcx,r14
mov edx,[rsp+0B0]
mov r8d,1
call qword ptr [7FFA492BD510]; System.Text.StringBuilder.Append(Char, Int32)
jmp short M04_L37
M04_L36:
lea r10d,[r15+1]
movsxd r15,r15d
mov rdx,[rsp+0A8]
mov [rdx+r15*2],cx
mov [rsp+0B0],ecx
mov [rsp+0BC],r8d
mov [rsp+20],r11
mov [rsp+0A8],rdx
mov r15d,r10d
M04_L37:
xor ecx,ecx
cmp dword ptr [rsp+0B0],30
setne cl
movzx r10d,byte ptr [rsp+140]
or ecx,r10d
je short M04_L40
mov [rsp+0A4],r15d
mov r8d,[rsp+0BC]
mov r11,[rsp+20]
M04_L38:
test r8b,10
jne short M04_L39
lea rcx,[rbx+4]
inc dword ptr [rcx]
M04_L39:
or r8d,8
jmp near ptr M04_L63
M04_L40:
mov r8d,[rsp+0BC]
mov r11,[rsp+20]
jmp short M04_L38
M04_L41:
mov r8d,[rsp+0BC]
test r8b,10
je short M04_L42
lea rcx,[rbx+4]
dec dword ptr [rcx]
jmp near ptr M04_L63
M04_L42:
jmp near ptr M04_L63
M04_L43:
test dil,20
je near ptr M04_L53
mov [rsp+0BC],r8d
test r8b,10
jne short M04_L44
mov r10,[rsp+28]
test r10,r10
jne short M04_L45
xor edx,edx
mov [rsp+0B0],ecx
mov [rsp+78],rdx
mov [rsp+28],r10
mov [rsp+20],r11
jmp short M04_L46
M04_L44:
mov r8d,[rsp+0BC]
jmp near ptr M04_L53
M04_L45:
mov [rsp+28],r10
lea rdx,[r10+0C]
mov [rsp+80],rdx
mov rdx,[rsp+80]
mov [rsp+78],rdx
mov [rsp+0B0],ecx
mov [rsp+20],r11
M04_L46:
mov rcx,r12
mov rdx,rsi
mov r8,[rsp+78]
call qword ptr [7FFA495733A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor ecx,ecx
mov [rsp+80],rcx
test rax,rax
jne short M04_L51
cmp dword ptr [rsp+0C0],0
je short M04_L48
test byte ptr [rsp+0BC],20
jne short M04_L47
mov rcx,[rbp+30]
test rcx,rcx
jne short M04_L49
xor r8d,r8d
jmp short M04_L50
M04_L47:
mov ecx,[rsp+0B0]
mov r8d,[rsp+0BC]
mov r11,[rsp+20]
jmp short M04_L53
M04_L48:
mov ecx,[rsp+0B0]
mov r8d,[rsp+0BC]
mov r11,[rsp+20]
jmp short M04_L53
M04_L49:
add rcx,0C
mov [rsp+70],rcx
mov r8,[rsp+70]
M04_L50:
mov rcx,r12
mov rdx,rsi
call qword ptr [7FFA495733A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor ecx,ecx
mov [rsp+70],rcx
test rax,rax
mov ecx,[rsp+0B0]
je short M04_L52
M04_L51:
mov r12d,[rsp+0BC]
or r12d,10
jmp near ptr M04_L62
M04_L52:
mov r8d,[rsp+0BC]
mov r11,[rsp+20]
M04_L53:
test dil,40
je near ptr M04_L67
test r8b,4
je near ptr M04_L67
mov [rsp+0BC],r8d
test r8b,10
jne short M04_L54
test r11,r11
jne short M04_L55
xor r10d,r10d
mov [rsp+0B0],ecx
mov [rsp+20],r11
jmp short M04_L56
M04_L54:
mov r8d,[rsp+0BC]
jmp near ptr M04_L67
M04_L55:
mov [rsp+20],r11
lea r10,[r11+0C]
mov [rsp+68],r10
mov r10,[rsp+68]
mov [rsp+0B0],ecx
M04_L56:
mov rcx,r12
mov rdx,rsi
mov r8,r10
call qword ptr [7FFA495733A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor ecx,ecx
mov [rsp+68],rcx
test rax,rax
jne short M04_L59
cmp dword ptr [rsp+0C0],0
je short M04_L58
test byte ptr [rsp+0BC],20
jne short M04_L57
mov rcx,[rbp+38]
test rcx,rcx
jne short M04_L60
xor r8d,r8d
jmp short M04_L61
M04_L57:
mov ecx,[rsp+0B0]
mov r8d,[rsp+0BC]
jmp near ptr M04_L67
M04_L58:
mov ecx,[rsp+0B0]
mov r8d,[rsp+0BC]
jmp short M04_L67
M04_L59:
mov r12d,[rsp+0BC]
jmp short M04_L62
M04_L60:
add rcx,0C
mov [rsp+60],rcx
mov r8,[rsp+60]
M04_L61:
mov rcx,r12
mov rdx,rsi
call qword ptr [7FFA495733A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor ecx,ecx
mov [rsp+60],rcx
test rax,rax
mov ecx,[rsp+0B0]
je short M04_L64
mov r12d,[rsp+0BC]
M04_L62:
lea rcx,[rax-2]
mov r9,rcx
mov r8d,r12d
mov r12,r9
mov r11,[rsp+20]
M04_L63:
add r12,2
cmp r12,rsi
jb short M04_L65
xor ecx,ecx
jmp short M04_L66
M04_L64:
mov r8d,[rsp+0BC]
jmp short M04_L67
M04_L65:
movzx ecx,word ptr [r12]
M04_L66:
movzx ecx,cx
mov [rsp+0B0],ecx
jmp near ptr M04_L31
M04_L67:
xor r15d,r15d
mov edx,[rsp+0A4]
mov [rbx],edx
cmp dword ptr [rsp+0B8],0
je short M04_L69
mov edx,[r14+18]
mov r9,[r14+8]
mov r10d,[r9+8]
cmp r10d,edx
jbe short M04_L68
mov edx,edx
mov word ptr [r9+rdx*2+10],0
inc dword ptr [r14+18]
mov [rsp+0B0],ecx
mov [rsp+0BC],r8d
jmp short M04_L70
M04_L68:
mov [rsp+0B0],ecx
mov [rsp+0BC],r8d
mov rcx,r14
xor edx,edx
mov r8d,1
call qword ptr [7FFA492BD510]; System.Text.StringBuilder.Append(Char, Int32)
jmp short M04_L70
M04_L69:
movsxd rdx,edx
mov r14,[rsp+0A8]
mov word ptr [r14+rdx*2],0
mov [rsp+0B0],ecx
mov [rsp+0BC],r8d
M04_L70:
test byte ptr [rsp+0BC],4
je near ptr M04_L116
mov ecx,[rsp+0B0]
cmp ecx,45
je short M04_L71
cmp ecx,65
jne near ptr M04_L97
M04_L71:
test dil,80
je near ptr M04_L97
lea rcx,[r12+2]
mov r14,rcx
cmp r14,rsi
jb short M04_L72
xor ecx,ecx
jmp short M04_L73
M04_L72:
movzx ecx,word ptr [r14]
M04_L73:
movzx ecx,cx
mov [rsp+0B0],ecx
mov rcx,[rbp+20]
test rcx,rcx
jne short M04_L74
xor r10d,r10d
jmp short M04_L75
M04_L74:
add rcx,0C
mov [rsp+58],rcx
mov r10,[rsp+58]
M04_L75:
mov rcx,r14
mov rdx,rsi
mov r8,r10
call qword ptr [7FFA495733A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor ecx,ecx
mov [rsp+58],rcx
test rax,rax
je short M04_L78
mov r14,rax
cmp r14,rsi
jb short M04_L76
xor ecx,ecx
jmp short M04_L77
M04_L76:
movzx ecx,word ptr [r14]
M04_L77:
movzx r9d,cx
mov [rsp+0B0],r9d
jmp short M04_L84
M04_L78:
mov rcx,[rbp+28]
test rcx,rcx
jne short M04_L79
xor r8d,r8d
jmp short M04_L80
M04_L79:
add rcx,0C
mov [rsp+50],rcx
mov r8,[rsp+50]
M04_L80:
mov rcx,r14
mov rdx,rsi
call qword ptr [7FFA495733A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor ecx,ecx
mov [rsp+50],rcx
xor ecx,ecx
test rax,rax
sete cl
test [rsp+0C4],ecx
je short M04_L81
cmp r14,rsi
jae short M04_L81
cmp word ptr [r14],2D
jne short M04_L81
lea rax,[r14+2]
M04_L81:
test rax,rax
je short M04_L84
mov r14,rax
cmp r14,rsi
jb short M04_L82
xor ecx,ecx
jmp short M04_L83
M04_L82:
movzx ecx,word ptr [r14]
M04_L83:
movzx ecx,cx
mov r15d,ecx
mov ecx,1
mov [rsp+0B0],r15d
mov r15d,ecx
M04_L84:
mov r9d,[rsp+0B0]
lea ecx,[r9-30]
cmp ecx,9
ja near ptr M04_L94
xor ecx,ecx
jmp short M04_L89
M04_L85:
cmp ecx,5F5E100
mov r9d,r12d
jl short M04_L89
mov ecx,7FFFFFFF
xor edx,edx
mov [rbx+4],edx
lea edx,[r9-30]
cmp edx,9
mov r12d,r9d
ja short M04_L92
M04_L86:
add r14,2
cmp r14,rsi
jb short M04_L87
xor r9d,r9d
jmp short M04_L88
M04_L87:
movzx r9d,word ptr [r14]
M04_L88:
movzx r9d,r9w
mov r12d,r9d
lea edx,[r12-30]
cmp edx,9
jbe short M04_L86
mov r9d,r12d
mov r12d,r9d
jmp short M04_L92
M04_L89:
lea ecx,[rcx+rcx*4]
lea ecx,[r9+rcx*2-30]
add r14,2
cmp r14,rsi
jb short M04_L90
xor r9d,r9d
jmp short M04_L91
M04_L90:
movzx r9d,word ptr [r14]
M04_L91:
movzx r9d,r9w
mov r12d,r9d
lea edx,[r12-30]
cmp edx,9
jbe short M04_L85
M04_L92:
test r15d,r15d
je short M04_L93
neg ecx
M04_L93:
lea rdx,[rbx+4]
add [rdx],ecx
mov ecx,r12d
mov r12,r14
jmp short M04_L97
M04_L94:
mov r14,r12
cmp r14,rsi
jb short M04_L95
xor ecx,ecx
jmp short M04_L96
M04_L95:
movzx ecx,word ptr [r14]
M04_L96:
movzx r12d,cx
mov ecx,r12d
mov r12,r14
M04_L97:
cmp ecx,20
je short M04_L98
cmp ecx,9
jl short M04_L99
mov [rsp+0B0],ecx
cmp ecx,0D
mov ecx,[rsp+0B0]
jg short M04_L99
M04_L98:
test dil,2
jne near ptr M04_L110
M04_L99:
test dil,8
je near ptr M04_L106
test byte ptr [rsp+0BC],1
jne near ptr M04_L106
mov rdx,[rbp+20]
test rdx,rdx
jne short M04_L100
xor r9d,r9d
mov [rsp+0B0],ecx
jmp short M04_L101
M04_L100:
add rdx,0C
mov [rsp+48],rdx
mov r9,[rsp+48]
mov [rsp+0B0],ecx
M04_L101:
mov rcx,r12
mov rdx,rsi
mov r8,r9
call qword ptr [7FFA495733A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor ecx,ecx
mov [rsp+48],rcx
test rax,rax
jne short M04_L105
mov rcx,[rbp+28]
test rcx,rcx
jne short M04_L102
xor r8d,r8d
jmp short M04_L103
M04_L102:
add rcx,0C
mov [rsp+40],rcx
mov r8,[rsp+40]
M04_L103:
mov rcx,r12
mov rdx,rsi
call qword ptr [7FFA495733A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor ecx,ecx
mov [rsp+40],rcx
xor ecx,ecx
test rax,rax
sete cl
test [rsp+0C4],ecx
je short M04_L104
cmp r12,rsi
jae short M04_L104
cmp word ptr [r12],2D
jne short M04_L104
lea rax,[r12+2]
M04_L104:
test rax,rax
mov ecx,[rsp+0B0]
je short M04_L106
mov byte ptr [rbx+8],1
M04_L105:
mov r12d,[rsp+0BC]
or r12d,1
jmp short M04_L109
M04_L106:
cmp ecx,29
jne short M04_L108
mov r8d,[rsp+0BC]
test r8b,2
je short M04_L107
and r8d,0FFFFFFFD
mov [rsp+0BC],r8d
jmp short M04_L110
M04_L107:
mov [rsp+0BC],r8d
M04_L108:
test r13,r13
je short M04_L113
add r13,0C
mov [rsp+38],r13
mov rcx,[rsp+38]
mov [rsp+30],rcx
mov rcx,r12
mov rdx,rsi
mov r8,[rsp+30]
call qword ptr [7FFA495733A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor edx,edx
mov [rsp+38],rdx
test rax,rax
je short M04_L113
xor r13d,r13d
mov r12d,[rsp+0BC]
M04_L109:
add rax,0FFFFFFFFFFFFFFFE
mov r14,rax
mov [rsp+0BC],r12d
mov r12,r14
M04_L110:
add r12,2
cmp r12,rsi
jb short M04_L111
xor edx,edx
jmp short M04_L112
M04_L111:
movzx edx,word ptr [r12]
M04_L112:
movzx ecx,dx
mov r14d,ecx
mov ecx,r14d
jmp near ptr M04_L97
M04_L113:
mov r8d,[rsp+0BC]
test r8b,2
jne short M04_L116
test r8b,8
jne short M04_L115
cmp byte ptr [rsp+140],0
jne short M04_L114
xor eax,eax
mov [rbx+4],eax
M04_L114:
test r8b,10
jne short M04_L115
mov byte ptr [rbx+8],0
M04_L115:
mov r15,[rsp+110]
mov [r15],r12
mov eax,1
add rsp,0C8
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
M04_L116:
mov r15,[rsp+110]
mov [r15],r12
xor eax,eax
add rsp,0C8
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
; Total bytes of code 3088 ; System.Numerics.BigNumber.NumberToBigInteger(BigNumberBuffer ByRef, System.Numerics.BigInteger ByRef)
push rbp
push rsi
sub rsp,48
lea rbp,[rsp+50]
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rbp-20],xmm4
xor eax,eax
mov [rbp-10],rax
mov [rbp-30],rsp
mov eax,[rcx+0C]
mov [rbp-18],eax
cmp dword ptr [rbp-18],7FFFFFFF
jne short M05_L00
xor eax,eax
mov [rdx],rax
mov [rdx+8],rax
mov eax,2
add rsp,48
pop rsi
pop rbp
ret
M05_L00:
cmp dword ptr [rbp-18],0
jge short M05_L01
xor eax,eax
mov [rdx],rax
mov [rdx+8],rax
mov eax,1
add rsp,48
pop rsi
pop rbp
ret
M05_L01:
mov r8,[rcx]
mov eax,[r8+1C]
add eax,[r8+18]
cmp eax,[7FFA494F8F68]
jg short M05_L02
lea r8,[rbp-20]
call qword ptr [7FFA4953F948]; System.Numerics.BigNumber.<NumberToBigInteger>g__Naive|14_0(BigNumberBuffer ByRef, System.Numerics.BigInteger ByRef, <>c__DisplayClass14_0 ByRef)
mov esi,eax
jmp short M05_L03
M05_L02:
lea r8,[rbp-20]
call qword ptr [7FFA4953F978]
mov esi,eax
M05_L03:
cmp qword ptr [rbp-20],0
je short M05_L04
mov rcx,7FFA49094E68
mov edx,22
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rcx,208D8401EF8
mov rcx,[rcx]
mov rdx,[rbp-20]
xor r8d,r8d
cmp [rcx],ecx
call qword ptr [7FFA496E7550]; System.Buffers.TlsOverPerCoreLockedStacksArrayPool`1[[System.Int32, System.Private.CoreLib]].Return(Int32[], Boolean)
M05_L04:
mov eax,esi
add rsp,48
pop rsi
pop rbp
ret
push rbp
push rsi
sub rsp,28
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+50]
cmp qword ptr [rbp-20],0
je short M05_L05
mov rcx,7FFA49094E68
mov edx,22
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rcx,208D8401EF8
mov rcx,[rcx]
mov rdx,[rbp-20]
xor r8d,r8d
cmp [rcx],ecx
call qword ptr [7FFA496E7550]; System.Buffers.TlsOverPerCoreLockedStacksArrayPool`1[[System.Int32, System.Private.CoreLib]].Return(Int32[], Boolean)
M05_L05:
nop
add rsp,28
pop rsi
pop rbp
ret
; Total bytes of code 284 Compare Jit Disasm; System.Numerics.Tests.Perf_BigInteger.Parse(BigIntegerData)
push r14
push rdi
push rsi
push rbp
push rbx
sub rsp,0B0
vzeroupper
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rsp+40],xmm4
mov rax,0FFFFFFFFFFFFFFA0
M00_L00:
vmovdqa xmmword ptr [rsp+rax+0B0],xmm4
vmovdqa xmmword ptr [rsp+rax+0C0],xmm4
vmovdqa xmmword ptr [rsp+rax+0D0],xmm4
add rax,30
jne short M00_L00
mov rsi,rdx
mov rdi,[r8+8]
call qword ptr [7FFBDA65D8B8]; System.Globalization.NumberFormatInfo.get_CurrentInfo()
test rax,rax
je near ptr M00_L05
mov rcx,rax
call qword ptr [7FFBDA65DD08]; System.Globalization.NumberFormatInfo.<GetInstance>g__GetProviderNonNull|44_0(System.IFormatProvider)
mov rbx,rax
M00_L01:
test rdi,rdi
je near ptr M00_L09
lea rbp,[rdi+0C]
mov edi,[rdi+8]
lea rdx,[rsp+0A8]
mov ecx,7
call qword ptr [7FFBDA74F810]; System.Numerics.BigNumber.TryValidateParseStyleInteger(System.Globalization.NumberStyles, System.ArgumentException ByRef)
test eax,eax
je near ptr M00_L10
lea rdx,[rsp+90]
mov ecx,7
call qword ptr [7FFBDA74F810]; System.Numerics.BigNumber.TryValidateParseStyleInteger(System.Globalization.NumberStyles, System.ArgumentException ByRef)
test eax,eax
je near ptr M00_L11
mov rcx,offset MT_System.Text.StringBuilder
call CORINFO_HELP_NEWSFAST
mov r14,rax
mov dword ptr [r14+20],7FFFFFFF
mov rcx,offset MT_System.Char[]
mov edx,10
call CORINFO_HELP_NEWARR_1_VC
lea rcx,[r14+8]
mov rdx,rax
call CORINFO_HELP_ASSIGN_REF
mov [rsp+78],r14
xor edx,edx
mov [rsp+80],edx
mov [rsp+84],edx
mov byte ptr [rsp+88],0
mov rdx,[rsp+78]
xor ecx,ecx
vxorps xmm0,xmm0,xmm0
vmovdqu xmmword ptr [rsp+60],xmm0
mov [rsp+70],rcx
mov qword ptr [rsp+70],1
mov [rsp+58],rbp
mov r14,rbp
mov [rsp+50],r14
mov [rsp+20],rdx
mov [rsp+28],rbx
mov [rsp+30],ecx
mov rdx,[rsp+50]
movsxd rcx,edi
lea rdx,[rdx+rcx*2]
lea rcx,[rsp+50]
lea r9,[rsp+60]
mov r8d,7
call qword ptr [7FFBDA7833F0]; System.Globalization.FormatProvider+Number.ParseNumber(Char* ByRef, Char*, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Text.StringBuilder, System.Globalization.NumberFormatInfo, Boolean)
test eax,eax
je short M00_L02
mov rcx,[rsp+50]
sub rcx,r14
mov rdx,rcx
shr rdx,3F
add rcx,rdx
sar rcx,1
mov edx,edi
cmp rcx,rdx
jge near ptr M00_L06
mov [rsp+40],rbp
mov [rsp+48],edi
lea rcx,[rsp+40]
mov rdx,[rsp+50]
sub rdx,r14
mov rax,rdx
shr rax,3F
add rdx,rax
sar rdx,1
call qword ptr [7FFBDA783408]
test eax,eax
jne near ptr M00_L06
M00_L02:
xor ecx,ecx
M00_L03:
xor edx,edx
mov [rsp+58],rdx
test ecx,ecx
jne near ptr M00_L07
xor ecx,ecx
mov [rsp+80],ecx
mov [rsp+84],ecx
mov byte ptr [rsp+88],0
vxorps xmm0,xmm0,xmm0
vmovdqu xmmword ptr [rsp+98],xmm0
mov edi,1
M00_L04:
xor edx,edx
mov [rsp+90],rdx
mov ecx,edi
test ecx,ecx
jne near ptr M00_L08
mov rdx,[rsp+98]
mov rcx,rsi
call CORINFO_HELP_CHECKED_ASSIGN_REF
mov eax,[rsp+0A0]
mov [rsi+8],eax
mov rax,rsi
add rsp,0B0
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
ret
M00_L05:
call qword ptr [7FFBDA65D8B8]; System.Globalization.NumberFormatInfo.get_CurrentInfo()
mov rbx,rax
jmp near ptr M00_L01
M00_L06:
xor ecx,ecx
mov [rsp+58],rcx
mov ecx,1
jmp near ptr M00_L03
M00_L07:
mov ecx,[rsp+60]
mov [rsp+80],ecx
mov ecx,[rsp+64]
mov [rsp+84],ecx
mov ecx,[rsp+68]
mov [rsp+88],cl
lea rcx,[rsp+78]
lea rdx,[rsp+98]
call qword ptr [7FFBDA74F8A0]; System.Numerics.BigNumber.NumberToBigInteger(BigNumberBuffer ByRef, System.Numerics.BigInteger ByRef)
mov edi,eax
jmp near ptr M00_L04
M00_L08:
call qword ptr [7FFBDA74F7E0]
int 3
M00_L09:
mov ecx,1
mov rdx,7FFBDA708F80
call CORINFO_HELP_STRCNS
mov rcx,rax
call qword ptr [7FFBDA475BA0]
int 3
M00_L10:
mov rcx,[rsp+0A8]
call CORINFO_HELP_THROW
M00_L11:
mov rcx,[rsp+90]
call CORINFO_HELP_THROW
int 3
; Total bytes of code 713 ; System.Globalization.NumberFormatInfo.get_CurrentInfo()
sub rsp,28
mov rcx,7FFBDA2A4E68
mov edx,250
call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE
mov rcx,[rax+8]
test rcx,rcx
jne short M01_L00
mov rcx,14A21800488
mov rcx,[rcx]
test rcx,rcx
jne short M01_L00
mov rcx,14A21800468
mov rcx,[rcx]
test rcx,rcx
je short M01_L03
M01_L00:
cmp byte ptr [rcx+61],0
jne short M01_L01
mov rax,[rcx+18]
test rax,rax
je short M01_L01
add rsp,28
ret
M01_L01:
mov rdx,18AB6297408
mov rax,[rcx]
mov rax,[rax+50]
call qword ptr [rax]
mov rdx,rax
mov rax,rdx
test rax,rax
je short M01_L02
mov rcx,offset MT_System.Globalization.NumberFormatInfo
cmp [rax],rcx
jne short M01_L04
M01_L02:
add rsp,28
ret
M01_L03:
call qword ptr [7FFBDA4675D0]
mov rcx,rax
jmp short M01_L00
M01_L04:
call qword ptr [7FFBDA33D8B8]
int 3
; Total bytes of code 157 ; System.Globalization.NumberFormatInfo.<GetInstance>g__GetProviderNonNull|44_0(System.IFormatProvider)
push rsi
sub rsp,20
mov rsi,rcx
mov rdx,rsi
mov rcx,offset MT_System.Globalization.CultureInfo
call qword ptr [7FFBDA33D828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
test rax,rax
je short M02_L00
cmp byte ptr [rax+61],0
jne short M02_L00
mov rcx,[rax+18]
test rcx,rcx
je short M02_L03
mov rax,rcx
add rsp,20
pop rsi
ret
M02_L00:
mov rax,rsi
test rax,rax
je short M02_L01
mov rcx,offset MT_System.Globalization.NumberFormatInfo
xor r11d,r11d
cmp [rax],rcx
cmovne rax,r11
M02_L01:
test rax,rax
je short M02_L04
M02_L02:
add rsp,20
pop rsi
ret
M02_L03:
mov rcx,rax
mov rax,[rax]
mov rax,[rax+50]
add rsp,20
pop rsi
jmp qword ptr [rax+10]
M02_L04:
mov rcx,rsi
mov r11,7FFBDA1905A0
mov rdx,18AB6297408
call qword ptr [r11]
mov rdx,rax
mov rcx,offset MT_System.Globalization.NumberFormatInfo
call qword ptr [7FFBDA33D828]; System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(Void*, System.Object)
test rax,rax
jne short M02_L02
add rsp,20
pop rsi
jmp qword ptr [7FFBDA65D8B8]; System.Globalization.NumberFormatInfo.get_CurrentInfo()
; Total bytes of code 175 ; System.Numerics.BigNumber.TryValidateParseStyleInteger(System.Globalization.NumberStyles, System.ArgumentException ByRef)
push rdi
push rsi
sub rsp,28
mov rsi,rdx
test ecx,0FFFFFC00
je short M03_L00
mov rcx,offset MT_System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rdi,rax
mov rcx,18AB629B590
call qword ptr [7FFBDA783018]
mov dword ptr [rdi+70],0E0434352
mov dword ptr [rdi+74],80131500
lea rcx,[rdi+10]
mov rdx,rax
call CORINFO_HELP_ASSIGN_REF
mov dword ptr [rdi+74],80131501
mov rdx,18AB6297BE8
mov [rdi+78],rdx
mov dword ptr [rdi+74],80070057
mov rcx,rsi
mov rdx,rdi
call CORINFO_HELP_CHECKED_ASSIGN_REF
xor eax,eax
add rsp,28
pop rsi
pop rdi
ret
M03_L00:
test ecx,200
je short M03_L01
test ecx,0FFFFFDFC
je short M03_L01
mov rcx,offset MT_System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rdi,rax
mov rcx,18AB629B5E0
call qword ptr [7FFBDA783018]
mov dword ptr [rdi+70],0E0434352
mov dword ptr [rdi+74],80131500
lea rcx,[rdi+10]
mov rdx,rax
call CORINFO_HELP_ASSIGN_REF
mov dword ptr [rdi+74],80131501
mov rdx,18AB6297BE8
mov [rdi+78],rdx
mov dword ptr [rdi+74],80070057
mov rcx,rsi
mov rdx,rdi
call CORINFO_HELP_CHECKED_ASSIGN_REF
xor eax,eax
add rsp,28
pop rsi
pop rdi
ret
M03_L01:
xor eax,eax
mov [rsi],rax
mov eax,1
add rsp,28
pop rsi
pop rdi
ret
; Total bytes of code 266 ; System.Globalization.FormatProvider+Number.ParseNumber(Char* ByRef, Char*, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Text.StringBuilder, System.Globalization.NumberFormatInfo, Boolean)
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbp
push rbx
sub rsp,0D8
xor eax,eax
mov [rsp+38],rax
vxorps xmm4,xmm4,xmm4
mov rax,0FFFFFFFFFFFFFFA0
M04_L00:
vmovdqa xmmword ptr [rsp+rax+0A0],xmm4
vmovdqa xmmword ptr [rsp+rax+0B0],xmm4
vmovdqa xmmword ptr [rsp+rax+0C0],xmm4
add rax,30
jne short M04_L00
mov r15,rcx
mov rsi,rdx
mov edi,r8d
mov rbx,r9
mov r14,[rsp+140]
mov rbp,[rsp+148]
xor ecx,ecx
mov [rbx+4],ecx
mov byte ptr [rbx+8],0
xor r13d,r13d
mov rcx,[rbp+28]
xor eax,eax
cmp dword ptr [rcx+8],1
sete al
cmp dword ptr [rcx+8],1
jne short M04_L05
movzx eax,word ptr [rcx+0C]
cmp eax,208B
ja short M04_L01
cmp eax,2012
je short M04_L03
cmp eax,207B
je short M04_L03
cmp eax,208B
je short M04_L03
jmp short M04_L04
M04_L01:
cmp eax,2796
ja short M04_L02
cmp eax,2212
je short M04_L03
cmp eax,2796
je short M04_L03
jmp short M04_L04
M04_L02:
cmp eax,0FE63
je short M04_L03
cmp eax,0FF0D
jne short M04_L04
M04_L03:
mov eax,1
jmp short M04_L05
M04_L04:
xor eax,eax
M04_L05:
mov [rsp+0D4],eax
xor r9d,r9d
test edi,100
je short M04_L06
mov r13,[rbp+50]
mov r10,[rbp+48]
mov r11,[rbp+40]
mov dword ptr [rsp+0D0],1
jmp short M04_L07
M04_L06:
mov r10,[rbp+30]
mov [rsp+28],r10
mov r11,[rbp+38]
mov [rsp+20],r11
mov [rsp+0D0],r9d
mov r10,[rsp+28]
mov r11,[rsp+20]
M04_L07:
xor r8d,r8d
xor edx,edx
test r14,r14
setne dl
mov [rsp+0C8],edx
mov ecx,7FFFFFFF
mov r12d,20
test edx,edx
cmove ecx,r12d
mov r12d,ecx
mov [rsp+0C4],r12d
mov [rsp+120],r15
mov rcx,[r15]
cmp rcx,rsi
jb short M04_L08
xor r12d,r12d
jmp short M04_L09
M04_L08:
movzx r12d,word ptr [rcx]
M04_L09:
movzx r12d,r12w
mov r15,[rbx+10]
mov [rsp+0A8],r15
M04_L10:
cmp r12d,20
je short M04_L11
cmp r12d,9
jl short M04_L12
cmp r12d,0D
jg short M04_L12
M04_L11:
test dil,1
je short M04_L12
test r8b,1
je near ptr M04_L26
test r8b,20
jne near ptr M04_L26
cmp dword ptr [rbp+0A8],2
je near ptr M04_L26
M04_L12:
test dil,4
je near ptr M04_L23
mov [rsp+0CC],r8d
test r8b,1
jne short M04_L13
mov r15,[rbp+20]
test r15,r15
jne short M04_L14
xor r15d,r15d
mov [rsp+28],r10
mov [rsp+20],r11
jmp short M04_L15
M04_L13:
mov r8d,[rsp+0CC]
jmp near ptr M04_L23
M04_L14:
add r15,0C
mov [rsp+98],r15
mov r15,[rsp+98]
mov [rsp+28],r10
mov [rsp+20],r11
M04_L15:
mov [rsp+0B8],rcx
mov rdx,rsi
mov r8,r15
call qword ptr [7FFBDA7833A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor ecx,ecx
mov [rsp+98],rcx
test rax,rax
jne near ptr M04_L19
mov rcx,[rbp+28]
test rcx,rcx
jne short M04_L16
xor r8d,r8d
jmp short M04_L17
M04_L16:
add rcx,0C
mov [rsp+90],rcx
mov r8,[rsp+90]
M04_L17:
mov rcx,[rsp+0B8]
mov rdx,rsi
call qword ptr [7FFBDA7833A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor ecx,ecx
mov [rsp+90],rcx
xor ecx,ecx
test rax,rax
sete cl
test [rsp+0D4],ecx
je short M04_L18
mov r9,[rsp+0B8]
cmp r9,rsi
jae short M04_L22
cmp word ptr [r9],2D
jne short M04_L21
lea rax,[r9+2]
mov [rsp+0B8],r9
M04_L18:
test rax,rax
mov rcx,[rsp+0B8]
je short M04_L20
mov byte ptr [rbx+8],1
M04_L19:
mov r12d,[rsp+0CC]
or r12d,1
jmp near ptr M04_L25
M04_L20:
mov r8d,[rsp+0CC]
mov r10,[rsp+28]
mov r11,[rsp+20]
jmp short M04_L23
M04_L21:
mov [rsp+0B8],r9
jmp short M04_L18
M04_L22:
mov [rsp+0B8],r9
jmp short M04_L18
M04_L23:
cmp r12d,28
jne short M04_L24
test dil,10
je short M04_L24
test r8b,1
jne short M04_L24
or r8d,3
mov [rsp+0CC],r8d
mov byte ptr [rbx+8],1
mov r8d,[rsp+0CC]
jmp short M04_L26
M04_L24:
test r13,r13
je near ptr M04_L30
mov [rsp+0CC],r8d
mov [rsp+28],r10
mov [rsp+20],r11
lea r15,[r13+0C]
mov [rsp+88],r15
mov r15,[rsp+88]
mov [rsp+0B8],rcx
mov rdx,rsi
mov r8,r15
call qword ptr [7FFBDA7833A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor ecx,ecx
mov [rsp+88],rcx
test rax,rax
mov rcx,[rsp+0B8]
je short M04_L27
mov r12d,[rsp+0CC]
or r12d,20
xor r13d,r13d
M04_L25:
lea rcx,[rax-2]
mov r8d,r12d
mov r10,[rsp+28]
mov r11,[rsp+20]
M04_L26:
add rcx,2
mov r12,rcx
cmp r12,rsi
jb short M04_L28
xor ecx,ecx
jmp short M04_L29
M04_L27:
mov r8d,[rsp+0CC]
mov r10,[rsp+28]
mov r11,[rsp+20]
jmp short M04_L30
M04_L28:
mov [rsp+0B8],r12
movzx ecx,word ptr [r12]
mov r12,[rsp+0B8]
M04_L29:
movzx ecx,cx
mov eax,ecx
mov rcx,r12
mov r12d,eax
jmp near ptr M04_L10
M04_L30:
xor r15d,r15d
xor edx,edx
mov [rsp+0A4],edx
mov [rsp+28],r10
M04_L31:
lea r10d,[r12-30]
cmp r10d,9
jbe short M04_L32
test edi,200
je near ptr M04_L43
mov r10d,r12d
or r10d,20
movzx r10d,r10w
add r10d,0FFFFFF9F
cmp r10d,5
ja near ptr M04_L43
M04_L32:
or r8d,4
cmp r12d,30
jne short M04_L33
mov [rsp+0CC],r8d
test r8b,8
jne short M04_L34
mov r10d,[rsp+0C8]
test r10d,r10d
je near ptr M04_L41
test edi,200
je near ptr M04_L41
mov r8d,[rsp+0CC]
M04_L33:
cmp r15d,[rsp+0C4]
jge near ptr M04_L38
cmp dword ptr [rsp+0C8],0
je short M04_L36
mov [rsp+20],r11
mov r10d,[r14+18]
mov r11,[r14+8]
cmp [r11+8],r10d
jbe short M04_L35
mov r10d,r10d
mov [r11+r10*2+10],r12w
inc dword ptr [r14+18]
mov [rsp+0B8],rcx
mov [rsp+0CC],r8d
jmp short M04_L37
M04_L34:
mov r8d,[rsp+0CC]
jmp short M04_L33
M04_L35:
mov [rsp+0B8],rcx
mov [rsp+0CC],r8d
mov rcx,r14
mov edx,r12d
mov r8d,1
call qword ptr [7FFBDA4CD510]; System.Text.StringBuilder.Append(Char, Int32)
jmp short M04_L37
M04_L36:
lea r10d,[r15+1]
movsxd r15,r15d
mov rdx,[rsp+0A8]
mov [rdx+r15*2],r12w
mov [rsp+0B8],rcx
mov [rsp+0CC],r8d
mov [rsp+20],r11
mov [rsp+0A8],rdx
mov r15d,r10d
M04_L37:
xor r10d,r10d
cmp r12d,30
setne r10b
movzx r12d,byte ptr [rsp+150]
or r10d,r12d
je short M04_L40
mov [rsp+0A4],r15d
mov rcx,[rsp+0B8]
mov r8d,[rsp+0CC]
mov r11,[rsp+20]
M04_L38:
test r8b,10
jne short M04_L39
lea r12,[rbx+4]
inc dword ptr [r12]
M04_L39:
or r8d,8
jmp near ptr M04_L63
M04_L40:
mov rcx,[rsp+0B8]
mov r8d,[rsp+0CC]
mov r11,[rsp+20]
jmp short M04_L38
M04_L41:
mov r8d,[rsp+0CC]
test r8b,10
je short M04_L42
lea r12,[rbx+4]
dec dword ptr [r12]
jmp near ptr M04_L63
M04_L42:
jmp near ptr M04_L63
M04_L43:
test dil,20
je near ptr M04_L53
mov [rsp+0CC],r8d
test r8b,10
jne short M04_L44
mov r10,[rsp+28]
test r10,r10
jne short M04_L45
xor edx,edx
mov [rsp+78],rdx
mov [rsp+28],r10
mov [rsp+20],r11
jmp short M04_L46
M04_L44:
mov r8d,[rsp+0CC]
jmp near ptr M04_L53
M04_L45:
mov [rsp+28],r10
lea rdx,[r10+0C]
mov [rsp+80],rdx
mov rdx,[rsp+80]
mov [rsp+78],rdx
mov [rsp+20],r11
M04_L46:
mov [rsp+0B8],rcx
mov rdx,rsi
mov r8,[rsp+78]
call qword ptr [7FFBDA7833A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor ecx,ecx
mov [rsp+80],rcx
test rax,rax
jne near ptr M04_L51
cmp dword ptr [rsp+0D0],0
je short M04_L48
test byte ptr [rsp+0CC],20
jne short M04_L47
mov rcx,[rbp+30]
test rcx,rcx
jne short M04_L49
xor r8d,r8d
jmp short M04_L50
M04_L47:
mov rcx,[rsp+0B8]
mov r8d,[rsp+0CC]
mov r11,[rsp+20]
jmp short M04_L53
M04_L48:
mov rcx,[rsp+0B8]
mov r8d,[rsp+0CC]
mov r11,[rsp+20]
jmp short M04_L53
M04_L49:
add rcx,0C
mov [rsp+70],rcx
mov r8,[rsp+70]
M04_L50:
mov rcx,[rsp+0B8]
mov rdx,rsi
call qword ptr [7FFBDA7833A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor ecx,ecx
mov [rsp+70],rcx
test rax,rax
mov rcx,[rsp+0B8]
je short M04_L52
M04_L51:
mov r12d,[rsp+0CC]
or r12d,10
jmp near ptr M04_L62
M04_L52:
mov r8d,[rsp+0CC]
mov r11,[rsp+20]
M04_L53:
test dil,40
je near ptr M04_L67
test r8b,4
je near ptr M04_L67
mov [rsp+0CC],r8d
test r8b,10
jne short M04_L54
test r11,r11
jne short M04_L55
xor r10d,r10d
mov [rsp+20],r11
jmp short M04_L56
M04_L54:
mov r8d,[rsp+0CC]
jmp near ptr M04_L67
M04_L55:
mov [rsp+20],r11
lea r10,[r11+0C]
mov [rsp+68],r10
mov r10,[rsp+68]
M04_L56:
mov [rsp+0B8],rcx
mov rdx,rsi
mov r8,r10
call qword ptr [7FFBDA7833A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor ecx,ecx
mov [rsp+68],rcx
test rax,rax
jne short M04_L59
cmp dword ptr [rsp+0D0],0
je short M04_L58
test byte ptr [rsp+0CC],20
jne short M04_L57
mov rcx,[rbp+38]
test rcx,rcx
jne short M04_L60
xor r8d,r8d
jmp short M04_L61
M04_L57:
mov rcx,[rsp+0B8]
mov r8d,[rsp+0CC]
jmp near ptr M04_L67
M04_L58:
mov rcx,[rsp+0B8]
mov r8d,[rsp+0CC]
jmp near ptr M04_L67
M04_L59:
mov r12d,[rsp+0CC]
jmp short M04_L62
M04_L60:
add rcx,0C
mov [rsp+60],rcx
mov r8,[rsp+60]
M04_L61:
mov rcx,[rsp+0B8]
mov rdx,rsi
call qword ptr [7FFBDA7833A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor ecx,ecx
mov [rsp+60],rcx
test rax,rax
mov rcx,[rsp+0B8]
je short M04_L64
mov r12d,[rsp+0CC]
M04_L62:
lea rcx,[rax-2]
mov r9,rcx
mov r8d,r12d
mov r11,[rsp+20]
M04_L63:
add rcx,2
mov r12,rcx
cmp r12,rsi
jb short M04_L65
xor ecx,ecx
jmp short M04_L66
M04_L64:
mov r8d,[rsp+0CC]
jmp short M04_L67
M04_L65:
mov [rsp+0B8],r12
movzx ecx,word ptr [r12]
mov r12,[rsp+0B8]
M04_L66:
movzx ecx,cx
mov eax,ecx
mov rcx,r12
mov r12d,eax
jmp near ptr M04_L31
M04_L67:
xor r15d,r15d
mov edx,[rsp+0A4]
mov [rbx],edx
cmp dword ptr [rsp+0C8],0
je short M04_L69
mov edx,[r14+18]
mov r9,[r14+8]
mov r10d,[r9+8]
cmp r10d,edx
jbe short M04_L68
mov edx,edx
mov word ptr [r9+rdx*2+10],0
inc dword ptr [r14+18]
mov [rsp+0B8],rcx
mov [rsp+0CC],r8d
jmp short M04_L70
M04_L68:
mov [rsp+0B8],rcx
mov [rsp+0CC],r8d
mov rcx,r14
xor edx,edx
mov r8d,1
call qword ptr [7FFBDA4CD510]; System.Text.StringBuilder.Append(Char, Int32)
jmp short M04_L70
M04_L69:
movsxd rdx,edx
mov r14,[rsp+0A8]
mov word ptr [r14+rdx*2],0
mov [rsp+0B8],rcx
mov [rsp+0CC],r8d
M04_L70:
test byte ptr [rsp+0CC],4
je near ptr M04_L117
cmp r12d,45
je short M04_L71
cmp r12d,65
jne near ptr M04_L96
M04_L71:
test dil,80
je near ptr M04_L96
mov rcx,[rsp+0B8]
mov r14,rcx
lea rcx,[r14+2]
mov r12,rcx
cmp r12,rsi
jb short M04_L72
xor ecx,ecx
jmp short M04_L73
M04_L72:
movzx ecx,word ptr [r12]
M04_L73:
movzx ecx,cx
mov [rsp+0B4],ecx
mov rcx,[rbp+20]
test rcx,rcx
jne short M04_L74
xor r10d,r10d
jmp short M04_L75
M04_L74:
add rcx,0C
mov [rsp+58],rcx
mov r10,[rsp+58]
M04_L75:
mov rcx,r12
mov rdx,rsi
mov r8,r10
call qword ptr [7FFBDA7833A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor ecx,ecx
mov [rsp+58],rcx
test rax,rax
je short M04_L78
mov r12,rax
cmp r12,rsi
jb short M04_L76
xor ecx,ecx
jmp short M04_L77
M04_L76:
movzx ecx,word ptr [r12]
M04_L77:
movzx r9d,cx
mov [rsp+0B4],r9d
jmp near ptr M04_L84
M04_L78:
mov rcx,[rbp+28]
test rcx,rcx
jne short M04_L79
xor r8d,r8d
jmp short M04_L80
M04_L79:
add rcx,0C
mov [rsp+50],rcx
mov r8,[rsp+50]
M04_L80:
mov rcx,r12
mov rdx,rsi
call qword ptr [7FFBDA7833A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor ecx,ecx
mov [rsp+50],rcx
xor ecx,ecx
test rax,rax
sete cl
test [rsp+0D4],ecx
je short M04_L81
cmp r12,rsi
jae short M04_L81
lea rcx,[r12+2]
cmp word ptr [r12],2D
cmove rax,rcx
M04_L81:
test rax,rax
je short M04_L84
mov r12,rax
cmp r12,rsi
jb short M04_L82
xor ecx,ecx
jmp short M04_L83
M04_L82:
movzx ecx,word ptr [r12]
M04_L83:
movzx ecx,cx
mov r15d,ecx
mov ecx,1
mov [rsp+0B4],r15d
mov r15d,ecx
M04_L84:
mov r9d,[rsp+0B4]
lea ecx,[r9-30]
cmp ecx,9
ja near ptr M04_L93
xor ecx,ecx
jmp short M04_L89
M04_L85:
cmp ecx,5F5E100
mov r9d,r14d
jl short M04_L89
mov ecx,7FFFFFFF
xor edx,edx
mov [rbx+4],edx
lea edx,[r9-30]
cmp edx,9
mov r14d,r9d
ja short M04_L92
M04_L86:
add r12,2
cmp r12,rsi
jb short M04_L87
xor r9d,r9d
jmp short M04_L88
M04_L87:
movzx r9d,word ptr [r12]
M04_L88:
movzx r9d,r9w
mov r14d,r9d
lea edx,[r14-30]
cmp edx,9
jbe short M04_L86
mov r9d,r14d
mov r14d,r9d
jmp short M04_L92
M04_L89:
lea ecx,[rcx+rcx*4]
lea ecx,[r9+rcx*2-30]
add r12,2
cmp r12,rsi
jb short M04_L90
xor r9d,r9d
jmp short M04_L91
M04_L90:
movzx r9d,word ptr [r12]
M04_L91:
movzx r9d,r9w
mov r14d,r9d
lea edx,[r14-30]
cmp edx,9
jbe short M04_L85
M04_L92:
mov edx,ecx
neg edx
test r15d,r15d
cmovne ecx,edx
lea rdx,[rbx+4]
add [rdx],ecx
mov [rsp+0B8],r12
mov r12d,r14d
jmp short M04_L96
M04_L93:
mov r12,r14
cmp r12,rsi
jb short M04_L94
xor ecx,ecx
jmp short M04_L95
M04_L94:
movzx ecx,word ptr [r12]
M04_L95:
movzx r14d,cx
mov r15d,r14d
mov [rsp+0B8],r12
mov r12d,r15d
M04_L96:
cmp r12d,20
je short M04_L97
cmp r12d,9
jl short M04_L98
cmp r12d,0D
jg short M04_L98
M04_L97:
test dil,2
jne near ptr M04_L111
M04_L98:
test dil,8
je near ptr M04_L107
test byte ptr [rsp+0CC],1
jne near ptr M04_L107
mov rdx,[rbp+20]
test rdx,rdx
jne short M04_L99
xor r9d,r9d
jmp short M04_L100
M04_L99:
add rdx,0C
mov [rsp+48],rdx
mov r9,[rsp+48]
M04_L100:
mov rcx,[rsp+0B8]
mov rdx,rsi
mov r8,r9
call qword ptr [7FFBDA7833A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor ecx,ecx
mov [rsp+48],rcx
test rax,rax
jne short M04_L104
mov rcx,[rbp+28]
test rcx,rcx
jne short M04_L101
xor r8d,r8d
jmp short M04_L102
M04_L101:
add rcx,0C
mov [rsp+40],rcx
mov r8,[rsp+40]
M04_L102:
mov rcx,[rsp+0B8]
mov rdx,rsi
call qword ptr [7FFBDA7833A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor ecx,ecx
mov [rsp+40],rcx
xor ecx,ecx
test rax,rax
sete cl
test [rsp+0D4],ecx
je short M04_L103
mov r14,[rsp+0B8]
cmp r14,rsi
jae short M04_L106
cmp word ptr [r14],2D
jne short M04_L105
lea rax,[r14+2]
mov [rsp+0B8],r14
M04_L103:
test rax,rax
je short M04_L107
mov byte ptr [rbx+8],1
M04_L104:
mov r12d,[rsp+0CC]
or r12d,1
jmp near ptr M04_L110
M04_L105:
mov [rsp+0B8],r14
jmp short M04_L103
M04_L106:
mov [rsp+0B8],r14
jmp short M04_L103
M04_L107:
cmp r12d,29
jne short M04_L109
mov r8d,[rsp+0CC]
test r8b,2
je short M04_L108
and r8d,0FFFFFFFD
mov [rsp+0CC],r8d
jmp short M04_L111
M04_L108:
mov [rsp+0CC],r8d
M04_L109:
test r13,r13
je near ptr M04_L114
add r13,0C
mov [rsp+38],r13
mov rdx,[rsp+38]
mov [rsp+30],rdx
mov rcx,[rsp+0B8]
mov rdx,rsi
mov r8,[rsp+30]
call qword ptr [7FFBDA7833A8]; System.Globalization.FormatProvider+Number.MatchChars(Char*, Char*, Char*)
xor edx,edx
mov [rsp+38],rdx
test rax,rax
je short M04_L114
xor r13d,r13d
mov r12d,[rsp+0CC]
M04_L110:
lea rcx,[rax-2]
mov r14,rcx
mov [rsp+0B8],r14
mov [rsp+0CC],r12d
M04_L111:
mov rcx,[rsp+0B8]
add rcx,2
mov r14,rcx
cmp r14,rsi
jb short M04_L112
xor edx,edx
jmp short M04_L113
M04_L112:
movzx edx,word ptr [r14]
M04_L113:
movzx r12d,dx
mov [rsp+0B8],r14
jmp near ptr M04_L96
M04_L114:
mov r8d,[rsp+0CC]
test r8b,2
jne short M04_L117
test r8b,8
jne short M04_L116
cmp byte ptr [rsp+150],0
jne short M04_L115
xor eax,eax
mov [rbx+4],eax
M04_L115:
test r8b,10
jne short M04_L116
mov byte ptr [rbx+8],0
M04_L116:
mov r15,[rsp+120]
mov rcx,[rsp+0B8]
mov [r15],rcx
mov eax,1
add rsp,0D8
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
M04_L117:
mov r15,[rsp+120]
mov rcx,[rsp+0B8]
mov [r15],rcx
xor eax,eax
add rsp,0D8
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
; Total bytes of code 3276 ; System.Numerics.BigNumber.NumberToBigInteger(BigNumberBuffer ByRef, System.Numerics.BigInteger ByRef)
push rbp
push rsi
sub rsp,48
lea rbp,[rsp+50]
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rbp-20],xmm4
xor eax,eax
mov [rbp-10],rax
mov [rbp-30],rsp
mov eax,[rcx+0C]
mov [rbp-18],eax
cmp dword ptr [rbp-18],7FFFFFFF
jne short M05_L00
xor eax,eax
mov [rdx],rax
mov [rdx+8],rax
mov eax,2
add rsp,48
pop rsi
pop rbp
ret
M05_L00:
cmp dword ptr [rbp-18],0
jge short M05_L01
xor eax,eax
mov [rdx],rax
mov [rdx+8],rax
mov eax,1
add rsp,48
pop rsi
pop rbp
ret
M05_L01:
mov r8,[rcx]
mov eax,[r8+1C]
add eax,[r8+18]
cmp eax,[7FFBDA709478]
jg short M05_L02
lea r8,[rbp-20]
call qword ptr [7FFBDA74F948]; System.Numerics.BigNumber.<NumberToBigInteger>g__Naive|14_0(BigNumberBuffer ByRef, System.Numerics.BigInteger ByRef, <>c__DisplayClass14_0 ByRef)
mov esi,eax
jmp short M05_L03
M05_L02:
lea r8,[rbp-20]
call qword ptr [7FFBDA74F978]
mov esi,eax
M05_L03:
cmp qword ptr [rbp-20],0
je short M05_L04
mov rcx,7FFBDA2A4E68
mov edx,22
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rcx,14A21801F08
mov rcx,[rcx]
mov rdx,[rbp-20]
xor r8d,r8d
cmp [rcx],ecx
call qword ptr [7FFBDA8F86F8]; System.Buffers.TlsOverPerCoreLockedStacksArrayPool`1[[System.Int32, System.Private.CoreLib]].Return(Int32[], Boolean)
M05_L04:
mov eax,esi
add rsp,48
pop rsi
pop rbp
ret
push rbp
push rsi
sub rsp,28
mov rbp,[rcx+20]
mov [rsp+20],rbp
lea rbp,[rbp+50]
cmp qword ptr [rbp-20],0
je short M05_L05
mov rcx,7FFBDA2A4E68
mov edx,22
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
mov rcx,14A21801F08
mov rcx,[rcx]
mov rdx,[rbp-20]
xor r8d,r8d
cmp [rcx],ecx
call qword ptr [7FFBDA8F86F8]; System.Buffers.TlsOverPerCoreLockedStacksArrayPool`1[[System.Int32, System.Private.CoreLib]].Return(Int32[], Boolean)
M05_L05:
nop
add rsp,28
pop rsi
pop rbp
ret
; Total bytes of code 284 DocsProfiling workflow for dotnet/runtime repository |
Tagging subscribers to this area: @dotnet/area-system-text-regularexpressions Issue Detailsnull
|
Commit range: 3ff80e9...4da62e4 Probably caused by #81267. cc @jakobbotsch |
Yep, definitely caused by #81267. This all comes from two if-conversions inside runtime/src/libraries/System.Private.CoreLib/src/System/SpanHelpers.Char.cs Lines 108 to 110 in 0202b24
G_M3489_IG16:
@@ -224,10 +224,9 @@ G_M3489_IG16:
cmp r15, rcx
je G_M3489_IG27
cmp r15, r12
- jle SHORT G_M3489_IG15
- mov r15, r12
+ cmovg r15, r12
jmp SHORT G_M3489_IG15
- ;; size=26 bbWeight=0 PerfScore 0.00
+ ;; size=25 bbWeight=0 PerfScore 0.00
G_M3489_IG17:
vpmovmskb eax, ymm0
;; size=4 bbWeight=0 PerfScore 0.00
@@ -335,41 +334,40 @@ G_M3489_IG28:
G_M3489_IG29:
mov rax, bword ptr [rsp+28H]
cmp r15, r12
+ cmovg r15, r12
mov bword ptr [rsp+28H], rax
- jle G_M3489_IG25
- mov r15, r12
jmp G_M3489_IG25
- ;; size=27 bbWeight=0 PerfScore 0.00
+ ;; size=22 bbWeight=0 PerfScore 0.00 We do try to avoid if-conversion inside loops, but the loop structure here is complicated so we probably do not recognize it (hence the low |
The BB weight approach does not detect unnatural loops. Fix dotnet#82106
The BB weight approach does not detect unnatural loops. Fix #82106
No description provided.
The text was updated successfully, but these errors were encountered: