singledef-spill
153 lines
; Assembly listing for method System.Collections.Generic.GenericArraySortHelper`2[__Canon,__Canon][System.__Canon,System.__Canon]:InsertionSort(System.Span`1[__Canon],System.Span`1[__Canon])
; Assembly listing for method System.Collections.Generic.GenericArraySortHelper`2[__Canon,__Canon][System.__Canon,System.__Canon]:InsertionSort(System.Span`1[__Canon],System.Span`1[__Canon])
; Emitting BLENDED_CODE for Pentium 4 - Windows
; Emitting BLENDED_CODE for Pentium 4 - Windows
; optimized code
; optimized code
; ebp based frame
; ebp based frame
; fully interruptible
; fully interruptible
; No matching PGO data
; No matching PGO data
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
; Final local variable assignments
;
;
; V00 arg0 [V00,T15] ( 2, 5 ) struct ( 8) [ebp+10H] do-not-enreg[SF] ld-addr-op
; V00 arg0 [V00,T15] ( 2, 5 ) struct ( 8) [ebp+10H] do-not-enreg[SF] ld-addr-op single-def
; V01 arg1 [V01,T13] ( 2, 8 ) struct ( 8) [ebp+08H] do-not-enreg[SF] ld-addr-op
; V01 arg1 [V01,T13] ( 2, 8 ) struct ( 8) [ebp+08H] do-not-enreg[SF] ld-addr-op single-def
; V02 TypeCtx [V02,T10] ( 4, 19 ) int -> [ebp-10H]
; V02 TypeCtx [V02,T10] ( 4, 19 ) int -> [ebp-10H] single-def
; V03 loc0 [V03,T09] ( 7, 49 ) int -> edi
; V03 loc0 [V03,T09] ( 7, 49 ) int -> edi
; V04 loc1 [V04,T03] ( 4, 52 ) ref -> [ebp-20H] ld-addr-op class-hnd
; V04 loc1 [V04,T03] ( 4, 52 ) ref -> [ebp-20H] ld-addr-op class-hnd spill-single-def
; V05 loc2 [V05,T12] ( 2, 20 ) ref -> [ebp-24H] class-hnd
; V05 loc2 [V05,T12] ( 2, 20 ) ref -> [ebp-24H] class-hnd
; V06 loc3 [V06,T00] ( 16,188 ) int -> edi
; V06 loc3 [V06,T00] ( 16,188 ) int -> edi
;* V07 loc4 [V07,T06] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
;* V07 loc4 [V07,T06] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
; V08 tmp1 [V08,T01] ( 2, 64 ) byref -> esi "Inlining Arg"
; V08 tmp1 [V08,T01] ( 2, 64 ) byref -> esi "Inlining Arg"
;* V09 tmp2 [V09 ] ( 0, 0 ) int -> zero-ref "VirtualCall with runtime lookup"
;* V09 tmp2 [V09 ] ( 0, 0 ) int -> zero-ref "VirtualCall with runtime lookup"
; V10 cse0 [V10,T14] ( 3, 18 ) int -> [ebp-14H] "CSE - moderate"
; V10 cse0 [V10,T14] ( 3, 18 ) int -> [ebp-14H] spill-single-def "CSE - moderate"
; V11 cse1 [V11,T04] ( 6, 50 ) int -> ebx "CSE - aggressive"
; V11 cse1 [V11,T04] ( 6, 50 ) int -> ebx "CSE - aggressive"
; V12 cse2 [V12,T02] ( 6, 56 ) byref -> [ebp-28H] "CSE - aggressive"
; V12 cse2 [V12,T02] ( 6, 56 ) byref -> [ebp-28H] spill-single-def "CSE - aggressive"
; V13 cse3 [V13,T08] ( 5, 40 ) int -> [ebp-18H] "CSE - moderate"
; V13 cse3 [V13,T08] ( 5, 40 ) int -> [ebp-18H] spill-single-def "CSE - moderate"
; V14 cse4 [V14,T07] ( 5, 40 ) byref -> [ebp-2CH] "CSE - moderate"
; V14 cse4 [V14,T07] ( 5, 40 ) byref -> [ebp-2CH] spill-single-def "CSE - moderate"
; V15 cse5 [V15,T05] ( 6, 72 ) int -> esi "CSE - moderate"
; V15 cse5 [V15,T05] ( 6, 72 ) int -> esi "CSE - moderate"
; V16 cse6 [V16,T11] ( 3, 24 ) int -> [ebp-1CH] "CSE - moderate"
; V16 cse6 [V16,T11] ( 3, 24 ) int -> [ebp-1CH] spill-single-def "CSE - moderate"
; TEMP_01 byref -> [ebp-0x30]
;
;
; Lcl frame size = 36
; Lcl frame size = 32
G_M29105_IG01:
G_M29105_IG01:
push ebp
push ebp
mov ebp, esp
mov ebp, esp
push edi
push edi
push esi
push esi
push ebx
push ebx
sub esp, 36
sub esp, 32
xor eax, eax
mov dword ptr [ebp-30H], eax
mov dword ptr [ebp-10H], ecx
mov dword ptr [ebp-10H], ecx
;; bbWeight=1 PerfScore 6.75
;; bbWeight=1 PerfScore 5.50
G_M29105_IG02:
G_M29105_IG02:
xor edi, edi
xor edi, edi
mov ebx, dword ptr [ebp+14H]
mov ebx, dword ptr [ebp+14H]
lea eax, [ebx-1]
lea eax, [ebx-1]
mov dword ptr [ebp-14H], eax
mov dword ptr [ebp-14H], eax
test eax, eax
test eax, eax
jle G_M29105_IG08
jle G_M29105_IG09
;; bbWeight=1 PerfScore 4.00
;; bbWeight=1 PerfScore 4.00
G_M29105_IG03:
G_M29105_IG03:
lea ecx, [edi+1]
lea ecx, [edi+1]
mov dword ptr [ebp-1CH], ecx
mov edx, bword ptr [ebp+10H]
mov edx, bword ptr [ebp+10H]
mov bword ptr [ebp-28H], edx
mov eax, gword ptr [edx+4*edi+4]
mov eax, gword ptr [edx+4*edi+4]
mov gword ptr [ebp-20H], eax
mov esi, dword ptr [ebp+0CH]
mov esi, dword ptr [ebp+0CH]
mov dword ptr [ebp-1CH], ecx
mov dword ptr [ebp-18H], esi
mov dword ptr [ebp-18H], esi
cmp ecx, esi
cmp ecx, esi
jae G_M29105_IG09
jae G_M29105_IG11
mov ecx, bword ptr [ebp+08H]
mov ecx, bword ptr [ebp+08H]
mov bword ptr [ebp-2CH], ecx
mov bword ptr [ebp-2CH], ecx
mov esi, gword ptr [ecx+4*edi+4]
mov esi, gword ptr [ecx+4*edi+4]
mov gword ptr [ebp-24H], esi
mov gword ptr [ebp-24H], esi
jmp SHORT G_M29105_IG05
jmp SHORT G_M29105_IG05
;; bbWeight=4 PerfScore 59.00
;; bbWeight=4 PerfScore 67.00
G_M29105_IG04:
G_M29105_IG04:
lea esi, [edi+1]
lea esi, [edi+1]
cmp esi, ebx
cmp esi, ebx
jae G_M29105_IG09
jae G_M29105_IG11
mov bword ptr [ebp-28H], edx
lea edx, bword ptr [edx+4*edi+4]
lea edx, bword ptr [edx+4*edi+4]
mov bword ptr [ebp-30H], edx
cmp edi, ebx
cmp edi, ebx
jae G_M29105_IG09
jae G_M29105_IG11
mov edx, bword ptr [ebp-28H]
mov ecx, bword ptr [ebp-28H]
mov ecx, gword ptr [edx+4*edi]
mov eax, gword ptr [ecx+4*edi]
mov edx, bword ptr [ebp-30H]
call CORINFO_HELP_CHECKED_ASSIGN_REF_EAX
call CORINFO_HELP_CHECKED_ASSIGN_REF_ECX
mov eax, dword ptr [ebp-18H]
mov ecx, dword ptr [ebp-18H]
cmp esi, eax
cmp esi, ecx
jae G_M29105_IG11
jae G_M29105_IG09
mov esi, bword ptr [ebp-2CH]
mov esi, bword ptr [ebp-2CH]
lea edx, bword ptr [esi+4*edi+4]
lea edx, bword ptr [esi+4*edi+4]
cmp edi, ecx
cmp edi, eax
jae G_M29105_IG09
jae SHORT G_M29105_IG11
mov bword ptr [ebp-2CH], esi
mov esi, gword ptr [esi+4*edi]
mov esi, gword ptr [esi+4*edi]
call CORINFO_HELP_CHECKED_ASSIGN_REF_ESI
call CORINFO_HELP_CHECKED_ASSIGN_REF_ESI
dec edi
dec edi
mov dword ptr [ebp-18H], ecx
mov edx, ecx
mov edx, bword ptr [ebp-28H]
mov eax, gword ptr [ebp-20H]
;; bbWeight=8 PerfScore 182.00
;; bbWeight=8 PerfScore 144.00
G_M29105_IG05:
G_M29105_IG05:
test edi, edi
test edi, edi
jl SHORT G_M29105_IG07
jl SHORT G_M29105_IG08
;; bbWeight=32 PerfScore 40.00
;; bbWeight=32 PerfScore 40.00
G_M29105_IG06:
G_M29105_IG06:
test eax, eax
test eax, eax
je SHORT G_M29105_IG04
je SHORT G_M29105_IG10
cmp edi, ebx
cmp edi, ebx
jae SHORT G_M29105_IG09
jae SHORT G_M29105_IG11
mov bword ptr [ebp-28H], edx
lea esi, bword ptr [edx+4*edi]
lea esi, bword ptr [edx+4*edi]
mov edx, gword ptr [esi]
mov edx, gword ptr [esi]
mov gword ptr [ebp-20H], eax
mov ecx, eax
mov ecx, eax
mov eax, dword ptr [ebp-10H]
mov eax, dword ptr [ebp-10H]
nop
nop
call dword ptr [eax]
call dword ptr [eax]
test eax, eax
test eax, eax
mov eax, gword ptr [ebp-20H]
mov edx, bword ptr [ebp-28H]
mov edx, bword ptr [ebp-28H]
jl G_M29105_IG04
jl SHORT G_M29105_IG04
;; bbWeight=16 PerfScore 236.00
;; bbWeight=16 PerfScore 188.00
G_M29105_IG07:
G_M29105_IG07:
mov eax, gword ptr [ebp-20H]
;; bbWeight=8 PerfScore 8.00
G_M29105_IG08:
lea esi, [edi+1]
lea esi, [edi+1]
cmp esi, ebx
cmp esi, ebx
jae SHORT G_M29105_IG09
jae SHORT G_M29105_IG11
lea edx, bword ptr [edx+4*edi+4]
lea edx, bword ptr [edx+4*edi+4]
call CORINFO_HELP_CHECKED_ASSIGN_REF_EAX
call CORINFO_HELP_CHECKED_ASSIGN_REF_EAX
cmp esi, dword ptr [ebp-18H]
cmp esi, dword ptr [ebp-18H]
jae SHORT G_M29105_IG09
jae SHORT G_M29105_IG11
mov ecx, bword ptr [ebp-2CH]
mov ecx, bword ptr [ebp-2CH]
lea edx, bword ptr [ecx+4*edi+4]
lea edx, bword ptr [ecx+4*edi+4]
mov esi, gword ptr [ebp-24H]
mov esi, gword ptr [ebp-24H]
call CORINFO_HELP_CHECKED_ASSIGN_REF_ESI
call CORINFO_HELP_CHECKED_ASSIGN_REF_ESI
mov edi, dword ptr [ebp-1CH]
mov edi, dword ptr [ebp-1CH]
mov esi, dword ptr [ebp-14H]
mov esi, dword ptr [ebp-14H]
cmp edi, esi
cmp edi, esi
mov dword ptr [ebp-14H], esi
jl G_M29105_IG03
jl G_M29105_IG03
;; bbWeight=16 PerfScore 224.00
;; bbWeight=16 PerfScore 208.00
G_M29105_IG08:
G_M29105_IG09:
lea esp, [ebp-0CH]
lea esp, [ebp-0CH]
pop ebx
pop ebx
pop esi
pop esi
pop edi
pop edi
pop ebp
pop ebp
ret 16
ret 16
;; bbWeight=1 PerfScore 4.50
;; bbWeight=1 PerfScore 4.50
G_M29105_IG09:
G_M29105_IG10:
jmp G_M29105_IG04
;; bbWeight=8 PerfScore 16.00
G_M29105_IG11:
call CORINFO_HELP_RNGCHKFAIL
call CORINFO_HELP_RNGCHKFAIL
int3
int3
;; bbWeight=0 PerfScore 0.00
;; bbWeight=0 PerfScore 0.00
; Total bytes of code 281, prolog size 17, PerfScore 784.35, instruction count 95, allocated bytes for code 281, SpillCount 16 SpillCountWt 11000.000000, CopyReg 0 CopyRegWt 0.000000, ResolutionMovs 5 ResolutionMovsWt 6400.000000, SplitEdges 0 SplitEdgesWt 0.000000 (MethodHash=5b5f8e4e) for method System.Collections.Generic.GenericArraySortHelper`2[__Canon,__Canon][System.__Canon,System.__Canon]:InsertionSort(System.Span`1[__Canon],System.Span`1[__Canon])
; Total bytes of code 257, prolog size 12, PerfScore 710.70, instruction count 89, allocated bytes for code 257, SpillCount 15 SpillCountWt 11000.000000, CopyReg 0 CopyRegWt 0.000000, ResolutionMovs 5 ResolutionMovsWt 5600.000000, SplitEdges 2 SplitEdgesWt 3200.000000 (MethodHash=5b5f8e4e) for method System.Collections.Generic.GenericArraySortHelper`2[__Canon,__Canon][System.__Canon,System.__Canon]:InsertionSort(System.Span`1[__Canon],System.Span`1[__Canon])
; ============================================================
; ============================================================
Using jit(E:\lsra\ideas\singledef\base4\clrjit_win_x86_x86.dll) with input (E:\spmi\mch\de9a9a0e-c66a-4d97-a268-92a31f99d919.windows.x86\benchmarks.run.windows.x86.checked.mch)
Using jit(E:\lsra\ideas\singledef\diff4\clrjit_win_x86_x86.dll) with input (E:\spmi\mch\de9a9a0e-c66a-4d97-a268-92a31f99d919.windows.x86\benchmarks.run.windows.x86.checked.mch)
indexCount=1 (4368)
indexCount=1 (4368)
Jit startup took 51.935000ms
Jit startup took 7.847900ms
Loaded 1 Jitted 1 FailedCompile 0 Excluded 0 Missing 0
Loaded 1 Jitted 1 FailedCompile 0 Excluded 0 Missing 0
Total time: 61.778800ms
Total time: 19.630900ms