-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Closed
Labels
area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMICLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMItenet-build-performanceImpacts build time: official, developer or CIImpacts build time: official, developer or CItenet-performancePerformance related issuePerformance related issue
Description
Run Information
| Architecture | x86 |
|---|---|
| OS | Windows 10.0.18362 |
| Baseline | 77de7840c7ad806cd5ad5dc9555ad3d3bed2a6e5 |
| Compare | 1771d63827387b49dcd8c33b95f1512f4f11e368 |
| Diff | Diff |
Regressions in System.Tests.Perf_Int64
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
|---|---|---|---|---|---|---|---|---|---|---|
| TryParseSpan - Duration of single invocation | 23.84 ns | 27.38 ns | 1.15 | 0.31 | False | Trace | Trace |
Repro
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Tests.Perf_Int64*'Details
Payloads
Histogram
System.Tests.Perf_Int64.TryParseSpan(value: "12345")
Description of detection logic
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 27.379723803084094 > 25.140698308278402.
IsChangePoint: Marked as a change because one of 10/25/2022 12:27:43 PM, 11/27/2022 4:37:47 PM, 12/6/2022 5:44:36 AM falls between 11/27/2022 4:37:47 PM and 12/6/2022 5:44:36 AM.
IsRegressionStdDev: Marked as regression because -7.496247945314253 (T) = (0 -29.569384362371032) / Math.Sqrt((2.560685666491774 / (11)) + (5.845016865811748 / (40))) is less than -2.0095752371279447 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (11) + (40) - 2, .025) and -0.18490875952436833 = (24.954988411293723 - 29.569384362371032) / 24.954988411293723 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.
```### Baseline Jit Disasm
```assembly
; System.Tests.Perf_Int64.TryParseSpan(System.String)
push ebp
mov ebp,esp
sub esp,8
xor eax,eax
mov [ebp-8],eax
mov [ebp-4],eax
test edx,edx
je short M00_L01
lea eax,[edx+8]
mov ecx,[edx+4]
M00_L00:
push ecx
push eax
call dword ptr ds:[0A6D18B8]; System.Globalization.NumberFormatInfo.get_CurrentInfo()
mov edx,eax
lea ecx,[ebp-8]
push ecx
mov ecx,7
call dword ptr ds:[866BBD0]; System.Number.TryParseInt64IntegerStyle(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, Int64 ByRef)
test eax,eax
sete al
movzx eax,al
mov esp,ebp
pop ebp
ret
M00_L01:
xor eax,eax
xor ecx,ecx
jmp short M00_L00
; Total bytes of code 67
; System.Globalization.NumberFormatInfo.get_CurrentInfo()
push ebp
mov ebp,esp
mov ecx,2C04D58
mov edx,24D
call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE
mov ecx,[eax+4]
test ecx,ecx
jne short M01_L00
mov ecx,ds:[6E212A4]
test ecx,ecx
jne short M01_L00
mov ecx,ds:[6E21294]
test ecx,ecx
je short M01_L03
M01_L00:
cmp byte ptr [ecx+31],0
jne short M01_L01
mov eax,[ecx+0C]
test eax,eax
je short M01_L01
pop ebp
ret
M01_L01:
mov edx,80348E0
mov eax,[ecx]
mov eax,[eax+30]
call dword ptr [eax]
mov edx,eax
mov eax,edx
test eax,eax
je short M01_L02
mov ecx,offset MT_System.Globalization.NumberFormatInfo
cmp [eax],ecx
jne short M01_L04
M01_L02:
pop ebp
ret
M01_L03:
call dword ptr ds:[8667030]
mov ecx,eax
jmp short M01_L00
M01_L04:
call dword ptr ds:[4C7B8B8]
int 3
; Total bytes of code 108; System.Number.TryParseInt64IntegerStyle(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, Int64 ByRef)
push ebp
mov ebp,esp
push edi
push esi
push ebx
sub esp,4C
mov esi,ecx
mov edi,[ebp+10]
test edi,edi
je short M02_L02
xor ebx,ebx
mov eax,[ebp+0C]
movzx eax,word ptr [eax]
test esi,1
je short M02_L00
cmp eax,20
je near ptr M02_L18
lea ecx,[eax-9]
cmp ecx,4
jbe near ptr M02_L18
M02_L00:
mov dword ptr [ebp-18],1
test esi,4
je short M02_L01
cmp byte ptr [edx+71],0
je near ptr M02_L21
cmp eax,2D
je near ptr M02_L19
cmp eax,2B
je near ptr M02_L20
M02_L01:
xor edx,edx
mov [ebp-1C],edx
xor edi,edi
xor edx,edx
lea ecx,[eax-30]
cmp ecx,9
jbe short M02_L06
M02_L02:
mov ebx,[ebp+8]
mov eax,ebx
xor edx,edx
mov [eax],edx
mov [eax+4],edx
mov eax,1
M02_L03:
lea esp,[ebp-0C]
pop ebx
pop esi
pop edi
pop ebp
ret 0C
M02_L04:
add eax,0FFFFFFD0
mov edx,eax
sar edx,1F
mov edi,eax
inc ebx
xor eax,eax
mov [ebp-20],eax
M02_L05:
cmp ebx,[ebp+10]
jae short M02_L08
mov ecx,[ebp+0C]
movzx ecx,word ptr [ecx+ebx*2]
mov [ebp-14],ecx
lea eax,[ecx-30]
cmp eax,9
ja short M02_L10
inc ebx
push edx
push edi
push 0
push 0A
call CORINFO_HELP_LMUL
mov edi,[ebp-14]
mov ecx,edi
sar edi,1F
add eax,ecx
adc edx,edi
mov edi,eax
sub edi,30
sbb edx,0
mov eax,edx
mov edx,[ebp-20]
inc edx
cmp edx,11
jge near ptr M02_L27
mov [ebp-20],edx
mov edx,eax
jmp short M02_L05
M02_L06:
cmp eax,30
jne short M02_L04
M02_L07:
inc ebx
cmp ebx,[ebp+10]
jb near ptr M02_L28
M02_L08:
push edx
push edi
mov edi,[ebp-18]
mov eax,edi
sar eax,1F
push eax
push edi
call CORINFO_HELP_LMUL
mov ebx,[ebp+8]
mov [ebx],eax
mov [ebx+4],edx
xor eax,eax
jmp near ptr M02_L03
M02_L09:
mov ebx,[ebp+8]
mov eax,ebx
xor edx,edx
mov [eax],edx
mov [eax+4],edx
mov eax,2
jmp near ptr M02_L03
M02_L10:
mov ecx,[ebp-14]
cmp ecx,20
je short M02_L11
add ecx,0FFFFFFF7
cmp ecx,4
setbe cl
movzx ecx,cl
test ecx,ecx
je short M02_L12
M02_L11:
test esi,2
mov [ebp-2C],edx
je near ptr M02_L02
mov esi,[ebp-18]
jmp short M02_L14
M02_L12:
mov [ebp-2C],edx
jmp short M02_L16
M02_L13:
cmp ebx,[ebp+10]
jae near ptr M02_L32
mov ecx,[ebp+0C]
movzx ecx,word ptr [ecx+ebx*2]
cmp ecx,20
je short M02_L14
add ecx,0FFFFFFF7
cmp ecx,4
setbe cl
movzx ecx,cl
test ecx,ecx
je short M02_L15
M02_L14:
inc ebx
cmp ebx,[ebp+10]
jl short M02_L13
M02_L15:
cmp ebx,[ebp+10]
mov [ebp-18],esi
jae short M02_L17
M02_L16:
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
mov ecx,ebx
call dword ptr ds:[866D288]
test eax,eax
mov eax,[ebp-2C]
jne near ptr M02_L31
jmp near ptr M02_L02
M02_L17:
mov eax,[ebp-2C]
jmp near ptr M02_L31
M02_L18:
inc ebx
cmp ebx,edi
jae near ptr M02_L02
mov eax,[ebp+0C]
movzx eax,word ptr [eax+ebx*2]
cmp eax,20
je short M02_L18
lea ecx,[eax-9]
cmp ecx,4
setbe cl
movzx ecx,cl
test ecx,ecx
jne short M02_L18
jmp near ptr M02_L00
M02_L19:
mov ecx,0FFFFFFFF
inc ebx
cmp ebx,edi
jae near ptr M02_L02
jmp near ptr M02_L25
M02_L20:
inc ebx
cmp ebx,edi
jae near ptr M02_L02
mov ecx,[ebp-18]
jmp near ptr M02_L25
M02_L21:
cmp byte ptr [edx+72],0
je short M02_L22
mov [ebp-14],eax
cmp eax,2D
mov eax,[ebp-14]
jne short M02_L22
mov ecx,0FFFFFFFF
inc ebx
cmp ebx,edi
mov [ebp-18],ecx
jae near ptr M02_L02
mov ecx,[ebp-18]
jmp near ptr M02_L25
M02_L22:
cmp ebx,edi
jbe short M02_L23
call dword ptr ds:[86C9A08]
int 3
M02_L23:
mov ecx,[ebp+0C]
lea ecx,[ecx+ebx*2]
sub edi,ebx
mov [ebp+0C],ecx
mov [ebp+10],edi
xor ebx,ebx
mov edi,[edx+10]
mov [ebp-48],edi
mov edx,[edx+14]
mov [ebp-4C],edx
test edi,edi
je short M02_L24
xor ecx,ecx
cmp dword ptr [edi+4],0
sete cl
test ecx,ecx
jne short M02_L24
mov ecx,[ebp+0C]
mov edx,[ebp+10]
mov [ebp-28],edx
lea edx,[edi+8]
mov edi,[edi+4]
cmp edi,[ebp-28]
jg short M02_L24
mov [ebp-14],eax
add edi,edi
push edi
call dword ptr ds:[801F120]
test eax,eax
mov eax,[ebp-14]
je short M02_L24
mov edi,[ebp-48]
mov ebx,[edi+4]
cmp ebx,[ebp+10]
mov [ebp-10],ebx
jae near ptr M02_L02
mov ecx,[ebp-18]
mov ebx,[ebp-10]
jmp near ptr M02_L25
M02_L24:
mov edx,[ebp-4C]
test edx,edx
je near ptr M02_L01
mov [ebp-4C],edx
cmp dword ptr [edx+4],0
sete dl
movzx edx,dl
test edx,edx
jne near ptr M02_L01
mov [ebp-10],ebx
mov edx,[ebp+0C]
mov edi,[ebp+10]
mov ebx,[ebp-4C]
add ebx,8
mov ecx,[ebp-4C]
mov ecx,[ecx+4]
cmp ecx,edi
mov [ebp-24],ecx
mov [ebp-50],ebx
jg short M02_L26
mov [ebp-14],eax
mov edi,[ebp-4C]
mov ebx,[ebp-24]
add ebx,ebx
push ebx
mov ecx,edx
mov edx,[ebp-50]
call dword ptr ds:[801F120]
test eax,eax
mov eax,[ebp-14]
mov ebx,[ebp-10]
je near ptr M02_L01
mov dword ptr [ebp-18],0FFFFFFFF
mov eax,[edi+4]
mov edi,eax
cmp edi,[ebp+10]
mov ebx,edi
mov ecx,[ebp-18]
jae near ptr M02_L02
M02_L25:
cmp ebx,[ebp+10]
jae near ptr M02_L32
mov eax,[ebp+0C]
movzx eax,word ptr [eax+ebx*2]
mov edi,eax
mov [ebp-18],ecx
mov eax,edi
jmp near ptr M02_L01
M02_L26:
mov ebx,[ebp-10]
jmp near ptr M02_L01
M02_L27:
cmp ebx,[ebp+10]
mov edx,eax
jae near ptr M02_L08
mov eax,[ebp+0C]
movzx eax,word ptr [eax+ebx*2]
mov [ebp-14],eax
lea ecx,[eax-30]
cmp ecx,9
ja near ptr M02_L10
inc ebx
cmp edi,0CCCCCCCD
mov ecx,edx
sbb ecx,0CCCCCCC
setge cl
movzx ecx,cl
mov [ebp-1C],ecx
push edx
push edi
push 0
push 0A
call CORINFO_HELP_LMUL
mov edi,[ebp-14]
mov ecx,edi
sar edi,1F
add eax,ecx
adc edx,edi
mov edi,eax
sub edi,30
sbb edx,0
mov eax,edx
mov edx,[ebp-18]
mov ecx,edx
shr ecx,1F
mov [ebp-54],ecx
xor ecx,ecx
mov [ebp-58],ecx
mov ecx,[ebp-54]
add ecx,0FFFFFFFF
mov [ebp-54],ecx
mov ecx,[ebp-58]
adc ecx,7FFFFFFF
mov [ebp-58],ecx
mov ecx,[ebp-54]
cmp ecx,edi
mov ecx,[ebp-58]
sbb ecx,eax
setb cl
movzx ecx,cl
or ecx,[ebp-1C]
movzx ecx,cl
mov [ebp-1C],ecx
cmp ebx,[ebp+10]
jae short M02_L31
jmp short M02_L30
M02_L28:
mov eax,[ebp+0C]
movzx eax,word ptr [eax+ebx*2]
cmp eax,30
je near ptr M02_L07
lea ecx,[eax-30]
cmp ecx,9
mov [ebp-14],eax
ja near ptr M02_L10
mov eax,[ebp-14]
jmp near ptr M02_L04
M02_L29:
mov edx,1
inc ebx
cmp ebx,[ebp+10]
mov [ebp-1C],edx
jae near ptr M02_L09
M02_L30:
cmp ebx,[ebp+10]
jae short M02_L32
mov ecx,[ebp+0C]
movzx ecx,word ptr [ecx+ebx*2]
lea edx,[ecx-30]
cmp edx,9
jbe short M02_L29
mov [ebp-14],ecx
mov edx,eax
jmp near ptr M02_L10
M02_L31:
cmp dword ptr [ebp-1C],0
jne near ptr M02_L09
mov edx,eax
jmp near ptr M02_L08
M02_L32:
call CORINFO_HELP_RNGCHKFAIL
int 3
; Total bytes of code 1117Compare Jit Disasm
; System.Tests.Perf_Int64.TryParseSpan(System.String)
push ebp
mov ebp,esp
sub esp,8
xor eax,eax
mov [ebp-8],eax
mov [ebp-4],eax
test edx,edx
je short M00_L01
lea eax,[edx+8]
mov ecx,[edx+4]
M00_L00:
push ecx
push eax
call dword ptr ds:[0A5418B8]; System.Globalization.NumberFormatInfo.get_CurrentInfo()
mov edx,eax
lea ecx,[ebp-8]
push ecx
mov ecx,7
call dword ptr ds:[847D000]; System.Number.TryParseInt64IntegerStyle(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, Int64 ByRef)
test eax,eax
sete al
movzx eax,al
mov esp,ebp
pop ebp
ret
M00_L01:
xor eax,eax
xor ecx,ecx
jmp short M00_L00
; Total bytes of code 67; System.Globalization.NumberFormatInfo.get_CurrentInfo()
push ebp
mov ebp,esp
mov ecx,3004D68
mov edx,24E
call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE
mov ecx,[eax+4]
test ecx,ecx
jne short M01_L00
mov ecx,ds:[6B812A4]
test ecx,ecx
jne short M01_L00
mov ecx,ds:[6B81294]
test ecx,ecx
je short M01_L03
M01_L00:
cmp byte ptr [ecx+31],0
jne short M01_L01
mov eax,[ecx+0C]
test eax,eax
je short M01_L01
pop ebp
ret
M01_L01:
mov edx,7E34860
mov eax,[ecx]
mov eax,[eax+30]
call dword ptr [eax]
mov edx,eax
mov eax,edx
test eax,eax
je short M01_L02
mov ecx,offset MT_System.Globalization.NumberFormatInfo
cmp [eax],ecx
jne short M01_L04
M01_L02:
pop ebp
ret
M01_L03:
call dword ptr ds:[8477030]
mov ecx,eax
jmp short M01_L00
M01_L04:
call dword ptr ds:[7DFB8B8]
int 3
; Total bytes of code 108; System.Number.TryParseInt64IntegerStyle(System.ReadOnlySpan`1<Char>, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo, Int64 ByRef)
push ebp
mov ebp,esp
push edi
push esi
push ebx
sub esp,4C
mov esi,ecx
mov edi,[ebp+10]
test edi,edi
je short M02_L02
xor ebx,ebx
mov eax,[ebp+0C]
movzx eax,word ptr [eax]
test esi,1
je short M02_L00
cmp eax,20
je near ptr M02_L18
lea ecx,[eax-9]
cmp ecx,4
jbe near ptr M02_L18
M02_L00:
mov dword ptr [ebp-18],1
test esi,4
je short M02_L01
cmp byte ptr [edx+71],0
je near ptr M02_L21
cmp eax,2D
je near ptr M02_L19
cmp eax,2B
je near ptr M02_L20
M02_L01:
xor edx,edx
mov [ebp-1C],edx
xor edi,edi
xor edx,edx
lea ecx,[eax-30]
cmp ecx,9
jbe short M02_L06
M02_L02:
mov ebx,[ebp+8]
mov eax,ebx
xor edx,edx
mov [eax],edx
mov [eax+4],edx
mov eax,1
M02_L03:
lea esp,[ebp-0C]
pop ebx
pop esi
pop edi
pop ebp
ret 0C
M02_L04:
add eax,0FFFFFFD0
mov edx,eax
sar edx,1F
mov edi,eax
inc ebx
xor eax,eax
mov [ebp-20],eax
M02_L05:
cmp ebx,[ebp+10]
jae short M02_L08
mov ecx,[ebp+0C]
movzx ecx,word ptr [ecx+ebx*2]
mov [ebp-14],ecx
lea eax,[ecx-30]
cmp eax,9
ja short M02_L10
inc ebx
push edx
push edi
push 0
push 0A
call CORINFO_HELP_LMUL
mov edi,[ebp-14]
mov ecx,edi
sar edi,1F
add eax,ecx
adc edx,edi
mov edi,eax
sub edi,30
sbb edx,0
mov eax,edx
mov edx,[ebp-20]
inc edx
cmp edx,11
jge near ptr M02_L27
mov [ebp-20],edx
mov edx,eax
jmp short M02_L05
M02_L06:
cmp eax,30
jne short M02_L04
M02_L07:
inc ebx
cmp ebx,[ebp+10]
jb near ptr M02_L28
M02_L08:
push edx
push edi
mov edi,[ebp-18]
mov eax,edi
sar eax,1F
push eax
push edi
call CORINFO_HELP_LMUL
mov ebx,[ebp+8]
mov [ebx],eax
mov [ebx+4],edx
xor eax,eax
jmp near ptr M02_L03
M02_L09:
mov ebx,[ebp+8]
mov eax,ebx
xor edx,edx
mov [eax],edx
mov [eax+4],edx
mov eax,2
jmp near ptr M02_L03
M02_L10:
mov ecx,[ebp-14]
cmp ecx,20
je short M02_L11
add ecx,0FFFFFFF7
cmp ecx,4
setbe cl
movzx ecx,cl
test ecx,ecx
je short M02_L12
M02_L11:
test esi,2
mov [ebp-2C],edx
je near ptr M02_L02
mov esi,[ebp-18]
jmp short M02_L14
M02_L12:
mov [ebp-2C],edx
jmp short M02_L16
M02_L13:
cmp ebx,[ebp+10]
jae near ptr M02_L32
mov ecx,[ebp+0C]
movzx ecx,word ptr [ecx+ebx*2]
cmp ecx,20
je short M02_L14
add ecx,0FFFFFFF7
cmp ecx,4
setbe cl
movzx ecx,cl
test ecx,ecx
je short M02_L15
M02_L14:
inc ebx
cmp ebx,[ebp+10]
jl short M02_L13
M02_L15:
cmp ebx,[ebp+10]
mov [ebp-18],esi
jae short M02_L17
M02_L16:
push dword ptr [ebp+10]
push dword ptr [ebp+0C]
mov ecx,ebx
call dword ptr ds:[847D2B8]
test eax,eax
mov eax,[ebp-2C]
jne near ptr M02_L31
jmp near ptr M02_L02
M02_L17:
mov eax,[ebp-2C]
jmp near ptr M02_L31
M02_L18:
inc ebx
cmp ebx,edi
jae near ptr M02_L02
mov eax,[ebp+0C]
movzx eax,word ptr [eax+ebx*2]
cmp eax,20
je short M02_L18
lea ecx,[eax-9]
cmp ecx,4
setbe cl
movzx ecx,cl
test ecx,ecx
jne short M02_L18
jmp near ptr M02_L00
M02_L19:
mov ecx,0FFFFFFFF
inc ebx
cmp ebx,edi
jae near ptr M02_L02
jmp near ptr M02_L25
M02_L20:
inc ebx
cmp ebx,edi
jae near ptr M02_L02
mov ecx,[ebp-18]
jmp near ptr M02_L25
M02_L21:
cmp byte ptr [edx+72],0
je short M02_L22
mov [ebp-14],eax
cmp eax,2D
mov eax,[ebp-14]
jne short M02_L22
mov ecx,0FFFFFFFF
inc ebx
cmp ebx,edi
mov [ebp-18],ecx
jae near ptr M02_L02
mov ecx,[ebp-18]
jmp near ptr M02_L25
M02_L22:
cmp ebx,edi
jbe short M02_L23
call dword ptr ds:[84D9A08]
int 3
M02_L23:
mov ecx,[ebp+0C]
lea ecx,[ecx+ebx*2]
sub edi,ebx
mov [ebp+0C],ecx
mov [ebp+10],edi
xor ebx,ebx
mov edi,[edx+10]
mov [ebp-48],edi
mov edx,[edx+14]
mov [ebp-4C],edx
test edi,edi
je short M02_L24
xor ecx,ecx
cmp dword ptr [edi+4],0
sete cl
test ecx,ecx
jne short M02_L24
mov ecx,[ebp+0C]
mov edx,[ebp+10]
mov [ebp-28],edx
lea edx,[edi+8]
mov edi,[edi+4]
cmp edi,[ebp-28]
jg short M02_L24
mov [ebp-14],eax
add edi,edi
push edi
call dword ptr ds:[7DEF120]
test eax,eax
mov eax,[ebp-14]
je short M02_L24
mov edi,[ebp-48]
mov ebx,[edi+4]
cmp ebx,[ebp+10]
mov [ebp-10],ebx
jae near ptr M02_L02
mov ecx,[ebp-18]
mov ebx,[ebp-10]
jmp near ptr M02_L25
M02_L24:
mov edx,[ebp-4C]
test edx,edx
je near ptr M02_L01
mov [ebp-4C],edx
cmp dword ptr [edx+4],0
sete dl
movzx edx,dl
test edx,edx
jne near ptr M02_L01
mov [ebp-10],ebx
mov edx,[ebp+0C]
mov edi,[ebp+10]
mov ebx,[ebp-4C]
add ebx,8
mov ecx,[ebp-4C]
mov ecx,[ecx+4]
cmp ecx,edi
mov [ebp-24],ecx
mov [ebp-50],ebx
jg short M02_L26
mov [ebp-14],eax
mov edi,[ebp-4C]
mov ebx,[ebp-24]
add ebx,ebx
push ebx
mov ecx,edx
mov edx,[ebp-50]
call dword ptr ds:[7DEF120]
test eax,eax
mov eax,[ebp-14]
mov ebx,[ebp-10]
je near ptr M02_L01
mov dword ptr [ebp-18],0FFFFFFFF
mov eax,[edi+4]
mov edi,eax
cmp edi,[ebp+10]
mov ebx,edi
mov ecx,[ebp-18]
jae near ptr M02_L02
M02_L25:
cmp ebx,[ebp+10]
jae near ptr M02_L32
mov eax,[ebp+0C]
movzx eax,word ptr [eax+ebx*2]
mov edi,eax
mov [ebp-18],ecx
mov eax,edi
jmp near ptr M02_L01
M02_L26:
mov ebx,[ebp-10]
jmp near ptr M02_L01
M02_L27:
cmp ebx,[ebp+10]
mov edx,eax
jae near ptr M02_L08
mov eax,[ebp+0C]
movzx eax,word ptr [eax+ebx*2]
mov [ebp-14],eax
lea ecx,[eax-30]
cmp ecx,9
ja near ptr M02_L10
inc ebx
cmp edi,0CCCCCCCD
mov ecx,edx
sbb ecx,0CCCCCCC
setge cl
movzx ecx,cl
mov [ebp-1C],ecx
push edx
push edi
push 0
push 0A
call CORINFO_HELP_LMUL
mov edi,[ebp-14]
mov ecx,edi
sar edi,1F
add eax,ecx
adc edx,edi
mov edi,eax
sub edi,30
sbb edx,0
mov eax,edx
mov edx,[ebp-18]
mov ecx,edx
shr ecx,1F
mov [ebp-54],ecx
xor ecx,ecx
mov [ebp-58],ecx
mov ecx,[ebp-54]
add ecx,0FFFFFFFF
mov [ebp-54],ecx
mov ecx,[ebp-58]
adc ecx,7FFFFFFF
mov [ebp-58],ecx
mov ecx,[ebp-54]
cmp ecx,edi
mov ecx,[ebp-58]
sbb ecx,eax
setb cl
movzx ecx,cl
or ecx,[ebp-1C]
movzx ecx,cl
mov [ebp-1C],ecx
cmp ebx,[ebp+10]
jae short M02_L31
jmp short M02_L30
M02_L28:
mov eax,[ebp+0C]
movzx eax,word ptr [eax+ebx*2]
cmp eax,30
je near ptr M02_L07
lea ecx,[eax-30]
cmp ecx,9
mov [ebp-14],eax
ja near ptr M02_L10
mov eax,[ebp-14]
jmp near ptr M02_L04
M02_L29:
mov edx,1
inc ebx
cmp ebx,[ebp+10]
mov [ebp-1C],edx
jae near ptr M02_L09
M02_L30:
cmp ebx,[ebp+10]
jae short M02_L32
mov ecx,[ebp+0C]
movzx ecx,word ptr [ecx+ebx*2]
lea edx,[ecx-30]
cmp edx,9
jbe short M02_L29
mov [ebp-14],ecx
mov edx,eax
jmp near ptr M02_L10
M02_L31:
cmp dword ptr [ebp-1C],0
jne near ptr M02_L09
mov edx,eax
jmp near ptr M02_L08
M02_L32:
call CORINFO_HELP_RNGCHKFAIL
int 3
; Total bytes of code 1117Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Metadata
Metadata
Assignees
Labels
area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMICLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMItenet-build-performanceImpacts build time: official, developer or CIImpacts build time: official, developer or CItenet-performancePerformance related issuePerformance related issue
