Skip to content

Instantly share code, notes, and snippets.

@amanasifkhalid
Last active May 20, 2024 21:18
Show Gist options
  • Save amanasifkhalid/a658c5dc527fca980519c3d32c6e108b to your computer and use it in GitHub Desktop.
Save amanasifkhalid/a658c5dc527fca980519c3d32c6e108b to your computer and use it in GitHub Desktop.
fgMoveBlocksToHottestSuccessors
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