-
-
Save amanasifkhalid/a658c5dc527fca980519c3d32c6e108b to your computer and use it in GitHub Desktop.
fgMoveBlocksToHottestSuccessors
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Diffs are based on <span style="color:#1460aa">2,392,449</span> contexts (<span style="color:#1460aa">909,256</span> MinOpts, <span style="color:#1460aa">1,483,193</span> FullOpts). | |
<span style="color:#d35400">MISSED</span> contexts: base: <span style="color:#d35400">21,553 (0.89%)</span>, diff: <span style="color:#d35400">21,550 (0.89%)</span> | |
Base JIT options: JitDoReversePostOrderLayout=1 | |
Diff JIT options: JitDoReversePostOrderLayout=1 | |
<details> | |
<summary>Overall (<span style="color:red">+49,652</span> bytes)</summary> | |
<div style="margin-left:1em"> | |
|Collection|Base size (bytes)|Diff size (bytes)|PerfScore in Diffs | |
|---|--:|--:|--:| | |
|benchmarks.run.windows.x64.checked.mch|8,694,075|<span style="color:red">+1,452</span>|<span style="color:green">-1.51%</span>| | |
|benchmarks.run_pgo.windows.x64.checked.mch|33,030,853|<span style="color:green">-837</span>|<span style="color:green">-1.03%</span>| | |
|benchmarks.run_tiered.windows.x64.checked.mch|12,332,841|<span style="color:red">+335</span>|<span style="color:green">-5.51%</span>| | |
|coreclr_tests.run.windows.x64.checked.mch|377,929,762|<span style="color:red">+4,747</span>|<span style="color:green">-2.53%</span>| | |
|libraries.crossgen2.windows.x64.checked.mch|45,245,204|<span style="color:red">+3,283</span>|<span style="color:green">-1.73%</span>| | |
|libraries.pmi.windows.x64.checked.mch|61,977,235|<span style="color:red">+10,681</span>|<span style="color:green">-1.37%</span>| | |
|libraries_tests.run.windows.x64.Release.mch|286,313,977|<span style="color:red">+14,554</span>|<span style="color:green">-1.48%</span>| | |
|libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch|137,322,765|<span style="color:red">+13,881</span>|<span style="color:green">-1.04%</span>| | |
|realworld.run.windows.x64.checked.mch|13,582,906|<span style="color:red">+1,786</span>|<span style="color:green">-2.82%</span>| | |
|smoke_tests.nativeaot.windows.x64.checked.mch|4,998,638|<span style="color:green">-230</span>|<span style="color:green">-1.98%</span>| | |
</div></details> | |
<details> | |
<summary>FullOpts (<span style="color:red">+49,652</span> bytes)</summary> | |
<div style="margin-left:1em"> | |
|Collection|Base size (bytes)|Diff size (bytes)|PerfScore in Diffs | |
|---|--:|--:|--:| | |
|benchmarks.run.windows.x64.checked.mch|8,693,653|<span style="color:red">+1,452</span>|<span style="color:green">-1.51%</span>| | |
|benchmarks.run_pgo.windows.x64.checked.mch|19,477,415|<span style="color:green">-837</span>|<span style="color:green">-1.03%</span>| | |
|benchmarks.run_tiered.windows.x64.checked.mch|3,071,369|<span style="color:red">+335</span>|<span style="color:green">-5.51%</span>| | |
|coreclr_tests.run.windows.x64.checked.mch|118,449,159|<span style="color:red">+4,747</span>|<span style="color:green">-2.53%</span>| | |
|libraries.crossgen2.windows.x64.checked.mch|45,243,499|<span style="color:red">+3,283</span>|<span style="color:green">-1.73%</span>| | |
|libraries.pmi.windows.x64.checked.mch|61,863,734|<span style="color:red">+10,681</span>|<span style="color:green">-1.37%</span>| | |
|libraries_tests.run.windows.x64.Release.mch|110,319,552|<span style="color:red">+14,554</span>|<span style="color:green">-1.48%</span>| | |
|libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch|127,024,215|<span style="color:red">+13,881</span>|<span style="color:green">-1.04%</span>| | |
|realworld.run.windows.x64.checked.mch|13,169,653|<span style="color:red">+1,786</span>|<span style="color:green">-2.82%</span>| | |
|smoke_tests.nativeaot.windows.x64.checked.mch|4,997,591|<span style="color:green">-230</span>|<span style="color:green">-1.98%</span>| | |
</div></details> | |
<details> | |
<summary>Example diffs</summary> | |
<div style="margin-left:1em"> | |
<details> | |
<summary>benchmarks.run.windows.x64.checked.mch</summary> | |
<div style="margin-left:1em"> | |
<details> | |
<summary><span style="color:green">-8</span> (<span style="color:green">-6.67%</span>) : 6308.dasm - Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark:ForEach_String():int:this (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -61,60 +61,53 @@ G_M4100_IG05: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, b | |
mov rcx, rdx | |
mov rdx, r8 | |
;; size=11 bbWeight=0.50 PerfScore 0.50 | |
-G_M4100_IG06: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref | |
+G_M4100_IG06: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs -[r8] | |
xor r8d, r8d | |
- ;; size=3 bbWeight=1 PerfScore 0.25 | |
-G_M4100_IG07: ; bbWeight=8, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
+ jmp SHORT G_M4100_IG08 | |
+ ;; size=5 bbWeight=1 PerfScore 2.25 | |
+G_M4100_IG07: ; bbWeight=2, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref | |
+ add eax, dword ptr [rcx+0x08] | |
+ ;; size=3 bbWeight=2 PerfScore 6.00 | |
+G_M4100_IG08: ; bbWeight=8, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
test r8d, r8d | |
- jl SHORT G_M4100_IG14 | |
+ jl SHORT G_M4100_IG13 | |
;; size=5 bbWeight=8 PerfScore 10.00 | |
-G_M4100_IG08: ; bbWeight=32, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
+G_M4100_IG09: ; bbWeight=32, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
test rdx, rdx | |
jne SHORT G_M4100_IG11 | |
;; size=5 bbWeight=32 PerfScore 40.00 | |
-G_M4100_IG09: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
+G_M4100_IG10: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
mov r8d, -1 | |
test rcx, rcx | |
- je SHORT G_M4100_IG14 | |
- ;; size=11 bbWeight=4 PerfScore 6.00 | |
-G_M4100_IG10: ; bbWeight=2, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
- mov r9, rcx | |
- ; gcrRegs +[r9] | |
- mov ecx, r8d | |
- ; gcrRegs -[rcx] | |
- mov r8, r9 | |
- ; gcrRegs +[r8] | |
+ jne SHORT G_M4100_IG07 | |
jmp SHORT G_M4100_IG13 | |
- ;; size=11 bbWeight=2 PerfScore 5.50 | |
+ ;; size=13 bbWeight=4 PerfScore 14.00 | |
G_M4100_IG11: ; bbWeight=32, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz | |
- ; gcrRegs -[r8-r9] | |
+ ; gcrRegs -[rcx] | |
mov ecx, dword ptr [rdx+0x08] | |
cmp ecx, r8d | |
- jbe SHORT G_M4100_IG14 | |
+ jbe SHORT G_M4100_IG13 | |
;; size=8 bbWeight=32 PerfScore 104.00 | |
-G_M4100_IG12: ; bbWeight=16, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref | |
+G_M4100_IG12: ; bbWeight=16, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz | |
lea ecx, [r8+0x01] | |
mov r8d, r8d | |
mov r8, gword ptr [rdx+8*r8+0x10] | |
; gcrRegs +[r8] | |
- ;; size=12 bbWeight=16 PerfScore 44.00 | |
-G_M4100_IG13: ; bbWeight=2, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz | |
- add eax, dword ptr [r8+0x08] | |
mov r9d, ecx | |
mov rcx, r8 | |
; gcrRegs +[rcx] | |
mov r8d, r9d | |
; gcrRegs -[r8] | |
jmp SHORT G_M4100_IG07 | |
- ;; size=15 bbWeight=2 PerfScore 11.50 | |
-G_M4100_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc | |
+ ;; size=23 bbWeight=16 PerfScore 88.00 | |
+G_M4100_IG13: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc | |
; gcrRegs -[rcx rdx] | |
add rsp, 40 | |
ret | |
;; size=5 bbWeight=16 PerfScore 20.00 | |
-; Total bytes of code 120, prolog size 4, PerfScore 247.69, instruction count 39, allocated bytes for code 120 (MethodHash=fc7aeffb) for method Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark:ForEach_String():int:this (FullOpts) | |
+; Total bytes of code 112, prolog size 4, PerfScore 290.69, instruction count 37, allocated bytes for code 112 (MethodHash=fc7aeffb) for method Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark:ForEach_String():int:this (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:green">-8</span> (<span style="color:green">-6.67%</span>) : 9164.dasm - Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark:ForEach_Array():int:this (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -61,60 +61,53 @@ G_M34088_IG05: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, | |
mov rcx, rdx | |
mov rdx, r8 | |
;; size=11 bbWeight=0.50 PerfScore 0.50 | |
-G_M34088_IG06: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref | |
+G_M34088_IG06: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs -[r8] | |
xor r8d, r8d | |
- ;; size=3 bbWeight=1 PerfScore 0.25 | |
-G_M34088_IG07: ; bbWeight=8, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
+ jmp SHORT G_M34088_IG08 | |
+ ;; size=5 bbWeight=1 PerfScore 2.25 | |
+G_M34088_IG07: ; bbWeight=2, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref | |
+ add eax, dword ptr [rcx+0x08] | |
+ ;; size=3 bbWeight=2 PerfScore 6.00 | |
+G_M34088_IG08: ; bbWeight=8, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
test r8d, r8d | |
- jl SHORT G_M34088_IG14 | |
+ jl SHORT G_M34088_IG13 | |
;; size=5 bbWeight=8 PerfScore 10.00 | |
-G_M34088_IG08: ; bbWeight=32, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
+G_M34088_IG09: ; bbWeight=32, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
test rdx, rdx | |
jne SHORT G_M34088_IG11 | |
;; size=5 bbWeight=32 PerfScore 40.00 | |
-G_M34088_IG09: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
+G_M34088_IG10: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
mov r8d, -1 | |
test rcx, rcx | |
- je SHORT G_M34088_IG14 | |
- ;; size=11 bbWeight=4 PerfScore 6.00 | |
-G_M34088_IG10: ; bbWeight=2, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
- mov r9, rcx | |
- ; gcrRegs +[r9] | |
- mov ecx, r8d | |
- ; gcrRegs -[rcx] | |
- mov r8, r9 | |
- ; gcrRegs +[r8] | |
+ jne SHORT G_M34088_IG07 | |
jmp SHORT G_M34088_IG13 | |
- ;; size=11 bbWeight=2 PerfScore 5.50 | |
+ ;; size=13 bbWeight=4 PerfScore 14.00 | |
G_M34088_IG11: ; bbWeight=32, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz | |
- ; gcrRegs -[r8-r9] | |
+ ; gcrRegs -[rcx] | |
mov ecx, dword ptr [rdx+0x08] | |
cmp ecx, r8d | |
- jbe SHORT G_M34088_IG14 | |
+ jbe SHORT G_M34088_IG13 | |
;; size=8 bbWeight=32 PerfScore 104.00 | |
-G_M34088_IG12: ; bbWeight=16, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref | |
+G_M34088_IG12: ; bbWeight=16, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz | |
lea ecx, [r8+0x01] | |
mov r8d, r8d | |
mov r8, gword ptr [rdx+8*r8+0x10] | |
; gcrRegs +[r8] | |
- ;; size=12 bbWeight=16 PerfScore 44.00 | |
-G_M34088_IG13: ; bbWeight=2, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz | |
- add eax, dword ptr [r8+0x08] | |
mov r9d, ecx | |
mov rcx, r8 | |
; gcrRegs +[rcx] | |
mov r8d, r9d | |
; gcrRegs -[r8] | |
jmp SHORT G_M34088_IG07 | |
- ;; size=15 bbWeight=2 PerfScore 11.50 | |
-G_M34088_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc | |
+ ;; size=23 bbWeight=16 PerfScore 88.00 | |
+G_M34088_IG13: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc | |
; gcrRegs -[rcx rdx] | |
add rsp, 40 | |
ret | |
;; size=5 bbWeight=16 PerfScore 20.00 | |
-; Total bytes of code 120, prolog size 4, PerfScore 247.69, instruction count 39, allocated bytes for code 120 (MethodHash=59967ad7) for method Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark:ForEach_Array():int:this (FullOpts) | |
+; Total bytes of code 112, prolog size 4, PerfScore 290.69, instruction count 37, allocated bytes for code 112 (MethodHash=59967ad7) for method Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark:ForEach_Array():int:this (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:green">-19</span> (<span style="color:green">-6.01%</span>) : 26498.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -15,7 +15,7 @@ | |
; V04 loc2 [V04,T11] ( 6, 4 ) int -> registers | |
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> | |
;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref | |
-; V07 loc5 [V07,T10] ( 5, 3.50) int -> r14 | |
+; V07 loc5 [V07,T10] ( 5, 3.50) int -> rbp | |
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" | |
;* V09 tmp1 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> | |
; V10 tmp2 [V10,T06] ( 3, 6 ) int -> rsi "Inlining Arg" | |
@@ -32,8 +32,8 @@ | |
;* V21 tmp13 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" | |
;* V22 tmp14 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
;* V23 tmp15 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
-; V24 tmp16 [V24,T12] ( 4, 4 ) int -> rsi "Inlining Arg" | |
-; V25 tmp17 [V25,T08] ( 5, 5 ) int -> rbp "Inlining Arg" | |
+; V24 tmp16 [V24,T12] ( 4, 4 ) int -> r14 "Inlining Arg" | |
+; V25 tmp17 [V25,T08] ( 5, 5 ) int -> rsi "Inlining Arg" | |
;* V26 tmp18 [V26 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" | |
; V27 tmp19 [V27,T17] ( 4, 2 ) int -> rcx single-def "Inline stloc first use temp" | |
; V28 tmp20 [V28,T15] ( 3, 3 ) ref -> r9 class-hnd single-def "impAppendStmt" <int[]> | |
@@ -92,47 +92,52 @@ G_M14182_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp | |
; gcrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
;; size=19 bbWeight=0.50 PerfScore 1.75 | |
-G_M14182_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref | |
+G_M14182_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
xor r14d, r14d | |
- ;; size=3 bbWeight=1 PerfScore 0.25 | |
-G_M14182_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
+ jmp SHORT G_M14182_IG06 | |
+ ;; size=5 bbWeight=1 PerfScore 2.25 | |
+G_M14182_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref | |
+ inc r14d | |
+ ;; size=3 bbWeight=4 PerfScore 1.00 | |
+G_M14182_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
cmp r14d, esi | |
- jae SHORT G_M14182_IG09 | |
+ jae SHORT G_M14182_IG10 | |
;; size=5 bbWeight=8 PerfScore 10.00 | |
-G_M14182_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
+G_M14182_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
movzx rcx, word ptr [rbp+2*r14] | |
mov eax, ecx | |
sar eax, 3 | |
cmp eax, 16 | |
- jae SHORT G_M14182_IG08 | |
+ jae SHORT G_M14182_IG09 | |
;; size=16 bbWeight=4 PerfScore 16.00 | |
-G_M14182_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
+G_M14182_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
mov eax, eax | |
mov rdx, 0xD1FFAB1E ; static handle | |
movzx rax, byte ptr [rax+rdx] | |
and ecx, 7 | |
bt eax, ecx | |
- jae SHORT G_M14182_IG09 | |
- jmp G_M14182_IG17 | |
- ;; size=29 bbWeight=2 PerfScore 12.50 | |
-G_M14182_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref | |
+ jae SHORT G_M14182_IG10 | |
+ jmp SHORT G_M14182_IG05 | |
+ ;; size=26 bbWeight=2 PerfScore 12.50 | |
+G_M14182_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
call [System.Globalization.CharUnicodeInfo:GetUnicodeCategoryNoBoundsChecks(uint):int] | |
; gcr arg pop 0 | |
mov ecx, 1 | |
shlx eax, ecx, eax | |
test eax, 0xD1FFAB1E | |
- jne G_M14182_IG17 | |
- ;; size=27 bbWeight=2 PerfScore 10.00 | |
-G_M14182_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+ jne SHORT G_M14182_IG05 | |
+ ;; size=23 bbWeight=2 PerfScore 10.00 | |
+G_M14182_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
; byrRegs -[rbp] | |
- test r14d, r14d | |
- jg SHORT G_M14182_IG12 | |
- ;; size=5 bbWeight=1 PerfScore 1.25 | |
-G_M14182_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
+ mov ebp, r14d | |
+ test ebp, ebp | |
+ jg SHORT G_M14182_IG13 | |
+ ;; size=7 bbWeight=1 PerfScore 1.50 | |
+G_M14182_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rbx] | |
xor eax, eax | |
;; size=2 bbWeight=0.50 PerfScore 0.12 | |
-G_M14182_IG11: ; bbWeight=0.50, epilog, nogc, extend | |
+G_M14182_IG12: ; bbWeight=0.50, epilog, nogc, extend | |
add rsp, 32 | |
pop rbx | |
pop rbp | |
@@ -141,12 +146,12 @@ G_M14182_IG11: ; bbWeight=0.50, epilog, nogc, extend | |
pop r14 | |
ret | |
;; size=11 bbWeight=0.50 PerfScore 1.88 | |
-G_M14182_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz | |
+G_M14182_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz | |
; gcrRegs +[rbx] | |
- cmp r14d, esi | |
- ja G_M14182_IG18 | |
- sub esi, r14d | |
- jns SHORT G_M14182_IG13 | |
+ cmp ebp, esi | |
+ ja SHORT G_M14182_IG18 | |
+ sub esi, ebp | |
+ jns SHORT G_M14182_IG14 | |
mov rdx, 0xD1FFAB1E | |
; gcrRegs +[rdx] | |
mov rcx, rdx | |
@@ -154,27 +159,27 @@ G_M14182_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 | |
call [<unknown method>] | |
; gcrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
- ;; size=33 bbWeight=0.50 PerfScore 3.00 | |
-G_M14182_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
- add r14d, edi | |
- mov dword ptr [rbx+0x4C], r14d | |
- mov ebp, edi | |
- mov esi, r14d | |
- cmp esi, ebp | |
- jge SHORT G_M14182_IG14 | |
- mov esi, edi | |
- mov ebp, r14d | |
- ;; size=21 bbWeight=0.50 PerfScore 1.75 | |
+ ;; size=27 bbWeight=0.50 PerfScore 3.00 | |
G_M14182_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+ add ebp, edi | |
+ mov dword ptr [rbx+0x4C], ebp | |
+ mov esi, edi | |
+ mov r14d, ebp | |
+ cmp r14d, esi | |
+ jge SHORT G_M14182_IG15 | |
+ mov r14d, edi | |
+ mov esi, ebp | |
+ ;; size=20 bbWeight=0.50 PerfScore 1.75 | |
+G_M14182_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
cmp dword ptr [rbx+0x58], 0 | |
- jne SHORT G_M14182_IG15 | |
+ jne SHORT G_M14182_IG16 | |
mov rcx, rbx | |
; gcrRegs +[rcx] | |
call [System.Text.RegularExpressions.RegexRunner:DoubleCrawl():this] | |
; gcrRegs -[rcx] | |
; gcr arg pop 0 | |
;; size=15 bbWeight=0.50 PerfScore 3.62 | |
-G_M14182_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+G_M14182_IG16: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
mov r9, gword ptr [rbx+0x20] | |
; gcrRegs +[r9] | |
mov ecx, dword ptr [rbx+0x58] | |
@@ -184,12 +189,12 @@ G_M14182_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, | |
jae SHORT G_M14182_IG19 | |
xor r8d, r8d | |
mov dword ptr [r9+4*rcx+0x10], r8d | |
- mov r9d, esi | |
+ mov r9d, r14d | |
; gcrRegs -[r9] | |
- sub r9d, ebp | |
+ sub r9d, esi | |
mov rcx, gword ptr [rbx+0x28] | |
; gcrRegs +[rcx] | |
- mov r8d, ebp | |
+ mov r8d, esi | |
xor edx, edx | |
cmp dword ptr [rcx], ecx | |
call [<unknown method>] | |
@@ -197,7 +202,7 @@ G_M14182_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, | |
; gcr arg pop 0 | |
mov eax, 1 | |
;; size=54 bbWeight=0.50 PerfScore 9.88 | |
-G_M14182_IG16: ; bbWeight=0.50, epilog, nogc, extend | |
+G_M14182_IG17: ; bbWeight=0.50, epilog, nogc, extend | |
add rsp, 32 | |
pop rbx | |
pop rbp | |
@@ -206,16 +211,7 @@ G_M14182_IG16: ; bbWeight=0.50, epilog, nogc, extend | |
pop r14 | |
ret | |
;; size=11 bbWeight=0.50 PerfScore 1.88 | |
-G_M14182_IG17: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, gcvars, byref | |
- ; gcrRegs +[rbx] | |
- ; byrRegs +[rbp] | |
- lea eax, [r14+0x01] | |
- mov r14d, eax | |
- jmp G_M14182_IG05 | |
- ;; size=12 bbWeight=4 PerfScore 11.00 | |
-G_M14182_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[rbx] | |
- ; byrRegs -[rbp] | |
+G_M14182_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref | |
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] | |
; gcr arg pop 0 | |
int3 | |
@@ -226,7 +222,7 @@ G_M14182_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
int3 | |
;; size=6 bbWeight=0 PerfScore 0.00 | |
-; Total bytes of code 316, prolog size 13, PerfScore 99.62, instruction count 98, allocated bytes for code 316 (MethodHash=fe54c899) for method System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts) | |
+; Total bytes of code 297, prolog size 13, PerfScore 91.88, instruction count 98, allocated bytes for code 297 (MethodHash=fe54c899) for method System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+19</span> (<span style="color:red">+6.21%</span>) : 24042.dasm - System.Collections.IterateForEach`1[System.__Canon]:FrozenDictionary():System.__Canon:this (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -35,10 +35,10 @@ | |
; V24 tmp19 [V24,T03] ( 3, 6 ) ref -> rax single-def "argument with side effect" | |
; V25 PSPSym [V25,T11] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym" | |
;* V26 cse0 [V26,T12] ( 0, 0 ) long -> zero-ref hoist "CSE #02: aggressive" | |
-; V27 cse1 [V27,T10] ( 5, 2.20) long -> rax multi-def "CSE #01: aggressive" | |
-;* V28 rat0 [V28,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" | |
+; V27 cse1 [V27,T10] ( 6, 3.20) long -> rax multi-def "CSE #01: aggressive" | |
+; V28 rat0 [V28,T06] ( 2, 4 ) long -> rdx "Spilling to split statement for tree" | |
;* V29 rat1 [V29,T09] ( 0, 0 ) long -> zero-ref "runtime lookup" | |
-;* V30 rat2 [V30,T04] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" | |
+; V30 rat2 [V30,T04] ( 2, 4 ) long -> rdx "fgMakeTemp is creating a new local variable" | |
; V31 rat3 [V31,T05] ( 3, 5.60) long -> r8 "fgMakeTemp is creating a new local variable" | |
; V32 rat4 [V32,T13] ( 3, 0 ) long -> rax "Spilling to split statement for tree" | |
; V33 rat5 [V33,T14] ( 3, 0 ) long -> r8 "fgMakeTemp is creating a new local variable" | |
@@ -75,41 +75,20 @@ G_M50380_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=000 | |
; gcr arg pop 0 | |
nop | |
;; size=27 bbWeight=1 PerfScore 10.25 | |
-G_M50380_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+G_M50380_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
mov rcx, gword ptr [rbp+0x10] | |
; gcrRegs +[rcx] | |
mov rax, qword ptr [rcx] | |
- ;; size=7 bbWeight=1 PerfScore 3.00 | |
-G_M50380_IG04: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
- ; gcrRegs -[rcx] | |
- mov edx, dword ptr [rbp-0x18] | |
- inc edx | |
- mov dword ptr [rbp-0x18], edx | |
- mov edx, dword ptr [rbp-0x18] | |
- mov r8, gword ptr [rbp-0x28] | |
- ; gcrRegs +[r8] | |
- cmp edx, dword ptr [r8+0x08] | |
- jb SHORT G_M50380_IG06 | |
- ;; size=21 bbWeight=8 PerfScore 66.00 | |
-G_M50380_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
- ; gcrRegs -[r8] | |
- mov rdx, gword ptr [rbp-0x28] | |
- ; gcrRegs +[rdx] | |
- mov edx, dword ptr [rdx+0x08] | |
- ; gcrRegs -[rdx] | |
- mov dword ptr [rbp-0x18], edx | |
- jmp SHORT G_M50380_IG10 | |
- ;; size=12 bbWeight=4 PerfScore 24.00 | |
-G_M50380_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
- ; gcrRegs -[rbx] | |
- mov edx, dword ptr [rbp-0x18] | |
- mov r8, gword ptr [rbp-0x28] | |
- ; gcrRegs +[r8] | |
- cmp edx, dword ptr [r8+0x08] | |
- jae SHORT G_M50380_IG08 | |
- ;; size=13 bbWeight=4 PerfScore 24.00 | |
-G_M50380_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
- ; gcrRegs -[r8] | |
+ mov rdx, rax | |
+ mov rdx, qword ptr [rdx+0x38] | |
+ mov rdx, qword ptr [rdx] | |
+ mov rdx, qword ptr [rdx+0x20] | |
+ test rdx, rdx | |
+ jne SHORT G_M50380_IG05 | |
+ jmp SHORT G_M50380_IG05 | |
+ ;; size=28 bbWeight=1 PerfScore 12.50 | |
+G_M50380_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
+ ; gcrRegs -[rcx rbx] | |
mov rdx, gword ptr [rbp-0x28] | |
; gcrRegs +[rdx] | |
mov edx, dword ptr [rdx+0x08] | |
@@ -127,10 +106,37 @@ G_M50380_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
mov r8d, dword ptr [rbp-0x18] | |
mov rbx, gword ptr [rdx+8*r8+0x10] | |
; gcrRegs +[rbx] | |
- jmp SHORT G_M50380_IG04 | |
- ;; size=39 bbWeight=2 PerfScore 36.00 | |
+ ;; size=37 bbWeight=2 PerfScore 32.00 | |
+G_M50380_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+ ; gcrRegs -[rdx] | |
+ mov edx, dword ptr [rbp-0x18] | |
+ inc edx | |
+ mov dword ptr [rbp-0x18], edx | |
+ mov edx, dword ptr [rbp-0x18] | |
+ mov r8, gword ptr [rbp-0x28] | |
+ ; gcrRegs +[r8] | |
+ cmp edx, dword ptr [r8+0x08] | |
+ jb SHORT G_M50380_IG07 | |
+ ;; size=21 bbWeight=8 PerfScore 66.00 | |
+G_M50380_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+ ; gcrRegs -[r8] | |
+ mov rdx, gword ptr [rbp-0x28] | |
+ ; gcrRegs +[rdx] | |
+ mov edx, dword ptr [rdx+0x08] | |
+ ; gcrRegs -[rdx] | |
+ mov dword ptr [rbp-0x18], edx | |
+ jmp SHORT G_M50380_IG10 | |
+ ;; size=12 bbWeight=4 PerfScore 24.00 | |
+G_M50380_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
+ ; gcrRegs -[rbx] | |
+ mov edx, dword ptr [rbp-0x18] | |
+ mov r8, gword ptr [rbp-0x28] | |
+ ; gcrRegs +[r8] | |
+ cmp edx, dword ptr [r8+0x08] | |
+ jb SHORT G_M50380_IG04 | |
+ ;; size=13 bbWeight=4 PerfScore 24.00 | |
G_M50380_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[rdx rbx] | |
+ ; gcrRegs -[r8] | |
call [System.Collections.ThrowHelper:ThrowInvalidOperationException()] | |
; gcr arg pop 0 | |
int3 | |
@@ -212,7 +218,7 @@ G_M50380_IG19: ; bbWeight=0, funclet epilog, nogc, extend | |
ret | |
;; size=7 bbWeight=0 PerfScore 0.00 | |
-; Total bytes of code 306, prolog size 38, PerfScore 187.78, instruction count 94, allocated bytes for code 306 (MethodHash=b4293b33) for method System.Collections.IterateForEach`1[System.__Canon]:FrozenDictionary():System.__Canon:this (FullOpts) | |
+; Total bytes of code 325, prolog size 38, PerfScore 193.28, instruction count 100, allocated bytes for code 325 (MethodHash=b4293b33) for method System.Collections.IterateForEach`1[System.__Canon]:FrozenDictionary():System.__Canon:this (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+19</span> (<span style="color:red">+6.57%</span>) : 7923.dasm - System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -24,10 +24,10 @@ | |
; V13 tmp8 [V13,T02] ( 3, 6 ) ref -> rax single-def "argument with side effect" | |
; V14 PSPSym [V14,T10] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym" | |
;* V15 cse0 [V15,T11] ( 0, 0 ) long -> zero-ref hoist "CSE #02: aggressive" | |
-; V16 cse1 [V16,T09] ( 5, 2.20) long -> rax multi-def "CSE #01: aggressive" | |
-;* V17 rat0 [V17,T05] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" | |
+; V16 cse1 [V16,T09] ( 6, 3.20) long -> rax multi-def "CSE #01: aggressive" | |
+; V17 rat0 [V17,T05] ( 2, 4 ) long -> rdx "Spilling to split statement for tree" | |
;* V18 rat1 [V18,T08] ( 0, 0 ) long -> zero-ref "runtime lookup" | |
-;* V19 rat2 [V19,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" | |
+; V19 rat2 [V19,T03] ( 2, 4 ) long -> rdx "fgMakeTemp is creating a new local variable" | |
; V20 rat3 [V20,T04] ( 3, 5.60) long -> r8 "fgMakeTemp is creating a new local variable" | |
; V21 rat4 [V21,T12] ( 3, 0 ) long -> rax "Spilling to split statement for tree" | |
; V22 rat5 [V22,T13] ( 3, 0 ) long -> r8 "fgMakeTemp is creating a new local variable" | |
@@ -63,41 +63,20 @@ G_M17622_IG02: ; bbWeight=1, gcVars=0000000000000002 {V00}, gcrefRegs=000 | |
; gcr arg pop 0 | |
nop | |
;; size=27 bbWeight=1 PerfScore 10.25 | |
-G_M17622_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+G_M17622_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
mov rcx, gword ptr [rbp+0x10] | |
; gcrRegs +[rcx] | |
mov rax, qword ptr [rcx] | |
- ;; size=7 bbWeight=1 PerfScore 3.00 | |
-G_M17622_IG04: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
- ; gcrRegs -[rcx] | |
- mov edx, dword ptr [rbp-0x18] | |
- inc edx | |
- mov dword ptr [rbp-0x18], edx | |
- mov edx, dword ptr [rbp-0x18] | |
- mov r8, gword ptr [rbp-0x20] | |
- ; gcrRegs +[r8] | |
- cmp edx, dword ptr [r8+0x08] | |
- jb SHORT G_M17622_IG06 | |
- ;; size=21 bbWeight=8 PerfScore 66.00 | |
-G_M17622_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
- ; gcrRegs -[r8] | |
- mov rdx, gword ptr [rbp-0x20] | |
- ; gcrRegs +[rdx] | |
- mov edx, dword ptr [rdx+0x08] | |
- ; gcrRegs -[rdx] | |
- mov dword ptr [rbp-0x18], edx | |
- jmp SHORT G_M17622_IG10 | |
- ;; size=12 bbWeight=4 PerfScore 24.00 | |
-G_M17622_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
- ; gcrRegs -[rbx] | |
- mov edx, dword ptr [rbp-0x18] | |
- mov r8, gword ptr [rbp-0x20] | |
- ; gcrRegs +[r8] | |
- cmp edx, dword ptr [r8+0x08] | |
- jae SHORT G_M17622_IG08 | |
- ;; size=13 bbWeight=4 PerfScore 24.00 | |
-G_M17622_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
- ; gcrRegs -[r8] | |
+ mov rdx, rax | |
+ mov rdx, qword ptr [rdx+0x38] | |
+ mov rdx, qword ptr [rdx] | |
+ mov rdx, qword ptr [rdx+0x20] | |
+ test rdx, rdx | |
+ jne SHORT G_M17622_IG05 | |
+ jmp SHORT G_M17622_IG05 | |
+ ;; size=28 bbWeight=1 PerfScore 12.50 | |
+G_M17622_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
+ ; gcrRegs -[rcx rbx] | |
mov rdx, gword ptr [rbp-0x20] | |
; gcrRegs +[rdx] | |
mov edx, dword ptr [rdx+0x08] | |
@@ -109,10 +88,37 @@ G_M17622_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
mov r8d, dword ptr [rbp-0x18] | |
mov rbx, gword ptr [rdx+8*r8+0x10] | |
; gcrRegs +[rbx] | |
- jmp SHORT G_M17622_IG04 | |
- ;; size=27 bbWeight=2 PerfScore 24.00 | |
+ ;; size=25 bbWeight=2 PerfScore 20.00 | |
+G_M17622_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+ ; gcrRegs -[rdx] | |
+ mov edx, dword ptr [rbp-0x18] | |
+ inc edx | |
+ mov dword ptr [rbp-0x18], edx | |
+ mov edx, dword ptr [rbp-0x18] | |
+ mov r8, gword ptr [rbp-0x20] | |
+ ; gcrRegs +[r8] | |
+ cmp edx, dword ptr [r8+0x08] | |
+ jb SHORT G_M17622_IG07 | |
+ ;; size=21 bbWeight=8 PerfScore 66.00 | |
+G_M17622_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+ ; gcrRegs -[r8] | |
+ mov rdx, gword ptr [rbp-0x20] | |
+ ; gcrRegs +[rdx] | |
+ mov edx, dword ptr [rdx+0x08] | |
+ ; gcrRegs -[rdx] | |
+ mov dword ptr [rbp-0x18], edx | |
+ jmp SHORT G_M17622_IG10 | |
+ ;; size=12 bbWeight=4 PerfScore 24.00 | |
+G_M17622_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
+ ; gcrRegs -[rbx] | |
+ mov edx, dword ptr [rbp-0x18] | |
+ mov r8, gword ptr [rbp-0x20] | |
+ ; gcrRegs +[r8] | |
+ cmp edx, dword ptr [r8+0x08] | |
+ jb SHORT G_M17622_IG04 | |
+ ;; size=13 bbWeight=4 PerfScore 24.00 | |
G_M17622_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[rdx rbx] | |
+ ; gcrRegs -[r8] | |
call [System.Collections.ThrowHelper:ThrowInvalidOperationException()] | |
; gcr arg pop 0 | |
int3 | |
@@ -194,7 +200,7 @@ G_M17622_IG19: ; bbWeight=0, funclet epilog, nogc, extend | |
ret | |
;; size=7 bbWeight=0 PerfScore 0.00 | |
-; Total bytes of code 289, prolog size 33, PerfScore 174.45, instruction count 89, allocated bytes for code 289 (MethodHash=5937bb29) for method System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (FullOpts) | |
+; Total bytes of code 308, prolog size 33, PerfScore 179.95, instruction count 95, allocated bytes for code 308 (MethodHash=5937bb29) for method System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+21</span> (<span style="color:red">+7.55%</span>) : 28000.dasm - System.Collections.IterateForEach`1[System.__Canon]:List():System.__Canon:this (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -8,23 +8,23 @@ | |
; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data | |
; Final local variable assignments | |
; | |
-; V00 this [V00,T06] ( 5, 4 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Collections.IterateForEach`1[System.__Canon]> | |
-; V01 loc0 [V01,T07] ( 3, 6 ) ref -> rbx ld-addr-op class-hnd <System.__Canon> | |
+; V00 this [V00,T05] ( 6, 5 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Collections.IterateForEach`1[System.__Canon]> | |
+; V01 loc0 [V01,T11] ( 3, 4 ) ref -> rbx ld-addr-op class-hnd <System.__Canon> | |
; V02 loc1 [V02,T15] ( 2, 2 ) ref -> rdx class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]> | |
-; V03 loc2 [V03 ] ( 17, 57 ) struct (24) [rbp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.__Canon]> | |
-; V04 loc3 [V04,T04] ( 2, 8 ) ref -> rbx class-hnd <System.__Canon> | |
+; V03 loc2 [V03 ] ( 17, 55 ) struct (24) [rbp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.__Canon]> | |
+; V04 loc3 [V04,T13] ( 2, 4 ) ref -> rbx class-hnd <System.__Canon> | |
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" | |
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" | |
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" | |
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" | |
-; V09 tmp4 [V09,T12] ( 6, 4 ) long -> rax "Indirect call through function pointer" | |
+; V09 tmp4 [V09,T10] ( 6, 4 ) long -> rax "Indirect call through function pointer" | |
;* V10 tmp5 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.__Canon]> | |
;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" | |
-;* V12 tmp7 [V12,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" | |
+;* V12 tmp7 [V12,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" | |
; V13 tmp8 [V13,T00] ( 4, 24 ) ref -> rdx class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.__Canon]> | |
;* V14 tmp9 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" | |
; V15 tmp10 [V15 ] ( 4, 10 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V03._list (fldOffset=0x0)" P-DEP | |
-; V16 tmp11 [V16 ] ( 6, 14 ) ref -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x8)" P-DEP | |
+; V16 tmp11 [V16 ] ( 6, 12 ) ref -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x8)" P-DEP | |
; V17 tmp12 [V17 ] ( 9, 26 ) int -> [rbp-0x18] do-not-enreg[X] addr-exposed "field V03._index (fldOffset=0x10)" P-DEP | |
; V18 tmp13 [V18 ] ( 4, 10 ) int -> [rbp-0x14] do-not-enreg[X] addr-exposed "field V03._version (fldOffset=0x14)" P-DEP | |
; V19 tmp14 [V19,T14] ( 3, 3 ) ref -> rdx single-def "field V10._list (fldOffset=0x0)" P-INDEP | |
@@ -36,11 +36,11 @@ | |
;* V25 cse0 [V25,T20] ( 0, 0 ) long -> zero-ref hoist "CSE #02: aggressive" | |
; V26 cse1 [V26,T03] ( 3, 12 ) int -> rax "CSE #04: aggressive" | |
; V27 cse2 [V27,T02] ( 2, 16 ) int -> rax "CSE #03: aggressive" | |
-;* V28 rat0 [V28,T10] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" | |
-;* V29 rat1 [V29,T13] ( 0, 0 ) long -> zero-ref "runtime lookup" | |
-;* V30 rat2 [V30,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" | |
-; V31 rat3 [V31,T11] ( 3, 4.40) long -> rdx "Spilling to split statement for tree" | |
-; V32 rat4 [V32,T09] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable" | |
+; V28 rat0 [V28,T08] ( 2, 4 ) long -> rdx "Spilling to split statement for tree" | |
+;* V29 rat1 [V29,T12] ( 0, 0 ) long -> zero-ref "runtime lookup" | |
+; V30 rat2 [V30,T06] ( 2, 4 ) long -> rdx "fgMakeTemp is creating a new local variable" | |
+; V31 rat3 [V31,T09] ( 3, 4.40) long -> rdx "Spilling to split statement for tree" | |
+; V32 rat4 [V32,T07] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable" | |
; V33 rat5 [V33,T21] ( 3, 0 ) long -> rdx "Spilling to split statement for tree" | |
; V34 rat6 [V34,T22] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable" | |
; | |
@@ -60,7 +60,7 @@ G_M22044_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
mov gword ptr [rbp+0x10], rcx | |
; GC ptr vars +{V00} | |
;; size=38 bbWeight=1 PerfScore 9.33 | |
-G_M22044_IG02: ; bbWeight=1, gcVars=0000000000000040 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref | |
+G_M22044_IG02: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref | |
; gcrRegs +[rcx] | |
xor rbx, rbx | |
; gcrRegs +[rbx] | |
@@ -76,29 +76,43 @@ G_M22044_IG03: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, | |
mov dword ptr [rbp-0x18], edx | |
mov dword ptr [rbp-0x14], eax | |
;; size=6 bbWeight=1 PerfScore 2.00 | |
-G_M22044_IG04: ; bbWeight=8, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz | |
+G_M22044_IG04: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz | |
+ mov rdx, qword ptr [rcx] | |
+ mov rdx, qword ptr [rdx+0x38] | |
+ mov rdx, qword ptr [rdx] | |
+ mov rdx, qword ptr [rdx+0x20] | |
+ test rdx, rdx | |
+ jne SHORT G_M22044_IG06 | |
+ jmp SHORT G_M22044_IG06 | |
+ ;; size=21 bbWeight=1 PerfScore 11.25 | |
+G_M22044_IG05: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref | |
+ ; gcrRegs -[rbx] | |
+ mov rbx, gword ptr [rbp-0x20] | |
+ ; gcrRegs +[rbx] | |
+ ;; size=4 bbWeight=2 PerfScore 2.00 | |
+G_M22044_IG06: ; bbWeight=8, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz | |
mov rdx, gword ptr [rbp-0x28] | |
; gcrRegs +[rdx] | |
mov eax, dword ptr [rdx+0x14] | |
cmp dword ptr [rbp-0x14], eax | |
- jne SHORT G_M22044_IG07 | |
+ jne SHORT G_M22044_IG09 | |
;; size=12 bbWeight=8 PerfScore 48.00 | |
-G_M22044_IG05: ; bbWeight=4, gcrefRegs=000E {rcx rdx rbx}, byrefRegs=0000 {}, byref, isz | |
+G_M22044_IG07: ; bbWeight=4, gcrefRegs=000E {rcx rdx rbx}, byrefRegs=0000 {}, byref, isz | |
mov eax, dword ptr [rdx+0x10] | |
cmp dword ptr [rbp-0x18], eax | |
- jb SHORT G_M22044_IG06 | |
+ jb SHORT G_M22044_IG08 | |
inc eax | |
mov dword ptr [rbp-0x18], eax | |
xor rdx, rdx | |
mov gword ptr [rbp-0x20], rdx | |
- jmp SHORT G_M22044_IG09 | |
+ jmp SHORT G_M22044_IG11 | |
;; size=21 bbWeight=4 PerfScore 38.00 | |
-G_M22044_IG06: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
+G_M22044_IG08: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs -[rbx] | |
mov rdx, gword ptr [rdx+0x08] | |
mov eax, dword ptr [rdx+0x08] | |
cmp dword ptr [rbp-0x18], eax | |
- jae SHORT G_M22044_IG08 | |
+ jae SHORT G_M22044_IG10 | |
mov eax, dword ptr [rbp-0x18] | |
mov rdx, gword ptr [rdx+8*rax+0x10] | |
mov gword ptr [rbp-0x20], rdx | |
@@ -106,54 +120,52 @@ G_M22044_IG06: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, | |
; gcrRegs -[rdx] | |
inc edx | |
mov dword ptr [rbp-0x18], edx | |
- mov rbx, gword ptr [rbp-0x20] | |
- ; gcrRegs +[rbx] | |
- jmp SHORT G_M22044_IG04 | |
- ;; size=38 bbWeight=4 PerfScore 65.00 | |
-G_M22044_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[rcx rbx] | |
+ jmp SHORT G_M22044_IG05 | |
+ ;; size=34 bbWeight=4 PerfScore 61.00 | |
+G_M22044_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
+ ; gcrRegs -[rcx] | |
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()] | |
; gcr arg pop 0 | |
int3 | |
;; size=7 bbWeight=0 PerfScore 0.00 | |
-G_M22044_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
+G_M22044_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
call CORINFO_HELP_RNGCHKFAIL | |
; gcr arg pop 0 | |
int3 | |
;; size=6 bbWeight=0 PerfScore 0.00 | |
-G_M22044_IG09: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz | |
+G_M22044_IG11: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs +[rcx rbx] | |
mov rdx, qword ptr [rcx] | |
mov rax, qword ptr [rdx+0x38] | |
mov rax, qword ptr [rax] | |
mov rax, qword ptr [rax+0x28] | |
test rax, rax | |
- je SHORT G_M22044_IG11 | |
+ je SHORT G_M22044_IG13 | |
;; size=19 bbWeight=1 PerfScore 9.25 | |
-G_M22044_IG10: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+G_M22044_IG12: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs -[rcx] | |
- jmp SHORT G_M22044_IG12 | |
+ jmp SHORT G_M22044_IG14 | |
;; size=2 bbWeight=0.80 PerfScore 1.60 | |
-G_M22044_IG11: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+G_M22044_IG13: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
mov rcx, rdx | |
mov rdx, 0xD1FFAB1E ; global ptr | |
call CORINFO_HELP_RUNTIMEHANDLE_CLASS | |
; gcr arg pop 0 | |
;; size=18 bbWeight=0.20 PerfScore 0.30 | |
-G_M22044_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+G_M22044_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
lea rcx, [rbp-0x28] | |
call rax | |
; gcr arg pop 0 | |
mov rax, rbx | |
; gcrRegs +[rax] | |
;; size=9 bbWeight=1 PerfScore 3.75 | |
-G_M22044_IG13: ; bbWeight=1, epilog, nogc, extend | |
+G_M22044_IG15: ; bbWeight=1, epilog, nogc, extend | |
add rsp, 72 | |
pop rbx | |
pop rbp | |
ret | |
;; size=7 bbWeight=1 PerfScore 2.25 | |
-G_M22044_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc | |
+G_M22044_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc | |
; gcrRegs -[rax rbx] | |
push rbp | |
push rbx | |
@@ -162,7 +174,7 @@ G_M22044_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
mov qword ptr [rsp+0x20], rbp | |
lea rbp, [rbp+0x50] | |
;; size=19 bbWeight=0 PerfScore 0.00 | |
-G_M22044_IG15: ; bbWeight=0, gcVars=0000000000000040 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz | |
+G_M22044_IG17: ; bbWeight=0, gcVars=0000000000000020 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz | |
mov rcx, gword ptr [rbp+0x10] | |
; gcrRegs +[rcx] | |
mov rdx, qword ptr [rcx] | |
@@ -170,30 +182,30 @@ G_M22044_IG15: ; bbWeight=0, gcVars=0000000000000040 {V00}, gcrefRegs=000 | |
mov rax, qword ptr [rax] | |
mov rax, qword ptr [rax+0x28] | |
test rax, rax | |
- je SHORT G_M22044_IG16 | |
- jmp SHORT G_M22044_IG17 | |
+ je SHORT G_M22044_IG18 | |
+ jmp SHORT G_M22044_IG19 | |
;; size=25 bbWeight=0 PerfScore 0.00 | |
-G_M22044_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
+G_M22044_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rcx] | |
mov rcx, rdx | |
mov rdx, 0xD1FFAB1E ; global ptr | |
call CORINFO_HELP_RUNTIMEHANDLE_CLASS | |
; gcr arg pop 0 | |
;; size=18 bbWeight=0 PerfScore 0.00 | |
-G_M22044_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
+G_M22044_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
lea rcx, [rbp-0x28] | |
call rax | |
; gcr arg pop 0 | |
nop | |
;; size=7 bbWeight=0 PerfScore 0.00 | |
-G_M22044_IG18: ; bbWeight=0, funclet epilog, nogc, extend | |
+G_M22044_IG20: ; bbWeight=0, funclet epilog, nogc, extend | |
add rsp, 40 | |
pop rbx | |
pop rbp | |
ret | |
;; size=7 bbWeight=0 PerfScore 0.00 | |
-; Total bytes of code 278, prolog size 38, PerfScore 185.98, instruction count 88, allocated bytes for code 278 (MethodHash=2381a9e3) for method System.Collections.IterateForEach`1[System.__Canon]:List():System.__Canon:this (FullOpts) | |
+; Total bytes of code 299, prolog size 38, PerfScore 195.23, instruction count 95, allocated bytes for code 299 (MethodHash=2381a9e3) for method System.Collections.IterateForEach`1[System.__Canon]:List():System.__Canon:this (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
@@ -224,4 +236,4 @@ Unwind Info: | |
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
*************** EH table for System.Collections.IterateForEach`1[System.__Canon]:List():System.__Canon:this | |
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM | |
-EH#0: try [G_M22044_IG04..G_M22044_IG09) handled by [G_M22044_IG14..END) (fault) | |
+EH#0: try [G_M22044_IG04..G_M22044_IG11) handled by [G_M22044_IG16..END) (fault) | |
``` | |
</div></details> | |
</div></details> | |
<details> | |
<summary>benchmarks.run_pgo.windows.x64.checked.mch</summary> | |
<div style="margin-left:1em"> | |
<details> | |
<summary><span style="color:green">-2</span> (<span style="color:green">-5.71%</span>) : 59931.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENestedNamespaceSymbol:get_ContainingPEModule():Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:this (Tier1)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -17,27 +17,24 @@ | |
G_M57317_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
;; size=0 bbWeight=1 PerfScore 0.00 | |
-G_M57317_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref | |
+G_M57317_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs +[rcx] | |
mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENestedNamespaceSymbol | |
;; size=10 bbWeight=1 PerfScore 0.25 | |
G_M57317_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
mov rcx, gword ptr [rcx+0x40] | |
cmp qword ptr [rcx], rax | |
- jne SHORT G_M57317_IG05 | |
+ je SHORT G_M57317_IG03 | |
;; size=9 bbWeight=8 PerfScore 48.00 | |
-G_M57317_IG04: ; bbWeight=2.36, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
- jmp SHORT G_M57317_IG03 | |
- ;; size=2 bbWeight=2.36 PerfScore 4.72 | |
-G_M57317_IG05: ; bbWeight=0.41, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref | |
+G_M57317_IG04: ; bbWeight=0.41, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref | |
mov rax, qword ptr [rcx] | |
mov rax, qword ptr [rax+0xA8] | |
;; size=10 bbWeight=0.41 PerfScore 1.64 | |
-G_M57317_IG06: ; bbWeight=0.41, epilog, nogc, extend | |
+G_M57317_IG05: ; bbWeight=0.41, epilog, nogc, extend | |
tail.jmp [rax+0x20]<unknown method> | |
;; size=4 bbWeight=0.41 PerfScore 0.82 | |
-; Total bytes of code 35, prolog size 0, PerfScore 55.43, instruction count 8, allocated bytes for code 35 (MethodHash=aba5201a) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENestedNamespaceSymbol:get_ContainingPEModule():Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:this (Tier1) | |
+; Total bytes of code 33, prolog size 0, PerfScore 50.71, instruction count 8, allocated bytes for code 33 (MethodHash=aba5201a) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENestedNamespaceSymbol:get_ContainingPEModule():Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:this (Tier1) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:green">-11</span> (<span style="color:green">-2.58%</span>) : 21289.dasm - System.Net.Http.HPack.HPackEncoder:EncodeLiteralHeaderFieldWithoutIndexingToAllocatedArray(int,System.String):ubyte[] (Tier0-FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -35,7 +35,7 @@ | |
;* V22 tmp17 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
;* V23 tmp18 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
; V24 tmp19 [V24,T15] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" <ubyte[]> | |
-; V25 tmp20 [V25,T19] ( 3, 1.44) ref -> r14 class-hnd exact single-def "Inline stloc first use temp" <ubyte[]> | |
+; V25 tmp20 [V25,T19] ( 3, 1.44) ref -> rbx class-hnd exact single-def "Inline stloc first use temp" <ubyte[]> | |
; V26 tmp21 [V26,T17] ( 2, 1.92) byref -> rcx single-def "Inlining Arg" | |
;* V27 tmp22 [V27 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" | |
; V28 tmp23 [V28,T18] ( 2, 1.92) long -> r8 "Inlining Arg" | |
@@ -80,18 +80,30 @@ G_M30668_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
mov rsi, rdx | |
; gcrRegs +[rsi] | |
;; size=44 bbWeight=1 PerfScore 10.75 | |
-G_M30668_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref | |
+G_M30668_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz | |
test dword ptr [rsp], esp | |
sub rsp, 512 | |
lea rdi, [rsp+0x20] | |
mov r14d, 512 | |
- ;; size=21 bbWeight=1 PerfScore 4.00 | |
-G_M30668_IG03: ; bbWeight=10.00, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref | |
+ jmp SHORT G_M30668_IG04 | |
+ ;; size=23 bbWeight=1 PerfScore 6.00 | |
+G_M30668_IG03: ; bbWeight=12.96, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref | |
+ add r14d, r14d | |
+ movsxd rdx, r14d | |
+ mov rcx, 0xD1FFAB1E ; ubyte[] | |
+ call CORINFO_HELP_NEWARR_1_VC | |
+ ; gcrRegs +[rax] | |
+ ; gcr arg pop 0 | |
+ lea rdi, bword ptr [rax+0x10] | |
; byrRegs +[rdi] | |
+ mov r14d, dword ptr [rax+0x08] | |
+ ;; size=29 bbWeight=12.96 PerfScore 55.08 | |
+G_M30668_IG04: ; bbWeight=10.00, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz | |
+ ; gcrRegs -[rax] | |
cmp r14d, 2 | |
- jb G_M30668_IG15 | |
- ;; size=10 bbWeight=10.00 PerfScore 12.50 | |
-G_M30668_IG04: ; bbWeight=8.00, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref | |
+ jb SHORT G_M30668_IG03 | |
+ ;; size=6 bbWeight=10.00 PerfScore 12.50 | |
+G_M30668_IG05: ; bbWeight=8.00, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz | |
mov byte ptr [rdi], 0 | |
mov bword ptr [rbp+0x10], rdi | |
mov dword ptr [rbp+0x18], r14d | |
@@ -102,9 +114,9 @@ G_M30668_IG04: ; bbWeight=8.00, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi | |
call [<unknown method>] | |
; gcr arg pop 0 | |
test eax, eax | |
- je G_M30668_IG15 | |
- ;; size=40 bbWeight=8.00 PerfScore 70.00 | |
-G_M30668_IG05: ; bbWeight=6.40, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref | |
+ je SHORT G_M30668_IG03 | |
+ ;; size=36 bbWeight=8.00 PerfScore 70.00 | |
+G_M30668_IG06: ; bbWeight=6.40, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref | |
mov r8d, dword ptr [rbp+0x28] | |
cmp r8d, r14d | |
ja G_M30668_IG17 | |
@@ -115,7 +127,7 @@ G_M30668_IG05: ; bbWeight=6.40, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi | |
sub r13d, r8d | |
js G_M30668_IG16 | |
;; size=31 bbWeight=6.40 PerfScore 27.20 | |
-G_M30668_IG06: ; bbWeight=6.40, gcrefRegs=0040 {rsi}, byrefRegs=8080 {rdi r15}, byref | |
+G_M30668_IG07: ; bbWeight=6.40, gcrefRegs=0040 {rsi}, byrefRegs=8080 {rdi r15}, byref | |
mov bword ptr [rbp+0x10], r15 | |
mov dword ptr [rbp+0x18], r13d | |
lea r8, [rbp+0x10] | |
@@ -129,24 +141,24 @@ G_M30668_IG06: ; bbWeight=6.40, gcrefRegs=0040 {rsi}, byrefRegs=8080 {rdi | |
; byrRegs -[r15] | |
; gcr arg pop 0 | |
test eax, eax | |
- je G_M30668_IG15 | |
+ je G_M30668_IG03 | |
;; size=35 bbWeight=6.40 PerfScore 49.60 | |
-G_M30668_IG07: ; bbWeight=3.33, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref | |
+G_M30668_IG08: ; bbWeight=3.33, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref | |
; gcrRegs -[rsi] | |
mov r15d, dword ptr [rbp+0x28] | |
add r15d, dword ptr [rbp+0x20] | |
cmp r15d, r14d | |
ja G_M30668_IG17 | |
;; size=17 bbWeight=3.33 PerfScore 14.14 | |
-G_M30668_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref | |
+G_M30668_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref | |
test r15d, r15d | |
jl G_M30668_IG18 | |
;; size=9 bbWeight=1 PerfScore 1.25 | |
-G_M30668_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz | |
+G_M30668_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz | |
test r15d, r15d | |
- jne SHORT G_M30668_IG11 | |
+ jne SHORT G_M30668_IG12 | |
;; size=5 bbWeight=1 PerfScore 1.25 | |
-G_M30668_IG10: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
+G_M30668_IG11: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
; byrRegs -[rdi] | |
mov rcx, 0xD1FFAB1E | |
mov edx, 38 | |
@@ -155,9 +167,9 @@ G_M30668_IG10: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr | |
mov rdx, 0xD1FFAB1E ; data for <unknown class>:<unknown field> | |
mov rax, gword ptr [rdx] | |
; gcrRegs +[rax] | |
- jmp SHORT G_M30668_IG12 | |
+ jmp SHORT G_M30668_IG13 | |
;; size=35 bbWeight=0.52 PerfScore 2.99 | |
-G_M30668_IG11: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref | |
+G_M30668_IG12: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref | |
; gcrRegs -[rax] | |
; byrRegs +[rdi] | |
movsxd rdx, r15d | |
@@ -165,9 +177,9 @@ G_M30668_IG11: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, | |
call CORINFO_HELP_NEWARR_1_VC | |
; gcrRegs +[rax] | |
; gcr arg pop 0 | |
- mov r14, rax | |
- ; gcrRegs +[r14] | |
- lea rcx, bword ptr [r14+0x10] | |
+ mov rbx, rax | |
+ ; gcrRegs +[rbx] | |
+ lea rcx, bword ptr [rbx+0x10] | |
; byrRegs +[rcx] | |
mov r8d, r15d | |
mov rdx, rdi | |
@@ -176,22 +188,22 @@ G_M30668_IG11: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, | |
; gcrRegs -[rax] | |
; byrRegs -[rcx rdx rdi] | |
; gcr arg pop 0 | |
- mov rax, r14 | |
+ mov rax, rbx | |
; gcrRegs +[rax] | |
;; size=40 bbWeight=0.48 PerfScore 2.88 | |
-G_M30668_IG12: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz | |
- ; gcrRegs -[r14] | |
+G_M30668_IG13: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz | |
+ ; gcrRegs -[rbx] | |
mov rcx, 0xD1FFAB1E | |
cmp qword ptr [rbp+0x08], rcx | |
- je SHORT G_M30668_IG13 | |
+ je SHORT G_M30668_IG14 | |
call CORINFO_HELP_FAIL_FAST | |
; gcrRegs -[rax] | |
;; size=21 bbWeight=1 PerfScore 4.25 | |
-G_M30668_IG13: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref | |
+G_M30668_IG14: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref | |
; gcrRegs +[rax] | |
nop | |
;; size=1 bbWeight=1 PerfScore 0.25 | |
-G_M30668_IG14: ; bbWeight=1, epilog, nogc, extend | |
+G_M30668_IG15: ; bbWeight=1, epilog, nogc, extend | |
lea rsp, [rbp+0x30] | |
pop rbx | |
pop rsi | |
@@ -202,22 +214,9 @@ G_M30668_IG14: ; bbWeight=1, epilog, nogc, extend | |
pop rbp | |
ret | |
;; size=15 bbWeight=1 PerfScore 5.00 | |
-G_M30668_IG15: ; bbWeight=12.96, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref | |
+G_M30668_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=8080 {rdi r15}, gcvars, byref | |
; gcrRegs -[rax] +[rsi] | |
- add r14d, r14d | |
- movsxd rdx, r14d | |
- mov rcx, 0xD1FFAB1E ; ubyte[] | |
- call CORINFO_HELP_NEWARR_1_VC | |
- ; gcrRegs +[rax] | |
- ; gcr arg pop 0 | |
- lea rdi, bword ptr [rax+0x10] | |
- ; byrRegs +[rdi] | |
- mov r14d, dword ptr [rax+0x08] | |
- jmp G_M30668_IG03 | |
- ;; size=34 bbWeight=12.96 PerfScore 81.00 | |
-G_M30668_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=8080 {rdi r15}, byref | |
- ; gcrRegs -[rax] | |
- ; byrRegs +[r15] | |
+ ; byrRegs +[rdi r15] | |
mov rcx, 0xD1FFAB1E | |
; gcrRegs +[rcx] | |
mov rdx, 0xD1FFAB1E | |
@@ -225,7 +224,7 @@ G_M30668_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=8080 {rdi r1 | |
call [<unknown method>] | |
; gcrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
- jmp G_M30668_IG06 | |
+ jmp G_M30668_IG07 | |
;; size=31 bbWeight=0 PerfScore 0.00 | |
G_M30668_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rsi] | |
@@ -243,10 +242,10 @@ G_M30668_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byr | |
call [<unknown method>] | |
; gcrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
- jmp G_M30668_IG09 | |
+ jmp G_M30668_IG10 | |
;; size=31 bbWeight=0 PerfScore 0.00 | |
-; Total bytes of code 427, prolog size 44, PerfScore 287.06, instruction count 102, allocated bytes for code 427 (MethodHash=e3858833) for method System.Net.Http.HPack.HPackEncoder:EncodeLiteralHeaderFieldWithoutIndexingToAllocatedArray(int,System.String):ubyte[] (Tier0-FullOpts) | |
+; Total bytes of code 416, prolog size 44, PerfScore 263.14, instruction count 102, allocated bytes for code 416 (MethodHash=e3858833) for method System.Net.Http.HPack.HPackEncoder:EncodeLiteralHeaderFieldWithoutIndexingToAllocatedArray(int,System.String):ubyte[] (Tier0-FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:green">-6</span> (<span style="color:green">-2.52%</span>) : 38019.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -45,28 +45,27 @@ G_M63260_IG03: ; bbWeight=100, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b | |
jae G_M63260_IG14 | |
mov r10d, edi | |
cmp dword ptr [rbx+4*r10+0x10], ecx | |
- jg SHORT G_M63260_IG05 | |
+ jg SHORT G_M63260_IG06 | |
;; size=18 bbWeight=100 PerfScore 550.00 | |
G_M63260_IG04: ; bbWeight=70.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
inc edi | |
jmp SHORT G_M63260_IG09 | |
;; size=4 bbWeight=70.81 PerfScore 159.33 | |
-G_M63260_IG05: ; bbWeight=116.31, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+G_M63260_IG05: ; bbWeight=82.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+ dec r8d | |
+ ;; size=3 bbWeight=82.25 PerfScore 20.56 | |
+G_M63260_IG06: ; bbWeight=116.31, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
cmp r8d, edi | |
jle SHORT G_M63260_IG10 | |
;; size=5 bbWeight=116.31 PerfScore 145.39 | |
-G_M63260_IG06: ; bbWeight=106.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+G_M63260_IG07: ; bbWeight=106.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
cmp r8d, eax | |
- jae G_M63260_IG14 | |
+ jae SHORT G_M63260_IG14 | |
mov r10d, r8d | |
mov r10d, dword ptr [rbx+4*r10+0x10] | |
cmp r10d, ecx | |
- jl SHORT G_M63260_IG08 | |
- ;; size=22 bbWeight=106.22 PerfScore 504.56 | |
-G_M63260_IG07: ; bbWeight=82.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
- dec r8d | |
- jmp SHORT G_M63260_IG05 | |
- ;; size=5 bbWeight=82.25 PerfScore 185.05 | |
+ jge SHORT G_M63260_IG05 | |
+ ;; size=18 bbWeight=106.22 PerfScore 504.56 | |
G_M63260_IG08: ; bbWeight=23.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
cmp edi, eax | |
jae SHORT G_M63260_IG14 | |
@@ -78,7 +77,7 @@ G_M63260_IG08: ; bbWeight=23.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, | |
;; size=25 bbWeight=23.98 PerfScore 137.87 | |
G_M63260_IG09: ; bbWeight=104.88, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
cmp edi, r8d | |
- jge SHORT G_M63260_IG05 | |
+ jge SHORT G_M63260_IG06 | |
jmp SHORT G_M63260_IG03 | |
;; size=7 bbWeight=104.88 PerfScore 340.85 | |
G_M63260_IG10: ; bbWeight=10.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
@@ -126,7 +125,7 @@ G_M63260_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { | |
int3 | |
;; size=6 bbWeight=0 PerfScore 0.00 | |
-; Total bytes of code 238, prolog size 69, PerfScore 2221.23, instruction count 65, allocated bytes for code 238 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR) | |
+; Total bytes of code 232, prolog size 69, PerfScore 2056.74, instruction count 64, allocated bytes for code 232 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1-OSR) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+10</span> (<span style="color:red">+2.25%</span>) : 47853.dasm - Benchstone.BenchF.InvMt:Inner(double[][],byref,byref) (Tier1-OSR)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -41,7 +41,7 @@ | |
; | |
; Lcl frame size = 32 | |
-G_M35463_IG01: ; bbWeight=1.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
+G_M35463_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
sub rsp, 72 | |
mov qword ptr [rsp+0xE8], r14 | |
mov qword ptr [rsp+0xE0], rdi | |
@@ -57,35 +57,52 @@ G_M35463_IG01: ; bbWeight=1.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr | |
mov r9d, dword ptr [rsp+0xA4] | |
mov r10d, dword ptr [rsp+0x9C] | |
mov eax, dword ptr [rsp+0x98] | |
- ;; size=92 bbWeight=1.08 PerfScore 21.87 | |
-G_M35463_IG02: ; bbWeight=1.08, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref, isz | |
+ ;; size=92 bbWeight=1 PerfScore 20.25 | |
+G_M35463_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref, isz | |
+ jmp SHORT G_M35463_IG04 | |
+ ;; size=2 bbWeight=1 PerfScore 2.00 | |
+G_M35463_IG03: ; bbWeight=1.08, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref | |
+ mov r11d, dword ptr [rcx+0x08] | |
+ cmp r10d, r11d | |
+ jae G_M35463_IG14 | |
+ mov eax, r10d | |
+ mov rax, gword ptr [rcx+8*rax+0x10] | |
+ ; gcrRegs +[rax] | |
+ cmp r9d, dword ptr [rax+0x08] | |
+ jae G_M35463_IG14 | |
+ mov r11d, r9d | |
+ vmovsd xmm0, qword ptr [rax+8*r11+0x10] | |
+ mov eax, 1 | |
+ ; gcrRegs -[rax] | |
+ ;; size=46 bbWeight=1.08 PerfScore 15.12 | |
+G_M35463_IG04: ; bbWeight=1.08, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref, isz | |
mov r11d, dword ptr [r8] | |
lea r11d, [2*r11+0x01] | |
cmp eax, r11d | |
- jg SHORT G_M35463_IG05 | |
+ jg SHORT G_M35463_IG07 | |
;; size=16 bbWeight=1.08 PerfScore 4.05 | |
-G_M35463_IG03: ; bbWeight=1.07, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref | |
+G_M35463_IG05: ; bbWeight=1.07, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref | |
mov r11d, dword ptr [rcx+0x08] | |
mov ebx, r10d | |
mov esi, r9d | |
;; size=10 bbWeight=1.07 PerfScore 2.67 | |
-G_M35463_IG04: ; bbWeight=98.92, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref, isz | |
+G_M35463_IG06: ; bbWeight=98.92, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref, isz | |
cmp r10d, r11d | |
- jae G_M35463_IG13 | |
+ jae G_M35463_IG14 | |
mov rdi, gword ptr [rcx+8*rbx+0x10] | |
; gcrRegs +[rdi] | |
mov rbp, rdi | |
; gcrRegs +[rbp] | |
mov r14d, dword ptr [rdi+0x08] | |
cmp eax, r14d | |
- jae G_M35463_IG13 | |
+ jae G_M35463_IG14 | |
mov r14d, eax | |
vmovsd xmm1, qword ptr [rdi+8*r14+0x10] | |
cmp r9d, r11d | |
- jae G_M35463_IG13 | |
+ jae G_M35463_IG14 | |
mov rdi, gword ptr [rcx+8*rsi+0x10] | |
cmp eax, dword ptr [rdi+0x08] | |
- jae G_M35463_IG13 | |
+ jae G_M35463_IG14 | |
vmulsd xmm2, xmm0, qword ptr [rdi+8*r14+0x10] | |
vsubsd xmm1, xmm1, xmm2 | |
vmovsd qword ptr [rbp+8*r14+0x10], xmm1 | |
@@ -94,28 +111,28 @@ G_M35463_IG04: ; bbWeight=98.92, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rd | |
; gcrRegs -[rdi] | |
lea edi, [2*rdi+0x01] | |
cmp eax, edi | |
- jle SHORT G_M35463_IG04 | |
+ jle SHORT G_M35463_IG06 | |
;; size=97 bbWeight=98.92 PerfScore 3289.09 | |
-G_M35463_IG05: ; bbWeight=1.12, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref | |
+G_M35463_IG07: ; bbWeight=1.12, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref | |
; gcrRegs -[rbp] | |
inc r10d | |
cmp r10d, dword ptr [r8] | |
- jle G_M35463_IG10 | |
+ jle G_M35463_IG12 | |
;; size=12 bbWeight=1.12 PerfScore 4.78 | |
-G_M35463_IG06: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref | |
+G_M35463_IG08: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref | |
inc r9d | |
cmp r9d, dword ptr [r8] | |
- jg G_M35463_IG12 | |
+ jg G_M35463_IG13 | |
;; size=12 bbWeight=0.01 PerfScore 0.03 | |
-G_M35463_IG07: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref, isz | |
+G_M35463_IG09: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref, isz | |
mov r11d, dword ptr [rcx+0x08] | |
cmp r9d, r11d | |
- jae G_M35463_IG13 | |
+ jae G_M35463_IG14 | |
mov r10d, r9d | |
mov r11, gword ptr [rcx+8*r10+0x10] | |
; gcrRegs +[r11] | |
cmp r9d, dword ptr [r11+0x08] | |
- jae G_M35463_IG13 | |
+ jae G_M35463_IG14 | |
vmovsd xmm0, qword ptr [r11+8*r10+0x10] | |
vmulsd xmm1, xmm0, qword ptr [rdx] | |
vmovsd qword ptr [rdx], xmm1 | |
@@ -124,16 +141,16 @@ G_M35463_IG07: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx | |
; gcrRegs -[r11] | |
lea r11d, [2*r11+0x01] | |
test r11d, r11d | |
- jle SHORT G_M35463_IG09 | |
+ jle SHORT G_M35463_IG11 | |
;; size=67 bbWeight=0.01 PerfScore 0.17 | |
-G_M35463_IG08: ; bbWeight=0.61, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref, isz | |
+G_M35463_IG10: ; bbWeight=0.61, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref, isz | |
mov r11, gword ptr [rcx+8*r10+0x10] | |
; gcrRegs +[r11] | |
mov rbx, r11 | |
; gcrRegs +[rbx] | |
mov esi, dword ptr [r11+0x08] | |
cmp eax, esi | |
- jae SHORT G_M35463_IG13 | |
+ jae SHORT G_M35463_IG14 | |
vmovsd xmm1, qword ptr [r11+8*rax+0x10] | |
vdivsd xmm1, xmm1, xmm0 | |
vmovsd qword ptr [rbx+8*rax+0x10], xmm1 | |
@@ -142,34 +159,20 @@ G_M35463_IG08: ; bbWeight=0.61, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx | |
; gcrRegs -[r11] | |
lea r11d, [2*r11+0x01] | |
cmp eax, r11d | |
- jle SHORT G_M35463_IG08 | |
+ jle SHORT G_M35463_IG10 | |
;; size=51 bbWeight=0.61 PerfScore 16.85 | |
-G_M35463_IG09: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref | |
+G_M35463_IG11: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref | |
; gcrRegs -[rbx] | |
mov r10d, 1 | |
cmp dword ptr [r8], 0 | |
- jle G_M35463_IG06 | |
+ jle G_M35463_IG08 | |
;; size=16 bbWeight=0.01 PerfScore 0.03 | |
-G_M35463_IG10: ; bbWeight=1.12, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref | |
+G_M35463_IG12: ; bbWeight=1.12, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref | |
cmp r10d, r9d | |
- je G_M35463_IG05 | |
- ;; size=9 bbWeight=1.12 PerfScore 1.41 | |
-G_M35463_IG11: ; bbWeight=1.08, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref, isz | |
- mov r11d, dword ptr [rcx+0x08] | |
- cmp r10d, r11d | |
- jae SHORT G_M35463_IG13 | |
- mov eax, r10d | |
- mov rax, gword ptr [rcx+8*rax+0x10] | |
- ; gcrRegs +[rax] | |
- cmp r9d, dword ptr [rax+0x08] | |
- jae SHORT G_M35463_IG13 | |
- mov r11d, r9d | |
- vmovsd xmm0, qword ptr [rax+8*r11+0x10] | |
- mov eax, 1 | |
- ; gcrRegs -[rax] | |
- jmp G_M35463_IG02 | |
- ;; size=43 bbWeight=1.08 PerfScore 17.28 | |
-G_M35463_IG12: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc | |
+ je G_M35463_IG07 | |
+ jmp G_M35463_IG03 | |
+ ;; size=14 bbWeight=1.12 PerfScore 3.65 | |
+G_M35463_IG13: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc | |
; gcrRegs -[rcx] | |
; byrRegs -[rdx r8] | |
add rsp, 208 | |
@@ -180,13 +183,13 @@ G_M35463_IG12: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr | |
pop rbp | |
ret | |
;; size=14 bbWeight=0.00 PerfScore 0.00 | |
-G_M35463_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref | |
+G_M35463_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref | |
call CORINFO_HELP_RNGCHKFAIL | |
; gcr arg pop 0 | |
int3 | |
;; size=6 bbWeight=0 PerfScore 0.00 | |
-; Total bytes of code 445, prolog size 92, PerfScore 3358.22, instruction count 100, allocated bytes for code 445 (MethodHash=109d7578) for method Benchstone.BenchF.InvMt:Inner(double[][],byref,byref) (Tier1-OSR) | |
+; Total bytes of code 455, prolog size 92, PerfScore 3358.69, instruction count 101, allocated bytes for code 455 (MethodHash=109d7578) for method Benchstone.BenchF.InvMt:Inner(double[][],byref,byref) (Tier1-OSR) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+5</span> (<span style="color:red">+2.45%</span>) : 73399.dasm - System.Number:UInt32ToDecChars[ushort](ulong,uint):ulong (Tier1)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -58,23 +58,9 @@ G_M24621_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
G_M24621_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
cmp ebx, 10 | |
jb SHORT G_M24621_IG10 | |
- ;; size=5 bbWeight=1 PerfScore 1.25 | |
-G_M24621_IG03: ; bbWeight=1.27, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
- cmp ebx, 100 | |
- jb SHORT G_M24621_IG06 | |
- ;; size=5 bbWeight=1.27 PerfScore 1.58 | |
-G_M24621_IG04: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
- add rsi, -4 | |
- mov eax, ebx | |
- imul rax, rax, 0xD1FFAB1E | |
- shr rax, 37 | |
- imul ecx, eax, 100 | |
- sub ebx, ecx | |
- mov edi, eax | |
- cmp ebx, 99 | |
- ja SHORT G_M24621_IG12 | |
- ;; size=29 bbWeight=0.67 PerfScore 4.50 | |
-G_M24621_IG05: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
+ jmp SHORT G_M24621_IG04 | |
+ ;; size=7 bbWeight=1 PerfScore 3.25 | |
+G_M24621_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
mov rax, 0xD1FFAB1E ; const ptr | |
mov rax, gword ptr [rax] | |
; gcrRegs +[rax] | |
@@ -84,8 +70,23 @@ G_M24621_IG05: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr | |
; gcrRegs -[rax] | |
mov dword ptr [rsi], eax | |
mov ebx, edi | |
- jmp SHORT G_M24621_IG03 | |
- ;; size=28 bbWeight=0.67 PerfScore 5.50 | |
+ ;; size=26 bbWeight=0.67 PerfScore 4.17 | |
+G_M24621_IG04: ; bbWeight=1.27, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
+ cmp ebx, 100 | |
+ jb SHORT G_M24621_IG06 | |
+ ;; size=5 bbWeight=1.27 PerfScore 1.58 | |
+G_M24621_IG05: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
+ add rsi, -4 | |
+ mov eax, ebx | |
+ imul rax, rax, 0xD1FFAB1E | |
+ shr rax, 37 | |
+ imul ecx, eax, 100 | |
+ sub ebx, ecx | |
+ mov edi, eax | |
+ cmp ebx, 99 | |
+ jbe SHORT G_M24621_IG03 | |
+ jmp SHORT G_M24621_IG12 | |
+ ;; size=31 bbWeight=0.67 PerfScore 5.83 | |
G_M24621_IG06: ; bbWeight=0.60, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
cmp ebx, 10 | |
jb SHORT G_M24621_IG10 | |
@@ -124,7 +125,7 @@ G_M24621_IG11: ; bbWeight=0.47, epilog, nogc, extend | |
pop rdi | |
ret | |
;; size=8 bbWeight=0.47 PerfScore 1.28 | |
-G_M24621_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz | |
+G_M24621_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref | |
mov rcx, 0xD1FFAB1E | |
; gcrRegs +[rcx] | |
mov rdx, 0xD1FFAB1E | |
@@ -132,8 +133,8 @@ G_M24621_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { | |
call [<unknown method>] | |
; gcrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
- jmp SHORT G_M24621_IG05 | |
- ;; size=28 bbWeight=0 PerfScore 0.00 | |
+ jmp G_M24621_IG03 | |
+ ;; size=31 bbWeight=0 PerfScore 0.00 | |
G_M24621_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
mov rcx, 0xD1FFAB1E | |
; gcrRegs +[rcx] | |
@@ -145,7 +146,7 @@ G_M24621_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
jmp SHORT G_M24621_IG08 | |
;; size=28 bbWeight=0 PerfScore 0.00 | |
-; Total bytes of code 204, prolog size 12, PerfScore 25.02, instruction count 59, allocated bytes for code 204 (MethodHash=4f629fd2) for method System.Number:UInt32ToDecChars[ushort](ulong,uint):ulong (Tier1) | |
+; Total bytes of code 209, prolog size 12, PerfScore 27.02, instruction count 60, allocated bytes for code 209 (MethodHash=4f629fd2) for method System.Number:UInt32ToDecChars[ushort](ulong,uint):ulong (Tier1) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+5</span> (<span style="color:red">+2.45%</span>) : 76297.dasm - System.Number:UInt32ToDecChars[ushort](ulong,uint):ulong (Tier1)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -58,23 +58,9 @@ G_M24621_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
G_M24621_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
cmp ebx, 10 | |
jb SHORT G_M24621_IG10 | |
- ;; size=5 bbWeight=1 PerfScore 1.25 | |
-G_M24621_IG03: ; bbWeight=1.27, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
- cmp ebx, 100 | |
- jb SHORT G_M24621_IG06 | |
- ;; size=5 bbWeight=1.27 PerfScore 1.58 | |
-G_M24621_IG04: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
- add rsi, -4 | |
- mov eax, ebx | |
- imul rax, rax, 0xD1FFAB1E | |
- shr rax, 37 | |
- imul ecx, eax, 100 | |
- sub ebx, ecx | |
- mov edi, eax | |
- cmp ebx, 99 | |
- ja SHORT G_M24621_IG12 | |
- ;; size=29 bbWeight=0.67 PerfScore 4.50 | |
-G_M24621_IG05: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
+ jmp SHORT G_M24621_IG04 | |
+ ;; size=7 bbWeight=1 PerfScore 3.25 | |
+G_M24621_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
mov rax, 0xD1FFAB1E ; const ptr | |
mov rax, gword ptr [rax] | |
; gcrRegs +[rax] | |
@@ -84,8 +70,23 @@ G_M24621_IG05: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr | |
; gcrRegs -[rax] | |
mov dword ptr [rsi], eax | |
mov ebx, edi | |
- jmp SHORT G_M24621_IG03 | |
- ;; size=28 bbWeight=0.67 PerfScore 5.50 | |
+ ;; size=26 bbWeight=0.67 PerfScore 4.17 | |
+G_M24621_IG04: ; bbWeight=1.27, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
+ cmp ebx, 100 | |
+ jb SHORT G_M24621_IG06 | |
+ ;; size=5 bbWeight=1.27 PerfScore 1.58 | |
+G_M24621_IG05: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
+ add rsi, -4 | |
+ mov eax, ebx | |
+ imul rax, rax, 0xD1FFAB1E | |
+ shr rax, 37 | |
+ imul ecx, eax, 100 | |
+ sub ebx, ecx | |
+ mov edi, eax | |
+ cmp ebx, 99 | |
+ jbe SHORT G_M24621_IG03 | |
+ jmp SHORT G_M24621_IG12 | |
+ ;; size=31 bbWeight=0.67 PerfScore 5.83 | |
G_M24621_IG06: ; bbWeight=0.60, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
cmp ebx, 10 | |
jb SHORT G_M24621_IG10 | |
@@ -124,7 +125,7 @@ G_M24621_IG11: ; bbWeight=0.53, epilog, nogc, extend | |
pop rdi | |
ret | |
;; size=8 bbWeight=0.53 PerfScore 1.47 | |
-G_M24621_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz | |
+G_M24621_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref | |
mov rcx, 0xD1FFAB1E | |
; gcrRegs +[rcx] | |
mov rdx, 0xD1FFAB1E | |
@@ -132,8 +133,8 @@ G_M24621_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { | |
call [<unknown method>] | |
; gcrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
- jmp SHORT G_M24621_IG05 | |
- ;; size=28 bbWeight=0 PerfScore 0.00 | |
+ jmp G_M24621_IG03 | |
+ ;; size=31 bbWeight=0 PerfScore 0.00 | |
G_M24621_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
mov rcx, 0xD1FFAB1E | |
; gcrRegs +[rcx] | |
@@ -145,7 +146,7 @@ G_M24621_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
jmp SHORT G_M24621_IG08 | |
;; size=28 bbWeight=0 PerfScore 0.00 | |
-; Total bytes of code 204, prolog size 12, PerfScore 24.65, instruction count 59, allocated bytes for code 204 (MethodHash=4f629fd2) for method System.Number:UInt32ToDecChars[ushort](ulong,uint):ulong (Tier1) | |
+; Total bytes of code 209, prolog size 12, PerfScore 26.65, instruction count 60, allocated bytes for code 209 (MethodHash=4f629fd2) for method System.Number:UInt32ToDecChars[ushort](ulong,uint):ulong (Tier1) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
</div></details> | |
<details> | |
<summary>benchmarks.run_tiered.windows.x64.checked.mch</summary> | |
<div style="margin-left:1em"> | |
<details> | |
<summary><span style="color:green">-28</span> (<span style="color:green">-10.77%</span>) : 51541.dasm - Benchstone.BenchI.Array1:Quick(int,int,int[]) (Tier1-OSR)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -14,66 +14,82 @@ | |
; V03 loc0 [V03,T04] ( 9, 342 ) int -> rdx | |
; V04 loc1 [V04,T00] ( 12,2178 ) int -> rdi | |
; V05 loc2 [V05,T03] ( 3, 578 ) int -> rax | |
-; V06 loc3 [V06,T07] ( 4, 48 ) int -> r15 | |
+; V06 loc3 [V06,T07] ( 4, 48 ) int -> r8 | |
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" | |
-; V08 tmp1 [V08,T09] ( 2, 32 ) int -> r8 "Strict ordering of exceptions for Array store" | |
-; V09 tmp2 [V09,T06] ( 2, 64 ) int -> r8 "Strict ordering of exceptions for Array store" | |
+; V08 tmp1 [V08,T09] ( 2, 32 ) int -> rax "Strict ordering of exceptions for Array store" | |
+; V09 tmp2 [V09,T06] ( 2, 64 ) int -> r10 "Strict ordering of exceptions for Array store" | |
; V10 tmp3 [V10,T10] ( 2, 32 ) int -> rcx "arg temp" | |
-; V11 cse0 [V11,T05] ( 3, 144 ) int -> r14 "CSE #04: aggressive" | |
+; V11 cse0 [V11,T05] ( 3, 144 ) int -> r8 "CSE #04: aggressive" | |
; V12 cse1 [V12,T02] ( 5, 586.01) int -> rbp hoist "CSE #01: aggressive" | |
; V13 cse2 [V13,T11] ( 3, 24 ) long -> rdx "CSE #09: aggressive" | |
; | |
; Lcl frame size = 40 | |
G_M22995_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
- sub rsp, 88 | |
- mov qword ptr [rsp+0xD8], r15 | |
- mov qword ptr [rsp+0xD0], r14 | |
+ sub rsp, 72 | |
mov qword ptr [rsp+0xC8], rdi | |
mov qword ptr [rsp+0xC0], rsi | |
mov qword ptr [rsp+0xB8], rbx | |
- mov ecx, dword ptr [rsp+0xF0] | |
- mov esi, dword ptr [rsp+0xF8] | |
- mov rbx, gword ptr [rsp+0x100] | |
+ mov ecx, dword ptr [rsp+0xE0] | |
+ mov esi, dword ptr [rsp+0xE8] | |
+ mov rbx, gword ptr [rsp+0xF0] | |
; gcrRegs +[rbx] | |
- mov edx, dword ptr [rsp+0xA4] | |
- mov edi, dword ptr [rsp+0xA0] | |
- mov eax, dword ptr [rsp+0x9C] | |
- ;; size=87 bbWeight=0.01 PerfScore 0.17 | |
-G_M22995_IG02: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+ mov edx, dword ptr [rsp+0x94] | |
+ mov edi, dword ptr [rsp+0x90] | |
+ mov eax, dword ptr [rsp+0x8C] | |
+ ;; size=71 bbWeight=0.01 PerfScore 0.15 | |
+G_M22995_IG02: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
mov ebp, dword ptr [rbx+0x08] | |
- ;; size=3 bbWeight=0.01 PerfScore 0.02 | |
-G_M22995_IG03: ; bbWeight=64, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
- inc edx | |
+ jmp SHORT G_M22995_IG05 | |
+ ;; size=5 bbWeight=0.01 PerfScore 0.04 | |
+G_M22995_IG03: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+ mov edx, ecx | |
+ lea edi, [rsi+0x01] | |
cmp edx, ebp | |
jae G_M22995_IG10 | |
+ mov eax, edx | |
+ mov eax, dword ptr [rbx+4*rax+0x10] | |
+ jmp SHORT G_M22995_IG05 | |
+ ;; size=21 bbWeight=2 PerfScore 12.50 | |
+G_M22995_IG04: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+ mov r10d, edi | |
+ mov r10d, dword ptr [rbx+4*r10+0x10] | |
+ mov r9d, edx | |
+ mov dword ptr [rbx+4*r9+0x10], r10d | |
+ mov r10d, edi | |
+ mov dword ptr [rbx+4*r10+0x10], r8d | |
+ ;; size=24 bbWeight=16 PerfScore 76.00 | |
+G_M22995_IG05: ; bbWeight=64, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+ inc edx | |
+ cmp edx, ebp | |
+ jae SHORT G_M22995_IG10 | |
mov r8d, edx | |
- mov r14d, dword ptr [rbx+4*r8+0x10] | |
- cmp r14d, eax | |
- jl SHORT G_M22995_IG03 | |
- ;; size=23 bbWeight=64 PerfScore 320.00 | |
-G_M22995_IG04: ; bbWeight=512, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+ mov r8d, dword ptr [rbx+4*r8+0x10] | |
+ cmp r8d, eax | |
+ jl SHORT G_M22995_IG05 | |
+ ;; size=19 bbWeight=64 PerfScore 320.00 | |
+G_M22995_IG06: ; bbWeight=512, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
dec edi | |
cmp edi, ebp | |
- jae G_M22995_IG10 | |
- mov r8d, edi | |
- cmp dword ptr [rbx+4*r8+0x10], eax | |
- jg SHORT G_M22995_IG04 | |
- ;; size=20 bbWeight=512 PerfScore 2944.00 | |
-G_M22995_IG05: ; bbWeight=64, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+ jae SHORT G_M22995_IG10 | |
+ mov r10d, edi | |
+ cmp dword ptr [rbx+4*r10+0x10], eax | |
+ jg SHORT G_M22995_IG06 | |
+ ;; size=16 bbWeight=512 PerfScore 2944.00 | |
+G_M22995_IG07: ; bbWeight=64, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
cmp edx, edi | |
- jl SHORT G_M22995_IG09 | |
+ jl SHORT G_M22995_IG04 | |
;; size=4 bbWeight=64 PerfScore 80.00 | |
-G_M22995_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
- mov edx, edi | |
- mov r15d, dword ptr [rbx+4*rdx+0x10] | |
+G_M22995_IG08: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+ mov r8d, edi | |
+ mov r8d, dword ptr [rbx+4*r8+0x10] | |
cmp ecx, ebp | |
jae SHORT G_M22995_IG10 | |
mov edx, ecx | |
- mov r8d, dword ptr [rbx+4*rdx+0x10] | |
- mov eax, edi | |
- mov dword ptr [rbx+4*rax+0x10], r8d | |
- mov dword ptr [rbx+4*rdx+0x10], r15d | |
+ mov eax, dword ptr [rbx+4*rdx+0x10] | |
+ mov r10d, edi | |
+ mov dword ptr [rbx+4*r10+0x10], eax | |
+ mov dword ptr [rbx+4*rdx+0x10], r8d | |
lea edx, [rdi-0x01] | |
mov r8, rbx | |
; gcrRegs +[r8] | |
@@ -82,47 +98,24 @@ G_M22995_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr | |
; gcr arg pop 0 | |
lea ecx, [rdi+0x01] | |
cmp ecx, esi | |
- jl SHORT G_M22995_IG08 | |
- ;; size=49 bbWeight=8 PerfScore 108.00 | |
-G_M22995_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc | |
+ jl G_M22995_IG03 | |
+ ;; size=54 bbWeight=8 PerfScore 108.00 | |
+G_M22995_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc | |
; gcrRegs -[rbx] | |
add rsp, 184 | |
pop rbx | |
pop rsi | |
pop rdi | |
- pop r14 | |
- pop r15 | |
pop rbp | |
ret | |
- ;; size=16 bbWeight=1 PerfScore 4.25 | |
-G_M22995_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz | |
- ; gcrRegs +[rbx] | |
- mov edx, ecx | |
- lea edi, [rsi+0x01] | |
- cmp edx, ebp | |
- jae SHORT G_M22995_IG10 | |
- mov eax, edx | |
- mov eax, dword ptr [rbx+4*rax+0x10] | |
- jmp G_M22995_IG03 | |
- ;; size=20 bbWeight=2 PerfScore 12.50 | |
-G_M22995_IG09: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
- mov r15d, r14d | |
- mov r8d, edi | |
- mov r8d, dword ptr [rbx+4*r8+0x10] | |
- mov r10d, edx | |
- mov dword ptr [rbx+4*r10+0x10], r8d | |
- mov r8d, edi | |
- mov dword ptr [rbx+4*r8+0x10], r15d | |
- jmp G_M22995_IG03 | |
- ;; size=32 bbWeight=16 PerfScore 112.00 | |
-G_M22995_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[rbx] | |
+ ;; size=12 bbWeight=1 PerfScore 3.25 | |
+G_M22995_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref | |
call CORINFO_HELP_RNGCHKFAIL | |
; gcr arg pop 0 | |
int3 | |
;; size=6 bbWeight=0 PerfScore 0.00 | |
-; Total bytes of code 260, prolog size 87, PerfScore 3580.94, instruction count 68, allocated bytes for code 260 (MethodHash=4258a62c) for method Benchstone.BenchI.Array1:Quick(int,int,int[]) (Tier1-OSR) | |
+; Total bytes of code 232, prolog size 71, PerfScore 3543.94, instruction count 63, allocated bytes for code 232 (MethodHash=4258a62c) for method Benchstone.BenchI.Array1:Quick(int,int,int[]) (Tier1-OSR) | |
; ============================================================ | |
Unwind Info: | |
@@ -130,22 +123,18 @@ Unwind Info: | |
>> End offset : 0xd1ffab1e (not in unwind data) | |
Version : 1 | |
Flags : 0x00 | |
- SizeOfProlog : 0x2C | |
- CountOfUnwindCodes: 14 | |
+ SizeOfProlog : 0x1C | |
+ CountOfUnwindCodes: 10 | |
FrameRegister : none (0) | |
FrameOffset : N/A (no FrameRegister) (Value=0) | |
UnwindCodes : | |
- CodeOffset: 0x2C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3) | |
+ CodeOffset: 0x1C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3) | |
Scaled Small Offset: 23 * 8 = 184 = 0x000B8 | |
- CodeOffset: 0x24 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6) | |
+ CodeOffset: 0x14 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6) | |
Scaled Small Offset: 24 * 8 = 192 = 0x000C0 | |
- CodeOffset: 0x1C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rdi (7) | |
+ CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rdi (7) | |
Scaled Small Offset: 25 * 8 = 200 = 0x000C8 | |
- CodeOffset: 0x14 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r14 (14) | |
- Scaled Small Offset: 26 * 8 = 208 = 0x000D0 | |
- CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r15 (15) | |
- Scaled Small Offset: 27 * 8 = 216 = 0x000D8 | |
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58 | |
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48 | |
CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small | |
Size: 17 * 8 = 136 = 0x00088 | |
CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:green">-19</span> (<span style="color:green">-6.01%</span>) : 50917.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -15,7 +15,7 @@ | |
; V04 loc2 [V04,T11] ( 6, 4 ) int -> registers | |
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> | |
;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref | |
-; V07 loc5 [V07,T10] ( 5, 3.50) int -> r14 | |
+; V07 loc5 [V07,T10] ( 5, 3.50) int -> rbp | |
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" | |
;* V09 tmp1 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> | |
; V10 tmp2 [V10,T06] ( 3, 6 ) int -> rsi "Inlining Arg" | |
@@ -32,8 +32,8 @@ | |
;* V21 tmp13 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" | |
;* V22 tmp14 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
;* V23 tmp15 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
-; V24 tmp16 [V24,T12] ( 4, 4 ) int -> rsi "Inlining Arg" | |
-; V25 tmp17 [V25,T08] ( 5, 5 ) int -> rbp "Inlining Arg" | |
+; V24 tmp16 [V24,T12] ( 4, 4 ) int -> r14 "Inlining Arg" | |
+; V25 tmp17 [V25,T08] ( 5, 5 ) int -> rsi "Inlining Arg" | |
;* V26 tmp18 [V26 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" | |
; V27 tmp19 [V27,T17] ( 4, 2 ) int -> rcx single-def "Inline stloc first use temp" | |
; V28 tmp20 [V28,T15] ( 3, 3 ) ref -> r9 class-hnd single-def "impAppendStmt" <int[]> | |
@@ -92,47 +92,52 @@ G_M14182_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp | |
; gcrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
;; size=19 bbWeight=0.50 PerfScore 1.75 | |
-G_M14182_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref | |
+G_M14182_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
xor r14d, r14d | |
- ;; size=3 bbWeight=1 PerfScore 0.25 | |
-G_M14182_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
+ jmp SHORT G_M14182_IG06 | |
+ ;; size=5 bbWeight=1 PerfScore 2.25 | |
+G_M14182_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref | |
+ inc r14d | |
+ ;; size=3 bbWeight=4 PerfScore 1.00 | |
+G_M14182_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
cmp r14d, esi | |
- jae SHORT G_M14182_IG09 | |
+ jae SHORT G_M14182_IG10 | |
;; size=5 bbWeight=8 PerfScore 10.00 | |
-G_M14182_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
+G_M14182_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
movzx rcx, word ptr [rbp+2*r14] | |
mov eax, ecx | |
sar eax, 3 | |
cmp eax, 16 | |
- jae SHORT G_M14182_IG08 | |
+ jae SHORT G_M14182_IG09 | |
;; size=16 bbWeight=4 PerfScore 16.00 | |
-G_M14182_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
+G_M14182_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
mov eax, eax | |
mov rdx, 0xD1FFAB1E ; static handle | |
movzx rax, byte ptr [rax+rdx] | |
and ecx, 7 | |
bt eax, ecx | |
- jae SHORT G_M14182_IG09 | |
- jmp G_M14182_IG17 | |
- ;; size=29 bbWeight=2 PerfScore 12.50 | |
-G_M14182_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref | |
+ jae SHORT G_M14182_IG10 | |
+ jmp SHORT G_M14182_IG05 | |
+ ;; size=26 bbWeight=2 PerfScore 12.50 | |
+G_M14182_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
call [System.Globalization.CharUnicodeInfo:GetUnicodeCategoryNoBoundsChecks(uint):int] | |
; gcr arg pop 0 | |
mov ecx, 1 | |
shlx eax, ecx, eax | |
test eax, 0xD1FFAB1E | |
- jne G_M14182_IG17 | |
- ;; size=27 bbWeight=2 PerfScore 10.00 | |
-G_M14182_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+ jne SHORT G_M14182_IG05 | |
+ ;; size=23 bbWeight=2 PerfScore 10.00 | |
+G_M14182_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
; byrRegs -[rbp] | |
- test r14d, r14d | |
- jg SHORT G_M14182_IG12 | |
- ;; size=5 bbWeight=1 PerfScore 1.25 | |
-G_M14182_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
+ mov ebp, r14d | |
+ test ebp, ebp | |
+ jg SHORT G_M14182_IG13 | |
+ ;; size=7 bbWeight=1 PerfScore 1.50 | |
+G_M14182_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rbx] | |
xor eax, eax | |
;; size=2 bbWeight=0.50 PerfScore 0.12 | |
-G_M14182_IG11: ; bbWeight=0.50, epilog, nogc, extend | |
+G_M14182_IG12: ; bbWeight=0.50, epilog, nogc, extend | |
add rsp, 32 | |
pop rbx | |
pop rbp | |
@@ -141,12 +146,12 @@ G_M14182_IG11: ; bbWeight=0.50, epilog, nogc, extend | |
pop r14 | |
ret | |
;; size=11 bbWeight=0.50 PerfScore 1.88 | |
-G_M14182_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz | |
+G_M14182_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz | |
; gcrRegs +[rbx] | |
- cmp r14d, esi | |
- ja G_M14182_IG18 | |
- sub esi, r14d | |
- jns SHORT G_M14182_IG13 | |
+ cmp ebp, esi | |
+ ja SHORT G_M14182_IG18 | |
+ sub esi, ebp | |
+ jns SHORT G_M14182_IG14 | |
mov rdx, 0xD1FFAB1E | |
; gcrRegs +[rdx] | |
mov rcx, rdx | |
@@ -154,27 +159,27 @@ G_M14182_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 | |
call [<unknown method>] | |
; gcrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
- ;; size=33 bbWeight=0.50 PerfScore 3.00 | |
-G_M14182_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
- add r14d, edi | |
- mov dword ptr [rbx+0x4C], r14d | |
- mov ebp, edi | |
- mov esi, r14d | |
- cmp esi, ebp | |
- jge SHORT G_M14182_IG14 | |
- mov esi, edi | |
- mov ebp, r14d | |
- ;; size=21 bbWeight=0.50 PerfScore 1.75 | |
+ ;; size=27 bbWeight=0.50 PerfScore 3.00 | |
G_M14182_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+ add ebp, edi | |
+ mov dword ptr [rbx+0x4C], ebp | |
+ mov esi, edi | |
+ mov r14d, ebp | |
+ cmp r14d, esi | |
+ jge SHORT G_M14182_IG15 | |
+ mov r14d, edi | |
+ mov esi, ebp | |
+ ;; size=20 bbWeight=0.50 PerfScore 1.75 | |
+G_M14182_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
cmp dword ptr [rbx+0x58], 0 | |
- jne SHORT G_M14182_IG15 | |
+ jne SHORT G_M14182_IG16 | |
mov rcx, rbx | |
; gcrRegs +[rcx] | |
call [System.Text.RegularExpressions.RegexRunner:DoubleCrawl():this] | |
; gcrRegs -[rcx] | |
; gcr arg pop 0 | |
;; size=15 bbWeight=0.50 PerfScore 3.62 | |
-G_M14182_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+G_M14182_IG16: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
mov r9, gword ptr [rbx+0x20] | |
; gcrRegs +[r9] | |
mov ecx, dword ptr [rbx+0x58] | |
@@ -184,12 +189,12 @@ G_M14182_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, | |
jae SHORT G_M14182_IG19 | |
xor r8d, r8d | |
mov dword ptr [r9+4*rcx+0x10], r8d | |
- mov r9d, esi | |
+ mov r9d, r14d | |
; gcrRegs -[r9] | |
- sub r9d, ebp | |
+ sub r9d, esi | |
mov rcx, gword ptr [rbx+0x28] | |
; gcrRegs +[rcx] | |
- mov r8d, ebp | |
+ mov r8d, esi | |
xor edx, edx | |
cmp dword ptr [rcx], ecx | |
call [<unknown method>] | |
@@ -197,7 +202,7 @@ G_M14182_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, | |
; gcr arg pop 0 | |
mov eax, 1 | |
;; size=54 bbWeight=0.50 PerfScore 9.88 | |
-G_M14182_IG16: ; bbWeight=0.50, epilog, nogc, extend | |
+G_M14182_IG17: ; bbWeight=0.50, epilog, nogc, extend | |
add rsp, 32 | |
pop rbx | |
pop rbp | |
@@ -206,16 +211,7 @@ G_M14182_IG16: ; bbWeight=0.50, epilog, nogc, extend | |
pop r14 | |
ret | |
;; size=11 bbWeight=0.50 PerfScore 1.88 | |
-G_M14182_IG17: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, gcvars, byref | |
- ; gcrRegs +[rbx] | |
- ; byrRegs +[rbp] | |
- lea eax, [r14+0x01] | |
- mov r14d, eax | |
- jmp G_M14182_IG05 | |
- ;; size=12 bbWeight=4 PerfScore 11.00 | |
-G_M14182_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[rbx] | |
- ; byrRegs -[rbp] | |
+G_M14182_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref | |
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] | |
; gcr arg pop 0 | |
int3 | |
@@ -226,7 +222,7 @@ G_M14182_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
int3 | |
;; size=6 bbWeight=0 PerfScore 0.00 | |
-; Total bytes of code 316, prolog size 13, PerfScore 99.62, instruction count 98, allocated bytes for code 316 (MethodHash=fe54c899) for method System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts) | |
+; Total bytes of code 297, prolog size 13, PerfScore 91.88, instruction count 98, allocated bytes for code 297 (MethodHash=fe54c899) for method System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:green">-19</span> (<span style="color:green">-5.99%</span>) : 22280.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -15,7 +15,7 @@ | |
; V04 loc2 [V04,T11] ( 6, 4 ) int -> registers | |
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> | |
;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref | |
-; V07 loc5 [V07,T10] ( 5, 3.50) int -> r14 | |
+; V07 loc5 [V07,T10] ( 5, 3.50) int -> rbp | |
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" | |
;* V09 tmp1 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> | |
; V10 tmp2 [V10,T06] ( 3, 6 ) int -> rsi "Inlining Arg" | |
@@ -32,8 +32,8 @@ | |
;* V21 tmp13 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" | |
;* V22 tmp14 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
;* V23 tmp15 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
-; V24 tmp16 [V24,T12] ( 4, 4 ) int -> rsi "Inlining Arg" | |
-; V25 tmp17 [V25,T08] ( 5, 5 ) int -> rbp "Inlining Arg" | |
+; V24 tmp16 [V24,T12] ( 4, 4 ) int -> r14 "Inlining Arg" | |
+; V25 tmp17 [V25,T08] ( 5, 5 ) int -> rsi "Inlining Arg" | |
;* V26 tmp18 [V26 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" | |
; V27 tmp19 [V27,T17] ( 4, 2 ) int -> rcx single-def "Inline stloc first use temp" | |
; V28 tmp20 [V28,T15] ( 3, 3 ) ref -> r9 class-hnd single-def "impAppendStmt" <int[]> | |
@@ -92,47 +92,52 @@ G_M39392_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp | |
; gcrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
;; size=19 bbWeight=0.50 PerfScore 1.75 | |
-G_M39392_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref | |
+G_M39392_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
xor r14d, r14d | |
- ;; size=3 bbWeight=1 PerfScore 0.25 | |
-G_M39392_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
+ jmp SHORT G_M39392_IG06 | |
+ ;; size=5 bbWeight=1 PerfScore 2.25 | |
+G_M39392_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref | |
+ inc r14d | |
+ ;; size=3 bbWeight=4 PerfScore 1.00 | |
+G_M39392_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
cmp r14d, esi | |
- jae SHORT G_M39392_IG09 | |
+ jae SHORT G_M39392_IG10 | |
;; size=5 bbWeight=8 PerfScore 10.00 | |
-G_M39392_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
+G_M39392_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
movzx rcx, word ptr [rbp+2*r14] | |
mov eax, ecx | |
sar eax, 3 | |
cmp eax, 16 | |
- jae SHORT G_M39392_IG08 | |
+ jae SHORT G_M39392_IG09 | |
;; size=16 bbWeight=4 PerfScore 16.00 | |
-G_M39392_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
+G_M39392_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
mov eax, eax | |
mov rdx, 0xD1FFAB1E ; static handle | |
movzx rax, byte ptr [rax+rdx] | |
and ecx, 7 | |
bt eax, ecx | |
- jae SHORT G_M39392_IG09 | |
- jmp G_M39392_IG17 | |
- ;; size=29 bbWeight=2 PerfScore 12.50 | |
-G_M39392_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref | |
+ jae SHORT G_M39392_IG10 | |
+ jmp SHORT G_M39392_IG05 | |
+ ;; size=26 bbWeight=2 PerfScore 12.50 | |
+G_M39392_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz | |
call [System.Globalization.CharUnicodeInfo:GetUnicodeCategoryNoBoundsChecks(uint):int] | |
; gcr arg pop 0 | |
mov ecx, 1 | |
shlx eax, ecx, eax | |
test eax, 0xD1FFAB1E | |
- jne G_M39392_IG17 | |
- ;; size=27 bbWeight=2 PerfScore 10.00 | |
-G_M39392_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+ jne SHORT G_M39392_IG05 | |
+ ;; size=23 bbWeight=2 PerfScore 10.00 | |
+G_M39392_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
; byrRegs -[rbp] | |
- cmp r14d, 10 | |
- jge SHORT G_M39392_IG12 | |
- ;; size=6 bbWeight=1 PerfScore 1.25 | |
-G_M39392_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
+ mov ebp, r14d | |
+ cmp ebp, 10 | |
+ jge SHORT G_M39392_IG13 | |
+ ;; size=8 bbWeight=1 PerfScore 1.50 | |
+G_M39392_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rbx] | |
xor eax, eax | |
;; size=2 bbWeight=0.50 PerfScore 0.12 | |
-G_M39392_IG11: ; bbWeight=0.50, epilog, nogc, extend | |
+G_M39392_IG12: ; bbWeight=0.50, epilog, nogc, extend | |
add rsp, 32 | |
pop rbx | |
pop rbp | |
@@ -141,12 +146,12 @@ G_M39392_IG11: ; bbWeight=0.50, epilog, nogc, extend | |
pop r14 | |
ret | |
;; size=11 bbWeight=0.50 PerfScore 1.88 | |
-G_M39392_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz | |
+G_M39392_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz | |
; gcrRegs +[rbx] | |
- cmp r14d, esi | |
- ja G_M39392_IG18 | |
- sub esi, r14d | |
- jns SHORT G_M39392_IG13 | |
+ cmp ebp, esi | |
+ ja SHORT G_M39392_IG18 | |
+ sub esi, ebp | |
+ jns SHORT G_M39392_IG14 | |
mov rdx, 0xD1FFAB1E | |
; gcrRegs +[rdx] | |
mov rcx, rdx | |
@@ -154,27 +159,27 @@ G_M39392_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 | |
call [<unknown method>] | |
; gcrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
- ;; size=33 bbWeight=0.50 PerfScore 3.00 | |
-G_M39392_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
- add r14d, edi | |
- mov dword ptr [rbx+0x4C], r14d | |
- mov ebp, edi | |
- mov esi, r14d | |
- cmp esi, ebp | |
- jge SHORT G_M39392_IG14 | |
- mov esi, edi | |
- mov ebp, r14d | |
- ;; size=21 bbWeight=0.50 PerfScore 1.75 | |
+ ;; size=27 bbWeight=0.50 PerfScore 3.00 | |
G_M39392_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+ add ebp, edi | |
+ mov dword ptr [rbx+0x4C], ebp | |
+ mov esi, edi | |
+ mov r14d, ebp | |
+ cmp r14d, esi | |
+ jge SHORT G_M39392_IG15 | |
+ mov r14d, edi | |
+ mov esi, ebp | |
+ ;; size=20 bbWeight=0.50 PerfScore 1.75 | |
+G_M39392_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
cmp dword ptr [rbx+0x58], 0 | |
- jne SHORT G_M39392_IG15 | |
+ jne SHORT G_M39392_IG16 | |
mov rcx, rbx | |
; gcrRegs +[rcx] | |
call [System.Text.RegularExpressions.RegexRunner:DoubleCrawl():this] | |
; gcrRegs -[rcx] | |
; gcr arg pop 0 | |
;; size=15 bbWeight=0.50 PerfScore 3.62 | |
-G_M39392_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+G_M39392_IG16: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
mov r9, gword ptr [rbx+0x20] | |
; gcrRegs +[r9] | |
mov ecx, dword ptr [rbx+0x58] | |
@@ -184,12 +189,12 @@ G_M39392_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, | |
jae SHORT G_M39392_IG19 | |
xor r8d, r8d | |
mov dword ptr [r9+4*rcx+0x10], r8d | |
- mov r9d, esi | |
+ mov r9d, r14d | |
; gcrRegs -[r9] | |
- sub r9d, ebp | |
+ sub r9d, esi | |
mov rcx, gword ptr [rbx+0x28] | |
; gcrRegs +[rcx] | |
- mov r8d, ebp | |
+ mov r8d, esi | |
xor edx, edx | |
cmp dword ptr [rcx], ecx | |
call [<unknown method>] | |
@@ -197,7 +202,7 @@ G_M39392_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, | |
; gcr arg pop 0 | |
mov eax, 1 | |
;; size=54 bbWeight=0.50 PerfScore 9.88 | |
-G_M39392_IG16: ; bbWeight=0.50, epilog, nogc, extend | |
+G_M39392_IG17: ; bbWeight=0.50, epilog, nogc, extend | |
add rsp, 32 | |
pop rbx | |
pop rbp | |
@@ -206,16 +211,7 @@ G_M39392_IG16: ; bbWeight=0.50, epilog, nogc, extend | |
pop r14 | |
ret | |
;; size=11 bbWeight=0.50 PerfScore 1.88 | |
-G_M39392_IG17: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, gcvars, byref | |
- ; gcrRegs +[rbx] | |
- ; byrRegs +[rbp] | |
- lea eax, [r14+0x01] | |
- mov r14d, eax | |
- jmp G_M39392_IG05 | |
- ;; size=12 bbWeight=4 PerfScore 11.00 | |
-G_M39392_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[rbx] | |
- ; byrRegs -[rbp] | |
+G_M39392_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref | |
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] | |
; gcr arg pop 0 | |
int3 | |
@@ -226,7 +222,7 @@ G_M39392_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
int3 | |
;; size=6 bbWeight=0 PerfScore 0.00 | |
-; Total bytes of code 317, prolog size 13, PerfScore 99.62, instruction count 98, allocated bytes for code 317 (MethodHash=9ce8661f) for method System.Text.RegularExpressions.CompiledRegexRunner:Regex7_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts) | |
+; Total bytes of code 298, prolog size 13, PerfScore 91.88, instruction count 98, allocated bytes for code 298 (MethodHash=9ce8661f) for method System.Text.RegularExpressions.CompiledRegexRunner:Regex7_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+10</span> (<span style="color:red">+2.21%</span>) : 31506.dasm - Benchstone.BenchF.InvMt:Inner(double[][],byref,byref) (Tier1-OSR)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -40,7 +40,7 @@ | |
; | |
; Lcl frame size = 32 | |
-G_M35463_IG01: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
+G_M35463_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
sub rsp, 72 | |
mov qword ptr [rsp+0xE8], r14 | |
mov qword ptr [rsp+0xE0], rdi | |
@@ -56,35 +56,52 @@ G_M35463_IG01: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
mov r10d, dword ptr [rsp+0xA4] | |
mov eax, dword ptr [rsp+0x9C] | |
mov r9d, dword ptr [rsp+0x98] | |
- ;; size=92 bbWeight=64 PerfScore 1296.00 | |
-G_M35463_IG02: ; bbWeight=64, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref, isz | |
+ ;; size=92 bbWeight=0.01 PerfScore 0.20 | |
+G_M35463_IG02: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref, isz | |
+ jmp SHORT G_M35463_IG04 | |
+ ;; size=2 bbWeight=0.01 PerfScore 0.02 | |
+G_M35463_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref | |
+ mov r11d, dword ptr [rcx+0x08] | |
+ cmp eax, r11d | |
+ jae G_M35463_IG14 | |
+ mov r9d, eax | |
+ mov r9, gword ptr [rcx+8*r9+0x10] | |
+ ; gcrRegs +[r9] | |
+ cmp r10d, dword ptr [r9+0x08] | |
+ jae G_M35463_IG14 | |
+ mov r11d, r10d | |
+ vmovsd xmm0, qword ptr [r9+8*r11+0x10] | |
+ mov r9d, 1 | |
+ ; gcrRegs -[r9] | |
+ ;; size=47 bbWeight=8 PerfScore 112.00 | |
+G_M35463_IG04: ; bbWeight=64, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref, isz | |
mov r11d, dword ptr [r8] | |
lea r11d, [2*r11+0x01] | |
cmp r9d, r11d | |
- jg SHORT G_M35463_IG05 | |
+ jg SHORT G_M35463_IG07 | |
;; size=16 bbWeight=64 PerfScore 240.00 | |
-G_M35463_IG03: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref | |
+G_M35463_IG05: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref | |
mov r11d, dword ptr [rcx+0x08] | |
mov ebx, eax | |
mov esi, r10d | |
;; size=9 bbWeight=2 PerfScore 5.00 | |
-G_M35463_IG04: ; bbWeight=32, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref, isz | |
+G_M35463_IG06: ; bbWeight=32, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref, isz | |
cmp eax, r11d | |
- jae G_M35463_IG13 | |
+ jae G_M35463_IG14 | |
mov rdi, gword ptr [rcx+8*rbx+0x10] | |
; gcrRegs +[rdi] | |
mov rbp, rdi | |
; gcrRegs +[rbp] | |
mov r14d, dword ptr [rdi+0x08] | |
cmp r9d, r14d | |
- jae G_M35463_IG13 | |
+ jae G_M35463_IG14 | |
mov r14d, r9d | |
vmovsd xmm1, qword ptr [rdi+8*r14+0x10] | |
cmp r10d, r11d | |
- jae G_M35463_IG13 | |
+ jae G_M35463_IG14 | |
mov rdi, gword ptr [rcx+8*rsi+0x10] | |
cmp r9d, dword ptr [rdi+0x08] | |
- jae G_M35463_IG13 | |
+ jae G_M35463_IG14 | |
vmulsd xmm2, xmm0, qword ptr [rdi+8*r14+0x10] | |
vsubsd xmm1, xmm1, xmm2 | |
vmovsd qword ptr [rbp+8*r14+0x10], xmm1 | |
@@ -93,28 +110,28 @@ G_M35463_IG04: ; bbWeight=32, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r | |
; gcrRegs -[rdi] | |
lea edi, [2*rdi+0x01] | |
cmp r9d, edi | |
- jle SHORT G_M35463_IG04 | |
+ jle SHORT G_M35463_IG06 | |
;; size=100 bbWeight=32 PerfScore 1064.00 | |
-G_M35463_IG05: ; bbWeight=1024, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref | |
+G_M35463_IG07: ; bbWeight=1024, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref | |
; gcrRegs -[rbp] | |
inc eax | |
cmp eax, dword ptr [r8] | |
- jle G_M35463_IG10 | |
+ jle G_M35463_IG12 | |
;; size=11 bbWeight=1024 PerfScore 4352.00 | |
-G_M35463_IG06: ; bbWeight=512, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref | |
+G_M35463_IG08: ; bbWeight=512, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref | |
inc r10d | |
cmp r10d, dword ptr [r8] | |
- jg G_M35463_IG12 | |
+ jg G_M35463_IG13 | |
;; size=12 bbWeight=512 PerfScore 2176.00 | |
-G_M35463_IG07: ; bbWeight=128, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref, isz | |
+G_M35463_IG09: ; bbWeight=128, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref, isz | |
mov r11d, dword ptr [rcx+0x08] | |
cmp r10d, r11d | |
- jae G_M35463_IG13 | |
+ jae G_M35463_IG14 | |
mov eax, r10d | |
mov r11, gword ptr [rcx+8*rax+0x10] | |
; gcrRegs +[r11] | |
cmp r10d, dword ptr [r11+0x08] | |
- jae G_M35463_IG13 | |
+ jae G_M35463_IG14 | |
vmovsd xmm0, qword ptr [r11+8*rax+0x10] | |
vmulsd xmm1, xmm0, qword ptr [rdx] | |
vmovsd qword ptr [rdx], xmm1 | |
@@ -123,16 +140,16 @@ G_M35463_IG07: ; bbWeight=128, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx | |
; gcrRegs -[r11] | |
lea r11d, [2*r11+0x01] | |
test r11d, r11d | |
- jle SHORT G_M35463_IG09 | |
+ jle SHORT G_M35463_IG11 | |
;; size=68 bbWeight=128 PerfScore 3264.00 | |
-G_M35463_IG08: ; bbWeight=1024, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref, isz | |
+G_M35463_IG10: ; bbWeight=1024, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref, isz | |
mov r11, gword ptr [rcx+8*rax+0x10] | |
; gcrRegs +[r11] | |
mov rbx, r11 | |
; gcrRegs +[rbx] | |
mov esi, dword ptr [r11+0x08] | |
cmp r9d, esi | |
- jae SHORT G_M35463_IG13 | |
+ jae SHORT G_M35463_IG14 | |
mov esi, r9d | |
vmovsd xmm1, qword ptr [r11+8*rsi+0x10] | |
vdivsd xmm1, xmm1, xmm0 | |
@@ -142,34 +159,20 @@ G_M35463_IG08: ; bbWeight=1024, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx | |
; gcrRegs -[r11] | |
lea r11d, [2*r11+0x01] | |
cmp r9d, r11d | |
- jle SHORT G_M35463_IG08 | |
+ jle SHORT G_M35463_IG10 | |
;; size=56 bbWeight=1024 PerfScore 28416.00 | |
-G_M35463_IG09: ; bbWeight=128, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref | |
+G_M35463_IG11: ; bbWeight=128, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref | |
; gcrRegs -[rbx] | |
mov eax, 1 | |
cmp dword ptr [r8], 0 | |
- jle G_M35463_IG06 | |
+ jle G_M35463_IG08 | |
;; size=15 bbWeight=128 PerfScore 544.00 | |
-G_M35463_IG10: ; bbWeight=128, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref | |
+G_M35463_IG12: ; bbWeight=128, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref | |
cmp eax, r10d | |
- je G_M35463_IG05 | |
- ;; size=9 bbWeight=128 PerfScore 160.00 | |
-G_M35463_IG11: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0104 {rdx r8}, byref, isz | |
- mov r11d, dword ptr [rcx+0x08] | |
- cmp eax, r11d | |
- jae SHORT G_M35463_IG13 | |
- mov r9d, eax | |
- mov r9, gword ptr [rcx+8*r9+0x10] | |
- ; gcrRegs +[r9] | |
- cmp r10d, dword ptr [r9+0x08] | |
- jae SHORT G_M35463_IG13 | |
- mov r11d, r10d | |
- vmovsd xmm0, qword ptr [r9+8*r11+0x10] | |
- mov r9d, 1 | |
- ; gcrRegs -[r9] | |
- jmp G_M35463_IG02 | |
- ;; size=44 bbWeight=8 PerfScore 128.00 | |
-G_M35463_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc | |
+ je G_M35463_IG07 | |
+ jmp G_M35463_IG03 | |
+ ;; size=14 bbWeight=128 PerfScore 416.00 | |
+G_M35463_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc | |
; gcrRegs -[rcx] | |
; byrRegs -[rdx r8] | |
add rsp, 208 | |
@@ -180,13 +183,13 @@ G_M35463_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
pop rbp | |
ret | |
;; size=14 bbWeight=1 PerfScore 3.75 | |
-G_M35463_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref | |
+G_M35463_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref | |
call CORINFO_HELP_RNGCHKFAIL | |
; gcr arg pop 0 | |
int3 | |
;; size=6 bbWeight=0 PerfScore 0.00 | |
-; Total bytes of code 452, prolog size 92, PerfScore 41648.75, instruction count 101, allocated bytes for code 452 (MethodHash=109d7578) for method Benchstone.BenchF.InvMt:Inner(double[][],byref,byref) (Tier1-OSR) | |
+; Total bytes of code 462, prolog size 92, PerfScore 40592.97, instruction count 102, allocated bytes for code 462 (MethodHash=109d7578) for method Benchstone.BenchF.InvMt:Inner(double[][],byref,byref) (Tier1-OSR) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+10</span> (<span style="color:red">+2.38%</span>) : 38655.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:DecodeModifiersOrThrow(byref,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[System.__Canon]]:this (Tier1)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -73,199 +73,18 @@ G_M64230_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
mov rsi, r8 | |
; byrRegs +[rsi] | |
;; size=37 bbWeight=1 PerfScore 11.25 | |
-G_M64230_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref | |
+G_M64230_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref, isz | |
xor rbp, rbp | |
; gcrRegs +[rbp] | |
- ;; size=2 bbWeight=1 PerfScore 0.25 | |
-G_M64230_IG03: ; bbWeight=8, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0048 {rbx rsi}, byref, isz | |
- mov rdx, qword ptr [rbx+0x18] | |
- sub rdx, qword ptr [rbx] | |
- mov rcx, rbx | |
- ; byrRegs +[rcx] | |
- lea r8, [rsp+0x38] | |
- call [<unknown method>] | |
- ; byrRegs -[rcx] | |
- ; gcr arg pop 0 | |
- movsxd rcx, dword ptr [rsp+0x38] | |
- add qword ptr [rbx+0x18], rcx | |
- lea ecx, [rax-0x11] | |
- cmp ecx, 1 | |
- jbe SHORT G_M64230_IG06 | |
- ;; size=38 bbWeight=8 PerfScore 132.00 | |
-G_M64230_IG04: ; bbWeight=2, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0048 {rbx rsi}, byref, isz | |
- cmp eax, 255 | |
- jg SHORT G_M64230_IG05 | |
- movzx rcx, al | |
- jmp SHORT G_M64230_IG07 | |
- ;; size=12 bbWeight=2 PerfScore 7.00 | |
-G_M64230_IG05: ; bbWeight=2, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0048 {rbx rsi}, byref, isz | |
- xor ecx, ecx | |
- jmp SHORT G_M64230_IG07 | |
- ;; size=4 bbWeight=2 PerfScore 4.50 | |
-G_M64230_IG06: ; bbWeight=2, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0048 {rbx rsi}, byref | |
- mov ecx, 64 | |
- ;; size=5 bbWeight=2 PerfScore 0.50 | |
-G_M64230_IG07: ; bbWeight=8, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0048 {rbx rsi}, byref, isz | |
- mov byte ptr [rsi], cl | |
- movzx rcx, byte ptr [rsi] | |
- cmp ecx, 31 | |
- je SHORT G_M64230_IG15 | |
- ;; size=10 bbWeight=8 PerfScore 34.00 | |
-G_M64230_IG08: ; bbWeight=4, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0048 {rbx rsi}, byref, isz | |
- cmp ecx, 32 | |
- je SHORT G_M64230_IG14 | |
- ;; size=5 bbWeight=4 PerfScore 5.00 | |
-G_M64230_IG09: ; bbWeight=1, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {}, byref, isz | |
- ; byrRegs -[rbx rsi] | |
- test rbp, rbp | |
- je SHORT G_M64230_IG12 | |
- ;; size=5 bbWeight=1 PerfScore 1.25 | |
-G_M64230_IG10: ; bbWeight=0.50, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {}, byref | |
- mov rcx, rbp | |
- ; gcrRegs +[rcx] | |
- call [Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.ModifierInfo`1[System.__Canon]]:ToImmutableAndFree():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[System.__Canon]]:this] | |
- ; gcrRegs -[rcx rbp] +[rax] | |
- ; gcr arg pop 0 | |
- nop | |
- ;; size=10 bbWeight=0.50 PerfScore 1.75 | |
-G_M64230_IG11: ; bbWeight=0.50, epilog, nogc, extend | |
- add rsp, 72 | |
- pop rbx | |
- pop rbp | |
- pop rsi | |
- pop rdi | |
- pop r12 | |
- pop r13 | |
- pop r14 | |
- pop r15 | |
- ret | |
- ;; size=17 bbWeight=0.50 PerfScore 2.62 | |
-G_M64230_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref | |
- ; gcrRegs -[rax] | |
- xor eax, eax | |
- ;; size=2 bbWeight=0.50 PerfScore 0.12 | |
-G_M64230_IG13: ; bbWeight=0.50, epilog, nogc, extend | |
- add rsp, 72 | |
- pop rbx | |
- pop rbp | |
- pop rsi | |
- pop rdi | |
- pop r12 | |
- pop r13 | |
- pop r14 | |
- pop r15 | |
- ret | |
- ;; size=17 bbWeight=0.50 PerfScore 2.62 | |
-G_M64230_IG14: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0048 {rbx rsi}, gcvars, byref, isz | |
- ; gcrRegs +[rbp] | |
- ; byrRegs +[rbx rsi] | |
- mov r14d, 1 | |
- jmp SHORT G_M64230_IG16 | |
- ;; size=8 bbWeight=2 PerfScore 4.50 | |
-G_M64230_IG15: ; bbWeight=2, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0048 {rbx rsi}, byref | |
- xor r14d, r14d | |
- ;; size=3 bbWeight=2 PerfScore 0.50 | |
-G_M64230_IG16: ; bbWeight=4, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0048 {rbx rsi}, byref, isz | |
- mov rcx, rdi | |
- ; gcrRegs +[rcx] | |
- mov rdx, rbx | |
- ; byrRegs +[rdx] | |
- call [<unknown method>] | |
- ; gcrRegs -[rcx] +[rax] | |
- ; byrRegs -[rdx] | |
- ; gcr arg pop 0 | |
- mov r15, rax | |
- ; gcrRegs +[r15] | |
- cmp dword ptr [rdi], edi | |
- test rbp, rbp | |
- jne SHORT G_M64230_IG21 | |
- ;; size=22 bbWeight=4 PerfScore 32.00 | |
-G_M64230_IG17: ; bbWeight=2, gcrefRegs=8080 {rdi r15}, byrefRegs=0048 {rbx rsi}, byref, isz | |
- ; gcrRegs -[rax rbp] | |
- mov rcx, qword ptr [rdi] | |
- mov rdx, qword ptr [rcx+0x38] | |
- mov rdx, qword ptr [rdx+0x08] | |
- mov rdx, qword ptr [rdx+0x48] | |
- test rdx, rdx | |
- je SHORT G_M64230_IG19 | |
- ;; size=20 bbWeight=2 PerfScore 18.50 | |
-G_M64230_IG18: ; bbWeight=1.60, gcrefRegs=8080 {rdi r15}, byrefRegs=0048 {rbx rsi}, byref, isz | |
- jmp SHORT G_M64230_IG20 | |
- ;; size=2 bbWeight=1.60 PerfScore 3.20 | |
-G_M64230_IG19: ; bbWeight=0.40, gcrefRegs=8080 {rdi r15}, byrefRegs=0048 {rbx rsi}, byref | |
- mov rdx, 0xD1FFAB1E ; global ptr | |
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS | |
- ; gcr arg pop 0 | |
- mov rdx, rax | |
- ;; size=18 bbWeight=0.40 PerfScore 0.60 | |
-G_M64230_IG20: ; bbWeight=2, gcrefRegs=8080 {rdi r15}, byrefRegs=0048 {rbx rsi}, byref | |
- mov rcx, rdx | |
- call [Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.ModifierInfo`1[System.__Canon]]:GetInstance():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.ModifierInfo`1[System.__Canon]]] | |
- ; gcrRegs +[rax] | |
- ; gcr arg pop 0 | |
- mov rbp, rax | |
- ; gcrRegs +[rbp] | |
- ;; size=12 bbWeight=2 PerfScore 7.00 | |
-G_M64230_IG21: ; bbWeight=4, gcrefRegs=80A0 {rbp rdi r15}, byrefRegs=0048 {rbx rsi}, byref, isz | |
- ; gcrRegs -[rax] | |
- mov r13, gword ptr [rbp+0x08] | |
- ; gcrRegs +[r13] | |
- mov r12d, dword ptr [r13+0x10] | |
- inc r12d | |
- mov rcx, gword ptr [r13+0x08] | |
- ; gcrRegs +[rcx] | |
- cmp dword ptr [rcx+0x08], r12d | |
- jge SHORT G_M64230_IG28 | |
- ;; size=21 bbWeight=4 PerfScore 41.00 | |
-G_M64230_IG22: ; bbWeight=2, gcrefRegs=A0A0 {rbp rdi r13 r15}, byrefRegs=0048 {rbx rsi}, byref, isz | |
- ; gcrRegs -[rcx] | |
- mov rcx, gword ptr [r13+0x08] | |
- ; gcrRegs +[rcx] | |
- mov eax, dword ptr [rcx+0x08] | |
- add eax, eax | |
- cmp eax, r12d | |
- jl SHORT G_M64230_IG23 | |
- jmp SHORT G_M64230_IG24 | |
- ;; size=16 bbWeight=2 PerfScore 15.00 | |
-G_M64230_IG23: ; bbWeight=2, gcrefRegs=A0A0 {rbp rdi r13 r15}, byrefRegs=0048 {rbx rsi}, byref | |
- ; gcrRegs -[rcx] | |
- mov dword ptr [rsp+0x34], r12d | |
- mov eax, dword ptr [rsp+0x34] | |
- ;; size=9 bbWeight=2 PerfScore 4.00 | |
-G_M64230_IG24: ; bbWeight=2, gcrefRegs=A0A0 {rbp rdi r13 r15}, byrefRegs=0048 {rbx rsi}, byref, isz | |
- mov rcx, qword ptr [r13] | |
- mov rdx, qword ptr [rcx+0x38] | |
- mov rdx, qword ptr [rdx] | |
- mov r8, qword ptr [rdx+0x10] | |
- test r8, r8 | |
- je SHORT G_M64230_IG26 | |
- ;; size=20 bbWeight=2 PerfScore 18.50 | |
-G_M64230_IG25: ; bbWeight=1.60, gcrefRegs=A0A0 {rbp rdi r13 r15}, byrefRegs=0048 {rbx rsi}, byref, isz | |
- mov rcx, r8 | |
- jmp SHORT G_M64230_IG27 | |
- ;; size=5 bbWeight=1.60 PerfScore 3.60 | |
-G_M64230_IG26: ; bbWeight=0.40, gcrefRegs=A0A0 {rbp rdi r13 r15}, byrefRegs=0048 {rbx rsi}, byref | |
- mov dword ptr [rsp+0x34], eax | |
- mov rdx, 0xD1FFAB1E ; global ptr | |
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS | |
- ; gcr arg pop 0 | |
- mov rcx, rax | |
- mov eax, dword ptr [rsp+0x34] | |
- ;; size=26 bbWeight=0.40 PerfScore 1.40 | |
-G_M64230_IG27: ; bbWeight=2, gcrefRegs=A0A0 {rbp rdi r13 r15}, byrefRegs=0048 {rbx rsi}, byref | |
- lea rdx, bword ptr [r13+0x08] | |
- ; byrRegs +[rdx] | |
- mov r8d, eax | |
- call [System.Array:Resize[Microsoft.CodeAnalysis.ModifierInfo`1[System.__Canon]](byref,int)] | |
- ; byrRegs -[rdx] | |
- ; gcr arg pop 0 | |
- ;; size=13 bbWeight=2 PerfScore 7.50 | |
-G_M64230_IG28: ; bbWeight=4, gcrefRegs=A0A0 {rbp rdi r13 r15}, byrefRegs=0048 {rbx rsi}, byref, isz | |
+ jmp SHORT G_M64230_IG04 | |
+ ;; size=4 bbWeight=1 PerfScore 2.25 | |
+G_M64230_IG03: ; bbWeight=4, gcrefRegs=A0A0 {rbp rdi r13 r15}, byrefRegs=0048 {rbx rsi}, byref | |
+ ; gcrRegs +[r13 r15] | |
mov rcx, gword ptr [r13+0x08] | |
; gcrRegs +[rcx] | |
mov edx, dword ptr [r13+0x10] | |
cmp edx, dword ptr [rcx+0x08] | |
- jae SHORT G_M64230_IG29 | |
+ jae G_M64230_IG29 | |
shl rdx, 4 | |
lea rax, bword ptr [rcx+rdx+0x10] | |
; byrRegs +[rax] | |
@@ -283,18 +102,203 @@ G_M64230_IG28: ; bbWeight=4, gcrefRegs=A0A0 {rbp rdi r13 r15}, byrefRegs= | |
; byrRegs +[r15] | |
mov byte ptr [r15+0x08], r14b | |
mov dword ptr [r13+0x10], r12d | |
- jmp G_M64230_IG03 | |
- ;; size=56 bbWeight=4 PerfScore 68.00 | |
-G_M64230_IG29: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref | |
- ; gcrRegs -[rbp r13] | |
- ; byrRegs -[rbx rsi r15] | |
+ ;; size=55 bbWeight=4 PerfScore 60.00 | |
+G_M64230_IG04: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0048 {rbx rsi}, gcvars, byref, isz | |
+ ; gcrRegs -[r13] | |
+ ; byrRegs -[r15] | |
; GC ptr vars -{V31} | |
+ mov rdx, qword ptr [rbx+0x18] | |
+ sub rdx, qword ptr [rbx] | |
+ mov rcx, rbx | |
+ ; byrRegs +[rcx] | |
+ lea r8, [rsp+0x38] | |
+ call [<unknown method>] | |
+ ; byrRegs -[rcx] | |
+ ; gcr arg pop 0 | |
+ movsxd rcx, dword ptr [rsp+0x38] | |
+ add qword ptr [rbx+0x18], rcx | |
+ lea ecx, [rax-0x11] | |
+ cmp ecx, 1 | |
+ jbe SHORT G_M64230_IG07 | |
+ ;; size=38 bbWeight=8 PerfScore 132.00 | |
+G_M64230_IG05: ; bbWeight=2, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0048 {rbx rsi}, byref, isz | |
+ cmp eax, 255 | |
+ jg SHORT G_M64230_IG06 | |
+ movzx rcx, al | |
+ jmp SHORT G_M64230_IG08 | |
+ ;; size=12 bbWeight=2 PerfScore 7.00 | |
+G_M64230_IG06: ; bbWeight=2, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0048 {rbx rsi}, byref, isz | |
+ xor ecx, ecx | |
+ jmp SHORT G_M64230_IG08 | |
+ ;; size=4 bbWeight=2 PerfScore 4.50 | |
+G_M64230_IG07: ; bbWeight=2, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0048 {rbx rsi}, byref | |
+ mov ecx, 64 | |
+ ;; size=5 bbWeight=2 PerfScore 0.50 | |
+G_M64230_IG08: ; bbWeight=8, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0048 {rbx rsi}, byref, isz | |
+ mov byte ptr [rsi], cl | |
+ movzx rcx, byte ptr [rsi] | |
... | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+10</span> (<span style="color:red">+2.59%</span>) : 50295.dasm - Benchstone.MDBenchI.MDGeneralArray:Bench(int,int[,,],int[,,]):ubyte (Tier1-OSR)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -53,21 +53,25 @@ G_M4144_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre | |
mov r9d, dword ptr [rsp+0x9C] | |
mov r10d, dword ptr [rsp+0x98] | |
;; size=98 bbWeight=0.01 PerfScore 0.18 | |
-G_M4144_IG02: ; bbWeight=0.01, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref | |
+G_M4144_IG02: ; bbWeight=0.01, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz | |
mov r11d, dword ptr [rdx+0x24] | |
- ;; size=4 bbWeight=0.01 PerfScore 0.02 | |
-G_M4144_IG03: ; bbWeight=64, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref | |
+ jmp SHORT G_M4144_IG04 | |
+ ;; size=6 bbWeight=0.01 PerfScore 0.04 | |
+G_M4144_IG03: ; bbWeight=8, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref | |
+ mov r10d, r11d | |
+ ;; size=3 bbWeight=8 PerfScore 2.00 | |
+G_M4144_IG04: ; bbWeight=64, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref | |
mov ebx, dword ptr [rdx+0x18] | |
lea ebx, [r11+rbx-0x01] | |
cmp ebx, r10d | |
- jl G_M4144_IG06 | |
+ jl G_M4144_IG07 | |
;; size=17 bbWeight=64 PerfScore 272.00 | |
-G_M4144_IG04: ; bbWeight=4, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref | |
+G_M4144_IG05: ; bbWeight=4, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref | |
mov esi, eax | |
sub esi, dword ptr [r8+0x1C] | |
mov edi, dword ptr [r8+0x10] | |
;; size=10 bbWeight=4 PerfScore 21.00 | |
-G_M4144_IG05: ; bbWeight=64, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz | |
+G_M4144_IG06: ; bbWeight=64, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref | |
mov ebp, esi | |
cmp ebp, edi | |
jae G_M4144_IG15 | |
@@ -101,50 +105,47 @@ G_M4144_IG05: ; bbWeight=64, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, | |
mov r13d, r10d | |
sub r13d, dword ptr [rdx+0x24] | |
cmp r13d, r15d | |
- jae SHORT G_M4144_IG15 | |
+ jae G_M4144_IG15 | |
add r14d, r13d | |
mov r14d, dword ptr [rdx+4*r14+0x28] | |
mov dword ptr [r8+4*rbp+0x28], r14d | |
inc r10d | |
cmp ebx, r10d | |
- jge G_M4144_IG05 | |
- ;; size=153 bbWeight=64 PerfScore 3088.00 | |
-G_M4144_IG06: ; bbWeight=64, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz | |
+ jge G_M4144_IG06 | |
+ ;; size=157 bbWeight=64 PerfScore 3088.00 | |
+G_M4144_IG07: ; bbWeight=64, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref | |
inc r9d | |
mov r10d, dword ptr [rdx+0x20] | |
mov ebx, dword ptr [rdx+0x14] | |
lea r10d, [r10+rbx-0x01] | |
cmp r10d, r9d | |
- jge SHORT G_M4144_IG12 | |
- ;; size=20 bbWeight=64 PerfScore 416.00 | |
-G_M4144_IG07: ; bbWeight=2, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref | |
+ jge G_M4144_IG03 | |
+ ;; size=24 bbWeight=64 PerfScore 416.00 | |
+G_M4144_IG08: ; bbWeight=2, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref | |
mov ebx, dword ptr [rdx+0x1C] | |
;; size=3 bbWeight=2 PerfScore 4.00 | |
-G_M4144_IG08: ; bbWeight=256, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz | |
+G_M4144_IG09: ; bbWeight=256, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz | |
inc eax | |
mov r9d, dword ptr [rdx+0x10] | |
lea r9d, [rbx+r9-0x01] | |
cmp r9d, eax | |
- jge SHORT G_M4144_IG11 | |
+ jge SHORT G_M4144_IG12 | |
;; size=16 bbWeight=256 PerfScore 1152.00 | |
-G_M4144_IG09: ; bbWeight=128, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz | |
+G_M4144_IG10: ; bbWeight=128, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz | |
dec ecx | |
je SHORT G_M4144_IG13 | |
;; size=4 bbWeight=128 PerfScore 160.00 | |
-G_M4144_IG10: ; bbWeight=32, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz | |
+G_M4144_IG11: ; bbWeight=32, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz | |
mov eax, ebx | |
cmp r9d, eax | |
- jl SHORT G_M4144_IG09 | |
+ jl SHORT G_M4144_IG10 | |
;; size=7 bbWeight=32 PerfScore 48.00 | |
-G_M4144_IG11: ; bbWeight=32, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz | |
+G_M4144_IG12: ; bbWeight=32, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz | |
mov r9d, dword ptr [rdx+0x20] | |
cmp r10d, r9d | |
- jl SHORT G_M4144_IG08 | |
- ;; size=9 bbWeight=32 PerfScore 104.00 | |
-G_M4144_IG12: ; bbWeight=8, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref | |
- mov r10d, r11d | |
+ jl SHORT G_M4144_IG09 | |
jmp G_M4144_IG03 | |
- ;; size=8 bbWeight=8 PerfScore 18.00 | |
+ ;; size=14 bbWeight=32 PerfScore 168.00 | |
G_M4144_IG13: ; bbWeight=1, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref | |
mov rcx, rdx | |
; gcrRegs +[rcx] | |
@@ -171,7 +172,7 @@ G_M4144_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {} | |
int3 | |
;; size=6 bbWeight=0 PerfScore 0.00 | |
-; Total bytes of code 386, prolog size 98, PerfScore 5291.70, instruction count 98, allocated bytes for code 386 (MethodHash=aa90efcf) for method Benchstone.MDBenchI.MDGeneralArray:Bench(int,int[,,],int[,,]):ubyte (Tier1-OSR) | |
+; Total bytes of code 396, prolog size 98, PerfScore 5339.72, instruction count 99, allocated bytes for code 396 (MethodHash=aa90efcf) for method Benchstone.MDBenchI.MDGeneralArray:Bench(int,int[,,],int[,,]):ubyte (Tier1-OSR) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
</div></details> | |
<details> | |
<summary>coreclr_tests.run.windows.x64.checked.mch</summary> | |
<div style="margin-left:1em"> | |
<details> | |
<summary><span style="color:green">-46</span> (<span style="color:green">-8.57%</span>) : 180665.dasm - VectorTest+VectorExpTest`1[double]:VectorExp(System.Numerics.Vector`1[double],double,double,double):int (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -12,63 +12,68 @@ | |
; V01 arg1 [V01,T15] ( 3, 3 ) double -> mm1 single-def | |
; V02 arg2 [V02,T16] ( 3, 3 ) double -> mm2 single-def | |
; V03 arg3 [V03,T17] ( 3, 3 ) double -> mm3 single-def | |
-; V04 loc0 [V04,T09] ( 5, 10.50) simd32 -> mm7 <System.Numerics.Vector`1[double]> | |
-; V05 loc1 [V05,T08] ( 4, 13 ) simd32 -> mm0 <System.Numerics.Vector`1[double]> | |
-; V06 loc2 [V06,T06] ( 5, 21 ) simd32 -> mm4 <System.Numerics.Vector`1[double]> | |
-; V07 loc3 [V07,T11] ( 2, 9 ) simd32 -> mm9 ld-addr-op <System.Numerics.Vector`1[double]> | |
+; V04 loc0 [V04,T09] ( 5, 10.50) simd32 -> mm6 <System.Numerics.Vector`1[double]> | |
+; V05 loc1 [V05,T08] ( 4, 13 ) simd32 -> mm4 <System.Numerics.Vector`1[double]> | |
+; V06 loc2 [V06,T06] ( 5, 21 ) simd32 -> mm16 <System.Numerics.Vector`1[double]> | |
+; V07 loc3 [V07,T11] ( 2, 9 ) simd32 -> mm2 ld-addr-op <System.Numerics.Vector`1[double]> | |
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" | |
;* V09 tmp1 [V09 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[double]> | |
;* V10 tmp2 [V10 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[double]> | |
;* V11 tmp3 [V11 ] ( 0, 0 ) simd32 -> zero-ref "impAppendStmt" | |
; V12 tmp4 [V12,T00] ( 6, 20.50) int -> rbx "Inline stloc first use temp" | |
-; V13 tmp5 [V13,T12] ( 2, 9 ) simd32 -> mm7 ld-addr-op "Inlining Arg" <System.Numerics.Vector`1[double]> | |
+; V13 tmp5 [V13,T12] ( 2, 9 ) simd32 -> mm6 ld-addr-op "Inlining Arg" <System.Numerics.Vector`1[double]> | |
;* V14 tmp6 [V14 ] ( 0, 0 ) double -> zero-ref ld-addr-op "Inline stloc first use temp" | |
;* V15 tmp7 [V15 ] ( 0, 0 ) double -> zero-ref "impAppendStmt" | |
; V16 tmp8 [V16,T05] ( 2, 2 ) ref -> rdx single-def "argument with side effect" | |
; V17 tmp9 [V17,T01] ( 2, 16 ) ref -> r8 "argument with side effect" | |
-; V18 tmp10 [V18,T07] ( 2, 16 ) double -> mm9 "argument with side effect" | |
+; V18 tmp10 [V18,T07] ( 2, 16 ) double -> mm8 "argument with side effect" | |
; V19 tmp11 [V19,T02] ( 2, 16 ) ref -> rdx "argument with side effect" | |
-; V20 cse0 [V20,T10] ( 3, 10 ) simd32 -> mm10 hoist "CSE #02: aggressive" | |
-; V21 cse1 [V21,T13] ( 4, 7 ) simd32 -> mm6 "CSE #01: aggressive" | |
+; V20 cse0 [V20,T10] ( 3, 10 ) simd32 -> mm17 hoist "CSE #02: aggressive" | |
+; V21 cse1 [V21,T13] ( 4, 7 ) simd32 -> mm0 "CSE #01: aggressive" | |
; V22 cse2 [V22,T04] ( 2, 4.50) ref -> rsi hoist "CSE #04: aggressive" | |
-; V23 cse3 [V23,T14] ( 3, 6 ) simd32 -> mm8 "CSE #03: aggressive" | |
+; V23 cse3 [V23,T14] ( 3, 6 ) simd32 -> mm5 "CSE #03: aggressive" | |
; V24 rat0 [V24 ] ( 1, 1 ) simd32 -> [rsp+0x20] must-init "SIMDInitTempVar" | |
; | |
-; Lcl frame size = 168 | |
+; Lcl frame size = 136 | |
-G_M59527_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
+G_M59527_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG | |
push rsi | |
push rbx | |
- sub rsp, 168 | |
- vmovaps xmmword ptr [rsp+0x90], xmm6 | |
- vmovaps xmmword ptr [rsp+0x80], xmm7 | |
- vmovaps xmmword ptr [rsp+0x70], xmm8 | |
- vmovaps xmmword ptr [rsp+0x60], xmm9 | |
- vmovaps xmmword ptr [rsp+0x50], xmm10 | |
+ sub rsp, 136 | |
+ vmovaps xmmword ptr [rsp+0x70], xmm6 | |
+ vmovaps xmmword ptr [rsp+0x60], xmm7 | |
+ vmovaps xmmword ptr [rsp+0x50], xmm8 | |
vxorps xmm4, xmm4, xmm4 | |
vmovdqu ymmword ptr [rsp+0x20], ymm4 | |
- ;; size=55 bbWeight=1 PerfScore 14.58 | |
-G_M59527_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref | |
+ ;; size=37 bbWeight=1 PerfScore 10.58 | |
+G_M59527_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz | |
; byrRegs +[rcx] | |
- vmovups ymm6, ymmword ptr [reloc @RWD00] | |
- vmovaps ymm7, ymm6 | |
- vmovaps ymm0, ymm6 | |
- vmovups ymm8, ymmword ptr [rcx] | |
- vmovaps ymm4, ymm8 | |
- vbroadcastsd ymm9, ymm2 | |
- vmovups ymm10, ymmword ptr [reloc @RWD32] | |
- ;; size=38 bbWeight=1 PerfScore 15.75 | |
-G_M59527_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
+ vmovups ymm0, ymmword ptr [reloc @RWD00] | |
+ vmovaps ymm6, ymm0 | |
+ vmovaps ymm4, ymm0 | |
+ vmovups ymm5, ymmword ptr [rcx] | |
+ vmovaps ymm16, ymm5 | |
+ vbroadcastsd ymm2, ymm2 | |
+ vmovups ymm17, ymmword ptr [reloc @RWD32] | |
+ jmp SHORT G_M59527_IG04 | |
+ ;; size=43 bbWeight=1 PerfScore 17.75 | |
+G_M59527_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
; byrRegs -[rcx] | |
- vandnpd ymm2, ymm10, ymm4 | |
- vcmppd ymm2, ymm2, ymm9, 2 | |
- vpcmpeqd ymm5, ymm5, ymm5 | |
- vpcmpq k1, ymm5, ymm2, 4 | |
+ vaddpd ymm6, ymm16, ymm6 | |
+ vaddpd ymm4, ymm0, ymm4 | |
+ vdivpd ymm18, ymm5, ymm4 | |
+ vmulpd ymm16, ymm18, ymm16 | |
+ ;; size=22 bbWeight=4 PerfScore 84.00 | |
+G_M59527_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
+ vandnpd ymm7, ymm17, ymm16 | |
+ vcmppd ymm7, ymm7, ymm2, 2 | |
+ vpternlogd ymm18, ymm18, ymm18, -1 | |
+ vpcmpq k1, ymm18, ymm7, 4 | |
kortestb k1, k1 | |
- jne G_M59527_IG13 | |
+ jne SHORT G_M59527_IG03 | |
;; size=31 bbWeight=8 PerfScore 70.67 | |
-G_M59527_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
- vandnpd ymm0, ymm10, ymm7 | |
+G_M59527_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
+ vandnpd ymm0, ymm17, ymm6 | |
vbroadcastsd ymm1, ymm1 | |
vsubpd ymm0, ymm0, ymm1 | |
vbroadcastsd ymm1, ymm3 | |
@@ -76,13 +81,13 @@ G_M59527_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
vpcmpeqd ymm1, ymm1, ymm1 | |
vpcmpq k1, ymm1, ymm0, 4 | |
kortestb k1, k1 | |
- je G_M59527_IG11 | |
- ;; size=44 bbWeight=1 PerfScore 15.83 | |
-G_M59527_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
+ je G_M59527_IG12 | |
+ ;; size=46 bbWeight=1 PerfScore 15.83 | |
+G_M59527_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
mov rcx, 0xD1FFAB1E | |
; gcrRegs +[rcx] | |
xor edx, edx | |
- vextractf128 xmm6, ymm7, 1 | |
+ vextractf128 xmm7, ymm6, 1 | |
call [<unknown method>] | |
; gcrRegs -[rcx] +[rax] | |
; gcr arg pop 0 | |
@@ -98,12 +103,12 @@ G_M59527_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr | |
call [<unknown method>] | |
; gcrRegs -[rax rcx] | |
; gcr arg pop 0 | |
- vinsertf128 ymm7, ymm7, xmm6, 1 | |
+ vinsertf128 ymm6, ymm6, xmm7, 1 | |
mov rcx, 0xD1FFAB1E | |
; gcrRegs +[rcx] | |
mov rdx, 0xD1FFAB1E | |
; gcrRegs +[rdx] | |
- vextractf128 xmm8, ymm7, 1 | |
+ vextractf128 xmm7, ymm6, 1 | |
call [<unknown method>] | |
; gcrRegs -[rcx rdx] +[rax] | |
; gcr arg pop 0 | |
@@ -115,18 +120,18 @@ G_M59527_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr | |
xor ebx, ebx | |
mov rsi, 0xD1FFAB1E | |
; gcrRegs +[rsi] | |
- vinsertf128 ymm7, ymm7, xmm8, 1 | |
+ vinsertf128 ymm6, ymm6, xmm7, 1 | |
;; size=117 bbWeight=0.50 PerfScore 12.75 | |
-G_M59527_IG06: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz | |
- vmovups ymmword ptr [rsp+0x20], ymm7 | |
- vmovsd xmm9, qword ptr [rsp+8*rbx+0x20] | |
- vextractf128 xmm8, ymm7, 1 | |
+G_M59527_IG07: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz | |
+ vmovups ymmword ptr [rsp+0x20], ymm6 | |
+ vmovsd xmm8, qword ptr [rsp+8*rbx+0x20] | |
+ vextractf128 xmm7, ymm6, 1 | |
call [System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo] | |
; gcrRegs +[rax] | |
; gcr arg pop 0 | |
mov r8, rax | |
; gcrRegs +[r8] | |
- vmovaps xmm0, xmm9 | |
+ vmovaps xmm0, xmm8 | |
xor rdx, rdx | |
; gcrRegs +[rdx] | |
call [System.Number:FormatDouble(double,System.String,System.Globalization.NumberFormatInfo):System.String] | |
@@ -145,24 +150,24 @@ G_M59527_IG06: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr | |
; gcrRegs -[rax rcx] | |
; gcr arg pop 0 | |
cmp ebx, 3 | |
- vinsertf128 ymm7, ymm7, xmm8, 1 | |
- jge SHORT G_M59527_IG08 | |
+ vinsertf128 ymm6, ymm6, xmm7, 1 | |
+ jge SHORT G_M59527_IG09 | |
;; size=72 bbWeight=4 PerfScore 95.00 | |
-G_M59527_IG07: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref | |
+G_M59527_IG08: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref | |
mov rcx, 0xD1FFAB1E | |
; gcrRegs +[rcx] | |
- vextractf128 xmm8, ymm7, 1 | |
+ vextractf128 xmm7, ymm6, 1 | |
call [<unknown method>] | |
; gcrRegs -[rcx] | |
; gcr arg pop 0 | |
- vinsertf128 ymm7, ymm7, xmm8, 1 | |
+ vinsertf128 ymm6, ymm6, xmm7, 1 | |
;; size=28 bbWeight=2 PerfScore 14.50 | |
-G_M59527_IG08: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M59527_IG09: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz | |
inc ebx | |
cmp ebx, 4 | |
- jl SHORT G_M59527_IG06 | |
+ jl SHORT G_M59527_IG07 | |
;; size=7 bbWeight=4 PerfScore 6.00 | |
-G_M59527_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
+G_M59527_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rsi] | |
mov rcx, 0xD1FFAB1E | |
; gcrRegs +[rcx] | |
@@ -171,45 +176,34 @@ G_M59527_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr | |
; gcr arg pop 0 | |
mov eax, -1 | |
;; size=21 bbWeight=0.50 PerfScore 1.75 | |
-G_M59527_IG10: ; bbWeight=0.50, epilog, nogc, extend | |
+G_M59527_IG11: ; bbWeight=0.50, epilog, nogc, extend | |
vzeroupper | |
- vmovaps xmm6, xmmword ptr [rsp+0x90] | |
- vmovaps xmm7, xmmword ptr [rsp+0x80] | |
- vmovaps xmm8, xmmword ptr [rsp+0x70] | |
- vmovaps xmm9, xmmword ptr [rsp+0x60] | |
- vmovaps xmm10, xmmword ptr [rsp+0x50] | |
- add rsp, 168 | |
+ vmovaps xmm6, xmmword ptr [rsp+0x70] | |
+ vmovaps xmm7, xmmword ptr [rsp+0x60] | |
+ vmovaps xmm8, xmmword ptr [rsp+0x50] | |
+ add rsp, 136 | |
pop rbx | |
pop rsi | |
ret | |
- ;; size=49 bbWeight=0.50 PerfScore 11.62 | |
-G_M59527_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref | |
+ ;; size=31 bbWeight=0.50 PerfScore 7.62 | |
+G_M59527_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref | |
mov eax, 100 | |
;; size=5 bbWeight=0.50 PerfScore 0.12 | |
-G_M59527_IG12: ; bbWeight=0.50, epilog, nogc, extend | |
+G_M59527_IG13: ; bbWeight=0.50, epilog, nogc, extend | |
vzeroupper | |
- vmovaps xmm6, xmmword ptr [rsp+0x90] | |
- vmovaps xmm7, xmmword ptr [rsp+0x80] | |
- vmovaps xmm8, xmmword ptr [rsp+0x70] | |
- vmovaps xmm9, xmmword ptr [rsp+0x60] | |
- vmovaps xmm10, xmmword ptr [rsp+0x50] | |
- add rsp, 168 | |
+ vmovaps xmm6, xmmword ptr [rsp+0x70] | |
+ vmovaps xmm7, xmmword ptr [rsp+0x60] | |
+ vmovaps xmm8, xmmword ptr [rsp+0x50] | |
+ add rsp, 136 | |
pop rbx | |
pop rsi | |
ret | |
- ;; size=49 bbWeight=0.50 PerfScore 11.62 | |
-G_M59527_IG13: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref | |
- vaddpd ymm7, ymm4, ymm7 | |
- vaddpd ymm0, ymm6, ymm0 | |
- vdivpd ymm2, ymm8, ymm0 | |
- vmulpd ymm4, ymm2, ymm4 | |
- jmp G_M59527_IG03 | |
- ;; size=21 bbWeight=4 PerfScore 92.00 | |
+ ;; size=31 bbWeight=0.50 PerfScore 7.62 | |
RWD00 dq 3FF0000000000000h, 3FF0000000000000h, 3FF0000000000000h, 3FF0000000000000h | |
RWD32 dq 8000000000000000h, 8000000000000000h, 8000000000000000h, 8000000000000000h | |
... | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:green">-40</span> (<span style="color:green">-7.34%</span>) : 19830.dasm - Microsoft.Diagnostics.Tracing.TraceEventDispatcher:Insert(Microsoft.Diagnostics.Tracing.TraceEvent):this (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -11,11 +11,11 @@ | |
; V00 this [V00,T04] ( 12, 9 ) ref -> rsi this class-hnd single-def <Microsoft.Diagnostics.Tracing.TraceEventDispatcher> | |
; V01 arg1 [V01,T03] ( 17, 11 ) ref -> rbx class-hnd single-def <Microsoft.Diagnostics.Tracing.TraceEvent> | |
; V02 loc0 [V02,T08] ( 6, 9 ) ushort -> rdi | |
-; V03 loc1 [V03 ] ( 5, 3.50) struct (16) [rsp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Guid> | |
-; V04 loc2 [V04,T10] ( 5, 8 ) long -> rbp single-def | |
-; V05 loc3 [V05,T01] ( 9, 19.50) int -> r15 | |
-; V06 loc4 [V06,T00] ( 10, 29.50) long -> [rsp+0x30] spill-single-def | |
-; V07 loc5 [V07,T02] ( 2, 16 ) long -> rcx | |
+; V03 loc1 [V03 ] ( 5, 3.50) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Guid> | |
+; V04 loc2 [V04,T10] ( 5, 8 ) long -> rcx single-def | |
+; V05 loc3 [V05,T01] ( 9, 19.50) int -> rbp | |
+; V06 loc4 [V06,T00] ( 10, 29.50) long -> r14 | |
+; V07 loc5 [V07,T02] ( 2, 16 ) long -> r10 | |
; V08 loc6 [V08,T07] ( 8, 9 ) ref -> rdi class-hnd <Microsoft.Diagnostics.Tracing.TraceEvent> | |
; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" | |
;* V10 tmp1 [V10 ] ( 0, 0 ) struct (16) zero-ref "folding static readonly field empty struct" <System.Guid> | |
@@ -27,34 +27,31 @@ | |
;* V16 tmp7 [V16 ] ( 0, 0 ) simd16 -> zero-ref "V13.[000..016)" | |
;* V17 tmp8 [V17 ] ( 0, 0 ) simd16 -> zero-ref "V10.[000..016)" | |
; V18 tmp9 [V18,T12] ( 3, 3 ) ref -> rdx "arr expr" | |
-; V19 cse0 [V19,T09] ( 2, 9 ) long -> r12 hoist "CSE #02: aggressive" | |
-; V20 cse1 [V20,T11] ( 3, 6 ) int -> r13 "CSE #04: aggressive" | |
+; V19 cse0 [V19,T09] ( 2, 9 ) long -> rax hoist "CSE #02: aggressive" | |
+; V20 cse1 [V20,T11] ( 3, 6 ) int -> r8 "CSE #04: aggressive" | |
; V21 cse2 [V21,T05] ( 3, 10 ) ref -> rcx "CSE #05: aggressive" | |
; V22 cse3 [V22,T13] ( 5, 2.50) ref -> rcx multi-def "CSE #07: aggressive" | |
-; V23 cse4 [V23,T06] ( 3, 10 ) int -> r14 "CSE #03: aggressive" | |
+; V23 cse4 [V23,T06] ( 3, 10 ) int -> rdx "CSE #03: aggressive" | |
; V24 cse5 [V24,T14] ( 3, 2.50) byref -> r8 "CSE #01: aggressive" | |
; V25 rat0 [V25,T16] ( 3, 3 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable" | |
; | |
-; Lcl frame size = 72 | |
+; Lcl frame size = 64 | |
G_M42445_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
- push r15 | |
push r14 | |
- push r13 | |
- push r12 | |
push rdi | |
push rsi | |
push rbp | |
push rbx | |
- sub rsp, 72 | |
+ sub rsp, 64 | |
xor eax, eax | |
+ mov qword ptr [rsp+0x30], rax | |
mov qword ptr [rsp+0x38], rax | |
- mov qword ptr [rsp+0x40], rax | |
mov rsi, rcx | |
; gcrRegs +[rsi] | |
mov rbx, rdx | |
; gcrRegs +[rbx] | |
- ;; size=34 bbWeight=1 PerfScore 11.00 | |
+ ;; size=28 bbWeight=1 PerfScore 8.00 | |
G_M42445_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov ecx, dword ptr [rsi+0xC4] | |
shl ecx, 2 | |
@@ -78,7 +75,7 @@ G_M42445_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, | |
lea r8, bword ptr [rbx+0x8C] | |
; byrRegs +[r8] | |
vmovups xmm0, xmmword ptr [r8] | |
- vmovups xmmword ptr [rsp+0x38], xmm0 | |
+ vmovups xmmword ptr [rsp+0x30], xmm0 | |
cmp byte ptr [rbx+0x75], 0 | |
je SHORT G_M42445_IG08 | |
;; size=28 bbWeight=1 PerfScore 11.50 | |
@@ -90,7 +87,7 @@ G_M42445_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0100 | |
test edx, edx | |
jne SHORT G_M42445_IG06 | |
vmovups xmm0, xmmword ptr [rbx+0x7C] | |
- vmovups xmmword ptr [rsp+0x38], xmm0 | |
+ vmovups xmmword ptr [rsp+0x30], xmm0 | |
jmp SHORT G_M42445_IG07 | |
;; size=33 bbWeight=0.50 PerfScore 8.25 | |
G_M42445_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0100 {r8}, byref | |
@@ -99,7 +96,7 @@ G_M42445_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0100 | |
movzx r8, word ptr [rbx+0x72] | |
; byrRegs -[r8] | |
lea rdx, [rsp+0x20] | |
- lea rcx, [rsp+0x38] | |
+ lea rcx, [rsp+0x30] | |
call [Microsoft.Diagnostics.Tracing.TraceEventDispatcher:GenTaskGuidFromProviderGuid(System.Guid,ushort):System.Guid] | |
; gcr arg pop 0 | |
;; size=32 bbWeight=0.50 PerfScore 5.50 | |
@@ -108,89 +105,84 @@ G_M42445_IG07: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 | |
jne SHORT G_M42445_IG08 | |
movzx rdi, byte ptr [rbx+0x78] | |
;; size=11 bbWeight=0.50 PerfScore 3.00 | |
-G_M42445_IG08: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
- lea rbp, [rsp+0x38] | |
- mov r14d, dword ptr [rbp] | |
- lea r15d, [rdi+8*rdi] | |
- add r15d, r14d | |
- mov r13d, dword ptr [rsi+0xC0] | |
- and r15d, r13d | |
- mov r12, qword ptr [rsi+0xB8] | |
- ;; size=33 bbWeight=1 PerfScore 7.50 | |
-G_M42445_IG09: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
- movsxd rcx, r15d | |
- lea rcx, [rcx+4*rcx] | |
- lea rax, [r12+4*rcx] | |
- mov qword ptr [rsp+0x30], rax | |
- mov rcx, rax | |
- cmp dword ptr [rcx], r14d | |
- jne SHORT G_M42445_IG11 | |
- ;; size=24 bbWeight=8 PerfScore 52.00 | |
-G_M42445_IG10: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
- mov ecx, dword ptr [rax+0x04] | |
- cmp ecx, dword ptr [rbp+0x04] | |
- jne SHORT G_M42445_IG11 | |
- mov ecx, dword ptr [rax+0x08] | |
- cmp ecx, dword ptr [rbp+0x08] | |
- jne SHORT G_M42445_IG11 | |
- mov ecx, dword ptr [rax+0x0C] | |
- cmp ecx, dword ptr [rbp+0x0C] | |
- jne SHORT G_M42445_IG11 | |
- movzx rcx, word ptr [rax+0x10] | |
- cmp ecx, edi | |
+G_M42445_IG08: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+ lea rcx, [rsp+0x30] | |
+ mov edx, dword ptr [rcx] | |
+ lea ebp, [rdi+8*rdi] | |
+ add ebp, edx | |
+ mov r8d, dword ptr [rsi+0xC0] | |
+ and ebp, r8d | |
+ mov rax, qword ptr [rsi+0xB8] | |
+ jmp SHORT G_M42445_IG10 | |
+ ;; size=31 bbWeight=1 PerfScore 9.50 | |
+G_M42445_IG09: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+ lea ebp, [rbp+2*rdi+0x01] | |
+ and ebp, r8d | |
+ ;; size=7 bbWeight=4 PerfScore 9.00 | |
+G_M42445_IG10: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+ movsxd r10, ebp | |
+ lea r10, [r10+4*r10] | |
+ lea r14, [rax+4*r10] | |
+ mov r10, r14 | |
+ cmp dword ptr [r10], edx | |
+ jne SHORT G_M42445_IG12 | |
+ ;; size=19 bbWeight=8 PerfScore 44.00 | |
+G_M42445_IG11: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+ mov r10d, dword ptr [r14+0x04] | |
+ cmp r10d, dword ptr [rcx+0x04] | |
+ jne SHORT G_M42445_IG12 | |
+ mov r10d, dword ptr [r14+0x08] | |
+ cmp r10d, dword ptr [rcx+0x08] | |
+ jne SHORT G_M42445_IG12 | |
+ mov r10d, dword ptr [r14+0x0C] | |
+ cmp r10d, dword ptr [rcx+0x0C] | |
+ jne SHORT G_M42445_IG12 | |
+ movzx r10, word ptr [r14+0x10] | |
+ cmp r10d, edi | |
je SHORT G_M42445_IG15 | |
- ;; size=32 bbWeight=2 PerfScore 42.50 | |
-G_M42445_IG11: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
- cmp byte ptr [rax+0x12], 0 | |
- jne SHORT G_M42445_IG14 | |
- ;; size=6 bbWeight=4 PerfScore 16.00 | |
-G_M42445_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+ ;; size=40 bbWeight=2 PerfScore 42.50 | |
+G_M42445_IG12: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+ cmp byte ptr [r14+0x12], 0 | |
+ jne SHORT G_M42445_IG09 | |
+ ;; size=7 bbWeight=4 PerfScore 16.00 | |
+G_M42445_IG13: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
mov rcx, gword ptr [rsi+0x90] | |
; gcrRegs +[rcx] | |
- movsxd rdx, r15d | |
+ movsxd rdx, ebp | |
mov r8, rbx | |
; gcrRegs +[r8] | |
call CORINFO_HELP_ARRADDR_ST | |
; gcrRegs -[rcx rbx r8] | |
; gcr arg pop 0 | |
- mov r15, qword ptr [rsp+0x30] | |
- mov word ptr [r15+0x10], di | |
- vmovups xmm0, xmmword ptr [rsp+0x38] | |
- vmovups xmmword ptr [r15], xmm0 | |
- mov byte ptr [r15+0x12], 1 | |
+ mov word ptr [r14+0x10], di | |
+ vmovups xmm0, xmmword ptr [rsp+0x30] | |
+ vmovups xmmword ptr [r14], xmm0 | |
+ mov byte ptr [r14+0x12], 1 | |
inc dword ptr [rsi+0xC4] | |
- ;; size=50 bbWeight=0.50 PerfScore 7.25 | |
-G_M42445_IG13: ; bbWeight=0.50, epilog, nogc, extend | |
- add rsp, 72 | |
+ ;; size=45 bbWeight=0.50 PerfScore 6.75 | |
+G_M42445_IG14: ; bbWeight=0.50, epilog, nogc, extend | |
+ add rsp, 64 | |
pop rbx | |
pop rbp | |
pop rsi | |
pop rdi | |
- pop r12 | |
- pop r13 | |
pop r14 | |
- pop r15 | |
ret | |
- ;; size=17 bbWeight=0.50 PerfScore 2.62 | |
-G_M42445_IG14: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref | |
+ ;; size=11 bbWeight=0.50 PerfScore 1.88 | |
+G_M42445_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz | |
; gcrRegs +[rbx] | |
- lea r15d, [r15+2*rdi+0x01] | |
- and r15d, r13d | |
- jmp G_M42445_IG09 | |
- ;; size=13 bbWeight=4 PerfScore 13.00 | |
-G_M42445_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov rcx, gword ptr [rsi+0x90] | |
; gcrRegs +[rcx] | |
mov rdx, rcx | |
; gcrRegs +[rdx] | |
- cmp r15d, dword ptr [rdx+0x08] | |
+ cmp ebp, dword ptr [rdx+0x08] | |
jae G_M42445_IG25 | |
- mov r8d, r15d | |
+ mov r8d, ebp | |
mov rdi, gword ptr [rdx+8*r8+0x10] | |
; gcrRegs +[rdi] | |
test rdi, rdi | |
jne SHORT G_M42445_IG16 | |
- movsxd rdx, r15d | |
+ movsxd rdx, ebp | |
; gcrRegs -[rdx] | |
mov r8, rbx | |
; gcrRegs +[r8] | |
@@ -198,7 +190,7 @@ G_M42445_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 | |
; gcrRegs -[rcx rbx rsi rdi r8] | |
; gcr arg pop 0 | |
jmp SHORT G_M42445_IG22 | |
- ;; size=46 bbWeight=0.50 PerfScore 6.62 | |
+ ;; size=45 bbWeight=0.50 PerfScore 6.62 | |
G_M42445_IG16: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs +[rbx rsi rdi] | |
mov rcx, rbx | |
@@ -209,21 +201,21 @@ G_M42445_IG16: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0 | |
; gcrRegs -[rcx] +[rax] | |
; gcr arg pop 0 | |
test rax, rax | |
- je SHORT G_M42445_IG21 | |
- ;; size=18 bbWeight=0.50 PerfScore 4.25 | |
-G_M42445_IG17: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz | |
- ; gcrRegs -[rax rsi] | |
+ jne SHORT G_M42445_IG18 | |
+ jmp SHORT G_M42445_IG21 | |
+ ;; size=20 bbWeight=0.50 PerfScore 5.25 | |
+G_M42445_IG17: ; bbWeight=2, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref | |
... | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:green">-46</span> (<span style="color:green">-6.61%</span>) : 180664.dasm - VectorTest+VectorExpTest`1[float]:VectorExp(System.Numerics.Vector`1[float],float,float,float):int (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -12,16 +12,16 @@ | |
; V01 arg1 [V01,T23] ( 3, 3 ) float -> mm1 single-def | |
; V02 arg2 [V02,T24] ( 3, 3 ) float -> mm2 single-def | |
; V03 arg3 [V03,T25] ( 3, 3 ) float -> mm3 single-def | |
-; V04 loc0 [V04,T17] ( 5, 10.50) simd32 -> mm7 <System.Numerics.Vector`1[float]> | |
-; V05 loc1 [V05,T16] ( 4, 13 ) simd32 -> mm0 <System.Numerics.Vector`1[float]> | |
-; V06 loc2 [V06,T14] ( 5, 21 ) simd32 -> mm4 <System.Numerics.Vector`1[float]> | |
-; V07 loc3 [V07,T19] ( 2, 9 ) simd32 -> mm9 ld-addr-op <System.Numerics.Vector`1[float]> | |
+; V04 loc0 [V04,T17] ( 5, 10.50) simd32 -> mm6 <System.Numerics.Vector`1[float]> | |
+; V05 loc1 [V05,T16] ( 4, 13 ) simd32 -> mm4 <System.Numerics.Vector`1[float]> | |
+; V06 loc2 [V06,T14] ( 5, 21 ) simd32 -> mm16 <System.Numerics.Vector`1[float]> | |
+; V07 loc3 [V07,T19] ( 2, 9 ) simd32 -> mm2 ld-addr-op <System.Numerics.Vector`1[float]> | |
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" | |
;* V09 tmp1 [V09 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> | |
;* V10 tmp2 [V10 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> | |
;* V11 tmp3 [V11 ] ( 0, 0 ) simd32 -> zero-ref "impAppendStmt" | |
; V12 tmp4 [V12,T00] ( 6, 20.50) int -> rbx "Inline stloc first use temp" | |
-; V13 tmp5 [V13,T20] ( 2, 9 ) simd32 -> mm7 ld-addr-op "Inlining Arg" <System.Numerics.Vector`1[float]> | |
+; V13 tmp5 [V13,T20] ( 2, 9 ) simd32 -> mm6 ld-addr-op "Inlining Arg" <System.Numerics.Vector`1[float]> | |
;* V14 tmp6 [V14 ] ( 0, 0 ) float -> zero-ref ld-addr-op "Inline stloc first use temp" | |
; V15 tmp7 [V15,T12] ( 2, 1 ) ref -> rcx class-hnd single-def "Inline return value spill temp" <System.String> | |
;* V16 tmp8 [V16,T13] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" | |
@@ -43,50 +43,55 @@ | |
;* V32 tmp24 [V32 ] ( 0, 0 ) float -> zero-ref "impAppendStmt" | |
; V33 tmp25 [V33,T09] ( 2, 2.00) ref -> rdx single-def "argument with side effect" | |
; V34 tmp26 [V34,T01] ( 2, 16 ) ref -> r8 "argument with side effect" | |
-; V35 tmp27 [V35,T15] ( 2, 16 ) float -> mm9 "argument with side effect" | |
+; V35 tmp27 [V35,T15] ( 2, 16 ) float -> mm8 "argument with side effect" | |
; V36 tmp28 [V36,T02] ( 2, 16 ) ref -> rdx "argument with side effect" | |
-; V37 cse0 [V37,T18] ( 3, 10 ) simd32 -> mm10 hoist "CSE #02: aggressive" | |
-; V38 cse1 [V38,T21] ( 4, 7 ) simd32 -> mm6 "CSE #01: aggressive" | |
+; V37 cse0 [V37,T18] ( 3, 10 ) simd32 -> mm17 hoist "CSE #02: aggressive" | |
+; V38 cse1 [V38,T21] ( 4, 7 ) simd32 -> mm0 "CSE #01: aggressive" | |
; V39 cse2 [V39,T04] ( 2, 4.50) ref -> rsi hoist "CSE #07: aggressive" | |
-; V40 cse3 [V40,T22] ( 3, 6 ) simd32 -> mm8 "CSE #03: aggressive" | |
+; V40 cse3 [V40,T22] ( 3, 6 ) simd32 -> mm5 "CSE #03: aggressive" | |
; V41 cse4 [V41,T05] ( 9, 4.20) ref -> rdx multi-def "CSE #04: aggressive" | |
; V42 rat0 [V42 ] ( 1, 1 ) simd32 -> [rsp+0x20] must-init "SIMDInitTempVar" | |
; | |
-; Lcl frame size = 168 | |
+; Lcl frame size = 136 | |
-G_M53570_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
+G_M53570_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG | |
push rsi | |
push rbx | |
- sub rsp, 168 | |
- vmovaps xmmword ptr [rsp+0x90], xmm6 | |
- vmovaps xmmword ptr [rsp+0x80], xmm7 | |
- vmovaps xmmword ptr [rsp+0x70], xmm8 | |
- vmovaps xmmword ptr [rsp+0x60], xmm9 | |
- vmovaps xmmword ptr [rsp+0x50], xmm10 | |
+ sub rsp, 136 | |
+ vmovaps xmmword ptr [rsp+0x70], xmm6 | |
+ vmovaps xmmword ptr [rsp+0x60], xmm7 | |
+ vmovaps xmmword ptr [rsp+0x50], xmm8 | |
vxorps xmm4, xmm4, xmm4 | |
vmovdqu ymmword ptr [rsp+0x20], ymm4 | |
- ;; size=55 bbWeight=1 PerfScore 14.58 | |
-G_M53570_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref | |
+ ;; size=37 bbWeight=1 PerfScore 10.58 | |
+G_M53570_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz | |
; byrRegs +[rcx] | |
- vmovups ymm6, ymmword ptr [reloc @RWD00] | |
- vmovaps ymm7, ymm6 | |
- vmovaps ymm0, ymm6 | |
- vmovups ymm8, ymmword ptr [rcx] | |
- vmovaps ymm4, ymm8 | |
- vbroadcastss ymm9, ymm2 | |
- vmovups ymm10, ymmword ptr [reloc @RWD32] | |
- ;; size=38 bbWeight=1 PerfScore 15.75 | |
-G_M53570_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
+ vmovups ymm0, ymmword ptr [reloc @RWD00] | |
+ vmovaps ymm6, ymm0 | |
+ vmovaps ymm4, ymm0 | |
+ vmovups ymm5, ymmword ptr [rcx] | |
+ vmovaps ymm16, ymm5 | |
+ vbroadcastss ymm2, ymm2 | |
+ vmovups ymm17, ymmword ptr [reloc @RWD32] | |
+ jmp SHORT G_M53570_IG04 | |
+ ;; size=43 bbWeight=1 PerfScore 17.75 | |
+G_M53570_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
; byrRegs -[rcx] | |
- vandnps ymm2, ymm10, ymm4 | |
- vcmpps ymm2, ymm2, ymm9, 2 | |
- vpcmpeqd ymm5, ymm5, ymm5 | |
- vpcmpeqd k1, ymm5, ymm2 | |
+ vaddps ymm6, ymm16, ymm6 | |
+ vaddps ymm4, ymm0, ymm4 | |
+ vdivps ymm18, ymm5, ymm4 | |
+ vmulps ymm16, ymm18, ymm16 | |
+ ;; size=22 bbWeight=4 PerfScore 76.00 | |
+G_M53570_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
+ vandnps ymm7, ymm17, ymm16 | |
+ vcmpps ymm7, ymm7, ymm2, 2 | |
+ vpternlogd ymm18, ymm18, ymm18, -1 | |
+ vpcmpeqd k1, ymm18, ymm7 | |
kortestb k1, k1 | |
- jae G_M53570_IG17 | |
+ jae SHORT G_M53570_IG03 | |
;; size=30 bbWeight=8 PerfScore 50.67 | |
-G_M53570_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
- vandnps ymm0, ymm10, ymm7 | |
+G_M53570_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
+ vandnps ymm0, ymm17, ymm6 | |
vbroadcastss ymm1, ymm1 | |
vsubps ymm0, ymm0, ymm1 | |
vbroadcastss ymm1, ymm3 | |
@@ -94,13 +99,13 @@ G_M53570_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
vpcmpeqd ymm1, ymm1, ymm1 | |
vpcmpeqd k1, ymm1, ymm0 | |
kortestb k1, k1 | |
- jb G_M53570_IG15 | |
- ;; size=43 bbWeight=1 PerfScore 13.33 | |
-G_M53570_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
+ jb G_M53570_IG16 | |
+ ;; size=45 bbWeight=1 PerfScore 13.33 | |
+G_M53570_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
mov rcx, 0xD1FFAB1E | |
; gcrRegs +[rcx] | |
xor edx, edx | |
- vextractf128 xmm6, ymm7, 1 | |
+ vextractf128 xmm7, ymm6, 1 | |
call [<unknown method>] | |
; gcrRegs -[rcx] +[rax] | |
; gcr arg pop 0 | |
@@ -116,44 +121,44 @@ G_M53570_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr | |
call [<unknown method>] | |
; gcrRegs -[rax rcx] | |
; gcr arg pop 0 | |
- vinsertf128 ymm7, ymm7, xmm6, 1 | |
+ vinsertf128 ymm6, ymm6, xmm7, 1 | |
mov ecx, 8 | |
- vextractf128 xmm8, ymm7, 1 | |
+ vextractf128 xmm7, ymm6, 1 | |
call <unknown method> | |
; gcrRegs +[rax] | |
; gcr arg pop 0 | |
mov rbx, rax | |
; gcrRegs +[rbx] | |
test rbx, rbx | |
- vinsertf128 ymm7, ymm7, xmm8, 1 | |
- jne SHORT G_M53570_IG07 | |
+ vinsertf128 ymm6, ymm6, xmm7, 1 | |
+ jne SHORT G_M53570_IG08 | |
;; size=88 bbWeight=0.50 PerfScore 10.50 | |
-G_M53570_IG06: ; bbWeight=0.47, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+G_M53570_IG07: ; bbWeight=0.47, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rax] | |
mov rdx, 0xD1FFAB1E | |
; gcrRegs +[rdx] | |
mov rcx, rdx | |
; gcrRegs +[rcx] | |
- vextractf128 xmm8, ymm7, 1 | |
+ vextractf128 xmm7, ymm6, 1 | |
call [<unknown method>] | |
; gcrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
- vinsertf128 ymm7, ymm7, xmm8, 1 | |
+ vinsertf128 ymm6, ymm6, xmm7, 1 | |
;; size=31 bbWeight=0.47 PerfScore 3.50 | |
-G_M53570_IG07: ; bbWeight=0.47, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+G_M53570_IG08: ; bbWeight=0.47, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
cmp dword ptr [rbx+0x08], 7 | |
- jge SHORT G_M53570_IG08 | |
+ jge SHORT G_M53570_IG09 | |
mov rdx, 0xD1FFAB1E | |
; gcrRegs +[rdx] | |
mov rcx, rdx | |
; gcrRegs +[rcx] | |
- vextractf128 xmm8, ymm7, 1 | |
+ vextractf128 xmm7, ymm6, 1 | |
call [<unknown method>] | |
; gcrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
- vinsertf128 ymm7, ymm7, xmm8, 1 | |
+ vinsertf128 ymm6, ymm6, xmm7, 1 | |
;; size=37 bbWeight=0.47 PerfScore 5.36 | |
-G_M53570_IG08: ; bbWeight=0.47, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+G_M53570_IG09: ; bbWeight=0.47, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
lea rcx, bword ptr [rbx+0x0C] | |
; byrRegs +[rcx] | |
mov rdx, 0xD1FFAB1E | |
@@ -166,19 +171,19 @@ G_M53570_IG08: ; bbWeight=0.47, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, | |
; byrRegs -[rcx] | |
sub ecx, 7 | |
test ecx, ecx | |
- jg SHORT G_M53570_IG09 | |
+ jg SHORT G_M53570_IG10 | |
mov rdx, 0xD1FFAB1E | |
; gcrRegs +[rdx] | |
; byrRegs -[rdx] | |
mov rcx, rdx | |
; gcrRegs +[rcx] | |
- vextractf128 xmm8, ymm7, 1 | |
+ vextractf128 xmm7, ymm6, 1 | |
call [<unknown method>] | |
; gcrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
- vinsertf128 ymm7, ymm7, xmm8, 1 | |
+ vinsertf128 ymm6, ymm6, xmm7, 1 | |
;; size=69 bbWeight=0.47 PerfScore 8.28 | |
-G_M53570_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+G_M53570_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
lea rcx, bword ptr [rbx+0x1A] | |
; byrRegs +[rcx] | |
mov rax, 0xD1FFAB1E | |
@@ -188,7 +193,7 @@ G_M53570_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, | |
mov rcx, rbx | |
; gcrRegs +[rcx] | |
; byrRegs -[rcx] | |
- vextractf128 xmm8, ymm7, 1 | |
+ vextractf128 xmm7, ymm6, 1 | |
call [<unknown method>] | |
; gcrRegs -[rcx rbx] | |
; byrRegs -[rax] | |
@@ -196,18 +201,18 @@ G_M53570_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, | |
xor ebx, ebx | |
mov rsi, 0xD1FFAB1E | |
; gcrRegs +[rsi] | |
- vinsertf128 ymm7, ymm7, xmm8, 1 | |
+ vinsertf128 ymm6, ymm6, xmm7, 1 | |
;; size=53 bbWeight=0.50 PerfScore 5.75 | |
-G_M53570_IG10: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz | |
- vmovups ymmword ptr [rsp+0x20], ymm7 | |
- vmovss xmm9, dword ptr [rsp+4*rbx+0x20] | |
- vextractf128 xmm8, ymm7, 1 | |
+G_M53570_IG11: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz | |
+ vmovups ymmword ptr [rsp+0x20], ymm6 | |
+ vmovss xmm8, dword ptr [rsp+4*rbx+0x20] | |
+ vextractf128 xmm7, ymm6, 1 | |
call [System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo] | |
; gcrRegs +[rax] | |
; gcr arg pop 0 | |
mov r8, rax | |
; gcrRegs +[r8] | |
- vmovaps xmm0, xmm9 | |
+ vmovaps xmm0, xmm8 | |
xor rdx, rdx | |
; gcrRegs +[rdx] | |
call [System.Number:FormatSingle(float,System.String,System.Globalization.NumberFormatInfo):System.String] | |
@@ -226,24 +231,24 @@ G_M53570_IG10: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr | |
; gcrRegs -[rax rcx] | |
; gcr arg pop 0 | |
cmp ebx, 7 | |
- vinsertf128 ymm7, ymm7, xmm8, 1 | |
- jge SHORT G_M53570_IG12 | |
+ vinsertf128 ymm6, ymm6, xmm7, 1 | |
+ jge SHORT G_M53570_IG13 | |
;; size=72 bbWeight=4 PerfScore 95.00 | |
... | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+13</span> (<span style="color:red">+5.53%</span>) : 301951.dasm - System.Xml.XmlAttributeCollection:get_ItemOf(System.String):System.Xml.XmlAttribute:this (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -45,7 +45,7 @@ G_M30778_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { | |
mov rsi, rdx | |
; gcrRegs +[rsi] | |
;; size=16 bbWeight=1 PerfScore 5.75 | |
-G_M30778_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M30778_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov rcx, rsi | |
; gcrRegs +[rcx] | |
call [System.Xml.XmlName:GetHashCode(System.String):int] | |
@@ -53,14 +53,18 @@ G_M30778_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, | |
; gcr arg pop 0 | |
mov edi, eax | |
xor ebp, ebp | |
- ;; size=13 bbWeight=1 PerfScore 3.75 | |
-G_M30778_IG03: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+ jmp SHORT G_M30778_IG04 | |
+ ;; size=15 bbWeight=1 PerfScore 5.75 | |
+G_M30778_IG03: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+ inc ebp | |
+ ;; size=2 bbWeight=2 PerfScore 0.50 | |
+G_M30778_IG04: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
lea rdx, bword ptr [rbx+0x10] | |
; byrRegs +[rdx] | |
cmp gword ptr [rdx], 0 | |
- je SHORT G_M30778_IG06 | |
+ je SHORT G_M30778_IG07 | |
;; size=10 bbWeight=8 PerfScore 36.00 | |
-G_M30778_IG04: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0004 {rdx}, byref, isz | |
+G_M30778_IG05: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0004 {rdx}, byref, isz | |
mov rdx, gword ptr [rdx] | |
; gcrRegs +[rdx] | |
; byrRegs -[rdx] | |
@@ -69,23 +73,23 @@ G_M30778_IG04: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0004 {rd | |
; gcrRegs -[rdx] +[rax] | |
; gcr arg pop 0 | |
test rax, rax | |
- jne SHORT G_M30778_IG05 | |
+ jne SHORT G_M30778_IG06 | |
mov ecx, 1 | |
- jmp SHORT G_M30778_IG07 | |
+ jmp SHORT G_M30778_IG08 | |
;; size=30 bbWeight=2 PerfScore 13.50 | |
-G_M30778_IG05: ; bbWeight=2, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M30778_IG06: ; bbWeight=2, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov ecx, dword ptr [rax+0x10] | |
- jmp SHORT G_M30778_IG07 | |
+ jmp SHORT G_M30778_IG08 | |
;; size=5 bbWeight=2 PerfScore 8.00 | |
-G_M30778_IG06: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M30778_IG07: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rax] | |
xor ecx, ecx | |
;; size=2 bbWeight=2 PerfScore 0.50 | |
-G_M30778_IG07: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M30778_IG08: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
cmp ebp, ecx | |
jge G_M30778_IG19 | |
;; size=8 bbWeight=8 PerfScore 10.00 | |
-G_M30778_IG08: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M30778_IG09: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
lea rcx, bword ptr [rbx+0x10] | |
; byrRegs +[rcx] | |
mov edx, ebp | |
@@ -96,14 +100,14 @@ G_M30778_IG08: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, | |
mov r14, rax | |
; gcrRegs +[r14] | |
test r14, r14 | |
- je SHORT G_M30778_IG11 | |
+ je SHORT G_M30778_IG12 | |
;; size=20 bbWeight=2 PerfScore 10.50 | |
-G_M30778_IG09: ; bbWeight=1, gcrefRegs=4049 {rax rbx rsi r14}, byrefRegs=0000 {}, byref, isz | |
+G_M30778_IG10: ; bbWeight=1, gcrefRegs=4049 {rax rbx rsi r14}, byrefRegs=0000 {}, byref, isz | |
mov rcx, 0xD1FFAB1E ; System.Xml.XmlAttribute | |
cmp qword ptr [r14], rcx | |
- je SHORT G_M30778_IG11 | |
+ je SHORT G_M30778_IG12 | |
;; size=15 bbWeight=1 PerfScore 4.25 | |
-G_M30778_IG10: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M30778_IG11: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref | |
; gcrRegs -[r14] | |
mov rdx, rax | |
; gcrRegs +[rdx] | |
@@ -113,12 +117,12 @@ G_M30778_IG10: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0 | |
mov r14, rax | |
; gcrRegs +[r14] | |
;; size=11 bbWeight=0.50 PerfScore 0.75 | |
-G_M30778_IG11: ; bbWeight=2, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz | |
+G_M30778_IG12: ; bbWeight=2, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs -[rax] | |
mov rcx, gword ptr [r14+0x10] | |
; gcrRegs +[rcx] | |
cmp edi, dword ptr [rcx+0x38] | |
- jne SHORT G_M30778_IG16 | |
+ jne SHORT G_M30778_IG03 | |
mov rcx, r14 | |
mov rax, qword ptr [r14] | |
mov rax, qword ptr [rax+0x48] | |
@@ -130,21 +134,21 @@ G_M30778_IG11: ; bbWeight=2, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 | |
cmp rsi, rdx | |
je SHORT G_M30778_IG17 | |
;; size=30 bbWeight=2 PerfScore 29.50 | |
-G_M30778_IG12: ; bbWeight=1.80, gcrefRegs=404C {rdx rbx rsi r14}, byrefRegs=0000 {}, byref, isz | |
+G_M30778_IG13: ; bbWeight=1.80, gcrefRegs=404C {rdx rbx rsi r14}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rax] | |
test rsi, rsi | |
- je SHORT G_M30778_IG16 | |
- ;; size=5 bbWeight=1.80 PerfScore 2.25 | |
-G_M30778_IG13: ; bbWeight=1.80, gcrefRegs=404C {rdx rbx rsi r14}, byrefRegs=0000 {}, byref, isz | |
+ je G_M30778_IG03 | |
+ ;; size=9 bbWeight=1.80 PerfScore 2.25 | |
+G_M30778_IG14: ; bbWeight=1.80, gcrefRegs=404C {rdx rbx rsi r14}, byrefRegs=0000 {}, byref | |
test rdx, rdx | |
- je SHORT G_M30778_IG16 | |
- ;; size=5 bbWeight=1.80 PerfScore 2.25 | |
-G_M30778_IG14: ; bbWeight=1.80, gcrefRegs=404C {rdx rbx rsi r14}, byrefRegs=0000 {}, byref, isz | |
+ je G_M30778_IG03 | |
+ ;; size=9 bbWeight=1.80 PerfScore 2.25 | |
+G_M30778_IG15: ; bbWeight=1.80, gcrefRegs=404C {rdx rbx rsi r14}, byrefRegs=0000 {}, byref | |
mov r8d, dword ptr [rsi+0x08] | |
cmp r8d, dword ptr [rdx+0x08] | |
- jne SHORT G_M30778_IG16 | |
- ;; size=10 bbWeight=1.80 PerfScore 10.80 | |
-G_M30778_IG15: ; bbWeight=2, gcrefRegs=404C {rdx rbx rsi r14}, byrefRegs=0000 {}, byref, isz | |
+ jne G_M30778_IG03 | |
+ ;; size=14 bbWeight=1.80 PerfScore 10.80 | |
+G_M30778_IG16: ; bbWeight=2, gcrefRegs=404C {rdx rbx rsi r14}, byrefRegs=0000 {}, byref | |
lea rcx, bword ptr [rsi+0x0C] | |
; byrRegs +[rcx] | |
add r8d, r8d | |
@@ -155,15 +159,10 @@ G_M30778_IG15: ; bbWeight=2, gcrefRegs=404C {rdx rbx rsi r14}, byrefRegs= | |
; byrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
test eax, eax | |
- jne SHORT G_M30778_IG17 | |
- ;; size=21 bbWeight=2 PerfScore 10.50 | |
-G_M30778_IG16: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[r14] | |
- inc ebp | |
- jmp G_M30778_IG03 | |
- ;; size=7 bbWeight=2 PerfScore 4.50 | |
+ je G_M30778_IG03 | |
+ ;; size=25 bbWeight=2 PerfScore 10.50 | |
G_M30778_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[rbx rsi] +[r14] | |
+ ; gcrRegs -[rbx rsi] | |
mov rax, r14 | |
; gcrRegs +[rax] | |
;; size=3 bbWeight=0.50 PerfScore 0.12 | |
@@ -191,7 +190,7 @@ G_M30778_IG20: ; bbWeight=0.50, epilog, nogc, extend | |
ret | |
;; size=11 bbWeight=0.50 PerfScore 1.88 | |
-; Total bytes of code 235, prolog size 10, PerfScore 156.81, instruction count 80, allocated bytes for code 235 (MethodHash=52c787c5) for method System.Xml.XmlAttributeCollection:get_ItemOf(System.String):System.Xml.XmlAttribute:this (FullOpts) | |
+; Total bytes of code 248, prolog size 10, PerfScore 154.81, instruction count 80, allocated bytes for code 248 (MethodHash=52c787c5) for method System.Xml.XmlAttributeCollection:get_ItemOf(System.String):System.Xml.XmlAttribute:this (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+24</span> (<span style="color:red">+6.78%</span>) : 301615.dasm - System.CommandLine.ArgumentValidation:FileOrDirectoryExists[System.__Canon](System.CommandLine.Parsing.ArgumentResult) (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -38,7 +38,7 @@ G_M59759_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
mov rbx, rdx | |
; gcrRegs +[rbx] | |
;; size=18 bbWeight=1 PerfScore 6.50 | |
-G_M59759_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+G_M59759_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
mov rcx, qword ptr [rcx+0x38] | |
mov rcx, qword ptr [rcx] | |
mov rdx, 0xD1FFAB1E ; <unknown class> | |
@@ -50,17 +50,21 @@ G_M59759_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr | |
setne dil | |
movzx rdi, dil | |
xor ebp, ebp | |
- ;; size=51 bbWeight=1 PerfScore 7.75 | |
-G_M59759_IG03: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+ jmp SHORT G_M59759_IG04 | |
+ ;; size=53 bbWeight=1 PerfScore 9.75 | |
+G_M59759_IG03: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+ inc ebp | |
+ ;; size=2 bbWeight=2 PerfScore 0.50 | |
+G_M59759_IG04: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
cmp gword ptr [rbx+0x10], 0 | |
- je SHORT G_M59759_IG05 | |
+ je SHORT G_M59759_IG06 | |
;; size=7 bbWeight=8 PerfScore 32.00 | |
-G_M59759_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+G_M59759_IG05: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
mov rcx, gword ptr [rbx+0x10] | |
; gcrRegs +[rcx] | |
- jmp SHORT G_M59759_IG06 | |
+ jmp SHORT G_M59759_IG07 | |
;; size=6 bbWeight=2 PerfScore 8.00 | |
-G_M59759_IG05: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+G_M59759_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rcx] | |
mov rcx, 0xD1FFAB1E | |
mov edx, 32 | |
@@ -70,7 +74,7 @@ G_M59759_IG05: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr | |
mov rcx, gword ptr [rcx] | |
; gcrRegs +[rcx] | |
;; size=33 bbWeight=2 PerfScore 7.50 | |
-G_M59759_IG06: ; bbWeight=8, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref | |
+G_M59759_IG07: ; bbWeight=8, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref | |
mov r11, 0xD1FFAB1E ; code for <unknown method> | |
call [r11]<unknown method> | |
; gcrRegs -[rcx] | |
@@ -78,14 +82,14 @@ G_M59759_IG06: ; bbWeight=8, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, | |
cmp eax, ebp | |
jle G_M59759_IG14 | |
;; size=21 bbWeight=8 PerfScore 36.00 | |
-G_M59759_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+G_M59759_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
mov rcx, gword ptr [rbx+0x10] | |
; gcrRegs +[rcx] | |
test rcx, rcx | |
- je SHORT G_M59759_IG08 | |
- jmp SHORT G_M59759_IG09 | |
+ je SHORT G_M59759_IG09 | |
+ jmp SHORT G_M59759_IG10 | |
;; size=11 bbWeight=2 PerfScore 10.50 | |
-G_M59759_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+G_M59759_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rcx] | |
mov rcx, 0xD1FFAB1E | |
mov edx, 32 | |
@@ -95,7 +99,7 @@ G_M59759_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr | |
mov rcx, gword ptr [rcx] | |
; gcrRegs +[rcx] | |
;; size=33 bbWeight=2 PerfScore 7.50 | |
-G_M59759_IG09: ; bbWeight=2, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz | |
+G_M59759_IG10: ; bbWeight=2, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz | |
mov edx, ebp | |
mov r11, 0xD1FFAB1E ; code for <unknown method> | |
call [r11]<unknown method> | |
@@ -104,34 +108,34 @@ G_M59759_IG09: ; bbWeight=2, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, | |
mov r14, rax | |
; gcrRegs +[r14] | |
test esi, edi | |
- jne SHORT G_M59759_IG12 | |
+ jne SHORT G_M59759_IG13 | |
test edi, edi | |
- je SHORT G_M59759_IG10 | |
+ je SHORT G_M59759_IG11 | |
mov rcx, gword ptr [r14+0x08] | |
; gcrRegs +[rcx] | |
call [<unknown method>] | |
; gcrRegs -[rax rcx] | |
; gcr arg pop 0 | |
test eax, eax | |
- je SHORT G_M59759_IG11 | |
+ je SHORT G_M59759_IG12 | |
;; size=40 bbWeight=2 PerfScore 25.00 | |
-G_M59759_IG10: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz | |
+G_M59759_IG11: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref | |
test esi, esi | |
- je SHORT G_M59759_IG13 | |
+ je G_M59759_IG03 | |
mov rcx, gword ptr [r14+0x08] | |
; gcrRegs +[rcx] | |
call [<unknown method>] | |
; gcrRegs -[rcx] | |
; gcr arg pop 0 | |
test eax, eax | |
- jne SHORT G_M59759_IG13 | |
+ jne G_M59759_IG03 | |
mov rcx, gword ptr [r14+0x08] | |
; gcrRegs +[rcx] | |
call [<unknown method>] | |
; gcrRegs -[rcx] | |
; gcr arg pop 0 | |
test eax, eax | |
- jne SHORT G_M59759_IG13 | |
+ jne G_M59759_IG03 | |
mov rcx, gword ptr [r14+0x08] | |
; gcrRegs +[rcx] | |
call [System.CommandLine.LocalizationResources:FileDoesNotExist(System.String):System.String] | |
@@ -144,9 +148,9 @@ G_M59759_IG10: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, | |
call [System.CommandLine.Parsing.ArgumentResult:AddError(System.String):this] | |
; gcrRegs -[rax rcx rdx] | |
; gcr arg pop 0 | |
- jmp SHORT G_M59759_IG13 | |
- ;; size=56 bbWeight=2 PerfScore 48.50 | |
-G_M59759_IG11: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz | |
+ jmp G_M59759_IG03 | |
+ ;; size=71 bbWeight=2 PerfScore 48.50 | |
+G_M59759_IG12: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref | |
; gcrRegs +[r14] | |
mov rcx, gword ptr [r14+0x08] | |
; gcrRegs +[rcx] | |
@@ -160,9 +164,9 @@ G_M59759_IG11: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, | |
call [System.CommandLine.Parsing.ArgumentResult:AddError(System.String):this] | |
; gcrRegs -[rax rcx rdx] | |
; gcr arg pop 0 | |
- jmp SHORT G_M59759_IG13 | |
- ;; size=24 bbWeight=2 PerfScore 21.00 | |
-G_M59759_IG12: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz | |
+ jmp G_M59759_IG03 | |
+ ;; size=27 bbWeight=2 PerfScore 21.00 | |
+G_M59759_IG13: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref | |
; gcrRegs +[r14] | |
mov rcx, gword ptr [r14+0x08] | |
; gcrRegs +[rcx] | |
@@ -170,7 +174,7 @@ G_M59759_IG12: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, | |
; gcrRegs -[rcx] | |
; gcr arg pop 0 | |
test eax, eax | |
- jne SHORT G_M59759_IG13 | |
+ jne G_M59759_IG03 | |
mov rcx, gword ptr [r14+0x08] | |
; gcrRegs +[rcx] | |
call [System.CommandLine.LocalizationResources:FileOrDirectoryDoesNotExist(System.String):System.String] | |
@@ -183,11 +187,8 @@ G_M59759_IG12: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, | |
call [System.CommandLine.Parsing.ArgumentResult:AddError(System.String):this] | |
; gcrRegs -[rax rcx rdx] | |
; gcr arg pop 0 | |
- ;; size=36 bbWeight=2 PerfScore 29.50 | |
-G_M59759_IG13: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
- inc ebp | |
jmp G_M59759_IG03 | |
- ;; size=7 bbWeight=2 PerfScore 4.50 | |
+ ;; size=45 bbWeight=2 PerfScore 33.50 | |
G_M59759_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc | |
; gcrRegs -[rbx] | |
add rsp, 48 | |
@@ -199,7 +200,7 @@ G_M59759_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
ret | |
;; size=11 bbWeight=1 PerfScore 3.75 | |
-; Total bytes of code 354, prolog size 15, PerfScore 248.00, instruction count 93, allocated bytes for code 354 (MethodHash=0ac51690) for method System.CommandLine.ArgumentValidation:FileOrDirectoryExists[System.__Canon](System.CommandLine.Parsing.ArgumentResult) (FullOpts) | |
+; Total bytes of code 378, prolog size 15, PerfScore 250.00, instruction count 94, allocated bytes for code 378 (MethodHash=0ac51690) for method System.CommandLine.ArgumentValidation:FileOrDirectoryExists[System.__Canon](System.CommandLine.Parsing.ArgumentResult) (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+27</span> (<span style="color:red">+7.28%</span>) : 306939.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Instrumented Tier1)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -24,8 +24,8 @@ | |
;* V12 tmp2 [V12 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" | |
;* V13 tmp3 [V13 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" | |
;* V14 tmp4 [V14 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" | |
-; V15 cse0 [V15,T02] ( 5, 34.51) int -> rcx "CSE #01: aggressive" | |
-; V16 cse1 [V16,T03] ( 4, 34.50) int -> rax "CSE #02: aggressive" | |
+; V15 cse0 [V15,T02] ( 5, 34.51) int -> r13 "CSE #01: aggressive" | |
+; V16 cse1 [V16,T03] ( 4, 34.50) int -> r12 "CSE #02: aggressive" | |
; V17 cse2 [V17,T12] ( 3, 1.92) int -> rcx "CSE #04: moderate" | |
; | |
; Lcl frame size = 40 | |
@@ -33,6 +33,8 @@ | |
G_M49993_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
push r15 | |
push r14 | |
+ push r13 | |
+ push r12 | |
push rdi | |
push rsi | |
push rbp | |
@@ -40,8 +42,8 @@ G_M49993_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
sub rsp, 40 | |
mov ebx, edx | |
mov esi, r9d | |
- ;; size=17 bbWeight=1 PerfScore 6.75 | |
-G_M49993_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0102 {rcx r8}, byref | |
+ ;; size=21 bbWeight=1 PerfScore 8.75 | |
+G_M49993_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0102 {rcx r8}, byref, isz | |
; byrRegs +[rcx r8] | |
cmp ebx, esi | |
mov edi, esi | |
@@ -51,47 +53,48 @@ G_M49993_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0102 {rcx r8}, | |
; byrRegs +[r14] | |
mov r15, r8 | |
; byrRegs +[r15] | |
- ;; size=15 bbWeight=1 PerfScore 1.50 | |
-G_M49993_IG03: ; bbWeight=11.64, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref | |
+ jmp SHORT G_M49993_IG04 | |
+ ;; size=17 bbWeight=1 PerfScore 3.50 | |
+G_M49993_IG03: ; bbWeight=10.64, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref | |
; byrRegs -[rcx r8] | |
- test edi, edi | |
- je G_M49993_IG14 | |
- ;; size=8 bbWeight=11.64 PerfScore 14.55 | |
-G_M49993_IG04: ; bbWeight=11.28, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz | |
- movzx rcx, word ptr [r14] | |
- cmp ecx, 127 | |
- jg G_M49993_IG18 | |
- movzx rax, word ptr [r15] | |
- cmp eax, 127 | |
- jg G_M49993_IG17 | |
- cmp ecx, eax | |
- je SHORT G_M49993_IG07 | |
- ;; size=30 bbWeight=11.28 PerfScore 87.43 | |
-G_M49993_IG05: ; bbWeight=0.66, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz | |
- mov edx, ecx | |
- or edx, 32 | |
- or eax, 32 | |
- cmp edx, eax | |
- jne SHORT G_M49993_IG08 | |
- ;; size=12 bbWeight=0.66 PerfScore 1.31 | |
-G_M49993_IG06: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref | |
- or ecx, 32 | |
- add ecx, -97 | |
- cmp ecx, 25 | |
- ja G_M49993_IG16 | |
- mov rcx, 0xD1FFAB1E | |
- call CORINFO_HELP_COUNTPROFILE32 | |
- ; gcr arg pop 0 | |
- ;; size=30 bbWeight=0.01 PerfScore 0.04 | |
-G_M49993_IG07: ; bbWeight=10.64, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz | |
mov rcx, 0xD1FFAB1E | |
call CORINFO_HELP_COUNTPROFILE32 | |
; gcr arg pop 0 | |
dec edi | |
add r14, 2 | |
add r15, 2 | |
+ ;; size=25 bbWeight=10.64 PerfScore 21.28 | |
+G_M49993_IG04: ; bbWeight=11.64, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref | |
+ test edi, edi | |
+ je G_M49993_IG14 | |
+ ;; size=8 bbWeight=11.64 PerfScore 14.55 | |
+G_M49993_IG05: ; bbWeight=11.28, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz | |
+ movzx r13, word ptr [r14] | |
+ cmp r13d, 127 | |
+ jg G_M49993_IG18 | |
+ movzx r12, word ptr [r15] | |
+ cmp r12d, 127 | |
+ jg G_M49993_IG17 | |
+ cmp r13d, r12d | |
+ je SHORT G_M49993_IG03 | |
+ ;; size=33 bbWeight=11.28 PerfScore 87.43 | |
+G_M49993_IG06: ; bbWeight=0.66, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz | |
+ mov ecx, r13d | |
+ or ecx, 32 | |
+ or r12d, 32 | |
+ cmp ecx, r12d | |
+ jne SHORT G_M49993_IG08 | |
+ ;; size=15 bbWeight=0.66 PerfScore 1.31 | |
+G_M49993_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz | |
+ or r13d, 32 | |
+ add r13d, -97 | |
+ cmp r13d, 25 | |
+ ja G_M49993_IG16 | |
+ mov rcx, 0xD1FFAB1E | |
+ call CORINFO_HELP_COUNTPROFILE32 | |
+ ; gcr arg pop 0 | |
jmp SHORT G_M49993_IG03 | |
- ;; size=27 bbWeight=10.64 PerfScore 42.56 | |
+ ;; size=35 bbWeight=0.01 PerfScore 0.07 | |
G_M49993_IG08: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz | |
movzx rcx, word ptr [r14] | |
mov ebx, ecx | |
@@ -133,10 +136,12 @@ G_M49993_IG13: ; bbWeight=0.64, epilog, nogc, extend | |
pop rbp | |
pop rsi | |
pop rdi | |
+ pop r12 | |
+ pop r13 | |
pop r14 | |
pop r15 | |
ret | |
- ;; size=13 bbWeight=0.64 PerfScore 2.73 | |
+ ;; size=17 bbWeight=0.64 PerfScore 3.37 | |
G_M49993_IG14: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref | |
mov rcx, 0xD1FFAB1E | |
call CORINFO_HELP_COUNTPROFILE32 | |
@@ -150,10 +155,12 @@ G_M49993_IG15: ; bbWeight=0.36, epilog, nogc, extend | |
pop rbp | |
pop rsi | |
pop rdi | |
+ pop r12 | |
+ pop r13 | |
pop r14 | |
pop r15 | |
ret | |
- ;; size=13 bbWeight=0.36 PerfScore 1.52 | |
+ ;; size=17 bbWeight=0.36 PerfScore 1.88 | |
G_M49993_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, gcvars, byref | |
; byrRegs +[r14-r15] | |
mov rcx, 0xD1FFAB1E | |
@@ -192,12 +199,14 @@ G_M49993_IG20: ; bbWeight=0, epilog, nogc, extend | |
pop rbp | |
pop rsi | |
pop rdi | |
+ pop r12 | |
+ pop r13 | |
pop r14 | |
pop r15 | |
tail.jmp [System.Globalization.Ordinal:CompareStringIgnoreCaseNonAscii(byref,int,byref,int):int] | |
- ;; size=18 bbWeight=0 PerfScore 0.00 | |
+ ;; size=22 bbWeight=0 PerfScore 0.00 | |
-; Total bytes of code 371, prolog size 17, PerfScore 167.16, instruction count 107, allocated bytes for code 371 (MethodHash=d5cf3cb6) for method System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Instrumented Tier1) | |
+; Total bytes of code 398, prolog size 21, PerfScore 150.91, instruction count 116, allocated bytes for code 398 (MethodHash=d5cf3cb6) for method System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Instrumented Tier1) | |
; ============================================================ | |
Unwind Info: | |
@@ -205,15 +214,17 @@ Unwind Info: | |
>> End offset : 0xd1ffab1e (not in unwind data) | |
Version : 1 | |
Flags : 0x00 | |
- SizeOfProlog : 0x0C | |
- CountOfUnwindCodes: 7 | |
+ SizeOfProlog : 0x10 | |
+ CountOfUnwindCodes: 9 | |
FrameRegister : none (0) | |
FrameOffset : N/A (no FrameRegister) (Value=0) | |
UnwindCodes : | |
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 | |
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
- CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) | |
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) | |
+ CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 | |
+ CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
+ CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
+ CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) | |
+ CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) | |
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12) | |
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) | |
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) | |
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) | |
``` | |
</div></details> | |
</div></details> | |
<details> | |
<summary>libraries.crossgen2.windows.x64.checked.mch</summary> | |
<div style="margin-left:1em"> | |
<details> | |
<summary><span style="color:green">-9</span> (<span style="color:green">-7.20%</span>) : 95094.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:TryGetTopLevelLengthTemp(Microsoft.CodeAnalysis.CSharp.BoundDagPropertyEvaluation):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundDagTemp,int] (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -11,9 +11,9 @@ | |
; | |
; V00 RetBuf [V00,T03] ( 4, 4 ) byref -> rbx single-def | |
; V01 arg0 [V01,T05] ( 3, 3 ) ref -> rdx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundDagPropertyEvaluation> | |
-; V02 loc0 [V02,T02] ( 4, 10 ) int -> rbp | |
-; V03 loc1 [V03,T01] ( 3, 13 ) ref -> r14 class-hnd <Microsoft.CodeAnalysis.CSharp.BoundDagTemp> | |
-; V04 loc2 [V04,T04] ( 3, 6 ) ref -> r15 class-hnd <Microsoft.CodeAnalysis.CSharp.BoundDagTemp> | |
+; V02 loc0 [V02,T02] ( 4, 10 ) int -> rsi | |
+; V03 loc1 [V03,T01] ( 3, 13 ) ref -> rdi class-hnd <Microsoft.CodeAnalysis.CSharp.BoundDagTemp> | |
+; V04 loc2 [V04,T04] ( 3, 6 ) ref -> rbp class-hnd <Microsoft.CodeAnalysis.CSharp.BoundDagTemp> | |
; V05 loc3 [V05,T00] ( 6, 32 ) ref -> rax class-hnd <Microsoft.CodeAnalysis.CSharp.BoundDagSliceEvaluation> | |
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" | |
; V07 tmp1 [V07 ] ( 2, 4 ) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundDagTemp,int]> | |
@@ -24,8 +24,6 @@ | |
; Lcl frame size = 56 | |
G_M10204_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
- push r15 | |
- push r14 | |
push rdi | |
push rsi | |
push rbp | |
@@ -36,34 +34,45 @@ G_M10204_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
mov qword ptr [rsp+0x30], rax | |
mov rbx, rcx | |
; byrRegs +[rbx] | |
- ;; size=27 bbWeight=1 PerfScore 8.75 | |
-G_M10204_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref | |
+ ;; size=23 bbWeight=1 PerfScore 6.75 | |
+G_M10204_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz | |
; gcrRegs +[rdx] | |
- xor ebp, ebp | |
- mov r14, gword ptr [rdx+0x18] | |
- ; gcrRegs +[r14] | |
- xor r15, r15 | |
- ; gcrRegs +[r15] | |
- ;; size=9 bbWeight=1 PerfScore 2.50 | |
-G_M10204_IG03: ; bbWeight=8, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz | |
- ; gcrRegs -[rdx] | |
- mov rcx, gword ptr [r14+0x20] | |
+ xor esi, esi | |
+ mov rdi, gword ptr [rdx+0x18] | |
+ ; gcrRegs +[rdi] | |
+ xor rbp, rbp | |
+ ; gcrRegs +[rbp] | |
+ jmp SHORT G_M10204_IG04 | |
+ ;; size=10 bbWeight=1 PerfScore 4.50 | |
+G_M10204_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0008 {rbx}, byref | |
+ ; gcrRegs -[rdx rbp rdi] +[rax] | |
+ mov ecx, dword ptr [rax+0x48] | |
+ sub ecx, dword ptr [rax+0x4C] | |
+ add esi, ecx | |
+ mov rbp, gword ptr [rax+0x28] | |
+ ; gcrRegs +[rbp] | |
+ mov rdi, gword ptr [rax+0x18] | |
+ ; gcrRegs +[rdi] | |
+ ;; size=16 bbWeight=4 PerfScore 37.00 | |
+G_M10204_IG04: ; bbWeight=8, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0008 {rbx}, byref, isz | |
+ ; gcrRegs -[rax] | |
+ mov rcx, gword ptr [rdi+0x20] | |
; gcrRegs +[rcx] | |
call [CORINFO_HELP_READYTORUN_ISINSTANCEOF] | |
- ; gcrRegs -[rcx r14] +[rax] | |
+ ; gcrRegs -[rcx rdi] +[rax] | |
; gcr arg pop 0 | |
test rax, rax | |
- jne SHORT G_M10204_IG06 | |
+ jne SHORT G_M10204_IG03 | |
;; size=15 bbWeight=8 PerfScore 50.00 | |
-G_M10204_IG04: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref | |
+G_M10204_IG05: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0008 {rbx}, byref | |
; gcrRegs -[rax] | |
lea rcx, [rsp+0x28] | |
mov rdx, qword ptr [(reloc)] ; System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundDagTemp,int] | |
- mov r8, r15 | |
+ mov r8, rbp | |
; gcrRegs +[r8] | |
- mov r9d, ebp | |
+ mov r9d, esi | |
call [<unknown method>] | |
- ; gcrRegs -[r8 r15] | |
+ ; gcrRegs -[rbp r8] | |
; gcr arg pop 0 | |
mov rdi, rbx | |
; byrRegs +[rdi] | |
@@ -74,30 +83,16 @@ G_M10204_IG04: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, | |
mov rax, rbx | |
; byrRegs +[rax] | |
;; size=43 bbWeight=1 PerfScore 11.00 | |
-G_M10204_IG05: ; bbWeight=1, epilog, nogc, extend | |
+G_M10204_IG06: ; bbWeight=1, epilog, nogc, extend | |
add rsp, 56 | |
pop rbx | |
pop rbp | |
pop rsi | |
pop rdi | |
- pop r14 | |
- pop r15 | |
ret | |
- ;; size=13 bbWeight=1 PerfScore 4.25 | |
-G_M10204_IG06: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0001 {rax}, byrefRegs=0008 {rbx}, gcvars, byref, isz | |
- ; gcrRegs +[rax] | |
- ; byrRegs -[rax rsi rdi] | |
- mov ecx, dword ptr [rax+0x48] | |
- sub ecx, dword ptr [rax+0x4C] | |
- add ebp, ecx | |
- mov r15, gword ptr [rax+0x28] | |
- ; gcrRegs +[r15] | |
- mov r14, gword ptr [rax+0x18] | |
- ; gcrRegs +[r14] | |
- jmp SHORT G_M10204_IG03 | |
- ;; size=18 bbWeight=4 PerfScore 45.00 | |
+ ;; size=9 bbWeight=1 PerfScore 3.25 | |
-; Total bytes of code 125, prolog size 27, PerfScore 121.50, instruction count 42, allocated bytes for code 125 (MethodHash=055cd823) for method Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:TryGetTopLevelLengthTemp(Microsoft.CodeAnalysis.CSharp.BoundDagPropertyEvaluation):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundDagTemp,int] (FullOpts) | |
+; Total bytes of code 116, prolog size 23, PerfScore 112.50, instruction count 38, allocated bytes for code 116 (MethodHash=055cd823) for method Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:TryGetTopLevelLengthTemp(Microsoft.CodeAnalysis.CSharp.BoundDagPropertyEvaluation):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundDagTemp,int] (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
@@ -105,15 +100,13 @@ Unwind Info: | |
>> End offset : 0xd1ffab1e (not in unwind data) | |
Version : 1 | |
Flags : 0x00 | |
- SizeOfProlog : 0x0C | |
- CountOfUnwindCodes: 7 | |
+ SizeOfProlog : 0x08 | |
+ CountOfUnwindCodes: 5 | |
FrameRegister : none (0) | |
FrameOffset : N/A (no FrameRegister) (Value=0) | |
UnwindCodes : | |
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38 | |
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
- CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) | |
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) | |
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) | |
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) | |
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38 | |
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) | |
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:green">-9</span> (<span style="color:green">-7.20%</span>) : 60137.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:TryGetTopLevelLengthTemp(Microsoft.CodeAnalysis.CSharp.BoundDagPropertyEvaluation):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundDagTemp,int] (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -11,9 +11,9 @@ | |
; | |
; V00 RetBuf [V00,T03] ( 4, 4 ) byref -> rbx single-def | |
; V01 arg0 [V01,T05] ( 3, 3 ) ref -> rdx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundDagPropertyEvaluation> | |
-; V02 loc0 [V02,T02] ( 4, 10 ) int -> rbp | |
-; V03 loc1 [V03,T01] ( 3, 13 ) ref -> r14 class-hnd <Microsoft.CodeAnalysis.CSharp.BoundDagTemp> | |
-; V04 loc2 [V04,T04] ( 3, 6 ) ref -> r15 class-hnd <Microsoft.CodeAnalysis.CSharp.BoundDagTemp> | |
+; V02 loc0 [V02,T02] ( 4, 10 ) int -> rsi | |
+; V03 loc1 [V03,T01] ( 3, 13 ) ref -> rdi class-hnd <Microsoft.CodeAnalysis.CSharp.BoundDagTemp> | |
+; V04 loc2 [V04,T04] ( 3, 6 ) ref -> rbp class-hnd <Microsoft.CodeAnalysis.CSharp.BoundDagTemp> | |
; V05 loc3 [V05,T00] ( 6, 32 ) ref -> rax class-hnd <Microsoft.CodeAnalysis.CSharp.BoundDagSliceEvaluation> | |
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" | |
; V07 tmp1 [V07 ] ( 2, 4 ) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundDagTemp,int]> | |
@@ -24,8 +24,6 @@ | |
; Lcl frame size = 56 | |
G_M10204_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
- push r15 | |
- push r14 | |
push rdi | |
push rsi | |
push rbp | |
@@ -36,34 +34,45 @@ G_M10204_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
mov qword ptr [rsp+0x30], rax | |
mov rbx, rcx | |
; byrRegs +[rbx] | |
- ;; size=27 bbWeight=1 PerfScore 8.75 | |
-G_M10204_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref | |
+ ;; size=23 bbWeight=1 PerfScore 6.75 | |
+G_M10204_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz | |
; gcrRegs +[rdx] | |
- xor ebp, ebp | |
- mov r14, gword ptr [rdx+0x18] | |
- ; gcrRegs +[r14] | |
- xor r15, r15 | |
- ; gcrRegs +[r15] | |
- ;; size=9 bbWeight=1 PerfScore 2.50 | |
-G_M10204_IG03: ; bbWeight=8, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz | |
- ; gcrRegs -[rdx] | |
- mov rcx, gword ptr [r14+0x20] | |
+ xor esi, esi | |
+ mov rdi, gword ptr [rdx+0x18] | |
+ ; gcrRegs +[rdi] | |
+ xor rbp, rbp | |
+ ; gcrRegs +[rbp] | |
+ jmp SHORT G_M10204_IG04 | |
+ ;; size=10 bbWeight=1 PerfScore 4.50 | |
+G_M10204_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0008 {rbx}, byref | |
+ ; gcrRegs -[rdx rbp rdi] +[rax] | |
+ mov ecx, dword ptr [rax+0x48] | |
+ sub ecx, dword ptr [rax+0x4C] | |
+ add esi, ecx | |
+ mov rbp, gword ptr [rax+0x28] | |
+ ; gcrRegs +[rbp] | |
+ mov rdi, gword ptr [rax+0x18] | |
+ ; gcrRegs +[rdi] | |
+ ;; size=16 bbWeight=4 PerfScore 37.00 | |
+G_M10204_IG04: ; bbWeight=8, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0008 {rbx}, byref, isz | |
+ ; gcrRegs -[rax] | |
+ mov rcx, gword ptr [rdi+0x20] | |
; gcrRegs +[rcx] | |
call [CORINFO_HELP_READYTORUN_ISINSTANCEOF] | |
- ; gcrRegs -[rcx r14] +[rax] | |
+ ; gcrRegs -[rcx rdi] +[rax] | |
; gcr arg pop 0 | |
test rax, rax | |
- jne SHORT G_M10204_IG06 | |
+ jne SHORT G_M10204_IG03 | |
;; size=15 bbWeight=8 PerfScore 50.00 | |
-G_M10204_IG04: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref | |
+G_M10204_IG05: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0008 {rbx}, byref | |
; gcrRegs -[rax] | |
lea rcx, [rsp+0x28] | |
mov rdx, qword ptr [(reloc)] ; System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundDagTemp,int] | |
- mov r8, r15 | |
+ mov r8, rbp | |
; gcrRegs +[r8] | |
- mov r9d, ebp | |
+ mov r9d, esi | |
call [<unknown method>] | |
- ; gcrRegs -[r8 r15] | |
+ ; gcrRegs -[rbp r8] | |
; gcr arg pop 0 | |
mov rdi, rbx | |
; byrRegs +[rdi] | |
@@ -74,30 +83,16 @@ G_M10204_IG04: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, | |
mov rax, rbx | |
; byrRegs +[rax] | |
;; size=43 bbWeight=1 PerfScore 11.00 | |
-G_M10204_IG05: ; bbWeight=1, epilog, nogc, extend | |
+G_M10204_IG06: ; bbWeight=1, epilog, nogc, extend | |
add rsp, 56 | |
pop rbx | |
pop rbp | |
pop rsi | |
pop rdi | |
- pop r14 | |
- pop r15 | |
ret | |
- ;; size=13 bbWeight=1 PerfScore 4.25 | |
-G_M10204_IG06: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0001 {rax}, byrefRegs=0008 {rbx}, gcvars, byref, isz | |
- ; gcrRegs +[rax] | |
- ; byrRegs -[rax rsi rdi] | |
- mov ecx, dword ptr [rax+0x48] | |
- sub ecx, dword ptr [rax+0x4C] | |
- add ebp, ecx | |
- mov r15, gword ptr [rax+0x28] | |
- ; gcrRegs +[r15] | |
- mov r14, gword ptr [rax+0x18] | |
- ; gcrRegs +[r14] | |
- jmp SHORT G_M10204_IG03 | |
- ;; size=18 bbWeight=4 PerfScore 45.00 | |
+ ;; size=9 bbWeight=1 PerfScore 3.25 | |
-; Total bytes of code 125, prolog size 27, PerfScore 121.50, instruction count 42, allocated bytes for code 125 (MethodHash=055cd823) for method Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:TryGetTopLevelLengthTemp(Microsoft.CodeAnalysis.CSharp.BoundDagPropertyEvaluation):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundDagTemp,int] (FullOpts) | |
+; Total bytes of code 116, prolog size 23, PerfScore 112.50, instruction count 38, allocated bytes for code 116 (MethodHash=055cd823) for method Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:TryGetTopLevelLengthTemp(Microsoft.CodeAnalysis.CSharp.BoundDagPropertyEvaluation):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundDagTemp,int] (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
@@ -105,15 +100,13 @@ Unwind Info: | |
>> End offset : 0xd1ffab1e (not in unwind data) | |
Version : 1 | |
Flags : 0x00 | |
- SizeOfProlog : 0x0C | |
- CountOfUnwindCodes: 7 | |
+ SizeOfProlog : 0x08 | |
+ CountOfUnwindCodes: 5 | |
FrameRegister : none (0) | |
FrameOffset : N/A (no FrameRegister) (Value=0) | |
UnwindCodes : | |
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38 | |
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
- CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) | |
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) | |
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) | |
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) | |
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38 | |
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) | |
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:green">-19</span> (<span style="color:green">-7.06%</span>) : 275318.dasm - System.Diagnostics.PassThroughPropagator:GetRootId(byref,byref,byref,byref) (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -15,9 +15,9 @@ | |
; V03 arg3 [V03,T05] ( 3, 3 ) byref -> rbp single-def | |
; V04 loc0 [V04,T00] ( 12, 20.50) ref -> r14 class-hnd <System.Diagnostics.Activity> | |
;* V05 loc1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Diagnostics.Activity> | |
-; V06 loc2 [V06 ] ( 1, 0.50) struct (32) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Diagnostics.ActivityContext> | |
+; V06 loc2 [V06 ] ( 1, 0.50) struct (32) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Diagnostics.ActivityContext> | |
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" | |
-; V08 tmp1 [V08,T01] ( 4, 16 ) ref -> r15 | |
+; V08 tmp1 [V08,T01] ( 4, 16 ) ref -> rcx | |
;* V09 tmp2 [V09 ] ( 0, 0 ) byref -> zero-ref | |
;* V10 tmp3 [V10 ] ( 0, 0 ) byref -> zero-ref single-def | |
; V11 tmp4 [V11,T08] ( 3, 2 ) ref -> rax | |
@@ -35,21 +35,18 @@ | |
;* V23 tmp16 [V23 ] ( 0, 0 ) byref -> zero-ref | |
; V24 tmp17 [V24,T07] ( 2, 4 ) ref -> rcx single-def "argument with side effect" | |
; | |
-; Lcl frame size = 72 | |
+; Lcl frame size = 64 | |
G_M152_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
- push r15 | |
push r14 | |
push rdi | |
push rsi | |
push rbp | |
push rbx | |
- sub rsp, 72 | |
- xor eax, eax | |
- mov qword ptr [rsp+0x28], rax | |
+ sub rsp, 64 | |
xorps xmm4, xmm4 | |
+ movaps xmmword ptr [rsp+0x20], xmm4 | |
movaps xmmword ptr [rsp+0x30], xmm4 | |
- mov qword ptr [rsp+0x40], rax | |
mov rbx, rcx | |
; byrRegs +[rbx] | |
mov rsi, rdx | |
@@ -58,8 +55,8 @@ G_M152_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n | |
; byrRegs +[rdi] | |
mov rbp, r9 | |
; byrRegs +[rbp] | |
- ;; size=44 bbWeight=1 PerfScore 11.83 | |
-G_M152_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref | |
+ ;; size=35 bbWeight=1 PerfScore 10.58 | |
+G_M152_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE] | |
; byrRegs +[rax] | |
; gcr arg pop 0 | |
@@ -73,46 +70,52 @@ G_M152_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00E8 {rbx rbp rsi | |
; gcr arg pop 0 | |
mov r14, rax | |
; gcrRegs +[r14] | |
- ;; size=25 bbWeight=1 PerfScore 11.75 | |
-G_M152_IG03: ; bbWeight=8, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
- ; gcrRegs -[rax] | |
+ jmp SHORT G_M152_IG04 | |
+ ;; size=27 bbWeight=1 PerfScore 13.75 | |
+G_M152_IG03: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref | |
+ ; gcrRegs -[rax r14] +[rcx] | |
+ mov r14, rcx | |
+ ; gcrRegs +[r14] | |
+ ;; size=3 bbWeight=4 PerfScore 1.00 | |
+G_M152_IG04: ; bbWeight=8, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+ ; gcrRegs -[rcx] | |
test r14, r14 | |
- je SHORT G_M152_IG05 | |
+ je SHORT G_M152_IG06 | |
;; size=5 bbWeight=8 PerfScore 10.00 | |
-G_M152_IG04: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+G_M152_IG05: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
mov rcx, qword ptr [(reloc)] ; const ptr | |
- mov r15, gword ptr [r14+rcx] | |
- ; gcrRegs +[r15] | |
- jmp SHORT G_M152_IG06 | |
+ mov rcx, gword ptr [r14+rcx] | |
+ ; gcrRegs +[rcx] | |
+ jmp SHORT G_M152_IG07 | |
;; size=13 bbWeight=2 PerfScore 12.00 | |
-G_M152_IG05: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref | |
- ; gcrRegs -[r15] | |
- xor r15, r15 | |
- ; gcrRegs +[r15] | |
- ;; size=3 bbWeight=2 PerfScore 0.50 | |
-G_M152_IG06: ; bbWeight=8, gcrefRegs=C000 {r14 r15}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref | |
- test r15, r15 | |
- jne G_M152_IG24 | |
- ;; size=9 bbWeight=8 PerfScore 10.00 | |
-G_M152_IG07: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
- ; gcrRegs -[r15] | |
+G_M152_IG06: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref | |
+ ; gcrRegs -[rcx] | |
+ xor rcx, rcx | |
+ ; gcrRegs +[rcx] | |
+ ;; size=2 bbWeight=2 PerfScore 0.50 | |
+G_M152_IG07: ; bbWeight=8, gcrefRegs=4002 {rcx r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+ test rcx, rcx | |
+ jne SHORT G_M152_IG03 | |
+ ;; size=5 bbWeight=8 PerfScore 10.00 | |
+G_M152_IG08: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+ ; gcrRegs -[rcx] | |
test r14, r14 | |
- je SHORT G_M152_IG09 | |
+ je SHORT G_M152_IG10 | |
;; size=5 bbWeight=1 PerfScore 1.25 | |
-G_M152_IG08: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+G_M152_IG09: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
mov rcx, r14 | |
; gcrRegs +[rcx] | |
call [System.Diagnostics.Activity:get_TraceStateString():System.String:this] | |
; gcrRegs -[rcx] +[rax] | |
; gcr arg pop 0 | |
- jmp SHORT G_M152_IG10 | |
+ jmp SHORT G_M152_IG11 | |
;; size=11 bbWeight=0.50 PerfScore 2.62 | |
-G_M152_IG09: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref | |
+G_M152_IG10: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref | |
; gcrRegs -[rax] | |
xor rax, rax | |
; gcrRegs +[rax] | |
;; size=2 bbWeight=0.50 PerfScore 0.12 | |
-G_M152_IG10: ; bbWeight=1, gcrefRegs=4001 {rax r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+G_M152_IG11: ; bbWeight=1, gcrefRegs=4001 {rax r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
mov rcx, rsi | |
; byrRegs +[rcx] | |
mov rdx, rax | |
@@ -121,9 +124,9 @@ G_M152_IG10: ; bbWeight=1, gcrefRegs=4001 {rax r14}, byrefRegs=00E8 {rbx | |
; gcrRegs -[rax rdx] | |
; byrRegs -[rcx] | |
test r14, r14 | |
- je SHORT G_M152_IG12 | |
+ je SHORT G_M152_IG13 | |
;; size=17 bbWeight=1 PerfScore 4.75 | |
-G_M152_IG11: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+G_M152_IG12: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
mov rcx, r14 | |
; gcrRegs +[rcx] | |
call [<unknown method>] | |
@@ -131,21 +134,21 @@ G_M152_IG11: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx r | |
; gcr arg pop 0 | |
mov rdx, rax | |
; gcrRegs +[rdx] | |
- jmp SHORT G_M152_IG13 | |
+ jmp SHORT G_M152_IG14 | |
;; size=14 bbWeight=0.50 PerfScore 2.75 | |
-G_M152_IG12: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref | |
+G_M152_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref | |
; gcrRegs -[rax rdx] | |
xor rdx, rdx | |
; gcrRegs +[rdx] | |
;; size=2 bbWeight=0.50 PerfScore 0.12 | |
-G_M152_IG13: ; bbWeight=1, gcrefRegs=4004 {rdx r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+G_M152_IG14: ; bbWeight=1, gcrefRegs=4004 {rdx r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
test rdx, rdx | |
- jne SHORT G_M152_IG16 | |
+ jne SHORT G_M152_IG17 | |
;; size=5 bbWeight=1 PerfScore 1.25 | |
-G_M152_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+G_M152_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
; gcrRegs -[rdx] | |
test r14, r14 | |
- je SHORT G_M152_IG15 | |
+ je SHORT G_M152_IG16 | |
mov rcx, r14 | |
; gcrRegs +[rcx] | |
call [<unknown method>] | |
@@ -153,58 +156,58 @@ G_M152_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx r | |
; gcr arg pop 0 | |
mov rdx, rax | |
; gcrRegs +[rdx] | |
- jmp SHORT G_M152_IG16 | |
+ jmp SHORT G_M152_IG17 | |
;; size=19 bbWeight=0.50 PerfScore 3.38 | |
-G_M152_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref | |
+G_M152_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref | |
; gcrRegs -[rax rdx] | |
xor rdx, rdx | |
; gcrRegs +[rdx] | |
;; size=2 bbWeight=0.50 PerfScore 0.12 | |
-G_M152_IG16: ; bbWeight=1, gcrefRegs=4004 {rdx r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+G_M152_IG17: ; bbWeight=1, gcrefRegs=4004 {rdx r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
mov rcx, rbx | |
; byrRegs +[rcx] | |
call [CORINFO_HELP_CHECKED_ASSIGN_REF] | |
; gcrRegs -[rdx] | |
; byrRegs -[rcx] | |
cmp gword ptr [rbx], 0 | |
- je SHORT G_M152_IG18 | |
+ je SHORT G_M152_IG19 | |
;; size=15 bbWeight=1 PerfScore 7.25 | |
-G_M152_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+G_M152_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
mov rcx, gword ptr [rbx] | |
; gcrRegs +[rcx] | |
mov rdx, gword ptr [rsi] | |
; gcrRegs +[rdx] | |
- lea r9, [rsp+0x28] | |
+ lea r9, [rsp+0x20] | |
xor r8d, r8d | |
call [<unknown method>] | |
; gcrRegs -[rcx rdx] | |
; byrRegs -[rbx rsi] | |
; gcr arg pop 0 | |
- jmp SHORT G_M152_IG19 | |
+ jmp SHORT G_M152_IG20 | |
;; size=22 bbWeight=0.50 PerfScore 4.88 | |
-G_M152_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00A0 {rbp rdi}, byref | |
+G_M152_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00A0 {rbp rdi}, byref | |
xor eax, eax | |
;; size=2 bbWeight=0.50 PerfScore 0.12 | |
-G_M152_IG19: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=00A0 {rbp rdi}, byref, isz | |
+G_M152_IG20: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=00A0 {rbp rdi}, byref, isz | |
mov byte ptr [rdi], al | |
test r14, r14 | |
- je SHORT G_M152_IG21 | |
+ je SHORT G_M152_IG22 | |
;; size=7 bbWeight=1 PerfScore 2.25 | |
-G_M152_IG20: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0020 {rbp}, byref, isz | |
+G_M152_IG21: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0020 {rbp}, byref, isz | |
; byrRegs -[rdi] | |
mov rcx, r14 | |
; gcrRegs +[rcx] | |
call [System.Diagnostics.Activity:get_Baggage():System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]]:this] | |
; gcrRegs -[rcx r14] +[rax] | |
; gcr arg pop 0 | |
- jmp SHORT G_M152_IG22 | |
+ jmp SHORT G_M152_IG23 | |
;; size=11 bbWeight=0.50 PerfScore 2.62 | |
-G_M152_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref | |
+G_M152_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref | |
; gcrRegs -[rax] | |
xor rax, rax | |
; gcrRegs +[rax] | |
;; size=2 bbWeight=0.50 PerfScore 0.12 | |
-G_M152_IG22: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0020 {rbp}, byref | |
+G_M152_IG23: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0020 {rbp}, byref | |
mov rcx, rbp | |
; byrRegs +[rcx] | |
mov rdx, rax | |
@@ -214,25 +217,17 @@ G_M152_IG22: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0020 {rbp}, by | |
; byrRegs -[rcx rbp] | |
nop | |
;; size=13 bbWeight=1 PerfScore 3.75 | |
-G_M152_IG23: ; bbWeight=1, epilog, nogc, extend | |
- add rsp, 72 | |
+G_M152_IG24: ; bbWeight=1, epilog, nogc, extend | |
+ add rsp, 64 | |
pop rbx | |
pop rbp | |
pop rsi | |
pop rdi | |
... | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+20</span> (<span style="color:red">+6.64%</span>) : 258158.dasm - System.CommandLine.ArgumentValidation:FileOrDirectoryExists[System.__Canon](System.CommandLine.Parsing.ArgumentResult) (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -39,7 +39,7 @@ G_M59759_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
mov rbx, rdx | |
; gcrRegs +[rbx] | |
;; size=18 bbWeight=1 PerfScore 6.50 | |
-G_M59759_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+G_M59759_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] | |
; gcr arg pop 0 | |
cmp rax, qword ptr [(reloc)] ; <unknown class> | |
@@ -49,17 +49,21 @@ G_M59759_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr | |
setne dil | |
movzx rdi, dil | |
xor ebp, ebp | |
- ;; size=38 bbWeight=1 PerfScore 11.75 | |
-G_M59759_IG03: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+ jmp SHORT G_M59759_IG04 | |
+ ;; size=40 bbWeight=1 PerfScore 13.75 | |
+G_M59759_IG03: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+ inc ebp | |
+ ;; size=2 bbWeight=2 PerfScore 0.50 | |
+G_M59759_IG04: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
cmp gword ptr [rbx+0x10], 0 | |
- je SHORT G_M59759_IG05 | |
+ je SHORT G_M59759_IG06 | |
;; size=7 bbWeight=8 PerfScore 32.00 | |
-G_M59759_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+G_M59759_IG05: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
mov rcx, gword ptr [rbx+0x10] | |
; gcrRegs +[rcx] | |
- jmp SHORT G_M59759_IG06 | |
+ jmp SHORT G_M59759_IG07 | |
;; size=6 bbWeight=2 PerfScore 8.00 | |
-G_M59759_IG05: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+G_M59759_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rcx] | |
mov rcx, qword ptr [(reloc)] ; <unknown method> | |
call [<unknown method>] | |
@@ -68,7 +72,7 @@ G_M59759_IG05: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr | |
mov rcx, rax | |
; gcrRegs +[rcx] | |
;; size=16 bbWeight=2 PerfScore 10.50 | |
-G_M59759_IG06: ; bbWeight=8, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref | |
+G_M59759_IG07: ; bbWeight=8, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rax] | |
lea r11, [(reloc)] ; function address | |
call [r11]<unknown method> | |
@@ -77,14 +81,14 @@ G_M59759_IG06: ; bbWeight=8, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, | |
cmp eax, ebp | |
jle G_M59759_IG14 | |
;; size=18 bbWeight=8 PerfScore 38.00 | |
-G_M59759_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+G_M59759_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
mov rcx, gword ptr [rbx+0x10] | |
; gcrRegs +[rcx] | |
test rcx, rcx | |
- je SHORT G_M59759_IG08 | |
- jmp SHORT G_M59759_IG09 | |
+ je SHORT G_M59759_IG09 | |
+ jmp SHORT G_M59759_IG10 | |
;; size=11 bbWeight=2 PerfScore 10.50 | |
-G_M59759_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+G_M59759_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rcx] | |
mov rcx, qword ptr [(reloc)] ; <unknown method> | |
call [<unknown method>] | |
@@ -93,7 +97,7 @@ G_M59759_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr | |
mov rcx, rax | |
; gcrRegs +[rcx] | |
;; size=16 bbWeight=2 PerfScore 10.50 | |
-G_M59759_IG09: ; bbWeight=2, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz | |
+G_M59759_IG10: ; bbWeight=2, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs -[rax] | |
mov edx, ebp | |
lea r11, [(reloc)] ; function address | |
@@ -103,34 +107,34 @@ G_M59759_IG09: ; bbWeight=2, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, | |
mov r14, rax | |
; gcrRegs +[r14] | |
test esi, edi | |
- jne SHORT G_M59759_IG12 | |
+ jne SHORT G_M59759_IG13 | |
test edi, edi | |
- je SHORT G_M59759_IG10 | |
+ je SHORT G_M59759_IG11 | |
mov rcx, gword ptr [r14+0x08] | |
; gcrRegs +[rcx] | |
call [<unknown method>] | |
; gcrRegs -[rax rcx] | |
; gcr arg pop 0 | |
test eax, eax | |
- je SHORT G_M59759_IG11 | |
+ je SHORT G_M59759_IG12 | |
;; size=37 bbWeight=2 PerfScore 25.50 | |
-G_M59759_IG10: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz | |
+G_M59759_IG11: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz | |
test esi, esi | |
- je SHORT G_M59759_IG13 | |
+ je SHORT G_M59759_IG03 | |
mov rcx, gword ptr [r14+0x08] | |
; gcrRegs +[rcx] | |
call [<unknown method>] | |
; gcrRegs -[rcx] | |
; gcr arg pop 0 | |
test eax, eax | |
- jne SHORT G_M59759_IG13 | |
+ jne G_M59759_IG03 | |
mov rcx, gword ptr [r14+0x08] | |
; gcrRegs +[rcx] | |
call [<unknown method>] | |
; gcrRegs -[rcx] | |
; gcr arg pop 0 | |
test eax, eax | |
- jne SHORT G_M59759_IG13 | |
+ jne G_M59759_IG03 | |
mov rcx, gword ptr [r14+0x08] | |
; gcrRegs +[rcx] | |
call [System.CommandLine.LocalizationResources:FileDoesNotExist(System.String):System.String] | |
@@ -143,9 +147,9 @@ G_M59759_IG10: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, | |
call [System.CommandLine.Parsing.ArgumentResult:AddError(System.String):this] | |
; gcrRegs -[rax rcx rdx] | |
; gcr arg pop 0 | |
- jmp SHORT G_M59759_IG13 | |
- ;; size=56 bbWeight=2 PerfScore 48.50 | |
-G_M59759_IG11: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz | |
+ jmp G_M59759_IG03 | |
+ ;; size=67 bbWeight=2 PerfScore 48.50 | |
+G_M59759_IG12: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref | |
; gcrRegs +[r14] | |
mov rcx, gword ptr [r14+0x08] | |
; gcrRegs +[rcx] | |
@@ -159,9 +163,9 @@ G_M59759_IG11: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, | |
call [System.CommandLine.Parsing.ArgumentResult:AddError(System.String):this] | |
; gcrRegs -[rax rcx rdx] | |
; gcr arg pop 0 | |
- jmp SHORT G_M59759_IG13 | |
- ;; size=24 bbWeight=2 PerfScore 21.00 | |
-G_M59759_IG12: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz | |
+ jmp G_M59759_IG03 | |
+ ;; size=27 bbWeight=2 PerfScore 21.00 | |
+G_M59759_IG13: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref | |
; gcrRegs +[r14] | |
mov rcx, gword ptr [r14+0x08] | |
; gcrRegs +[rcx] | |
@@ -169,7 +173,7 @@ G_M59759_IG12: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, | |
; gcrRegs -[rcx] | |
; gcr arg pop 0 | |
test eax, eax | |
- jne SHORT G_M59759_IG13 | |
+ jne G_M59759_IG03 | |
mov rcx, gword ptr [r14+0x08] | |
; gcrRegs +[rcx] | |
call [System.CommandLine.LocalizationResources:FileOrDirectoryDoesNotExist(System.String):System.String] | |
@@ -182,11 +186,8 @@ G_M59759_IG12: ; bbWeight=2, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, | |
call [System.CommandLine.Parsing.ArgumentResult:AddError(System.String):this] | |
; gcrRegs -[rax rcx rdx] | |
; gcr arg pop 0 | |
- ;; size=36 bbWeight=2 PerfScore 29.50 | |
-G_M59759_IG13: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
- inc ebp | |
jmp G_M59759_IG03 | |
- ;; size=7 bbWeight=2 PerfScore 4.50 | |
+ ;; size=45 bbWeight=2 PerfScore 33.50 | |
G_M59759_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc | |
; gcrRegs -[rbx] | |
add rsp, 48 | |
@@ -198,7 +199,7 @@ G_M59759_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
ret | |
;; size=11 bbWeight=1 PerfScore 3.75 | |
-; Total bytes of code 301, prolog size 15, PerfScore 260.50, instruction count 86, allocated bytes for code 301 (MethodHash=0ac51690) for method System.CommandLine.ArgumentValidation:FileOrDirectoryExists[System.__Canon](System.CommandLine.Parsing.ArgumentResult) (FullOpts) | |
+; Total bytes of code 321, prolog size 15, PerfScore 262.50, instruction count 87, allocated bytes for code 321 (MethodHash=0ac51690) for method System.CommandLine.ArgumentValidation:FileOrDirectoryExists[System.__Canon](System.CommandLine.Parsing.ArgumentResult) (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+19</span> (<span style="color:red">+6.96%</span>) : 32500.dasm - System.DateTimeParse:GetMonthDayOrder(System.String,byref):ubyte (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -33,7 +33,7 @@ G_M25911_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { | |
push rbx | |
sub rsp, 40 | |
;; size=8 bbWeight=1 PerfScore 4.25 | |
-G_M25911_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref | |
+G_M25911_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz | |
; gcrRegs +[rcx] | |
; byrRegs +[rdx] | |
mov eax, -1 | |
@@ -42,83 +42,85 @@ G_M25911_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, | |
xor r9d, r9d | |
xor r11d, r11d | |
mov ebx, dword ptr [rcx+0x08] | |
- ;; size=23 bbWeight=1 PerfScore 3.25 | |
-G_M25911_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref | |
+ jmp SHORT G_M25911_IG04 | |
+ ;; size=25 bbWeight=1 PerfScore 5.25 | |
+G_M25911_IG03: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref | |
+ inc r11d | |
+ ;; size=3 bbWeight=2 PerfScore 0.50 | |
+G_M25911_IG04: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref | |
cmp ebx, r11d | |
jle G_M25911_IG16 | |
;; size=9 bbWeight=8 PerfScore 10.00 | |
-G_M25911_IG04: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref | |
+G_M25911_IG05: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref | |
cmp r10d, 2 | |
jge G_M25911_IG16 | |
;; size=10 bbWeight=4 PerfScore 5.00 | |
-G_M25911_IG05: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz | |
+G_M25911_IG06: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz | |
mov esi, r11d | |
movzx rsi, word ptr [rcx+2*rsi+0x0C] | |
cmp esi, 92 | |
- je SHORT G_M25911_IG14 | |
+ je G_M25911_IG15 | |
cmp esi, 37 | |
- je SHORT G_M25911_IG14 | |
+ je G_M25911_IG15 | |
cmp esi, 39 | |
- je SHORT G_M25911_IG06 | |
+ je SHORT G_M25911_IG07 | |
cmp esi, 34 | |
- je SHORT G_M25911_IG06 | |
+ je SHORT G_M25911_IG07 | |
test r9d, r9d | |
- jne SHORT G_M25911_IG15 | |
- jmp SHORT G_M25911_IG07 | |
- ;; size=35 bbWeight=2 PerfScore 21.00 | |
-G_M25911_IG06: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz | |
+ jne SHORT G_M25911_IG03 | |
+ jmp SHORT G_M25911_IG08 | |
+ ;; size=43 bbWeight=2 PerfScore 21.00 | |
+G_M25911_IG07: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz | |
test r9d, r9d | |
sete r9b | |
movzx r9, r9b | |
test r9d, r9d | |
- jne SHORT G_M25911_IG15 | |
+ jne SHORT G_M25911_IG03 | |
;; size=16 bbWeight=2 PerfScore 5.50 | |
-G_M25911_IG07: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz | |
+G_M25911_IG08: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz | |
cmp esi, 100 | |
- je SHORT G_M25911_IG10 | |
+ je SHORT G_M25911_IG11 | |
cmp esi, 77 | |
- jne SHORT G_M25911_IG15 | |
+ jne SHORT G_M25911_IG03 | |
mov eax, r10d | |
lea r10d, [rax+0x01] | |
- ;; size=17 bbWeight=2 PerfScore 6.50 | |
-G_M25911_IG08: ; bbWeight=16, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz | |
+ jmp SHORT G_M25911_IG10 | |
+ ;; size=19 bbWeight=2 PerfScore 10.50 | |
+G_M25911_IG09: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref | |
+ mov r11d, esi | |
+ ;; size=3 bbWeight=8 PerfScore 2.00 | |
+G_M25911_IG10: ; bbWeight=16, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz | |
lea esi, [r11+0x01] | |
cmp ebx, esi | |
- jle SHORT G_M25911_IG15 | |
+ jle SHORT G_M25911_IG03 | |
mov edi, esi | |
cmp word ptr [rcx+2*rdi+0x0C], 77 | |
- jne SHORT G_M25911_IG15 | |
- ;; size=18 bbWeight=16 PerfScore 96.00 | |
-G_M25911_IG09: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz | |
- mov r11d, esi | |
- jmp SHORT G_M25911_IG08 | |
- ;; size=5 bbWeight=8 PerfScore 18.00 | |
-G_M25911_IG10: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref | |
+ je SHORT G_M25911_IG09 | |
+ jmp SHORT G_M25911_IG03 | |
+ ;; size=20 bbWeight=16 PerfScore 128.00 | |
+G_M25911_IG11: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz | |
mov esi, 1 | |
- ;; size=5 bbWeight=2 PerfScore 0.50 | |
-G_M25911_IG11: ; bbWeight=16, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz | |
- lea edi, [r11+0x01] | |
- cmp ebx, edi | |
- jle SHORT G_M25911_IG13 | |
- mov ebp, edi | |
- cmp word ptr [rcx+2*rbp+0x0C], 100 | |
- jne SHORT G_M25911_IG13 | |
- ;; size=18 bbWeight=16 PerfScore 96.00 | |
-G_M25911_IG12: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz | |
+ jmp SHORT G_M25911_IG13 | |
+ ;; size=7 bbWeight=2 PerfScore 4.50 | |
+G_M25911_IG12: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref | |
inc esi | |
mov r11d, edi | |
- jmp SHORT G_M25911_IG11 | |
- ;; size=7 bbWeight=8 PerfScore 20.00 | |
-G_M25911_IG13: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz | |
+ ;; size=5 bbWeight=8 PerfScore 4.00 | |
+G_M25911_IG13: ; bbWeight=16, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz | |
+ lea edi, [r11+0x01] | |
+ cmp ebx, edi | |
+ jle SHORT G_M25911_IG14 | |
+ mov ebp, edi | |
+ cmp word ptr [rcx+2*rbp+0x0C], 100 | |
+ je SHORT G_M25911_IG12 | |
+ ;; size=18 bbWeight=16 PerfScore 96.00 | |
+G_M25911_IG14: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref | |
cmp esi, 2 | |
- jg SHORT G_M25911_IG15 | |
+ jg G_M25911_IG03 | |
mov r8d, r10d | |
lea r10d, [r8+0x01] | |
- jmp SHORT G_M25911_IG15 | |
- ;; size=14 bbWeight=2 PerfScore 8.00 | |
-G_M25911_IG14: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref | |
- inc r11d | |
- ;; size=3 bbWeight=2 PerfScore 0.50 | |
+ jmp G_M25911_IG03 | |
+ ;; size=21 bbWeight=2 PerfScore 8.00 | |
G_M25911_IG15: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref | |
inc r11d | |
jmp G_M25911_IG03 | |
@@ -175,7 +177,7 @@ G_M25911_IG24: ; bbWeight=0.50, epilog, nogc, extend | |
ret | |
;; size=9 bbWeight=0.50 PerfScore 1.62 | |
-; Total bytes of code 273, prolog size 8, PerfScore 308.88, instruction count 97, allocated bytes for code 273 (MethodHash=a1019ac8) for method System.DateTimeParse:GetMonthDayOrder(System.String,byref):ubyte (FullOpts) | |
+; Total bytes of code 292, prolog size 8, PerfScore 318.88, instruction count 99, allocated bytes for code 292 (MethodHash=a1019ac8) for method System.DateTimeParse:GetMonthDayOrder(System.String,byref):ubyte (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+22</span> (<span style="color:red">+7.26%</span>) : 209235.dasm - System.Xml.Schema.XmlSchemaComplexType:HasParticleRef(System.Xml.Schema.XmlSchemaParticle,System.Xml.Schema.XmlSchema):ubyte (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -14,29 +14,30 @@ | |
; V02 loc0 [V02,T09] ( 4, 8 ) ref -> rdi class-hnd single-def <<unknown class>> | |
; V03 loc1 [V03,T06] ( 5, 15 ) ubyte -> rsi | |
; V04 loc2 [V04,T08] ( 4, 8.50) int -> registers | |
-; V05 loc3 [V05,T04] ( 4, 22 ) ref -> rsi class-hnd <System.Xml.Schema.XmlSchemaParticle> | |
-; V06 loc4 [V06,T00] ( 5, 80 ) ref -> rbp class-hnd <System.Xml.Schema.XmlSchemaElement> | |
+; V05 loc3 [V05,T04] ( 4, 22 ) ref -> rbp class-hnd <System.Xml.Schema.XmlSchemaParticle> | |
+; V06 loc4 [V06,T00] ( 5, 80 ) ref -> r15 class-hnd <System.Xml.Schema.XmlSchemaElement> | |
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" | |
; V08 tmp1 [V08,T07] ( 3, 12 ) int -> rbp "impSpillLclRefs" | |
-; V09 tmp2 [V09,T02] ( 3, 32 ) int -> rcx "Inline return value spill temp" | |
+; V09 tmp2 [V09,T02] ( 3, 32 ) int -> rax "Inline return value spill temp" | |
; V10 tmp3 [V10,T05] ( 2, 16 ) ref -> rcx "argument with side effect" | |
; V11 tmp4 [V11,T10] ( 2, 8 ) ref -> rcx "argument with side effect" | |
-; V12 cse0 [V12,T01] ( 3, 40 ) int -> rcx "CSE #01: aggressive" | |
+; V12 cse0 [V12,T01] ( 3, 40 ) int -> rax "CSE #01: aggressive" | |
; | |
-; Lcl frame size = 32 | |
+; Lcl frame size = 40 | |
G_M19056_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
+ push r15 | |
push r14 | |
push rdi | |
push rsi | |
push rbp | |
push rbx | |
- sub rsp, 32 | |
+ sub rsp, 40 | |
mov rsi, rcx | |
; gcrRegs +[rsi] | |
mov rbx, rdx | |
; gcrRegs +[rbx] | |
- ;; size=16 bbWeight=1 PerfScore 5.75 | |
+ ;; size=18 bbWeight=1 PerfScore 6.75 | |
G_M19056_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov rcx, rsi | |
; gcrRegs +[rcx] | |
@@ -61,20 +62,39 @@ G_M19056_IG03: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, | |
movzx rax, al | |
;; size=18 bbWeight=0.50 PerfScore 2.38 | |
G_M19056_IG04: ; bbWeight=0.50, epilog, nogc, extend | |
- add rsp, 32 | |
+ add rsp, 40 | |
pop rbx | |
pop rbp | |
pop rsi | |
pop rdi | |
pop r14 | |
+ pop r15 | |
ret | |
- ;; size=11 bbWeight=0.50 PerfScore 1.88 | |
-G_M19056_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref | |
+ ;; size=13 bbWeight=0.50 PerfScore 2.12 | |
+G_M19056_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz | |
; gcrRegs +[rbx rdi] | |
xor esi, esi | |
xor ebp, ebp | |
- ;; size=4 bbWeight=0.50 PerfScore 0.25 | |
-G_M19056_IG06: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref | |
+ jmp SHORT G_M19056_IG08 | |
+ ;; size=6 bbWeight=0.50 PerfScore 1.25 | |
+G_M19056_IG06: ; bbWeight=2, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref, isz | |
+ ; gcrRegs +[rbp] | |
+ mov rcx, rbp | |
+ ; gcrRegs +[rcx] | |
+ mov rdx, rbx | |
+ ; gcrRegs +[rdx] | |
+ call [System.Xml.Schema.XmlSchemaComplexType:HasParticleRef(System.Xml.Schema.XmlSchemaParticle,System.Xml.Schema.XmlSchema):ubyte] | |
+ ; gcrRegs -[rcx rdx rbp] | |
+ ; gcr arg pop 0 | |
+ mov esi, eax | |
+ mov ebp, r14d | |
+ jmp SHORT G_M19056_IG08 | |
+ ;; size=19 bbWeight=2 PerfScore 12.00 | |
+G_M19056_IG07: ; bbWeight=8, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref | |
+ mov esi, 1 | |
+ mov ebp, r14d | |
+ ;; size=8 bbWeight=8 PerfScore 4.00 | |
+G_M19056_IG08: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref | |
mov rcx, rdi | |
; gcrRegs +[rcx] | |
lea r11, [(reloc)] ; function address | |
@@ -93,7 +113,7 @@ G_M19056_IG06: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, | |
test esi, esi | |
jne G_M19056_IG15 | |
;; size=44 bbWeight=4 PerfScore 52.00 | |
-G_M19056_IG07: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz | |
+G_M19056_IG09: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz | |
lea ecx, [rbp+0x01] | |
mov r14d, ecx | |
mov rcx, rdi | |
@@ -115,94 +135,79 @@ G_M19056_IG07: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, | |
call [CORINFO_HELP_READYTORUN_CHKCAST] | |
; gcrRegs -[rcx] | |
; gcr arg pop 0 | |
- mov rsi, rax | |
- ; gcrRegs +[rsi] | |
- mov rcx, rsi | |
+ mov rbp, rax | |
+ ; gcrRegs +[rbp] | |
+ mov rcx, rbp | |
; gcrRegs +[rcx] | |
call [CORINFO_HELP_READYTORUN_ISINSTANCEOF] | |
; gcrRegs -[rcx] | |
; gcr arg pop 0 | |
test rax, rax | |
- jne SHORT G_M19056_IG14 | |
+ jne SHORT G_M19056_IG07 | |
;; size=62 bbWeight=2 PerfScore 39.00 | |
-G_M19056_IG08: ; bbWeight=16, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
+G_M19056_IG10: ; bbWeight=16, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs -[rax] | |
- mov rcx, rsi | |
+ mov rcx, rbp | |
; gcrRegs +[rcx] | |
call [CORINFO_HELP_READYTORUN_ISINSTANCEOF] | |
; gcrRegs -[rcx] +[rax] | |
; gcr arg pop 0 | |
- mov rbp, rax | |
- ; gcrRegs +[rbp] | |
- test rbp, rbp | |
- je SHORT G_M19056_IG13 | |
- mov rcx, gword ptr [rbp+0x88] | |
+ mov r15, rax | |
+ ; gcrRegs +[r15] | |
+ test r15, r15 | |
+ je G_M19056_IG06 | |
+ mov rcx, gword ptr [r15+0x88] | |
; gcrRegs +[rcx] | |
cmp dword ptr [rcx], ecx | |
call [System.Xml.XmlQualifiedName:get_IsEmpty():ubyte:this] | |
; gcrRegs -[rax rcx] | |
; gcr arg pop 0 | |
test eax, eax | |
- je SHORT G_M19056_IG14 | |
- mov rcx, gword ptr [rbp+0x98] | |
+ je G_M19056_IG07 | |
+ mov rcx, gword ptr [r15+0x98] | |
; gcrRegs +[rcx] | |
cmp dword ptr [rcx], ecx | |
call [System.Xml.XmlQualifiedName:get_IsEmpty():ubyte:this] | |
; gcrRegs -[rcx] | |
; gcr arg pop 0 | |
test eax, eax | |
- je SHORT G_M19056_IG14 | |
- mov ecx, dword ptr [rbp+0xD0] | |
- test ecx, ecx | |
- jne SHORT G_M19056_IG10 | |
- ;; size=65 bbWeight=16 PerfScore 424.00 | |
-G_M19056_IG09: ; bbWeight=8, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
- ; gcrRegs -[rbp] | |
+ je G_M19056_IG07 | |
+ mov eax, dword ptr [r15+0xD0] | |
+ test eax, eax | |
+ jne SHORT G_M19056_IG12 | |
+ ;; size=78 bbWeight=16 PerfScore 424.00 | |
+G_M19056_IG11: ; bbWeight=8, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref, isz | |
+ ; gcrRegs -[r15] | |
test rbx, rbx | |
- jne SHORT G_M19056_IG11 | |
+ jne SHORT G_M19056_IG13 | |
;; size=5 bbWeight=8 PerfScore 10.00 | |
-G_M19056_IG10: ; bbWeight=8, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
- jmp SHORT G_M19056_IG12 | |
+G_M19056_IG12: ; bbWeight=8, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref, isz | |
+ jmp SHORT G_M19056_IG14 | |
;; size=2 bbWeight=8 PerfScore 16.00 | |
-G_M19056_IG11: ; bbWeight=8, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref | |
- mov ecx, dword ptr [rbx+0xC8] | |
+G_M19056_IG13: ; bbWeight=8, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref | |
+ mov eax, dword ptr [rbx+0xC8] | |
;; size=6 bbWeight=8 PerfScore 16.00 | |
-G_M19056_IG12: ; bbWeight=16, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
- cmp ecx, 1 | |
- je SHORT G_M19056_IG14 | |
- ;; size=5 bbWeight=16 PerfScore 20.00 | |
-G_M19056_IG13: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref | |
- mov rcx, rsi | |
- ; gcrRegs +[rcx] | |
- mov rdx, rbx | |
- ; gcrRegs +[rdx] | |
- call [System.Xml.Schema.XmlSchemaComplexType:HasParticleRef(System.Xml.Schema.XmlSchemaParticle,System.Xml.Schema.XmlSchema):ubyte] | |
- ; gcrRegs -[rcx rdx rsi] | |
- ; gcr arg pop 0 | |
- mov esi, eax | |
- mov ebp, r14d | |
+G_M19056_IG14: ; bbWeight=16, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref | |
+ cmp eax, 1 | |
+ je G_M19056_IG07 | |
jmp G_M19056_IG06 | |
- ;; size=22 bbWeight=2 PerfScore 12.00 | |
-G_M19056_IG14: ; bbWeight=8, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref | |
- mov esi, 1 | |
- mov ebp, r14d | |
- jmp G_M19056_IG06 | |
- ;; size=13 bbWeight=8 PerfScore 20.00 | |
+ ;; size=14 bbWeight=16 PerfScore 52.00 | |
G_M19056_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[rbx rdi] | |
+ ; gcrRegs -[rbx rbp rdi] | |
mov eax, esi | |
;; size=2 bbWeight=0.50 PerfScore 0.12 | |
G_M19056_IG16: ; bbWeight=0.50, epilog, nogc, extend | |
- add rsp, 32 | |
+ add rsp, 40 | |
pop rbx | |
pop rbp | |
pop rsi | |
pop rdi | |
pop r14 | |
+ pop r15 | |
ret | |
- ;; size=11 bbWeight=0.50 PerfScore 1.88 | |
+ ;; size=13 bbWeight=0.50 PerfScore 2.12 | |
-; Total bytes of code 303, prolog size 10, PerfScore 626.00, instruction count 96, allocated bytes for code 303 (MethodHash=c2eeb58f) for method System.Xml.Schema.XmlSchemaComplexType:HasParticleRef(System.Xml.Schema.XmlSchemaParticle,System.Xml.Schema.XmlSchema):ubyte (FullOpts) | |
+; Total bytes of code 325, prolog size 12, PerfScore 644.50, instruction count 100, allocated bytes for code 325 (MethodHash=c2eeb58f) for method System.Xml.Schema.XmlSchemaComplexType:HasParticleRef(System.Xml.Schema.XmlSchemaParticle,System.Xml.Schema.XmlSchema):ubyte (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
@@ -210,14 +215,15 @@ Unwind Info: | |
>> End offset : 0xd1ffab1e (not in unwind data) | |
Version : 1 | |
Flags : 0x00 | |
- SizeOfProlog : 0x0A | |
- CountOfUnwindCodes: 6 | |
+ SizeOfProlog : 0x0C | |
+ CountOfUnwindCodes: 7 | |
FrameRegister : none (0) | |
FrameOffset : N/A (no FrameRegister) (Value=0) | |
UnwindCodes : | |
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 | |
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) | |
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) | |
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) | |
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 | |
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) | |
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) | |
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) | |
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) | |
``` | |
</div></details> | |
</div></details> | |
<details> | |
<summary>libraries.pmi.windows.x64.checked.mch</summary> | |
<div style="margin-left:1em"> | |
<details> | |
<summary><span style="color:green">-40</span> (<span style="color:green">-7.52%</span>) : 82106.dasm - Microsoft.Diagnostics.Tracing.TraceEventDispatcher:Insert(Microsoft.Diagnostics.Tracing.TraceEvent):this (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -11,10 +11,10 @@ | |
; V00 this [V00,T03] ( 12, 9 ) ref -> rsi this class-hnd single-def <Microsoft.Diagnostics.Tracing.TraceEventDispatcher> | |
; V01 arg1 [V01,T02] ( 17, 11 ) ref -> rbx class-hnd single-def <Microsoft.Diagnostics.Tracing.TraceEvent> | |
; V02 loc0 [V02,T07] ( 6, 9 ) ushort -> rdi | |
-; V03 loc1 [V03 ] ( 5, 3.50) struct (16) [rsp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Guid> | |
-; V04 loc2 [V04,T09] ( 5, 8 ) long -> rbp single-def | |
-; V05 loc3 [V05,T01] ( 9, 19.50) int -> r15 | |
-; V06 loc4 [V06,T00] ( 10, 29.50) long -> [rsp+0x30] spill-single-def | |
+; V03 loc1 [V03 ] ( 5, 3.50) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Guid> | |
+; V04 loc2 [V04,T09] ( 5, 8 ) long -> rcx single-def | |
+; V05 loc3 [V05,T01] ( 9, 19.50) int -> rbp | |
+; V06 loc4 [V06,T00] ( 10, 29.50) long -> r14 | |
;* V07 loc5 [V07 ] ( 0, 0 ) long -> zero-ref | |
; V08 loc6 [V08,T06] ( 8, 9 ) ref -> rdi class-hnd <Microsoft.Diagnostics.Tracing.TraceEvent> | |
; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" | |
@@ -28,34 +28,31 @@ | |
;* V17 tmp8 [V17 ] ( 0, 0 ) simd16 -> zero-ref "V10.[000..016)" | |
; V18 tmp9 [V18 ] ( 2, 2 ) struct (16) [rsp+0x20] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Guid> | |
; V19 tmp10 [V19,T11] ( 3, 3 ) ref -> rdx "arr expr" | |
-; V20 cse0 [V20,T08] ( 2, 9 ) long -> r12 hoist "CSE #02: aggressive" | |
-; V21 cse1 [V21,T10] ( 3, 6 ) int -> r13 "CSE #04: aggressive" | |
+; V20 cse0 [V20,T08] ( 2, 9 ) long -> rax hoist "CSE #02: aggressive" | |
+; V21 cse1 [V21,T10] ( 3, 6 ) int -> r8 "CSE #04: aggressive" | |
; V22 cse2 [V22,T04] ( 3, 10 ) ref -> rcx "CSE #05: aggressive" | |
; V23 cse3 [V23,T12] ( 5, 2.50) ref -> rcx multi-def "CSE #07: aggressive" | |
-; V24 cse4 [V24,T05] ( 3, 10 ) int -> r14 "CSE #03: aggressive" | |
+; V24 cse4 [V24,T05] ( 3, 10 ) int -> rdx "CSE #03: aggressive" | |
; V25 cse5 [V25,T13] ( 3, 2.50) byref -> rdx "CSE #01: aggressive" | |
; V26 rat0 [V26,T14] ( 3, 3 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable" | |
; | |
-; Lcl frame size = 72 | |
+; Lcl frame size = 64 | |
G_M42445_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
- push r15 | |
push r14 | |
- push r13 | |
- push r12 | |
push rdi | |
push rsi | |
push rbp | |
push rbx | |
- sub rsp, 72 | |
+ sub rsp, 64 | |
xor eax, eax | |
+ mov qword ptr [rsp+0x30], rax | |
mov qword ptr [rsp+0x38], rax | |
- mov qword ptr [rsp+0x40], rax | |
mov rsi, rcx | |
; gcrRegs +[rsi] | |
mov rbx, rdx | |
; gcrRegs +[rbx] | |
- ;; size=34 bbWeight=1 PerfScore 11.00 | |
+ ;; size=28 bbWeight=1 PerfScore 8.00 | |
G_M42445_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov ecx, dword ptr [rsi+0xC4] | |
shl ecx, 2 | |
@@ -79,7 +76,7 @@ G_M42445_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, | |
lea rdx, bword ptr [rbx+0x8C] | |
; byrRegs +[rdx] | |
vmovups xmm0, xmmword ptr [rdx] | |
- vmovups xmmword ptr [rsp+0x38], xmm0 | |
+ vmovups xmmword ptr [rsp+0x30], xmm0 | |
cmp byte ptr [rbx+0x75], 0 | |
je SHORT G_M42445_IG08 | |
;; size=27 bbWeight=1 PerfScore 11.50 | |
@@ -88,7 +85,7 @@ G_M42445_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0004 | |
vptest xmm0, xmm0 | |
je SHORT G_M42445_IG06 | |
vmovups xmm0, xmmword ptr [rbx+0x7C] | |
- vmovups xmmword ptr [rsp+0x38], xmm0 | |
+ vmovups xmmword ptr [rsp+0x30], xmm0 | |
jmp SHORT G_M42445_IG07 | |
;; size=25 bbWeight=0.50 PerfScore 7.50 | |
G_M42445_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0004 {rdx}, byref | |
@@ -97,7 +94,7 @@ G_M42445_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0004 | |
lea rdx, [rsp+0x20] | |
; byrRegs -[rdx] | |
movzx r8, word ptr [rbx+0x72] | |
- lea rcx, [rsp+0x38] | |
+ lea rcx, [rsp+0x30] | |
call [Microsoft.Diagnostics.Tracing.TraceEventDispatcher:GenTaskGuidFromProviderGuid(System.Guid,ushort):System.Guid] | |
; gcr arg pop 0 | |
;; size=31 bbWeight=0.50 PerfScore 5.50 | |
@@ -106,88 +103,83 @@ G_M42445_IG07: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 | |
jne SHORT G_M42445_IG08 | |
movzx rdi, byte ptr [rbx+0x78] | |
;; size=11 bbWeight=0.50 PerfScore 3.00 | |
-G_M42445_IG08: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
- lea rbp, [rsp+0x38] | |
- mov r14d, dword ptr [rbp] | |
- lea r15d, [rdi+8*rdi] | |
- add r15d, r14d | |
- mov r13d, dword ptr [rsi+0xC0] | |
- and r15d, r13d | |
- mov r12, qword ptr [rsi+0xB8] | |
- ;; size=33 bbWeight=1 PerfScore 7.50 | |
-G_M42445_IG09: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
- movsxd rcx, r15d | |
- lea rcx, [rcx+4*rcx] | |
- lea rax, [r12+4*rcx] | |
- mov qword ptr [rsp+0x30], rax | |
- cmp dword ptr [rax], r14d | |
- jne SHORT G_M42445_IG11 | |
- ;; size=21 bbWeight=8 PerfScore 50.00 | |
-G_M42445_IG10: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
- mov ecx, dword ptr [rax+0x04] | |
- cmp ecx, dword ptr [rbp+0x04] | |
- jne SHORT G_M42445_IG11 | |
- mov ecx, dword ptr [rax+0x08] | |
- cmp ecx, dword ptr [rbp+0x08] | |
- jne SHORT G_M42445_IG11 | |
- mov ecx, dword ptr [rax+0x0C] | |
- cmp ecx, dword ptr [rbp+0x0C] | |
- jne SHORT G_M42445_IG11 | |
- movzx rcx, word ptr [rax+0x10] | |
- cmp ecx, edi | |
+G_M42445_IG08: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+ lea rcx, [rsp+0x30] | |
+ mov edx, dword ptr [rcx] | |
+ lea ebp, [rdi+8*rdi] | |
+ add ebp, edx | |
+ mov r8d, dword ptr [rsi+0xC0] | |
+ and ebp, r8d | |
+ mov rax, qword ptr [rsi+0xB8] | |
+ jmp SHORT G_M42445_IG10 | |
+ ;; size=31 bbWeight=1 PerfScore 9.50 | |
+G_M42445_IG09: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+ lea ebp, [rbp+2*rdi+0x01] | |
+ and ebp, r8d | |
+ ;; size=7 bbWeight=4 PerfScore 9.00 | |
+G_M42445_IG10: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+ movsxd r10, ebp | |
+ lea r10, [r10+4*r10] | |
+ lea r14, [rax+4*r10] | |
+ cmp dword ptr [r14], edx | |
+ jne SHORT G_M42445_IG12 | |
+ ;; size=16 bbWeight=8 PerfScore 42.00 | |
+G_M42445_IG11: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+ mov r10d, dword ptr [r14+0x04] | |
+ cmp r10d, dword ptr [rcx+0x04] | |
+ jne SHORT G_M42445_IG12 | |
+ mov r10d, dword ptr [r14+0x08] | |
+ cmp r10d, dword ptr [rcx+0x08] | |
+ jne SHORT G_M42445_IG12 | |
+ mov r10d, dword ptr [r14+0x0C] | |
+ cmp r10d, dword ptr [rcx+0x0C] | |
+ jne SHORT G_M42445_IG12 | |
+ movzx r10, word ptr [r14+0x10] | |
+ cmp r10d, edi | |
je SHORT G_M42445_IG15 | |
- ;; size=32 bbWeight=2 PerfScore 42.50 | |
-G_M42445_IG11: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
- cmp byte ptr [rax+0x12], 0 | |
- jne SHORT G_M42445_IG14 | |
- ;; size=6 bbWeight=4 PerfScore 16.00 | |
-G_M42445_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+ ;; size=40 bbWeight=2 PerfScore 42.50 | |
+G_M42445_IG12: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+ cmp byte ptr [r14+0x12], 0 | |
+ jne SHORT G_M42445_IG09 | |
+ ;; size=7 bbWeight=4 PerfScore 16.00 | |
+G_M42445_IG13: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
mov rcx, gword ptr [rsi+0x90] | |
; gcrRegs +[rcx] | |
- movsxd rdx, r15d | |
+ movsxd rdx, ebp | |
mov r8, rbx | |
; gcrRegs +[r8] | |
call CORINFO_HELP_ARRADDR_ST | |
; gcrRegs -[rcx rbx r8] | |
; gcr arg pop 0 | |
- mov r15, qword ptr [rsp+0x30] | |
- mov word ptr [r15+0x10], di | |
- vmovups xmm0, xmmword ptr [rsp+0x38] | |
- vmovups xmmword ptr [r15], xmm0 | |
- mov byte ptr [r15+0x12], 1 | |
+ mov word ptr [r14+0x10], di | |
+ vmovups xmm0, xmmword ptr [rsp+0x30] | |
+ vmovups xmmword ptr [r14], xmm0 | |
+ mov byte ptr [r14+0x12], 1 | |
inc dword ptr [rsi+0xC4] | |
- ;; size=50 bbWeight=0.50 PerfScore 7.25 | |
-G_M42445_IG13: ; bbWeight=0.50, epilog, nogc, extend | |
- add rsp, 72 | |
+ ;; size=45 bbWeight=0.50 PerfScore 6.75 | |
+G_M42445_IG14: ; bbWeight=0.50, epilog, nogc, extend | |
+ add rsp, 64 | |
pop rbx | |
pop rbp | |
pop rsi | |
pop rdi | |
- pop r12 | |
- pop r13 | |
pop r14 | |
- pop r15 | |
ret | |
- ;; size=17 bbWeight=0.50 PerfScore 2.62 | |
-G_M42445_IG14: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref | |
+ ;; size=11 bbWeight=0.50 PerfScore 1.88 | |
+G_M42445_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz | |
; gcrRegs +[rbx] | |
- lea r15d, [r15+2*rdi+0x01] | |
- and r15d, r13d | |
- jmp G_M42445_IG09 | |
- ;; size=13 bbWeight=4 PerfScore 13.00 | |
-G_M42445_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov rcx, gword ptr [rsi+0x90] | |
; gcrRegs +[rcx] | |
mov rdx, rcx | |
; gcrRegs +[rdx] | |
- cmp r15d, dword ptr [rdx+0x08] | |
+ cmp ebp, dword ptr [rdx+0x08] | |
jae G_M42445_IG25 | |
- mov r8d, r15d | |
+ mov r8d, ebp | |
mov rdi, gword ptr [rdx+8*r8+0x10] | |
; gcrRegs +[rdi] | |
test rdi, rdi | |
jne SHORT G_M42445_IG16 | |
- movsxd rdx, r15d | |
+ movsxd rdx, ebp | |
; gcrRegs -[rdx] | |
mov r8, rbx | |
; gcrRegs +[r8] | |
@@ -195,7 +187,7 @@ G_M42445_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 | |
; gcrRegs -[rcx rbx rsi rdi r8] | |
; gcr arg pop 0 | |
jmp SHORT G_M42445_IG22 | |
- ;; size=46 bbWeight=0.50 PerfScore 6.62 | |
+ ;; size=45 bbWeight=0.50 PerfScore 6.62 | |
G_M42445_IG16: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs +[rbx rsi rdi] | |
mov rcx, rbx | |
@@ -206,21 +198,21 @@ G_M42445_IG16: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0 | |
; gcrRegs -[rcx] +[rax] | |
; gcr arg pop 0 | |
test rax, rax | |
- je SHORT G_M42445_IG21 | |
- ;; size=18 bbWeight=0.50 PerfScore 4.25 | |
-G_M42445_IG17: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz | |
- ; gcrRegs -[rax rsi] | |
+ jne SHORT G_M42445_IG18 | |
+ jmp SHORT G_M42445_IG21 | |
+ ;; size=20 bbWeight=0.50 PerfScore 5.25 | |
+G_M42445_IG17: ; bbWeight=2, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref | |
+ ; gcrRegs -[rax rsi rdi] +[rcx] | |
+ mov rdi, rcx | |
+ ; gcrRegs +[rdi] | |
+ ;; size=3 bbWeight=2 PerfScore 0.50 | |
... | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:green">-24</span> (<span style="color:green">-7.23%</span>) : 269503.dasm - System.Diagnostics.PassThroughPropagator:GetRootId(byref,byref,byref,byref) (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -14,9 +14,9 @@ | |
; V03 arg3 [V03,T07] ( 3, 3 ) byref -> rbp single-def | |
; V04 loc0 [V04,T00] ( 12, 20.50) ref -> r14 class-hnd <System.Diagnostics.Activity> | |
;* V05 loc1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Diagnostics.Activity> | |
-; V06 loc2 [V06 ] ( 1, 0.50) struct (32) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Diagnostics.ActivityContext> | |
+; V06 loc2 [V06 ] ( 1, 0.50) struct (32) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Diagnostics.ActivityContext> | |
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" | |
-; V08 tmp1 [V08,T01] ( 4, 16 ) ref -> r15 | |
+; V08 tmp1 [V08,T01] ( 4, 16 ) ref -> rcx | |
;* V09 tmp2 [V09 ] ( 0, 0 ) byref -> zero-ref | |
;* V10 tmp3 [V10 ] ( 0, 0 ) byref -> zero-ref single-def | |
; V11 tmp4 [V11,T11] ( 3, 2 ) ref -> rax | |
@@ -39,21 +39,17 @@ | |
; V28 rat0 [V28,T02] ( 5, 7.50) ref -> r14 "replacement local" | |
; V29 rat1 [V29,T10] ( 3, 2.50) long -> rcx "CSE for expectedClsNode" | |
; | |
-; Lcl frame size = 72 | |
+; Lcl frame size = 64 | |
G_M152_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
- push r15 | |
push r14 | |
push rdi | |
push rsi | |
push rbp | |
push rbx | |
- sub rsp, 72 | |
- xor eax, eax | |
- mov qword ptr [rsp+0x28], rax | |
+ sub rsp, 64 | |
vxorps xmm4, xmm4, xmm4 | |
- vmovdqa xmmword ptr [rsp+0x30], xmm4 | |
- mov qword ptr [rsp+0x40], rax | |
+ vmovdqu ymmword ptr [rsp+0x20], ymm4 | |
mov rbx, rcx | |
; byrRegs +[rbx] | |
mov rsi, rdx | |
@@ -62,10 +58,10 @@ G_M152_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n | |
; byrRegs +[rdi] | |
mov rbp, r9 | |
; byrRegs +[rbp] | |
- ;; size=46 bbWeight=1 PerfScore 11.83 | |
+ ;; size=32 bbWeight=1 PerfScore 8.58 | |
G_M152_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref | |
test byte ptr [(reloc)], 1 ; global ptr | |
- je G_M152_IG28 | |
+ je G_M152_IG29 | |
;; size=13 bbWeight=1 PerfScore 4.00 | |
G_M152_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
mov rcx, 0xD1FFAB1E ; data for System.Diagnostics.Activity:s_current | |
@@ -95,44 +91,53 @@ G_M152_IG05: ; bbWeight=0.25, gcrefRegs=0001 {rax}, byrefRegs=00E8 {rbx r | |
mov r14, rax | |
; gcrRegs +[r14] | |
;; size=11 bbWeight=0.25 PerfScore 0.38 | |
-G_M152_IG06: ; bbWeight=8, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+G_M152_IG06: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
; gcrRegs -[rax] | |
+ jmp SHORT G_M152_IG08 | |
+ ;; size=2 bbWeight=1 PerfScore 2.00 | |
+G_M152_IG07: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref | |
+ ; gcrRegs -[r14] +[rcx] | |
+ mov r14, rcx | |
+ ; gcrRegs +[r14] | |
+ ;; size=3 bbWeight=4 PerfScore 1.00 | |
+G_M152_IG08: ; bbWeight=8, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+ ; gcrRegs -[rcx] | |
test r14, r14 | |
- je SHORT G_M152_IG08 | |
+ je SHORT G_M152_IG10 | |
;; size=5 bbWeight=8 PerfScore 10.00 | |
-G_M152_IG07: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
- mov r15, gword ptr [r14+0x90] | |
- ; gcrRegs +[r15] | |
- jmp SHORT G_M152_IG09 | |
+G_M152_IG09: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+ mov rcx, gword ptr [r14+0x90] | |
+ ; gcrRegs +[rcx] | |
+ jmp SHORT G_M152_IG11 | |
;; size=9 bbWeight=2 PerfScore 8.00 | |
-G_M152_IG08: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref | |
- ; gcrRegs -[r15] | |
- xor r15, r15 | |
- ; gcrRegs +[r15] | |
- ;; size=3 bbWeight=2 PerfScore 0.50 | |
-G_M152_IG09: ; bbWeight=8, gcrefRegs=C000 {r14 r15}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref | |
- test r15, r15 | |
- jne G_M152_IG27 | |
- ;; size=9 bbWeight=8 PerfScore 10.00 | |
-G_M152_IG10: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
- ; gcrRegs -[r15] | |
+G_M152_IG10: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref | |
+ ; gcrRegs -[rcx] | |
+ xor rcx, rcx | |
+ ; gcrRegs +[rcx] | |
+ ;; size=2 bbWeight=2 PerfScore 0.50 | |
+G_M152_IG11: ; bbWeight=8, gcrefRegs=4002 {rcx r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+ test rcx, rcx | |
+ jne SHORT G_M152_IG07 | |
+ ;; size=5 bbWeight=8 PerfScore 10.00 | |
+G_M152_IG12: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+ ; gcrRegs -[rcx] | |
test r14, r14 | |
- je SHORT G_M152_IG12 | |
+ je SHORT G_M152_IG14 | |
;; size=5 bbWeight=1 PerfScore 1.25 | |
-G_M152_IG11: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+G_M152_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
mov rcx, r14 | |
; gcrRegs +[rcx] | |
call [System.Diagnostics.Activity:get_TraceStateString():System.String:this] | |
; gcrRegs -[rcx] +[rax] | |
; gcr arg pop 0 | |
- jmp SHORT G_M152_IG13 | |
+ jmp SHORT G_M152_IG15 | |
;; size=11 bbWeight=0.50 PerfScore 2.62 | |
-G_M152_IG12: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref | |
+G_M152_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref | |
; gcrRegs -[rax] | |
xor rax, rax | |
; gcrRegs +[rax] | |
;; size=2 bbWeight=0.50 PerfScore 0.12 | |
-G_M152_IG13: ; bbWeight=1, gcrefRegs=4001 {rax r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+G_M152_IG15: ; bbWeight=1, gcrefRegs=4001 {rax r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
mov rcx, rsi | |
; byrRegs +[rcx] | |
mov rdx, rax | |
@@ -141,9 +146,9 @@ G_M152_IG13: ; bbWeight=1, gcrefRegs=4001 {rax r14}, byrefRegs=00E8 {rbx | |
; gcrRegs -[rax rdx] | |
; byrRegs -[rcx] | |
test r14, r14 | |
- je SHORT G_M152_IG15 | |
+ je SHORT G_M152_IG17 | |
;; size=16 bbWeight=1 PerfScore 2.75 | |
-G_M152_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+G_M152_IG16: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
mov rcx, r14 | |
; gcrRegs +[rcx] | |
call [<unknown method>] | |
@@ -151,21 +156,21 @@ G_M152_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx r | |
; gcr arg pop 0 | |
mov rdx, rax | |
; gcrRegs +[rdx] | |
- jmp SHORT G_M152_IG16 | |
+ jmp SHORT G_M152_IG18 | |
;; size=14 bbWeight=0.50 PerfScore 2.75 | |
-G_M152_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref | |
+G_M152_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref | |
; gcrRegs -[rax rdx] | |
xor rdx, rdx | |
; gcrRegs +[rdx] | |
;; size=2 bbWeight=0.50 PerfScore 0.12 | |
-G_M152_IG16: ; bbWeight=1, gcrefRegs=4004 {rdx r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+G_M152_IG18: ; bbWeight=1, gcrefRegs=4004 {rdx r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
test rdx, rdx | |
- jne SHORT G_M152_IG19 | |
+ jne SHORT G_M152_IG21 | |
;; size=5 bbWeight=1 PerfScore 1.25 | |
-G_M152_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+G_M152_IG19: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
; gcrRegs -[rdx] | |
test r14, r14 | |
- je SHORT G_M152_IG18 | |
+ je SHORT G_M152_IG20 | |
mov rcx, r14 | |
; gcrRegs +[rcx] | |
call [<unknown method>] | |
@@ -173,58 +178,58 @@ G_M152_IG17: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx r | |
; gcr arg pop 0 | |
mov rdx, rax | |
; gcrRegs +[rdx] | |
- jmp SHORT G_M152_IG19 | |
+ jmp SHORT G_M152_IG21 | |
;; size=19 bbWeight=0.50 PerfScore 3.38 | |
-G_M152_IG18: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref | |
+G_M152_IG20: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref | |
; gcrRegs -[rax rdx] | |
xor rdx, rdx | |
; gcrRegs +[rdx] | |
;; size=2 bbWeight=0.50 PerfScore 0.12 | |
-G_M152_IG19: ; bbWeight=1, gcrefRegs=4004 {rdx r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+G_M152_IG21: ; bbWeight=1, gcrefRegs=4004 {rdx r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
mov rcx, rbx | |
; byrRegs +[rcx] | |
call CORINFO_HELP_CHECKED_ASSIGN_REF | |
; gcrRegs -[rdx] | |
; byrRegs -[rcx] | |
cmp gword ptr [rbx], 0 | |
- je SHORT G_M152_IG21 | |
+ je SHORT G_M152_IG23 | |
;; size=14 bbWeight=1 PerfScore 5.25 | |
-G_M152_IG20: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
+G_M152_IG22: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz | |
mov rcx, gword ptr [rbx] | |
; gcrRegs +[rcx] | |
mov rdx, gword ptr [rsi] | |
; gcrRegs +[rdx] | |
- lea r9, [rsp+0x28] | |
+ lea r9, [rsp+0x20] | |
xor r8d, r8d | |
call [<unknown method>] | |
; gcrRegs -[rcx rdx] | |
; byrRegs -[rbx rsi] | |
; gcr arg pop 0 | |
- jmp SHORT G_M152_IG22 | |
+ jmp SHORT G_M152_IG24 | |
;; size=22 bbWeight=0.50 PerfScore 4.88 | |
-G_M152_IG21: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00A0 {rbp rdi}, byref | |
+G_M152_IG23: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00A0 {rbp rdi}, byref | |
xor eax, eax | |
;; size=2 bbWeight=0.50 PerfScore 0.12 | |
-G_M152_IG22: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=00A0 {rbp rdi}, byref, isz | |
+G_M152_IG24: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=00A0 {rbp rdi}, byref, isz | |
mov byte ptr [rdi], al | |
test r14, r14 | |
- je SHORT G_M152_IG24 | |
+ je SHORT G_M152_IG26 | |
;; size=7 bbWeight=1 PerfScore 2.25 | |
-G_M152_IG23: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0020 {rbp}, byref, isz | |
+G_M152_IG25: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0020 {rbp}, byref, isz | |
; byrRegs -[rdi] | |
mov rcx, r14 | |
; gcrRegs +[rcx] | |
call [System.Diagnostics.Activity:get_Baggage():System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]]:this] | |
; gcrRegs -[rcx r14] +[rax] | |
; gcr arg pop 0 | |
- jmp SHORT G_M152_IG25 | |
+ jmp SHORT G_M152_IG27 | |
;; size=11 bbWeight=0.50 PerfScore 2.62 | |
-G_M152_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref | |
+G_M152_IG26: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref | |
; gcrRegs -[rax] | |
xor rax, rax | |
; gcrRegs +[rax] | |
;; size=2 bbWeight=0.50 PerfScore 0.12 | |
-G_M152_IG25: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0020 {rbp}, byref | |
+G_M152_IG27: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0020 {rbp}, byref | |
mov rcx, rbp | |
; byrRegs +[rcx] | |
mov rdx, rax | |
@@ -234,25 +239,17 @@ G_M152_IG25: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0020 {rbp}, by | |
; byrRegs -[rcx rbp] | |
nop | |
;; size=12 bbWeight=1 PerfScore 1.75 | |
-G_M152_IG26: ; bbWeight=1, epilog, nogc, extend | |
- add rsp, 72 | |
+G_M152_IG28: ; bbWeight=1, epilog, nogc, extend | |
+ add rsp, 64 | |
pop rbx | |
pop rbp | |
pop rsi | |
... | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:green">-4</span> (<span style="color:green">-6.78%</span>) : 731.dasm - Microsoft.FSharp.Collections.ListDebugView`1[System.__Canon]:get_Items():System.__Canon[]:this (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -12,13 +12,13 @@ | |
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" | |
;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" | |
;* V03 tmp2 [V03 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" | |
-; V04 tmp3 [V04,T01] ( 3, 26 ) ref -> rsi class-hnd "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> | |
+; V04 tmp3 [V04,T01] ( 3, 26 ) ref -> rcx class-hnd "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> | |
; V05 tmp4 [V05,T00] ( 5, 28 ) int -> rdx "Inlining Arg" | |
;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> | |
-; V07 tmp6 [V07,T05] ( 2, 8 ) ref -> rsi class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> | |
-; V08 tmp7 [V08,T03] ( 2, 10 ) int -> rdi "Inlining Arg" | |
+; V07 tmp6 [V07,T05] ( 2, 8 ) ref -> rcx class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> | |
+; V08 tmp7 [V08,T03] ( 2, 10 ) int -> rax "Inlining Arg" | |
;* V09 tmp8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.FSharp.Collections.ListDebugView`1[System.__Canon]> | |
-; V10 cse0 [V10,T02] ( 3, 20 ) ref -> rsi "CSE #01: aggressive" | |
+; V10 cse0 [V10,T02] ( 3, 20 ) ref -> rcx "CSE #01: aggressive" | |
;* V11 rat0 [V11,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" | |
;* V12 rat1 [V12,T08] ( 0, 0 ) long -> zero-ref "runtime lookup" | |
;* V13 rat2 [V13,T06] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" | |
@@ -26,49 +26,44 @@ | |
; Lcl frame size = 48 | |
G_M58790_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
- push rdi | |
- push rsi | |
push rbx | |
sub rsp, 48 | |
mov qword ptr [rsp+0x28], rcx | |
mov rbx, rcx | |
; gcrRegs +[rbx] | |
- ;; size=15 bbWeight=1 PerfScore 4.50 | |
-G_M58790_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+ ;; size=13 bbWeight=1 PerfScore 2.50 | |
+G_M58790_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
cmp dword ptr [rbx], ebx | |
- mov rsi, gword ptr [rbx+0x08] | |
- ; gcrRegs +[rsi] | |
+ mov rcx, gword ptr [rbx+0x08] | |
+ ; gcrRegs +[rcx] | |
xor edx, edx | |
- mov edi, dword ptr [rbx+0x10] | |
- ;; size=11 bbWeight=1 PerfScore 7.25 | |
-G_M58790_IG03: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
- mov rsi, gword ptr [rsi+0x10] | |
- test rsi, rsi | |
- je SHORT G_M58790_IG05 | |
+ mov eax, dword ptr [rbx+0x10] | |
+ jmp SHORT G_M58790_IG04 | |
+ ;; size=13 bbWeight=1 PerfScore 9.25 | |
+G_M58790_IG03: ; bbWeight=4, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref | |
+ inc edx | |
+ ;; size=2 bbWeight=4 PerfScore 1.00 | |
+G_M58790_IG04: ; bbWeight=8, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz | |
+ mov rcx, gword ptr [rcx+0x10] | |
+ test rcx, rcx | |
+ je SHORT G_M58790_IG06 | |
;; size=9 bbWeight=8 PerfScore 26.00 | |
-G_M58790_IG04: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
- cmp edx, edi | |
- jle SHORT G_M58790_IG07 | |
+G_M58790_IG05: ; bbWeight=4, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz | |
+ cmp edx, eax | |
+ jle SHORT G_M58790_IG03 | |
;; size=4 bbWeight=4 PerfScore 5.00 | |
-G_M58790_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[rsi] | |
+G_M58790_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+ ; gcrRegs -[rcx] | |
mov rcx, rbx | |
; gcrRegs +[rcx] | |
;; size=3 bbWeight=1 PerfScore 0.25 | |
-G_M58790_IG06: ; bbWeight=1, epilog, nogc, extend | |
+G_M58790_IG07: ; bbWeight=1, epilog, nogc, extend | |
add rsp, 48 | |
pop rbx | |
- pop rsi | |
- pop rdi | |
tail.jmp [Microsoft.FSharp.Collections.ListDebugView`1[System.__Canon]:items(int):System.__Canon[]:this] | |
- ;; size=13 bbWeight=1 PerfScore 3.75 | |
-G_M58790_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz | |
- ; gcrRegs -[rcx] +[rsi] | |
- inc edx | |
- jmp SHORT G_M58790_IG03 | |
- ;; size=4 bbWeight=4 PerfScore 9.00 | |
+ ;; size=11 bbWeight=1 PerfScore 2.75 | |
-; Total bytes of code 59, prolog size 15, PerfScore 55.75, instruction count 23, allocated bytes for code 59 (MethodHash=7ed01a59) for method Microsoft.FSharp.Collections.ListDebugView`1[System.__Canon]:get_Items():System.__Canon[]:this (FullOpts) | |
+; Total bytes of code 55, prolog size 13, PerfScore 46.75, instruction count 19, allocated bytes for code 55 (MethodHash=7ed01a59) for method Microsoft.FSharp.Collections.ListDebugView`1[System.__Canon]:get_Items():System.__Canon[]:this (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
@@ -76,12 +71,10 @@ Unwind Info: | |
>> End offset : 0xd1ffab1e (not in unwind data) | |
Version : 1 | |
Flags : 0x00 | |
- SizeOfProlog : 0x07 | |
- CountOfUnwindCodes: 4 | |
+ SizeOfProlog : 0x05 | |
+ CountOfUnwindCodes: 2 | |
FrameRegister : none (0) | |
FrameOffset : N/A (no FrameRegister) (Value=0) | |
UnwindCodes : | |
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 | |
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) | |
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) | |
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 | |
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+22</span> (<span style="color:red">+6.40%</span>) : 213991.dasm - System.Xml.Schema.XmlSchemaComplexType:HasParticleRef(System.Xml.Schema.XmlSchemaParticle,System.Xml.Schema.XmlSchema):ubyte (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -13,33 +13,34 @@ | |
; V02 loc0 [V02,T09] ( 5, 8.50) ref -> rdi class-hnd single-def <<unknown class>> | |
; V03 loc1 [V03,T06] ( 5, 15 ) ubyte -> rsi | |
; V04 loc2 [V04,T10] ( 4, 8.50) int -> registers | |
-; V05 loc3 [V05,T05] ( 4, 22 ) ref -> rsi class-hnd <System.Xml.Schema.XmlSchemaParticle> | |
-; V06 loc4 [V06,T00] ( 5, 80 ) ref -> rbp class-hnd <System.Xml.Schema.XmlSchemaElement> | |
+; V05 loc3 [V05,T05] ( 4, 22 ) ref -> rbp class-hnd <System.Xml.Schema.XmlSchemaParticle> | |
+; V06 loc4 [V06,T00] ( 5, 80 ) ref -> r13 class-hnd <System.Xml.Schema.XmlSchemaElement> | |
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" | |
; V08 tmp1 [V08,T08] ( 3, 12 ) int -> rbp "impSpillLclRefs" | |
-; V09 tmp2 [V09,T02] ( 3, 32 ) int -> rcx "Inline return value spill temp" | |
+; V09 tmp2 [V09,T02] ( 3, 32 ) int -> rax "Inline return value spill temp" | |
;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>> | |
; V11 tmp4 [V11,T03] ( 3, 24 ) ref -> rcx "argument with side effect" | |
; V12 tmp5 [V12,T07] ( 3, 12 ) ref -> rax "argument with side effect" | |
; V13 tmp6 [V13,T11] ( 2, 8 ) ref -> rdx "argument with side effect" | |
; V14 cse0 [V14,T12] ( 3, 6.50) long -> r14 hoist "CSE #02: aggressive" | |
-; V15 cse1 [V15,T01] ( 3, 40 ) int -> rcx "CSE #03: aggressive" | |
+; V15 cse1 [V15,T01] ( 3, 40 ) int -> rax "CSE #03: aggressive" | |
; | |
-; Lcl frame size = 40 | |
+; Lcl frame size = 32 | |
G_M19056_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
push r15 | |
push r14 | |
+ push r13 | |
push rdi | |
push rsi | |
push rbp | |
push rbx | |
- sub rsp, 40 | |
+ sub rsp, 32 | |
mov rsi, rcx | |
; gcrRegs +[rsi] | |
mov rbx, rdx | |
; gcrRegs +[rbx] | |
- ;; size=18 bbWeight=1 PerfScore 6.75 | |
+ ;; size=20 bbWeight=1 PerfScore 7.75 | |
G_M19056_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov rdx, rsi | |
; gcrRegs +[rdx] | |
@@ -66,23 +67,42 @@ G_M19056_IG03: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, | |
movzx rax, al | |
;; size=27 bbWeight=0.50 PerfScore 1.50 | |
G_M19056_IG04: ; bbWeight=0.50, epilog, nogc, extend | |
- add rsp, 40 | |
+ add rsp, 32 | |
pop rbx | |
pop rbp | |
pop rsi | |
pop rdi | |
+ pop r13 | |
pop r14 | |
pop r15 | |
ret | |
- ;; size=13 bbWeight=0.50 PerfScore 2.12 | |
-G_M19056_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref | |
+ ;; size=15 bbWeight=0.50 PerfScore 2.38 | |
+G_M19056_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz | |
; gcrRegs +[rbx rdi] | |
xor esi, esi | |
xor ebp, ebp | |
mov rcx, qword ptr [rdi] | |
mov r14, qword ptr [rcx+0x58] | |
- ;; size=11 bbWeight=0.50 PerfScore 2.25 | |
-G_M19056_IG06: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref | |
+ jmp SHORT G_M19056_IG08 | |
+ ;; size=13 bbWeight=0.50 PerfScore 3.25 | |
+G_M19056_IG06: ; bbWeight=2, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref, isz | |
+ ; gcrRegs +[rbp] | |
+ mov rcx, rbp | |
+ ; gcrRegs +[rcx] | |
+ mov rdx, rbx | |
+ ; gcrRegs +[rdx] | |
+ call [System.Xml.Schema.XmlSchemaComplexType:HasParticleRef(System.Xml.Schema.XmlSchemaParticle,System.Xml.Schema.XmlSchema):ubyte] | |
+ ; gcrRegs -[rcx rdx rbp] | |
+ ; gcr arg pop 0 | |
+ mov esi, eax | |
+ mov ebp, r15d | |
+ jmp SHORT G_M19056_IG08 | |
+ ;; size=19 bbWeight=2 PerfScore 12.00 | |
+G_M19056_IG07: ; bbWeight=8, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref | |
+ mov esi, 1 | |
+ mov ebp, r15d | |
+ ;; size=8 bbWeight=8 PerfScore 4.00 | |
+G_M19056_IG08: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref | |
mov rcx, rdi | |
; gcrRegs +[rcx] | |
call [r14]<unknown method> | |
@@ -101,7 +121,7 @@ G_M19056_IG06: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, | |
test esi, esi | |
jne G_M19056_IG15 | |
;; size=36 bbWeight=4 PerfScore 59.00 | |
-G_M19056_IG07: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz | |
+G_M19056_IG09: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz | |
lea ecx, [rbp+0x01] | |
mov r15d, ecx | |
mov rcx, rdi | |
@@ -124,97 +144,82 @@ G_M19056_IG07: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, | |
call CORINFO_HELP_CHKCASTCLASS | |
; gcrRegs -[rdx] | |
; gcr arg pop 0 | |
- mov rsi, rax | |
- ; gcrRegs +[rsi] | |
- mov rdx, rsi | |
+ mov rbp, rax | |
+ ; gcrRegs +[rbp] | |
+ mov rdx, rbp | |
; gcrRegs +[rdx] | |
mov rcx, 0xD1FFAB1E ; <unknown class> | |
call CORINFO_HELP_ISINSTANCEOFCLASS | |
; gcrRegs -[rdx] | |
; gcr arg pop 0 | |
test rax, rax | |
- jne SHORT G_M19056_IG14 | |
+ jne SHORT G_M19056_IG07 | |
;; size=71 bbWeight=2 PerfScore 32.00 | |
-G_M19056_IG08: ; bbWeight=16, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
+G_M19056_IG10: ; bbWeight=16, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs -[rax] | |
- mov rdx, rsi | |
+ mov rdx, rbp | |
; gcrRegs +[rdx] | |
mov rcx, 0xD1FFAB1E ; System.Xml.Schema.XmlSchemaElement | |
call CORINFO_HELP_ISINSTANCEOFCLASS | |
; gcrRegs -[rdx] +[rax] | |
; gcr arg pop 0 | |
- mov rbp, rax | |
- ; gcrRegs +[rbp] | |
- test rbp, rbp | |
- je SHORT G_M19056_IG13 | |
- mov rcx, gword ptr [rbp+0x88] | |
+ mov r13, rax | |
+ ; gcrRegs +[r13] | |
+ test r13, r13 | |
+ je G_M19056_IG06 | |
+ mov rcx, gword ptr [r13+0x88] | |
; gcrRegs +[rcx] | |
cmp dword ptr [rcx], ecx | |
call [System.Xml.XmlQualifiedName:get_IsEmpty():ubyte:this] | |
; gcrRegs -[rax rcx] | |
; gcr arg pop 0 | |
test eax, eax | |
- je SHORT G_M19056_IG14 | |
- mov rcx, gword ptr [rbp+0x98] | |
+ je G_M19056_IG07 | |
+ mov rcx, gword ptr [r13+0x98] | |
; gcrRegs +[rcx] | |
cmp dword ptr [rcx], ecx | |
call [System.Xml.XmlQualifiedName:get_IsEmpty():ubyte:this] | |
; gcrRegs -[rcx] | |
; gcr arg pop 0 | |
test eax, eax | |
- je SHORT G_M19056_IG14 | |
- mov ecx, dword ptr [rbp+0xD0] | |
- test ecx, ecx | |
- jne SHORT G_M19056_IG10 | |
- ;; size=74 bbWeight=16 PerfScore 396.00 | |
-G_M19056_IG09: ; bbWeight=8, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
- ; gcrRegs -[rbp] | |
+ je G_M19056_IG07 | |
+ mov eax, dword ptr [r13+0xD0] | |
+ test eax, eax | |
+ jne SHORT G_M19056_IG12 | |
+ ;; size=87 bbWeight=16 PerfScore 396.00 | |
+G_M19056_IG11: ; bbWeight=8, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref, isz | |
+ ; gcrRegs -[r13] | |
test rbx, rbx | |
- jne SHORT G_M19056_IG11 | |
+ jne SHORT G_M19056_IG13 | |
;; size=5 bbWeight=8 PerfScore 10.00 | |
-G_M19056_IG10: ; bbWeight=8, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
- jmp SHORT G_M19056_IG12 | |
+G_M19056_IG12: ; bbWeight=8, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref, isz | |
+ jmp SHORT G_M19056_IG14 | |
;; size=2 bbWeight=8 PerfScore 16.00 | |
-G_M19056_IG11: ; bbWeight=8, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref | |
- mov ecx, dword ptr [rbx+0xC8] | |
+G_M19056_IG13: ; bbWeight=8, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref | |
+ mov eax, dword ptr [rbx+0xC8] | |
;; size=6 bbWeight=8 PerfScore 16.00 | |
-G_M19056_IG12: ; bbWeight=16, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
- cmp ecx, 1 | |
- je SHORT G_M19056_IG14 | |
- ;; size=5 bbWeight=16 PerfScore 20.00 | |
-G_M19056_IG13: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref | |
- mov rcx, rsi | |
- ; gcrRegs +[rcx] | |
- mov rdx, rbx | |
- ; gcrRegs +[rdx] | |
- call [System.Xml.Schema.XmlSchemaComplexType:HasParticleRef(System.Xml.Schema.XmlSchemaParticle,System.Xml.Schema.XmlSchema):ubyte] | |
- ; gcrRegs -[rcx rdx rsi] | |
- ; gcr arg pop 0 | |
- mov esi, eax | |
- mov ebp, r15d | |
+G_M19056_IG14: ; bbWeight=16, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref | |
+ cmp eax, 1 | |
+ je G_M19056_IG07 | |
jmp G_M19056_IG06 | |
- ;; size=22 bbWeight=2 PerfScore 12.00 | |
-G_M19056_IG14: ; bbWeight=8, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref | |
- mov esi, 1 | |
- mov ebp, r15d | |
- jmp G_M19056_IG06 | |
- ;; size=13 bbWeight=8 PerfScore 20.00 | |
+ ;; size=14 bbWeight=16 PerfScore 52.00 | |
G_M19056_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[rbx rdi] | |
+ ; gcrRegs -[rbx rbp rdi] | |
mov eax, esi | |
;; size=2 bbWeight=0.50 PerfScore 0.12 | |
G_M19056_IG16: ; bbWeight=0.50, epilog, nogc, extend | |
- add rsp, 40 | |
+ add rsp, 32 | |
pop rbx | |
pop rbp | |
pop rsi | |
pop rdi | |
+ pop r13 | |
pop r14 | |
pop r15 | |
ret | |
- ;; size=13 bbWeight=0.50 PerfScore 2.12 | |
+ ;; size=15 bbWeight=0.50 PerfScore 2.38 | |
-; Total bytes of code 344, prolog size 12, PerfScore 598.88, instruction count 104, allocated bytes for code 344 (MethodHash=c2eeb58f) for method System.Xml.Schema.XmlSchemaComplexType:HasParticleRef(System.Xml.Schema.XmlSchemaParticle,System.Xml.Schema.XmlSchema):ubyte (FullOpts) | |
+; Total bytes of code 366, prolog size 14, PerfScore 617.38, instruction count 108, allocated bytes for code 366 (MethodHash=c2eeb58f) for method System.Xml.Schema.XmlSchemaComplexType:HasParticleRef(System.Xml.Schema.XmlSchemaParticle,System.Xml.Schema.XmlSchema):ubyte (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
@@ -222,15 +227,16 @@ Unwind Info: | |
>> End offset : 0xd1ffab1e (not in unwind data) | |
Version : 1 | |
Flags : 0x00 | |
- SizeOfProlog : 0x0C | |
- CountOfUnwindCodes: 7 | |
+ SizeOfProlog : 0x0E | |
+ CountOfUnwindCodes: 8 | |
FrameRegister : none (0) | |
FrameOffset : N/A (no FrameRegister) (Value=0) | |
UnwindCodes : | |
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 | |
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
- CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) | |
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) | |
+ CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 | |
+ CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
+ CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
... | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+25</span> (<span style="color:red">+7.46%</span>) : 211830.dasm - System.Xml.XmlAttributeCollection:FindNodeOffsetNS(System.Xml.XmlAttribute):int:this (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -61,16 +61,20 @@ G_M30039_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { | |
mov rsi, rdx | |
; gcrRegs +[rsi] | |
;; size=20 bbWeight=1 PerfScore 7.75 | |
-G_M30039_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M30039_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
xor edi, edi | |
- ;; size=2 bbWeight=1 PerfScore 0.25 | |
-G_M30039_IG03: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+ jmp SHORT G_M30039_IG04 | |
+ ;; size=4 bbWeight=1 PerfScore 2.25 | |
+G_M30039_IG03: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+ inc edi | |
+ ;; size=2 bbWeight=2 PerfScore 0.50 | |
+G_M30039_IG04: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
lea rdx, bword ptr [rbx+0x10] | |
; byrRegs +[rdx] | |
cmp gword ptr [rdx], 0 | |
- je SHORT G_M30039_IG06 | |
+ je SHORT G_M30039_IG07 | |
;; size=10 bbWeight=8 PerfScore 36.00 | |
-G_M30039_IG04: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0004 {rdx}, byref, isz | |
+G_M30039_IG05: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0004 {rdx}, byref, isz | |
mov rdx, gword ptr [rdx] | |
; gcrRegs +[rdx] | |
; byrRegs -[rdx] | |
@@ -79,23 +83,23 @@ G_M30039_IG04: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0004 {rd | |
; gcrRegs -[rdx] +[rax] | |
; gcr arg pop 0 | |
test rax, rax | |
- jne SHORT G_M30039_IG05 | |
+ jne SHORT G_M30039_IG06 | |
mov ecx, 1 | |
- jmp SHORT G_M30039_IG07 | |
+ jmp SHORT G_M30039_IG08 | |
;; size=30 bbWeight=2 PerfScore 13.50 | |
-G_M30039_IG05: ; bbWeight=2, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M30039_IG06: ; bbWeight=2, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov ecx, dword ptr [rax+0x10] | |
- jmp SHORT G_M30039_IG07 | |
+ jmp SHORT G_M30039_IG08 | |
;; size=5 bbWeight=2 PerfScore 8.00 | |
-G_M30039_IG06: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M30039_IG07: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rax] | |
xor ecx, ecx | |
;; size=2 bbWeight=2 PerfScore 0.50 | |
-G_M30039_IG07: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M30039_IG08: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
cmp edi, ecx | |
jge G_M30039_IG24 | |
;; size=8 bbWeight=8 PerfScore 10.00 | |
-G_M30039_IG08: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M30039_IG09: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
lea rcx, bword ptr [rbx+0x10] | |
; byrRegs +[rcx] | |
mov edx, edi | |
@@ -106,14 +110,14 @@ G_M30039_IG08: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, | |
mov rbp, rax | |
; gcrRegs +[rbp] | |
test rbp, rbp | |
- je SHORT G_M30039_IG11 | |
+ je SHORT G_M30039_IG12 | |
;; size=20 bbWeight=2 PerfScore 10.50 | |
-G_M30039_IG09: ; bbWeight=1, gcrefRegs=0069 {rax rbx rbp rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M30039_IG10: ; bbWeight=1, gcrefRegs=0069 {rax rbx rbp rsi}, byrefRegs=0000 {}, byref, isz | |
mov rcx, 0xD1FFAB1E ; System.Xml.XmlAttribute | |
cmp qword ptr [rbp], rcx | |
- je SHORT G_M30039_IG11 | |
+ je SHORT G_M30039_IG12 | |
;; size=16 bbWeight=1 PerfScore 4.25 | |
-G_M30039_IG10: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M30039_IG11: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rbp] | |
mov rdx, rax | |
; gcrRegs +[rdx] | |
@@ -123,7 +127,7 @@ G_M30039_IG10: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0 | |
mov rbp, rax | |
; gcrRegs +[rbp] | |
;; size=11 bbWeight=0.50 PerfScore 0.75 | |
-G_M30039_IG11: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M30039_IG12: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs -[rax] | |
mov rcx, gword ptr [rbp+0x10] | |
; gcrRegs +[rcx] | |
@@ -132,7 +136,7 @@ G_M30039_IG11: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 | |
mov rax, gword ptr [rsi+0x10] | |
; gcrRegs +[rax] | |
cmp ecx, dword ptr [rax+0x38] | |
- jne G_M30039_IG21 | |
+ jne SHORT G_M30039_IG03 | |
mov rcx, rbp | |
; gcrRegs +[rcx] | |
mov rax, qword ptr [rbp] | |
@@ -154,23 +158,23 @@ G_M30039_IG11: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 | |
mov rdx, rax | |
; gcrRegs +[rdx] | |
cmp r15, rdx | |
- je SHORT G_M30039_IG16 | |
- ;; size=60 bbWeight=2 PerfScore 52.50 | |
-G_M30039_IG12: ; bbWeight=1.80, gcrefRegs=806C {rdx rbx rbp rsi r15}, byrefRegs=0000 {}, byref, isz | |
+ je SHORT G_M30039_IG17 | |
+ ;; size=56 bbWeight=2 PerfScore 52.50 | |
+G_M30039_IG13: ; bbWeight=1.80, gcrefRegs=806C {rdx rbx rbp rsi r15}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rax] | |
test r15, r15 | |
- je SHORT G_M30039_IG21 | |
- ;; size=5 bbWeight=1.80 PerfScore 2.25 | |
-G_M30039_IG13: ; bbWeight=1.80, gcrefRegs=806C {rdx rbx rbp rsi r15}, byrefRegs=0000 {}, byref, isz | |
+ je G_M30039_IG03 | |
+ ;; size=9 bbWeight=1.80 PerfScore 2.25 | |
+G_M30039_IG14: ; bbWeight=1.80, gcrefRegs=806C {rdx rbx rbp rsi r15}, byrefRegs=0000 {}, byref | |
test rdx, rdx | |
- je SHORT G_M30039_IG21 | |
- ;; size=5 bbWeight=1.80 PerfScore 2.25 | |
-G_M30039_IG14: ; bbWeight=1.80, gcrefRegs=806C {rdx rbx rbp rsi r15}, byrefRegs=0000 {}, byref, isz | |
+ je G_M30039_IG03 | |
+ ;; size=9 bbWeight=1.80 PerfScore 2.25 | |
+G_M30039_IG15: ; bbWeight=1.80, gcrefRegs=806C {rdx rbx rbp rsi r15}, byrefRegs=0000 {}, byref | |
mov r8d, dword ptr [r15+0x08] | |
cmp r8d, dword ptr [rdx+0x08] | |
- jne SHORT G_M30039_IG21 | |
- ;; size=10 bbWeight=1.80 PerfScore 10.80 | |
-G_M30039_IG15: ; bbWeight=2, gcrefRegs=806C {rdx rbx rbp rsi r15}, byrefRegs=0000 {}, byref, isz | |
+ jne G_M30039_IG03 | |
+ ;; size=14 bbWeight=1.80 PerfScore 10.80 | |
+G_M30039_IG16: ; bbWeight=2, gcrefRegs=806C {rdx rbx rbp rsi r15}, byrefRegs=0000 {}, byref | |
lea rcx, bword ptr [r15+0x0C] | |
; byrRegs +[rcx] | |
add r8d, r8d | |
@@ -182,9 +186,9 @@ G_M30039_IG15: ; bbWeight=2, gcrefRegs=806C {rdx rbx rbp rsi r15}, byrefR | |
; byrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
test eax, eax | |
- je SHORT G_M30039_IG21 | |
- ;; size=21 bbWeight=2 PerfScore 10.50 | |
-G_M30039_IG16: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz | |
+ je G_M30039_IG03 | |
+ ;; size=25 bbWeight=2 PerfScore 10.50 | |
+G_M30039_IG17: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz | |
mov rcx, rbp | |
; gcrRegs +[rcx] | |
call [r14+0x18]<unknown method> | |
@@ -202,21 +206,21 @@ G_M30039_IG16: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 | |
cmp rbp, rdx | |
je SHORT G_M30039_IG22 | |
;; size=25 bbWeight=2 PerfScore 16.50 | |
-G_M30039_IG17: ; bbWeight=1.80, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M30039_IG18: ; bbWeight=1.80, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rax] | |
test rbp, rbp | |
- je SHORT G_M30039_IG21 | |
- ;; size=5 bbWeight=1.80 PerfScore 2.25 | |
-G_M30039_IG18: ; bbWeight=1.80, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref, isz | |
+ je G_M30039_IG03 | |
+ ;; size=9 bbWeight=1.80 PerfScore 2.25 | |
+G_M30039_IG19: ; bbWeight=1.80, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref | |
test rdx, rdx | |
- je SHORT G_M30039_IG21 | |
- ;; size=5 bbWeight=1.80 PerfScore 2.25 | |
-G_M30039_IG19: ; bbWeight=1.80, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref, isz | |
+ je G_M30039_IG03 | |
+ ;; size=9 bbWeight=1.80 PerfScore 2.25 | |
+G_M30039_IG20: ; bbWeight=1.80, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref | |
mov r8d, dword ptr [rbp+0x08] | |
cmp r8d, dword ptr [rdx+0x08] | |
- jne SHORT G_M30039_IG21 | |
- ;; size=10 bbWeight=1.80 PerfScore 10.80 | |
-G_M30039_IG20: ; bbWeight=2, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref, isz | |
+ jne G_M30039_IG03 | |
+ ;; size=14 bbWeight=1.80 PerfScore 10.80 | |
+G_M30039_IG21: ; bbWeight=2, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref | |
lea rcx, bword ptr [rbp+0x0C] | |
; byrRegs +[rcx] | |
add r8d, r8d | |
@@ -228,12 +232,8 @@ G_M30039_IG20: ; bbWeight=2, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs= | |
; byrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
test eax, eax | |
- jne SHORT G_M30039_IG22 | |
- ;; size=21 bbWeight=2 PerfScore 10.50 | |
-G_M30039_IG21: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
- inc edi | |
- jmp G_M30039_IG03 | |
- ;; size=7 bbWeight=2 PerfScore 4.50 | |
+ je G_M30039_IG03 | |
+ ;; size=25 bbWeight=2 PerfScore 10.50 | |
G_M30039_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rbx rsi] | |
mov eax, edi | |
@@ -264,7 +264,7 @@ G_M30039_IG25: ; bbWeight=0.50, epilog, nogc, extend | |
ret | |
;; size=15 bbWeight=0.50 PerfScore 2.38 | |
-; Total bytes of code 335, prolog size 14, PerfScore 221.62, instruction count 111, allocated bytes for code 335 (MethodHash=16958aa8) for method System.Xml.XmlAttributeCollection:FindNodeOffsetNS(System.Xml.XmlAttribute):int:this (FullOpts) | |
+; Total bytes of code 360, prolog size 14, PerfScore 219.62, instruction count 111, allocated bytes for code 360 (MethodHash=16958aa8) for method System.Xml.XmlAttributeCollection:FindNodeOffsetNS(System.Xml.XmlAttribute):int:this (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+29</span> (<span style="color:red">+9.32%</span>) : 211829.dasm - System.Xml.XmlAttributeCollection:get_ItemOf(System.String,System.String):System.Xml.XmlAttribute:this (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -60,7 +60,7 @@ G_M17160_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { | |
mov rdi, r8 | |
; gcrRegs +[rdi] | |
;; size=23 bbWeight=1 PerfScore 8.00 | |
-G_M17160_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref | |
+G_M17160_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
mov rcx, rsi | |
; gcrRegs +[rcx] | |
call [System.Xml.XmlName:GetHashCode(System.String):int] | |
@@ -68,14 +68,18 @@ G_M17160_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 | |
; gcr arg pop 0 | |
mov ebp, eax | |
xor r14d, r14d | |
- ;; size=14 bbWeight=1 PerfScore 3.75 | |
-G_M17160_IG03: ; bbWeight=8, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
+ jmp SHORT G_M17160_IG04 | |
+ ;; size=16 bbWeight=1 PerfScore 5.75 | |
+G_M17160_IG03: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref | |
+ inc r14d | |
+ ;; size=3 bbWeight=2 PerfScore 0.50 | |
+G_M17160_IG04: ; bbWeight=8, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
lea rdx, bword ptr [rbx+0x10] | |
; byrRegs +[rdx] | |
cmp gword ptr [rdx], 0 | |
- je SHORT G_M17160_IG06 | |
+ je SHORT G_M17160_IG07 | |
;; size=10 bbWeight=8 PerfScore 36.00 | |
-G_M17160_IG04: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0004 {rdx}, byref, isz | |
+G_M17160_IG05: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0004 {rdx}, byref, isz | |
mov rdx, gword ptr [rdx] | |
; gcrRegs +[rdx] | |
; byrRegs -[rdx] | |
@@ -84,23 +88,23 @@ G_M17160_IG04: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0004 | |
; gcrRegs -[rdx] +[rax] | |
; gcr arg pop 0 | |
test rax, rax | |
- jne SHORT G_M17160_IG05 | |
+ jne SHORT G_M17160_IG06 | |
mov ecx, 1 | |
- jmp SHORT G_M17160_IG07 | |
+ jmp SHORT G_M17160_IG08 | |
;; size=30 bbWeight=2 PerfScore 13.50 | |
-G_M17160_IG05: ; bbWeight=2, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
+G_M17160_IG06: ; bbWeight=2, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
mov ecx, dword ptr [rax+0x10] | |
- jmp SHORT G_M17160_IG07 | |
+ jmp SHORT G_M17160_IG08 | |
;; size=5 bbWeight=2 PerfScore 8.00 | |
-G_M17160_IG06: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref | |
+G_M17160_IG07: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rax] | |
xor ecx, ecx | |
;; size=2 bbWeight=2 PerfScore 0.50 | |
-G_M17160_IG07: ; bbWeight=8, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref | |
+G_M17160_IG08: ; bbWeight=8, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref | |
cmp r14d, ecx | |
jge G_M17160_IG24 | |
;; size=9 bbWeight=8 PerfScore 10.00 | |
-G_M17160_IG08: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
+G_M17160_IG09: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
lea rcx, bword ptr [rbx+0x10] | |
; byrRegs +[rcx] | |
mov edx, r14d | |
@@ -111,14 +115,14 @@ G_M17160_IG08: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 | |
mov r15, rax | |
; gcrRegs +[r15] | |
test r15, r15 | |
- je SHORT G_M17160_IG11 | |
+ je SHORT G_M17160_IG12 | |
;; size=21 bbWeight=2 PerfScore 10.50 | |
-G_M17160_IG09: ; bbWeight=1, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
+G_M17160_IG10: ; bbWeight=1, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
mov rcx, 0xD1FFAB1E ; System.Xml.XmlAttribute | |
cmp qword ptr [r15], rcx | |
- je SHORT G_M17160_IG11 | |
+ je SHORT G_M17160_IG12 | |
;; size=15 bbWeight=1 PerfScore 4.25 | |
-G_M17160_IG10: ; bbWeight=0.50, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref | |
+G_M17160_IG11: ; bbWeight=0.50, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref | |
; gcrRegs -[r15] | |
mov rdx, rax | |
; gcrRegs +[rdx] | |
@@ -128,12 +132,12 @@ G_M17160_IG10: ; bbWeight=0.50, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRe | |
mov r15, rax | |
; gcrRegs +[r15] | |
;; size=11 bbWeight=0.50 PerfScore 0.75 | |
-G_M17160_IG11: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
+G_M17160_IG12: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs -[rax] | |
mov rcx, gword ptr [r15+0x10] | |
; gcrRegs +[rcx] | |
cmp ebp, dword ptr [rcx+0x38] | |
- jne SHORT G_M17160_IG21 | |
+ jne SHORT G_M17160_IG03 | |
mov rcx, r15 | |
mov rax, qword ptr [r15] | |
mov r13, qword ptr [rax+0x68] | |
@@ -143,23 +147,23 @@ G_M17160_IG11: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs= | |
mov rdx, rax | |
; gcrRegs +[rdx] | |
cmp rsi, rdx | |
- je SHORT G_M17160_IG16 | |
+ je SHORT G_M17160_IG17 | |
;; size=31 bbWeight=2 PerfScore 29.50 | |
-G_M17160_IG12: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
+G_M17160_IG13: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rax] | |
test rsi, rsi | |
- je SHORT G_M17160_IG21 | |
- ;; size=5 bbWeight=1.80 PerfScore 2.25 | |
-G_M17160_IG13: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
+ je G_M17160_IG03 | |
+ ;; size=9 bbWeight=1.80 PerfScore 2.25 | |
+G_M17160_IG14: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref | |
test rdx, rdx | |
- je SHORT G_M17160_IG21 | |
- ;; size=5 bbWeight=1.80 PerfScore 2.25 | |
-G_M17160_IG14: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
+ je G_M17160_IG03 | |
+ ;; size=9 bbWeight=1.80 PerfScore 2.25 | |
+G_M17160_IG15: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref | |
mov r8d, dword ptr [rsi+0x08] | |
cmp r8d, dword ptr [rdx+0x08] | |
- jne SHORT G_M17160_IG21 | |
- ;; size=10 bbWeight=1.80 PerfScore 10.80 | |
-G_M17160_IG15: ; bbWeight=2, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
+ jne G_M17160_IG03 | |
+ ;; size=14 bbWeight=1.80 PerfScore 10.80 | |
+G_M17160_IG16: ; bbWeight=2, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref | |
lea rcx, bword ptr [rsi+0x0C] | |
; byrRegs +[rcx] | |
add r8d, r8d | |
@@ -170,9 +174,9 @@ G_M17160_IG15: ; bbWeight=2, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefR | |
; byrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
test eax, eax | |
- je SHORT G_M17160_IG21 | |
- ;; size=21 bbWeight=2 PerfScore 10.50 | |
-G_M17160_IG16: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
+ je G_M17160_IG03 | |
+ ;; size=25 bbWeight=2 PerfScore 10.50 | |
+G_M17160_IG17: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
mov rcx, r15 | |
; gcrRegs +[rcx] | |
call [r13+0x18]<unknown method> | |
@@ -183,21 +187,21 @@ G_M17160_IG16: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs= | |
cmp rdi, rdx | |
je SHORT G_M17160_IG22 | |
;; size=15 bbWeight=2 PerfScore 9.50 | |
-G_M17160_IG17: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
+G_M17160_IG18: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rax] | |
test rdi, rdi | |
- je SHORT G_M17160_IG21 | |
- ;; size=5 bbWeight=1.80 PerfScore 2.25 | |
-G_M17160_IG18: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
+ je G_M17160_IG03 | |
+ ;; size=9 bbWeight=1.80 PerfScore 2.25 | |
+G_M17160_IG19: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref | |
test rdx, rdx | |
- je SHORT G_M17160_IG21 | |
- ;; size=5 bbWeight=1.80 PerfScore 2.25 | |
-G_M17160_IG19: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
+ je G_M17160_IG03 | |
+ ;; size=9 bbWeight=1.80 PerfScore 2.25 | |
+G_M17160_IG20: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref | |
mov r8d, dword ptr [rdi+0x08] | |
cmp r8d, dword ptr [rdx+0x08] | |
- jne SHORT G_M17160_IG21 | |
- ;; size=10 bbWeight=1.80 PerfScore 10.80 | |
-G_M17160_IG20: ; bbWeight=2, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
+ jne G_M17160_IG03 | |
+ ;; size=14 bbWeight=1.80 PerfScore 10.80 | |
+G_M17160_IG21: ; bbWeight=2, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref | |
lea rcx, bword ptr [rdi+0x0C] | |
; byrRegs +[rcx] | |
add r8d, r8d | |
@@ -208,15 +212,10 @@ G_M17160_IG20: ; bbWeight=2, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefR | |
; byrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
test eax, eax | |
- jne SHORT G_M17160_IG22 | |
- ;; size=21 bbWeight=2 PerfScore 10.50 | |
-G_M17160_IG21: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[r15] | |
- inc r14d | |
- jmp G_M17160_IG03 | |
- ;; size=8 bbWeight=2 PerfScore 4.50 | |
+ je G_M17160_IG03 | |
+ ;; size=25 bbWeight=2 PerfScore 10.50 | |
G_M17160_IG22: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[rbx rsi rdi] +[r15] | |
+ ; gcrRegs -[rbx rsi rdi] | |
mov rax, r15 | |
; gcrRegs +[rax] | |
;; size=3 bbWeight=0.50 PerfScore 0.12 | |
@@ -248,7 +247,7 @@ G_M17160_IG25: ; bbWeight=0.50, epilog, nogc, extend | |
ret | |
;; size=15 bbWeight=0.50 PerfScore 2.38 | |
-; Total bytes of code 311, prolog size 14, PerfScore 195.37, instruction count 105, allocated bytes for code 311 (MethodHash=c9cabcf7) for method System.Xml.XmlAttributeCollection:get_ItemOf(System.String,System.String):System.Xml.XmlAttribute:this (FullOpts) | |
+; Total bytes of code 340, prolog size 14, PerfScore 193.37, instruction count 105, allocated bytes for code 340 (MethodHash=c9cabcf7) for method System.Xml.XmlAttributeCollection:get_ItemOf(System.String,System.String):System.Xml.XmlAttribute:this (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
</div></details> | |
<details> | |
<summary>libraries_tests.run.windows.x64.Release.mch</summary> | |
<div style="margin-left:1em"> | |
<details> | |
<summary><span style="color:green">-4</span> (<span style="color:green">-11.76%</span>) : 367515.dasm - System.Net.DelegatedStream:Flush():this (Tier1)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -10,35 +10,30 @@ | |
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" | |
; V02 tmp1 [V02,T00] ( 5, 37.36) ref -> rcx single-def "guarded devirt arg temp" | |
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Net.Mime.EightBitStream> | |
-; V04 cse0 [V04,T02] ( 2, 9 ) long -> rbx hoist "CSE #01: aggressive" | |
+; V04 cse0 [V04,T02] ( 2, 9 ) long -> rax hoist "CSE #01: aggressive" | |
; | |
; Lcl frame size = 0 | |
G_M20164_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
- push rbx | |
- ;; size=1 bbWeight=1 PerfScore 1.00 | |
-G_M20164_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref | |
+ ;; size=0 bbWeight=1 PerfScore 0.00 | |
+G_M20164_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs +[rcx] | |
- mov rbx, 0xD1FFAB1E ; System.Net.Mime.EightBitStream | |
+ mov rax, 0xD1FFAB1E ; System.Net.Mime.EightBitStream | |
;; size=10 bbWeight=1 PerfScore 0.25 | |
G_M20164_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
mov rcx, gword ptr [rcx+0x10] | |
- cmp qword ptr [rcx], rbx | |
- je SHORT G_M20164_IG06 | |
+ cmp qword ptr [rcx], rax | |
+ je SHORT G_M20164_IG03 | |
;; size=9 bbWeight=8 PerfScore 48.00 | |
G_M20164_IG04: ; bbWeight=0.66, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref | |
mov rax, qword ptr [rcx] | |
mov rax, qword ptr [rax+0x58] | |
;; size=7 bbWeight=0.66 PerfScore 2.64 | |
G_M20164_IG05: ; bbWeight=0.66, epilog, nogc, extend | |
- pop rbx | |
tail.jmp [rax+0x30]<unknown method> | |
- ;; size=5 bbWeight=0.66 PerfScore 1.65 | |
-G_M20164_IG06: ; bbWeight=1.36, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz | |
- jmp SHORT G_M20164_IG03 | |
- ;; size=2 bbWeight=1.36 PerfScore 2.72 | |
+ ;; size=4 bbWeight=0.66 PerfScore 1.32 | |
-; Total bytes of code 34, prolog size 1, PerfScore 56.26, instruction count 10, allocated bytes for code 34 (MethodHash=b347b13b) for method System.Net.DelegatedStream:Flush():this (Tier1) | |
+; Total bytes of code 30, prolog size 0, PerfScore 52.21, instruction count 8, allocated bytes for code 30 (MethodHash=b347b13b) for method System.Net.DelegatedStream:Flush():this (Tier1) | |
; ============================================================ | |
Unwind Info: | |
@@ -46,9 +41,8 @@ Unwind Info: | |
>> End offset : 0xd1ffab1e (not in unwind data) | |
Version : 1 | |
Flags : 0x00 | |
- SizeOfProlog : 0x01 | |
- CountOfUnwindCodes: 1 | |
+ SizeOfProlog : 0x00 | |
+ CountOfUnwindCodes: 0 | |
FrameRegister : none (0) | |
FrameOffset : N/A (no FrameRegister) (Value=0) | |
UnwindCodes : | |
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:green">-4</span> (<span style="color:green">-11.11%</span>) : 230901.dasm - System.Configuration.Internal.DelegatingConfigHost:get_SupportsPath():ubyte:this (Tier1)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -12,34 +12,29 @@ | |
; V02 tmp1 [V02,T00] ( 4, 37 ) ref -> rcx class-hnd single-def "spilling ret_expr" <System.Configuration.Internal.IInternalConfigHost> | |
;* V03 tmp2 [V03 ] ( 0, 0 ) int -> zero-ref "guarded devirt return temp" | |
;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Configuration.UpdateConfigHost> | |
-; V05 cse0 [V05,T02] ( 2, 9 ) long -> rbx hoist "CSE #01: aggressive" | |
+; V05 cse0 [V05,T02] ( 2, 9 ) long -> r11 hoist "CSE #01: aggressive" | |
; | |
; Lcl frame size = 0 | |
G_M876_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
- push rbx | |
- ;; size=1 bbWeight=1 PerfScore 1.00 | |
-G_M876_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref | |
+ ;; size=0 bbWeight=1 PerfScore 0.00 | |
+G_M876_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs +[rcx] | |
- mov rbx, 0xD1FFAB1E ; System.Configuration.UpdateConfigHost | |
+ mov r11, 0xD1FFAB1E ; System.Configuration.UpdateConfigHost | |
;; size=10 bbWeight=1 PerfScore 0.25 | |
G_M876_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
mov rcx, gword ptr [rcx+0x08] | |
- cmp qword ptr [rcx], rbx | |
- je SHORT G_M876_IG06 | |
+ cmp qword ptr [rcx], r11 | |
+ je SHORT G_M876_IG03 | |
;; size=9 bbWeight=8 PerfScore 48.00 | |
G_M876_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref | |
mov r11, 0xD1FFAB1E ; code for <unknown method> | |
;; size=10 bbWeight=0.50 PerfScore 0.12 | |
G_M876_IG05: ; bbWeight=0.50, epilog, nogc, extend | |
- pop rbx | |
tail.jmp [r11]<unknown method> | |
- ;; size=4 bbWeight=0.50 PerfScore 1.25 | |
-G_M876_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz | |
- jmp SHORT G_M876_IG03 | |
- ;; size=2 bbWeight=2 PerfScore 4.00 | |
+ ;; size=3 bbWeight=0.50 PerfScore 1.00 | |
-; Total bytes of code 36, prolog size 1, PerfScore 54.62, instruction count 9, allocated bytes for code 36 (MethodHash=b039fc93) for method System.Configuration.Internal.DelegatingConfigHost:get_SupportsPath():ubyte:this (Tier1) | |
+; Total bytes of code 32, prolog size 0, PerfScore 49.38, instruction count 7, allocated bytes for code 32 (MethodHash=b039fc93) for method System.Configuration.Internal.DelegatingConfigHost:get_SupportsPath():ubyte:this (Tier1) | |
; ============================================================ | |
Unwind Info: | |
@@ -47,9 +42,8 @@ Unwind Info: | |
>> End offset : 0xd1ffab1e (not in unwind data) | |
Version : 1 | |
Flags : 0x00 | |
- SizeOfProlog : 0x01 | |
- CountOfUnwindCodes: 1 | |
+ SizeOfProlog : 0x00 | |
+ CountOfUnwindCodes: 0 | |
FrameRegister : none (0) | |
FrameOffset : N/A (no FrameRegister) (Value=0) | |
UnwindCodes : | |
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:green">-4</span> (<span style="color:green">-11.11%</span>) : 230904.dasm - System.Configuration.Internal.DelegatingConfigHost:get_SupportsLocation():ubyte:this (Tier1)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -12,34 +12,29 @@ | |
; V02 tmp1 [V02,T00] ( 4, 37 ) ref -> rcx class-hnd single-def "spilling ret_expr" <System.Configuration.Internal.IInternalConfigHost> | |
;* V03 tmp2 [V03 ] ( 0, 0 ) int -> zero-ref "guarded devirt return temp" | |
;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Configuration.UpdateConfigHost> | |
-; V05 cse0 [V05,T02] ( 2, 9 ) long -> rbx hoist "CSE #01: aggressive" | |
+; V05 cse0 [V05,T02] ( 2, 9 ) long -> r11 hoist "CSE #01: aggressive" | |
; | |
; Lcl frame size = 0 | |
G_M21884_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
- push rbx | |
- ;; size=1 bbWeight=1 PerfScore 1.00 | |
-G_M21884_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref | |
+ ;; size=0 bbWeight=1 PerfScore 0.00 | |
+G_M21884_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs +[rcx] | |
- mov rbx, 0xD1FFAB1E ; System.Configuration.UpdateConfigHost | |
+ mov r11, 0xD1FFAB1E ; System.Configuration.UpdateConfigHost | |
;; size=10 bbWeight=1 PerfScore 0.25 | |
G_M21884_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
mov rcx, gword ptr [rcx+0x08] | |
- cmp qword ptr [rcx], rbx | |
- je SHORT G_M21884_IG06 | |
+ cmp qword ptr [rcx], r11 | |
+ je SHORT G_M21884_IG03 | |
;; size=9 bbWeight=8 PerfScore 48.00 | |
G_M21884_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref | |
mov r11, 0xD1FFAB1E ; code for <unknown method> | |
;; size=10 bbWeight=0.50 PerfScore 0.12 | |
G_M21884_IG05: ; bbWeight=0.50, epilog, nogc, extend | |
- pop rbx | |
tail.jmp [r11]<unknown method> | |
- ;; size=4 bbWeight=0.50 PerfScore 1.25 | |
-G_M21884_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz | |
- jmp SHORT G_M21884_IG03 | |
- ;; size=2 bbWeight=2 PerfScore 4.00 | |
+ ;; size=3 bbWeight=0.50 PerfScore 1.00 | |
-; Total bytes of code 36, prolog size 1, PerfScore 54.62, instruction count 9, allocated bytes for code 36 (MethodHash=dae5aa83) for method System.Configuration.Internal.DelegatingConfigHost:get_SupportsLocation():ubyte:this (Tier1) | |
+; Total bytes of code 32, prolog size 0, PerfScore 49.38, instruction count 7, allocated bytes for code 32 (MethodHash=dae5aa83) for method System.Configuration.Internal.DelegatingConfigHost:get_SupportsLocation():ubyte:this (Tier1) | |
; ============================================================ | |
Unwind Info: | |
@@ -47,9 +42,8 @@ Unwind Info: | |
>> End offset : 0xd1ffab1e (not in unwind data) | |
Version : 1 | |
Flags : 0x00 | |
- SizeOfProlog : 0x01 | |
- CountOfUnwindCodes: 1 | |
+ SizeOfProlog : 0x00 | |
+ CountOfUnwindCodes: 0 | |
FrameRegister : none (0) | |
FrameOffset : N/A (no FrameRegister) (Value=0) | |
UnwindCodes : | |
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+29</span> (<span style="color:red">+6.18%</span>) : 422465.dasm - System.Xml.Xsl.Qil.QilVisitor:VisitChildren(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this (Tier1)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -54,43 +54,47 @@ G_M26642_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
mov rbx, rdx | |
; gcrRegs +[rbx] | |
;; size=18 bbWeight=1 PerfScore 6.75 | |
-G_M26642_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M26642_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
xor edi, edi | |
- ;; size=2 bbWeight=1 PerfScore 0.25 | |
-G_M26642_IG03: ; bbWeight=2.48, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+ jmp SHORT G_M26642_IG04 | |
+ ;; size=4 bbWeight=1 PerfScore 2.25 | |
+G_M26642_IG03: ; bbWeight=1.48, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+ inc edi | |
+ ;; size=2 bbWeight=1.48 PerfScore 0.37 | |
+G_M26642_IG04: ; bbWeight=2.48, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov rbp, qword ptr [rbx] | |
mov rcx, 0xD1FFAB1E ; System.Xml.Xsl.Qil.QilLoop | |
cmp rbp, rcx | |
- je SHORT G_M26642_IG05 | |
+ je SHORT G_M26642_IG06 | |
;; size=18 bbWeight=2.48 PerfScore 8.68 | |
-G_M26642_IG04: ; bbWeight=1.26, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M26642_IG05: ; bbWeight=1.26, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov rcx, rbx | |
; gcrRegs +[rcx] | |
mov rax, qword ptr [rbp+0x50] | |
call [rax]<unknown method> | |
; gcrRegs -[rcx] | |
; gcr arg pop 0 | |
- jmp SHORT G_M26642_IG06 | |
+ jmp SHORT G_M26642_IG07 | |
;; size=11 bbWeight=1.26 PerfScore 9.17 | |
-G_M26642_IG05: ; bbWeight=1.21, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M26642_IG06: ; bbWeight=1.21, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
mov eax, 2 | |
;; size=5 bbWeight=1.21 PerfScore 0.30 | |
-G_M26642_IG06: ; bbWeight=2.48, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M26642_IG07: ; bbWeight=2.48, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
cmp edi, eax | |
jge G_M26642_IG36 | |
;; size=8 bbWeight=2.48 PerfScore 3.10 | |
-G_M26642_IG07: ; bbWeight=1.48, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M26642_IG08: ; bbWeight=1.48, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov r14, qword ptr [rsi] | |
mov r15, 0xD1FFAB1E ; System.Xml.Xsl.IlGen.XmlILOptimizerVisitor+NodeCounter | |
cmp r14, r15 | |
- jne SHORT G_M26642_IG18 | |
+ jne SHORT G_M26642_IG19 | |
;; size=18 bbWeight=1.48 PerfScore 5.18 | |
-G_M26642_IG08: ; bbWeight=0.83, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M26642_IG09: ; bbWeight=0.83, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov rcx, 0xD1FFAB1E ; System.Xml.Xsl.Qil.QilTernary | |
cmp rbp, rcx | |
- je SHORT G_M26642_IG10 | |
+ je SHORT G_M26642_IG11 | |
;; size=15 bbWeight=0.83 PerfScore 1.24 | |
-G_M26642_IG09: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M26642_IG10: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov rcx, rbx | |
; gcrRegs +[rcx] | |
mov edx, edi | |
@@ -98,9 +102,9 @@ G_M26642_IG09: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 | |
call [rax+0x08]<unknown method> | |
; gcrRegs -[rcx] +[rax] | |
; gcr arg pop 0 | |
- jmp SHORT G_M26642_IG11 | |
+ jmp SHORT G_M26642_IG12 | |
;; size=14 bbWeight=0.45 PerfScore 3.35 | |
-G_M26642_IG10: ; bbWeight=0.38, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M26642_IG11: ; bbWeight=0.38, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rax] | |
mov rcx, rbx | |
; gcrRegs +[rcx] | |
@@ -109,45 +113,45 @@ G_M26642_IG10: ; bbWeight=0.38, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 | |
; gcrRegs -[rcx] +[rax] | |
; gcr arg pop 0 | |
;; size=11 bbWeight=0.38 PerfScore 1.33 | |
-G_M26642_IG11: ; bbWeight=0.83, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M26642_IG12: ; bbWeight=0.83, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz | |
test rax, rax | |
- je SHORT G_M26642_IG19 | |
+ je SHORT G_M26642_IG20 | |
;; size=5 bbWeight=0.83 PerfScore 1.04 | |
-G_M26642_IG12: ; bbWeight=0.82, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M26642_IG13: ; bbWeight=0.82, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov ecx, dword ptr [rax+0x20] | |
lea edx, [rcx-0x0E] | |
cmp edx, 2 | |
- jbe SHORT G_M26642_IG15 | |
+ jbe SHORT G_M26642_IG16 | |
;; size=11 bbWeight=0.82 PerfScore 3.08 | |
-G_M26642_IG13: ; bbWeight=0.57, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M26642_IG14: ; bbWeight=0.57, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs -[rax] | |
cmp ecx, 65 | |
- jne SHORT G_M26642_IG19 | |
+ jne SHORT G_M26642_IG20 | |
;; size=5 bbWeight=0.57 PerfScore 0.71 | |
-G_M26642_IG14: ; bbWeight=0.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M26642_IG15: ; bbWeight=0.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
cmp dword ptr [rbx+0x20], 66 | |
- jne SHORT G_M26642_IG19 | |
- jmp G_M26642_IG28 | |
+ jne SHORT G_M26642_IG20 | |
+ jmp G_M26642_IG29 | |
;; size=11 bbWeight=0.02 PerfScore 0.10 | |
-G_M26642_IG15: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M26642_IG16: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov ecx, dword ptr [rbx+0x20] | |
lea edx, [rcx-0x02] | |
cmp edx, 1 | |
- jbe SHORT G_M26642_IG19 | |
+ jbe SHORT G_M26642_IG20 | |
cmp ecx, 5 | |
- je SHORT G_M26642_IG19 | |
+ je SHORT G_M26642_IG20 | |
;; size=16 bbWeight=0.25 PerfScore 1.25 | |
-G_M26642_IG16: ; bbWeight=0.24, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M26642_IG17: ; bbWeight=0.24, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
add ecx, -60 | |
cmp ecx, 2 | |
- ja G_M26642_IG28 | |
+ ja G_M26642_IG29 | |
;; size=12 bbWeight=0.24 PerfScore 0.36 | |
-G_M26642_IG17: ; bbWeight=0.08, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M26642_IG18: ; bbWeight=0.08, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
cmp edi, 1 | |
- jne SHORT G_M26642_IG19 | |
- jmp SHORT G_M26642_IG28 | |
- ;; size=7 bbWeight=0.08 PerfScore 0.24 | |
-G_M26642_IG18: ; bbWeight=0.65, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+ jne SHORT G_M26642_IG20 | |
+ jmp G_M26642_IG29 | |
+ ;; size=10 bbWeight=0.08 PerfScore 0.24 | |
+G_M26642_IG19: ; bbWeight=0.65, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov rcx, rsi | |
; gcrRegs +[rcx] | |
mov rdx, rbx | |
@@ -158,14 +162,14 @@ G_M26642_IG18: ; bbWeight=0.65, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 | |
; gcrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
test eax, eax | |
- jne SHORT G_M26642_IG28 | |
+ jne SHORT G_M26642_IG29 | |
;; size=20 bbWeight=0.65 PerfScore 4.55 | |
-G_M26642_IG19: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M26642_IG20: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov rcx, 0xD1FFAB1E ; System.Xml.Xsl.Qil.QilBinary | |
cmp rbp, rcx | |
- je SHORT G_M26642_IG21 | |
+ je SHORT G_M26642_IG22 | |
;; size=15 bbWeight=0.99 PerfScore 1.48 | |
-G_M26642_IG20: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M26642_IG21: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov rcx, rbx | |
; gcrRegs +[rcx] | |
mov edx, edi | |
@@ -173,36 +177,36 @@ G_M26642_IG20: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 | |
call [rax+0x08]<unknown method> | |
; gcrRegs -[rcx] +[rax] | |
; gcr arg pop 0 | |
- jmp SHORT G_M26642_IG24 | |
+ jmp SHORT G_M26642_IG25 | |
;; size=14 bbWeight=0.50 PerfScore 3.78 | |
-G_M26642_IG21: ; bbWeight=0.48, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M26642_IG22: ; bbWeight=0.48, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs -[rax] | |
test edi, edi | |
- jne SHORT G_M26642_IG23 | |
+ jne SHORT G_M26642_IG24 | |
;; size=4 bbWeight=0.48 PerfScore 0.61 | |
-G_M26642_IG22: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M26642_IG23: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov rax, gword ptr [rbx+0x28] | |
; gcrRegs +[rax] | |
- jmp SHORT G_M26642_IG24 | |
+ jmp SHORT G_M26642_IG25 | |
;; size=6 bbWeight=0.25 PerfScore 0.99 | |
-G_M26642_IG23: ; bbWeight=0.24, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M26642_IG24: ; bbWeight=0.24, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rax] | |
cmp edi, 1 | |
jne G_M26642_IG39 | |
mov rax, gword ptr [rbx+0x30] | |
; gcrRegs +[rax] | |
;; size=13 bbWeight=0.24 PerfScore 0.77 | |
-G_M26642_IG24: ; bbWeight=0.99, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M26642_IG25: ; bbWeight=0.99, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz | |
cmp r14, r15 | |
- jne SHORT G_M26642_IG27 | |
+ jne SHORT G_M26642_IG28 | |
;; size=5 bbWeight=0.99 PerfScore 1.24 | |
-G_M26642_IG25: ; bbWeight=0.58, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M26642_IG26: ; bbWeight=0.58, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref | |
test rax, rax | |
- je SHORT G_M26642_IG35 | |
+ je G_M26642_IG03 | |
cmp rax, gword ptr [rsi+0x08] | |
- je SHORT G_M26642_IG38 | |
- ;; size=11 bbWeight=0.58 PerfScore 3.06 | |
-G_M26642_IG26: ; bbWeight=0.58, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+ je G_M26642_IG38 | |
+ ;; size=19 bbWeight=0.58 PerfScore 3.06 | |
+G_M26642_IG27: ; bbWeight=0.58, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref | |
mov rcx, rsi | |
; gcrRegs +[rcx] | |
mov rdx, rax | |
@@ -210,9 +214,9 @@ G_M26642_IG26: ; bbWeight=0.58, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0 | |
call [System.Xml.Xsl.Qil.QilVisitor:VisitChildren(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this] | |
; gcrRegs -[rax rcx rdx] | |
; gcr arg pop 0 | |
- jmp SHORT G_M26642_IG35 | |
- ;; size=14 bbWeight=0.58 PerfScore 3.21 | |
-G_M26642_IG27: ; bbWeight=0.41, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+ jmp G_M26642_IG03 | |
+ ;; size=17 bbWeight=0.58 PerfScore 3.21 | |
+G_M26642_IG28: ; bbWeight=0.41, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref | |
; gcrRegs +[rax] | |
mov rcx, rsi | |
; gcrRegs +[rcx] | |
@@ -223,14 +227,14 @@ G_M26642_IG27: ; bbWeight=0.41, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0 | |
call [rax+0x38]<unknown method> | |
; gcrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
- jmp SHORT G_M26642_IG35 | |
- ;; size=15 bbWeight=0.41 PerfScore 3.04 | |
-G_M26642_IG28: ; bbWeight=0.49, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+ jmp G_M26642_IG03 | |
+ ;; size=18 bbWeight=0.41 PerfScore 3.04 | |
+G_M26642_IG29: ; bbWeight=0.49, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov rcx, 0xD1FFAB1E ; System.Xml.Xsl.Qil.QilUnary | |
cmp rbp, rcx | |
- je SHORT G_M26642_IG30 | |
+ je SHORT G_M26642_IG31 | |
;; size=15 bbWeight=0.49 PerfScore 0.73 | |
-G_M26642_IG29: ; bbWeight=0.26, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M26642_IG30: ; bbWeight=0.26, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov rcx, rbx | |
; gcrRegs +[rcx] | |
mov edx, edi | |
@@ -238,29 +242,29 @@ G_M26642_IG29: ; bbWeight=0.26, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 | |
call [rax+0x08]<unknown method> | |
; gcrRegs -[rcx] +[rax] | |
; gcr arg pop 0 | |
- jmp SHORT G_M26642_IG31 | |
+ jmp SHORT G_M26642_IG32 | |
;; size=14 bbWeight=0.26 PerfScore 1.98 | |
-G_M26642_IG30: ; bbWeight=0.23, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M26642_IG31: ; bbWeight=0.23, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs -[rax] | |
... | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+27</span> (<span style="color:red">+7.28%</span>) : 3932.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Instrumented Tier1)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -24,8 +24,8 @@ | |
;* V12 tmp2 [V12 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" | |
;* V13 tmp3 [V13 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" | |
;* V14 tmp4 [V14 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" | |
-; V15 cse0 [V15,T02] ( 5, 34.51) int -> rcx "CSE #01: aggressive" | |
-; V16 cse1 [V16,T03] ( 4, 34.50) int -> rax "CSE #02: aggressive" | |
+; V15 cse0 [V15,T02] ( 5, 34.51) int -> r13 "CSE #01: aggressive" | |
+; V16 cse1 [V16,T03] ( 4, 34.50) int -> r12 "CSE #02: aggressive" | |
; V17 cse2 [V17,T12] ( 3, 1.92) int -> rcx "CSE #04: moderate" | |
; | |
; Lcl frame size = 40 | |
@@ -33,6 +33,8 @@ | |
G_M49993_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
push r15 | |
push r14 | |
+ push r13 | |
+ push r12 | |
push rdi | |
push rsi | |
push rbp | |
@@ -40,8 +42,8 @@ G_M49993_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
sub rsp, 40 | |
mov ebx, edx | |
mov esi, r9d | |
- ;; size=17 bbWeight=1 PerfScore 6.75 | |
-G_M49993_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0102 {rcx r8}, byref | |
+ ;; size=21 bbWeight=1 PerfScore 8.75 | |
+G_M49993_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0102 {rcx r8}, byref, isz | |
; byrRegs +[rcx r8] | |
cmp ebx, esi | |
mov edi, esi | |
@@ -51,47 +53,48 @@ G_M49993_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0102 {rcx r8}, | |
; byrRegs +[r14] | |
mov r15, r8 | |
; byrRegs +[r15] | |
- ;; size=15 bbWeight=1 PerfScore 1.50 | |
-G_M49993_IG03: ; bbWeight=11.64, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref | |
+ jmp SHORT G_M49993_IG04 | |
+ ;; size=17 bbWeight=1 PerfScore 3.50 | |
+G_M49993_IG03: ; bbWeight=10.64, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref | |
; byrRegs -[rcx r8] | |
- test edi, edi | |
- je G_M49993_IG14 | |
- ;; size=8 bbWeight=11.64 PerfScore 14.55 | |
-G_M49993_IG04: ; bbWeight=11.28, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz | |
- movzx rcx, word ptr [r14] | |
- cmp ecx, 127 | |
- jg G_M49993_IG18 | |
- movzx rax, word ptr [r15] | |
- cmp eax, 127 | |
- jg G_M49993_IG17 | |
- cmp ecx, eax | |
- je SHORT G_M49993_IG07 | |
- ;; size=30 bbWeight=11.28 PerfScore 87.43 | |
-G_M49993_IG05: ; bbWeight=0.66, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz | |
- mov edx, ecx | |
- or edx, 32 | |
- or eax, 32 | |
- cmp edx, eax | |
- jne SHORT G_M49993_IG08 | |
- ;; size=12 bbWeight=0.66 PerfScore 1.31 | |
-G_M49993_IG06: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref | |
- or ecx, 32 | |
- add ecx, -97 | |
- cmp ecx, 25 | |
- ja G_M49993_IG16 | |
- mov rcx, 0xD1FFAB1E | |
- call CORINFO_HELP_COUNTPROFILE32 | |
- ; gcr arg pop 0 | |
- ;; size=30 bbWeight=0.01 PerfScore 0.04 | |
-G_M49993_IG07: ; bbWeight=10.64, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz | |
mov rcx, 0xD1FFAB1E | |
call CORINFO_HELP_COUNTPROFILE32 | |
; gcr arg pop 0 | |
dec edi | |
add r14, 2 | |
add r15, 2 | |
+ ;; size=25 bbWeight=10.64 PerfScore 21.28 | |
+G_M49993_IG04: ; bbWeight=11.64, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref | |
+ test edi, edi | |
+ je G_M49993_IG14 | |
+ ;; size=8 bbWeight=11.64 PerfScore 14.55 | |
+G_M49993_IG05: ; bbWeight=11.28, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz | |
+ movzx r13, word ptr [r14] | |
+ cmp r13d, 127 | |
+ jg G_M49993_IG18 | |
+ movzx r12, word ptr [r15] | |
+ cmp r12d, 127 | |
+ jg G_M49993_IG17 | |
+ cmp r13d, r12d | |
+ je SHORT G_M49993_IG03 | |
+ ;; size=33 bbWeight=11.28 PerfScore 87.43 | |
+G_M49993_IG06: ; bbWeight=0.66, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz | |
+ mov ecx, r13d | |
+ or ecx, 32 | |
+ or r12d, 32 | |
+ cmp ecx, r12d | |
+ jne SHORT G_M49993_IG08 | |
+ ;; size=15 bbWeight=0.66 PerfScore 1.31 | |
+G_M49993_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz | |
+ or r13d, 32 | |
+ add r13d, -97 | |
+ cmp r13d, 25 | |
+ ja G_M49993_IG16 | |
+ mov rcx, 0xD1FFAB1E | |
+ call CORINFO_HELP_COUNTPROFILE32 | |
+ ; gcr arg pop 0 | |
jmp SHORT G_M49993_IG03 | |
- ;; size=27 bbWeight=10.64 PerfScore 42.56 | |
+ ;; size=35 bbWeight=0.01 PerfScore 0.07 | |
G_M49993_IG08: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz | |
movzx rcx, word ptr [r14] | |
mov ebx, ecx | |
@@ -133,10 +136,12 @@ G_M49993_IG13: ; bbWeight=0.64, epilog, nogc, extend | |
pop rbp | |
pop rsi | |
pop rdi | |
+ pop r12 | |
+ pop r13 | |
pop r14 | |
pop r15 | |
ret | |
- ;; size=13 bbWeight=0.64 PerfScore 2.73 | |
+ ;; size=17 bbWeight=0.64 PerfScore 3.37 | |
G_M49993_IG14: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref | |
mov rcx, 0xD1FFAB1E | |
call CORINFO_HELP_COUNTPROFILE32 | |
@@ -150,10 +155,12 @@ G_M49993_IG15: ; bbWeight=0.36, epilog, nogc, extend | |
pop rbp | |
pop rsi | |
pop rdi | |
+ pop r12 | |
+ pop r13 | |
pop r14 | |
pop r15 | |
ret | |
- ;; size=13 bbWeight=0.36 PerfScore 1.52 | |
+ ;; size=17 bbWeight=0.36 PerfScore 1.88 | |
G_M49993_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, gcvars, byref | |
; byrRegs +[r14-r15] | |
mov rcx, 0xD1FFAB1E | |
@@ -192,12 +199,14 @@ G_M49993_IG20: ; bbWeight=0, epilog, nogc, extend | |
pop rbp | |
pop rsi | |
pop rdi | |
+ pop r12 | |
+ pop r13 | |
pop r14 | |
pop r15 | |
tail.jmp [System.Globalization.Ordinal:CompareStringIgnoreCaseNonAscii(byref,int,byref,int):int] | |
- ;; size=18 bbWeight=0 PerfScore 0.00 | |
+ ;; size=22 bbWeight=0 PerfScore 0.00 | |
-; Total bytes of code 371, prolog size 17, PerfScore 167.16, instruction count 107, allocated bytes for code 371 (MethodHash=d5cf3cb6) for method System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Instrumented Tier1) | |
+; Total bytes of code 398, prolog size 21, PerfScore 150.91, instruction count 116, allocated bytes for code 398 (MethodHash=d5cf3cb6) for method System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Instrumented Tier1) | |
; ============================================================ | |
Unwind Info: | |
@@ -205,15 +214,17 @@ Unwind Info: | |
>> End offset : 0xd1ffab1e (not in unwind data) | |
Version : 1 | |
Flags : 0x00 | |
- SizeOfProlog : 0x0C | |
- CountOfUnwindCodes: 7 | |
+ SizeOfProlog : 0x10 | |
+ CountOfUnwindCodes: 9 | |
FrameRegister : none (0) | |
FrameOffset : N/A (no FrameRegister) (Value=0) | |
UnwindCodes : | |
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 | |
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
- CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) | |
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) | |
+ CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 | |
+ CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
+ CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
+ CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) | |
+ CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) | |
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12) | |
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) | |
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) | |
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+23</span> (<span style="color:red">+8.10%</span>) : 503908.dasm - System.Globalization.DateTimeFormatInfo:get_DateTimeOffsetPattern():System.String:this (Tier1)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -41,7 +41,7 @@ G_M49336_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr | |
cmp gword ptr [rbx+0x68], 0 | |
jne G_M49336_IG09 | |
;; size=11 bbWeight=1 PerfScore 4.00 | |
-G_M49336_IG03: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+G_M49336_IG03: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
xor esi, esi | |
xor edi, edi | |
mov ebp, 39 | |
@@ -53,31 +53,32 @@ G_M49336_IG03: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, | |
mov r14, rax | |
; gcrRegs +[r14] | |
xor r15d, r15d | |
- ;; size=24 bbWeight=0.01 PerfScore 0.05 | |
-G_M49336_IG04: ; bbWeight=0.08, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz | |
+ jmp SHORT G_M49336_IG05 | |
+ ;; size=26 bbWeight=0.01 PerfScore 0.07 | |
+G_M49336_IG04: ; bbWeight=0.07, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rax] | |
+ inc r15d | |
+ ;; size=3 bbWeight=0.07 PerfScore 0.02 | |
+G_M49336_IG05: ; bbWeight=0.08, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz | |
test esi, esi | |
jne G_M49336_IG16 | |
mov ecx, dword ptr [r14+0x08] | |
cmp ecx, r15d | |
jle SHORT G_M49336_IG07 | |
;; size=17 bbWeight=0.08 PerfScore 0.36 | |
-G_M49336_IG05: ; bbWeight=0.07, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz | |
+G_M49336_IG06: ; bbWeight=0.07, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz | |
mov ecx, r15d | |
movzx r13, word ptr [r14+2*rcx+0x0C] | |
cmp r13d, 37 | |
jbe SHORT G_M49336_IG12 | |
cmp r13d, 39 | |
- je SHORT G_M49336_IG14 | |
+ je G_M49336_IG14 | |
cmp r13d, 92 | |
je SHORT G_M49336_IG13 | |
cmp r13d, 122 | |
- je SHORT G_M49336_IG11 | |
- ;; size=33 bbWeight=0.07 PerfScore 0.51 | |
-G_M49336_IG06: ; bbWeight=0.07, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz | |
- inc r15d | |
- jmp SHORT G_M49336_IG04 | |
- ;; size=5 bbWeight=0.07 PerfScore 0.16 | |
+ jne SHORT G_M49336_IG04 | |
+ jmp SHORT G_M49336_IG11 | |
+ ;; size=39 bbWeight=0.07 PerfScore 0.65 | |
G_M49336_IG07: ; bbWeight=0.01, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref | |
mov rcx, rbx | |
; gcrRegs +[rcx] | |
@@ -120,38 +121,38 @@ G_M49336_IG10: ; bbWeight=1, epilog, nogc, extend | |
pop r15 | |
ret | |
;; size=15 bbWeight=1 PerfScore 4.75 | |
-G_M49336_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref, isz | |
+G_M49336_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref | |
; gcrRegs -[rax] +[r14] | |
test edi, edi | |
sete sil | |
movzx rsi, sil | |
- jmp SHORT G_M49336_IG06 | |
- ;; size=12 bbWeight=0 PerfScore 0.00 | |
+ jmp G_M49336_IG04 | |
+ ;; size=15 bbWeight=0 PerfScore 0.00 | |
G_M49336_IG12: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz | |
cmp r13d, 34 | |
je SHORT G_M49336_IG14 | |
cmp r13d, 37 | |
- jne SHORT G_M49336_IG06 | |
- ;; size=12 bbWeight=0 PerfScore 0.00 | |
-G_M49336_IG13: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz | |
+ jne G_M49336_IG04 | |
+ ;; size=16 bbWeight=0 PerfScore 0.00 | |
+G_M49336_IG13: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref | |
inc r15d | |
- jmp SHORT G_M49336_IG06 | |
- ;; size=5 bbWeight=0 PerfScore 0.00 | |
+ jmp G_M49336_IG04 | |
+ ;; size=8 bbWeight=0 PerfScore 0.00 | |
G_M49336_IG14: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz | |
test edi, edi | |
je SHORT G_M49336_IG15 | |
mov ecx, r15d | |
movzx rcx, word ptr [r14+2*rcx+0x0C] | |
cmp ecx, ebp | |
- jne SHORT G_M49336_IG06 | |
+ jne G_M49336_IG04 | |
xor edi, edi | |
- jmp SHORT G_M49336_IG06 | |
- ;; size=21 bbWeight=0 PerfScore 0.00 | |
+ jmp G_M49336_IG04 | |
+ ;; size=28 bbWeight=0 PerfScore 0.00 | |
G_M49336_IG15: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref | |
mov ecx, r15d | |
movzx rbp, word ptr [r14+2*rcx+0x0C] | |
mov edi, 1 | |
- jmp G_M49336_IG06 | |
+ jmp G_M49336_IG04 | |
;; size=19 bbWeight=0 PerfScore 0.00 | |
G_M49336_IG16: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref | |
mov rcx, rbx | |
@@ -171,7 +172,7 @@ G_M49336_IG16: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, | |
jmp G_M49336_IG08 | |
;; size=36 bbWeight=0 PerfScore 0.00 | |
-; Total bytes of code 284, prolog size 17, PerfScore 19.42, instruction count 84, allocated bytes for code 284 (MethodHash=92423f47) for method System.Globalization.DateTimeFormatInfo:get_DateTimeOffsetPattern():System.String:this (Tier1) | |
+; Total bytes of code 307, prolog size 17, PerfScore 19.44, instruction count 85, allocated bytes for code 307 (MethodHash=92423f47) for method System.Globalization.DateTimeFormatInfo:get_DateTimeOffsetPattern():System.String:this (Tier1) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
</div></details> | |
<details> | |
<summary>libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch</summary> | |
<div style="margin-left:1em"> | |
<details> | |
<summary><span style="color:green">-30</span> (<span style="color:green">-9.46%</span>) : 307868.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33111_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -16,18 +16,18 @@ | |
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> | |
;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref | |
; V07 loc5 [V07,T06] ( 7, 12 ) int -> rcx | |
-; V08 loc6 [V08,T09] ( 5, 8.50) int -> rdx | |
-; V09 loc7 [V09,T00] ( 14,106 ) int -> r14 | |
+; V08 loc6 [V08,T09] ( 5, 8.50) int -> r8 | |
+; V09 loc7 [V09,T00] ( 14,106 ) int -> rdx | |
; V10 OutArgs [V10 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" | |
-; V11 tmp1 [V11,T01] ( 3, 96 ) int -> r8 "Span.get_Item index" | |
+; V11 tmp1 [V11,T01] ( 3, 96 ) int -> r10 "Span.get_Item index" | |
; V12 tmp2 [V12,T04] ( 3, 24 ) int -> rax "Span.get_Item index" | |
;* V13 tmp3 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> | |
;* V14 tmp4 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" | |
;* V15 tmp5 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" | |
;* V16 tmp6 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
;* V17 tmp7 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
-; V18 tmp8 [V18,T12] ( 4, 4 ) int -> rsi "Inlining Arg" | |
-; V19 tmp9 [V19,T11] ( 5, 5 ) int -> r14 "Inlining Arg" | |
+; V18 tmp8 [V18,T12] ( 4, 4 ) int -> rdi "Inlining Arg" | |
+; V19 tmp9 [V19,T11] ( 5, 5 ) int -> rsi "Inlining Arg" | |
;* V20 tmp10 [V20 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" | |
; V21 tmp11 [V21,T15] ( 4, 2 ) int -> rcx single-def "Inline stloc first use temp" | |
; V22 tmp12 [V22,T14] ( 3, 3 ) ref -> r9 class-hnd single-def "impAppendStmt" <int[]> | |
@@ -43,18 +43,17 @@ | |
; V32 cse0 [V32,T13] ( 4, 3.00) int -> rax "CSE #02: moderate" | |
; V33 cse1 [V33,T16] ( 3, 1.50) ref -> rdx "CSE #01: moderate" | |
; | |
-; Lcl frame size = 32 | |
+; Lcl frame size = 40 | |
G_M36966_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
- push r14 | |
push rdi | |
push rsi | |
push rbp | |
push rbx | |
- sub rsp, 32 | |
+ sub rsp, 40 | |
mov rbx, rcx | |
; gcrRegs +[rbx] | |
- ;; size=13 bbWeight=1.00 PerfScore 5.50 | |
+ ;; size=11 bbWeight=1.00 PerfScore 4.50 | |
G_M36966_IG02: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref | |
; byrRegs +[rdx] | |
mov rsi, bword ptr [rdx] | |
@@ -82,100 +81,105 @@ G_M36966_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi | |
G_M36966_IG05: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
lea eax, [rbp-0x01] | |
cmp eax, edi | |
- jae SHORT G_M36966_IG14 | |
+ jae SHORT G_M36966_IG17 | |
;; size=7 bbWeight=1.00 PerfScore 1.75 | |
G_M36966_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
mov ecx, eax | |
cmp word ptr [rsi+2*rcx], 99 | |
- jne SHORT G_M36966_IG14 | |
+ jne SHORT G_M36966_IG17 | |
mov ecx, eax | |
- xor r14d, r14d | |
- ;; size=14 bbWeight=0.50 PerfScore 2.38 | |
-G_M36966_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
- cmp ecx, r14d | |
- jle SHORT G_M36966_IG08 | |
+ xor edx, edx | |
+ jmp SHORT G_M36966_IG08 | |
+ ;; size=15 bbWeight=0.50 PerfScore 3.38 | |
+G_M36966_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref | |
+ inc edx | |
+ ;; size=2 bbWeight=4 PerfScore 1.00 | |
+G_M36966_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
+ cmp ecx, edx | |
+ jle SHORT G_M36966_IG09 | |
mov eax, ecx | |
- sub eax, r14d | |
+ sub eax, edx | |
dec eax | |
cmp eax, edi | |
jae G_M36966_IG24 | |
cmp word ptr [rsi+2*rax], 98 | |
- je G_M36966_IG22 | |
- ;; size=31 bbWeight=4 PerfScore 29.00 | |
-G_M36966_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
- test r14d, r14d | |
- jle SHORT G_M36966_IG14 | |
+ je SHORT G_M36966_IG07 | |
+ ;; size=25 bbWeight=4 PerfScore 29.00 | |
+G_M36966_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
+ test edx, edx | |
+ jle SHORT G_M36966_IG17 | |
mov eax, ecx | |
- sub eax, r14d | |
- mov edx, eax | |
- dec ecx | |
- ;; size=14 bbWeight=0.50 PerfScore 1.12 | |
-G_M36966_IG09: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref | |
- xor r14d, r14d | |
- ;; size=3 bbWeight=4 PerfScore 1.00 | |
-G_M36966_IG10: ; bbWeight=32, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
- cmp eax, r14d | |
- jle SHORT G_M36966_IG12 | |
- ;; size=5 bbWeight=32 PerfScore 40.00 | |
-G_M36966_IG11: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref | |
+ sub eax, edx | |
mov r8d, eax | |
- sub r8d, r14d | |
- dec r8d | |
- cmp r8d, edi | |
+ dec ecx | |
+ jmp SHORT G_M36966_IG11 | |
+ ;; size=15 bbWeight=0.50 PerfScore 2.12 | |
+G_M36966_IG10: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref | |
+ inc r8d | |
+ mov eax, r8d | |
+ ;; size=6 bbWeight=2 PerfScore 1.00 | |
+G_M36966_IG11: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
+ xor edx, edx | |
+ jmp SHORT G_M36966_IG13 | |
+ ;; size=4 bbWeight=4 PerfScore 9.00 | |
+G_M36966_IG12: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref | |
+ inc edx | |
+ ;; size=2 bbWeight=16 PerfScore 4.00 | |
+G_M36966_IG13: ; bbWeight=32, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
+ cmp eax, edx | |
+ jle SHORT G_M36966_IG15 | |
+ ;; size=4 bbWeight=32 PerfScore 40.00 | |
+G_M36966_IG14: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
+ mov r10d, eax | |
+ sub r10d, edx | |
+ dec r10d | |
+ cmp r10d, edi | |
jae G_M36966_IG24 | |
- cmp word ptr [rsi+2*r8], 97 | |
- je G_M36966_IG21 | |
- ;; size=30 bbWeight=16 PerfScore 96.00 | |
-G_M36966_IG12: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
- test r14d, r14d | |
- jg SHORT G_M36966_IG17 | |
- ;; size=5 bbWeight=4 PerfScore 5.00 | |
-G_M36966_IG13: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
- cmp ecx, edx | |
- jg SHORT G_M36966_IG16 | |
- ;; size=4 bbWeight=2 PerfScore 2.50 | |
-G_M36966_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
+ cmp word ptr [rsi+2*r10], 97 | |
+ je SHORT G_M36966_IG12 | |
+ ;; size=26 bbWeight=16 PerfScore 96.00 | |
+G_M36966_IG15: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
+ test edx, edx | |
+ jg SHORT G_M36966_IG19 | |
+ ;; size=4 bbWeight=4 PerfScore 5.00 | |
+G_M36966_IG16: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
+ cmp ecx, r8d | |
+ jg SHORT G_M36966_IG10 | |
+ ;; size=5 bbWeight=2 PerfScore 2.50 | |
+G_M36966_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rbx] | |
; byrRegs -[rsi] | |
xor eax, eax | |
;; size=2 bbWeight=0.50 PerfScore 0.12 | |
-G_M36966_IG15: ; bbWeight=0.50, epilog, nogc, extend | |
- add rsp, 32 | |
+G_M36966_IG18: ; bbWeight=0.50, epilog, nogc, extend | |
+ add rsp, 40 | |
pop rbx | |
pop rbp | |
pop rsi | |
pop rdi | |
- pop r14 | |
ret | |
- ;; size=11 bbWeight=0.50 PerfScore 1.88 | |
-G_M36966_IG16: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz | |
+ ;; size=9 bbWeight=0.50 PerfScore 1.62 | |
+G_M36966_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz | |
; gcrRegs +[rbx] | |
- ; byrRegs +[rsi] | |
- inc edx | |
- mov eax, edx | |
- jmp SHORT G_M36966_IG09 | |
- ;; size=6 bbWeight=2 PerfScore 5.00 | |
-G_M36966_IG17: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
- ; byrRegs -[rsi] | |
- sub eax, r14d | |
+ sub eax, edx | |
mov dword ptr [rbx+0x4C], eax | |
- mov r14d, ebp | |
- mov esi, eax | |
- cmp esi, r14d | |
- jge SHORT G_M36966_IG18 | |
mov esi, ebp | |
- mov r14d, eax | |
- ;; size=21 bbWeight=0.50 PerfScore 1.75 | |
-G_M36966_IG18: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+ mov edi, eax | |
+ cmp edi, esi | |
+ jge SHORT G_M36966_IG20 | |
+ mov edi, ebp | |
+ mov esi, eax | |
+ ;; size=17 bbWeight=0.50 PerfScore 1.75 | |
+G_M36966_IG20: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
cmp dword ptr [rbx+0x58], 0 | |
- jne SHORT G_M36966_IG19 | |
+ jne SHORT G_M36966_IG21 | |
mov rcx, rbx | |
; gcrRegs +[rcx] | |
call [System.Text.RegularExpressions.RegexRunner:DoubleCrawl():this] | |
; gcrRegs -[rcx] | |
; gcr arg pop 0 | |
;; size=15 bbWeight=0.50 PerfScore 3.62 | |
-G_M36966_IG19: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+G_M36966_IG21: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
mov r9, gword ptr [rbx+0x20] | |
; gcrRegs +[r9] | |
mov ecx, dword ptr [rbx+0x58] | |
@@ -185,12 +189,12 @@ G_M36966_IG19: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, | |
jae SHORT G_M36966_IG24 | |
xor r8d, r8d | |
mov dword ptr [r9+4*rcx+0x10], r8d | |
- mov r9d, esi | |
+ mov r9d, edi | |
; gcrRegs -[r9] | |
- sub r9d, r14d | |
+ sub r9d, esi | |
mov rcx, gword ptr [rbx+0x28] | |
; gcrRegs +[rcx] | |
- mov r8d, r14d | |
+ mov r8d, esi | |
xor edx, edx | |
cmp dword ptr [rcx], ecx | |
call [<unknown method>] | |
@@ -198,28 +202,15 @@ G_M36966_IG19: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, | |
; gcr arg pop 0 | |
mov eax, 1 | |
;; size=54 bbWeight=0.50 PerfScore 9.88 | |
-G_M36966_IG20: ; bbWeight=0.50, epilog, nogc, extend | |
- add rsp, 32 | |
+G_M36966_IG22: ; bbWeight=0.50, epilog, nogc, extend | |
+ add rsp, 40 | |
pop rbx | |
pop rbp | |
pop rsi | |
pop rdi | |
- pop r14 | |
ret | |
- ;; size=11 bbWeight=0.50 PerfScore 1.88 | |
-G_M36966_IG21: ; bbWeight=16, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref | |
- ; gcrRegs +[rbx] | |
- ; byrRegs +[rsi] | |
- inc r14d | |
- jmp G_M36966_IG10 | |
... | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:green">-25</span> (<span style="color:green">-9.16%</span>) : 306155.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33253_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -16,17 +16,17 @@ | |
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> | |
;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref | |
;* V07 loc5 [V07,T15] ( 0, 0 ) int -> zero-ref single-def | |
-; V08 loc6 [V08,T09] ( 5, 8.50) int -> rcx | |
-; V09 loc7 [V09,T01] ( 6, 17 ) int -> r14 | |
+; V08 loc6 [V08,T09] ( 5, 8.50) int -> rax | |
+; V09 loc7 [V09,T01] ( 6, 17 ) int -> rax | |
; V10 OutArgs [V10 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" | |
-; V11 tmp1 [V11,T00] ( 3, 24 ) int -> rax "Span.get_Item index" | |
+; V11 tmp1 [V11,T00] ( 3, 24 ) int -> rcx "Span.get_Item index" | |
;* V12 tmp2 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> | |
;* V13 tmp3 [V13 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" | |
;* V14 tmp4 [V14 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" | |
;* V15 tmp5 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
;* V16 tmp6 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
-; V17 tmp7 [V17,T11] ( 4, 4 ) int -> rsi "Inlining Arg" | |
-; V18 tmp8 [V18,T10] ( 5, 5 ) int -> r14 "Inlining Arg" | |
+; V17 tmp7 [V17,T11] ( 4, 4 ) int -> rdi "Inlining Arg" | |
+; V18 tmp8 [V18,T10] ( 5, 5 ) int -> rsi "Inlining Arg" | |
;* V19 tmp9 [V19 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" | |
; V20 tmp10 [V20,T13] ( 4, 2 ) int -> rcx single-def "Inline stloc first use temp" | |
; V21 tmp11 [V21,T12] ( 3, 3 ) ref -> r9 class-hnd single-def "impAppendStmt" <int[]> | |
@@ -42,18 +42,17 @@ | |
; V31 cse0 [V31,T05] ( 3, 12 ) int -> rdx "CSE #03: aggressive" | |
; V32 cse1 [V32,T14] ( 3, 1.50) ref -> rdx "CSE #01: moderate" | |
; | |
-; Lcl frame size = 32 | |
+; Lcl frame size = 40 | |
G_M45539_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
- push r14 | |
push rdi | |
push rsi | |
push rbp | |
push rbx | |
- sub rsp, 32 | |
+ sub rsp, 40 | |
mov rbx, rcx | |
; gcrRegs +[rbx] | |
- ;; size=13 bbWeight=1.00 PerfScore 5.50 | |
+ ;; size=11 bbWeight=1.00 PerfScore 4.50 | |
G_M45539_IG02: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref | |
; byrRegs +[rdx] | |
mov rsi, bword ptr [rdx] | |
@@ -85,81 +84,82 @@ G_M45539_IG05: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi | |
G_M45539_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
mov eax, ebp | |
cmp word ptr [rsi+2*rax], 10 | |
- jne SHORT G_M45539_IG12 | |
+ jne SHORT G_M45539_IG14 | |
;; size=9 bbWeight=0.50 PerfScore 2.12 | |
-G_M45539_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref | |
- xor r14d, r14d | |
- ;; size=3 bbWeight=0.50 PerfScore 0.12 | |
-G_M45539_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
- cmp ebp, r14d | |
- jle SHORT G_M45539_IG09 | |
- mov eax, ebp | |
- sub eax, r14d | |
- dec eax | |
- cmp eax, edi | |
+G_M45539_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
+ xor eax, eax | |
+ jmp SHORT G_M45539_IG09 | |
+ ;; size=4 bbWeight=0.50 PerfScore 1.12 | |
+G_M45539_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref | |
+ inc eax | |
+ ;; size=2 bbWeight=4 PerfScore 1.00 | |
+G_M45539_IG09: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
+ cmp ebp, eax | |
+ jle SHORT G_M45539_IG10 | |
+ mov ecx, ebp | |
+ sub ecx, eax | |
+ dec ecx | |
+ cmp ecx, edi | |
jae G_M45539_IG21 | |
- cmp word ptr [rsi+2*rax], 10 | |
- jne G_M45539_IG19 | |
- ;; size=31 bbWeight=4 PerfScore 29.00 | |
-G_M45539_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref | |
- mov eax, ebp | |
- sub eax, r14d | |
+ cmp word ptr [rsi+2*rcx], 10 | |
+ jne SHORT G_M45539_IG08 | |
+ ;; size=25 bbWeight=4 PerfScore 29.00 | |
+G_M45539_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
+ mov ecx, ebp | |
+ sub ecx, eax | |
+ mov eax, ecx | |
+ jmp SHORT G_M45539_IG12 | |
+ ;; size=8 bbWeight=0.50 PerfScore 1.38 | |
+G_M45539_IG11: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref | |
+ inc eax | |
mov ecx, eax | |
- ;; size=7 bbWeight=0.50 PerfScore 0.38 | |
-G_M45539_IG10: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
- test eax, eax | |
- jle SHORT G_M45539_IG15 | |
- lea edx, [rax-0x01] | |
+ ;; size=4 bbWeight=2 PerfScore 1.00 | |
+G_M45539_IG12: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
+ test ecx, ecx | |
+ jle SHORT G_M45539_IG16 | |
+ lea edx, [rcx-0x01] | |
cmp edx, edi | |
- jae G_M45539_IG21 | |
+ jae SHORT G_M45539_IG21 | |
cmp word ptr [rsi+2*rdx], 10 | |
- je SHORT G_M45539_IG15 | |
- ;; size=22 bbWeight=4 PerfScore 28.00 | |
-G_M45539_IG11: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
- cmp ebp, ecx | |
- jg SHORT G_M45539_IG14 | |
+ je SHORT G_M45539_IG16 | |
+ ;; size=18 bbWeight=4 PerfScore 28.00 | |
+G_M45539_IG13: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
+ cmp ebp, eax | |
+ jg SHORT G_M45539_IG11 | |
;; size=4 bbWeight=2 PerfScore 2.50 | |
-G_M45539_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
+G_M45539_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rbx] | |
; byrRegs -[rsi] | |
xor eax, eax | |
;; size=2 bbWeight=0.50 PerfScore 0.12 | |
-G_M45539_IG13: ; bbWeight=0.50, epilog, nogc, extend | |
- add rsp, 32 | |
+G_M45539_IG15: ; bbWeight=0.50, epilog, nogc, extend | |
+ add rsp, 40 | |
pop rbx | |
pop rbp | |
pop rsi | |
pop rdi | |
- pop r14 | |
ret | |
- ;; size=11 bbWeight=0.50 PerfScore 1.88 | |
-G_M45539_IG14: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz | |
+ ;; size=9 bbWeight=0.50 PerfScore 1.62 | |
+G_M45539_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz | |
; gcrRegs +[rbx] | |
- ; byrRegs +[rsi] | |
- inc ecx | |
- mov eax, ecx | |
- jmp SHORT G_M45539_IG10 | |
- ;; size=6 bbWeight=2 PerfScore 5.00 | |
-G_M45539_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
- ; byrRegs -[rsi] | |
- mov dword ptr [rbx+0x4C], eax | |
- mov r14d, ebp | |
- mov esi, eax | |
- cmp esi, r14d | |
- jge SHORT G_M45539_IG16 | |
+ mov dword ptr [rbx+0x4C], ecx | |
mov esi, ebp | |
- mov r14d, eax | |
- ;; size=18 bbWeight=0.50 PerfScore 1.62 | |
-G_M45539_IG16: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+ mov edi, ecx | |
+ cmp edi, esi | |
+ jge SHORT G_M45539_IG17 | |
+ mov edi, ebp | |
+ mov esi, ecx | |
+ ;; size=15 bbWeight=0.50 PerfScore 1.62 | |
+G_M45539_IG17: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
cmp dword ptr [rbx+0x58], 0 | |
- jne SHORT G_M45539_IG17 | |
+ jne SHORT G_M45539_IG18 | |
mov rcx, rbx | |
; gcrRegs +[rcx] | |
call [System.Text.RegularExpressions.RegexRunner:DoubleCrawl():this] | |
; gcrRegs -[rcx] | |
; gcr arg pop 0 | |
;; size=15 bbWeight=0.50 PerfScore 3.62 | |
-G_M45539_IG17: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+G_M45539_IG18: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
mov r9, gword ptr [rbx+0x20] | |
; gcrRegs +[r9] | |
mov ecx, dword ptr [rbx+0x58] | |
@@ -169,12 +169,12 @@ G_M45539_IG17: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, | |
jae SHORT G_M45539_IG21 | |
xor r8d, r8d | |
mov dword ptr [r9+4*rcx+0x10], r8d | |
- mov r9d, esi | |
+ mov r9d, edi | |
; gcrRegs -[r9] | |
- sub r9d, r14d | |
+ sub r9d, esi | |
mov rcx, gword ptr [rbx+0x28] | |
; gcrRegs +[rcx] | |
- mov r8d, r14d | |
+ mov r8d, esi | |
xor edx, edx | |
cmp dword ptr [rcx], ecx | |
call [<unknown method>] | |
@@ -182,24 +182,15 @@ G_M45539_IG17: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, | |
; gcr arg pop 0 | |
mov eax, 1 | |
;; size=54 bbWeight=0.50 PerfScore 9.88 | |
-G_M45539_IG18: ; bbWeight=0.50, epilog, nogc, extend | |
- add rsp, 32 | |
+G_M45539_IG19: ; bbWeight=0.50, epilog, nogc, extend | |
+ add rsp, 40 | |
pop rbx | |
pop rbp | |
pop rsi | |
pop rdi | |
- pop r14 | |
ret | |
- ;; size=11 bbWeight=0.50 PerfScore 1.88 | |
-G_M45539_IG19: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref | |
- ; gcrRegs +[rbx] | |
- ; byrRegs +[rsi] | |
- inc r14d | |
- jmp G_M45539_IG08 | |
- ;; size=8 bbWeight=4 PerfScore 9.00 | |
-G_M45539_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[rbx] | |
- ; byrRegs -[rsi] | |
+ ;; size=9 bbWeight=0.50 PerfScore 1.62 | |
+G_M45539_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref | |
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] | |
; gcr arg pop 0 | |
int3 | |
@@ -210,7 +201,7 @@ G_M45539_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
int3 | |
;; size=6 bbWeight=0 PerfScore 0.00 | |
-; Total bytes of code 273, prolog size 13, PerfScore 112.38, instruction count 96, allocated bytes for code 273 (MethodHash=f06b4e1c) for method System.Text.RegularExpressions.CompiledRegexRunner:Regex33253_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts) | |
+; Total bytes of code 248, prolog size 11, PerfScore 100.88, instruction count 93, allocated bytes for code 248 (MethodHash=f06b4e1c) for method System.Text.RegularExpressions.CompiledRegexRunner:Regex33253_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
@@ -218,14 +209,13 @@ Unwind Info: | |
>> End offset : 0xd1ffab1e (not in unwind data) | |
Version : 1 | |
Flags : 0x00 | |
- SizeOfProlog : 0x0A | |
- CountOfUnwindCodes: 6 | |
+ SizeOfProlog : 0x08 | |
+ CountOfUnwindCodes: 5 | |
FrameRegister : none (0) | |
FrameOffset : N/A (no FrameRegister) (Value=0) | |
UnwindCodes : | |
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 | |
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) | |
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) | |
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) | |
... | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:green">-19</span> (<span style="color:green">-9.09%</span>) : 307875.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33122_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -15,16 +15,16 @@ | |
; V04 loc2 [V04,T09] ( 6, 5.50) int -> registers | |
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]> | |
;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref | |
-; V07 loc5 [V07,T01] ( 6, 22 ) int -> r14 | |
+; V07 loc5 [V07,T01] ( 6, 22 ) int -> rcx | |
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" | |
-; V09 tmp1 [V09,T00] ( 3, 24 ) int -> rcx "Span.get_Item index" | |
+; V09 tmp1 [V09,T00] ( 3, 24 ) int -> rax "Span.get_Item index" | |
;* V10 tmp2 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> | |
;* V11 tmp3 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" | |
;* V12 tmp4 [V12 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" | |
;* V13 tmp5 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
-; V15 tmp7 [V15,T06] ( 4, 7 ) int -> rsi "Inlining Arg" | |
-; V16 tmp8 [V16,T05] ( 5, 9 ) int -> r14 "Inlining Arg" | |
+; V15 tmp7 [V15,T06] ( 4, 7 ) int -> rdi "Inlining Arg" | |
+; V16 tmp8 [V16,T05] ( 5, 9 ) int -> rsi "Inlining Arg" | |
;* V17 tmp9 [V17 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" | |
; V18 tmp10 [V18,T11] ( 4, 4 ) int -> rcx single-def "Inline stloc first use temp" | |
; V19 tmp11 [V19,T08] ( 3, 6 ) ref -> r9 class-hnd single-def "impAppendStmt" <int[]> | |
@@ -39,18 +39,17 @@ | |
;* V28 tmp20 [V28 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]> | |
; V29 cse0 [V29,T12] ( 3, 1.50) ref -> rdx "CSE #01: moderate" | |
; | |
-; Lcl frame size = 32 | |
+; Lcl frame size = 40 | |
G_M30982_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
- push r14 | |
push rdi | |
push rsi | |
push rbp | |
push rbx | |
- sub rsp, 32 | |
+ sub rsp, 40 | |
mov rbx, rcx | |
; gcrRegs +[rbx] | |
- ;; size=13 bbWeight=1.00 PerfScore 5.50 | |
+ ;; size=11 bbWeight=1.00 PerfScore 4.50 | |
G_M30982_IG02: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref | |
; byrRegs +[rdx] | |
mov rsi, bword ptr [rdx] | |
@@ -75,48 +74,52 @@ G_M30982_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi | |
; gcrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
;; size=19 bbWeight=0.50 PerfScore 1.75 | |
-G_M30982_IG05: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref | |
- xor r14d, r14d | |
- ;; size=3 bbWeight=1.00 PerfScore 0.25 | |
-G_M30982_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
- cmp ebp, r14d | |
- jle SHORT G_M30982_IG08 | |
- ;; size=5 bbWeight=8 PerfScore 10.00 | |
-G_M30982_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
- mov ecx, ebp | |
- sub ecx, r14d | |
- dec ecx | |
- cmp ecx, edi | |
- jae G_M30982_IG16 | |
- cmp word ptr [rsi+2*rcx], 97 | |
- je SHORT G_M30982_IG14 | |
- ;; size=22 bbWeight=4 PerfScore 24.00 | |
-G_M30982_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+G_M30982_IG05: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
+ xor ecx, ecx | |
+ jmp SHORT G_M30982_IG07 | |
+ ;; size=4 bbWeight=1.00 PerfScore 2.25 | |
+G_M30982_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref | |
+ inc ecx | |
+ ;; size=2 bbWeight=4 PerfScore 1.00 | |
+G_M30982_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
+ cmp ebp, ecx | |
+ jle SHORT G_M30982_IG09 | |
+ ;; size=4 bbWeight=8 PerfScore 10.00 | |
+G_M30982_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz | |
+ mov eax, ebp | |
+ sub eax, ecx | |
+ dec eax | |
+ cmp eax, edi | |
+ jae SHORT G_M30982_IG16 | |
+ cmp word ptr [rsi+2*rax], 97 | |
+ je SHORT G_M30982_IG06 | |
+ ;; size=17 bbWeight=4 PerfScore 24.00 | |
+G_M30982_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
; byrRegs -[rsi] | |
- mov ecx, ebp | |
- sub ecx, r14d | |
- mov dword ptr [rbx+0x4C], ecx | |
- mov r14d, ebp | |
- mov esi, ecx | |
- cmp esi, r14d | |
- jge SHORT G_M30982_IG10 | |
- ;; size=18 bbWeight=1 PerfScore 3.25 | |
-G_M30982_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+ mov eax, ebp | |
+ sub eax, ecx | |
+ mov dword ptr [rbx+0x4C], eax | |
mov esi, ebp | |
- mov r14d, ecx | |
- ;; size=5 bbWeight=0.50 PerfScore 0.25 | |
-G_M30982_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+ mov edi, eax | |
+ cmp edi, esi | |
+ jge SHORT G_M30982_IG11 | |
+ ;; size=15 bbWeight=1 PerfScore 3.25 | |
+G_M30982_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+ mov edi, ebp | |
+ mov esi, eax | |
+ ;; size=4 bbWeight=0.50 PerfScore 0.25 | |
+G_M30982_IG11: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
cmp dword ptr [rbx+0x58], 0 | |
- jne SHORT G_M30982_IG12 | |
+ jne SHORT G_M30982_IG13 | |
;; size=6 bbWeight=1 PerfScore 4.00 | |
-G_M30982_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
+G_M30982_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref | |
mov rcx, rbx | |
; gcrRegs +[rcx] | |
call [System.Text.RegularExpressions.RegexRunner:DoubleCrawl():this] | |
; gcrRegs -[rcx] | |
; gcr arg pop 0 | |
;; size=9 bbWeight=0.50 PerfScore 1.62 | |
-G_M30982_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
+G_M30982_IG13: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
mov r9, gword ptr [rbx+0x20] | |
; gcrRegs +[r9] | |
mov ecx, dword ptr [rbx+0x58] | |
@@ -126,12 +129,12 @@ G_M30982_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr | |
jae SHORT G_M30982_IG16 | |
xor r8d, r8d | |
mov dword ptr [r9+4*rcx+0x10], r8d | |
- mov r9d, esi | |
+ mov r9d, edi | |
; gcrRegs -[r9] | |
- sub r9d, r14d | |
+ sub r9d, esi | |
mov rcx, gword ptr [rbx+0x28] | |
; gcrRegs +[rcx] | |
- mov r8d, r14d | |
+ mov r8d, esi | |
xor edx, edx | |
cmp dword ptr [rcx], ecx | |
call [<unknown method>] | |
@@ -139,24 +142,15 @@ G_M30982_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr | |
; gcr arg pop 0 | |
mov eax, 1 | |
;; size=54 bbWeight=1 PerfScore 19.75 | |
-G_M30982_IG13: ; bbWeight=1, epilog, nogc, extend | |
- add rsp, 32 | |
+G_M30982_IG14: ; bbWeight=1, epilog, nogc, extend | |
+ add rsp, 40 | |
pop rbx | |
pop rbp | |
pop rsi | |
pop rdi | |
- pop r14 | |
ret | |
- ;; size=11 bbWeight=1 PerfScore 3.75 | |
-G_M30982_IG14: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref | |
- ; gcrRegs +[rbx] | |
- ; byrRegs +[rsi] | |
- inc r14d | |
- jmp G_M30982_IG06 | |
- ;; size=8 bbWeight=4 PerfScore 9.00 | |
-G_M30982_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[rbx] | |
- ; byrRegs -[rsi] | |
+ ;; size=9 bbWeight=1 PerfScore 3.25 | |
+G_M30982_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref | |
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] | |
; gcr arg pop 0 | |
int3 | |
@@ -167,7 +161,7 @@ G_M30982_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
int3 | |
;; size=6 bbWeight=0 PerfScore 0.00 | |
-; Total bytes of code 209, prolog size 13, PerfScore 91.88, instruction count 70, allocated bytes for code 209 (MethodHash=8cf986f9) for method System.Text.RegularExpressions.CompiledRegexRunner:Regex33122_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts) | |
+; Total bytes of code 190, prolog size 11, PerfScore 84.38, instruction count 68, allocated bytes for code 190 (MethodHash=8cf986f9) for method System.Text.RegularExpressions.CompiledRegexRunner:Regex33122_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
@@ -175,14 +169,13 @@ Unwind Info: | |
>> End offset : 0xd1ffab1e (not in unwind data) | |
Version : 1 | |
Flags : 0x00 | |
- SizeOfProlog : 0x0A | |
- CountOfUnwindCodes: 6 | |
+ SizeOfProlog : 0x08 | |
+ CountOfUnwindCodes: 5 | |
FrameRegister : none (0) | |
FrameOffset : N/A (no FrameRegister) (Value=0) | |
UnwindCodes : | |
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 | |
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) | |
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) | |
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) | |
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 | |
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) | |
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+22</span> (<span style="color:red">+6.40%</span>) : 180602.dasm - System.Xml.Schema.XmlSchemaComplexType:HasParticleRef(System.Xml.Schema.XmlSchemaParticle,System.Xml.Schema.XmlSchema):ubyte (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -13,33 +13,34 @@ | |
; V02 loc0 [V02,T09] ( 5, 8.50) ref -> rdi class-hnd single-def <<unknown class>> | |
; V03 loc1 [V03,T06] ( 5, 15 ) ubyte -> rsi | |
; V04 loc2 [V04,T10] ( 4, 8.50) int -> registers | |
-; V05 loc3 [V05,T05] ( 4, 22 ) ref -> rsi class-hnd <System.Xml.Schema.XmlSchemaParticle> | |
-; V06 loc4 [V06,T00] ( 5, 80 ) ref -> rbp class-hnd <System.Xml.Schema.XmlSchemaElement> | |
+; V05 loc3 [V05,T05] ( 4, 22 ) ref -> rbp class-hnd <System.Xml.Schema.XmlSchemaParticle> | |
+; V06 loc4 [V06,T00] ( 5, 80 ) ref -> r13 class-hnd <System.Xml.Schema.XmlSchemaElement> | |
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" | |
; V08 tmp1 [V08,T08] ( 3, 12 ) int -> rbp "impSpillLclRefs" | |
-; V09 tmp2 [V09,T02] ( 3, 32 ) int -> rcx "Inline return value spill temp" | |
+; V09 tmp2 [V09,T02] ( 3, 32 ) int -> rax "Inline return value spill temp" | |
;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>> | |
; V11 tmp4 [V11,T03] ( 3, 24 ) ref -> rcx "argument with side effect" | |
; V12 tmp5 [V12,T07] ( 3, 12 ) ref -> rax "argument with side effect" | |
; V13 tmp6 [V13,T11] ( 2, 8 ) ref -> rdx "argument with side effect" | |
; V14 cse0 [V14,T12] ( 3, 6.50) long -> r14 hoist "CSE #02: aggressive" | |
-; V15 cse1 [V15,T01] ( 3, 40 ) int -> rcx "CSE #03: aggressive" | |
+; V15 cse1 [V15,T01] ( 3, 40 ) int -> rax "CSE #03: aggressive" | |
; | |
-; Lcl frame size = 40 | |
+; Lcl frame size = 32 | |
G_M19056_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
push r15 | |
push r14 | |
+ push r13 | |
push rdi | |
push rsi | |
push rbp | |
push rbx | |
- sub rsp, 40 | |
+ sub rsp, 32 | |
mov rsi, rcx | |
; gcrRegs +[rsi] | |
mov rbx, rdx | |
; gcrRegs +[rbx] | |
- ;; size=18 bbWeight=1 PerfScore 6.75 | |
+ ;; size=20 bbWeight=1 PerfScore 7.75 | |
G_M19056_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov rdx, rsi | |
; gcrRegs +[rdx] | |
@@ -66,23 +67,42 @@ G_M19056_IG03: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, | |
movzx rax, al | |
;; size=27 bbWeight=0.50 PerfScore 1.50 | |
G_M19056_IG04: ; bbWeight=0.50, epilog, nogc, extend | |
- add rsp, 40 | |
+ add rsp, 32 | |
pop rbx | |
pop rbp | |
pop rsi | |
pop rdi | |
+ pop r13 | |
pop r14 | |
pop r15 | |
ret | |
- ;; size=13 bbWeight=0.50 PerfScore 2.12 | |
-G_M19056_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref | |
+ ;; size=15 bbWeight=0.50 PerfScore 2.38 | |
+G_M19056_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz | |
; gcrRegs +[rbx rdi] | |
xor esi, esi | |
xor ebp, ebp | |
mov rcx, qword ptr [rdi] | |
mov r14, qword ptr [rcx+0x58] | |
- ;; size=11 bbWeight=0.50 PerfScore 2.25 | |
-G_M19056_IG06: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref | |
+ jmp SHORT G_M19056_IG08 | |
+ ;; size=13 bbWeight=0.50 PerfScore 3.25 | |
+G_M19056_IG06: ; bbWeight=2, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref, isz | |
+ ; gcrRegs +[rbp] | |
+ mov rcx, rbp | |
+ ; gcrRegs +[rcx] | |
+ mov rdx, rbx | |
+ ; gcrRegs +[rdx] | |
+ call [System.Xml.Schema.XmlSchemaComplexType:HasParticleRef(System.Xml.Schema.XmlSchemaParticle,System.Xml.Schema.XmlSchema):ubyte] | |
+ ; gcrRegs -[rcx rdx rbp] | |
+ ; gcr arg pop 0 | |
+ mov esi, eax | |
+ mov ebp, r15d | |
+ jmp SHORT G_M19056_IG08 | |
+ ;; size=19 bbWeight=2 PerfScore 12.00 | |
+G_M19056_IG07: ; bbWeight=8, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref | |
+ mov esi, 1 | |
+ mov ebp, r15d | |
+ ;; size=8 bbWeight=8 PerfScore 4.00 | |
+G_M19056_IG08: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref | |
mov rcx, rdi | |
; gcrRegs +[rcx] | |
call [r14]<unknown method> | |
@@ -101,7 +121,7 @@ G_M19056_IG06: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, | |
test esi, esi | |
jne G_M19056_IG15 | |
;; size=36 bbWeight=4 PerfScore 59.00 | |
-G_M19056_IG07: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz | |
+G_M19056_IG09: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz | |
lea ecx, [rbp+0x01] | |
mov r15d, ecx | |
mov rcx, rdi | |
@@ -124,97 +144,82 @@ G_M19056_IG07: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, | |
call CORINFO_HELP_CHKCASTCLASS | |
; gcrRegs -[rdx] | |
; gcr arg pop 0 | |
- mov rsi, rax | |
- ; gcrRegs +[rsi] | |
- mov rdx, rsi | |
+ mov rbp, rax | |
+ ; gcrRegs +[rbp] | |
+ mov rdx, rbp | |
; gcrRegs +[rdx] | |
mov rcx, 0xD1FFAB1E ; <unknown class> | |
call CORINFO_HELP_ISINSTANCEOFCLASS | |
; gcrRegs -[rdx] | |
; gcr arg pop 0 | |
test rax, rax | |
- jne SHORT G_M19056_IG14 | |
+ jne SHORT G_M19056_IG07 | |
;; size=71 bbWeight=2 PerfScore 32.00 | |
-G_M19056_IG08: ; bbWeight=16, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
+G_M19056_IG10: ; bbWeight=16, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs -[rax] | |
- mov rdx, rsi | |
+ mov rdx, rbp | |
; gcrRegs +[rdx] | |
mov rcx, 0xD1FFAB1E ; System.Xml.Schema.XmlSchemaElement | |
call CORINFO_HELP_ISINSTANCEOFCLASS | |
; gcrRegs -[rdx] +[rax] | |
; gcr arg pop 0 | |
- mov rbp, rax | |
- ; gcrRegs +[rbp] | |
- test rbp, rbp | |
- je SHORT G_M19056_IG13 | |
- mov rcx, gword ptr [rbp+0x88] | |
+ mov r13, rax | |
+ ; gcrRegs +[r13] | |
+ test r13, r13 | |
+ je G_M19056_IG06 | |
+ mov rcx, gword ptr [r13+0x88] | |
; gcrRegs +[rcx] | |
cmp dword ptr [rcx], ecx | |
call [System.Xml.XmlQualifiedName:get_IsEmpty():ubyte:this] | |
; gcrRegs -[rax rcx] | |
; gcr arg pop 0 | |
test eax, eax | |
- je SHORT G_M19056_IG14 | |
- mov rcx, gword ptr [rbp+0x98] | |
+ je G_M19056_IG07 | |
+ mov rcx, gword ptr [r13+0x98] | |
; gcrRegs +[rcx] | |
cmp dword ptr [rcx], ecx | |
call [System.Xml.XmlQualifiedName:get_IsEmpty():ubyte:this] | |
; gcrRegs -[rcx] | |
; gcr arg pop 0 | |
test eax, eax | |
- je SHORT G_M19056_IG14 | |
- mov ecx, dword ptr [rbp+0xD0] | |
- test ecx, ecx | |
- jne SHORT G_M19056_IG10 | |
- ;; size=74 bbWeight=16 PerfScore 396.00 | |
-G_M19056_IG09: ; bbWeight=8, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
- ; gcrRegs -[rbp] | |
+ je G_M19056_IG07 | |
+ mov eax, dword ptr [r13+0xD0] | |
+ test eax, eax | |
+ jne SHORT G_M19056_IG12 | |
+ ;; size=87 bbWeight=16 PerfScore 396.00 | |
+G_M19056_IG11: ; bbWeight=8, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref, isz | |
+ ; gcrRegs -[r13] | |
test rbx, rbx | |
- jne SHORT G_M19056_IG11 | |
+ jne SHORT G_M19056_IG13 | |
;; size=5 bbWeight=8 PerfScore 10.00 | |
-G_M19056_IG10: ; bbWeight=8, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
- jmp SHORT G_M19056_IG12 | |
+G_M19056_IG12: ; bbWeight=8, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref, isz | |
+ jmp SHORT G_M19056_IG14 | |
;; size=2 bbWeight=8 PerfScore 16.00 | |
-G_M19056_IG11: ; bbWeight=8, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref | |
- mov ecx, dword ptr [rbx+0xC8] | |
+G_M19056_IG13: ; bbWeight=8, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref | |
+ mov eax, dword ptr [rbx+0xC8] | |
;; size=6 bbWeight=8 PerfScore 16.00 | |
-G_M19056_IG12: ; bbWeight=16, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
- cmp ecx, 1 | |
- je SHORT G_M19056_IG14 | |
- ;; size=5 bbWeight=16 PerfScore 20.00 | |
-G_M19056_IG13: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref | |
- mov rcx, rsi | |
- ; gcrRegs +[rcx] | |
- mov rdx, rbx | |
- ; gcrRegs +[rdx] | |
- call [System.Xml.Schema.XmlSchemaComplexType:HasParticleRef(System.Xml.Schema.XmlSchemaParticle,System.Xml.Schema.XmlSchema):ubyte] | |
- ; gcrRegs -[rcx rdx rsi] | |
- ; gcr arg pop 0 | |
- mov esi, eax | |
- mov ebp, r15d | |
+G_M19056_IG14: ; bbWeight=16, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref | |
+ cmp eax, 1 | |
+ je G_M19056_IG07 | |
jmp G_M19056_IG06 | |
- ;; size=22 bbWeight=2 PerfScore 12.00 | |
-G_M19056_IG14: ; bbWeight=8, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref | |
- mov esi, 1 | |
- mov ebp, r15d | |
- jmp G_M19056_IG06 | |
- ;; size=13 bbWeight=8 PerfScore 20.00 | |
+ ;; size=14 bbWeight=16 PerfScore 52.00 | |
G_M19056_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[rbx rdi] | |
+ ; gcrRegs -[rbx rbp rdi] | |
mov eax, esi | |
;; size=2 bbWeight=0.50 PerfScore 0.12 | |
G_M19056_IG16: ; bbWeight=0.50, epilog, nogc, extend | |
- add rsp, 40 | |
+ add rsp, 32 | |
pop rbx | |
pop rbp | |
pop rsi | |
pop rdi | |
+ pop r13 | |
pop r14 | |
pop r15 | |
ret | |
- ;; size=13 bbWeight=0.50 PerfScore 2.12 | |
+ ;; size=15 bbWeight=0.50 PerfScore 2.38 | |
-; Total bytes of code 344, prolog size 12, PerfScore 598.88, instruction count 104, allocated bytes for code 344 (MethodHash=c2eeb58f) for method System.Xml.Schema.XmlSchemaComplexType:HasParticleRef(System.Xml.Schema.XmlSchemaParticle,System.Xml.Schema.XmlSchema):ubyte (FullOpts) | |
+; Total bytes of code 366, prolog size 14, PerfScore 617.38, instruction count 108, allocated bytes for code 366 (MethodHash=c2eeb58f) for method System.Xml.Schema.XmlSchemaComplexType:HasParticleRef(System.Xml.Schema.XmlSchemaParticle,System.Xml.Schema.XmlSchema):ubyte (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
@@ -222,15 +227,16 @@ Unwind Info: | |
>> End offset : 0xd1ffab1e (not in unwind data) | |
Version : 1 | |
Flags : 0x00 | |
- SizeOfProlog : 0x0C | |
- CountOfUnwindCodes: 7 | |
+ SizeOfProlog : 0x0E | |
+ CountOfUnwindCodes: 8 | |
FrameRegister : none (0) | |
FrameOffset : N/A (no FrameRegister) (Value=0) | |
UnwindCodes : | |
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 | |
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
- CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) | |
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) | |
+ CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 | |
+ CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
+ CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
... | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+25</span> (<span style="color:red">+7.46%</span>) : 182651.dasm - System.Xml.XmlAttributeCollection:FindNodeOffsetNS(System.Xml.XmlAttribute):int:this (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -61,16 +61,20 @@ G_M30039_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { | |
mov rsi, rdx | |
; gcrRegs +[rsi] | |
;; size=20 bbWeight=1 PerfScore 7.75 | |
-G_M30039_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M30039_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
xor edi, edi | |
- ;; size=2 bbWeight=1 PerfScore 0.25 | |
-G_M30039_IG03: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+ jmp SHORT G_M30039_IG04 | |
+ ;; size=4 bbWeight=1 PerfScore 2.25 | |
+G_M30039_IG03: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+ inc edi | |
+ ;; size=2 bbWeight=2 PerfScore 0.50 | |
+G_M30039_IG04: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
lea rdx, bword ptr [rbx+0x10] | |
; byrRegs +[rdx] | |
cmp gword ptr [rdx], 0 | |
- je SHORT G_M30039_IG06 | |
+ je SHORT G_M30039_IG07 | |
;; size=10 bbWeight=8 PerfScore 36.00 | |
-G_M30039_IG04: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0004 {rdx}, byref, isz | |
+G_M30039_IG05: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0004 {rdx}, byref, isz | |
mov rdx, gword ptr [rdx] | |
; gcrRegs +[rdx] | |
; byrRegs -[rdx] | |
@@ -79,23 +83,23 @@ G_M30039_IG04: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0004 {rd | |
; gcrRegs -[rdx] +[rax] | |
; gcr arg pop 0 | |
test rax, rax | |
- jne SHORT G_M30039_IG05 | |
+ jne SHORT G_M30039_IG06 | |
mov ecx, 1 | |
- jmp SHORT G_M30039_IG07 | |
+ jmp SHORT G_M30039_IG08 | |
;; size=30 bbWeight=2 PerfScore 13.50 | |
-G_M30039_IG05: ; bbWeight=2, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M30039_IG06: ; bbWeight=2, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov ecx, dword ptr [rax+0x10] | |
- jmp SHORT G_M30039_IG07 | |
+ jmp SHORT G_M30039_IG08 | |
;; size=5 bbWeight=2 PerfScore 8.00 | |
-G_M30039_IG06: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M30039_IG07: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rax] | |
xor ecx, ecx | |
;; size=2 bbWeight=2 PerfScore 0.50 | |
-G_M30039_IG07: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M30039_IG08: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
cmp edi, ecx | |
jge G_M30039_IG24 | |
;; size=8 bbWeight=8 PerfScore 10.00 | |
-G_M30039_IG08: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M30039_IG09: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
lea rcx, bword ptr [rbx+0x10] | |
; byrRegs +[rcx] | |
mov edx, edi | |
@@ -106,14 +110,14 @@ G_M30039_IG08: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, | |
mov rbp, rax | |
; gcrRegs +[rbp] | |
test rbp, rbp | |
- je SHORT G_M30039_IG11 | |
+ je SHORT G_M30039_IG12 | |
;; size=20 bbWeight=2 PerfScore 10.50 | |
-G_M30039_IG09: ; bbWeight=1, gcrefRegs=0069 {rax rbx rbp rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M30039_IG10: ; bbWeight=1, gcrefRegs=0069 {rax rbx rbp rsi}, byrefRegs=0000 {}, byref, isz | |
mov rcx, 0xD1FFAB1E ; System.Xml.XmlAttribute | |
cmp qword ptr [rbp], rcx | |
- je SHORT G_M30039_IG11 | |
+ je SHORT G_M30039_IG12 | |
;; size=16 bbWeight=1 PerfScore 4.25 | |
-G_M30039_IG10: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M30039_IG11: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rbp] | |
mov rdx, rax | |
; gcrRegs +[rdx] | |
@@ -123,7 +127,7 @@ G_M30039_IG10: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0 | |
mov rbp, rax | |
; gcrRegs +[rbp] | |
;; size=11 bbWeight=0.50 PerfScore 0.75 | |
-G_M30039_IG11: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M30039_IG12: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs -[rax] | |
mov rcx, gword ptr [rbp+0x10] | |
; gcrRegs +[rcx] | |
@@ -132,7 +136,7 @@ G_M30039_IG11: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 | |
mov rax, gword ptr [rsi+0x10] | |
; gcrRegs +[rax] | |
cmp ecx, dword ptr [rax+0x38] | |
- jne G_M30039_IG21 | |
+ jne SHORT G_M30039_IG03 | |
mov rcx, rbp | |
; gcrRegs +[rcx] | |
mov rax, qword ptr [rbp] | |
@@ -154,23 +158,23 @@ G_M30039_IG11: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 | |
mov rdx, rax | |
; gcrRegs +[rdx] | |
cmp r15, rdx | |
- je SHORT G_M30039_IG16 | |
- ;; size=60 bbWeight=2 PerfScore 52.50 | |
-G_M30039_IG12: ; bbWeight=1.80, gcrefRegs=806C {rdx rbx rbp rsi r15}, byrefRegs=0000 {}, byref, isz | |
+ je SHORT G_M30039_IG17 | |
+ ;; size=56 bbWeight=2 PerfScore 52.50 | |
+G_M30039_IG13: ; bbWeight=1.80, gcrefRegs=806C {rdx rbx rbp rsi r15}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rax] | |
test r15, r15 | |
- je SHORT G_M30039_IG21 | |
- ;; size=5 bbWeight=1.80 PerfScore 2.25 | |
-G_M30039_IG13: ; bbWeight=1.80, gcrefRegs=806C {rdx rbx rbp rsi r15}, byrefRegs=0000 {}, byref, isz | |
+ je G_M30039_IG03 | |
+ ;; size=9 bbWeight=1.80 PerfScore 2.25 | |
+G_M30039_IG14: ; bbWeight=1.80, gcrefRegs=806C {rdx rbx rbp rsi r15}, byrefRegs=0000 {}, byref | |
test rdx, rdx | |
- je SHORT G_M30039_IG21 | |
- ;; size=5 bbWeight=1.80 PerfScore 2.25 | |
-G_M30039_IG14: ; bbWeight=1.80, gcrefRegs=806C {rdx rbx rbp rsi r15}, byrefRegs=0000 {}, byref, isz | |
+ je G_M30039_IG03 | |
+ ;; size=9 bbWeight=1.80 PerfScore 2.25 | |
+G_M30039_IG15: ; bbWeight=1.80, gcrefRegs=806C {rdx rbx rbp rsi r15}, byrefRegs=0000 {}, byref | |
mov r8d, dword ptr [r15+0x08] | |
cmp r8d, dword ptr [rdx+0x08] | |
- jne SHORT G_M30039_IG21 | |
- ;; size=10 bbWeight=1.80 PerfScore 10.80 | |
-G_M30039_IG15: ; bbWeight=2, gcrefRegs=806C {rdx rbx rbp rsi r15}, byrefRegs=0000 {}, byref, isz | |
+ jne G_M30039_IG03 | |
+ ;; size=14 bbWeight=1.80 PerfScore 10.80 | |
+G_M30039_IG16: ; bbWeight=2, gcrefRegs=806C {rdx rbx rbp rsi r15}, byrefRegs=0000 {}, byref | |
lea rcx, bword ptr [r15+0x0C] | |
; byrRegs +[rcx] | |
add r8d, r8d | |
@@ -182,9 +186,9 @@ G_M30039_IG15: ; bbWeight=2, gcrefRegs=806C {rdx rbx rbp rsi r15}, byrefR | |
; byrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
test eax, eax | |
- je SHORT G_M30039_IG21 | |
- ;; size=21 bbWeight=2 PerfScore 10.50 | |
-G_M30039_IG16: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz | |
+ je G_M30039_IG03 | |
+ ;; size=25 bbWeight=2 PerfScore 10.50 | |
+G_M30039_IG17: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz | |
mov rcx, rbp | |
; gcrRegs +[rcx] | |
call [r14+0x18]<unknown method> | |
@@ -202,21 +206,21 @@ G_M30039_IG16: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 | |
cmp rbp, rdx | |
je SHORT G_M30039_IG22 | |
;; size=25 bbWeight=2 PerfScore 16.50 | |
-G_M30039_IG17: ; bbWeight=1.80, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M30039_IG18: ; bbWeight=1.80, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rax] | |
test rbp, rbp | |
- je SHORT G_M30039_IG21 | |
- ;; size=5 bbWeight=1.80 PerfScore 2.25 | |
-G_M30039_IG18: ; bbWeight=1.80, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref, isz | |
+ je G_M30039_IG03 | |
+ ;; size=9 bbWeight=1.80 PerfScore 2.25 | |
+G_M30039_IG19: ; bbWeight=1.80, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref | |
test rdx, rdx | |
- je SHORT G_M30039_IG21 | |
- ;; size=5 bbWeight=1.80 PerfScore 2.25 | |
-G_M30039_IG19: ; bbWeight=1.80, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref, isz | |
+ je G_M30039_IG03 | |
+ ;; size=9 bbWeight=1.80 PerfScore 2.25 | |
+G_M30039_IG20: ; bbWeight=1.80, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref | |
mov r8d, dword ptr [rbp+0x08] | |
cmp r8d, dword ptr [rdx+0x08] | |
- jne SHORT G_M30039_IG21 | |
- ;; size=10 bbWeight=1.80 PerfScore 10.80 | |
-G_M30039_IG20: ; bbWeight=2, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref, isz | |
+ jne G_M30039_IG03 | |
+ ;; size=14 bbWeight=1.80 PerfScore 10.80 | |
+G_M30039_IG21: ; bbWeight=2, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref | |
lea rcx, bword ptr [rbp+0x0C] | |
; byrRegs +[rcx] | |
add r8d, r8d | |
@@ -228,12 +232,8 @@ G_M30039_IG20: ; bbWeight=2, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs= | |
; byrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
test eax, eax | |
- jne SHORT G_M30039_IG22 | |
- ;; size=21 bbWeight=2 PerfScore 10.50 | |
-G_M30039_IG21: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
- inc edi | |
- jmp G_M30039_IG03 | |
- ;; size=7 bbWeight=2 PerfScore 4.50 | |
+ je G_M30039_IG03 | |
+ ;; size=25 bbWeight=2 PerfScore 10.50 | |
G_M30039_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rbx rsi] | |
mov eax, edi | |
@@ -264,7 +264,7 @@ G_M30039_IG25: ; bbWeight=0.50, epilog, nogc, extend | |
ret | |
;; size=15 bbWeight=0.50 PerfScore 2.38 | |
-; Total bytes of code 335, prolog size 14, PerfScore 221.62, instruction count 111, allocated bytes for code 335 (MethodHash=16958aa8) for method System.Xml.XmlAttributeCollection:FindNodeOffsetNS(System.Xml.XmlAttribute):int:this (FullOpts) | |
+; Total bytes of code 360, prolog size 14, PerfScore 219.62, instruction count 111, allocated bytes for code 360 (MethodHash=16958aa8) for method System.Xml.XmlAttributeCollection:FindNodeOffsetNS(System.Xml.XmlAttribute):int:this (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+29</span> (<span style="color:red">+9.32%</span>) : 34867.dasm - System.Xml.XmlAttributeCollection:get_ItemOf(System.String,System.String):System.Xml.XmlAttribute:this (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -60,7 +60,7 @@ G_M17160_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { | |
mov rdi, r8 | |
; gcrRegs +[rdi] | |
;; size=23 bbWeight=1 PerfScore 8.00 | |
-G_M17160_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref | |
+G_M17160_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
mov rcx, rsi | |
; gcrRegs +[rcx] | |
call [System.Xml.XmlName:GetHashCode(System.String):int] | |
@@ -68,14 +68,18 @@ G_M17160_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 | |
; gcr arg pop 0 | |
mov ebp, eax | |
xor r14d, r14d | |
- ;; size=14 bbWeight=1 PerfScore 3.75 | |
-G_M17160_IG03: ; bbWeight=8, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
+ jmp SHORT G_M17160_IG04 | |
+ ;; size=16 bbWeight=1 PerfScore 5.75 | |
+G_M17160_IG03: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref | |
+ inc r14d | |
+ ;; size=3 bbWeight=2 PerfScore 0.50 | |
+G_M17160_IG04: ; bbWeight=8, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
lea rdx, bword ptr [rbx+0x10] | |
; byrRegs +[rdx] | |
cmp gword ptr [rdx], 0 | |
- je SHORT G_M17160_IG06 | |
+ je SHORT G_M17160_IG07 | |
;; size=10 bbWeight=8 PerfScore 36.00 | |
-G_M17160_IG04: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0004 {rdx}, byref, isz | |
+G_M17160_IG05: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0004 {rdx}, byref, isz | |
mov rdx, gword ptr [rdx] | |
; gcrRegs +[rdx] | |
; byrRegs -[rdx] | |
@@ -84,23 +88,23 @@ G_M17160_IG04: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0004 | |
; gcrRegs -[rdx] +[rax] | |
; gcr arg pop 0 | |
test rax, rax | |
- jne SHORT G_M17160_IG05 | |
+ jne SHORT G_M17160_IG06 | |
mov ecx, 1 | |
- jmp SHORT G_M17160_IG07 | |
+ jmp SHORT G_M17160_IG08 | |
;; size=30 bbWeight=2 PerfScore 13.50 | |
-G_M17160_IG05: ; bbWeight=2, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
+G_M17160_IG06: ; bbWeight=2, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
mov ecx, dword ptr [rax+0x10] | |
- jmp SHORT G_M17160_IG07 | |
+ jmp SHORT G_M17160_IG08 | |
;; size=5 bbWeight=2 PerfScore 8.00 | |
-G_M17160_IG06: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref | |
+G_M17160_IG07: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rax] | |
xor ecx, ecx | |
;; size=2 bbWeight=2 PerfScore 0.50 | |
-G_M17160_IG07: ; bbWeight=8, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref | |
+G_M17160_IG08: ; bbWeight=8, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref | |
cmp r14d, ecx | |
jge G_M17160_IG24 | |
;; size=9 bbWeight=8 PerfScore 10.00 | |
-G_M17160_IG08: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
+G_M17160_IG09: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
lea rcx, bword ptr [rbx+0x10] | |
; byrRegs +[rcx] | |
mov edx, r14d | |
@@ -111,14 +115,14 @@ G_M17160_IG08: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 | |
mov r15, rax | |
; gcrRegs +[r15] | |
test r15, r15 | |
- je SHORT G_M17160_IG11 | |
+ je SHORT G_M17160_IG12 | |
;; size=21 bbWeight=2 PerfScore 10.50 | |
-G_M17160_IG09: ; bbWeight=1, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
+G_M17160_IG10: ; bbWeight=1, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
mov rcx, 0xD1FFAB1E ; System.Xml.XmlAttribute | |
cmp qword ptr [r15], rcx | |
- je SHORT G_M17160_IG11 | |
+ je SHORT G_M17160_IG12 | |
;; size=15 bbWeight=1 PerfScore 4.25 | |
-G_M17160_IG10: ; bbWeight=0.50, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref | |
+G_M17160_IG11: ; bbWeight=0.50, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref | |
; gcrRegs -[r15] | |
mov rdx, rax | |
; gcrRegs +[rdx] | |
@@ -128,12 +132,12 @@ G_M17160_IG10: ; bbWeight=0.50, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRe | |
mov r15, rax | |
; gcrRegs +[r15] | |
;; size=11 bbWeight=0.50 PerfScore 0.75 | |
-G_M17160_IG11: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
+G_M17160_IG12: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs -[rax] | |
mov rcx, gword ptr [r15+0x10] | |
; gcrRegs +[rcx] | |
cmp ebp, dword ptr [rcx+0x38] | |
- jne SHORT G_M17160_IG21 | |
+ jne SHORT G_M17160_IG03 | |
mov rcx, r15 | |
mov rax, qword ptr [r15] | |
mov r13, qword ptr [rax+0x68] | |
@@ -143,23 +147,23 @@ G_M17160_IG11: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs= | |
mov rdx, rax | |
; gcrRegs +[rdx] | |
cmp rsi, rdx | |
- je SHORT G_M17160_IG16 | |
+ je SHORT G_M17160_IG17 | |
;; size=31 bbWeight=2 PerfScore 29.50 | |
-G_M17160_IG12: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
+G_M17160_IG13: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rax] | |
test rsi, rsi | |
- je SHORT G_M17160_IG21 | |
- ;; size=5 bbWeight=1.80 PerfScore 2.25 | |
-G_M17160_IG13: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
+ je G_M17160_IG03 | |
+ ;; size=9 bbWeight=1.80 PerfScore 2.25 | |
+G_M17160_IG14: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref | |
test rdx, rdx | |
- je SHORT G_M17160_IG21 | |
- ;; size=5 bbWeight=1.80 PerfScore 2.25 | |
-G_M17160_IG14: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
+ je G_M17160_IG03 | |
+ ;; size=9 bbWeight=1.80 PerfScore 2.25 | |
+G_M17160_IG15: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref | |
mov r8d, dword ptr [rsi+0x08] | |
cmp r8d, dword ptr [rdx+0x08] | |
- jne SHORT G_M17160_IG21 | |
- ;; size=10 bbWeight=1.80 PerfScore 10.80 | |
-G_M17160_IG15: ; bbWeight=2, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
+ jne G_M17160_IG03 | |
+ ;; size=14 bbWeight=1.80 PerfScore 10.80 | |
+G_M17160_IG16: ; bbWeight=2, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref | |
lea rcx, bword ptr [rsi+0x0C] | |
; byrRegs +[rcx] | |
add r8d, r8d | |
@@ -170,9 +174,9 @@ G_M17160_IG15: ; bbWeight=2, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefR | |
; byrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
test eax, eax | |
- je SHORT G_M17160_IG21 | |
- ;; size=21 bbWeight=2 PerfScore 10.50 | |
-G_M17160_IG16: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
+ je G_M17160_IG03 | |
+ ;; size=25 bbWeight=2 PerfScore 10.50 | |
+G_M17160_IG17: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
mov rcx, r15 | |
; gcrRegs +[rcx] | |
call [r13+0x18]<unknown method> | |
@@ -183,21 +187,21 @@ G_M17160_IG16: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs= | |
cmp rdi, rdx | |
je SHORT G_M17160_IG22 | |
;; size=15 bbWeight=2 PerfScore 9.50 | |
-G_M17160_IG17: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
+G_M17160_IG18: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rax] | |
test rdi, rdi | |
- je SHORT G_M17160_IG21 | |
- ;; size=5 bbWeight=1.80 PerfScore 2.25 | |
-G_M17160_IG18: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
+ je G_M17160_IG03 | |
+ ;; size=9 bbWeight=1.80 PerfScore 2.25 | |
+G_M17160_IG19: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref | |
test rdx, rdx | |
- je SHORT G_M17160_IG21 | |
- ;; size=5 bbWeight=1.80 PerfScore 2.25 | |
-G_M17160_IG19: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
+ je G_M17160_IG03 | |
+ ;; size=9 bbWeight=1.80 PerfScore 2.25 | |
+G_M17160_IG20: ; bbWeight=1.80, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref | |
mov r8d, dword ptr [rdi+0x08] | |
cmp r8d, dword ptr [rdx+0x08] | |
- jne SHORT G_M17160_IG21 | |
- ;; size=10 bbWeight=1.80 PerfScore 10.80 | |
-G_M17160_IG20: ; bbWeight=2, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz | |
+ jne G_M17160_IG03 | |
+ ;; size=14 bbWeight=1.80 PerfScore 10.80 | |
+G_M17160_IG21: ; bbWeight=2, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=0000 {}, byref | |
lea rcx, bword ptr [rdi+0x0C] | |
; byrRegs +[rcx] | |
add r8d, r8d | |
@@ -208,15 +212,10 @@ G_M17160_IG20: ; bbWeight=2, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefR | |
; byrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
test eax, eax | |
- jne SHORT G_M17160_IG22 | |
- ;; size=21 bbWeight=2 PerfScore 10.50 | |
-G_M17160_IG21: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[r15] | |
- inc r14d | |
- jmp G_M17160_IG03 | |
- ;; size=8 bbWeight=2 PerfScore 4.50 | |
+ je G_M17160_IG03 | |
+ ;; size=25 bbWeight=2 PerfScore 10.50 | |
G_M17160_IG22: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[rbx rsi rdi] +[r15] | |
+ ; gcrRegs -[rbx rsi rdi] | |
mov rax, r15 | |
; gcrRegs +[rax] | |
;; size=3 bbWeight=0.50 PerfScore 0.12 | |
@@ -248,7 +247,7 @@ G_M17160_IG25: ; bbWeight=0.50, epilog, nogc, extend | |
ret | |
;; size=15 bbWeight=0.50 PerfScore 2.38 | |
-; Total bytes of code 311, prolog size 14, PerfScore 195.37, instruction count 105, allocated bytes for code 311 (MethodHash=c9cabcf7) for method System.Xml.XmlAttributeCollection:get_ItemOf(System.String,System.String):System.Xml.XmlAttribute:this (FullOpts) | |
+; Total bytes of code 340, prolog size 14, PerfScore 193.37, instruction count 105, allocated bytes for code 340 (MethodHash=c9cabcf7) for method System.Xml.XmlAttributeCollection:get_ItemOf(System.String,System.String):System.Xml.XmlAttribute:this (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
</div></details> | |
<details> | |
<summary>realworld.run.windows.x64.checked.mch</summary> | |
<div style="margin-left:1em"> | |
<details> | |
<summary><span style="color:green">-15</span> (<span style="color:green">-6.52%</span>) : 7280.dasm - FSharp.Compiler.TypedTree+NonLocalEntityRef:TryDerefEntityPath(FSharp.Compiler.TypedTree+CcuThunk,System.String[],int,FSharp.Compiler.TypedTree+Entity):Microsoft.FSharp.Core.FSharpValueOption`1[FSharp.Compiler.TypedTree+Entity] (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -44,15 +44,22 @@ G_M25834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
mov rsi, gword ptr [rsp+0x90] | |
; gcrRegs +[rsi] | |
;; size=36 bbWeight=1 PerfScore 9.25 | |
-G_M25834_IG02: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0080 {rdi}, byref | |
+G_M25834_IG02: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0080 {rdi}, byref, isz | |
mov r14d, dword ptr [rbx+0x08] | |
mov r15d, r9d | |
- ;; size=7 bbWeight=1 PerfScore 2.25 | |
-G_M25834_IG03: ; bbWeight=8, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0080 {rdi}, byref | |
+ jmp SHORT G_M25834_IG04 | |
+ ;; size=9 bbWeight=1 PerfScore 4.25 | |
+G_M25834_IG03: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0080 {rdi}, byref | |
+ ; gcrRegs -[rsi] | |
+ mov rsi, gword ptr [rsp+0x30] | |
+ ; gcrRegs +[rsi] | |
+ inc r15d | |
+ ;; size=8 bbWeight=4 PerfScore 5.00 | |
+G_M25834_IG04: ; bbWeight=8, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0080 {rdi}, byref, isz | |
cmp r14d, r15d | |
- jle G_M25834_IG08 | |
- ;; size=9 bbWeight=8 PerfScore 10.00 | |
-G_M25834_IG04: ; bbWeight=4, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0080 {rdi}, byref, isz | |
+ jle SHORT G_M25834_IG08 | |
+ ;; size=5 bbWeight=8 PerfScore 10.00 | |
+G_M25834_IG05: ; bbWeight=4, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0080 {rdi}, byref, isz | |
xor rcx, rcx | |
; gcrRegs +[rcx] | |
mov gword ptr [rsp+0x30], rcx | |
@@ -68,7 +75,7 @@ G_M25834_IG04: ; bbWeight=4, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0080 | |
; gcrRegs -[rcx] | |
; gcr arg pop 0 | |
cmp r15d, r14d | |
- jae G_M25834_IG10 | |
+ jae SHORT G_M25834_IG10 | |
mov r8, gword ptr [rbx+8*r15+0x10] | |
; gcrRegs +[r8] | |
mov rdx, gword ptr [rax+0x10] | |
@@ -82,9 +89,9 @@ G_M25834_IG04: ; bbWeight=4, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0080 | |
; gcrRegs -[rax rdx r8] | |
; gcr arg pop 0 | |
test eax, eax | |
- jne SHORT G_M25834_IG07 | |
- ;; size=82 bbWeight=4 PerfScore 115.00 | |
-G_M25834_IG05: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0080 {rdi}, byref | |
+ jne SHORT G_M25834_IG03 | |
+ ;; size=78 bbWeight=4 PerfScore 115.00 | |
+G_M25834_IG06: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0080 {rdi}, byref | |
mov r9d, r15d | |
mov gword ptr [rsp+0x20], rsi | |
; gcr arg write | |
@@ -101,7 +108,7 @@ G_M25834_IG05: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0 | |
mov rax, rdi | |
; byrRegs +[rax] | |
;; size=26 bbWeight=0.50 PerfScore 2.62 | |
-G_M25834_IG06: ; bbWeight=0.50, epilog, nogc, extend | |
+G_M25834_IG07: ; bbWeight=0.50, epilog, nogc, extend | |
add rsp, 56 | |
pop rbx | |
pop rbp | |
@@ -111,17 +118,9 @@ G_M25834_IG06: ; bbWeight=0.50, epilog, nogc, extend | |
pop r15 | |
ret | |
;; size=13 bbWeight=0.50 PerfScore 2.12 | |
-G_M25834_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0028 {rbx rbp}, byrefRegs=0080 {rdi}, gcvars, byref | |
- ; gcrRegs +[rbx rbp] | |
- ; byrRegs -[rax] | |
- mov rsi, gword ptr [rsp+0x30] | |
+G_M25834_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, gcvars, byref | |
; gcrRegs +[rsi] | |
- lea ecx, [r15+0x01] | |
- mov r15d, ecx | |
- jmp G_M25834_IG03 | |
- ;; size=17 bbWeight=4 PerfScore 15.00 | |
-G_M25834_IG08: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref | |
- ; gcrRegs -[rbx rbp] | |
+ ; byrRegs -[rax] | |
mov rcx, rdi | |
; byrRegs +[rcx] | |
mov rdx, rsi | |
@@ -150,7 +149,7 @@ G_M25834_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { | |
int3 | |
;; size=6 bbWeight=0 PerfScore 0.00 | |
-; Total bytes of code 230, prolog size 19, PerfScore 159.75, instruction count 70, allocated bytes for code 230 (MethodHash=b9359b15) for method FSharp.Compiler.TypedTree+NonLocalEntityRef:TryDerefEntityPath(FSharp.Compiler.TypedTree+CcuThunk,System.String[],int,FSharp.Compiler.TypedTree+Entity):Microsoft.FSharp.Core.FSharpValueOption`1[FSharp.Compiler.TypedTree+Entity] (FullOpts) | |
+; Total bytes of code 215, prolog size 19, PerfScore 151.75, instruction count 69, allocated bytes for code 215 (MethodHash=b9359b15) for method FSharp.Compiler.TypedTree+NonLocalEntityRef:TryDerefEntityPath(FSharp.Compiler.TypedTree+CcuThunk,System.String[],int,FSharp.Compiler.TypedTree+Entity):Microsoft.FSharp.Core.FSharpValueOption`1[FSharp.Compiler.TypedTree+Entity] (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:green">-2</span> (<span style="color:green">-6.45%</span>) : 31947.dasm - System.Management.Automation.SessionStateInternal:set_CurrentDrive(System.Management.Automation.PSDriveInfo):this (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -14,24 +14,31 @@ | |
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Management.Automation.ExecutionContext> | |
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Management.Automation.ExecutionContext> | |
; V05 tmp3 [V05,T02] ( 2, 16 ) ref -> rcx single-def "arg temp" | |
-; V06 cse0 [V06,T01] ( 3, 20 ) ref -> rbx "CSE #02: aggressive" | |
+; V06 cse0 [V06,T01] ( 3, 20 ) ref -> rax "CSE #02: aggressive" | |
; | |
; Lcl frame size = 0 | |
G_M40010_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
- push rbx | |
- ;; size=1 bbWeight=1 PerfScore 1.00 | |
-G_M40010_IG02: ; bbWeight=8, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
+ ;; size=0 bbWeight=1 PerfScore 0.00 | |
+G_M40010_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs +[rcx rdx] | |
+ jmp SHORT G_M40010_IG04 | |
+ ;; size=2 bbWeight=1 PerfScore 2.00 | |
+G_M40010_IG03: ; bbWeight=4, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref | |
+ ; gcrRegs -[rcx] +[rax] | |
+ mov rcx, rax | |
+ ; gcrRegs +[rcx] | |
+ ;; size=3 bbWeight=4 PerfScore 1.00 | |
+G_M40010_IG04: ; bbWeight=8, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
+ ; gcrRegs -[rax] | |
mov rax, gword ptr [rcx+0x10] | |
; gcrRegs +[rax] | |
- mov rbx, gword ptr [rax+0x70] | |
- ; gcrRegs +[rbx] | |
- cmp rcx, rbx | |
- jne SHORT G_M40010_IG05 | |
+ mov rax, gword ptr [rax+0x70] | |
+ cmp rcx, rax | |
+ jne SHORT G_M40010_IG03 | |
;; size=13 bbWeight=8 PerfScore 42.00 | |
-G_M40010_IG03: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[rax rbx] | |
+G_M40010_IG05: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref | |
+ ; gcrRegs -[rax] | |
lea rcx, bword ptr [rcx+0x60] | |
; gcrRegs -[rcx] | |
; byrRegs +[rcx] | |
@@ -40,18 +47,11 @@ G_M40010_IG03: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, | |
; byrRegs -[rcx] | |
nop | |
;; size=10 bbWeight=1 PerfScore 1.75 | |
-G_M40010_IG04: ; bbWeight=1, epilog, nogc, extend | |
- pop rbx | |
+G_M40010_IG06: ; bbWeight=1, epilog, nogc, extend | |
ret | |
- ;; size=2 bbWeight=1 PerfScore 1.50 | |
-G_M40010_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz | |
- ; gcrRegs +[rdx rbx] | |
- mov rcx, rbx | |
- ; gcrRegs +[rcx] | |
- jmp SHORT G_M40010_IG02 | |
- ;; size=5 bbWeight=4 PerfScore 9.00 | |
+ ;; size=1 bbWeight=1 PerfScore 1.00 | |
-; Total bytes of code 31, prolog size 1, PerfScore 55.25, instruction count 12, allocated bytes for code 31 (MethodHash=df0663b5) for method System.Management.Automation.SessionStateInternal:set_CurrentDrive(System.Management.Automation.PSDriveInfo):this (FullOpts) | |
+; Total bytes of code 29, prolog size 0, PerfScore 47.75, instruction count 10, allocated bytes for code 29 (MethodHash=df0663b5) for method System.Management.Automation.SessionStateInternal:set_CurrentDrive(System.Management.Automation.PSDriveInfo):this (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
@@ -59,9 +59,8 @@ Unwind Info: | |
>> End offset : 0xd1ffab1e (not in unwind data) | |
Version : 1 | |
Flags : 0x00 | |
- SizeOfProlog : 0x01 | |
- CountOfUnwindCodes: 1 | |
+ SizeOfProlog : 0x00 | |
+ CountOfUnwindCodes: 0 | |
FrameRegister : none (0) | |
FrameOffset : N/A (no FrameRegister) (Value=0) | |
UnwindCodes : | |
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:green">-2</span> (<span style="color:green">-5.56%</span>) : 25440.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ItemRefUnchecked(int):byref:this (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -13,45 +13,47 @@ | |
; V03 tmp1 [V03,T06] ( 2, 16 ) int -> rdx "arg temp" | |
; V04 tmp2 [V04,T04] ( 2, 16 ) ref -> rcx single-def "arg temp" | |
; V05 tmp3 [V05,T05] ( 2, 16 ) ref -> rcx single-def "arg temp" | |
-; V06 cse0 [V06,T01] ( 4, 28 ) int -> r10 "CSE #02: aggressive" | |
+; V06 cse0 [V06,T01] ( 4, 28 ) int -> rax "CSE #02: aggressive" | |
; V07 cse1 [V07,T03] ( 3, 20 ) ref -> r8 "CSE #01: aggressive" | |
; | |
; Lcl frame size = 0 | |
G_M15847_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
;; size=0 bbWeight=1 PerfScore 0.00 | |
-G_M15847_IG02: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
+G_M15847_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs +[rcx] | |
+ jmp SHORT G_M15847_IG04 | |
+ ;; size=2 bbWeight=1 PerfScore 2.00 | |
+G_M15847_IG03: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref | |
+ sub edx, eax | |
+ dec edx | |
+ mov rcx, gword ptr [rcx+0x10] | |
+ ;; size=8 bbWeight=4 PerfScore 10.00 | |
+G_M15847_IG04: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
mov r8, gword ptr [rcx+0x08] | |
; gcrRegs +[r8] | |
- mov r10d, dword ptr [r8+0x18] | |
- cmp edx, r10d | |
- jl SHORT G_M15847_IG06 | |
- jg SHORT G_M15847_IG05 | |
- ;; size=15 bbWeight=8 PerfScore 50.00 | |
-G_M15847_IG03: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref | |
+ mov eax, dword ptr [r8+0x18] | |
+ cmp edx, eax | |
+ jl SHORT G_M15847_IG07 | |
+ jg SHORT G_M15847_IG03 | |
+ ;; size=14 bbWeight=8 PerfScore 50.00 | |
+G_M15847_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref | |
; gcrRegs -[r8] | |
lea rax, bword ptr [rcx+0x20] | |
; byrRegs +[rax] | |
;; size=4 bbWeight=1 PerfScore 0.50 | |
-G_M15847_IG04: ; bbWeight=1, epilog, nogc, extend | |
+G_M15847_IG06: ; bbWeight=1, epilog, nogc, extend | |
ret | |
;; size=1 bbWeight=1 PerfScore 1.00 | |
-G_M15847_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz | |
- ; byrRegs -[rax] | |
- sub edx, r10d | |
- dec edx | |
- mov rcx, gword ptr [rcx+0x10] | |
- jmp SHORT G_M15847_IG02 | |
- ;; size=11 bbWeight=4 PerfScore 18.00 | |
-G_M15847_IG06: ; bbWeight=4, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz | |
+G_M15847_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, gcvars, byref, isz | |
; gcrRegs -[rcx] +[r8] | |
+ ; byrRegs -[rax] | |
mov rcx, r8 | |
; gcrRegs +[rcx] | |
- jmp SHORT G_M15847_IG02 | |
+ jmp SHORT G_M15847_IG04 | |
;; size=5 bbWeight=4 PerfScore 9.00 | |
-; Total bytes of code 36, prolog size 0, PerfScore 78.50, instruction count 13, allocated bytes for code 36 (MethodHash=df1ac218) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ItemRefUnchecked(int):byref:this (FullOpts) | |
+; Total bytes of code 34, prolog size 0, PerfScore 72.50, instruction count 13, allocated bytes for code 34 (MethodHash=df1ac218) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ItemRefUnchecked(int):byref:this (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+13</span> (<span style="color:red">+4.39%</span>) : 2039.dasm - System.Xml.XmlAttributeCollection:get_ItemOf(System.String):System.Xml.XmlAttribute:this (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -44,7 +44,7 @@ G_M30778_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { | |
mov rsi, rdx | |
; gcrRegs +[rsi] | |
;; size=22 bbWeight=1 PerfScore 8.75 | |
-G_M30778_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M30778_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov rcx, rsi | |
; gcrRegs +[rcx] | |
call [System.Xml.XmlName:GetHashCode(System.String):int] | |
@@ -52,14 +52,18 @@ G_M30778_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, | |
; gcr arg pop 0 | |
mov edi, eax | |
xor ebp, ebp | |
- ;; size=13 bbWeight=1 PerfScore 3.75 | |
-G_M30778_IG03: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+ jmp SHORT G_M30778_IG04 | |
+ ;; size=15 bbWeight=1 PerfScore 5.75 | |
+G_M30778_IG03: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+ inc ebp | |
+ ;; size=2 bbWeight=2 PerfScore 0.50 | |
+G_M30778_IG04: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
lea rdx, bword ptr [rbx+0x10] | |
; byrRegs +[rdx] | |
cmp gword ptr [rdx], 0 | |
- je SHORT G_M30778_IG06 | |
+ je SHORT G_M30778_IG07 | |
;; size=10 bbWeight=8 PerfScore 36.00 | |
-G_M30778_IG04: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0004 {rdx}, byref, isz | |
+G_M30778_IG05: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0004 {rdx}, byref, isz | |
mov rdx, gword ptr [rdx] | |
; gcrRegs +[rdx] | |
; byrRegs -[rdx] | |
@@ -68,23 +72,23 @@ G_M30778_IG04: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0004 {rd | |
; gcrRegs -[rdx] +[rax] | |
; gcr arg pop 0 | |
test rax, rax | |
- jne SHORT G_M30778_IG05 | |
+ jne SHORT G_M30778_IG06 | |
mov ecx, 1 | |
- jmp SHORT G_M30778_IG07 | |
+ jmp SHORT G_M30778_IG08 | |
;; size=30 bbWeight=2 PerfScore 13.50 | |
-G_M30778_IG05: ; bbWeight=2, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M30778_IG06: ; bbWeight=2, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov ecx, dword ptr [rax+0x10] | |
- jmp SHORT G_M30778_IG07 | |
+ jmp SHORT G_M30778_IG08 | |
;; size=5 bbWeight=2 PerfScore 8.00 | |
-G_M30778_IG06: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M30778_IG07: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rax] | |
xor ecx, ecx | |
;; size=2 bbWeight=2 PerfScore 0.50 | |
-G_M30778_IG07: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M30778_IG08: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
cmp ebp, ecx | |
jge G_M30778_IG15 | |
;; size=8 bbWeight=8 PerfScore 10.00 | |
-G_M30778_IG08: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M30778_IG09: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
lea rcx, bword ptr [rbx+0x10] | |
; byrRegs +[rcx] | |
mov edx, ebp | |
@@ -95,14 +99,14 @@ G_M30778_IG08: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, | |
mov r14, rax | |
; gcrRegs +[r14] | |
test r14, r14 | |
- je SHORT G_M30778_IG11 | |
+ je SHORT G_M30778_IG12 | |
;; size=20 bbWeight=2 PerfScore 10.50 | |
-G_M30778_IG09: ; bbWeight=1, gcrefRegs=4049 {rax rbx rsi r14}, byrefRegs=0000 {}, byref, isz | |
+G_M30778_IG10: ; bbWeight=1, gcrefRegs=4049 {rax rbx rsi r14}, byrefRegs=0000 {}, byref, isz | |
mov rcx, 0xD1FFAB1E ; System.Xml.XmlAttribute | |
cmp qword ptr [r14], rcx | |
- je SHORT G_M30778_IG11 | |
+ je SHORT G_M30778_IG12 | |
;; size=15 bbWeight=1 PerfScore 4.25 | |
-G_M30778_IG10: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M30778_IG11: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref | |
; gcrRegs -[r14] | |
mov rdx, rax | |
; gcrRegs +[rdx] | |
@@ -112,12 +116,12 @@ G_M30778_IG10: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0 | |
mov r14, rax | |
; gcrRegs +[r14] | |
;; size=11 bbWeight=0.50 PerfScore 0.75 | |
-G_M30778_IG11: ; bbWeight=2, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz | |
+G_M30778_IG12: ; bbWeight=2, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs -[rax] | |
mov rcx, gword ptr [r14+0x10] | |
; gcrRegs +[rcx] | |
cmp edi, dword ptr [rcx+0x38] | |
- jne SHORT G_M30778_IG12 | |
+ jne SHORT G_M30778_IG03 | |
mov rcx, r14 | |
mov rax, qword ptr [r14] | |
mov rax, qword ptr [rax+0x48] | |
@@ -129,13 +133,13 @@ G_M30778_IG11: ; bbWeight=2, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 | |
cmp rsi, r15 | |
je SHORT G_M30778_IG13 | |
test rsi, rsi | |
- je SHORT G_M30778_IG12 | |
+ je G_M30778_IG03 | |
test r15, r15 | |
- je SHORT G_M30778_IG12 | |
+ je G_M30778_IG03 | |
mov r13d, dword ptr [rsi+0x08] | |
mov r12d, dword ptr [r15+0x08] | |
cmp r13d, r12d | |
- jne SHORT G_M30778_IG12 | |
+ jne G_M30778_IG03 | |
mov ecx, 1 | |
call [<unknown method>] | |
; gcrRegs -[rax] | |
@@ -159,15 +163,10 @@ G_M30778_IG11: ; bbWeight=2, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 | |
; byrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
test eax, eax | |
- jne SHORT G_M30778_IG13 | |
- ;; size=114 bbWeight=2 PerfScore 78.50 | |
-G_M30778_IG12: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[r14] | |
- inc ebp | |
- jmp G_M30778_IG03 | |
- ;; size=7 bbWeight=2 PerfScore 4.50 | |
+ je G_M30778_IG03 | |
+ ;; size=130 bbWeight=2 PerfScore 78.50 | |
G_M30778_IG13: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[rbx rsi] +[r14] | |
+ ; gcrRegs -[rbx rsi] | |
mov rax, r14 | |
; gcrRegs +[rax] | |
;; size=3 bbWeight=2 PerfScore 0.50 | |
@@ -201,7 +200,7 @@ G_M30778_IG16: ; bbWeight=0.50, epilog, nogc, extend | |
ret | |
;; size=17 bbWeight=0.50 PerfScore 2.62 | |
-; Total bytes of code 296, prolog size 16, PerfScore 192.75, instruction count 99, allocated bytes for code 296 (MethodHash=52c787c5) for method System.Xml.XmlAttributeCollection:get_ItemOf(System.String):System.Xml.XmlAttribute:this (FullOpts) | |
+; Total bytes of code 309, prolog size 16, PerfScore 190.75, instruction count 99, allocated bytes for code 309 (MethodHash=52c787c5) for method System.Xml.XmlAttributeCollection:get_ItemOf(System.String):System.Xml.XmlAttribute:this (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+17</span> (<span style="color:red">+4.86%</span>) : 32131.dasm - System.Text.StringBuilder:AppendCore(System.Text.StringBuilder,int,int):System.Text.StringBuilder:this (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -23,9 +23,9 @@ | |
; V12 tmp6 [V12,T11] ( 3, 6 ) int -> r14 "Inline return value spill temp" | |
; V13 tmp7 [V13,T06] ( 3, 12 ) int -> r14 "Inlining Arg" | |
; V14 tmp8 [V14,T03] ( 4, 16 ) ref -> r8 class-hnd "Inlining Arg" <ushort[]> | |
-; V15 tmp9 [V15,T04] ( 4, 16 ) int -> rdx "Inlining Arg" | |
-; V16 tmp10 [V16,T09] ( 3, 6 ) byref -> r8 "field V07._reference (fldOffset=0x0)" P-INDEP | |
-; V17 tmp11 [V17,T12] ( 3, 6 ) int -> rdx "field V07._length (fldOffset=0x8)" P-INDEP | |
+; V15 tmp9 [V15,T04] ( 4, 16 ) int -> r15 "Inlining Arg" | |
+; V16 tmp10 [V16,T09] ( 3, 6 ) byref -> r13 "field V07._reference (fldOffset=0x0)" P-INDEP | |
+; V17 tmp11 [V17,T12] ( 3, 6 ) int -> rax "field V07._length (fldOffset=0x8)" P-INDEP | |
; V18 tmp12 [V18 ] ( 3, 12 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[ushort]> | |
; V19 tmp13 [V19,T15] ( 2, 0 ) ref -> rsi single-def "argument with side effect" | |
; V20 tmp14 [V20,T16] ( 2, 0 ) ref -> r8 single-def "argument with side effect" | |
@@ -33,7 +33,9 @@ | |
; Lcl frame size = 48 | |
G_M22526_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
+ push r15 | |
push r14 | |
+ push r13 | |
push rdi | |
push rsi | |
push rbp | |
@@ -47,38 +49,57 @@ G_M22526_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
; gcrRegs +[rbp] | |
mov edi, r8d | |
mov esi, r9d | |
- ;; size=29 bbWeight=1 PerfScore 7.50 | |
+ ;; size=33 bbWeight=1 PerfScore 9.50 | |
G_M22526_IG02: ; bbWeight=1, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref | |
cmp rbp, rbx | |
je G_M22526_IG12 | |
;; size=9 bbWeight=1 PerfScore 1.25 | |
-G_M22526_IG03: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref | |
+G_M22526_IG03: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz | |
mov ecx, dword ptr [rbx+0x1C] | |
add ecx, dword ptr [rbx+0x18] | |
add ecx, esi | |
cmp ecx, dword ptr [rbx+0x20] | |
- ja G_M22526_IG16 | |
- ;; size=17 bbWeight=0.50 PerfScore 4.62 | |
-G_M22526_IG04: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref | |
+ jbe SHORT G_M22526_IG05 | |
+ jmp G_M22526_IG16 | |
+ ;; size=18 bbWeight=0.50 PerfScore 5.62 | |
+G_M22526_IG04: ; bbWeight=2, gcrefRegs=0028 {rbx rbp}, byrefRegs=2000 {r13}, byref | |
+ ; byrRegs +[r13] | |
+ mov bword ptr [rsp+0x20], r13 | |
+ mov dword ptr [rsp+0x28], eax | |
+ lea r8, [rsp+0x20] | |
+ mov edx, edi | |
+ mov rcx, rbp | |
+ ; gcrRegs +[rcx] | |
+ mov r9d, r14d | |
+ cmp dword ptr [rcx], ecx | |
+ call [<unknown method>] | |
+ ; gcrRegs -[rcx] | |
+ ; byrRegs -[r13] | |
+ ; gcr arg pop 0 | |
+ add dword ptr [rbx+0x18], r14d | |
+ add edi, r14d | |
+ sub esi, r14d | |
+ ;; size=40 bbWeight=2 PerfScore 25.50 | |
+G_M22526_IG05: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref | |
test esi, esi | |
jle G_M22526_IG13 | |
;; size=8 bbWeight=4 PerfScore 5.00 | |
-G_M22526_IG05: ; bbWeight=2, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz | |
+G_M22526_IG06: ; bbWeight=2, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz | |
mov rcx, gword ptr [rbx+0x08] | |
; gcrRegs +[rcx] | |
mov r14d, dword ptr [rcx+0x08] | |
sub r14d, dword ptr [rbx+0x18] | |
cmp r14d, esi | |
- jg SHORT G_M22526_IG06 | |
- jmp SHORT G_M22526_IG07 | |
+ jg SHORT G_M22526_IG07 | |
+ jmp SHORT G_M22526_IG08 | |
;; size=19 bbWeight=2 PerfScore 20.50 | |
-G_M22526_IG06: ; bbWeight=2, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref | |
+G_M22526_IG07: ; bbWeight=2, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rcx] | |
mov r14d, esi | |
;; size=3 bbWeight=2 PerfScore 0.50 | |
-G_M22526_IG07: ; bbWeight=2, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz | |
+G_M22526_IG08: ; bbWeight=2, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz | |
test r14d, r14d | |
- jne SHORT G_M22526_IG09 | |
+ jne SHORT G_M22526_IG10 | |
mov rcx, rbx | |
; gcrRegs +[rcx] | |
mov edx, esi | |
@@ -90,59 +111,44 @@ G_M22526_IG07: ; bbWeight=2, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, | |
mov r14d, dword ptr [r8+0x08] | |
sub r14d, dword ptr [rbx+0x18] | |
cmp r14d, esi | |
- jg SHORT G_M22526_IG08 | |
- jmp SHORT G_M22526_IG09 | |
+ jg SHORT G_M22526_IG09 | |
+ jmp SHORT G_M22526_IG10 | |
;; size=35 bbWeight=2 PerfScore 30.00 | |
-G_M22526_IG08: ; bbWeight=2, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref | |
+G_M22526_IG09: ; bbWeight=2, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref | |
; gcrRegs -[r8] | |
mov r14d, esi | |
;; size=3 bbWeight=2 PerfScore 0.50 | |
-G_M22526_IG09: ; bbWeight=2, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz | |
+G_M22526_IG10: ; bbWeight=2, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz | |
mov r8, gword ptr [rbx+0x08] | |
; gcrRegs +[r8] | |
- mov edx, dword ptr [rbx+0x18] | |
+ mov r15d, dword ptr [rbx+0x18] | |
test r8, r8 | |
- je SHORT G_M22526_IG10 | |
- mov ecx, edx | |
- mov r9d, r14d | |
- add rcx, r9 | |
- mov r9d, dword ptr [r8+0x08] | |
- cmp rcx, r9 | |
+ je SHORT G_M22526_IG11 | |
+ mov edx, r15d | |
+ mov ecx, r14d | |
+ add rdx, rcx | |
+ mov ecx, dword ptr [r8+0x08] | |
+ cmp rdx, rcx | |
ja SHORT G_M22526_IG15 | |
- lea r8, bword ptr [r8+2*rdx+0x10] | |
- ; gcrRegs -[r8] | |
- ; byrRegs +[r8] | |
- mov edx, r14d | |
- jmp SHORT G_M22526_IG11 | |
- ;; size=39 bbWeight=2 PerfScore 25.00 | |
-G_M22526_IG10: ; bbWeight=2, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz | |
- ; byrRegs -[r8] | |
- or edx, r14d | |
- jne SHORT G_M22526_IG15 | |
- xor r8, r8 | |
- ; byrRegs +[r8] | |
- xor edx, edx | |
- ;; size=10 bbWeight=2 PerfScore 3.50 | |
-G_M22526_IG11: ; bbWeight=2, gcrefRegs=0028 {rbx rbp}, byrefRegs=0100 {r8}, byref | |
- mov bword ptr [rsp+0x20], r8 | |
- mov dword ptr [rsp+0x28], edx | |
- lea r8, [rsp+0x20] | |
- ; byrRegs -[r8] | |
- mov edx, edi | |
- mov rcx, rbp | |
- ; gcrRegs +[rcx] | |
- mov r9d, r14d | |
- cmp dword ptr [rcx], ecx | |
- call [<unknown method>] | |
- ; gcrRegs -[rcx] | |
- ; gcr arg pop 0 | |
- add dword ptr [rbx+0x18], r14d | |
- add edi, r14d | |
- sub esi, r14d | |
+ mov edx, r15d | |
+ lea r13, bword ptr [r8+2*rdx+0x10] | |
+ ; byrRegs +[r13] | |
+ mov eax, r14d | |
jmp G_M22526_IG04 | |
- ;; size=45 bbWeight=2 PerfScore 29.50 | |
+ ;; size=47 bbWeight=2 PerfScore 25.50 | |
+G_M22526_IG11: ; bbWeight=2, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz | |
+ ; gcrRegs -[r8] | |
+ ; byrRegs -[r13] | |
+ or r15d, r14d | |
+ jne SHORT G_M22526_IG15 | |
+ xor r13, r13 | |
+ ; byrRegs +[r13] | |
+ xor eax, eax | |
+ jmp G_M22526_IG04 | |
+ ;; size=15 bbWeight=2 PerfScore 7.50 | |
G_M22526_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs -[rbp] | |
+ ; byrRegs -[r13] | |
mov rcx, rbx | |
; gcrRegs +[rcx] | |
mov edx, edi | |
@@ -176,9 +182,11 @@ G_M22526_IG14: ; bbWeight=1, epilog, nogc, extend | |
pop rbp | |
pop rsi | |
pop rdi | |
+ pop r13 | |
pop r14 | |
+ pop r15 | |
ret | |
- ;; size=11 bbWeight=1 PerfScore 3.75 | |
+ ;; size=15 bbWeight=1 PerfScore 4.75 | |
G_M22526_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref | |
; gcrRegs -[rax rbx] | |
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] | |
@@ -217,7 +225,7 @@ G_M22526_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
int3 | |
;; size=71 bbWeight=0 PerfScore 0.00 | |
-; Total bytes of code 350, prolog size 17, PerfScore 138.75, instruction count 106, allocated bytes for code 350 (MethodHash=4611a801) for method System.Text.StringBuilder:AppendCore(System.Text.StringBuilder,int,int):System.Text.StringBuilder:this (FullOpts) | |
+; Total bytes of code 367, prolog size 21, PerfScore 143.25, instruction count 112, allocated bytes for code 367 (MethodHash=4611a801) for method System.Text.StringBuilder:AppendCore(System.Text.StringBuilder,int,int):System.Text.StringBuilder:this (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
@@ -225,14 +233,16 @@ Unwind Info: | |
>> End offset : 0xd1ffab1e (not in unwind data) | |
Version : 1 | |
Flags : 0x00 | |
- SizeOfProlog : 0x0A | |
- CountOfUnwindCodes: 6 | |
+ SizeOfProlog : 0x0E | |
+ CountOfUnwindCodes: 8 | |
FrameRegister : none (0) | |
FrameOffset : N/A (no FrameRegister) (Value=0) | |
UnwindCodes : | |
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 | |
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) | |
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) | |
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) | |
+ CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 | |
+ CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) | |
+ CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) | |
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) | |
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) | |
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) | |
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) | |
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+2</span> (<span style="color:red">+7.14%</span>) : 33309.dasm - System.Management.Automation.CmdletParameterBinderController:ValidParameterSetCount(uint):int (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -18,19 +18,20 @@ G_M47939_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
G_M47939_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
xor eax, eax | |
cmp ecx, -1 | |
- je SHORT G_M47939_IG05 | |
- ;; size=7 bbWeight=1 PerfScore 1.50 | |
-G_M47939_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
- test ecx, ecx | |
- je SHORT G_M47939_IG06 | |
- ;; size=4 bbWeight=4 PerfScore 5.00 | |
-G_M47939_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
+ jne SHORT G_M47939_IG04 | |
+ jmp SHORT G_M47939_IG05 | |
+ ;; size=9 bbWeight=1 PerfScore 3.50 | |
+G_M47939_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
mov edx, ecx | |
and edx, 1 | |
add eax, edx | |
shr ecx, 1 | |
- jmp SHORT G_M47939_IG03 | |
- ;; size=11 bbWeight=2 PerfScore 6.50 | |
+ ;; size=9 bbWeight=2 PerfScore 2.50 | |
+G_M47939_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
+ test ecx, ecx | |
+ jne SHORT G_M47939_IG03 | |
+ jmp SHORT G_M47939_IG06 | |
+ ;; size=6 bbWeight=4 PerfScore 13.00 | |
G_M47939_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
mov eax, 1 | |
;; size=5 bbWeight=0.50 PerfScore 0.12 | |
@@ -38,7 +39,7 @@ G_M47939_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
ret | |
;; size=1 bbWeight=1 PerfScore 1.00 | |
-; Total bytes of code 28, prolog size 0, PerfScore 14.12, instruction count 12, allocated bytes for code 28 (MethodHash=0ab144bc) for method System.Management.Automation.CmdletParameterBinderController:ValidParameterSetCount(uint):int (FullOpts) | |
+; Total bytes of code 30, prolog size 0, PerfScore 20.12, instruction count 13, allocated bytes for code 30 (MethodHash=0ab144bc) for method System.Management.Automation.CmdletParameterBinderController:ValidParameterSetCount(uint):int (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
</div></details> | |
<details> | |
<summary>smoke_tests.nativeaot.windows.x64.checked.mch</summary> | |
<div style="margin-left:1em"> | |
<details> | |
<summary><span style="color:green">-2</span> (<span style="color:green">-8.00%</span>) : 13324.dasm - System.Collections.Hashtable+SyncHashtable:get_Item(System.Object):System.Object:this (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -18,24 +18,23 @@ | |
G_M53271_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
;; size=0 bbWeight=1 PerfScore 0.00 | |
-G_M53271_IG02: ; bbWeight=8, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
+G_M53271_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs +[rcx rdx] | |
+ ;; size=0 bbWeight=1 PerfScore 0.00 | |
+G_M53271_IG03: ; bbWeight=8, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz | |
mov rcx, gword ptr [rcx+0x40] | |
lea rax, [(reloc)] | |
cmp qword ptr [rcx], rax | |
- je SHORT G_M53271_IG05 | |
+ je SHORT G_M53271_IG03 | |
;; size=16 bbWeight=8 PerfScore 52.00 | |
-G_M53271_IG03: ; bbWeight=0.50, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref | |
+G_M53271_IG04: ; bbWeight=0.50, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref | |
mov rax, qword ptr [rcx] | |
;; size=3 bbWeight=0.50 PerfScore 1.00 | |
-G_M53271_IG04: ; bbWeight=0.50, epilog, nogc, extend | |
+G_M53271_IG05: ; bbWeight=0.50, epilog, nogc, extend | |
tail.jmp [rax+0x30]<unknown method> | |
;; size=4 bbWeight=0.50 PerfScore 1.00 | |
-G_M53271_IG05: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz | |
- jmp SHORT G_M53271_IG02 | |
- ;; size=2 bbWeight=2 PerfScore 4.00 | |
-; Total bytes of code 25, prolog size 0, PerfScore 58.00, instruction count 7, allocated bytes for code 25 (MethodHash=cc6d2fe8) for method System.Collections.Hashtable+SyncHashtable:get_Item(System.Object):System.Object:this (FullOpts) | |
+; Total bytes of code 23, prolog size 0, PerfScore 54.00, instruction count 7, allocated bytes for code 23 (MethodHash=cc6d2fe8) for method System.Collections.Hashtable+SyncHashtable:get_Item(System.Object):System.Object:this (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:green">-2</span> (<span style="color:green">-5.13%</span>) : 6910.dasm - System.Collections.ObjectModel.ReadOnlyCollection`1[System.Reflection.CustomAttributeNamedArgument]:get_Count():int:this (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -20,35 +20,33 @@ | |
G_M26960_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
;; size=0 bbWeight=1 PerfScore 0.00 | |
-G_M26960_IG02: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
+G_M26960_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs +[rcx] | |
+ ;; size=0 bbWeight=1 PerfScore 0.00 | |
+G_M26960_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
mov rcx, gword ptr [rcx+0x08] | |
lea rax, [(reloc)] | |
cmp qword ptr [rcx], rax | |
- je SHORT G_M26960_IG07 | |
+ je SHORT G_M26960_IG03 | |
;; size=16 bbWeight=8 PerfScore 52.00 | |
-G_M26960_IG03: ; bbWeight=0.66, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
+G_M26960_IG04: ; bbWeight=0.66, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
lea rax, [(reloc)] | |
cmp qword ptr [rcx], rax | |
- je SHORT G_M26960_IG05 | |
+ je SHORT G_M26960_IG06 | |
;; size=12 bbWeight=0.66 PerfScore 2.97 | |
-G_M26960_IG04: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
+G_M26960_IG05: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
mov eax, dword ptr [rcx+0x10] | |
- jmp SHORT G_M26960_IG06 | |
+ jmp SHORT G_M26960_IG07 | |
;; size=5 bbWeight=0.16 PerfScore 0.66 | |
-G_M26960_IG05: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref | |
+G_M26960_IG06: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref | |
mov eax, dword ptr [rcx+0x08] | |
;; size=3 bbWeight=0.16 PerfScore 0.33 | |
-G_M26960_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc | |
+G_M26960_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc | |
; gcrRegs -[rcx] | |
ret | |
;; size=1 bbWeight=1 PerfScore 1.00 | |
-G_M26960_IG07: ; bbWeight=1.36, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz | |
- ; gcrRegs +[rcx] | |
- jmp SHORT G_M26960_IG02 | |
- ;; size=2 bbWeight=1.36 PerfScore 2.72 | |
-; Total bytes of code 39, prolog size 0, PerfScore 59.68, instruction count 12, allocated bytes for code 39 (MethodHash=999396af) for method System.Collections.ObjectModel.ReadOnlyCollection`1[System.Reflection.CustomAttributeNamedArgument]:get_Count():int:this (FullOpts) | |
+; Total bytes of code 37, prolog size 0, PerfScore 56.96, instruction count 12, allocated bytes for code 37 (MethodHash=999396af) for method System.Collections.ObjectModel.ReadOnlyCollection`1[System.Reflection.CustomAttributeNamedArgument]:get_Count():int:this (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:green">-2</span> (<span style="color:green">-5.13%</span>) : 11648.dasm - System.Collections.ObjectModel.ReadOnlyCollection`1[System.Reflection.CustomAttributeTypedArgument]:get_Count():int:this (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -19,35 +19,33 @@ | |
G_M35279_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
;; size=0 bbWeight=1 PerfScore 0.00 | |
-G_M35279_IG02: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
+G_M35279_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs +[rcx] | |
+ ;; size=0 bbWeight=1 PerfScore 0.00 | |
+G_M35279_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
mov rcx, gword ptr [rcx+0x08] | |
lea rax, [(reloc)] | |
cmp qword ptr [rcx], rax | |
- je SHORT G_M35279_IG07 | |
+ je SHORT G_M35279_IG03 | |
;; size=16 bbWeight=8 PerfScore 52.00 | |
-G_M35279_IG03: ; bbWeight=0.66, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
+G_M35279_IG04: ; bbWeight=0.66, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
lea rax, [(reloc)] | |
cmp qword ptr [rcx], rax | |
- je SHORT G_M35279_IG05 | |
+ je SHORT G_M35279_IG06 | |
;; size=12 bbWeight=0.66 PerfScore 2.97 | |
-G_M35279_IG04: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
+G_M35279_IG05: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz | |
mov eax, dword ptr [rcx+0x10] | |
- jmp SHORT G_M35279_IG06 | |
+ jmp SHORT G_M35279_IG07 | |
;; size=5 bbWeight=0.16 PerfScore 0.66 | |
-G_M35279_IG05: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref | |
+G_M35279_IG06: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref | |
mov eax, dword ptr [rcx+0x08] | |
;; size=3 bbWeight=0.16 PerfScore 0.33 | |
-G_M35279_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc | |
+G_M35279_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc | |
; gcrRegs -[rcx] | |
ret | |
;; size=1 bbWeight=1 PerfScore 1.00 | |
-G_M35279_IG07: ; bbWeight=1.36, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz | |
- ; gcrRegs +[rcx] | |
- jmp SHORT G_M35279_IG02 | |
- ;; size=2 bbWeight=1.36 PerfScore 2.72 | |
-; Total bytes of code 39, prolog size 0, PerfScore 59.68, instruction count 12, allocated bytes for code 39 (MethodHash=da9b7630) for method System.Collections.ObjectModel.ReadOnlyCollection`1[System.Reflection.CustomAttributeTypedArgument]:get_Count():int:this (FullOpts) | |
+; Total bytes of code 37, prolog size 0, PerfScore 56.96, instruction count 12, allocated bytes for code 37 (MethodHash=da9b7630) for method System.Collections.ObjectModel.ReadOnlyCollection`1[System.Reflection.CustomAttributeTypedArgument]:get_Count():int:this (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+9</span> (<span style="color:red">+3.35%</span>) : 10343.dasm - System.Linq.Expressions.Interpreter.LocalVariables:Box(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Interpreter.InstructionList):this (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -52,7 +52,7 @@ G_M57325_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
mov rbx, r8 | |
; gcrRegs +[rbx] | |
;; size=21 bbWeight=1 PerfScore 7.00 | |
-G_M57325_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref | |
+G_M57325_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz | |
mov rcx, gword ptr [rsi+0x08] | |
; gcrRegs +[rcx] | |
mov rdx, rdi | |
@@ -78,24 +78,28 @@ G_M57325_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 | |
or dword ptr [rdx+0x0C], 1 | |
xor esi, esi | |
mov edi, dword ptr [rbp+0x20] | |
- ;; size=48 bbWeight=1 PerfScore 22.00 | |
-G_M57325_IG03: ; bbWeight=8, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, byref | |
+ jmp SHORT G_M57325_IG04 | |
+ ;; size=50 bbWeight=1 PerfScore 24.00 | |
+G_M57325_IG03: ; bbWeight=2, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, byref | |
; gcrRegs -[rax rdx] | |
+ inc edi | |
+ ;; size=2 bbWeight=2 PerfScore 0.50 | |
+G_M57325_IG04: ; bbWeight=8, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, byref | |
cmp edi, dword ptr [rbp+0x24] | |
jge G_M57325_IG09 | |
;; size=9 bbWeight=8 PerfScore 32.00 | |
-G_M57325_IG04: ; bbWeight=4, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, byref | |
+G_M57325_IG05: ; bbWeight=4, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, byref | |
mov rdx, gword ptr [rbx+0x08] | |
; gcrRegs +[rdx] | |
mov ecx, dword ptr [rdx+0x10] | |
cmp edi, ecx | |
jge G_M57325_IG09 | |
;; size=15 bbWeight=4 PerfScore 21.00 | |
-G_M57325_IG05: ; bbWeight=2, gcrefRegs=402C {rdx rbx rbp r14}, byrefRegs=0000 {}, byref, isz | |
+G_M57325_IG06: ; bbWeight=2, gcrefRegs=402C {rdx rbx rbp r14}, byrefRegs=0000 {}, byref, isz | |
mov rax, gword ptr [rbp+0x18] | |
; gcrRegs +[rax] | |
test rax, rax | |
- je SHORT G_M57325_IG06 | |
+ je SHORT G_M57325_IG07 | |
cmp esi, dword ptr [rax+0x10] | |
jae G_M57325_IG10 | |
mov rax, gword ptr [rax+0x08] | |
@@ -105,9 +109,9 @@ G_M57325_IG05: ; bbWeight=2, gcrefRegs=402C {rdx rbx rbp r14}, byrefRegs= | |
mov r15, gword ptr [rax+8*r8+0x10] | |
; gcrRegs +[r15] | |
cmp dword ptr [r15+0x20], edi | |
- je SHORT G_M57325_IG07 | |
+ je SHORT G_M57325_IG08 | |
;; size=45 bbWeight=2 PerfScore 39.00 | |
-G_M57325_IG06: ; bbWeight=2, gcrefRegs=402C {rdx rbx rbp r14}, byrefRegs=0000 {}, byref, isz | |
+G_M57325_IG07: ; bbWeight=2, gcrefRegs=402C {rdx rbx rbp r14}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs -[rax r15] | |
mov r15d, dword ptr [r14+0x08] | |
cmp edi, ecx | |
@@ -122,7 +126,7 @@ G_M57325_IG06: ; bbWeight=2, gcrefRegs=402C {rdx rbx rbp r14}, byrefRegs= | |
; gcrRegs -[rdx] +[rax] | |
; gcr arg pop 0 | |
test rax, rax | |
- je SHORT G_M57325_IG08 | |
+ je SHORT G_M57325_IG03 | |
mov rcx, rax | |
; gcrRegs +[rcx] | |
mov edx, r15d | |
@@ -131,7 +135,7 @@ G_M57325_IG06: ; bbWeight=2, gcrefRegs=402C {rdx rbx rbp r14}, byrefRegs= | |
; gcrRegs -[rcx] | |
; gcr arg pop 0 | |
test rax, rax | |
- je SHORT G_M57325_IG08 | |
+ je G_M57325_IG03 | |
mov r15, gword ptr [rbx+0x08] | |
; gcrRegs +[r15] | |
cmp edi, dword ptr [r15+0x10] | |
@@ -145,19 +149,15 @@ G_M57325_IG06: ; bbWeight=2, gcrefRegs=402C {rdx rbx rbp r14}, byrefRegs= | |
; gcrRegs -[rax rcx r8] | |
; gcr arg pop 0 | |
inc dword ptr [r15+0x14] | |
- jmp SHORT G_M57325_IG08 | |
- ;; size=93 bbWeight=2 PerfScore 68.00 | |
-G_M57325_IG07: ; bbWeight=2, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=0000 {}, byref | |
+ jmp G_M57325_IG03 | |
+ ;; size=100 bbWeight=2 PerfScore 68.00 | |
+G_M57325_IG08: ; bbWeight=2, gcrefRegs=C028 {rbx rbp r14 r15}, byrefRegs=0000 {}, byref | |
mov edi, dword ptr [r15+0x24] | |
inc esi | |
- ;; size=6 bbWeight=2 PerfScore 4.50 | |
-G_M57325_IG08: ; bbWeight=2, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[r15] | |
- inc edi | |
jmp G_M57325_IG03 | |
- ;; size=7 bbWeight=2 PerfScore 4.50 | |
+ ;; size=11 bbWeight=2 PerfScore 8.50 | |
G_M57325_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc | |
- ; gcrRegs -[rbx rbp r14] | |
+ ; gcrRegs -[rbx rbp r14-r15] | |
add rsp, 40 | |
pop rbx | |
pop rbp | |
@@ -178,7 +178,7 @@ G_M57325_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
int3 | |
;; size=6 bbWeight=0 PerfScore 0.00 | |
-; Total bytes of code 269, prolog size 21, PerfScore 202.25, instruction count 85, allocated bytes for code 269 (MethodHash=10342012) for method System.Linq.Expressions.Interpreter.LocalVariables:Box(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Interpreter.InstructionList):this (FullOpts) | |
+; Total bytes of code 278, prolog size 21, PerfScore 204.25, instruction count 86, allocated bytes for code 278 (MethodHash=10342012) for method System.Linq.Expressions.Interpreter.LocalVariables:Box(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Interpreter.InstructionList):this (FullOpts) | |
; ============================================================ | |
Unwind Info: | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+40</span> (<span style="color:red">+3.71%</span>) : 5022.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):int (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -14,35 +14,35 @@ | |
; V03 arg2 [V03,T05] ( 8, 42 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IComparer`1[System.__Canon]> | |
; V04 loc0 [V04,T21] ( 5, 5 ) int -> r13 | |
; V05 loc1 [V05,T14] ( 11, 11 ) int -> r12 | |
-; V06 loc2 [V06,T07] ( 3, 37 ) ref -> [rsp+0x58] class-hnd spill-single-def <System.__Canon> | |
-; V07 loc3 [V07,T19] ( 10, 6.50) int -> [rsp+0xA4] | |
-; V08 loc4 [V08,T01] ( 12,154 ) int -> [rsp+0xA0] | |
+; V06 loc2 [V06,T07] ( 3, 37 ) ref -> [rsp+0x60] class-hnd spill-single-def <System.__Canon> | |
+; V07 loc3 [V07,T19] ( 10, 6.50) int -> [rsp+0xB4] | |
+; V08 loc4 [V08,T01] ( 12,154 ) int -> [rsp+0xB0] | |
; V09 OutArgs [V09 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" | |
; V10 tmp1 [V10,T12] ( 2, 16 ) int -> rcx "dup spill" | |
-; V11 tmp2 [V11,T10] ( 3, 24 ) long -> r10 "VirtualCall with runtime lookup" | |
+; V11 tmp2 [V11,T10] ( 3, 24 ) long -> [rsp+0xA8] spill-single-def "VirtualCall with runtime lookup" | |
; V12 tmp3 [V12,T02] ( 2,128 ) int -> rax "dup spill" | |
-; V13 tmp4 [V13,T00] ( 3,192 ) long -> [rsp+0x98] spill-single-def "VirtualCall with runtime lookup" | |
+; V13 tmp4 [V13,T00] ( 3,192 ) long -> [rsp+0xA0] spill-single-def "VirtualCall with runtime lookup" | |
;* V14 tmp5 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
;* V15 tmp6 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
;* V16 tmp7 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
-; V17 tmp8 [V17,T11] ( 8, 16 ) int -> [rsp+0x94] spill-single-def "Inlining Arg" | |
+; V17 tmp8 [V17,T11] ( 8, 16 ) int -> [rsp+0x9C] spill-single-def "Inlining Arg" | |
;* V18 tmp9 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.__Canon]> | |
-; V19 tmp10 [V19,T27] ( 2, 2 ) ref -> [rsp+0x50] class-hnd spill-single-def "Inline stloc first use temp" <System.__Canon> | |
+; V19 tmp10 [V19,T27] ( 2, 2 ) ref -> [rsp+0x58] class-hnd spill-single-def "Inline stloc first use temp" <System.__Canon> | |
;* V20 tmp11 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.__Canon]> | |
-; V21 tmp12 [V21,T28] ( 2, 2 ) ref -> [rsp+0x48] class-hnd spill-single-def "Inline stloc first use temp" <System.__Canon> | |
+; V21 tmp12 [V21,T28] ( 2, 2 ) ref -> [rsp+0x50] class-hnd spill-single-def "Inline stloc first use temp" <System.__Canon> | |
;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
;* V23 tmp14 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
;* V24 tmp15 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.__Canon]> | |
-; V25 tmp16 [V25,T17] ( 2, 8 ) ref -> [rsp+0x40] class-hnd spill-single-def "Inline stloc first use temp" <System.__Canon> | |
+; V25 tmp16 [V25,T17] ( 2, 8 ) ref -> [rsp+0x48] class-hnd spill-single-def "Inline stloc first use temp" <System.__Canon> | |
;* V26 tmp17 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.__Canon]> | |
-; V27 tmp18 [V27,T18] ( 2, 8 ) ref -> [rsp+0x38] class-hnd spill-single-def "Inline stloc first use temp" <System.__Canon> | |
+; V27 tmp18 [V27,T18] ( 2, 8 ) ref -> [rsp+0x40] class-hnd spill-single-def "Inline stloc first use temp" <System.__Canon> | |
;* V28 tmp19 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
;* V29 tmp20 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
; V30 tmp21 [V30,T24] ( 3, 3 ) int -> r13 "Inlining Arg" | |
;* V31 tmp22 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.__Canon]> | |
-; V32 tmp23 [V32,T29] ( 2, 1 ) ref -> rsi class-hnd single-def "Inline stloc first use temp" <System.__Canon> | |
+; V32 tmp23 [V32,T29] ( 2, 1 ) ref -> rbx class-hnd single-def "Inline stloc first use temp" <System.__Canon> | |
;* V33 tmp24 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.__Canon]> | |
-; V34 tmp25 [V34,T30] ( 2, 1 ) ref -> r14 class-hnd single-def "Inline stloc first use temp" <System.__Canon> | |
+; V34 tmp25 [V34,T30] ( 2, 1 ) ref -> rsi class-hnd single-def "Inline stloc first use temp" <System.__Canon> | |
;* V35 tmp26 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
;* V36 tmp27 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" | |
; V37 tmp28 [V37,T03] ( 18, 62.50) byref -> r14 single-def "field V01._reference (fldOffset=0x0)" P-INDEP | |
@@ -63,17 +63,17 @@ | |
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP | |
;* V53 tmp44 [V53 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[System.__Canon]> | |
;* V54 tmp45 [V54 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[System.__Canon]> | |
-; V55 tmp46 [V55 ] ( 9, 18 ) struct (16) [rsp+0x80] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[System.__Canon]> | |
-; V56 tmp47 [V56 ] ( 9, 18 ) struct (16) [rsp+0x70] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[System.__Canon]> | |
-; V57 cse0 [V57,T25] ( 3, 2.50) byref -> [rsp+0x30] spill-single-def "CSE #10: moderate" | |
+; V55 tmp46 [V55 ] ( 9, 18 ) struct (16) [rsp+0x88] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[System.__Canon]> | |
+; V56 tmp47 [V56 ] ( 9, 18 ) struct (16) [rsp+0x78] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[System.__Canon]> | |
+; V57 cse0 [V57,T25] ( 3, 2.50) byref -> [rsp+0x38] spill-single-def "CSE #10: moderate" | |
; V58 cse1 [V58,T26] ( 3, 2.50) byref -> r12 "CSE #11: moderate" | |
; V59 cse2 [V59,T08] ( 3, 36.25) long -> rsi hoist "CSE #06: aggressive" | |
-; V60 cse3 [V60,T23] ( 4, 4 ) long -> [rsp+0x68] spill-single-def "CSE #02: moderate" | |
+; V60 cse3 [V60,T23] ( 4, 4 ) long -> [rsp+0x70] spill-single-def "CSE #02: moderate" | |
; V61 cse4 [V61,T22] ( 5, 4.50) int -> r13 "CSE #05: moderate" | |
-; V62 rat0 [V62,T06] ( 12, 41.50) long -> [rsp+0x60] "Widened IV V07" | |
-; TEMP_01 ref -> [rsp+0xA8] | |
+; V62 rat0 [V62,T06] ( 12, 41.50) long -> [rsp+0x68] "Widened IV V07" | |
+; TEMP_01 ref -> [rsp+0xB8] | |
; | |
-; Lcl frame size = 184 | |
+; Lcl frame size = 200 | |
G_M26356_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG | |
push r15 | |
@@ -84,17 +84,19 @@ G_M26356_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
push rsi | |
push rbp | |
push rbx | |
- sub rsp, 184 | |
+ sub rsp, 200 | |
+ xor eax, eax | |
+ mov qword ptr [rsp+0x78], rax | |
xorps xmm4, xmm4 | |
- movaps xmmword ptr [rsp+0x70], xmm4 | |
movaps xmmword ptr [rsp+0x80], xmm4 | |
movaps xmmword ptr [rsp+0x90], xmm4 | |
movaps xmmword ptr [rsp+0xA0], xmm4 | |
- mov qword ptr [rsp+0xB0], rcx | |
+ movaps xmmword ptr [rsp+0xB0], xmm4 | |
+ mov qword ptr [rsp+0xC0], rcx | |
mov rsi, rcx | |
mov rbx, r9 | |
; gcrRegs +[rbx] | |
- ;; size=65 bbWeight=1 PerfScore 18.08 | |
+ ;; size=75 bbWeight=1 PerfScore 19.33 | |
G_M26356_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0104 {rdx r8}, byref, isz | |
; byrRegs +[rdx r8] | |
mov rdi, bword ptr [r8] | |
@@ -133,48 +135,48 @@ G_M26356_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=4080 {rdi r1 | |
lea r13d, [r15-0x01] | |
mov r12d, r13d | |
sar r12d, 1 | |
- mov bword ptr [rsp+0x80], r14 | |
- mov dword ptr [rsp+0x88], r15d | |
- mov bword ptr [rsp+0x70], rdi | |
- mov dword ptr [rsp+0x78], ebp | |
+ mov bword ptr [rsp+0x88], r14 | |
+ mov dword ptr [rsp+0x90], r15d | |
+ mov bword ptr [rsp+0x78], rdi | |
+ mov dword ptr [rsp+0x80], ebp | |
xor edx, edx | |
mov dword ptr [rsp+0x20], edx | |
mov dword ptr [rsp+0x28], r12d | |
- lea rdx, [rsp+0x80] | |
- lea r8, [rsp+0x70] | |
+ lea rdx, [rsp+0x88] | |
+ lea r8, [rsp+0x78] | |
mov rcx, qword ptr [rsi+0x30] | |
mov rax, qword ptr [rcx+0x08] | |
- mov qword ptr [rsp+0x68], rax | |
+ mov qword ptr [rsp+0x70], rax | |
mov rcx, rax | |
mov r9, rbx | |
; gcrRegs +[r9] | |
call <unknown method> | |
; gcrRegs -[r9] | |
; gcr arg pop 0 | |
- mov bword ptr [rsp+0x80], r14 | |
- mov dword ptr [rsp+0x88], r15d | |
- mov bword ptr [rsp+0x70], rdi | |
- mov dword ptr [rsp+0x78], ebp | |
+ mov bword ptr [rsp+0x88], r14 | |
+ mov dword ptr [rsp+0x90], r15d | |
+ mov bword ptr [rsp+0x78], rdi | |
+ mov dword ptr [rsp+0x80], ebp | |
xor edx, edx | |
mov dword ptr [rsp+0x20], edx | |
mov dword ptr [rsp+0x28], r13d | |
- lea rdx, [rsp+0x80] | |
- lea r8, [rsp+0x70] | |
- mov rcx, qword ptr [rsp+0x68] | |
+ lea rdx, [rsp+0x88] | |
+ lea r8, [rsp+0x78] | |
+ mov rcx, qword ptr [rsp+0x70] | |
mov r9, rbx | |
; gcrRegs +[r9] | |
call <unknown method> | |
; gcrRegs -[r9] | |
; gcr arg pop 0 | |
- mov bword ptr [rsp+0x80], r14 | |
- mov dword ptr [rsp+0x88], r15d | |
- mov bword ptr [rsp+0x70], rdi | |
- mov dword ptr [rsp+0x78], ebp | |
+ mov bword ptr [rsp+0x88], r14 | |
+ mov dword ptr [rsp+0x90], r15d | |
+ mov bword ptr [rsp+0x78], rdi | |
+ mov dword ptr [rsp+0x80], ebp | |
mov dword ptr [rsp+0x20], r12d | |
mov dword ptr [rsp+0x28], r13d | |
- lea rdx, [rsp+0x80] | |
- lea r8, [rsp+0x70] | |
- mov rcx, qword ptr [rsp+0x68] | |
+ lea rdx, [rsp+0x88] | |
+ lea r8, [rsp+0x78] | |
+ mov rcx, qword ptr [rsp+0x70] | |
mov r9, rbx | |
; gcrRegs +[r9] | |
call <unknown method> | |
@@ -185,14 +187,14 @@ G_M26356_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=4080 {rdi r1 | |
mov ecx, r12d | |
mov rax, gword ptr [r14+8*rcx] | |
; gcrRegs +[rax] | |
- mov gword ptr [rsp+0x58], rax | |
+ mov gword ptr [rsp+0x60], rax | |
; GC ptr vars +{V06} | |
dec r13d | |
mov r8d, r13d | |
- mov dword ptr [rsp+0x94], r8d | |
+ mov dword ptr [rsp+0x9C], r8d | |
cmp r12d, r8d | |
jne SHORT G_M26356_IG08 | |
- ;; size=246 bbWeight=1 PerfScore 41.00 | |
+ ;; size=255 bbWeight=1 PerfScore 41.00 | |
G_M26356_IG07: ; bbWeight=0.50, gcVars=0000000000000080 {V06}, gcrefRegs=0008 {rbx}, byrefRegs=4080 {rdi r14}, gcvars, byref | |
; gcrRegs -[rax] | |
lea rcx, gword ptr [(reloc)] | |
@@ -207,12 +209,12 @@ G_M26356_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=4080 {rdi r1 | |
mov ecx, r12d | |
mov r10, gword ptr [r14+8*rcx] | |
; gcrRegs +[r10] | |
- mov gword ptr [rsp+0x50], r10 | |
+ mov gword ptr [rsp+0x58], r10 | |
; GC ptr vars +{V19} | |
mov ecx, r12d | |
lea rcx, bword ptr [r14+8*rcx] | |
; byrRegs +[rcx] | |
- mov r8d, dword ptr [rsp+0x94] | |
+ mov r8d, dword ptr [rsp+0x9C] | |
cmp r8d, r15d | |
jae G_M26356_IG20 | |
mov edx, r8d | |
@@ -221,14 +223,14 @@ G_M26356_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=4080 {rdi r1 | |
call CORINFO_HELP_CHECKED_ASSIGN_REF | |
; gcrRegs -[rdx r10] | |
; byrRegs -[rcx] | |
- mov ecx, dword ptr [rsp+0x94] | |
+ mov ecx, dword ptr [rsp+0x9C] | |
lea r8, bword ptr [r14+8*rcx] | |
; byrRegs +[r8] | |
mov rcx, r8 | |
; byrRegs +[rcx] | |
- mov bword ptr [rsp+0x30], rcx | |
+ mov bword ptr [rsp+0x38], rcx | |
; GC ptr vars +{V57} | |
- mov rdx, gword ptr [rsp+0x50] | |
+ mov rdx, gword ptr [rsp+0x58] | |
; gcrRegs +[rdx] | |
; GC ptr vars -{V19} | |
call CORINFO_HELP_CHECKED_ASSIGN_REF | |
@@ -239,12 +241,12 @@ G_M26356_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=4080 {rdi r1 | |
mov ecx, r12d | |
mov rax, gword ptr [rdi+8*rcx] | |
; gcrRegs +[rax] | |
- mov gword ptr [rsp+0x48], rax | |
+ mov gword ptr [rsp+0x50], rax | |
; GC ptr vars +{V21} | |
mov ecx, r12d | |
lea rcx, bword ptr [rdi+8*rcx] | |
; byrRegs +[rcx] | |
- mov r12d, dword ptr [rsp+0x94] | |
+ mov r12d, dword ptr [rsp+0x9C] | |
cmp r12d, ebp | |
jae G_M26356_IG20 | |
mov edx, r12d | |
@@ -256,7 +258,7 @@ G_M26356_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=4080 {rdi r1 | |
mov ecx, r12d | |
lea r12, bword ptr [rdi+8*rcx] | |
; byrRegs +[r12] | |
- mov rdx, gword ptr [rsp+0x48] | |
+ mov rdx, gword ptr [rsp+0x50] | |
; gcrRegs +[rdx] | |
mov rcx, r12 | |
; byrRegs +[rcx] | |
@@ -267,99 +269,157 @@ G_M26356_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=4080 {rdi r1 | |
xor r10d, r10d | |
xor ecx, ecx | |
mov eax, r13d | |
- mov dword ptr [rsp+0xA0], eax | |
+ mov dword ptr [rsp+0xB0], eax | |
test eax, eax | |
- jle G_M26356_IG15 | |
... | |
``` | |
</div></details> | |
<details> | |
<summary><span style="color:red">+45</span> (<span style="color:red">+7.44%</span>) : 9231.dasm - System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:get_Count():int:this (FullOpts)</summary> | |
<div style="margin-left:1em"> | |
```diff | |
@@ -48,12 +48,22 @@ G_M16912_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, | |
mov gword ptr [rbp+0x10], rcx | |
; GC ptr vars +{V00} | |
;; size=32 bbWeight=1 PerfScore 10.75 | |
-G_M16912_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref | |
+G_M16912_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz | |
; gcrRegs +[rcx] | |
xor eax, eax | |
mov dword ptr [rbp-0x48], eax | |
- ;; size=5 bbWeight=1 PerfScore 1.25 | |
-G_M16912_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref | |
+ jmp SHORT G_M16912_IG04 | |
+ ;; size=7 bbWeight=1 PerfScore 3.25 | |
+G_M16912_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
+ ; gcrRegs -[rcx] | |
+ lea rcx, [rbp-0x48] | |
+ mov edx, 20 | |
+ call <unknown method> | |
+ ; gcr arg pop 0 | |
+ mov rcx, gword ptr [rbp+0x10] | |
+ ; gcrRegs +[rcx] | |
+ ;; size=18 bbWeight=8 PerfScore 22.00 | |
+G_M16912_IG04: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref | |
mov rbx, gword ptr [rcx+0x18] | |
; gcrRegs +[rbx] | |
mov rsi, gword ptr [rcx+0x10] | |
@@ -61,11 +71,11 @@ G_M16912_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr | |
mov edi, dword ptr [rbx+0x60] | |
mov r14d, dword ptr [rbx+0xA0] | |
cmp rbx, rsi | |
- je G_M16912_IG19 | |
+ je G_M16912_IG20 | |
;; size=27 bbWeight=8 PerfScore 74.00 | |
-G_M16912_IG04: ; bbWeight=4, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M16912_IG05: ; bbWeight=4, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref | |
cmp gword ptr [rbx+0x10], rsi | |
- je G_M16912_IG16 | |
+ je G_M16912_IG17 | |
mov rax, gword ptr [rcx+0x08] | |
; gcrRegs +[rax] | |
mov gword ptr [rbp-0x58], rax | |
@@ -74,7 +84,7 @@ G_M16912_IG04: ; bbWeight=4, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 | |
; gcrRegs -[rax] | |
mov dword ptr [rbp-0x4C], eax | |
;; size=23 bbWeight=4 PerfScore 33.00 | |
-G_M16912_IG05: ; bbWeight=4, gcVars=0000000000000084 {V00 V08}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz | |
+G_M16912_IG06: ; bbWeight=4, gcVars=0000000000000084 {V00 V08}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz | |
; gcrRegs -[rcx] | |
mov rcx, gword ptr [rbp-0x58] | |
; gcrRegs +[rcx] | |
@@ -85,21 +95,21 @@ G_M16912_IG05: ; bbWeight=4, gcVars=0000000000000084 {V00 V08}, gcrefRegs | |
mov rcx, gword ptr [rbp+0x10] | |
; gcrRegs +[rcx] | |
cmp rbx, gword ptr [rcx+0x18] | |
- jne G_M16912_IG11 | |
+ jne G_M16912_IG12 | |
cmp rsi, gword ptr [rcx+0x10] | |
- jne G_M16912_IG11 | |
+ jne G_M16912_IG12 | |
mov r15d, dword ptr [rsi+0x60] | |
mov r13d, dword ptr [rsi+0xA0] | |
cmp edi, dword ptr [rbx+0x60] | |
- jne G_M16912_IG11 | |
+ jne G_M16912_IG12 | |
cmp r14d, dword ptr [rbx+0xA0] | |
- jne G_M16912_IG11 | |
+ jne G_M16912_IG12 | |
cmp r15d, dword ptr [rsi+0x60] | |
- jne G_M16912_IG11 | |
+ jne G_M16912_IG12 | |
cmp r13d, dword ptr [rsi+0xA0] | |
- jne SHORT G_M16912_IG11 | |
+ jne SHORT G_M16912_IG12 | |
;; size=92 bbWeight=4 PerfScore 128.00 | |
-G_M16912_IG06: ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M16912_IG07: ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov rdx, qword ptr [rcx] | |
mov rdx, qword ptr [rdx+0x30] | |
mov r12, qword ptr [rdx] | |
@@ -124,13 +134,13 @@ G_M16912_IG06: ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 | |
add edi, eax | |
mov rbx, gword ptr [rbx+0x10] | |
cmp rbx, rsi | |
- je SHORT G_M16912_IG10 | |
+ je SHORT G_M16912_IG11 | |
;; size=57 bbWeight=1 PerfScore 13.75 | |
-G_M16912_IG07: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M16912_IG08: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
cmp byte ptr [rbx+0x1D], 0 | |
- jne SHORT G_M16912_IG09 | |
+ jne SHORT G_M16912_IG10 | |
;; size=6 bbWeight=8 PerfScore 32.00 | |
-G_M16912_IG08: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+G_M16912_IG09: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
lea rcx, gword ptr [(reloc)] | |
; gcrRegs +[rcx] | |
lea rdx, gword ptr [(reloc)] | |
@@ -139,7 +149,7 @@ G_M16912_IG08: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, | |
; gcrRegs -[rcx rdx] | |
; gcr arg pop 0 | |
;; size=19 bbWeight=4 PerfScore 8.00 | |
-G_M16912_IG09: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
+G_M16912_IG10: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz | |
mov ecx, dword ptr [rbx+0xA0] | |
mov rax, gword ptr [rbx+0x08] | |
; gcrRegs +[rax] | |
@@ -150,35 +160,35 @@ G_M16912_IG09: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, | |
add edi, ecx | |
mov rbx, gword ptr [rbx+0x10] | |
cmp rbx, rsi | |
- jne SHORT G_M16912_IG07 | |
+ jne SHORT G_M16912_IG08 | |
;; size=28 bbWeight=8 PerfScore 80.00 | |
-G_M16912_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
+G_M16912_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz | |
; gcrRegs -[rbx rsi] | |
mov dword ptr [rbp-0x50], edi | |
- jmp SHORT G_M16912_IG12 | |
+ jmp SHORT G_M16912_IG13 | |
;; size=5 bbWeight=1 PerfScore 3.00 | |
-G_M16912_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
+G_M16912_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
mov rcx, gword ptr [rbp-0x58] | |
; gcrRegs +[rcx] | |
; GC ptr vars -{V08} | |
call <unknown method> | |
; gcrRegs -[rcx] | |
; gcr arg pop 0 | |
- jmp G_M16912_IG20 | |
+ jmp G_M16912_IG03 | |
;; size=14 bbWeight=4 PerfScore 16.00 | |
-G_M16912_IG12: ; bbWeight=1, gcVars=0000000000000084 {V00 V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref | |
+G_M16912_IG13: ; bbWeight=1, gcVars=0000000000000084 {V00 V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref | |
; GC ptr vars +{V07 V08} | |
mov rcx, rsp | |
call G_M16912_IG23 | |
;; size=8 bbWeight=1 PerfScore 1.25 | |
-G_M16912_IG13: ; bbWeight=1, nogc, extend | |
+G_M16912_IG14: ; bbWeight=1, nogc, extend | |
nop | |
;; size=1 bbWeight=1 PerfScore 0.25 | |
-G_M16912_IG14: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref | |
+G_M16912_IG15: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref | |
; GC ptr vars -{V07 V08} | |
mov eax, dword ptr [rbp-0x50] | |
;; size=3 bbWeight=1 PerfScore 1.00 | |
-G_M16912_IG15: ; bbWeight=1, epilog, nogc, extend | |
+G_M16912_IG16: ; bbWeight=1, epilog, nogc, extend | |
add rsp, 72 | |
pop rbx | |
pop rsi | |
@@ -190,24 +200,28 @@ G_M16912_IG15: ; bbWeight=1, epilog, nogc, extend | |
pop rbp | |
ret | |
;; size=17 bbWeight=1 PerfScore 5.25 | |
-G_M16912_IG16: ; bbWeight=4, gcVars=0000000000000004 {V00}, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz | |
+G_M16912_IG17: ; bbWeight=4, gcVars=0000000000000004 {V00}, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, gcvars, byref | |
; gcrRegs +[rcx rbx rsi] | |
mov r15d, dword ptr [rsi+0x60] | |
mov r13d, dword ptr [rsi+0xA0] | |
cmp rbx, gword ptr [rcx+0x18] | |
- jne G_M16912_IG20 | |
+ jne G_M16912_IG03 | |
+ mov rcx, gword ptr [rbp+0x10] | |
cmp rsi, gword ptr [rcx+0x10] | |
- jne SHORT G_M16912_IG20 | |
+ jne G_M16912_IG03 | |
cmp edi, dword ptr [rbx+0x60] | |
- jne SHORT G_M16912_IG20 | |
+ jne G_M16912_IG03 | |
cmp r14d, dword ptr [rbx+0xA0] | |
- jne SHORT G_M16912_IG20 | |
+ jne G_M16912_IG03 | |
cmp r15d, dword ptr [rsi+0x60] | |
- jne SHORT G_M16912_IG20 | |
+ jne G_M16912_IG03 | |
cmp r13d, dword ptr [rsi+0xA0] | |
- jne SHORT G_M16912_IG20 | |
- ;; size=56 bbWeight=4 PerfScore 112.00 | |
-G_M16912_IG17: ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref | |
+ jne G_M16912_IG03 | |
+ ;; size=80 bbWeight=4 PerfScore 116.00 | |
+G_M16912_IG18: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref | |
+ ; gcrRegs -[rcx] | |
+ mov rcx, gword ptr [rbp+0x10] | |
+ ; gcrRegs +[rcx] | |
mov rdx, qword ptr [rcx] | |
mov rdx, qword ptr [rdx+0x30] | |
mov r12, qword ptr [rdx] | |
@@ -220,7 +234,7 @@ G_M16912_IG17: ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 | |
call System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:GetCount(System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon],int,int):int | |
; gcrRegs -[rdx rbx] | |
; gcr arg pop 0 | |
- mov edi, eax | |
+ mov ebx, eax | |
mov rcx, r12 | |
mov rdx, rsi | |
; gcrRegs +[rdx] | |
@@ -229,9 +243,9 @@ G_M16912_IG17: ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 | |
call System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:GetCount(System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon],int,int):int | |
; gcrRegs -[rdx rsi] | |
; gcr arg pop 0 | |
- add eax, edi | |
- ;; size=48 bbWeight=1 PerfScore 10.50 | |
-G_M16912_IG18: ; bbWeight=1, epilog, nogc, extend | |
+ add eax, ebx | |
+ ;; size=52 bbWeight=1 PerfScore 11.50 | |
+G_M16912_IG19: ; bbWeight=1, epilog, nogc, extend | |
add rsp, 72 | |
pop rbx | |
pop rsi | |
@@ -243,29 +257,20 @@ G_M16912_IG18: ; bbWeight=1, epilog, nogc, extend | |
pop rbp | |
ret | |
;; size=17 bbWeight=1 PerfScore 5.25 | |
-G_M16912_IG19: ; bbWeight=4, gcVars=0000000000000004 {V00}, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, gcvars, byref, isz | |
+G_M16912_IG20: ; bbWeight=4, gcVars=0000000000000004 {V00}, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, gcvars, byref | |
; gcrRegs +[rcx rsi] | |
cmp rsi, gword ptr [rcx+0x18] | |
- jne SHORT G_M16912_IG20 | |
- cmp rsi, gword ptr [rcx+0x10] | |
- jne SHORT G_M16912_IG20 | |
- cmp edi, dword ptr [rsi+0x60] | |
- jne SHORT G_M16912_IG20 | |
- cmp r14d, dword ptr [rsi+0xA0] | |
- je SHORT G_M16912_IG21 | |
- ;; size=26 bbWeight=4 PerfScore 64.00 | |
-G_M16912_IG20: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[rcx rsi] | |
- lea rcx, [rbp-0x48] | |
- mov edx, 20 | |
- call <unknown method> | |
- ; gcr arg pop 0 | |
+ jne G_M16912_IG03 | |
mov rcx, gword ptr [rbp+0x10] | |
- ; gcrRegs +[rcx] | |
- jmp G_M16912_IG03 | |
- ;; size=23 bbWeight=8 PerfScore 38.00 | |
+ cmp rsi, gword ptr [rcx+0x10] | |
+ jne G_M16912_IG03 | |
+ cmp edi, dword ptr [rsi+0x60] | |
+ jne G_M16912_IG03 | |
+ cmp r14d, dword ptr [rsi+0xA0] | |
+ jne G_M16912_IG03 | |
+ ;; size=46 bbWeight=4 PerfScore 68.00 | |
G_M16912_IG21: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref | |
- ; gcrRegs -[rcx] +[rsi] | |
+ ; gcrRegs -[rcx] | |
mov rcx, gword ptr [rbp+0x10] | |
; gcrRegs +[rcx] | |
... | |
``` | |
</div></details> | |
</div></details> | |
</div></details> | |
<details> | |
<summary>Details</summary> | |
<div style="margin-left:1em"> | |
#### Size improvements/regressions per collection | |
|Collection|Contexts with diffs|Improvements|Regressions|Same size|Improvements (bytes)|Regressions (bytes)| | |
|---|--:|--:|--:|--:|--:|--:| | |
|benchmarks.run.windows.x64.checked.mch|1,144|<span style="color:green">190</span>|<span style="color:red">578</span>|<span style="color:blue">376</span>|<span style="color:green">-1,184</span>|<span style="color:red">+2,636</span>| | |
|benchmarks.run_pgo.windows.x64.checked.mch|2,648|<span style="color:green">1,137</span>|<span style="color:red">1,166</span>|<span style="color:blue">345</span>|<span style="color:green">-4,779</span>|<span style="color:red">+3,942</span>| | |
|benchmarks.run_tiered.windows.x64.checked.mch|550|<span style="color:green">113</span>|<span style="color:red">306</span>|<span style="color:blue">131</span>|<span style="color:green">-866</span>|<span style="color:red">+1,201</span>| | |
|coreclr_tests.run.windows.x64.checked.mch|2,851|<span style="color:green">704</span>|<span style="color:red">1,281</span>|<span style="color:blue">866</span>|<span style="color:green">-3,941</span>|<span style="color:red">+8,688</span>| | |
|libraries.crossgen2.windows.x64.checked.mch|3,597|<span style="color:green">711</span>|<span style="color:red">1,642</span>|<span style="color:blue">1,244</span>|<span style="color:green">-3,179</span>|<span style="color:red">+6,462</span>| | |
|libraries.pmi.windows.x64.checked.mch|5,725|<span style="color:green">916</span>|<span style="color:red">3,318</span>|<span style="color:blue">1,491</span>|<span style="color:green">-4,508</span>|<span style="color:red">+15,189</span>| | |
|libraries_tests.run.windows.x64.Release.mch|10,880|<span style="color:green">2,135</span>|<span style="color:red">5,189</span>|<span style="color:blue">3,556</span>|<span style="color:green">-10,989</span>|<span style="color:red">+25,543</span>| | |
|libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch|7,771|<span style="color:green">1,484</span>|<span style="color:red">4,322</span>|<span style="color:blue">1,965</span>|<span style="color:green">-9,447</span>|<span style="color:red">+23,328</span>| | |
|realworld.run.windows.x64.checked.mch|1,606|<span style="color:green">228</span>|<span style="color:red">710</span>|<span style="color:blue">668</span>|<span style="color:green">-1,367</span>|<span style="color:red">+3,153</span>| | |
|smoke_tests.nativeaot.windows.x64.checked.mch|877|<span style="color:green">235</span>|<span style="color:red">359</span>|<span style="color:blue">283</span>|<span style="color:green">-1,489</span>|<span style="color:red">+1,259</span>| | |
||37,649|<span style="color:green">7,853</span>|<span style="color:red">18,871</span>|<span style="color:blue">10,925</span>|<span style="color:green">-41,749</span>|<span style="color:red">+91,401</span>| | |
--- | |
#### PerfScore improvements/regressions per collection | |
|Collection|Contexts with diffs|Improvements|Regressions|Same PerfScore|Improvements (PerfScore)|Regressions (PerfScore)|PerfScore Overall in FullOpts| | |
|---|--:|--:|--:|--:|--:|--:|--:| | |
|benchmarks.run.windows.x64.checked.mch|1,144|<span style="color:green">733</span>|<span style="color:red">346</span>|<span style="color:blue">65</span>|<span style="color:green">-2.87%</span>|<span style="color:red">+1.16%</span>|<span style="color:green">-0.0613%</span>| | |
|benchmarks.run_pgo.windows.x64.checked.mch|2,648|<span style="color:green">1,278</span>|<span style="color:red">1,245</span>|<span style="color:blue">125</span>|<span style="color:green">-2.65%</span>|<span style="color:red">+0.55%</span>|<span style="color:green">-0.0604%</span>| | |
|benchmarks.run_tiered.windows.x64.checked.mch|550|<span style="color:green">419</span>|<span style="color:red">117</span>|<span style="color:blue">14</span>|<span style="color:green">-7.39%</span>|<span style="color:red">+0.85%</span>|<span style="color:green">-0.1897%</span>| | |
|coreclr_tests.run.windows.x64.checked.mch|2,851|<span style="color:green">1,949</span>|<span style="color:red">755</span>|<span style="color:blue">147</span>|<span style="color:green">-4.08%</span>|<span style="color:red">+1.11%</span>|<span style="color:green">-0.0312%</span>| | |
|libraries.crossgen2.windows.x64.checked.mch|3,597|<span style="color:green">2,418</span>|<span style="color:red">1,096</span>|<span style="color:blue">83</span>|<span style="color:green">-3.15%</span>|<span style="color:red">+1.36%</span>|<span style="color:green">-0.0227%</span>| | |
|libraries.pmi.windows.x64.checked.mch|5,725|<span style="color:green">3,409</span>|<span style="color:red">2,043</span>|<span style="color:blue">273</span>|<span style="color:green">-2.96%</span>|<span style="color:red">+1.15%</span>|<span style="color:green">-0.0252%</span>| | |
|libraries_tests.run.windows.x64.Release.mch|10,880|<span style="color:green">7,328</span>|<span style="color:red">2,481</span>|<span style="color:blue">1,071</span>|<span style="color:green">-2.52%</span>|<span style="color:red">+0.98%</span>|<span style="color:green">-0.0800%</span>| | |
|libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch|7,771|<span style="color:green">5,059</span>|<span style="color:red">2,331</span>|<span style="color:blue">381</span>|<span style="color:green">-2.13%</span>|<span style="color:red">+1.17%</span>|<span style="color:green">-0.0271%</span>| | |
|realworld.run.windows.x64.checked.mch|1,606|<span style="color:green">1,169</span>|<span style="color:red">398</span>|<span style="color:blue">39</span>|<span style="color:green">-4.24%</span>|<span style="color:red">+1.19%</span>|<span style="color:green">-0.1328%</span>| | |
|smoke_tests.nativeaot.windows.x64.checked.mch|877|<span style="color:green">577</span>|<span style="color:red">287</span>|<span style="color:blue">13</span>|<span style="color:green">-3.59%</span>|<span style="color:red">+1.25%</span>|<span style="color:green">-0.0564%</span>| | |
--- | |
#### Context information | |
|Collection|Diffed contexts|MinOpts|FullOpts|Missed, base|Missed, diff| | |
|---|--:|--:|--:|--:|--:| | |
|benchmarks.run.windows.x64.checked.mch|28,357|4|28,353|0 (0.00%)|0 (0.00%)| | |
|benchmarks.run_pgo.windows.x64.checked.mch|93,833|48,419|45,414|0 (0.00%)|0 (0.00%)| | |
|benchmarks.run_tiered.windows.x64.checked.mch|53,930|37,502|16,428|0 (0.00%)|0 (0.00%)| | |
|coreclr_tests.run.windows.x64.checked.mch|552,418|318,469|233,949|21,534 (3.75%)|21,534 (3.75%)| | |
|libraries.crossgen2.windows.x64.checked.mch|276,554|15|276,539|7 (0.00%)|7 (0.00%)| | |
|libraries.pmi.windows.x64.checked.mch|312,617|6|312,611|1 (0.00%)|1 (0.00%)| | |
|libraries_tests.run.windows.x64.Release.mch|686,363|482,904|203,459|5 (0.00%)|2 (0.00%)| | |
|libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch|322,699|21,922|300,777|1 (0.00%)|1 (0.00%)| | |
|realworld.run.windows.x64.checked.mch|34,556|3|34,553|0 (0.00%)|0 (0.00%)| | |
|smoke_tests.nativeaot.windows.x64.checked.mch|31,122|12|31,110|5 (0.02%)|5 (0.02%)| | |
||2,392,449|909,256|1,483,193|21,553 (0.89%)|21,550 (0.89%)| | |
--- | |
#### jit-analyze output | |
</div></details> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment